新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于VxWorks的BSP概念與開發

        基于VxWorks的BSP概念與開發

        作者: 時間:2011-03-12 來源:網絡 收藏
        摘 要:本文以VxWorks操作系統為例闡述了BSP的概念和系統啟動流程,并描述了BSP的開發過程。
        關鍵詞:BSP;VxWorks;鏡像;boot Rom
        概述
        VxWorks操作系統是美國WindRiver公司于1983年設計開發的一種實時操作系統(RTOS),它采用微內核的結構,具有支持多種處理器,豐富的網絡協議,良好的兼容性和裁減性等特點,同時具有程序動態鏈接和下載的功能。

        BSP(Board Support Packet——板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發包,它主要功能為屏蔽硬件,提供操作系統的驅動及硬件驅動,具體功能包括:
        ·單板硬件初始化,主要是CPU的初始化,為整個軟件系統提供底層硬件支持;
        ·為操作系統提供設備驅動程序和系統中斷服務程序;
        ·定制操作系統的功能,為軟件系統提供一個實時多任務的運行環境;
        ·初始化操作系統,為操作系統的正常運行做好準備;
        BSP在VxWorks系統中的地位見圖1。
        BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夾里。其中,all文件夾里的文件是所有BSP的通用文件,bspname文件夾的文件是用戶自己定制的BSP文件。
        經過編譯、鏈接,并在makefile和depend. bspname等文件的控制下,原程序最后將生成鏡像。VxWorks的鏡像可分為兩類:可下載鏡像和可引導鏡像。
        ·可下載鏡像(Loadable Image):實際包括兩部分,一是vxWorks,二是boot ROM,兩部分是獨立創建的。其中boot ROM包括被壓縮的boot ROM鏡像(bootrom)、非壓縮的boot ROM鏡像(bootrom_uncmp)和駐留ROM的boot ROM鏡像(bootrom_res)三種類型;
        ·可引導鏡像(Bootable Image):是將引導程序和vxWorks融為一體的鏡像,它常常是最終產品,包括不駐留ROM的鏡像和駐留ROM的鏡像兩種類型。

        VxWorks系統啟動流程
        一般來說,所有處理器的VxWorks系統啟動流程都是相似的,但有些處理器會有一些特殊的步驟,而另一些處理器會跳過幾個步驟。
        下面以CPU為ARM7TDMI為例具體描述(見表1)。
        對于可引導鏡像在usrConfig.c文件里執行,對于可下載鏡像在bootConfig.c文件里執行。
        圖2為壓縮的可引導鏡像的啟動過程圖示,其中所用到的地址的說明見表2。

        BSP的開發過程
        建立開發環境
        主要是以目標板CPU的BSP文件為模板,在 ornado argetconfig目錄下創建用戶的BSP目錄bspname,把 ornado argetconfigall下的文件和BSP模板文件拷貝到該目錄下,根據具體情況選擇合適的VxWorks鏡像類型。
        修改模板程序
        Makefile
        Makefile文件控制鏡像的創建,在Makefile文件里使用了將近135個宏,最簡單的Makefile文件要包含以下的宏:
        ·CPU:目標板CPU的類型;
        ·TOOL:主機的make工具,為GNU;
        ·TGT_DIR:target路徑,默認為$(WIND_BASE)/target;
        ·TARGET_DIR:BSP目錄名;
        ·VENDER:目標板生產商名;
        ·BOARD:目標板名;
        ·ROM_TEXT_ADRS:boot ROM的入口地址(以16進制表示,并且與config.h文件定義相同);
        ·ROM_SIZE:ROM的大小;
        ·RAM_LOW_ADRS:加載vxWorks的目標地址;
        ·RAM_HIGH_ADRS:boot ROM拷貝到RAM的目標地址;
        ·HEX_FLAGS:特殊結構的標記,用于產生S-記錄文件;
        ·MACH_EXTRA:擴展文件,用戶可以加入自己的目標模塊;
        ·除此以外,Makefile文件還需要包括以下文件:
        ·$(TGT_DIR)/h/make/defs.bsp:Vxworks系統運行的標準變量定義;
        ·$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特別的目標機結構和一套編譯工具,如make. ARM7TDMI_Tgnu;
        ·$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了與主機系統有關的定義;
        ·rules.bsp:在創建目標文件時所需要的規則;
        ·rules. $(WIND_HOST_TYPE):指出創建目標文件時所需的從屬文件表;
        ·如果沒有用all目錄下的文件而是拷貝到bspname下修改并使用,需要定義與這些文件有關的宏,如
        BOOTINIT=bootInit.c
        這樣在創建鏡像時就不會用all目錄下的文件而使用bspname目錄下的相應文件了;
        ·在Makefile文件里凡是16進制數前面都無需加“0x”;
        bspname.h
        根據具體目標板設置串行接口、時鐘以及I/O設備等。在該文件中必須包含以下內容:
        ·中斷向量/級別
        ·I/O設備地址
        ·設備寄存器位的含義
        ·系統和附加時鐘參數(最大和最小速率)
        config.h
        根據目標板的具體情況配置宏定義,注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要與Makefile文件里定義的一致,LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正確。
        romInit.s
        這是系統上電后運行的第一個程序,根據具體目標板對寄存器和CPU進行設置;以CPU為ARM7TDMI為例,romInit.s 需要進行的工作有:
        ·保存啟動方式:對于冷啟動,如果CPU配置的是HIGH VECTORS,就設置入口地址為0xFFFF0000,否則設置入口地址為0x00000000;
        ·屏蔽中斷:通過設置cpsr的I_BIT和F_BIT都為1來實現,還要設置中斷寄存器為關模式,同時設定運行模式為SVC32模式;
        ·初始化堆棧指針pc和sp:堆棧指針sp指向STACK_ADRS,這個宏的定義為當鏡像為駐留ROM時,該宏值為_sdata,當鏡像為非駐留ROM時該宏值為_romInit,這兩個地址經過地址映射后都指向被拷貝鏡像在RAM的目標地址;
        ·初始化cache,屏蔽cache;
        ·根據具體目標板的需要初始化其他寄存器;
        ·指針跳轉到romStart()函數并執行;
        bootConfig.c
        一般不需要用戶修改,也可以根據具體情況做適當修改;
        sysALib.s
        與romInit.s文件實現的功能相似,但如果在romInit.s文件里對DRAM和內存控制器進行了初始化在這里不再進行這項工作;
        創建VxWorks鏡像
        根據具體需要在命令行環境下利用Makefile創建各種鏡像,也可以在Tornado的集成環境下Build菜單中選擇Build Boot ROM來創建各種類型的Boot ROM;
        除此以外,如果系統硬件包括串口,還要根據具體情況修改sysSerial.c文件;如果包含網絡部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。總之,BSP的開發要根據具體目標板的硬件進行。

        結語
        我們已經利用基于VxWorks的BSP開發包成功的進行了線纜調制解調器的底層軟件開發。在開發過程中深感BSP在整個系統軟件中的重要性——沒有正確的BSP軟件,整個系統的啟動和運行也不會正確。另外需要強調的是:BSP的概念只是針對操作系統而言的,而像DOS、WINDOWS、UNIX等BIOS操作系統是無BSP可言的。對同一目標板而言,不同操作系統的BSP在本質上是一樣的,但是不同的操作系統將提供不同的支持庫,另外在BSP結構上也可能會有所不同,在做BSP移植的時候應該注意。■

        參考文獻
        1. Tornado BSP Developer誷 Kit for VxWorks User誷 Guide,Tornado 2.0,Edition 1,1999
        2. Tornado BSP Developer誷 Kit for VxWorks User誷 Guide,Tornado 1.0.1,Edition 1,1997
        3. VxWorks Programmer誷 Guides,Edition 1,1999
        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 禄丰县| 称多县| 南平市| 陵川县| 抚顺县| 兰西县| 文山县| 普安县| 镇江市| 颍上县| 禄丰县| 晋中市| 高雄市| 西安市| 武清区| 家居| 雷波县| 古交市| 桑日县| 盐津县| 卢湾区| 固原市| 新丰县| 如皋市| 兴海县| 南华县| 满洲里市| 旬阳县| 桐庐县| 广平县| 池州市| 申扎县| 盘山县| 邻水| 凌源市| 缙云县| 肥东县| 平和县| 句容市| 鄂伦春自治旗| 孟村|