RuyiSDK IDE使用求助

RuyiSDK IDE 使用问题求助文档

参考文档RuyiSDK 官方文档 - Milkv Duo IDE 使用案例


1. 使用环境

  • 硬件环境:

    • LicheePi 4A(RISC-V 64 位 Linux 系统)

    • x86_64 主机(Ubuntu WSL2 环境)

  • 软件环境:

    • RuyiSDK IDE 版本:0.0.3

    • Java:随 RuyiSDK 自带的 JRE 21

    • 系统:

      • LicheePi 4A → RevyOS RISC-V

      • x86_64 → Ubuntu WSL2


2. 在 LicheePi 4A 上的问题

尝试安装工具链时执行:

ruyi install gnu-milkv-milkv-duo-bin

报错信息:

fatal error: package gnu-milkv-milkv-duo-bin-0.20240731.0+git.67688c7335e7 
declares no binary for host linux/riscv64

分析:

  • 看起来 gnu-milkv-milkv-duo-bin 没有提供 linux/riscv64 主机的二进制版本。

  • 在 RISC-V 开发板上无法直接安装交叉编译工具链。


3. 在 x86 WSL 上的问题

在 WSL (Ubuntu x86_64) 启动 RuyiSDK IDE,出现错误:

JVM terminated. Exit code=13
/home/knifefire/ruyisdk-0.0.3-linux.gtk.x86_64/ruyisdk//plugins/...

完整日志片段:

JVM terminated. Exit code=13
-jar .../plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar
-os linux
-ws gtk
-arch x86_64
-showsplash ...

表现:IDE 无法启动,直接退出。

请问只能使用物理机linux或者虚拟机吗?

6 个赞

会不会是版本的问题?官网看到的最新版本已经是 0.40.0了

2 个赞

打错了,是IDE版本0.03,RuyiSDK版本是最新版

1 个赞

感谢您的反馈!

关于RuyiSDK IDE的支持情况:
目前 RuyiSDK IDE(基于Eclipse,JDK21)目前处于Tier2级别支持,我们内部主要是在Ubuntu 22.04 、24.04 x86_64环境的虚拟机和物理机上做了一些测试和验证,是可以成功启动和运行的。
此外,在RISC-V设备上,曾经在MUSE Book上安装是能够成功启动。

WSL暂不未支持(未做过测试和验证),感谢您提供相关错误信息,根据目前反馈的问题:

```
JVM terminated. Exit code=13
-jar …/plugins/org.eclipse.equinox.launcher_1.6.900.v20240613-2009.jar
-os linux
-ws gtk
-arch x86_64
-showsplash …
```

“JVM terminated. Exit code=13”是Eclipse启动过程中常见的错误,通常与Java虚拟机(JVM)的配置或环境问题有关。

2 个赞

gnu-milkv-milkv-duo-bin 是这样的,这个其实只是对 MilkV 发布的二进制milkv-duo/host-tools进行二次打包分发。可以看到仓库里面只有 x86_64 的二进制,所以 ruyi 二次分发以后也就不会有 riscv64 二进制。

当前确实没有完美的替代方案。一个可以用的方法是用gnu-plct工具链,构建静态链接的二进制,放到MilkV Duo/Duo256 跑。静态链接的原因是gnu-plct是glibc的工具链,而MilkV Duo/Duo256 的镜像是musl。不过印象里 MilkV DuoS 的一些镜像是glibc的,也可以试试 DuoS。

2 个赞

官方文档错误

  1. 安装指定的工具链代码错误:
