SDCC编译器和FreeRTOS 在C805 1 F上的开发应用
引 言
MCS-51系列单片机应用广泛,在我国学习研究的人较多。使用C语言在单片机上开发程序可提高开发效率,目前针对该内核兼容单片机开发的C语言编译器有Keil、Tasking、Raisonance、IAR和Hi-Tech等,但这些都是商业化的产品,使用需要付费购买。使用专为单片机开发的免费C语言编译器SDCC(Small Device C Compiler)则是一个不错的选择。
由于技术和工艺的发展,各种MCS~51系列内核兼容的新型单片机不断推出,除了运行速度提高,内部资源也逐渐丰富。例如,Silicon Labs公司推出的C8051F系列单片机,兼容8051内核,功能强大,运算速度快,处理能力强,为复杂软件的运行提供了可能。
本文介绍了SDCC编译器和FreeRTOS实时操作系统,在C8051F340上移植了FreeRTOS并使用SDCC编译开发了门禁系统。事实证明,使用免费的资源完全可以满足某些系统的开发需求。
1 SDCC编译器和FreeRTOS简介
SDCC是Sandeep Dutta为8位微控制器设计的一个开放源代码、可编译产生不同CPU的目标代码、优化的ANSI-C编译器。当前版本的目标CPU是Intel公司的 MCS-51兼容系列微处理器芯片、Dallas公司的DS80C390系列、Freescale公司的HC08系列、Microchip公司的PIC系列和Atmel公司的AVR系列等。SDCC编译器的代码遵循GPL协议发布,可以免费使用。
FreeRTOS是为小型嵌入式系统开发的一个开放源代码、免费的实时操作系统内核。其内核大部分使用C语言编程,具有高度的可移植性,目前已经被移植到的处理器平台超过19种。FreeRTOS操作系统商业应用免费,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。FreeRTOS提供的功能包括任务管理、时间管理、信号量、消息队列、内存管理等功能,可基本满足较小系统的需要。
2 FreeRTOS在C8051 F340中的移植和调试
FreeRTOS设计时就考虑了在各种平台上的可移植性,内核大部分代码使用C语言编写,少数代码使用相应平台的汇编语言编写并且这部分被压缩到最小。 FreeR-TOS已经被移植到各种微控制器上,在8051平台上也有相应的移植代码。从FreeRTOS网站下载得到的程序中,包含了一个在 C8051F120单片机上的移植版本。C8051F120和C8051F340单片机在硬件资源上的主要差别,如表1所列。
FreeRTOS对目标平台硬件资源的要求不高,最后编译的目标代码量由所选配置选项决定。一般需要2 KBRAM和10 KB左右的ROM即可运行。由表1可以看出,二者的硬件平台比较接近,因此移植工作量不大。针对C8051F120和C8051F340单片机硬件平台的差别,将在C8051F120单片机上运行的FreeRTOS移植到C8051F340平台上所做的工作包括:替换C8051F120CPU的头文件,调整RAM范围大小,修改外部晶振频率,修改时钟滴答数等。
修改的文件有FreeRTOS\Demo\
FreeRTOS的C8051F120平台移植代码中使用定时器2来产生系统所需的定时中断。C8051F340和C8051F120的定时器2寄存器配置略有不同,port.c中的static void prvSetupTimerInterrupt(void)函数修改后内容如下:
![](http://m.amcfsurvey.com/editerupload/fetch/20130926/173636_1_2.jpg)
Silicon Labs公司提供了一个集成开发环境(IDE),可方便地使用该IDE开发C8051F系列单片机程序。该IDE支持多种第三方编译工具,如Keil、 Raisonance、Tas-king、Hi-Tech、SDCC和IAR等,使用时只需安装对应的软件,然后设置编译器的安装路径和编译选项即可,如图1所示。本文只对涉及SDCC的选项进行说明。
评论