成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對于S3C2410的嵌入式Linux系統構建的介紹

運維 系統運維
隨著Linux十幾年的發展,在操作系統上其已經長占了很大的份額,你可能會遇到基于S3C2410的嵌入式Linux系統構建問題,這里將介紹基于S3C2410的嵌入式Linux系統構建問題的解決方法,在這里拿出來和大家分享一下。

隨著Linux十幾年的發展,在操作系統上其已經長占了很大的份額,你可能會遇到基于S3C2410的嵌入式Linux系統構建問題,這里將介紹基于S3C2410的嵌入式Linux系統構建問題的解決方法,在這里拿出來和大家分享一下。

目前,在嵌入式系統中基于ARM微核的嵌入式處理器已經成為市場主流。隨著ARM技術的廣泛應用,建立面向ARM構架的嵌入式操作系統成為當前研究的熱點問題。

已經涌現出許多嵌入式操作系統,如VxWork,windows-CE,PalmOS,Linux等。在眾多的嵌入式操作系統中,Linux以其開源代碼及免費使用倍受開發人員的喜愛。本文選用的微處理器S3C2410-p.htm" target="_blank" title="S3C2410貨源和PDF資料">S3C2410是基于32位ARM920T內核的微處理器,基于此處理器構造一Linux嵌入式操作系統,將其移植到基于32位的ARM920T內核的系統中,在此基礎上進行應用程序開發。

1.開發環境介紹

1.1基于S3C2410ARM920T的硬件平臺

該系統的硬件平臺為深圳旋極公司提供,硬件的核心部件為三星$3C2410ARM920T芯片,外圍還包括:64MNANDFLASH和RAM外圍存儲芯片;串口、網口和USB外圍接口;CSTNLCD和觸摸屏外圍顯示設備;UDAl34lTS的外圍音頻設備。S3C2410處理器和外圍設備共同構成了基于ARM920T的開發板。

1.2嵌入式Limlx軟件系統

該嵌入式Linux的軟件系統包括以下4個部分:引導加載程序vivi;Linux2.6.14內核;YAFFS2文件系統以及用戶程序。他們的可執行映像依次存放在系統存儲設備上,如圖1所示:

與通常的嵌入式系統布局有所不同,本系統在引導加載程序和內核映像之間還增加了一個啟動參數區,在這個區里存放著系統啟動參數。引導加載程序通過調用這些參數來決定啟動模式、啟動等待時間等,這些啟動參數的增加加強了系統的靈活性。

2.嵌入式Linux系統設計與實現

2.1引導加載程序vivi

2.1.1vivi的基本功能

該系統使用的:Bootloader是vivi,vivi是韓國MIZIResearch公司為其開發的SMDK2410開發板編寫的一款引導程序。vivi是CPU加電后運行的第一段程序,其基本功能是初始化硬件設備、建立內存空間的映射圖,從而為調用嵌入式Linux內核做好準備。

vivi由2部分組成:一部分是依賴于CPU體系結構的代碼,用匯編語言實現對硬件環境的初始化,并為第二部分代碼的執行做好準備;另部分是用C語言實現內存空間的映射,并將Linux內存映像和根文件系統映像從FLASH上讀到RAM空間中,設置好啟動參數,最后調用內核。

2.1.2Bootloadcrvivi移植

從網站www.mizi.com下載vivi源碼并解壓,按以下步驟進行移植,該系統使用ARM-GCC一2.95.2對vivi進行編譯。

(1)指定/vivi/Makefile文件中的CROSS-COM-PILE,Linux-INCLUDE-DIR,ARM-GCC-LIBS,如下面的參考路徑:

  1. Linux_INCLUDE_DIR=/opt/host/armv41/include/;  
  2. CROSS_COMPILE=/opt/host/armv41/bin/armv41一UD-  
  3. known-Linux一:  
  4. ARM-GCC-LIBS=/opt/host/armv41/lib/gcc-lib/ar-  
  5. mv41一unknown-Linux/2.95.2: 

