2020系统能力培养大赛-团队赛 关于系统测试串口出现丢字现象的问题修复 ——20200721

各参赛队:
  大家好,近期收到北航一队的同学的反馈,发现大赛系统测试存在环境适配问题,故通知大家。
  1. 问题现象:在有些参赛队伍的本地实验环境上,在系统测试时,串口存在丢字的现象。
    该现象不是普通问题,是在特定电脑和串口软件下会触发。
    如果在你的实验环境里未发现该问题,则可以不用修复该问题;如果不确定是否有该问题,则参考以下方法修复该问题。
  2. 问题原因:直接原因是串口波特率配置的不是接近57600,误差较大。
    串口波特率计算公式是:sys_clk/(16*uart分频参数)。
    在我们分布的系统测试环境中,sys_clk是由xilinx ip PLL生成,目标是33MHz,实际是33.03571MHz; uart分频参数是0x23(十进制35,参见发布包system_test/supervisor-mips32/kernel/kern/init.S)。所以波特率是 33.03571*1000000/(16*35)=58992, 与57600差2.4%。这个误差,部分实验环境可以容忍,有些实验环境就不可以容忍,就出现了丢字现象。
  3. 修复方法:在发布包 system_test/supervisor-mips32/kernel/kern/init.S的126行中将uart分频参数设定为0x24。
    这样,实际波特率就是33.03571*1000000/(16*36)=57353,与57600的误差缩小到0.4%,可以解决以上问题。
  4. 以上,如有同学碰到类似问题,请参考第3点进行修复。如果未碰到该问题,则也可以不修复。
祝好!
2020年7月21日

0 个评论

要回复文章请先登录注册