LCDHome论坛_ZORAN软件流程

LCDHome论坛_ZORAN软件流程

ID:38581018

大小:59.00 KB

页数:9页

时间:2019-06-15

LCDHome论坛_ZORAN软件流程_第1页
LCDHome论坛_ZORAN软件流程_第2页
LCDHome论坛_ZORAN软件流程_第3页
LCDHome论坛_ZORAN软件流程_第4页
LCDHome论坛_ZORAN软件流程_第5页
资源描述:

《LCDHome论坛_ZORAN软件流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ZORAN软件流程ZORAN966/962采用PARADIGMC++编译系统,其编译程序入口文件为c0.asm。c0.asm中定义了CPU级系统上电初始化所需执行的操作以及相关的定义。C0.asm中定义了整个系统的入口函数_startup,定义如下:BegProc_startup,far;CPU启动程序入口CPU系统堆栈,内存(ROM->RAM),段寄存器,BSS区等初始化callInitialize;初始化数据寄存器和代码寄存器,指定应用程序入口callmain;CPU初始化完成,调用应用程序入口main()函数pushaxcal

2、lexit;从main函数中返回jmp_startup;跳回到CPU启动程序入口EndProc_startup应用程序入口main()函数定义在main.c文件中。Main()函数流程如下:屏蔽中断等功能以便系统初始化_disable()初始化中断索引表InitInterruptVectorTable()配置IO口和GPIO口HAL_Init()初始化和使用UART口(UART1)init_serio()初始化内核Ker_Init()初始化FE,硬件和软件模块drv_dispatch()内核初始化函数Ker_Init()定义如下:v

3、oidKer_Init(void){g_cUICoreMsgSent=0;g_cPlayFileMsgSent=0;//复位内核状态kernalStatus.bCoreInitDone=FALSE;kernalStatus.bDecodeInitDone=FALSE;kernalStatus.bDriveInitDone=FALSE;kernalStatus.bUIInitDone=FALSE;Ker_createSystemTasks();//创建系统任务TimersInit();//初始化计数器/定时器start_rtos();

4、//启动实时操作系统(RTOS)Ker_startSystemTasks();//启动系统任务return;}初始化FE,硬件和软件模块函数drv_dispatch()定义如下:voiddrv_dispatch(void){BOOLpower_on=TRUE;InterruptEnable();//开中断while(!kernalStatus.bCoreInitDone)//等待内核任务初始化完成{Ker_SleepUs(5000UL);}ZFE_Init();//配置FE硬件部分ZFE_InitSubModules(power_o

5、n,TRUE);//初始化子模块//设置驱动任务初始化完成标志kernalStatus.bDriveInitDone=TRUE;ZFE_Main(power_on);//初始化完成,进入drive-driver死循环}drive-driver死循环函数ZFE_Main是时间处理主函数,它接收来自系统或用户的消息,然后调用相关模块进行处理。定义如下:voidZFE_Main(BOOLpower_on){PMQ_MSGcurr_msg;PMQ_ReceiveMessage(&curr_msg);//接收一条新消息PMQ_DeleteMs

6、gQueTail();//从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);}}}}在系统初始化完成后,整个系统的运行就是一个接收消息(事件)和处理消息(事件)的过程。系统初始化过程中利用函数Ker_createSystemTasks()和Ker_startSyste

7、mTasks()分别创建和启动了以下3个任务:1,内核任务(CORE),对应执行代码函数core_dispatch()2,用户接口任务(UI),对应执行代码函数ui_dispatch()3,解码任务(DECODE),对应执行代码函数DCD_Main()注意:如果定义了宏_DEBUG,则会新增一个debug任务。三个任务会分时的使用CPU以实现正常工作,下面我们对三个任务执行部分作说明:1,内核任务core_dispatch()函数,定义如下:voidcore_dispatch(void){EVENTevt;void*param;_e

8、nable();//打开中断等功能。while(!kernalStatus.bDecodeInitDone){//等待解码任务初始化完毕Ker_SleepUs(5000L);//sleep5ms}core_init();//初始化内核

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。