This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
由于我使用的是bin文件,需要通过HEX文件在CCS软件中转一下,而HEX地址错误导致了BIN文件的数据错位!!!
偶然的一次修改程序时,发现生成的hex文件的地址不连续。
HEX文件的开头会显示数据所存入的地址
(HEX文件出错位置(红框))
如图所示,1 2 位为数据量,红框第一行有0x18个数据,所以地址0xBDDD开始往后0x18/2=0x0C后为下一行的起始地址,因此0XBDDD+0X0C=0xBDE9。但是这里是0XBDEA,所以导致出现了1个32位的空地址
对于HEX文件的烧写,他只会对所用地址进行烧写,其他地方为0XFFFF,所以按照上面hex文件烧写的话,0XBDE9位置为0XFFFF。而bin文件是通过HEX转过来的,因此bin无法读取当前的地址信息,所以说
BIN文件就会把实际的数据0X6BFB写到地址0XBDE9中,导致bin文件烧录时数据往前顺延一个32位数据。出现bug。
!!实际上我有正常的版本软件的hex,正常的hex里面不存在地址错误,地址是连续的,生成的bin文件也是连续的,不需要出现要填充0xFFFF的地方
下面是对.map文件解析
发现对应位置是.switch的内容,大神们帮忙看一下是代码问题还是ccs软件配置问题?