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
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
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
#!/bin/bash
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
从原理图中可以得到我们使用的UART1_RXD和UART1_TXD引脚对应的连接器引脚编号分别为27和28。
通过查表可以得到27和28的PAD NAME分别为UART1_RX_DATA和UART1_TX_DATA。
从原理图中可以得到我们使用的UART2_RXD和UART2_TXD引脚对应的连接器引脚编号分别为72和73。
通过查表可以得到72和73的PAD NAME分别为UART2_RX_DATA和UART2_TX_DATA。
从原理图中可以得到我们使用的UART3_RXD和UART3_TXD引脚对应的连接器引脚编号分别为77和78。
通过查表可以得到77和78的PAD NAME分别为UART3_RX_DATA和UART3_TX_DATA。
(4)UART7
从原理图中可以得到我们使用的UART7_RXD和UART7_TXD引脚对应的连接器引脚编号分别为114和115。
通过查表可以得到114和115的PAD NAME分别为LCD_DATA17和LCD_DATA16。
由上图可知,UART2的IOMUX节点uart2grp下配置了流控引脚RTS和CTS,我们板子没有引出流控引脚,所以这里注释掉流控配置:
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX
pinctrl_uart3: uart3grp {
fsl,pins = <
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
>;
};
添加后效果如下:
MX6UL_PAD_LCD_DATA17__UART7_DCE_RX
MX6UL_PAD_LCD_DATA16__UART7_DCE_TX
pinctrl_uart7: uart7grp {
fsl,pins = <
MX6UL_PAD_LCD_DATA17__UART7_DCE_RX 0x1b0b1
MX6UL_PAD_LCD_DATA16__UART7_DCE_TX 0x1b0b1
>;
};
添加后效果如下:
3、添加设备节点
UART1-UART8的设备节点在arch/arm/boot/dts/imx6ull.dtsi设备树文件中已经存在,我们只需在arch/arm/boot/dts/imx6ull-elf1-emmc.dts将需要的UART使能即可,如已经使能的UART1:
&uart1 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_uart1>;
status = “okay”;
}
&uart2 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_uart2>;
/* fsl,uart-has-rtscts;
*/
/* for DTE mode,add below change */
/* fsl,dte-mode; */
/* pinctrl-0 = <&pinctrl_uart2dte>; */
status = “okay”;
}
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
status = "okay";
};
&uart7 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart7>;
status = "okay";
};
4、编译
单独编译设备树:
. /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 dtbs
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/
进行sync操作后重启开发板:
三、测试
root@ELF1:~# elf1_cmd_serialport ttymxc1 &
root@ELF1:~# elf1_cmd_serialport ttymxc2 -o -b 9600 -t aabbccddeeff 1
root@ELF1:~# elf1_cmd_serialport ttymxc6 -o -b 9600 -t aabbccddeeff 1