本文轉(zhuǎn)自B站up主Powersee,博客地址:https://powersee.github.io/。另外,RVspace.org社區(qū)開(kāi)通了昉·星光VisionFive中文討論區(qū),歡迎大家來(lái)玩~
最近一直在折騰昉·星光VisionFive這塊開(kāi)發(fā)板,這是賽昉推出的可運(yùn)行Linux的RISC-V單板計(jì)算機(jī),處理器是賽昉的昉·驚鴻7100 SoC(JH7100),這是一顆RISC-V架構(gòu)的處理器,工作頻率1.0GHz,64位雙核,內(nèi)核性能對(duì)標(biāo)ARM A55。
寫(xiě)入鏡像
這塊板子的系統(tǒng)運(yùn)行和樹(shù)莓派一樣,需要先將系統(tǒng)鏡像寫(xiě)入內(nèi)存卡,再插到板子上來(lái)運(yùn)行。目前官方提供的只有 Fedora 這個(gè)發(fā)行版,可以在GitHub上找到下載鏈接:https://github.com/starfive-tech/Fedora_on_StarFive
下載完是一個(gè)特殊的壓縮格式,zst,當(dāng)前這種zst格式是一種壓縮文件,是由ZStandard研發(fā)的,作為一種ZStandard壓縮文件使用,此文件流行程度是50分(0-100滿分)。
需要使用專(zhuān)門(mén)的工具才能解壓,稍微麻煩了點(diǎn)。工具在這里有提供:
https://rvspace.org/en/Product/VisionFive/Technical_Documents/VisionFive_Single_Board_Computer_Quick_Start_Guide
點(diǎn)擊RVspace.org網(wǎng)頁(yè)左側(cè)的Flashing Fedora OS to a Micro-SD Card可以快速達(dá)到。
我是在win10進(jìn)行操作的,將下載好的解壓工具從壓縮包里解壓出來(lái),和zst文件放在一起。
此時(shí)在這個(gè)文件夾里的空白處,一只手按住鍵盤(pán)上的Shift鍵,另一只手按一下鼠標(biāo)的右鍵,在此處打開(kāi)powershell,就可以快速在當(dāng)前文件夾打開(kāi)一個(gè)命令行窗口。(此處我的 powershell 是自己升級(jí)過(guò)的,系統(tǒng)自帶的是沒(méi)有帶preview的)
執(zhí)行這條命令就可以解壓了,
./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
解壓出來(lái)的文件差不多 13G,可以使用寫(xiě)盤(pán)工具將它寫(xiě)入內(nèi)存卡中,例如etcher。
開(kāi)機(jī)
之后將內(nèi)存卡插入開(kāi)發(fā)板,使用HDMI線連接顯示器,通電開(kāi)機(jī),便可進(jìn)入Fedora了。
默認(rèn)的用戶名是riscv,密碼是starfive。
由于沒(méi)有GPU,且本身只是雙核,所以桌面體驗(yàn)會(huì)有一些卡頓。于是我放棄用鼠標(biāo)來(lái)控制它,而是選擇在電腦上通過(guò)ssh來(lái)控制它。
通過(guò)GPIO控制LED燈
通過(guò)這個(gè)網(wǎng)頁(yè),我們可以了解到這塊板子的GPIO信息;
https://rvspace.org/en/Product/General/StarFive_40-Pin_GPIO_Header_User_Guide
準(zhǔn)備一顆LED燈,一頭連接34號(hào)的GND,一頭連接40號(hào)的GPIO0;
在終端里進(jìn)行如下的操作(需要 root 身份來(lái)執(zhí)行);
cd /sys/class/gpio
echo 448 > export
cd gpio448
echo out > direction
echo1>value
這樣便能點(diǎn)亮LED燈;
如果想熄滅它,只需執(zhí)行
echo 0 > value
官方文檔里的這個(gè)表格非常重要,剛才我們控制 GPIO0,操作的是 448,如果現(xiàn)在我們想控制 GPIO4,從表格可以查到是 452,那么只需將剛才的 448 換成452 即可讓 GPIO4 輸出高電平。
用Python腳本監(jiān)測(cè)B站未讀消息
我寫(xiě)了一個(gè)Python腳本,作用是監(jiān)測(cè)嗶哩嗶哩上面是否有人給我發(fā)私信,也就是我是否有未讀消息,如果有的話,則點(diǎn)亮LED燈。而當(dāng)我看我消息后,腳本檢測(cè)到目前沒(méi)有未讀消息了,則會(huì)將LED燈熄滅。
腳本已放在GitHub 上面,有興趣的朋友可以參考一下。
https://github.com/powersee/bilibili_unread/blob/master/bili-for-visionfive.py
import requests
import time
import os
# 使用time模塊的sleep來(lái)控制亮燈熄燈時(shí)間間隔
#使用哪一個(gè)針腳,例如448、450、452等
gpio = 452
led = '/sys/class/gpio/gpio' + str(gpio)
# 通過(guò)瀏覽器的 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')
# 將引腳設(shè)置為輸出端
# 獲取未讀消息數(shù)量
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
# 如果有未讀消息,將未讀數(shù)量打印出來(lái)
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')
#引腳設(shè)置為低電平,LED燈熄滅
此外,Powersee在RVspace.org和他的博客上分享了另外兩篇使用心得,分別是VisionFive串口調(diào)試與編譯內(nèi)核和RISC-V開(kāi)源軟件安裝與編譯內(nèi)核,感興趣的朋友可自行查看~
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5064瀏覽量
97587 -
RISC
+關(guān)注
關(guān)注
6文章
462瀏覽量
83754
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論