(2)修改/vivi/arch/s3c2410/smdk.C文件里的mtd-par-tition-tdefault-mtd-partitions[]分區內容如表1所示;

(3)增加/vivi/lib/loadyaffs.C文件,實現燒寫yaffs2

映像文件;修改/vivi/lib/Config_cmd.in,增加如下一行:boolloadyaffstOflashcommandCONFIG-LOAD-YAFFS,使得loadyaffs命令可作為可選項;

(4)執行makedistclean:清理vivi編譯環境;執行makemenuconfig進行對vivi裁剪,根據實際情況進行選擇,注意要選上[*]loadyaffstOflashcommand因為這里用的是YAFFS2文件系統,需要vivi支持YAFFS2映像下載;執行make生成所需要的文件vivi;

(5)采用JTAG燒寫映像到目標板NANDFLASH的零地址處,實現引導程序的裝載。

2.2Linux2.6.14內核的移植

2.2.1內核的選擇

Linux內核版本的更新速度非常快,但Linux的內核版本發行同Linux對嵌入式處理器支持程度的發展是不同步的,因此,需要對特定的處理器體系結構選擇合適的內核,并且根據其硬件功能部件加上相應的補丁。根據$3C2410的體系結構以及外圍硬件特性,該系統采用Linux2.6.14內核,所用的編譯器為ARM-Linux-GCC一3.4.1版本;由于該系統采用的是YAFFS2文件系統,因此需要從網上下載yaffs2.tar.gz文件,解壓并執行./patch.ker.sh/I.inux2.6.14命令,對I.inux內核打補丁使其支持YAFFS2文件系統。

2.2.2內核的修改

(1)修改內核源碼中Makefile的交義編譯項:

ARM?=arm;CROSS一COMPILE?=/usr/local/arm/3.4.1/bin/arm-Linux一;

(2)在arch/arm/mach-s3c2410/devs.C文件中:

①增加頭文件定義:

  1. #include  
  2. #include  
  3. #inelude 

②增加staticstructmtd-partitionpartition-info[]函數,建立分區表信息;

③加入NandFlash分區:struets3c241O-nand-setnandset一{nr_partitions:5,partitions:partition-info,};

④建立NandFlash芯片支持structs3c2410-platform-nandsuperlpplatform={tacls:O,twrph0:30,twrphl:0,sets:&.nandset,nr-sets:1,};

⑤在NandFlash驅動里加入NandFlash芯片支持:在s3C-device-nand中增加.dev一{.platforM一data一&super-lpplatform}。

(3)在arch/arm/machs3c2410/machsmdk2410.C中的一initdata部分增加&s3c-device-nand,使內核啟動時初始化NANDFLASH信息。

(4)為了使內核支持devfs并在啟動時在/sbin/init運行之前自動掛載/dev為devfs文件系統.修改fs/Kconfig.并在menuPseudofilesystetns下添加如下語句:configDEVFS_FSbooI/devfliesystemsupport(OBOLETE)defaultyconfigDEVFS-MOUNTboolAutomaticallymountatbootdefaultydependsonDEVFSFS

2.2.3內核的編譯和加載

(1)執行makemrproper:編譯內核前清理編譯環境。

(2)執行makemenuconfig:對內核進行配置是量體裁衣的過程.是十分復雜的過程,配置適合自已的內核可能需要多次重復的配置操作。以下根據該系統對部分配置做簡單介紹:Bootoptions一一一>Defaultkernelcommandstring

  1. Noinitrdroot=/dev/mtdblock3init=/Linuxrc  
  2. console--ttySAC0.115200 

說明:mtdblock3代表NANDFASH第4個分區,他足該系統的root分區;

  1. Floatingpointemulation一一一> 
  2. [*]NwFPEmathemulation  
  3. #選擇在內核中使用NWFPE浮點模擬  
  4. Filesystems一一一> 
  5. <>Secondextendedfssupport  
  6. #去除對ext2的支持  
  7. Pseudofilesystems一一> 
  8. [*]/procfilesystemsupport  
  9. [*]Virtualmemoryfilesystemsupport(former  
  10. shmfs)  
  11. [*]/devfilesystemsupport(OBSOLETE)  
  12. [*]Automaticallymountatboot(NEW) 

