关键是使用 IAR 链接器生成一个没有主函数的十六进制 - xlink?此代码应加载到 RL78 MCU 的 RAM 中。
1 回答
一个快速的谷歌搜索iar generate hex from library
把我带到了这个文档,“创建一个绝对放置的库”,作为第一个结果。它包含您需要的所有信息,以及一些关于使用 CRC 进行一致性检查的信息。该文档适用于 IAR EWRX 变体,但概念都应该相同。
基本过程是将您的库编译为可执行文件,但其中没有main()
函数。您需要在 General -> Library Options 下将您的库配置设置为None
. 此时您还可以设置文件转换设置。
由于您没有main()
程序入口点的函数,因此您需要创建一个入口函数来调用 IAR C 运行时初始化函数,__iar_data_init2()
然后将链接器设置为使用该函数作为入口点(可以找到在链接器选项 - > 库选项下)。
构建库时,所有符号都将保留到使用它的应用程序的最后链接步骤,但是由于您将其构建为可执行文件,因此要保留的符号具有__root
关键字或在链接器下很重要 - > 您可以指定--no-remove
保留所有符号的额外选项。
在下一步中,您需要使用isymexport
导出所需的符号。您将需要一个文件来指导工具导出的内容。在示例中,他们有一个仅包含以下内容的文件:
show lib_*
show __checksum*
这将指示工具导出所有以 开头的符号lib_
和所有以__checksum
. 他们指出__iar_data_init2()
不应导出,因为这会导致与最终将使用此代码的应用程序发生冲突。您可以像这样调用该工具:
isymexport <path to .out file> <path to output from tool> --edit <path to file created above>
现在你应该有isymexport
你正在寻找的库文件的输出。对于使用此库的应用程序,您需要将输出isymexport
作为库添加到 Linker -> Library 下,并且在您的应用程序中,您需要在尝试使用任何图书馆的符号。
这应该是生成位于 hex 文件中并且可以单独加载的库以及如何使用该库所需的信息。引用的文档有更多的细节,所以如果它可以在那个链接上找到(或者可以通过标题在其他地方找到),它将比我在这里的摘要更好的参考。