发新帖本帖赏金 100.00元(功能说明)我要提问
返回列表
打印

国产GD32替代:RTThread在CotexM23上的起起伏伏

[复制链接]
15058|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yanzhengxin1 于 2021-9-2 09:09 编辑

@21小跑堂 #申请原创# RTThread在CotexM23上的起起伏伏
在如今芯片沉浮的大环境下,中国“芯”一直在暗暗发力,经过了卡脖子、等封装、没晶圆,下一步将会是什么情况不得而知,项目需要,如果只有PLANA,似乎风险等级为高,有PLANB,风险等级似乎没变化还是高,如此,PLANC、PLAND仿佛有成为常态的趋势,有朋友甚至直接搞到了PLAN十,可想而知,这是到底有多慌,所以有一句话,手里有“芯”,心真的不慌,只有捧在手里的才是真“芯”。
扯了这么多,似乎都是闲话,与本次的内容背道而驰,不过不用着急,好东西不怕晚,下面请出本次的主角:GD32E230C8T6芯片,搭载在GD32E230C-EVAL 开发板上,我们将其称之为DEMO板,按照国际惯例,首先是图片展示:
1、GD32E230系列芯片简介
ARM架构毋庸置疑,但是核属于CotexM23,MCU世界里面ARM家族的比较通用的是CotexM0,CotexM3,CotexM4等,这CotexM23属于什么东西,很是奇怪,查了一下,属于ARMV8新的体系,百度一下ARMV8与ARMV7的区别,核心的区别是ARMV8为了满足64位的机器,所以进行了更新发展,不过2011年就放出来了,话说也是快10年了,这许多年的发展,可怜我孤陋寡闻,尽然全然不知道这个东西,看来知识体系还是需要不断更新。
DataSheet的资源配置,全局呈现如下图所示:
纵观资源还是挺丰富,再看看配套DEMO板的裸机SDK,也是该有的都有GPIO、UART、ADC、IIC、SPI、I2S、IR、Timer等等
2、RTThread
不过不过,这些都是裸机的,正如标题,本文重点想说的是RTThread在CotexM23上的起起伏伏,CotexM23已经具备,只是RTThread还没登场,下面说说RTThread,当然百度一搜那也是一堆,RTThread优秀自然不用说,但是我的出发点是比较简单,因为他是国产的RTOS(实时操作系统),国产系统配国产“芯”那也算的是真正意义上的中国“芯”,值得鼓励,值得拥有。
以下是RTThread自言自语,摘抄自RTThread官网
RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面向对象的设计方法应用到实时系统设计中,使得代码风格优雅、架构清晰、系统模块化并且可裁剪性非常好。针对资源受限的微控制器(MCU)系统,可通过方便易用的工具,裁剪出仅需要 3KB Flash、1.2KB RAM 内存资源的 NANO 版本(NANO 是 RT-Thread 官方于2017 年 7 月份发布的一个极简版内核);而对于资源丰富的物联网设备,RT-Thread 又能使用在线的软件包管理工具,配合系统配置工具实现直观快速的模块化裁剪,无缝地导入丰富的软件功能包,实现类似 Android 的图形界面及触摸滑动效果、智能语音交互效果等复杂功能。
相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。
3、RTThread起起伏伏
NANO版本裁剪出仅需要 3KB Flash、1.2KB RAM 内存资源,还是比较惊艳,相较与其他的RTOS还是很酷的,FreeRTOS就达不到如此小巧简洁,大道至简,适用的场景就会更加丰富,一路通吃。本次就用NANO版本试验喽。
3.1RTThread试验移植
官方的移植教程,清晰明了。优秀的团队出来的也是优秀的作品。以下是官方权威链接。
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-keil/an0039-nano-port-keil
3.2RTThread起起伏伏3.2.1起起伏伏第一幕
起伏现象:
原因分析:
rt_show_version()正常显示,突然就直接报错,挣扎许久,仔细分析了一番,RTThread超前初始化完成之后,便开始了主函数(main)线程的运行,因此可能是main线程出问题,是不是main线程的栈太小了,查看main线程栈大小,一看是256Bytes,上面的一行Default:512。

解决方案:
将main线程栈改为512
编译、烧录、验证果然不错了,果然是内有乾坤呀。至此起起伏伏第一幕完成。

3.2.2起起伏伏第二幕
起伏现象:
承上启下,层层递进,RTThead控制台能正常运行,Finsh没有,no fish,无鱼(语)。


为什么就没有Finsh组件,观工程,Finsh组件加载了,char rt_hw_console_getchar(void)函数也有了,神马情况,还有坑????

百度分析一番,还是没有结果,百度如是说:


难道真的是这个原因(搞不清到底是个啥),添加上,试验一下,结果还是唏嘘不已,看来也不全然是这个问题,那就只能再静静思考一下
原因分析:
根据现象看本质,首先看看MSH的配置,栈的大小1024比较大了,应该是没问题的,那难道是线程优先级的问题,优先级21,这是个什么等级,估计都被遗忘了,抢都抢不到执行的权利吧,可怜呀。

解决方案:
试验一下,提升一下地位,修改一下等级,加入抢占的行列梯队,于是修改了优先级
保存、编译、烧录,哎呦MSH出来了,看来真是这个坑呀!至此起起伏伏第二幕完成。
2.3起起伏伏番外
没有伏,只有起,help一下,蹦出不少东西,至此为RTThread在CotexM23上的起起伏伏暂告一段落。
此文如有不恰当出处,敬请谅解,路漫漫其修远兮,中国“芯”路历程,我们一起见证起起伏伏,最后附上工程代码。
GD32E23x_Demo_RTT.rar (1.28 MB)

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 100.00 元 2021-09-02
理由:恭喜通过原创奖文章审核!请多多加油哦!

沙发
yanzhengxin1|  楼主 | 2021-9-1 08:44 | 只看该作者
@21小跑堂 申请原创

使用特权

评论回复
板凳
yanzhengxin1|  楼主 | 2021-9-1 08:44 | 只看该作者
yanzhengxin1 发表于 2021-9-1 08:44
@21小跑堂 申请原创

@21小跑堂 申请原创需要@你,还需要重新发帖吗??

使用特权

评论回复
地板
单片小菜| | 2021-9-1 10:18 | 只看该作者
感觉这个帖子写的很好呀。

使用特权

评论回复
5
两只袜子| | 2021-9-9 16:27 | 只看该作者
文档排的相当工整

使用特权

评论回复
6
chenqianqian| | 2021-9-10 18:12 | 只看该作者
写的不错,支持一下。

使用特权

评论回复
7
xyfdz8| | 2021-9-11 10:20 | 只看该作者
帖子写的很好哦。我是GD的销售员 专营GD 出GD现货GD32f103VET6和GD32F405RGT6   有需要联系:17316927642(微信同号)

使用特权

评论回复
发新帖 本帖赏金 100.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

140

帖子

3

粉丝