一、背景
前面介绍了掌上单片机实验室的构想,以及以 Arduino、Free RTOS为基础的学习过程,如果针对非计算机专业的学生而言,所述内容作为单片机或嵌入式的课程素材,应该够了,因为他们只有大约40~60学时,能把前述的学习内容消化实施,再在此基础上做些拓展,结合自己的兴趣,做些个性化的应用尝试,已经能初步掌握单片机的应用技能。在此,我想说明一点:我认为在如此少的学时中,重点应放在“如何用单片机解决具体应用问题“的能力培养上,而非将某个具体单片机学懂、学透,重在需求分析及软件构思。所以选择了Arduino IDE;而引入RTOS是因为RTOS的设计思路对培养良好的软件构思方式颇有益处。
但基于Arduino 和 FreeRTOS也有器局限性,主要是实用性略弱,学生基本上不能基于此去应对实际工作。
为满足这类需求,尝试在“掌上单片机实验室“硬件平台上以RT-Thread 实时操作系统为基础,完成相应的学习内容。因为 RT-Thread 提供了较丰富的资源,在物联网应用上具有相当的实用性;此外,它的软件框架是完全基于对象的分层架构,可以学习不同的编程思路;而且,它是国产的开源软件,在目前的大环境下,有其特有的价值。
二、目的
通过实现小车的驱动和基本操控,掌握基于 RT-Thread 的编程方式,学会基于 RT-Thread 构建程序的思路。
在此,特别强调一点:学习过程是以应用RT-Thread为出发点,重点放在“用“上,而非去消化 RT-Thread 的内部是如何实现的?如何移植某款单片机到RT-Thread上?
因为,作为学生,能在日后工作中用好一款操作系统已属不易,不要想去写一个操作系统了。我并不排斥通过了解操作系统是如何实现,来进一步掌握系统的应用,但这不是在学习过之初!RT-Thread是开源的,完全可以在实际应用中,遇到问题或想提高性能或代码效率时,用单步调试方式,跟踪到系统代码中,琢磨如何结合应用的需求去优化。在此过程中,自然就了解了系统的实现过程。
而单片机的移植根本不用使用者操心,单片机厂家会去做,而且他们也做的会更好!如果一款单片机厂家都不愿意去做RT-Thread的移植,那你也不必选择它。
我觉得,网上以及RT-Thread官方的资料中,侧重介绍RT-Thread 内部的内容太多,而将其看成是一个“黑箱“或”灰箱“,侧重于系统介绍如何使用、如何避坑的内容太少,只能靠学习者通过大量的网上资料自己拼凑出应用的方法(这是我初步尝试的感受)。
目前嵌入式软件(单片机程序)都在逐步API化,其用意就在于封装,让使用者可以比较方便上手,将编程的精力放在解决应用问题上,而非耗在学习、适应开发环境上。
RT-Thread的框架应该是基于此宗旨设计的,但由于单片机的多样性和灵活性,其在驱动(组件)的添加上有点麻烦;但正因为如此,更应该为使用者提供全面、系统的使用说明,否则会有人因此而放弃选用。
从使用角度考虑,当然希望RT-Thread能像Arduino那样封装的比较完善,用起来可以“傻“一些。但目前的设备驱动添加模式应该已经成形,有大的改动估计很难。那至少官方能提供比较全面、系统的实现过程说明,通过实际的示例,让初学者可以方便的实现设备组件添加。(我是绕了很大一圈才搞定PWM设备,虽说最后重新梳理后觉得很好理解和实现,但这是通过网上查阅别人的分享、自己摸索后才得到的,我觉得应该通过官方的资料中获得,从别人的分享中得到答案不是正途,因为RT-Thread还在不断完善、更新,网友分享是无法做到同步更新的)。
尝试RT-Thread的目的是希望通过我的分享,能帮助新人快速上手,使RT-Thread更为普遍的为国人所选用。
三、实施计划
对照前面用 Arduino和Free RTOS的过程,将编程环境替换为 RT-Thread,实现完全相同的内容。这样可以对照看出不同系统的差异,以及各自的优越性,针对不同需求,做合适的选择。
在初步摸索过程中,因为使用的是STM32,且STM32CubeMX中可以方便的添加RT-Thread,故首先考虑选择 STM32CubeMX作为开发环境。略加尝试后,觉得还是有诸多不便,主要是由于不但要学习STM32CubeMX,还要学用 STM32CubeIDE,否则就要使用盗版的 IAR或MDK,似有不妥。
于是就尝试一下 RT-Thread 官方的RT-Thread Studio,初步体验不错。既然是要使用 RT-Thread,官方提供的集成开发环境应该是最完善的,否则不是自己打脸吗?而且考虑到如果替换为别的MCU,如势头正盛的RISC-V内核MCU,用STM32CubeMX开发的经验就全部作废了。所以从学习的潜在价值考虑,选择官方的 RT-Thread Studio 更加合理!
四、结语
下面就开始我的 RT-Thread 学习之旅吧,但愿能从中获得惊喜,因为这是我尝试的第三个RTOS,前面两个是:uCOSII、FreeRTOS。
期待国人自己的OS能做的更好。
——————————————————