面向嵌入式視頻處理平臺(tái)的Linux移植
這樣,本系統(tǒng)的BootLoader就設(shè)計(jì)完成了,下面就可以進(jìn)行Linux內(nèi)核移植。
Linux內(nèi)核主要由5個(gè)子系統(tǒng)構(gòu)成:
a)進(jìn)程調(diào)度(Process Scheduler):負(fù)責(zé)控制進(jìn)程對(duì)CPU的使用。
b)內(nèi)存管理(Memory Manager):標(biāo)準(zhǔn)Linux的內(nèi)存管理支持虛擬內(nèi)存,進(jìn)程代碼、數(shù)據(jù)和堆棧的總量可以超過實(shí)際內(nèi)存的大小。
c)虛擬文件系統(tǒng)(Virtual File System):隱藏了不同硬件的具體細(xì)節(jié),為所有設(shè)備提供統(tǒng)一的接口。
d)網(wǎng)絡(luò)接口(Network Interface):負(fù)責(zé)支持標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議和各種網(wǎng)絡(luò)硬件設(shè)備。
e)進(jìn)程間通信(Inter-Process Communica-tion):支持進(jìn)程間各種通信機(jī)制。
根據(jù)嵌入式系統(tǒng)的特點(diǎn),要使嵌入式Linux系統(tǒng)具備一定的功能且保持小型化,應(yīng)包括啟動(dòng)加載程序、內(nèi)核、初始化進(jìn)程,以及硬件驅(qū)動(dòng)程序、文件系統(tǒng)、必要的應(yīng)用程序等。
不管是哪一款嵌入式處理器,完成移植工作就要修改所有與體系結(jié)構(gòu)有關(guān)的代碼,主要指內(nèi)核人口、處理器初始化、I/O口映射等。具體操作如下:
(1)修改配置文件
a)打開根目錄下的Makefile文件,指定目標(biāo)平臺(tái)ARCH=arm;指定交叉編譯器CROSS_COMPILE=arm-linux-gcc;
b)打開/arch/arm目錄下的Makefile文件,添加內(nèi)核起始運(yùn)行地址,即image.ram應(yīng)下載的位置,該位置一般在RAM區(qū)起始地址偏移0x8000處;
c)打開/arch/arm/boot目錄下的Makefile文件,指定Bootloader的壓縮內(nèi)核解壓后數(shù)據(jù)的輸出地址。
(2)編譯Linux內(nèi)核
在完成上述工作后,開始編譯Linux內(nèi)核,生成目標(biāo)代碼。在內(nèi)核源代碼目錄下依次鍵入以下命令:
a)make clean:清除以前構(gòu)造內(nèi)核時(shí)生成的所有目標(biāo)文件、模塊和臨時(shí)文件;
b)make dep:搜索Linux輸出與源代碼之間的依賴關(guān)系,并以此生成依賴文件;
c)make menuconfig:調(diào)用菜單式的配置內(nèi)核界面,內(nèi)核配置的選項(xiàng)非常多,根據(jù)自己系統(tǒng)的具體情況選擇合理的配置,在內(nèi)核配置時(shí)選上相應(yīng)型號(hào)的硬件;
d)make zImage:編譯內(nèi)核,生成壓縮的Linux內(nèi)核目標(biāo)代碼zImage文件;
e)make modules:編譯塊模塊驅(qū)動(dòng)程序,凡是在menuconfig中被選為的都會(huì)在這條命令運(yùn)行時(shí)被編譯。
至此,已編譯好能在本系統(tǒng)上運(yùn)行的Linux內(nèi)核。
(3)創(chuàng)建JFFS2文件系統(tǒng)
文件系統(tǒng)是Linux系統(tǒng)的重要組成部分。本系統(tǒng)使用mkfs.jffs2工具創(chuàng)建JFFS2文件系統(tǒng)。首先建立/bin、/sbin等目錄,然后復(fù)制命令工具到/bin文件夾,復(fù)制系統(tǒng)控制程序到/sbin目錄下,復(fù)制應(yīng)用程序運(yùn)行時(shí)所需的庫(kù)到/lib,庫(kù)文件可從PC機(jī)的交叉編譯工具安裝目錄下復(fù)制。最后鍵人命令:mkfs.jffs2-o jffs2root.jffs2,生成JFFS2根文件系統(tǒng)。
上述工作完成后,將BootLoader、Linux內(nèi)核、文件系統(tǒng)燒寫到TMS320DM*6的Flash中,這樣就能運(yùn)行Linux系統(tǒng)了。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論