板级配置和驱动代码是我根据芯片和事理图创建,官方板级样例并没有该芯片和类似board包。在板级能干创建完成后。开拓业务框架给运用工程师接口。板级框架测试涉及串口,4G模块,网络通信,任务间通信,曾测试324小时,当时没创造去世机或者其他情形。
问题详细剖析板级配置如下:
除界面配置外,还需变动board.c适配公司板卡外设,这里不做赘述。总之外设驱动和网络库在板级驱动测试中没有显现问题。运用工程师仅需用C标准库写业务逻辑,其后测试创造去世机问题。开始逐步排查。
rtThread给出msh环境可在线调试系统问题,输出系统运行信息。此外考试测验在各个任务中加入一些打印信息帮忙测试查找问题。末了创造GPS定位模块任务无输出,并占用大量资源,涌现类似去世锁问题,导致产品假去世。
定位模块处理任务紧张处理串口数据并转发给其他任务,开始排查串口问题初步疑惑串口可能乱码导致业务处理程序崩溃,开始检讨电平匹配,电容电阻等,均未创造缺点。这也验证了业务框架测试时未创造问题。
下一步打算检讨固件驱动库代码。一样平常的不会认为RT-Thread官方给出的串口驱动部分代码有问题,但永劫光未找到缘故原由,就开始在驱动代码进行检讨。
整体浏览串口处理样例,其系统串口处理程序为中断和旗子暗记量搭配利用,从串口读取一个字节的数据,没有读取到则等待吸收旗子暗记量,串口数据帧的首尾判断根据GPS数据进行设定。根据代码追踪,末了创造问题,输出函数stm32_putc的timeout存在问题。
问题办理方案变动库代码:做如下修正;
drv_usart.c 520行旁边:
drv_usart.c 660行旁边:
总结和建议
此代码库变动的条件是运用工程师业务涌现串口资源占用,合理变动代码。
建议参考RT-Thread社区提交样例,合理变动库代码及运用代码。