新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > VxWorks移植到AT91RM9200的BSP定制過程

        VxWorks移植到AT91RM9200的BSP定制過程

        作者: 時間:2010-12-14 來源:網絡 收藏


        3.2.5 修改sysLib c

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


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

        4 編譯生成映像

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

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

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

        6 結論

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

        本文引用地址:http://www.104case.com/article/151196.htm

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 靖安县| 临邑县| 株洲市| 滁州市| 水城县| 资阳市| 红桥区| 凌海市| 宜兰县| 定西市| 澄迈县| 五莲县| 淮南市| 康马县| 新蔡县| 盐城市| 读书| 凤台县| 大化| 应城市| 东乡族自治县| 射洪县| 正蓝旗| 柳州市| 吉隆县| 台东县| 木兰县| 峡江县| 六安市| 定南县| 凌云县| 蓬安县| 凤凰县| 乐至县| 荆门市| 乾安县| 太保市| 衡阳县| 苏州市| 岑巩县| 星子县|