999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

EBoot下SD卡下載功能的實現(xiàn)

2008-04-12 00:00:00左成兵黃少珉
現(xiàn)代電子技術(shù) 2008年22期

摘 要:在基于WinCE構(gòu)建的嵌入式系統(tǒng)中,EBoot下載操作系統(tǒng)鏡像時主要為以太網(wǎng)、USB線、串口下載的方式。由于目前SD卡的廣泛應(yīng)用,通過SD卡下載操作系統(tǒng)鏡像則成為EBoot操作系統(tǒng)鏡像下載方式的很好的補充。這里基于東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心SEP5010處理器平臺實現(xiàn)了EBoot下SD卡下載的功能。鏡像數(shù)據(jù)在SD卡中以文件系統(tǒng)文件的方式存在,方便了從開發(fā)工作站下載鏡像。實驗結(jié)果表明,該方案可以達到948 kB/s的數(shù)據(jù)平均下載速度。

關(guān)鍵詞:SD卡;SEP5010;鏡像下載;EBoot;FAT文件系統(tǒng)

中圖分類號:TP391文獻標(biāo)識碼:B

文章編號:1004373X(2008)2202904

Realization of Download Function in EBoot via SD Card

ZHANG Bin,ZUO Chengbing,HUANG Shaomin

(National ASIC System Engineering Research Center,Southeast University,Nanjing,210096,China)

Abstract:EBoot program downloads OS image mainly via Ethernet,USB or serial port in the WinCE-based embedded systems.Because of SD card being widely used,downloading OS image via SD card can reinforce the download function in EBoot.Realization of download function in EBoot via SD card based on the SEP5010 platform developed by National ASIC System Engineering Research Center.The image is stored in the SD card as the file in a file system,which makes downloading image from the work station more convenient.Result of the experiment shows that the speed of downloading image is 948 kB/s on the average.

Keywords:SD card;SEP5010;image download;EBoot;FAT file system

1 引 言

嵌入式系統(tǒng)開發(fā)一般采用宿主機-目標(biāo)機的形式,開發(fā)人員在宿主機上搭建開發(fā)環(huán)境完成對目標(biāo)機的開發(fā)和調(diào)試。目標(biāo)機上電后通常會運行一段加載操作系統(tǒng)的程序,稱之為Boot Loader。Boot Loader的主要目標(biāo)就是加載并執(zhí)行操作系統(tǒng)鏡像。Boot Loader加載操作系統(tǒng)鏡像可以采用通過以太網(wǎng)、USB線、串口線等媒介下載的方式,也可以采用從FLASH等本地存儲設(shè)備讀取鏡像的方式。由于在開發(fā)過程中需要頻繁地更新目標(biāo)機上的鏡像,所以鏡像下載顯得尤為重要。考慮到產(chǎn)品應(yīng)用,目前應(yīng)用于便攜式嵌入式產(chǎn)品的SoC芯片內(nèi)部基本上都不集成網(wǎng)卡控制器,所以在嵌入式開發(fā)中主流的下載方式為串口和USB下載。串口下載連接方式簡單,但速度是其最大的缺陷。USB下載的連接方式也很簡單,速度上也很好地彌補了串口下載的不足,但由于USB下載方式不但要開發(fā)目標(biāo)機上的驅(qū)動而且要開發(fā)主機端應(yīng)用程序。這樣不僅開發(fā)上增加了難度,還在使用上增加了些許不便。

本文基于東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心SEP5010處理器平臺[1]實現(xiàn)了EBoot下通過SD卡下載操作系統(tǒng)鏡像的功能。EBoot為Windows CE平臺的Boot Loader。SD卡( Secure Digital Memory Card )是一種基于半導(dǎo)體快閃記憶器的記憶設(shè)備。SD卡具有體積小、功耗低、成本低、高可靠、可擦寫、非易失性等特點,目前已廣泛應(yīng)用于MP3、數(shù)碼相機、數(shù)碼攝像機、手機等消費類電子嵌入式產(chǎn)品。本文提出的SD卡下載方式是EBoot下操作系統(tǒng)鏡像下載方式的很好補充,其下載速度可以達到MB/s的量級,并且操作非常簡單,只要宿主機上的鏡像通過讀卡器拷貝到SD卡中,再將SD卡插入到目標(biāo)機,然后即可運行EBoot進行鏡像下載。這種方式不僅給開發(fā)帶來好處,還給以后用戶更新操作系統(tǒng)帶來便利。

