CN103268248A - Arm平台linux系统下模拟多路全双工串口的方法 - Google Patents
Arm平台linux系统下模拟多路全双工串口的方法 Download PDFInfo
- Publication number
- CN103268248A CN103268248A CN2012103956893A CN201210395689A CN103268248A CN 103268248 A CN103268248 A CN 103268248A CN 2012103956893 A CN2012103956893 A CN 2012103956893A CN 201210395689 A CN201210395689 A CN 201210395689A CN 103268248 A CN103268248 A CN 103268248A
- Authority
- CN
- China
- Prior art keywords
- value
- interruption times
- data
- reception
- timer interruption
- 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
Abstract
本发明提供了一种ARM平台LINUX系统下模拟多路全双工串口的方法,通过中断环境建立、模拟串口接口初始化从而使得模拟串口的通信可使用FIQ中断来收发数据,对于LINUX系统具有不可屏蔽性,具有非常高的实时性,在频率跟得上情况下,基本杜绝了误码问题。且整个方案是根据LINUX下UART驱动的框架建立的,从而可以保障在LINUX系统下的接口统一性,在使用中和普通串口的接口一样,收发波特率可分别设置,收发全双工,很是便利;在硬件资源上仅使用一个硬件定时器,增加多路串口只需增加两个普通GPIO口,无需额外的资源,可扩展性强。
Description
技术领域
本发明涉及ARM平台下LINUX系统的应用领域,尤其是指一种ARM平台LINUX系统下模拟多路全双工串口的方法。
背景技术
目前,由于ARM的低功耗、高性能,易扩展,LINUX的开源和免费,ARM+LINUX平台已经成为嵌入式领域最炙手可热的配套平台,虽然ARM平台本身外设已经很丰富,但是在某些情况下,需要更多的串口来和各种外设进行通讯时,串口还是多不够用。在此情况下通常有两种方法来解决,
一、通过扩展芯片的方式来增加串口,但无疑扩展芯片会增加产品的成本;二、通过直接使用普通中断(IRQ)来模拟串口,该方法简易,直接,易于实现,但是缺点也是显而易见的,由于LINUX的整个系统调度和互斥使用的都是IRQ中断方式,在系统运行过程中关IRQ来达到互斥的地方随处可见,这直接导致该方法实现的模拟串口效率低、误码率高、波特率上不去,更不要说模拟多路串口了。
发明内容
本发明的目的在于克服了上述缺陷,提供一种ARM平台LINUX系统下模拟多路全双工串口的方法。
本发明的目的是这样实现的:
相比于常见的模拟串口方法,本发明的有益效果在于采用FIQ中断作为串口模拟的中断,使用FIQ中断来收发数据,对于LINUX系统具有不可屏蔽性,具有非常高的实时性,在同等平台软件硬件条件下,杜绝了误码问题。提高了通讯波特率,增加了通讯稳定性。且整个方案是根据LINUX下UART驱动的框架建立的,从而可以保障在LINUX系统下的接口统一性,在使用中和普通串口的接口一样,起始位、停止位、数据位、奇偶检验位,收发波特率可分别设置,收发全双工,很是便利;在硬件资源上仅使用一个硬件定时器,增加多路串口只需增加两个普通GPIO口,无需额外的硬件资源,可扩展性强。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明的系统框架示意图;
图2为本发明的模拟串口数据发送流程图;
图3为本发明的模拟串口数据接收流程图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本实施方式一种ARM平台LINUX系统下模拟多路全双工串口的方法,它包括:
快速中断(FIQ)环境建立,包括步骤:
A)、使用静态数组形式定义FIQ中断栈空间;此处栈的大小根据中断服务程序的实现本身而定,最佳的,中断环境建立中的FIQ中断栈空间的大小不小于1K,以免堆栈溢出。
B)、修改CPSR寄存器的值,切换系统模式进入FIQ模式;
C)、将FIQ中断栈空间的首地址赋值给FIQ的栈寄存器SP;
D)、系统退出FIQ模式;
E)、拷贝FIQ的中断服务程序的跳转指令至FIQ中断向量的物理地址处;
需要说明的是,中断栈的设置时需要切换ARM处理器的模式为FIQ模式,在在设置好堆栈指针后,在切换回原来的系统模式。此外,由于ARM平台中中断向量只能容纳一条指令,所以这里不能直接把完整的中断处理程序拷贝至此处,只能拷贝一条跳转指令,以跳转到具体的FIQ中断服务程序处。
再者,由于在LINUX系统中中断环境的建立先于具体中断处理程序的组织,此处必须先组织一级中断处理模型,在中断处理程序中先进行中断现场的保护,然后跳转到具体的中断处理程序(如定时器中断处理程序)执行、具体的中断处理完毕后再进行中断现场的恢复。
因此,此处最佳的中断处理程序为三级,第一级为一条跳转指令,对于高端向量拷贝到0xffff001c,对于低端向量拷贝到0x0000001c处;第二级为FIQ中断处理程序,进行中断现场的保护,执行具体的中断服务程序,并最后恢复中断现场;第三级为和FIQ挂钩的具体的中断处理程序——定时器中断处理程序。其中第三级中断处理程序是通过回调函数的方式注册安装的,可以动态注册和去注册。
F)、刷新系统快速缓冲贮存区(cache);
G)、开启FIQ中断;
上述中断环境的建立要点在于:
1)、鉴于linux系统本身的特性,FIQ不使用系统虚拟内存。
2)、FIQ有自己的栈指针寄存器,使用前需要配置好对应的栈指针;对于满递减堆栈,栈指针初始化为占空间的末端,即A步骤定义的数组首地址加上数组的大小。
3)、FIQ中断向量的安装需要安装在其物理地址空间上。这里的安装是通过一条跳转指令,中断产生时,系统会自动跳转到该地址取值,通过这条跳转指令,再跳转到FIQ的中断服务程序中,在FIQ中断服务程序中,进行中断现场的保护、跳转到具体的定时器中断处理程序处执行定时器中断处理程序、恢复中断的现场。
模拟串口接口初始化,包括步骤:
A)、在系统的串口框架中根据需要注册对应数量的模拟串口接口,系统对应每个模拟串口接口分配内存空间作为发送环形缓冲区;
B)、申请系统内存空间作为接收环形缓冲区,将接收环形缓冲区的首、尾指针指向系统分配内存的头部地址;
此处的软件定时器、接收环形缓冲区和系统的发送环形缓冲区的做用是为了不在FIQ中调用系统级的接口,FIQ和系统之间的接口只是两个接收环形缓冲区和发送环形缓冲区,避免了中断过程中“竞态”的产生。
C)、申请系统内存空间作为发送中断次数寄存器、发送定时器中断次数计数器和接收中断次数寄存器、接收定时器中断次数计数器。
D)、初始化作为串口收发的GPIO引脚,发送引脚(TXD)设置为GPIO输出模式并置为高电平,接收引脚(RXD)设置为GPIO输入模式。
E)、安装系统的软件定时器,并根据模拟端口使用与否启动/关闭启动软件定时器中断,其控制同硬件定时器的控制方法。
F)、注册硬件定时器的中断服务程序的入口到FIQ中断服务程序的地址,此处相当于是一个回调函数,当FIQ发生时,在FIQ中断服务程序中,跳转到该回调函数执行。
然后设置硬件定时器中断为FIQ模式,设置硬件定时器为自装载模式,依据最高波特率设置硬件定时器中断的时间间隔,而后根据模拟端口使用与否启动/关闭硬件定时器,即:先不开启硬件定时器,当用户需要使用模拟串口,调用系统接口,打开模拟串口并设置完了波特率时才打开;当没有用户使用所有的模拟串口时,关闭硬件定时器中断。以在不使用模拟串口的时候不会产生定时器中断,提高系统的效率;较佳的,硬件定时器的中断频率n为串口最高波特率的2-4倍。
例如,若期望串口通讯的最高波特率为9600bps,若n=4,则硬件定时器中断频率为每秒38400次,即硬件定时器的周期为2.6ms,若n=2则硬件定时器的周期为5.2ms。由于后续初始化中会对应每个模拟串口都分配一个接收定时器中断次数计数器、发送定时器中断次数计数器以及本波特下接收中断次数寄存器和发送中断次数寄存器,当定时器中断次数计数器的值达到本波特率下定时器中断次数寄存器的数值后,便启动实际数据的收发,以实现多路全双工的数据收发。以下取n=4,最高波特率9600来进行说明,在9600波特录下每计数4次定时器中断接收发送一个数据位,在4800波特率下每计数8次中断接收发送一个数据位。
由此,参见如图1的系统整体框架,系统由接收环形缓冲区和系统的发送环形缓冲区、硬件定时器和软件定时器构成。图中实线箭头表示数据流向,虚线箭头表示驱动数据流的控制部件,细线箭头指示数据接收部分,粗线箭头指示数据发送部分。
发送环形缓冲区:用来缓存系统UART串口框架发下来的数据。
接收环形缓冲区:用来缓存接收到的数据。
硬件定时器:使用FIQ中断实现,根据发送状态发送在发送环形缓冲区中的数据,并定时采样接收引脚的状态,接收数据,检测起始位、停止位以及校验位,在收到一个完整字节的数据后把数据放入接收环形缓冲区中。
软件定时器:定时查询接收环形缓冲区中是否已经接收到数据,如有数据在把数据提交各UART框架,以进一步被提交给用户。
由此,本专利方法中使用接收环形缓冲区和系统的发送环形缓冲区,对硬件定时器接收到的数据和系统待发送的数据进行缓冲,并使用一个软件定时器来定时把接收缓冲区中的数据提交给LINUX系统,以解决在LINUX框架下FIQ中断中不能调用大多数系统级接口的问题;按照LINUX下串口驱动的框架实现模拟串口的接口,以提供和和普通串口无差异操作接口,方便使用。
参见图2,为基于上述中断环境建立及模拟串口接口初始化后的定时器中断中模拟串口数据发送流程,具体的数据发送包括步骤:
A)、当无数据要发送时(用户没有数据要发送,此时发送环形缓冲区为空),当前串口的发送状态为空闲。
B)、当环形缓冲区中有待发送的数据时,从环形缓冲区取出一个数据,设置发送状态为发送起始位,设置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值。
C)、在发送状态为发送起始位下,发送定时器中断次数计数器的值减0时,拉低发送引脚的电平,启动发送起始位,并设置发送状态为发送数据位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值。
D)、在发送状态为发送数据位下,发送定时器中断次数计数器的值减0时,取待发送数据的最低位,若为1则拉高发送引脚电平,若为0则拉低发送引脚的电平,如果整个字节的数据未发送完成,则把待发送的数据位右移一位;若整个字节的数据发送完成,则根据是否要发送奇偶校验位,设置发送状态为发送奇偶校验位或则发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值。
E)、在发送状态为发送奇偶校验位下,发送定时器中断次数计数器的值减0时,根据奇偶校验位的值,拉高或则拉低发送引脚的电平,设置发送状态为发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值。
F)、在发送状态为发送奇偶校验位下,发送定时器中断次数计数器的值减0时,根据奇偶校验位的值,拉高或拉低发送引脚的电平,设置发送状态为发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值。
G)、在发送状态为发送停止位下,发送定时器中断次数计数器的值减0时,拉高发送引脚的电平,判断发送环形缓冲区是否仍有待发送的数据,如果有则取出下一个待发送的数据,设置发送状态为发送起始位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;如果没有待发送的数据了,则设置发送状态为空闲。
参见图3,为基于上述中断环境建立及模拟串口接口初始化后的定时器中断中模拟串口数据接收流程,具体的数据接收包括步骤:
A)、根据用户设置的波特率,确定接收中断次数寄存器的值;
例如,若串口通讯的最高波特率为9600bps下n=4,则如果设置的波特率为4800,则中断次数寄存器的值为8,如果设置的波特率为4800,则中断次数寄存器的值为16,如果设置的波特率就是9600,则中断次数寄存器的值为4。
B)、初始化接收状态为空闲,开启每次硬件定时器中断时检测模拟串口的接收引脚电平的高低;
C)、在接收状态为空闲下,一旦检测到模拟串口的接收引脚电平变为低电平,比对上一次接收引脚的状态,如果上次接收到的为高电平则设置接收定时器中断次数计数器的值为接收中断次数寄存器中值的1/2(这里取1半,主要是为了验证起始位的有效性,并且使得后续的数据接收都在一个位的中间位置),并将接收状态改为接收起始位从而开始起始位的接收;否则不启动起始位的接收。
最佳的,上述步骤C中将接收状态改为接收起始位从而开始起始位的接收后,首先检测是前一次硬件定时器中断中RXD值为高电平,本次硬件定时器中断中RXD的值为低电平才启动起始位的接收。由此可以有效避免误判。
D)、在接收状态为接收起始位下,接收定时器中断次数计数器的值减1,待其减至0时,判断模拟串口的接收引脚的电平,若仍然为低电平,则确认接收到正确的起始位,重置接收定时器中断次数计数器的值为接受中断次数寄存器的值,改变接收状态为接收数据位;如果不是低电平,则设置接收状态为空闲状态;
E)、在接收状态为接收数据位下,接收定时器中断次数计数器的值减1,待其减至0时,读取模拟串口的接收引脚的电平,并根据接收到的数据位位数进行移位,完成一个数据位的接收,然后重置接收定时器中断次数计数器的值为接收中断次数寄存器的值。根据设置的数据位的个数,确定是否完成整个数据字节的接收,由于数据位数是使用串口是设置好的,比如8位,因此判断两者是否相等即可知道数据是否接收完成,若数据未接收完成,重复本步骤,否者判断是否需要接收奇偶校验位,若需要则设置接收状态为接收奇偶校验位,否则设置接受状态为接收停止位;
F)、在接收状态为接收奇偶校验位下,接收定时器中断次数计数器的值减1,待其减至0时,读取模拟串口的接收引脚的电平,根据已前接收数据,计算并判断收的奇偶检验位是否正确,若正确,设置接收状态接收停止位并重置接收定时器中断次数计数器的值为接收中断次数寄存器的值;若不正确,则丢弃本次接收的数据,则设置接收状态为空闲;
G)、在接收状态为接收停止位下,接收定时器中断次数计数器的值减1,待其减至0时,判断模拟串口的接收引脚的电平,如果为高电平,则确认接收到正确的停止位,整个数据接收完成,把接收到的数据放到接收环形缓冲区中,设置接收状态为空闲,返回步骤C;否则,则丢弃本次接收的数据,设置接收状态为空闲;
H)、软件定时器时间到(该软件定时器是在初始化的时候设置好的,比如10MS执行一次),判断接收缓冲区中是否有数据,如果有则取出数据,并调用系统接口,提交给串口框架层,供用户使用。
上述步骤中,发送中断次数寄存器、接收中断次数寄存器是根据设置的波特率计算出来的常量,波特率定下来了,收发中断次数寄存器的值便确定了。
综上所述,本发明提供了一种ARM平台LINUX系统下模拟多路全双工串口的方法,该方法通过采用IFQ中断作为串口模拟的中断,使用FIQ中断来收发数据,对于LINUX系统具有不可屏蔽性,具有非常高的实时性,在频率跟得上情况下,基本杜绝了误码问题。且整个方案是根据LINUX下UART驱动的框架建立的,从而可以保障在LINUX系统下的接口统一性,在使用中和普通串口的接口一样,收发波特率可分别设置,收发全双工,很是便利;在硬件资源上仅使用一个硬件定时器,增加多路串口只需增加两个普通GPIO口,无需额外的资源,可扩展性强。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:它包括,
快速中断环境建立,包括步骤,
A)、使用静态数组形式定义FIQ中断栈空间;
B)、修改CPSR寄存器的值,切换系统模式进入FIQ模式;
C)、将FIQ中断栈空间的首地址赋值给FIQ的栈寄存器SP;
D)、系统退出FIQ模式;
E)、拷贝FIQ的中断服务程序的跳转指令至FIQ中断向量的物理地址处;
F)、刷新系统快速缓冲贮存区;
G)、开启FIQ中断;
模拟串口接口初始化,包括步骤,
A)、在系统的串口框架中注册至少一个模拟串口接口,系统对应每个模拟串口接口分配内存空间作为发送环形缓冲区;
B)、申请系统内存空间作为接收环形缓冲区,将接收环形缓冲区的首、尾指针指向系统分配内存的头部地址;
C)、申请系统内存空间作为发送中断次数寄存器、发送定时器中断次数计数器和接收中断次数寄存器、接收定时器中断次数计数器;
D)、初始化作为串口收发的GPIO引脚,发送引脚TXD设置为GPIO输出模式并置为高电平,接收引脚RXD设置为GPIO输入模式;
E)、安装系统的软件定时器并根据模拟端口使用与否启动/关闭软件定时器中断;
F)、注册硬件定时器的中断服务程序的入口到FIQ中断服务程序的地址,并根据模拟端口使用与否启动/关闭启硬件定时器中断。
2.如权利要求1所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:所述中断环境建立中步骤A定义的FIQ中断栈空间的大小不小于1K。
3.如权利要求1所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:所述串口接口初始化中的B的硬件定时器的中断频率为串口最高波特率的2-4倍。
4.如权利要求1所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:它还包括,模拟串口数据发送,包括步骤,
A)、当无数据要发送时,当前串口的发送状态为空闲;
B)、当环形缓冲区中有待发送的数据时,从环形缓冲区取出一个数据,设置发送状态为发送起始位,设置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;
C)、在发送状态为发送起始位下,发送定时器中断次数计数器的值减0时,拉低发送引脚的电平,启动发送起始位,并设置发送状态为发送数据位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;
D)、在发送状态为发送数据位下,发送定时器中断次数计数器的值减0时,取待发送数据的最低位,若为1则拉高发送引脚电平,若为0则拉低发送引脚的电平,如果整个字节的数据未发送完成,则把待发送的数据位右移一位;若整个字节的数据发送完成,则根据是否要发送奇偶校验位,设置发送状态为发送奇偶校验位或则发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;
E)、在发送状态为发送奇偶校验位下,发送定时器中断次数计数器的值减0时,根据奇偶校验位的值,拉高或则拉低发送引脚的电平,设置发送状态为发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;
F)、在发送状态为发送奇偶校验位下,发送定时器中断次数计数器的值减0时,根据奇偶校验位的值,拉高或拉低发送引脚的电平,设置发送状态为发送停止位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;
G)、在发送状态为发送停止位下,发送定时器中断次数计数器的值减0时,拉高发送引脚的电平,判断发送环形缓冲区是否仍有待发送的数据,如果有则取出下一个待发送的数据,设置发送状态为发送起始位,重置发送定时器中断次数计数器的值为发送定时器中断次数寄存器的值;如果没有待发送的数据了,则设置发送状态为空闲。
5.如权利要求1所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:它还包括,模拟串口数据接收,包括步骤,
A)、根据用户设置的波特率,确定接收中断次数寄存器的值;
B)、初始化接收状态为空闲,并开启每次硬件定时器中断时检测模拟串口的接收引脚电平的高低;
C)、在接收状态为空闲下,一旦检测到模拟串口的接收引脚电平变为低电平,比对上一次接收引脚的状态,如果上次接收到的为高电平则设置接收定时器中断次数计数器的值为接收中断次数寄存器中值的1/2,并将接收状态改为接收起始位从而开始起始位的接收,否则不启动起始位的接收;
D)、在接收状态为接收起始下,接收定时器中断次数计数器的值减1,待其减至0时,判断模拟串口的接收引脚的电平,若为低电平,则确认接收到正确的起始位,重置接收定时器中断次数计数器的值为接受中断次数寄存器的值,改变接收状态为接收数据位;如果不是低电平,则设置接收状态为空闲状态,返回步骤C;
E)、在接收状态为接收数据位下,接收定时器中断次数计数器的值减1,待其减至0时,读取模拟串口的接收引脚的电平,并根据接收到的数据位位数进行移位,重置接收定时器中断次数计数器的值为接受中断次数寄存器的值,若数据未接收完成,重复本步骤,否者设置接收状态为接收停止位;
F)、在接收状态为接收奇偶校验位下,接收定时器中断次数计数器的值减1,待其减至0时,读取模拟串口的接收引脚的电平,根据已前接收数据,计算并判断收的奇偶检验位是否正确,若正确,设置接收状态接收停止位并重置接收定时器中断次数计数器的值为接收中断次数寄存器的值;若不正确,则丢弃本次接收的数据,则设置接收状态为空闲;
G)、在接收状态为接收停止位下,接收定时器中断次数计数器的值减1,待其减至0时,判断模拟串口的接收引脚的电平,如果为高电平,则确认接收到正确的停止位,整个数据接收完成,把接收到的数据放到接收环形缓冲区中,设置接收状态为空闲,返回步骤C;否则,则丢弃本次接收的数据,设置接收状态为空闲;
H)、软件定时器时间到,判断接收缓冲区中是否有数据,如果有则取出数据,并调用系统接口,提交给串口框架层,供用户使用。
6.如权利要求5所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:所述步骤E在数据位接收完成后还包括判断是否需要接收奇偶校验位,若需要则设置接收状态为接收奇偶校验位,否则设置接受状态为接收停止位;
对应,在接受状态为接收奇偶校验位下,接收定时器中断次数计数器的值减0时,读取模拟串口的接收引脚的电平,根据已前接收数据,计算并判断收的奇偶检验位是否正确,若正确,设置接收状态接收停止位并重置接收定时器中断次数计数器的值为接收中断次数寄存器的值;若不正确,则丢弃本次接收的数据,则设置接收状态为空闲,返回步骤C。
7.如权利要求5所述的ARM平台LINUX系统下模拟多路全双工串口的方法,其特征在于:所述步骤C中将接收状态改为接收起始位从而开始起始位的接收后,首先检测是前一次硬件定时器中断中RXD值为高电平,本次硬件定时器中断中RXD的值为低电平才启动起始位的接收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210395689.3A CN103268248B (zh) | 2012-10-17 | 2012-10-17 | Arm平台linux系统下模拟多路全双工串口的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210395689.3A CN103268248B (zh) | 2012-10-17 | 2012-10-17 | Arm平台linux系统下模拟多路全双工串口的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103268248A true CN103268248A (zh) | 2013-08-28 |
CN103268248B CN103268248B (zh) | 2015-12-16 |
Family
ID=49011881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210395689.3A Active CN103268248B (zh) | 2012-10-17 | 2012-10-17 | Arm平台linux系统下模拟多路全双工串口的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268248B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183686A (zh) * | 2015-07-30 | 2015-12-23 | 深圳市振邦智能科技有限公司 | 一种启动模拟串口通信的方法和装置 |
WO2017049556A1 (zh) * | 2015-09-24 | 2017-03-30 | 广东欧珀移动通信有限公司 | 数据传输方法和移动终端 |
CN107942794A (zh) * | 2017-11-27 | 2018-04-20 | 上海航天测控通信研究所 | 一种利用GPIO接口模拟McBSP接口的方法 |
CN107967231A (zh) * | 2017-12-07 | 2018-04-27 | 天津天地伟业机器人技术有限公司 | 一种Spi模拟多路全双工串口的系统 |
CN105183686B (zh) * | 2015-07-30 | 2018-08-31 | 深圳市振邦智能科技股份有限公司 | 一种启动模拟串口通信的方法和装置 |
CN110784430A (zh) * | 2018-07-29 | 2020-02-11 | 雅座在线(北京)科技发展有限公司 | 一种具有环状缓冲的非阻塞网络数据处理实现方法 |
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN112181741A (zh) * | 2020-09-18 | 2021-01-05 | 青岛鼎信通讯股份有限公司 | 一种基于ARM平台Linux系统的站所终端遥测方法 |
CN115599722A (zh) * | 2022-12-15 | 2023-01-13 | 深圳市欧瑞博科技股份有限公司(Cn) | 基于操作系统内核实现串口数据精准传输的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133708A1 (en) * | 2003-01-06 | 2004-07-08 | Netchip Technology, Inc. | Virtual endpoint for USB devices |
CN101471787A (zh) * | 2007-12-25 | 2009-07-01 | 希姆通信息技术(上海)有限公司 | 基于无线通信模块的软件模拟uart的方法 |
CN102333003A (zh) * | 2010-07-12 | 2012-01-25 | 熊猫电子集团有限公司 | 数据广播分发网仿真测试系统 |
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
-
2012
- 2012-10-17 CN CN201210395689.3A patent/CN103268248B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133708A1 (en) * | 2003-01-06 | 2004-07-08 | Netchip Technology, Inc. | Virtual endpoint for USB devices |
CN101471787A (zh) * | 2007-12-25 | 2009-07-01 | 希姆通信息技术(上海)有限公司 | 基于无线通信模块的软件模拟uart的方法 |
CN102333003A (zh) * | 2010-07-12 | 2012-01-25 | 熊猫电子集团有限公司 | 数据广播分发网仿真测试系统 |
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
Non-Patent Citations (2)
Title |
---|
毛立哲: "ARM全系统模拟器中模拟串口和网卡的设计和实现", 《中国优秀硕士论文电子期刊网》 * |
龚兰芳等: "单片机普通I/O口模拟串行通信的实现方法", 《电子工程师》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183686A (zh) * | 2015-07-30 | 2015-12-23 | 深圳市振邦智能科技有限公司 | 一种启动模拟串口通信的方法和装置 |
CN105183686B (zh) * | 2015-07-30 | 2018-08-31 | 深圳市振邦智能科技股份有限公司 | 一种启动模拟串口通信的方法和装置 |
US10248611B2 (en) | 2015-09-24 | 2019-04-02 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Data transmission method and mobile terminal |
WO2017049556A1 (zh) * | 2015-09-24 | 2017-03-30 | 广东欧珀移动通信有限公司 | 数据传输方法和移动终端 |
CN108027744B (zh) * | 2015-09-24 | 2021-08-31 | Oppo广东移动通信有限公司 | 数据传输方法和移动终端 |
CN108027744A (zh) * | 2015-09-24 | 2018-05-11 | 广东欧珀移动通信有限公司 | 数据传输方法和移动终端 |
CN107942794B (zh) * | 2017-11-27 | 2020-04-28 | 上海航天测控通信研究所 | 一种利用GPIO接口模拟McBSP接口的方法 |
CN107942794A (zh) * | 2017-11-27 | 2018-04-20 | 上海航天测控通信研究所 | 一种利用GPIO接口模拟McBSP接口的方法 |
CN107967231A (zh) * | 2017-12-07 | 2018-04-27 | 天津天地伟业机器人技术有限公司 | 一种Spi模拟多路全双工串口的系统 |
CN110784430A (zh) * | 2018-07-29 | 2020-02-11 | 雅座在线(北京)科技发展有限公司 | 一种具有环状缓冲的非阻塞网络数据处理实现方法 |
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN110879791B (zh) * | 2019-09-30 | 2021-03-19 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN112181741A (zh) * | 2020-09-18 | 2021-01-05 | 青岛鼎信通讯股份有限公司 | 一种基于ARM平台Linux系统的站所终端遥测方法 |
CN115599722A (zh) * | 2022-12-15 | 2023-01-13 | 深圳市欧瑞博科技股份有限公司(Cn) | 基于操作系统内核实现串口数据精准传输的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103268248B (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103268248A (zh) | Arm平台linux系统下模拟多路全双工串口的方法 | |
CN102124454B (zh) | 通用串行总线(usb)远程唤醒 | |
US8521934B1 (en) | Multi-port context-based host controller | |
CN104620191B (zh) | 用于到i/o接口的门控功率输送的装置、系统及方法 | |
CN101365999A (zh) | 发送完成事件批处理 | |
CN105824729B (zh) | 一种具备通用性的虚拟验证平台及实现方法 | |
CN102819504A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN103019788A (zh) | 一种基于can总线的远程在线升级方法 | |
CN106970886A (zh) | 使用第二协议的扩展功能结构来控制第一协议的物理链路 | |
CN106155960A (zh) | 基于gpio握手和edma的uart串口通信方法 | |
CN107046508A (zh) | 报文接收方法及网络设备 | |
CN102811112A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN102866979B (zh) | 一种同步串行接口信号传感器数据采集装置 | |
CN112463614A (zh) | 一种基于硬件板卡接入的软件虚拟化测试环境构建方法 | |
CN102819503A (zh) | 光纤信道输入/输出数据路由系统和方法 | |
CN113986624A (zh) | 通过错误注入和测量进行互连的系统内验证 | |
CN106030559A (zh) | 用于降低功耗的中断处理的同步 | |
CN104102508A (zh) | 一种基于FlexRay总线的多机程序在线升级方法 | |
CN1326057C (zh) | 用于与总线连接的总线系统和总线接口 | |
CN110308824A (zh) | 一种红外触摸数据的处理方法、系统及相关组件 | |
CN102053712A (zh) | 多键盘输入系统、输入设备、转接装置及控制方法 | |
CN111338745B (zh) | 一种虚拟机的部署方法、装置及智能设备 | |
CN104380274B (zh) | 用于优化的链路训练及管理的装置和方法 | |
CN107402762A (zh) | 指纹导航的实现方法及装置 | |
CN104918113B (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 |