Arm 正在执行闪存中预加载的代码

Arm 正在执行闪存中预加载的代码,arm,embedded,flash-memory,uclinux,Arm,Embedded,Flash Memory,Uclinux,我正在构建一个在NXP LPC2478上运行的uClinux系统。该芯片具有512k板载快速闪存,可直接执行代码。我想用常规外部SDRAM加载并运行用户应用程序。但我有一个特殊的图形库,我想预加载以执行板外闪存 有没有办法编译图形库,使其在内存中的固定位置(闪存)上运行,然后编译/链接使用它的应用程序,使其对该库的所有引用固定到闪存中的适当位置 如果我必须编写一个自定义应用程序加载程序来手动进行修复,我会这样做。我假设您使用的是GCC。另外,我相信您正在一个阶段中链接uCLinux、图形库和应用

我正在构建一个在NXP LPC2478上运行的uClinux系统。该芯片具有512k板载快速闪存,可直接执行代码。我想用常规外部SDRAM加载并运行用户应用程序。但我有一个特殊的图形库,我想预加载以执行板外闪存

有没有办法编译图形库,使其在内存中的固定位置(闪存)上运行,然后编译/链接使用它的应用程序,使其对该库的所有引用固定到闪存中的适当位置


如果我必须编写一个自定义应用程序加载程序来手动进行修复,我会这样做。

我假设您使用的是GCC。另外,我相信您正在一个阶段中链接uCLinux、图形库和应用程序,以生成一个可执行文件。所有组件的链接都由链接器脚本(ld文件)控制。要执行所需操作,您需要编辑ld文件,并在启动代码中执行适当的初始化

在链接器脚本中,您应该将数据部分放入外部RAM中。然后为图形库创建一个特殊部分,并将其放置在flash中。创建节时,可以指示将包含哪些对象文件。在启动代码中,需要将数据部分从闪存复制到RAM。链接器将负责将RAM中的应用程序链接到flash中的图形库


事情通常是这样做的。根据您的工具链和库的要求,可能会涉及更多步骤。

是的。是GCC。我会研究一下你的建议。我想应该是沿着这些路线。对于图形库部分,LMA和VMA是否相同,并且在flash中指向位置?