日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]1 VxWorks交叉開發(fā)模式在VxWorks下應用軟件開發(fā)時采用交叉開發(fā)模式,宿主機通常是普通的PC機,目標機就是應用程序真實的運行的硬件平臺;集成開發(fā)環(huán)境Tornado位于宿主機,用

1 VxWorks交叉開發(fā)模式

在VxWorks下應用軟件開發(fā)時采用交叉開發(fā)模式,宿主機通常是普通的PC機,目標機就是應用程序真實的運行的硬件平臺;集成開發(fā)環(huán)境Tornado位于宿主機,用戶通過Tornado開發(fā)環(huán)境完成代碼編寫、編譯、鏈接,宿主機與目標機通過分別位于其上的Target Server和Target Agent實現(xiàn)信息交互,物理連接往往是串口或者網(wǎng)絡,在開發(fā)調(diào)試過程中,用戶將編譯鏈接后的目標代碼通過Target Server加載到目標機上運行,可以通過Tornado下的Shell、Debugger、Browser以及Windview等工具監(jiān)控目標機上應用程序任務的運行情況,應用程序使用printf語句打印的調(diào)試信息回送到宿主機,借助打印信息和Tornado提供的各種調(diào)試工具,開發(fā)者可以監(jiān)控任務的運行情況,當某個任務出錯時,可以通過各種輸出信息分析問題原因。

但是一旦完成開發(fā)投入實際試驗使用, 由于實際使用環(huán)境和當初的開發(fā)調(diào)試環(huán)境有較大的區(qū)別,難免會出現(xiàn)各種異常情況,比較常見的異常就是任務掛起,在這種情況下開發(fā)者往往無法像在地面調(diào)試時那樣可以外接調(diào)試電纜捕獲異常信息, 以確定發(fā)生異常的任務,也無法捕獲開發(fā)者在開發(fā)過程中的輔助打印信息,這種情況在戰(zhàn)斗機機載軟件尤為常見?;赩xWorks的應用軟件大多采用多任務方式,無法像以前沒有操作系統(tǒng)的嵌入式系統(tǒng)那樣,通過硬件看門狗電路,在軟件運行出錯時自動重啟恢復軟件運行,一個任務出錯往往并不會引起操作系統(tǒng)重啟,用戶通過上層很難判斷應用軟件運行是否正常。因此需要建立軟件看門狗機制,監(jiān)控任務運行情況,在出現(xiàn)異常時記錄必要的異常信息,自動重啟設備。同時,需像開發(fā)階段那樣記錄輸出信息,以輔助分析異常原因。

2 系統(tǒng)輸出信息捕獲

在VxWorks下系統(tǒng)輸出信息包括:標準輸出(STD_OUT,文件描述為1)和標準錯誤輸出(STD_ERR,文件描述為2)。使用printf、IogMsg語句等輸出的信息,以及用戶和操作系統(tǒng)其他的打印輸出信息均通過STD_OUT輸出,而STD_ERR則是在系統(tǒng)出錯時使用,例如:

data access

Exception current instruction address:0x00072054

Machine Status Register:0x0000b030

Data Access Register:0xeeeeeef2

Condition Register:0x22000040

Data storage interrupt Register:0x0000b030

Task:0x1c9e50 "RadarProc"

上面的打印信息是任務“RadarProc”出錯時操作系統(tǒng)輸出的錯誤信息,通過STD_ERR文件描述符輸出的。

STD_OUT和STD_ERR可以分別輸出,但是通常情況下它們均定向到控制臺(consoleFd),即在交叉開發(fā)模式下通過目標機Target Agent和宿主機的Target Server輸出到串口或者網(wǎng)絡。在VxWorks下操作系統(tǒng)提供ioGIobalStdSet接口函數(shù)支持輸出重定向,函數(shù)原型:

void ioGIobaIStdSet(int stdFd,int newFd)

其中stdFd為STD_OUT(1)或者STD_ERR(2),newFd為重定向的文件描述符。利用這個函數(shù)就可以實現(xiàn)系統(tǒng)輸出信息的捕獲,具體方法如下:

FILE* printf_stream = fopen("/ide0/log.txt","a+" ):

ioGlobalStdSet(STD_OUT,fileno(printf_stream));

ioGlobalStdSet(STD_ERR,fileno(printf_stream));

在上面的代碼中,在設備/ide0(電子盤)上打開名為log.txt的文件,打開方式為追加式,將STD_OUT和STD_ERR重定向到printf_stream 指向的文件。需要注意的是,不能像平常那樣關(guān)閉printf_stream 文件指針,這樣就可以將系統(tǒng)的所有輸出信息保存在文件log.txt中。

3 任務監(jiān)控

3.1任務狀態(tài)

VxWorks下任務有四種基本狀態(tài):READY、PEND、DELAY、SUSPEND,在用戶不使用Shell命令人為改變?nèi)蝿諣顟B(tài)前提下,如果狀態(tài)中出現(xiàn)SUSPEND,就說明該任務已經(jīng)出錯。

3.2任務監(jiān)控設計

任務監(jiān)控需要周期性的監(jiān)測操作系統(tǒng)中所有運行的任務狀態(tài),發(fā)現(xiàn)某任務出錯時記錄任務的相關(guān)基本信息,并自動重啟。任務監(jiān)控必須兩個操作系統(tǒng)接口函數(shù):

int taskIdListGet(int idList[],int maxTasks)

STATUS taskStatusString(int tid,char* pString)

taskIdListGet函數(shù)可以獲得當前操作系統(tǒng)中運行的所有任務,idList存放獲取的任務id的數(shù)組,maxTasks為數(shù)組大小。taskStatusString獲取任務狀態(tài)名稱,tid是任務id,pString為任務狀態(tài)名稱。

在發(fā)現(xiàn)時任務出錯時通過回調(diào)函數(shù)告訴用戶出錯任務情況,出錯任務數(shù)據(jù)結(jié)構(gòu):

struct TroubleTaskStruct

{

int taskID;//出錯任務id

char taskName[256];//任務名稱

char taskState[32];//任務狀態(tài)

};

回調(diào)函數(shù)原型:

typedef void (*TroubleTaskFuncPtr)(const TroubleTaskStruct troubleTaskVector,int troubleTaskNum);

4 結(jié)束語

嵌入式系統(tǒng)應用軟件完成開發(fā)調(diào)試后,在隨后的試驗階段很難象調(diào)試階段那樣得到任務狀態(tài)等輸出信息,一旦出現(xiàn)任務異常,因為缺乏發(fā)生異常時的相關(guān)信息,很難判斷和分析問題,給解決問題帶來很大難度,使用任務監(jiān)控和系統(tǒng)信息捕獲技術(shù)可以有效地解決此類問題。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