RISC-V技术william hill官网
直播中

chen000000009

9年用户 390经验值
擅长:电源/新能源 模拟技术 控制/MCU
私信 关注
[经验]

【昉·星光 2 高性能RISC-V单板计算机体验】SDK部署与编译

赛昉科技已经开源了VisionFive2 的SDK。下载地址

https://github.com/starfive-tech/VisionFive2

相关开发文档在

https://doc.rvspace.org/

首先要下载SDK。这个SDK的部分大文件需要采用git-lfs才能下载。首先要安装git-lfs。笔者这里的虚拟机版本是ubuntu1604。这个工具默认的源里面是找不到的,需要单独下载deb文件安装。下载地址为

https://packages.ubuntu.com/mantic/git-lfs

下载deb包之后执行

sudo dpkg -i git-lfs_3.3.0-1_bpo11+1_amd64.deb

之后执行git-lfs --version。如果可以看到版本号的话,说明安装成功
21.jpg

然后执行下载

$ git clone https://github.com/starfive-tech/VisionFive2.git

$ cd VisionFive2

$ git checkout JH7110_VisionFive2_devel

$ git submodule update --init --recursive

下载之后还要去各个git工程里面切换分支。

$ cd buildroot && git checkout --track origin/JH7110_VisionFive2_devel && cd ..

$ cd u-boot && git checkout --track origin/JH7110_VisionFive2_devel && cd ..

$ cd linux && git checkout --track origin/JH7110_VisionFive2_devel && cd ..

$ cd opensbi && git checkout master && cd ..

$ cd soft_3rdpart && git checkout JH7110_VisionFive2_devel && cd ..

注意,如果系统里面本身就有git命令的话,它是会调用默认的git而不是git-lfs。而这些大的文件都在soft_3rdpart里面。这时候需要进入soft_3rdpart文件夹,执行

git-lfs reset --hard

这样可以把那些大文件都检出。

要想验证这个git-lfs是否生效,可以看下gpu的库是不是存在。如果没有生效,这几个文件都是几KB的,只有使用git-lfs才是正常的50多M
22.jpg

这些文件必须检出,否则后面编译系统的时候会报错。

然后可以看下它的工程目录。
23.jpg

这个SDK的工程目录跟RK或者全志的类似,把buildroot,bootloader,kernel那些放到同一工程目录下面,然后加上一个编译脚本,可以直接生成各个部分的镜像,并执行打包操作。下面介绍编译流程。

如果是在ubuntu 1604环境下面,需要修改一下uboot的编译脚本,如下
24.jpg

这个kwbimage没有什么用处,而编译它需要一个当前系统不支持的openssl库,部署起来麻烦,直接干掉。

在工程目录下直接执行

make

编译之后会在work目录下生成各个部分的镜像
25.jpg

分别为

uboot-spl镜像 文件名为u-boot-spl.bin.normal.out

uboot和opensbi组合的文件,文件名为 visionfive2_fw_payload.img。这个文件使用的是itb格式

内核镜像,文件名为 image.fit,这个是内核image+dtb文件+ramdisk镜像的组合,也是itb格式

内核镜像和uboot的环境变量会被放到同一个fat32的img文件里面,名为 starfive-visionfive2-vfat.part

rootfs镜像,在buildroot_rootfs/images下,文件名为 rootfs.ext4

这时候运行

make img

将会生成一个sdcard.img文件。此文件是一个可以烧录到sd卡的镜像,使用gpt分区。

将此文件用Win32DiskImager烧录到tf卡,然后将板上的拨码开关调整至如下状态
26.jpg

这个状态就是从SD启动。

然后上电,启动设备。首先可以看到uboot spl初始化了ddr,并从mmc2启动下一级固件
27.jpg

然后启动opensbi。这个opensbi有点类似于arm64平台上面的optee,是用来实现M模式访问的。它有一组接口,只有通过这组接口,才能够访问受保护的硬件资源。
28.jpg

然后就是加载kernel并启动。这里可以看到kernel image dtb ramdisk的itb文件解析的打印信息
29.jpg

接着就是内核启动。
210.jpg

最后要加载rootfs。rootfs的登入用户名 root 密码starfive

登入系统之后可以看一些基本信息。CPU 内存什么的
211.jpg

到这里,说明SDK部署完成,并能够成功编译。

更多回帖

发帖
×
20
完善资料,
赚取积分