我已经为AArch64启动了一个裸机应用程序。裸机应用程序应该实现一个简单的内核(用于内存/设备管理和异常处理)和一个用户区,它可以通过系统调用通过printf()
(例如)在UART上输出一些东西。目前我正在开发EL1的内核。缩进是把内核和用户空间放在一个单一的ELF二进制文件中,因为我还没有实现文件系统驱动程序和ELF支持。
内核应该位于地址0xC0000000
,主应用程序(userland)应该位于地址0x40000000
。但我稍后会更改这些地址。有可能将两个链接器脚本传递给GNU吗?我意识到我必须为内核和用户区使用不同的部分。
或者另一个问题:
我的缩进是可能的吗?好吧,这可能是一个通用问题,但目前在这里没有找到类似的问题。
从LD手册:https://man7.org/linux/man-pages/man1/ld.1.html,它说:
Multiple -T options accumulate.
就像这样使用:-T script1。d -T script2.ld