工具/软件:TI C/C++编译器
我已经实施了CRC32来在开机时执行ROM检查,它计算闪存扇区A到G的CRC。这些闪存扇区包括.cmd文件的以下部分:.cinit,.Pinit,.text,.econst和.switch。 CRC按预期工作;我还要确保跳过存储预期CRC值的闪存地址,以便更新预期CRC定义不会影响CRC计算。 CRC不通过闪存扇区H运行,我在这里存储"ramfuncs"功能。 但是,修改"ramfuns"函数似乎会影响计算的CRC值。 在分析.map文件时,对完全包含"ramfuncs"的模块的引用仅在扇区H和各种RAM地址中。 由于CRC不检查这些部分,为什么在修改"ramfuncs"函数后计算的CRC会发生变化? 这些函数的某些部分似乎存在于我正在检查的闪存扇区中,尽管在.map文件中并不明显。
我附上了.cmd和.map文件,其中模块"test"只包含一个功能"test_1",它是"ramfuncs"的一部分。 如果您在.map文件中搜索此文件,您将看到它不会出现在闪存扇区A到G的任何地址中,但当我修改该文件中的操作(例如,将乘法更改为加法)时,CRC将发生变化。