中小型网站建设平台,百度知道合伙人官网,学做网站论坛视频下载,免费做推广的网站目录
屏幕驱动打印信息
实现触摸屏校验
开发板连接WIFI
连接操作
申请路由器动态IP和ping网络通断
WiFi信息保存位置
常用wifi操作#xff08;wpa_cli工具#xff09;
NFS网络文件系统共享
虚拟机安装NFS服务器
开发板安装NFS客户端
控制开发板
找出硬件设备所对…目录
屏幕驱动打印信息
实现触摸屏校验
开发板连接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/brightnessint 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 1export文件打开错误* arg 2direction文件打开错误**/
extern int beep_init(void);/*** brief 关闭蜂鸣器GPIO的export输出* return* arg 0正常* arg !0value文件打开错误**/
extern int beep_deinit(void);/*** brief 蜂鸣器响* return* arg 0正常* arg !0value文件打开错误**/
extern int beep_on(void);/*** brief 关闭蜂鸣器GPIO的export输出* return* arg 0正常* arg !0unexport文件打开错误**/
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.hint 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.hint 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;
}