• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ARM 920T S3C2440AL—40的EOS移植研究

      2017-05-17 10:21:23胡恩博
      關(guān)鍵詞:嵌入式操作系統(tǒng)移植嵌入式

      胡恩博

      摘要:首先簡要闡述了Linux OS的內(nèi)核目錄及結(jié)構(gòu),之后詳細(xì)描述將嵌入式Linux OS移植到SAMSUNG ARM 920T為內(nèi)核的S3C2440AL-40芯片上的流程。通過移植流程的分析與研究,總結(jié)及優(yōu)化了基于此類芯片向該類硬件平臺移植Linux內(nèi)核的方法,為改進(jìn)OS的設(shè)計(jì)提供了重要參考,具有重要的應(yīng)用價(jià)值。

      關(guān)鍵詞:移植;ARM;嵌入式;嵌入式操作系統(tǒng);Linux

      中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)03-0044-02

      1 引言

      EOS(Embedded Operation System,EOS),即嵌入式操作系統(tǒng)。是一種用途廣泛的系統(tǒng)軟件,是基于軟、硬件的廣義概念,它負(fù)責(zé)分配軟件與硬件資源、進(jìn)行任務(wù)調(diào)度、控制協(xié)調(diào)并發(fā)活動(dòng)等任務(wù),具有強(qiáng)實(shí)時(shí)性、代碼固化、可裁剪、便于移植等特點(diǎn)。當(dāng)前比較流行的EOS主要有Linux、uCLinux、WinC、VxWorks、uC/OS-Ⅱ QNX等,而尤以Linux的通用與應(yīng)用性最為突出。在嵌入式芯片上則以ARM為代表。故以下研究的是將嵌入式Linux OS移植到SAMSUNG ARM 920T為內(nèi)核的S3C2440AL-40芯片的硬件平臺上,與傳統(tǒng)的移植方式不同之處在于BootLoader獨(dú)立編寫,并且給出了有針對性的、完整的編寫流程,而非直接使用系統(tǒng)U-Boot。

      2 Linux內(nèi)核源碼目錄結(jié)構(gòu)

      Linux內(nèi)核為系統(tǒng)核心組件,雖然版本眾多,但主要模塊不外乎內(nèi)存管理、進(jìn)程調(diào)度、文件系統(tǒng)、設(shè)備驅(qū)動(dòng)及網(wǎng)絡(luò)和進(jìn)程間通信等。其一級目錄結(jié)構(gòu)如圖1所示,二級及以下目錄并未列出,在后續(xù)的移植過程中如有用到可根據(jù)所列目錄推導(dǎo)其所屬一級目錄。此次移植研究使用的Linux版本號為 2.6.23。各級目錄含義版本差異并不明顯,這里不做過多闡述。

      3 建立GCC編譯環(huán)境

      Linux系統(tǒng)開發(fā)方式多樣,一般采取宿主機(jī)-目標(biāo)機(jī)方式,其硬件連接示意如圖2所示。此次移植Linux系統(tǒng)版本為Red Hat Linux 9,移植方式及流程與系統(tǒng)開發(fā)方式類似,在宿主機(jī)上裁剪及編譯好所需的Linux系統(tǒng),然后通過雙絞線tftp傳輸完成移植,其流程如圖3所示。

      此次GCC編譯器采用arm-linux-gcc-4.3.2版本,需要解壓編譯環(huán)境壓縮包arm-linux-gcc-4.3.2.tgz來實(shí)現(xiàn),其流程為:下載壓縮包到任意目錄→解壓(/usr/local)→復(fù)制 arm 至 /usr/local,使編譯環(huán)境集中在/usr/local/arm/4.3.2/bin→修改環(huán)境變量→重啟。

      經(jīng)過以上流程后此次移植所需的GCC編譯環(huán)境就建立起來了。不論采用那一個(gè)版本的編譯器,編譯環(huán)境的建立都大同小異。

      4 BootLoader

      在EOS中,一般并無和BIOS相似的固件程序,但有的ECPU內(nèi)也會含有一段精簡的啟動(dòng)程序,這里不作討論。因此EOS的加載啟動(dòng)任務(wù)全部由BootLoader完成。BootLoader是EOS在加電后執(zhí)行的首段代碼,它運(yùn)行在操作系統(tǒng)內(nèi)核之前,在它完成CPU和相關(guān)硬件的初始化之后,即將操作系統(tǒng)映像或固化的嵌入式應(yīng)用程序裝載至內(nèi)存中,然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境,從而啟動(dòng)操作系統(tǒng)運(yùn)行[1]。

      ARM 920T的異常向量表有兩種存放方式,一種是從0x00000000處開始的低端存放,另一種從0xfff000000處開始的高端存放,選擇低端存放,建立異常向量表。S3C2440的看門狗在上電啟動(dòng)時(shí)默認(rèn)為開啟狀態(tài),所有要先關(guān)閉看門狗,否則代碼運(yùn)行不完全就會強(qiáng)制復(fù)位。重定位代碼的目的是使代碼的運(yùn)行地址與鏈接地址相對應(yīng),之后就可以直接使用絕對地址。用C語言實(shí)現(xiàn)使用絕對跳轉(zhuǎn)指令跳轉(zhuǎn)到第二階段。初始化串口可方便調(diào)試及為內(nèi)核啟動(dòng)時(shí)打印信息做好準(zhǔn)備。初始化Nand Flash時(shí)需注意將其內(nèi)核鏡像拷貝到內(nèi)存。

      5 Linux內(nèi)核修改與編譯

      Linux內(nèi)核移植前得先進(jìn)行內(nèi)核的修改,而后進(jìn)行配置與編譯。內(nèi)核修改流程為:指定硬件與編譯器→添加Header file→建立Nand flash分區(qū)表→加入Nand flash分區(qū)→J建立芯片支持→加入芯片支持至驅(qū)動(dòng)→指定啟動(dòng)時(shí)初始化→禁止FlashECC校驗(yàn)。具體的修改命令與對應(yīng)參數(shù)這里不做過多闡述。在完成針對性的內(nèi)核修改后,需要對修改后的內(nèi)核進(jìn)行配置與編譯,以便于后期的移植。配置方式相對簡單,可使用makeconfig、makeoldconfig、makemenuconfig、makexconfig中的任意一種[2]。在配置做好后,需要對Linux 2.6.23的內(nèi)核進(jìn)行編譯,方法相對簡單,執(zhí)行make即可編譯內(nèi)核與模塊。

      6 制作根文件系統(tǒng)

      根文件系統(tǒng)是一個(gè)系統(tǒng)運(yùn)行時(shí)必須且存儲數(shù)據(jù)文件的外部設(shè)備。Linux內(nèi)核代碼映像文件便保存其中。BootLoader會從這個(gè)根文件系統(tǒng)設(shè)備上把內(nèi)核執(zhí)行代碼加載到內(nèi)存中去運(yùn)行。可見其重要性[3]。

      在Linux下輸入ls 命令見到的目錄結(jié)構(gòu)以及這些目錄下的內(nèi)容都大同小異,這是因?yàn)樗械膌inux發(fā)行版本在對根文件系統(tǒng)布局上都遵循FHS標(biāo)準(zhǔn)的建議規(guī)定,該標(biāo)準(zhǔn)規(guī)定了根目錄下各子目錄的名稱及其存放的內(nèi)容,制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內(nèi)容。其通用流程一般為先編譯、安裝busybox,生成bin、sbin、usr/bin、usr/sbin目錄;然后依次GCC構(gòu)建lib目錄;手工構(gòu)建etc及dev目錄;在創(chuàng)建其它空目錄后對系統(tǒng)自動(dòng)生成的proc目錄進(jìn)行配置;最后利用udev構(gòu)建完整的dev目錄并制作根文件系統(tǒng)的映像文件。

      采用busybox制作cramfs文件系統(tǒng)的流程為:制作根文件系統(tǒng)→修改Makefile→去警告信息→配置busybox→編譯busybox→創(chuàng)建cramfs所需目錄→創(chuàng)建節(jié)點(diǎn)→目錄對拷→創(chuàng)建cramfs→執(zhí)行。制作過程中要注意,由于采用靜態(tài)編譯,故需去掉applets/ap-plets.c中的警告信息。配置busybox要選擇靜態(tài)編譯并修改其屬性。若假設(shè)創(chuàng)建cramfs所需目錄均創(chuàng)建在rootfs下,則在目錄對拷時(shí)在busybox中 install目錄下除linuxrc目錄外的其它全部目錄均需拷貝到rootfs目錄下,同時(shí)復(fù)制常用的lib文件,可稍微精簡。創(chuàng)建節(jié)點(diǎn)前需要準(zhǔn)備啟動(dòng)所需的linuxrc、rcS、inittab和fstab四個(gè)文件,創(chuàng)建兩個(gè)節(jié)點(diǎn)console、null時(shí)必須以root身份。假設(shè)創(chuàng)建的cramfs文件系統(tǒng)壓縮包名為ramdisk.gz,執(zhí)行必須在rootfs上一級目錄下。

      7 Download

      使用串口通過超級終端下載燒寫編寫好的BootLoader,通過網(wǎng)絡(luò)tftp下載燒寫修改及編譯后的內(nèi)核及根文件系統(tǒng)。若在虛擬機(jī)下移植,可使用Windows自帶的通訊工具超級終端,或 Linux Vim 下使用Minicom。使用雙絞線連接宿主機(jī)與硬件平臺或開發(fā)板,在確保網(wǎng)絡(luò)硬件連接無誤的前提下設(shè)置好IP,通過指令"tftp a0008000(虛擬)zImage"下載燒寫內(nèi)核,成功后輸入指令"tftp a0500000(虛擬) ramdisk.gz,若通過命令"go a0008000(虛擬)"可查看到移植內(nèi)核及文件系統(tǒng),則移植成功并完成。

      8 結(jié)語

      EOS的移植過程繁瑣復(fù)雜,涉及到很多方面的知識,包括移植方式、移植核心的體系架構(gòu)及硬、軟件平臺的搭建等,它要求實(shí)踐者熟悉Linux命令及相關(guān)第三方軟件的配置,對Linux內(nèi)核及文件系統(tǒng)熟悉,對移植硬件平臺或目標(biāo)板的結(jié)構(gòu)了如指掌。隨著Linux內(nèi)核不斷升級完善及快速發(fā)展,硬件平臺及目標(biāo)板的結(jié)構(gòu)的更新也異常迅猛。此次移植對以ARM為內(nèi)核的EOS移值具有非常實(shí)用的應(yīng)用價(jià)值,其本身即可作為一個(gè)實(shí)際應(yīng)用案例。移植后的Linux系統(tǒng)在以ARM 920T為內(nèi)核的S3C2440AL-40硬件平臺上運(yùn)行穩(wěn)定、性能優(yōu)良,達(dá)到了預(yù)期目標(biāo),滿足后續(xù)在此平臺上開發(fā)應(yīng)用程序的實(shí)際應(yīng)用要求。同時(shí)此次移植過程對采用不同硬件與軟件平臺的移植具有很好的參考價(jià)值。

      參考文獻(xiàn)

      [1]李廣軍,閻波,林水生.微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)系統(tǒng)設(shè)計(jì)[M].電子工業(yè)出版社,2011.

      [2]向濤,吳光敏,李蘭.基于S3C2410的嵌入式Linux操作系統(tǒng)移植[J].微機(jī)處理,2010(6):41-44.

      [3]趙明鑫.Linux內(nèi)核在ARM上的裁減與移植[J].計(jì)算機(jī)與數(shù)字工程,2009(7):81-84.

      猜你喜歡
      嵌入式操作系統(tǒng)移植嵌入式
      典型實(shí)時(shí)嵌入式操作系統(tǒng)應(yīng)用分析
      電子測試(2018年23期)2018-12-29 11:11:30
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      基于FreeRTOS系統(tǒng)和LwIP協(xié)議棧的網(wǎng)絡(luò)通訊
      西方音樂元素在二胡演奏中的移植
      “移植”瘦人糞便能減肥?
      基于嵌入式操作系統(tǒng)的工業(yè)采集板設(shè)計(jì)
      應(yīng)用服務(wù)型人才培養(yǎng)體系下的嵌入式操作系統(tǒng)教學(xué)改革探索
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      且末县| 吕梁市| 盐亭县| 乐昌市| 西峡县| 尼勒克县| 凤台县| 定远县| 牙克石市| 广州市| 平罗县| 灯塔市| 体育| 万荣县| 蚌埠市| 巴塘县| 仪征市| 沁阳市| 泽普县| 东乡族自治县| 抚宁县| 乐都县| 嵊州市| 万荣县| 芮城县| 滨海县| 洱源县| 阜新市| 曲水县| 张家界市| 明溪县| 泰来县| 祁东县| 英超| 翁源县| 津市市| 樟树市| 原阳县| 简阳市| 沁水县| 涟水县|