![]()
看门狗电路、16个GPIO接口等。为了达到降低功耗的目的,该处理器具有多种工作模式,同时通过编程还可以动态改变处理器内核的工作频率和电压.这些特性都为手持设备提供了绝佳的选择。用户可以利用ADI公司提供的VisualDSP++3.0(或更高版本)集成开发环境对处理器进行编程、调试和开发。 2 实时操作系统介绍 μC/OS-II是一种专门为微处理器设计的占先式实时多任务操作系统,具有源代码公开、可移植性和可裁减性强、代码可固化、稳定性和可靠性高等特点。其内核主要提供任务管理、内存管理、时间管理等服务,系统最多可以支持64个任务(8个留于系统),每个任务均有自己独立的优先级。由于内核为占先式的,因此总是运行优先级最高的任务。系统提供了丰富的函数可供调用,实现任务间的通信和切换。μ/OS-II的大部分代码都是使用标准的A-NIS C编写的.只有与处理器相关的一部分代码使用汇编语言.因此具有极强的移植性,在大多数8位、16位和32位处理器上都能稳定的运行。 图1示出μC/OS-II的软硬件体系结构。从图中可以看出,要实现μC/OS-II的移植,必须为其编写OS_CPU.H、0S_CPU_C.C和OS_CPU_A.ASM 3个文件,这3个文件都与处理器的硬件特性相关,提供任务切换和系统时钟功能。其余源文件的代码都是公开的,可以直接从μC/OS-II的官方网站下载。 3对编译器的要求 虽然μC/OS-II具有很强的移植性,但在移植时,对处理器的编译器有如下几点要求: 处理器的C编译器能够产生可重人代码; 用C语言可以打开和关闭中断; 处理器支持中断,并且能够产生定时中断; 处理器能够容纳一定量数据的硬件堆栈; 处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈空间或内存中的指令。 ADSP-BF531型处理器的集成开发环境Visu-al++3.0通过关键字asm能在C代码中嵌入汇编语言,同时内核定时器可以为系统提供定时中断,总数量达20kbyte的片上数据RAM和SP、FP、USP 3个堆栈指针寄存器为操作系统各任务提供了丰富的硬件堆栈空间及对堆栈的方便操作。笔者正是在这些基础上利用Visual++3.0编译环境成功地完成了对ADSP-BF531处理器的μC/OS-II移植。 4 移植μJLC/OS-II 4.1重定义OS_CPIJ.H文件 4.1.1与编译器相关的数据类型 不同的处理器有不同的字长,μC/OS-II不使用C的short、int、long等与编译器相关的数据类型,而是重新定义了一系列类型以确保系统的可移植性,在系统移植时必须在OS_CPU.H头文件中对这些数据类型重新定义,具体内容如下: typedef unsigned char BOOLEAN typedef unsigned char INT8U typedef signed char INT8S typedef unsigned short INTl6U typedef signed short INTl6S typedef unsigned int INT32U typedef signed int INT32S μC/OS-II中的指针根据处理器堆栈数据入口宽度定义为OS_STK类型: typedef unsigned int OS_STK 4.1.2临界代码 RTOS在进入系统临界区之前都必须先关中断,退出后再开中断,μC/OS-II定义了2个宏指令来关闭/打开中断:
![]()