野火i.mx 6ull上手

目录

屏幕驱动打印信息

实现触摸屏校验

开发板连接WIFI

连接操作

申请路由器动态IP和ping网络通断

WiFi信息保存位置

常用wifi操作(wpa_cli工具)

NFS网络文件系统共享

虚拟机安装NFS服务器

开发板安装NFS客户端

控制开发板

找出硬件设备所对应的设备节点文件

找出驱动程序规定的设备文件使用方式

硬件命令行控制

文件管理控制硬件

LED灯

蜂鸣器

按键输入检测


屏幕驱动打印信息

root权限echo "1 4 1 7" > /proc/sys/kernel/printk       或

sudo sh -c "sudo echo "1 4 1 7" > /proc/sys/kernel/printk

实现触摸屏校验

第一次进入Linux系统时,会出现触摸校验提示,按提示校准5个点就可以了。

如果想重新校验,需进入root权限执行操作

rm /etc/pointercal(删除校准文件)

reboot(重启开发板)

此时就可以重新校验触摸屏了。

开发板连接WIFI

SD卡和WIFI共用同一SDIO接口(需注意跳线帽的连接),cat /etc/issue可查看镜像(不同镜像fire-config不一样)。

连接操作

终端输入sudo fire-config(打开野火配置工具),选择Network--WiFi config--Onboard Enable/Disable the on board WiFi of npi-Pro board--Enable--Finish--Yes(重启)。

重启完毕后,重新终端输入sudo fire-config,选择Network--WiFi config--WiFi scan。然后选择WiFi,输入名称、密码。返回首页,选择Finish。

终端输入sudo ifconfig查看网络连接状态。

申请路由器动态IP和ping网络通断

udhcpc -b -i wlan0

ping www.baidu.com

WiFi信息保存位置

打开WiFI账号密码配置文件:sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

常用wifi操作(wpa_cli工具)

sudo ifconfig wlan0 down:关闭wifi

sudo ifconfig wlan0 up:启动wifi

wpa_cli -i wlan0 status:查看当前连接状态

wpa_cli -i wlan0 list_networks:列出输入过的网络

wpa_cli -i wlan0 disconnect AP1:断开当前连接AP1名Wifi 

wpa_cli -i wlan0 reconnect AP1:重新连接AP1名Wifi或其他 

wpa_cli -i wlan0 select_network AP2:切换连接list_networks里的AP2名Wifi 

wpa_cli -i wlan0 remove_network AP2:删除不用的AP1名Wifi(删除前需断开) 

wpa_cli -i wlan0 save_config:保存配置(如执行完上诉删除操作,需要执行保存,否则重启后重新使用上次配置)

NFS网络文件系统共享

虚拟机安装NFS服务器

更新软件列表:sudo apt-get update

安装NFS服务器:sudo apt-get install nfs-kernel-server -y(安装完成后会生成/etc/exports文件)

创建共享文件夹:sudo mkdir -p /home/couvrir/桌面/sharedir

打开/etc/exports添加配置信息:/home/couvrir/桌面/sharedir *(rw,sync,no_root_squash)

更新exports配置:sudo exportfs -arv

查看NFS共享情况:showmount -e

*代表所有网段的主机都能够访问(读写权限,同步,root权限)。同步是指对文件夹进行读写时,它是实时地写入到磁盘里,不会一直存在于缓冲区。no_root_squash是指root用户具有挂在目录的全部操作权限。

开发板安装NFS客户端

更新软件列表:sudo apt-get update

安装NFS客户端:sudo apt-get install nfs-common -y

查看NFS服务器共享文件夹目录:showmount -e "NFS服务器IP"

挂载NFS文件系统:sudo mount -t nfs "NFS服务器IP":/home/couvrir/桌面/sharedir /mnt

控制开发板

找出硬件设备所对应的设备节点文件

/dev目录:对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件全部特性。

/sys目录:业余程序员使用,一个设备节点文件只控制硬件的一个特性。严格来说,它的文件是Linux内核导出到用户空间的硬件操作接口。

找出驱动程序规定的设备文件使用方式

Linux系统引脚编号规则(针对i.MX 6ull):(组号 - 1)* 32 + 组内引脚编码。例如GPIO1_19,组号为1,组内引脚编码为19,所以GPIO1_19在Linux内核的引脚编号为19。

/sys/class/gpio/export:导出GPIO子系统硬件操作接口。

/sys/class/gpio/gpio19/direction:控制芯片引脚的输入输出模式。in--输入,out--输出。

/sys/class/gpio/gpio19/value:控制芯片引脚的输出电平。1--高电平,0--低电平。

硬件命令行控制

