牛逼大了,在51上移植RTOS

之前的文章

STC的官网,是我永远忘不掉的炼丹炉

有一个大佬评论

935feab4d959410d1a5764e2e2d577e0.png

所以,趁着这个机会,给大家看看他写的代码

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

文件目录是我喜欢的风格,bsp这个很明显就知道是做什么的

9dcdb7a9ced739991f0699c868b257ef.png

下面是项目的整体介绍

FreeRTOS for MCS-251

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

使用说明

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

切换larg-ROM的配置方法:

1. FreeRTOSConfig.h 里面配置configUSE_ROMHUGE 为 0

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

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

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

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

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

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

切换Huge-ROM的配置方式:

1. FreeRTOSConfig.h 里面配置configUSE_ROMHUGE 为 1

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

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

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

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

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

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

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

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

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

当前方案,在35M速度下:

任务切换速度耗时在10us左右,使用汇编优化,可以到5~8us左右。

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

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

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

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

参与贡献

1. 请加QQ群:1001220381

2.  Fork 本仓库

3.  新建 Feat_xxx 分支

4.  提交代码

5.  新建 Pull Request


因为时间关系,没有好好采访这个小伙伴,看到他做的事情,确实是十分有意义的,不管是对自己的技术发展,还是对于其他人学习。

工作多年,我总是听到有人说,这个很容易,那个很容易,总觉得自己做的事情才是困难的,别人做的事情就差一大截,嵌入式在每个细分方向都是可以深入挖掘的,是不是难的事情,应该交给专业的人去评价,能完成这样的项目,本身来说就已经足够有说服力。

猜你喜欢

转载自blog.csdn.net/weiqifa0/article/details/129964719