Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 使用jtag编程sam4e时如何防止启动区域_Arm_Bootloader_Iar - Fatal编程技术网

Arm 使用jtag编程sam4e时如何防止启动区域

Arm 使用jtag编程sam4e时如何防止启动区域,arm,bootloader,iar,Arm,Bootloader,Iar,我正在使用at91sam4e16e和引导加载程序。启动区域定义为0x400000,应用程序区域定义为0x420000以后 我已将引导加载程序代码下载到该区域,并使用0x420000链接地址编译了应用程序代码。现在我想使用Jtag将该应用程序下载到0x420000,但当我下载它时,所有内存都被擦除,只剩下应用程序 在avr中,我可以在调试器选项中阻止启动区域;如何在sam4e中实现同样的功能 问候,, shreyas.转到项目选项 在Debugger->Images中,您可以下载额外的图像 请注意

我正在使用at91sam4e16e和引导加载程序。启动区域定义为0x400000,应用程序区域定义为0x420000以后

我已将引导加载程序代码下载到该区域,并使用0x420000链接地址编译了应用程序代码。现在我想使用Jtag将该应用程序下载到0x420000,但当我下载它时,所有内存都被擦除,只剩下应用程序

在avr中,我可以在调试器选项中阻止启动区域;如何在sam4e中实现同样的功能

问候,, shreyas.

转到项目选项

Debugger->Images
中,您可以下载额外的图像

请注意,我只在启用了
Debug info only
-选项的情况下使用了此选项,但我已将引导加载程序与我的应用程序捆绑在一起,因此情况有所不同。(您可以在
Linker->Input
选项卡中绑定引导加载程序。)

我还有一个问题,因为应用程序不在正常的起始位置,所以我必须手动初始化程序计数器和堆栈指针寄存器。您可以通过在
Debugger->Setup
中定义宏文件来完成此操作

宏文件可能如下所示(请注意,这是针对不同的MCU的,因此您可能有不同的寄存器/地址):

此宏文件在使用调试器重置时跳过引导加载程序,但您也可以使用不同的地址创建宏文件,该文件在重置时进入引导加载程序

编辑:绑定引导加载程序:

我已经有一段时间没有这样做了,所以希望我能记住一切

您需要将引导加载程序
.bin
文件添加到
链接器->输入->原始二进制图像中。还定义符号
引导加载程序
,以及节
.bootloader
。(我认为对齐也需要指定,即使使用绝对位置。)

将您的
bootloader
符号添加到上面的
Keep symbols:
框中。这应该确保始终包含引导加载程序

在链接器文件中,添加行

place at address mem:0x00000000 { section .bootloader };

将引导加载程序放置在特定地址(更改地址以匹配引导加载程序地址)。

我可以使用调试器->设置宏更改启动位置。但是使用linker->input对生成的二进制文件没有任何影响。为什么会这样?
place at address mem:0x00000000 { section .bootloader };