Large Image OAD CRC校验问题
调试Large Image OAD已经可以正常工作,现在在使用发现一个莫名其妙的问题,不知道是程序的bug还是硬件的bug。
正常使用的时候是先烧BIM,然后烧Img_A,这个情况下面,BIM在第一次运行的时候检查Img A的crc位和Img_Header的crc,如果不匹配,而且Img_Header的crc为0xffff的话会调用crcCheck,对Img_A进行Crc计算,如果算出来的crc跟Img A的crc位匹配,则写入Img_Header的crc。
问题来了,如果烧录的顺序倒过来,先烧录Img_A (Erase&program),再烧BIM (Append) ,BIM会出现校验错误,大概是在Img_A头开始的第5个Page开始crc出错。但是在debug里面看到BIM从flash里面读出来的那个Page的2048个数据与源文件完全一致。这会是什么问题呀?难道CRC校验出来配置seed之外还要配置其他参数的么?
搞清楚了,原来是LL_init 修改了Image的其中4个字节,所以只要运行过LL_init之后,对Image做CRC永远也不能得到编译时由IAR生成的那个CRC值。 至于前面说的那个Page一致的问题,是我看错了,当时内存里面的是前一个Page的数据。
好:
我现在遇到一个问题,不知道你有什么建议。
先download BIM工程。
在使用SimpleBLEPeripheral工程时,在Select the Project->Edit Configurations选择CC2541-OAD-ImgB,在编译出来后downloader到CC2541里去。
再使用BIM工程debug(用的是debug without download),却发现CRC校验不对,这个是为什么呢?工程都是用默认的,没有改过。
你好:
跟你相同的问题,请问你解决了吗?