SBT 版本问题

SBT 版本问题

QA

    1. 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
2
3
4
5
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-lang#scala-library;2.11.12: public: unable to get resource for org/scala-lang#scala-library;2.11.12: res=https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.12/scala-library-2.11.12.pom: java.net.UnknownHostException: repo1.maven.org: Temporary failure in name resolution
[warn] ::::::::::::::::::::::::::::::::::::::::::::::

原因

~/.sbt 目录可能存在旧的版本,导致问题,

解决

删除 ~/.sbt 目录,如果联网,直接重新sbt run ,会自动下载更新,否则copy 别的机子上正确的 .sbt 到home 目录下。

    1. IDEA,rochi-chip:sync failed ,但在terminal下正常编译 ,也是~/.sbt导致的
    1. C 程序编译好的.out文件不能再 rocket-chip/emulator 目录下运行,而 run-asm-isa-test 则会没有问题

这是由于直接用rvgcc 编译的文件,并没有按照处理器的格式做link,因此想要正确的在处理器上运行,需要正确的link

可以参见 bootrom/link.lds 文件 :

1
2
3
4
5
6
7
8
9
10
11
 1 SECTIONS 
2 {
3 ROM_BASE = 0x10000; /* ... but actually position independent */
4
5 . = ROM_BASE;
6 .text.start : { *(.text.start) }
7 . = ROM_BASE + 0x40;
8 .text.hang : { *(.text.hang) }
9 . = ROM_BASE + 0x80;
10 .rodata.dtb : { *(.rodata.dtb) }
11 }

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
2


评论