已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ZORAN軟件流程 ZORAN966/962采用PARADIGM C編譯系統(tǒng),其編譯程序入口文件為c0.asm。c0.asm中定義了CPU級系統(tǒng)上電初始化所需執(zhí)行的操作以及相關的定義。C0.asm中定義了整個系統(tǒng)的入口函數(shù)_startup,定義如下:BegProc_startup, far; CPU啟動程序入口CPU系統(tǒng)堆棧,內存(ROM-RAM),段寄存器,BSS區(qū)等初始化callInitialize ;初始化數(shù)據(jù)寄存器和代碼寄存器,指定應用程序入口callmain ;CPU初始化完成,調用應用程序入口main()函數(shù)pushaxcallexit ;從main函數(shù)中返回jmp _startup ;跳回到CPU啟動程序入口EndProc_startup 應用程序入口main()函數(shù)定義在main.c文件中。Main()函數(shù)流程如下:屏蔽中斷等功能以便系統(tǒng)初始化_disable()初始化中斷索引表InitInterruptVectorTable()配置IO口和GPIO口HAL_Init()初始化和使用UART口(UART1)init_serio()初始化內核Ker_Init()初始化FE,硬件和軟件模塊drv_dispatch()內核初始化函數(shù)Ker_Init()定義如下:void Ker_Init(void)g_cUICoreMsgSent = 0;g_cPlayFileMsgSent = 0; /復位內核狀態(tài)kernalStatus.bCoreInitDone = FALSE;kernalStatus.bDecodeInitDone = FALSE;kernalStatus.bDriveInitDone = FALSE;kernalStatus.bUIInitDone = FALSE;Ker_createSystemTasks(); /創(chuàng)建系統(tǒng)任務 TimersInit(); /初始化計數(shù)器/定時器 start_rtos(); /啟動實時操作系統(tǒng)(RTOS) Ker_startSystemTasks(); /啟動系統(tǒng)任務return;初始化FE,硬件和軟件模塊函數(shù)drv_dispatch()定義如下:void drv_dispatch(void)BOOL power_on = TRUE; InterruptEnable(); /開中斷while (!kernalStatus.bCoreInitDone) /等待內核任務初始化完成Ker_SleepUs(5000UL);ZFE_Init(); /配置FE硬件部分ZFE_InitSubModules(power_on,TRUE); /初始化子模塊/設置驅動任務初始化完成標志kernalStatus.bDriveInitDone = TRUE;ZFE_Main(power_on); /初始化完成,進入drive-driver死循環(huán)drive-driver死循環(huán)函數(shù)ZFE_Main是時間處理主函數(shù),它接收來自系統(tǒng)或用戶的消息,然后調用相關模塊進行處理。定義如下:void ZFE_Main(BOOL power_on)PMQ_MSG curr_msg;PMQ_ReceiveMessage(&curr_msg); /接收一條新消息PMQ_DeleteMsgQueTail();/從PMQ消息隊列中刪除一條舊消息if (power_on)while(1)if(curr_msg.op&PMQ_MSG_TYPE_MASK)=CARD_MSG_ID) /智能卡的消息處理 Card_Handler(&curr_msg);else /碟片的消息處理DISC_Handler(&curr_msg);在系統(tǒng)初始化完成后,整個系統(tǒng)的運行就是一個接收消息(事件)和處理消息(事件)的過程。系統(tǒng)初始化過程中利用函數(shù)Ker_createSystemTasks()和Ker_startSystemTasks()分別創(chuàng)建和啟動了以下3個任務:1, 內核任務(CORE),對應執(zhí)行代碼函數(shù)core_dispatch()2, 用戶接口任務(UI),對應執(zhí)行代碼函數(shù)ui_dispatch()3, 解碼任務(DECODE),對應執(zhí)行代碼函數(shù)DCD_Main()注意:如果定義了宏_DEBUG,則會新增一個debug任務。三個任務會分時的使用CPU以實現(xiàn)正常工作,下面我們對三個任務執(zhí)行部分作說明:1, 內核任務core_dispatch()函數(shù),定義如下:void core_dispatch(void)EVENT evt;void *param;_enable(); /打開中斷等功能。while (!kernalStatus.bDecodeInitDone) /等待解碼任務初始化完畢Ker_SleepUs(5000L); / sleep 5mscore_init(); /初始化內核任務/修改核心任務初始化完成標志kernalStatus.bCoreInitDone = TRUE; /下面是內核任務主循環(huán)while (TRUE)/等待內核任務事件(消息)evt = Ker_RecvEvent(EVENT_CLASS_CORE, ¶m); /將事件(消息)發(fā)給內核處理機run_all_core_handlers(HDLR_EVENT, evt, param);acknowledge_event(evt); /確認并處理事件(消息)初始化內核任務函數(shù)core_init()定義如下:static void core_init(void)ResetWatchdogVars(); /復位watchdogPS_Restore(); / 恢復用戶設置(菜單等)DEC_PowerUp(); /上電/ 初始化PBC模塊PBC_Command(PBC_CMD_INIT, NULL, NULL);VFD_InitDisplay(); / 初始化前面板(FP)Logo_display(eStartup); /顯示開機LOGOdrv_init(); /復位LOADERg_power_state = POWER_SEQUENCE_IN_ON_STATE; /建立內核非播放(廣義)事件狀態(tài)處理機,執(zhí)行函數(shù)no_disc_fsm()install_core_event_handler(no_disc_fsm); /建立內核瀏覽事件處理機,執(zhí)行函數(shù)BrowseHandlerinstall_core_event_handler(BrowseHandler);/ 初始化書簽core_clear_bookmark_info(0); /* Clear all bookmarks */inport(GPCIO_STATUS_ADDR); ir_init(); /初始化遙控器模塊fp_init(); /初始化前面板模塊內核任務(CORE)通過其初始化函數(shù)core_init()建立了內核非播放(廣義)事件狀態(tài)處理機和內核瀏覽事件處理機兩個處理機,他們的執(zhí)行函數(shù)分別為no_disc_fsm和BrowseHandler。2, 用戶接口任務(UI)函數(shù)ui_dispatch(),定義如下:void ui_dispatch(void)EVENT evt;void *param;_enable();/打開中斷等功能。 /等待內核任務(CORE)和解碼任務(DECODE)初始化完成while (!kernalStatus.bCoreInitDone | !kernalStatus.bDecodeInitDone | !kernalStatus.bDriveInitDone)Ker_SleepUs(5000L); /* sleep 5 ms */ /建立UI事件(消息)處理機,執(zhí)行代碼為UI_EventHandler函數(shù)install_ui_event_handler(UI_EventHandler); /建立面板事件(消息)處理機,執(zhí)行代碼為FP_EventHandler函數(shù)install_ui_event_handler(FP_EventHandler); /設置用戶接口任務(UI)完成標志kernalStatus.bUIInitDone = TRUE;/ 打開計數(shù)器,至此所有任務初始化完成outport(IMASK, (inport(IMASK) & (IMASK_TMR);/UI任務主循環(huán)while (1)/等待UI事件(消息)evt = Ker_RecvEvent(EVENT_CLASS_UI, ¶m);/將接收到的事件(消息)發(fā)給UI處理機run_all_ui_handlers(HDLR_EVENT, evt, param); /確認和處理UI事件(消息)acknowledge_event(evt);UI任務函數(shù)共定義了2個處理機,分別用來處理一般UI事件和面板UI事件。對應的函數(shù)分別為UI_EventHandler和FP_EventHandle
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024學校實驗室設備更新及維修服務合同3篇
- 2024店鋪轉讓協(xié)議書
- 2024模具智能制造技術研發(fā)合同
- 2024標準版兩居室房車短期租賃合同版
- 2024服裝工裝定制合同
- 2024青島運動會官方用車租賃服務協(xié)議3篇
- 2024年行車設備安裝與維護合同3篇
- 2024年版城市供水項目特許經(jīng)營權協(xié)議
- 2024運營總監(jiān)國際業(yè)務拓展與跨國合作合同3篇
- 2025年度網(wǎng)絡安全技術股權合作與轉讓合同3篇
- 《低壓電工技術》課程標準
- 22G101系列圖集常用點全解讀
- (國家基本公共衛(wèi)生服務項目第三版)7高血壓患者健康管理服務規(guī)范
- 12 富起來到強起來 精神文明新風尚(說課稿)-部編版道德與法治五年級下冊
- (43)-7.2羊肚菌高效栽培
- 中級消防維保理論考試試題題庫及答案
- 讀書會熵減華為活力之源
- 竣工圖繪制規(guī)范及標準
- 二年級上學期數(shù)學
- GB/T 37433-2019低功率燃油燃燒器通用技術要求
- GB/T 3098.5-2000緊固件機械性能自攻螺釘
評論
0/150
提交評論