更改地址 STM32F722 程序

Posted

技术标签:

【中文标题】更改地址 STM32F722 程序【英文标题】:Change Address STM32F722 Program 【发布时间】:2021-05-11 19:22:19 【问题描述】:

我对@9​​87654321@编程非常缺乏经验,想咨询ST-Link-Utility的固件安装问题。 我有一个必须用自定义固件刷新的飞行控制器。 开发者提供的固件现在编译为十六进制文件,起始地址为0x8008000。 我需要将它的起始地址更改为0x2000000

在不修改 hex 文件的源代码的情况下,是否有可能做到这一点? 在这种情况下我首先需要做什么?

【问题讨论】:

0x8'000'000 是闪存的开始。开发人员将其放置为 32 KiB 偏移量,可能是因为他有一些引导加载程序机制。 0x20'000'000 是 RAM 的开始,但你不能在那里永久拥有任何数据。你提到的0x2'000'000是一个无效的地址。 这个改变起始地址的要求是从哪里来的?开发者? 是的,来自开发者 也许你可以分享这个自定义固件的开发者的网站,以便我们看看? 【参考方案1】:

开发者提供的固件现在编译为十六进制文件,起始地址为 0x8008000。我需要将它的起始地址更改为 0x2000000。

如果不重新编译/链接,这是不可能的。

例如,控制器必须知道在哪里可以找到向量表。并且位置是在十六进制的某个地方定义的。

【讨论】:

【参考方案2】:

我希望我明白你所说的。 使用ST-Link-Utility,您可以通过这种方式轻松更改Flash Address 的偏移量:

检查并告诉我。

【讨论】:

感谢您的回答。在这种情况下,我需要将地址 0x8000000 的内容移动到 0x2000000(对不起,但我不知道这在 STM32 编程中是否可行) 告诉我。你有一个Hex 文件和一个 STM32 微控制器?教程说你必须从0x02000000地址编程STM32 是的,类似的。 看我提到的图片和红色咏叹调。之后,您打开 HEX 文件,您可以轻松更改 Address 字段的值。 我认为您的地址 (0x02000000) 无效。你必须确定这一点。

以上是关于更改地址 STM32F722 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有 SPL 的 STM32F3 代码移植到 STM32F7

stm32f427usb无法发送

STM32F7:ADC DMA 传输只工作一次

STM32F7 定时器触发定时器

stm32f7 rtems4.11.3初体验

stm32f7 时钟