一种嵌入式LINUX系统中实现串口多路复用的方法

阅读: 评论:0

著录项
  • CN201310164064.0
  • 20130507
  • CN103294630A
  • 20130911
  • 福建鑫诺通讯技术有限公司
  • 赵进云
  • G06F13/38(2006.01)I
  • G06F13/38(2006.01)I G06F9/455(2006.01)I

  • 福建省福州市鼓楼区软件大道89号
  • 中国,CN,福建(35)
  • 福州市鼓楼区京华专利事务所(普通合伙)
  • 宋连梅
摘要
本发明提供一种嵌入式LINUX系统中实现串口多路复用的方法,所述系统包含一CPU、一切换开关芯片及复数个外部装置;CPU通过复数根GPIO脚与切换开关芯片连接;CPU包含至少一CPU串口,CPU串口与切换开关芯片连接;切换开关芯片包含复数个用于与外部装置一一对应连接的外设串口;CPU串口通过切换开关芯片与任意一所述外设串口连通相接;执行后台程序设置复数个虚拟串口;建立通道切换代理模块及复数个与虚拟串口一一对应的接口封装模块;外部应用程序对通过调用通道切换代理模块对后台程序实现串口通道的申请及切换,完成外部应用程序与外部装置的信息交互。本发明的优点在,实施容易,适用性高且低成本。
权利要求

1.一种嵌入式LINUX系统中实现串口多路复用的方法,其特征在于: 所述系统包含一CPU、一切换开关芯片及复数个外部装置;所述CPU通过 复数根GPIO脚与所述切换开关芯片连接;所述CPU包含至少一CPU串口, 该CPU串口与所述切换开关芯片连接;所述切换开关芯片包含复数个用于 与每所述外部装置一一对应连接的外设串口;所述CPU串口通过所述切换 开关芯片与任意一所述外设串口连接;

所述方法具体包括如下步骤:

步骤10、执行后台程序;通过LINUX伪终端技术,给每所述外设串口 虚拟一个与该外设串口对应的虚拟串口;

步骤20、建立一通道切换代理模块及复数个与所述虚拟串口一一对应 的接口封装模块;每所述接口封装模块包含与相应所述外部装置对应的通讯 协议封包;

步骤30、当所述CPU执行的外部应用程序需要通过所述CPU串口与任 意一所述外部装置进行交互时,该外部应用程序通过相应于该外部装置的所 述接口封装模块对所述通道切换代理模块发出代表申请通道的请求信息;所 述通道切换代理模块将该代表申请通道的请求信息发送给所述后台程序;当 所述后台程序判断所述CPU串口与相应的外设串口处于不连通状态时,进 入步骤40;当所述后台程序判断所述CPU串口与相应的外设串口处于连通 状态时,进入步骤50;

步骤40、所述外部应用程序调用相应所述接口封装模块给所述后台程 序发送串口切换指令;所述后台程序依据该串口切换指令对所述CPU串口 进行切换;当所述CPU串口处于空闲状态,所述后台程序将所述CPU串口 与该串口切换指令所指定的外设串口连通,并返回一个申请成功的标识给所 述外部应用程序,进入步骤50;当所述CPU串口处于非空闲状态,所述后 台程序返回一个申请拒绝的标识给所述外部应用程序,返回步骤30;

步骤50、所述外部应用程序调用相应所述接口封装模块发送交互数据; 所述后台程序接收到该交互数据后,将该交互数据写入所述CPU串口到达 相应所述外部装置;所述外部装置将相应于所述交互数据所发送的返回数据 通过所述CPU串口到达所述后台程序,所述后台程序再将该返回数据写入 相应所述接口封装模块发送至所述外部应用程序;

步骤60、完成所述外部应用程序与所述外部装置的信息交互后,所述 外部应用程序调用所述接口封装模块发送代表释放通道的请求信息给所述 后台程序,等待下次所述外部应用程序出现对任意一所述外部装置进行交互 的需求,重新进入步骤30。

说明书
技术领域

本发明具体涉及一种嵌入式LINUX系统中实现串口多路复用的方法。

在嵌入式系统中很多外设都是通过串口的方式同CPU进行通讯的,但是 很多嵌入式处理器(即CPU)含有的串口资源都很少,一般只有一至两个串 口。这时候就会出现串口资源不足的问题。现有的解决方案一般是使用更高 级的处理器,或者是通过总线外扩专门的串口芯片,如此一来便会增加产品 的成本。

本发明要解决的技术问题,在于提供一种嵌入式LINUX系统中实现串 口多路复用的方法,成本低,适用性高。

本发明是这样实现的:一种嵌入式LINUX系统中实现串口多路复用的 方法,所述系统包含一CPU、一切换开关芯片及复数个外部装置;所述CPU 通过复数根GPIO脚与所述切换开关芯片连接;所述CPU包含至少一CPU 串口,该CPU串口与所述切换开关芯片连接;所述切换开关芯片包含复数 个用于与每所述外部装置一一对应连接的外设串口;所述CPU串口通过所 述切换开关芯片与任意一所述外设串口连通相接;

