【问题标题】:Changing program start address更改程序起始地址
【发布时间】:2017-05-20 11:33:42
【问题描述】:

我已经为keil uvision 5 导出了mbed_blinky 项目,我想为另一个板子开发一个程序,所以我需要更改程序的起始地址。我在目标窗口的选项中更改了 IROM1 中的开始,但它不起作用。它必须在某个地方定义,但我找不到它。有人可以帮忙吗?

我的目标是 LPC1768

【问题讨论】:

  • 起始地址应该是您的问题中最少的,目标之间的外围设备可能不同是吗?尤其是如果他们有不同的 rom 位置。
  • 是的,但它只是一个没有任何模块的头板。有什么问题?
  • 另一个具有相同处理器的板那么为什么起始地址会改变?如果 ti 是具有不同处理器的另一块板,则外设和/或内核或两者都不同,使用不同的起始地址会引发一个标志,表明这一点。您为什么认为需要更改起始地址?让我们从那里开始。
  • 处理器是一样的,我的板子有引导加载程序,所以必须从0x2000开始编程。
  • 并且引导加载程序不是二进制文件的一部分,也不是您可以复制的东西?那么应该在某个地方有一个链接器脚本,或者您可以修补二进制文件以分支到 0x2000(如果您的 0x2000 入口点有一个,则添加 0x2000 字节,其中前 N 个字节是向量表。

标签: arm embedded mbed


【解决方案1】:

在 uVision 中,链接器脚本(或 Keil 所指的分散文件)要么从您尝试更改的目标设置生成,要么可以在链接器选项卡上使用“分散文件 em>"; mbed 导出可能不会生成与 uVision 目标选项卡 兼容的分散文件,或者需要 uVision 的基本目标对话框中不可用的设置,因此使用自定义分散文件也是如此。

linker tab 上,检查“使用目标对话框中的内存布局”是否被选中。如果您想使用“Target”选项卡设置,则必须选中它,否则使用链接器选项卡上“Scatter file”设置中的文件,您将需要编辑它,并检查链接器选项卡上的所有其他设置是否适合您的目标..

【讨论】:

    【解决方案2】:

    我在 Eclipse/GCC 中使用过 mbed,对 Keil 不太熟悉。如果您想更改目标板/微型板,最好从在线编译器或 mbed-cli 工具中选择新目标进行新的导出。起始地址只是新目标必须更改的许多事情之一。为新目标编译所需的文件都在 mbed-os 文件夹内的光盘上,但是当您导出原始项目时,它们有助于从项目项中排除不必要的文件。文件在光盘上,只是不是 Keil 项目设置的一部分。您还必须在选项选项卡上编辑设备,并且 C/C++ 包含路径和编译器标志,因为它们与特定目标相关。然后您需要为新目标找到正确的链接器文件和启动文件。同样,为新目标导出新项目更容易。

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 2011-01-04
      • 2017-11-17
      • 2015-03-22
      • 2018-08-02
      相关资源
      最近更新 更多