亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于HiveBoard的嵌入式系統(tǒng)1卡啟動(dòng)的研究與實(shí)現(xiàn)*

        2014-09-06 10:50:14陸清茹史先強(qiáng)辛海燕
        電子器件 2014年4期
        關(guān)鍵詞:嵌入式系統(tǒng)

        陸清茹,史先強(qiáng),辛海燕

        (東南大學(xué)成賢學(xué)院電子系,南京 210000)

        ?

        基于HiveBoard的嵌入式系統(tǒng)1卡啟動(dòng)的研究與實(shí)現(xiàn)*

        陸清茹*,史先強(qiáng),辛海燕

        (東南大學(xué)成賢學(xué)院電子系,南京 210000)

        摘要:HiveBoard是東南大學(xué)研究人員設(shè)計(jì)的一款基于國(guó)產(chǎn)微處理器的信用卡大小的單板計(jì)算機(jī),它實(shí)現(xiàn)了使用一張SD卡一次實(shí)現(xiàn)嵌入式系統(tǒng)的完整啟動(dòng)。首先介紹了HiveBoard基本配置,分析了典型嵌入式系統(tǒng)的啟動(dòng)方式以及SD卡數(shù)據(jù)存儲(chǔ)與FAT16文件系統(tǒng)相關(guān)知識(shí),重點(diǎn)闡述了設(shè)計(jì)者巧妙地將嵌入式系統(tǒng)所必須的U-Boot、Linux內(nèi)核和文件系統(tǒng)集成在一張SD卡中并實(shí)現(xiàn)完整系統(tǒng)啟動(dòng)的原理和方法,并呈現(xiàn)了整個(gè)啟動(dòng)流程。

        關(guān)鍵詞:HiveBoard;1卡啟動(dòng);嵌入式系統(tǒng);單板計(jì)算機(jī)

        隨著嵌入式系統(tǒng)軟硬件技術(shù)的不斷發(fā)展,嵌入式系統(tǒng)學(xué)習(xí)和開發(fā)者對(duì)于開發(fā)平臺(tái)的穩(wěn)定性、便攜性、易用性及功能性提出越來越高的要求。嵌入式開發(fā)平臺(tái)的設(shè)計(jì)思維也已逐漸向集成化、小型化和高性能等方面轉(zhuǎn)變。面向各個(gè)行業(yè)開發(fā)者的單板計(jì)算機(jī)(Single Board Computer)應(yīng)運(yùn)而生。HiveBoard便是國(guó)內(nèi)單板計(jì)算機(jī)中的佼佼者。

        1 HiveBoard簡(jiǎn)介

        在充分考慮了當(dāng)下嵌入式系統(tǒng)愛好者對(duì)于開發(fā)平臺(tái)的實(shí)際需求后,東南大學(xué)的學(xué)者設(shè)計(jì)并實(shí)現(xiàn)了只有信用卡大小的單板計(jì)算機(jī)——HiveBoard。

        硬件設(shè)計(jì)上,HiveBoard采用基于國(guó)產(chǎn)內(nèi)核(北大眾志unity2)的自主知識(shí)產(chǎn)權(quán)微處理器SEP6200作為主處理器,主頻最高800 MHz,主存128M(DDR2 SDRAM),擁有多種存儲(chǔ)器接口;支持多種主流視頻格式的1 080 pixel解碼,支持HDMI視頻輸出(外接擴(kuò)展板);支持24 bit色LCD輸出,可支持4層Overlay;內(nèi)嵌USB OTG 2.0控制器,支持外接PHY實(shí)現(xiàn)USB 2.0傳輸;支持SDIO接口和SDHC存儲(chǔ)卡,高速SPI/UART/I2C等串行接口;支持10 M/100 M以太網(wǎng)口[1]。HiveBoard的外觀如圖1所示。

        軟件上,引導(dǎo)程序使用U-Boot,操作系統(tǒng)內(nèi)核是Linux,開發(fā)者移植并優(yōu)化了Qt/E作為嵌入式圖形開發(fā)工具。在接上電源后,HiveBoard僅需一張SD卡就能實(shí)現(xiàn)U-Boot引導(dǎo)Linux內(nèi)核并掛載根文件系統(tǒng)。

        圖1 HiveBoard正、背面圖

        2 典型的嵌入式系統(tǒng)啟動(dòng)分析

        一個(gè)典型的嵌入式系統(tǒng),在硬件上通常是以嵌入式微處理器為核心,由存儲(chǔ)設(shè)備、I/O設(shè)備、通信模塊以及電源設(shè)備等構(gòu)成。軟件上,通常包含引導(dǎo)系統(tǒng)啟動(dòng)的引導(dǎo)程序(Boot-Loader),一個(gè)合適的操作系統(tǒng)以及根文件系統(tǒng)等構(gòu)成。其中,操作系統(tǒng)包含操作系統(tǒng)內(nèi)核及各種設(shè)備驅(qū)動(dòng)及應(yīng)用程序接口等[2]。

        對(duì)于一個(gè)特定的嵌入式設(shè)備,軟件系統(tǒng)通常存放在一定的存儲(chǔ)設(shè)備上,根據(jù)引導(dǎo)程序存放的位置不同,系統(tǒng)啟動(dòng)通常分為NorFlash啟動(dòng),NandFlash啟動(dòng)以及SD卡啟動(dòng)。

        HiveBoard的主控微處理器SEP6200支持以上3種啟動(dòng)方式,以SD卡方式啟動(dòng)并以U-Boot(一種常見的BootLoader)作引導(dǎo)程序?yàn)槔?系統(tǒng)上電復(fù)位后,硬件自動(dòng)將U-Boot前8k內(nèi)容(U-Boot從SD卡0扇區(qū)開始存放)復(fù)制到SEP6200片內(nèi)的ESRAM,在ESRAM中執(zhí)行一些初始化工作并將SD卡中完整的U-Boot拷貝至主存中的特定地址并跳轉(zhuǎn)過去繼續(xù)執(zhí)行U-Boot,U-Boot執(zhí)行硬件初始化、建立內(nèi)存映射圖并將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài)[3]。隨后U-Boot將操作系統(tǒng)內(nèi)核拷貝解壓到主存,并將控制權(quán)交給操作系統(tǒng)。操作系統(tǒng)啟動(dòng)完成后,掛接相應(yīng)的根文件系統(tǒng),在文件系統(tǒng)中可以運(yùn)行相應(yīng)的應(yīng)用程序。

        3 HiveBoard 1卡啟動(dòng)原理及實(shí)現(xiàn)

        3.11卡啟動(dòng)原理概述

        如前所述,HiveBoard采用U-Boot作為BootLoader,操作系統(tǒng)使用Linux,并在操作系統(tǒng)啟動(dòng)后掛載根文件系統(tǒng),完成整個(gè)系統(tǒng)的啟動(dòng)工作。為了降低成本,便于開發(fā)HiveBoard使用SD卡作為唯一的非易失性存儲(chǔ)設(shè)備,因此U-Boot、Linux內(nèi)核文件以及文件系統(tǒng)等鏡像文件在啟動(dòng)之初均必須存放在SD卡上;首先,U-Boot必須從SD卡的第零頁(yè)開始存放;再者,為了便于開發(fā)者在開發(fā)過程中更換Linux內(nèi)核及文件系統(tǒng),HiveBoard設(shè)計(jì)者在這張SD卡上開辟出一個(gè)FAT16文件系統(tǒng)分區(qū)用來存放Linux內(nèi)核文件及文件系統(tǒng)的壓縮文件[4];第三,在Linux環(huán)境下,文件系統(tǒng)必須是ext格式的,因此這張SD卡上還必須存在一個(gè)ext分區(qū)用以存放解壓縮后的Linux根文件系統(tǒng);基于以上考慮,一張符合HiveBoard啟動(dòng)要求的SD卡分區(qū)布局應(yīng)該如圖2所示。

        圖2 符合HiveBoard啟動(dòng)要求的SD卡分區(qū)布局

        3.2SD卡數(shù)據(jù)存儲(chǔ)與FAT16文件系統(tǒng)

        SD卡具有體積小、容量大、功耗低和非易失等特點(diǎn),SD卡一般采用基于文件系統(tǒng)的方式存儲(chǔ)數(shù)據(jù),這樣可以方便使用計(jì)算機(jī)直接訪問和處理其中的數(shù)據(jù)[5]。本文論述的是基于FAT16文件系統(tǒng)格式的SD卡存儲(chǔ)格式。在使用FAT16格式對(duì)SD卡進(jìn)行格式化后,其內(nèi)部分區(qū)布局如圖3所示。

        圖3 FAT16格式SD卡分區(qū)布局

        其中,MBR(Master Boot Record)是主引導(dǎo)記錄區(qū),它是SD卡的0扇區(qū)(1扇區(qū)=512 byte),主引導(dǎo)記錄區(qū)存有主引導(dǎo)記錄程序以及各個(gè)分區(qū)的大小及位置信息,是數(shù)據(jù)信息的重要入口[6]。其后是隱藏扇區(qū),可以實(shí)現(xiàn)特殊的用途,比如存放BootLoader等,這一點(diǎn)很重要。之后依次是各個(gè)文件系統(tǒng)分區(qū)。隱藏扇區(qū)和各個(gè)文件系統(tǒng)分區(qū)是由各個(gè)DPT(Disk Partition Table)確定的,SD卡最多可以有4個(gè)分區(qū)。MBR區(qū)的扇區(qū)結(jié)構(gòu)如表1所示。

        表1 MBR區(qū)扇區(qū)結(jié)構(gòu)

        其中DPT0描述隱藏扇區(qū)和分區(qū)0相關(guān)信息,DPT1~3描述分區(qū)1~3相關(guān)信息。

        具體到一個(gè)分區(qū),其數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如圖4所示。DBR(DOS BOOT RECORD)區(qū)即操作系統(tǒng)記錄區(qū)的意思,也稱為引導(dǎo)扇區(qū)或啟動(dòng)扇區(qū)。它包含一個(gè)引導(dǎo)程序和一個(gè)BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表,BPB記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲(chǔ)格式、磁盤介質(zhì)描述符、根目錄大小、FAT個(gè)數(shù)、分配單元的大小等重要參數(shù)。DRB區(qū)之后是保留區(qū),之后是FAT(File Allocation Table)區(qū),即文件分配表區(qū)。由于磁盤中存儲(chǔ)文件時(shí)其基本單位不是字節(jié)而是簇,1簇由若干個(gè)扇區(qū)構(gòu)成。一個(gè)文件存放在磁盤上,其內(nèi)容實(shí)際是以簇為單位按照鏈?zhǔn)浇Y(jié)構(gòu)存放的。FAT就是用來記錄哪些簇已經(jīng)被文件占用,還必須為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后繼內(nèi)容的下一個(gè)簇的簇號(hào),對(duì)一個(gè)文件的最后一簇,則要指明本簇?zé)o后繼簇。由此可見通過FAT我們就可以在文件系統(tǒng)中完整地查找到一個(gè)文件。由于FAT對(duì)于文件管理的重要性,所以在FAT1之后又存在其本身的一個(gè)備份FAT2。這之后是根目錄,每一個(gè)存放在根目錄下的文件在這里都有一條記錄。根目錄區(qū)之后是數(shù)據(jù)區(qū)。

        圖4 分區(qū)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

        對(duì)于FAT16格式文件系統(tǒng),每一簇在FAT表中占據(jù)2 byte。所以,FAT16最大可以表示的簇號(hào)為0xFFFF(十進(jìn)制為65 536),以32 kbyte為簇的大小的話,FAT16可以管理的最大磁盤空間為:32 kbyte×65 535=2 048 Mbyte,這就是為什么FAT16不支持超過2 Gbyte分區(qū)的原因。FAT16記錄項(xiàng)的取值及相應(yīng)的表現(xiàn)情況如表2所示。

        表2 FAT16記錄項(xiàng)的取值

        FAT文件系統(tǒng)的一個(gè)重要思想是把目錄當(dāng)作一個(gè)特殊的文件來處理,所有的目錄文件可以看作是一個(gè)存放其他文件(或目錄)入口參數(shù)的數(shù)據(jù)表。系統(tǒng)以32 byte為單位進(jìn)行目錄文件所占簇的分配。不同的字段定義了本目錄下的一個(gè)文件(或目錄)的屬性,表3是各字段的定義。其中0x1A~0x1B定義了文件的首簇號(hào),從這一簇出發(fā),結(jié)合文件長(zhǎng)度大小就可以在FAT中找到文件的所有塊。

        3.3HiveBoard 1卡啟動(dòng)軟件設(shè)計(jì)

        3.3.1主要設(shè)計(jì)思想

        如前所述,由于HiveBoard微處理器SEP6200硬件設(shè)計(jì)的原因,在SD卡啟動(dòng)模式下,上電后系統(tǒng)默認(rèn)從SD卡第零頁(yè)開始讀取U-Boot前8k內(nèi)容到ESRAM[7],而FAT16文件系統(tǒng)也有其自身的文件存儲(chǔ)格式,設(shè)計(jì)者結(jié)合兩方面因素將對(duì)于FAT16文件系統(tǒng)至關(guān)重要的DPT分區(qū)表保留下來放置到U-Boot文件中的合適位置(如表1,DPT在MBR中的位置是01BE-01CD),然后將U-Boot編譯后的二進(jìn)制文件燒寫到SD卡的0地址。

        由于我們將Linux內(nèi)核以及文件系統(tǒng)壓縮文件存放在FAT分區(qū)下,因此在U-Boot中必須添加一條指令來讀取FAT16文件系統(tǒng)中的文件到指定內(nèi)存地址。

        3.3.2分區(qū)表DPT的設(shè)計(jì)

        由于start.S文件時(shí)U-Boot啟動(dòng)時(shí)執(zhí)行的第1個(gè)文件,主要完成硬件初始化、屏蔽中斷、設(shè)置時(shí)鐘頻率等,因此可以將DPT分區(qū)表放置在這個(gè)文件中,并使用跳轉(zhuǎn)指令跳過分區(qū)表。我們可以先在Linux系統(tǒng)下將SD卡分成我們需要的一個(gè)FAT分區(qū)和一個(gè)ext分區(qū),各分區(qū)大小根據(jù)實(shí)際需要確定。使用諸如winHex等二進(jìn)制工具提取出其分區(qū)表,并將其使用字節(jié)對(duì)齊的方式寫入到start.S中,代碼如圖5所示。將U-Boot編譯后再次使用winHex查看分區(qū)表起始位置是否位于MBR中的01BE-01CD字節(jié)位。如有差別可在start.S源碼中調(diào)整分區(qū)表的代碼位置。

        圖5 start.S中分區(qū)表代碼

        3.3.3FAT16文件系統(tǒng)識(shí)別指令設(shè)計(jì)

        根據(jù)4.2節(jié)所述,建立MBR、DBR、DPT等關(guān)鍵數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),代碼如圖6所示。先讀取MBR到內(nèi)存并分析得到文件系統(tǒng)基本配置信息,從其中計(jì)算得出DPT,在分區(qū)中分析DBR數(shù)據(jù)結(jié)構(gòu)信息,計(jì)算出FAT和根目錄偏移扇區(qū),然后根據(jù)要讀取的文件名在其中匹配出文件的首簇號(hào)及文件大小,根據(jù)文件的起始數(shù)據(jù)簇號(hào)在FAT表中查找所有該文件占用的數(shù)據(jù)簇號(hào),根據(jù)數(shù)據(jù)簇號(hào)查找相應(yīng)的數(shù)據(jù)簇。查找下一個(gè)數(shù)據(jù)簇號(hào)讀取相應(yīng)數(shù)據(jù)簇,直到讀出最后一個(gè)數(shù)據(jù)簇0xFFFF[8],圖7是提取文件名和在FAT16分區(qū)匹配文件的函數(shù)。

        圖6 主要數(shù)據(jù)結(jié)構(gòu)代碼

        圖7 文件名提取和文件查找函數(shù)

        3.3.41卡啟動(dòng)整體流程

        設(shè)計(jì)者將U-Boot、Linux內(nèi)核、文件系統(tǒng)壓縮文件和RamDisk按照存儲(chǔ)布局制作成一個(gè)鏡像文件。在第1次使用HiveBoard時(shí),使用者只需使用win32diskimager這樣的燒寫工具將鏡像文件燒寫到SD卡的0地址就。此時(shí)SD卡的存儲(chǔ)布局如圖8所示,從SD卡第零頁(yè)開始存放U-Boot(包含DPT分區(qū)表),接著是存放有Linux內(nèi)核級(jí)文件系統(tǒng)壓縮文件和RamDisk,緊接著是ext分區(qū)用來存放解壓縮后的根文件系統(tǒng)。

        圖9 HiveBoard 1卡啟動(dòng)完整流程

        HiveBoard第1次上電啟動(dòng)后,在U-Boot環(huán)境下輸入命令,讀取Linux內(nèi)核uImage和RamDisk文件系統(tǒng)到內(nèi)存指定位置,運(yùn)行內(nèi)核并掛接RamDisk文件系統(tǒng)。進(jìn)入RamDisk后自動(dòng)執(zhí)行腳本文件重新為SD卡的ext分區(qū)重新制作ext文件系統(tǒng),并讀取FAT分區(qū)下的根文件系統(tǒng)壓縮文件并解壓到ext分區(qū)中。之后,系統(tǒng)重新啟動(dòng),讀取Linux內(nèi)核并運(yùn)行,此后掛接新制作的ext文件系統(tǒng),至此,HiveBoard 1卡啟動(dòng)制作完成,整個(gè)過程的流程如圖9所示。

        4 總結(jié)

        本文主要論述了基于國(guó)產(chǎn)微處理器的單板計(jì)算機(jī)HiveBoard的基本配置,介紹了將FAT16文件系統(tǒng)結(jié)合到U-Boot中,一次燒寫完成U-Boot燒寫、SD卡功能分區(qū)以及Linux內(nèi)核與文件系統(tǒng)放置等工作。描述了以上工作的原理和實(shí)現(xiàn)方法。這為當(dāng)下嵌入式系統(tǒng)學(xué)習(xí)和設(shè)計(jì)提供了一種使用便利、成本低廉的方案。

        參考文獻(xiàn):

        [1]南京博芯電子技術(shù)有限公司.V1.0.HiaveBoard用戶手冊(cè)[R].2013年.

        [2]王根義,馬德寶,楊黎斌.基于ARM的嵌入式最小系統(tǒng)架構(gòu)研究[J].微計(jì)算機(jī)信息,2008(2):163-165.

        [3]夏宏,郭宗一.嵌入式系統(tǒng)引導(dǎo)技術(shù)的研究與實(shí)現(xiàn)[J].中國(guó)電力教育,2007(S3):292-294.

        [4]梁超,楊峰,雷鵬,徐志剛.U-Boot SD卡啟動(dòng)方式的移植分析與功能擴(kuò)展[J].現(xiàn)代電子技術(shù),2013,20:84-86,90.

        [5]李文華,徐國(guó)洪,胡華文,等.基于FAT32文件系統(tǒng)的SD卡數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)研究[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然版)理工卷,2012,09(6):102-104,111.

        [6]王拾亦,閆學(xué)文.基于ARM與SD卡的嵌入式存儲(chǔ)系統(tǒng)研究與設(shè)計(jì)[J].微型電腦應(yīng)用,2009(7):43-45+5.

        [7]SEUIC.SEP6200 Linux軟件開發(fā)指南[R].2013.

        [8]院澤嘉,董金明.FAT16文件系統(tǒng)在嵌入式操作系統(tǒng)μC-OS中實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2005(6):27-28.

        陸清茹(1982-),女,漢族,江蘇人,東南大學(xué)電子系學(xué)士及碩士學(xué)位,東南大學(xué)成賢學(xué)院電子系助教,研究方向?yàn)榍度胧?silver_1120@163.com。

        ResearchandImplementationofSystemBootingwithaSingleSD-CardBasedontheHiveBoard*

        LUQingru*,SHIXiangqiang,XINGHaiyan

        (Department of Electronics,Chengxian Institute,Southeast University,Nanjing 210000,China)

        Abstract:HiveBoard is a single board computer designed by the researchers of the Southeast University.It’s based on the domestic SOC which is called SEP6200.It implements the whole system booting using a single SD card.In this paper,the author introduces the basic configuration of the HiveBoard.Then,the paper analyzes the data storage structure of SD card and the knowledge of the FAT16 file system.Finally,the author expounds that how to integratethe U-Boot,the Linux kernel image and the file-system in the single SD card and the whole process how the HiveBoard is booted by this SD card.

        Key words:HiveBoard;SD-card system booting;embedded system;single board computer

        doi:EEACC:721010.3969/j.issn.1005-9490.2014.04.030

        中圖分類號(hào):TP334.7

        文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1005-9490(2014)04-0723-05

        收稿日期:2013-12-08修改日期:2014-01-26

        項(xiàng)目來源:國(guó)家城鎮(zhèn)化發(fā)展用地實(shí)地核查技術(shù)研究項(xiàng)目(2013BAJ05B03)

        猜你喜歡
        嵌入式系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        国产伦精品一区二区三区视| 欧美老肥婆牲交videos| 久久精品无码av| chinesefreexxxx国产麻豆| 久久精品国产久精国产69| 极品少妇人妻一区二区三区 | 香港日本三级亚洲三级| 日韩中文字幕不卡网站| 亚洲精品成人久久av| 精品人伦一区二区三区蜜桃91| 国产精品欧美一区二区三区| 欧美亚洲综合激情在线| 亚洲天堂色婷婷一区二区 | 青青草针对华人超碰在线| 国产的自拍av免费的在线观看 | 日日噜狠狠噜天天噜av| 麻豆国产乱人伦精品一区二区| 按摩偷拍一区二区三区| 国产成人无码a区在线观看导航| 中文字幕av一区中文字幕天堂| 国产精品中文第一字幕| 色噜噜亚洲精品中文字幕| 少妇被粗大的猛进出69影院| ā片在线观看| 女人被躁到高潮嗷嗷叫免费软| 亚洲精品98中文字幕| 亚洲乱亚洲乱妇50p| 国产91精品成人不卡在线观看| 五月天亚洲av优女天堂| 日出白浆视频在线播放| 无码精品人妻一区二区三区影院| 国产高清a| 日本不卡视频一区二区三区| 精品无码无人网站免费视频| 日韩在线精品国产成人| 黑丝国产精品一区二区| av网站免费线看精品| av无码免费永久在线观看| 中文字幕成人精品久久不卡| 嫩呦国产一区二区三区av| 国产激情久久久久影院老熟女 |