一种嵌入式系统中调试信息的串口输出方法(发明专利)

专利号:CN201610111397.0

申请人:惠州市德赛西威汽车电子股份有限公司

  • 公开号:CN105808463A
  • 申请日期:20160229
  • 公开日期:20160727
专利名称: 一种嵌入式系统中调试信息的串口输出方法
专利名称(英文): In an embedded system debugging information output method for the Serial port of the
专利号: CN201610111397.0 申请时间: 20160229
公开号: CN105808463A 公开时间: 20160727
申请人: 惠州市德赛西威汽车电子股份有限公司
申请地址: 516006 广东省惠州市仲恺高新区和畅五路西103号
发明人: 冯升常; 何平; 潘荣涛
分类号: G06F13/10 主分类号: G06F13/10
代理机构: 广州三环专利代理有限公司 44202 代理人: 章兰芳
摘要: 本发明提供一种嵌入式系统中调试信息的串口输出方法,包括:在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据缓存区和数据输出线程;所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息数据按顺序保存到数据缓存区中;所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试信息数据按顺序输出到串口设备。本发明以一种非阻塞方式输出用户进程的调试信息到串口设备,具体通过数据缓存区的形式统一暂存用户进程的输出数据,并以统一的缓冲队列的形式按顺序输出调试信息,既不影响用户进程调试信息的输出,又能保证多个用户进程调试信息的输出顺序,还能提高用户进程自身的运行效率。
摘要(英文): The present invention provides an embedded system in the Serial port of the debugging information output method, including : creating the embedded system Serial port to the service process, the Serial port to the service process comprises a main thread, the thread and the data output from the data buffering area; the main thread takes over all the users process debugging information of the output data, and the input debug information data according to the sequence stored in the data buffer area; said data output thread detecting the data buffer, the data stored in buffer memory according to the order the debugging information data is output to the Serial port device. The invention in a non-blocking mode debugging information of the user process is output to the Serial port device, in particular by the data buffering area for temporarily storing a uniform form of the output data of the user process, and in a unified buffer queue according to the order in the form of the output debug information, does not affect the output of the debugging information user process, but also can ensure the plurality of users to process the order of output debugging information, can also improve the operating efficiency of its own user process.
  • 商标交易流程
  • 商标交易流程
一种嵌入式系统中调试信息的串口输出方法,其特征在于,包括:在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据缓存区和数据输出线程;所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息数据按顺序保存到数据缓存区中;所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试信息数据按顺序输出到串口设备。

1.一种嵌入式系统中调试信息的串口输出方法,其特征在于,包括: 在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据 缓存区和数据输出线程; 所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息 数据按顺序保存到数据缓存区中; 所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试 信息数据按顺序输出到串口设备。

2.根据权利要求1所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:所述主线程的运行步骤包括: S11.系统启动时启动所述串口服务进程; S12.创建并初始化数据缓存区; S13.创建并初始化数据输出线程; S14.进入响应输入数据事件等待状态,等待下一个用户进程的调试信息数据 输入; S15.接收一个用户进程输入的调试信息数据; S16.将调试信息数据存入所述数据缓存区中; S17.返回S14继续等待输入。

3.根据权利要求2所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:所述数据缓存区采用先进先出的数据队列形式的数据结构。

4.根据权利要求3所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:对所述数据缓存区加锁。

5.根据前述权利要求中任一项所述的嵌入式系统中调试信息的串口输 出方法,其特征在于:所述数据输出线程的运行步骤包括: S21.检查所述数据缓存区是否有调试信息数据,若有,则进入S22,否则 跳到S25; S22.从数据缓存区的数据队列中读取记录的第一条调试信息数据; S23:把所述第一条调试信息数据输出到串口设备; S24:返回S21; S25:等待下一条调试信息数据存入数据缓存区的数据队列; S26:数据缓存区中存入了新调试信息数据,返回S21。

PDF文件加载中,请耐心等待!
一种嵌入式系统中调试信息的串口输出方法,其特征在于,包括:在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据缓存区和数据输出线程;所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息数据按顺序保存到数据缓存区中;所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试信息数据按顺序输出到串口设备。
原文:

1.一种嵌入式系统中调试信息的串口输出方法,其特征在于,包括: 在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据 缓存区和数据输出线程; 所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息 数据按顺序保存到数据缓存区中; 所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试 信息数据按顺序输出到串口设备。

2.根据权利要求1所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:所述主线程的运行步骤包括: S11.系统启动时启动所述串口服务进程; S12.创建并初始化数据缓存区; S13.创建并初始化数据输出线程; S14.进入响应输入数据事件等待状态,等待下一个用户进程的调试信息数据 输入; S15.接收一个用户进程输入的调试信息数据; S16.将调试信息数据存入所述数据缓存区中; S17.返回S14继续等待输入。

3.根据权利要求2所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:所述数据缓存区采用先进先出的数据队列形式的数据结构。

4.根据权利要求3所述的嵌入式系统中调试信息的串口输出方法,其特 征在于:对所述数据缓存区加锁。

