本文介紹了AMR7微處理器的特點(diǎn)和BSP的概念及構(gòu)成,并且提出了基于ARM7微處理器的VxWorks系統(tǒng)的BSP設(shè)計(jì)步驟,為嵌入式系統(tǒng)設(shè)計(jì)人員提供了一種行之有效的BSP設(shè)計(jì)實(shí)現(xiàn)方案。
ARM7核處理器特點(diǎn)
ARM7系列微處理器為低功耗的32位RISC處理器,最適合用于對價(jià)位和功耗要求較高的消費(fèi)類應(yīng)用。如工業(yè)控制、Internet設(shè)備、移動電話等多種多媒體和嵌入式應(yīng)用。
ARM7微處理器系列具有如下特點(diǎn):具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便;極低的功耗,適合對功耗要求較高的應(yīng)用,如便攜式產(chǎn)品;能夠提供0.9MIPS/MHz的三級流水線結(jié)構(gòu);代碼密度高并兼容16位的Thumb指令集;對操作系統(tǒng)的支持廣泛,包括VxWorks、WindowsCE、Linux、PalmOS等。主頻最高可達(dá)130MIPS,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。
BSP概念和構(gòu)成
1、BSP概念。BSP是指針對具體的硬件平臺,用戶所編寫的啟動代碼和部分設(shè)備驅(qū)動程序的集合。BSP是相對于操作系統(tǒng)而言的,不同的操作系統(tǒng)對應(yīng)不同形式的BSP,因此,在寫B(tài)SP時(shí)要按照要求的操作系統(tǒng)對BSP的定義形式來寫。在VxWorks系統(tǒng)中,BSP是介于底層硬件環(huán)境和VxWorks之間的一個(gè)軟件接口,它的主要功能是系統(tǒng)加電后初始化目標(biāo)機(jī)的硬件和VxWorks,并提供部分硬件驅(qū)動程序。BSP為各種板卡的硬件功能提供了統(tǒng)一的軟件接口,包括硬件初始化、中斷的捕捉和處理、硬件時(shí)鐘和定時(shí)器管理、內(nèi)存地址映射,以及內(nèi)存分配等。每個(gè)BSP還包括一個(gè)ROM啟動或其他啟動機(jī)制。
2、BSP的文件構(gòu)成。
VxWorks的BSP組成文件主要包含在四個(gè)目錄下:
do\arget\\config\\all:所有BSP的公共部分
do\arget\\config\\comps\\vxworks描述文件(*.cdf)
do\arget\\config\\comps\\src文件(被usrConfig.c使用)
do\arget\\config\\bspname:與目標(biāo)板相關(guān)的部分
3、BSP的函數(shù)構(gòu)成。
sysLib.c中應(yīng)該實(shí)現(xiàn)以下函數(shù):
①系統(tǒng)時(shí)鐘中斷相關(guān)的函數(shù):sysClkConnect( ),sys-ClkDisable( ),sysClkEnable( ),sysClkInt( ),sysClkRateGet( ),sysClkRateSet( );
②系統(tǒng)硬件初始化函數(shù):sysHwInit( ),sysHwlnit2( )
③內(nèi)存相關(guān)的函數(shù):sysMemTop( ),sysNvRamGet( ),sysNvRamSet( )
④串口相關(guān)的函數(shù):sysSerialHwlnit( ),sysSerialHwInit2( ),sysSeriaIChanGet( )
⑤雜項(xiàng)函數(shù):sysBspRev( ),sysModel( ),sysToMonitor( )
其它函數(shù)如:輔助時(shí)鐘中斷相關(guān)函數(shù),總線相關(guān)函數(shù)。
VxWorks系統(tǒng)的BSP設(shè)計(jì)
1、VxWorks的引導(dǎo)過程。在編寫B(tài)SP之前,首先要了解整個(gè)系統(tǒng)的啟動過程。VxWorks的映像由代碼段、數(shù)據(jù)段和BSS段3部分組成。VxWotks內(nèi)核可以分為3種:可加載類型映像、基于ROM的VxWorks映像和RoM駐留型映像。這3種類型的映像組織是不一樣的,因此啟動過程有所區(qū)別。
(1)可加載映像包括VxWorks和BootROM兩部分內(nèi)容,兩部分是獨(dú)立創(chuàng)建的。首先,由系統(tǒng)引導(dǎo)代碼把ROM引導(dǎo)程序搬到RAM_HIGH_ADRS。然后,ROM引導(dǎo)程序開始運(yùn)行,將VxWorks映像加載到RAM_LOW_ADRS,之后跳轉(zhuǎn)到VxWorks映像裝入點(diǎn)。(2)基于ROM的VxWorks映像在BSP初始化時(shí),會把Image完全搬到RAM中執(zhí)行,包括代碼段和數(shù)據(jù)段。在拷貝執(zhí)行完畢后,系統(tǒng)控制權(quán)轉(zhuǎn)移給RAM中VxWorks映像的初始化代碼。(3)ROM駐留型映像只是將ROM中VxWorks映像的數(shù)據(jù)段和BSS段拷貝到RAM中,完成后系統(tǒng)控制權(quán)轉(zhuǎn)移給ROM/Flash里VxWorks映像的初始化代碼,代碼段留在ROM中并在ROM中運(yùn)行。在ROM中運(yùn)行的VxWorks映像主要是為了節(jié)省RAM空間,帶來的不利則是運(yùn)行速度變慢。
2、WorksOS下BSP構(gòu)建。在開發(fā)BSP的時(shí)候,需要在Tornado原帶BSP目錄下找一個(gè)與所用的處理器相同或相近。與BSP相關(guān)的文件有:romInit.s、sysAlib.s、bootInit.c、bootConfig.c、sysLib.c、config.h、eonfigNet.h、makefile以及與硬件相關(guān)的。根據(jù)S3C4510B微處理器來設(shè)計(jì)BSP開發(fā)步驟。
(1)拷貝BSP。將wrSBCAnn7BSP拷貝一份并命名為4510BSP,再修改該目錄下的文件,從而得到自己的BSP。
(2)修改MakeFile文件。修改4510BSP目錄下的makefile文件,具體修改的幾行可根據(jù)處理器的不同去選定修改。BOOTROM的入口地址、裝載Vxworks的地址和絕對地址,這些地址對于S3C4510B來說都應(yīng)該是重映射后的地址。
(3)修改config.h文件。主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和under掉不需要的部分。這些應(yīng)和makefile文件中設(shè)置的一致。
(4)修改romInit.s文件。CPU一上電就開始執(zhí)行romInit( )函數(shù),因此在romInit.s代碼段中它必須是第一個(gè)函數(shù)。對于熱啟動,處理器將會執(zhí)行romInit( )加上4后的代碼(具體參考sysLib.c中的sysToMonitor( )函數(shù))。更多的硬件初始化在sysLib.c中sysHwInit( )函數(shù)中,romInit( )的工作就是做較少的初始化并把控制權(quán)交給romStart( )(在bootInit.c文件)。
(5)利用tsfs下載。要利用tsfs下載VxWorks,配置內(nèi)容如下:①在config.h文件中添加顯示引導(dǎo)信息和VxWorks調(diào)試的內(nèi)容。②配置targetserver。
基于ARM7核處理器VxWorks系統(tǒng)的BSP設(shè)計(jì)設(shè)計(jì)時(shí),開發(fā)人員應(yīng)依據(jù)上述步驟對BSP的開發(fā)進(jìn)行設(shè)計(jì)。BSP是相對于操作系統(tǒng)而言的,不同的操作系統(tǒng)對應(yīng)不同形式的BSP,因此,在設(shè)計(jì)BSP時(shí)一定要按照要求的操作系統(tǒng)對BSP的定義形式來寫。對于BSP的開發(fā),一般需要從一個(gè)模板來修改。BSP開發(fā)的正確性直接影響到VxWorks系統(tǒng)運(yùn)行的穩(wěn)定性。