先講講BSP和BootRom之間的區(qū)別BSP只與“target/config/”下對應目錄相關
romInit.s定義系統(tǒng)的入口romInit函數(shù),系統(tǒng)上電最先執(zhí)行的代碼。romInit禁止CPU中斷,設置初始堆棧,配置DRAM控制器等少數(shù)CPU設置后調用第一個C程序romStart。進一步硬件初始化有sysLib.c中定義sysHeInit函數(shù)完成。romInit.s中的硬件初始化會在sysALib.s或sysLib.s重復一遍。因為vxworks程序只需要BootRom提供參數(shù)串和啟動代碼。而不依賴于BootRom的硬件初始化(除了RAM初始化)。BootRom和Vxworks的無關行是一個原則,若不遵循這個原則,就會出現(xiàn)Vxworks和BootRom的關聯(lián)修改。
從宏觀角度看來,一般是先加載BootRom;BootRom在加載VxWorks應用,并跳轉到Vxworks的入口sysInit執(zhí)行;VxWorks有可能根據(jù)啟動的腳本文件加載應用模塊。整個過程完成后,系統(tǒng)進入多任務環(huán)境。
對于PC兼容體系結構,CPU不能從這樣的存儲器中獲取指令執(zhí)行,而需要BIOS的輔助。BIOS講啟動盤的引導扇區(qū)復制到主內存空間,再跳內存的指定地址執(zhí)行。BIOS本身所處的存儲器時CPU可直接訪問執(zhí)行的。BIOS再加載程序映象時喲自己的規(guī)范,比如引導扇區(qū)的位置和大小等。BootRom自己能滿足這樣的要求,比如說大小,BootRom比一個扇區(qū)大了許多。BIOS不能直接加載BootRom,而只能先加載輔助的小程序Vxld。由于大小限制,Vxld不支持完善的文件系統(tǒng),所以要求啟動盤上的BootRom文件必須連續(xù)存放。Vxld再加載BootRom。由于硬件環(huán)境限制,Vxld必須做的非常小,不能啟動保護模式和支持翻檢系統(tǒng),因而限制了所能減災程序映象的大小和內存加載位置。啟動盤(如軟盤)的大小也會限制程序映象的大小。
也有可能由于環(huán)境影響,出現(xiàn)BootRom與Vxworks映象融合在一起的情況,可以直接從Rom啟動但是不靈活。
映象分類 類型
功能 BootRom,VxWorks,目標模塊,vxworks_rom
運行位置 ROM運行[rom-resident],RAM運行的
壓縮 壓縮的,非壓縮的
文家格式 標準執(zhí)行格式(如ELF),Hex格式(支隊Rom型的映象而言),而進制格式
符號表 Standalone,包含符號表和tshell等