如何更改闪存的起始地址?

2023-11-24

我正在使用 STM32F746ZG 和 FreeRTOS。 Flash的起始地址是0x08000000。但我想把它改成0x08040000。我通过谷歌搜索了这个问题,但没有找到解决方案。

我更改了链接器脚本,如下所示。

MEMORY
{
RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 320K
/* FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 1024K */
FLASH (rx)      : ORIGIN = 0x8040000, LENGTH = 768K
}

如果我只更改它并运行调试器,就会出现问题。 如果我将 VECT_TAB_OFFSET 从 0x00 更改为 0x4000,它就可以正常工作。

/* #define VECT_TAB_SRAM */
#define VECT_TAB_OFFSET  0x40000  /* 0x00 */

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; 

但如果我不使用调试器,它就不起作用。 这意味着它仅在使用 ST-Linker 时有效。

如果您知道解决方案,请告诉我。 提前感谢您的回复。


引导地址可以在选项字节中设置。

您可以以 16k 为增量设置闪存中的任何地址。选项字节区域中有两个 16 位寄存器,一个在复位时引导引脚为低电平时使用,另一个在引脚为高电平时使用。写入所需地址右移 14 位,即除以 16384。

启动自0x08040000, write 0x2010进入寄存器中描述的选项字节编程参考手册的章节。

enter image description here

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

如何更改闪存的起始地址? 的相关文章

  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • 139-基于stm32单片机老人居家监护报警系统Proteus仿真+源程序

    资料编号 139 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 MQ4传感器 电位器模拟 MQ2传感器 电位器模拟 蜂鸣器 电机 制作一个基于stm32单片机老人居家监护报警系统Proteus仿真 2 通过MQ2传
  • rt-thread studio中新建5.02版本报错

    先吐槽一下 rt thread studio出现BUG真多 好多时间都是在找BUG 但里面用好多控件还是挺好用的 真是又爱又恨 所以一般使用功能不多的话还是用keil多一点 创建5 02版本工程之后直接进行编译 直接会报下面这个错误 资源
  • HAL库学习

    CMSIS简介 CMSIS Cortex Microcontroller Software Interface Standard 微控制器软件接口标准 由ARM和其合作的芯片厂商 ST NXP 软件工具厂商 KEIL IAR 共同制定的标准
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • [屏驱相关]【SWM166-SPI-Y1.28C1测评】+ 有点惊艳的开箱

    耳闻华芯微特许久了 看到论坛得评测活动赶紧上了末班车 毕竟对有屏幕得板子也是很喜欢得 京东快递小哥客客气气 微笑着把快递给了我 好评 直接拆了包 在此之前没看过视频号 所以这个圆盘盘得模具还是有点惊喜的 正面照如下 开机有灯光秀 还有动画
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 最终启动顺序错误 - STM32L476 的 Eclipse System Workbench 调试

    我正在尝试调试和运行 STM32L476 的简单汇编代码 我已经设置了 Eclipse Oxygen 在 Eclipse 中安装了最新版本的 System Workbench 插件并安装了 ST Link 驱动程序 IDE 成功构建了程序
  • STM32 暂停调试器时冻结外设

    当到达断点或用户暂停代码执行时 调试器可以停止 Cortex 中代码的执行 但是 当皮质停止在暂停状态下执行代码时 调试器是否会冻结其他外设 例如 DMA UART 和定时器 您只能保留时间 r 取决于外围设备 我在进入主函数时调用以下代码
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • stm32中如何在同一个回调函数中从不同的uart获取数据

    我使用的是stm32f407控制器 我正在使用 2 个 uart 2 3 我第一次被中断 但第二次我在 uart 2 上被中断 我在 uart3 上没有被中断 下面是我的回调函数 void HAL UART RxCpltCallback U

