国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>基于S3C2410的嵌入式Linux系統(tǒng)構(gòu)建

      直播推薦

      更多>

      企業(yè)動態(tài)

      更多>

      推薦展會

      更多>

      基于S3C2410的嵌入式Linux系統(tǒng)構(gòu)建

      2009年03月24日 17:51:35人氣:917來源:煙臺勾股通信技術(shù)有限公司

      目前,在嵌入式系統(tǒng)中基于ARM微核的嵌入式處理器已經(jīng)成為市場主流。隨著ARM技術(shù)的廣泛應(yīng)用,建立面向ARM構(gòu)架的嵌入式操作系統(tǒng)成為當(dāng)前研究的熱點問題。已經(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ǔ)上進(jìn)行應(yīng)用程序開發(fā)。 
      1 開發(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è)備上,如圖1所示:


          與通常的嵌入式系統(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è)備,其布局如表1所示。
          
      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ù),zui后調(diào)用內(nèi)核。
      2.1.2 Bootloadcrvivi移植
          從www.mizi.com下載vivi源碼并解壓,按以下步驟進(jìn)行移植,該系統(tǒng)使用ARM-GCC一2.95.2對vivi進(jìn)行編譯。
          (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進(jìn)行對vivi裁剪,根據(jù)實際情況進(jìn)行選擇,注意要選上" 
      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-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
          ②增加static struct mtd-partition partition-info[]函數(shù),建立分區(qū)表信息,分區(qū)內(nèi)容如表1所示;
          ③加入Nand Flash分區(qū):struet s3c24 1 O-nand-set nandset一{nr_partitions:5,partitions:partition-info,};
          ④建立Nand Flash 芯片支持struct s3c24 10-platform-nand superlpplatform={tacls:O,twrph0:30,twrphl:0,sets:&.nandset,nr-sets:1,};
          ⑤在Nand Flash驅(qū)動里加入Nand Flash芯片支持:在s3C-device-nand中增加.dev一{.platforM一data一&super-lpplatform}。
          (3)在arch/arm/machs3c2410/machsmdk2410.C中的一initdata部分增加&s3c-device-nand,使內(nèi)核啟動時初始化NAND FLASH信息。
          (4)為了使內(nèi)核支持devfs并在啟動時在/sbin/init運行之前自動掛載/dev為devfs文件系統(tǒng).修改fs/Kconfig.并在menu"Pseudo filesystetns"下添加如下語句:config DEVFS_FSbooI"/dev flie system support(OBOLETE)default yconfig DEVFS-MOUNTbool"Automatically mount at boot"default ydepends on DEVFS FS
      2.2.3 內(nèi)核的編譯和加載
          (1)執(zhí)行make mrproper:編譯內(nèi)核前清理編譯環(huán)境。
          (2)執(zhí)行make menuconfig:對內(nèi)核進(jìn)行配置是量體裁衣的過程.是十分復(fù)雜的過程,配置適合自已的內(nèi)核可能需要多次重復(fù)的配置操作。以下根據(jù)該系統(tǒng)對部分配置做簡單介紹: Boot options一一一>Default kernel command st ring
          Noinitrd root=/dev/mtdblock3 init=/Linuxrc
          console——ttySAC0.1 15200
          說明:mtdblock3代表NAND FASH第4個分區(qū),他足該系統(tǒng)的root分區(qū);
          Floating point emulation一一一>
          
      NwFPE math emulation 
          #選擇在內(nèi)核中使用NWFPE浮點模擬
          File systems一一一>
          <>Second extended fs support
          
          #去除對ext2的支持
          
          Pseudo filesystems一一 >
          
      /proc file system support
          
           
      Virtual memory file system support(former 
          shm fs)
          
      /dev file system support(OBSOLETE) 
          
      Automatically mount at boot(NEW)
          
          這里會看到前面修改fs/Kconfig的結(jié)果,devfs已經(jīng)被支持。
          
          Miscellaneous filesystems一—— > 
          #選擇YAFFS2根文件系統(tǒng)
          <*>YAFFS2 file system support
          ——————51 2 byte/page devices
          
      Lets Yaffs do its own ECC 
          [ ]Use the same ecc byte order as Steven Hill‘S nand-ecc.C
          一一一2048 byte (or larger)/page devices
          
      Autoselect yaffs2 format 
          
      Disable lazy loading
          
          (1 0)Reserved blocks for checkpointing
          
           
      Turn off wide tnodes 
          []Force chunk erase check
          []Cache short names in RAM
          Network File Systems——-〉
          <*〉NFS file system support
          (3)執(zhí)行make bzlmage,成功編譯后將在arch/arm/boot/下生成需要的文件zImage。
          (4)在vivi提示符下,輸入"load flash kernel x"命令通過串口下載內(nèi)核映像到NAND FLASH的KERNEL分區(qū)中。
      2.3 文件系統(tǒng)
          Linux采用文件系統(tǒng)組織系統(tǒng)中的文件和設(shè)備,為設(shè)備和用戶程序提供統(tǒng)一接口。他支持CRAMFS,JFFS2.RAMDISK等多種文件系統(tǒng)。本系統(tǒng)使用可讀寫的YAFFS2根文件系統(tǒng)。
      2.3.1 YAFFS2文件系統(tǒng)簡介
          YAFFS2是YAFFS(Yet Another FLASH File Sys tem)的升級版,能更好地支持NAND FLASH,是一種類似于JFFS的專門為FLASH設(shè)計的嵌入式文件系統(tǒng)。與JFFS相比,他減少了一些功能,因此速度更快、占用內(nèi)存更少。NAND FLASH大多采用MTD+YAFFS的模式,通過YAFFS文件系統(tǒng),可以像操作硬盤上的文件一樣操作FLASH中的數(shù)據(jù),在系統(tǒng)斷電后數(shù)據(jù)仍然存儲在FLASH芯片中.
      2.3.2 根文件制作
          (1)建立根文件系統(tǒng)目錄root,在root目錄下建訌子日錄bin,sbin,dev,etc,proc,lib,user;
          /bin:保存大多數(shù)如init.busybox,shell.文件管理實用程序等二進(jìn)制文件;
          /sbin:保存系統(tǒng)啟動過程通常需要的命令;
          /dev:包含用在設(shè)備中的所有沒備節(jié)點;
          /etc:包含系統(tǒng)的所有配置文件;
          
          /proc:這是一個必須設(shè)置的特殊目錄,在系統(tǒng)運行之后他下面有許多內(nèi)容,在某些情況下,可以通過他進(jìn)行系統(tǒng)設(shè)置,許多工具能從這里獲得信息。在編譯內(nèi)核時要選擇文件系統(tǒng)proc的支持; /lib:包含所有必要的庫;
          
          /user:存放用戶程序。
          
          (2)編譯busybox.busyh。x足一個的開源軟件.他以極小型的應(yīng)用程序集成了一百多個zui常用的Linux-GCC一3.4.1,安裝路徑與上述root為同一路徑。這樣在root目錄下將有腳本Linuxrc.在/bin,/sbin日錄下將訂busvbox提供的指向busybox的符號連接命令集。
          
          (3)編寫啟動腳本:一般系統(tǒng)啟動時都會按要求執(zhí)行相應(yīng)的初始化操作。寫住命令仃的init=/Liunxrc·這個Linuxrc足指向/etc/init.d/rcS文件的一個符號連接。在rcs文件中列出了 Linux仞始化要執(zhí)行的文件.例如.初始化進(jìn)程init、掛載根系統(tǒng)、掛載模塊化設(shè)備驅(qū)動等。rcs的作用相當(dāng)于windoWS中的autocxec.bat文什,由于對于不同的應(yīng)用rcS的內(nèi)容變化很大,因此應(yīng)根據(jù)實際需要編寫rcS的內(nèi)容。
          
          (4)制作YAFFs2映象:利用實用程序nlkyaffsinlage(mkvaffmage與root 目錄在同一路徑下)制作YAFFS2映像root.img命令為:
          
          #./inkyaffsimage root root. Inlgroot.img就是所需要的YAFFS2文件系統(tǒng);
          
          (5)文件系統(tǒng)映像下載:在vivi提示符下,執(zhí)仃"loadyaffs root x"選擇root.inlg將文件通過串口下載到NAND FLASH的root分區(qū)中.然后復(fù)化或重啟開發(fā)板,就可以啟動Linux系統(tǒng)。
          
      3 結(jié) 語
          通過對嵌入式系統(tǒng)ARNI平臺的構(gòu)建,分析bootloadervivj的功能.闡述了Linux內(nèi)核的移植,同時也解釋r制作YAFFS2文件系統(tǒng)的步驟和方法.意在給嵌入式系統(tǒng)平臺的搭建有個整體的把握和認(rèn)識,以降低進(jìn)入ARM嵌入式開發(fā)應(yīng)用領(lǐng)域的門檻,進(jìn)一步推進(jìn)嵌入式軟硬件開發(fā)的進(jìn)程。
      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責(zé)聲明

      • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
      • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
      • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
      • 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

      <
      更多 >

      工控網(wǎng)機器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機械包裝機械印刷機械農(nóng)業(yè)機械食品加工設(shè)備制藥設(shè)備倉儲物流環(huán)保設(shè)備造紙機械工程機械紡織機械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機械印染機械制鞋機械玻璃機械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


      我要投稿
      • 投稿請發(fā)送郵件至:(郵件標(biāo)題請備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺
      智能制造網(wǎng)APP

      功能豐富 實時交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務(wù)

      微信公眾號

      關(guān)注我們

      抖音

      智能制造網(wǎng)

      抖音號:gkzhan

      打開抖音 搜索頁掃一掃

      視頻號

      智能制造網(wǎng)

      公眾號:智能制造網(wǎng)

      打開微信掃碼關(guān)注視頻號

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開快手 掃一掃關(guān)注
      意見反饋
      關(guān)閉
      企業(yè)未開通此功能
      詳詢客服 : 0571-87858618