业余时间弄了一个 Linux 嵌入式应用开发框架,看看有没有其他人需要。

10 天前
 rotcar

背景

在一个不小的大厂里面拧螺丝,发现很多部门都在重复造轮子。没有引入好用的开源组件,自己造的轮子也没有复用,公司内部相同的轮子都有好几种。编译体系简陋,加个文件也要改编译脚本。也没有单元测试和其他的工具。

目标

我觉得这可能是很多嵌入式软件开发的普遍痛点吧。

于是业余时间参考esp32idf框架esp-idf,搞了个 linux 应用开发框架RibbonBuildRibbonDF,核心思想也是组件化,前者是组件化编译最小单元,后者是基于组件化编译搭建的工程,采用cmake+kconfig作为编译配置框架。目前已支持Linux交叉编译环境,RibbonDF已引入一部分嵌入式常用的开源组件,并在树莓派环境验证。

对比了一下 github 上的其他框架,RibbonBuildc_cpp_project_framework比较相似,但采用了更camke原生的编译方式。并且在RibbonDF实现了工程化的组件搭建,以及引入gtestgcov等工具,在工程化上更友好一点。 cmake-kconfig比较简单,需要进行一定程度适配。

end

有兴趣的朋友可以试试看。人生苦短,希望能让大家的工作轻松一点、高效一点。 第一次搞开源,很多地方不成熟,希望和大家友好交流,共同进步。

2656 次点击
所在节点    程序员
27 条回复
loading
10 天前
你不做个带屏幕的小玩具是火不起来的,多学学电子网红。
haikea
10 天前
厉害了,点赞
electronic
10 天前
支持一下,点赞
rotcar
10 天前
@loading 下一步有在考虑做一个智能音箱
rotcar
10 天前
@haikea 谢谢
rotcar
10 天前
@electronic 感谢支持
muooOOO
10 天前
点赞支持,感觉大部分的嵌入式开发人员的技能树都比较杂,有这样一个工具确实不错,希望越来越好
NessajCN
10 天前
确实有这样的痛点,不过我的解决方法是全迁移到 embedded rust 。cargo 把所有问题都解决了
Licsber
9 天前
其实我也一直在思考 嵌入式框架到底是要做啥工作
ESP-IDF 干的 对我来说就是硬件的一层 API 抽象
开发者要做的也就是写一下 所谓的 main 逻辑
上电 -> Wi-Fi 联网 -> 外设交互 -> 序列化、服务器交互
这些我都封装好了各种功能函数 感觉称作框架不太适合 更像脚手架、工具包
框架听起来像是“模板” 使用的方式像是“克隆” 可谁会天天起新项目呢

况且 起一个新项目的成本可能远没这么高?只有 cpp 比较乱而已?
我现在用 micropython 要做的就是把写过的功能复制粘贴下
稍微改下逻辑 就又好了一个需求
感觉再进化下 我已经在研究拖拽式编程了(好多需求就是这么简单

最近就在学 esp-rs 体会到了传统 cpp 式的麻烦 make 来 make 去
也可能我一直路子比较野 没有过底层详细定制的经验 哈哈
glcolof
9 天前
其实 arduino 那种框架就可以满足大部分需求了。
FightPig
9 天前
挺厉害的,我自己对嵌入式一直不是很懂
nooneanyone
9 天前
老哥, 纯软 cpplinux 方向的, 转嵌入式难么, 感觉 linux 后端岗位比较少, 想看看嵌入式会不会好点.
villivateur
9 天前
支持一下,我现在的工作也遇到类似的问题
afxcn
9 天前
嵌入式开发的代码量好像都很少,很多人都直接透传到服务器处理了。
chenxuuu
9 天前
嵌入式开发的痛点主要是每家厂商提供的开发环境 sdk 都不一样,各种稀奇古怪的环境
如果再加上一些特殊架构,厂家闭源了一些库(比如蜂窝/蓝牙/wifi 芯片),那更复杂,编译器都不好换

总不可能自己手动把上千上万个文件的 sdk 手动改一遍格式,就算整理改好了,后续 sdk 升级还要再来一遍
qiyilai
9 天前
@FightPig 可以理解为更加古早时期的软件开发,硬件不统一,也没有一个大一统的框架和统一的库,要自己实现的东西比较多
rotcar
8 天前
@muooOOO 是的,所以从工程的角度,开发人员某些领域知识的欠缺需要这种框架性的东西来解决,提升开发的速度、效率和质量。这也是我做这个框架的原因。
rotcar
8 天前
@NessajCN rust 是未来的发展方向。c/cpp 的开发,缺少包管理工具也一直是吐槽的点。另外目前嵌入式商业化的场景下,芯片平台是否支持 rust 编译链,flash/内存资源都是重要考虑因素,c/cpp 在这方面还是有不小优势。
rotcar
8 天前
@Licsber 你目前还是在单平台、单产品上做开发吧。如果涉及跨平台、多产品的话,你就会体会到组件化,统一编译,代码复用的必要了。
rotcar
8 天前
@nooneanyone 我认为不难的。嵌入式以 C 为主流,cpp 更少一些。你会 cpp ,c 应该也没啥问题。嵌入式主要还是要了解交叉编译开发环境、操作系统、计算机组成原理、计算机网络等相关知识,这些在工作中补也没啥问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1077979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX