【平头哥RVB2601创意应用开发】嵌入式开发,我比你快10倍 -- RVB动态加载模型MBRE
[复制链接]
之前是做PC相关工作的,兴趣之余接触了单片机。 也是由于好奇参加了RVB2601的这个活动。 第一感受是: SOC的软件工程师们都这么辛苦么? 加一段单元测试小代码, 改一个小功能, 移植某个LIB,都要长时间的编译,然后是长时间的FLASH, 然后看到错误又重复上述工程。为什么像PC一样,在主系统写好后,可以快速的开发各种应用, 动态的运行起来(无需烧写),快速修改,快速编译, 快速迭代呢? 难道SOC软件工程师的时间不是钱么? 虽然SOC因为简单,所以系统底层代码和APP代码往往习惯在一起,但为什么不可以分离呢? 这就是本次参与项目MBRE mini binary runtime enviroment (迷你二进制运行环境)的初衷,希望搭建一个小平台和相关工具。
B站视频地址:https://space.bilibili.com/1261101873
目前, 原型实现了以下功能:
1) 可以在CDK环境下编译代码(注意分成APPLOADER和APP两个项目, APP LOADER是烧写进FLASH的部分,一般烧写进去了就不用再动), APP项目因为没有OS底层部分, 所以编译速度非常快。
2)编译完成后处理生成加载文件,自动上传到WEB服务器(测试阶段使用的本地WEB服务器,也可通过SFTP,等上传)
3)APPLOADER提供了CLI的APP加载(注意,无需烧写flash),运行,退出,消息等命令, 目前实现的是通过2601的WIFI模块的WEB下载。(设想一下可以远程更新,或者下载新功能)
4)web下载到RAM中,即可立即运行APP,无需烧写过程;
5)APP可以退出。
MBRE开发工具和语言与现有一致,没有引入脚本解释器或者其他中间层,完全使用C, C++,没有额外的语言学习要求。
以上的基础功能,可以实现一下场景的快速开发:
1)单元测试: 单元测试代码无需编译进入主代码,可以按需随时修改,快速编译,动态加载和执行。节省大量编译烧写时间。
2)原型开发: 原型开发时期需要频繁修改代码,可用MBRE动态测试原型,固化好的功能再烧入基础包,通过不断迭代的增量式开发,速度快10倍以上。(视频中的U8G2就是采用的动态加载模式,直接加载的。此处感谢坛友ddzz669(https://bbs.eeworld.com.cn/home.php?mod=space&uid=637976)提供的u8g2代码,拿来做了测试。视频中的dht11代码也是直接拿的arduino dht11代码,快速测试完成后即可烧入flash)
3)功能扩展:如果外接了SD或者TF等外部存储,可以把各种APP的模块存放在上面,通过应用选择功能启动,这样SOC就变成像通用处理器上的应用开发模型一样,可以支持,更新,启动不同扩展功能(例如一个天气的应用,可以通过WEB下载不同的扩展模块到外部存储,在UI界面选择不同功能调用不同模块)。
由于技术的限制, MBRE目前的版本还有很多权限, 相关介绍稍后放出,本次先放一个介绍视频,供大家参考。b站地址是https://space.bilibili.com/1261101873,本站资源已上传,待审核,请坛友点头像查找。
|