女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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語言程序中,棧空間是由編譯器管理的,在程序中可以體現棧空間使用的例子是參數的傳遞、返回值的使用以及自動變量空間。一般來說如果棧空間是從高地址向低地址增長的。

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

自動變量在棧空間,前面的變量放入棧的高地址,后面的自動變量放入棧的低地址。

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

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

函數指針的使用

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

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

    關注

    5141

    文章

    19524

    瀏覽量

    314807
  • Linux
    +關注

    關注

    87

    文章

    11456

    瀏覽量

    212759

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    怎么嵌入式linux下控制dlp?

    請問怎么嵌入式linux 下控制dlp,有沒有支持
    發表于 03-03 07:02

    新手怎么學嵌入式?

    。但面對這個復雜的領域,很多人可能會感到迷茫,不知從何處入手。別擔心,本文將為你提供一些入門學習嵌入式技術的建議。 新手入門學習嵌入式技術的途徑 1. 了解基礎知識 首先,要對嵌入式
    發表于 12-12 10:51

    接口測試理論、疑問收錄與擴展相關知識點

    本文章使用王者榮耀游戲接口、企業微信接口的展示結合理論知識,講解什么是接口測試、接口測試理論、疑問收錄與擴展相關知識點知識學院,快來一起看看吧~
    的頭像 發表于 11-15 09:12 ?643次閱讀
    接口測試理論、疑問收錄與擴展相關<b class='flag-5'>知識點</b>

    嵌入式 Linux 操作系統配置

    隨著物聯網(IoT)和智能設備的快速發展,嵌入式系統在各個領域扮演著越來越重要的角色。Linux因其開源、靈活和穩定的特性,成為嵌入式系統的首選操作系統。 1. 硬件選擇 在配置嵌入式
    的頭像 發表于 11-06 10:22 ?1088次閱讀

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植
    的頭像 發表于 10-22 14:46 ?1070次閱讀
    【北京迅為】i.mx8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>開發指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統移植篇第六十九章uboot移植

    嵌入式學習建議

    嵌入式系統硬件比電子線路好學多了。只要深入理解:MCU的硬件最小系統,對I/O口、串行通信、鍵盤、LED、LCD、SPI、 I2C、PWM、A/D(包括一些傳感器)、D/A等逐個實驗理解,逐步實踐,再通過
    發表于 10-22 11:41

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式Linux開發的基本步驟,以及每個步驟的說明。 硬件選擇 在開始
    的頭像 發表于 09-02 09:11 ?1062次閱讀

    嵌入式linux開發板怎么操作

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺。它通常包括一個處理器、內存、存儲器、輸入/輸出接口等硬件組件,以及一個基于L
    的頭像 發表于 09-02 09:09 ?685次閱讀

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智能家居、智能交通、醫療設備等領域。 嵌入式
    的頭像 發表于 09-02 09:07 ?711次閱讀

    嵌入式機電一體化系統設計與實現》讀后感

    理解不僅拓寬了我的知識視野,更為后續章節的學習打下了堅實的基礎。 書中第二章重點討論了基于Linux嵌入式系統設計,這一章節對我而言尤為關鍵。Linux作為開源的操作系統,在
    發表于 08-21 08:45

    【出版發行】嵌入式系統原理與開發——基于RISC-V和Linux系統

    【出版發行】嵌入式系統原理與開發——基于RISC-V和Linux系統
    的頭像 發表于 07-26 08:36 ?591次閱讀
    【出版發行】<b class='flag-5'>嵌入式</b>系統原理與開發——基于RISC-V和<b class='flag-5'>Linux</b>系統

    專家力薦|《嵌入式系統原理與開發——基于RISC-V和Linux系統》新書發售

    當前,嵌入式系統已成為智能設備的核心之一,RISC-V+Linux的開源力量為嵌入式系統注入強大的創新動力。作為中國RISC-V軟硬件生態領導者,賽昉科技與業界專家合作推出《嵌入式系統
    的頭像 發表于 07-24 08:20 ?1003次閱讀
    專家力薦|《<b class='flag-5'>嵌入式</b>系統原理與開發——基于RISC-V和<b class='flag-5'>Linux</b>系統》新書發售