<p><img decoding="async" loading="lazy" class="aligncenter" src="https://file.eefcdn.com/image/mUGAsKctSq_an6cx9VZq3" width="631" height="470" /></p>
讯享网
一、 准备工作
NXP源码路径:ELF1开发板资料包7-NXP 原厂资料7-1 NXP官方源码linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2
1、将NXP源码拷贝到开发环境home/root/work目录下解压
2、添加默认配置文件
将arch/arm/configs路径下的imx_v7_mfg_defconfig复制一份,命名为imx6ull_elf1_defconfig:
3、添加ELF 1设备树
将arch/arm/boot/dts路径下的imx6ull-14x14-evk.dts复制一份,命名为imx6ull-elf1-emmc.dts:
打开arch/arm/boot/dts/Makefile,找到CONFIG_SOC_IMX6ULL,将imx6ull-elf1-emmc.dts添加到Makefile中:
4、建立交叉编译脚本
建立一个编译脚本build.sh
二、适配六轴传感器
是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的。SPI的通信以主从方式工作,一般需要4根线,MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。i.MX6ULL有4路SPI接口,ELF 1开发板使用了SPI1连接到六轴传感器icm20607上。
1、原理



2、IOMUX配置
在arch/arm/boot/dts/imx6ul-pinfunc.h中找到相关宏:
效果如下:

在添加IOMUX之后,需要检查设备树是否有其它地方复用了LCD_DATA20,LCD_DATA21,LCD_DATA22,LCD_DATA23。
打开arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,搜索引脚PAD NAME,在&iomux的子节点pinctrl_if_dat节点下搜索到以下几个引脚的复用,将其注释掉:

3、设备节点配置
效果如下:

4、添加icm20607驱动

(2)将ELF1开发板资料包2-Linux 源代码2-1 驱动源码1_icm20607icm20607.h拷贝到内核源码的include/linux路径下。

(3)修改Kconfig
添加以下内容:
(4)修改Makefile
添加以下内容:
效果如下:



5、编译
将编译生成的zImage和imx6ull-elf-emmc.dtb拷贝到ELF 1开发板的/run/media/mmcblk1p1 路径下:
三、六轴传感器测试
1、查看/dev下是否生成了设备节点,若生成则表示驱动适配成功

2、使用以下测试程序测试六轴传感器是否可以正确读到数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/165605.html