評測二、Linux最小系統(tǒng)驗證
控制GPIO有3種方式,shell命令、用戶態(tài)函數(shù)或者腳本、內(nèi)核態(tài)函數(shù),詳細見https://doc.sophgo.com/cvitek-develop-docs/master/docs_latest_release/CV180x_CV181x/zh/01.software/OSDRV/Peripheral_Driver/build/html/7_GPIO_Operation_Guide.html#id5。
1.shell命令
不妨以GPIOA26為例,外接一上拉電阻和LED。由文檔可知XGPIOA組號為480,所以GPIOA26組好值為480+25=506,敲擊echo 506 > /sys/class/gpio/export申請資源,稍后就能看到/sys/class/gpio下新建了一gpio506文件,敲擊echo out > /sys/class/gpio/gpio506/direction設(shè)置方向,敲擊echo 0 > /sys/class/gpio/gpio506/value輸出0電平,echo 1 > /sys/class/gpio/gpio506/value輸出1電平,不停切換就能實現(xiàn)電平切換達到blinky目的:
圖1創(chuàng)建設(shè)備文件以及配置GPIO方向
圖2實際切換效果
2.用戶態(tài)函數(shù)或腳本
上述不用手動輸命令太費事,提高效率的方法就是用腳本或函數(shù)來作業(yè)處理,先touch main.sh,然后vi main.sh用戶態(tài)腳本可以如下:
#!/bin/sh LED_GPIO=/sys/class/gpio/gpio506 if test -d $LED_GPIO; then echo "GPIOA26 already exported" else echo 506 > /sys/class/gpio/export fi echo out > $LED_GPIO/direction while true; do echo 0 > $LED_GPIO/value sleep 0.5 echo 1 > $LED_GPIO/value sleep 0.5 done
敲擊./main.sh執(zhí)行就能看到效果:
圖3 shell腳本作業(yè)處理
腳本語法不熟,可以C語言控制:
圖4傳統(tǒng)C語言控制
但發(fā)現(xiàn)沒有帶gcc編譯器,安裝發(fā)現(xiàn)回到上篇評測的問題了,網(wǎng)絡(luò)問題沒解決暫時無法安裝軟件,于是Windows主機SDK交叉編譯,執(zhí)行文件上傳Milkv,再運行,弊端就是無法調(diào)試。首先WSL命令輸入:git clone --recursive https://github.com/sophgo/cvi_mmf_sdk,再敲擊sudo apt install dialog python3-dev make git bc gcc flex bison ninja-build libssl-dev rsync pkg-config device-tree-compiler squashfs-tools parted dosfstools安裝,缺依賴裝依賴。然后去https://developer.sophgo.com/site/index/material/32/all.html下載工具鏈并解壓到剛才cvi_mmf_sdk目錄下,再敲擊source build/cvisetup.sh,此時riscv64-unknown-linux-gnu-gcc還未生效,再敲擊defconfig cv1800b_sophpi_duo_sd再輸入riscv64-unknown-linux-gnu-gcc –version就能愉快玩耍了:
圖5 SDK開發(fā)編譯環(huán)境搭建
再Windows下輸入riscv64-unknown-linux-gnu-gcc -static -o blink blink.c交叉編譯生成RISC-V環(huán)境固件,由于Milkv的外網(wǎng)一直未解決包括Ethernet或WiFi,由于SSH有scp和rsync傳輸工具,就臨時解決了通信問題,輸入scp F:ElectronicsMilk-Vcvi_mmf_sdkblink root@192.168.42.1:/mxj,然后Milkv就有可執(zhí)行文件了:
圖6 scp上傳執(zhí)行文件至Milkv
輸入chmod +x ./blink,再./blink但一直報錯“Segmentation fault”,可能程序問題,因為用網(wǎng)友https://community.milkv.io/t/duo-shell-c/46的例子驗證就能成功點燈,不妨本地hello world交叉編譯再上傳milkv運行發(fā)現(xiàn)果然可行:
圖7經(jīng)典hello world
3.內(nèi)核態(tài)函數(shù)
這個沒測試,待做,第1章節(jié)的鏈接有講怎么注冊進內(nèi)核并運行
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11329瀏覽量
209970 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5096瀏覽量
97825 -
最小系統(tǒng)
+關(guān)注
關(guān)注
9文章
252瀏覽量
29122 -
RISC-V
+關(guān)注
關(guān)注
45文章
2307瀏覽量
46301
發(fā)布評論請先 登錄
相關(guān)推薦
評論