国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

μCLinux操作系統(tǒng)的移植及Bootloader程序設(shè)計

2010-07-17 07:37劉彥蘭
山西電子技術(shù) 2010年3期
關(guān)鍵詞:源碼源代碼體系結(jié)構(gòu)

劉彥蘭

(國營第七八五廠,山西太原030024)

0 引言

μCLinux在無MMU的嵌入式系統(tǒng)中具有較好的技術(shù)優(yōu)勢,而ARM7TDMI又是一種高效,低功耗的RISC處理器。本文構(gòu)造了一個μCLinux嵌入式操作系統(tǒng),將它嵌入到基于ARM7TDMI內(nèi)核的系統(tǒng)中。

1 嵌入式系統(tǒng)硬件平臺

1.1 TMS320VC5471評估板簡介

TI公司提供的嵌入式芯片TMS320VC5471集成了基于TMS320C54X體系結(jié)構(gòu)的DSP子系統(tǒng)和基于ARM7TDMI核的RISC微控制器子系統(tǒng)的雙CPU定點數(shù)字信號處理器。TMS320VC5471的功能框圖如圖1所示:

圖1 TMS320VC5471的功能框圖

2 μClinux操作系統(tǒng)的移植

μCLinux的移植過程,大致需要分成四個步驟:

(1)建立交叉編譯環(huán)境;

(2)裁減、編譯內(nèi)核;

(3)裝載內(nèi)核;

(4)內(nèi)核啟動。

2.1 交叉編譯環(huán)境的建立

在μCLinux的移植中,ARM體系結(jié)構(gòu)的交叉編譯環(huán)境,分為主機和目標(biāo)機兩方面。在本設(shè)計中,主機安裝的是RedHat linux7.3操作系統(tǒng),并在其上建立GCC的ARM體系結(jié)構(gòu)的交叉編譯環(huán)境。

2.2 操作系統(tǒng)的移植

2.2.1 獲得μCLinux源代碼開發(fā)包

本課題采用的版本為Kernel-2.4.18??梢詮幕ヂ?lián)網(wǎng)上下載得到μCLinux-2.4.18、μClibc和elf2flt源碼及應(yīng)用程序源碼包。文件為:μCLinux-dist-20040218.tar.gz,把它保存到/home目錄下,然后執(zhí)行:tar zxvf μCLinux-dist-20040218.tar.gz。當(dāng)tar程序運行完畢后,在/home目錄下會有一個/home/μCLinux-dist的新目錄,這就是 μCLinux的源碼根目錄,里面有進行μCLinux開發(fā)的所有的源代碼。

2.2.2 Clinux內(nèi)核的修改、配置和編譯

由于本設(shè)計是將μClinux移植到VC5471平臺上,所以需要根據(jù) VC5471下面的 ARM7TDMI架構(gòu),重新修改μCLinux內(nèi)核。修改μCLinux內(nèi)核有三方面的工作:一個是函數(shù)庫的問題;二是重寫Makefile以適應(yīng)目標(biāo)板;三是修改μCLinux/Linux/arch/armnommu/目錄下的文件,以使它適應(yīng)ARM7TDMI架構(gòu)。

μClinux內(nèi)核的配置系統(tǒng)由三部分組成,分別是:

(1)Makefile:分布在μClinux內(nèi)核源代碼中的Makefile,定義了μClinux內(nèi)核編譯規(guī)則;

(2)配置文件(config.in):給用戶提供配置內(nèi)核的選擇功能;

(3)配置工具:包括配置命令解釋器(對配置腳本中使用的配置命令進行解釋)和配置用戶界面(提供基于字符界面、基于圖形界面以及基于Xwindows圖形界面的用戶配置界面,各自對應(yīng)于 Make config、Make menuconfig和 Make xconfig)。

make xconfig根據(jù)課題的需要配置內(nèi)核編譯選項

—Choose a Vendor/Product combination.

(TI/5471)Vendor/Product

(linux-2.4.x)Kernel Version

(μClibc)Libc Version

[Exit]

Do you wish to save your new kernel configuration?

[Yes]

.make dep建立依賴關(guān)系

.make lib_only編譯庫文件

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

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

make編譯內(nèi)核

若成功,在μClinux-dist下有一個images目錄,下面有四個文件:

(1).image.elf:ELF格式含調(diào)試信息和 romfs的μCLinux,可以用gdb裝載調(diào)試運行

(2).romfs.img:romfs的二進制文件

(3).linux.bin:不含romfs的μCLinux二進制文件

(4).image.bin:linux.bin和romfs.bin合并而成,并多了4個字節(jié)的校驗,這個文件的內(nèi)容拷貝到ram里后就可以直接從入口運行了。

2.3 Bootloader的設(shè)計與實現(xiàn)

將μCLinux內(nèi)核加載到內(nèi)存上運行的方式,需要編寫一段啟動代碼Bootloader。

(1)Bootloader的操作模式

