CN102866976A - 一种嵌入式系统中串口分时复用方法 - Google Patents
一种嵌入式系统中串口分时复用方法 Download PDFInfo
- Publication number
- CN102866976A CN102866976A CN2012103436615A CN201210343661A CN102866976A CN 102866976 A CN102866976 A CN 102866976A CN 2012103436615 A CN2012103436615 A CN 2012103436615A CN 201210343661 A CN201210343661 A CN 201210343661A CN 102866976 A CN102866976 A CN 102866976A
- Authority
- CN
- China
- Prior art keywords
- data
- target data
- serial ports
- multiplexing method
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种嵌入式系统中串口分时复用方法,包括:1)在驱动层根据接收到的数据的帧头和帧尾筛选目标数据;2)把筛选出的所述目标数据送入数据缓冲区;3)调用ioctl()函数把数据缓冲区的所述目标数据拷贝到应用层;4)从应用层获取所述目标数据。依据本发明的串口分时复用方法不影响原有线路规程的情况下,实现了直接获取串口数据的目的,从而实现串口复用。
Description
技术领域
本发明涉及一种串口分时复用方法。
背景技术
串口,即串行接口,广泛应用于通信终端设备和工业控制中,如RS-232、RS-242、RS485等。串口多路复用是指在一条物理串行接口上实现多个数据链路连接(DLC),使得可以同时在一条串行接口上存在多个会话,比如语音、数据、USSD等。而分时复用(TDMA,Time Division Multiplex Access)则是在网络中应用于用一条线路传输多路数据,基于分时段应用线路的技术,简单点说,就是把多个工作的每个工作都分成多个时间段,然后各个工作的各个时间段交叉使用,这样就好像多个工作同时运行。
随着数字化智能化的发展,嵌入式行业发展迅速,其中很大一部分应用是自动控制,串口无疑是设备控制的最佳选择,如何实现高效、精确、实时的串口通信是嵌入式控制编程的一大任务。
目前很多芯片的功能是多元化的,其外设也不会针对某个特殊应用特别设计,因此就可能出现串口数量不够等问题,此时,如何巧妙高效的复用串口是降低系统复杂程度、提升系统健壮性的关键。
在一些应用中,通过增加开关和设置软件参数,并对寄存器进行控制的方式,解决在同一串口上驱动功能与调试输出功能分时复用的问题,以保证串口驱动功能与调试输出功能之间顺畅地进行切换。这种应用中,匹配终端所需要执行的功能设置一个标志位,并在如手机串口与功能模块之间增加一屏蔽开关,使串口驱动与调试输出互斥,通过所述标志位表示如串口驱动的状态,调试输出根据该状态而呈现出另一种状态,据以实现串口驱动功能与调试输出功能之间的切换。这种方式只能分时段的进行相关功能的切换,相互制约,串口并不能得到有效地使用。
Linux系统为终端设备提供了丰富的接口,巧妙的运用这些接口函数能解决一些常规思路不能解决的问题,而且还不会影响当前常规的应用,其中ioctl()函数能根据参数的不同回传特定的数据或者参数,发明人认为对Linux提供的接口函数进行探索来解决串口分时复用方面的问题尤其可行性。
发明内容
因此,本发明从串口驱动入手,提供一种嵌入式系统中串口分时复用方法,在不影响原有线路规程的情况下,实现了直接获取串口数据的目的,从而实现串口复用。
本发明采用以下技术方案:
该发明一种嵌入式系统中串口分时复用方法,包括:
1)在驱动层根据接收到的数据的帧头和帧尾筛选目标数据;
2)把筛选出的所述目标数据送入数据缓冲区;
3)调用ioctl()函数把数据缓冲区的所述目标数据拷贝到应用层;
4)从应用层获取所述目标数据。
依据本发明的上述嵌入式系统中串口分时复用方法,从串口驱动入手,从串口接收函数筛选目标数据,把筛选出来的目标数据送入数据缓冲区,利用ioctl()函数把数据缓冲区的数据拷贝到应用层,这样既不影响原有的线路规程,还实现了直接获取串口数据的目的,从而实现串口服用。
上述嵌入式系统中串口分时复用方法,所述步骤1)中筛选目标数据的过程是通过数据帧头和帧尾来确定帧尾是否是所需要的数据帧,若是,则将对应的目标数据放入到数据缓冲区,同时,数据缓冲区标志位置位;如果不是则不做处理。
上述嵌入式系统中串口分时复用方法,串口建立连接后,接收函数按字节开始接收数据,在接收到帧头一计数器开始计数,并在接收到帧尾后停止计数,通过计数器的计数判断数据的类型。
上述嵌入式系统中串口分时复用方法,如果收到应用层获取所述目标数据的命令后,首先判断该命令与数据缓冲区所存放数据是否对应,若对应,则读取缓冲区标志,如果是标志位置位,则使用copy_to_user()函数把对应的命令帧拷贝到itctl()函数传输的地址,并返回约定好的返回值,确认返回值后缓冲区标志清零。
附图说明
图1为依据本发明的一种驱动层筛选数据的流程图。
图2为依据本发明的一种应用层获取数据的流程图。
图3为内核层ioctl()函数处理流程图。
具体实施方式
应用于控制领域的数据一般都是约定好的具有帧头和帧尾的命令帧,但由于依据本发明的方法显然也可以应用于其他数据的筛选和应用,针对不同的数据,其帧长和帧头都有规范定义,因此,应用本发明的方法,匹配不同的数据类型,可以获得所需要的目标数据。
在以下的内容中,以命令帧为例进行说明,也在于在控制领域的数据一般都是约定好的具有帧头和帧尾的命令帧,且也相对最为重要。应当理解的是,在如图1至3所示的流程中,针对命令帧数据的获得,其他数据的排除可知,数据类型多样同样存在于控制领域,且也据此可知相应不同的目标数据的获得,可以针对不同的数据,最终获取所需要的数据类型。针对其他类型的数据,概括的表现在与如说明书附图1至3所示的命令帧相同的处理流程中。
参照说明书附图1,针对以命令帧为目标数据,串口接收函数按字节开始接受数据,依据帧头特征,接收到帧头,分配一个计数器,在接收到帧头后开始计数,依据命令帧的字节数,接收到既定的字节数后通过判断是否接收到对应的帧尾,从而依据命令真的长度确定接收到的数据是否为命令帧。在此过程中,如果在既定的字节数后的字节并非帧尾,丢掉该数据,或者转由Linux终端设备线路规程处理,减少运算量。
在一些应用中,某些帧头会有命令帧标识,同通过该标识确定数据类型,可以据此省略命令帧获取的后续步骤。
在图1所示的流程中,在计数器累积的数值等于命令帧字节数时,通过判断帧尾确定是否为命令帧,若非,则对下一帧数据进行判断;若是,则将该帧数据拷贝到数据缓冲区,同时该数据缓冲区标志置位,以备调用。
如图2所示,是应用层调用ioctl()函数获取数据的流程,串口驱动的ioctl()函数在被调用后,如果是应用层获取数据的命令,则判断数据缓冲区的标志,如果标志置位,则使用copy_to_user()函数把数据缓冲区的命令帧拷贝到itctl()函数传入的地址,并返回约定好的特定的返回值。
进而,依据说明书附图3,应用层获取数据的步骤为:应用层获取数据的函数接口是ioctl()函数,调用该函数时需要两个参数:获取数据的命令和数据返回地址。调用函数后,如果返回值为所述的约定好的特定的返回值,则返回地址中就是需要的命令帧。
在前述的内容中,在数据缓冲区的数据被应用层调取后,缓冲区的标志清零。
经过大量的长时间实验,依据本发明的在嵌入式系统中应用的串口分时复用方法能够相对高效的接收串口数据,复用的串口能完成两个独立的功能,互不影响。
Claims (4)
1.一种嵌入式系统中串口分时复用方法,其特征在于,包括:
1)在驱动层根据接收到的数据的帧头和帧尾筛选目标数据;
2)把筛选出的所述目标数据送入数据缓冲区;
3)调用ioctl()函数把数据缓冲区的所述目标数据拷贝到应用层;
4)从应用层获取所述目标数据。
2.根据权利要求1所述的嵌入式系统中串口分时复用方法,其特征在于,所述步骤1)中筛选目标数据的过程是通过数据帧头和帧尾来确定帧尾是否是所需要的数据帧,若是,则将对应的目标数据放入到数据缓冲区,同时,数据缓冲区标志位置位;如果不是则不做处理。
3.根据权利要求2所述的嵌入式系统中串口分时复用方法,其特征在于,串口建立连接后,接收函数按字节开始接收数据,在接收到帧头一计数器开始计数,并在接收到帧尾后停止计数,通过计数器的计数判断数据的类型。
4.根据权利要求2或3所述的嵌入式系统中串口分时复用方法,其特征在于,如果收到应用层获取所述目标数据的命令后,首先判断该命令与数据缓冲区所存放数据是否对应,若对应,则读取缓冲区标志,如果是标志位置位,则使用copy_to_user()函数把对应的命令帧拷贝到itctl()函数传输的地址,并返回约定好的返回值,确认返回值后缓冲区标志清零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210343661.5A CN102866976B (zh) | 2012-09-17 | 2012-09-17 | 一种嵌入式系统中串口分时复用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210343661.5A CN102866976B (zh) | 2012-09-17 | 2012-09-17 | 一种嵌入式系统中串口分时复用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102866976A true CN102866976A (zh) | 2013-01-09 |
CN102866976B CN102866976B (zh) | 2015-03-11 |
Family
ID=47445854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210343661.5A Active CN102866976B (zh) | 2012-09-17 | 2012-09-17 | 一种嵌入式系统中串口分时复用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102866976B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365798A (zh) * | 2013-06-27 | 2013-10-23 | 华为技术有限公司 | 一种串口分时复用的方法及系统 |
CN103763167A (zh) * | 2013-12-25 | 2014-04-30 | 京东方科技集团股份有限公司 | 通信系统及其通信方法 |
CN104008008A (zh) * | 2014-06-17 | 2014-08-27 | 厦门雅迅网络股份有限公司 | 一种Linux系统中复用调试串口的方法 |
CN104102482A (zh) * | 2013-04-12 | 2014-10-15 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统的控制台串口与应用串口复用方法及应用 |
CN107797939A (zh) * | 2017-09-28 | 2018-03-13 | 北京华航无线电测量研究所 | 一种将慢速串口数据与高速采集数据融合存储的方法 |
CN109086208A (zh) * | 2018-08-06 | 2018-12-25 | 联想(北京)有限公司 | 一种数据处理方法及系统 |
CN111625489A (zh) * | 2020-05-27 | 2020-09-04 | 深圳市元征科技股份有限公司 | 一种串口数据分发方法、装置、设备、介质 |
TWI806483B (zh) * | 2022-03-10 | 2023-06-21 | 台達電子工業股份有限公司 | 基於rs232序列埠實現的資料與指令傳輸方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050120150A1 (en) * | 2003-11-28 | 2005-06-02 | Advanced Micro Devices, Inc. | Buffer sharing in host controller |
CN101309121A (zh) * | 2007-05-18 | 2008-11-19 | 希姆通信息技术(上海)有限公司 | 实现Linux平台下无需内核添加驱动的MUX协议的方法 |
CN101470688A (zh) * | 2007-12-28 | 2009-07-01 | 希姆通信息技术(上海)有限公司 | 单端串口实现多功能复用的方法 |
-
2012
- 2012-09-17 CN CN201210343661.5A patent/CN102866976B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050120150A1 (en) * | 2003-11-28 | 2005-06-02 | Advanced Micro Devices, Inc. | Buffer sharing in host controller |
CN101309121A (zh) * | 2007-05-18 | 2008-11-19 | 希姆通信息技术(上海)有限公司 | 实现Linux平台下无需内核添加驱动的MUX协议的方法 |
CN101470688A (zh) * | 2007-12-28 | 2009-07-01 | 希姆通信息技术(上海)有限公司 | 单端串口实现多功能复用的方法 |
Non-Patent Citations (1)
Title |
---|
徐维迪等: "Linux环境USB转串口设备的驱动程序开发", 《空军雷达学院学报》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102482B (zh) * | 2013-04-12 | 2018-09-07 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统的控制台串口与应用串口复用方法及应用 |
CN104102482A (zh) * | 2013-04-12 | 2014-10-15 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统的控制台串口与应用串口复用方法及应用 |
CN103365798A (zh) * | 2013-06-27 | 2013-10-23 | 华为技术有限公司 | 一种串口分时复用的方法及系统 |
CN103365798B (zh) * | 2013-06-27 | 2016-08-31 | 华为技术有限公司 | 一种串口分时复用的方法及系统 |
CN103763167A (zh) * | 2013-12-25 | 2014-04-30 | 京东方科技集团股份有限公司 | 通信系统及其通信方法 |
US9886400B2 (en) | 2013-12-25 | 2018-02-06 | Boe Technology Group Co., Ltd. | Communication system and communication method |
CN104008008B (zh) * | 2014-06-17 | 2019-02-22 | 厦门雅迅网络股份有限公司 | 一种Linux系统中复用调试串口的方法 |
CN104008008A (zh) * | 2014-06-17 | 2014-08-27 | 厦门雅迅网络股份有限公司 | 一种Linux系统中复用调试串口的方法 |
CN107797939A (zh) * | 2017-09-28 | 2018-03-13 | 北京华航无线电测量研究所 | 一种将慢速串口数据与高速采集数据融合存储的方法 |
CN107797939B (zh) * | 2017-09-28 | 2020-02-28 | 北京华航无线电测量研究所 | 一种将慢速串口数据与高速采集数据融合存储的方法 |
CN109086208A (zh) * | 2018-08-06 | 2018-12-25 | 联想(北京)有限公司 | 一种数据处理方法及系统 |
CN109086208B (zh) * | 2018-08-06 | 2021-10-22 | 联想(北京)有限公司 | 一种数据处理方法及系统 |
CN111625489A (zh) * | 2020-05-27 | 2020-09-04 | 深圳市元征科技股份有限公司 | 一种串口数据分发方法、装置、设备、介质 |
CN111625489B (zh) * | 2020-05-27 | 2022-06-14 | 深圳市元征科技股份有限公司 | 一种串口数据分发方法、装置、设备、介质 |
TWI806483B (zh) * | 2022-03-10 | 2023-06-21 | 台達電子工業股份有限公司 | 基於rs232序列埠實現的資料與指令傳輸方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102866976B (zh) | 2015-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102866976A (zh) | 一种嵌入式系统中串口分时复用方法 | |
CN102629240B (zh) | 一种串口通信方法与装置 | |
CN105183698B (zh) | 一种基于多核dsp的控制处理系统和方法 | |
CN113467884B (zh) | 资源配置方法和装置、电子设备及计算机可读存储介质 | |
US10803004B2 (en) | Modular UPS system and data transmission method for power device | |
CN110266569A (zh) | 一种io-link端口扩展装置及方法 | |
CN100561948C (zh) | 混插情形下使用配置文件进行设备配置恢复的方法 | |
CN103607303B (zh) | 一种信令流程分析系统和方法 | |
CN114567712B (zh) | 一种基于sdi视音频信号的多节点净信号调度方法 | |
CN103378994A (zh) | 一种通信设备的测试方法及终端 | |
CN102999331B (zh) | 一种星载软件的硬件屏蔽层以及星上数据通信方法 | |
CN105227984A (zh) | 遥控器按键分配方法和装置 | |
CN101604270B (zh) | 基于vxworks操作系统的ARINC429通信冗余方法 | |
CN104079398B (zh) | 一种数据通信方法、装置及系统 | |
CN107038132B (zh) | 对多路外设进行同步控制的电路及方法 | |
CN1955990B (zh) | 综合电信平台中的流程执行方法及系统 | |
CN104918113B (zh) | 一种模块电视的功能卡端兼容方法及系统 | |
CN114915515B (zh) | 一种基于soc的can通信方法及系统 | |
CN106406793A (zh) | 节点机的标识配置方法和系统与ip地址分配方法和系统 | |
CN100563175C (zh) | 获取设备运行状态的方法、装置及系统 | |
CN115827535A (zh) | 一种单线同步双向通讯的控制方法、装置和存储介质 | |
CN101902436A (zh) | 板间通信方法、装置及系统 | |
CN106980301B (zh) | 通信方法和装置 | |
CN111880930A (zh) | 一种数据分流方法及系统 | |
CN114546926A (zh) | 核心簇同步、控制方法、数据处理方法、核心、设备、介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160713 Address after: 100085, No. 3, building 1, building 41, West Road, Beijing, Haidian District, D016 Patentee after: Beijing Rong Rong Technology Co., Ltd. Address before: 250101 Shandong province Ji'nan High-tech Development Zone, Road No. 1 Qilu Software Park Venture Plaza F block A312 Patentee before: Shandong Sheenrun Optics & Electronics Co., Ltd. |