5.根据前述权利要求中任一项所述的嵌入式系统中调试信息的串口输 出方法,其特征在于:所述数据输出线程的运行步骤包括: S21.检查所述数据缓存区是否有调试信息数据,若有,则进入S22,否则 跳到S25; S22.从数据缓存区的数据队列中读取记录的第一条调试信息数据; S23:把所述第一条调试信息数据输出到串口设备; S24:返回S21; S25:等待下一条调试信息数据存入数据缓存区的数据队列; S26:数据缓存区中存入了新调试信息数据,返回S21。

翻译:
一种嵌入式系统中调试信息的串口输出方法

技术领域

本发明涉及嵌入式系统的串口通信技术领域,具体涉及一种嵌入式系统中 调试信息的串口输出方法。

背景技术

随着信息技术的高速发展,手机、MP3、智能电器等众多嵌入式设备也如 雨后春笋般涌现在我们的生活中。嵌入式设备的发展,也提升了嵌入式软件的 开发需求。鉴于当前嵌入式系统对系统成本、体积、功耗效率等方面的限制, 在嵌入式软件开发中,软件开发者往往需要借助串口设备输出调试信息到PC上 进行验证开发。

然而,这种做法虽然简单,但由于串口的传输速率非常有限,当输出的信 息较多的时候,往往会导致软件的进程出现阻塞的现象。

具体分析如下:

在良好的硬件条件下,一般串口设备的通讯波特率可达115200bps以上,一 般设置串口的参数为:(1)数据位长度:8;(2)停止位长度:1;(3)无硬件校 验。

所以,115200bps(每秒传输字节数bits)=115200/(8+1)=12800;

传输一个字符时间t=1000/bits=1000/12800=78.125us。

由上述计算可见,在常用的115200bps模式的理想状态下,串口传输每一个 字符需要耗费的时间约为78.125us。这对于CPU来说,是一个数量级很大的时 间片段,虽然在这个时间片段里,CPU已经空闲下来了,但由于需要等待串口 的返回,将会阻塞整个线程的继续运行。对于整个嵌入式系统来说,若多个进 程都需要通过串口进行输出,且各进程中需要输出的数据较多,则会极大影响 整个嵌入式系统所有软件的整体运行效率。特别是当用户进程只是简单的通过 主线程向串口设备输出调试信息,而没有针对这一串口输出过程进行一定优化 的时候,将会导致进程的操作界面频繁出现卡顿、操作不流畅等现象。

发明内容

本发明提供一种嵌入式系统中调试信息的串口输出方法,以非阻塞方式将 用户进程的调试信息输出到串口设备,既不影响用户进程调试信息的输出,又 能保证多个用户进程调试信息的输出顺序,还能提高用户进程自身的运行效率。

为了解决上述技术问题,本发明所采取的技术方案为:

本发明提供一种嵌入式系统中调试信息的串口输出方法,包括:

在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据 缓存区和数据输出线程;

所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息 数据按顺序保存到数据缓存区中;

所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试 信息数据按顺序输出到串口设备。

进一步地,所述主线程的运行步骤包括:

S11.系统启动时启动所述串口服务进程;

S12.创建并初始化数据缓存区;

S13.创建并初始化数据输出线程;

S14.进入响应输入数据事件等待状态,等待下一个用户进程的调试信息数据 输入;

S15.接收一个用户进程输入的调试信息数据;

S16.将调试信息数据存入所述数据缓存区中;

S17.返回S14继续等待输入。

更进一步地,所述数据缓存区采用先进先出的数据队列形式的数据结构。

又进一步地,对所述数据缓存区加锁。

进一步地,所述数据输出线程的运行步骤包括:

S21.检查所述数据缓存区是否有调试信息数据,若有,则进入S22,否则 跳到S25;

S22.从数据缓存区的数据队列中读取记录的第一条调试信息数据;

S23:把所述第一条调试信息数据输出到串口设备;

S24:返回S21;

S25:等待下一条调试信息数据存入数据缓存区的数据队列;

S26:数据缓存区中存入了新调试信息数据,返回S21。

本发明提供的嵌入式系统中调试信息的串口输出方法与现有技术的区别在 于:现有技术直接调用系统的串口输出函数,由于串口传输速率低,因此在数 据量较多、传输较为频繁时,耗时较多,导致输出线程往往会被阻塞。而本发 明的技术方案不直接使用串口输出,而是以一种非阻塞方式输出用户进程的调 试信息到串口设备,具体通过数据缓存区的形式统一暂存用户进程的输出数据, 并以统一的缓冲队列的形式按顺序输出调试信息,既不影响用户进程调试信息 的输出,又能保证多个用户进程调试信息的输出顺序,还能提高用户进程自身 的运行效率。

附图说明

图1是本发明嵌入式系统中调试信息的串口输出方法的流程示意图。

具体实施方式

下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不 构成对本发明专利保护范围的限制。

