vxworks初步BSP(一)

在Tornado不可以跟蹤調試驅動程序

BSP是板級支持包,是介於主板硬件和操作系統之間的一層,應該說是屬於操作系統的一部分,主要目的是爲了支持操作系統,使之能夠更好的運行於硬件主板。 BSP是相對於操作系統而言的,不同的操作系統對應於不同定義形式的BSP,例如VxWorks的BSP和Linux的BSP相對於某一CPU來說盡管實現的功能一樣,可是寫法和接口定義是完全不同的,所以寫BSP一定要按照該系統BSP的定義形式來寫(BSP的編程過程大多數是在某一個成型的BSP模板上進行修改)。這樣才能與上層OS保持正確的接口,良好的支持上層OS。

開發BSP主要的兩點:

系統image的生成,image的種類,image的download下載過程,系統的啓動順序和過程,調試環境的配置及遠端調試的方式和方法,相應BSP設置文件的修改(網絡,串口..),BSP各文件的組成和作用.

要對系統底層驅動清楚,也就是對CPU及相關的硬件有所瞭解.主要是32微處理器(上電啓動過程, download image的方式方法,讀寫ROM,地址空間分配,MMU,寄存器,中斷定義,..).參照硬件資料,多讀一些源碼會有所幫助.

兩個主要兩個協議

WTX協議(Wind River Tool eXchange): 用於開發機內部Tornado工具與Target Server之間通信.

WDB協議(Wind DeBug): 用於主機Target Server與目標機之間的通信.

Tornado 工具
 主機開發(Host Development System)                           目標機(Target System)
 

                                                              Application
                                                              Vxworks OS
            Shell        WTX協議通信    Target WDB協議通信   
Editor      Debugger     <=========>    Server <=========>    Vxworks
Project     Browser                       |                   Target(WDB)
            Windview                    Target                Agent
                                        Agent
                                        VxWorks
                                        Target
                                        Simulator
                                       
                                       
 BSP的作用
 在通電後,初始化硬件
 支持Vxworks和硬件驅動程序
 使hardware-dependent和hard-independent在vxworks系統中很好的結合
 
 主要的BSP文件目錄文件組成和作用
 目錄target/config/All:

這個目錄下的文件是所有BSP文件共享的,不是特別需要不要更改裏面的任何文件.

configAll.h:
缺省定義了所有VxWorks的設置.如果不用缺省的設置,可在BSP目錄下的config.h文件中用#define或#undef方式來更改設置.

bootInit.c:

在romInit.s後,完成Boot ROM的第二步初始化.程序從romInit.s中的romInit()跳到這個文件中的romStart().來執行必要的解壓和ROM image的放置.

bootConfig.c: 完成Boot ROM image的初始化和控制.

usrConfig.c: VxWorks image的初始化代碼.

目錄target/config/comps/src
涉及系統核心的components,主要由target/config/All中的usrConfig.c調用


目錄target/config/bspname
    包涵系統或硬件相關的BSP
    Makefile 生成Images的命令行
   
    README 文檔
   
    config.h 包括所有涉及CPU和主板硬件設置及定義,由include和def來控制
   
    configNet.h 網絡設備驅動配置文件,主要是END驅動設置
    romInit.s 彙編語言文件,是Vxworks Boot ROM和
    Rom based image的入口,可以參看系統啓動文章
   
    sysALib.s 彙編語言文件,可以把自己的彙編函數放入這個文件
    在上層調用時,VxWorks image的入口點_sysInit在這個文件裏面,也就
    是在RAM中執行的第一個函數
   
    sysLib.c 包含一些系統相關的函數例程,提供了一個board-level的接
    口,VxWorks和應用程序可以以system-indepent的方式生成,這個文件
    還包含目錄 /target/config/comps/src驅動
   
    sysScsi.c 可選文件用於Scsi設備設置和初始化
   
    sysSerial.c 可選文件用於所有串口設置和初始化
   
    bootrom.hex ASIC文件包含VxWorks Boot ROM代碼
   
    VxWorks 運行在目標機上完整的連結後的VxWorks二進制文件
   
    VxWorks.sym 完整的連接後帶有符號表的VxWorks二進制文件
   
    VxWorks.st 完整的連接後的,standalone帶有符號表的二進制文件
   
BSP用make來編譯連接生成 包括應用程序,和內核

BSP被設置包括以下驅動
    中斷控制interrupt controller,
    計時器timer(sys/aux)
    UART
    LCD
    Keyboard(opt)
    touch-screen(opt)
    前三個是BSP的主要部分
   
   
BSP默認是從以太網下載VxWorks RAM image
通過WDB協議與串口通信

Image的種類
VxWorks Image的文件類型有三種
1. Loadable Images:由Boot-ROM引導通過網口或串口下載到RAM
2. ROM-based Images(壓縮/沒有壓縮):即將Image直接燒入ROM,
    運行時將Image拷入RAM中運行。
3. ROM-Resident Images:Image的指令部分駐留在ROM中運行,
    僅將數據段部分拷入RAM。
    PS:
        這樣做可以空出更多的RAM給應用程序,當然並不是所有的板子都
        支持這種VxWorks image
VxWorks images---A VxWorks image containing "end-user" code,Sub-types:

        Loadable VxWorks image--VxWorks images loaded by VxWorks
        boot image. Loadable VxWorks image是通過VxWorks boot
        image裝載的VxWorks images. 

        VxWorks ROM image--VxWorks image "burned" into ROM or
        loaded into Flash.May execute in Flash.

VxWorks images consist of:

Text segment---executable instruction.

Data segment---Initilized global and static varibles.

BSS.

      
    注意這裏所說的三種映像都是包含真正操作系統VxWorks的映像,
    其中後兩種可以直接啓動並運行起來,但是第一種不行,它必須
    藉助另一個叫做Boot Image的映像(可以在Tornado 中
    的build->build boot rom中生成)才能運行起來,也就是
    利用Boot Image引導起來然後通過網口或串口下載真正包含VxWorks
    的Loadable Image,然後才能運行起來。也就是說Boot Image是
    和Loadable Image 結合使用的。

現在看來一共有四種映像文件,讓我們看看它們的組成吧:
1. Boot Image:包含一段叫做BootStrap Programs的程序+一段ROM BOOT Program程序。
2. Loadable Images:有操作系統VxWorks和應用組成的映像。
3. ROM-based Images(壓縮/沒有壓縮):包含一段叫做BootStrap Programs的程序+
    Loadable Images(即有操作系統VxWorks和應用組成的映像)
4. ROM-Resident Images:同上
    通過上面我們可以看出,ROM-based Images,ROM-Resident Images,
    Boot Image三種映像都包含一段叫做BootStrap Programs的程序,它具有啓動功能,
    可以把ROM中的代碼段和數據段拷貝到RAM中;

 文件類型說明
Uploaded images(通過網口或串口下載到RAM):

    vxWorks - basic Tornado, shell 和 symbol table 在主機端
    vxWorks.st(文件很大)- 獨立的 image,包含shell和
    symbol table在目標板運行

ROM based images(直接燒入ROM的VxWorks):

    vxWorks_rom - Tornado in ROM,非壓縮, 在 RAM 中運行
    vxWorks.res_rom_nosym - Tornado in ROM, 非壓縮,在 ROM 中運行
    vxWorks.st_rom - Stand-alone in ROM, 壓縮, RAM 中運行
    vxWorks.res_rom - Stand-alone in ROM, 非壓縮, ROM 中運行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章