北航ARM9实验报告(5)
北京航空航天大学研究生实验报告
将ac_key置为0,使得其他具有高优先级任务进行时,无法进入任务本身的实际执行,从而等待原任务进行结束后,将ac_key从新置1后,其他任务才能开始执行,本实验中保证了刷屏的顺利进行,使得刷屏结束后才能进行新的任务,解决了完整刷屏的问题。
- 20 -
北京航空航天大学研究生实验报告
实验四
多任务综合实验
一、实验目的
1. 学习周期任务、任务的同步和任务间通信。
二、实验内容
1.运行实验十,删除任务四、任务定义和OSTaskCreate(Task4…),任务三for循环体内仅保留以下两句BSPprintf(0,―run task3\\n‖); OSTimeDly(3000),在超级终端上观察任务运行情况。
2. 使用系统定时中断实现周期任务,任务1 、2、3进入for循环就挂起,在定时钩子函
数中定时1秒、2秒和4秒后将其恢复。
3. 创建信号量管理数组实现任务间同步,在主函数中定义一个INT16U的两维数组
a[2][3],不同的任务往数组内写不同的值,连同任务号一起打印在超级终端上。 4. 创建消息邮箱实现任务间通信,Task1记录任务执行的次数,通过消息邮箱在Task2
里显示。
5. 附加题:文件的使用。
二、 预备知识
1.掌握在EWARM集成开发环境中编写和调试程序的基本过程。 2.了解S3C2410处理器的结构。 3.了解uCOS-II系统结构。
4. 了解多任务的创建,及互斥同步控制。
四、实验设备及工具
硬件:ARM嵌入式开发平台、用于S3C2410的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、
超级终端通讯程序。
五、实验原理及说明
1)同步与互斥
为了实现资源共享,一个操作系统必须提供临界区操作的功能。
μC/OS采用关闭/打开中断的方式来处理临界区代码,从而避免竞争条件,实现任务间的互斥;μC/OS定义两个宏(macros)来开关中断,即:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL();这两个宏的定义取决于所用的微处理器,每种微处理器都有自己的OS_CPU.H文件。
ARM9S3C2410中断的打开与关闭;
#define OS_ENTER_CRITICAL() { cpu_sr = INTS_OFF(); } #define OS_EXIT_CRITICAL() { if(cpu_sr == 0) INTS_ON(); }
2)任务间同步:信号量(Semaphores)
- 21 -
北京航空航天大学研究生实验报告
a. 信号量在多任务系统中的功能
实现对共享资源的互斥访问(包括单个共享资源或多个相同的资源); 实现任务之间的行为同步;
b. 必须在OS_CFG.H中将OS_SEM_EN开关常量置为1,这样μC/OS才能支持信号量。 c. uC/OS中信号量由两部分组成:信号量的计数值(16位无符号整数)和等待该信号量的任务所组成的等待任务表;
d. uC/OS中信号量系统服务函数有:OSSemCreate()、OSSemPend(),、OSSemPost()、OSSemAccept()、OSSemQuery()。
3)任务间通信:消息邮箱(MailBox)
a.邮箱(MailBox):一个任务或ISR可以通过邮箱向另一个任务发送一个指针型的变量,该指针指向一个包含了特定―消息‖(message)的数据结构;
b.必须在OS_CFG.H中将OS_MBOX_EN开关常量置为1,这样μC/OS才能支持邮箱。 c. 邮箱的系统服务函数:OSMboxCreate()、OSMboxPend()、OSMboxPost()、OSMboxAccept()、OSMboxQuery()。
六、实验方法
1. 以实验十为模板。
2. 将任务函数内的OSTimeDly()删除,在打印语句之前悬挂任务1~3,
OSTaskSuspend(Taskn_Prio),按以下路径ucos-ii->arch->os_cpu_c.c 找到钩子函数void OSTimeTickHook (void),用计数器控制恢复任务操作,编写OSTaskResume( Taskn_Prio);
3. 信号量管理 声明信号量OS_EVENT *Fun_Semp; 在Main函数里创建信号量Fun_Semp=OSSemCreate(1);
在各个Task里执行下列操作
OSSemPend(Fun_Semp,0,&err); ………….
OSSemPost(Fun_Semp);
4 . 定义事件控制块指针OS_EVENT *Str_Box,
在main函数里创建消息邮箱,Str_Box=OSMboxCreate((void*)
在Task1里发送消息 Times+=1; s=&Times; OSMboxPost(Str_Box,s); 在Task2里请求消息邮箱ss=OSMboxPend(Str_Box,0,&err);printf(\
5. 文件的使用.文件使用的关键是加载文本文件,用记事本创建 test.txt文件,文件的内容不包含汉字。运行实验十三,此时LCD上没有任何显示。打开超级终端,按回车键,显示/sys> 用mkdir创建ucos子目录,在ucos下再创建fj子目录,用cd进入/sys/ucos/fj> ,在该目录下执行命令dl test.txt –d,按回车键,加载test.txt 。再运行文件十三,在LCD上即可观察你编写的文本文件。
七、程序源代码
#include\ /* uC/OS interface */ #include \#include \
#include \#include \#include
- 22 -
北京航空航天大学研究生实验报告
#include
//#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
OS_EVENT *MboxSem;
OS_EVENT *Fun_Semp; OS_EVENT *Str_Box; INT8U err;
INT16U a[2][3]; INT8U i,j;
INT8U Times,*s,*ss;
///******************任务定义***************///
/*OS_STK SYS_Task_Stack[STACKSIZE]= {0, }; //system task刷新任务堆栈 #define SYS_Task_Prio 1 void SYS_Task(void *Id);*/
OS_STK task1_Stack[STACKSIZE]={0, }; //Main_Test_Task堆栈 void Task1(void *Id); //Main_Test_Task #define Task1_Prio 12
OS_STK task2_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task2(void *Id); //test_Test_Task #define Task2_Prio 15
OS_STK task3_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task3(void *Id); //test_Test_Task #define Task3_Prio 17
/**************已经定义的OS任务************* #define SYS_Task_Prio 1 #define Touch_Screen_Task_Prio 9 #define Main_Task_Prio 12
#define Key_Scan_Task_Prio 58 #define Lcd_Fresh_prio 59 #define Led_Flash_Prio 60
***************************************/////////
///*****************事件定义*****************///
- 23 -
北京航空航天大学研究生实验报告
/////////////////////////////////////////////////////
// Main function. // //////////////////////////////////////////////////// int main(void) { ARMTargetInit(); // do target (uHAL based ARM system) initialisation // OSInit(); // needed by uC/OS-II // Fun_Semp=OSSemCreate(1);
Str_Box=OSMboxCreate((void *)0); …… 此处隐藏:2629字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]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 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




