当前位置:首页 > 嵌入式 > 嵌入式微处理器
[导读]在如今芯片沉浮的大环境下,中国“芯”一直在暗暗发力,经过卡脖子、等封装、没晶圆的窘境,下一步将会是什么情况不得而知。项目需求下,如果只有PLANA,风险等级就会被判定为为高。有PLANB,风险等级也只是“海中一滴水”。如此,PLANC、PLAND成了公司立项的常态的趋势,甚至有些...


在如今芯片沉浮的大环境下,中国“芯”一直在暗暗发力,经过卡脖子、等封装、没晶圆的窘境,下一步将会是什么情况不得而知。
项目需求下,如果只有PLAN A,风险等级就会被判定为为高。有PLAN B,风险等级也只是“海中一滴水”。如此,PLAN C、PLAN D成了公司立项的常态的趋势,甚至有些朋友将PLAN做到了“N”。
此情此景,人人都在暗自“搞备胎”,可想而知,这是到底有多慌。所以有一句话,芯不在手,慌上心头,只有捧在手里才是真“芯”
扯了这么多,似乎都是闲话,与本次的内容背道而驰,不过不用着急,好东西不怕晚,下面请出本次的主角: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、RT-Thread
不过不过,这些都是裸机的,正如标题,本文重点想说的是RT-Thread在CotexM23上的起起伏伏,CotexM23已经具备,只是RT-Thread还没登场,下面说说RT-Thread,当然百度一搜那也是一堆,RT-Thread优秀自然不用说,但是我的出发点是比较简单,因为他是国产的RTOS(实时操作系统),国产系统配国产“芯”那也算的是真正意义上的中国“芯”,值得鼓励,值得拥有。
以下是RT-Thread自言自语,摘抄自RT-Thread官网:
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.1 RTThread试验移植
官方的移植教程,清晰明了。优秀的团队出来的也是优秀的作品。以下是官方权威链接。
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-keil/an0039-nano-port-keil
3.2 RTThread起起伏伏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一下,蹦出不少东西,至此为RT-Thread在CotexM23上的起起伏伏暂告一段落。

此文如有不恰当出处,敬请谅解,路漫漫其修远兮,中国“芯”路历程,我们一起见证起起伏伏,最后附上工程代码。
 GD32E23x_Demo_RTT.rar (1.28 MB, 点击“阅读原文”内下载文件)

END
本文系21ic论坛资深网友yanzhengxin1原创撰写
▍
嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在嵌入式实时操作系统领域,RT-Thread凭借高可裁剪、高实时性的特性,已经成为工业控制、物联网、智能硬件等领域应用最广泛的国产RTOS之一。而线程调度与管理作为RT-Thread内核的核心模块,是支撑整个系统多任务并...

关键字: RT-Thread 系统线程

RT-Thread的设备驱动框架将硬件抽象为统一的设备对象,应用程序通过标准接口(open/read/write/control)操作外设,无需关心底层寄存器。本文以STM32上的一个虚拟GPIO输出设备为例,演示从零编...

关键字: RT-Thread 设备驱动 STM32

在RT-Thread(RTT)嵌入式实时系统中,多线程间的同步与通信是应用稳定性的基石。信号量(Semaphore)、队列(Message Queue)与事件集(Event)分别对应“通知”“传数”“多条件等待”三种典型...

关键字: RT-Thread 多线程通信

在国产嵌入式实时操作系统领域,RT-Thread无疑是当下最活跃、应用最广泛的开源项目。从早期的个人项目发展到如今支持从8位微控制器到64位多核处理器,覆盖物联网、工业控制、消费电子等多个领域,RT-Thread的成功离...

关键字: RT-Thread 对象容器

树莓派3B凭借低成本、高性能、丰富的外设资源,一直是嵌入式爱好者和开发者学习RTOS的热门平台,而RT-Thread作为国内生态最完善的开源实时操作系统,对树莓派3B有着完善的原生支持。但很多刚接触的开发者,往往卡在环境...

关键字: RT-Thread Linux

作为国内应用最广泛的开源物联网实时操作系统,RT-Thread凭借体积小、实时性强、资源占用低的优势,已经成为中小微嵌入式设备开发的首选RTOS。而线程作为RT-Thread中最基础的调度单元,其调度与管理机制直接决定了...

关键字: RT-Thread CPU

当嵌入式工程师在FreeRTOS、RT-Thread、Zephyr和μC/OS之间做选择时,他们面对的不仅是技术参数的对比,更是四种截然不同的设计哲学。这四款RTOS分别代表了“极简主义的胜利”、“商业可靠的典范”、“国...

关键字: FreeRTOS RT-Thread

作为国内自主研发的实时操作系统(RTOS),RT-Thread凭借其轻量、高效、可裁剪的特性,在嵌入式领域占据了重要地位。内存管理作为操作系统的核心组件之一,直接影响着系统的性能、稳定性和资源利用率。RT-Thread针...

关键字: 实时操作系统 RT-Thread

在工业控制、汽车电子等硬实时场景中,任务调度的确定性直接决定系统稳定性。RT-Thread作为国产实时操作系统,通过优先级继承机制和死锁预防策略,为嵌入式开发者提供了可靠的调度优化方案。

关键字: RT-Thread 工业控制 任务调度

在工业机器人、CNC机床等高精度运动控制场景中,传统RTOS常面临实时性不足、多轴同步困难等问题。RT-Thread凭借其微内核架构、丰富的组件生态和硬实时特性,为运动控制系统提供了全新的解决方案。

关键字: RT-Thread 工业机器人
关闭