国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式Linux C的基本知識點詳解

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:胡薇 ? 2018-10-15 09:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式系統專業是綜合了計算機硬件技術、計算機軟件技術以及電子電路技術的一門綜合學科,所涉及的內涵和知識非常廣泛,包括:數字電路模擬電路,計算機組成原理,單片機基礎,C語言基礎,操作系統,數據結構,編譯原理,計算機控制,計算機網絡等知識。

在真正學習嵌入式開發之前,首先要打好基礎。其中最重要的是C語言基礎、數字電路、計算機組成原理三門課程。下面我們就來講下嵌入式Linux C的基本知識點。

一、 基本開發環境

Linux下C語言開發環境

使用工具:程序生成工具GCC、程序調試工具GDB、工程管理工具為make和Makefile。 開發流程:使用編輯工具編寫C語言源文件,然后編譯生成機器代碼為主的二進制可執行程序。 編譯流程:C語言經過編譯-匯編-鏈接,最終生成可執行程序格式??蓤绦谐绦虬瑑刹糠謨热荩撼绦蝾^和程序主體。

嵌入式C語言的開發環境

程序的生成一般使用的是從x86到目標機的編譯工具,程序的開發工具是運行于x86機器上的可執行程序,而是用開發工具生成的目標是以目標機器代碼為實體的映像文件或者可執行程序,這個工程稱為“交叉編譯“。

和普通Linux環境下開發相比,更需要掌握一些幾點:

* 庫函數和系統調用 * C語言高級應用* C語言在嵌入式中的特殊語法(大小端,內存對齊等)* 資源性能考慮(運行效率與存儲空間)

二、 基本開發工具

Linux文本編輯工具VI

主要這個掌握VI三種模式的切換:命令模式、文本輸入模式、和末行模式,以及VI編輯器的各種命令與操作。 學習VIM的使用,編輯vimrc文件,gedit ~./vimrc修改功能(比如顯示行數、顏色加亮等)。

GCC程序開發工具

GCC能完成從C、C++、Objective-C等源文件向運行在特定CPU硬件上的目標代碼的轉換。對于通用計算機,一般使用GCC生成x86的可執行代碼;對于嵌入式開發系統使用交叉編譯的GCC,生成目標機可以運行的程序。

利用GCC/G++生成應用程序可以分為以下四步:(1) 預處理:生成.i文件(預處理器cpp) (2) 編譯:將預處理后的文件轉換為匯編語言,生成.s文件(編譯器gcc) (3) 匯編:由匯編代碼生成目標代碼,即機器代碼,生成.o文件(匯編器as) (4) 鏈接:由各個文件的目標代碼,生成可執行程序(鏈接器ld) 這里涉及到另外一個知識點就是靜態鏈接庫和動態鏈接庫的生成。

Make工程管理工具

Makefile是一個決定怎樣編譯工程的文本文件,有一定的書寫規則。在工程更新的時候,使用GNU的make工具根據當前的Makefile對工程進行有選擇的編譯。

自動生成Makefile的工具有autoconf、automake。其他的類似工具比如cMake等。

GDB調試工具

在使用GDB之前,需要對源程序增加-g編譯選項,此時編譯出來的程序包含需要調試的信息,可以利用GDB進行調試。主要使用的命令是run(開始運行程序)、break(設置斷點)、next(執行一行且不進入函數)、step(進入函數)、continue(繼續程序運行)。

調試分為本地GDB調試和遠程GDB調試,遠程GDB更適合嵌入式系統的調試手段,使用個目標機端的GDB服務器和主機端的GDB調試器完成調試工作。

三、 基本學習函數

C語言標準庫函數

