北航ARM9实验报告(6)
北京航空航天大学研究生实验报告
Times = 0; // never reached // return 0; }//main
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Task1(void *Id) { for(;;){
OSTaskSuspend(Task1_Prio);
OSSemPend(Fun_Semp,0,&err); BSPprintf(0,\ Times+=1; s=&Times;
OSMboxPost(Str_Box,s); for(i = 0;i < 2;i++) {
for(j = 0;j < 3;j++) {a[i][j] = 1;
BSPprintf(0,\ } BSPprintf(0,\
OSSemPost(Fun_Semp); //OSTimeDly(1000); } }
void Task2(void *Id) { for(;;){
OSTaskSuspend(Task2_Prio); OSSemPend(Fun_Semp,0,&err); ss=OSMboxPend(Str_Box,0,&err); BSPprintf(0,\
for(i = 0;i < 2;i++) {
for(j = 0;j < 3;j++) { a[i][j] = 2;
BSPprintf(0,\
- 25 -
北京航空航天大学研究生实验报告
} BSPprintf(0,\
printf(\ //OSTimeDly(3000);
OSSemPost(Fun_Semp); } }
void Task3(void *Id) { for(;;){
OSTaskSuspend(Task3_Prio); OSSemPend(Fun_Semp,0,&err); BSPprintf(0,\ for(i = 0;i < 2;i++) {
for(j = 0;j < 3;j++) {a[i][j] = 3;
BSPprintf(0,\ } BSPprintf(0,\ //OSTimeDly(3000);
OSSemPost(Fun_Semp); } }
创建消息邮箱实现任务间通信,Task1记录任务执行的次数,通过消息邮箱在Task2里显示。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Task1(void *Id) {
int *s;
static int Times=0; for(;;){
OSTaskSuspend(Task1_Prio); //OSSemPend(Fun_Semp,0,&err); BSPprintf(0,\Times+=1; s=&Times;
OSMboxPost(Str_Box,s);
//OSSemPost(Fun_Semp); } }
void Task2(void *Id) {
for(;;){
- 26 -
北京航空航天大学研究生实验报告
}
OSTaskSuspend(Task2_Prio); //OSSemPend(Fun_Semp,0,&err); BSPprintf(0,\
ss=OSMboxPend(Str_Box,0,&err); BSPprintf(0,\//OSSemPost(Fun_Semp);
}
Hook函数调用代码:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void OSTimeTickHook (void) {
static int i=0; switch(i) {
case 1000: OSTaskResume(12);
break;
case 2000: OSTaskResume(12);OSTaskResume(15); break;
case 3000: OSTaskResume(12); break;
case 4000: OSTaskResume(12);OSTaskResume(15);OSTaskResume(17); i=-1;
break;
} i++; }
八、思考题
1. 用钩子函数实现周期任务有何特点? 答:钩子函数是由系统每隔1ms自动调用一次,从而通过合理使用钩子函数可以保证时间的周期性任务的完成。
2. 用信号量是如何实现任务间同步的? 答:信号量的同步主要是通过OSSemCreate()、OSSemPend()和OSSemPost()三个函数来完成的。首先创建一个信号量,从空闲事件控制块链表中得到一个ECB,初始化ECB,包括设置信号量的初始值、把等待任务列表清零、设置ECB的事件类型等,然后返回一个指向该事件控制块的指针。如果信号量的计数值大于0,将它减1并返回,如果信号量的值等于0,则调用本函数的任务将被阻塞起来,等待另一个任务把它唤醒,调用OSSched()函数,调度下一个最高优先级的任务运行。最后,检查是否有任务在等待该信号量,如果没有,将信号量的计数值加1并返回;如果有,将优先级最高的任务从等待任务列表中删除,并使它进入就绪状态,调用 OSSched(),判断是否需要进行任务切换。
3. 简述消息邮箱实现任务间通信的过程。
- 27 -
北京航空航天大学研究生实验报告
答:消息邮箱实现任务间通信主要通过以下函数过程进行的:
a.OSMboxCreate():创建一个邮箱;在创建邮箱时,须分配一个ECB,并使用其中的字段OSEventPtr指针来存放消息的地址; b. OSMboxPend():等待一个邮箱中的消息;若邮箱为满,将其内容(某消息的地址)返回;若邮箱为空,当前任务将被阻塞,直到邮箱中有了消息或等待超时; c. OSMboxPost():发送一个消息到邮箱中;如果有任务在等待该消息,将其中的最高优先级任务从等待列表中删除,变为就绪状态;
d.OSMboxAccept():无等待地请求邮箱消息;若邮箱为满,返回它的当前内容;若邮箱为空,返回空指针;
4. 简述文件加载到FLASH过程。
答:文件加载到FLASH过程如下:
a. 用记事本创建test.txt文件,文件的内容不包含汉字。 b. 打开超级终端,按回车键,显示/sys>时,使用mkdir命令创建文件要存放的目录。 c. 使用cd命令进入存放文件的目录。 d. 在该目录下执行命令:dl test.txt –d。
e. 在超级终端下选择已经创建好的文件test.txt,发送到FLASH中。
- 28 -
…… 此处隐藏:919字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