本实施例中,如图1所示,本实施例提供一种嵌入式系统中调试信息的串口 输出方法,包括:

在嵌入式系统中创建串口服务进程,所述串口服务进程包括主线程、数据 缓存区和数据输出线程;

所述主线程接管所有用户进程输出的调试信息数据,并将输入的调试信息 数据按顺序保存到数据缓存区中;

所述数据输出线程检测所述数据缓存区,将所述数据缓存区中保存的调试 信息数据按顺序输出到串口设备。

在上述实施方案中,由于在嵌入式系统中创建了一个串口数据输出的服务 进程,该串口服务进程接管所有用户进程输出的调试信息数据,使得用户进程 的调试信息数据只需输出到该串口服务进程便返回,而不用等待调试信息数据 真正输出到了串口设备再返回,这样,能够大大提高用户进程的调试信息输出 速度。串口服务进程在接收到从用户进程输入的调试信息数据后,快速将输入 的调试信息数据内容按顺序保存到数据缓存区中。在串口服务进程中创建有专 门的串口输出线程,该线程的主要工作就是不停地检测数据缓存区,将数据缓 存区中的调试信息数据内容按顺序输出到串口设备。这样,串口服务进程既能 保证多个用户进程的输出顺序,又能保证用户进程的输出效率。

在本实施例中,所述主线程的运行步骤包括:

S11.系统启动时启动所述串口服务进程;

S12.创建并初始化数据缓存区;

S13.创建并初始化数据输出线程;

S14.进入响应输入数据事件等待状态,等待下一个用户进程的调试信息数据 输入;

S15.接收一个用户进程输入的调试信息数据;

S16.将调试信息数据存入所述数据缓存区中;

S17.返回S14继续等待输入。

在串口服务进程启动后,主线程首先创建数据输出缓存区,接着创建数据 输出线程,在创建完成后,主线程进入数据接收等待状态。

在同一时刻,主线程只处理一个用户进程发送过来的调试信息数据,如果 此时有其他用户进程同时发送调试信息数据过来,其他用户将会被置于等待状 态。当主线程接收处理完当前用户进程的调试信息数据之后,会继续处理下一 个用户进程发过来的调试信息数据,这样就保证了不同用户进程间的数据传输 顺序。由于主线程仅仅只是把用户进程传输过来的数据保存到缓存区中,处理 速度很快,所以,其他处于等待状态的用户进程,将能够很快的被串口服务进 程接收数据,这样,在使用体验上,基本上不会出现阻塞的现象。

由于串口服务进程是一个全局的进程,可以在系统启动的时候,就将其启 动运行。

数据缓存区在本发明中起着至关重要的作用,有了数据缓存区,各个用户 进程就可以不与传输速率慢的串口直接交互数据,而是把调试信息数据通过串 口服务进程的主线程提交给数据缓存区后便立即返回,极大地提升了用户进程 的运行效率。之后,串口服务进程再由数据输出线程把数据缓存区中的数据输 出到串口设备。

在时间消耗上,在使用串口服务进程之前,用户进程输出一个字符数据需 要耗时78.125us(见:背景技术部分)。在使用了串口服务进程后,由于进程间 交互和数据缓存区的存储所消耗的时间都非常短,因此数据交互的速度非常快, 特别是在数据量很大的时候,能明显表现出较佳的传输效果。由此可见,通过 串口服务进程向串口设备输出数据的方式,能极大地减少现有技术中因用户进 程直接与串口设备交互而消耗的时间。

数据缓存区主要采用先进先出的队列形式的数据结构实现,形成数据缓存 队列结构,该数据缓存队列结构的特点为,数据在存入和读取时候的顺序是一 致的,这个特点确保了数据按存入的顺序输出。

此外,数据缓存区为防止多线程(主线程和数据输出线程)同时操作数据 而导数据不同步的问题,需要对数据缓存区加锁,以保证数据的正确性。

在本实施例中,所述数据输出线程的运行步骤包括:

S21.检查所述数据缓存区是否有调试信息数据,若有,则进入S22,否则 跳到S25;

S22.从数据缓存区的数据队列中读取记录的第一条调试信息数据;

S23:把所述第一条调试信息数据输出到串口设备;

S24:返回S21;

S25:等待下一条调试信息数据存入数据缓存区的数据队列;

S26:数据缓存区中存入了新调试信息数据,返回S21。

数据输出线程在整个方案中属于“干实活”的角色,其他用户进程把调试 信息数据传输到串口服务进程的数据缓存区后,由输出线程按顺序地把数据缓 存区中的数据输出到串口设备。数据输出线程实时监听并检测数据缓存区,若 缓存区中有数据,输出线程会一直不停地从数据缓存区中获取调试信息数据, 并把数据通过串口设备发送出去,直到数据缓存区中的数据为空。

以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保 护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范 围。

收缩
  • QQ咨询

  • 在线咨询
  • 在线咨询
  • 在线咨询
  • 在线咨询
  • 电话咨询

  • 02886312233