chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

嵌入式系統(tǒng)專業(yè)是綜合了計算機(jī)硬件技術(shù)、計算機(jī)軟件技術(shù)以及電子電路技術(shù)的一門綜合學(xué)科,所涉及的內(nèi)涵和知識非常廣泛,包括:數(shù)字電路,模擬電路,計算機(jī)組成原理,單片機(jī)基礎(chǔ),C語言基礎(chǔ),操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu),編譯原理,計算機(jī)控制,計算機(jī)網(wǎng)絡(luò)等知識。

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

一、 基本開發(fā)環(huán)境

Linux下C語言開發(fā)環(huán)境

使用工具:程序生成工具GCC、程序調(diào)試工具GDB、工程管理工具為make和Makefile。 開發(fā)流程:使用編輯工具編寫C語言源文件,然后編譯生成機(jī)器代碼為主的二進(jìn)制可執(zhí)行程序。 編譯流程:C語言經(jīng)過編譯-匯編-鏈接,最終生成可執(zhí)行程序格式??蓤?zhí)行程序包含兩部分內(nèi)容:程序頭和程序主體。

嵌入式C語言的開發(fā)環(huán)境

程序的生成一般使用的是從x86到目標(biāo)機(jī)的編譯工具,程序的開發(fā)工具是運(yùn)行于x86機(jī)器上的可執(zhí)行程序,而是用開發(fā)工具生成的目標(biāo)是以目標(biāo)機(jī)器代碼為實體的映像文件或者可執(zhí)行程序,這個工程稱為“交叉編譯“。

和普通Linux環(huán)境下開發(fā)相比,更需要掌握一些幾點:

* 庫函數(shù)和系統(tǒng)調(diào)用 * C語言高級應(yīng)用* C語言在嵌入式中的特殊語法(大小端,內(nèi)存對齊等)* 資源性能考慮(運(yùn)行效率與存儲空間)

二、 基本開發(fā)工具

Linux文本編輯工具VI

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

GCC程序開發(fā)工具

GCC能完成從C、C++、Objective-C等源文件向運(yùn)行在特定CPU硬件上的目標(biāo)代碼的轉(zhuǎn)換。對于通用計算機(jī),一般使用GCC生成x86的可執(zhí)行代碼;對于嵌入式開發(fā)系統(tǒng)使用交叉編譯的GCC,生成目標(biāo)機(jī)可以運(yùn)行的程序。

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

Make工程管理工具

Makefile是一個決定怎樣編譯工程的文本文件,有一定的書寫規(guī)則。在工程更新的時候,使用GNU的make工具根據(jù)當(dāng)前的Makefile對工程進(jìn)行有選擇的編譯。

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

GDB調(diào)試工具

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

調(diào)試分為本地GDB調(diào)試和遠(yuǎn)程GDB調(diào)試,遠(yuǎn)程GDB更適合嵌入式系統(tǒng)的調(diào)試手段,使用個目標(biāo)機(jī)端的GDB服務(wù)器和主機(jī)端的GDB調(diào)試器完成調(diào)試工作。

三、 基本學(xué)習(xí)函數(shù)

C語言標(biāo)準(zhǔn)庫函數(shù)

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

Linux C中C語言的擴(kuò)展庫函數(shù)

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

四、 C語言高級編程

C語言運(yùn)行過程中所使用的內(nèi)存總體分為靜態(tài)存儲區(qū)和動態(tài)存儲區(qū)兩種。

靜態(tài)存儲區(qū)

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

動態(tài)存儲區(qū)

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

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

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

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

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

函數(shù)指針的使用

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19676

    瀏覽量

    317700
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213865

原文標(biāo)題:送給初學(xué)者:嵌入式Linux C入門大全

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

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

    【書籍評測活動NO.61】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

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

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    特定功能的計算機(jī)系統(tǒng),廣泛應(yīng)用于智能家居、工業(yè)控制、醫(yī)療設(shè)備、車載系統(tǒng)等領(lǐng)域。 2. 學(xué)習(xí)嵌入式開發(fā)的前置知識熟悉C語言編程掌握基本的數(shù)據(jù)結(jié)構(gòu)與算法了解數(shù)字電路與微控制器原理熟悉Linux
    發(fā)表于 05-15 09:29

    嵌入式硬件雜談:推挽、開漏、高阻態(tài)、上拉電阻

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

    怎么嵌入式linux下控制dlp?

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

    新手怎么學(xué)嵌入式?

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

    接口測試?yán)碚?、疑問收錄與擴(kuò)展相關(guān)知識點

    本文章使用王者榮耀游戲接口、企業(yè)微信接口的展示結(jié)合理論知識,講解什么是接口測試、接口測試?yán)碚摗⒁蓡柺珍浥c擴(kuò)展相關(guān)知識點知識學(xué)院,快來一起看看吧~
    的頭像 發(fā)表于 11-15 09:12 ?746次閱讀
    接口測試?yán)碚?、疑問收錄與擴(kuò)展相關(guān)<b class='flag-5'>知識點</b>

    嵌入式 Linux 操作系統(tǒng)配置

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

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

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

    嵌入式學(xué)習(xí)建議

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

    嵌入式linux開發(fā)的基本步驟有哪些?

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

    嵌入式linux開發(fā)板怎么操作

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

    嵌入式linux開發(fā)板芯片的工作原理

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺,它廣泛應(yīng)用于工業(yè)控制、智能家居、智能交通、醫(yī)療設(shè)備等領(lǐng)域。 嵌入式
    的頭像 發(fā)表于 09-02 09:07 ?823次閱讀

    嵌入式機(jī)電一體化系統(tǒng)設(shè)計與實現(xiàn)》讀后感

    理解不僅拓寬了我的知識視野,更為后續(xù)章節(jié)的學(xué)習(xí)打下了堅實的基礎(chǔ)。 書中第二章重點討論了基于Linux嵌入式系統(tǒng)設(shè)計,這一章節(jié)對我而言尤為關(guān)鍵。Linux作為開源的操作系統(tǒng),在
    發(fā)表于 08-21 08:45

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

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