搜索
bottom↓
回复: 60

构建一个统一开源单片机标准驱动库的设想

  [复制链接]

出0入4汤圆

发表于 2022-5-18 08:01:39 | 显示全部楼层 |阅读模式
自从ST从STM32开始提供了一套标准驱动库以后,很受大家欢迎,编写程序也简化了很多。后来像STC,GD,华大等等都推出了一套自已的驱动库,但每家都不太一样,每用另一家的,都要重新学一下这家驱动库,比较麻烦。我的构想是我们论坛是不是可以组织一下,写一套标准的开源驱动库,刚开始兼容几家较大的芯片厂家的。大家都采用后,后继芯片厂家为了推广产品需要,自然会兼容这套标准。那样就大大简化了我们以后写程序时驱动层的工作时间。

出0入0汤圆

发表于 2022-5-18 08:06:16 | 显示全部楼层
已有人这么做了,如babyos有在做,另外国外有一个叫什么 platform_IO的

出0入0汤圆

发表于 2022-5-18 08:07:33 | 显示全部楼层
如果能成,是造福码农的大好事

出0入117汤圆

发表于 2022-5-18 08:16:43 来自手机 | 显示全部楼层
Arduino了解一下

出0入0汤圆

发表于 2022-5-18 08:18:25 | 显示全部楼层
对,Arduino算是比较早就做这个工作的了。

出0入0汤圆

发表于 2022-5-18 08:27:50 | 显示全部楼层
大而全效率就不能兼顾,参考下hal库

出0入4汤圆

发表于 2022-5-18 08:49:56 | 显示全部楼层
我推荐你看看ADI的那个库....简单纯粹,易懂,我就用了ADUCM360......
看重24bit

出280入75汤圆

发表于 2022-5-18 08:52:50 | 显示全部楼层
参考 MBED OS ,我都将 GD32 的那三款从 Keil 移植到 IAR 下了。

出0入0汤圆

发表于 2022-5-18 08:59:20 | 显示全部楼层
这个想法非常好!和我在做的标准化、模块化电路。也有很多人说官方有参考。但是那么多芯片厂家,很难有统一的标准。有那么多人买第三方的硬件和开发板,也是基于有这个需求。如果你能把标准库维护的好。实际上也有很多商业模式可以讨论的。

出0入50汤圆

发表于 2022-5-18 09:09:08 | 显示全部楼层
好是好。可是 古语云,杀头的生意有人做,赔本的买卖无人做啊。
如何盈利?如何能保持发展?

出0入0汤圆

发表于 2022-5-18 09:17:30 | 显示全部楼层
这些东西,很多都已经做到了。只是楼主不知道而已。国内的周立功的也做了的。国外的更多

出100入85汤圆

发表于 2022-5-18 09:25:17 | 显示全部楼层
honami520 发表于 2022-5-18 09:17
这些东西,很多都已经做到了。只是楼主不知道而已。国内的周立功的也做了的。国外的更多 ...
(引用自11楼)

比如?给点提示搜搜看

出40入42汤圆

发表于 2022-5-18 09:34:46 | 显示全部楼层
https://github.com/libopencm3/libopencm3
真的,有很多有想法的人已经在行动了,而很多人都想着怎么去“偷”

出135入222汤圆

发表于 2022-5-18 09:54:10 | 显示全部楼层
liao-ljj 发表于 2022-5-18 08:49
我推荐你看看ADI的那个库....简单纯粹,易懂,我就用了ADUCM360......
看重24bit ...
(引用自7楼)

ADUCM360,好买吗?

出0入4汤圆

发表于 2022-5-18 09:56:43 | 显示全部楼层
终于遇到志同道合的人了
这个想法我构思了好几年,最近一两年慢慢成形,目前我手上的产品全系列兼容,共同调用同一个库文件。只需要修改 config文件来修改不同的接口,剩下不用管。不是很完善,但是效率高很多

出0入228汤圆

发表于 2022-5-18 12:28:28 | 显示全部楼层
我都用了10年以上了。

arduino
arduino的升级版 platformio

出870入263汤圆

