trace32 data.load.elf error "verify error at address NSX:0x8000"



这是我第一次使用 Trace32,当我尝试执行此命令时,我正在尝试在 arm 目标上刷新一个简单的 C 程序(据我所知,此命令将刷新目标但不确定?

d.load.elf image.axf /Verify /ComPare

我收到以下错误:

验证地址 NSX:0x8000 处的错误

我使用以下命令编译和链接代码:

armclang --target=aarch64-arm-none-eabi hellofunc.c hellomake.c -g -fdata- 
sections -ffunction-sections -c
armlink --entry=0x8594 hellofunc.o hellomake.o --output=image.axf

如何刷新代码并对其进行调试? 逐步执行每条指令

谢谢

如果闪存已经编程,则无法对其进行编程 - 必须先擦除闪存。 请参阅 Trace32 文档的第 93 页。此外,在编程之前尝试用文件compare闪存将始终失败!

您需要擦除闪光灯,并启用闪光灯进行编程。 例如:

FLASH.Erase ALL
FLASH.Program ALL
Data.load.elf image.axf /Verify
FLASH.Program off

请注意,如果除了要编程/调试的代码之外,闪存中还有其他数据或引导加载程序,则 Erase.ALL 可能不合适。

如果您真的想对内存进行编程,请不要使用 load 选项/ComPare

选项/ComPare 表示:不加载任何代码。而是读取内存(在加载 ELF 的位置(并将内存内容与 ELF 文件进行比较。

如果要将应用程序加载到可写内存并验证加载是否成功,请执行以下操作:

Data.LOAD.Elf image.axf
Data.LOAD.Elf image.axf /ComPare

Data.LOAD.Elf image.axf
Data.LOAD.Elf image.axf /DIFF
IF FOUND()
( 
PRINT %ERROR "Faild to load application image.axf at address " TRACK.ADDRESS() 
)

顺便说一句:我不会将这样的应用程序负载称为"闪烁"。在我看来,"闪烁"是关于对非易失性存储器进行编程。

相关内容

最新更新