sudo sh -c 'sudo echo 255 > /sys/class/leds/blue/brightness:调蓝色LED至最亮

sudo sh -c 'sudo echo 0 > /sys/class/leds/blue/brightness:调蓝色LED至最暗

sudo echo 19 > /sys/class/gpio/export

sudo sh -c "sudo echo out > /sys/class/gpio/gpio19/direction"

sudo sh -c "sudo echo 1 > /sys/class/gpio/gpi19/value"

文件管理控制硬件

LED灯

led.c文件

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>//ARM 开发板LED设备的路径
#define RLED_DEV_PATH "/sys/class/leds/red/brightness"
#define GLED_DEV_PATH "/sys/class/leds/green/brightness"
#define BLED_DEV_PATH "/sys/class/leds/blue/brightness"int main(int argc, char* argv[])
{int red_fd, green_fd, blue_fd;int res = 0;printf("This is the led demo\n");//获取红灯的设备文件描述符red_fd = open(RLED_DEV_PATH, O_WRONLY);if(r_fd < 0){printf("Fail to Open %s device\n", RLED_DEV_PATH);exit(1);}//获取绿灯的设备文件描述符green_fd = open(GLED_DEV_PATH, O_WRONLY);if(r_fd < 0){printf("Fail to Open %s device\n", GLED_DEV_PATH);exit(1);}//获取蓝灯的设备文件描述符blue_fd = open(BLED_DEV_PATH, O_WRONLY);if(r_fd < 0){printf("Fail to Open %s device\n", BLED_DEV_PATH);exit(1);}while(1){write(red_fd, "255", 3);sleep(1);write(red_fd, "0", 1);write(green_fd, "255", 3);sleep(1);write(green_fd, "0", 1);write(blue_fd, "255", 3);sleep(1);write(blue_fd, "0", 1);}
}

蜂鸣器

beep.h文件

#ifndef _BSP_BEEP_H
#define _BSP_BEEP_H//蜂鸣器的GPIO引脚号
//i.mx 6ull 计算方式:GPIOn_IOx = (n-1)*32 + x
//如GPIO1_IO19 = (1-1)*32 + 19 = 19
#define BEEP_GPIO_INDEX "19"/*** @brief 初始化蜂鸣器GPIO* @return*      @arg 0:正常*      @arg 1:export文件打开错误*      @arg 2:direction文件打开错误**/
extern int beep_init(void);/*** @brief 关闭蜂鸣器GPIO的export输出* @return*      @arg  0:正常*      @arg !0:value文件打开错误**/
extern int beep_deinit(void);/*** @brief 蜂鸣器响* @return*      @arg  0:正常*      @arg !0:value文件打开错误**/
extern int beep_on(void);/*** @brief 关闭蜂鸣器GPIO的export输出* @return*      @arg  0:正常*      @arg !0:unexport文件打开错误**/
extern int beep_off(void);#endif

beep.c文件

#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include "../include/beep.h"int beep_init(void)
{int fd;char gpio_path_direction[40] = {0};/*******************索引配置********************/fd = open("/sys/class/gpio/export", O_WRONLY);if(fd < 0)return 1;write(fd, BEEP_GPIO_INDEX, strlen(BEEP_GPIO_INDEX));close(fd);/*******************索引配置********************//*******************方向配置********************/sprintf(gpio_path_direction, "/sys/class/gpio/gpio%d/direction", BEEP_GPIO_INDEX);fd = open(gpio_path_direction, O_WRONLY);if(fd < 0)return 2;write(fd, "out", strlen("out"));close(fd);/*******************方向配置********************/return 0;
}int beep_deinit(void)
{int fd;fd = open("/sys/class/gpio/unexport", O_WRONLY);if(fd < 0)return 1;write(fd, BEEP_GPIO_INDEX, strlen(BEEP_GPIO_INDEX));close(fd);return 0;
}int beep_on(void)
{int fd;char gpio_value[40] = {0};sprintf(gpio_value, "/sys/class/gpio/gpio%d/value", BEEP_GPIO_INDEX);fd = open(gpio_value, O_WRONLY);if(fd < 0)return 1;write(fd, "1", 1);close(fd);
}int beep_off(void)
{int fd;char gpio_value[40] = {0};sprintf(gpio_value, "/sys/class/gpio/gpio%d/value", BEEP_GPIO_INDEX);fd = open(gpio_value, O_WRONLY);if(fd < 0)return 1;write(fd, "0", 1);close(fd);rerurn 0;
}

main.c文件

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include "../include/beep.h"int main(int argc, char* argv[])
{int res = 0;char buf[10];printf("This is the beep demo\n");res = beep_init();if(res){printf("beep init error, code = %d\n", res);return 0;}while(1){printf("please input the value: 0--off 1--on q--exit\n");scanf("%10s", buf);switch(buf[0]){case '0':beep_off();break;case '1':beep_on();break;case 'q':beep_deinit();printf("Exit\n");return 0;default:break;}}
}

