STM32跑Java不是把桌面JVM塞进MCU,而是取解释器+裁剪类库+自定义类加载器:业务class放SD/SPI Flash,运行时下发、校验、加载,底层GPIO/CAN/串口仍用C驱动,通过native桥接。F4/F7/H7较合适,F0/F1资源太紧不推荐;开源可选JamVM、uJVM,商用有MicroEJ/STM32Java,目标只留核心运行时。
工业触摸屏用Java ME做HMI,适合RAM几十MB、只跑数据监视、参数录入、报警列表的嵌入式面板。路线是CLDC+MIDP:MIDlet管生命周期,LCDUI高级组件做表单、低级Canvas做工艺图,CommConnection/本地桥接读PLC,RMS存配方,后台单线程轮询,避免多线程和频繁建对象。
边缘网关接Modbus、OPC UA、MQTT、S7等异构源,核心不是“能连上”,而是把寄存器号、节点路径、Topic字段统一成一套点模型,再做量程、质量、时间、去重清洗,最后按标准JSON上送平台。协议解析与业务语义解耦,新增设备只注册适配器,上层不用改。
边缘网关跑弱网MQTT,不能只靠setAutomaticReconnect(true)。真正稳的链路是“TCP参数保活+MQTT心跳探活+指数退避重连+持久会话保订阅+断网本地缓冲+QoS按业务分级”,把“连不上、连上假死、重连丢消息”三件事同时堵住。
受限嵌入式Java做单测,核心不是把JUnit全套搬进板子,而是“业务算法离板跑、硬件访问靠抽象、板端只跑冒烟”。GPIO、ADC、串口、Modbus驱动不直连测试类,统一成HardwarePort接口,主机用Fake/Mock造数据,ARM小内存设备只跑精简用例。
S7-1200做多轴插补要先看硬件固件:普通1200建多个定位轴工艺对象,可分别用MC_MoveAbsolute/Relative做单轴定位,复杂直线/圆弧多轴协同优先用S7-1200 G2“运动机构”工艺对象;非G2老CPU可用ST自写微线段插补,把圆弧离散成小直线再逐轴下目标。
工业网关若只做串口/Modbus采集、以太网桥接、MQTT上云,根文件系统没必要带systemd、Python、全量man。Buildroot用menuconfig做交叉编译和根文件系统生成,按“C库—BusyBox—init—软件包—post-build清理—镜像压缩”六层收口,12MB可落地,且启动更快、OTA更小。
设备树本质是一份“硬件简历”,用树形节点告诉内核外设有哪些、寄存器在哪、中断几号、GPIO怎么连;驱动只按compatible去匹配,不把硬件地址写死在代码里。 芯片级通用描述放.dtsi,板级差异放.dts,板文件用&标签引用并覆盖属性即可。
自定义传感器接在板端寄存器或I2C/SPI上,最简洁的给用户层“直接访问”方式就是写成字符设备:/dev下出节点,app用open/read拿数据,用ioctl切通道、设采样率。相比sysfs只适合小参数,字符设备可带内核缓冲、阻塞等待、批量帧和高频mmap,更适合工业采样。
NAND跑UBIFS,样机很快、出厂几个月变慢,常见不是硬件老化,而是“空间吃满+GC被动+磨损均衡跟不上”。UBIFS建立在UBI之上,调优要同时看MTD参数、UBI卷预算、mkfs镜像、挂载选项和运行监控四层。
工业控制把标准以太网当骨干,常因拥塞、排队、软件协议栈抖动出现毫秒级波动。TSN在Linux上用“统一时钟+时间门控+优先级整形+帧抢占”把控制报文放进确定时隙,配合支持硬件时间戳的网卡/交换芯片,端到端可做到亚毫秒甚至百微秒级。
ARM板走OTG/Device口对接PC,最实用是ConfigFS搭复合Gadget:同一个USB枚举出CDC-ACM串口和Mass Storage U盘。相比老式g_serial/g_mass_storage独立加载,ConfigFS可在运行期自由组合功能、改VID/PID、加热插拔逻辑,工业调试“一根线同时看日志+拷配置”很省事。
嵌入式板子“偶尔一卡”最忌盲改:先用数据分CPU热点、内核路径、调度阻塞、IO等待四层,再动手。perf做采样画像,Ftrace做内核函数级时间线,二者配合可从用户态一路追到驱动和调度器。
蜂窝、NB-IoT、远程工业网关最怕整包rootfs动辄几十MB。差分升级只在服务端对“旧版本镜像/文件”和“新版本”做字节级diff,设备下小块patch,本地合成为完整新固件再写备用分区。改动比例小的时候,差分包常只有全量包10%~30%,相当于传输体积降70%左右;若大版本重排、编译器换工具链,差分包会变大,这时要回退全量。
ARM边缘盒跑YOLO,核心不是把.pt直接丢到板子,而是“选小模型+导ONNX+按SoC转专用引擎+INT8量化+采集/推理/后处理解耦”。纯A核可用NCNN/ONNX Runtime,带NPU的RK3588/3566走RKNN,Jetson走TensorRT,通用低功耗可TFLite,整体能把640×640检测从不可实时拉到十几到几十FPS。