加载论坛时出错,请强制刷新页面重试。

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


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 加载就行了


下一页 »

知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途