按键输入检测

key按键的设备文件:/dev/input/by-path/platform-gpio-keys-event

struct input_event

{

  struct timeval time;  //记录输入事件的时间戳

  __u16 type;     //记录输入事件的类型,比如按键输入、坐标输入、特殊类型(EV_SYN,同步事件,提醒我们及时处理已经发生的完成输入事件)

  __u16 code;     //记录输入类型的具体事件代号,比如键盘发生按键输入类型事件时,记录键盘哪个值被按下

  __s32 value;     //记录事件的具体值,比如按键输入类型事件里,1--按键被按下,0--按键被弹起

};

input子系统:按键、键盘、鼠标、触摸屏等。

main.c文件

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <linux/input.h>
#include <linux/input-event-codes.h>//开发板的KEY按键,请根据实际情况修改
const char default_path[] = "/dev/input/by-path/platform-gpio-keys-event";int main(int argc, char* argv[])
{int fd;struct input_event event;char *path;printf("This is a input device demo\n");//若无输入参数则使用默认事件设备if(argc > 1 )path = argv[1];elsepath = (char *)default_path;fd = open(path, O_RDONLY);if(fd < 0){printf("Fail to open device:%s\n", path);exit(1);}printf("Test device:%s\n", input);while(1){if( read(fd, &event, sizeof(event)) == sizeof(event)){//EV_SYN是事件分隔标志,不打印if(event.type != EV_SYN){printf("Event:time %ld.%ld,type %d,code %d,value %d\n",event.time.tv_sec, event.time.tv_usec,event.type,event.code,event.value);}}}close(fd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97233.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

n5173b是德科技keysight N5173B信号发生器

产品概述 是德科技/安捷伦N5173B EXG模拟信号发生器 当您需要平衡预算和性能时&#xff0c;是德科技N5173B EXG微波模拟信号发生器是经济高效的选择。它提供解决宽带滤波器、放大器、接收机等参数测试的基本信号。执行基本LO上变频或CW阻塞&#xff0c;低成本覆盖13、20、31.…

Python土力学与基础工程计算.PDF-螺旋板载荷试验

python 求解代码如下&#xff1a; 1. import numpy as np 2. 3. # 已知参数 4. p_a 100 # 标准压力&#xff0c; kPa 5. p np.array([25, 50, 100, 200) # 荷载&#xff0c; kPa 6. s np.array([2.88, 5.28, 9.50, 15.00) / 10 # 沉降量&#xff0c; cm 7. D 10 # 螺旋板直…

在Windows Server 2008上启用自动文件夹备份

要在Windows Server 2008上启用自动文件夹备份&#xff0c;您可以使用内置的Windows备份功能。下面是如何设置它的方法&#xff1a; 1. 点击“开始”按钮并选择“服务器管理器”&#xff0c;打开“服务器管理器”。 2. 在“服务器管理器”窗口中&#xff0c;单击左侧窗格中的“…

kafka-- kafka集群 架构模型职责分派讲解

一、 kafka集群 架构模型职责分派讲解 生产者将消息发送到相应的Topic&#xff0c;而消费者通过从Topic拉取消息来消费 Kafka奇数个节点消费者consumer会将消息拉去过来生产者producer会将消息发送出去数据管理 放在zookeeper

【C# 基础精讲】异步和同步的区别

异步&#xff08;Asynchronous&#xff09;和同步&#xff08;Synchronous&#xff09;是在编程中经常遇到的两种执行模式。它们涉及到程序中任务的执行方式以及对资源的管理方式。在本文中&#xff0c;我们将深入探讨异步和同步的区别、使用场景以及在 C# 中如何实现异步编程。…

git merge规则

参考文档&#xff1a;https://juejin.cn/post/7129333439299321887 丹尼尔&#xff1a;Hi&#xff0c;蛋兄&#xff0c;周杰伦都出新专辑了&#xff0c;你咋还不更新啊&#xff0c;真的打算半年一更啊&#xff1f; 蛋先生&#xff1a;好像确实是这样&#xff0c;要不&#xff0…

threejs使用gui改变相机的参数

调节相机远近角度 定义相机的配置&#xff1a; const cameraConfg reactive({ fov: 45 }) gui中加入调节fov的方法 const gui new dat.GUI();const cameraFolder gui.addFolder("相机属性设置");cameraFolder.add(cameraConfg, "fov", 0, 100).name(…

python:tkinter + cef 模仿 mdict 界面

cefpython3 其上游是C开发的CEF&#xff08;基于webkit、V8&#xff09;&#xff0c; CEF 即 (Chromium Embedder Framework)&#xff0c; 是基于Google Chromium项目的开源 Web browser控件(WebView)。 可查看github文档&#xff1a;cefpython api pip install cefpython3 c…

车载APP软件外包开发流程

车载APP的开发流程涉及多个阶段&#xff0c;从概念到发布都需要仔细的规划和执行。以下是一个一般性的车载APP开发流程概述&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.需求分析和规划&#xff…

vulnhub靶机DarkHole_2

靶机下载地址&#xff1a;DarkHole: 2 ~ VulnHub 靶机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.145 扫描服务 nmap -sV -sT -O -p22,80 192.168.21.145 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.145 这里有git源码泄露 git clone mirrors…

x.view(a,b)及x = x.view(x.size(0), -1) 的理解说明

x.view()就是对tensor进行reshape&#xff1a; 我们在创建一个网络的时候&#xff0c;会在Foward函数内看到view的使用。 首先这里是一个简单的网络&#xff0c;有卷积和全连接组成。它的foward函数如下&#xff1a; class NET(nn.Module):def __init__(self,batch_size):sup…

1.flink快速入门

前言 下图表示的是一个简单的flink-job的计算图&#xff0c;这种图被称为DAG(有向无环图)&#xff0c;表示的这个任务的计算逻辑&#xff0c;无论是spark、hive、还是flink都会把用户的计算逻辑转换为这样的DAG&#xff0c;数据的计算按照DAG触发&#xff0c;理论上只要构建出…

Seaborn数据可视化(一)

目录 1.seaborn简介 2.Seaborn绘图风格设置 21.参数说明&#xff1a; 2.2 示例&#xff1a; 1.seaborn简介 Seaborn是一个用于数据可视化的Python库&#xff0c;它是建立在Matplotlib之上的高级绘图库。Seaborn的目标是使绘图任务变得简单&#xff0c;同时产生美观且具有信…

【脚本推荐】网页字体渲染插件

下图是三种网页字体增强的效果对比。 **SUM&#xff1a;**前面两个都是通过脚本运行&#xff0c;而最后一个是通过扩展插件&#xff1b;中间的脚本&#xff08;字体渲染&#xff09;效果是最好的&#xff0c;可惜输入框没有效果&#xff0c;也就意味着如果现在网页上写写学习笔…

2023最新版本~KEIL5使用C++开发STM32

先看效果 开始教学 因为是第一次写这个配置教程 我会尽量详细些 打开一个Keil工程 移除本地core 添加在线core 第一次编译代码 不会有报错 修改main.c文件类型为C 点击魔术棒 把ARM编译器修改为V6 第二次编译会报错语法不兼容 我把汇编部分的这些代码做了…

Mac 使用 rar 命令行工具解压和压缩文件

在 Mac 中常遇到的压缩文件有 zip 和 rar 格式的&#xff0c;如果是 zip 格式的 Mac 系统默认双击一下文件就能直接解压了&#xff0c;但 rar 文件就不行。 需要额外下载 rar 工具了实现。 第一步&#xff1a;下载 rar 工具 工具网址&#xff1a;https://www.rarlab.com/dow…

安防监控视频云存储平台EasyNVR通道频繁离线的原因排查与解决

安防视频监控汇聚EasyNVR视频集中存储平台&#xff0c;是基于RTSP/Onvif协议的安防视频平台&#xff0c;可支持将接入的视频流进行全平台、全终端分发&#xff0c;分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求&#xf…

记录一次arcgis engine开发版本引入问题

之前基于arcigs 10.1vs2013开发的程序&#xff0c;现在拿出来要改&#xff0c;但是目前版本是arcgis10.7vs2017/vs2019,打开后无论如何替换引用版本&#xff0c;都报错 &#xff08;具体版本对应可以看这&#xff1a;ArcGIS Engine 与 Visual Studio 版本对照表_vs2019对应啥版…

神经网络基础-神经网络补充概念-02-逻辑回归

概念 逻辑回归是一种用于二分分类问题的统计学习方法&#xff0c;尽管名字中带有"回归"一词&#xff0c;但实际上它用于分类任务。逻辑回归的目标是根据输入特征来预测数据点属于某个类别的概率&#xff0c;然后将概率映射到一个离散的类别标签。 逻辑回归模型的核…

Git命令详解

1 常用命令 1&#xff09;初始化本地仓库 git init <directory> 是可选的&#xff0c;如果不指定&#xff0c;将使用当前目录。 2&#xff09;克隆一个远程仓库 git clone <url> 3&#xff09;添加文件到暂存区 git add <file> 要添加当前目录中的所…