TrueFFS上VxWorks 應用程序的啟動(dòng)及動(dòng)態(tài)更新
引 言
在嵌入式產(chǎn)品中,一般使用Flash作為應用程序代碼及各種數據和參數的存儲介質(zhì)。尤其是NOR Flash具有操作接口簡(jiǎn)單、傳輸效率高、芯片內執行(eXecute In Place,XIP)的特點(diǎn),在電力、鐵路等工業(yè)控制領(lǐng)域得到了廣泛應用。
為了便于用戶(hù)的使用,VxWorks操作系統提供了基于Flash的文件系統,即TrueFFS。TrueFFS與DosFS文件系統基本兼容,通過(guò)VxWorks提供的操作接口以文件的方式實(shí)現對Flash的操作。而對于用戶(hù)來(lái)說(shuō),如何在自己的硬件系統上根據Flash的具體型號和使用要求實(shí)現TrueFFS系統,并在此基礎上完成應用程序代碼的靈活啟動(dòng)、更新,同時(shí)兼顧仿真調試的需求,則非常重要。
1 系統基本功能
本系統應用于鐵路牽引自動(dòng)化系統中,實(shí)現在電氣化鐵路供電系統中對相關(guān)電力設備的保護、測量和控制功能。系統基本功能框圖如圖1所示。核心CPU選用Freescale公司的ColdFire系列32位微控制器MCF5234。該處理器內部集成了UART、SPI、I2C、ETPU、CAN、以太網(wǎng)等豐富的功能模塊,系統主頻可達150 MHz,主要用于工業(yè)控制、智能家電等方面(尤其是電力自動(dòng)化控制領(lǐng)域)。系統通過(guò)2路以太網(wǎng)接口實(shí)現與當地或遠方設備的通信,維護串口用來(lái)實(shí)現對本設備的維護,采用2片16位接口的NOR Flash實(shí)現應用程序和有關(guān)參數及數據的存儲。系統提供模擬量輸入、數字量輸入、數字量輸出等接口。有關(guān)的模擬量及開(kāi)關(guān)量狀態(tài)信息經(jīng)過(guò)對應接口采集到系統內部,經(jīng)過(guò)保護算法軟件的處理后,再通過(guò)數字量輸出接口完成對有關(guān)設備的控制操作。
在傳統嵌入式系統中,編譯好的運行態(tài)應用程序一般通過(guò)硬件調試工具(如BDM調試器)直接固化到程序Flash的指定位置,裝置上電或復位后,CPU直接跳轉到Flash的起始位置,從Flash中取指并開(kāi)始執行。但是在VxWorks中,采用該方式不方便軟件的仿真調試,需要重新固化bootrom才行。另外,由于系統要求保存較多的參數和數據,需要在2片Flash中都實(shí)現TrueFFS系統;并且為了滿(mǎn)足動(dòng)態(tài)更新程序的要求,還需要實(shí)現FTP的功能。因此,需要實(shí)現如下功能:在2片Flash上實(shí)現True-FFS;在bootrom和應用VxWorks程序上實(shí)現TrueFFS和FTP的加載;對bootrom進(jìn)行改造,以實(shí)現應用VxWorks程序和調試VxWorks程序分別通過(guò)TrueFFS和TFTP的方式啟動(dòng)。
2 TrueFFS的實(shí)現及加載
2.1 TrueFFS的層次結構
如圖2所示,VxWorks中TrueFFS的層次結構包括內核層、翻譯層、socket層、MTD層。由于VxWorks對TrueFFS進(jìn)行了優(yōu)秀的層次劃分和封裝,用戶(hù)一般不需要對上述基本層次代碼進(jìn)行修改。MTD層實(shí)現了對常用幾種類(lèi)型Flash的讀、寫(xiě)、擦除等基本控制。如果用戶(hù)選用了支持的類(lèi)型,則基本不需要編寫(xiě)代碼;而如果用戶(hù)選用了特殊類(lèi)型的Flash,則可以參考用例代碼完成對應MTD層代碼的編寫(xiě)。
評論