ARM数字音识别系统.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM数字音识别系统

ARM课程设计报告 基于ARM的数字音识别系统 μC/OS-II的移植 μC/OS-II简介 μC/OS-II是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。μC/OS-II使用ANSI C语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。至今,从8位到64位,μC/OS-II已在超过40种不同架构的微处理器上运行。 μC/OS-II的特点:提供源代码、可移植性、可固化、可剪裁、可剥夺、多任务、可确定性、任务栈、系统服务、中断管理、稳定性与可靠性。 2.μC/OS-II移植——μC/OS-II硬件软件体系结构 3. 移植μC/OS-II 要移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者的要求: ①对目标体系结构要有很深了解; ②对OS原理要有较深入的了解; ③对所使用的编译器要有较深入的了解; ④对需要移植的操作系统要有相当的了解; ⑤对具体使用的芯片也要一定的了解。 1)移植需要编写的文件 根据μC/OS-II的要求,移植μC/OS-II到一个新的体系结构上需要提供2个或3个文件: OS_CPU.H(C语言头文件) OS_CPU_C.C(C程序源文件) OS_CPU_A.ASM(汇编程序源文件) 其中OS_CPU_A.ASM在某些情况下不需要,但极其罕见。 移植代码包括的内容 3)与应用相关的代码 这一部分是根据自己的应用系统来定制合适的内核服务功能,包括2个文件:OS_CFG.H和INCLUDES.H。 OS_CFG.H 用来配置内核,用户根据需要对内核进行修改,留下需要的部分,去掉不需要的部分,INCLUDES.H 系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件,这样使得用户项目中的每个.C文件不用分别去考虑他实际上需要哪些头文件。 4)与处理器相关的代码 这是移植中最关键的部分。内核将应用系统和底层硬件有机地结合成一个实时系统,我们在移植时需要自己处理这部分代码,在μC/OS中这一部分代码分成3个文件:OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C。3.2.1 OS_CPU.H。 I.OS_CPU.H包含了用#define定义的与处理器相关的常量、宏和类型定义,有系统数据类型定义、栈增长方向定义、关中断和开中断定义、系统软中断的定义等。 (1)不依赖于编译的数据类型 μC/OS-Ⅱ不使用C语言中的short,int和long等数据类型的定义,因为他们与处理器类型有关,隐含着不可移植性,代之以移植性强的整数数据类型,这样,既直观又可移植。根据ADS编译器的特性,代码为: typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned short INT16U; typedef signed short INT16S; typedef unsigned int INT32U; typedef signed int INT32S; typedef float FP32; typedef double FP64; typedef INT32U OS_STK; (2)使用软中断SWI做底层接口 因为带T变量的ARM7处理器核具有两个指令集,用户任务可以使用两种处理器模式,为了使底层接口函数与处理器状态无关,同时在任务调用相应函数时不需要知道该函数位置,应用中使用软中断指令SWI作为底层接口,使用不同的功能号区分不同的函数。 (3)OS_STK_GROWTH μC/OS-Ⅱ使用结构常量OS_STK_GROWTH指定堆栈的生长方式,其代码为: #define OS_STK_GROWTH 1 II.OS_CPU_C.C 包含了与移植有关的C函数,但是最重要的是OSTaskStkInit()函数,该函数是在用户建立任务时系统内部自己调用的,用来对用户任务的堆栈初始化。在ARM7体系结构下,任务堆栈空间由高至低递减,依次保存着PC,LR,R12,…,R1,R0,CPSR的初始化堆栈结构,当用户初始化了堆栈,OSTaskStkInit()就返回新的堆栈指针STK所指的定地址。OSTaskCreate()和OSTaskCreateExt()会获得该地址并将他保存到任务控制块TCB中。 III. OS_CPU_A.S Os_cpu_a.s的结构图 关于中断及时钟节拍 在移植中,IRQ是受μC/OS-II管理的中断,而对于FIQ不做处理,这是为

文档评论(0)

ipad0b + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档