loongarch FreeBSD
hitmoon
基于freebsd 14 ,面向QEMU平台,edk2 uefi 引导。
进展:cpu, 内存部分大体完成。qemu 启动到挂载root卡住
问题:龙芯中断控制器等一系列驱动需要适配
代码:https://gitee.com/hitmoon/loongarch-fb
启动截图
欢迎感兴趣的可以一起来搞!
std3lqi
厉害👍,我假期后来学习一下,看看能不能帮上忙
ghw
没编译过去
meter -Qunused-arguments -DLOCORE -c /usr/src/lib/csu/loongarch/crti.S -o crti_s.o
/usr/src/lib/csu/loongarch/crti.S:12:2: error: unrecognized instruction mnemonic, did you mean: add.d, add.w?
add.i sp, sp, -16
^
/usr/src/lib/csu/loongarch/crti.S:13:7: error: invalid operand for instruction
st.d ra, sp, 0
^
/usr/src/lib/csu/loongarch/crti.S:20:2: error: unrecognized instruction mnemonic, did you mean: add.d, add.w?
add.i sp, sp, -16
^
/usr/src/lib/csu/loongarch/crti.S:21:7: error: invalid operand for instruction
st.d ra, sp, 0
^
*** Error code 1
Stop.
make[5]: stopped in /usr/src/lib/csu/loongarch
*** Error code 1
这个似乎并不是loongarch的指令
_init:
add.i sp, sp, -16
st.d ra, sp, 0
https://gitee.com/hitmoon/loongarch-fb/blob/loongarch_port/lib/csu/loongarch/crti.S#L12
std3lqi
不知道从哪里开始。是需要x86的FreeBSD,搭建龙芯跨架构编译环境吗?
hitmoon
std3lqi 是的,x86上装FreeBSD,交叉编译
std3lqi
Linux下的交叉编译工具链在FreeBSD下没法用吧?要自己MPC,GCC一路编出来吗?能介绍一下FreeBSD x86下的交叉编译环境怎么配置吗?
我看了一下,没有add.i这条指令,这段代码是参考MIPS的吗?
hitmoon
std3lqi Linux 工具链不行,FreeBSD 上先build-kernel-toolchain
指令的问题,先不管,首先搞kernel,kernel 好了再说用户态
std3lqi
是下面这个命令吗?
TARGET=loongarch make -j4 kernel-toolchain
hitmoon
make MK_LLVM_TARGET_LOONGARCH=yes make -j8 \
TARGET=loongarch TARGET_ARCH=loongarch64 KERNCONF=QEMU kernel-toolchain
std3lqi
kernel build好了,继续build world?
hitmoon
std3lqi 你只是build了工具链吧,即使 build kernel 没问题,kernel 也没完成,world 最后搞
std3lqi
kernel-toolchain和buildkernnel编过了,没问题。请教下一步。
hitmoon
std3lqi 下一步得解决kernel 启动中的问题
std3lqi
那就是说可以installkernel,重启试试了?关于这部分,我在参考 https://wiki.freebsd.org/arm/crossbuild。不知道方向对不对?
hitmoon
std3lqi 不用install,直接拿qemu 测试启动,debug
std3lqi
boot0,boot1,boot2 怎么弄呢?
hitmoon
std3lqi 还得编译 bootloader
make CC=/path/to/cc CPP=/path/to/cpp TARGET=loongarch TARGET_ARCH=loongarch64 KERNCONF=QEMU MACHINE=loongarch MACHINE_CPUARCH=loongarch MACHINE_ARCH=loongarch -C stand
std3lqi
仅用 -kernel 启动qemu?我指定了efi bios,直接进UEFI了,不指定bios,进qemu console了,看起来还是要boot。stand没有make target?我看你-C只是编译了一下。
hitmoon
std3lqi 没有target,我的源码里面默认就会编译出loader_simp.efi , 可以把loader 和 kernel 按照efi 引导的要求做成一个小磁盘镜像,然后你用UEFI 加载就行了