[应用相关]

外部Flash加载器链接器脚本文件

[复制链接]
779|10
手机看帖
扫描二维码
随时随地手机跟帖
laocuo1142|  楼主 | 2021-11-11 09:25 | 显示全部楼层 |阅读模式
我试图为我的基于STM32F746uC的板做一个自定义的外部闪存加载器,我从这个链接中找到了一些为此目的的模板,它属于这个YouTube链接上的ST研讨会。所以,当我挖掘相应的文件时,我看到在一个名为Linker的链接器脚本文件中。RAM内存区域是从基本地址0x20000004定义的,尽管我知道STM32uc中的RAM内存区域从地址0x20000000开始:
33569618c70c9e6e6f.png
我搜索了这个链接中存在的许多其他模板文件,它们也使用相同的方式处理RAM内存区域基地址。

因此,问题是为什么我们必须从0x20000004中定义RAM内存地址,以便在外部闪存加载器算法中存储,而不是从0x20000000中存储。有谁能帮我解释一下原因,并告诉我如果我们这样做会发生什么:
78586618c70e6d358c.png
而不是以前的一个,可能会发生什么错误?

使用特权

评论回复
flycamelaaa| | 2021-11-11 09:26 | 显示全部楼层
你想得太多了,并且错误地应用了错误的知识。

加载程序希望通过链接器中放置的符号来确定代码入口点。ELF(。STLDR)文件

而不是以前的一个,可能会发生哪些错误?

链接器将将代码构建/绑定到错误的位置,加载器可能会立即失败,或出现一些潜在的故障。

使用特权

评论回复
laocuo1142|  楼主 | 2021-11-11 09:27 | 显示全部楼层
flycamelaaa 发表于 2021-11-11 09:26
你想得太多了,并且错误地应用了错误的知识。

加载程序希望通过链接器中放置的符号来确定代码入口点。ELF( ...

你所说的这些工具是什么意思?
正如我从你的回答中了解到的,你会说,当像ST-Link实用工具这样的工具试图对外部闪存采取一些操作时,所以它期望外部闪存加载器算法被放置在RAM的某个地方,从0x200000004开始。
对吧?

使用特权

评论回复
flycamelaaa| | 2021-11-11 09:27 | 显示全部楼层
laocuo1142 发表于 2021-11-11 09:27
你所说的这些工具是什么意思?
正如我从你的回答中了解到的,你会说,当像ST-Link实用工具这样的工具试图 ...

工具:STM32立方体编程程序和ST-LINK实用程序。
此加载程序代码被注入到RAM中,并通过调试接口调用/运行,以与附加的外部内存设备交互。
RAM中的其他区域用于在读写时处理数据,并作为加载器代码的堆栈空间。

使用特权

评论回复
flycamelaaa| | 2021-11-11 09:28 | 显示全部楼层
更广泛地使用类似的JTAG/SWD工具,如ST-LINK、J-LINK和U-LINK,都使用类似的方法在目标上运行加载器代码。

我已经发布了大量针对不同STM32、内存设备和引脚组合的预构建的外部加载器。

使用特权

评论回复
heimaojingzhang| | 2021-12-6 19:23 | 显示全部楼层
如何编辑脚本文件呢

使用特权

评论回复
keaibukelian| | 2021-12-6 19:25 | 显示全部楼层
正好可以学习一下

使用特权

评论回复
labasi| | 2021-12-6 19:28 | 显示全部楼层
这是什么编程器啊

使用特权

评论回复
tpgf| | 2021-12-6 19:29 | 显示全部楼层
在哪里可以买到啊

使用特权

评论回复
paotangsan| | 2021-12-6 19:31 | 显示全部楼层
现在可以正常供货吗

使用特权

评论回复
renzheshengui| | 2021-12-6 19:34 | 显示全部楼层
需要多加器件吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

960

主题

3929

帖子

10

粉丝