下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 uC/OS II在S3C2410上的移植摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTAC)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为126 MHz,阻带抑制率大于35 dB,带内波纹小于05 dB,采用18 V电源,TSMC 018m CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核
2、心的嵌入式系统再度成为当前研究和应用的热点。对功能、可靠性、成本、体积和功耗严格要求的嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,其中嵌入式微处理器和嵌入式操作系统分别是其硬件和软件的核心。 ARM处理器由于其具有小体积、低功耗、低成本、高性能等特点,广泛应用在16/32位嵌入式RISC解决方案中,几乎占有嵌入式微处理器市场分额的75% ,本文选定三星公司生产的一款基于ARM920T核的高性能低功耗SOC芯片S3C2410作为移植方案的硬件平台。市场上主流的嵌入式实时操作系统有Vxworks、pSos、Win
3、CE、Linux等,基于实时性、成本以及开发难度方面的考虑,我们选择uC/OS II开放源代码的嵌入式实时操作系统。1 uC/OS II介绍 uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式(见图1)实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)
4、。 uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。从1992年开始,由于高度可靠性、鲁棒性和安全性,uC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中。2 uC/OS II在S3C2410上的可移植性 所谓移植,就是使这个实时内核能在某个微处理器上运行。为了方便移植,大部分的uC/OS II代码是用c语言写的,但仍需要用
5、c和汇编语言写一些与处理器相关的代码,这是因为uC/OS II在读写处理器寄存器时只能通过汇编语言来实现。由于uC/OS II在设计时就已经充分考虑了可移植性,所以uC/OS II的移植相对来说是比较容易的。uC/OS II的框架结构如图2。 uC/OSII的正常运行需要处理器平台满足以下要求:a)处理器的C编译器能产生可重入代码。b)用C语言就可以打开和关闭中断。c)处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)。d)处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。e)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。
6、60; S3C2410处理器采用ARM920T内核,内部共有37个寄存器,其中R13通常用作堆栈指针,只要系统RAM空间允许,堆栈空间理论上没有限制。ARM处理器提供ARM指令和Thumb指令两种指令集,每种指令集都包含有丰富的指令对堆栈进行操作,可以随意的对处理器中的寄存器进行堆栈操作。根据堆栈生长方向的不同,可以生成4种不同的堆栈,分别是满递增、空递增、满递减(此移植中使用的是满递减方式)、空递减。芯片内集成5个定时时钟,任何一个都可以产生定时中断,满足第三条要求。ADS集成开发环境的内置编译器可以产生可重入代码,并且支持内嵌汇编,C环境中可任意的进行开关中断操作。综上所述uC
7、/OS II完全可以移植到S3C2410上运行。3 主体移植过程3.1 设置与处理器及编译器相关的代码OS_CPU.H 不同的编译器会使用不同的字节长度来表示同一数据类型,所以要定义一系列数据类型以确保移植的正确性。下面是uC/OS II定义的一部分数据类型。typedef unsigned char BOOLEAN;typedef unsigned char INT8U;/*无符号8位*/typedef signed char INT16S;/*带符号8位*/typedef unsigned int INT16U;/*无符号16位*/typedef sig
8、ned int INT16S;/*带符号16位*/typedef unsigned long INT32U;/*无符号32位数*/typedef signed long INT32S;/*带符号32位数*/typedef float FP32;/*单精度浮点数*/typedef double FP64;/*双精度浮点数*/typedef unsigned int OS_STK;/*堆栈入口宽度*/typedef unsigned int OS_CPU_SR;/*寄存器宽度*/ uC/OS II需要先关中断再访问临界区的代码,并且在访问完后重新允许中断。uC/
9、OS II定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(),本移植实现这两个宏的汇编代码。#define OS_ENTER_CRITICAL()(cpu_sr=OSCPUSaveSR()/*Disable interrupts*/#define OS_EXIT_CRITICAL()(OSCPURestoreSR(cpu_sr)/*Enable interrupts*/EXPORT OSCPUSaveSROSCPUSaveSRmrs r1,cpsrmov r0,r1orr r1,r1,#0xc0msr cpsr_cxsf,r1mov pc
10、,lrEXPORT OSCPURestoreSROSCPURestoreSRmsr cpsr_cxsf,r0mov pc,lr3.2 用C语言实现与处理器任务相关的函数OS_CPU_C.COSTaskStkInit()OSTaskCreateHook()OSTaskDelHook()OSTaskSwHook()OSTaskStatHook()OSTimeTickHook() 实际需要修改的只有OSTaskStkInit()函数,其他五个函数需要声明,但不一定有实际内容。这五个函数都是用户定义的,所以OS_CPU_C.C中没有给出代码。如果需要使用这些函数,可
11、以将文件OS_CFG.H中的#define constant OS_CPU_HOOKS_EN设为1,设为0表示不使用这些函数。 OSTaskStkInit()函数由OSTaskCreate()或OSTaskCreateExt()调用,需要传递的参数是任务代码的起始地址、参数指针(pdata)、任务堆栈顶端的地址和任务的优先级,用来初始化任务的堆栈,初始状态的堆栈模拟发生一次中断后的堆栈结构。堆栈初始化工作结束后,OSTaskStkInit()返回新的堆栈栈顶指针,OSTaskCreate()或OSTaskCreateExt()将指针保存在任务的OS_TCB中
12、。调用OSTaskStkInit()给任务做一个初始的任务上下文堆栈,形状如图3。3.3 处理器相关部分汇编实现 整个uC/OS II移植实现中,只需要提供一个汇编语言文件,提供几个必须由汇编才能实现的函数。a)OSStartHighRdy() 该函数在OSStart()多任务启动之后,负责从最高优先级任务的TCB控制块中获得该任务的堆栈指针sp,通过sp依次将CPU现场恢复,此时系统就将控制权交给用户创建的该任务的进程,直到该任务被阻塞或者被其他更高优先级的任务抢占了CPU。该函数仅仅在多任务启动时被执行一次,用来启动第
13、一个,也就是最高优先级的任务执行。b)OSCtxSw() 该函数是任务级的上下文切换函数,在任务因为被阻塞而主动请求与CPU调度时执行,主要工作是先将当前任务的CPU现场保存到该任务堆栈中,然后获得最高优先级任务的堆栈指针,从该堆栈中恢复此任务的CPU现场,使之继续执行,从而完成一次任务切换。C)OSIntExit() 该函数是中断级的任务切换函数,在时钟中断ISR中发现有高优先级任务在等待时,需要在中断退出后不返回被中断的任务,而是直接调度就绪的高优先级任务执行。其目的在于能够尽快让高优先级的任务得到响应,保证系统的实时
14、性能。d)OSTickISR() 该函数是时钟中断处理函数,主要任务是负责处理时钟中断,调用系统实现的OSTimeTick函数,如果有等待时钟信号的高优先级任务,则需要在中断级别上调度其执行。另外两个相关函数是OSIntEnter()和OSIntExit(),都需要在ISR中执行。4 测试 至此代码移植过程已经完成,下一步工作就是测试。测试一个象uC/OS II一样的多任务实时内核并不复杂,甚至可以在没有应用程序的情况下测试。换句话说,就是让这个实时内核在目标板上跑起来,让内核自己测试自己。这样做有两个好处:第一,避免使本来就复杂的事情更加复杂;第二,如果出现问题,可以知道问题出在内核代码上而不是应用程序。刚开始的时候可以运行一些简单的任务和时钟节拍中断服务例程。一旦多任务调度成功地运行了,再添加应用程序的任务就是非常简单的工作了。5 结束语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年智能建筑中的能源管理与电气节能
- 高三语文教学测评与提升策略报告
- 2026年桥梁施工的基本概念与流程
- 现代文学导读与写作技巧集锦
- 2026年电动摩托车市场的潜力分析
- 2026年历史桥梁的保护与再利用案例
- 银行客户理财服务流程优化
- 连锁店铺开业筹备及运营方案
- 制造业企业节能减排管理实施方案
- 行为习惯教育案例分析与点评
- 内镜院感培训课件
- 2026中征(北京)征信有限责任公司招聘13人考试题库附答案
- 2025年苏州市吴中区保安员考试真题附答案解析
- 底料采购协议书
- 摆放良肢位课件
- 司法救助课件
- 星巴克门店运营管理标准流程手册
- 2025年苏州工业园区领军创业投资有限公司招聘备考题库及完整答案详解1套
- 【《吸尘器造型结构设计(附图)》11000字】
- 提高约束带使用规范率
- 无人机吊运培训课件
评论
0/150
提交评论