bernard.xiong CEO 熊谱祥
env,提供编译构建环境、图形化系统配置及软件包管理功能
scons 是 RT-Thread 使用的编译构建工具,可以使用 scons 相关命令来编译 RT-Thread
特性:
finsh shell c-type msh
良好的编码风格 liunx编码风格,层次分明,
组件丰富
posix接口支持
libc(例如newlib),file system,pthread
辅助工具较多,开发门槛低
配置:menuconfig
1、cd 命令切换到你想要配置板卡的 bsp 目录中,如: rt-thread\bsp\stm32f429-apollo
2、输入 menuconfig 命令后即可打开其界面
注:不是每个板卡都可用,该功能依赖Kconfig文件
升级本地软件包信息:pkgs
1、使用menuconfig 选中要更新的部件,如果列表中没有,执行pkgs --upgrade
2、执行pkgs --update更新
注:更新后的软件包是放在bsp目录下的packages目录,重新编译只能手动拷贝到相应目录??
编译:SCons 编译规则在rtconfig.py文件
scons -c 清除编译目标。这个命令会清除执行scons时生成的临时文件和目标文件
scons 编译。
注:如果要修改编译器类型、编译器路劲、编译参数在rtconfig.py中修改。
SConscript完成类似makefile的功能,只是使用python语言更容易阅读及使用更强大的内置函数库
详见《Scons构建工具手册》
运行:qemu.bat
模块介绍
finsh shell (亮点)
finsh支持两种模式:
C语言解释器模式,为行文方便称之为c-style;
传统命令行模式,此模式又称为msh(module shell)
LWIP
“1.3.2”,“1.4.1”,“2.0.2”默认“2.0.2”
任务调度:
1、高优先级抢占低优先级,同优先级时间片轮转。
2、用优先级链表的方式,所以系统中的总线程数不受限制
/* 当线程退出时,需要执行的清理函数 */
void (*cleanup)(struct rt_thread *tid);
rt_uint32_t user_data; /* 用户数据*/
};
异常与中断
ipc通信组件,增加脱离操作使用该函数后,
内核先唤醒所有挂在该信号量等待队列上的线程,
然后将该信号量从内核对象管理器中删除。
原来挂起在信号量上的等待线程将获得-RT_ERROR 的返回值。
信号量
互斥量
事件
邮箱
消息队列
内核和应用可以分开
编译,并在运行时通过内核中的模块加载器将编译好的应用加载到内核中运行
软件包
Paho MQTT:基于 Eclipse 开源的 Paho MQTT,对于做了很多功能及性能优化,比如:增加了断线自动重连功能,采用 pipe 模型,支持非阻塞 API,支持 TLS 加密传输等等;
WebClient:简单易用的 HTTP 客户端,支持 HTTP GET/POST 等常见请求功能,支持 HTTPS ,断点续传等功能;
mongoose:嵌入式 Web 服务器网络库,类似嵌入式世界里的 Nginx 。授权许可不够友好,商业需要收费;
WebTerminal:网友 home.php?mod=space&uid=6104 开发的,可以在浏览器访问 Finsh/MSH Shell 的软件包,甚至是手机端;
cJSON:超轻量级的 JSON 解析库;
ljson:网友 @qiaoqidui 开发的 json 到 struct 的解析,输出库;
ezXML: XML 文件解析库,目前还不支持解析 XML 数据;
nanopb:Protocol Buffers 格式数据解析库,Protocol Buffers 格式比 JSON、XML 格式资源占用更少;
GAgent:接入机智云的软件包;
Marvell WiFi:Marvell WiFi 驱动;
Wiced WiFi:Wiced 接口的 WiFi 驱动;
CoAP:移植 libcoap 的 CoAP 通信软件包;
nopoll:移植的开源 WebSocket 通信软件包;
netutils:实用的网络调试小工具集合,包括:ping、TFTP、iperf、NetIO、NTP、Telnet 等;
OneNet:与中国移动 OneNet 云对接的软件包;
JerryScript:超轻量级的 JavaScript 引擎;
MicroPython:针对嵌入式领域的 Python 语言实现软件包
RTGUI:RT-Thread GUI 绘图引擎。RT-Thread 的 Persimmon 柿饼 UI 组件,就依赖于该软件包;
Persimmon UI:适合嵌入式的,支持手势识别、滑动特效等类 Android 的 UI 库;
lwext4:来自网友 home.php?mod=space&uid=4505 移植的,适合嵌入式的 ext2/3/4 文件系统库;
partition:一个简单的适合块设备的分区管理库;
SQLite:一个高可靠的、适合嵌入式领域的SQL数据库引擎。SQLite 也是 Android 内部集成的数据库,有一定的应用领域;
RT-Thread Insight:简写是 RTI ,一个用于 RT-Thread 的探测工具,用来帮助分析系统的内部行为;
LittlevGL2RTT:网友 home.php?mod=space&uid=10424 移植的 LittlevGl GUI 库,这是一个最近新出的嵌入式 GUI 库;
通用数据结构,可移植借鉴
ringbuffer:循环buf,支持动态静态内存配置、镜像??
queue:队列,可配置是否轮询还是通知
pipe:管道
waitQueue,应该还不完善
tcp/ip协议栈--=-lwip
支持,2.0.0,
POSIX接口
资料获取入口
官网https://www.rt-thread.org/index.html
git仓库:https://github.com/RT-Thread/rt-thread.git
这个后台地址有惊喜! http://www.rt-thread.org/download/manual
用户手册采用md格式,一套多用,有pdf、网页,还有微信。
附录
1、SCons是一套由Python语言编写的开源构建系统,类似于GNU Make。它采用不同于通常Makefile文件的方式,
而使用SConstruct和SConscript文件来替代。这些文件也是Python脚本,能够使用标准的Python语法来编写。
所以在SConstruct、SConscript文件中可以调用Python标准库进行各类复杂的处理,而不局限于Makefile设定的规则。
2、Makefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件。
3、Kconfig:一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项。
4、.config:文件是在进行内核配置的时候,经过配置后生成的内核编译参考文件。
Git clone 取出服务器的仓库的代码到本地建立的目录中(与服务器交互)
Git pull 从服务器的仓库中获取代码,和本地代码合并
Git push 将本地commit的代码更新到远程版本库中 相当于从远程获取最新版本到本地,不会自动merge,比Git pull更安全些。
Git commit 提交当前工作目录的修改内容。
Git rm 从当前的工作目录中和索引中删除文件。