Arm 更改程序开始地址

Arm 更改程序开始地址,arm,embedded,mbed,Arm,Embedded,Mbed,我已经为keil uvision 5导出了mbed_blinky项目,我想为另一块板开发一个程序,所以我需要更改程序的起始地址。我在目标窗口的选项中更改了IROM1中的开始,但它不起作用。它必须在某个地方定义,但我找不到它。有人能帮忙吗 我的目标是LPC1768我在Eclipse/GCC中使用了mbed,对Keil不太熟悉。如果要更改目标板/微型板,最好在选择新目标的情况下,从联机编译器或mbed cli工具执行新导出。对于一个新的目标,开始地址只是必须更改的许多事情之一。为新目标编译所需的文件

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


我的目标是LPC1768

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

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

在上,检查是否选中“从目标使用内存布局”对话框。如果要使用“目标”选项卡设置,必须选中该选项,否则将使用链接器选项卡上“分散文件”设置中的文件,您需要编辑该文件,并检查链接器选项卡上的所有其他设置是否适合您的目标


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