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.
我正在尝试将带有 nowECC 的 ECC 值添加到使用自定义引导加载程序加载的固件中。 我怀疑-f 标志不能正常工作。 在我的引导加载程序中、它不会像 UniFlash 和 CCS 那样将不在64位边界上结束的段的末尾清零、因此我将使用-f 0xFF 来解决这一问题。 我有一个1字节常量、它是.const 段的最后一个成员、是8字节块中的4字节。 启用 ECC 验证后、加载此值时出现异常。 我发现、无论我是否指定-f 标志、ECC 值都是相同的。 是否有人可以验证此功能?
让我提供更具体的信息。
根据我的映射文件、具有 ECC 错误的两个常量值是这些值。
00037df0调度程序_tick_period_microseconds
00037df4 app_task_count
这是它们所处的区域
00037dec 00000009 userApp.obj (.const)
调试器显示 Scheduler_tick_period_microseconds 0x000003E8和 APP_task_count 的值为0xFFFFFF05。 如果我使用 CCS 进行闪存、APP_TASK_COUNT 将为0x00000005。
调试器显示地址0xF0406FBC 处的 ECC 值为0xF3977A33。 无论我是否使用-f 参数、该值似乎都不会改变。 我希望这会导致更改、因为 app_task_count 位于未以64位边界结束的段的末尾。
nowECC 版本为2.22、我传递它的参数是 -R4 -f021 16M_ADD -f 55 -a filepath -i filepath
我发现-f 影响了一些 ECC 值、但它似乎没有在我的应用中的某个特定位置导致正确的值。 我无法解释原因、但我确实找到了链接 器的 palign 关键字、我认为无论如何这是一个更好的解决方案、因为它不会对闪存中的值做出任何假设。