久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区


曙海教育集團論壇Win CE 專區Wince技術討論區 → WinCE系統下BootLoader的開發


  共有6065人關注過本帖樹形打印

主題:WinCE系統下BootLoader的開發

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
WinCE系統下BootLoader的開發  發帖心情 Post By:2010-11-16 8:47:38

摘要:介紹WinCE.NET系統的舊方法;說明板級支持包(BSP)的基本構成;從開發實際出發,詳細闡述如何開發BSP中的重要部件--BootLoader。
    關鍵詞:WinCE.NET BSP BootLoader DOC

引言

Windows CE.NET是微軟公司向嵌入式領域推出的一款操作系統。它最大程度繼承了桌面版Windows操作系統的豐富功能,同時又副入了許多新特性,以適應嵌入式領域的實際情況和要求。無論是商業應用需求,還是人們的多媒體消費需求,都能被采用CE操作系統的設備很輕松的滿足。最新的.NET版本較之3.0版本,在實時性和穩定性上有大幅度提高,開始廣泛地被平板電腦、數碼相機、彩屏手機、PDA等多種高性能產品所采用。

但是,CE并不是一個通用的安裝版操作系統,在形形色色的嵌入式硬件設備世界里, 一款CE系統通常只會針對某一種硬件平臺生成。所以,作為原始設備生產商,必須根據自己的硬件平臺和應用場合定制CE,最主要的工作就是編寫適合于自己的板級支持包(BSP)。在BSP中,包含了一個重要的組成部分——BootLoader。創建一未功能完善的BootLoader,是開發WinCE系統的第一步,也是極為關鍵的一步。本文將結合開發實例,介紹如何開發適合于自己硬件的BootLoader。

1 定制CE操作系統的基本知識

定制CE操作系統是采用微軟的工具軟件:Platform Builder(PB)。該工具能夠根據用戶的需求,選擇構建具有不同內核功能的CE系統。同時,它也是一個集成的編譯環境,可以為所有CE支持的CPU目標代碼編譯C/C++程序。前面所說的BSP和BootLoader程序就是在該環境下編譯,并整合到CE系統中去的。一旦成功地編譯了一個CE系統,就會得到一個名為nk.bin的映像文件。只要將該文件下載到目標平臺(device端),就能夠運行CE了。

2 BootLoader

BootLoader是一段單獨的程序代碼,它存放于目標平臺的非易失存儲介質中,如ROM或Flash。在開發CE的過程中,它主要用于啟動硬件和下載nk.bin到目標板上,并有一定的監控作用。

圖1描述了WinCE的BSP基本結構以及BootLoader所處的位置。

一般來說,對于BootLoader的功能要求并不是嚴格定義的,不同的場合區別很大。比如,在PC的硬件平臺上,由于硬件啟動根本就不是通過BootLoader(而是通過BIOS),所以BootLoader就不需要對CPU加電后的初始化做任何工作;而在筆者的開發平臺(MIPS32)上,BootLoader是最先被執行的程序,所以就必須包括加電初始化程序。通常,BootLoader必須包含下載CE映像文件的功能。另外,管理監控硬件設備通常也是必須的,因為這可以極大地方便工程開發。由于BootLoader涉及到基本的硬件操作,如CPU的結構、指令等,同時又涉及到以太網下載協議(TFTP,當然也可能通過串口)和策軟設定的映像文件格式。因此從零實現的話,會需要相當長的過程。好在微軟為每種類型的CPU都提供了某種標準開發板的BootLoader例程,因此通常的做法是:從這些例程中尋找與硬件平臺最接近的作為標本程序,然后再從自己的硬件平臺上入手做相應的改動。一些新的評估板可能會由第三方的廠商來提供Bootloader。如果硬件平臺是從這樣的基板設計而來的話,那么最好去尋求這些廠商獲取Bootloader來移植,以減少工作量。

