c - 如何将 C 函数放入某个地址范围

标签 c assembly bootloader

我正在为 HCS08 微 Controller 系列开发基于 USB 的引导加载程序。我在程序集中有引导加载程序代码(适用于串行通信)。 我正在从此汇编代码中调用用于 USB 通信的 C 函数(终端 <> 微 Controller )。然而,这些 C 函数似乎没有位于 protected 区域 ROM 中,我可以在 project.map 中看到这一点。它们与我的引导加载程序代码不连续,即我的 Bootstrap 代码从 F003 开始​​,但这些 USB 函数在某些地方~1000-2000。 我的问题是,如何让这些 C 函数继续 ROM 中的 bootloader.asm 代码。

这是程序流程:我有一个 C 主函数,它在加电时跳转到 bootloader.asm。 尽管 bootloader.asm 工作正常,但由于非 protected 程序 ROM 区域中的 USB 例程,这些也被删除,此后引导加载程序无法与我的终端通信。

在这方面的任何建议都会非常有帮助。

谢谢

最佳答案

当您为嵌入式系统生成代码时,您通常会使用“链接器/定位器”而不仅仅是链接器。 “定位器”部分意味着它允许您设置参数,告诉它内存应该位于什么地址。不幸的是,我无法确切地告诉您如何使用您正在使用的工具集来指定它。如果您告诉我们那是什么工具集,也许有人(不像我)使用过它会知道为您使用的定位器指定地址的详细信息。

关于c - 如何将 C 函数放入某个地址范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038697/

相关文章:

C - 双向链表 - 节点的内容不正确(难以解释)

c++ - C++函数模板在汇编中是如何实现的?

linux - 汇编程序提示用户输入不起作用

linux - 基本而全面的组装教程(Linux)?

assembly - 了解引导加载程序汇编代码和内存位置

assembly - 不带 hlt 的 HLT 指令

c - linux内核如何检查是否设置了粘滞位

c - 在C中查找数字的回文

assembly - 进入保护模式后尝试跳转时出错 - 程序集引导加载程序

c - 使用 fwrite() 将结构写入文件错误 688