OpenHarmony开源社区
直播中

HonestQiao

9年用户 577经验值
擅长:嵌入式技术
私信 关注
[经验]

【赛昉科技昉·星光RISC-V单板计算机试用体验】上手之Debian系统烧录+访问+点灯

点灯视频

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

1.官方介绍.jpg

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

一、开箱

2.包装.jpg

这个包装盒很小巧,说明板子也很小巧。

包装盒上面的设计风格,科技感非常强,也预示着这款RISC-V单板计算机非凡的身手。

关于介绍的话,就不多说了,官方介绍很丰富,其他人也会介绍不是。

拿到手之后,直入正题,第一时间拆包,看看到底长啥样。

3.正面.jpg

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

4.背面.jpg

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

5.前面.jpg

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

  • PMIC音频接口
  • 四个USB接口
  • 1个HDMI接口
  • 1个有线网口
  • 1个Type-C接口

6.后面.jpg

转到后面,可以看到:

  • 2 x MIPI-CSI 接口
  • RST和BOOT按键
  • DEBUG引脚
  • POE引脚
  • 40针GPIO接口
  • MIPI-DSI 接口

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

7.对比.jpg

个头明显比其他两块板子要打一下,谁叫咱接口多呢。

二、系统

看完了板子,下面就是跑起来了。

这块板子,目前已经有了众多Linux发行版的支持。

从官方社区 昉·星光各操作系统移植情况整理 - 昉·星光 (中文论坛) - RVspace Forum 了解到可用的系统:

9.系统.png

一番尝试,最后,选择了熟悉的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卡。

10.镜像.png

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

11.balenaEtcher.png

下载地址为:balenaEtcher - Flash OS images to SD cards & USB drives

因为镜像大小有10G,所以实际使用中,准备一张至少32G的手机SD卡,以防空间不足。

然后,参考下图操作即可:

11.balenaEtcher使用.png

烧录的时间,根据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,将板子连接到电脑,参考官方快速入门指南,可以了解到,具体连线如下:

13.usb2ttl接线.png

再使用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口的具体定义:

14.40针.png

15.40针具体定义.png

为了方便连接,我选用了GPIO0、GPIO2、GPIO4、GND,其对应的关系:

  • GPIO0:序号40,sys编号452
  • GPIO2:序号38,sys编号450
  • GPIO4:序号36,sys编号448
  • GND:序号34

sys编号,表示这个引脚,在系统/sys/class/gpio中对应的编号。

把这三个引脚,接到红绿灯模块上,把GND连接好,就可以开始点灯可。

8点灯.jpg

在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

红绿灯模块的具体效果,可以查看下面的视频:

点灯视频

回帖(2)

HonestQiao

2022-6-5 08:31:35
更正:
  1. GPIO0:序号40,sys编号448
  2. GPIO2:序号38,sys编号450
  3. GPIO4:序号36,sys编号452
举报

洒下墨色

2022-8-15 18:42:57
大佬出品就是不一般
举报

更多回帖

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