(1) 標準輸入/輸出類函數 scanf printf putchar getchar putc getc puts ungetc等。(2) 字符處理及轉換函數 isdigit isalpha sprint strncat stncpy strlen strchr strstr strrev memset memmove memcpy memcpy等。(3) 數學計算類函數 div acos/asin pow exp log ceil abs floor fmod等(4) 數據結構和算法類函數 bsearch lfind lsearch qsort rand srand等(5) 文件I/O操作類函數 fopen fclose fgetc fputs fseek fwrite ffush等(6) 時間日期類函數 clock time gmttime mktime asctime 等(7) 錯誤處理及工具函數 clearer feof perror errno assert setjmp longjmp等

Linux C中C語言的擴展庫函數

(1) 文件I/O操作函數 open close read write lseek ioctl fcntl mmap dup create等(2) 文件權限相關函數 access chown chmod utime umask link stat unlink等(3) 用戶操作函數 getgid/setgid getegid/setegid geteuid/seteuid 等(4) 信號及進程類函數 kill raise alarm signal getpid fork sleep exec _exit等

四、 C語言高級編程

C語言運行過程中所使用的內存總體分為靜態存儲區和動態存儲區兩種。

靜態存儲區

C語言程序中靜態數據存儲區分為三類:只讀存儲器(RO)、已初始化讀寫數據區(RW Data)、未初始化讀寫存儲器(BSS)。在程序運行初始化階段開辟,在運行過程中不會變化(大小和位置固定),程序退出時被系統回收。

動態存儲區

動態存儲區分為堆和棧兩類,在程序運行過程中動態分配(位置和大小動態變化),常見動態內存管理是棧內存從高地址向低地址分配,堆內存從低地址向高地址分配,一般來說堆使用鏈表實現,棧使用線性存儲方式。 在C語言程序中,??臻g是由編譯器管理的,在程序中可以體現棧空間使用的例子是參數的傳遞、返回值的使用以及自動變量空間。一般來說如果棧空間是從高地址向低地址增長的。

參數入棧的順序是:后面的參數在高地址處、前面的參數在低地址處。

自動變量在??臻g,前面的變量放入棧的高地址,后面的自動變量放入棧的低地址。

在函數退出時函數棧上的內容將被釋放。因此,自動變量的地址不可以作為函數返回值

在C語言中,堆內存區域的分配和釋放是通過調用庫函數完成的,malloc、calloc、realloc、free4個庫函數實現堆內存的分配、釋放和管理。分配內存后要記得手動釋放,否則其資源是不會被系統回收的,會造成內存泄漏。同時指針被釋放后,指針應該被設置為NULL,避免野指針。 總的來說,棧內存是由編譯器分配和釋放,堆內存是由程序分配和釋放。

函數指針的使用

函數指針是一個指向函數的指針(本質上是一個代碼區的地址),而函數本身代表了算法,此時C語言的算法就可以通過指針的形式,像普通變量一樣被使用。函數指針可以作為一個結構體的成員,也可也作為一個參數傳遞給其他的函數,同樣也可以作為函數的返回值。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5198

    文章

    20449

    瀏覽量

    334058
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219033