筆者使用的硬件平臺基于MIPS32架構,下載端口采用的是以太網口,同時還具備一個串口,主機相連,通過超級終端對該平臺加以控制。該平臺是參考AMD的一款標準估計板設計的,BootLoader以該板的BootLoader為參考進行了移植。

3 編寫BootLoader源程序

前面已經提到,由于硬件的不同,BootLoader的功能可能有多有少,此處筆者以自己開發BootLoader的過程進行敘述。圖2是筆者BootLoader的工程流程。

3.1 啟動部分

首先要實現初臺化硬件的功能。在參考板的BootLoader目錄下,會發現一些.s文件,可能會是init.s或者是reset.s等,這樣的文件是CPU加電后最先執行的代碼。由于此處是用匯編語言編寫的,所以與CPU關系緊密。一般參考板的CPU與開發平臺的CPU會是相同或者是同一個架構的。筆者使用的是屬于同一種CPU的情況,所以對寄存器的定義和初始化流程都可以不加改動。接著就是對于平臺配置的分析,包括平臺存儲空間的分配、外圍設備的工作設定等。一般這里的區別是非常大的。所以必須要對CPU寄存器的值作相應設定。這部分工作可能需要CPU提供商方面的幫助。

應該說,這部分工作是BootLoader的一大重點,但由于和實際的硬件非常大,所以不可能做進一步的詳細敘述。

3.2 主控部分

從這一部分開始,均用C語言編寫。

為了增加BootLoader對平臺的控制,一般BootLoader都會設計成支持命令輸入的方式,通過串口來接收用戶的命令。這種機制中,如果參考板有Loader支持的話,那么可以自己添加有實用價值的命令,完成一些需要的功能。

從圖2中可以看出,一般在平臺調試完畢后,可以在不用人工干預的情況下自動加載CE(這也是BootLoader必需的功能之一);而在調試階段,基本上是通過Loader所支持的命令來進行操作的。提供足夠豐富的命令,能極大簡化和全面測試開發平臺。如表1所列,是筆者Loader所提供的命令。

表1

命   令 說      明

Help 列出所有支持的命令并加以說明
Eboot 從開發臺下載CE映像并加載
Write 向某一內存地址寫入數據
Read 顯示某一內存地址的數據
Jump 跳轉到某一地址執行程序
Xmodem 從計算機的超級終端接收以Xmodem協議傳送的文件
Toy 測試平臺CPU的計數器是否運轉
Flash 擦除或者更新Flash中的數據
Tlbread 顯示CPU的所有TLB表
Tlbwrit 設置CPU的TLB
Macaddr 設置CPU的MAC地址
Seti 設置平臺的IP地址

這些命令涉及到平臺調試的各個方面,像內存檢測、Flash操作、文件下載等。借助于這些命令,不僅可以完成硬件平臺的部分測試,還完成了作為CE的BootLoader程序最為重要的一個功能——下載CE映像。

3.3 下載部分

在用Platform Builder編譯生成CE的映像文件后,接下來就需要將該文件下載到目標板上。如果說硬件調試功能可以由其它的程序代替而不放入BootLoader中,但是下載映像文件卻是BootLoader必需的功能。

CE映像文件通常叫做nk.bin,它是Windows CE二進制數據格式文件,不僅包含了有效的程序代碼,還有按照一定規則加入的控制信息。當然,也可以選擇生成.sre格式的代碼文件,但是相于對前一種格式,它的代碼要長很多,所需要的下載時間也更長。在這里,我們以下載.bin格式的文件來說明下載的實現。

首先看一下圖3所示的BootLoader下載部分的流程圖。

通常,在Platform Builder自帶的代碼中,會包含完成TFTP連接的了基本的函數。

*初始化TFTP連接:用函數EbootInitTFtp()和EbootInitTFtpd()完成。

*登記解析.bin格式數據的回調函數:用EbootTFtpdServerRegister()完成。

