T1022 天脉系统下多路 CAN 与串口调试经验分享
最近用 T1022 开发板做了几个车载控制项目跑天脉系统调试多路 CAN 和串口的时候踩了不少坑也总结了一些实用技巧分享给做同类开发的朋友。我们用的是西安威嵌神州的 T1022 开发板下面的技巧都是实际调试验证过的同平台的朋友可以参考。先说 CAN 总线调试T1022 自带多路 CAN 控制器天脉系统下有现成的驱动但是默认配置是普通模式很多实时项目需要用 CAN 的中断接收模式这时候要注意改驱动里的缓冲区配置。如果 CAN 总线数据量很大建议把接收缓冲区开大并且把 CAN 中断的优先级调高不然很容易丢帧。我们之前调试的时候就是缓冲区开小了大数据量下丢包严重调大之后就稳定了。西安威嵌神州这款板子的驱动源码是开放的修改起来很方便。然后是串口的问题T1022 的串口很多有调试口也有普通串口。很多人想把调试口改成普通串口用天脉系统下需要改两个地方一个是 U-Boot 的启动参数去掉 console 配置另一个是设备树里把串口节点的 status 改成 okay并且移除调试口的特殊配置。只改一个的话要么启动没日志要么应用层打不开设备这点很容易踩坑。还有一个实用的点多路接口同时工作的时候中断尽量分散到不同的 CPU 核心上不要都挤在一个核心上不然负载高了容易出现延迟。天脉系统支持中断亲和性配置把 CAN、串口、网口的中断分别绑到不同核心上整体实时性会好很多。最后提一句我们的开发板和量产核心子卡硬件完全一致开发阶段调好的所有驱动和应用量产的时候直接就能用不用二次移植。前期用低成本开发板快速验证后期直接上量产板整个研发流程能顺畅很多。有具体调试问题也可以联系西安威嵌神州交流。