所述方法具体包括如下步骤:

步骤10、执行后台程序;通过LINUX伪终端技术,给每所述外设串口 虚拟一个与该外设串口对应的虚拟串口;

步骤20、建立一通道切换代理模块及复数个与所述虚拟串口一一对应 的接口封装模块;每所述接口封装模块包含与相应所述外部装置对应的通讯 协议封包;

步骤30、当所述CPU执行的外部应用程序需要通过所述CPU串口与任 意一所述外部装置进行交互时,该外部应用程序通过相应于该外部装置的所 述接口封装模块对所述通道切换代理模块发出代表申请通道的请求信息;所 述通道切换代理模块将该代表申请通道的请求信息发送给所述后台程序;当 所述后台程序判断所述CPU串口与相应的外设串口处于不连通状态时,进 入步骤40;当所述后台程序判断所述CPU串口与相应的外设串口处于连通 状态时,进入步骤50;

步骤40、所述外部应用程序调用相应所述接口封装模块给所述后台程 序发送串口切换指令;所述后台程序依据该串口切换指令对所述CPU串口 进行切换;当所述CPU串口处于空闲状态,所述后台程序将所述CPU串口 与该串口切换指令所指定的外设串口连通,并返回一个申请成功的标识给所 述外部应用程序,进入步骤50;当所述CPU串口处于非空闲状态,所述后 台程序返回一个申请拒绝的标识给所述外部应用程序,返回步骤30;

步骤50、所述外部应用程序调用相应所述接口封装模块发送交互数据; 所述后台程序接收到该交互数据后,将该交互数据写入所述CPU串口到达 相应所述外部装置;所述外部装置将相应于所述交互数据所发送的返回数据 通过所述CPU串口到达所述后台程序,所述后台程序再将该返回数据写入 相应所述接口封装模块发送至所述外部应用程序;

步骤60、完成所述外部应用程序与所述外部装置的信息交互后,所述 外部应用程序调用所述接口封装模块发送代表释放通道的请求信息给所述 后台程序,等待下次所述外部应用程序出现对任意一所述外部装置进行交互 的需求,重新进入步骤30。

本发明具有如下优点:CPU串口通过切换开关芯片与复数个外部装置连 接,且CPU通过复数个接口封装模块、通道切换代理模、后台程序使外部应 用程序能灵活地切换对外部装置的连通来相互传输数据,结构简单,灵活性 及适用性高,且成本低。

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明一种嵌入式LINUX系统中实现串口多路复用的方法中的 电路结构示意图。

图2为本发明一种嵌入式LINUX系统中实现串口多路复用的方法的执 行流程图。

图3为本发明一种嵌入式LINUX系统中实现串口多路复用的方法的执 行框图。

请参阅图1至图3所示,一种嵌入式LINUX系统中实现串口多路复用 的方法,所述系统100包含一CPU1、一切换开关芯片2及复数个外部装置 3;所述CPU1通过复数根GPIO脚与所述切换开关芯片2连接;所述CPU1 包含至少一CPU串口11,该CPU串口11与所述切换开关芯片2连接;所 述切换开关芯片2包含复数个用于与每所述外部装置3一一对应连接的外设 串口21;所述CPU串口11通过所述切换开关芯片2与任意一所述外设串 口21连通相接;

所述方法具体包括如下步骤:

步骤10、执行后台程序12;通过LINUX伪终端技术,给每所述外设串 口21虚拟一个与该外设串口21对应的虚拟串口;

步骤20、建立一通道切换代理模块13及复数个与所述虚拟串口一一对 应的接口封装模块14;每所述接口封装模块14包含与相应所述外部装置3 对应的通讯协议封包;

步骤30、当所述CPU1执行的外部应用程序15需要通过所述CPU串口 11与任意一所述外部装置3进行交互时,该外部应用程序15通过相应于该 外部装置3的所述接口封装模块14对所述通道切换代理模块发13出代表申 请通道的请求信息;所述通道切换代理模块13将该代表申请通道的请求信 息发送给所述后台程序12;当所述后台程序12判断所述CPU串口11与相 应的外设串口21处于不连通状态时,进入步骤40;当所述后台程序12判 断所述CPU串口11与相应的外设串口21处于连通状态时,进入步骤50;

步骤40、所述外部应用程序15调用相应所述接口封装模块14,通过所 述通道切换代理模块13给所述后台程序12发送串口切换指令;所述后台程 序12依据该串口切换指令对所述CPU串口11进行切换(即通过切换开关 芯片2将CPU串口11与依据该串口切换指令所指定的外设串口21连通); 当所述CPU串口11处于空闲状态(即CPU串口11未与任意一外设串口 21连通),所述后台程序12将所述CPU串口11与该串口切换指令所指定 的外设串口21连通,并返回一个申请成功的标识给所述外部应用程序15, 进入步骤50;当所述CPU串口11处于非空闲状态(即CPU串口11与任 意一个非依据该串口切换指令所指定的外设串口21连通),所述后台程序 12返回一个申请拒绝的标识给所述外部应用程序15,返回步骤30;

