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、添加默認(rèn)配置文件
將arch/arm/configs路徑下的imx_v7_mfg_defconfig復(fù)制一份,命名為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、建立交叉編譯腳本
建立一個(gè)編譯腳本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 *
給予腳本權(quán)限
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ chmod 777 build.sh
從原理圖中可以得到我們使用的UART1_RXD和UART1_TXD引腳對(duì)應(yīng)的連接器引腳編號(hào)分別為27和28。
通過查表可以得到27和28的PAD NAME分別為UART1_RX_DATA和UART1_TX_DATA。
從原理圖中可以得到我們使用的UART2_RXD和UART2_TXD引腳對(duì)應(yīng)的連接器引腳編號(hào)分別為72和73。
通過查表可以得到72和73的PAD NAME分別為UART2_RX_DATA和UART2_TX_DATA。?????
從原理圖中可以得到我們使用的UART3_RXD和UART3_TXD引腳對(duì)應(yīng)的連接器引腳編號(hào)分別為77和78。
通過查表可以得到77和78的PAD NAME分別為UART3_RX_DATA和UART3_TX_DATA。
(4)UART7
從原理圖中可以得到我們使用的UART7_RXD和UART7_TXD引腳對(duì)應(yīng)的連接器引腳編號(hào)分別為114和115。
通過查表可以得到114和115的PAD NAME分別為LCD_DATA17和LCD_DATA16。
由上圖可知,UART2的IOMUX節(jié)點(diǎn)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、添加設(shè)備節(jié)點(diǎn)
UART1-UART8的設(shè)備節(jié)點(diǎn)在arch/arm/boot/dts/imx6ull.dtsi設(shè)備樹文件中已經(jīng)存在,我們只需在arch/arm/boot/dts/imx6ull-elf1-emmc.dts將需要的UART使能即可,如已經(jīng)使能的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、編譯
單獨(dú)編譯設(shè)備樹:
. /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/
進(jìn)行sync操作后重啟開發(fā)板:
三、測(cè)試
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