這里會看到前面修改fs/Kconfig的結果,devfs已經被支持。

  1. Miscellaneousfilesystems一--> 
  2. #選擇YAFFS2根文件系統  
  3. <*>YAFFS2filesystemsupport  
  4. ------512byte/pagedevices  
  5. [*]LetsYaffsdoitsownECC  
  6. []UsethesameeccbyteorderasStevenHillSnand-ecc.C  
  7. 一一一2048byte(orlarger)/pagedevices  
  8. [*]Autoselectyaffs2format  
  9. [*]Disablelazyloading  
  10. (10)Reservedblocksforcheckpointing  
  11. [*]Turnoffwidetnodes  
  12. []Forcechunkerasecheck  
  13. []CacheshortnamesinRAM  
  14. NetworkFileSystems---〉  
  15. <*〉NFSfilesystemsupport 

(3)執行makebzlmage,成功編譯后將在arch/arm/boot/下生成需要的文件zImage。

(4)在vivi提示符下,輸入loadflashkernelx命令通過串口下載內核映像到NANDFLASH的KERNEL分區中。

2.3文件系統

Linux采用文件系統組織系統中的文件和設備,為設備和用戶程序提供統一接口。他支持CRAMFS,JFFS2.RAMDISK等多種文件系統。本系統使用可讀寫的YAFFS2根文件系統。

2.3.1YAFFS2文件系統簡介

YAFFS2是YAFFS(YetAnotherFLASHFileSystem)的升級版,能更好地支持NANDFLASH,是一種類似于JFFS的專門為FLASH設計的嵌入式文件系統。與JFFS相比,他減少了一些功能,因此速度更快、占用內存更少。NANDFLASH大多采用MTD+YAFFS的模式,通過YAFFS文件系統,可以像操作硬盤上的文件一樣操作FLASH中的數據,在系統斷電后數據仍然存儲在FLASH芯片中.

2.3.2根文件制作

(1)建立根文件系統目錄root,在root目錄下建訌子日錄bin,sbin,dev,etc,proc,lib,user;

/bin:保存大多數如init.busybox,shell.文件管理實用程序等二進制文件;

/sbin:保存系統啟動過程通常需要的命令;

/dev:包含用在設備中的所有沒備節點;

/etc:包含系統的所有配置文件;

/proc:這是一個必須設置的特殊目錄,在系統運行之后他下面有許多內容,在某些情況下,可以通過他進行系統設置,許多工具能從這里獲得信息。在編譯內核時要選擇文件系統proc的支持;/lib:包含所有必要的庫;

/user:存放用戶程序。

(2)編譯busybox.busyh。x足一個著名的開源軟件.他以極小型的應用程序集成了一百多個最常用的Linux命令,閃此享有嵌入式Linux的瑞士軍刀的美臀。首先,從網上下載busybox源碼.該系統使用的是1.1.3版本;其次,執行nlakemenuconfig命令.根據實際需求進行功能配置,該系統將busybox編詳為靜態連接;最后:執行FIlakca11install進行編譯、安裝;編譯器為:ARM-Linux-GCC一3.4.1,安裝路徑與上述root為同一路徑。這樣在root目錄下將有腳本Linuxrc.在/bin,/sbin日錄下將訂busvbox提供的指向busybox的符號連接命令集。

(3)編寫啟動腳本:一般系統啟動時都會按要求執行相應的初始化操作。寫住命令仃的init=/Liunxrc?這個Linuxrc足指向/etc/init.d/rcS文件的一個符號連接。在rcs文件中列出了Linux仞始化要執行的文件.例如.初始化進程init、掛載根系統、掛載模塊化設備驅動等。rcs的作用相當于windoWS中的autocxec.bat文什,由于對于不同的應用rcS的內容變化很大,因此應根據實際需要編寫rcS的內容。

