新路程------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

相关文章

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

Linux环境配置中问题小结

在Linux环境配置中,遇到问题首先猜测: 1、是否是权限问题; 2、软连接是否配置;

long long,_int64使用小结

前言:   在16位环境下,int/unsigned int 占16位,long/unsigned long占32位   在32位环境下,int占32位,unsigned int占16位,long/unsigned long占32位 何时需要使用:   long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647,而unsigned范围是[0,2^32),

密码学读书笔记小结

密码学是保证消息的私密性和完整性以及消息认证的基础。加密算法的选择和密钥的管理是安全机制的效率、性能和可用性的关键。 公钥加密算法: 分发密钥比较容易,但是对大数据量的加密性能较差密钥加密算法: 更适合大批的加密任务混合型加密协议: 例如TLS,先用公钥加密建立一个安全通道,然后使用通道交换密钥,并将此密钥用于后续数据交换。 对分布式系统攻击的分类: 窃听: 未经授权获得消息副本伪装: 在未

Android 源码中jni项目 加载so目录小结

Android 源码中jni项目 加载so目录小结 文章目录 Android 源码中jni项目 加载so目录小结一、前言二、so目录验证测试1、jni so文件错误报错(1)报错1 - 未找到so文件:(2)报错2 - so文件中未找到native方法: 2、验证的几种情况(1)apk下面的 lib/arm64/ 放置正确的so文件(2)apk下面的 lib/arm64/ 放置错误的so文

maven打包成可执行的jar,以及读取配置文件问题小结

文章来源 https://blog.csdn.net/chasonsp/article/details/88852353 折腾的几天,使用maven打包后发现了问题,首先是打包的配置文件读取问题,使用getResource().getPah()会发现在访问jar包的文件时,路径里会有感叹号(杠杠滴~~)是这样的 …jar!.. 经过不断的查找资料及反复验证后,终于找到了可行的方法:

【硬刚大数据】Flink在实时在实时计算平台和实时数仓中的企业级应用小结

欢迎关注博客主页:https://blog.csdn.net/u013411339 欢迎点赞、收藏、留言 ,欢迎留言交流!本文由【王知无】原创,首发于 CSDN博客!本文首发CSDN论坛,未经过官方和本人允许,严禁转载! 本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的面试部分补充。 大数据领域自 2010 年开始,以 Hadoop、Hive 为代

Kafka常见问题学习路径源码阅读小结 | 写在Kafka3.0发布之际

严格来说,这篇文章也不是今天写的。是之前断断续续写在了几篇文章中。 2021年9月21日,随着Kafka3.0的发布,Kafka在「分布式流处理平台」这个目标上的努力进一步得到加强!Kafka不满足于「消息引擎」的定位,正式基于这样的定位,Kafka 社区于 0.10.0.0 版本正式推出了流处理组件 Kafka Streams,也正是从这个版本开始,Kafka 正式"变身"为分布式的流处理平台

笔记 14 : 彭老师课本第 8 章, UART : 寄存器介绍 ,

(99) 继续介绍 uart 的关于通道的 一整套 寄存器, UCON 等: ++ 接着介绍寄存器 UTRSTAT : ++ 接着介绍读写数据的寄存器: ++ 设置 uart 的波特率,有关的寄存器: ++ (100) (101) 谢谢