记2019-RTT成都开发者大会

Creative Commons
本作品采用知识共享署名

本文记录2019 rt-thread 成都开发者大会见闻和个人参会的准备工作

首先感谢上海睿赛德电子科技有限公司(rt-thread)提供的礼品
gift
成都很难得见到比较大规模专门的嵌入式交流活动,这次rt-thread提供了这次机会,同时也得到了很好的反应,成都的小伙伴大约到了260人,有早上5点多就从郫县出发的,热情非常高涨。
作为一个嵌入式os的爱好者之前只是在新闻中了解rt-thread,有幸今天参加了rt-thread成都开发者大会,向熊总,朱总,邱总当面请教了一些感兴趣的问题。总体的感觉是rt-thread的团队是技术出身,但不单有技术情怀,而是通过技术的情怀找到行业技术上的痛点进行解决。

见闻摘要

摘要一些个人感兴趣的内容分享。由于坐得比较远,相片效果不好,大家将就看。另外靠回忆记录的一些交流信息,细节可能有遗漏和错误,如果大家发现请指正。有一些个人的粗浅的胡乱之语,也请各位看客看过笑过。

开场

rt-thread COO致辞
start

微内核

熊总介绍微内核
xiong
一开始熊总提到rt-thread要演进成微内核,确实很吃惊,在强调实时os的情况下用微内核简直是不可思议,和熊总请教下来主要有下几点

  1. rt-thread使用的场景越来越多,有些场景MCU/MPU资源足够丰富,足够支撑微内核
  2. 一些富功能的场景也强调开机速度,微内核可以带来改善
  3. 因为开机速度的大幅提高,在做低功耗管理的时候可以直接关机
  4. 安全性
  5. 实时或者速度问题解决依靠混合微内核,强调实时性强的任务可放入内核态
  6. rt-thread微内核版本将在2020/M释放

下面这张图是目前rt-thread内部开发的demo,使用全志的CPU
hw
sw

rt-thread nano

邱总介绍nano
nano
rt-thread nano的主要目的有两个:

  1. 不让刚入门的看到一堆组件和软件包发憷
  2. 提供可剪裁的最小OS内核

和邱总请教下来,rt-thread nano的内核和shell和完整版是保持sync的。个人认为如果只是提取完整版的内核和shell应该不用单独维护nano,通过脚本提取或是rt-thread studio直接提取即可。

rt-thread studio

朱总介绍studio
studio
一开始说studio是原来co-ide的人开发,比较惊讶。不过想想也合理,如果完全重头来做studio会是一个很大的工程。早些年用coos的时候接触过co-ide, 当时coocox还是武汉大学的下属公司,后来被派睿收购了就没了声息。如今这帮牛人又在rt-thread再建IDE,应不会辜负大家的期望。
对于IDE没什么好说的,可以降低进入门槛,又足以应付中小型项目的代码组织。rt-thread在国内落地如此之好,离不开在IDE上面的一直演进和努力。

会前准备

作为一个业余的嵌入式OS爱好者,在本次参会之前对rtt只是新闻上和交流群的了解,既然决定要参加rtt的开发者大会,不深入了解一下,然后跑一跑rtt,参会的时候如何跟上节奏。这一节记录在ubuntu下编译rtt,并在我自制的nrf52832 zephyr开板上运行起来rt-thread的过程。从来没有接触过rtt的我从下代码到在板子上跑起来大概就用了4个小时的时间,可以说rtt的上手门槛是非常的低了。

安装依赖

原本系统有python和ncurses(for menuconfig)的情况下,由于rtt的构建系统依赖于scons,因此要额外安装

1
sudo apt-get install scons

下载代码

1
git clone https://github.com/RT-Thread/rt-thread.git

修改工具链

修改bsp/nrf52832/rtconfig.py,主要是工具链。默认的是keil,从后面修改的情况看,要不就是之前写nrf52832没有支援gcc,要不就是gcc不再有人维护
toolchain

修改

我的主要目的是要跑起来shell,而rtt默认已经开启了shell组件,因此将原来例子中ble的部分移除,系统能运行起来即可,主要修改了下面几个文件:

applications/SConscript –> 添加依赖头文件路径和要参与编译的c和s文件
applications/application.c –>移除ble测试代码
applications/startup.c –>修改bss_end ,原本引用__bss_end不存在
board/uart.c –>根据硬件修改rt/tx引脚
nRF5_SDK_13.0.0_04a0bfd/components/SConscript –> 添加依赖头文件路径
nRF5_SDK_13.0.0_04a0bfd/components/toolchain/gcc/nrf52_common.ld –>增加rti_fn,FSymTab,FSymTab section,缺少的话组件将不会链接, Shell不能工作
startups/Sconscript -> 添加要参与编译s文件

编译

1
2
source ~/.env/env.sh
scons

编译完后会产出rtthread_nrf52832.elf和rtthread.bin

下载

使用pyocd+daplink连接下载

1
pyocd-flashtool -t nrf52 -a 0x0 rtthread.bin

调试

可以通过pyocd+daplink连接,通过vscode+cortex-debug插件调试,调试效果如下
debug

演示

实体的板子和跑起来的shell如下
board
shell

最后

这次参会了解了rt-thread的最新的演进路线,也看到了为何rt-thread会在国内落地如此好的原因。祝愿rt-thread越来越好,成为iot行业的标杆,乃至于iot行业标准。

参考

https://www.rt-thread.org/document/site/application-note/setup/qemu/ubuntu/an0005-qemu-ubuntu/