Atmel SAM3X8E 双组切换用于启动不同的行为

2023-12-05

我目前正在使用 Arduino Due 板,该板嵌入了 Atmel SAM3X8E 处理器。我使用 Atmel Studio(版本 7.0.1645)和提供的 Atmel 软件框架(版本 3.28.1)对其进行编程。 在 SAM 上运行的程序的目的是获得重新编程功能。因此,程序从主机 PC 获取映像,将其逐块闪存到未使用的闪存组中并验证映像。所有这些都工作正常,但我遇到了与这篇文章相同的问题(Atmel SAM3X 双组切换不起作用).

Atmel SAM3X8E 有两个 256 KB 闪存组:Flash0 和 Flash1。我的应用程序很容易适合 Flash0 并将接收到的图像编程到 Flash1。我的想法是利用 SAM3X 的功能从其他闪存组启动(默认为 Flash0)。 SAM3X 的数据表第 35 页指出,GPNVM 位不仅可用于选择启动存储器(ROM 或闪存),还可用于选择启动存储体(Flash0 或 Flash1)。如果设置了 GPNVM2,μC 将从 Flash1 启动。这是通过重新映射内存布局来实现的。因此,如果设置了 GPNVM2,则 Flash1 会映射到地址 0x0008_0000(而 Flash1 和 Flash0 是连续的)。如果 GPNVM2 被清零,Flash0 被映射到地址 0x0008_0000(现在 Flash0 和 Flash1 是连续的)。

我所做的是在重置处理器之前操作 GPNVM2 位,但它不起作用(内存未正确重新映射)。 我还尝试了 Atmel Studio 的选项。 Atmel Studio 可以使用“项目选项”->“工具”->“程序设置”将应用程序编程到 Bank0 或 Bank1。我尝试使用 Bank1 的这些设置对我的应用程序进行编程。仅当选中“覆盖向量表偏移寄存器 (exception_table)”复选框并且使用“开始调试”对器件进行编程时,才有可能实现这一点。如果设备使用“启动而不调试”进行编程,则它根本不会启动,要启动它(请记住应用程序已闪存到 Bank1,如果重新映射成功,Bank1 应位于地址 0x0008_0000,其中最初 Bank0 映射到)我必须手动更改 GPNVM 位(使用“工具”->“设备编程”工具)以“从 Bank0 启动”。然后就成功了。

所描述的行为告诉我,我一定错过了对某些寄存器的操作。显然“覆盖向量表偏移寄存器(exception_table)”很重要,因此我还将“向量偏移表寄存器(VTOR)”设置为Flash1的起始地址,但这也没有帮助。我感觉我缺少一些必须调用/操作的函数或寄存器。

要重新编程处理器,通常需要运行某种引导加载程序,我希望避免使用存储体切换机制。有人对使用 ASF 功能进行组切换或在 SAM3X 上进行组切换有任何经验吗?

先感谢您!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Atmel SAM3X8E 双组切换用于启动不同的行为 的相关文章

  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 尝试使用 qemu-arm 运行arm二进制文件时如何解决“加载共享库时出错”?

    我正在运行 Linux Mint 14 并安装了 qemu qemu user 和 gnueabi 工具链 我编译了 test carm linux gnueabi gcc test c o test 当我尝试跑步时qemu arm usr
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • 如何使用 Neon SIMD 将无符号字符转换为有符号整数

    如何转换变量的数据类型uint8 t to int32 t使用霓虹灯 我找不到执行此操作的任何内在因素 假设您想要将 16 x 8 位整数的向量转换为 4 个 4 x 32 位整数的向量 您可以通过首先解压缩为 16 位 然后再次解压缩为
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • nasm/ld“重定位被截断以适合:R_386_16”

    集会 BITS 16 global start start mov ax 0x07C0 mov ds ax mov si hw call print string jmp print string mov ah 0x0E char lods
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 将 C 函数与 ARM 汇编结合使用

    我见过人们在代码中使用 C 库中的 printf 的示例 如下所示 data balign 4 hello asciz Hello n text global main func main main ldr r0 hello msg bl
  • 了解带有 pc 偏移的 Cortex-M 组件 LDR

    我正在查看这段 C 代码的反汇编代码 define GPIO PORTF DATA R volatile unsigned long 0x400253FC int main void Initialization code while 1
  • 在 ARM Cortex-M3 中使用 newlib 的 malloc

    我正在为 ARM Cortex M3 NXP 的 LCP17xx 创建代码 到目前为止我一直在使用静态内存 一切都运行良好 我尝试添加动态内存支持 但是一旦调用 malloc 系统就会卡住 我正在使用 gcc 为 Arm Bare Meta
  • 什么是 .axf 文件?

    我是arm架构的新手 我从事嵌入式软件工作 并试图了解我的项目二进制文件的调试文件夹中存在的 axf文件 发现它是链接器在构建过程中生成的arm可执行格式文件 用于调试崩溃 所以很明显它包含了一些调试信息 但不清楚具体是什么信息 而且deb

