前提:因为需要把BeagleBoard-x15这个开发板当做OpenPLC的Server端,与IO板之间是进行UART通信,所以我这里使用的是UART1(ttyS0)这个串口,但是该引脚默认当成GPIO口,故需要修改dts文件使能该串口。另外,UART3(ttyS2)默认是打开的,已当成串口调试口,可连接开发板与PC端Linux上用minicom进行调试。开发环境:1)开发板:BeagleBoard-x152)kernel:linux
4.9.69-ti-rt-r853)工具:PinMux一、用PinMux进行引脚复用1)进入TI提供的云工具页面:https://dev.ti.com/ ,这里面还提供了很多其它有用的工具来帮助大家开发,这里选择PinMux,登录进入主页面,这里选择自己开发板SoC的型号,我这里用AM5728_SR2.0,点击Start![](data/attach/1907/41alaanwok936710n0gskmvoi0t3mm3u.jpg)
注:和AM5828_SR1.1_beta有什么区别,这里没有细分)2)进行复用界面
![](https://img-blog.csdn.net/20180323090234352)
解读:左边是选择你想复用的外围设备,我这里添加UART,中间是配置选项更改Use Case为SW flow control,右边上面是一些配置文件,可以看到这里生成了8个文件,前四个是用于TI官方的RTOS系统,后三个用于linux设备树的更改,最后一个.cvs是一个Excel文档,总结所用到的引脚的相关信息,电压域,上下拉等。右下图是一张引脚功能图,可以看到刚刚被我们复用的是哪个引脚,绿 {MOD}那两个分别是UART1的rxd(Pin B27),一个是txd(Pin C26)。二、根据提供的三个Linux 配置文件修改dts1)三个文件的内容分别为(1)devicetree
![](https://img-blog.csdn.net/20180323092814271)
(2)
genericFileFormatIOdelay.txt 是个空文件![](https://img-blog.csdn.net/20180323092841253)
(3)
genericFileFormatPadConf.txt ![](https://img-blog.csdn.net/20180323092938857)
我开发板使用的设备树启动文件是am57xx-beagle-x15-revc.dtb,这个二进制文件是由am57xx-beagle-x15-revc.dts编译而成,故我们需要修改的实际是dts,在am57xx-beagle-x15-revc.dts中添加(设备树文件位于{linux-kernel}/KERNEL/arch/arm/boot/dts/)
&dra7_pmx_core {
gpio_keys_pins_default: gpio_keys_pins_default {
pinctrl-single,pins = <
DRA7XX_CORE_IOPAD(0x358C, PIN_INPUT_PULLUP | MUX_MODE14) /* cam0_field.gpio4_2 */
>;
};
myuart1_pins_default: myuart1_pins_default {
pinctrl-single,pins = <
DRA7XX_CORE_IOPAD(0x37E0, PIN_INPUT | MUX_MODE0)
DRA7XX_CORE_IOPAD(0x37E4, PIN_INPUT | MUX_MODE0)
>;
};
};
2)在linux kernel目录下编译生成dtb
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am57xx-beagle-x15-revc.dts3)替换掉开发板中的dtb文件,然后启动,用 dmesg | grep “ttyS” 查看是否成功
![](https://img-blog.csdn.net/20180323094243346)
可以看到ttyS0(UART1)已经成功启动!三、查找bb-x15的原理图 BEAGLEBOARD_X15_REV_B1.pdf 看UART1对应的引脚是哪两个
![](https://img-blog.csdn.net/2018032309475735)
通过上图使用3根杜邦线连接P18的30 和60,还有任意一个地线即可进行uart的通信了!