Skip to content

Latest commit

 

History

History
48 lines (30 loc) · 2.14 KB

fu740.md

File metadata and controls

48 lines (30 loc) · 2.14 KB

有用的参考

硬件手册 https://sifive.cdn.prismic.io/sifive/de1491e5-077c-461d-9605-e8a0ce57337d_fu740-c000-manual-v1p3.pdf

软件手册 https://sifive.cdn.prismic.io/sifive/05d149d5-967c-4ce3-a7b9-292e747e6582_hifive-unmatched-sw-reference-manual-v1p0.pdf

软件SDK https://github.com/sifive/freedom-u-sdk

其他所有资料主页 https://www.sifive.com/boards/hifive-unmatched

OpenSBI主页 https://github.com/riscv-software-src/opensbi

目前进度 [2021/10/17 update]

2021/10/17

  • 编译用于FU740的uCore-SMP
  • 制作支持U-Boot的uCore-SMP映像
  • 导入SD card后,成功启动

Details:

FU740有5个核,小核为0,大核心为1-4,小核core 0 不能通过SBI启动 (所以启动要从mhartid=1开始),这是坑1.

启用页表(写satp)之后,程序就没反应了,这是因为FU740对页表项(PTE)中的 A、D位有规定,它不支持硬件修改A和D,并且一定要把A和D设为1,否则会page fault,这和之前做法把A、D设为0的是不一致的。这是坑2.

最后我发现启动阶段 OpenSBI和 U-Boot proper 的耦合很紧密,还包含了itb在bin文件里,所以我只能保留U-Boot proper。我把uCore-SMP做成了能被U-Boot识别的映像格式(用mkimage),然后就可以启动了。

后面的困难是(1)没有文件系统,我现在用的ramdisk,重启就没了。想要文件系统的话就需要有SD卡驱动 (2)SD卡(MMC)应该使用了SPI协议,但目前还不知道其中的具体细节。

2021/10/10

  • 使用SDK编译流程跑通
  • 成功生成SD卡的Linux镜像文件
  • 将镜像写入SD卡成功
  • FU740主机启动进入导引到Linux
  • 编译QEMU运行成功
PARALLEL_MAKE="-j 32" BB_NUMBER_THREADS=32 MACHINE=unmatched bitbake demo-coreip-cli
# PARALLEL_MAKE="-j 32" BB_NUMBER_THREADS=32 MACHINE=unmatched bitbake demo-coreip-xfce4
PARALLEL_MAKE="-j 32" BB_NUMBER_THREADS=32 MACHINE=qemuriscv64 bitbake demo-coreip-cli
MACHINE=qemuriscv64 runqemu nographic slirp

正在做 [2021/10/17 update]

  • 研究怎么写SD卡驱动,一方面研究SPI协议,另一方面研究U-Boot是怎么做的。