ruyi install gnu-milkv-milkv-duo-bin #错误
ruyi install gnu-milkv-milkv-duo-musl-bin #正确
  1. Makefile内容错

    1. 直接复制会有格式错误,需要把其中两行前的空格替换成Tab

    2. Makefile执行错

      #原文档
      
      # Eclipse 工具链设置
      #TOOLCHAIN_PREFIX := ~/milkv/duo/duo-examples/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-
      TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
      
      # 编译选项-O3  
      #CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d -DNDEBUG -I/home/phebe/milkv/duo/duo-examples/include/system
      #LDFLAGS := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -L/home/phebe/milkv/duo/duo-examples/libs/system/musl_riscv64
      CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g  #-mcpu=c906fdv -march=rv64imafdcv0p7xthead : One of the two must be set
      LDFLAGS := 
      
      TARGET=helloworld
      
      ifeq (,$(TOOLCHAIN_PREFIX))
      $(error TOOLCHAIN_PREFIX is not set)
      endif
      
      ifeq (,$(CFLAGS))
      $(error CFLAGS is not set)
      endif
      
      CC = $(TOOLCHAIN_PREFIX)gcc
      
      SOURCE = $(wildcard *.c)
      OBJS = $(patsubst %.c,%.o,$(SOURCE))
      
      # 默认目标
      all: $(TARGET)
      
      $(TARGET): $(OBJS)
         $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
      
      %.o: %.c
         $(CC) $(CFLAGS) -o $@ -c $<
      
      # 上传目标
      upload: $(TARGET)
         scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
      
      .PHONY: clean upload
      clean:
         rm -f *.o $(TARGET)
      
      # 让 'all' 目标依赖于 'upload',以便在构建后自动上传
      all: upload
      
      #改正
      TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
      
      CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g
      LDFLAGS := 
      
      TARGET = helloworld
      
      CC = $(TOOLCHAIN_PREFIX)gcc
      
      SOURCE = $(wildcard *.c)
      OBJS = $(patsubst %.c,%.o,$(SOURCE))
      
      all: $(TARGET)
      
      $(TARGET): $(OBJS)
      	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
      
      %.o: %.c
      	$(CC) $(CFLAGS) -o $@ -c $<
      
      upload: $(TARGET)
      	scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
      
      clean:
      	rm -f *.o $(TARGET)
      
      .PHONY: all clean upload
      
      1. “调试”中的Makefile也有类似问题:

        #原文档
        
        # Eclipse 工具链设置
        #TOOLCHAIN_PREFIX := ~/milkv/duo/duo-examples/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-
        TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
        
        # 编译选项-O3   -static
        #CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d -DNDEBUG -I~/milkv/duo/duo-examples/include/system
        #LDFLAGS := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -L/home/phebe/milkv/duo/duo-examples/libs/system/musl_riscv64
        CFLAGS := -march=rv64imafdcv0p7xthead -g 
        LDFLAGS := 
        
        TARGET=sumdemo
        
        ifeq (,$(TOOLCHAIN_PREFIX))
        $(error TOOLCHAIN_PREFIX is not set)
        endif
        
        ifeq (,$(CFLAGS))
        $(error CFLAGS is not set)
        endif
        
        CC = $(TOOLCHAIN_PREFIX)gcc
        SOURCE = $(wildcard*.c)
        OBJS = $(patsubst%.c,%.o,$(SOURCE))
        
        
        # 默认目标
        all: $(TARGET)
        
        $(TARGET): $(OBJS)
           $(CC)$(CFLAGS) -o $@$(OBJS)$(LDFLAGS)
        
        %.o: %.c
           $(CC)$(CFLAGS) -o $@ -c $<
        
        # 上传目标
        upload: $(TARGET)
           scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
        
        .PHONY: clean upload
        clean:
           rm -f *.o $(TARGET)
        
        # 让 'all' 目标依赖于 'upload',以便在构建后自动上传
        all: upload
        
        #改正
        
        # 工具链前缀
        TOOLCHAIN_PREFIX := ~/.local/share/ruyi/binaries/x86_64/gnu-milkv-milkv-duo-musl-bin-0.20240731.0+git.67688c7335e7/bin/riscv64-unknown-linux-musl-
        
        # 编译选项
        CFLAGS := -mcpu=c906fdv -march=rv64imafdcv0p7xthead -g
        LDFLAGS := 
        
        # 目标文件名
        TARGET = sumdemo
        
        # 编译器
        CC = $(TOOLCHAIN_PREFIX)gcc
        
        # 源文件与目标文件
        SOURCE = $(wildcard *.c)
        OBJS = $(patsubst %.c,%.o,$(SOURCE))
        
        # 默认目标
        all: $(TARGET)
        
        $(TARGET): $(OBJS)
        	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
        
        %.o: %.c
        	$(CC) $(CFLAGS) -o $@ -c $<
        
        # 上传目标
        upload: $(TARGET)
        	scp $(TARGET) root@192.168.42.1:/root/target/$(TARGET)
        
        # 清理
        clean:
        	rm -f *.o $(TARGET)
        
        .PHONY: all clean upload
        
        

      pr:ruyisdk/docs#108

4 个赞

非常感谢您的反馈和贡献 :beating_heart:

工具链部分确实存在安装和makefile中的不一致的问题,非常感谢

我们会安排人继续看看是否还有其他问题,如果您还记得具体的报错内容,可以贴出来看看

您提交的pr目前已经在推进了,看起来是格式等问题导致了构建CI的错误,如果有空可以再看看。如果需要帮助,也可以随时联系 :heart_hands:

2 个赞

已重新提交pr

2 个赞

PR已收到,非常感谢!有进度会立刻同步

1 个赞

我使用typora修改md文件后,当时并没有格式问题,但是push后再次打开就会出现格式问题,正文跑到代码块去了,不知道为什么,重复几次都这样

1 个赞

已重新提交

2 个赞

收到 我们这边会尽快Review

1 个赞