0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SDCC编译器和FreeRTOS实时操作系统的优缺点及应用研究

电子设计 来源:单片机及嵌入式系统应用 作者:王晓,黄鹤松,薛琳 2020-09-05 12:16 次阅读

引言

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)函数修改后内容如下:

Silicon Labs公司提供了一个集成开发环境(IDE),可方便地使用该IDE开发C8051F系列单片机程序。该IDE支持多种第三方编译工具,如Keil、 Raisonance、Tas-king、Hi-Tech、SDCC和IAR等,使用时只需安装对应的软件,然后设置编译器的安装路径和编译选项即可,如图1所示。本文只对涉及SDCC的选项进行说明。

SDCC可从http://sdcc.sourceforge.net下载得到。本文使用的版本为sdcc-win32 2.8.0,具体安装方法和步骤参考sdccman.pdf手册。安装完后,在C8051F340平台上编译FreeRTOS的SDCC选项,如表2所列。

3 在门禁系统中使用FreeRTOS

FreeRTOS移植完成后,成功地在开发的门禁系统中得到了应用验证。该门禁系统实现的功能主要有:实现刷ID卡开门,利用键盘输入住户号和密码开门,住户数据使用GPRS服务通信实现数据远程管理等。

硬件系统主要由C8051F340单片机、ID卡读卡模块、GPRS模块、键盘/显示模块和存储器模块等组成,系统结构如图3所示。

系统软件上如果使用传统的前后台程序设计思路,则程序结构复杂,设计周期长,测试困难。使用实时操作系统,可将系统按功能和设备依赖性的原则划分为不同的任务,各个任务可以看作是并行执行,任务之间使用实时操作系统提供的API实现存储器互斥访问和其他资源的同步等,可以较好地满足该系统的需求。

根据系统的功能,建立3个任务:ID卡读卡处理任务、键盘/显示任务和GPRS数据通信处理任务。各个任务的功能如下:

①ID卡读卡处理任务vIdTask。ID卡读卡任务主要完成ID卡卡号的读取和识别等功能,优先级最高。

②键盘/显示任务vKeyDispTask。键盘/显示模块主要完成人机交互和日期的显示,错误信息的提示等,优先级次之。

③GPRS数据通信处理任务vG-PRSTask。GPRS数据通信任务主要完成与管理端GPRS模块的通信连接和GPRS协议数据的处理等,优先级最低。

另外,GPRS模块使用串行通信口与C8051F340通信,串口的接收程序采用中断服务程序,不受操作系统的管理。当收到对应的信息时,向 GPRS数据通信处理任务发送消息,GPRS数据通信处理任务再进行处理。建立的三个任务都有可能同时读写存储器,因此建立一个互斥信号量,当需要操作存储器时,先得到这个信号量,存储器操作完毕后再释放这个信号量。ID卡读卡处理任务的代码中互斥信号量的使用如下:

系统主函数主要完成硬件初始化,建立信号量、任务和各个任务的启动等。部分代码实现如下:

4 结论

使用SDCC编译器和 FreeRTOS操作系统等免费资源开发系统程序,能够减少工作量,降低开发成本,具有很大的优势。SDCC编译器应用灵活,配置方便,FreeRTOS 经过修改裁减后,代码精简,结构紧凑,适合于小型嵌入式系统应用。作者在门禁系统中应用得到成功的验证;但是SDCC和 FreeRTOS仍有许多缺点,如SDCC没有IDE,编译配置选项复杂,FreeRTOS提供的服务功能有限等。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44551

    浏览量

    634425
  • 操作系统
    +关注

    关注

    37

    文章

    6794

    浏览量

    123276
  • 编译器
    +关注

    关注

    1

    文章

    1623

    浏览量

    49103
