这是我第一次使用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
如何刷新代码并进行调试?逐步执行每条指令
谢谢
答案 0 :(得分:0)
如果已经对闪存进行了编程,则无法对其进行编程-必须先将其擦除。请参阅Trace32 documentation的第93页。此外,尝试使用编程之前的文件 compare
闪存将始终失败!
您需要擦除闪存 ,并且还必须启用闪存进行编程。例如:
FLASH.Erase ALL
FLASH.Program ALL
Data.load.elf image.axf /Verify
FLASH.Program off
请注意,如果除了要编程/调试的代码之外还有其他数据或闪存中有引导加载程序,Erase.ALL可能不合适。
答案 1 :(得分:0)
如果您确实想对内存进行编程,请不要使用加载选项/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()
)
顺便说一句:我不会将这样的应用程序负载称为“闪烁”。我认为“闪烁”是关于对非易失性存储器进行编程。