微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 4.DB410c开发板设置wifi和button功能测试。

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;
}
编译上面的代码,运行后,多次按下音量上下键,运行结果如下:


根据运行结果我们可以确定按下音量下键,实际运行的结果是音量上键功能被调用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top