浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 嵌入式系統(tǒng)

ARM/uClinux應(yīng)用程序的開發(fā)

發(fā)布時間:2008/8/25 0:00:00 訪問次數(shù):743

  應(yīng)用程序的開發(fā)

  因為目標板上用uclinux,它提供的程序接口和linux下的基本一致,不一致的部分主要在于uclinux不支持mmu(應(yīng)該說是uclinux是為不帶mmu的cpu定制的),最明顯的就是fork函數(shù)要用vfork函數(shù)替代,這也是編程時,感覺最不爽的一點(沒辦法,誰讓咱們的cpu有生理缺陷)。另一個不易覺察的差異在于uclinux提供的庫uclibc是經(jīng)過裁減的。更適合于資源緊張的嵌入式系統(tǒng)(上回分解已經(jīng)說了,應(yīng)用程序很大一部分是在和庫函數(shù)打交道,而且大家最終是鏈在一起,所以庫函數(shù)大了,你的程序也小不了)。

  于是基于這種開發(fā)模式的應(yīng)用程序開發(fā)變成了linux下的程序開發(fā)。而且在實際中一般是編好了程序先在主機上拿主機平臺上的編譯器編譯并且調(diào)試一下(linux下的編譯器就是gcc了),當然前提是被調(diào)試的程序中需要的硬件條件主機具備,例如我的程序中有一段是針對串口的,于是先在主機編一個串口程序,調(diào)通以后拿目標板的編譯器重新編譯一下(如果看了上一章“交叉編譯環(huán)境”,這里就不會暈了),下載到目標板上運行,一般來說就可以直接用了。

  以上也是為什么我認為開發(fā)嵌入式linux程序主機應(yīng)該選用linux環(huán)境。對于以前沒用過linux的人來說(比如我),開發(fā)程序前應(yīng)該花3,4天時間熟悉linux環(huán)境,尤其是它的編輯器,用慣集成編譯環(huán)境的人有時連編譯器和編輯器的概念都模糊了,所以一般是直接進入集成編譯環(huán)境,連寫帶編一氣呵成,殊不知有些集成編譯器提供的編輯器弱智的一塌胡涂,如果用熟了linux下的emacs,你就會發(fā)現(xiàn)他們之間的差距大概……要像我和蓋茨那么大吧。所以編程序時應(yīng)該選一款優(yōu)秀的編輯器,linux下,我當然選emacs,雖然剛看見它的感覺是外表丑陋,使用復(fù)雜。但只要多用多練,對提高效率很有幫助。(將你的程序用兩個編輯器完成,一半是用emacs的,一半是不用emacs的,看看效果:-)
對具體的linux編程我就不板門弄斧了,需要提個醒的是咱硬件出身的人作軟件應(yīng)該養(yǎng)成良好的編程習慣,別讓作軟件的笑話咱。因為作了些網(wǎng)絡(luò)應(yīng)用,所以介紹一些網(wǎng)絡(luò)編程時要用到的網(wǎng)站和書籍;

  <>w.richard.stevens. 這可是linux網(wǎng)絡(luò)編程的圣經(jīng)級的書籍

  http://www.fanqiang.com/a4/b7/ 適合于網(wǎng)絡(luò)編程的入門。

  還有ibm中國上關(guān)于linux的教程和文章,都是翻譯過來的,有很多寫非常不錯。

  其實類似的資源不計其數(shù),遇到問題時應(yīng)該先到google上狂搜一圈。

  重點想說些關(guān)于編譯器的東西,不了解它,在交叉編譯環(huán)境下編譯程序就寸步難行了,這無非是因為交叉編譯環(huán)境下目標板編譯器所處的寄人籬下的悲慘環(huán)境。想想在linux下將myprogram.c編譯鏈接成應(yīng)用程序myprogram,最簡單的一句gcc –o myprogram myprogram.c 就可以了。(其實在諸如vc下你也可以找到類似的命令,集成開發(fā)環(huán)境只不過替你來調(diào)用它了)。一切看起來天經(jīng)地義。

