全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【新技能Get】小伙写了个Python脚本,用高性能R

时间:2022-04-22 13:39

人气:

作者:admin

标签: RISC  开发板 

导读:✦RVspace.org✦本文转自B站up主Powersee,博客地址:https://powersee.github.io/。另外,RVspace.org社区开通了昉·星光VisionFive中文讨论区,欢迎大家来玩~最近一直在折腾昉·星光VisionFive这块开发板...

RVspace.org

本文转自B站up主Powersee,博客地址:https://powersee.github.io/。另外,RVspace.org社区开通了昉·星光VisionFive中文讨论区,欢迎大家来玩~

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

62ee1afe-bce5-11ec-82f6-dac502259ad0.jpg

写入镜像

这块板子的系统运行和树莓派一样,需要先将系统镜像写入内存卡,再插到板子上来运行。目前官方提供的只有 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可以快速达到。


6304cac4-bce5-11ec-82f6-dac502259ad0.jpg

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


631cea8c-bce5-11ec-82f6-dac502259ad0.jpg

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


6330cf52-bce5-11ec-82f6-dac502259ad0.jpg

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

./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来控制它。


6343ad20-bce5-11ec-82f6-dac502259ad0.jpg

通过GPIO控制LED

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

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


6358d48e-bce5-11ec-82f6-dac502259ad0.jpg

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


636c95dc-bce5-11ec-82f6-dac502259ad0.jpg

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

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

这样便能点亮LED灯;


63815ad0-bce5-11ec-82f6-dac502259ad0.jpg

如果想熄灭它,只需执行

echo 0 > value

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


6395e126-bce5-11ec-82f6-dac502259ad0.jpg

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 获取cookie
cookie = ""

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开源软件安装与编译内核,感兴趣的朋友可自行查看~

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信