<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于A(yíng)VR的鉛酸蓄電池管理系統設計

基于A(yíng)VR的鉛酸蓄電池管理系統設計

作者: 時(shí)間:2010-03-18 來(lái)源:網(wǎng)絡(luò ) 收藏
4. 系統軟件
軟件主要是 uC/OS-II移植和任務(wù)的編寫(xiě)。uC/OS-II是一個(gè)免費的、可裁減、源碼開(kāi)放、結構小巧、搶占式的實(shí)時(shí)多任務(wù)嵌入式內核,主要面向中小型嵌入式系統,具有執行效率高、占用空間小、可移植性強、實(shí)時(shí)性能優(yōu)良和可擴展性強等特點(diǎn)[2]。
為了方便移植,絕大部分 uC/OS-II的代碼是用 ANSI C語(yǔ)言編寫(xiě)的;但是仍需要用 C語(yǔ)言和匯編語(yǔ)言寫(xiě)一些與處理器硬件相關(guān)的代碼,這是因為uC/OS-II在讀/寫(xiě)處理器寄存器時(shí),只能通過(guò)匯編語(yǔ)言來(lái)實(shí)現。與處理器相關(guān)的代碼包括 OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三個(gè)文件,所以移植的主要任務(wù)就是修改這三個(gè)文件。
(1) 在修改 OS_CPU.H中與處理器和編譯器相關(guān)的代碼時(shí)要注意幾點(diǎn) [3]:
(a)不同的處理器有不同的字長(cháng),uC/OS-II為了確保其可移植性,不使用 C的int,short,long等數據類(lèi)型,因為這些數據類(lèi)型是與編譯器相關(guān)的,是不可移植的。
(b)修改 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個(gè)宏。uC/OS-II需要先禁止中斷再訪(fǎng)問(wèn)代碼的臨界區,并且在訪(fǎng)問(wèn)完畢后重新允許中斷。OS_ENTER_CRITICAL()的功能是關(guān)中斷,在 S3C2410上通過(guò) OS_CPU_A.ASM中的 INTS_OFF()函數來(lái)實(shí)現。OS_EXIT_CRITICAL()用于開(kāi)中斷,通過(guò) OS_CPU_A.ASM中的INTS_ON()函數來(lái)實(shí)現。

本文引用地址:http://dyxdggzs.com/article/166757.htm

(c)OS_STK_GROWTH用來(lái)定義堆棧生長(cháng)方式, 置 0表示堆棧從下往上增長(cháng),置 1表示
堆棧從上向下增長(cháng)。而在本中使用的是堆棧從上向下增長(cháng) S3C2410處理器,所以置1。(d)OS_TASK_SW()是一個(gè)任務(wù)切換宏,用于從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)。它將任務(wù)切換函數OSCtxSw()封裝起來(lái)。
(2) 修改OS_CPU_C.C中與操作系統相關(guān)的OSTaskStkInit()函數
OSTaskStkInit()用于任務(wù)堆棧初始化,OSTaskCreate()和 OSTaskcreateExt()通過(guò)調用OSTaskStkInit()來(lái)初始化任務(wù)的堆棧結構。圖 3顯示了OSTaskStkInit()在建立任務(wù)時(shí),任務(wù)堆棧初始化的形式。



(3) 編寫(xiě)OS_CPU_A.ASM中4個(gè)與處理器相關(guān)的函數
OSStartHighRdy( )在程序中被 OSStart( )函數調用,作用是使就緒任務(wù)中優(yōu)先級最高的任務(wù)開(kāi)始運行。 OSCtxSw()是任務(wù)級的任務(wù)切換函數,通過(guò)執行軟中斷指令,或者依據處理器的不同,執行TPAR(陷阱)指令來(lái)實(shí)現。OSIntCtxSw()是中斷級任務(wù)切換函數,通過(guò)調用它,可以在 ISR中執行任務(wù)切換功能。OSTickISR()為 uC/OS-II提供一個(gè)周期性的時(shí)鐘源,來(lái)實(shí)現時(shí)間的延遲和超時(shí)功能。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>