收藏 人收藏

    评论

    相关推荐

    基于嵌入式实时操作系统MQX的内核分析及应用研究

    基于嵌入式实时操作系统MQX的内核分析及应用研究
    发表于 08-18 15:29

    【案例分享】FreeRTOS的嵌入式实时操作系统的实现

    FreeRTOS是一个源码公开的免费的嵌入式实时操作系统,通过研究其内核可以更好地理解嵌入式操作系统的实现原理.本文主要阐述
    发表于 07-23 04:30

    基于SDCC编译器FreeRTOS操作系统怎么在C8051F340上移植?

    MCS-51系列单片机应用广泛,在我国学习研究的人较多。使用C语言在单片机上开发程序可提高开发效率,目前针对该内核兼容单片机开发的C语言编译器有Keil、Tasking、Raisonance、IAR
    发表于 09-17 08:24

    请问freertos是硬实时操作系统吗?

    freertos是硬实时操作系统吗?都有哪些硬实时操作系统啊?
    发表于 06-13 09:00

    如何在C8051F340上移植FreeRTOS并使用SDCC编译开发门禁系统

    本文介绍了SDCC编译器FreeRTOS实时操作系统,在C8051F340上移植了FreeRTOS
    发表于 04-28 06:02

    阐述FreeRTOS系统中的机制及在应用中的优缺点

    FreeRTOS是一个源码公开的免费的嵌入式实时操作系统,通过研究其内核可以更好地理解嵌入式操作系统的实现原理.本文主要阐述
    发表于 12-20 06:34

    嵌入式实时操作系统在航天软件中的应用研究李化云

    嵌入式实时操作系统在航天软件中的应用研究_李化云
    发表于 03-14 08:00 2次下载

    FreeRTOS嵌入式开源实时操作系统介绍

    FreeRTOS是一个嵌入式系统使用的开源实时操作系统FreeRTOS被设计为“小巧,简单,和易用”,能支持许多不同硬件架构以及交叉
    发表于 11-18 03:30 4195次阅读

    基于FreeRTOS的嵌入式实时操作系统的原理和实现

    FreeRTOS是一个源码公开的免费的嵌入式实时操作系统,通过研究其内核可以更好地理解嵌入式操作系统的实现原理.本文主要阐述
    发表于 11-18 03:34 6668次阅读

    SDCC编译器FreeRTOS在C8051F上的开发的应用

    SDCC编译器FreeRTOS在C8051F上的开发的应用(通讯电源技术2020年15期)-SDCC编译器
    发表于 08-31 11:38 4次下载
    <b class='flag-5'>SDCC</b><b class='flag-5'>编译器</b>和<b class='flag-5'>FreeRTOS</b>在C8051F上的开发的应用

    SDCC编译器FreeRTOS在C8051F上的开发应用

    Labs公司推出的C8051F系列单片机,兼容8051内核,功能强大,运算速度快,处理能力强,为复杂软件的运行提供了可能。本文介绍了SDCC编译器FreeRTOS实时
    发表于 09-17 12:53 8次下载
    <b class='flag-5'>SDCC</b><b class='flag-5'>编译器</b>和<b class='flag-5'>FreeRTOS</b>在C8051F上的开发应用

    SDCC编译器FreeRTOS在C8051F上的开发应用

    SDCC编译器FreeRTOS在C8051F上的开发应用(核达中远通电源技术有限公司招聘信息)-SDCC编译器
    发表于 09-18 17:14 21次下载
    <b class='flag-5'>SDCC</b><b class='flag-5'>编译器</b>和<b class='flag-5'>FreeRTOS</b>在C8051F上的开发应用

    SDCC-Linux下的51 MCU编译器

    SDCC (小型设备C编译器)是为8位微控制开发的免费C编译器。尽管兼容多种不同体系结构,但SDCC C
    的头像 发表于 06-16 15:19 5057次阅读

    FreeRTOS:一个迷你的实时操作系统内核

    ** 1、FreeRTOS** FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量
    的头像 发表于 06-29 17:15 986次阅读
    <b class='flag-5'>FreeRTOS</b>:一个迷你的<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>内核

    FreeRTOS实时操作系统简述

    FreeRTOS是一个为嵌入式系统设计的开源实时操作系统。它提供了一个多任务内核和一系列组件功能,适合在资源受限的设备上管理实时任务和应用程
    发表于 09-19 12:37 1784次阅读
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>简述