嵌入式Linux串口扩展的驱动设计方案解析

主流的嵌入式智能终端如POS机、物流终端、车载导航、工业平板等,均采用Linux为操作系统(Android的内核实质也是Linux),当这类产品要连接多个外设时,需要扩展外部接口。PC行业主流的USB扩展外设在嵌入式领域实际应用中存在兼容性和稳定性的问题,调试起来也较为复杂。因此,目前在嵌入式领域,稳定和通用的扩展外设方式,仍旧是串口连接(含UART,RS232,RS485)。

  本方案介绍WK2X系列UARTs在嵌入式Linux(Android)下扩展多串口方案,尤其是嵌入式Linux串口扩展的驱动设计方案的思路和原则。

  嵌入式系统产品的软件主要包括驱动设计、系统移植、和应用APP设计。本方案主要介绍WK2X在LINUX下的驱动程序设计,这是方案设计中的重点和难点。

  嵌入式系统的驱动程序是linux系统内核和设备硬件之间的接口,把系统调用映射到具体设备对于实际硬件的特定操作上,具体关系可以参见附图:

方案设计要点:

  通过这种方法,应用程序就可以像操作普通文件一样操作硬件设备,用户程序只需要关心这个抽象出来的文件,而一切同硬件打交道的工作都交给了驱动程序。比如要向屏幕输出一串字符串,我们只需要把字符串写到显卡所抽象出来的文件里,而真正把字符串传到显卡里的工作就是由驱动程序来完成的。

  在Linux下,驱动程序是内核的一部分,运行在内核态下,有两种加载方式:

  可以将驱动静态的和内核编译在一起,缺点是内核会比较大,而且如果驱动出错,会导致整个系统崩溃;

  也可以module的方式编译,在需要的时候动态的载入。

  为开微电子提供的WK2X系列串口Android 驱动程序,基于Linux内核开发的TTY标准设备驱动,提供2.6~3.0/3.1~4.4两个版本,Linux3.1内核以上驱动版本采用DTS设备树架构,这两个版本是目前应用较广的版本,可以很方便移植到其它版本的Linux中,该驱动已经实际应用到多个量产平台中,在Android5.0-8.0系统版本中均长期稳定工作。

  典型应用案例:

  目前已经成功的应用于INTEL ATOM,CSR,高通,MTK,展讯,瑞芯微,全志,炬力,君正等主控平台方案中。为开微电子技术支持可以为用户提供驱动代码源代码,并协助支持用户进行移植和适配 。

注:文章来源于网络,如有侵权请联系删除。

2020年9月2日 10:14