vxworks的三種映像形式

2021-08-20 15:06:41 字數 1625 閱讀 9223

根據應用場合不同,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 隨機梯度下降是通...