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.
一些背景信息和问题详细信息:
一些测试结果:
问题:
没关系、无需道歉、因为飓风 Harvey 很可怕。
我已经有一段时间没有研究这个问题了、现在有没有建议?
在该器件上始终启用 ECC。 如果您已正确初始化 SRAM、则问题可能是当您启用缓存时、您从闪存中获得 ECC 错误。 每个缓存行从闪存加载32个字节。 有时、段不会以32字节边界结束、并且可能不会为丢失的字节生成 ECC。 可以通过使用 palign (这意味着填充和对齐)更改链接命令文件的段部分中的 align 关键字来解决该问题。 为了避免 HALCoGen 覆盖对 HL_SYS_LINK_cmd 文件的更改、我使用#if/#endif、如下所示:
/*------------------ */ /*段配置 */ SECTIONS { /* USER CODE BEGIN (5)*/ .intvecs:{}>向量 .text palign (32):{}> FLASH0 .const palign (32):{}> FLASH0 .cinit palign (32):{}> FLASH0 .pinit palign (32):{}> FLASH0 .bss :{}> RAM .data :{}> RAM .sysmem:{}>RAM #if 0/* 用户代码结束*/ .intvecs:{}>向量 .text align (32):{}> FLASH0 | FLASH1 .const align (32):{}> FLASH0 | FLASH1 .cinit align (32):{}> FLASH0| FLASH1 .pinit align (32):{}> FLASH0 | FLASH1 .bss :{}> RAM .data :{}> RAM .sysmem:{}>RAM /*用户代码开始(6)*/ #endif /*用户代码结束*/ }