飞凌开发板更新设备树

飞凌开发板更新设备树

前言

此次设备树的更改旨在增加arm板的GPIO输入和输出接口,驱动保持不变。输入接口使用的是arm板的按键驱动,输出接口使用的是arm板的led驱动。

在移植了设备树之后,增加的GPIO输入和输出接口可以使用相应的shell命令或者c语言程序进行使用。

这里新增了2个输入2个输出:分别是:P8接口的CSI_DATA0、CSI_DATA1、CSI_DATA2、CSI_DATA3这4个引脚。

其中CSI_DATA0、CSI_DATA1这2个输出引脚分别对应设备树中的/sys/class/leds/mygpio1和/sys/class/leds/mygpio

CSI_DATA2和CSI_DATA3做为输入引脚。
在这里插入图片描述

准备

由于文件的拷贝这里使用的是ssh的方法,所以先确定开发板与虚拟机网络是否正常,输入ifconfig命令查看开发板的IP地址与虚拟机的地址是否在一个网段,然后如果不在一个网段,就需要调整网络:

调整网络

首先修改开发板中的/etc/network/interfaces 文件设置开发板ip,保证能够与开发环境互相ping 通。address 和gateway 都需要根据实际情况修改。

root@ELF1:~# vi /etc/network/interfaces

在这里插入图片描述
重启网络服务,然后使用ping进行网络测试:

root@ELF1:~# /etc/rc5.d/S01networking restart

拷贝设备树

网络正常之后就可以把设备树拷贝到开发板中,这里使用的是SSH的方式:

elf@ubuntu:~/work/linux-4.1.15-elf1$ scp ./arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@192.168.2.232:/run/media/mmcblk1p1/

开发板重启

拷贝完设备树之后输入sync命令刷新arm硬盘数据,然后重启arm板。

root@ELF1:~# sync
root@ELF1:~# reboot

测试输出

开发板重启之后可以使用相应的led控制方法来控制新增的GPIO:

root@ELF1:~# echo 1 > /sys/class/leds/mygpio1/brightness
root@ELF1:~# echo 0 > /sys/class/leds/mygpio1/brightness
root@ELF1:~# echo 1 > /sys/class/leds/mygpio2/brightness
root@ELF1:~# echo 0 > /sys/class/leds/mygpio2/brightness

或者使用c语言的方法:

system("echo 1 > /sys/class/leds/mygpio1/brightness");

无论使用何种方法应该可以使用万用表或者别的方式测试到开发板P8排针的CSI_DATA0和CSI_DATA1这两个引脚变成了高电平和低电平。

测试输入

输入可以通过shell命令的方式来测试,输入evtest命令:

root@ELF1:~# evtest

然后接下来是选择event事件,这里我们是模拟的按键所以选择event2,也就是输入2
在这里插入图片描述

当显示这样的界面表示程序已经准备好接收你的按键信息了,这里的KEY_4和KEY_5就是新增的输入了。
在这里插入图片描述

当你给开发板P8排针的CSI_DATA2和CSI_DATA3这两个引脚高电平或者低电平的时候应该可以看到以下信息:
在这里插入图片描述

这个就是KEY_5这个引脚的信息。

接下来还可以通过c语言的方式进行测试。

在虚拟机中写一个c语言程序:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <linux/input.h>
#include <unistd.h>
#include <string.h>

int Ts_Read()
{
    int fd;
    struct input_event val;
    fd = open("/dev/input/event2",O_RDWR);
    if(-1 == fd)
    {
        return -1;
    }
    while (1)
    {
       read(fd,&val,sizeof(val));
       printf("type = %d, code = %d, value = %d\r\n", val.type, val.code, val.value);
       if(val.type == EV_KEY)
       {
           if(val.code == KEY_4)
           {
                if(val.value == 1)
                    system("echo 1 > /sys/class/leds/led1/brightness");
                else if(val.value == 0)
                    system("echo 0 > /sys/class/leds/led1/brightness");
           }
           if(val.code == KEY_5)
           {
                if(val.value == 1)
                    system("echo 1 > /sys/class/leds/led2/brightness");
                else if(val.value == 0)
                    system("echo 0 > /sys/class/leds/led2/brightness");
           }
       }
    }
}

int main()
{
    Ts_Read();
}

将此程序使用交叉编译到开发板中运行,就可以看到arm发板中的LED灯随着P8排针的CSI_DATA2和CSI_DATA3这两个引脚高电平或者低电平变化而变化。

如果安装了飞凌的交叉编译器显示找不到$CC这个命令,可以配置以下$CC的环境变量:

elf@ubuntu:~/work/linux-4.1.15-elf1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值