IAR程序编译失败 check failed
-
Frankie 在 IAP程序编译失败 check failed 中说:
正常是这样的,看看有没有手动加了attribute来修改,下面的代码就是一个错误例子:
__attribute__ ((section(".data"))) uint32_t testDataWithoutInit;
你把这个代码加进入编译,两个差值就会从原理的4变为8。
顺便提供下MCAL的版本,可能是MCAL内部的问题。
你好,这边没有用到MCAL,用的SDK V1.3.0,跟SDK版本有关系吗?我这边程序中没有用到__attribute, 还有没有其他可能性呢?另外未添加应用代码之前没有这个错误的,添加完应用代码以后才出现的,附件是我工程的map文件,麻烦帮忙看一下有没有发现,谢谢。BMS_7445_V0.txt
-
还有确保yt-link DATA_FLASH 和 DATA_RAM 有同样的对齐配置,
看map文件,你们的对应配置都是4。:
size(block DATA_RAM_block) = 9'456 (0x24f0)
size(block DATA_RAM_rom_block) = 9'452 (0x24ec)
"TEXT_DATA_RAM_rom": 0x24ec DATA_RAM_rom_block 0x1'b9f4 0x24ec <Block> DATA_RAM_rom_start_section uninit 0x1'b9f4 0x0 <internal module> data_rom 0x1'b9f4 0x24ec <Block> Initializer bytes const 0x1'b9f4 0x24ec <for data-1> (used: 0x0) DATA_RAM_rom_end_section uninit 0x1'dee0 0x0 <internal module> - 0x1'dee0 0x24ec
"RAM_DATA_RAM": 0x24f0 DATA_RAM_block 0x1fff'1cfc 0x24f0 <Block> DATA_RAM_start_section uninit 0x1fff'1cfc 0x0 <internal module> data_region_start_section uninit 0x1fff'1cfc 0x0 <internal module> data 0x1fff'1d00 0x24ec <Block> data-1 0x1fff'1d00 0x24ea <Init block>
问题应该是:
DATA_RAM_start_section = 0x1fff'1cfc
但是时间数据开始是从0x1fff'1d00开始的,差了4个字节。可能你们data数据加了一些强制对齐的操作。
解决方法:
修改yt-link,把对齐从4改为16,再试试。 -
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...