dsp数字信号处理课程设计报告Word下载.docx
- 文档编号:6817227
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:11
- 大小:23.06KB
dsp数字信号处理课程设计报告Word下载.docx
《dsp数字信号处理课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《dsp数字信号处理课程设计报告Word下载.docx(11页珍藏版)》请在冰点文库上搜索。
关键词:
µ
C/OS-Ⅱ操作系统;
DSP仿真器;
汇编语言;
多任务内核;
任务优先级
目录
1多任务描述1
2µ
C/OS-Ⅱ操作系统1
2.1µ
C/OS-Ⅱ简介1
2.2µ
C/OS-Ⅱ工作原理1
3基础知识2
3.1STaskCreate()2
3.2任务控制块(TaskControlBlocks,OS_TCBs)2
4软件设计3
4.1程序设计3
5周期性执行任务6
6优先级安排6
6.1任务的优先级资源6
6.2优先级安排原则7
总结8
参考文献9
1多任务描述
多任务是操作系统的一项基本功能。
在DSP系统上引入操作之后,我们可以非常方便的使用它的多任务功能,多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。
内核提供的基本服务是任务切换。
只所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时黑河来管理它们。
内核本身也增加了应用程序的格外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量,内核本身对CPU的占用时间一般在2到5个百分点之间。
C/OS-Ⅱ有一个精巧的内核调度算法,实时内核精小,实行效率高,算法巧妙,代码空间很少
C/OS-Ⅱ操作系统
C/OS-Ⅱ简介
μc/os-ii是由jeanj.labrosse于1992年编写的一个嵌入式多任务实时操作系统。
最早这个系统叫做μc/os,后来经过近10年的应用和修改,在1999年jeanj.labrosse推出了;
μc/os-ii,并在2000年得到了美国联邦航空管理局对用于商用飞机的、符合rtcado178b标准的认证,从而证明μc/os-ii具有足够的稳定性和安全性。
μc/os-ii是一个可裁减、源代码开放、结构小巧、可抢占式的实时多任务内核,是专为微控制器系统和软件开发而设计的,是控制器启动后首先执行的背景程序,并作为整个系统的框架贯穿系统运行的始终。
它具有执行效率高、占用空间小、可移植性强、实时性能良好和可扩展性强等特点。
采用μc/os-ii实时操作系统可以有效地对任务进行调度;
对各任务赋予不同的优先级可以保证任务及时响应,而且采用实时操作系统,降低了程序的复杂度,方便程序的开发和维护
2.2µ
C/OS-Ⅱ工作原理
uC/OS-II是一种基于优先级的可抢先的硬实时内核。
要实现多任务机制,那么目标CPU必须具备一种在运行期更改PC的途径,否则无法做到切换。
不幸的使,直接设置PC指针,目前还没有哪个CPU支持这样的指令。
但是一般CPU都允许通过类JMP,CALL
这样的指令来间接的修改PC。
我们的多任务机制的实现也正是基于这个出发点。
事实上,我们使用CALL指令或者软中断指令来修改PC,主要是软中断。
但在一些CPU上,
并不存在软中断这样的概念,所以,我们在那些CPU上,使用几条PUSH指令加上一条CALL指令来模拟一次软中断的发生。
再uC/OS-II里,每个任务都有一个任务控制块(TaskControlBlock),这是一个比较复杂的数据结构。
在任务控制快的偏移为0的地方,存储着一个指针,它记录了所属任务的专用堆栈地址。
事实上,再uC/OS-II内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。
这点要求程序员再他们的程序中保证。
一般的做法是把他们申明成静态数组。
而且要申明成OS_STK类型。
当任务有了自己的堆栈,那么就可以将每一个任务堆栈再那里记录到前面谈到的任务控制快偏移为0的地方。
以后每当发生任务切换,系统必然会先进入一个中断,这一般是通过软中断或者时钟中断实现。
然后系统会先把当前任务的堆栈地址保存起来,仅接着恢复要切换的任务的堆栈地址。
由于哪个任务的堆栈里一定也存的是地址(还记得我们前面说过的,每当发生任务切换,系统必然会先进入一个中断,而一旦中断CPU就会把地址压入堆栈),这样,就达到了修改PC为下一个任务的地址的目的。
3基础知识
3.1STaskCreate()
想让µ
C/OS-Ⅱ管理用户的任务,用户必须要先建立任务。
用户可以通过传递任务地址和其他参数到以下两个函数之一来建立任务:
OSTaskCreate()或OSTaskCreateExt()。
OSTaskCreateExt()是OSTaskCreate的扩展版本,提供了一些附加的功能。
用两个函数中的任何一个都可以建立任务。
任务可以在多任务调度前建立,也可以在其它任务的执行过程中被建立。
在开始多任务调度(即调用OSSstar())前,用户必须建立至少一个任务。
任务不能由中断服务程序(ISR)来建立。
3.2任务控制块(TaskControlBlocks,OS_TCBs)
一旦任务建立了,任务控制块OS_TCBs将被赋值。
任务控制块是一个数据结构,当任务的CPU使用权被剥夺时,µ
C/OS-Ⅱ用它来保存该任务的状态。
当任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那一点斯堡不差地继续执行。
OS_TCBs全部驻留在RAM中。
读者将会注意到笔者在组织这个数据结构时,考虑到了各
成员的逻辑分组。
任务建立的时候,OS_TCBs就被初始化了。
4软件设计
4.1程序设计
typedefstructos_tcb{
OS_STK*OSTCBStkPtr;
#ifOS_TASK_CREATE_EXT_EN
void*OSTCBExtPtr;
OS_STK*OSTCBStkBottom;
INT32UOSTCBStkSize;
INT16UOSTCBOpt;
INT16UOSTCBId;
#endif
structos_tcb*OSTCBNext;
structos_tcb*OSTCBprev;
#if(OS_Q_EN&
&
(OS_MAX_QS>
=2))||OS_MBOX_EN||OS_SEM_EN
OS_EVENT*OSTCBEventptr;
#if(OS_Q_EN%%(OS_MAX_QS>
=2))||OS_MBOX_EN
void*OSTCBMsg;
INT16UOSTCBDly;
INT8UOSTCBStat;
INT8UOSTCBPrio;
INT8UOSTCBX;
INT8UOSTCBY;
INT8UOSTCBBitX;
INT8UOSTCBBitY;
#ifOS_TASK_DEL_EN
BOOLEANOSTCBDELReq;
}OS_TCB;
OSTCBStkPtr是指向当前任务栈顶的指针。
C/OS-Ⅱ允许每个任务有自己的栈,尤为重要的是,每个任务的栈的容量可以是任意的。
有些商业内核要求所有任务栈的容量都一样,除非用户写的一个复杂的接口函数来改变之。
这种限制浪费了RAM,当各任务需要的栈空间不同时,也得按任务中预期栈容量需求最多的来分配栈空间。
OSTCBStkPt是OS_TCB数据结构中唯一一个能用汇编语言来处置的变量。
OSTCBExtPtr指向用户定义的任务控制块扩展。
用户可以扩展任务控制块而不必修改µ
C/OS-Ⅱ的源代码。
OSTCBExtPtr只在函数OstaskCreateExt()中使用,故使用时要将OS_TASK_CREAT_EN设为1,以允许建立任务函数的扩展。
OSTCBStkBottom是指向任务底栈的指针。
如果微处理器的栈指针是递减的,即栈存储器从高地址想低地址方向分配,则OSTCBStkBottom指向任务使用的栈空间的最低地址。
OSTCBStkSize存有栈中可容纳的指针元数目而不是用字节表示的栈容量总数。
OSTCBOpt把选择项传给OSTaskCreateRxt(),只有在用户OS_TASK_CREATE_EXT_EN设为1时,这个变量才有效。
OSTCBId用于存储任务的识别码。
OSTCBNext和OSTCBPrev用于任务控制块OS_TCBa的双重链接,该链表在诗中节拍函数
OSTimeIick()中使用,用于刷新各个任务的任务迟延变量,在任务删除的时候从链表中被删除。
双中链接的链表使得任一称冠都能被快速插入或删除。
OSTCBMsg是指向传给任务的消息的指针。
OSTCBDly当需要把任务延迟若干时钟节拍时要用到这个变量,或者需要把任务挂起一段时间以等待某事件的发生,这种等待是有超时限制的。
OSTCBStat是任务的状态字。
当OSTCBStat为0,任务进入就绪态。
OSTCBPrio是任务优先级。
高优先级任务的OSTCBPrio值小。
也就是说,这个值越小,任务的优先级越高。
5周期性执行任务
周期性执行的任务函数也由三部分组成:
第一部分“进行准备工作的代码”和第二部分“任务实体代码”的含义与单次执行任务的含义相同,第三部分是“调用系统延时函数”,把CPU的控制权主动交给操作系统,使自己挂起,再由操作系统来启动其它已经就绪的任务。
当延时时间到后,重新进入就绪状态,通常能够很快获得运行权。
通过合理设置调用OSTimeDly()或OSTimeDlyHMSM()时的参数值可以调整任务的执行周期。
当任务执行周期远大于系统时钟节拍时,任务执行周期的相对误差比较小;
当任务执行周期只有几个时钟节拍时,相邻两次执行的间隔时间抖动不能忽视,任务的执行周期的相对误差比较大,只适用于对周期稳定性要求不高的任务(如键盘任务);
当任务执行周期只有一个时钟节拍时,可将该任务的功能放到OSTimeTickHook()(时钟节拍函数中的钩子函数)中去执行;
当任务执行周期小于一个时钟节拍或者不是时钟节拍的整数倍时,将无法使用延时函数对其进行周期控制,只能采用独立于操作系统的定时中断来触发。
采用独立定时器触发的任务具有很高的周期稳定性。
6优先级安排
6.1任务的优先级资源
任务的优先级资源由操作系统提供,μC/OS-II共有64个优先级,优先级的高低按编号从0(最高)到63(最低)排序。
由于用户实际使用到的优先级总个数通常远小于64为节约系统资源,可以通过定义系统常量OS_LOWEST_PRIO的值来限制优先级编号的范围,当最低优先级为定为18(共19个不同的优先级)时,定义如下:
在此例中,最低优先级为定为18,则“空闲任务”的优先级为18,“统计任务”的优先级为17,用户实际可使用的优先级资源为0到16,共17个。
μC/OS-II实时操作系统还保留对最高的四个优先级(0、1、2、3)和OS_LOWEST_PRIO-3与OS_LOWEST_PRIO-2的使用权,以备将来操作系统升级时使如果用户的应用程序希望在将来升级后的操作系统下仍然可以不加修改地使用,则用户任务可以放心使用的优
先级个数为OS_LOWEST_PRIO-7。
在本例中,软件优先级资源为18-7=11个,即可使用的优先级为4、5、6、7、8、9、10、11、12、13、14。
实际可使用的软件优先级资源数目应该留有余地,以便将来扩充应用软件的功能(增加新任务)时不必对优先级进行大范围的调整。
6.2优先级安排原则
任务的优先级安排原则如下:
中断关联性:
与中断服务程序(ISR)有关联的任务应该安排尽可能高的优先级,以便及时处理异步事件,提高系统的实时性。
如果优先级安排得比较低,CPU有可能被优先级高一些的任务长期占用,以致于在第二次中断发生时连第一次中断还没
有处理,产生信号丢失现象。
紧迫性:
因为紧迫任务对响应时间有严格要求,在所有紧迫任务中,按响应时间要
求排序,越紧迫的任务安排的优先级越高。
紧迫任务通常与ISR关联。
关键性:
任务越关键安排的优先级越高,以保障其执行机会。
频繁性:
对于周期性任务,执行越频繁,则周期越短,允许耽误的时间也越短,故应该安排的优先级也越高,以保障及时得到执行。
快捷性:
在前面各项条件相近时,越快捷(耗时短)的任务安排的优先级越高,以使其他就绪任务的延时缩短。
例如一个应用系统中安排有键盘任务、显示任务、模拟信号采集任务、数据处理任务、串行口接收任务、串行口发送任务。
在这些任务中,模拟信号采集任务、串行口接收任务和串行口发送任务均与ISR关联,实时性要求比较高。
其中,串行口接收任务是关键任务和紧迫任务,遗漏接收内容是不允许的;
模拟信号采集任务是紧迫任务,但不是关键任务,遗漏一个数据还不至于发生重大问题;
在串行口发送任务中,CPU是主动方,慢一些也可以,只要将数据发出去就可以。
键盘任务和显示任务是人机接口任务,实时性要求很低。
数据处理任务根据其运算量来决定,运算量很大时,优先级安排最低,运算量不大时,优先级可安排得比键盘任务高一些。
根据以上分析,最低优先级OS_LOWEST_PRIO定为18,各个任务的优先级安排如下:
串行口接收任务(优先级2),模拟信号采集任务(优先级4),串行口发送任务(优先级6),数据处理任务(优先级9),显示任务(优先级12),键盘任务(优先级13)。
当优
先级的安排比较宽松时,以后增加新任务就比较方便,在不改变现有任务优先级的情况下,很容易根据需要找到一个合适的空闲优先级。
总结
经过一周的DSP课程设计,我终于顺利的完成了本学期所做的uCOS-II多任务实验,本次的实验让自己受益匪浅,虽然不是很顺利很完美,但是还是让自己感到满意了
课程设计是培养我们的综合能力,运用所学的知识用于实践,去发现,提出,分析解决实际出现的问题,充分调动自己的积极性于动手的能力,本次实验所做的是uCOS-II多任务实验,在接到这个题目的时候,首先我要对这个课程设计的原理要有一个细致的了解,了解它工作的意义,然后要对它的代码进行分析编写,弄懂其工作原理,对于uCOS-II多任务实验,自己查阅了很多资料,对其有了很深的了解,在了解的同时也想到了它真正的实际作用,对我们的日常生活都有着很大的作用。
初步做这个实验的时候,自己遇到了很多的问题和困难,通过查阅资料,向马岱老师,常波老师进行请教和通过和同学的沟通交流,一点一点的解决问题,最后顺利的完成了课程设计。
本次课程设计不仅让我对课本上的知识得到了巩固,更是让我学到了很多课本上没有的新知识,让自己受益匪浅,感觉自己真的学到了许多。
课程设计是对我们经验的积累,光学书本知识虽然对理论的理解加深,但是实际操作才是更重要的,光有理论知识而没有实际的经验只能算是纸上谈兵,只有在实际操作中,我们才能够更加熟悉各种步骤要求,才能慢慢完善自己的经验,充分调动我们的动手能力和自己的积极性,让自己把学到的课本知识和实际运用充分的结合起来,完善自己的经验。
最后,我要感谢学校提供的各项设备,感学同学的帮助,感谢指导老师对自己的悉心的指导,因为你们,我才能够成功了完成了本次的课程设计,再次感谢学校,同学和指导老师!
参考文献
1李玉柏.DSP技术.成都:
成都电子科技大学出版社,1997
2李利.DSP原理及应用.北京:
中国水利水电出版社,2002
3张芳娟.DSP基础与实验.北京:
北京航空航天大学出版社,2008
4崔涛,吕阴芝.TMS320C54DSP原理及应用.北京:
科学出版社,2009
5汪安民.TMS320C54XDSP实用技术(第二版).北京:
清华大学出版社,2006
指导教师评语
学号
1071306122
姓名
韦超
班级
计算机1073
选题
名称
uCOS-II多任务实验
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
4
成果验收:
是否完成设计任务;
能否运行、可操作性如何等。
20
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;
主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;
是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 数字信号 处理 课程设计 报告