uC/OS-II在ADSP—BF531上的移植
发布时间:2007/8/30 0:00:00 访问次数:875
摘要:介绍源代码公开的实时操作系统μC/OS-II的特点、内核结构及ADSP—BF53l的硬件特征,同时给出将μC/0S-II移植到ADSP-BF531型数字信号处理器上的详细步骤和关键代码。
关键词:RTOS;μC/OS-II;ADSP-BF53l;移植
引言
随着计算机技术的发展,嵌入式系统的应用愈来愈广泛,对人们的生活产生了巨大的影响。通常,嵌入式系统的软件部分都应用了实时操作系统(简称RTOS),在特定的RTOS之上开发应用软件,可以让程序开发人员屏蔽掉许多底层硬件细节,提高软件功能设计效率,简化开发难度,同时使得程序调试方便,移植简单,易维护,大大缩短开发周期,RTOS也因此越来越受到嵌入式系统开发人员的青睐。目前实时操作系统很多,如VxWorks、Windows CE、pSOS等,但这些软件的价格和使用成本(版权费、维护费等)都十分昂贵,因此商业级RTOS软件在使用上受到诸多的限制。而μC/OS-II则不同,它的源代码是全部公开的,并且完全免费,是一个自由操作系统,程序开发人员可以改写其中的源代码使之符合自己的要求。由于其极强的可移植性和可裁减性,用户可以根据自己的需要,裁剪掉不需要的部分,使操作系统变得小巧灵活,同时又能够满足用户特定操作系统的需要。μC/OS-II的可靠性完全可以与商业级RTOS软件相媲美,因此笔者在移植过程中选用了这一实时操作系统。
1 ADSP—BF531的硬件特征
Blackfin系列中的ADSP—BF531型数字信号处理器是由ADl和Intel公司合作,针对音频和视频信号的编解码、手持设备和移动通信设备而研发的16位定点处理器,是建立在微信号架构基础之上,集高性能数字信号处理器与微控制器于一身。ADSP-BF53l的内核工作频率最高可达400MHz,处理器内核中包含2个16位MAC、2个40位ALU及4个8位ALU。专门用于视频信号的处理;还集成了许多片上外设,包括硬件UART、SPI接口、PPI接口、同步串口、看门狗电路、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定
摘要:介绍源代码公开的实时操作系统μC/OS-II的特点、内核结构及ADSP—BF53l的硬件特征,同时给出将μC/0S-II移植到ADSP-BF531型数字信号处理器上的详细步骤和关键代码。
关键词:RTOS;μC/OS-II;ADSP-BF53l;移植
引言
随着计算机技术的发展,嵌入式系统的应用愈来愈广泛,对人们的生活产生了巨大的影响。通常,嵌入式系统的软件部分都应用了实时操作系统(简称RTOS),在特定的RTOS之上开发应用软件,可以让程序开发人员屏蔽掉许多底层硬件细节,提高软件功能设计效率,简化开发难度,同时使得程序调试方便,移植简单,易维护,大大缩短开发周期,RTOS也因此越来越受到嵌入式系统开发人员的青睐。目前实时操作系统很多,如VxWorks、Windows CE、pSOS等,但这些软件的价格和使用成本(版权费、维护费等)都十分昂贵,因此商业级RTOS软件在使用上受到诸多的限制。而μC/OS-II则不同,它的源代码是全部公开的,并且完全免费,是一个自由操作系统,程序开发人员可以改写其中的源代码使之符合自己的要求。由于其极强的可移植性和可裁减性,用户可以根据自己的需要,裁剪掉不需要的部分,使操作系统变得小巧灵活,同时又能够满足用户特定操作系统的需要。μC/OS-II的可靠性完全可以与商业级RTOS软件相媲美,因此笔者在移植过程中选用了这一实时操作系统。
1 ADSP—BF531的硬件特征
Blackfin系列中的ADSP—BF531型数字信号处理器是由ADl和Intel公司合作,针对音频和视频信号的编解码、手持设备和移动通信设备而研发的16位定点处理器,是建立在微信号架构基础之上,集高性能数字信号处理器与微控制器于一身。ADSP-BF53l的内核工作频率最高可达400MHz,处理器内核中包含2个16位MAC、2个40位ALU及4个8位ALU。专门用于视频信号的处理;还集成了许多片上外设,包括硬件UART、SPI接口、PPI接口、同步串口、看门狗电路、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定