但試著把/usr/include路徑改一個名字(比如改成stupid_include),再這樣編譯一下,會發(fā)現(xiàn)程序中被< >引用的頭文件(比如#include)都找不到了。因為編譯器看見這樣的頭文件會到系統(tǒng)指定的路徑下尋找,而這個路徑是由環(huán)境變量保存的(linux和windows下都是這樣的)。針對以上情況,不將路徑名字改回去,但是給編譯器加一個參數(shù)如下:

  gcc –i/usr/stupid_include –o myprogram myprogram.c 會發(fā)現(xiàn)錯誤信息沒了,一切又恢復(fù)了往日的寧靜,頓時明白,不用環(huán)境變量,通過參數(shù),同樣可以將這些信息告訴編譯器。 返回來說說你的目標編譯器,雖然占用了人家的地盤,編譯器,頭文件,庫文件,一個都不少,但你要編一個程序編譯器照樣發(fā)暈,因為沒有環(huán)境變量告訴它自己需要的頭文件和庫文件在哪里。看來只有兩種辦法,一個是搶占了主機的環(huán)境變量改成自己的(整個兒一個土匪),或者在編譯時加上必要參數(shù)(還是這樣紳士一些),告訴編譯器需要的文件的位置。(除此之外,還有其他一些參數(shù)也是如此)。

  從源程序到可執(zhí)行文件根據(jù)情況不同可能分好幾步,一般每一步可能都會有一個應(yīng)用程序?qū)崿F(xiàn),像gnu提供的arm開發(fā)工具鏈其實就是這么一組程序。提供從編譯到鏈接到格式轉(zhuǎn)化的全套服務(wù)。你可以用arm-elf-gcc命令一步到底直接產(chǎn)生可執(zhí)行文件(其實也是在自己的任務(wù)完成后調(diào)用下一個程序),也可以每一步加上自己的參數(shù),只作自己的事。

  編譯器的主要參數(shù)的使用下次將程序的移植時再講。這里想說一下編譯器產(chǎn)生應(yīng)用程序的幾個主要步鄹,講這個問題的原因還是很多人無法區(qū)分諸如編譯和鏈接,不用問,這一切還是ide集成開發(fā)環(huán)境惹的禍。有人會說,ide招你惹你了,你老貶它。其實不然,首先以上說的東西一般在ide的project菜單下的option或build option中找到,只是一般不用管罷了。另一個方面,ide就像是傻瓜照相機,很多工作他都幫你完成了,使用簡單。但如果要做攝影師的話,你就少不了要對每一個細節(jié)都了解。其實編譯程序

  應(yīng)用程序的開發(fā)

  因為目標板上用uclinux,它提供的程序接口和linux下的基本一致,不一致的部分主要在于uclinux不支持mmu(應(yīng)該說是uclinux是為不帶mmu的cpu定制的),最明顯的就是fork函數(shù)要用vfork函數(shù)替代,這也是編程時,感覺最不爽的一點(沒辦法,誰讓咱們的cpu有生理缺陷)。另一個不易覺察的差異在于uclinux提供的庫uclibc是經(jīng)過裁減的。更適合于資源緊張的嵌入式系統(tǒng)(上回分解已經(jīng)說了,應(yīng)用程序很大一部分是在和庫函數(shù)打交道,而且大家最終是鏈在一起,所以庫函數(shù)大了,你的程序也小不了)。

  于是基于這種開發(fā)模式的應(yīng)用程序開發(fā)變成了linux下的程序開發(fā)。而且在實際中一般是編好了程序先在主機上拿主機平臺上的編譯器編譯并且調(diào)試一下(linux下的編譯器就是gcc了),當然前提是被調(diào)試的程序中需要的硬件條件主機具備,例如我的程序中有一段是針對串口的,于是先在主機編一個串口程序,調(diào)通以后拿目標板的編譯器重新編譯一下(如果看了上一章“交叉編譯環(huán)境”,這里就不會暈了),下載到目標板上運行,一般來說就可以直接用了。

  以上也是為什么我認為開發(fā)嵌入式linux程序主機應(yīng)該選用linux環(huán)境。對于以前沒用過linux的人來說(比如我),開發(fā)程序前應(yīng)該花3,4天時間熟悉linux環(huán)境,尤其是它的編輯器,用慣集成編譯環(huán)境的人有時連編譯器和編輯器的概念都模糊了,所以一般是直接進入集成編譯環(huán)境,連寫帶編一氣呵成,殊不知有些集成編譯器提供的編輯器弱智的一塌胡涂,如果用熟了linux下的emacs,你就會發(fā)現(xiàn)他們之間的差距大概……要像我和蓋茨那么大吧。所以編程序時應(yīng)該選一款優(yōu)秀的編輯器,linux下,我當然選emacs,雖然剛看見它的感覺是外表丑陋,使用復(fù)雜。但只要多用多練,對提高效率很有幫助。(將你的程序用兩個編輯器完成,一半是用emacs的,一半是不用emacs的,看看效果:-)
