-- 作者:wangxinxin
-- 發布時間:2010-12-1 11:17:27
-- 基于MPC860/VxWorks的嵌入式系統開發
Research on the Developing of Embedded Abstract: The article introduces the characters of embedded processor MPC860 and embedded real-time operation system VxWorks and describes the process of embedded system development based on MPC860/ VxWorks which uses BDM to write bootrom file, uses FIP to download VxWorks image and uses Tornado integrated developing circumstance to download and debug applying program. Key Words: MPC860, VxWorks, Tornado, embedded system 摘 要:本文介紹了嵌入式處理器MPC860與嵌入式實時操作系統VxWorks的特點,描述了基于MPC860/ VxWorks嵌入式系統開發的流程:使用BDM調試器燒寫bootrom文件,使用FTP下載vxworks內核鏡像,使用Tornado集成開發環境下載與調試應用程序。 關鍵字: MPC860;VxWorks;Tornado;嵌入式系統
1 引言 摩托羅拉公司生產的MPC系列CPU基于PowerPCTM結構,它由三個模塊組成:即PowerPCTM內核、系統接口單元(SIU)及通信處理模塊(CPM)[1]。三個模塊均采用32 位內部總線。主處理器是PowerPCTM內核,能夠實現內存管理,具有指令和數據Cache。系統接口單元中,存儲器控制單元可支持多種高性能的存儲器,包括SDRAM和Flash。CPM是一個RSIC處理器,具有串行通信控制器、波特率發生器等,支持多種協議的命令集,可以配置成多種通信處理模式。 VxWorks是一種實時性非常強的嵌入式操作系統,具有高性能的內核、良好的持續發展能力、以及友好的功能強大的開發環境,使該系統越來越被用戶認可。 目前,基于MPC860/VxWorks系統的應用越來越廣泛,因此,本文對基于MPC860/VxWorks系統的開發的一般流程進行了研究。 2 開發平臺 2.1 開發方式介紹 進行嵌入式系統開發有多種方式,常用的方式有兩種: (1)先進行硬件設計開發,然后通過仿真器在目標板上調試程序,如單片機常用的開發方法;或者在主機上編寫完用戶程序,將其直接編譯入內核,整體下載入目標板,通過主機上的交叉調試器對目標機上的程序進行調試,如嵌入式實時多任務系統開發。 (2)軟硬件同時開發,通常一些嵌入式操作系統都有一個集成開發環境,包括目標機仿真器,可以在開發硬件的同時,在仿真器上開發調試應用程序,最后進行聯合調試。 第二種方式開發時間短,但不夠直觀,容易出錯,即使仿真成功,但在下載到目標板后,通常還需要調試排錯。在有硬件環境的情況下,通常采用第一種方式,尤其是開發需要對硬件進行直接操作的底層驅動程序。 這里我們設計一款基于MPC860的嵌入式硬件環境,它同時具有幾種通信接口:BDM接口、串口和網口。系統開發采用第一種開發方式,軟件開發流程主要包括:引導程序的燒寫、下載vxworks鏡像和應用程序下載調試等幾個主要方面。 2.2 Tornado集成開發環境 Tornado是嵌入式實時領域里最新一代的開發調試環境,提供了高效明晰的圖形化的實時應用開發平臺,它包括一套完整的面向嵌入式系統的開發和調測工具[2]。在Tornado II中,包括高性能的實時操作系統VxWorks、原代碼編輯器、C/C++編譯器、高性能的調試器、圖形化的瀏覽器,集成的模擬器等工具和組件。 最主要的特點是:Tornado支持動態鏈接和加載,允許開發者增量式地加載目標模塊到目標系統。動態鏈接和加載目標模塊的能力作為Tornado結構的核心,使開發者避免了在宿主機上鏈接應用到內核,然后再下載整個可執行體到一個靜態環境的這樣通常采用的步驟。這樣,就大大地縮短了每個編輯—測試—調試的周期。 Tornado II工具提供一個高度可視化和自動化的開發環境,加快了基于VxWorks的應用開發。 3 開發方案 3.1 系統引導程序編程與bootrom燒寫 (1)系統引導程序編程 目標系統啟動工作首先要進行系統初始化,對不同的CPU,系統初始化的基本步驟是類似的,主要步驟如下: 啟動; 禁止中斷; 放boot type(引導類型)到堆棧; 清空指令和數據緩存。 VxWorks 系統的 PowerPC BSP系統開機后,處理器是從romInit()函數開始執行,這是romInit.s 中的第一段程序。在romInit()函數中必須完成以上功能,這些功能程序通常使用匯編語言來寫。在romInit()程序中開始執行C程序之前必須盡可能少的加載設備。引導程序結束時,得到C程序romStart()在ROM中的地址,保證romInit執行結束后,系統跳轉執行romStart(),將文本和數據段從ROM復制到RAM中。 在系統初始化程序段中,可加入串口初始化程序和驅動程序,使系統引導結束后可支持使用串口傳輸命令和信息。加入下載命令程序段,以便于下載VxWorks內核鏡像文件。 (2)bootrom燒寫 bootrom燒寫方式有多種,可以使用編程器編程,但對于在線系統調試,為方便修改,現在使用較多的是JTAG 調試器和BDM調試器。我們的系統采用的是MPC系列的CPU MPC860,它提供有BDM接口。因此可以很方便的使用BDM 調試工具編程。 MPC BDM調試工具通過宿主機的打印口與MPC BDM接口電纜相連,然后加到目標板的BDM接口上。連接BDM和目標板的電源,(此時也可以將串口線和網線連接到主機上)。在燒寫程序之前,將以上編寫的程序編譯成二進制目標代碼拷貝到c:\\sds74\\cmd\\init下。 打開SDS74調試軟件,首先要下載燒寫boot的文件,然后執行run/go命令,大約需要幾分鐘,boot燒寫完成。 將boot燒好后,拔掉bdm和目標板的電源以及bdm電纜,然后再插上目標板的電源,boot將運行,正常時會在主機的串口超級終端顯示如下信息:BOOT>,此時可以說boot燒寫成功。 3.2下載和運行VxWorks內核鏡像 在可引導的MPC860嵌入式平臺上,使用串口和網絡傳輸數據,進行BSP和應用程序調試。相對于使用串口傳輸數據,使用網絡傳輸具有速度快,因此使用串口進行發送命令和返回信息,使用網口傳輸數據[6](如圖1)。
主機 目標機
WindRiver公司提供了很多基于不同硬件平臺的典型的板級支持包BSP。因此,開發基于VxWorks的實用板級支持包是盡量獲得一個與目標板硬件環境相近的參考板級支持包和相關代碼模板,再根據目標板硬件環境,完成板級支持包包含的驅動程序及設備初始化,從而完成板級支持包的開發[4]。 啟動Tornado II集成開發環境,使用工程向導創建一個可啟動工程(bootable VxWorks image)項目,選擇基于ads860的BSP。在這個工程項目里可以進行BSP的基本配置、VxWorks的基本配置、網卡配置等,結合實際電路和應用進行修改,創建用戶自己的BSP以支持特定硬件。前述bootrom程序也可由此生成。在此階段可以借助WDB調試代理和Tornado工具輔助開發,也可以選擇在線仿真器ICE輔助開發。 BSP 調試完成,編譯此工程項目為一個VxWorks內核鏡像文件*.img,在以后的應用程序調試過程中可通過Tornado的一個部件 ftp server下載。下載方法如下: 首先連接主機與目標板的網線和串口線,目標板上電后,在超級終端窗口3秒以內按回車鍵進入boot shell;否則,目標機系統會進入自動尋找并運行程序狀態。 此時啟動和配置ftp server,選擇Security菜單中的user/rights命令,添加一個用戶名如target,密碼target,設置主目錄為C:\\;然后點擊Done。ftp server配置完成。 現在需要設置主機ip地址。將主機ip設為192.168.1.1,子網掩碼255.255.255.0。將調試好的VxWorks鏡像文件*.img拷貝到C:\\。 最后,在主機的串口超級終端中輸入設置好的下載命令@,目標板開始從主機的ftp server下載*.img(vxworks的ram鏡像)。 下載完成,*.img文件自動運行,在超級終端窗口顯示vxworks鏡像在目標板啟動成功的信息,此時vxworks內核已經成功裝載到目標板,可以同主機的tornado(vxworks的集成開發環境)進行連接了。 3.3 在tornado中編寫和運行應用程序 當上述環境配置成功后就可以進行應用程序開發了。在tornado集成開發環境中可以開發并調試各種應用程序,添加程序并編譯成功后就可以下載到目標板上進行調試了。下面通過一個應用程序調試示例加以說明。 4 開發應用程序示例 4.1 開發并編譯程序 啟動Tornado II集成開發環境,使用工程向導創建一個可下載工程(downloadable application modules)項目project1,在創建過程中選擇工具鏈(toolchain)為PPC860gnu。在工程項目中編寫或添加應用程序源文件,如一個Hello.c文件。 #include "vxworks.h" #include "drv/multi/ppc860Siu.h" void root() { printf("hello!How are you?\\n"); /*在終端輸出此信息*/ } #define PD10 (0x0020) #define PD09 (0x0040) #define RUNLIGHT PD10 #define LINKLIGHT PD09 void RunLight(void) { int immrVal = vxImmrGet(); *PDDIR(immrVal)|=RUNLIGHT; while(1) { *PDDAT(immrVal) ^=RUNLIGHT; taskDelay(sysClkRateGet()/2);/*delay 0.5 second*/ } } void run() { taskSpawn ("RunLight", 100,0 /*switchTaskOptions*/,0x1000, (FUNCPTR)RunLight, 0,0,0,0,0,0,0,0,0,0); } /*通過以上函數創建并激活一個新任務,點亮系統指示燈*/ 4.2 配置和運行target server 使用Tornado編譯器編譯成功后下載。下載之前首先要配置和運行target server,在菜單tool/target server/configure中,先點擊new新建一個配置如configuration1, 然后開始配置。 在target server proportion 項的“Back End”的選項中選擇wdbrpc; 在target server proportion 項的“Core File and Symbols”的選項中設置vxworks鏡像文件位置為C:\\; 在target name/ip address輸入目標板的ip 地址192.168.1.254; 配置完成,點擊Launch運行; 下面可以下載和運行應用程序了。 4.3下載和運行程序 在工程上點擊右鍵,選擇download project1.out下載應用程序到目標板,然后可以在Tornado中的shell里運行應用程序了,如在shell中運行hello.c中的root函數(在shell中打印hello!How are you?)和run(目標板的run燈會閃亮)。 在每次下載調試應用程序或添加新的應用程序時都不需要把它們和vxworks內核編譯到一起,這樣節省了開發和調試時間。 5 總結 本文描述了基于嵌入式實時操作系統VxWorks的開發方法,憑借性能優良的VxWorks和高度集成的開發環境,VxWorks的應用已成為新的研究熱點。在開發過程中使用相近的BSP開發用戶自己的板級支持包,難度降低了并縮短了開發時間,使用ftp server下載VxWorks內核鏡像,使用Torndo 工具編譯、調試和下載應用程序。通過這樣的流程對應用程序的開發帶來了極大的方便,該方法已得到廣泛應用。 本文作者創新點:對基于VxWorks嵌入式操作系統在MPC8XX系列cpu上的開發過程進行了具體而實用的描述。有一定的應用價值。
|