*發出連接請求:用EbootSendBootme()完成。

*接收主機端發出的數據包:用EbootTFtpReceiver()完成。

在這里,需要重點說明的有兩點。

①對于接收數據包的函數EbootTFtpReceiver(),它只能處理已經存入內存的以太網包,也就是說,從以太網控制器接收數據的功能必須要用戶去完成。由于這一功能與硬件密切相關,所以不能使用PB自帶的函數來完成。

②函數EbootTFtpdServerRegister()會登記一個回調函數,一般用戶可以自己定義這個函數,該函數用于完成,bin格式數據的解析和保存,有效數據至目的地RAM。PB有自帶的例程函數可作參考。一般來說,如果目的地就是RAM的話,直接參考例程函數即可。但是如果目的地就是Flash,不要直接存入Flash(字為單位),應先存入內存中待下載完畢以后再導入Flash。當然,這種方法必須要有足夠的內存。如果沒有足夠的內存,也可以緩存部分數據后,分段寫入Flash。

3.4 支持DOC

對于WinCE操作系統而言,豐富的多媒體功能是其一大特點,使其成為當前消費類電子產品操作系統中的一個不錯選擇。但是隨之而來的問題是,系統的容易已經大大超過出了傳統嵌入式系統上百KB的數量級。一般來說,如果選擇了圖形界面和漢語支持,容量一般會超過16MB。DOC(Disk On Chip)則提供了一種相對廉價的大存儲容量的解決方案。

DOC本質上是一種加以軟件控制的NAND格式的Flash,通過TFFS這一軟件層提供對WinCE的支持。

由于DOC不能像內存一樣被直接訪問,所以其加載WinCE的過程有些特殊,必須要在BootLoader中加入專門的代碼,才能使用DOC來存放WinCE映像文件。

為了說明怎樣在Loader文件中提供對DOC的支持,先看一下如何采用DOC系統啟動CE,如圖4所示。從圖4可以看出,當采用DOC作為存儲體的時候,實際上是在啟動的時候把映像文件拷貝到內存中執行。為了實現這一啟動過程,就必須涉及到DOC的讀寫操作。首先要從M-SYSTEM的網站上獲取DOC的BOOT軟件開發包。在這個開發包里,提供了一系列DOC的操作函數。將此開發包嵌入到CE的BootLoader中去,然后按照圖4的步驟,調用相應的讀寫函數完成這一過程。對于開發包中相關函數的說明,筆者就不具體介紹了,可以參考開發包的說明文檔。

4 BootLoader的編譯、鏈接和下載

BootLoader程序可以通過PB的集成編譯環境編譯鏈接,控制文件為.bib文件,下面是一個簡單的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部分定義了生成的映像文件的目標地址,以及程序運行可以使用的內存空間。

CONFIG部分:COMPRESSION是否對目標代碼進行壓縮;SRE是否生成格式為sre的目標代碼;ROMSTART與ROMSIZE、ROMWIDTH、ROMOFFSET共同定義了開發平臺上存放BootLoader物理介質的起始地址、大小、寬度和偏移量。

    MODULES部分定義了BootLoader所包含的文件,一般就只有一個文件:cli.exe。

編譯過程中,首先用命令build-c編譯生成文件cli.exe,然后用romimage cli.bib命令產生最后的映像文件cli.sre。

對于BootLoader文件的下載;有很多種方法:可以通過仿真器下載;也可以通過其它調試程序下載;還可以直接燒寫到Flash中。需要說明的一點是,這些方法可能會要求不同的映像格式。在PB環境下,可以生成的有.sre格式、純二進制格式(用于直接燒寫Flash)以及和CE映像一樣的.bin格式。

結語

