《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > VxWorks移植到AT91RM9200的BSP定制過程
VxWorks移植到AT91RM9200的BSP定制過程
摘要: VxWorks移植到AT91RM9200的BSP定制過程,VxWorks是嵌入式實時操作系統,具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用于通信、航空、航天等高精尖技術及實時性要
Abstract:
Key words :

VxWorks是嵌入式實時操作系統,具有高性能、可裁減性好等特點,能支持多種微處理器(如PowerPC、X85、ARM、SPARC);自問世以來,以其良好的町靠性和卓越的實時性被廣泛地應用于通信、航空、航天等高精尖技術及實時性要求極高的領域中。BSP(Board Support Package,板級支持包)的作用是針對特殊的硬件平臺,為操作系統內核提供操作接口,使操作系統能夠獨立于底層硬件。對上層應用屏蔽具體硬件,VxWorks的高可移植性就是通過BSP實現的。AT91RM9200是Atmel公司生產的一款ARM9核芯片,本文重點介紹將VxWorks移植到該芯片過程中BSP的定制過程。  

1 BSP概念

BSP通常是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設備驅動程序的集合。它所實現的功能包括初始化和驅動部分設備。最基本的BSP僅需要支持處理器復位、初始化、驅動串口和必要的時鐘處理。BSP是相對于操作系統而言的,不同的操作系統對應不同形式的BSP,因此,在寫BSP時一定要按照要求的操作系統對BSP的定義形式來寫。在VxWorks" title="VxWorks">VxWorks系統中,BSP是介于底層硬件環境和VxWorks之間的一個軟件接口,它的主要功能是系統加電后初始化目標機硬件和VxWorks,并提供部分硬件驅動程序。BSP在VxWorks系統中的層次關系如圖1所示。  
  
BSP為各種板卡的硬件功能提供了統一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時鐘和定時器管理、內存地址映射,以及內存分配等。每個BSP還包括一個ROM啟動或其他啟動機制。
  
2 VxWorks的引導過程  

在編寫BSP之前,首先要了解整個系統的啟動過程。VxWorks的映像由代碼段、數據段和BSS段3部分組成。VxWotks內核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區別。

可加載映像包括VxWorks和Boot ROM兩部分內容,兩部分是獨立創建的。首先,由系統引導代碼把ROM引導程序搬到RAM_HIGH_ADRS。然后,ROM引導程序開始運行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉到VxWorks映像裝入點。

基于ROM的VxWorks映像在BSP初始化時,會把lmage完全搬到RAM中執行,包括代碼段和數據段。在拷貝執行完畢后,系統控制權轉移給RAM中VxWorks映像的初始化代碼。

ROM駐留型映像只是將ROM中VxWorks映像的數據段和BSS段拷貝到RAM中,完成后系統控制權轉移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運行。在ROM中運行的VxWorks映像主要足為了節省RAM空間,帶來的不利則是運行速度慢。

圖2和圖3分別是下載型和ROM型VxWorks映像的初始化流程。  


  
下面以ROM型VxWorks內核啟動流程為例,說明各文件的作用:

romlnit()保存啟動類型,屏蔽中斷;初始化內存和寄存器,屏蔽Cache;初始化CPU,將堆棧指針定位于被拷貝Boot ROM映像在RAM的地址;跳到romStart()。

roraStart()根據不同的映像類型將VxWorks映像的不同部分解壓縮

3 VxWorks在AT91RM9200" title="AT91RM9200">AT91RM9200上的BSP設計

3.1 AT91RM9200簡介

AT91RM9200的片上資源包括:ARM920T處理器棱、16KB的內部SRAM和128KB的內部ROM存儲器;支持SDRAM、SRAM、Burst Flash和CompactFlash、SmartMedia以及NANDFlash的無縫連接;16KB的數據Cache,16KB的指令Cache,完全可編程的外部總線接口EBI,4個32位的PIO控制器可以達到122個可編程I/O引腳(每個都有輸入控制、可中斷及開路的輸出能力);帶有8個優先級、可單獨屏蔽中斷源的先進中斷控制器、6組硬件定時器、4個通用同步/異步收發器USART。

3.2 BSP中幾個重要文件的修改

由于AT91RM9200的內核是ARM920T,所以BSP文件主要在VxWorks編澤環境Tornado的目錄target/config/all和target/config/integrator920t文件夾里。其中,a11文件夾里的文件對于絕大多數BSP都是共用的,一般來說不需要修改,特別是“configAll.h”;integrator920t文件夾里的文件就是所要編寫的BSP文件,這些文件往往與系統硬件密切相關。

3.2.1 修改Makeflie

