QA
- sbt 指向 “java -Dsbt.ivy.home=/nishome/jijing/ivy2 -jar /DATA/jijing/rocket-chip/sbt-launch.jar”
现象
ivy2 也是最新的,包含 org.scala-lang#scala-library;2.11.12
正确的版本号
依然会报错!!
1 | [warn] :::::::::::::::::::::::::::::::::::::::::::::: |
原因
~/.sbt 目录可能存在旧的版本,导致问题,
解决
删除 ~/.sbt 目录,如果联网,直接重新sbt run ,会自动下载更新,否则copy 别的机子上正确的 .sbt 到home 目录下。
- IDEA,rochi-chip:sync failed ,但在terminal下正常编译 ,也是~/.sbt导致的
- C 程序编译好的.out文件不能再 rocket-chip/emulator 目录下运行,而 run-asm-isa-test 则会没有问题
这是由于直接用rvgcc 编译的文件,并没有按照处理器的格式做link,因此想要正确的在处理器上运行,需要正确的link
可以参见 bootrom/link.lds 文件 :
1 | 1 SECTIONS |
rvgcc -T link.ld bootrom.S -nostdlib -static -wl,--no-gc-section -o bootrom.img
同理C代码编译的时候也需要使用正确的linkfile 文件 。
如何编译指定CPU的可执行文件
必要信息:
- $(CC) 需要默认的target (例如intel x86, AMD64, MIPS 等等, 如果RISCV, 需要支持的指定指令集 (例如 rv32imc rv64g,rv32imdfc 等等)
- link 脚本,如果不指定,会有导入默认的脚本,否则需要显示指定,尤其是自己设计的处理器,需要显式的指定堆栈起始地址,程序默认存放地址,这些信息响应的也会体现在CPU硬件设计当中。需要正确match
1 |