野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11196|回复: 10

关于UART4与UART5,从IIC改为UATR,求助

[复制链接]
发表于 2020-5-7 11:08:27 | 显示全部楼层 |阅读模式
看了野火的资料,UART4与UART5被配置成立IIC接口,我现在想改为UART口,需要怎么改内核文件,有没有相关教程。
回复

使用道具 举报

发表于 2020-5-7 14:53:00 | 显示全部楼层
应该是改设备树就行,不用改内核,野火板子目前是以dtbo方式加载的各种接口驱动,你也可以直接在dtb里面添加,但是要禁掉相关引脚的dtbo,以防冲突。
回复 支持 反对

使用道具 举报

发表于 2020-5-7 15:01:15 | 显示全部楼层
可以在dts文件中添加

&uart4 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart4>;
        status = "okay";
};

&uart5 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart5>;
        status = "okay";
};

......

&iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog_1>;
......
        pinctrl_uart4: uart4grp {
                fsl,pins = <
                        MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
                        MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
                >;
        };

        pinctrl_uart5: uart5grp {
                fsl,pins = <
                        MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1
                        MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1
                >;
        };
......
};

然后重新编译dtb,替换sd卡上原有的dtb文件。
回复 支持 反对

使用道具 举报

发表于 2020-5-7 15:08:34 | 显示全部楼层
由于在这里把引脚用作了UART4和UART5,与原来有所改变,就需要修改一下sd卡boot分区下的uEnv.txt,对如下两句原I2C接口的dtbo进行注释,防止与新添加的UART引脚冲突:
#dtoverlay=/lib/firmware/imx-fire-i2c1-overlay.dtbo
#dtoverlay=/lib/firmware/imx-fire-i2c2-overlay.dtbo
处理好sd卡后试着从板子上启动一下,进入系统后看看/dev目录下,应该会多出来ttymxc3和ttymxc4,因为是从0开始计数,实际上对应的就是UART4和UART5。
回复 支持 反对

使用道具 举报

发表于 2020-5-7 15:14:09 | 显示全部楼层
上面说的方法是直接添加在了dts中,当然你也可以按照野火用的dtbo方式,更为灵活,仿照UART2、UART3来做就行,uEnv.txt中以dtbo的方式加载了UART2和UART3:
dtoverlay=/lib/firmware/imx-fire-uart2-overlay.dtbo
dtoverlay=/lib/firmware/imx-fire-uart3-overlay.dtbo
你可以仿照着2/3的样子来加载4/5.

另附各接口的dtbo源码位置:
https://github.com/Embedfire/ebf ... master/overlays/ebf
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 15:24:26 | 显示全部楼层
gaofong 发表于 2020-5-7 15:01
可以在dts文件中添加

&uart4 {

imx6ull上面有很多个,dts文件,具体改哪一个
TIM截图20200507152404.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 15:26:28 | 显示全部楼层
gaofong 发表于 2020-5-7 15:14
上面说的方法是直接添加在了dts中,当然你也可以按照野火用的dtbo方式,更为灵活,仿照UART2、UART3来做就 ...

我试试,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 15:46:21 | 显示全部楼层
gaofong 发表于 2020-5-7 15:14
上面说的方法是直接添加在了dts中,当然你也可以按照野火用的dtbo方式,更为灵活,仿照UART2、UART3来做就 ...

新生成的dtbo文件放到内核编译吗?还是说直接放到系统的某个文件夹就行了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-7 16:03:47 | 显示全部楼层
gaofong 发表于 2020-5-7 15:14
上面说的方法是直接添加在了dts中,当然你也可以按照野火用的dtbo方式,更为灵活,仿照UART2、UART3来做就 ...

我下载源码试了下,按照uart2和3添加了uart4和5,make时出错
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
/bin/sh: 1: dtc: not found
  DTC     overlays/ebf/imx-fire-485r1-overlay.dtbo
/bin/sh: 1: dtc: not found
Makefile:185: recipe for target 'overlays/ebf/imx-fire-485r1-overlay.dtbo' failed
make[1]: *** [overlays/ebf/imx-fire-485r1-overlay.dtbo] Error 127
Makefile:130: recipe for target 'all_ebf' failed
make: *** [all_ebf] Error 2
回复 支持 反对

使用道具 举报

发表于 2020-5-7 18:30:05 | 显示全部楼层
江湖个人 发表于 2020-5-7 16:03
我下载源码试了下,按照uart2和3添加了uart4和5,make时出错
/bin/sh: 1: dtc: not found
/bin/sh: 1: dt ...

我的方法是把dtbo的源码放在了与imx6ull-seeed-npi.dts同一个目录下,然后修改一下这个目录下的Makefile,把自己加入的dtbo源码也加进去,按照dtb文件来生成,Makefile如下

# SPDX-License-Identifier: GPL-2.0

dtb-$(CONFIG_SOC_IMX6UL) += \
        imx6ull-seeed-npi.dtb \
        imx-fire-uart2-overlay.dtb \
        imx-fire-uart3-overlay.dtb \
        imx-fire-uart4-overlay.dtb \
        imx-fire-uart5-overlay.dtb \

targets += dtbs dtbs_install
targets += $(dtb-y)

subdir-y        := overlays

# Enable fixups to support overlays on imx6ull platforms
ifeq ($(CONFIG_SOC_IMX6UL),y)
        DTC_FLAGS ?= -@
endif

# Enable fixups to support overlays on BCM2835 platforms
ifeq ($(CONFIG_ARCH_BCM2835),y)
        DTC_FLAGS ?= -@
endif

然后执行生成dtb的那个脚本dtbs.sh,进行编译,再将生成的dtb尾缀改成dtbo,拷贝到/lib/firmware/,是可以用的(记得在uEnv.txt中加载),之所以按照dtb来生成,是因为直接写dtbo会报错,所以不得已而为之的,自己研究出来的套路,见笑,如果有小伙伴知道生成dtbo正常的方法,还请指点一下。
回复 支持 反对

使用道具 举报

发表于 2020-5-7 18:33:33 | 显示全部楼层
江湖个人 发表于 2020-5-7 16:03
我下载源码试了下,按照uart2和3添加了uart4和5,make时出错
/bin/sh: 1: dtc: not found
/bin/sh: 1: dt ...

这个Makefile我精简过,原版貌似编译了很多不相关的dtb出来,我都给删掉了,编译倒花不了多少时间,但从一大堆dtb文件中找寻自己需要的那个,太费劲了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 18:58 , Processed in 0.036452 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表