2 設(shè)計背景

2.1 硬件背景

圖1所示為基于SEP5010處理器平臺的SD卡接口電路。SEP5010的SD控制器與SD卡主要通過6根線相連,SDCMD線傳輸SD控制器發(fā)出的命令信號以及SD卡發(fā)出的響應(yīng)信號;SDCLK線是SD控制器為SD卡提供的時鐘信號;SDDAT0,SDDAT1,SDDAT2,SDDAT3號這4根線為SD卡和SD控制器提供數(shù)據(jù)傳輸?shù)耐ǖ馈D1中的VCC3為SD卡提供電源。另外PA3,PD0是SEP5010的2個通用GPIO口,系統(tǒng)可以通過分別讀PA3,PD0的電平來獲知SD卡有沒有插入SD卡槽和寫保護。卡插上時PA3的電平為低電平,寫保護時PD0的電平為高電平。

2.2 軟件背景

2.2.1 EBoot

圖2為EBoot的一般執(zhí)行順序[2]。在系統(tǒng)上電后EBoot便開始運行:

(1) 進行代碼重定位,把EBoot自身代碼從不能進行線形訪問的存儲介質(zhì)拷貝到可以進行線形訪問的存儲介質(zhì),比如從FLASH ROM拷貝到ROM或RAM中。

(2) 對內(nèi)存進行配置以滿足EBoot的運行需要以及初始化執(zhí)行高級語言所需要的環(huán)境,一般高級語言為C語言。

(3) 將編譯器定義的可寫的數(shù)據(jù)段拷貝到RAM中,拷貝的原因為EBoot有時是在只讀媒體上執(zhí)行而不能進行寫操作。

(4) 初始化外設(shè)的調(diào)試端口和一些設(shè)備端口并執(zhí)行自檢,在自檢過程中會初始化一些硬件設(shè)備,以檢查它們是否可用。

(5) 自檢成功后則下載操作系統(tǒng)鏡像到RAM中,最后當(dāng)操作系統(tǒng)鏡像下載成功后,就可跳轉(zhuǎn)到操作系統(tǒng)鏡像執(zhí)行。

2.2.2 FAT文件系統(tǒng)

File Allocation Table(FAT)即文件分配表[3]。目前應(yīng)用廣泛的FAT文件系統(tǒng)為FAT16和FAT32文件系統(tǒng)。FAT文件系統(tǒng)的分區(qū)由4個區(qū)域組成,具體分布如圖3所示。第一塊區(qū)域為保留區(qū)(Reserved Region),這塊區(qū)域的有效部分主要為BPB(BIOS Parameter Block),這個數(shù)據(jù)結(jié)構(gòu)主要包含的是該FAT文件系統(tǒng)的基本信息。第二塊區(qū)域為FAT表區(qū)(FATRegion),其作用為將某一文件所占用的所有簇串接起來并通過簇號來映射該FAT分區(qū)的數(shù)據(jù)區(qū)。FAT表為規(guī)定大小的單元組合,該單元即“簇入口”,該單元在FAT表中的位置跟簇號對應(yīng)。第三塊區(qū)域為根目錄區(qū)域(Root Directory Region),該區(qū)域只出現(xiàn)在FAT16分區(qū)中,F(xiàn)AT32分區(qū)的根目錄在數(shù)據(jù)區(qū)中,該區(qū)域由32 B大小的文件夾入口構(gòu)成。文件夾入口的信息包括該文件夾入口的屬性。第四塊區(qū)域為文件和文件夾數(shù)據(jù)區(qū)域(File and Directory Region),該區(qū)域是以簇為單元組織。

3 軟件設(shè)計

SD卡下載方式在原有EBoot的基礎(chǔ)上主要完成的工作分為3個部分,第一個部分為SD卡的初始化,這一部分在Eboot中的硬件平臺初始化的步驟中完成;第二部分為打開操作系統(tǒng)鏡像文件(NK.bin),即獲得操作系統(tǒng)鏡像文件在SD卡中的具體位置以及大小,這一部分在EBoot中的預(yù)下載步驟中完成;第三部分為將操作系統(tǒng)鏡像從SD卡中下載到SDRAM指定位置。這一部分在Eboot中的下載步驟中完成。

3.1 SD卡的初始化

SD卡的初始化包括使得SD卡進入數(shù)據(jù)傳輸狀態(tài)以及獲得SD卡中的文件系統(tǒng)的基本信息。

使得SD卡進入數(shù)據(jù)傳輸狀態(tài)的主要進行的步驟如圖4所示。初始化GPIO(通用輸入/輸出口)是為了檢測SD卡有無插上和有無寫保護。發(fā)送一系列命令的過程如下[4]。

(1) 發(fā)送0號命令,0號命令的作用為重啟SD卡,使它進入空閑狀態(tài)。

(2) 發(fā)送41號應(yīng)用命令,41號應(yīng)用命令是一個以工作電壓范圍為參數(shù)的命令,如果SD卡的工作電壓與該范圍不匹配則進入非激活狀態(tài),否則繼續(xù)運行,并將其運行條件寄存器作為響應(yīng)的一部分發(fā)給SD控制器。

(3) 發(fā)送2號命令,其作用為命令SD卡發(fā)送包含SD卡基本信息的響應(yīng)。

(4) 發(fā)送3號命令,其作用是命令SD卡將其相對地址作為響應(yīng)的一部份發(fā)給SD控制器,然后SD卡進入等待狀態(tài)。

(5) 發(fā)送7號命令,其作用是將SD卡選中,并使其進入數(shù)據(jù)傳輸態(tài)。

(6) 發(fā)送6號應(yīng)用命令,使得SD卡進入4位傳輸態(tài),數(shù)據(jù)通過4根數(shù)據(jù)線傳輸。復(fù)位SD控制器的收發(fā)FIFO是為了清空其中的殘留數(shù)據(jù),為之后的數(shù)據(jù)傳輸做準(zhǔn)備。

獲得SD卡文件系統(tǒng)的基本信息主要通過讀取SD卡的第0扇區(qū)(扇區(qū)是文件系統(tǒng)中的概念,它就相當(dāng)于SD卡規(guī)格書中的塊)來獲得,并將其存入到一個全局指針指向的數(shù)據(jù)結(jié)構(gòu)中。

3.2 打開操作系統(tǒng)鏡像文件

打開操作系統(tǒng)鏡像即為找到操作系統(tǒng)鏡像的具體位置和大小,其具體過程如圖5所示。首先根據(jù)已獲取的SD卡文件系統(tǒng)的基本信息得到文件系統(tǒng)的根目錄的在SD卡中的位置;然后在這個根目錄中找到與操作系統(tǒng)鏡像的第一級路徑名匹配的文件夾入口,然后根據(jù)該入口信息找到下一目錄的位置,從該位置開始再找與第二級路徑名匹配的文件夾入口。這樣的過程一直重復(fù)直到找到與最后一級路徑名,也就是操作系統(tǒng)鏡像名稱匹配的文件夾入口。這樣就得到了操作系統(tǒng)鏡像的具體位置以及大小并將其存入到一個全局指針指向的數(shù)據(jù)結(jié)構(gòu)中。

3.3 下載操作系統(tǒng)鏡像

目前設(shè)計中下載的鏡像為BIN格式文件。BIN格式文件組織,如圖6所示。它的開頭是7個字節(jié)的文件類型標(biāo)識碼。標(biāo)識碼之后的4個字為數(shù)據(jù)被下載到內(nèi)存后在內(nèi)存中的起始地址,而后的4個字節(jié)為下載到內(nèi)存中的二進制鏡像大小。之后的所有數(shù)據(jù)由若干塊組成,每一塊分為4個部分,第一部分為4個字節(jié),表示這一塊數(shù)據(jù)區(qū)被下載到內(nèi)存后在內(nèi)存中的起始位置;第二部分也為4個字節(jié),表示這一塊數(shù)據(jù)區(qū)的大小;第三部分也為4個字節(jié),表示數(shù)據(jù)區(qū)的校驗和;第四部分為數(shù)據(jù)區(qū)。將操作系統(tǒng)鏡像從SD卡下載到內(nèi)存中時,程序會根據(jù)已獲得的操作系統(tǒng)鏡像的位置信息和大小來讀取操作系統(tǒng)鏡像。讀取按照下載鏡像文件的結(jié)構(gòu)以塊為單位讀取,然后將塊中的數(shù)據(jù)區(qū)寫入到內(nèi)存中相應(yīng)的位置。

