教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

北航ARM9实验报告(5)

来源:网络收集 时间:2026-08-05
导读: 北京航空航天大学研究生实验报告 将ac_key置为0,使得其他具有高优先级任务进行时,无法进入任务本身的实际执行,从而等待原任务进行结束后,将ac_key从新置1后,其他任务才能开始执行,本实验中保证了刷屏的顺利进

北京航空航天大学研究生实验报告

将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字,全部文档内容请下载后查看。喜欢就下载吧 ……

北航ARM9实验报告(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443262.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)