不夸张地说,这颗NXP i.MX8M Plus已经在不少边缘AI项目里挑大梁了,但要在Pico-ITX这种100mm x 72mm的极小板型上把它做成一个支持堆叠扩展的单板计算机(SBC),而且扩展板还得能像叠积木一样一层一层往上加,这个活儿做出来才真正考验一个嵌入式硬件工程师的综合功力。
这篇文章就围绕这个项目:为什么选i.MX8M Plus做SBC,Pico-ITX板型有哪些看不见的坑,堆叠扩展板从机械结构到电气定义再到软件识别是怎么设计的,最后再说说实测过程中踩过的雷。内容比较硬核,适合正在做嵌入式主板设计、边缘计算网关选型,或者想深入了解SBC底层逻辑的朋友。文章里所有数据都来自我实际跑过的板子和仪器读数,不是纸面参数。
1. 项目整体设计与方案选型
1.1 为什么是i.MX8M Plus,而不是RK3588S或者树莓派CM4
先聊选型。客户的需求很明确:要做一款小体积的通用边缘计算主板,既能跑Linux做业务逻辑,又要带AI加速能力,接口要工业级,还要支持灵活扩展。市面上一看,候选无非就是瑞芯微RK3588S、树莓派CM4、TI的AM62A,以及NXP的i.MX8M Plus这四类。
RK3588S算力确实猛,8核A76+A55,NPU号称6 TOPS,跑大模型都够,但问题也很现实:瑞芯微的工业级供货和长期供货保证不如NXP扎实,而且RK3588S的功耗基本在5W以上,塞进Pico-ITX这种无风扇小盒子,散热压力非常大。树莓派CM4呢,生态确实好,但它的核心是BCM2711,当年的设计定位是消费级,工作温度0-50°C,很多工业现场夏天机柜里就超过50°C了,直接淘汰。TI AM62A我评估过,跑视觉应用还行,但NPU工具链成熟度比NXP的eIQ差一截,而且网上资料少,团队上手成本高。
最后定i.MX8M Plus,核心打动我的点有三个:
- 4个Cortex-A53(最高1.8GHz)加1个Cortex-M7的异构架构,工业场景里M7可以做实时控制,A53跑Linux,硬实时和通用业务互不干扰;
- 集成的NPU有2.3 TOPS算力,INT8推理,跑常见的YOLO、MobileNet、OCR模型完全够用,关键是NXP的eIQ工具链和ONNX转换流程非常成熟,工程落地快;
- 工作温度-40°C到105°C(商业级到汽车级可选),这对做工业产品来说太重要了。
1.2 Pico-ITX板型:100mm x 72mm背后的取舍
Pico-ITX这个板型在PC界是个老标准了,100mm x 72mm,大概也就一张身份证大小。在这么小的面积上做i.MX8M Plus,最大的挑战不是能不能放得下芯片,而是接口密度和布线可行性。
i.MX8M Plus的核心功能都集成在SoC里,但它要外接的东西不少:LPDDR4内存、eMMC存储、双千兆PHY、USB 3.0 Hub、PCIe Switch(如果用的话)、MIPI-CSI摄像头、MIPI-DSI屏幕、音频Codec、CAN收发器、RS485收发器等等。这些器件全部放上去,还要保证信号完整性和散热通道,板面密度已经非常高了。
选Pico-ITX而不是稍微大一点的Nano-ITX(120mm x 120mm),其实是客户对安装空间有硬性要求——他们的设备外壳内部留给主板的区域就那么大。所以我需要在板卡外形上做文章,比如:
- 金属外壳同时充当散热器和结构件;
- 通过堆叠扩展板的方式,把一部分接口物理位移到上层板,缓解主板布板压力;
- 在主板背面也放置器件,这是Pico-ITX设计的常态。
这个阶段我特别建议做一个"器件面积预算表",把所有要放的器件面积、高度、发热量列出来,先粗略摆一版看是否放得下。不要一上来就布线,不然做到一半发现某个接口放不下,全部推翻重来,时间成本太高。实测下来,i.MX8M Plus方案在Pico-ITX上是可以做到的,但几乎每平方毫米都要精打细算。
2. 核心硬件电路设计要点
2.1 电源树设计与功耗核算
i.MX8M Plus的电源轨非常多,核心供电、DDR供电、IO供电、模拟供电、PHY供电,每一路都需要独立的DC-DC或LDO。很多第一次做i.MX方案的朋友会在电源树下功夫不够,结果系统一跑重负载就复位,排查起来非常痛苦。
这颗SoC的典型功耗在3W到5W之间,视负载而定,加上DDR、eMMC、PHY、扩展接口,整个主板的功耗预算我按8W做。输入电源设计为12V DC,通过一级降压到5V,再分配给各DC-DC。这里有个核心经验:DC-DC的电感选型一定要关注饱和电流,i.MX8M Plus核心瞬时电流变化很快,电感饱和电流至少留40%的余量;否则系统在跑AI推理时负载突增,核心电压跌落超过3%,直接死机。
电源上电时序也要严格按NXP参考手册来。i.MX8M Plus要求NVCC_DRAM、NVCC_PLL等先起来,然后是ARM核心供电,最后是IO电源。我一般用一颗带时序控制功能的PMIC,比如NXP自己的PCA9450,它专门为i.MX8M系列设计,寄存器配置好了之后上电时序完全不用操心,省掉一堆逻辑电路。但这个PMIC的寄存器初始化要放在BootROM之前完成,所以一般通过硬件引脚配置来设电压,软件层面只做微小调整。
LPDDR4的电源尤其敏感。VDDQ和VDD2之间的上电顺序、纹波要求都很严格。我在LPDDR4电源上用了LC滤波加去耦电容阵列,实测纹波控制在30mV以内,跑memtester一晚上不出错。
2.2 高速接口布局与信号完整性
i.MX8M Plus上高速接口不少:LPDDR4数据速率最高3733MT/s、USB 3.0(5Gbps)、PCIe Gen3(8Gbps)、双千兆RGMII、MIPI-DSI/CSI。Pico-ITX板子小,走线短,这本来是好事,但板子小也意味着器件密集,干扰源和受害信号挨得近,反而是灾难。
LPDDR4布线是我花时间最多的地方。我用的是8层板设计,层叠方案是:L1信号、L2地、L3信号、L4电源、L5地、L6信号、L7地、L8信号。DDR走线分组(数据组、地址组、控制组)严格等长,数据线组内误差控制在±5mil以内,DQS和时钟做差分对处理,100Ω差分阻抗。所有DDR走线参考地平面,跨分割的地方坚决避免,这个在LPDDR4 3733MT/s下尤其关键。
有一次调试中我遇到DDR偶发死机,跑memtest能过,但跑AI负载半小时后随机挂掉。排查了三天,最后用示波器抓DDR的VREF波形,发现VREF纹波偏大,而VREF源正好被一根PCIe时钟线的过孔穿过的地平面分割影响了。把VREF走线换层、远离高频时钟后,问题彻底解决。所以信号完整性永远是"看整体",不是单根线漂亮就完事。
USB 3.0和PCIe走线相对宽松些,但要特别注意过孔stub。我习惯用背钻工艺处理高速过孔,虽然成本高一点,但在Pico-ITX这种小板上,走线层数有限,过孔stub很容易成为反射源。有条件直接上背钻,没条件就选择短层换线,别为了省成本给自己挖坑。
2.3 板对板堆叠连接器的选型
堆叠扩展板是这个项目的灵魂所在。主板和扩展板之间必须用板对板连接器(BTB)连接,我在选型上有几个硬指标:
- 间距:推荐0.4mm或0.5mm间距的BTB,板子小,太宽的连接器占面积太多;
- 堆叠高度:根据外壳空间和器件高度确定,一般选3.0mm到4.0mm高度,留有足够空间放被动散热片;
- 电流承载:至少支持1A/引脚,扩展板上的供电都从BTB走;
- 信号速率:至少要能支持USB 3.0和PCIe Gen3的差分信号,所以连接器的带宽指标要看清楚,尽量选厂商标注了10Gbps以上能力的系列。
我实际用的是Hirose DF40系列(0.4mm间距)和JAE WP7系列,这两款在工业产品里用得多,供货稳定,有防错插设计。需要注意,DF40的触点非常小,焊接后要用X-Ray检查桥连情况,一开始我们手工焊了一块,结果USB 3.0眼图完全闭眼,一查是连接器虚焊加桥连。
连接器引脚分配上,我做了比较细致的规划:中间区域全部铺地引脚,每隔两对高速差分信号就夹一个地引脚,提供回流路径。电源引脚放在两端,大电流走多引脚并联。ID识别引脚和I2C引脚放在固定位置,所有扩展板共用这块定义。
3. 堆叠扩展板机制详解
3.1 机械结构设计:堆叠高度、螺柱与外壳的协同
堆叠扩展板不是简单地把连接器插上就完事,机械上必须有完整的固定方案。我们先定义了最多支持三层堆叠:主板 + 扩展板1 + 扩展板2,每层高度4.0mm,加上器件高度的预留,整个堆叠区域的高度控制在15mm以内。这个高度直接决定了外壳的厚度,所以要在项目一开始就和结构工程师同步。
固定方式上用六角铜柱。主板到扩展板1之间用M2.5铜柱,固定在板卡四个角的安装孔上;如果再加一层,铜柱加长。这带来一个问题:扩展板尺寸必须严格对齐主板的安装孔位,且所有扩展板的外形尺寸保持一致。我在设计扩展板规范文档里明确要求:外形100mm x 72mm,安装孔位置固定,连接器位置固定,器件高度不超过3.5mm。谁违反这个规范,堆叠就会出问题。
还有一个细节:BTB连接器的插拔力和振动环境下的锁紧力。Pico-ITX很多时候用在车载或工业设备里,振动大,所以我要求在扩展板BTB周围加金属固定支架,或者用带锁扣的连接器类型。只靠摩擦锁紧,长时间振动后会有接触不良的风险,而且很难排查。
散热也是机械设计的重点。i.MX8M Plus在Pico-ITX上运行,SoC表面发热密度不小,我用了铝制散热片直接贴在SoC上,散热片高度3.5mm,刚好卡在扩展板下面的空间里。这种"主板+散热片+堆叠扩展板"的三明治结构,实测在25°C环境温度下跑满NPU半小时,SoC温度稳定在72°C,完全可接受。
3.2 电气信号分配:PCIe、USB、I2C、GPIO怎么分
扩展板要能做什么,取决于主板给扩展板分配了哪些信号。我这个设计里,BTB连接器一共120pin,信号分配大概是:
- PCIe Gen3 x1:4pin(一对差分TX、一对差分RX),给扩展板接NVMe SSD、AI加速卡或者5G模块;
- USB 3.0 x1:4pin(一对TX、一对RX加DP/DM),给扩展板接USB设备或4G/5G模块;
- I2C x2:4pin,一条给扩展板识别用,一条留给业务传感器;
- CAN x1、UART x2、SPI x1:少量工业总线,供扩展板直接使用;
- 电源12V、5V、3.3V、地:各预留多pin并联,保证电流能力;
- GPIO若干:剩下的引脚全部分配为通用GPIO,方便扩展板自定义功能。
做信号分配表的时候,有一个经验:尽量在连接器边缘布置低速信号和电源,中心区域留给高速差分对。理由有两个,一是边缘引脚离板边近,便于扩展板布局;二是高速差分对居中,到主板各处走线距离均衡,等长处理容易。
另外所有高速差分对两侧都必须有地引脚,这一点我在PCB设计规范里写死。上板前我用TDR测过BTB连接器处的阻抗,差分阻抗100Ω控制在±10%以内,PCIe链路训练一次通过,说明电气分配和走线设计是靠谱的。
3.3 扩展板自动识别:I2C EEPROM与ID引脚机制
扩展板能不能"即插即用",关键看识别机制。树莓派HAT有个标准做法——板载一颗I2C EEPROM,里面存放设备的描述信息,树莓派启动时读取并自动加载驱动、配置设备树。我在这个项目里完全借鉴了这套思路,但做了更适合工业场景的强化。
每块扩展板都有一个I2C地址为0x50的EEPROM(AT24C02级别就够)。数据结构包含:板卡名称、板卡版本、硬件ID、制造商、GPIO配置表、设备树Overlay名。主板开机时,BSP里的一个服务会扫描这条I2C总线,读到EEPROM里的描述,然后:
- 如果描述合法,自动加载对应的设备树Overlay和驱动模块;
- 如果读到0xFF(EEPROM空),认为未接扩展板,系统正常启动但禁用相关接口;
- 如果校验失败,记录错误日志并通过LED告警。
除了EEPROM,我还设计了4个ID引脚,用上下拉电阻编码,提供16种硬件识别状态。EEPROM用于软件级识别,ID引脚用于硬件级识别——比如电源管理模块可以在系统完全启动前就判断扩展板类型,决定是否给扩展板供电。这是一个双保险设计,一开始可能觉得多余,但真正做产品时,这种冗余能省很多现场排查时间。
现在市面上做堆叠SBC的厂家不少,但很多只做物理堆叠,不做自动识别,导致用户每次换扩展板都要手动改设备树,体验很糟糕。我们的设计就是冲着"用户拿到扩展板,插上就认,开机就能用"去的。
4. 软件BSP与系统适配
4.1 Yocto交叉编译环境搭建
硬件做出来后,让Linux跑起来是第一个节点。NXP官方推荐用Yocto,也有明摆着的好处:可定制性强,能精确控制文件系统大小,适合量产品牌。但Yocto的学习曲线确实陡,我简单说下我的搭建习惯。
我用的BSP版本是NXP的imx-yocto-bsp,配好repo后,先初始化环境:
mkdir imx8mp-sbc && cd imx8mp-sbc repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-mickledore repo sync source setup-environment imx8mpevk bitbake imx-image-core第一次全量编译时间比较长,我的机器是16核,大概两小时左右。编译完成后镜像在tmp/deploy/images/imx8mpevk目录下,用uuu工具烧写到eMMC即可。
有几个容易踩坑的点:
- Yocto编译主机最好用Ubuntu 20.04或22.04的64位系统,别用太新的系统,很多依赖可能冲突;
- 磁盘空间至少准备150GB,编译过程中不会缺空间是底线;
- 如果要开发NPU应用,记得在local.conf里加上imx-gpu和eIQ相关组件,否则后面补比较麻烦。
我自己的习惯是Yocto最小系统 + 手动交叉编译业务模块。原因很简单:Yocto全量构建耗时,每次改应用都要整镜像太慢;最小系统跑起来后,业务代码在Ubuntu上交叉编译,然后scp到板子上调试,效率高得多。交叉编译工具链直接用Linaro的aarch64-linux-gnu或NXP SDK提供的都可以。
4.2 设备树修改与驱动适配
主板是自己设计的,设备树必须改。我把重点放在这几个文件上:imx8mp-custom-board.dts、imx8mp-custom-board-exp.dtsi。设备树里除了标准的外设节点,还要定义BTB连接器引出的信号节点。
这里有个实操建议:把每块堆叠扩展板都写成独立设备树Overlay(DTSO),这样运行时可以动态加载,而不是把物理设备硬编码在主设备树里。虽然Yocto下动态Overlay需要CONFIG_OF_OVERLAY支持,配置麻烦点,但长远来看是值得的,因为用户不需要重新编译内核就能适配不同扩展板。
GPIO引脚的分配要特别小心。i.MX8M Plus的GPIO很多是复用的,比如某个引脚既能做GPIO又能做UART或CAN功能,设备树里一个不小心就会冲突。我的做法是建立一张GPIO分配总表,每个人都必须核对过才能提交代码。这张表直接对应硬件原理图,硬件改动必须同步更新表,避免软件和硬件各说各话。
驱动开发方面,如果扩展板用到的是标准接口(USB、PCIe、CAN),基本不用写驱动,内核自带的就能搞定。需要写驱动的主要是一些自定义的IO扩展芯片、工业协议芯片。我的经验是:能用Device Tree描述的就少写代码,一定要写驱动的话,优先用标准的Linux驱动框架(如platform driver、i2c driver),不要自己发明轮子。
4.3 NPU工具链:从ONNX到NBG的落地流程
i.MX8M Plus的NPU算力2.3 TOPS,听起来不算大,但用在工业视觉、缺陷检测、OCR这些场景完全足够了。关键是工具链要顺。NXP的eIQ Toolkit基于NCNN和ONNX Runtime,我实际用下来流程还算顺畅。
典型流程是:
- 训练模型得到ONNX格式;
- 用eIQ的模型转换工具,把模型量化为INT8格式并生成NBG文件;
- 在板子上用NXP的神经网络推理引擎(Neural Network Inference Engine)API加载NBG文件进行推理。
我跑过一个MobileNetV2分类模型,输入224x224,量化为INT8之后,NPU推理速度实测约320FPS,CPU占用几乎可以忽略,这个性能在工业场景足够了。YOLOv5s的话,输入640x640,大约能跑到35FPS左右,做实时检测稍微有点紧,但配合降采样和区域检测的策略也能用。
遇到最多的问题是模型量化后精度掉得厉害。排查了一圈,发现是输入归一化方式不对。tensorflow训练时输入是0-1浮点,但NPU推理时输入数据要转成0-255整数并匹配量化参数。我用eIQ自动生成的量化校准数据集重新跑了一遍,精度恢复到了98%以上。所以量化校准数据集一定要有代表性,最好从实际场景收集,别拿公开数据集凑数。
5. 实测复盘与问题排查
5.1 高速信号完整性测试:眼图、阻抗与链路训练
板子打样回来后,第一步不是跑系统,而是先做电源和信号完整性测试,这一步能省后面大量调试时间。
我的测试顺序是:
- 用万用表检查各电源轨对地阻抗,防止短路;
- 上电后测各电源轨电压和纹波,确认电源OK;
- 用示波器测时钟信号,确认SoC主时钟跑起来了;
- 将系统启动到U-Boot,确认DDR初始化通过;
- 进系统后,用iperf测双千兆网口吞吐;
- 插PCIe NVMe SSD,确认链路训练成功并测试读写速度。
USB 3.0这块我专门用示波器抓过眼图。i.MX8M Plus的USB 3.0跑在5Gbps,眼图要求一般在0.5UI以上。实测数据线眼图开口约0.42UI,虽然能过认证但余量不大,我后来调整了USB端点处的串联匹配电阻,从22Ω改到10Ω,眼图开口提升到0.52UI,稳了。
PCIe Gen3眼图测试我用的是协议分析仪,重点是确认链路协商速率是8GT/s而不是降到Gen2。有一次因为BTB连接器选型时带宽不够,PCIe在常温下能协商到Gen3,但温度升高后链路不稳定,反复降速到Gen2。后来查连接器规格书,发现该款连接器的差分插入损耗在8GHz时确实偏高。换用高频规格的连接器后,热循环测试通过了。这个教训深:堆叠连接器的带宽参数不能只看标称,要看高频下的S参数曲线。
5.2 散热实测:无风扇环境下的长期稳定性
Pico-ITX板子通常装在小盒子里,无风扇被动散热是常态。i.MX8M Plus满负载运行时,SoC温度会迅速升高。我实测了两种散热方案:
方案一:纯被动散热片,铝材质,面积稍大于SoC,高度3.5mm——25°C室温,跑满NPU 30分钟后SoC温度稳定在82°C。方案二:散热片加外壳导热硅脂,把热量传导到金属外壳——同样条件,温度稳定在72°C。后面这个方案明显更可靠。
长期稳定性测试,我们在45°C高温箱里跑了72小时边跑AI推理边记录日志,有外壳导热方案,SoC最高温度84°C,没有出现降频或死机。这个结果对工业产品来说是可以接受的。温度从65°C升到84°C的过程中,我观察到A53核心会主动降频到1.2GHz,NPU倒是不怎么降,说明NXP的温控策略还是比较保守的,应用层如果能做温度感知的负载调度,体验会更好。
还要注意eMMC的发热。高速持续写入时eMMC温度也不低,长时间满负载写入可能导致写入降速。我把eMMC放在主板背面,利用金属外壳做辅助散热,效果不错。
5.3 常见问题排查实录
做一个速查表,这些问题是我在这个项目中实际遇到过的,分享出来帮大家避开:
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 上电后无任何串口输出 | DDR电源时序异常 | 示波器测各电源轨上电顺序 | 检查PMIC寄存器配置和硬件时序引脚 |
| Linux启动到一半重启 | LPDDR4 VREF噪声过大 | 抓DDR VREF波形 | 优化VREF走线,增加去耦电容 |
| USB 3.0识别不稳定 | BTB连接器虚焊 | X-Ray检查焊接 | 返修或更换连接器 |
| PCIe降速到Gen2 | 连接器高频损耗过大 | 协议分析仪看协商速率 | 更换高频BTB连接器 |
| NPU推理精度下降 | 量化数据集不具代表性 | 检查量化参数 | 用实际场景数据重新校准 |
| 扩展板无法自动识别 | EEPROM数据损坏或I2C地址冲突 | 扫描I2C总线确认地址 | 修正EEPROM写入或设备树地址配置 |
| 千兆网口速率不达标 | RGMII时序偏移 | 示波器测RX/TX时钟和数据 | 调节设备树中RGMII TX delay参数 |
| 高负载下系统死机 | 核心供电电感饱和电流不足 | 测核心电压跌落 | 换用更大饱和电流的电感 |
这里面最隐蔽的一个坑是千兆网口的RGMII时序。i.MX8M Plus和PHY之间的RGMII接口,RX和TX的延迟如果不匹配,就会出现千兆能link但吞吐上不去的问题。我在设备树里调了tx-internal-delay和rx-internal-delay两个属性,实际上不同PHY对延迟要求不一样,需要逐个排除。我建议根据PHY数据手册先设置推荐的延迟值,再用iperf双向打流验证,不行就微调。
6. 应用场景与扩展思路
6.1 边缘AI网关:智能视觉与数据采集
这个SBC平台最典型的应用是边缘AI网关。主板跑Linux,负责数据采集、AI推理和上云;扩展板1插4G/5G通信模块,通过PCIe接口连接;扩展板2插多路RS485/CAN扩展,接入PLC和传感器。
在设备端部署视觉检测模型,检测生产线上零件是否缺失。整个系统是:MIPI-CSI摄像头采集图像 → i.MX8M Plus NPU跑检测模型 → 异常结果通过扩展板上的DO输出触发报警。这个流程在板子上完整跑通,端到端时延大约120ms,满足产线需求。之前用纯CPU方案,同样模型推理要800ms以上,完全没法用。NPU的作用在这里体现得很直接。
因为是堆叠式设计,后续增加新功能时不用改动主板,只要开发对应的扩展板就行。比如客户需要增加Wi-Fi 6连接,我只需要做一块带Wi-Fi模块的扩展板,插上去,系统自动识别,应用层通过标准接口访问即可,两周就能交付新功能。这就是堆叠扩展板的商业价值:主板一次开发,扩展板按需迭代。
6.2 工业控制、车载与更多领域
除了边缘AI,Pico-ITX i.MX8M Plus这个组合还能用在不少场合:
- 工业HMI:MIPI-DSI接屏幕,双千兆口接PLC,Cortex-M7核心跑实时EtherCAT从站,A53核心跑人机界面,一个板子全搞定;
- 车载网关:-40°C工作温度加车规级选项,加上CAN FD和车载以太网扩展板,可以做车载数据记录和远程诊断;
- 医疗设备:12V供电、低功耗、低发热的特性,适合一些便携式医疗检测设备;
- 智能零售:人脸识别闸机、自助结算终端,NPU跑活体检测和人脸比对都够用。
i.MX8M Plus比较典型的优势是接口全、工业生态好,NXP对长期供货有承诺,很多行业客户在选型时都会问"这芯片能供几年",NXP的答案是可按需供货,这点在B2B采购里非常重要。
6.3 把堆叠生态系统做起来
这个项目做完后,我最大的体会是:堆叠扩展板机制的价值,不只在硬件本身,而在于它可以慢慢形成一个微型生态。就像树莓派的HAT生态一样,主板定义好标准,扩展板按标准开发,用户按需组合。
所以我在做这块板子的时候,特意把接口定义、机械结构、电气规范整理成一份完整的《扩展板开发指南》,后面任何团队想基于这块主板做自己的扩展板,照着指南就能开发,不用到处问原理图。这个文档的内容包括:BTB连接器引脚定义、供电能力、机械尺寸图、EEPROM数据格式、设备树Overlay模板、认证要求等等。做产品一定要有这种"为生态做标准"的思路,否则每一块扩展板都是定制开发,成本居高不下。
最后再分享一个小技巧:堆叠板卡的调试,强烈建议用USB转I2C的调试器直接挂在I2C总线上,随时抓EEPROM读写和ID引脚状态。有一次扩展板识别失败,就是靠I2C调试器发现EEPROM的WP引脚在扩展板原理图上接错位了,写保护一直生效。这种问题靠看日志其实看不出来的,工具用对了能省一天时间。
如果你正在规划类似的小型SBC产品,i.MX8M Plus加Pico-ITX加堆叠扩展板这三者组合,是一个经过验证可行、能落地的方案。硬件上把电源和高速信号设计做扎实,软件上把设备树和NPU工具链跑通,剩下的就是按需求迭代扩展板了。