gpt4 book ai didi

c - ARM (裸机): call binary file as function

转载 作者:行者123 更新时间:2023-11-30 20:07:15 26 4
gpt4 key购买 nike

我有 AT91sam9 ARM Controller 的 AT91Bootloader。我需要添加一些额外的硬件初始化,但我只编译了 .bin 文件。我将 bin 文件加载到内存并尝试调用它:

((void (*)())0x00005000)();

但是,还没有任何结果。请尽可能少使用汇编程序。我之前接触过汇编程序,但由于它的复杂性而无法理解ARM汇编程序。如何从引导加载程序中间进行调用,执行bin文件(它将位于某个内存扇区,例如0x00005000),然后返回引导加载程序并继续执行它自己的代码?

最佳答案

如果 ARM asm“太复杂”,您会发现调试遇到的任何问题都非常困难。基本* ARM 汇编是我遇到过的最简单的汇编语言之一。

只要“.bin”格式正确,您的代码应该可以工作(尽管我不会在那里使用硬编码地址)。常见问题:

  • 入口点应该是ARM代码;一些编译器默认使用 Thumb。让 Thumb 代码工作是可能的(虽然有点棘手)。
  • 入口点必须位于文件的开头。如果不进行拆卸,很难判断您是否正确完成了此操作。
  • 链接器将在必要时插入“thunk”(又名“ stub ”)。某些链接器中的一个怪癖意味着可以将 thunk 放置在入口点之前。您可以使用 --stub-group-size=-1 解决此问题(文档 here )。

* 忽略 Thumb/VFP/NEON 等您不需要开始的东西。

关于c - ARM (裸机): call binary file as function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15154568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com