Embedded 如何将地址分配给另一个库中的外部符号,而不将其包含在ld的输出中?
这里是上下文: 我正在为arduino开发某种微型操作系统(SAMD21 MCU)。 我希望引导加载程序加载操作系统(简单的部分,正式的部分工作,操作系统与“with bootloader.ld”脚本链接)。然后,要以类似的方式从操作系统加载应用程序,引导加载程序将加载操作系统。(对于操作系统部分来说很简单) 这样,操作系统就不必重新编程,只有应用程序会改变 这里有一个问题: 由于操作系统将包含大部分arduino代码,是否可以将应用程序链接到操作系统,而不将操作系统包含在二进制文件中?我的意思是,在应用程序的链接步骤中,用操作系统中的符号的实际值替换任何引用,而不重新包含操作系统代码?您将向链接器脚本添加什么Embedded 如何将地址分配给另一个库中的外部符号,而不将其包含在ld的输出中?,embedded,ld,Embedded,Ld,这里是上下文: 我正在为arduino开发某种微型操作系统(SAMD21 MCU)。 我希望引导加载程序加载操作系统(简单的部分,正式的部分工作,操作系统与“with bootloader.ld”脚本链接)。然后,要以类似的方式从操作系统加载应用程序,引导加载程序将加载操作系统。(对于操作系统部分来说很简单) 这样,操作系统就不必重新编程,只有应用程序会改变 这里有一个问题: 由于操作系统将包含大部分arduino代码,是否可以将应用程序链接到操作系统,而不将操作系统包含在二进制文件中?我的意思
目标是只需在预定义的地址重新编程应用程序代码,而无需触摸操作系统。(重新编程停止将从操作系统代码中完成,像普通引导加载程序一样对mcu进行自编程)您至少有这些选项,所有这些选项以前都见过:
应用程序源中的引用将通过其链接器脚本中的定义进行解析。您至少有这些选项,所有这些选项以前都见过:
应用程序源中的引用将由其链接器脚本中的定义解析。最常见的情况是,操作系统提供带有固定参数的接口,例如中央入口点。你的操作系统是如何工作的?好吧,我不想做一个“真正的”操作系统,只是某种“应用程序加载器”,管理所有的I/O和以太网应用程序的热替换。没那么多。但是我想提供一个公开API的头,这样链接器就可以从操作系统二进制文件、.map文件或从操作系统代码生成的任何文件中检索函数地址。最常见的情况是,操作系统提供了一个带有固定参数的接口,例如一个中心入口点。你的操作系统是如何工作的?好吧,我不想做一个“真正的”操作系统,只是某种“应用程序加载器”,管理所有的I/O和以太网应用程序的热替换。没那么多。但是我想提供一个公开API的头,这样链接器就可以从操作系统二进制文件、.map文件或从操作系统代码生成的任何文件中检索函数地址