我们希望在FPGA上为Linux提供单核RISCV处理器。同时,Linux内核将通过LLVM传递进行检测。
我的怀疑是: 1.是否可以使用riscv-llvm工具链来编译Linux内核? 2. riscv-llvm工具链现在是否支持添加自定义传递?
答案 0 :(得分:4)
选择Linux版本有两个问题,2.6.33。
第一个问题是RISC-V团队从未将此版本移植到RISC-V。它们在https://github.com/riscv/riscv-linux中有3.14和4.1。因此,要在RISC-V处理器中启动它,您应该重复所有移植依赖于体系结构的部分(内核的arch/
目录)。这是非常复杂的任务,即使目标CPU有一些移植版本。您可以从3.14向后移植某些部分,但2.6.33和3.14是不同的,它们之间有几年的演变。 (PORTING不只是编译,它是编写30个文件而没有任何错误或长时间调试的任务。)
第二个问题是LLVM只能完全构建具有http://llvm.linuxfoundation.org/项目补丁的现代Linux内核版本。在内核的某些部分中使用了不受支持的(并且在clang / llvm中永远不会支持)GCC扩展。部分构建是可能的,但旧版Linux的两三个组件不能用clang构建。
所以,我真的建议你使用RISCV团队的linux内核版本,而更新的(4.1)更好。