问题背景
最近定位了两个关于组播升级的问题,这里写下定位过程,供大家参考。
问题1:组播升级测试版本重启后boot启动卡死,但是利用代码重新编译生成的版本没有这个问题;
问题2:组播升级重启后某个分区中的文件破坏了,导致里面的插件启动异常,出现一堆jffs2
错误的打印;
定位过程
首先介绍一下组播升级的原理,通常在boot下我们利用tftp
命令将firmware
下载到内存某个固定地址,然后利用nand flash
命令烧写到flash
上。组播升级的原理和这个过程很类似,只不过不是通过tftp
命令来获取的firmware
,而是通过接收组播包、剥离数据段和组装来获取版本。组播升级的优点是可以批量升级,适用于工厂生产环境。好了,下面来说一下问题的定位过程。
- 【组播传输过程】在组播升级之后查看内存中的文件与实际的升级文件是否存在差异,如果不存在差异则说明组播的传输过程没有问题,有差异则需要利用
Wireshark
来跟踪一下组播传输过程,确定是组播上位机的问题还是单板接收端的问题; - 【flash及其写入】若组播传输没有问题,从flash中读取对应地址,看与实际升级文件是否存在差异,有差异说明flash的写入过程存在问题;
- 【ddr】若flash中读取的内容和实际的升级文件没有差别,但是启动之后分区中的文件被破坏了,需要考虑是
ddr
的问题,因为可读可写分区存在ddr
和flash
的映射操作。
网友评论