邝坚_北邮嵌入式实验报告

邝坚_北邮嵌入式实验报告

ID:33316587

大小:266.11 KB

页数:14页

时间:2019-02-24

邝坚_北邮嵌入式实验报告_第1页
邝坚_北邮嵌入式实验报告_第2页
邝坚_北邮嵌入式实验报告_第3页
邝坚_北邮嵌入式实验报告_第4页
邝坚_北邮嵌入式实验报告_第5页
资源描述:

《邝坚_北邮嵌入式实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.嵌入式系统期末实验...一、实验要求题目:支持消息驱动模式的实时软件框架目的:在充分理解嵌入式处理器特点、RTOS及强实时嵌入式系统软件设计规范的基础上,构建自己的实时系统软件框架基本功能,并在其上自拟应用(如部分模拟TCP的C/S两端通信流程),测试软件框架的相关功能。环境:VxWorks的VxSim仿真环境或2440(ARM920T)内容:必选功能:1.消息驱动的Task统一框架,包含统一消息格式定义及使用规范;2.支持消息驱动模式的软定时器的机制;3.Task启动同步功能;4.体现前次实验中实现的自定义内存管理机制,最大限度降低外部碎片对系统可靠性的威胁。可选功能(

2、加分):其它有利于实时处理的有效机制,如:无信号量(互斥)支持的临界资源访问方式,zerocopy等;二、实现的功能1.消息驱动的Task统一框架,包含统一消息格式定义及使用规范;STATUSTask(){Initialization(MBox,DataStructure,Timer,etc.)Forever{MsgReceiveIf(…){……}elseif(…){……}……}}typedefstruct_MESSAGE{intmType;/*消息类型0:timer->client*1:client->server2:server->client*/intmSendId;

3、/*发送任务的MESSAGEID*/...intmRecvId;/*接收任务的MESSAGEID*/intmData;/*消息中传递的数据*/}MESSAGE;2.支持消息驱动模式的软定时器的机制;/*timer(id)向客户端消息队列定时发送的定时器*/STATUStimer(intid){MESSAGE*txMsg;/*用于从消息队列中接收消息*/inttick;/*创建一个定时,用于提醒发送者任务定时发送消息*/tick=sysClkRateGet();semTake(semSynStart,WAIT_FOREVER);FOREVER{taskDelay((int)(

4、tick*DELAY_SECOND));txMsg=(MESSAGE*)memMalloc(MAX_MSG_LEN);txMsg->mType=0;txMsg->mSendId=MID_TIMER(id);txMsg->mRecvId=MID_CLIENT(id);txMsg->mData=0;printf("tTimer%dsendmessagetotClient%d!",id,id);if(msgQSend(msgQIdClient[id],(char*)&txMsg,MAX_MSG_LEN,WAIT_FOREVER,MSG_PRI_NORMAL)==ERROR){

5、return(ERROR);}}return(OK);}3.Task启动同步功能;由manager()创建的任务优先级最高,先创建timer()、server()、client()的任务,让他们都在等待信号量semSynStart而被阻塞,最后创建manager()的任务,占据CPU,等待其他所有任务都被阻塞,解锁所有等待信号量的任务,让它们同时启动。/*progStart()启动实例程序*/STATUSprogStart(void){intid;/*用来区分不同的定时器或者客户任务*/mallocPtr=&sysMalloc;mallocPtr->frontBlock=0

6、;...initialPtr=initial();tidServer=tidManager=0;for(id=0;id

7、MSG_Q_EVENTSEND_ERR_NOTIFY);if(msgQIdServer==NULL){return(ERROR);}for(id=0;id

8、NT;id++){msgQIdClient[id]=msgQCreate(MAX_MSGS,MAX_MSG_LEN,MSG_Q_FIFO

9、MSG_Q_EVENTSEND_ERR_NOTIFY);if(msgQIdClient[id]==NULL){return(ERROR);}}semSynStart=semBCreate(SEM_Q_FIFO

10、SEM_EVENTSEND_ERR_NOTIFY,SEM_EMPTY);semMalloc=semBCreate(SEM_Q_PRIORITY,SEM_FULL);semF

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

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

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