1、软件包的目的
软件包在高级语言中非常常见,很多高级语言都有对应的软件包平台,比如 python 的 pypi,ruby 的 gems 等等。软件包生态对于一门语言的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的软件。
从工具的角度去看软件包,我们很容易联想到高级动物与低级动物的差别:无外乎就是使用和制造工具的熟练程度。这个道理对于我们程序员世界也同样适用,比如高级的程序员和初级程序员的差距可以归纳为:开发工具和软件包的熟练程度上,甚至在于是否会创造适用面广的软件包(圆轮子)或开发工具。
所以,想要成为高级程序员就快来使用、创造软件包吧~
2、软件包的定义
rt-thread 软件包:运行于 rt-thread 物联网操作系统平台上,面向不同应用领域的通用软件组件。软件包由描述信息,源代码或库文件组成。
rt-thread 同时提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包。该平台为开发者提供了众多可重用软件包的选择,这也是 rt-thread 生态的重要组成部分。
3、软件包的使用
rt-thread 为开发者提供的全面的使用教程,详情如下:
入门文档教程:位于 rt-thread 官网,文档->开发指南->env 工具用户手册
软件包制作教程:位于 rt-thread 官网,文档->开发指南->package 开发指南
4、软件包汇总
rt-thread 已经支持的软件包数量已经达到40+。所有软件包已经按照软件功能的角度,在 menuconfig 中进行了分类。每个分类下的软件包都可以在menuconfig->rt-thread online packages菜单里对应的子菜单下找到。
为了降低大家的上手门槛,每个软件包在其项目首页都有详细的使用说明文档及示例代码。
4.1 物联网相关的软件包
物联网(iot) 是 rt-thread 当前非常重视一个环节,与其相关的软件包也非常庞大。你所开发的任何物联网应用,几乎都可以在这里找到对应的软件包,目前包括如下:
paho mqtt:基于 eclipse 开源的 paho mqtt,对于做了很多功能及性能优化,比如:增加了断线自动重连功能,采用 pipe 模型,支持非阻塞 api,支持 tls 加密传输等等;
webclient:简单易用的 http 客户端,支持 http get/post 等常见请求功能,支持 https ,断点续传等功能;
mongoose:嵌入式 web 服务器网络库,类似嵌入式世界里的 nginx 。授权许可不够友好,商业需要收费;
webterminal:网友 @armink 开发的,可以在浏览器访问 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 云对接的软件包;
4.2 安全相关的软件包
安全一直是 rt-thread 非常重视一个领域,尤其是在 rt-thread 3.0 iot os 发布以后。接入网络的设备对于网络安全需求更是强烈,主要软件包:
mbedtls:arm 公司开源的、可移植的适合嵌入式领域的 ssl 库,一些物联网包中的一些加密通信都会依赖它;
libsodium:现代化的、可移植的、易于使用的加密库,libsodium 的目标是提供构建高层密码学工具所需的核心算法;
tinycrypt:轻量级、可配置的加密库,支持 md5、base64、aes、sha1、sha256 算法;
4.3 脚本语言相关的软件包
高级语言中的一些特性非常人性化,也很大程度上降低的开发门槛,但一直受限于嵌入式的资源。随着 mcu 技术的逐步发展,资源也是越来越多了。未来,也许 c 将不在是 mcu 编程的主流选择。目前 rt-thread 支持的脚本语言如下:
jerryscript:超轻量级的 javascript 引擎;
micropython:针对嵌入式领域的 python 语言实现软件包。这块也是 rt-thread 最近一直在热推的技术,只要是支持的 rt-thread 并有一定资源(rom: 190kb, ram: 8kb)的开发板,都可以跑 micropython 在官网文档中能找到 rtt 最新出炉的《micropython 开发手册》。micropython 现在也被广泛应用于产品原型验证、教育、创客 diy、硬件测试等领域;
4.4 多媒体相关的软件包
openmv:基于 micropython 的开源的机器视觉库;
mupdf:网友 @rtoslab 移植的轻量级 pdf, xps, e-book解析/渲染库。用 rtt diy 一个 kindle 不是梦;
4.5 工具类软件包
这里主要是一些辅助开发、调试的实用工具。这些专业化的工具,使用以后能够很大程度上提高大家的开发效率,节省我们程序员的宝贵开发时间。
cmbacktrace:网友 @armink 开源的 arm cortex-m 系列 mcu 的 hardfault 错误追踪库。目前已对 rtt 做了无缝对接,不用在修改任何移植代码,下载即用;
easyflash:网友 @armink 开源的轻量级 flash 闪存库,非常适用于物联网产品的参数存储、日志记录的场景;
easylogger:网友 @armink 开源的超轻量级日志库。日志支持异步输出模式,各级别日志格式(包括颜色)可独立设置,并支持日志关键词过滤功能。极大的方便的开发者的调试过程。
systemview:可以实时查看、追踪、分析 rt-thread 各线程等资源使用情况,对于性能分析很有帮助。这里有很多是网友 @ardafu 的贡献;
4.6 系统相关的软件包
系统类的软件包,更多的是与操作系统精密联系在一起的软件组件:
rtgui:rt-thread gui 绘图引擎。rt-thread 的 persimmon 柿饼 ui 组件,就依赖于该软件包;
persimmon ui:适合嵌入式的,支持手势识别、滑动特效等类 android 的 ui 库;
lwext4:来自网友 @parai 移植的,适合嵌入式的 ext2/3/4 文件系统库;
partition:一个简单的适合块设备的分区管理库;
sqlite:一个高可靠的、适合嵌入式领域的sql数据库引擎。sqlite 也是 android 内部集成的数据库,有一定的应用领域;
rt-thread insight:简写是 rti ,一个用于 rt-thread 的探测工具,用来帮助分析系统的内部行为;
littlevgl2rtt:网友 @liu2guang 移植的 littlevgl gui 库,这是一个最近新出的嵌入式 gui 库;
4.7 外设库和驱动类软件包
stm32f4_hal:stm32 f4 系列的 hal 固件函数库;
stm32f4_drivers:stm32 f4 系列的 标准 固件函数库;
4.8 其他的软件包
fastlz:一个可移植的、实时的压缩库;
minilzo:一个类 lzo 压缩库的小型实时压缩库;
quicklz:一个号称是世界上压缩速度最快的压缩库;
multibutton:由网友 @liu2guang 移植的简单易用的,基于事件驱动型的按键驱动库,可无限量扩展按键;
canfestival:canfestival (一个开源的 canopen 协议栈)在 rt-thread 系统上的移植,由网友 @gbcwbz 移植。提供了 canopen 的一些示例,力图做到开箱即用;
samples:rt-thread 的示例代码。这是一个降低新手入门学习门槛的软件包,里面从基础、内核、文件系统、网络以及驱动这几个方面,由浅入深,逐个引导大家去上手使用 rt-thread 。不仅有详细代码及注释,还有完善的文档。把这个软件包都学会,就算已经入 rt-thread 的门了;
hello:这是一个软件包的模板,如果想要制作软件包,需要可以借鉴它。
5、软件包的未来
从去年 9 月 rt-thread 3.0 发布至今,rt-thread 官方团队和我们开发者在半年多的时间里积累下来 40 多个软件包足以说明的 rt-thread 软件生态的强大。当然我们并没有满足于此,未来已经有更多的、更高质量的软件包在我们开放计划中了,例如:
at 命令库:同时支持 at 服务器及客户端,提供 cli 命令行交互调试模式,自动检测参数格式等等实用功能。已经进入发布倒计时;
低功耗框架:超低功耗设计、系统自动休眠,动态调频调压,应用不需要关心低功耗状态;
软件包的积累将会是一个量变到质变过程,能够汇集到更多大家常用的软件组件。真正做到,底层使用 rt-thread 操作系统,上层使用搭积木方式开发应用。
当然,距离这个目标还是有一定的距离。rt-thread 作为国内最为活跃嵌入式开源社区,深刻体会到了开放的心态所能产生的价值。期待更多的人来使用、反馈甚至是创建自己的软件包。换个角度去想,也许今天你的分享所产生的积累,未来可能会是你解决明天困难的“钥匙”。
最后,借用一句歌词:如果人人都贡献(包括反馈)软件包,嵌入式将变成美好的明天
视觉环球:数字化智慧展厅设计,赋能企业数字化转型升级!
微动开关选择
曲面电视能减少视觉疲劳这是真的吗?
吉利爆仓 高位接盘戴姆勒
二维微机电阵列为移动光谱分析仪打下基础
RT-Thread软件包定义和使用
大屏为王时代,激光电视的优势
如何在SCL中添加接通延迟定时器,以延迟启动输出
中国最新嵌入式芯片比头发丝还薄
ARCM300-J4T4-4G安科瑞多回路监控无线智慧用电装置
机器人+5G怎样在智能制造领域出力
BrotherQL-820NWB标签打印机评测 更好的兼顾了如今智能移动时代用户的使用习惯与需求
Dini推出业界容量最大的基于Altera Stratix
gcc的使用方法以及Linux gcc 的常用选项
2019中国数字经济创新应用峰会暨长三角(合肥)数字一体化开放应用场景峰会
华为董事陈黎芳:要摩尔定律,不要民粹主义
2021年免费远程控制软件排行出炉!
基于区块链技术的社交媒体平台Alfa介绍
传感器与plc的连接线路图解 电气工程师必看的20张PLC与传感器接线图
让你快速掌握显卡的位置