报名了赛昉RISC-V单板计算机星光派的试用,第一批完美错过,非常幸运的是,第二批中选,一直期待中。

等到六月一日,终于收到了心心念念的六一礼物,超级开心,我也是个大孩子。
一、开箱

这个包装盒很小巧,说明板子也很小巧。
包装盒上面的设计风格,科技感非常强,也预示着这款RISC-V单板计算机非凡的身手。
关于介绍的话,就不多说了,官方介绍很丰富,其他人也会介绍不是。
拿到手之后,直入正题,第一时间拆包,看看到底长啥样。

正面结构非常紧凑,没有一丝多余,接口也非常丰富。

背面非常干净,只有SD卡,一些密密麻麻小小的元器件,和圆润的焊点。

转到前面看看,丰富的接口一览无余,包括:

转到后面,可以看到:
看完了板子的模样,我拿出了珍藏的其他几块板子,一起对比了一下:

个头明显比其他两块板子要打一下,谁叫咱接口多呢。
二、系统
看完了板子,下面就是跑起来了。
这块板子,目前已经有了众多Linux发行版的支持。
从官方社区 昉·星光各操作系统移植情况整理 - 昉·星光 (中文论坛) - RVspace Forum 了解到可用的系统:

一番尝试,最后,选择了熟悉的Debian。
下载地址:Index of /riscv/iso (asklinuxinfo.xyz)
选择 Debian_sid_linux_kernel_5.17.0-rc4.tar.xz 即可。后续有更新版本,选择对应的新版本。
三、烧录
下载的系统镜像包,是一个xz压缩文件,解压后有10G大小。
在Windows系统中,用解压工具解压即可。
在macOS或者Linux下,用下面的命令解压:tar -xvjf Debian_sid_linux_kernel_5.17.0-rc4.tar.xz
解压后,得到Debian_sid_linux_kernel_5.17.0-rc4.img文件,用于烧录到SD卡。

烧录到SD卡的工具,可以图形化的balenaEtcher,在Windows和macOS、Linux下面均可使用:

下载地址为:balenaEtcher - Flash OS images to SD cards & USB drives
因为镜像大小有10G,所以实际使用中,准备一张至少32G的手机SD卡,以防空间不足。
然后,参考下图操作即可:

烧录的时间,根据SD卡的速度而定,我这边用了两分钟。
如果是在Linux或者maxOS下面,还可以使用dd命令烧录。
Linux系统dd烧录:
# 获取SD卡对应的设备
sudo fdisk -l
# 使用dd烧录
sudo dd if=./Debian_sid_linux_kernel_5.17.0-rc4.img of=/dev/disk2 status=progress bs=1M
macOS gdd烧录:
# 获取SD卡对应的设备
diskutil list
# 安装gnu相关的包,请先安装brew
brew install coreutils
# 使用gdd烧录
sudo gdd if=./Debian_sid_linux_kernel_5.17.0-rc4.img of=/dev/disk2 status=progress bs=1M
以上命令中的SD卡设备/dev/disk2,请根据你的系统上的实际情况确定。
烧录成功后,即可把SD卡放置到板子背面的SD卡插槽中,准备启动了。
四、启动
启动前,需要先用USB2TTL,将板子连接到电脑,参考官方快速入门指南,可以了解到,具体连线如下:

再使用Mobaxterm、Putty或者SecureCRT,通过USB2TTl的串口,进行串口终端连接。
注意,板子没有上电,也是可以连接的,只是没有信息而已。
关于串口驱动、Putty设置等,请查看“昉·星光单板计算机快速入门指南.pdf”,下载地址:
如果使用的是Linux或者macOS,官方还推荐使用minicom进行连接。
因为我使用的是macOS,所以我直接在命令行下面使用我更熟悉的screen命令连接的:screen /dev/tty.wchusbserial1420 115200
连接后,再使用Type-C线,把板子的Type-C接口连接到电脑,就能正常启动,在串口终端中就能看到启动信息了。
正常启动后,会提示Login登录,默认的用户为root,密码为root,登录进去后,就能开心的玩起来。
五、点灯
启动板子以后,第一件事情,就是点灯了。
通过官方提供的“赛昉科技40-Pin GPIO Header用户手册.pdf”可以了解,40针GPIO口的具体定义:


为了方便连接,我选用了GPIO0、GPIO2、GPIO4、GND,其对应的关系:
sys编号,表示这个引脚,在系统/sys/class/gpio中对应的编号。
把这三个引脚,接到红绿灯模块上,把GND连接好,就可以开始点灯可。

在Linux下面,可以直接使用shell脚本,操作/sys/class/gpio下对应的GPIO挂载点(sys编号)进行简单的GPIo输入输出操作,常用的指令如下:
# 进入gpio操作
cd /sys/class/gpio
# 开启对应的sys编号,注意替换为具体的数值
echo sys编号 > export
# 输出型GPIO
echo out > sys编号/direction
# 输出低电平
echo 0 > sys编号/value
# 输出高电平
echo 1 > sys编号/value
# 输入性GPIO
echo in > sys编号/direction
# 将GND或者3.3V连接到对应的GPIO口,然后查看输入值
cat sys编号/value
我使用的是红绿灯模块,所以写了一个小脚本,来分别点亮单个LED,到2个LED,到3个LED,再到闪烁,具体脚本如下:
#!/bin/bash
cd /sys/class/gpio
gpio0=448
gpio2=450
gpio4=452
for gpio_pin in $gpio0 $gpio2 $gpio4
do
if [[ $(ls | grep -c "gpio$gpio_pin") -eq 0 ]];then
echo $gpio_pin > export
echo out > gpio$gpio_pin/direction
fi
done
set_led(){
pin=$1
echo $2 > gpio${!pin}/value
}
set_led_on(){
set_led $1 1
}
set_led_off(){
set_led $1 0
}
set_led_off_all(){
set_led_off gpio0
set_led_off gpio2
set_led_off gpio4
}
for i in $(seq 0 100)
do
set_led_off_all
set_led_on gpio0
sleep 1
set_led_off_all
set_led_on gpio2
sleep 1
set_led_off_all
set_led_on gpio4
sleep 1
set_led_off_all
set_led_on gpio0
set_led_on gpio2
sleep 1
set_led_off_all
set_led_on gpio2
set_led_on gpio4
sleep 1
set_led_off_all
set_led_on gpio4
set_led_on gpio0
sleep 1
set_led_on gpio0
set_led_on gpio2
set_led_on gpio4
sleep 1
status=0
for j in $(seq 0 5)
do
if [[ $status -eq 0 ]];then
set_led_off_all
status=1
else
set_led_on gpio0
set_led_on gpio2
set_led_on gpio4
status=0
fi
sleep 0.2
done
done
红绿灯模块的具体效果,可以查看下面的视频:
举报
举报
更多回帖