【发布时间】:2021-01-24 13:44:37
【问题描述】:
我已经为 AArch64 启动了一个裸机应用程序。裸机应用程序应该实现一个简单的内核(用于内存/设备管理和异常处理)和一个用户空间,该用户空间可以通过printf() 进行系统调用以通过 UART 输出某些内容。目前我正在 EL1 研究内核。缩进是将内核和用户区放在一个 ELF 二进制文件中,因为我还没有实现文件系统驱动程序和 ELF 支持。
例如,内核应该驻留在地址0xC0000000,主应用程序(用户区)应该驻留在0x40000000。但我稍后会更改此地址。是否可以将两个链接器脚本传递给 GNU ld?我意识到我必须为内核和用户空间使用不同的部分。
或者换个问题:
我的缩进甚至可能吗?好的,这可能是一个通用问题,但目前在这里没有找到类似的问题。
【问题讨论】:
-
我觉得单独编译和链接用户空间会更干净,更容易,使用
objcopy -O binary获取裸机二进制文件,然后使用.incbin或类似方法将其嵌入内核。 .. -
@Siguza 感谢您提供更简单的解决方案。我不知道
.incbin。
标签: ld elf arm64 bare-metal