嵌入式软硬件: 从8位单片机到64位ARM/RISC-V SoC,裸机到Linux/Android

PaddleOCR with Python 3.12 on Ubuntu 24.04

根据官方的QuickStart使用pip3 install paddleocr后,运行发现出现No module named paddle, 于是使用 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 安装,再次运行测试代码发现会出现Illegal instruction的问题, 相关log,可以参考这个链接, 和这个很类似。 但是按照里面的提示安装了numpy对应的版本后,依然有问题。

基于ESP32-C3的高低温报警温度计

空调的内机探温头在挂机中,这个与我们身体附近的温度相差太大,基本上空调设定的问题与实际温度相差不少,我们期望屋内休息处可以在设定的温度值的正负1摄氏度内。 尤其是睡着后,室内实际的温度比空调设定温度低了好几摄氏度,这个容易让人着凉,或者影响睡眠。

用的是美的空调,说是可以和美的美居生态的产品互联。但是查了下,发现其温湿度传感器,居然一直无货, 且只有自己家有一个,还没有第三方的。 因此走美的美居自家闭环控制不可行。

RISCV BLE MCU based Hardware and Software

一个基于RISC-V BLE MCU 的软硬件设计, 最终的形态是Modbus协议(Modbus RTU + Modbus TCP)的输入输出软硬件设计.

在我的设计中,有多个选择因素需要考虑:

  • 支持Modbus RTUModbus TCP
  • License商业友好,即无需开源源代码
  • 被广泛使用,质量有保证
  • 免费
  • C语言实现
  • 无需OS支持

于是在Github上面寻找,发现了多款,包括microModbus,libmodubs. 但是最终还是选用了被广泛使用且满足上述所有FreeModbus

NUC980 Hardware and Software

NUC980 ARM9 board design with 2 layer PCB.

As this SoC has only 64MB DDR memory, 128MB SPI-Nand flash, rootfs must be in minimal, buildroot is a suitable for such case.

The images are quite small:

The design is in 2 parts, one is the core board, which export the NUC980 Pins using DIP. Part 2 is the base board, which export some interfaces and storage for production purpose.

基于双核Cortex-A7 SoC的工业网关产品设计与量产

一个基于SSD20X Cortex-A7 双核的软硬件设计, 适用于网关类型产品, 双网卡. 用于作为原来的IMX6ULL版本的补充,一个是商业级,一个是工业级。

最开始使用的是buildroot来构建Rootfs,但是鉴于可定制性,以及功能全面性, 以及我们的Flash将会使用256MB或者512MB,容量足够,因此换成了Yocto

基于IMX6UL和MT7688的工业网关软硬件产品开发

一个基于FSL imx6ul Cortex-A7 单核的软硬件设计, 适用于网关类型产品, 双网卡. 用于工业级网关数据转发处理与控制下发。

IMX6UL版本最开始使用的是buildroot来构建Rootfs,但是鉴于可定制性,以及功能全面性, 以及我们的Flash将会使用256MB或者512MB,容量足够,因此换成了Yocto。

四核Cortex-A53产品软硬件设计与开发

一个基于ARM Cortex-A53 的软硬件设计,系统采用定制化的Android, 包含DI,DO,RFID,指纹识别,摄像头, 大屏幕显示等功能的软硬件设计.

在我的设计中,有多个选择因素需要考虑:

  • GUI支持:需要容易开发
  • 多媒体支持:需要支持硬解, 因为需要播放MP4视频
  • APP开发容易
  • 需要占用资源少
  • 触摸屏支持
  • WebRTC支持

鉴于上述需求, 从 Linux + Qt 与 Android 两个之间最终选择了Android, 但是对Android系统做了一些的裁剪,以及修改:

工业级ARM9网关产品软硬件设计

NUC980 ARM9板设计,采用2层PCB。 而NUC972则是使用4层板,底板与后面的imx6ull版本共用。

由于这个SoC只有64MB DDR内存,128MB SPI-Nand闪存,所以rootfs必须是最小的,buildroot适合这种情况。