Makefile文件定義編譯和鏈接整個BSP的規則,如編譯工具的選擇、編譯選項和包含文件路徑等;控制生成VxWorks映像文件的類型,同時含有存儲區大小的信息,對于存儲區大小信息的改動必須與Config.h的對應改動同步。有些參數需在該文件中定義,如處理器類型、編譯工具、目標地址等。下面介紹一些須修改的參數和地址:  



3.2.2 修改Config.h

Config.h文件包含了所有頭文件和與CPU相關的特殊定義。VxWorks內核組件的配置由Config.h文件定義。Config.h中的主要修改內容有定義引導行和修改地址。

(1)定義引導行  



其中,mac(O,0)為AT91RM9200芯片中的EMAC設備;host為主機名;VxWorks為要下載的文件名;h為主機IP地址;e為目標板IP地址;u為用戶名;pw為密碼;tn為目標板名稱。

(2)修改地址

該文件中的地址定義,如ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADR、SRAM_HIGH_SIZE等要與Makefik文件中的相關定義一致。本設計中代碼段存儲在連接ARM芯片外部片選CSO上的Flash里面,基地址為Oxl0000000,因此.定義如下:  


VxWorks的缺省配置由configAll.h來確定。一般來說,缺省配置的設置與自行開發的硬件系統的配置不同,用戶可通過Cotlfig.h來改變缺省配置。用戶須查看configAll.h,并在Config.h中將不需要的軟硬件配置和初始化去掉。例如,缺省配置中一般包含浮點處理器,而AT9lRM9200中沒有浮點寄存器,因此就要刪掉相關配置。

3.2.3 修改integrator920t.c

該文件中設置所有非可選的、與AT91RM9200芯片相關的信息,如各硬件相關寄存器的地址定義,設備寄存器中對應位的定義,各硬件中斷矢量和中斷優先級的定義,DBUG和USART的控制,網口的定義,系統時鐘和輔助時鐘參數設置等。VxWorks所要使用的目標板包含設備的驅動程序頭文什應當包含在該文件的開始。該文件中的各項宏定義均是基于AT91RM9200芯片的,并根據具體要求定義。例如,電源管理控制器中用到兩個鎖相環PLLA和PLLB,對它們的部分參數設定代碼如下:  

3 2.4 修改rornlnit.s

該文件包含引導ROM和基于ROM的VxWorks映像的入口初始化匯編代碼。入口點為romInit()函數,是系統加電啟動后首先執行的代碼。主要功能是:保存啟動類型,使處理器復位;初始化Flash和SDRAM;設置MMU到已知狀態;指令Cache使能;初始化MMU控制寄存器(指令32位、數據32位、寫緩沖使能);開漏寫緩沖,并且使指令和數據Cache都兀效;通過設置CPSR的IRQ禁止位、FIR禁止位和先進中斷控制器AIC中的中斷禁止寄存器來屏蔽中斷,跳轉到bootInit.c中的rom-Start(),同時傳遞啟動類型。其中,中斷屏蔽代碼如下:  


在調試這段代碼時,由于串口和網口都沒有啟動,因此只能通過點燈程序來跟蹤程序的執行情況,設置不同的LED亮來顯示程序執行到哪一步。例如,如果要并行輸入/輸出口C的32位中的第15位亮,則可以編程為;  


在編寫本文件時,需要注意的地方是:不要在該文件里進行過多的初始化操作,大部分硬件初始化操作在sysLib.c文件中的sysHwInit()函數中進行。

3.2.5 修改sysLib c

sysLib.c是BSP初始化的核心代碼。在這個文件中,必須復位所有的硬件,使其處于初始化狀態,保證后面開中斷后不會產生假中斷。這個文件包含了由目標機體系結構決定的、與系統有關的C程序。這些C程序提供板級接口?;谶@些接口,VxWorks和應用程序的構造與系統無關。該文件的功能包括:定義了RRAM、SRAM、ROM、外部片選芯片的物理地址和虛擬地址;定義中斷優先級寄存器中各個位對應的優先級;調用sysHwInit()初始化串口和網口,安裝IRQ/SVC中斷堆棧分配程序;總線中斷功能等。本文件中有兩個重要的函數:sysHwInit()和sysHwInit2()。sysHwInit()的代碼如下:  


sysHwInit2()用來連接系統中斷,安裝ISR,進行其他配置。它在初始化系統時鐘時,由sysClkConnect()調用,主要用來初始化中斷庫和中斷驅動,安裝系統時鐘和輔助時鐘的中斷以及串口等設備的中斷。
  
4 編譯生成映像

