51单片机也可以移植RTOS

文章介绍了如何将FreeRTOS操作系统移植到51单片机(STC32G系列)上,详细阐述了移植步骤和配置要求,包括在Keil环境下进行工程设置以及在不同ROM模式下的切换方法。作者提到,通过C语言实现的移植方案在35M速度下任务切换耗时约10us,使用汇编优化可降至5~8us。此外,还提供了开启软件仿真的配置说明。
摘要由CSDN通过智能技术生成

说起RTOS移植,我们首先会想到32位单片机。

那么51单片机可以移植RTOS吗?

我的答案是,只要资源够用(ROM空间、RAM空间),可以移植。
前提是你对RTOS的实现原理非常清楚,并且可以自己完成移植工作。

不过,51单片机移植RTOS,已经有牛人做过这个工作,这位大佬移植的是 FreeRTOS操作系统。

今天主要分享一下这个项目(复制,在浏览器打开),如果有兴趣,可以参考学习一下。

https://gitee.com/open-ell/freertos.git

该作者将FreeRTOS移植到了STC32G系列单片机上。项目工程目录如下图

在这里插入图片描述

支持MCS-251(STC32G系列)的FreeRTOS。

使用说明

目前移植的 FreeRTOS 版本支持 STC32G 的 larg-ROM 和 huge-ROM 两个版本

切换larg-ROM的配置方法:

FreeRTOSConfig.h 里面配置configUSE_ROMHUGE 为 0

点击Keil工程配置按钮【Options for Target】

点击【Target】-> 【Code Rom Size】-> Larg模式

点击【Target】-> 【C251】 -> 【Define】 输入 configSUPPORT_MCS251

点击【Target】-> 【C251】 -> 【Level】 选择4级

点击【Target】-> 【C251】 勾选 Link Code

点击【Target】-> 【C251】 勾选 Generate reentrant

切换Huge-ROM的配置方式:

FreeRTOSConfig.h 里面配置configUSE_ROMHUGE 为 1

点击Keil工程配置按钮【Options for Target】

点击【Target】-> 【Code Rom Size】-> Huge模式

点击【Target】-> 【Exeternal Memory】-> 【ROM】 起始地址:0xFE2000 大小:0x1E000

点击【Target】-> 【C251】 -> 【Define】 输入 configSUPPORT_MCS251

点击【Target】-> 【C251】 -> 【Level】 选择4级

点击【Target】-> 【C251】 勾选 Link Code

点击【Target】-> 【C251】 勾选 Generate reentrant

port.c 为移植接口,注释用英文撰写,为了保持字体编码兼容。

为了方便阅读和学习,以C语言编写为主,但这不是最优方案,还可以使用汇编进行优化。

当前方案,在35M速度下:任务切换速度耗时在10us左右,使用汇编优化,可以到5~8us左右。

默认系统时钟24M,可以根据需要,自己调整。

如果要启动软件仿真,需要进行如下操作:

点击Keil工程配置按钮【Options for Target】-> 【Target】-> 【C251】 -> 【Define】 输入 SOFT_DEBUG (注意不要删除configSUPPORT_MCS251)

开启软件仿真以后,不能在真实硬件上跑。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zsky_01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值