随机推荐

  • 对整数的多维向量进行排序?

    不管你信不信 当我搜索这个时 我想出了什么 如何对多维数据进行排序vector of int是在其中一根 柱子 旁边吗 提前谢谢了 C res mysql perform query conn SELECT column1 column2
  • 无法使用 rbenv 安装 RMagick

    我在 Ubuntu 10 04 服务器上使用 rbenv 并且已经安装了 ImageMagick 但无法成功安装 RMagick 我收到以下错误消息 Can t install RMagick 2 13 1 Can t find Magic
  • Microsoft Edge 中的集成 Windows 身份验证

    我正在尝试在 Edge 上实施集成 Windows 身份验证 但它总是提示我输入凭据 而集成 Windows 身份验证适用于 IE Chrome 和 Firefox 我尝试在安全选项中将该站点添加到本地 Intranet 站点并启用自动登录
  • 如何等待所有任务完成而不阻塞 UI 线程?

    在下面的代码中 我在处理任务之前禁用按钮 并希望在所有任务完成后启用它 List
  • 是否有经过充分研究的优化来找到穿过图形中每个加权边的最短路径?

    我一直在四处寻找 但似乎每个人最喜欢的问题都有一个稍微不同的情况 TSP 哈密顿量 欧拉等 我有一个图 由 V 顶点 和 E 边 表示 其中每条边是无向的 并且有一定的遍历成本 我想以最小的成本遍历每一条边 并可能重复 直观上 这个问题感觉
  • 在android中显示TextView而不是ImageView

    我想在图像视图上显示文本 我按照 Alesqui 的建议这样做 Android 文字覆盖图像 The preview in Android studio looks fine 但我的实际结果看起来像这样 上面有不必要的文本 我必须在执行期间
  • 在 Fortran 95 中将任意浮点字符串转换为实数

    在 fortran 中是否有任何简单的方法可以将任意浮点字符串转换为实数 想想类似的事情strtod 问题在于READ声明是所有浮点格式编辑描述符都需要显式宽度 到目前为止 我做出的最好的解决方法是这样的 pure function str
  • 有没有办法确定用户加入了哪些多用户会议 (MUCH)?

    我想知道是否有办法查询 XMPP 服务器 传递用户 JID 以找出该用户当前所在的聊天室 如果没有 我们可以查询 jabber 服务器来获取所有活动聊天室的列表吗 顺便说一句 我们正在运行支持多用户聊天的 ejabber 使用 java 库
  • 为什么我应该使用 Deque 而不是 Stack?

    我需要一个Stack我的用例的数据结构 我应该能够将项目推送到数据结构中 并且我只想从堆栈中检索最后一个项目 这堆栈的 JavaDoc says 一组更完整且一致的 LIFO 堆栈操作是 由 Deque 接口及其实现提供 应该 优先使用此类
  • 2x2 按钮网格布局

    我正在尝试创建一个包含 2x2 按钮网格 总共 4 个 的布局 我有以下内容 但它只在左上角创建按钮网格 我希望按钮网格填满整个屏幕
  • 设置输入框背景

    我必须创建一个具有以下背景的输入框 到目前为止 在我的代码中 我有下面的代码 但它没有显示 gt 执行此操作的正确程序是什么 我还必须制作此按钮的几个变体 如下所示 按钮黑色区域上的十字 我只是要使用 span 标记一个类并将图形设置为该类
  • 在 C++ 中从向量复制到向量

    我创建一个向量 A 并想使用以下方法复制到另一个类中的向量 B 这是正确的方法吗 向量A可能会被破坏 我在谷歌搜索 但没有找到好的解决方案和有意义的解释 感谢大家 void StateInit vector
  • Android 上的 OpenId

    我想让我的用户能够使用他们的 OpenId 登录我的 Android 应用程序 有一个像 StackOverflow 一样的文本字段 并要求用户在那里输入他的 OpenId 我环顾四周 但找不到任何允许我在 Android 上实现客户端 O
  • Laravel 5 Flysystem - 从远程磁盘下载文件

    我正在使用 Flysystem 在 Rackspace 上存储站点的文件 上传没问题 但无法弄清楚如何开始下载文件 这是我尝试过的 Storage disk rackspace return response gt download fil
  • 为什么追加documentFragment时需要使用cloneNode?

    我一直在考虑在 Backbone js 应用程序中使用 documentFragments 并且想知道为什么我看到在将 documentFragment 附加到父 DOM 元素时使用 cloneNode 的示例 可以看一个例子here 如果
  • jsr 关键字是什么意思?

    我正在查看一些 Java 代码 并且注意到以下内容 if foo bar baz qux i 0 jsr 433 javac 被它噎住了 说这不是一个语句 并且关键字后面应该有一个分号jsr 我做了一些谷歌搜索 我发现一些包含相同内容的代码
  • Heroku - 无法通过 Play Framework 应用程序设置 postgres 数据库?

    我正在尝试通过 Play Framework 应用程序在 heroku 上设置 postgres 数据库 但我不断收到有关 DATABASE URL 的错误 堆栈跟踪 gt Heroku receiving push gt Play 2 0
  • Flask 蓝图中的 render_template 使用其他蓝图的模板

    我有一个带有蓝图的 Flask 应用程序 每个蓝图都提供了一些模板 当我尝试渲染时index html第二个蓝图的模板 将渲染第一个蓝图的模板 为什么 blueprint2 会覆盖 blueprint1 的模板 如何渲染每个蓝图的模板 ap
  • Cordova Phonegap IOS 应用程序设置。捆绑可能吗?

    所以我是移动开发的新手 但我即将使用 HTML CSS JS 和 Cordova PhoneGap 3 完成我的第一个 IOS 应用程序 我试图允许用户通过 iPhone 的本机 设置 应用程序提供文本输入 灰色齿轮图标 我的应用程序将在
  • 如何更改闪存的起始地址?

    我正在使用 STM32F746ZG 和 FreeRTOS Flash的起始地址是0x08000000 但我想把它改成0x08040000 我通过谷歌搜索了这个问题 但没有找到解决方案 我更改了链接器脚本 如下所示 MEMORY RAM xr