系統定制完成后,有兩種編譯方式:一種是在Tornado下進行編譯,生成映像文件;另一種是直接用Make工具編譯,但要寫好腳本文件。裝載到目標板中的VxWorks映像取決于使用的下載方式,其中主要包括以下幾種:

①VxWorks。這是基于RAM的映像,VxWorks需要通過目標板上的引導程序從串口或網口把它下載到目標板的RAM中運行。在Tornado開發環境下,這是一個默認選項,主要用在調試階段。使用宿主機上的WindSh工具和符號表。
②VxWorks.st。這也是基于RAM的映像,需要通過引導ROM把VxWorks映像下載到目標機內存中才能執行。該對象文件內置符號表。  
③VxWorkS_rom。這是一個非壓縮、基于ROM的映像。在這個對象文件執行前,先把自己拷貝到目標機RAM中。這種類型的映像通常在啟動階段速度比較慢,因為代碼在ROM中執行,但執行階段比ROM駐留型的映像要快。
④VxWorks.st_rom。這是基于ROM壓縮的VxWorks映像。它在執行前先把自己解壓并拷貝到目標機RAM中執行。
⑤VxWorks.res_rom。這是ROM駐留型的非壓縮VxWorks的映像。它在執行前把數據段拷貝到目標機RAM中。這種類型的映像在啟動階段比較快,但在目標機上執行的速度比基于ROM類型的映像慢(因為CPU訪問ROM比訪問RAM要慢)。通常在RAM空間比較小的目標機上使用這種類型的映像。  

5 需要注意的問題

首先,應該避免在romInit.s中進行過多的初始化操作。該史件中只是進行必要的最小硬件初始化,大部分硬件的初始化都是在sysHwInit()中完成的。另外,romTnit.s中的代碼不應當被其他模塊或函數調用。

其次,應該避免sysAlib.s中工作太少。BSP開發人員通常錯誤地認為在romInit.s里初始化過的設備不需要在sysAlib.s中重新初始化。實際上,VxWorks映像并不認為它是由引導映像程序引導的,因此,它必須重新設置和初始化所有它自己需要使用的設備。sysInit()是該文件中最主要的一個函數,也是第一個函數。該例程中很多工作與romInit()是相同的,目的是保證內核映像在運行與冷啟動時,軟硬件環境高度一致。

最后,對特定的BSF。驅動程序的修改,只能在特定的BSP目錄下。此設計中目錄為target/config/integra-tor920t,不要直接在target/src/drv以及target/h/drv中修改。只有風河公司的源程序才能存放在這些目錄下。  

6 結論

