<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇VxWorks專區VxWorks技術討論區 → VxWorks在AT91RM9200上BSP設計方案


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

    主題:VxWorks在AT91RM9200上BSP設計方案

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


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    VxWorks在AT91RM9200上BSP設計方案  發帖心情 Post By:2010-11-17 10:31:25

    vxworks是美國wind river公司研發嵌入式實時操作方法系統,具有高性能,可裁減性好等特性,能支持幾種微處理器(如powerpc,x85,arm,sparc);自問世對來,對其良好町靠性與卓越實時性被廣泛地使用于通信,航空,航天等高精尖技術信息及實時性條件極高領域中。bsp(board support package,板級支持包)用處是針對特殊硬件平臺,為操作方法系統內核供應操作方法接口,使操作方法系統能夠獨立于底層硬件。對上層使用屏蔽具體硬件,vxworks高可移植性就是通過bsp解決方案。at91rm9200是atmel公司生產一款arm9核IC,本文重點說明將vxworks移植到該IC過程中bsp定制過程。
    1 bsp理念
      bsp通常是指針對具體硬件平臺,用戶所編寫運行源代碼與部分設備軟件驅動程序集合。它所解決方案功能包括初始化與軟件驅動部分設備。最基本bsp僅需支持處理器復位,初始化,軟件驅動串口與必要時鐘處理。bsp是相對于操作方法系統而言,不同操作方法系統對應不同形式bsp,因此,在寫bsp時一定要按照條件操作方法系統對bsp定義形式來寫。在vxworks系統中,bsp是介于底層硬件環境與vxworks的間一個軟件接口,它主要功能是系統加電后初始化目標機硬件與vxworks,并供應部分硬件軟件驅動程序。bsp在vxworks系統中層次關系如圖1所示。
      bsp為各種板卡硬件功能供應了統一軟件接口,包括硬件初始化,中斷捕捉與處理,硬件時鐘與定時器管理,內存地址映射,對及內存分配等。每個bsp還包括一個rom運行或其他運行機制。
    2 vxworks引導過程
      在編寫bsp的前,首先要了解整個系統運行過程。vxworks映像由源代碼段,數據段與bss段3部分結合。vxwotks內核能分為3種:可加載種類映像,romvxworks映像與rom駐留型映像。這3種種類映像組織是不一樣,因此運行過程有所差別。
      可加載映像包括vxworks與boot rom兩部分內容,兩部分是獨立建立。首先,由系統引導源代碼把rom引導程序搬到ram_high_adrs。然后,rom引導程序開始啟動,將vxworks映像加載到ram_low_adrs,的后跳轉到vxworks映像裝入點。
      romvxworks映像在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映像不同部分解壓縮<如果需)并加載到ram中。
      usrinit() 對vxworks映像bss段清零;調用intvecbaseset()設置中斷矢量基地址表;調用excvecinit()初始化異常中斷矢量;調用syshwinit()初始化系統硬件;調用usrkernelinit()初始化wind內核;調用kernellnit()運行wind內核,運行usrroot()任務。
      usrroot()設置操作方法系統時鐘,建立設備,安裝軟件驅動,調用syshwinit2()安裝系統時鐘與輔助時鐘中斷對及串口等設備中斷,初始化i/o,文件系統,調用應用程序軟件。
    3 vxworks在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)為at91rm9200IC中emac設備;host為主機名;vxworks為要下載文件名;h為主機ip地址;e為目標板ip地址;u為用戶名;pw為密碼;tn為目標板名稱。
    (2)修改地址
      該文件中地址定義,如rom_text_adrs,rom_size,ram_low_adr,sram_high_size等要及makefik文件中關聯定義一致。本設計方案中源代碼段存儲在連接armIC外部片選cso上flash里面,基地址為oxl0000000,因此.定義如下:
      vxworks缺省設置由configall.h來確定。普通來說,缺省設置設置及自行研發硬件系統設置不同,用戶可通過cotlfig.h來改變缺省設置。用戶須查看configall.h,并在config.h中將不需軟硬件設置與初始化去掉。例如,缺省設置中普通包含浮點處理器,而at9lrm9200中沒有浮點寄存器,因此就要刪掉關聯設置。
    3.2.3 修改integrator920t.c
      該文件中設置所有非可選,及at91rm9200IC關聯資料,如各硬件關聯寄存器地址定義,設備寄存器中對應位定義,各硬件中斷矢量與中斷優先級定義,dbug與usart控制,網口定義,系統時鐘與輔助時鐘型號參數設置等。vxworks所要運用目標板包含設備軟件驅動程序頭文什應當包含在該文件開始。該文件中各項宏定義均是at91rm9200IC,并根據具體條件定義。例如,電源管理控制器中用到兩個鎖相環plla與pllb,對它們部分型號參數設定源代碼如下:
    3 2.4 修改rornlnit.s
      該文件包含引導rom與romvxworks映像入口初始化匯編源代碼。入口點為rominit()函數,是系統加電運行后首先執行源代碼。主要功能是:保存運行種類,使處理器復位;初始化flash與sdram;設置mmu到已知狀態;指令cache使能;初始化mmu控制寄存器(指令32位,數據32位,寫緩沖使能);開漏寫緩沖,并且使指令與數據cache都兀效;通過設置cpsrirq禁止位,fir禁止位與先進中斷控制器aic中中斷禁止寄存器來屏蔽中斷,跳轉到bootinit.c中rom-start(),同時傳遞運行種類。其中,中斷屏蔽源代碼如下:
      在調試這段源代碼時,由于串口與網口都沒有運行,因此僅僅能通過點燈程序來跟蹤程序執行情況,設置不同led亮來顯示程序執行到哪一步。例如,如果要并行輸入/輸出口c32位中第15位亮,則能編程代碼為;
      在編寫本文件時,需注意地方是:不要在該文件里進行過多初始化操作方法,大部分硬件初始化操作方法在syslib.c文件中syshwinit()函數中進行。
    3.2.5 修改syslib c
      syslib.c是bsp初始化核心源代碼。在這個文件中,必須復位所有硬件,使其處于初始化狀態,保證后面開中斷后不會產生假中斷。這個文件包含了由目標機體系構造決定,及系統關于c程序。這些c程序供應板級接口。這些接口,vxworks與應用程序軟件構造及系統無關。該文件功能包括:定義了rram,sram,rom,外部片選IC物理地址與虛擬地址;定義中斷優先級寄存器中各個位對應優先級;調用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為例,重點說明了vxworksbsp設計方案中需修改幾個顯要文件,最后提出了需注意難題。盡管目標板硬件不同,bsp解決方案也不盡相同,但基本思想是一樣。本設計方案對各類研發板系統移植與后續應用程序軟件研發有一定參考價值

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

    返回版面帖子列表

    VxWorks在AT91RM9200上BSP設計方案








    簽名
    主站蜘蛛池模板: 一区二区三区国产最好的精华液| 亚洲视频在线网| 7777精品伊人久久久大香线蕉| 成人午夜精品视频在线观看| 亚洲国产精品人久久电影| 男人和女人做爽爽视频| 国产免费av片在线观看| 99re热精品视频国产免费| 性欧美18-19sex性高清播放| 亚洲一区精品无码| 欧美激情blackedraw红衣在线播放| 啦啦啦手机完整免费高清观看| 韩国无码av片| 国产精品香蕉成人网在线观看| 中文字幕aⅴ人妻一区二区| 日本精品一区二区三区在线视频一| 亚洲欧美综合视频| 玩物无删减版180分钟| 国产乱妇无码大片在线观看 | 国产又粗又猛又黄又爽无遮挡| 99re5久久在热线播放| 女人扒开腿让男人捅啪啪| 久久人人爽人人爽人人片av麻烦| 最近中文字幕大全免费版在线| 亚洲视频在线观看| 男女裸体影院高潮| 国产一区二区精品人妖系列 | 免费午夜爽爽爽WWW视频十八禁| 美女毛片在线看| 国产成人久久精品麻豆二区| 91香蕉视频黄色| 在线观看国产成人AV片| 两个小姨子韩国电影| 护士与税务干部完整2av| 久久精品这里热有精品2015| 欧美xxxx狂喷水| 亚洲第一极品精品无码久久 | 久久精品中文字幕| 最近中文字幕mv免费视频| 亚洲福利秒拍一区二区| 特大巨黑人吊性xxx视频|