Serial port 带GPIO的串行Linux嵌入式驱动程序
我正在尝试开发一个与设备通信的驱动程序。 我的驱动程序使用sysfs与用户空间通信,并使用rs232从外部设备发送/接收信息。我的Boad和其他设备通过rs232通信,但我不知道如何在驱动程序中使用我的rx、tx、cts/rts初始化此通信。 我看到了很多关于tty的信息。但是没有关于直接使用GPIO进行rs232通信的内容 结构 用户->板 |-----rx------|Serial port 带GPIO的串行Linux嵌入式驱动程序,serial-port,driver,kernel,gpio,Serial Port,Driver,Kernel,Gpio,我正在尝试开发一个与设备通信的驱动程序。 我的驱动程序使用sysfs与用户空间通信,并使用rs232从外部设备发送/接收信息。我的Boad和其他设备通过rs232通信,但我不知道如何在驱动程序中使用我的rx、tx、cts/rts初始化此通信。 我看到了很多关于tty的信息。但是没有关于直接使用GPIO进行rs232通信的内容 结构 用户->板 |-----rx------| |-----tx------| |-----cts----- 装置 如果有人有想法:) 感谢您@Makit,1)首先阅
|-----tx------|
|-----cts-----
装置 如果有人有想法:)
感谢您@Makit,1)首先阅读处理器的《技术参考手册》(TRM)。了解如何配置外部设备连接到的UART端口。需要编写/开发固件(独立于操作系统的代码),您将在其中配置一些uart寄存器,例如:线路控制寄存器(LCR),其中in将配置启动、奇偶校验、停止位(8N1)并且需要根据TRM中的公式配置波特率,并将适当的值分配给DLL和DLH寄存器。在此之后,-->2)开始开发具有常见文件操作(打开、关闭、读取和写入)的字符设备驱动程序。之后,需要使用“ioremap\u nocache”内核api映射已识别的uart端口寄存器,并使用返回值(指针值)使用ioread[8 | 16 | 32]/iowrite[8 | 16 | 32]读取/写入外部设备。Uart设备驱动程序将使用开发的固件代码来配置Uart寄存器,读取和写入外部设备。请随时反馈:-)。@Makit,1)首先阅读处理器的技术参考手册(TRM)。了解如何配置外部设备连接到的UART端口。需要编写/开发固件(独立于操作系统的代码),您将在其中配置一些uart寄存器,例如:线路控制寄存器(LCR),其中in将配置启动、奇偶校验、停止位(8N1)并且需要根据TRM中的公式配置波特率,并将适当的值分配给DLL和DLH寄存器。在此之后,-->2)开始开发具有常见文件操作(打开、关闭、读取和写入)的字符设备驱动程序。之后,需要使用“ioremap\u nocache”内核api映射已识别的uart端口寄存器,并使用返回值(指针值)使用ioread[8 | 16 | 32]/iowrite[8 | 16 | 32]读取/写入外部设备。Uart设备驱动程序将使用开发的固件代码来配置Uart寄存器,读取和写入外部设备。请随时反馈:-)。最近在我的职业生涯中,我遇到了类似的问题。我们用完了硬件UART,需要在GPIO上使用单线实现UART协议 现在,如果我正确地理解了您(或者我是否错过了您正在询问的特定体系结构?),那么您正在尝试在某种可以(或正在)运行linux的微处理器上实现这一点。根据您的硬件和可用的调试工具/程序员类型,您几乎有两种选择来运行基本的裸机(读取:无操作系统)UART通信,这些通信可以在操作系统级别通过linux内核中的串行端口配置进行扩展(通常简化)。我不会详细介绍如何在操作系统级别配置串行端口,但如果您可以在裸机上进行配置,则可以在操作系统中进行配置;我将重点介绍两个基本解决方案 编辑:我现在意识到,您的操作系统确实已经成熟。下面的所有内容都是关于固件的,您必须开发这些固件,并与所描述的Gautham Kantharaju调用相关联。因此,UART软件可能并非完全有用 这些是: