色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>淺談WinCE系統(tǒng)下BootLoader的開發(fā)

淺談WinCE系統(tǒng)下BootLoader的開發(fā)

2017-11-07 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

 Windows CE.NET是微軟公司嵌入式領(lǐng)域推出的一款操作系統(tǒng)。它最大程度繼承了桌面版Windows操作系統(tǒng)的豐富功能,同時(shí)又副入了許多新特性,以適應(yīng)嵌入式領(lǐng)域的實(shí)際情況和要求。無論是商業(yè)應(yīng)用需求,還是人們的多媒體消費(fèi)需求,都能被采用CE操作系統(tǒng)的設(shè)備很輕松的滿足。最新的.NET版本較之3.0版本,在實(shí)時(shí)性和穩(wěn)定性上有大幅度提高,開始廣泛地被平板電腦數(shù)碼相機(jī)、彩屏手機(jī)、PDA等多種高性能產(chǎn)品所采用。
  但是,CE并不是一個(gè)通用的安裝版操作系統(tǒng),在形形色色的嵌入式硬件設(shè)備世界里, 一款CE系統(tǒng)通常只會(huì)針對(duì)某一種硬件平臺(tái)生成。所以,作為原始設(shè)備生產(chǎn)商,必須根據(jù)自己的硬件平臺(tái)和應(yīng)用場合定制CE,最主要的工作就是編寫適合于自己的板級(jí)支持包(BSP)。在BSP中,包含了一個(gè)重要的組成部分——BootLoader。創(chuàng)建一未功能完善的BootLoader,是開發(fā)WinCE系統(tǒng)的第一步,也是極為關(guān)鍵的一步。本文將結(jié)合開發(fā)實(shí)例,介紹如何開發(fā)適合于自己硬件的BootLoader。
  1 定制CE操作系統(tǒng)的基本知識(shí)
  定制CE操作系統(tǒng)是采用微軟的工具軟件:Platform Builder(PB)。該工具能夠根據(jù)用戶的需求,選擇構(gòu)建具有不同內(nèi)核功能的CE系統(tǒng)。同時(shí),它也是一個(gè)集成的編譯環(huán)境,可以為所有CE支持的CPU目標(biāo)代碼編譯C/C++程序。前面所說的BSP和BootLoader程序就是在該環(huán)境下編譯,并整合到CE系統(tǒng)中去的。一旦成功地編譯了一個(gè)CE系統(tǒng),就會(huì)得到一個(gè)名為nk.bin的映像文件。只要將該文件下載到目標(biāo)平臺(tái)(device端),就能夠運(yùn)行CE了。
  2 BootLoader
  BootLoader是一段單獨(dú)的程序代碼,它存放于目標(biāo)平臺(tái)的非易失存儲(chǔ)介質(zhì)中,如ROM或Flash。在開發(fā)CE的過程中,它主要用于啟動(dòng)硬件和下載nk.bin到目標(biāo)板上,并有一定的監(jiān)控作用。
  一般來說,對(duì)于BootLoader的功能要求并不是嚴(yán)格定義的,不同的場合區(qū)別很大。比如,在PC的硬件平臺(tái)上,由于硬件啟動(dòng)根本就不是通過BootLoader(而是通過BIOS),所以BootLoader就不需要對(duì)CPU加電后的初始化做任何工作;而在筆者的開發(fā)平臺(tái)(MIPS32)上,BootLoader是最先被執(zhí)行的程序,所以就必須包括加電初始化程序。通常,BootLoader必須包含下載CE映像文件的功能。另外,管理監(jiān)控硬件設(shè)備通常也是必須的,因?yàn)檫@可以極大地方便工程開發(fā)。由于BootLoader涉及到基本的硬件操作,如CPU的結(jié)構(gòu)、指令等,同時(shí)又涉及到以太網(wǎng)下載協(xié)議(TFTP,當(dāng)然也可能通過串口)和策軟設(shè)定的映像文件格式。因此從零實(shí)現(xiàn)的話,會(huì)需要相當(dāng)長的過程。好在微軟為每種類型的CPU都提供了某種標(biāo)準(zhǔn)開發(fā)板的BootLoader例程,因此通常的做法是:從這些例程中尋找與硬件平臺(tái)最接近的作為標(biāo)本程序,然后再從自己的硬件平臺(tái)上入手做相應(yīng)的改動(dòng)。一些新的評(píng)估板可能會(huì)由第三方的廠商來提供Bootloader。如果硬件平臺(tái)是從這樣的基板設(shè)計(jì)而來的話,那么最好去尋求這些廠商獲取Bootloader來移植,以減少工作量。
  筆者使用的硬件平臺(tái)基于MIPS32架構(gòu),下載端口采用的是以太網(wǎng)口,同時(shí)還具備一個(gè)串口,主機(jī)相連,通過超級(jí)終端對(duì)該平臺(tái)加以控制。該平臺(tái)是參考AMD的一款標(biāo)準(zhǔn)估計(jì)板設(shè)計(jì)的,BootLoader以該板的BootLoader為參考進(jìn)行了移植。
  3 編寫B(tài)ootLoader源程序
  前面已經(jīng)提到,由于硬件的不同,BootLoader的功能可能有多有少,此處筆者以自己開發(fā)BootLoader的過程進(jìn)行敘述。
  3.1 啟動(dòng)部分
  首先要實(shí)現(xiàn)初臺(tái)化硬件的功能。在參考板的BootLoader目錄下,會(huì)發(fā)現(xiàn)一些.s文件,可能會(huì)是init.s或者是reset.s等,這樣的文件是CPU加電后最先執(zhí)行的代碼。由于此處是用匯編語言編寫的,所以與CPU關(guān)系緊密。一般參考板的CPU與開發(fā)平臺(tái)的CPU會(huì)是相同或者是同一個(gè)架構(gòu)的。筆者使用的是屬于同一種CPU的情況,所以對(duì)寄存器的定義和初始化流程都可以不加改動(dòng)。接著就是對(duì)于平臺(tái)配置的分析,包括平臺(tái)存儲(chǔ)空間的分配、外圍設(shè)備的工作設(shè)定等。一般這里的區(qū)別是非常大的。所以必須要對(duì)CPU寄存器的值作相應(yīng)設(shè)定。這部分工作可能需要CPU提供商方面的幫助。
  應(yīng)該說,這部分工作是BootLoader的一大重點(diǎn),但由于和實(shí)際的硬件非常大,所以不可能做進(jìn)一步的詳細(xì)敘述。
  3.2 主控部分
  從這一部分開始,均用C語言編寫。
  為了增加BootLoader對(duì)平臺(tái)的控制,一般BootLoader都會(huì)設(shè)計(jì)成支持命令輸入的方式,通過串口來接收用戶的命令。這種機(jī)制中,如果參考板有Loader支持的話,那么可以自己添加有實(shí)用價(jià)值的命令,完成一些需要的功能。
  一般在平臺(tái)調(diào)試完畢后,可以在不用人工干預(yù)的情況下自動(dòng)加載CE(這也是BootLoader必需的功能之一);而在調(diào)試階段,基本上是通過Loader所支持的命令來進(jìn)行操作的。提供足夠豐富的命令,能極大簡化和全面測試開發(fā)平臺(tái)。如表1所列,是筆者Loader所提供的命令。
  命 令說 明
  Help列出所有支持的命令并加以說明
  Eboot從開發(fā)臺(tái)下載CE映像并加載
  Write向某一內(nèi)存地址寫入數(shù)據(jù)
  Read顯示某一內(nèi)存地址的數(shù)據(jù)
  Jump跳轉(zhuǎn)到某一地址執(zhí)行程序
  Xmodem從計(jì)算機(jī)的超級(jí)終端接收以Xmodem協(xié)議傳送的文件
  Toy測試平臺(tái)CPU的計(jì)數(shù)器是否運(yùn)轉(zhuǎn)
  Flash擦除或者更新Flash中的數(shù)據(jù)
  Tlbread顯示CPU的所有TLB表
  Tlbwrit設(shè)置CPU的TLB
  Macaddr設(shè)置CPU的MAC地址
  Seti設(shè)置平臺(tái)的IP地址
  表1
  這些命令涉及到平臺(tái)調(diào)試的各個(gè)方面,像內(nèi)存檢測、Flash操作、文件下載等。借助于這些命令,不僅可以完成硬件平臺(tái)的部分測試,還完成了作為CE的BootLoader程序最為重要的一個(gè)功能——下載CE映像。
  3.3 下載部分
  在用Platform Builder編譯生成CE的映像文件后,接下來就需要將該文件下載到目標(biāo)板上。如果說硬件調(diào)試功能可以由其它的程序代替而不放入BootLoader中,但是下載映像文件卻是BootLoader必需的功能。
  CE映像文件通常叫做nk.bin,它是Windows CE二進(jìn)制數(shù)據(jù)格式文件,不僅包含了有效的程序代碼,還有按照一定規(guī)則加入的控制信息。當(dāng)然,也可以選擇生成.sre格式的代碼文件,但是相于對(duì)前一種格式,它的代碼要長很多,所需要的下載時(shí)間也更長。在這里,我們以下載.bin格式的文件來說明下載的實(shí)現(xiàn)。
  首先看一下圖3所示的BootLoader下載部分的流程圖。
  通常,在Platform Builder自帶的代碼中,會(huì)包含完成TFTP連接的了基本的函數(shù)。
  *初始化TFTP連接:用函數(shù)EbootInitTFtp()和EbootInitTFtpd()完成。
  *登記解析.bin格式數(shù)據(jù)的回調(diào)函數(shù):用EbootTFtpdServerRegister()完成。
  *發(fā)出連接請(qǐng)求:用EbootSendBootme()完成。
  *接收主機(jī)端發(fā)出的數(shù)據(jù)包:用EbootTFtpReceiver()完成。
  在這里,需要重點(diǎn)說明的有兩點(diǎn)。
  ①對(duì)于接收數(shù)據(jù)包的函數(shù)EbootTFtpReceiver(),它只能處理已經(jīng)存入內(nèi)存的以太網(wǎng)包,也就是說,從以太網(wǎng)控制器接收數(shù)據(jù)的功能必須要用戶去完成。由于這一功能與硬件密切相關(guān),所以不能使用PB自帶的函數(shù)來完成。
  ②函數(shù)EbootTFtpdServerRegister()會(huì)登記一個(gè)回調(diào)函數(shù),一般用戶可以自己定義這個(gè)函數(shù),該函數(shù)用于完成,bin格式數(shù)據(jù)的解析和保存,有效數(shù)據(jù)至目的地RAM。PB有自帶的例程函數(shù)可作參考。一般來說,如果目的地就是RAM的話,直接參考例程函數(shù)即可。但是如果目的地就是Flash,不要直接存入Flash(字為單位),應(yīng)先存入內(nèi)存中待下載完畢以后再導(dǎo)入Flash。當(dāng)然,這種方法必須要有足夠的內(nèi)存。如果沒有足夠的內(nèi)存,也可以緩存部分?jǐn)?shù)據(jù)后,分段寫入Flash。
  3.4 支持DOC
  對(duì)于WinCE操作系統(tǒng)而言,豐富的多媒體功能是其一大特點(diǎn),使其成為當(dāng)前消費(fèi)類電子產(chǎn)品操作系統(tǒng)中的一個(gè)不錯(cuò)選擇。但是隨之而來的問題是,系統(tǒng)的容易已經(jīng)大大超過出了傳統(tǒng)嵌入式系統(tǒng)上百KB的數(shù)量級(jí)。一般來說,如果選擇了圖形界面和漢語支持,容量一般會(huì)超過16MB。DOC(Disk On Chip)則提供了一種相對(duì)廉價(jià)的大存儲(chǔ)容量的解決方案。
  DOC本質(zhì)上是一種加以軟件控制的NAND格式的Flash,通過TFFS這一軟件層提供對(duì)WinCE的支持。
  由于DOC不能像內(nèi)存一樣被直接訪問,所以其加載WinCE的過程有些特殊,必須要在BootLoader中加入專門的代碼,才能使用DOC來存放WinCE映像文件。
  為了說明怎樣在Loader文件中提供對(duì)DOC的支持,先看一下如何采用DOC系統(tǒng)啟動(dòng)CE,如圖4所示。從圖4可以看出,當(dāng)采用DOC作為存儲(chǔ)體的時(shí)候,實(shí)際上是在啟動(dòng)的時(shí)候把映像文件拷貝到內(nèi)存中執(zhí)行。為了實(shí)現(xiàn)這一啟動(dòng)過程,就必須涉及到DOC的讀寫操作。首先要從M-SYSTEM的網(wǎng)站上獲取DOC的BOOT軟件開發(fā)包。在這個(gè)開發(fā)包里,提供了一系列DOC的操作函數(shù)。將此開發(fā)包嵌入到CE的BootLoader中去,然后按照?qǐng)D4的步驟,調(diào)用相應(yīng)的讀寫函數(shù)完成這一過程。對(duì)于開發(fā)包中相關(guān)函數(shù)的說明,筆者就不具體介紹了,可以參考開發(fā)包的說明文檔。
  4 BootLoader的編譯、鏈接和下載
  BootLoader程序可以通過PB的集成編譯環(huán)境編譯鏈接,控制文件為.bib文件,下面是一個(gè)簡單的BootLoader的.bib文件。
  MEMORY
  CLI 9fc00000 00050000 RAMIMAGE
  RAM 80080000 00070000 RAM
  CONFIG
  COMPRESSION=ON
  SRE=ON
  ROMSTART=9fc00000
  ROMSIZE=00020000
  ROMWIDTH=32
  ROMOFFET=000000
  MODULES
  Nk.exe $(_FLATRELEASEDIR).exe CLI
  MEMORY部分定義了生成的映像文件的目標(biāo)地址,以及程序運(yùn)行可以使用的內(nèi)存空間。
  CONFIG部分:COMPRESSION是否對(duì)目標(biāo)代碼進(jìn)行壓縮;SRE是否生成格式為sre的目標(biāo)代碼;ROMSTART與ROMSIZE、ROMWIDTH、ROMOFFSET共同定義了開發(fā)平臺(tái)上存放BootLoader物理介質(zhì)的起始地址、大小、寬度和偏移量。
  MODULES部分定義了BootLoader所包含的文件,一般就只有一個(gè)文件:cli.exe。
  編譯過程中,首先用命令build-c編譯生成文件cli.exe,然后用romimage cli.bib命令產(chǎn)生最后的映像文件cli.sre。
  對(duì)于BootLoader文件的下載;有很多種方法:可以通過仿真器下載;也可以通過其它調(diào)試程序下載;還可以直接燒寫到Flash中。需要說明的一點(diǎn)是,這些方法可能會(huì)要求不同的映像格式。在PB環(huán)境下,可以生成的有.sre格式、純二進(jìn)制格式(用于直接燒寫Flash)以及和CE映像一樣的.bin格式。
  結(jié)語
  從CE的BootLoader開發(fā)流程可以看出,BootLoader在完成下載CE映像和加載映像的主要功能外,還具有一些調(diào)試硬件的功能。當(dāng)然,這些功能不是必需的,隨不同的用戶可能有自己的定義。但是不管Loader的功能設(shè)計(jì)得多么簡單或者是多么復(fù)雜,都是在開發(fā)CE系統(tǒng)中不可跳過的一環(huán)。實(shí)際上,由于Loader有和CE系統(tǒng)交互數(shù)據(jù)的區(qū)域,所以還有對(duì)CE啟動(dòng)過程的控制作用,也是PB控制目標(biāo)板CE啟動(dòng)的一個(gè)窗口。可以說,一個(gè)功能齊全的Loader,不論是對(duì)調(diào)試硬件,還是控制和檢測CE系統(tǒng),甚至是成為產(chǎn)品之后的維護(hù)工作,都是大有幫助的。
  編寫B(tài)ootLoader是開發(fā)WinCE系統(tǒng)第一步,也是關(guān)鍵的一步。只有得到一個(gè)穩(wěn)定工作的Loader程序,才能夠更進(jìn)一步開發(fā)WinCE的BSP,直至最后整個(gè)系統(tǒng)的成功。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 亲嘴扒胸摸屁股视频免费网站 | 寂寞夜晚在线视频观看 | 色欲AV人妻精品麻豆AV | 囯产免费精品一品二区三区视频 | 女性BBWBBWBBWBBW| 一个人免费视频在线观看高清频道 | 国产成人无码精品久久久免费69 | 在线 亚洲 日韩 欧洲视频 | 处破女免费播放 | 精品久久久久中文字幕加勒比东京热 | 亚洲国产成人精品久久久久 | 美女扒开腿让男生桶爽免费APP | 亚洲精品久久一区二区三区四区 | 婷婷亚洲AV色香蕉蜜桃 | 巨胸美乳中文在线观看 | 欲香欲色天天影视大全 | 暖暖视频 免费 高清 日本8 | 亚洲综合免费视频 | xfplay 无码专区 亚洲 | 国产视频www | 亚洲 日韩 自拍 视频一区 | 国产精品免费观看视频播放 | 欧美18videosex性欧美老师 | 精品久久久噜噜噜久久久app | 日本特黄的免费大片视频 | 亚洲AV久久无码高潮喷水 | 观赏女性排尿 | 毛片内射久久久一区 | 色综合99久久久国产AV | 亚洲视频无码高清在线 | 久久99AV无色码人妻蜜 | 护士的下面又湿又紧10P | 99久久精品一区二区三区 | SAO货腿张开JI巴CAO死我 | 国产精品久人妻精品 | 闺蜜撬开我的腿用黄瓜折磨我 | 真实国产熟睡乱子伦对白无套 | 国产产乱码一二三区别免费 | 欧美一区二区VA毛片视频 | 精选国产AV精选一区二区三区 | 亚洲 欧美无码原创区 |