准备工作
ELF1开发板资料包 7-NXP 原厂资料 7-1 NXP官方源码linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2
1.将NXP源码拷贝到开发环境home/root/work目录下解压:
elf@ubuntu:~/work$ tar jvxf linux-imx-imx_4.1.15_2.0.0_ga.tar.bz2
elf@ubuntu:~/work$ cd linux-imx-imx_4.1.15_2.0.0_ga/
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ls
2.添加默认配置文件
将arch/arm/configs路径下的imx_v7_mfg_defconfig复制一份
命名为imx6ull_elf1_defconfig:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/configs/imx_v7_mfg_defconfig arch/arm/configs/imx6ull_elf1_defconfig
3.添加ELF 1设备树
复制一份imx6ull-14x14-evk.dts,命名为imx6ull-elf1-emmc.dts作为我们ELF 1的设备树:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp arch/arm/boot/dts/imx6ull-14x14-evk.dts arch/arm/boot/dts/imx6ull-elf1-emmc.dts
打开arch/arm/boot/dts/Makefile
找到CONFIG_SOC_IMX6ULL,添加我们刚刚创建的设备树:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi arch/arm/boot/dts/Makefile
4.建立交叉编译脚本
建立一个编译脚本build.sh:
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vim build.sh
export CPUS=`grep -c processor /proc/cpuinfo`
source /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
make distclean
make imx6ull_elf1_defconfig
make -j${CPUS}
rm -rf ./.tmp
make modules_install INSTALL_MOD_PATH=./.tmp/rootfs/
cd .tmp/rootfs/
tar -jcvf modules.tar.bz2 *
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh
适配LED
1.在主控板原理图中找到LED_R、LED_G、LED_Y三个小灯:
2.IOMUX配置
打开设备树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomuxc节点下添加子节点
效果如下
(注意:在IOMUX配置环节,一定要确保一个引脚只被复用为一个功能,如果同一个引脚在其它地方被复用成另一个功能,很可能影响到我们期望的功能。)
3.设备节点配置
在设备树中添加完IOMUX配置相关代码之后,接下来在设备树中添加供GPIO子系统使用的相关配置。在根节点的backlight节点上面添加子节点leds:
效果如下:
4.配置LED驱动编译进内核
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make imx6ull_elf1_defconfig
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig
搜索LEDS_GPIO,看到LEDS_GPIO [=y]说明此驱动已经编译进内核:
5.编译
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root@192.168.2.101:/run/media/mmcblk1p1
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@192.168.2.101:/run/media/mmcblk1p1
6.开发板保存重启
root@ELF1~# sync
root@ELF1~# reboot
重启后可以看到开发板上的绿色和黄色LED为点亮状态。在设备树中LED2和LED3的default-state属性配置为on,所以这两个LED默认是打开的状态。
LED测试
1.查看节点,可以看到在/sys/class/leds下已经生成了我们配置的3个LED
root@ELF1:~# ls /sys/class/leds/
led1 led2 led3 mmc0:: mmc1::
2.控制LED1亮
root1 > /sys/class/leds/led1/brightness :~# echo
3.控制LED1灭
root0 > /sys/class/leds/led1/brightness :~# echo
4.设置LED1为心跳灯
root@ELF1:~# cat /sys/class/leds/led1/trigger
默认led1的触发器为none,现在把它改为heartbeat,就可以实现心跳灯的效果。
root/sys/class/leds/led1/trigger
:~# echo heartbeat >
现在就可以看到红色LED灯为心跳闪烁的状态。
以上就完成了在NXP源码基础上适配ELF 1开发板的LED功能,希望能对屏幕前的小伙伴提供帮助。