多數(shù)Bootloader都包含兩種操作模式:“啟動加載”模式和“下載”模式。Bootloader從固態(tài)存儲設(shè)備上將操作系統(tǒng)加載進RAM中運行,整個過程并沒有用戶的介入。這種模式是Bootloader的正常工作模式。下載模式下,Bootloader將通過串口或網(wǎng)絡(luò)等通信手段從主機下載文件,此模式通常在首次安裝內(nèi)核與根文件系統(tǒng)或以后的系統(tǒng)更新時使用。工作于這種模式下的Bootloader需要向終端用戶提供一個簡單的命令行接口。

(2)Bootloader的基本任務(wù)

Bootloader一般是被燒錄或者下載到bootrom的0x0地址處,作為上電后執(zhí)行的第一部分指令,Bootloader需要完成以下幾個任務(wù):<1>硬件初始化;<2>存儲器重映射;<3>下載內(nèi)核映像和根文件系統(tǒng)或把內(nèi)核裝載到SRAM里;<4>調(diào)用內(nèi)核。

(3)Bootloader的實現(xiàn)

(a)硬件設(shè)備初始化:該部分代碼用ARM匯編實現(xiàn)

Ⅰ進入SVC32工作模式,并且禁止所有的中斷??梢酝ㄟ^寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器(ARM的CPSR寄存器)來完成。

mov r0,#(ARM_MODE_SVC|I_BIT|F_BIT)

msr cpsr,r0

Ⅱ設(shè)置CPU的速度和時鐘頻率。

Ⅲ網(wǎng)口初始化,為內(nèi)核的下載準(zhǔn)備條件。

ⅣLCD和鍵盤初始化,為人機交互準(zhǔn)備條件

Ⅴ RAM初始化,為Bootloader的C代碼運行準(zhǔn)備空間。

(b)拷貝Bootloader的C代碼到RAM空間中。

拷貝時要確定兩點:① C代碼的可執(zhí)行映象在固態(tài)存儲設(shè)備的存放起始地址和終止地址;② RAM空間的起始地址。以上可以通過鏈接文件來確定。

(c)設(shè)置堆棧指針sp

ldr sp,=__stack(__stack的值可以通過鏈接文件確定)

(d)地址重映射(Remap)

具體的實現(xiàn)代碼如下:

ramlow()

{

(*(long*)0xffff2804)&=0xfffffffc;

(*(long*)0xffff2800)&=0xfffffffc;

}

(e)跳轉(zhuǎn)到C代碼的入口點開始執(zhí)行。由于VC5471評估板沒有固化BOOT程序,所以使用CCS軟件通過JTAG接口,先將Bootloader程序下載到RAM中,然后寫到Flash的起始地址,上電后從Flash中開始執(zhí)行Bootloader。到此Bootloader的任務(wù)就完成了。

3 結(jié)束語

本文以DSP+ARM結(jié)構(gòu)的嵌入式處理器TMS320VC5471評估板(EVM)作為目標(biāo)板,搭建了基于GDB的嵌入式操作系統(tǒng)集成開發(fā)調(diào)試環(huán)境并實現(xiàn)了μCLinux操作系統(tǒng)的移植。對同類型的嵌入式操作系統(tǒng)的移植工作具有一定的參考價值。

[1]TI,TMS320VC547x CPU and Peripherals Reference Guide[M].2001.

[2]TMS320VC5471 Fixed-PointDigital Signal Processor Data Manual[M].2001.

[3]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.10.

[4]趙炯.Linux內(nèi)核完全注釋[內(nèi)核版本0.11(0.95)]修正版V1.9.5[M].北京:機械工業(yè)出版社,2004.5.

猜你喜歡
源碼源代碼體系結(jié)構(gòu)
面向數(shù)據(jù)可靠傳輸?shù)母咦g碼率帶反饋的LT碼
基于TXL的源代碼插樁技術(shù)研究
淺談開源操作系統(tǒng)的歷史
企業(yè)如何保護源碼
軟件源代碼非公知性司法鑒定方法探析
基于語法和語義結(jié)合的源代碼精確搜索方法
基于粒計算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡(luò)模型
作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
揭秘龍湖產(chǎn)品“源代碼”
基于DODAF的裝備體系結(jié)構(gòu)設(shè)計
泽普县| 龙口市| 高阳县| 滨州市| 阳朔县| 崇信县| 资源县| 全椒县| 阿克| 永顺县| 靖安县| 汉沽区| 年辖:市辖区| 信宜市| 洮南市| 南岸区| 元阳县| 瑞安市| 舞阳县| 安西县| 永吉县| 盐边县| 大厂| 西林县| 山东省| 平邑县| 辉县市| 瑞金市| 无极县| 连平县| 谷城县| 秦皇岛市| 定兴县| 光山县| 新竹市| 晋江市| 龙胜| 恩平市| 株洲市| 荥经县| 炉霍县|