文档介绍:淮阴工学院
《DSP技术及应用》课程设计报告
选题名称: 基于UC/OS-II任务间同步实验
系(院): 计算机工程学院
专业: 计算机科学与技术(嵌入式系统软件设计)
班级: 计算机1073班
姓名: 学号:
指导教师:
学年学期: 2009 ~ 2010 学年第 2 学期
2010 年 6 月 12 日
摘要:
uC/OS是一种公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,商业应用需要付费。uC/OS和uC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。uC/OS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。uC/OS-II 已经移植到了几乎所有知名的CPU上。
严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。
关键字:uC/OS II;移植性;实时操作系统;系统服务;抢占式
目录
1 课程概述 1
1
课程要求 1
2 课程相关知识知识 2
DSP芯片的简介 2
uC/OS-II的工作原理 3
信号量的相关知识 4
3 设计实现 5
5
函数设计 6
实验程序 9
总结 14
参考文献 15
1 课程概述
uC/OS-II 中使用信号量进行任务之间同步通过调用 OSSemCreate()建立信号量,并对信号量的初始计数值赋值。该初始值为0到65,535之间的一个数。如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为 0。如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为 1(例如,把它当作二值信号量使用)。最后,如果该信号量是用来表示允许任务访问n个相同的资源,那么该初始值显然应该是n,并把该信号量作为一个可计数的信号量使用。
通过调用 OSSemPost()函数发送一个信号量,通过调用 OSSemPend()函数等待一个信号量。如果信号量当前是可用的(信号量的计数值大于0),将信号量的计数值减 1,然后函数将“无错”错误代码返回给它的调用函数。如果信号量的计数值为0,OSSemPend()函数又不是由中断服务子程序调用的,则调用 OSSemPend()函数的任务要进入睡眠状态,等待另一个任务(或者中断服务子程序)发出该信号量。下面的代码使用两个信号量实现了两个任务之间的同步。信号量创建的代码如下,信号量 Sem2 初始为可用状态,而信号量 Sem1 初始为不可用状态。
Sem1 = OSSemCreate(0);
Sem2 = OSSemCreate(1);
任务TaskLED必须等待Sem2可用才能够继续往下运行,而Sem2在TaskSEG中发送。同样TaskSEG必须等待Sem1可用才能够继续往下运行,而Sem1在TaskLED 中发送,这样就实现了程序中“…”之间代码的顺序执行,而不受OSTIMEDLY的延时值影响。
课程要求
1. 理解uC/OS-II的工作原理;
2. 了解uC/OS-II系统任务间同步的办法;
3. 掌握uC/OS-II的信号量的使用和实现方法。
2 课程相关知识知识
DSP芯片的简介
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法。
(2)程序和数据空间分开,可以同时访问指令和数据。
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。
(4)具有低开销或无开销循环及跳转的硬件支持。
(5)快速的中断处理和硬件I/O支持。
(6)具有在单周期内操作的多个硬件地址产生器。
(7)可以并行执行多个操作。
(8)支持流水线操作,使取指、译码和执行等操作可