原文標題:送給初學者:嵌入式Linux C入門大全

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    系統嵌入式的學習路線

    知識太多,太雜,太廣,很多嵌入式初學者陷入嵌入式知識的海洋中,東學一,西學一,找不到學習的
    發表于 12-16 07:49

    嵌入式應掌握的幾種能力

    1. 編程語言 基本掌握嵌入式必備的編程語言。C語言為主,C++為輔。在資源有限的情況下,大多數嵌入式產品還是使用C語言為主的,特別是底層
    發表于 12-08 06:05

    CW32嵌入式軟件開發的必備知識

    的數據手冊及用戶手冊,查找所需外設工作原理。 4、 嵌入式操作系統(深入知識點) 掌握常用的嵌入式操作系統,如μC/OS、FREERTOS等,了解其內核、進程管理、內存管理、設備管理和
    發表于 11-28 07:48

    嵌入式與FPGA的區別

    分為算法和控制,而算法的工資會比控制高,因為技術含量比控制高得多,但算法適合高數比較好的人學。 ?最后在了解下入行門檻? ?1、嵌入式系統的門檻比較低,不管是嵌入式linux還是純軟,開發語言遠遠
    發表于 11-20 07:12

    嵌入式開發的關鍵介紹

    嵌入式開發在現代科技中扮演著非常重要的角色。隨著物聯網的發展,嵌入式系統的需求也越來越大。嵌入式開發不僅需要開發人員具備深入的硬件知識和編程經驗,還需要不斷學習新的技術和工具,以滿足不
    發表于 11-13 08:12

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通過學習嵌入式技術提升就業競爭力,需重點掌握C語言、嵌入式硬件架構、RTOS/Linux開發、通信協議四
    發表于 10-21 16:25

    嵌入式達到什么水平才能就業?

    :包括GPIO、定時器、中斷、ADC 等外設的配置與調試,能實現如溫濕度采集、電機控制等功能掌握嵌入式 Linux 驅動開發基礎:能編寫簡單字符設備驅動,實現設備的初始化、讀寫操作,會用內核調試
    發表于 09-15 10:20

    盤點嵌入式就業所需要的技能有哪些?

    ,把握未來的職業機遇。 1.智能汽車行業: - 熟悉嵌入式編程語言,如C/C++、Python等。 - 掌握嵌入式系統設計與開發流程,了解汽車電子控制系統的基本原理。 - 具備良好的
    發表于 08-11 15:43

    入行嵌入式應該怎么準備?

    知識: 一、C/C++編程C/C++是嵌入式系統開發中最常用的編程語言。熟練掌握
    發表于 08-06 10:34

    【「Yocto項目實戰教程:高效定制嵌入式Linux系統」閱讀體驗】+基礎概念學習理解

    。為了對珠峰更了解些,開始接觸 Linux 系統開發,并逐漸認識到 Yocto 項目在定制嵌入式 Linux 系統方面的重要性。所以很想拜讀下此書。 二、書籍內容概述 基礎知識 書中首
    發表于 08-04 22:29

    Linux嵌入式和單片機嵌入式的區別?

    : 單片機嵌入式 :開發環境相對簡單,通常使用C語言或匯編語言進行編程,開發工具包括Keil、IAR等。 Linux嵌入式 :開發環境較為復雜,除了需要掌握
    發表于 06-20 09:46

    【書籍評測活動NO.61】Yocto項目實戰教程:高效定制嵌入式Linux系統

    新的浪潮,嵌入式 Linux 系統已廣泛應用于國產芯片、智能家居、工業控制、智能汽車等領域,并在 AIoT(人工智能物聯網)、邊緣計算、智能醫療等方向發揮著關鍵作用。 然而,嵌入式 Linux
    發表于 05-21 10:00

    嵌入式開發入門指南:從零開始學習嵌入式

    特定功能的計算機系統,廣泛應用于智能家居、工業控制、醫療設備、車載系統等領域。 2. 學習嵌入式開發的前置知識熟悉C語言編程掌握基本的數據結構與算法了解數字電路與微控制器原理熟悉Linux
    發表于 05-15 09:29

    嵌入式適合自學嗎?

    構、時鐘系統、電源管理、存儲映射等。 嵌入式必學技術↓↓↓ 1硬件與軟件的結合 2實時性要求與資源限制 3跨領域知識整合 4調試與測試困難 二)缺乏專業指導 1)容易走彎路:自學嵌入
    發表于 04-27 09:54

    嵌入式硬件雜談:推挽、開漏、高阻態、上拉電阻

    對于嵌入式硬件這個龐大的知識體系而言,太多離散的知識點很容易疏漏,因此對于這些容易忘記甚至不明白的知識點做成一個梳理,供大家參考以及學習,本文主要針對推挽、開漏、高阻態、上拉電阻這些
    的頭像 發表于 04-17 19:31 ?2149次閱讀
    <b class='flag-5'>嵌入式</b>硬件雜談:推挽、開漏、高阻態、上拉電阻