我的购物车
资讯分类
全部资讯
最新活动
商城公告
行业信息
新品推荐
元器件知识
资讯标签
iCEasy商城(171) 艾为awinic(154) 艾迈斯欧司朗(142) 英伟达NVIDIA(94) 萤火工场(62) 飞腾派V3(33) 兆易创新(29) 罗彻斯特电子(28) 赛昉科技(StarFive)(27) 灵动微电子(16) 小华半导体(15) 芯佰微(14) 开源社区活动(14) 日清纺微电子(13) Seeed矽递科技(11) 极海半导体(8) 上海雷卯Leiditech(8) 微源半导体 LPSemi(8) 物奇WuQi(7) 航顺芯片(6) 领麦微LEAMEMS(4) 高通Qualcomm(4) 峰岹科技(3) BeagleBoard(3) 沃虎WOHU(3) 沃虎VOOHU(3) 英迪芯微(2) 芯查查(2) 机器人(1) 博瑞集信(1) 中电港(1) 硅光电二极管BPW 34 S-Z(1) 蓝光激光二极管PLPT9 450MD_E(1) 绿色激光二极管PLT5 520HB_P(1) 红外传感发射器件SFH 4713B(1)

赛昉科技 |【新技能Get】小伙写了个Python脚本,用高性能RISC-V开发板监测B站未读消息

发布时间:2025-06-24

最近一直在折腾昉·星光VisionFive这块开发板,这是赛昉推出的可运行Linux的RISC-V单板计算机,处理器是赛昉的昉·惊鸿7100 SoC(JH7100),这是一颗RISC-V架构的处理器,工作频率1.0GHz,64位双核,内核性能对标ARM A55。


写入镜像


这块板子的系统运行和树莓派一样,需要先将系统镜像写入内存卡,再插到板子上来运行。目前官方提供的只有 Fedora 这个发行版,可以在GitHub上找到下载链接:https://github.com/starfive-tech/Fedora_on_StarFive

下载完是一个特殊的压缩格式,zst,当前这种zst格式是一种压缩文件,是由ZStandard研发的,作为一种ZStandard压缩文件使用,此文件流行程度是50分(0-100满分)。

需要使用专门的工具才能解压,稍微麻烦了点。工具在这里有提供:

https://rvspace.org/en/Product/VisionFive/Technical_Documents/VisionFive_Single_Board_Computer_Quick_Start_Guide

点击RVspace.org网页左侧的Flashing Fedora OS to a Micro-SD Card可以快速达到。

我是在win10进行操作的,将下载好的解压工具从压缩包里解压出来,和zst文件放在一起。

此时在这个文件夹里的空白处,一只手按住键盘上的Shift键,另一只手按一下鼠标的右键,在此处打开powershell,就可以快速在当前文件夹打开一个命令行窗口。(此处我的 powershell 是自己升级过的,系统自带的是没有带preview的)

执行这条命令就可以解压了,

./zstd.exe -d Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw\.zst -o Fedora-riscv64-jh7100-developer-xfce-Rawhide-20211226-214100.n.0-sda.raw

解压出来的文件差不多 13G,可以使用写盘工具将它写入内存卡中,例如etcher。


开机


之后将内存卡插入开发板,使用HDMI线连接显示器,通电开机,便可进入Fedora了。

默认的用户名是riscv,密码是starfive。

由于没有GPU,且本身只是双核,所以桌面体验会有一些卡顿。于是我放弃用鼠标来控制它,而是选择在电脑上通过ssh来控制它。


通过GPIO控制LED灯


通过这个网页,我们可以了解到这块板子的GPIO信息;

https://rvspace.org/en/Product/General/StarFive_40-Pin_GPIO_Header_User_Guide

准备一颗LED灯,一头连接34号的GND,一头连接40号的GPIO0;

在终端里进行如下的操作(需要 root 身份来执行);

cd /sys/class/gpio
echo 448 > export
cd gpio448
echo out > direction
echo 1 > value

这样便能点亮LED灯;

如果想熄灭它,只需执行

echo 0 > value

官方文档里的这个表格非常重要,刚才我们控制 GPIO0,操作的是 448,如果现在我们想控制 GPIO4,从表格可以查到是 452,那么只需将刚才的 448 换成452 即可让 GPIO4 输出高电平。

用Python脚本监测B站未读消息

我写了一个Python脚本,作用是监测哔哩哔哩上面是否有人给我发私信,也就是我是否有未读消息,如果有的话,则点亮LED灯。而当我看我消息后,脚本检测到目前没有未读消息了,则会将LED灯熄灭。

脚本已放在GitHub 上面,有兴趣的朋友可以参考一下。

https://github.com/powersee/bilibili_unread/blob/master/bili-for-visionfive.py

import requests
import time
import os
# 使用time模块的sleep来控制亮灯熄灯时间间隔
# 使用哪一个针脚,例如 448、450、452 等
gpio = 452
led = '/sys/class/gpio/gpio' + str(gpio)

# 通过浏览器的 F12 获取 
cookiecookie = ""

url_mes = 'https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread?unread_type=0&build=0&mobi_app=web'
headers = {'cookie': cookie}

if os.path.exists(led):
pass
else:    
    os.system(f'echo {gpio} > /sys/class/gpio/export')
    
os.system(f'echo out > {led}/direction')
# 将引脚设置为输出端

# 获取未读消息数量
unread = requests.get(url_mes, headers=headers).json()
unfollow_unread = unread['data']['unfollow_unread']
follow_unread = unread['data']['follow_unread']
num = unfollow_unread + follow_unread
# 如果有未读消息,将未读数量打印出来
    if num:   
       print(num)
#GPIO.output(ioNum, GPIO.HIGH)    
    os.system(f'echo 1 > {led}/value')    
    print(time.asctime(time.localtime(time.time())))
# 引脚输出高电平,LED灯亮起
else:
#    print("No message.")
#GPIO.output(ioNum, GPIO.LOW)    
    os.system(f'echo 0 > {led}/value')
# 引脚设置为低电平,LED灯熄灭

此外,Powersee在RVspace.org和他的博客上分享了另外两篇使用心得,分别是VisionFive串口调试与编译内核RISC-V开源软件安装与编译内核,感兴趣的朋友可自行查看~



想要了解及购买赛昉科技(StarFive)产品,请前往iCEasy商城品牌专区:

https://www.iceasy.com/starfive

iCEasy商城欢迎您的到来!