关键是使用IAR链接器生成一个没有主函数的十六进制 - xlink? 该代码应该加载到RL78 MCU的RAM中。如何使用IAR链接器生成一个没有主函数的十六进制 - xlink?
回答
快速谷歌搜索iar generate hex from library
把我带到this document, "Creating an Absolutely Placed Library",作为第一个结果。它具有您需要的所有信息,以及使用CRC进行一致性检查的一些信息。该文件适用于IAR EWRX变体,但概念应该都是相同的。
基本的过程就是将你的库编译为一个可执行文件,但不包含main()
函数。您需要将常规 - >库选项下的库配置设置为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
的输出添加为库,并且在您的应用程序中,您需要在库中调用入口函数,然后才能尝试使用图书馆的符号。
这应该是您需要生成一个生存在一个十六进制文件中,可以单独加载的库的信息,以及如何使用该库。所引用的文档有更多的细节,所以如果它在该链接上可用(或可以在标题的其他地方找到),那么它将比我的总结更好。
- 1. 选择一个十六进制附近的十六进制数
- 2. 如何连接十六进制数字?
- 3. 使用十进制或十六进制
- 4. 红宝石,生成一个随机的十六进制颜色
- 5. 如何用PHP生成一个随机的DARK十六进制颜色代码?
- 6. 在JS中生成随机生成的十六进制颜色的免费十六进制颜色?
- 7. Powershell生成一个十六进制列表
- 8. 如何插入十六进制/二进制?成mysql数据库?
- 9. 如何十六进制转换为十六进制
- 10. 如何在AES加密中使用十六进制十六进制密钥?
- 11. 将十进制转换为十六进制和十六进制
- 12. 使用十六进制而不是十进制更有效吗?
- 13. JSON数转换成十进制十六进制值
- 14. 十六进制数转换成十进制公式
- 15. 传递一个十六进制数字到函数
- 16. 如何将一个十六进制数字压缩成一个短字符串?
- 17. 如何在HTML中设置十六进制链接网格?
- 18. Python - 生成十六进制值的所有组合
- 19. 十六进制
- 20. 十六进制
- 21. 将十六进制拆分为2个十六进制值
- 22. 如何用QString :: arg()生成大写的十六进制数字? [QT]
- 23. 如何选择一个ntext列为二进制/十六进制
- 24. 十六进制字符串到十六进制整数
- 25. 如何填补这个十六进制
- 26. 如何转换十六进制字符串为十六进制数
- 27. 如何递增十六进制数
- 28. 使用十六进制值操作时不能使用十六进制功能
- 29. 用于大数字的十进制到十六进制的Python
- 30. XoR两个十六进制
到目前为止,你有什么工作?我假设你有一个库项目生成类似'library.a'? – rjp
看起来像一个XY问题;你究竟在努力实现什么?动态加载/链接也许?完全关联的应用程序必须有一个入口点。 GNU链接器支持一种称为“部分链接”的选项,不确定你的。 – Clifford