加载 SAM-BA 的程序的入口地址是啥?

Posted

技术标签:

【中文标题】加载 SAM-BA 的程序的入口地址是啥?【英文标题】:What is the entry address for a program loaded with SAM-BA?加载 SAM-BA 的程序的入口地址是什么? 【发布时间】:2013-11-26 16:38:09 【问题描述】:

在过去的几天里,我发现 SAM-BA 不仅可以写/读 flash/ram,还可以用作引导加载程序。我的问题是,如何知道将程序放在哪里以便 SAM-BA 可以在初始启动序列后运行它?我在作为文档提供的任何 pdf 中都找不到该信息。

我找到了 Adam Pierce 的一篇博文,并获得了一个链接器脚本,该脚本将程序与 RAM 链接起来。现在 RAM 内存位于 0x00200000,但入口点链接在 0x00202000 - 并解释说我们需要为 SAM-BA 留下“一些”内存。

为什么是 0x2000 字节?我怎样才能确定它是否是正确的地址,我在哪里可以找到一些信息来确认这一点?

【问题讨论】:

起始地址将是特定于设备的,您使用的是什么设备?大多数设备都有相关的设备特定 SAM-BA 应用说明。 我正在使用 Atmel 的 AT91SAM7X256。我尝试在几个地方查找它,但无济于事。我在 uC 数据表和 SAM-BA 用户指南中都找不到任何信息。我将不胜感激有关在哪里可以找到此信息的任何提示。 我在 AT91SAM CAN Bootloader User Notes 中找到了一个简短的说明:SAM-BA Boot4CAN 将自身复制到 SRAM 中,并将内部 SRAM 块用于变量和堆栈。因此,用户区从地址 0x202_000 开始。就是这样。 【参考方案1】:

在the datasheet.的第21节

21.5 硬件和软件限制

SAM-BA 引导将自身复制到 SRAM 中,并使用一块内部 SRAM 存储变量和堆栈。 用户代码的剩余可用大小为 122880 字节 SAM7x512,SAM7X256 为 57344 字节,SAM7X128 为 24576 字节。

该文档中的表 21-4 显示所有三个设备的用户区起始地址都是 0x202000。

【讨论】:

谢谢,我一定错过了。

以上是关于加载 SAM-BA 的程序的入口地址是啥?的主要内容,如果未能解决你的问题,请参考以下文章

单片机C程序的入口程序是啥?

Windows 程序启动性能优化(先载入EXE,后载入DLL,只取有限的代码载入内存,将CPU的IP指向程序的入口点)

在调用程序集中的任何方法之前,CLR 调用的最早入口点是啥?

java 这个方法的入口参数是啥意思?

“PHP中扩展库”是啥意思?如何加载?

单片机程序接口是啥?