4.DB410c开发板设置wifi和button功能测试。
时间:10-02
整理:3721RD
点击:
为开发板设置wifi,以便联网步骤如下:
完成后桌面就显示wifi连接的信息,
ifconfig wlan0可以看到ip地址,通过这个地址可以通过ssh连接到DB410C开发板。
不过系统重启后wifi设置无法保存,只能再次设置wifi才能链接局域网。
button功能测试:
因为尚未编译使用自己的kernel和dts,无法将手里的源代码与实际运行的img对应起来,所以实际测试结果会与代码有出入,要理解原理。
首先我们先来看看button功能gpio的设置。
/opt/DragonBoard/kernel/arch/arm64/boot/dts/qcom下的文件apq8016-sbc.dtsi中有
可以猜测input子系统中的gpio_keys驱动仅仅支持一个button按钮功能,而且其功能为VOLUMEUP.
下面是网上button的测试代码,添加KEY_VOLUMEDOWN和KEY_VOLUMEUP支持。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <time.h>
#include <fcntl.h>
#include <linux/input.h>
int main(int argc, char **argv)
{
int key_state;
int fd;
int ret;
int code;
struct input_event buf;
int repeat_param[2];
fd = open("/dev/input/event0", O_RDONLY);
if (fd < 0)
{
printf("Open gpio-keys failed.\n");
return -1;
}
else
{
printf("Open gpio-keys success.\n");
}
repeat_param[0]=500;//ms重复按键第一次间隔
repeat_param[1]=66;//ms重复按键后续间隔
ret = ioctl(fd,EVIOCSREP,(int *)repeat_param);//设置重复按键参数
if(ret != 0)
{
printf("set repeat_param fail!\n");
}
else
{
printf("set repeat_param ok.\n");
}
while(1)
{
ret = read(fd,&buf,sizeof(struct input_event));
if(ret <= 0)
{
printf("read fail!\n");
return -1;
}
code = buf.code;
key_state = buf.value;
printf("Key_%c state= %d. code=0x%x KEY_VOLUMEUP=0x%x\n",code,key_state, code, KEY_VOLUMEUP, KEY_VOLUMEDOWN);
switch(code)
{
case KEY_VOLUMEUP:
code = '5';
printf("*KEY_VOLUMEUP*\n");
break;
case KEY_VOLUMEDOWN:
code = '6';
printf("*KEY_VOLUMEDOWN*\n");
break;
case KEY_ENTER:
code = '2';
break;
case KEY_HOME:
code = '3';
break;
case KEY_POWER:
code = '4';
break;
default:
code = 0;
break;
}
if(code!=0)
{
printf("Key_%c state= %d.\n",code,key_state);
}
}
close(fd);
printf("Key test finished.\n");
return 0;
}
编译上面的代码,运行后,多次按下音量上下键,运行结果如下:
根据运行结果我们可以确定按下音量下键,实际运行的结果是音量上键功能被调用。