LPC1788 - Bootloader和共享库

时间:2017-01-24 10:37:32

标签: c linker embedded cortex-m3

我正在为我的自定义板(LPC1788)开发嵌入式软件。我的目标是提高嵌入式系统C编程的技能和经验。

我已经实现了一个USB Bootloader,用于启动用户应用程序。否则,它用于通过USB轻松加载应用程序。 我的USB Bootloader使用静态库USER_TAB_COLUMNS,用户应用程序也是如此。

是否有任何技巧如何从用户应用程序引用board.a,它被链接到引导程序的二进制文件中?

换句话说,我想通过只输入一次board.a代码和数据来优化闪存空间。

注意:我使用LPCXpresso(恩智浦MCU工具/ GNU Make Builder)调用 arm-none-eabi-gcc(GNU ARM嵌入式工具链)

1 个答案:

答案 0 :(得分:2)

就像在操作系统上使用共享库一样。您的系统设计可以是这样的,当引导加载程序分支到应用程序时,它可以例如使用其中一个寄存器(例如r0)来包含地址到"共享"库,或者它可以包含指向指针数组的指针,指针数组是您要共享的board.a中各个函数的地址。函数只不过是来自链接/使用透视图的地址,所以它是将应用程序中的函数指针与地址空间中已有的函数匹配的问题(我假设闪存)。这就是所有共享库,它们只有库和存根,以帮助它们在这些操作系统上运行的应用程序不可见。