LCDHome論壇_ZORAN軟件流程

LCDHome論壇_ZORAN軟件流程

ID:38581018

大?。?9.00 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2019-06-15

LCDHome論壇_ZORAN軟件流程_第1頁(yè)
LCDHome論壇_ZORAN軟件流程_第2頁(yè)
LCDHome論壇_ZORAN軟件流程_第3頁(yè)
LCDHome論壇_ZORAN軟件流程_第4頁(yè)
LCDHome論壇_ZORAN軟件流程_第5頁(yè)
資源描述:

《LCDHome論壇_ZORAN軟件流程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、ZORAN軟件流程ZORAN966/962采用PARADIGMC++編譯系統(tǒng),其編譯程序入口文件為c0.asm。c0.asm中定義了CPU級(jí)系統(tǒng)上電初始化所需執(zhí)行的操作以及相關(guān)的定義。C0.asm中定義了整個(gè)系統(tǒng)的入口函數(shù)_startup,定義如下:BegProc_startup,far;CPU啟動(dòng)程序入口CPU系統(tǒng)堆棧,內(nèi)存(ROM->RAM),段寄存器,BSS區(qū)等初始化callInitialize;初始化數(shù)據(jù)寄存器和代碼寄存器,指定應(yīng)用程序入口callmain;CPU初始化完成,調(diào)用應(yīng)用程序入口main()函數(shù)pushaxcal

2、lexit;從main函數(shù)中返回jmp_startup;跳回到CPU啟動(dòng)程序入口EndProc_startup應(yīng)用程序入口main()函數(shù)定義在main.c文件中。Main()函數(shù)流程如下:屏蔽中斷等功能以便系統(tǒng)初始化_disable()初始化中斷索引表InitInterruptVectorTable()配置IO口和GPIO口HAL_Init()初始化和使用UART口(UART1)init_serio()初始化內(nèi)核Ker_Init()初始化FE,硬件和軟件模塊drv_dispatch()內(nèi)核初始化函數(shù)Ker_Init()定義如下:v

3、oidKer_Init(void){g_cUICoreMsgSent=0;g_cPlayFileMsgSent=0;//復(fù)位內(nèi)核狀態(tài)kernalStatus.bCoreInitDone=FALSE;kernalStatus.bDecodeInitDone=FALSE;kernalStatus.bDriveInitDone=FALSE;kernalStatus.bUIInitDone=FALSE;Ker_createSystemTasks();//創(chuàng)建系統(tǒng)任務(wù)TimersInit();//初始化計(jì)數(shù)器/定時(shí)器start_rtos();

4、//啟動(dòng)實(shí)時(shí)操作系統(tǒng)(RTOS)Ker_startSystemTasks();//啟動(dòng)系統(tǒng)任務(wù)return;}初始化FE,硬件和軟件模塊函數(shù)drv_dispatch()定義如下:voiddrv_dispatch(void){BOOLpower_on=TRUE;InterruptEnable();//開中斷while(!kernalStatus.bCoreInitDone)//等待內(nèi)核任務(wù)初始化完成{Ker_SleepUs(5000UL);}ZFE_Init();//配置FE硬件部分ZFE_InitSubModules(power_o

5、n,TRUE);//初始化子模塊//設(shè)置驅(qū)動(dòng)任務(wù)初始化完成標(biāo)志kernalStatus.bDriveInitDone=TRUE;ZFE_Main(power_on);//初始化完成,進(jìn)入drive-driver死循環(huán)}drive-driver死循環(huán)函數(shù)ZFE_Main是時(shí)間處理主函數(shù),它接收來(lái)自系統(tǒng)或用戶的消息,然后調(diào)用相關(guān)模塊進(jìn)行處理。定義如下:voidZFE_Main(BOOLpower_on){PMQ_MSGcurr_msg;PMQ_ReceiveMessage(&curr_msg);//接收一條新消息PMQ_DeleteMs

6、gQueTail();//從PMQ消息隊(duì)列中刪除一條舊消息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)初始化完成后,整個(gè)系統(tǒng)的運(yùn)行就是一個(gè)接收消息(事件)和處理消息(事件)的過(guò)程。系統(tǒng)初始化過(guò)程中利用函數(shù)Ker_createSystemTasks()和Ker_startSyste

7、mTasks()分別創(chuàng)建和啟動(dòng)了以下3個(gè)任務(wù):1,內(nèi)核任務(wù)(CORE),對(duì)應(yīng)執(zhí)行代碼函數(shù)core_dispatch()2,用戶接口任務(wù)(UI),對(duì)應(yīng)執(zhí)行代碼函數(shù)ui_dispatch()3,解碼任務(wù)(DECODE),對(duì)應(yīng)執(zhí)行代碼函數(shù)DCD_Main()注意:如果定義了宏_DEBUG,則會(huì)新增一個(gè)debug任務(wù)。三個(gè)任務(wù)會(huì)分時(shí)的使用CPU以實(shí)現(xiàn)正常工作,下面我們對(duì)三個(gè)任務(wù)執(zhí)行部分作說(shuō)明:1,內(nèi)核任務(wù)core_dispatch()函數(shù),定義如下:voidcore_dispatch(void){EVENTevt;void*param;_e

8、nable();//打開中斷等功能。while(!kernalStatus.bDecodeInitDone){//等待解碼任務(wù)初始化完畢Ker_SleepUs(5000L);//sleep5ms}core_init();//初始化內(nèi)核

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。