<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux開(kāi)發(fā)環(huán)境的建立步驟

Linux開(kāi)發(fā)環(huán)境的建立步驟

作者: 時(shí)間:2011-06-28 來(lái)源:網(wǎng)絡(luò ) 收藏

傳統的嵌入式需要單片機的仿真器,包括C語(yǔ)言、匯編語(yǔ)言、調試工具等的集成IDE、實(shí)時(shí)操作系統等。

本文引用地址:http://dyxdggzs.com/article/150550.htm

由于Flash技術(shù)的發(fā)展,仿真器已可以省去。隨著(zhù)BDM調試工具的標準化,BDM調試工具會(huì )變得越來(lái)越簡(jiǎn)單、越來(lái)越通用。

軟件方面,下的自由軟件GNU gcc可以完成幾乎所有知名CPU以及DSP的交叉C編譯和調試,故IDE可以省去。

操作系統方面,uClinux、RT、μC/OS等源碼開(kāi)放的、免費的嵌入式操作系統也都性能穩定可靠。

因此,全部使用自由軟件嵌入式應用無(wú)疑是一種不錯的選擇。我們在32位MCU ColdFire上實(shí)現了上述全部開(kāi)發(fā)過(guò)程。這一過(guò)程原則上也適合其它幾乎所有的32位嵌入式應用系統的開(kāi)發(fā)。

  1 提倡使用自由軟件開(kāi)發(fā)嵌入式系統

  自由軟件有強大的網(wǎng)上技術(shù)支持是公認的,不斷升級的新版本的推出表明了自由軟件強大的生命力。然而,使用自由軟件有一定的難度,首先要熟悉的使用,學(xué)會(huì )看Linux下的幫助信息。然后是學(xué)會(huì )遇到問(wèn)題如何解決。向高手請教是解決問(wèn)題的辦法之一。在清華大學(xué),校園網(wǎng)中的BBS是研究生交流的極好方式。還有一個(gè)方法是在網(wǎng)上搜索,因為您遇到的問(wèn)題其他人以前或許也遇到過(guò),解決辦法可能網(wǎng)上就有。再有一個(gè)辦法就是直接給作者發(fā)電子郵件。自由軟件有源碼、大多都有作者的Email 地址。我們體會(huì )使用Linux下的GNU gcc 等軟件的難點(diǎn)主要在使用上,一旦使用環(huán)境起來(lái)了,僅僅是使用并不難。在國外,這部分工作有專(zhuān)門(mén)的系統管理員為你做好,而國內這部分工作往往要自己做,故增加了Linux系統的使用難度。以GNU gcc 為例,根據我們的研究生的經(jīng)驗,并熟悉使用的過(guò)程大約需要2個(gè)月的時(shí)間。而熟悉一個(gè)買(mǎi)來(lái)的商業(yè)軟件也需要2周乃至1個(gè)月的時(shí)間。也就是說(shuō),買(mǎi)商業(yè)軟件可以節省1個(gè)月的時(shí)間。

  2 Linux開(kāi)發(fā)環(huán)境的建立

  一個(gè)人用Linux開(kāi)發(fā)嵌入式應用,可以在自己的PC機上裝一套Linux,例如,Red Hat Linux??梢允褂肔inux中的X windows(xterm)開(kāi)若干個(gè)窗口用于編譯、下載、調試等;可以使用Linux中的emacs作文本編譯。Windows 中有的軟件在Linux 中幾乎都有。但由于多數人對Linux環(huán)境和Linux中的應用程序不熟悉,寧愿用PC上基于Windows的操作系統,此時(shí)可以在Windows環(huán)境下裝上Cygwin軟件。GNU中的Cygwin是在Windows下運行Linux的自由軟件。但我們發(fā)現,Cygwin的兼容性似乎不太好,在有的PC機上能裝得上,有的PC機上裝不上。Cygwin的安裝過(guò)程要兩三個(gè)小時(shí),有時(shí)裝到一半出現錯誤很不好處理。據說(shuō)VMWare的Windows版本也可以在Windows環(huán)境下開(kāi)出Linux的窗口,但VMWare不是自由軟件。

  我們采用的辦法是用1臺PC機運行Linux作為服務(wù)器。開(kāi)發(fā)小組中每個(gè)成員都可以通過(guò)局域網(wǎng)用Telnet登錄到這臺Linux服務(wù)器上去,被開(kāi)發(fā)的目標板也掛在網(wǎng)上。在服務(wù)器的Linux環(huán)境下,用GNU gcc編譯生成目標代碼,再用FTP傳回到自己的PC機上,然后通過(guò)串行口或網(wǎng)絡(luò )下載到目標機上。BDM工具主要用于硬件調試。因為BDM工具的支持軟件也是Linux下的自由軟件,故BDM工具只能接在Linux服務(wù)器的并口上。硬件調試完成后,可以把Debug程序寫(xiě)入Flash,然后就不需要BDM工具了。