(4)制作YAFFs2映象:利用實用程序nlkyaffsinlage(mkvaffmage與root目錄在同一路徑下)制作YAFFS2映像root.img命令為:

#./inkyaffsimagerootroot.Inlgroot.img就是所需要的YAFFS2文件系統;

(5)文件系統映像下載:在vivi提示符下,執仃loadyaffsrootx選擇root.inlg將文件通過串口下載到NANDFLASH的root分區中.然后復化或重啟開發板,就可以啟動Linux系統。

3.結語

通過對嵌入式系統ARNI平臺的構建,分析bootloadervivj的功能.闡述了Linux內核的移植,同時也解釋r制作YAFFS2文件系統的步驟和方法.意在給嵌入式系統平臺的搭建有個整體的把握和認識,以降低進入ARM嵌入式開發應用領域的門檻,進一步推進嵌入式軟硬件開發的進程。以上就是基于S3C2410的嵌入式Linux系統構建的講解。

【編輯推薦】

  1. 輕松掌握Linux關機命令
  2. 講解Linux操作系統進入與退出系統方法
  3. 闡述Linux操作系統不足和發展趨勢
  4. 關于Linux應用范圍的介紹
  5. 讓你深入了解Linux常用軟件
責任編輯:小霞 來源: 計世網
相關推薦

2009-12-07 09:35:33

linux內核linuxS3C2410

2010-01-07 10:22:49

Linux內核

2011-04-25 10:25:43

OpenEmbedde嵌入式Linux

2009-12-17 10:33:05

嵌入式Linux

2018-07-06 11:49:51

Linux嵌入式系統工具

2022-01-03 23:33:40

Linux組件系統

2009-12-23 13:05:22

Linux嵌入式

2020-07-03 07:00:00

Linux組件

2009-06-11 11:09:02

Linux嵌入式開發環境

2012-07-30 14:13:11

Linux 2.6內核嵌入式

2009-06-26 16:05:04

嵌入式Linux

2011-01-14 13:05:25

Linux內核嵌入式

2021-12-19 22:34:45

Linux容器系統

2022-01-04 22:19:38

Linux開發嵌入式

2009-12-24 17:21:38

嵌入式Linux

2009-05-27 19:28:20

Linux磁場設計

2011-01-14 13:13:23

嵌入式Linux開發

2017-12-21 10:43:44

Linux嵌入式終端

2011-01-06 15:11:09

嵌入式linux

2009-04-11 15:22:24

Linux 2.6內核應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 污片在线观看 | 亚洲国产精品一区二区久久 | 综合二区 | 婷婷国产一区二区三区 | 久草视频2| 欧产日产国产精品视频 | 精品中文字幕视频 | 国产欧美精品一区 | 亚洲午夜精品在线观看 | 亚洲精品粉嫩美女一区 | 久久久婷 | 日韩国产精品一区二区三区 | 亚洲国产伊人 | 91麻豆精品国产91久久久更新资源速度超快 | 国产91一区二区三区 | 国产成人免费视频网站高清观看视频 | 日韩在线视频一区 | 国产精品久久久久久久久久三级 | 国产高清一区二区三区 | 成人免费在线电影 | 粉色午夜视频 | 久久国内 | 欧美成人免费在线 | 久久亚洲国产精品日日av夜夜 | 日韩视频在线免费观看 | 国产精品久久久久一区二区三区 | 免费看淫片 | 看亚洲a级一级毛片 | 涩涩鲁亚洲精品一区二区 | 亚洲精品久久久一区二区三区 | 蜜桃视频在线观看免费视频网站www | www.色婷婷 | 久久午夜视频 | 免费在线视频一区二区 | 欧美伊人| www视频在线观看 | 国产色视频网站 | 在线免费观看毛片 | 日本一区二区不卡 | 精品久久99 | 国产精品成人一区二区三区 |