【Milk-V Duo开发板免费体验】评测二、Linux最小系统验证

电子说

1.3w人已加入

描述

评测二、Linux最小系统验证

          控制GPIO有3种方式,shell命令、用户态函数或者脚本、内核态函数,详细见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设置方向,敲击echo 0 > /sys/class/gpio/gpio506/value输出0电平,echo 1 > /sys/class/gpio/gpio506/value输出1电平,不停切换就能实现电平切换达到blinky目的:

最小系统

图1 创建设备文件以及配置GPIO方向

最小系统

图2 实际切换效果

2.用户态函数或脚本

上述不用手动输命令太费事,提高效率的方法就是用脚本或函数来作业处理,先touch main.sh,然后vi main.sh用户态脚本可以如下:

 

#!/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执行就能看到效果:

最小系统

图3 shell脚本作业处理

脚本语法不熟,可以C语言控制:

最小系统

图4 传统C语言控制

但发现没有带gcc编译器,安装发现回到上篇评测的问题了,网络问题没解决暂时无法安装软件,于是Windows主机SDK交叉编译,执行文件上传Milkv,再运行,弊端就是无法调试。首先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开发编译环境搭建

再Windows下输入riscv64-unknown-linux-gnu-gcc -static -o blink blink.c交叉编译生成RISC-V环境固件,由于Milkv的外网一直未解决包括Ethernet或WiFi,由于SSH有scp和rsync传输工具,就临时解决了通信问题,输入scp F:ElectronicsMilk-Vcvi_mmf_sdkblink root@192.168.42.1:/mxj,然后Milkv就有可执行文件了:

最小系统

图6 scp上传执行文件至Milkv

输入chmod +x ./blink,再./blink但一直报错“Segmentation fault”,可能程序问题,因为用网友https://community.milkv.io/t/duo-shell-c/46的例子验证就能成功点灯,不妨本地hello world交叉编译再上传milkv运行发现果然可行:

最小系统

图7 经典hello world

3.内核态函数

这个没测试,待做,第1章节的链接有讲怎么注册进内核并运行

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分