基于S3C2410的嵌入式Linux系統(tǒng)構(gòu)建
發(fā)布時間:2008/8/18 0:00:00 訪問次數(shù):441
已經(jīng)涌現(xiàn)出許多嵌入式操作系統(tǒng),如vxwork,windows-ce,palmos,linux等。在眾多的嵌入式操作系統(tǒng)中,linux以其開源代碼及免費使用倍受開發(fā)人員的喜愛。本文選用的微處理器s3c2410是基于32位arm920t內(nèi)核的微處理器,基于此處理器構(gòu)造一linux嵌入式操作系統(tǒng),將其移植到基于32位的arm920t內(nèi)核的系統(tǒng)中,在此基礎(chǔ)上進行應(yīng)用程序開發(fā)。
l開發(fā)環(huán)境介紹
1.1 基于s3c2410 arm920t的硬件平臺
該系統(tǒng)的硬件平臺為深圳旋極公司提供,硬件的核心部件為三星$3c2410 arm920t芯片,外圍還包括:64 m nand flash和ram外圍存儲芯片;串口、網(wǎng)口和usb外圍接口;cstn lcd和觸摸屏外圍顯示設(shè)備;udal34lts的外圍音頻設(shè)備。s3c2410處理器和外圍設(shè)備共同構(gòu)成了基于arm920t的開發(fā)板。
1.2嵌入式limlx軟件系統(tǒng)
該嵌入式linux的軟件系統(tǒng)包括以下4個部分:引導(dǎo)加載程序vivi;linux2.6.14內(nèi)核;yaffs2文件系統(tǒng)以及用戶程序。他們的可執(zhí)行映像依次存放在系統(tǒng)存儲設(shè)備上.
與通常的嵌入式系統(tǒng)布局有所不同,本系統(tǒng)在引導(dǎo)加載程序和內(nèi)核映像之間還增加了一個啟動參數(shù)區(qū),在這個區(qū)里存放著系統(tǒng)啟動參數(shù)。引導(dǎo)加載程序通過調(diào)用這些參數(shù)來決定啟動模式、啟動等待時間等,這些啟動參數(shù)的增加加強了系統(tǒng)的靈活性。本系統(tǒng)采用64 m nandflash的存儲設(shè)備。
2嵌入式linux系統(tǒng)設(shè)計與實現(xiàn)
2.1 引導(dǎo)加載程序vivi
2.1.1 vivi的基本功能
該系統(tǒng)使用的:bootloader是vivi,vivi是韓國miziresearch公司為其開發(fā)的smdk2410開發(fā)板編寫的一款引導(dǎo)程序。vivi是cpu加電后運行的第一段程序,其基本功能是初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而為調(diào)用嵌入式linux內(nèi)核做好準(zhǔn)備。
vivi由2部分組成:一部分是依賴于cpu體系結(jié)構(gòu)的代碼,用匯編語言實現(xiàn)對硬件環(huán)境的初始化,并為第二部分代碼的執(zhí)行做好準(zhǔn)備;另部分是用c語言實現(xiàn)內(nèi)存空間的映射,并將linux內(nèi)存映像和根文件系統(tǒng)映像從flash上讀到ram空間中,設(shè)置好啟動參數(shù),最后調(diào)用內(nèi)核。
2.1.2 bootloadcrvivi移植
從網(wǎng)站www.mizi.com下載vivi源碼并解壓,按以下步驟進行移植,該系統(tǒng)使用arm-gcc一2.95.2對vivi進行編譯。
(1)指定/vivi/makefile文件中的cross-com-pile,linux-include-dir,arm-gcc-libs,如下面的參考路徑:
linux_include_dir=/opt/host/armv41/include/;
cross_compile=/opt/host/armv41/bin/armv41一ud-
known-linux一:
arm-gcc-libs=/opt/host/armv41/lib/gcc-lib/ar-
mv41一unknown-linux/2.95.2:
(2)修改/vivi/arch/s3c2410/smdk.c文件里的mtd-par-tition-t default-mtd-partitions[]分區(qū)內(nèi)容如表1所示;
(3)增加/vivi/lib/loadyaffs.c文件,實現(xiàn)燒寫yaffs2
映像文件;修改/vivi/lib/config_cmd.in,增加如下一行:bool'load yaffs to flash command'config-load-yaffs,使得loadyaffs命令可作為可選項;
(4)執(zhí)行make distclean:清理vivi編譯環(huán)境;執(zhí)行make menuconfig進行對vivi裁剪,根據(jù)實際情況進行選擇,注意要選上"[*]load yaffs to flash command"因為這里用的是yaffs2文件系統(tǒng),需要vivi支持yaffs2映像下載;執(zhí)行make生成所需要的文件vivi;
(5)采用jtag燒寫映像到目標(biāo)板nand flash的零地址處,實現(xiàn)引導(dǎo)程序的裝載。
2.2 linux2.6.14內(nèi)核的移植
2.2.1 內(nèi)核的選擇
linux內(nèi)核版本的更新速度非?,但linux的內(nèi)核版本發(fā)行同linux對嵌入式處理器支持程度的發(fā)展是不同步的,因此,需要對特定的處理器體系結(jié)構(gòu)選擇合適的內(nèi)核,并且根據(jù)其硬件功能部件加上相應(yīng)的補丁。根據(jù)$3c2410的體系結(jié)構(gòu)以及外圍硬件特性,該系統(tǒng)采用linux2.6.14內(nèi)核,所用的編譯器為arm-linux-gcc一3.4.1版本;由于該系統(tǒng)采用的是yaffs2文件系統(tǒng),因此需要從網(wǎng)上下載yaffs2.tar.gz文件,解壓并執(zhí)行"./patch.ker.sh/i.inux2.6.14"命令,對i.inux內(nèi)核打補丁使其支持yaffs2文件系統(tǒng)。
2.2.2 內(nèi)核的修改
(1)修改內(nèi)核源碼中makefile的交義編譯項:
arm?=arm;cross一compile?=/usr/local/arm/3.4.1/bin/arm-linux一;
(2)在arch/arm/mach-s3c2410/devs.c文件中:
①增加頭文件定義:
#include<linux/mtd/pa rtitions.hi>
#include<linux/mtd/nand.h>
#inelude<asm/arch/nand.h>
②增加static struct mtd-parti
已經(jīng)涌現(xiàn)出許多嵌入式操作系統(tǒng),如vxwork,windows-ce,palmos,linux等。在眾多的嵌入式操作系統(tǒng)中,linux以其開源代碼及免費使用倍受開發(fā)人員的喜愛。本文選用的微處理器s3c2410是基于32位arm920t內(nèi)核的微處理器,基于此處理器構(gòu)造一linux嵌入式操作系統(tǒng),將其移植到基于32位的arm920t內(nèi)核的系統(tǒng)中,在此基礎(chǔ)上進行應(yīng)用程序開發(fā)。
l開發(fā)環(huán)境介紹
1.1 基于s3c2410 arm920t的硬件平臺
該系統(tǒng)的硬件平臺為深圳旋極公司提供,硬件的核心部件為三星$3c2410 arm920t芯片,外圍還包括:64 m nand flash和ram外圍存儲芯片;串口、網(wǎng)口和usb外圍接口;cstn lcd和觸摸屏外圍顯示設(shè)備;udal34lts的外圍音頻設(shè)備。s3c2410處理器和外圍設(shè)備共同構(gòu)成了基于arm920t的開發(fā)板。
1.2嵌入式limlx軟件系統(tǒng)
該嵌入式linux的軟件系統(tǒng)包括以下4個部分:引導(dǎo)加載程序vivi;linux2.6.14內(nèi)核;yaffs2文件系統(tǒng)以及用戶程序。他們的可執(zhí)行映像依次存放在系統(tǒng)存儲設(shè)備上.
與通常的嵌入式系統(tǒng)布局有所不同,本系統(tǒng)在引導(dǎo)加載程序和內(nèi)核映像之間還增加了一個啟動參數(shù)區(qū),在這個區(qū)里存放著系統(tǒng)啟動參數(shù)。引導(dǎo)加載程序通過調(diào)用這些參數(shù)來決定啟動模式、啟動等待時間等,這些啟動參數(shù)的增加加強了系統(tǒng)的靈活性。本系統(tǒng)采用64 m nandflash的存儲設(shè)備。
2嵌入式linux系統(tǒng)設(shè)計與實現(xiàn)
2.1 引導(dǎo)加載程序vivi
2.1.1 vivi的基本功能
該系統(tǒng)使用的:bootloader是vivi,vivi是韓國miziresearch公司為其開發(fā)的smdk2410開發(fā)板編寫的一款引導(dǎo)程序。vivi是cpu加電后運行的第一段程序,其基本功能是初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而為調(diào)用嵌入式linux內(nèi)核做好準(zhǔn)備。
vivi由2部分組成:一部分是依賴于cpu體系結(jié)構(gòu)的代碼,用匯編語言實現(xiàn)對硬件環(huán)境的初始化,并為第二部分代碼的執(zhí)行做好準(zhǔn)備;另部分是用c語言實現(xiàn)內(nèi)存空間的映射,并將linux內(nèi)存映像和根文件系統(tǒng)映像從flash上讀到ram空間中,設(shè)置好啟動參數(shù),最后調(diào)用內(nèi)核。
2.1.2 bootloadcrvivi移植
從網(wǎng)站www.mizi.com下載vivi源碼并解壓,按以下步驟進行移植,該系統(tǒng)使用arm-gcc一2.95.2對vivi進行編譯。
(1)指定/vivi/makefile文件中的cross-com-pile,linux-include-dir,arm-gcc-libs,如下面的參考路徑:
linux_include_dir=/opt/host/armv41/include/;
cross_compile=/opt/host/armv41/bin/armv41一ud-
known-linux一:
arm-gcc-libs=/opt/host/armv41/lib/gcc-lib/ar-
mv41一unknown-linux/2.95.2:
(2)修改/vivi/arch/s3c2410/smdk.c文件里的mtd-par-tition-t default-mtd-partitions[]分區(qū)內(nèi)容如表1所示;
(3)增加/vivi/lib/loadyaffs.c文件,實現(xiàn)燒寫yaffs2
映像文件;修改/vivi/lib/config_cmd.in,增加如下一行:bool'load yaffs to flash command'config-load-yaffs,使得loadyaffs命令可作為可選項;
(4)執(zhí)行make distclean:清理vivi編譯環(huán)境;執(zhí)行make menuconfig進行對vivi裁剪,根據(jù)實際情況進行選擇,注意要選上"[*]load yaffs to flash command"因為這里用的是yaffs2文件系統(tǒng),需要vivi支持yaffs2映像下載;執(zhí)行make生成所需要的文件vivi;
(5)采用jtag燒寫映像到目標(biāo)板nand flash的零地址處,實現(xiàn)引導(dǎo)程序的裝載。
2.2 linux2.6.14內(nèi)核的移植
2.2.1 內(nèi)核的選擇
linux內(nèi)核版本的更新速度非常快,但linux的內(nèi)核版本發(fā)行同linux對嵌入式處理器支持程度的發(fā)展是不同步的,因此,需要對特定的處理器體系結(jié)構(gòu)選擇合適的內(nèi)核,并且根據(jù)其硬件功能部件加上相應(yīng)的補丁。根據(jù)$3c2410的體系結(jié)構(gòu)以及外圍硬件特性,該系統(tǒng)采用linux2.6.14內(nèi)核,所用的編譯器為arm-linux-gcc一3.4.1版本;由于該系統(tǒng)采用的是yaffs2文件系統(tǒng),因此需要從網(wǎng)上下載yaffs2.tar.gz文件,解壓并執(zhí)行"./patch.ker.sh/i.inux2.6.14"命令,對i.inux內(nèi)核打補丁使其支持yaffs2文件系統(tǒng)。
2.2.2 內(nèi)核的修改
(1)修改內(nèi)核源碼中makefile的交義編譯項:
arm?=arm;cross一compile?=/usr/local/arm/3.4.1/bin/arm-linux一;
(2)在arch/arm/mach-s3c2410/devs.c文件中:
①增加頭文件定義:
#include<linux/mtd/pa rtitions.hi>
#include<linux/mtd/nand.h>
#inelude<asm/arch/nand.h>
②增加static struct mtd-parti
熱門點擊
- CPU學(xué)習(xí) (Cache Coherence
- 瑞薩推出具有1Mbyte片內(nèi)SRAM的32位
- MAP譯碼器嵌入式狀態(tài)信息存儲機制設(shè)計
- 嵌入式uClinux下的CAN總線設(shè)備驅(qū)動程
- Atmel 在AT91SAM3中使用ARM3
- 統(tǒng)一建模語言UML在嵌入式系統(tǒng)設(shè)計中的應(yīng)用
- 全路由器掃描
- 嵌入式中C和匯編的一些技巧
- 基于ARM平臺的GPRS CQT測試系統(tǒng)的設(shè)
- 嵌入式系統(tǒng)軟件及編程語言
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究