随机推荐

  • UIWebView 仍然存在于 Google 移动广告中

    我正在尝试为 IOS 构建 但上传到 ITuneconnect 后收到此消息 ITMS 90809 已弃用的 API 使用 不再接受使用 UIWebView 的新应用程序 相反 使用 WKWebView 可以提高安全性和可靠性 了解更多 h
  • Google App Engine 中的进度条

    我有一个 Google App Engine 应用程序 它对远程 API 执行大约 30 50 次调用 每次调用大约需要一秒钟 因此整个操作很容易需要一分钟 目前 我在站点的 post 函数内循环执行此操作 因此在整个操作完成之前不会打印响
  • Visual Studio 2010 中缺少 asp.net Web 应用程序模板

    我安装了 Visual Studio 2010 终极版 当我单击 新建项目 gt Visual Basic 或 C gt Web 时 我得到的唯一选项是 AjaxControlExtender AjaxServerControl 和 ASP
  • Java“虚拟机”与Python“解释器”的说法?

    似乎很少读到 Python 虚拟机 而在 Java 中却一直使用 虚拟机 两者都解释字节码 为什么称一个为虚拟机而另一个为解释器 在本文中 虚拟机 指的是进程虚拟机 而不是指 系统虚拟机 例如 Qemu 或 Virtualbox 进程虚拟机
  • 在 HTML 中为 target="_blank" 打开新窗口

    a href facebook com sharer target blank Share this a 当用户单击它时 如何在新窗口中使其具有一定的宽度和高度 在firefox中 当前代码仅打开一个新选项卡 而不是新窗口 要在包含尺寸和所
  • 如何在 ibm worklight 中打开本机相机

    Ibm Worklight 有调用本机应用程序的示例 但它是在 worklight 本身中创建的 例如 此示例中的 module 09 1 Android CombiningNativeAndWebPages 在 android 文件夹本身
  • 是否可以从另一个容器启动已停止的容器

    有两个容器A和B 一旦容器A启动 就会执行一个进程 然后容器就会停止 容器 B 只是一个 Web 应用程序 比如expressjs 是否可以从容器 B 启动 A 可以授予容器对 docker 的访问权限 以便它可以在主机上生成其他容器 您可
  • awk 命令接受两个变量作为参数并返回一个值

    我有一个有 50 行的文件 每行由三列组成 前两列是变量 这将作为参数传递以返回第三列的值 对于前 command file txt 是文件 它包含 A B 10 C D 20 E F 30 G H 50 I J 70 我有一个包含以下命令
  • Android 共享首选项和数组

    我创建了一个天气小部件 我将其配置存储在SharedPreferences 小部件由服务更新 我将天气信息和天气预报一起保存在一个数组中 晚上手机关机后 我发现数组值消失了 也许系统暂停了 服务 有没有办法将数组存储在SharePrefer
  • 如何使用 NSPredicate 判断 Int 列表是否包含 Int 数字?

    我有一个 Realm 模型Person谁拥有标签属性 let tags List
  • C 编程中的输入重定向?

    我试图将一个名为 data1 的数据文件重定向到我的程序中 但我不断收到segmentation fault 当我尝试时 w data1然后它会正确读取它 但是当我这样做时 w lt data1然后弹出错误 我必须使用第二种方式来完成我的作
  • 将 java.util.Date 转换为 java.sql.Timestamp 结果为错误值

    服务器端代码 服务器时区是 UTC Date aDate new Date java sql Timestamp aTimestamp new java sql Timestamp aDate getTime 客户端 移动应用程序 时区 G
  • IIS 7.5 无法使用代码隐藏文件加载自定义 HTTP 处理程序

    在过去的 2 天里 我试图让我的自定义 HTTP 处理程序正常工作 但没有结果 我收到以下错误 无法加载类型 AlarmHandler 描述 未处理 执行当前 Web 请求期间发生异常 请查看堆栈跟踪以获取有关错误和的更多信息 它起源于代码
  • 如何为 php 启用 mysqlnd?

    我安装并运行了 PHP 版本 5 3 17 我想切换到 mysqlnd 在 phpinfo 中 mysqlnd 根本不存在 我读到为了设置它 您需要更新 configure命令 configure with mysql mysqlnd wi
  • 更改焦点上组合框的边框颜色

    我有一个习惯ComboBox 我想给一个定制BorderColor to the ComboBox 当它聚焦时 为此 我使用以下代码 Graphics g Graphics FromHwnd Handle Rectangle bounds
  • 在 C++ 中,从函数返回向量仍然是不好的做法吗?

    简洁版本 在许多编程语言中 返回大型对象 例如向量 数组 是很常见的 如果类有移动构造函数 这种风格现在在 C 0x 中是否可以接受 或者 C 程序员是否认为它很奇怪 丑陋 令人厌恶 长版 在 C 0x 中 这仍然被认为是不好的形式吗 st
  • 为什么电子邮件客户端需要 SMTP 中继服务器?有必要吗?

    在设置我的移动电子邮件客户端时 我通常需要输入 SMTP 中继服务器域名 但为什么我的电子邮件客户端需要 SMTP 中继服务器呢 我认为它可以通过查找 DNS MX 记录 直接与目标电子邮件地址所在域的 smtpd 服务器 例如 postf
  • 在 MySQL 数据库的每个表的字段中搜索文本

    我想在 MySQL 数据库的所有表的所有字段中搜索给定的字符串 可能使用以下语法 SELECT FROM WHERE LIKE stuff 可以做这样的事情吗 你可以做一个SQLDump数据库 及其数据 的名称 然后搜索该文件
  • Python 中释放内存

    我有一些关于以下示例中内存使用情况的相关问题 如果我在解释器中运行 foo bar for in xrange 10000000 我的机器上使用的实际内存达到80 9mb 然后我 del foo 真实记忆力下降 但仅限于30 4mb 解释器
  • Atmel SAM3X8E 双组切换用于启动不同的行为

    我目前正在使用 Arduino Due 板 该板嵌入了 Atmel SAM3X8E 处理器 我使用 Atmel Studio 版本 7 0 1645 和提供的 Atmel 软件框架 版本 3 28 1 对其进行编程 在 SAM 上运行的程序