基于VxWorks的BSP概念設(shè)計(jì)和實(shí)現(xiàn)
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-05 14:59:56
概述
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),它采用微內(nèi)核的結(jié)構(gòu),具有支持多種處理器,豐富的網(wǎng)絡(luò)協(xié)議,良好的兼容性和裁減性等特點(diǎn),同時(shí)具有程序動(dòng)態(tài)鏈接和的功能。
BSP(Board Support Packet——板級(jí)支持包)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,它主要功能為屏蔽硬件,提供操作系統(tǒng)的驅(qū)動(dòng)及硬件驅(qū)動(dòng),具體功能包括:
單板硬件初始化,主要是CPU的初始化,為整個(gè)軟件系統(tǒng)提供底層硬件支持;
為操作系統(tǒng)提供設(shè)備驅(qū)動(dòng)程序和系統(tǒng)中斷服務(wù)程序;
定制操作系統(tǒng)的功能,為軟件系統(tǒng)提供一個(gè)實(shí)時(shí)多任務(wù)的運(yùn)行環(huán)境;
初始化操作系統(tǒng),為操作系統(tǒng)的正常運(yùn)行做好準(zhǔn)備;
BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夾里。其中,all文件夾里的文件是所有BSP的通用文件,bspname文件夾的文件是用戶自己定制的BSP文件。
經(jīng)過編譯、鏈接,并在makefile和depend. bspname等文件的控制下,原程序?qū)⑸社R像。VxWorks的鏡像可分為兩類:可鏡像和可引導(dǎo)鏡像。
鏡像就是像照鏡子一樣。我們一般說的鏡像是指給系統(tǒng)作個(gè)ghost鏡像。這樣可以在很短時(shí)間,很方便的還原出一個(gè)完整的系統(tǒng)來。鏡像可以說是一種文件,比如iso,gho都屬于鏡像文件,鏡像文件可以直接刻錄到光盤中,也可以用虛擬光驅(qū)打開。
鏡像文件的應(yīng)用范圍比較廣泛,常見的應(yīng)用就是數(shù)據(jù)備份(如軟盤和光盤)。隨著寬帶網(wǎng)的普及,有些網(wǎng)站也有了ISO格式的文件,方便了軟件光盤的制作與傳遞。常見的鏡像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。 還有一個(gè)常識(shí)就是正版用的人多了就成了盜版了,正版用戶每人有一個(gè)正版序列號(hào),主要用于升級(jí)和打補(bǔ)丁,所以鏡像和正版不能劃等號(hào),主要是要有序列號(hào)。 當(dāng)然據(jù)傳正版鏡像會(huì)比盜版穩(wěn)定一點(diǎn),據(jù)傳而已,另外還有和虛擬光驅(qū)關(guān)聯(lián)的鏡像文件。
可鏡像(Loadable Image):實(shí)際包括兩部分,一是vxWorks,二是boot ROM,兩部分是獨(dú)立創(chuàng)建的。其中boot ROM包括被壓縮的boot ROM鏡像(bootrom)、非壓縮的boot ROM鏡像(bootrom_uncmp)和駐留ROM的boot ROM鏡像(bootrom_res)三種類型;
可引導(dǎo)鏡像(Bootable Image):是將引導(dǎo)程序和vxWorks融為一體的鏡像,它常常是終產(chǎn)品,包括不駐留ROM的鏡像和駐留ROM的鏡像兩種類型。
VxWorks系統(tǒng)啟動(dòng)流程
VxWorks 是美國 Wind River System 公司( 以下簡稱風(fēng)河 公司 ,即 WRS 公司)推出的一個(gè)實(shí)時(shí)操作系統(tǒng)。Tornado 是WRS 公司推出的一套實(shí)時(shí)操作系統(tǒng)開發(fā)環(huán)境,類似Microsoft Visual C,但是提供了更豐富的調(diào)試、仿真環(huán)境和工具。
VxWorks 提供了一個(gè)快速靈活的與 ANSI C 兼容的 I/O 系統(tǒng),包括 UNIX 標(biāo)準(zhǔn)的Basic I/O(creat(), remove(), open(),close(), read(), write(), and ioctl()。),Buffer I/O (fopen(), fclose(), fread(), fwrite(), getc(), putc()) 以及POSIX 標(biāo)準(zhǔn)的異步 I/O。VxWorks 包括以下驅(qū)動(dòng)程序:網(wǎng)絡(luò)驅(qū)動(dòng)、管道驅(qū)動(dòng)、RAM盤驅(qū)動(dòng)、SCSI驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)、顯示驅(qū)動(dòng)、磁盤驅(qū)動(dòng)、并口驅(qū)動(dòng)等
一般來說,所有處理器的VxWorks系統(tǒng)啟動(dòng)流程都是相似的,但有些處理器會(huì)有一些特殊的步驟,而另一些處理器會(huì)跳過幾個(gè)步驟。
BSP的開發(fā)過程
建立開發(fā)環(huán)境
主要是以目標(biāo)板CPU的BSP文件為模板,在 ornado argetconfig目錄下創(chuàng)建用戶的BSP目錄bspname,把 ornado argetconfigall下的文件和BSP模板文件拷貝到該目錄下,根據(jù)具體情況選擇合適的VxWorks鏡像類型。
修改模板程序
Makefile
Makefile文件控制鏡像的創(chuàng)建,在Makefile文件里使用了將近135個(gè)宏,簡單的Makefile文件要包含以下的宏:
·CPU:目標(biāo)板CPU的類型;
·TOOL:主機(jī)的make工具,為GNU;
·TGT_DIR:target路徑,默認(rèn)為$(WIND_BASE)/target;
·TARGET_DIR:BSP目錄名;
·VENDER:目標(biāo)板生產(chǎn)商名;
·BOARD:目標(biāo)板名;
·ROM_TEXT_ADRS:boot ROM的入口地址(以16進(jìn)制表示,并且與config.h文件定義相同);
·MACH_EXTRA:擴(kuò)展文件,用戶可以加入自己的目標(biāo)模塊;
·除此以外,Makefile文件還需要包括以下文件:
·$(TGT_DIR)/h/make/defs.bsp:Vxworks系統(tǒng)運(yùn)行的標(biāo)準(zhǔn)變量定義;
·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特別的目標(biāo)機(jī)結(jié)構(gòu)和一套編譯工具,如make. ARM7TDMI_Tgnu;
·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了與主機(jī)系統(tǒng)有關(guān)的定義;
·如果沒有用all目錄下的文件而是拷貝到bspname下修改并使用,需要定義與這些文件有關(guān)的宏,如
BOOTINIT=bootInit.c
這樣在創(chuàng)建鏡像時(shí)就不會(huì)用all目錄下的文件而使用bspname目錄下的相應(yīng)文件了;
·在Makefile文件里凡是16進(jìn)制數(shù)前面都無需加“0x”;
bspname.h
根據(jù)具體目標(biāo)板設(shè)置串行接口、時(shí)鐘以及I/O設(shè)備等。在該文件中必須包含以下內(nèi)容:
·中斷向量/級(jí)別
·I/O設(shè)備地址
·設(shè)備寄存器位的含義
·系統(tǒng)和附加時(shí)鐘參數(shù)(和速率)
config.h
根據(jù)目標(biāo)板的具體情況配置宏定義,注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要與Makefile文件里定義的一致,LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正確。
romInit.s
這是系統(tǒng)上電后運(yùn)行的個(gè)程序,根據(jù)具體目標(biāo)板對(duì)寄存器和CPU進(jìn)行設(shè)置;以CPU為ARM7TDMI為例,romInit.s 需要進(jìn)行的工作有:
·保存啟動(dòng)方式:對(duì)于冷啟動(dòng),如果CPU配置的是HIGH VECTORS,就設(shè)置入口地址為0xFFFF0000,否則設(shè)置入口地址為0x00000000;
·屏蔽中斷:通過設(shè)置cpsr的I_BIT和F_BIT都為1來實(shí)現(xiàn),還要設(shè)置中斷寄存器為關(guān)模式,同時(shí)設(shè)定運(yùn)行模式為SVC32模式;
·初始化堆棧指針pc和sp:堆棧指針sp指向STACK_ADRS,這個(gè)宏的定義為當(dāng)鏡像為駐留ROM時(shí),該宏值為_sdata,當(dāng)鏡像為非駐留ROM時(shí)該宏值為_romInit,這兩個(gè)地址經(jīng)過地址映射后都指向被拷貝鏡像在RAM的目標(biāo)地址;
·初始化cache,屏蔽cache;
·根據(jù)具體目標(biāo)板的需要初始化其他寄存器;
·指針跳轉(zhuǎn)到romStart()函數(shù)并執(zhí)行;
sysALib.s
與romInit.s文件實(shí)現(xiàn)的功能相似,但如果在romInit.s文件里對(duì)DRAM和內(nèi)存控制器進(jìn)行了初始化在這里不再進(jìn)行這項(xiàng)工作;
創(chuàng)建VxWorks鏡像
根據(jù)具體需要在命令行環(huán)境下利用Makefile創(chuàng)建各種鏡像,也可以在Tornado的集成環(huán)境下Build菜單中選擇Build Boot ROM來創(chuàng)建各種類型的Boot ROM;
結(jié)語
我們已經(jīng)利用基于VxWorks的BSP開發(fā)包成功的進(jìn)行了線纜調(diào)制解調(diào)器的底層軟件開發(fā)。在開發(fā)過程中深感BSP在整個(gè)系統(tǒng)軟件中的重要性——沒有正確的BSP軟件,整個(gè)系統(tǒng)的啟動(dòng)和運(yùn)行也不會(huì)正確。對(duì)同一目標(biāo)板而言,不同操作系統(tǒng)的BSP在本質(zhì)上是一樣的,但是不同的操作系統(tǒng)將提供不同的支持庫,另外在BSP結(jié)構(gòu)上也可能會(huì)有所不同,在做BSP移植的時(shí)候應(yīng)該注意。
參考文獻(xiàn):
[1]. TOOL datasheet http://www.hbjingang.com/datasheet/TOOL_2550708.html.
[2]. ARM7TDMI datasheet http://www.hbjingang.com/datasheet/ARM7TDMI_139812.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計(jì)與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計(jì)要點(diǎn)
- 連接器結(jié)構(gòu)設(shè)計(jì)常見問題分析