步骤50、所述外部应用程序15调用相应所述接口封装模块14发送交 互数据;所述后台程序12接收到该交互数据后,将该交互数据写入所述CPU 串口11到达相应所述外部装置3;所述外部装置3将相应于所述交互数据 所发送的返回数据通过所述CPU串口11到达所述后台程序12,所述后台 程序12再将该返回数据写入相应所述接口封装模块14发送至所述外部应用 程序15;

步骤60、完成所述外部应用程序15与所述外部装置3的信息交互后, 所述外部应用程序15调用所述接口封装模块14发送代表释放通道的请求信 息给所述后台程序12,等待下次所述外部应用程序15出现对任意一所述外 部装置3进行交互的需求,重新进入步骤30;其中,外部应用程序15可通 过某种用于进程间通讯的IPC机制把代表申请通道或释放通道的请求信息 传递到后台程序12。

本发明在应用时,通过一个多路硬件切换开关芯片把相关串口外设连接 到CPU的某一个串口;并且通过一个后台程序模块,为连接的每一个外设 串口虚拟一个虚拟串口设备(如:pty设备),后台程序负责物理串口和虚拟 串口之间的数据分发和投递。同时负责物理串口(即CPU串口)使用的请 求和释放操作。后台程序根据CPU所执行的外部应用程序所发出的请求(即 请求信息)来确定把物理串口切换到那个外设串口(即将CPU串口切换到 对应的外设串口),同时确定从物理串口接收到的数据投递到那个虚拟串口; 外部应用程序通过这些串口(包含虚拟或物理串口)向外部装置进行数据交 互,而不是直接通过共享的物理串口进行交互。外部应用程序在发起一个交 互操作时要先向后台程序发起通道切换申请,得到成功应答后(即外部应用 程序得到后台程序返回一个申请成功的标识)才能开始交互,交互结束时也 要向后台发起一个释放的请求(即外部应用程序发送代表释放通道的请求信 息给所述后台程序),把共享的物理串口标记为空闲状态。

其中,后台程序主要实现以下功能:

1.)使用LINUX伪终端技术给每个外设串口外设都虚拟出一个对应的虚 拟串口(PTY设备)。设备名可以根据具体的设备类型做命名,比如串口打 印机/dev/printer,智能IC卡则为/dev/icc0,/dev/icc1,条码设备为/dev/barcode等 等。

2.)通过CPU的GPIO脚来控制切换开关芯片,实现CPU串口(物理串口) 的切换申请和释放操作。比如现在要申请同连接在外设串口0上的设备进行交 互,那么通过GPIO来控制切换开关芯片把CPU串口导通(切换)到外设串口 0去。这样CPU串口发送的数据就会送到外设串口0去。同样外设串口0上接收 到的数据也会送到CPU串口的接收端。

3.)实现通道切换申请和释放的服务。外部应用程序可通过某种IPC机制 (进程间通讯)把申请和释放的请求消息传递到此程序。如果目前CPU串口 处于空闲状态,那么会返回一个申请成功的标识给外部应用程序,同时控制 切换开关芯片把CPU串口切换到对应的通道上去。如果CPU串口处于非空闲 状态,则返回一个申请拒绝的标识给外部应用程序。

4.)根据通道的切换情况负责在虚拟串口和CPU串口之间进行数据转发与 投递。比如目前CPU串口被切换到外设串口0上去,那么CPU串口接收到的数 据会被投递到对应的虚拟串口PTY0的设备上去,同时从PTY0虚拟串口上接 收的数据会被投递给CPU串口。

通道切换代理模块主要实现以下功能:通道切换代理模块提供通道切换 请求和释放的接口。供其它程序模块(如:接口封装模块、外部应用程序) 使用。其它模块可直接通过函数调用的方式或IPC的机制来访问此模块提供的 接口。

接口封装模块主要实现以下功能:实现设备的打开(打开物理串口或虚 拟串口)或关闭,以及与外部装置进行交互的串口通讯协议的封装,供其它 应用模块(如:外部应用程序)使用。提供的每个接口中在开始通过串口与 外设进行交互执行时,都会通过接口封装模块来申请和释放通道。申请成功 了才会执行会话操作。最终实现外部应用程序通过接口封装模块所提供的接 口同外设串口进行交互。

后台程序和通道切换代理模块有很强的可扩展性,能够灵活的适应各种 需求的变更。例如:有个串口条码设备,它对应的虚拟串口的设备是 /dev/barcode。之后由于硬件的变更,给此设备分配了一个单独的物理串口而 不在与其它设备共享一个物理串口。那么只需要把新分配的这个物理串口也 命名为/dev/barcode。同时在后台程序或通道切换代理模块中接收到对应的接 口封装模块申请或释放通道的请求时,直接返回成功便可以。外部应用程序 和接口封装模块不需要做任何的改动。这样便可实现硬件变更对应用程序的 透明性,即使是在硬件资源不足的情况下。能够适应各种需求变更。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人 员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发 明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的 修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

本文发布于:2023-04-15 07:08:43,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/87128.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图