ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:52.71KB ,
资源ID:9421586      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9421586.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(dsp数字信号处理课程设计报告.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

dsp数字信号处理课程设计报告.docx

1、dsp数字信号处理课程设计报告淮阴工学院DSP技术与应用课程设计报告选题名称: C/OS-移植实验 系(院): 计算机工程学院 专 业: 计算机科学与技术(嵌入式系统软件设计)班 级: 计算机1073 姓 名: 冯绍诚 学 号: 1071306109 指导教师: 马岱 常波 学年学期: 2009 2010 学年 第 2 学期 2010 年 6 月 12 日设计任务书课题名称Ucos-的移植实验设计目的1. 了解嵌入式操作系统的一些基本概念2. 了解汇编相关知识3. 学习并了解C/OS-在DPS处理器上的移植过程4. 由CCS软件将C/OS-操作系统移植到DPS试验箱上并实现部分功能 实验环境1

2、Windows 2000以上操作系统;2 CCS环境;任务要求1. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;2. 在第14周末之前完成预设计,并请指导教师审查。通过后方可进行下一步工作;3. 按指导书要求设计软件,实现设计的功能,并显示正确的结果;4. 要求形成稳定的程序软件,可以运行,方可申请参加答辩;工作进度计划序号起止日期工 作 内 容12010.6.122010.6.13在预设计的基础上,进一步查阅资料,完成硬件电路设计和焊接。22010.6.132010.6.14编写软件代码, 调试与完善。32010.6.152010.6.17测试

3、程序,优化代码,增强功能,撰写课程设计报告。42010.6.172010.6.18提交软件代码、硬件电路成果和设计报告,参加答辩。指导教师(签章): 年 月 日 摘要:这次实验是将C/OS-移植到DSP处理器上。C/OS-系统其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的C/OS-代码是用 C 语言写的;但仍需要用 C 和汇编语言写一些与处理器相关的代码,这是因为C/OS-在读写处理器寄存器时只能通过汇编语言来实现。由于C/

4、OS-在设计时就已经充分考虑了可移植性,所以C/OS-的移植相对来说是比较容易的。而我们的工作就是把在一直过程中遇到的程序和问题都了解并试着处理以实现实验目的。关键词:C/OS-操作系统;DSP仿真;CCS软件应用;汇编应用目 录1.C/OS-操作系统与DSP芯片简介 11.1C/OS-简介 11.2C/OS-工作原理 11.3 DSP芯片简介 22.任务分配说明 23 OS-CPU.H的移植 43.1定义数据类型 43.2 DSP相关宏定义 43.3堆栈增长方向和任务切换函数 44 OS-CPU.c的移植 44.1 OS-CPU.c移植简介 54.2堆栈初始化的汇编代码 65. OS-CPU

5、-ASM的移植 65.1 OSStartHighRdy() 75.2 OSCtxSw() 75.3 OSIntCtxSw() 75.4 OSTickISR() 86 程序调试结果和分析 8总结 9参考文献 101.C/OS-操作系统与DSP芯片简介1.1C/OS-简介u C / O S 是一种公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,商业应用需要付费。C/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANS

6、I 的C交叉编译器,有汇编器、连接器等软件工具,就可以将C/OS-II嵌人到开发的产品中。C/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。C/OS-II 已经移植到了几乎所有知名的CPU 上。1.2C/OS-工作原理uC/OS-II是一种基于优先级的可抢先的硬实时内核。 要实现多任务机制,那么目标CPU必须具备一种在运行期更改PC的途径,否则无法做到切换。不幸的使,直接设置PC指针,目前还没有哪个CPU支持这样的指令。但是一般CPU都允许通过类似JMP,CALL这样的指令来间接的修改PC。我们的多任务机制的实现也正是基于这个出发点。事实

7、上,我们使用CALL指令或者软中断指令来修改PC,主要是软中断。但在一些CPU上,并不存在软中断这样的概念,所以,我们在那些CPU上,使用几条PUSH指令加上一条CALL指令来模拟一次软中断的发生。 在uC/OS-II里,每个任务都有一个任务控制块(Task Control Block),这是一个比较复杂的数据结构。在任务控制快的偏移为0的地方,存储着一个指针,它记录了所属任务的专用堆栈地址。事实上,再uC/OS-II内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。这点要求程序员再他们的程序中保证。一般的做法是把他们申明成静态数组。而且要申明成OS_STK类型。当任务有了自己的堆栈,那么就可

8、以将每一个任务堆栈再那里记录到前面谈到的任务控制快偏移为0的地方。以后每当发生任务切换,系统必然会先进入一个中断,这一般是通过软中断或者时钟中断实现。然后系统会先把当前任务的堆栈地址保存起来,仅接着恢复要切换的任务的堆栈地址。由于哪个任务的堆栈里一定也存的是地址(还记得我们前面说过的,每当发生任务切换,系统必然会先进入一个中断,而一旦中断CPU就会把地址压入堆栈),这样,就达到了修改PC为下一个任务的地址的目的。1.3 DSP芯片简介DSP 芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理的微处理器,它强调运算处理的实时性,因此 DSP 芯片除了具备普通微处理器所强调的高速运算和控制

9、功能外,针对实时数字信号处理,在处理器结构、指令系统、数据流程上做了大的改动,其特点有:(a)DSP芯片普遍采用了数据总线和程序总线分离的哈佛结构及改进的哈佛结构。(b)DSP芯片大多采用流水技术。(c)片内有多条总线可以同时进行取指令和多个数据存取操作,并且有辅助寄存器用于寻址。(d)DSP 芯片大多带有 DMA 通道控制器以及串行通信口等使数据块传送速度大大提高。(e)配有中断处理器和定时控制器,可以方便地构成一个小规模系统。(f)具有软、硬件等待功能,能与各种存取速度的存储器接口。(g)针对滤波、相关、矩阵运算等需要大量乘法累加运算的特点,DSP芯片大都配有独立的乘法器和加法器,使得同一

10、时钟周期内可以完成乘、累加两个运算。(h)低功耗,一般为 0.54W,采用低功耗技术的 DSP 芯片只有 0.1W,可用电池供电。正是 DSP 芯片的以上特点决定了其运算速度比通用微处理器(MPU)要高, 面对 DSP 的巨大市场和广阔发展前景。 2.任务分配说明C/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。我在队伍中负责的是C/OS-II中CPU的移植部分。所谓CPU的移植就是与CPU的接口部分 是指C/OS-II针对所使用的CPU的移植部分。由于C/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要

11、求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。 作为移植C/OS-的前提工作包括以下几个内容: l 用#define设置一个常量的值(OS_CPU.H) l 声明10个数据类型(OS_CPU.H) l 用#define 声明三个宏(OS_CPU.H) l 用C 语言编写六个简单的函数(OS_CPU_C.C) l 编写四个汇编语言函数(OS_CPU_A.ASM) 根据处理器的不同,一个移植实例可能需要编写或改写 50 至 300 行的代码,需要的时间从几个小时

12、到一星期不等。各个微处理器或微控制器的移植源代码必须在以下两个或三个文件中找到:OS_CPU.H,OS_CPU_C.C, OS_CPU_A.ASM。汇编语言文件 OS_CPU_A.ASM 是可选择的,因为某些 C 编译器允许用户在 C语言中插入汇编语言,所以用户可以将所需的汇编语言代码直接放到 OS_CPU_C.C 中。放置移植实例的目录决定于用户所用的处理器, 例如在下面的表中所示的放置不同移植实例的目录结构。注意,各个目录虽然针对完全不同的目标处理器,但都包括了相同的文件名。 Intel/AMD 80186 SOFTWAREuCOS-IIIx86S OS_CPU.H OS_CPU_A.AS

13、M OS_CPU_C.C SOFTWAREuCOS-IIIx86L OS_CPU.H OS_CPU_A.ASM OS_CPU_C.C Motorola 68HC11 SOFTWAREuCOS-II68HC11 OS_CPU.H OS_CPU_A.ASM OS_CPU_C.COS_CPU.H 包括了用#defines定义的与处理器相关的常量,宏和类型定义。3 OS-CPU.H的移植3.1定义数据类型typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /* 无符号8位整数 */ typedef signed char INT8S;

14、 /* 有符号8位整数 */ typedef unsigned int INT16U; /* 无符号16位整数 */ typedef signed int INT16S; /* 有符号16位整数 */ typedef unsigned long INT32U; /* 无符号32位整数 */ typedef signed long INT32S; /* 有符号32位整数 */ typedef float FP32; /* 单精度浮点数 */ typedef double FP64; /* 双精度浮点数 */ typedef unsigned int OS_STK; /* 堆栈入口宽度为16位 *

15、/ 3.2 DSP相关宏定义#define OS_ENTER_CRITICAL() / 禁止中断 / #define OS_EXIT_CRITICAL() / 允许中断 / 3.3堆栈增长方向和任务切换函数#define OS_STK_GROWTH 1 / 定义堆栈的增长方向: 1=向下, 0=向上/ #define OS_TASK_SW()4 OS-CPU.c的移植4.1 OS-CPU.c移植简介C/OS-的移植实例要求编写6个简单的C函数:OSTaskStkInit()OSTaskCreatHook()OSTaskDelHook()OSTaskSwHook()OSTaskStartHook

16、()OSTaskTickHook()唯一必要的函数是OSTaskStkInit(),其他5个函数必须得到申明但没必要包涵代码,OSTaskCreatHook()和OSTaskCreatExt()通过调用OSTaskStkInit()来初始化任务堆栈结构,因此,堆栈看起来像刚发生过中断并将所有的寄存器保存到堆栈中的情形,图显示了OSTaskStkInit()放到整呗建立的任务堆栈中的东西。注意,下图显示堆栈是从下而上的, 至上而下同样适用。用户建立任务时,用户会传递任务的地址,padata指针,任务的堆栈栈顶和任务的优先级给OSTaskCreat()和OSTaskCreatExt()。图4-1堆

17、栈初始化过程4.2堆栈初始化的汇编代码OSTaskStkInit:LDM SP,B;STLM A,T;LD*SP(1),A;NOP;NOP;SFTL,A,8,A;ADD,A,8,B;LD*SP(2),A;NOP;NOP;STLM A, SP;LDM T,A;NOP;NOPPSHM AL;SFTL B,-16,A;NOP;NOP;NOP;RET;5. OS-CPU-ASM的移植C/OS-的移植实例要求用户编写四个简单的汇编语言函数:OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR() 此模块主要由我的搭档卲占用负责,我在此简要介绍 5.1 OSS

18、tartHighRdy() 使就绪状态的任务开始运行的函数叫做 OSStart()。在用户调用 OSStart()之 前 ,用 户必须至少已经建立了自己 的一个任务(参看 OSTaskCreate() 和OSTaskCteateExt()。OSStartHighRdy()假设 OSTCBHighRdy 指向的是优先级最高的任务的任务控制块。 void OSStartHighRdy (void) Call user definable OSTaskSwHook(); Get the stack pointer of the task to resume: Stack pointer = OSTC

19、BHighRdy-OSTCBStkPtr; OSRunning = TRUE; Restore all processor registers from the new tasks stack; Execute a return from interrupt instruction; 5.2 OSCtxSw() 如前面所述, 任务级的切换问题是通过发软中断命令或依靠处理器执行陷阱指令来完成的。中断服务例程,陷阱或异常处理例程的向量地址必须指向 OSCtxSw()。 如果当前任务调用C/OS-提供的系统服务,并使得更高优先级任务处于就绪状态,C/OS-就会借助上面提到的向量地址找到 OSCtxS

20、w()。在系统服务调用的最后,C/OS-会调用 OSSched(),并由此来推断当前任务不再是要运行的最重要的任务了。5.3 OSIntCtxSw() OSIntExit()通过调用OSIntCtxSw()来从 ISR 中执行切换功能。 因为OSIntCtxSw()是在ISR 中被调用的,所以可以断定所有的处理器寄存器都被正确地保存到了被中断的任务的堆栈之中。实际上除了我们需要的东西外,堆栈结构中还有其它的一些东西。OSIntCtxSw()必须要清理堆栈,这样被中断的任务的堆栈结构内容才能满足我们的需要。 5.4 OSTickISR() C/OS-要求用户提供一个时钟资源来实现时间的延时和期满

21、功能。时钟节拍应该每秒钟发生 10100次。 为了完成该任务, 可以使用硬件时钟, 也可以从交流电中获得 50/60Hz的时钟频率。 用户必须在开始多任务调度后(即调用 OSStart()后)允许时钟节拍中断。换句话说,就是用户应该在OSStart()运行后,C/OS-启动运行的第一个任务中初始化节拍中断。通常所犯的错误是在调用 OSInit()和 OSStart()之间允许时钟节拍中断(如程序清单 L8.4 所示)。 6 程序调试结果和分析在完成前面对CPU.H以及CPU.C的移植后,我的同伴卲占用也完成了4个汇编程序的移植。接下来在CSS环境中对所有的源文件进行编译和连接,生成处理器中可执

22、行的out文件,通过仿真器直接连接到DSP的实验箱运行。经过CCS提供了强大的调试功能,用户能够很清楚地了解COS-II在处理器内的运行情况,可见数码管上数据按顺序的有效的移位操作,发光二极管也顺序的轮闪。这实验结果也表明了我们实验是成功的。这无疑也源于COS-对DSPC54X处理器提供了强大的移植支持。总结DSP是一门理论和技术发展十分迅速、应用非常广泛的前沿性学科, 它的理论性和实践性都很强。通过这次漫长的程序设计中,首先我们通过用C/OS-II的CPU移植过程了解了这个操作系统,再经过任务之间的通讯和同步部分现实验结果的过程,加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并很好

23、地了解与认识了C/OS-II操作系统和CCS软件的使用方法。而对于这次课程设计的题目“关于C/OS-II的移植”,在收集资料以及编程过程中,不光让我巩固所学的知识,加强理论和实际结合的能力,细致的了解了DSP的工作原理,还培养了我们的综合设计能力与实际工作能力。真可谓获益匪浅啊。虽然最后离我的实验结果还有少许偏差让我有点不甘心,但这次独立制作芯片的过程还是让我感触良多的。而且在这次课程设计的撰写过程中,我得到了许多人的帮助。本论文从立题到论文撰写整个过程都是在马老师和常老师的悉心指导下完成的。老师们在传授我知识的同时,更注重培养我解决问题的思路和方法及创新能力,为我今后学习和工作打下了坚实的基

24、础并开阔了我的视野,渊博的知识、严谨的治学态度、忘我的工作精神以及对新知识不懈追求的精神,令我们佩服,使我们受益匪浅.我将最诚挚的谢意奉献给我的导师们。另外,我要感谢我的同班同学,他们给予我很多的关心和帮助,并在程序上给了我很多启示,而且他们中间不少人给我学习和生活上带来了很多的快乐。没有他们我的程序不可能做的如此顺利。参考文献1.乔瑞平编 TMS320C54Xdsp原理及应用 西安电子科技大学出版社, 20052.汪安民编著 TMS320C54xx DSP实用技术(第二版), 20063.汪安民编 DSP应用开发实用子程序 人民邮电出版社, 20054.徐科军编 定点DSP的原理 开发与应用

25、 北京清华大学出版社, 20025.李玉柏编 DPS技术 成都电子科技大学出版社 1997指导教师评语学号1071306109姓名冯绍诚班级计算机1073选题名称U COS-的移植实验序号评价内容权重(%)得分1考勤记录、学习态度、工作作风与表现。52自学情况:上网检索机时数、文献阅读情况(笔记)。103论文选题是否先进,是否具有前沿性或前瞻性。54成果验收:是否完成设计任务;能否运行、可操作性如何等。205报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。306文献引用是否合理、充分、真实。57答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。25合计指导教师(签章): 年 月 日

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2