MSM8953 Android 9.0 打开uart串口

目录

MSM8953 Android 9.0 打开uart6串口


msm8953 从硬件规格书中最多是支持4个串口,即除了打印串口外,另外还有3个串口可供系统使用,

本文以调试中打开uart6串口为例说明。

修改步骤如下:

1. 通过硬件资料确认设备树dtsi的修改

基地址:

中断号:

跟进硬件资源修改msm8953.dtsi配置文件

	blsp2_serial1: serial@7af0000 {
		compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
		reg = <0x7af0000 0x200>;
		interrupts = <0 307 0>;
		clocks = <&clock_gcc clk_gcc_blsp2_uart2_apps_clk>,
			<&clock_gcc clk_gcc_blsp2_ahb_clk>;
		clock-names = "core", "iface";
		pinctrl-names = "default","sleep";
		pinctrl-0 = <&uart6_active>;
		pinctrl-1 = <&uart6_sleep>;
		status = "ok";
	};

注意串口6也可以用作SPI的功能。

2.修改pinctrl配置:

			uart6_active: uart6_active {
				mux {
					pins = "gpio20", "gpio21";
					function = "blsp_uart6";
				};

				config {
					pins = "gpio20", "gpio21";
					drive-strength = <2>;
					bias-disable;
				};
			};

			uart6_sleep: uart6_sleep {
				mux {
					pins = "gpio20", "gpio21";
					function = "blsp_uart6";
				};

				config {
					pins = "gpio20", "gpio21";
					drive-strength = <2>;
					bias-pull-down;
				};
			};

3.串口驱动修改:

msm_serial.c增加一组串口配置

	{
		.uart = {
			.iotype = UPIO_MEM,
			.ops = &msm_uart_pops,
			.flags = UPF_BOOT_AUTOCONF,
			.fifosize = 64,
			.line = 3,
		},
	},

4.烧录验证:

[    1.233020] 78b0000.serial: ttyHSL2 at MMIO 0x78b0000 (irq = 68, base_baud = 1200000) is a MSM
[    1.233731] msm_serial 7af0000.serial: msm_serial: detected port #3
[    1.233766] msm_serial 7af0000.serial: uartclk = 19200000
[    1.233818] 7af0000.serial: ttyHSL3 at MMIO 0x7af0000 (irq = 69, base_baud = 1200000) is a MSM

启动代码看到有新的串口节点加载,说明已修改成功。

 

文章图片来源:

https://blog.csdn.net/xuecz1230/article/details/78672662

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
msm8953芯片上运行的Android 9.0系统中,设备树文件(Device Tree Blob,简称DTB)位于/boot/dtb目录下。设备树文件是一种描述硬件信息的数据结构,可以在系统运行时动态加载,用于配置设备的硬件资源。 要在设备树文件中配置GPIO,可以按照以下步骤进行操作: 1. 找到设备树文件中相应的节点,例如UART节点: ``` serial@78b0000 { compatible = "qcom,msm-uartdm-v1.1.1"; reg = <0x0 0x78b0000 0x0 0x1000>; clocks = <&gcc GCC_UART1_AHB_CLK>, <&gcc GCC_UART1_CLK>, <&gcc GCC_BLSP1_AHB_CLK>, <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>; clock-names = "iface", "core", "iface_axi", "qup1_apps", "qup2_apps", "qup3_apps"; interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&intc>; dmas = <&sdhc1 2 0>, <&sdhc1 2 0>; dma-names = "rx", "tx"; status = "disabled"; }; ``` 2. 添加pinctrl节点,例如: ``` pinctrl { uart1_default: uart1_default { pins = "gpio41", "gpio42"; function = "blsp_uart1"; bias-disable; drive-strength = <12>; }; }; ``` 此命令将GPIO41和GPIO42配置为UART1的引脚控制器,并设置其参数。 3. 在UART节点中添加pinctrl配置,例如: ``` serial@78b0000 { pinctrl-names = "default"; pinctrl-0 = <&uart1_default>; ... }; ``` 此命令将UART1的引脚控制器配置为uart1_default。 完成上述步骤后,系统启动时会自动加载设备树文件,并根据所定义的GPIO配置进行硬件初始化。如果您想在应用程序中调用GPIO,可以使用sysfs文件系统中的GPIO接口进行操作。例如,使用以下命令将GPIO4设置为输出模式,并输出高电平: ``` echo 4 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio4/direction echo 1 > /sys/class/gpio/gpio4/value ``` 需要注意的是,GPIO的编号在不同的平台和设备上可能会有所不同,请根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值