對具體的linux編程我就不板門弄斧了,需要提個醒的是咱硬件出身的人作軟件應(yīng)該養(yǎng)成良好的編程習慣,別讓作軟件的笑話咱。因為作了些網(wǎng)絡(luò)應(yīng)用,所以介紹一些網(wǎng)絡(luò)編程時要用到的網(wǎng)站和書籍;

  <>w.richard.stevens. 這可是linux網(wǎng)絡(luò)編程的圣經(jīng)級的書籍

  http://www.fanqiang.com/a4/b7/ 適合于網(wǎng)絡(luò)編程的入門。

  還有ibm中國上關(guān)于linux的教程和文章,都是翻譯過來的,有很多寫非常不錯。

  其實類似的資源不計其數(shù),遇到問題時應(yīng)該先到google上狂搜一圈。

  重點想說些關(guān)于編譯器的東西,不了解它,在交叉編譯環(huán)境下編譯程序就寸步難行了,這無非是因為交叉編譯環(huán)境下目標板編譯器所處的寄人籬下的悲慘環(huán)境。想想在linux下將myprogram.c編譯鏈接成應(yīng)用程序myprogram,最簡單的一句gcc –o myprogram myprogram.c 就可以了。(其實在諸如vc下你也可以找到類似的命令,集成開發(fā)環(huán)境只不過替你來調(diào)用它了)。一切看起來天經(jīng)地義。

但試著把/usr/include路徑改一個名字(比如改成stupid_include),再這樣編譯一下,會發(fā)現(xiàn)程序中被< >引用的頭文件(比如#include)都找不到了。因為編譯器看見這樣的頭文件會到系統(tǒng)指定的路徑下尋找,而這個路徑是由環(huán)境變量保存的(linux和windows下都是這樣的)。針對以上情況,不將路徑名字改回去,但是給編譯器加一個參數(shù)如下:

  gcc –i/usr/stupid_include –o myprogram myprogram.c 會發(fā)現(xiàn)錯誤信息沒了,一切又恢復(fù)了往日的寧靜,頓時明白,不用環(huán)境變量,通過參數(shù),同樣可以將這些信息告訴編譯器。 返回來說說你的目標編譯器,雖然占用了人家的地盤,編譯器,頭文件,庫文件,一個都不少,但你要編一個程序編譯器照樣發(fā)暈,因為沒有環(huán)境變量告訴它自己需要的頭文件和庫文件在哪里。看來只有兩種辦法,一個是搶占了主機的環(huán)境變量改成自己的(整個兒一個土匪),或者在編譯時加上必要參數(shù)(還是這樣紳士一些),告訴編譯器需要的文件的位置。(除此之外,還有其他一些參數(shù)也是如此)。

  從源程序到可執(zhí)行文件根據(jù)情況不同可能分好幾步,一般每一步可能都會有一個應(yīng)用程序?qū)崿F(xiàn),像gnu提供的arm開發(fā)工具鏈其實就是這么一組程序。提供從編譯到鏈接到格式轉(zhuǎn)化的全套服務(wù)。你可以用arm-elf-gcc命令一步到底直接產(chǎn)生可執(zhí)行文件(其實也是在自己的任務(wù)完成后調(diào)用下一個程序),也可以每一步加上自己的參數(shù),只作自己的事。

  編譯器的主要參數(shù)的使用下次將程序的移植時再講。這里想說一下編譯器產(chǎn)生應(yīng)用程序的幾個主要步鄹,講這個問題的原因還是很多人無法區(qū)分諸如編譯和鏈接,不用問,這一切還是ide集成開發(fā)環(huán)境惹的禍。有人會說,ide招你惹你了,你老貶它。其實不然,首先以上說的東西一般在ide的project菜單下的option或build option中找到,只是一般不用管罷了。另一個方面,ide就像是傻瓜照相機,很多工作他都幫你完成了,使用簡單。但如果要做攝影師的話,你就少不了要對每一個細節(jié)都了解。其實編譯程序

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

DFRobot—玩的就是
    如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!