檢驗開(kāi)發(fā)環(huán)境是否建立好了得有1塊目標板。在開(kāi)發(fā)環(huán)境建立起來(lái)之前,冒然設計自己的硬件,難度較大??梢杂蒙碳姨峁┑脑u估板作為目標板先把開(kāi)發(fā)環(huán)境建立起來(lái)??梢酝ㄟ^(guò)用GNU gcc 編譯uClinux 然后下載到目標板上運行的辦法來(lái)熟悉Linux下 GNU gcc的開(kāi)發(fā)環(huán)境,檢驗開(kāi)發(fā)環(huán)境是否已建立好。如果是購買(mǎi)第3方的硬件,則要特別小心。有些惡劣廠(chǎng)商的產(chǎn)品的確可以運行uClinux,但其是在軟件或硬件中做了些陷阱,使用戶(hù)只能用他的硬件。

  3 GNU gcc交叉編譯器

  運行于Linux操作系統下的自由軟件GNU gcc編譯器,不僅可以編譯Linux操作系統下運行的應用程序、編譯Linux本身,還可以作交叉編譯,編譯運行于其它CPU上的程序??梢宰鹘徊婢幾g的CPU(或DSP)涵蓋了幾乎所有知名廠(chǎng)商的產(chǎn)品。用于嵌入式應用的、眾所周知的CPU包括:Intel的i386、Intel960、AMD29K、ARM、M32、MIPS、M68K、ColdFare、PowerPC、68HC11/12、TI的TMS32等等。詳細列表可查看http://gcc.gnu.org/reading網(wǎng)站。

  GNU gcc編譯器是一套完整的交叉C編譯器,包括:
  ◇ C交叉編譯器 gcc;
  ◇ 交叉匯編工具 as;
  ◇ 反匯編工具 objdump;
  ◇ 連接工具 Ld;
  ◇ 調試工具 gbd。

  可以用批處理文件 makefile 將上述工具組合成方便的命令行形式。makefile 是用bash語(yǔ)言寫(xiě)的。bash語(yǔ)言是很像BASIC語(yǔ)言的一種命令解釋語(yǔ)言,范例可以從網(wǎng)上獲得。

  4 嵌入式操作系統

  嵌入式應用中的操作系統多為實(shí)時(shí)操作系統。μC /OS是一個(gè)免費的小實(shí)時(shí)操作系統內核,內核代碼僅幾K~十幾K。已有10年的應用史,并已經(jīng)被移植到了幾乎所有的嵌入式應用類(lèi)CPU上。它的實(shí)時(shí)性、穩定性已得到世人的公認。由于μC/OS的商業(yè)價(jià)值,后來(lái)的μC /OS-II不再是免費的,但仍是一個(gè)低價(jià)位的操作系統。帶有文件系統、功能更強的嵌入式操作系統有uCLinux,它的內核需要至少512 KB存儲空間。面向各種不同的商業(yè)硬件平臺的、各種版本的uClinux的源碼在網(wǎng)上都可以找到。我們是從www. uclinux.org上下載uClinux源代碼的。用GNU gcc編譯,通過(guò)編譯運行uClinux熟悉了這一套開(kāi)發(fā)環(huán)境。uClinux是一套很優(yōu)秀的自由軟件,很多掌上電腦都是基于uClinux開(kāi)發(fā)的,今后PC機上有什么軟件,掌上電腦(例如以ARM為CPU的掌上電腦)上就會(huì )有什么軟件。這些軟件都可以是基于uClinux的。uClinux不是實(shí)時(shí)的,而自由軟件RTLinux是實(shí)時(shí)的。由于上述操作系統都是有源碼的,其硬件相關(guān)部分可以通過(guò)定義一些函數移植上去。有 Linux的開(kāi)發(fā)環(huán)境,有GNU gcc的C交叉編譯器,有操作系統的源代碼,就可以自如地設計自己的應用了。

  經(jīng)典的uClinux下載地址為http://www.uclinux.org,但對于某些平臺(比如ARM),用GOOGLE搜索一下uClinux+ARM往往能找到比uClinux.org更好的網(wǎng)址。不過(guò)Coldfire還是推薦用http://www.uclinux.org/ports/coldfire/,上面的版本是uClinux目前最主要的維護者Greg Ungerer(gerg@snapgear.com)開(kāi)發(fā)的,是uClinux最原始、最規范的版本。
我們用的是:

  ◇ 內核代碼
 ?。?a >http://www.uclinux.org/ports/coldfire/source.html上的Full Source Distribution)
uClinux-dist-20020306.tar.gz

  ◇ 交叉編譯器
 ?。?a >http://www.uclinux.org/ports/coldfire/source.html上的M68K/ColdFire Binary Tools (m68k-elf tool chain) )
m68k-elf-tools-20020218.tar.gz

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>