根據應用場合不同,vxworks
映像可以分成三類:可載入的映像、基於rom的映像和駐留rom映像。
1.1可載入的映像
該種方式對應vxworks下的image工程,因此在編譯image工程時,實際上rominit.s檔案並不會被編譯,第乙個入口檔案為sysalib.s。
執行於ram,不包含搬移程式,需要借助一些外部程式如bootrom才能載入到ram的低端ram_low_adrs位址處。這是預設的開發映像。
優點:生成的vxworks映像可以存放在開發主機pc機上,不用燒到rom中,節省了rom容量,也便於隨時修改不同的映像,適用於除錯的初期階段。不足之處是需要在主機上維護乙個正確的映像,對於除錯硬體無關的上層應用程式不是很方便。
1.2基於rom的映像
該種方式對應vxworks下的"boot loader/bsp project"工程,在該工程的建立過程中,又可根據映像的壓縮形式手動選擇壓縮、非壓縮、駐留等,如下圖示,在該工程編譯過程中rominit.s檔案會被編譯,且作為其執行的第乙個入口檔案。
該映像是一種執行於ram中,但起初存放於rom中的映像,即該映像需要和搬移程式一起固化在boot中。換句話說,這種方式下不存在引導一說,固化到rom中的vxworks映象已經包含了引導相關的內容(rominit.s)。目標板上電後,首先執行boot中的引導搬移程式,將整個映像拷貝到ram位址ram_low_ards處,並跳轉到此處執行。(
bootstrap
將boot
程式搬移到
ram的高位址,再搬移映像到
ram的低位址並執行)
該映像根據是否被壓縮又可分為:
1.2.1 基於rom的未壓縮的vxworks映像
可以直接從rom拷貝到ram中;
1.2.2 基於rom的壓縮的映像
主要是為了節約rom空間,在從rom拷貝到ram的過程中需要解壓縮,因此與上述未壓縮的映像相比,它的引導過程相對較慢,但兩者在ram中的執行速度是一樣的。
1.2.3 駐留rom的映像
起初也和搬移程式一起固化在rom中,目標板上電後,首先執行boot中的引導搬移程式,但僅將映像的資料段和bss段拷貝到ram位址ram_low_adrs處,映像的**段仍舊留在
rom中(與
1.2.1和1.2.2
的區別),從rom中開始執行。
優點是具有最快的引導速度,占用最少的ram空間,適用於ram空間有限的目標板。但由於該映像在rom中執行,執行速度在三種映像中是最慢的。
番外:彙編級的硬體初始化程式rominit.s,用於系統的基本初始化,設定一些重要暫存器的初始值,進行儲存器對映
搬移程式bootinit.c,將rom引導程式拷貝至ram的高階位址ram_high_adrs,然後跳轉到此處執行rom引導程式。
rom引導程式起初存放在rom中,初始化時被拷貝到ram中,主要用於系統的進一步初始化,並配置載入方式,將映像載入至ram。
引導過程成功以後,ram中rom引導程式占用的空間(從ram_high_adrs開始)可以重新被系統利用。
ram_high_adrs
是rom引導程式的載入點,ram_low_adrs是vxworks的載入點。
if 語句的三種形式
if 語句的三種形式 第一種形式為基本形式 if 如果表示式的值為真,則執行其後的語句,否則不執行該語句。第二種形式為 if else 如果表示式的值為真,則執行語句1,否則執行語句2。第三種形式為 if else if 依次判斷表示式的值,當出現某個值為真時,則執行其對應的語句。然後跳到整個if語...
javascript三種函式形式
1.普通函式 function show message show test 定義 同python中函式定義方法一致,關鍵字替換為function 執行 呼叫方法和一般語言中呼叫方法一致,可有返回值 2.匿名函式 setinterval function 1000 a function messag...
梯度下降的三種形式
1 批量梯度下降法bgd 批量梯度下降法 batch gradient descent,簡稱bgd 是梯度下降法最原始的形式,它的具體思路是在更新每一引數時都使用所有的樣本來進行更新。優點 全域性最優解 易於並行實現 缺點 當樣本數目很多時,訓練過程會很慢。2 隨機梯度下降法sgd 隨機梯度下降是通...