我正在构建一个在 NXP LPC2478 上运行的 uClinux 系统。该芯片具有 512k 板载快速闪存,可以直接执行代码。我想从常规的外部 SDRAM 加载和运行用户应用程序。但是我有一个特殊的图形库,我想预先加载它以在板载闪存之外执行。
有没有办法编译图形库以在内存中的固定位置(闪存)运行,然后编译/链接使用它的应用程序以将其对该库的所有引用固定到闪存中的适当位置?
如果我必须编写一个手动进行修复的自定义应用程序加载器,我会这样做。
我正在构建一个在 NXP LPC2478 上运行的 uClinux 系统。该芯片具有 512k 板载快速闪存,可以直接执行代码。我想从常规的外部 SDRAM 加载和运行用户应用程序。但是我有一个特殊的图形库,我想预先加载它以在板载闪存之外执行。
有没有办法编译图形库以在内存中的固定位置(闪存)运行,然后编译/链接使用它的应用程序以将其对该库的所有引用固定到闪存中的适当位置?
如果我必须编写一个手动进行修复的自定义应用程序加载器,我会这样做。
我假设您使用的是 GCC。此外,我相信您将 uCLinux、图形库和您的应用程序连接在一个阶段以生成可执行文件。所有组件的链接由链接描述文件(ld 文件)控制。要做你想做的事,你需要编辑 ld 文件并在启动代码中进行正确的初始化。
在链接描述文件中,您应该将数据部分放在外部 RAM 中。然后为图形库创建一个特殊的部分并将其放入闪存中。创建节时,您可以指示它将包含哪些目标文件。在您的启动代码中,您需要将数据部分从闪存复制到 RAM。链接器将负责将 RAM 中的应用程序与闪存中的图形库链接起来。
事情通常是这样完成的。根据您对工具链和库的要求,可能涉及更多步骤。