1、获取linux内核
git clone https://github.com/beagleboard/linux.git
2、编译linux内核
2.1、清理工程
make distclean
2.2、配置内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- omap2plus_defconfig
2.3、编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2
2.4、将内核镜像复制到根文件系统
将内核目录arch/arm/boot目录中的zImage重命名为vmlinuz-5.18-rc4(名称和使用的内核版本有关),
然后再将其拷贝到根文件系统的/boot目录中,并修改/boot/uEnv.txt文件,将uname_r=5.18-rc4;
3、使用TI提供的Sysconfig云端开发工具,配置串口管脚复用
3.1、地址:https://dev.ti.com/sysconfig
3.2、选择设备 AM5728_SR1.1_beta或AM5728_SR2.0,点击START;
3.3、Sysconfig配置步骤
选择UART外设,然后再现在需要使用的串口,本例中使选择了4个串口,具体如下图;
4、修改设备树
4.1 根据Sysconfig生成的配置文件来对设备树进行修改
在Sysconfig界面的右边会生成几个文件,我们选中genericFileFormatPadConf.txt,里面的内容是后面修改设备树的依据,如下图:
4.2、修改设备树文件
在am57xx-beagle-x15-revc.dts文件中追加如下内容:
&uart2{status = "okay";
};
&uart8{status = "okay";
};
&uart9{status = "okay";
};
&uart10{status = "okay";
};&dra7_pmx_core {uart2_pins_default: uart2_pins_default {pinctrl-single,pins = <DRA7XX_CORE_IOPAD(0x37F0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_rxd */DRA7XX_CORE_IOPAD(0x37F4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart2_txd */>;};uart8_pins_default: uart8_pins_default {pinctrl-single,pins = <DRA7XX_CORE_IOPAD(0x37D0, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart8_rxd */DRA7XX_CORE_IOPAD(0x37D4, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart8_txd */>;};uart9_pins_default: uart9_pins_default {pinctrl-single,pins = <DRA7XX_CORE_IOPAD(0x3744, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart9_rxd */DRA7XX_CORE_IOPAD(0x3748, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart9_txd */>;};uart10_pins_default: uart10_pins_default {pinctrl-single,pins = <DRA7XX_CORE_IOPAD(0x3688, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart10_rxd */DRA7XX_CORE_IOPAD(0x368C, PIN_INPUT_PULLUP | MODE_SELECT | MUX_MODE3) /* uart10_txd */>;};};
4.3、重新编译设备树
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
4.4、拷贝设备树并重启系统
编译完成后将am57xx-beagle-x15-revc.dtb拷贝到开发板的/boot/dts/5.18-rc4目录中,
需要手动创建5.18-rc4目录,然后重启开发板,重启完成后输入命令`dmesg | grep tty`,
出现如下信息输则配置成功,其中ttyS2为调试串口,其余四个串口为我们新增的串口,
后面就可以使用linux串口编程来进行串口通信啦。