没想竟然遇到连载途中的除错困境XD
不过30天铁人赛对笔者来说就像黑客松纪录簿,也当作给作软硬整合开发的人一个参考吧。
先来说一下遇到什麽状况:
我们的终极目标,是完整的Alpine Linux on RV32GC,因为对於Linux mainline来说,唯一官方真正认可的最小公因数ABI set,就是RV32/64GC,而非soft-float、或着笔者在其他地方玩弄的RV32I Linux等等随时都有可能build fail/runtime break的组态。
如先前所述,VexRiscv有完整的D extension支援,是在近一年、半年左右的事情。敝人过去持续跟进使用的过程中,它是慢慢地从IMA、IMAC演进到IMAFDC;前篇所提及的OrangeCrab开发版,依照上面使用的FPGA chip有两个变种,一个是25F、另一个是85F,两者相差了8万个logic cell。之前为了开发简便,我基本上都用Linux-on-Litex/VexRiscv的预设building script在做事,我有其他张比较大的开发版,logic cell的资源也多,例如Lattice自己本身的versa-5g,上面是使用ECP5-45F;这些较大的开发板上,打开FPU是没什麽问题的。但是OrangeCrab上面,故事就比较悲剧一点,在VexRiscv IMAC组态底下,已经把LC吃了92%掉。想要强制开启FPU组态(预设在25F上是关闭的),我们需要做出以下改动 — —
# /path/to/litex_root/litex/litex/soc/cores/cpu/vexriscv_smp/core.py
...
aes_instruction = False
out_of_order_decoder = False
wishbone_memory = False
- with_fpu = False
+ with_fpu = True
cpu_per_fpu = 1
with_rvc = True
...
- parser.add_argument("--with-fpu" , default=Flase, action="store_true", help="Enable the F32/F64 FPU")
+ parser.add_argument("--with-fpu" , default=True, action="store_true", help="Enable the F32/F64 FPU")
- parser.add_argument("--cpu-per-fpu" , default="4", help="Maximal ratio between CPU count and FPU count. Will instanciate as many FPU as necessary.")
+ parser.add_argument("--cpu-per-fpu" , default="1", help="Maximal ratio between CPU count and FPU count. Will instanciate as many FPU as necessary.")
然而这样一打开,我们就会把仅剩的LC直接吃满吃到超过100%。
尝试调动yosys的一些optimization flags,还是不够,我们势必必须要打掉一些peripheral来节约LC的用量:
# /path/to/linux_on_litex_vexriscv/make.py
# OrangeCrab
# Buses
- "i2c",
+ #"i2c",
# Storage
- "spisdcard",
+ #"spisdcard",
直接把仅存的spi mode sdcard跟i2c给拆了,(其实还要退回2021年初的yosys使用比较暴力的ABC优化参数 -abc9 -nowidelut
)这时nextpnr回报的LC用量终於勉强够用,也能在。但是拆掉了spisdcard後,我们仅能透过LiteX BIOS中最後的fallback mode来进行Linux image、OpenSBI、rootfs image的loading。
但是serial传输遇到bit rotting的机会很高。
目前笔者还在努力想办法解决当中XDDDD
人脸辨识建置的类型有两种: 第一种为使用云端计算,因需要使用云端计算,所以需要确保网路连线顺畅,在将...
关於 Hook 的方法与实作 useContext useContext 可以使元件跨越层级直接传递...
MyBatis前导 ...
环境 Windows 10 21H1 Visual Studio 2019 NASM 2.14.02...
题号:104 标题:Maximum Depth of Binary Tree难度:Easy Give...