网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

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

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

时间:2023-07-10 09:05

人气:

作者:admin

标签: 最小系统  开发板  Linux  RISC-V 

导读:本文从shell命令、脚本、C函数编译到运行、内核态注册等多方面阐述入门Linux开发环境,以经典的点灯和hello world为例子介绍...

评测二、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目的:

wKgZomSpGISAJvfVAACYw4joHf8802.png

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

wKgaomSpGCaAJHqOAU8f8FUHcik866.png

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

wKgZomSpGB-ASnfZAK9b1_SK3VE275.png

图3 shell脚本作业处理

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

wKgZomSpGBiAM6DrAACbEiU9atI319.png

图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就能愉快玩耍了:

wKgaomSpGBiAIAm9AAIZLytok4c348.png

图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就有可执行文件了:

wKgaomSpGBiAFbwlAAA4qwL1siY315.png

图6 scp上传执行文件至Milkv

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

wKgaomSpGBiAV-JLAACXavwYmY8072.png

图7经典hello world

3.内核态函数

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

审核编辑:汤梓红

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

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

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

关注微信