本文在介紹BSP的概念、作用和vxWorks映像分類以及系統啟動流程的基礎上,以Atmel公司生產的ARM9處理器AT91RM9200為例,重點介紹了VxWorks的BSP設計中需要修改的幾個重要文件,最后提出了需要注意的問題。盡管目標板硬件不同,BSP的實現也不盡相同,但基本思想是一樣的。本設計對各類開發板的系統移植和后續的應用程序開發有一定的參考價值。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美一区中文字幕| 激情久久五月天| 久久久久久香蕉网| 欧美日韩国产成人在线观看| 亚洲国产精品一区二区第四页av| 亚洲激情第一区| 午夜精品一区二区三区在线| 久久一区二区视频| 午夜精品久久久久久久久久久久久| 亚洲美女在线视频| 国产精品亚洲人在线观看| 在线观看欧美日韩| 尤物在线观看一区| 女女同性精品视频| 久久国产精品久久国产精品| 牛夜精品久久久久久久99黑人| 欧美在线首页| 欧美成人一区在线| 久久高清一区| 亚洲精品一线二线三线无人区| 国产精品日韩电影| 一区二区三区高清在线观看| 欧美亚洲视频| 国产午夜精品一区二区三区视频| 亚洲一区二区视频在线| 亚洲毛片在线观看| 欧美日韩dvd在线观看| 欧美三级特黄| 欧美新色视频| 一区二区在线看| 欧美午夜女人视频在线| 国产精品ⅴa在线观看h| 一区二区视频免费在线观看| 在线看片欧美| 国产在线国偷精品产拍免费yy| 久久精品国产一区二区电影| 欧美四级剧情无删版影片| 狠狠综合久久| 久久大香伊蕉在人线观看热2| 国产主播在线一区| 狠狠色噜噜狠狠狠狠色吗综合| 国产一区二区成人| 欧美区高清在线| 在线播放豆国产99亚洲| 国产精品美女久久| 国产精品v欧美精品v日韩| 亚洲老司机av| 国产精品三上| 欧美一区二区三区免费观看| 国产精品国产三级国产专播精品人| 久久综合久久美利坚合众国| 国产精品男gay被猛男狂揉视频| 欧美色精品天天在线观看视频| 欧美一区二区成人| 免费一级欧美片在线观看| 亚洲狠狠婷婷| 欧美在线观看你懂的| 欧美在线电影| 黑人一区二区三区四区五区| 久久一区亚洲| 国产欧美日韩综合一区在线观看| 欧美亚洲综合网| 国产精品视频男人的天堂| 狠狠色丁香婷综合久久| 9i看片成人免费高清| 在线亚洲精品福利网址导航| 亚洲精品中文字| 在线一区视频| 国产欧美精品在线观看| 欧美日韩午夜在线| 亚洲视频电影在线| 欧美一级视频一区二区| 亚洲自拍偷拍一区| 久久一日本道色综合久久| 国产精品免费看| 欧美日韩国产一区| 亚洲人成啪啪网站| 亚洲一二三区视频在线观看| 一区二区日韩精品| 亚洲手机成人高清视频| 亚洲精品免费看| 国产精品一区二区久久精品| 亚洲精品国产欧美| 精品动漫3d一区二区三区| 亚洲一区二区3| 国产亚洲一区二区三区在线观看| 国产精品久久999| …久久精品99久久香蕉国产| 麻豆精品一区二区av白丝在线| 一本一本大道香蕉久在线精品| 性欧美办公室18xxxxhd| 韩日欧美一区二区| 欧美激情视频免费观看| 欧美激情精品久久久久久| 久久综合久久久久88| 亚洲欧美国产制服动漫| 欧美 日韩 国产精品免费观看| 一区二区在线免费观看| 亚洲高清123| 久久国产精品黑丝| 伊人成人网在线看| 亚洲美女视频在线观看| 国产精品免费小视频| 欧美日韩亚洲综合一区| 美女视频黄 久久| 狂野欧美激情性xxxx欧美| 国内偷自视频区视频综合| 欧美激情成人在线| 国语对白精品一区二区| 久久在线视频在线| 国产欧美一区二区三区视频| 亚洲欧美精品在线| 欧美激情亚洲自拍| 精品91在线| 狠狠色丁香婷婷综合久久片| 亚洲天堂免费观看| 一区视频在线看| 欧美一级片久久久久久久| 国产精品igao视频网网址不卡日韩| 亚洲一区二区在线免费观看视频| 国产精品视频第一区| 国产欧美精品日韩区二区麻豆天美| 欧美激情bt| 欧美高清在线播放| 欧美激情中文字幕一区二区| 国产精品视频男人的天堂| 宅男噜噜噜66一区二区66| 亚洲美女av电影| 欧美一区二区三区在| 一区二区三区国产精品| 亚洲女人小视频在线观看| 欧美人成网站| 欧美日韩国产经典色站一区二区三区| 亚洲人成网站在线播| 欧美久久久久久| 亚洲黄色在线视频| 精品成人一区二区| 欧美天天视频| 在线观看欧美亚洲| 亚洲精品久久在线| 日韩午夜电影| 亚洲日本激情| 亚洲一区在线播放| 一区二区精品在线观看| 欧美精品性视频| 国产欧美综合在线| 欧美大片免费看| 久久国产综合精品| 国产精品一二三四区| 欧美日韩在线精品| 国产精品人人爽人人做我的可爱| 国产在线一区二区三区四区| 欧美激情一区二区在线| 亚洲第一成人在线| 亚洲图片欧洲图片日韩av| 国产日韩欧美亚洲一区| 久久亚洲影院| 亚洲一区二区三区午夜| 欧美色欧美亚洲另类七区| 亚洲一区三区电影在线观看| 久久精品国产精品| 9l视频自拍蝌蚪9l视频成人| 亚洲国产精品久久人人爱蜜臀| 久久久伊人欧美| 在线亚洲精品福利网址导航| 一区久久精品| 欧美三级韩国三级日本三斤| 久久天天躁狠狠躁夜夜av| 亚洲人体一区| 牛牛影视久久网| 中国成人亚色综合网站| 国产精品天天摸av网| 国产精品电影观看| 国产精品手机视频| 亚洲在线免费| 激情亚洲成人| 久久美女艺术照精彩视频福利播放| 亚洲欧美成人网| 日韩亚洲一区二区| 黄页网站一区| 久久综合狠狠综合久久激情| 极品尤物久久久av免费看| 亚洲激情亚洲| 亚洲一区二区三区精品在线观看| 欧美日韩和欧美的一区二区| 亚洲一区日韩在线| 一区在线视频观看| 小黄鸭视频精品导航| 欧美大片国产精品| 午夜视频在线观看一区二区三区| 亚洲无线一线二线三线区别av| 国产欧美视频一区二区三区| 国产日韩一区| 尤物yw午夜国产精品视频明星| 亚洲午夜久久久| 黄色日韩在线| 欧美在线三区| 亚洲欧美一区二区三区在线| 欧美亚洲色图校园春色| 亚洲美女中文字幕| 欧美激情精品久久久久久变态| 国产喷白浆一区二区三区| 一本大道久久a久久精品综合| 欧美日韩日日夜夜| 亚洲日本无吗高清不卡| 欧美日韩一区在线视频| 久久激情视频| 久久电影一区| 亚洲在线视频| 欧美系列一区| 欧美成人69| 欧美日韩一区二区三区视频| 亚洲激情电影中文字幕| 国产一区视频在线观看免费| 国产伦一区二区三区色一情| 99在线观看免费视频精品观看| 欧美日韩在线免费观看| 亚洲一区999| 国产美女精品视频免费观看| 亚洲四色影视在线观看| 欧美精品日韩三级| 国产综合色在线视频区| 麻豆freexxxx性91精品| 国产精品爱久久久久久久| 亚洲欧美日韩精品久久久久| 91久久精品www人人做人人爽| 欧美日韩视频在线一区二区观看视频| 91久久在线观看| 欧美日韩精品一区二区在线播放| 欧美日韩免费在线视频| 欧美成人国产一区二区| 日韩亚洲精品电影| 欧美精品日韩www.p站| 欧美精品亚洲一区二区在线播放| 亚洲欧洲精品成人久久奇米网| 国产精品扒开腿爽爽爽视频| 亚洲三级电影在线观看| 久久久精品国产99久久精品芒果| 国产美女在线精品免费观看| 激情综合中文娱乐网| 亚洲欧美国产高清va在线播| 亚洲黄色成人网| 亚洲女性裸体视频| 亚洲综合视频一区| 欧美激情视频免费观看| 国产在线拍揄自揄视频不卡99| 国产一区二区高清| 久久美女性网| 极品尤物av久久免费看| 亚洲精品久久久久久久久久久久| 欧美日本久久| 午夜免费电影一区在线观看| 欧美性生交xxxxx久久久| 99精品久久久| 一区二区三区欧美激情| 久久久久久999| 在线免费精品视频| 狠狠久久综合婷婷不卡| 最新中文字幕一区二区三区| 美女精品网站| 久久国产66| 欧美www视频在线观看| 国产精品对白刺激久久久| 美日韩精品免费观看视频| 亚洲五月婷婷| 国产精品一区二区三区成人| 欧美亚洲系列| 免费人成网站在线观看欧美高清| 欧美另类专区| 久久久久九九九九| 亚洲欧美视频在线| 欧美成人小视频| 国内自拍视频一区二区三区| 日韩一二在线观看| 一区二区三区免费观看| 欧美一区二区三区免费看| 久久免费视频网站| 国产视频一区免费看| 亚洲欧美清纯在线制服| 一区二区三区四区蜜桃| 免费成人性网站| 久久综合中文字幕| 久久久久国产成人精品亚洲午夜| 久久五月天婷婷| 韩国女主播一区| 亚洲美女啪啪| 国产精品日韩在线一区| **性色生活片久久毛片| 欧美日韩精品综合在线| 久久久久久久999| 午夜久久美女| 亚洲精品一区二区网址| 91久久国产综合久久蜜月精品| 亚洲小说区图片区| 欧美成人午夜激情| 国语自产精品视频在线看抢先版结局| 欧美a级理论片| 国产精品男女猛烈高潮激情| 99国产精品国产精品久久| 亚洲国产日韩一级| 国产精品三级视频| 国产日韩精品在线| 国产深夜精品福利| 久久国产精品久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 亚洲第一成人在线| 亚洲午夜影视影院在线观看| 亚洲激情小视频| 久久在线免费视频| 最新国产精品拍自在线播放| 在线免费观看日韩欧美| 欧美日韩一区二区三区四区在线观看| 亚洲高清在线精品| 亚洲欧洲一区二区三区| 夜夜爽av福利精品导航| 国产精品海角社区在线观看| 欧美在线观看你懂的| 欧美日本国产视频| 女主播福利一区| 欧美日韩国产成人在线| 99re热精品| 韩国av一区二区三区四区| 在线观看91精品国产入口| 一本色道久久综合狠狠躁篇的优点| 欧美日韩亚洲高清| 国产精品久久久久一区二区三区| 在线成人小视频| 午夜精品短视频|