新聞中心
uclinux移植:嵌入式系統(tǒng)開(kāi)發(fā)必備技能

嵌入式系統(tǒng)在現(xiàn)代化信息技術(shù)領(lǐng)域中扮演著重要角色,運(yùn)用范圍廣泛,如消費(fèi)電子、汽車(chē) electronic Control Unit (ECU)、工業(yè)控制器等等。這些系統(tǒng)的設(shè)計(jì)需要提供高性能、穩(wěn)定性和可靠性。嵌入式系統(tǒng)通常具有資源限制,因此系統(tǒng)設(shè)計(jì)需要處理器,I/O控制器,外部設(shè)備,網(wǎng)絡(luò)連接和操作系統(tǒng)等組件之間的合理分配和交互,這些復(fù)雜的系統(tǒng)建立依賴于嵌入式操作系統(tǒng)的支持。
Linux操作系統(tǒng)是開(kāi)源的,全面的嵌入式操作系統(tǒng),目前是嵌入式系統(tǒng)中更受歡迎的操作系統(tǒng)之一。這是由于其高可自由定制性,開(kāi)放的源代碼使得程序員能夠自由修改、定制和擴(kuò)展 Linux 操作系統(tǒng)的功能。同時(shí),Linux 操作系統(tǒng)提供了一個(gè)完整的、成熟的軟件生態(tài)系統(tǒng),使得開(kāi)發(fā)嵌入式系統(tǒng)的時(shí)間和成本降低。
雖然Linux操作系統(tǒng)有很多優(yōu)點(diǎn),但在某些嵌入式系統(tǒng)的場(chǎng)景下,硬件資源有限,Linux操作系統(tǒng)的部分功能對(duì)系統(tǒng)資源的消耗會(huì)增加成本和復(fù)雜度。這就需要定制操作系統(tǒng),使之僅僅包含必需的功能,因此UCLinux( Linux的一個(gè)定制版本)的出現(xiàn)更加適合輕量級(jí)嵌入式系統(tǒng)。
UCLinux可以被移植到許多不同的嵌入式系統(tǒng)平臺(tái)上,它可以根據(jù)資源限制進(jìn)行定制,以滿足嵌入式設(shè)備的要求。在本文中,我們將深入探討如何將 UCLinux 移植到嵌入式設(shè)備上以及如何優(yōu)化嵌入式系統(tǒng)的性能。
為什么選擇UCLinux?
1.內(nèi)存占用小
大多數(shù)用于嵌入式系統(tǒng)的操作系統(tǒng)都有一個(gè)顯著的缺陷,它們的內(nèi)存占用非常大,不適合那些硬件受限的環(huán)境。但是UCLinux與Linux相比,它對(duì)內(nèi)存的要求較低。在移植 UCLinux 時(shí),可以移除一些非必要的功能和內(nèi)核模塊,以減少內(nèi)存的使用量。另外,UCLinux 還包含內(nèi)存壓縮技術(shù),可以將內(nèi)存占用降低到很小的程度。
2.實(shí)時(shí)性更高
在某些嵌入式系統(tǒng)的場(chǎng)景下,需要非常高的實(shí)時(shí)性(real-time),例如需要實(shí)時(shí)控制一臺(tái)機(jī)器人,避免機(jī)器人與外部環(huán)境產(chǎn)生碰撞。UCLinux 為這些需求提供了支持,它可以提供實(shí)時(shí)特性并具有常規(guī) Linux 的資源管理功能。
3.更少的磁盤(pán)空間需求
另一個(gè)磁盤(pán)空間的重要考慮是,UCLinux 只包含與平臺(tái)相關(guān)的模塊,并遵循內(nèi)核模塊驅(qū)動(dòng)方式,這樣極大地減少了對(duì)磁盤(pán)空間的需求。您可以根據(jù)實(shí)際需要,選擇使用必要的模塊,在極小的磁盤(pán)占用下實(shí)現(xiàn)全面的系統(tǒng)功能。
UCLinux總體架構(gòu)
UCLinux的總體架構(gòu)包括三個(gè)部分:
1.內(nèi)核空間
內(nèi)核空間包括內(nèi)核模塊、操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序等,是操作系統(tǒng)的核心功能之一,主要負(fù)責(zé)管理所有的硬件設(shè)備,例如 CPU、內(nèi)存、IO、磁盤(pán)、網(wǎng)絡(luò)等等。UCLinux 將內(nèi)部以守護(hù)程序的形式運(yùn)行,通過(guò) socket 進(jìn)行 API 調(diào)用。
2.用戶空間
用戶空間包括幾乎所有的操作系統(tǒng)服務(wù)都運(yùn)行在其中,例如 C 庫(kù)、守護(hù)進(jìn)程等。用戶空間的進(jìn)程通過(guò)系統(tǒng)調(diào)用接口和內(nèi)核空間進(jìn)行通信。
3.運(yùn)行時(shí)域
運(yùn)行時(shí)域包含的是你的應(yīng)用程序和一些庫(kù)的設(shè)施。在嵌入式系統(tǒng)中,為了磁盤(pán)空間的要求,通常少安裝庫(kù)文件,盡可能使用輕量級(jí)的程序,提高系統(tǒng)的穩(wěn)定性和性能。
UCLinux移植準(zhǔn)備工作
在準(zhǔn)備階段,我們需要執(zhí)行以下操作:
1.UClinux源碼
在 uClinux 官網(wǎng)(https://uclinux.org/) 下載最新的 UCLinux 源碼。
2. 生產(chǎn)商開(kāi)發(fā)板規(guī)格
您需要一個(gè)兼容 UCLinux 的嵌入式開(kāi)發(fā)板,開(kāi)發(fā)板的制造商通常提供有關(guān)它的規(guī)格的文檔。您應(yīng)該確保您的開(kāi)發(fā)板至少有以下規(guī)格:
-至少有 32MB 的 RAM,建議 64MB。
-至少有 4MB 的 ROM/RAM,建議 8MB。
-具有至少 Etheernet 和串行接口。
3.交叉編譯工具鏈
一般來(lái)說(shuō),為了適應(yīng)于嵌入式系統(tǒng)硬件資源的限制,通常需要在另一臺(tái)計(jì)算機(jī)上交叉編譯程序。這意味著我們需要交叉編譯庫(kù)和工具鏈。
4.調(diào)試工具
調(diào)試是移植過(guò)程中一個(gè)很重要的一環(huán),如果您還沒(méi)有選擇調(diào)試工具,建議您選擇已經(jīng)測(cè)試過(guò)的JTAG設(shè)備。JTAG設(shè)備可以支持跟蹤進(jìn)程、斷點(diǎn)功能等等。調(diào)試工具對(duì)于提示單步跟蹤、內(nèi)存映射、I/O映射、處理器狀態(tài)等方面非常有用。
5.確定驅(qū)動(dòng)程序
每個(gè)嵌入式控制器都有一組特定的驅(qū)動(dòng)程序,這是芯片生產(chǎn)商提供的,驅(qū)動(dòng)程序可以調(diào)用控制器上的硬件和實(shí)現(xiàn)控制器動(dòng)作。這就需要你了解每個(gè)需要使用的硬件驅(qū)動(dòng)類型,以便正確地編寫(xiě)和編譯代碼。
UCLinux移植步驟
在移植 UCLinux 后,根據(jù)平臺(tái)的硬件需要進(jìn)行優(yōu)化和調(diào)整,使其達(dá)到更佳性能。
1.交叉編譯 UCLinux
一般情況下,嵌入式系統(tǒng)的硬件資源較少,因此需要使用從不同平臺(tái)上的 Linux 內(nèi)核源代碼交叉編譯工具集進(jìn)行交叉編譯。
$ tar xjvf linux-4.4.28.tar.bz2
$ tar xjvf uClinux-dist-20230518.tar.bz2
$ cd uClinux-dist
$ tar xjvf ../linux-4.4.28.tar.bz2
$ make menuconfig
在交叉編譯選項(xiàng)中,你需要設(shè)置正確的內(nèi)核架構(gòu)、硬件平臺(tái)和文件系統(tǒng)類型;
$ make all
2.配置和編譯內(nèi)核
我們需要將 UCLinux 內(nèi)核與硬件平臺(tái)的板卡拼接在一起。通過(guò)將板卡的硬件和設(shè)備驅(qū)動(dòng)程序添加到內(nèi)核中,我們可以為 UCLinux 提供與硬件的基本聯(lián)系。
$ make ARCH=arm menuconfig
$ make ARCH=arm uImage
在上面的例子中,UCLinux 將被構(gòu)建為一個(gè) ARM 平臺(tái)(編譯器選項(xiàng) -arch arm)。
3.編譯文件系統(tǒng)
UCLinux 的文件系統(tǒng)需要適應(yīng)特定的硬件平臺(tái)。您需要在 UCLinux 構(gòu)建系統(tǒng)中設(shè)置正確的架構(gòu),硬件平臺(tái),文件系統(tǒng)類型以及其他選項(xiàng)。
$ make menuconfig
$ make
4.寫(xiě)入U(xiǎn)CLinux到開(kāi)發(fā)板
寫(xiě)入過(guò)程不是 UCLinux 移植過(guò)程中的一部分,但是它是整個(gè)安裝過(guò)程的一個(gè)必要步驟。
UCLinux移植的常見(jiàn)問(wèn)題
商業(yè)嵌入式系統(tǒng)和 UCLinux 相比,UCLinux 系統(tǒng)需要更多的處理器和內(nèi)存,但是與具有類似功能的操作系統(tǒng)相比,UCLinux 將是您的更佳選擇。
UCLinux 的一些常見(jiàn)問(wèn)題:
1.內(nèi)存大小有限制。
2.不支持硬實(shí)時(shí)。
3.與經(jīng)典 Linux 一樣,UCLinux 還不支持 Java 虛擬機(jī)(JVM)。
4.與傳統(tǒng)的 Linux相比,移植比較復(fù)雜。嵌入式開(kāi)發(fā)者需要了解內(nèi)核和裁剪內(nèi)核以適應(yīng)嵌入式應(yīng)用程序。
5.標(biāo)準(zhǔn)化方案。
從本文中可以看出,嵌入式系統(tǒng)正在成為現(xiàn)代 IT 領(lǐng)域的重要組成部分。它們力求提供高性能、穩(wěn)定性和可靠性,并面向廣泛的應(yīng)用領(lǐng)域,如汽車(chē)、家用電器、安全設(shè)備、醫(yī)療設(shè)備以及電信網(wǎng)絡(luò)設(shè)備等領(lǐng)域。然而,在處理器、I/O 控制器、外部設(shè)備、網(wǎng)絡(luò)連接以及操作系統(tǒng)等各種組件之間合理地分配和交互上,這些復(fù)雜的系統(tǒng)建立依賴于嵌入式操作系統(tǒng)的支持。在這個(gè)環(huán)境中,移植 UCLinux 是不可或缺的,UCLinux 的定制性、實(shí)時(shí)性以及磁盤(pán)空間需求使之適合輕量級(jí)嵌入式系統(tǒng)。
通過(guò)本文,您可以了解 UCLinux 的總體架構(gòu)以及如何進(jìn)行移植,包括預(yù)備工作、移植步驟以及一些常見(jiàn)問(wèn)題。希望本文可以幫助您深入理解 UCLinux,為您接下來(lái)的工作提供指導(dǎo)或靈感。
相關(guān)問(wèn)題拓展閱讀:
- 想學(xué)習(xí) 嵌入式ARM開(kāi)發(fā) 請(qǐng)各位高手推薦個(gè)學(xué)習(xí)步驟!
想學(xué)習(xí) 嵌入式ARM開(kāi)發(fā) 請(qǐng)各位高手推薦個(gè)學(xué)習(xí)步驟!
C語(yǔ)言的結(jié)構(gòu)體 指針這塊用的很多,ARM的芯片構(gòu)架是需要明白的。再就是OS了。這是最重要的了,(因?yàn)槲沂请娗哪罴冏痈邭I(yè)的) 系統(tǒng)方面啟咐LINUX設(shè)計(jì)的內(nèi)容最多。多以需要電子 計(jì)算機(jī)都熟悉的容易接受此設(shè)計(jì)開(kāi)發(fā)。
1、抓住51開(kāi)發(fā)ARM
這幾個(gè)月來(lái)我一直都爬在51的問(wèn)題,自己都有一點(diǎn)笑自己了,用清納備了4個(gè)月的時(shí)間,來(lái)鞏固51的原理和程序,還好我自己算是走過(guò)來(lái)了,自己笨,身邊的高才生又看不上51的原理,他們都比較“?!保f(shuō)51過(guò)時(shí)了,你問(wèn)那個(gè)做什么???我比較郁悶!過(guò)時(shí)嗎?我有一點(diǎn)懷疑?
他們不愿意說(shuō)有他們自己的理由,沒(méi)有人強(qiáng)求,靠自己好了。
我自己個(gè)人的觀點(diǎn):51是一個(gè)基礎(chǔ),而且還很重要,這是再我看了ARM之后感覺(jué)到的。它可以加速你的ARM學(xué)習(xí)速度,真得!不相信你試一試好了。
凡是要求一個(gè)速度、效率,不要做一些無(wú)用功,抓緊身邊的每一個(gè)一分鐘,人是活的,東西(知識(shí)、書(shū))是死得,想要做的事情因此就簡(jiǎn)單了。
2、我在網(wǎng)上看到了一篇很不錯(cuò)的ARM文章,粘貼過(guò)來(lái),為了和像我一樣在很少有人幫助的情況下,自學(xué)ARM 的難兄難弟們。
“ARM 怎么入門(mén)”。我不是高手,仍然是菜鳥(niǎo)。
但是回想起自己當(dāng)時(shí)的迷茫,特意寫(xiě)了這篇東西,當(dāng)作給和我一樣的兄弟姐妹的幫助吧。問(wèn)這個(gè)問(wèn)題的人多半不是已經(jīng)工作的工程師,而是和我一樣是學(xué)生,所以這篇筆記就把看家當(dāng)成我一樣的菜鳥(niǎo),高手勿怪。
首先聲明:本人還沒(méi)有找工作,事實(shí)上處于研究生剛畢業(yè),還沒(méi)開(kāi)始找工作的空閑時(shí)間,44B0只是興趣所在,打發(fā)時(shí)間。
所有看法完全是自己的感受,不代表任何他人。錯(cuò)了的觀點(diǎn)各位幫我糾正。再次補(bǔ)充:很多朋友看了上面的話就問(wèn)我為什么研究生畢業(yè)了還不找工作:)說(shuō)是打發(fā)時(shí)間,其實(shí)是因?yàn)檠芯可臅r(shí)候帶了一個(gè)項(xiàng)目,申請(qǐng)?zhí)崆爱厴I(yè)以后項(xiàng)目還有塊尾巴,答應(yīng)導(dǎo)師把項(xiàng)目做完再走:)就這么簡(jiǎn)單。男人總點(diǎn)負(fù)點(diǎn)責(zé),呵呵
以下問(wèn)題常被問(wèn)到,我就想到哪說(shuō)到哪吧。
一 首先說(shuō)說(shuō)ARM的發(fā)展可以用一片大好來(lái)形容,翻開(kāi)各個(gè)公司的網(wǎng)站,招聘里面嵌入式占據(jù)了大半工程師職位。
廣義的嵌入式無(wú)非幾種:傳統(tǒng)的什么 51、AVR、PIC稱做嵌入式微控制器;ARM是嵌入式微處理器;DSP;FPGA。
客觀的講,工作需求量上DSP的需求比ARM 要多,而ARM和FPGA差不多。
DSP因?yàn)閿?shù)字處理與通信領(lǐng)域的空前發(fā)展而火暴,小到MP3 射象頭,大到我們軍品里的控制器,應(yīng)用面很廣。
FPGA的兄弟一般做ANSIC(特殊芯片設(shè)計(jì),好象是這么翻譯的)。而ARM單純說(shuō)來(lái)并不比一個(gè)單片機(jī)強(qiáng)多少,但是它的獨(dú)特就在于不斷下降的價(jià)格和提升的性能。這完全依靠于ARM公司的戰(zhàn)略,厲害?。『芘宸麄兊膽?zhàn)略眼光!!
值得注意的是:在找工作中,企業(yè)(著名的,小的不算)對(duì)單純的ARM硬件開(kāi)發(fā)工程師并不比單片機(jī)重視,很少有大企業(yè)的職位里寫(xiě)“從事過(guò)ARM開(kāi)發(fā)優(yōu)先”。寫(xiě)的多的是什么?“嵌入式LINUX”到這相信大家看出來(lái)了吧,需要的是硬件中的軟件。
二 ARM是硬件還是軟件很難說(shuō),ARM是硬件,LINUX是軟件。ARM的硬件多半已經(jīng)模塊化了,像我這樣把板子改成這樣茄謹(jǐn)?shù)木退銊?dòng)的多的了,這同樣是ARM公司的戰(zhàn)略,再次佩服。
實(shí)際中的LINUX的開(kāi)發(fā)工作更多,更耗時(shí)。從這方面說(shuō)ARM應(yīng)該算是軟件了。
在找工作中更是這樣,舉個(gè)例子,聯(lián)想里和ARM最接近的是“BIOS工程師”是軟件,MOTO里接近的是嵌入式LINUX工程師是軟件。而其他很多公司把嵌入式產(chǎn)品開(kāi)發(fā)歸為硬件。所以,不要討論這個(gè),好好玩轉(zhuǎn)自己的板子才是關(guān)鍵。實(shí)在不爽你就把自己叫“嵌入式開(kāi)發(fā)工程師”
三 要不要買(mǎi)開(kāi)發(fā)板 買(mǎi)哪家
我的答案是“在你個(gè)人的學(xué)習(xí)方法”,但是如果看家是需要看這騙筆記的水平,個(gè)人推薦還是買(mǎi)現(xiàn)成的。 1.買(mǎi)
買(mǎi)板子可以把注意力集中在軟件開(kāi)發(fā)上,軟件開(kāi)發(fā)(尤其是驅(qū)動(dòng))可以不必?fù)?dān)心自己硬件上的問(wèn)題,我就是以便調(diào)試一邊寫(xiě)驅(qū)動(dòng)和程序,每次寫(xiě)驅(qū)動(dòng)前就要先確認(rèn)硬件沒(méi)問(wèn)題。另外,買(mǎi)板子更省錢(qián)和時(shí)間,我自己做的板子,原理圖PCB花了2周以上!制版又15天,回來(lái)以后焊接44B0 160個(gè)腳答毀!那叫一個(gè)麻煩~~花了多少錢(qián)呢?2層板,制版費(fèi)就300塊!當(dāng)然我把接口都外引了,還做了個(gè)20X18的LCD背板,板子比較大??傮w下來(lái)元件+LCD屏+PCB=11XX塊!夠2410的了。
再有就是買(mǎi)的資料相對(duì)來(lái)說(shuō)比較全,但是不要指望有技術(shù)支持!都是騙人的,賣(mài)你之后就不會(huì)理你。
2.做 自己做可以更了解底層硬件,可以按照自己的要求加?xùn)|西,比如我就加了GPS模塊、 GPRS模塊、SD卡模塊,擴(kuò)了個(gè)IIC的35個(gè)鍵子的鍵盤(pán)、把LCD接口按照買(mǎi)的LCD改裝了,可以用FPC線直接連接。做的很爽的。玩一把嗎。
當(dāng)然,你可以有策略的做,比如像我一樣,把RAM和ROM,網(wǎng)絡(luò)都保持和某現(xiàn)成的板子一樣,這樣他們的資料你就可以拿過(guò)來(lái)直接用,給自己留個(gè)退路。其他的如 SD了什么的自己做。都達(dá)到了~~就是費(fèi)錢(qián),費(fèi)時(shí)間。
再有就是給做的朋友幾點(diǎn)建議:盡量拿到現(xiàn)成的板子,盡量多搜集其他板子的資料,一定要拿到一張沒(méi)問(wèn)題的原理圖。
網(wǎng)上流傳的原理圖多數(shù)是龔俊03年畫(huà)的,再這里對(duì)龔俊表達(dá)一下我的敬意??!牛人!
但是那個(gè)圖有個(gè)小BUG,我指的是03版的,后來(lái)的沒(méi)這問(wèn)題了。8019那地址線和地址有問(wèn)題。還有人仿照他的PDF圖畫(huà)的SCH,更是漏洞百出!譴責(zé)!順便譴責(zé)把龔俊板子偷賣(mài)的人。
3.買(mǎi)哪家
個(gè)人感覺(jué)分3類吧
1)首先是ZLG的,資料非常的全,感覺(jué)他是真正想教你怎么開(kāi)發(fā)ARM,而不是像有的公司自己技術(shù)都沒(méi)做好就做個(gè)板子出來(lái)賣(mài)錢(qián)。但是更大的不利就是價(jià)格太貴!而且主要是PHILIP的,貨源比較麻煩~~可能有人說(shuō)21XX系列的不貴啊,那是總線不外擴(kuò)的,只能跑UCOS,不能跑UCLINUX。但是說(shuō)是話,21XX系列才是ARM7的價(jià)格性能結(jié)合點(diǎn)。ARM7最適合做工業(yè)控制,ARM普及,銷量都是怎么來(lái)的?都是ARM7來(lái)的,而44B0是典型的商業(yè)片子。但是,這里如果你看中的是為工作做準(zhǔn)備,還是選能跑UCLINUX的吧。
但是仍然作為之一個(gè)推薦,因?yàn)椴锁B(niǎo)時(shí)期,合適的資料太重要了?。≡谶@里被ZLG的務(wù)實(shí)精神感動(dòng)!你看人家那代碼寫(xiě)的。
2)感覺(jué)立宇泰的44B0不錯(cuò)
硬件沒(méi)別的,就是資料比較全的說(shuō),不像有些家,原理圖直接拿人家的,還錯(cuò)的~~
3)找個(gè)更便宜的
好象更便宜的有賣(mài)350的吧?也是沒(méi)別的,就是即省了錢(qián) 還省時(shí)間搜集資料,至于資料全不全,別計(jì)較了~~硬件肯定好使就行吧。
四 要不要有51 AVR等單片機(jī)基礎(chǔ)
有更好,但沒(méi)有也無(wú)所謂。
兩個(gè)月以前,我只是看別人做,耳濡目染~~,本科學(xué)過(guò)單片機(jī),從來(lái)沒(méi)做過(guò)。我們這的技術(shù)主干做AVR和51,我就跟他們調(diào)過(guò)C語(yǔ)言程序。你看出來(lái)了?我是個(gè)不折不扣的菜鳥(niǎo)吧?
但是做這個(gè)之前我特意找了ZLG的兩本書(shū),看了里面的例子和原理圖,這很重要。例程里有匯編有C,都看懂了就OK,不用自己現(xiàn)寫(xiě)
五 開(kāi)發(fā)都需要學(xué)習(xí)哪些軟件
總結(jié)起來(lái)最主要的有以下幾個(gè)吧 1 ADS調(diào)試用
確切的說(shuō)是ADS+AXD。 ADS里包含AXD。原來(lái)都用SDT后來(lái)ARM公司停止對(duì)SDT支持了,改支持ADS了,還是用ADS吧。
有的人的程序發(fā)布的仍然是SDT版本的,但基本都可以找到相應(yīng)ADS的,新人在這里不要發(fā)蒙。ADS是編譯器,AXD是調(diào)試器。便宜成AXF以后再在ARM的RAM里調(diào)試。
2 PLASHPGM
FLASH燒寫(xiě)的軟件。AXD在RAM里調(diào)試,掉電就沒(méi)有了,方便程序修改。調(diào)試好的程序再下到FLASH里,上電直接運(yùn)行。
同類的軟件還有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM更好,要是有人還問(wèn)FLASH不支持BIN格式文件的問(wèn)題就要看我寫(xiě)的 PLASHPGM使用了。
3 BANYANT調(diào)試代理(不知道名對(duì)不,起這么個(gè)難記的,我一般都叫它“半羊”因?yàn)橹浪菐滋靹偝粤丝狙颍?/p>
調(diào)試代理就是用它幫你使用更簡(jiǎn)單的JTAG(便宜?。﹣?lái)實(shí)現(xiàn)原本1K才賣(mài)的JTAG仿真器的大部分功能。JTAG調(diào)試原理看我另一篇筆記。簡(jiǎn)單的就可以把他理解為你自己做的JTAG的驅(qū)動(dòng)就行了。
調(diào)試代理還有很多種,什么H-JTAG了、ARM7了(不知道具體叫什么,就記得可執(zhí)行文件叫 ARM7.EXE)都是,BANYANT比較好。
需要注意的是,沒(méi)種調(diào)試代理安裝方法雖然都簡(jiǎn)單但都不一樣,需要看說(shuō)明。而且AXD調(diào)試之前都要運(yùn)行。省錢(qián)了,就別怕麻煩了。
4 ARM-ELF-TOOLS工具鏈
里面是UCLINUX開(kāi)發(fā)用的工具比如ARM-ELF-GCC只類的。工具鏈就是把很多工具打包在一起發(fā)布的方便你開(kāi)發(fā)的東西。具體安裝方法看我另一篇筆記。
另外如果你開(kāi)發(fā)LINUX就要用ARM-LINUX- TOOLS,不一樣,不通用。
5 U-BOOT
大名鼎鼎的BOOTLOADER生成工具,同類的好象還有VIVI(名字很曖昧~~)
生成的BOOTLOADER燒到FLASH里,然后就可以用BOOTLOADER下載 燒寫(xiě)其他了
有了BOOTLOADER才能下UCLINUX。 BOOTLOADER就像電腦上的BIOS。當(dāng)然UCOS的不用這個(gè),用什么我不知道:)
最新版本是1.1.4 具體使用方法看我另一篇筆記吧。
6 UCLINUX包
UCLINUX的源碼包,不用多說(shuō)了吧?建議大家用現(xiàn)成的先體會(huì)一下,然后再自己編譯,裁剪。因?yàn)閱为?dú) UCLINUX的編輯技術(shù)上比較簡(jiǎn)單,但涉及的方面還是比較廣的。
7 VMWARE
老牌的虛擬機(jī)軟件,在一個(gè)機(jī)器上虛擬出一個(gè)機(jī)器裝 LINUX(PC上用的),省得你來(lái)回開(kāi)關(guān)機(jī)了。記得裝VMWARE-TOOLS,安裝方法在我另一篇筆記里。
六 有哪些書(shū)推薦
主要推薦ZLG的三本書(shū),有這3本再加網(wǎng)絡(luò)就不用別的書(shū)了,其中主要推薦前2本,3是介紹體系結(jié)構(gòu)的,也不錯(cuò) 1 ARM嵌入式LINUX系統(tǒng)構(gòu)建與驅(qū)動(dòng)開(kāi)發(fā),北航版
驅(qū)動(dòng)寫(xiě)的很詳細(xì),前期開(kāi)發(fā)介紹也很好 2 ARM 嵌入式系統(tǒng)實(shí)驗(yàn)教程(二),北航版
有ZLG2200的原理圖,實(shí)驗(yàn)程序和注釋,了解人家是怎么開(kāi)發(fā)的。 3 ARM嵌入式系統(tǒng)基礎(chǔ)教程
最重要的是體系結(jié)構(gòu),匯編部分介紹,看看吧,增加理論素質(zhì)。 4 44B0數(shù)據(jù)手冊(cè)
寫(xiě)在這里是強(qiáng)調(diào)它的重要。
不推薦ZLG早期出的紅色皮的ARM什么體系結(jié)構(gòu)~只類的
寫(xiě)的太多,看煩了。
其他的書(shū)沒(méi)了幾本,沒(méi)看見(jiàn)好的,大家有看過(guò)的推薦吧。
七 選UCOS?UCLINUX?LINUX?VXWORKS?還是當(dāng)單片機(jī)用
搞開(kāi)發(fā),工程設(shè)計(jì),用UCOS,小巧,多進(jìn)程,簡(jiǎn)單,體現(xiàn)了ARM7的精髓。
LINUX 正根的嵌入式系統(tǒng),LINUX消費(fèi)與通信領(lǐng)域用的比較多,但缺點(diǎn)是必須ARM9才能跑,ARM9的板子自己做就不行了,6層板太貴。買(mǎi)開(kāi)發(fā)板1K達(dá)底吧。但是還是推薦選ARM9+LINUX
UCLINUX 算投機(jī)嵌入式系統(tǒng):)ARM7上可以跑,由有LINUX近親,學(xué)好好可以比較方便的轉(zhuǎn)向LINUX,像我一樣的窮鬼用吧,呵呵
VXWORKS
學(xué)好后可以找到高薪工作,但工作機(jī)會(huì)本身并不比LINUX好找。
5 當(dāng)單片機(jī)用
不推薦,雖然我景仰的 ZLG一直號(hào)召這么干。因?yàn)閷?duì)于學(xué)習(xí)來(lái)說(shuō)多進(jìn)程的系統(tǒng)設(shè)計(jì)才是ARM7的玩頭,至少你也要整個(gè)UCOS?。海?/p>
有朋友問(wèn)我先學(xué)這個(gè)當(dāng)基礎(chǔ)不行嗎?那當(dāng)然可以~~但我當(dāng)時(shí)就用了1周搞定,就是我先的ADS在RAM中調(diào)試的筆記。后來(lái)我清空FLASH用的小段程序還是當(dāng)時(shí)寫(xiě)的LED閃爍程序呢。另外1周里其中還因?yàn)樽约哼^(guò)于菜,沒(méi)把OM設(shè)置好導(dǎo)致晶陣不陣
哈哈。這個(gè)是必須做的,但一帶而過(guò)。目標(biāo)放的遠(yuǎn)一點(diǎn)。
八 學(xué)習(xí)要用多長(zhǎng)時(shí)間
我從菜鳥(niǎo)到現(xiàn)在兩個(gè)多月,中間被打擾數(shù)次。仍然搞定了PCB設(shè)計(jì)與制版,RAM調(diào)試,F(xiàn)LASH下載,UBOOT移植和下載UCLINUX(沒(méi)剪裁,用現(xiàn)成的),LCD驅(qū)動(dòng)。
再次坦誠(chéng)的說(shuō):我確實(shí)比較菜,說(shuō)這些不是讓大家羨慕,只是告訴你們“你們應(yīng)該比這個(gè)更好”
我相信良好的態(tài)度+合適的方法+及時(shí)的總結(jié)=成績(jī)
九 ARM都玩什么就幾點(diǎn)
1 硬件設(shè)計(jì)
2 系統(tǒng)移植
3 驅(qū)動(dòng)開(kāi)發(fā)
4 應(yīng)用開(kāi)發(fā)
沒(méi)了。其中推薦把注意力放在后兩個(gè)上,3有難度,4比較靈活,最重要的是都是找工作的砝碼。
十 我用的什么板子
很多人問(wèn)我這個(gè)問(wèn)題,我特意寫(xiě)過(guò)一個(gè)的。再說(shuō)一次吧。
我是自己做的,RAM、ROM、8019等比較麻煩而當(dāng)時(shí)的自己不理解的都按照龔俊的做的。保持其他不便的情況下做了如下改動(dòng)。
1 加了串口通信的GPS模塊、 GPRS模塊
一個(gè) UART0,一個(gè)UART1,當(dāng)與要用超級(jí)終端時(shí)用跳線切換。
2 SD卡,和7843觸摸屏
同時(shí)掛在SPI總線上,因?yàn)镾PI只能掛一個(gè)設(shè)備,同時(shí)還做了I/O模擬的準(zhǔn)備,把兩個(gè)設(shè)備又通過(guò)跳線掛在4個(gè)IO上。
3 擴(kuò)了個(gè)IIC的35個(gè)鍵子的鍵盤(pán)
用的ZLG的7290,不占用CPU,更大支持64個(gè)鍵子,只上了35個(gè),其他留接口。
4 把LCD接口按照買(mǎi)的LCD改裝了,可以用FPC線直接連接。
所以改動(dòng)雖然多,但真正很移植了,初期調(diào)試有關(guān)的并沒(méi)動(dòng),就是為了現(xiàn)在不那么菜的時(shí)候做準(zhǔn)備:)
十一 開(kāi)發(fā)流程
這里是我的開(kāi)發(fā)流程
1 設(shè)計(jì)原理圖(含WIGGLER的JTAG訪真器)
2 設(shè)計(jì)PCB(含WIGGLER的JTAG訪真器)
3 制版
4 焊接電壓,確定電壓沒(méi)問(wèn)題
5 焊接44B0+JTAG電路+WIGGLER的JTAG訪真器+周邊電路,用BANYANT+仿真器連接,BANYANT提示錯(cuò)誤,但可以顯示44B0編號(hào),好象是0X0F0F0F0F只類的,說(shuō)明44B0沒(méi)問(wèn)題
6 焊接晶體+RAM+ROM+周邊電路,用BANYANT+仿真器連接,可以顯示正確的44B0了
7 用BANYANT+仿真器連接,開(kāi)AXD,在命令行窗口操作RAM,看可不可以修改,可以的話(用內(nèi)存窗口看RAM地址)RAM就沒(méi)問(wèn)題
可以用這個(gè)命令“setmem 0xc000000,0xffffffff,32”
我的RAM掛在BANK6上 所以地址是0XC000000,你要是改了就也得改。
8 用我寫(xiě)的《自己寫(xiě)了個(gè)C工程模板又寫(xiě)了個(gè)使用說(shuō)明 》里的方法調(diào)試程序吧,寫(xiě)個(gè)簡(jiǎn)單的,我當(dāng)時(shí)寫(xiě)個(gè)LED閃爍的??春檬共?。
9 把程序按照《FLASH燒寫(xiě)總結(jié) 》里的燒到FLASH里,測(cè)試一下
10 按照《UBOOT 移植操作》移植UBOOT
11 按照《UCLINUX下載簡(jiǎn)單說(shuō)明》下個(gè)UCLINUX
12 看看驅(qū)動(dòng)開(kāi)發(fā)的方法,自己寫(xiě)個(gè)驅(qū)動(dòng)看看
13 還有很多事東西著你玩 呵呵
十二 關(guān)于JTAG訪真器JTAG 訪真器現(xiàn)在用的多是簡(jiǎn)板的,一個(gè)244那種,用的沒(méi)什么不好。
按照并口定義不同分幾種,建議選WIFFLER定義的,因?yàn)橹С值能浖唷_@個(gè)網(wǎng)上多的是,不多說(shuō)了。
值得提的是有的JTAG訪真器原理圖上有跳線用來(lái)使能復(fù)位信號(hào),這個(gè)一般不跳上。就是不用復(fù)位信號(hào),因?yàn)镴TAG協(xié)議里本身也可以控制44B0復(fù)位。
當(dāng)然,板子上的復(fù)位信號(hào)跳線也不用跳。
十三 哪個(gè)公司的ARM
這個(gè)是問(wèn)題比較簡(jiǎn)單。 1 ARM7主要就幾個(gè)公司的
三星,PHILIP,ATMEL的
ATMEL的有比較便宜的AT91SAM7S32 和AT91SAM7S64 專為8位應(yīng)用產(chǎn)品量身定做,價(jià)格很便宜好象《3刀吧。和PHILIP的21XX差不多,資料太少,項(xiàng)目中選還不錯(cuò)。
其他兩家上面說(shuō)了的不多說(shuō)了吧
2 ARM9
這個(gè)玩2410和2440的多吧,現(xiàn)在2440還比較火啊 可以考慮買(mǎi)個(gè)了
但是 2410就比較便宜了,作為學(xué)習(xí)來(lái)說(shuō)反到和不錯(cuò),推薦整一個(gè):)
其實(shí)ARM9用的最多的領(lǐng)域應(yīng)該是消費(fèi)電子,比如手機(jī)PDA,而這上面用的多的應(yīng)該是INTEL的和TI的吧。
但是INTEL的TI的入門(mén)材料少,價(jià)格高,自己看情況定吧
以下是學(xué)習(xí)嵌入式ARM開(kāi)發(fā)的步驟:1.學(xué)習(xí)基礎(chǔ)知識(shí):學(xué)習(xí)C和數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)知識(shí),這些知識(shí)是嵌入式ARM開(kāi)發(fā)的基礎(chǔ)。2.了解嵌入式系統(tǒng):了解嵌入式系統(tǒng)的基本原理以及如何畢滑選擇嵌入式平臺(tái)。3.選擇開(kāi)發(fā)工具:選擇適合自己的嵌入式開(kāi)發(fā)工具和IDE。比如Keil,IAR,Eclipse等。4.學(xué)習(xí)嵌入式ARM芯片:學(xué)習(xí)具體的嵌入式ARM芯片的架構(gòu)和指令集。包括ARM Cortex-M系列等。5.學(xué)習(xí)嵌入式開(kāi)發(fā)技術(shù):學(xué)習(xí)嵌入式開(kāi)發(fā)技術(shù),如中斷處理,時(shí)鐘控制,串口通訊等。6.實(shí)踐項(xiàng)目:完成一些簡(jiǎn)單的嵌入式ARM開(kāi)發(fā)項(xiàng)目,例如LED控制,按鍵控制,串口通訊等。7.參與開(kāi)源項(xiàng)目:參與開(kāi)源項(xiàng)目,學(xué)習(xí)優(yōu)秀的項(xiàng)目實(shí)踐和開(kāi)發(fā)經(jīng)驗(yàn)。比如RT-Thread等。8.不斷學(xué)習(xí):持續(xù)學(xué)習(xí)新技術(shù)和進(jìn)階知識(shí),裂做如RTOS,網(wǎng)絡(luò)協(xié)議棧,物聯(lián)網(wǎng)等。希望以上步驟能對(duì)你有所幫助,祝你學(xué)習(xí)手源臘愉快!
最基本的c語(yǔ)言,Linux,arm架構(gòu),其他就看你的擴(kuò)展啦
關(guān)于嵌入式學(xué)習(xí)方面的相關(guān)專業(yè)問(wèn)題,建議LZ到華清遠(yuǎn)見(jiàn)的網(wǎng)站上了解一下,也可以具體咨詢一下喊灶華清遠(yuǎn)見(jiàn)的專業(yè)老師,另外,各大書(shū)店兆返及圖書(shū)館也有華清遠(yuǎn)見(jiàn)出版的暢銷嵌入式專業(yè)圖書(shū),鄭猜扮了解一下相信對(duì)你有幫助!
uclinux移植的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于uclinux移植,UCLinux移植:嵌入式系統(tǒng)開(kāi)發(fā)必備技能 ,想學(xué)習(xí) 嵌入式ARM開(kāi)發(fā) 請(qǐng)各位高手推薦個(gè)學(xué)習(xí)步驟!的信息別忘了在本站進(jìn)行查找喔。
成都服務(wù)器租用選創(chuàng)新互聯(lián),先試用再開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。物理服務(wù)器托管租用:四川成都、綿陽(yáng)、重慶、貴陽(yáng)機(jī)房服務(wù)器托管租用。
本文標(biāo)題:UCLinux移植:嵌入式系統(tǒng)開(kāi)發(fā)必備技能 (uclinux移植)
網(wǎng)站路徑:http://fisionsoft.com.cn/article/ccejojj.html


咨詢
建站咨詢