发表于 2022-5-18 12:40:18 | 显示全部楼层
ARM的CMSIS-Driver就是这个目的,可厂商根本不鸟他,因为厂商各自特性是他们的护城河。
拿GD32举例,当初的库是ST风格的,后来特地出了新版库与ST好无瓜葛,此后不再维护兼容库。

出0入16汤圆

发表于 2022-5-18 12:48:41 来自手机 | 显示全部楼层
chunjiu 发表于 2022-5-18 08:52
参考 MBED OS ,我都将 GD32 的那三款从 Keil 移植到 IAR 下了。
(引用自8楼)

Mbed os好用么?上面轮子多不多?我感觉rtt上轮子多。

出280入75汤圆

发表于 2022-5-18 12:58:49 来自手机 | 显示全部楼层
redworlf007 发表于 2022-5-18 12:48
Mbed os好用么?上面轮子多不多?我感觉rtt上轮子多。
(引用自18楼)

主要是 API 统一,切换 MCU  型号比较方便,写好的软件几乎不用改动,除了 gpio 的引脚换个名字(各厂商自己的定义)。

坏处是为了保持兼容性,不得不避开某些  MCU 特有的功能,免得造成迁移问题。

出0入0汤圆

发表于 2022-5-18 14:12:23 | 显示全部楼层
想法很好,现在也有很多芯片厂家开始重视这块并自己开发自己的库,但是单片机这种范围太广,在各种不同性能不同资源的芯片间实现兼容和高效,本身就有点矛盾,如果对于小范围内具有相同共性的芯片搞一搞还可以

出0入0汤圆

发表于 2022-5-18 14:20:13 | 显示全部楼层
你们都真有热情,我对单片机已经不爱了

出0入8汤圆

发表于 2022-5-18 14:46:51 来自手机 | 显示全部楼层
zlg已经在搞了,但实际上mcu厂家并不希望这么搞,因为用户粘性降低了,国际大厂都是各成体系,用的外设ip都不一样,更不用说软件库了,甚至连ide都自己做。国内厂家为了快速获得用户和降低成本,大部分用了st一样的ip。个人观点没有必要,练好基本功熟悉外设底层才是关键,用什么单片机都是手到擒来。

出1045入41汤圆

发表于 2022-5-18 14:54:12 | 显示全部楼层
竞争优势呗搞没啦
厂商没有动力
个人行为   支撑这些个想法的动力要有
没有赢利点会吃力不讨好

出0入0汤圆

发表于 2022-5-18 15:12:47 | 显示全部楼层
mbed os全开源,ARM搞了这么久你不看看吗。arduino 也有支持stm32的开源项目。

出0入16汤圆