從CE的BootLoader開發流程可以看出,BootLoader在完成下載CE映像和加載映像的主要功能外,還具有一些調試硬件的功能。當然,這些功能不是必需的,隨不同的用戶可能有自己的定義。但是不管Loader的功能設計得多么簡單或者是多么復雜,都是在開發CE系統中不可跳過的一環。實際上,由于Loader有和CE系統交互數據的區域,所以還有對CE啟動過程的控制作用,也是PB控制目標板CE啟動的一個窗口。可以說,一個功能齊全的Loader,不論是對調試硬件,還是控制和檢測CE系統,甚至是成為產品之后的維護工作,都是大有幫助的。

編寫BootLoader是開發WinCE系統第一步,也是關鍵的一步。只有得到一個穩定工作的Loader程序,才能夠更進一步開發WinCE的BSP,直至最后整個系統的成功。

支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

返回版面帖子列表

WinCE系統下BootLoader的開發








簽名
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
日韩精品一区二区三区在线播放 | 91蝌蚪porny| 日本一区免费在线观看| 日韩女优毛片在线| 亚洲国产精品一区二区久久恐怖片| 国产成人在线观看免费网站| 亚洲精品视频一二三| 精品99一区二区| 狠狠久久亚洲欧美| 亚洲国产婷婷香蕉久久久久久99 | 国产综合一区二区| 日韩精品成人一区二区在线观看| 久久久蜜桃精品| 国产乱码一区二区三区| 一本到高清视频免费精品| 亚洲日本va在线观看| 99精彩视频在线观看免费| 欧美一区二区三区在线| 久热成人在线视频| 一本久久精品一区二区| 洋洋av久久久久久久一区| 电影午夜精品一区二区三区| 欧美成人国产一区二区| 国产精品一二二区| 欧美人狂配大交3d怪物一区| 蜜桃视频免费观看一区| 一区二区三区国产福利| 一区二区三区欧美在线观看| 国产日韩在线一区二区三区| 久久久久久久国产精品影院| 风间由美性色一区二区三区| 欧美三区在线观看| 久久se这里有精品| 欧洲生活片亚洲生活在线观看| 午夜精品福利视频网站| 亚洲一区二区三区在线观看视频| 亚洲综合色丁香婷婷六月图片| 欧美精品中文字幕一区二区| 综合久久久久综合| 久久av一区二区三区亚洲| 国产精品美女久久久久久2018| www.久久爱.cn| 日本一区二区三区四区 | 欧美一区二区三区在线视频 | 色88888久久久久久影院按摩 | 色婷婷综合中文久久一本| 日本成人在线视频网站| 色婷婷av久久久久久久| 美女视频一区在线观看| 欧美日韩精品一区视频| 国产精华液一区二区三区| 欧美一级国产精品| 91亚洲国产成人精品一区二区三| 久久亚洲精品小早川怜子| 97影院在线午夜| 中文字幕在线观看不卡视频| 欧美高清性xxxxhd | 水蜜桃亚洲精品| 亚洲成va人在线观看| 欧美最猛黑人xxxxx猛交| 久久99精品国产麻豆婷婷洗澡| 欧美日韩精品久久久| 成人午夜电影小说| 国产欧美日韩另类一区| 久久久久一区二区| 日本网站在线观看一区二区三区| 在线中文字幕一区二区| 国产盗摄女厕一区二区三区| 久久视频一区二区| 久久久影院一区二区三区| 亚洲一级二级在线| 欧美三级日韩三级国产三级| 粉嫩绯色av一区二区在线观看| 国产亚洲精品超碰| 欧美精品亚洲| 狠狠久久亚洲欧美| 国产亚洲欧美日韩日本| 日韩aⅴ视频一区二区三区| 免费成人在线视频观看| 精品日韩av一区二区| 美脚丝袜一区二区三区在线观看| 丝袜美腿亚洲一区二区图片| 91精品黄色片免费大全| 国产日韩一区二区三区| 日韩vs国产vs欧美| 欧美xxxxx裸体时装秀| 欧美激情导航| 国产精品影音先锋| 国产精品美女久久久久久久久久久| 日韩电影在线播放| 国产一区二区不卡在线| 国产精品久久久久影院| 欧美在线观看视频在线| av成人午夜| 日本不卡不码高清免费观看| 亚洲精品在线三区| 日韩欧美一区二区三区久久婷婷| 国产一区二三区| 亚洲三级在线免费观看| 欧美精品在线观看一区二区| 国产精品嫩草在线观看| 美女诱惑一区二区| 中文字幕中文字幕在线一区| 欧美色中文字幕| 久久99精品久久久久子伦| 国产乱码精品一区二区三区av | 亚洲三级免费电影| 91麻豆精品国产91久久久久久| 激情久久av| 国产精品亚洲成人| 一个色妞综合视频在线观看| 日韩欧美国产综合一区 | 日韩精品一区国产麻豆| 亚洲欧美成人一区| 97视频热人人精品| 黄色小说综合网站| 一区二区三区不卡视频在线观看| 日韩一级欧美一级| 一区二区三区欧美在线| 福利视频久久| 国产成人av电影免费在线观看| 亚洲一本大道在线| 久久亚洲综合色一区二区三区| 在线视频国内自拍亚洲视频| 国产伦精品一区二区三区视频免费 | 国产视频一区在线播放| 亚洲欧洲精品在线 | 久久日一线二线三线suv| 91国偷自产一区二区三区观看| 国产精品免费一区二区三区四区| 国产一区二区三区国产| 亚洲高清中文字幕| 中文字幕一区三区| 欧美精品一区男女天堂| 欧美日韩成人一区二区| 一级做a爰片久久| 成人av资源网站| 亚洲成av人综合在线观看| 国产在线资源一区| 亚洲日本乱码在线观看| 欧美日韩国产中文| 久久精品人成| 国产乱人伦精品一区二区在线观看| 久久久久国产一区二区三区四区| 性欧美videosex高清少妇| 国产91富婆露脸刺激对白| 亚洲欧美电影院| 日韩一区国产二区欧美三区| 免费影院在线观看一区| 国产iv一区二区三区| 亚洲已满18点击进入久久| 欧美精品一区二区三区高清aⅴ | 日韩一区二区三区在线| 欧美日韩一区二区视频在线观看| 国产麻豆9l精品三级站| 一区二区三区国产精华| 亚洲精品在线观看视频| 色婷婷综合视频在线观看| 国产精品视频一区二区三区经| 紧缚奴在线一区二区三区| 玉足女爽爽91| 国产日韩欧美不卡在线| 欧美日韩亚洲高清一区二区| 欧美二区在线看| 成人免费91在线看| 国产+成+人+亚洲欧洲自线| 天天操天天干天天综合网| 国产精品久久久久久久第一福利| 91精品国产91久久久久久最新毛片 | 国产精品美女久久久久av福利| 国产一区中文字幕| 日韩中文字幕区一区有砖一区| 国产精品理论在线观看| 精品福利一二区| 欧美日韩亚洲另类| 一本色道久久综合亚洲精品按摩| 久久99精品久久久久久久久久| 成人av小说网| 国产一区二区三区久久悠悠色av| 亚洲妇熟xx妇色黄| 亚洲人精品午夜| 国产精品你懂的| 久久久久高清精品| 精品少妇一区二区三区在线播放| 欧美日韩精品欧美日韩精品一综合 | 91视视频在线观看入口直接观看www | 国产精品久久精品视| 不卡的av网站| 国产成人在线看| 国产999精品久久久久久| 久久精品国产99久久6| 日本成人在线视频网站| 日韩成人一区二区三区在线观看| 亚洲一区二区三区视频在线 | 欧美吻胸吃奶大尺度电影 | 一区二区精品在线| 性欧美videosex高清少妇| 日韩一区二区三区资源| 蜜桃传媒视频麻豆第一区免费观看 | 日韩av一二三|