新路程------imx6的uart小结(1)

2024-09-04 00:58
文章标签 小结 ------ uart 路程 imx6

本文主要是介绍新路程------imx6的uart小结(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 imx6用的是RS485,今天看看这个接口是怎么初始化的。

首先在./arch/arm/mach-mx6/board-mx6q_sabresd.c里找uart的相关信息

在static void __init mx6_sabresd_board_init(void)肯定会有初始化的相关信息

        gpio_request(SABRESD_EPDC_PWRSTAT, "uart2_en"); 申请gpio
gpio_direction_output(SABRESD_EPDC_PWRSTAT, 1);  设置输入输出gpio_set_value(SABRESD_EPDC_PWRSTAT, 1);  设置初始电平gpio_request(SABRESD_EPDC_PWRCTRL0, "uart2_rts");gpio_direction_output(SABRESD_EPDC_PWRCTRL0, 1);gpio_set_value(SABRESD_EPDC_PWRCTRL0, 1);gpio_request(SABRESD_EPDC_PWRCTRL1, "uart3_en");gpio_direction_output(SABRESD_EPDC_PWRCTRL1, 1);gpio_set_value(SABRESD_EPDC_PWRCTRL1, 1);mx6q_sabresd_init_uart();

这里找到了之后,看看mx6q_sabresd_init_uart()

static const struct imxuart_platform_data mx6q_sd_uart3_data __initconst = {
	.flags      = IMXUART_HAVE_RTSCTS,
	.dma_req_rx = MX6Q_DMA_REQ_UART3_RX,
	.dma_req_tx = MX6Q_DMA_REQ_UART3_TX,
};
static inline void mx6q_sabresd_init_uart(void)
{//imx6q_add_imx_uart(2, NULL);imx6q_add_imx_uart(0, NULL);imx6q_add_imx_uart(1, NULL);imx6q_add_imx_uart(2, &mx6q_sd_uart3_data);imx6q_add_imx_uart(3, NULL);imx6q_add_imx_uart(4, NULL);
}
再看看#define imx6q_add_imx_uart(id, pdata) \
imx_add_imx_uart_1irq(&imx6q_imx_uart_data[id], pdata)
接下来是

struct platform_device *__init imx_add_imx_uart_1irq(const struct imx_imx_uart_1irq_data *data,const struct imxuart_platform_data *pdata)
{struct resource res[] = {{.start = data->iobase,.end = data->iobase + data->iosize - 1,.flags = IORESOURCE_MEM,}, {.start = data->irq,.end = data->irq,.flags = IORESOURCE_IRQ,},};return imx_add_platform_device("imx-uart", data->id, res, ARRAY_SIZE(res),pdata, sizeof(*pdata));
}
之前只有uart2有pdata,所以也只有2有用
这个

#ifdef CONFIG_SOC_IMX6Q
const struct imx_imx_uart_1irq_data imx6q_imx_uart_data[] __initconst = {
#define imx6q_imx_uart_data_entry(_id, _hwid) \
imx_imx_uart_1irq_data_entry(MX6Q, _id, _hwid, SZ_4K)
imx6q_imx_uart_data_entry(0, 1),
imx6q_imx_uart_data_entry(1, 2),
imx6q_imx_uart_data_entry(2, 3),
imx6q_imx_uart_data_entry(3, 4),
imx6q_imx_uart_data_entry(4, 5),
};

#define imx_imx_uart_1irq_data_entry(soc, _id, _hwid, _size) \
[_id] = { \
.id = _id, \
.iobase = soc ## _UART ## _hwid ## _BASE_ADDR, \
.iosize = _size, \
.irq = soc ## _INT_UART ## _hwid, \
}

到此为止,在linux系统中就存在了这个uart的pdate和resouce,等到驱动跑起来的时候传入probe的参数就是从这里来的

这篇关于新路程------imx6的uart小结(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134549

相关文章

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3