主流的嵌入式智能终端如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,展讯,瑞芯微,全志,炬力,君正等主控平台方案中。为开微电子技术支持可以为用户提供驱动代码源代码,并协助支持用户进行移植和适配 。
,