发表于 2022-5-18 15:25:46 | 显示全部楼层
chunjiu 发表于 2022-5-18 12:58
主要是 API 统一,切换 MCU  型号比较方便,写好的软件几乎不用改动,除了 gpio 的引脚换个名字(各厂商 ...
(引用自19楼)

那这个OS要多少ram才能跑的起来?

出30入16汤圆

发表于 2022-5-18 15:30:10 来自手机 | 显示全部楼层
我觉得就是个伪蓝海项目,吃力不讨好,有谁会烧钱支持?浮躁的年代,低层次的重复建设,没有必要。

还不如花点钱,让各个厂家的fae针对自己家的单片机把那些典型的功能写个参考程序出来,配上一些解释的pdf,用的人自己修修改改就可以满足要求,岂不美哉?就是个初始化配置而已,但就是没人搞。特别的功能,什么usb驱动啥的做个库就完了。

出280入75汤圆

发表于 2022-5-18 16:45:23 | 显示全部楼层
redworlf007 发表于 2022-5-18 15:25
那这个OS要多少ram才能跑的起来?
(引用自25楼)

带 RTOS 的,最少要 64KB RAM,保守点只能跑三、两个线程,128KB 就能跑 6、7 个线程了。

若不带 RTOS 的裸机方式来跑,RAM 32KB 足够了。

优点是 API 统一,所以切换不同厂家的 MCU 比较方便,各家只是 GPIO 的命名方式不一样,迁移很方便。

出0入137汤圆

发表于 2022-5-18 17:29:11 | 显示全部楼层
本帖最后由 tomzbj 于 2022-5-18 17:30 编辑

步子别迈太大了。。。 一点点来吧

我的设想就是,把涉及具体MCU型号的GPIO初始化之类从驱动里提出来,改成以i2c/spi操作以回调函数的形式传递给驱动,这样驱动本身就是可移植的了。不过,性能上肯定是要有损失的,没办法,好在i2c/spi外设一般性能要求不高。

我已经把手里用过的若干i2c和spi外设改成这样了。
链接:

https://github.com/tomzbj/zi2c

https://github.com/tomzbj/spi_dev_drivers

在不同MCU上移植时,只需要重写几个回调函数,驱动和业务代码直接复制粘贴完事。

出0入8汤圆

发表于 2022-5-18 17:37:17 | 显示全部楼层
我觉得外设操作接口做统一就行啦

出0入0汤圆

发表于 2022-5-18 18:14:15 | 显示全部楼层
rtthread可以看一下

出0入85汤圆

发表于 2022-5-18 18:38:11 来自手机 | 显示全部楼层
这个很多公司都在做,不过只支持自己做芯片

出190入0汤圆

发表于 2022-5-18 18:42:09 | 显示全部楼层
落叶知秋 发表于 2022-5-18 09:34
https://github.com/libopencm3/libopencm3
真的,有很多有想法的人已经在行动了,而很多人都想着怎么去“ ...
(引用自13楼)

好用,需要在这个基础上再封装一层

出0入16汤圆

发表于 2022-5-20 11:39:45 | 显示全部楼层
chunjiu 发表于 2022-5-18 16:45
带 RTOS 的,最少要 64KB RAM,保守点只能跑三、两个线程,128KB 就能跑 6、7 个线程了。

若不带 RTOS  ...
(引用自27楼)

这个就对硬件需求比较高了,标配最少64K RAM了,你都用的啥mcu?

出280入75汤圆

发表于 2022-5-20 12:31:25 来自手机 | 显示全部楼层
redworlf007 发表于 2022-5-20 11:39
这个就对硬件需求比较高了,标配最少64K RAM了,你都用的啥mcu?
(引用自33楼)

207 和 411,但 103 就裸机不加 RTOS ,主要是给自己留余量,不想做到一半了客户改一下需求就傻眼。

出0入0汤圆

发表于 2022-5-20 12:36:09 | 显示全部楼层
外设IP不一样,为了统一接口效率差
我是觉得有个统一的编码方式就不错了,类似ST的标准库
国产MCU有很多是参照ST标准库写的,移植也很快
有一些就自己重写一套,就要花时间去熟悉了

出30入16汤圆

发表于 2022-5-20 12:39:05 来自手机 | 显示全部楼层
一年以后再看此贴如何

出0入0汤圆

发表于 2022-5-20 12:43:11 | 显示全部楼层
从入门到放弃系列。。。。

出0入16汤圆

发表于 2022-5-20 13:21:31 | 显示全部楼层
chunjiu 发表于 2022-5-20 12:31
207 和 411,但 103 就裸机不加 RTOS ,主要是给自己留余量,不想做到一半了客户改一下需求就傻眼。 ...
(引用自34楼)

GD的?st的应该非常贵了。

出280入75汤圆

发表于 2022-5-20 15:20:57 | 显示全部楼层
redworlf007 发表于 2022-5-20 13:21
GD的?st的应该非常贵了。
(引用自38楼)

以前是用 ST 的,GD 也有三款 MCU 支持 MBED OS,但官方版本仅限于 Keil 编译器,我给它们移植到 GCC 和 IAR 上了(花了三、四个月的代价)。

出0入16汤圆

发表于 2022-5-20 16:04:18 | 显示全部楼层
chunjiu 发表于 2022-5-20 15:20
以前是用 ST 的,GD 也有三款 MCU 支持 MBED OS,但官方版本仅限于 Keil 编译器,我给它们移植到 GCC 和  ...
(引用自39楼)

这个代价有点高呀,我感应用RTT这种os应该也能做到楼主说的这个效果吧。

出0入0汤圆

发表于 2022-5-20 16:53:46 | 显示全部楼层
wxws 发表于 2022-5-18 12:28
我都用了10年以上了。

arduino
(引用自16楼)

方便一起交流吗 我现在也是用这个在开发产品

出280入75汤圆

发表于 2022-5-20 17:14:14 | 显示全部楼层
redworlf007 发表于 2022-5-20 16:04
这个代价有点高呀,我感应用RTT这种os应该也能做到楼主说的这个效果吧。
(引用自40楼)

OS 和 SDK API 不是一回事情,楼主希望不同厂家的 MCU 使用一样的 API ,而不是 OS。

目前也就 MBED OS 做的比较好,因为它是 arm 自己主导进行的,所以支持面较广。

GD 的 MBED 软件包应该是外协做的,仅支持 Keil,之前找过他们 FAE,但他们自己弄不了。

最后没办法,我只好自己动手迁移到 GCC 上,顺便给朋友整了一个 IAR 版本的。

出0入16汤圆

发表于 2022-5-20 19:15:31 | 显示全部楼层
chunjiu 发表于 2022-5-20 17:14
OS 和 SDK API 不是一回事情,楼主希望不同厂家的 MCU 使用一样的 API ,而不是 OS。

目前也就 MBED OS  ...
(引用自42楼)

那我去网上找资料看看MBED OS,你们产品功能应该比较复杂吧,用了那么大的ram。

出0入228汤圆

发表于 2022-5-21 06:59:55 | 显示全部楼层
solojimes 发表于 2022-5-20 16:53
方便一起交流吗 我现在也是用这个在开发产品
(引用自41楼)

可以呀,一起交流进步大

出0入0汤圆

发表于 2022-5-21 09:16:47 | 显示全部楼层
tomzbj

出0入42汤圆

发表于 2022-5-21 09:28:47 | 显示全部楼层
这项工作,arduino做的算是推广最好的吧,小白也可以轻松使用做开发。

出0入0汤圆

发表于 2022-5-21 09:31:48 | 显示全部楼层
没啥必要,现在每个厂商都有示例代码,弄好也就1个礼拜的事情

出280入75汤圆

发表于 2022-5-21 10:38:07 | 显示全部楼层
redworlf007 发表于 2022-5-20 19:15
那我去网上找资料看看MBED OS,你们产品功能应该比较复杂吧,用了那么大的ram。 ...
(引用自43楼)

用作充电桩的主控,要连接平台上报数据和响应远程控制的。

出0入16汤圆

发表于 2022-5-21 11:27:55 | 显示全部楼层
chunjiu 发表于 2022-5-21 10:38
用作充电桩的主控,要连接平台上报数据和响应远程控制的。
(引用自48楼)

感觉你这个项目利润高,以你现在的方案成本,是不是和上arm Linux应该差不多了。

出280入75汤圆

发表于 2022-5-21 11:44:45 | 显示全部楼层
redworlf007 发表于 2022-5-21 11:27
感觉你这个项目利润高,以你现在的方案成本,是不是和上arm Linux应该差不多了。 ...
(引用自49楼)

还是差很多的,上 Linux 需要养一个较大型的开发团队,而 Mbed OS 只需要一、两个嵌入式工程师就行了。

材料成本也差挺远的,MCU 对环境要求很低,但 Linux 系统对环境要求就比较苛刻了,否则分分钟死给你看。

出0入16汤圆

发表于 2022-5-21 11:48:45 | 显示全部楼层
chunjiu 发表于 2022-5-21 11:44
还是差很多的,上 Linux 需要养一个较大型的开发团队,而 Mbed OS 只需要一、两个嵌入式工程师就行了。

...
(引用自50楼)

这种应用的话,如果选新塘NUC980这种内置64M DDR的芯片,成本也不高,软件的话用golang开发,一个嵌入式工程师应该就够了。
上了Linux,能跑golang,N多现成的轮子就可以用了,程序开发速度,大大加快,系统扩展性一下子变高了。

不过得有能在Linux上写应用程序的工程师。

我现在觉得,要么裸奔,要么上Linux,不玩啥RTOS了。

出280入75汤圆

发表于 2022-5-21 12:11:02 来自手机 | 显示全部楼层
redworlf007 发表于 2022-5-21 11:48
这种应用的话,如果选新塘NUC980这种内置64M DDR的芯片,成本也不高,软件的话用golang开发,一个嵌入式 ...
(引用自51楼)

兄弟,那样就等于把自己卵蛋放别人手里了…… 哈哈哈!

我之所以选择 MBED OS ,很大一部分的原因不想受制于人。

出0入16汤圆

发表于 2022-5-21 12:12:57 | 显示全部楼层
chunjiu 发表于 2022-5-21 12:11
兄弟,那样就等于把自己卵蛋放别人手里了…… 哈哈哈!

我之所以选择 MBED OS ,很大一部分的原因不想受 ...
(引用自52楼)

嗯,现在芯片种类多,可以选的方案也多了,我现在喜欢国产的内置DDR的片子了,君正X2000内置521M的ddr,能跑完成Debian10,感觉好爽。

出280入75汤圆

发表于 2022-5-21 13:02:35 | 显示全部楼层
本帖最后由 chunjiu 于 2022-5-21 13:15 编辑
redworlf007 发表于 2022-5-21 12:12
嗯,现在芯片种类多,可以选的方案也多了,我现在喜欢国产的内置DDR的片子了,君正X2000内置521M的ddr, ...
(引用自53楼)


我现在用各种 Pi (ubuntu)完成复杂的任务,Python + wxWidgets ,快速、便宜、高效,一样的爽到飞起   

专门为 Orange Pi 做了这套玩意儿,可以扩展到电气隔离的 28 路 DOUT 和 32 路 DIN,能驱动继电器,

用来做工业控制很爽的,现在暂时用来设计一个控制四路南网的蓝牙检定模块,可同时对四个电表进行的功能检测操作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入16汤圆

发表于 2022-5-21 17:01:26 来自手机 | 显示全部楼层
chunjiu 发表于 2022-5-21 13:02
我现在用各种 Pi (ubuntu)完成复杂的任务,Python + wxWidgets ,快速、便宜、高效,一样的爽到飞起 {: ...
(引用自54楼)

Orange Pi是用的啥cpu?

出280入75汤圆

发表于 2022-5-21 17:29:47 来自手机 | 显示全部楼层
redworlf007 发表于 2022-5-21 17:01
Orange Pi是用的啥cpu?
(引用自55楼)

主要是全志的 H3 和 H6 系列。

出0入16汤圆

发表于 2022-5-21 17:45:02 | 显示全部楼层
chunjiu 发表于 2022-5-21 17:29
主要是全志的 H3 和 H6 系列。
(引用自56楼)

全志的片子我以前看过,感觉资料和对小客户的技术支持不咋好,就没用。

wxWidgets我看了是跨平台的gui库,这个好不好用?

出280入75汤圆

发表于 2022-5-21 18:11:31 来自手机 | 显示全部楼层
redworlf007 发表于 2022-5-21 17:45
全志的片子我以前看过,感觉资料和对小客户的技术支持不咋好,就没用。

wxWidgets我看了是跨平台的gui库 ...

(引用自57楼)

别人都做成现成的啦,买来用挺方便的,自己从头整感觉浪费时间了

wxPython 是 wxWidgets 的 Python 版本,跨平台,开发起来和当年 VB 差不多,很快捷。

出0入16汤圆

发表于 2022-5-21 19:01:36 | 显示全部楼层
chunjiu 发表于 2022-5-21 18:11
别人都做成现成的啦,买来用挺方便的,自己从头整感觉浪费时间了

wxPython 是 wxWidgets 的 Python 版本 ...
(引用自58楼)

我去看看使用文档,看看咋玩的。

出0入0汤圆

发表于 2022-5-22 20:09:06 | 显示全部楼层
用户需求千变万化,做到统一很难。可以根据行业属性来做统一,如Autosar。但是,需要行业终端客户有比较强的话语权才有可能进行统一。

出0入0汤圆

发表于 2022-5-24 21:12:06 | 显示全部楼层
zlg是不是做了一个
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2022-7-1 05:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表