新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ADSP-BF533的μClinux嵌入式系統(tǒng)移植與開發(fā)

基于ADSP-BF533的μClinux嵌入式系統(tǒng)移植與開發(fā)

作者: 時(shí)間:2011-09-06 來(lái)源:網(wǎng)絡(luò) 收藏
3 利用U—Boot引導(dǎo)內(nèi)核

本文引用地址:http://m.butianyuan.cn/article/150264.htm

  U—Boot(Universal Boot Loader)是當(dāng)前比較流行的遵循GPL條件的開放源碼項(xiàng)目。也是是Linux常用的Boot Loader之一。其完成的功能是初始化硬件設(shè)備、改變處理器運(yùn)行模式、重組中斷向量和建立內(nèi)存空間映射圖,從而將的軟硬件帶到一個(gè)合適的狀態(tài)或者用戶定制的特定狀態(tài),以便為最終加載操作內(nèi)核準(zhǔn)備好正確的環(huán)境。

  U—Boot具有源碼公開的特點(diǎn),人員可根據(jù)自身需要進(jìn)行裁減;支持多種處理器和操作系統(tǒng)內(nèi)核;具有多種設(shè)備驅(qū)動(dòng)源碼:支持種引導(dǎo)方式;具有功能強(qiáng)大且成熟、穩(wěn)定等諸多優(yōu)點(diǎn),故本文采用U—Boot引導(dǎo)μ內(nèi)核。U—Boot嚴(yán)重依賴于底層硬件,不同的CPU或板極設(shè)備需要不同的U—Boot,不過因?yàn)楸疚牡闹攸c(diǎn)是μ,所以這里不再詳述U—Boot的具體實(shí)現(xiàn)過程。

  當(dāng)系統(tǒng)上電后,U—Boot從地址OxO開始執(zhí)行,將存儲(chǔ)器映射重新配置,如圖1所示,并會(huì)執(zhí)行μ的固化內(nèi)核。

  

  U一Boot可以使用ADI的仿真軟件Visual DSP++通過仿真器或JTAG口下載到目標(biāo)板上。

  4 μClinux內(nèi)核的編譯和

  作為操作系統(tǒng)的核心,μClinux內(nèi)核負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件系統(tǒng)和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的各種性能。μClinux內(nèi)核采用模塊化的組織結(jié)構(gòu),通過增減內(nèi)核模塊的方式來(lái)增減系統(tǒng)的功能。

  4.1 內(nèi)核配置

  雖然μClinux的內(nèi)核代碼大部分獨(dú)立于處理器和其體系結(jié)構(gòu),但是最底層的代碼還是特定系統(tǒng)的。雖然各個(gè)系統(tǒng)存在相同之處,但是它們的中斷處理上下文、內(nèi)存映射的維護(hù)、任務(wù)上下文和初始化過程是獨(dú)特的。這些例行程序放置在μClinux代碼樹的aroh/目錄下。這里需要根據(jù)自己的硬件平臺(tái)來(lái)配置內(nèi)核代碼。配置過程如下:

  可以從官方網(wǎng)站http://blackfin.μClinux.org處下載μClinux—list的內(nèi)核源代碼。運(yùn)行解壓命令:將tar— xvfμClinux—dist.tar.gz解壓完畢后,就會(huì)生成/μClinux—dist目錄,加入該目錄后按如下順序編譯內(nèi)核:

  (1)make menuconfig;進(jìn)入菜單方式配置指令;

  (2)選擇所使用的平臺(tái)類型和所使用的庫(kù)

  本文設(shè)計(jì)的目標(biāo)板選擇:AnalogDevices/BF533一EZ—KIT和μC—libc庫(kù)。在配置欄中,選擇Load an AlternateConfiguration File,按確認(rèn),退出配置欄;

  (3)make dep;尋找依存關(guān)系;

  (4)make clean;清除以前構(gòu)造內(nèi)核時(shí)生成的所有目標(biāo)文件、模塊文件和一些臨時(shí)文件;

  (5)make lib_only;編譯庫(kù)文件;

  (6)make user_only;編譯用戶應(yīng)用程序文件;

  (7)make tomfs;生成romfs文件系統(tǒng);

  (8)make image;生成鏡像文件然后通過Jtag口輸入到目標(biāo)板;

  (9)make;通過各個(gè)目錄的makefile文件進(jìn)行,會(huì)在各目錄下生成一大堆目標(biāo)文件。

  在上述步驟完成后,就完成了對(duì)μClinux源碼的編譯工作。最后會(huì)在/μClinux—dist/images目錄下看到3個(gè)內(nèi)核文件:linux.dxe,linux.bin和zlmage.bin。如果編譯不成功,需要根據(jù)編譯過程的提示信息找到錯(cuò)誤并重新編譯,直到成功為止。

  4.2 修改配置內(nèi)核代碼

  直接由源代碼編譯生成的內(nèi)核映像文件一般不會(huì)啟動(dòng)成功,需要根據(jù)自己的目標(biāo)板進(jìn)行配置。需要修改系統(tǒng)啟動(dòng)初始化文件crt0_ram.s,sysinit.c和ram.1d。

  在crt0_ram.s中需要根據(jù)自己的目標(biāo)板修改基地址、存儲(chǔ)器大小和起始地址。在sysinit.c中需要修改片選設(shè)置,分別對(duì)FLASH和 SDRAM進(jìn)行片選設(shè)置。在ram.1d中修改內(nèi)核連接加載地址。做完上面的修改,重新編譯生成linux.dxe等文件。

  4.3 μClinux內(nèi)核的下載與執(zhí)行

  μClinux內(nèi)核有2種可選的運(yùn)行方式:一種是在FLASH上直接運(yùn)行;另一種是加載到內(nèi)存中運(yùn)行,系統(tǒng)啟動(dòng)時(shí)從FLASH中讀取壓縮的內(nèi)核代碼(存儲(chǔ)器空間有限,所以一般需要壓縮內(nèi)核代碼)到內(nèi)存中解壓,然后開始執(zhí)行,這種方法比第一種的速度更快(RAM的存取速度比FLASH的快)。所以選取第二種方法。

  編譯好的內(nèi)核文件可以由Visual DSP++裝置,通過網(wǎng)口或串口把linux.dxe下載到目標(biāo)板的FLASH中,從設(shè)定的入口地址(一般為Oxl000)執(zhí)行即可啟動(dòng)內(nèi)核。

  啟動(dòng)μClinux就可以在超級(jí)終端看到μClinux的歡迎信息和簡(jiǎn)單的shell提示符,界面如圖3所示。

  

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