下載SD卡中的文件系統(tǒng)中的操作系統(tǒng)鏡像文件到內(nèi)存中的過程跟讀取一般介質(zhì)上的FAT文件系統(tǒng)中的某一文件的過程本質(zhì)沒有差別。首先根據(jù)已獲得的操作系統(tǒng)鏡像的位置來下載其起始的簇的數(shù)據(jù)到內(nèi)存中,下載完該簇后從FAT表中與該簇號對應(yīng)的位置獲得下一簇的簇號來繼續(xù)下載,這樣一直持續(xù)到把操作系統(tǒng)鏡像的所有數(shù)據(jù)都下載完。當(dāng)下載操作系統(tǒng)鏡像的最后一簇到內(nèi)存中時,根據(jù)已獲得的操作系統(tǒng)鏡像的大小,下載完該簇的對應(yīng)的文件結(jié)尾處的數(shù)據(jù)后就完成了操作系統(tǒng)鏡像文件的下載。

3.4 SD卡的讀取操作

由于SD卡讀取時最小的讀取單位是一個塊(Block),而文件系統(tǒng)提供給上一級讀取的函數(shù)的最小讀取單位為字節(jié),這將遇到字節(jié)數(shù)與塊數(shù)的轉(zhuǎn)換的問題。在本設(shè)計,當(dāng)上一級函數(shù)讀取數(shù)據(jù)時,將SD卡中所涉及的Block全部讀取到內(nèi)存中的一個緩存區(qū)中,然后再從緩沖區(qū)中以字節(jié)為單位讀取數(shù)據(jù)。

4 性能比較

本文對串口、USB和SD這3種下載方式在下載速度方面的比較共進行了3次試驗,表1為實驗數(shù)據(jù)。在本實驗中下載的操作系統(tǒng)鏡像的大小為9 431 kB,SD卡的容量為1 Gb,文件系統(tǒng)為FAT16時簇大小為4 kB,文件系統(tǒng)為FAT32時簇大小為16 kB。

從表中可以看出,串口的平均下載速度為8.62 kB/s,USB下載(SEP5010的USB控制器為USB 1.1控制器)的下載速度為695.5 kB/s,SD卡下載時,如果卡中為FAT16文件系統(tǒng)的下載速度為947.8 kB/s,如果是FAT32文件系統(tǒng),其下載速度為865.2 kB/s。測試結(jié)果表明,SD卡下載的速度不僅遠遠超過本平臺上串口的下載速度,而且也超過了本平臺上USB 1.1的下載速度。

從表1中還可以看出,相對于FAT32,SD卡中的文件系統(tǒng)為FAT16時的下載速度要更快。這是由于在代碼中文件是按簇來讀取的,當(dāng)一個簇讀完時,在讀下一個簇之前會存在一個尋找下一簇的時間。對于一個遠大于簇大小的文件,在本設(shè)計中其在FAT32文件系統(tǒng)占用簇的數(shù)量大約是其在FAT16文件系統(tǒng)占用簇的數(shù)量4倍。則程序在FAT32文件系統(tǒng)中讀取該文件時,其占用的尋找下一簇的總時間也大約是其在FAT16文件系統(tǒng)中讀取該文件時占用的響應(yīng)時間的4倍。所以在本設(shè)計中,相同的文件從FAT16文件系統(tǒng)中讀取所消耗時間少于從FAT32文件系統(tǒng)中讀取的時間。

5 結(jié) 語

本文在SEP5010處理器平臺上實現(xiàn)了在EBoot下通過SD卡下載鏡像文件方式。在該平臺上相對于其他下載方式,SD卡下載方式不僅在速度上有優(yōu)勢,而且操作也相對簡單。操作的相對簡單不但給開發(fā)調(diào)試帶來便利,而且降低了在后續(xù)產(chǎn)品的軟件升級的門檻,方便了客服人員及用戶。

參考文獻

[1]國家專用集成電路系統(tǒng)工程技術(shù)研究中心.SEP5010用戶手冊[Z].2007.

