树莓派 Pico 双核 MCU 来了,要跟吗?参考下其他人移植代码后的经验
树莓派 Pico 双核 MCU 发布有一段时间了,在尝试将 20 万行代码移植到 Pico 系统后发现,这个系统有不少大坑,还未入手的小伙伴考虑好后再入.将过程中遇到的各种坑汇总,以飨读者.
常见的的模块在嵌入式系统里面为适配不同的 OS 和系统往往设计一个 OSAL 适配层,这个层一方面向业务功能模块提供标准 API,另一方面针对不同的 OS 或者系统实现对应的 API.
Pico 系统目前是没有使用常见 OS 的,也就是它本身是一个独立的 OS,模块移植需要针对其单独写一个适配层,会显著增加模块的移植工作量.
同样的,因为其没有使用常见 OS,那么现有的其他模块,也无法直接简单使用,都需要针对性的移植,这大大增加了整体的工作量.
另外系统里面没有 thread,也没有 event,纯粹是一个单线程的概念,这个对于通信类应用会是个灾难.
模块中常常使用系统提供的基础功能来支持业务的实现,如各类外围接口操作、定时器、队列等等. Pico 现有的 API 函数实现都是骨头级别的,并没有针对常见使用的 API 做完整对标实现. 移植功能模块时需自行多一层包装和调试.
以 timer 这个常见功能为例,常见的使用逻辑如下:
Pico 系统 API 里面提供的只有 repeating timer 这个,而这个是创建就是开始,而且并没有对应的成对的开启 /关闭 timer 的 API,在使用时,还需要自行验证封装.
在系统 API 里面,其他的部分也或多或少有类似的情况. 这一套本应该是 OS 或者类似 OS 的 API 接口,被 Pico 比较特立独行的封装,其稳定及健壮性有待考验.
开源系统往往可以很方便地集成各类模块实现最终的功能,Pico 整个系统是完全的 CMake 风格,通过包含其核心 SDK 的 CMake 系统即可实现对应的编译 CMake.
但是,各类当前的已有的模块在它目前的代码结构里面是没有,需要自行移植. 另外,针对模块之间的依赖、相互限制、引用、宏依赖等等 都没有做特别处理,
这些都需要在移植时自行研究摸索.
如果一个功能模块需要依赖比较多的其他模块,那么这个过程会比较痛苦和耗费工作量
针对 Pico 系统目前的现状,将产品或者功能模块移植到此系统上时,会面临较大挑战,建议先进行评估再开展:
无 OS,移植工作量大
新增 OS 后,前序移植工作量浪费
API 尚不健全,稳定健壮性有待考验,接口变化的可能性比较大
树莓派 Pico 目前还刚刚开始,针对接下来可能的发展做几个小的预测:
1
felixcode 2021-02-06 16:39:03 +08:00
写一个 hello world 编译进内核,算不算改造了三千万行代码?
|
2
cs8425 2021-02-06 16:48:32 +08:00 via Android
标题党了啊
微控器不上 OS 很正常 很多都裸跑 一个 while+中断搞定一切的一堆... |
3
12101111 2021-02-06 16:53:31 +08:00
|
4
muzuiget 2021-02-06 17:56:35 +08:00
标题党
|
5
loading 2021-02-06 19:04:56 +08:00 via Android
OS ?
这玩意就是个基础的单片机啊!!! |
6
chinvo 2021-02-06 19:11:02 +08:00 via iPhone
单片机要个啥 OS
|
7
yeqizhang 2021-02-06 19:20:09 +08:00 via Android
要 os 买 zero 去呀
|
8
pakro888 2021-02-06 19:22:00 +08:00 via Android 1
这是拿嵌入式设备的思路带入了单片机
|
9
muooOOO 2021-02-06 20:38:47 +08:00 via Android
单片机要啥自行车,不想跑裸机那就等官方适配 Arduino,或者等 rtt
|
10
lili1397 2021-02-06 20:41:05 +08:00 via iPhone
蹭热度,严重误导人。人家 1 月 21 日才出来的版子,
你这头都 20 万行代码。 MCU 那么多,建议你把 20 万行代码移植到 STM32,arduino 。移到 51 也行呀。😄 抹黑一个新生事物,就像用一块黑布去遮挡大家的双眼,无视别人的进步和优越,这跟井底之蛙有啥区别。 |
11
cmostuor 2021-02-06 20:56:28 +08:00
单片机的 OS 要自己移适配不想适配就等别人适配完了再玩, 单片机没有 OS 也可以跑 PC 也是一样但毕竟单片机只是为了特定任务而设计的。
|
13
jsxiaobai OP @all 是标题党,不过总结的也都是实际情况。对于讨论到的几个点
1. MCU 不需要 OS 或者拿一个 Arduino 、FreeRTOS 上去就能用 是的。 往往早期 MCU 不需要 OS,他这个 200 多 K RAM,能配 16M 的存储,不是个没有 OS 的配置。 只是他目前还没做完,还不完善。 移植 Arduino/FreeRTOS 也是完全赞同,极大概率会有。 目前是没有的,如果想跑自己的业务又对此类系统有依赖,那是有依赖移植工作量的. 2. Pico 不是单片机 当然这里都是些‘字眼’。 一般单片机用汇编或者简单的 C 语言,内存是 10K 甚至更少数量级的,存储也是非常少。 而 Pico 的 200 多 K RAM,配几 M-》十几 M 的存储,这个是个典型的‘MCU’,而且是中高端一点的 MCU. 配备 OS 是可预期的,配备常见的功能部件也是可预期的。 3. 黒、抹黑等 文章是对当前移植功能遇到问题的总结,更多的是反映这个 Pico 体系的当前现状以及这个现状对考虑这个系统人的提醒。 谈不上黒或者不黑. |
15
felixcode 2021-02-07 09:50:39 +08:00
|
16
jsxiaobai OP @felixcode 这个统计里面的都是我模块独立的代码,是单独目录存放的,引用的其他的代码在 pico-sdk 里面
|
17
gainsurier 2022-07-04 22:28:01 +08:00
pico w 出来了哈哈哈
|