μClinux在S3C4510B上的移植
摘要:Linux是一種支持多種體系結(jié)構(gòu)處理器的操作系統(tǒng),有很強(qiáng)的移植性。描述了將μClinux移植到基于S3C4510B處理器目標(biāo)板上的方法與過程。首先介紹了S3C4510B處理器和μClinux,并簡單說明了如何搭建移植環(huán)境,然后著重討論了在該開發(fā)板上Bootloader的設(shè)計(jì)實(shí)現(xiàn)以及μClinux內(nèi)核的移植方法,最后對在這種基于μClinux的嵌入式系統(tǒng)環(huán)境下如何開發(fā)應(yīng)用程序做了簡單說明。
本文引用地址:http://2s4d.com/article/149089.htm關(guān)鍵詞:嵌入式系統(tǒng);移植;μClinux;S3C4510B;Bootloader
1引言
ARM(AdvancedRISCMachines),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對一微處理器的通稱,還可以認(rèn)為是一種技術(shù)的名字。
1991年ARM公司成立于英國劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用ARM技術(shù)知識產(chǎn)權(quán)(IP)核的微處理器,即我們通常所說的ARM微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術(shù)正在逐步滲入我們生活的各個(gè)方面。
采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn):體積小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令執(zhí)行速度更快;大多數(shù)數(shù)據(jù)操作都在寄存器中完成;尋址方式靈活簡單,執(zhí)行效率高;指令長度固定。ARM的產(chǎn)品主要包括ARM7Thumb家族和ARM9Thumb家族、ARM10Thumb家族以及StrongARM家族。
2基于ARM的S3C4510B處理器和μClinux
本文所使用的S3C4510B是Samsung公司使用ARM7處理器內(nèi)核開發(fā)的一塊嵌入式微處理器。作為一款高性價(jià)比的網(wǎng)絡(luò)處理器,S3C4510B已廣泛應(yīng)用于各種網(wǎng)絡(luò)設(shè)備中,其中央處理器為ARM7TDMI核。ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為:
T:支持16位壓縮指令集Thumb;
D:支持片上Debug;
M:內(nèi)嵌硬件乘法器(Multiplier);
I:嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn)。
ThumbTM16位壓縮指令集能以較小的存儲空間需求,獲得32位的系統(tǒng)性能。S3C4510B處理器包括8kB可配置的一體化Cache/SRAM,1個(gè)I2C串行接口,2個(gè)UART,2個(gè)32位定時(shí)器,18個(gè)可編程的通用I/O口,以及1個(gè)10M/100M以太網(wǎng)控制器。豐富的片內(nèi)外圍極大地簡化了系統(tǒng)的設(shè)計(jì)。同時(shí)這款微處理器對操作系統(tǒng)的支持廣泛,包括WindowsCE、Linux、PalmOS等μClinux是針對控制領(lǐng)域的嵌入式Linux操作系統(tǒng),他從Linux2.0/2.4內(nèi)核派生而來,沿襲了主流Linux的絕大部分特性。適合不具備內(nèi)存管理單元(MemoryManagementUnit,簡稱MMU)的微處理器/微控制器,例如ARM7TDMI,他通常具有很少內(nèi)存或Flash的嵌入式系統(tǒng)。在GNU通用公共許可證(GUNGPL)的保證下,運(yùn)行μClinux操作系統(tǒng)的用戶可以使用幾乎所有的LinuxAPI函數(shù),不會因?yàn)闆]有MMU而受到影響。
3建立μClinux開發(fā)環(huán)境
嵌入式系統(tǒng)的開發(fā)與一般的應(yīng)用開發(fā)最大的差別在于,前者需要建立特殊的硬件環(huán)境,而后者一般基于特定的操作系統(tǒng)或分布式平臺。后者的平臺已經(jīng)對硬件或網(wǎng)絡(luò)媒質(zhì)做了抽象,從而不需要由系統(tǒng)開發(fā)者來完成這些工作。而在嵌入式系統(tǒng)開發(fā)中,這也由開發(fā)者完成。
嵌入式系統(tǒng)開發(fā)環(huán)境一般分成主機(jī)端(HOST)和目標(biāo)板(TARGET)兩個(gè)部分。主機(jī)端是開發(fā)平臺,用于運(yùn)行開發(fā)過程中的各種工具;目標(biāo)板是運(yùn)行和測試平臺,是嵌入式系統(tǒng)的最終駐留環(huán)境。在主機(jī)端和目標(biāo)板之間需要通過某種方式進(jìn)行通信,如使用RS232C串口。這種通信的目的在于發(fā)送控制指令和傳輸數(shù)據(jù),同時(shí)獲得反饋信息。圖1是系統(tǒng)移植工作的硬件環(huán)境。
主機(jī)端的PC使用COM1通過MAX232和S3C4510B的UART1相連接,通過串口完成對目標(biāo)板的必要控制功能。S3C4510B開發(fā)板上配備有一塊DM9161以太網(wǎng)卡芯片和主機(jī)端建立原始(raw)IP連接,使用鏈路層地址完成大批量數(shù)據(jù)的傳送。
硬件環(huán)境建立之后,就需要?jiǎng)?chuàng)建軟件開發(fā)環(huán)境。軟件環(huán)境主要是指ARM體系結(jié)構(gòu)的交叉編譯環(huán)境,在主機(jī)端使用RedHatLinux8.0操作系統(tǒng),并在其上建立gcc的ARM體系結(jié)構(gòu)的交叉開發(fā)環(huán)境??梢詮膆ttp://mac.os.nctu.edu.tw處下載工具鏈:
(1)armelfbinutils2.115.i385.rpm
一些輔助工具,包括objdump(可以反編譯二進(jìn)制文件),as(匯編編譯器),ld(連接器)等。
(2)armelfgcc2.95.32.i386.rpm
配置目標(biāo)為arm的GNU的C編譯器。使用他在宿主機(jī)上開發(fā)編譯目標(biāo)上可運(yùn)行的二進(jìn)制文件。
(3)genromfs0.5.11.i386.rpm
生成Romfs的工具。Romfs是一種文件系統(tǒng)。這種文件系統(tǒng)相對于一般的ext2文件系統(tǒng)要求更少的空間。
將這3個(gè)文件放在宿主機(jī)上的任意一個(gè)目錄下,然后輸入下面的命令來安裝:
們就建立好了μClinux的軟件開發(fā)環(huán)境。
4Bootloader的設(shè)計(jì)實(shí)現(xiàn)
Bootloader被用于系統(tǒng)從硬件啟動到操作系統(tǒng)啟動的過渡,是嵌入式系統(tǒng)中必不可少的一段程序。他相當(dāng)于PC機(jī)中的BIOS和OSLoader,用于初始化運(yùn)行硬件和啟動操作系統(tǒng),因此其實(shí)現(xiàn)方式由硬件的特性決定。和BIOS/OSLoader一樣,他需要固化在目標(biāo)板中,每次啟動目標(biāo)板時(shí),首先會運(yùn)行Bootloader,在他完成CPU和相關(guān)硬件的初始化之后,才從事先規(guī)定的地址啟動操作系統(tǒng)或嵌入式應(yīng)用的固化程序。
在嵌入式系統(tǒng)開發(fā)過程中,Bootloader還擔(dān)任了與主機(jī)端通信的任務(wù),他相當(dāng)于一個(gè)“服務(wù)器”,不斷監(jiān)聽從主機(jī)端傳來的控制信息和數(shù)據(jù)信息,完成相應(yīng)的操作。
當(dāng)系統(tǒng)上電后,Bootloader從地址0x0開始執(zhí)行,將存儲器映射重新配置,如表1所示,并會執(zhí)行Linux的固化內(nèi)核。
オ
Bootloader可以使用ARM仿真軟件SDT2.5通過JTAG下載到目標(biāo)板上。
評論