[2]何宗健.Windows CE 嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.

[3]SD Group.SD Memory Card Specifications[S].Version 1.0,2000.

[4]Microsoft Corporation.Microsoft Extensible Firmware Initiative FAT32 File System Specification[S].Version 1.03,2000.

[5]張冬泉.Windows CE實用開發(fā)技術(shù)\\.北京:電子工業(yè)出版社,2006.

[6]杜春雷.ARM體系結(jié)構(gòu)與編程\\.北京:清華大學(xué)出版社,2003.

[7][英]Steve Furber.ARM SoC體系結(jié)構(gòu)\\.田澤,譯.北京:北京航空航天大學(xué)出版社,2002.

[8]微軟公司.Microsoft Windows CE設(shè)備驅(qū)動程序開發(fā)指南\\.北京:北京希望電子出版社,1999.

[9]尤晉元,史美林.Windows 操作系統(tǒng)原理\\.北京:機械工業(yè)出版社,2001.

[10]傅曦.Windows CE嵌入式開發(fā)入門\\.北京:人民郵電出版社,2006.

作者簡介

張 彬 男,1982年出生,碩士研究生。研究方向為嵌入式系統(tǒng)設(shè)計。

左成兵 男,1982年出生,碩士研究生。研究方向為電路與系統(tǒng)、嵌入式系統(tǒng)設(shè)計。

黃少珉 男,1980年出生,博士研究生。研究方向為嵌入式系統(tǒng)低功耗技術(shù)。

主站蜘蛛池模板: 丁香六月激情综合| 亚洲中文精品人人永久免费| 精品無碼一區在線觀看 | 中文字幕 欧美日韩| 国产精品无码一区二区桃花视频| 精品福利视频网| 亚洲成人高清无码| 精品国产香蕉伊思人在线| 手机在线免费不卡一区二| 国产乱人激情H在线观看| 国产黄网站在线观看| 久热这里只有精品6| 亚洲欧美不卡视频| 黄色在线不卡| 青青草国产一区二区三区| 在线国产毛片手机小视频| 秋霞国产在线| 午夜天堂视频| 亚洲日本中文综合在线| 亚洲成在人线av品善网好看| а∨天堂一区中文字幕| 亚洲精品无码抽插日韩| 国产麻豆aⅴ精品无码| 国产精品不卡永久免费| 国产精品永久免费嫩草研究院| 熟女成人国产精品视频| 精品视频第一页| 97视频免费在线观看| 人妻无码中文字幕第一区| 日本色综合网| 国产亚洲精品97在线观看| 九九九久久国产精品| 91国语视频| 亚洲区视频在线观看| 久久无码av三级| 性69交片免费看| 亚洲视频欧美不卡| 天天色综网| 手机在线免费不卡一区二| 成人亚洲天堂| 一区二区在线视频免费观看| 中文无码精品A∨在线观看不卡| 欧美黄网在线| 亚洲无限乱码| 天天综合亚洲| 99久久99视频| 99在线观看免费视频| 伊伊人成亚洲综合人网7777| 成人福利一区二区视频在线| 国产欧美又粗又猛又爽老| 日本一区二区三区精品视频| 国产成人8x视频一区二区| 国产不卡在线看| 亚洲欧美日韩中文字幕在线一区| 成人免费一区二区三区| 亚洲嫩模喷白浆| 青青草一区| 亚洲一级毛片在线观播放| 在线观看国产精品第一区免费| 极品国产一区二区三区| 国产91无码福利在线| 国产欧美日韩精品综合在线| 国产乱码精品一区二区三区中文| 国产真实乱子伦精品视手机观看| 54pao国产成人免费视频| 亚洲精品无码AV电影在线播放| 无码内射中文字幕岛国片| 久久久久无码国产精品不卡| 日本免费a视频| 尤物亚洲最大AV无码网站| 国产经典免费播放视频| 无码日韩精品91超碰| 国产成人成人一区二区| 69免费在线视频| 无码aaa视频| 国内精自视频品线一二区| 国产欧美日韩资源在线观看| 免费a级毛片18以上观看精品| 午夜福利无码一区二区| 国产91蝌蚪窝| 国产成人h在线观看网站站| 午夜一区二区三区|