CN106547694A - 一种基于ARM CortexM4内核处理器的在线调试系统 - Google Patents
一种基于ARM CortexM4内核处理器的在线调试系统 Download PDFInfo
- Publication number
- CN106547694A CN106547694A CN201610933431.2A CN201610933431A CN106547694A CN 106547694 A CN106547694 A CN 106547694A CN 201610933431 A CN201610933431 A CN 201610933431A CN 106547694 A CN106547694 A CN 106547694A
- Authority
- CN
- China
- Prior art keywords
- host computer
- address
- slave computer
- buffering area
- computer
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于ARM CortexM4内核处理器的在线调试系统,包括一台上位机和多台下位机(采用CortexM4内核处理器),上位机与下位机通过以太网通信。本发明调试系统使用CortexM4处理器的DMA功能,可在极小影响主程序运行的情况下对程序中的全局变量进行高频多次读取并将数据打包通过以太网发送至上位机进行分析;故本发明可应用于嵌入式系统调试,工程师使用本发明可以对嵌入式系统进行远程实时调试,调试对原程序的运行的影响极小,并且可以同时调试多个嵌入式系统。
Description
技术领域
本发明属于嵌入式系统调试技术领域,具体涉及一种基于ARM CortexM4内核处理器的在线调试系统。
背景技术
当前嵌入式系统发展迅速,现有嵌入式设备通过串口或JTAG、TRACE等工具进行调试,需要工程师到达现场进行调试,难以实现远程监控调试,带来极大不便。同时在调试过程中往往因为中断或读取的处理需要占用CPU资源,使得调试时无法对内存进行高频多次的采样,程序员无法分析内存变量在运行时的实时变化情况,且难以对多个嵌入式系统同时调试,进行对比分析。
调试线路安装复杂,实时调试会影响主程序正常运行从而影响主电路工作,远程监控调试的需求增加,程序运行过程中等问题,使得工程师需要一种便捷、可以远程实时监控调试、对芯片主程序运行干扰极小的调试系统。
发明内容
鉴于上述,本发明提供了一种基于ARM CortexM4内核处理器的在线调试系统,通过在连接以太网的ARM CortexM4处理器中植入调试程序作为其前置程序,外接网线,与上位机软件进行以太网通信。
一种基于ARM CortexM4内核处理器的在线调试系统,包括一台上位机和多台下位机,所述下位机采用ARM CortexM4内核处理器作为处理核心,该内核处理器拥有工作于双缓冲模式下的DMA(Direct Memory Access,直接内存访问)模块,同时还存储有调试程序且该调试程序作为内核处理器的前置程序配合上位机用以对下位机所属的嵌入式系统进行在线实时调试;
所述上位机与下位机通过以太网通信且上位机可连续读取下位机主程序中的任一全局变量,进而对其进行筛选、制表及制图的操作,以供调试员进行分析。
所述上位机读取下位机主程序中全局变量的具体实现过程如下:
上位机打开下位机主程序编译后生成的全局变量地址分配文件,可获取得到每个全局变量对应的地址,从中找出所要读取的全局变量地址,并将该地址通过UDP(UserDatagram Protocol,用户数据报协议)数据报文发送给相应的下位机,UDP数据报文中同时还包含有上位机所要求的读取频率和读取次数;
下位机接收到上位机发送的UDP数据报文后进行处理,将DMA模块的源地址设为上位机所要读取的全局变量地址,目标地址设为以太网发送缓冲区D1的地址;进而下位机开启定时器,定时器每隔一段时间触发一次DMA模块,DMA模块被触发后对源地址中的全局变量进行读取并将其存至缓冲区D1中;当缓冲区D1存满数据后下位机自动切换DMA模块的目标地址为以太网发送缓冲区D2的地址并继续执行读取操作,同时触发中断将缓冲区D1中的数据通过UDP数据报文发送回上位机;当缓冲区D2存满数据后下位机自动切换DMA模块的目标地址为缓冲区D1的地址并触发中断将缓冲区D2中的数据通过UDP数据报文发送回上位机,依此反复切换直至所发送的数据量达到上位机的要求,关闭定时器停止读取操作;
上位机接收到完整的全局变量后,对其进行筛选、制表及制图的操作,以供调试员进行分析。
进一步地,所述上位机可以读取下位机主程序编译后生成的变量地址分配文件(.map文件),获取每个全局变量的对应地址,可以将要读取的全局变量的地址、要读取的频率和总次数等信息配置为UDP报文并发送至下位机,可以接收下位机传送回的UDP数据报,并对接收到的数据进行一定的处理,包括筛选、制表、绘图等。
进一步地,所述下位机采用CortexM4内核处理器,连接以太网,使用UDP协议与上位机进行通信,能够接收上位机发送的UDP报文并对其进行解析,获取上位机的命令要求,下位机处理器拥有DMA功能,DMA可工作于双缓冲模式,DMA由定时器触发工作,DMA在完成一定数量后地读取后会触发DMA中断。
进一步地,DMA的源地址为上位机发送的要调试的全局变量地址,目标地址为以太网发送缓冲区D1的地址,由定时器触发DMA进行转换,每完成一次读取操作,目标地址自增1;缓冲区D1数据存满后自动切换DMA的目标地址为缓冲区D2,同时触发中断通过以太网发送缓冲区D1内容以UDP报文的形式传至上位机;缓冲区D2数据存满后自动切换DMA的目标地址为缓冲区D1并触发中断发送缓冲区D2内容至上位机。
进一步地,所述的上位机可以同时对多个下位机主程序的全局变量进行读取,接收各个下位机返回的数据并进行对比分析。
进一步地,所述下位机处理器在对全局变量进行实时读取采样时不占用CPU资源,不会影响用户程序运行,读取频率可以达到1MHz;在通过以太网向上位机发送全局变量数据时,使用以太网DMA功能,即使数据量较大也不会影响用户程序的正常运行。
相比现有技术,本发明具有以下有益技术效果:
(1)本发明使用配置于双缓冲模式的DMA连续、高频地读取全局变量地值,并且极小程度地影响主程序运行。连续的变量值读取使得工程师可以获得一段时间内变量的变化情况,进行制表制图等操作可以让调试工作变得更加简易方便。
(2)本发明使用网线通信,线路安装简单简便。
(3)本发明采用以太网的通信方式使得工程师可以远程对嵌入式系统进行调试、监控,更加方便快捷。
(4)本发明系统一个上位机可同时调试多台下位机,工程师可以对比分析各个下位机的全局变量。
附图说明
图1为下位机收到上位机发来的UDP数据包后进入中断的流程示意图。
图2为下位机DMA在完成一定数量后进入DMA中断的流程示意框图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
本发明在线调试系统包括上位机和下位机,下位机采用ARM CortexM4内核处理器,系统在连接以太网的ARM CortexM4内核处理器中植入调试程序作为其前置程序,外接网线,与上位机软件进行以太网通信,前置程序中包含LwIP协议程序、DMA配置程序、定时器配置程序等;下位机将一个DMA配置为双缓冲模式,该DMA的源地址由上位机发送的数据帧决定,目标地址在以太网发送缓冲区1和缓冲区2之间相互切换,单次转移的触发源为一个特定定时器,定时频率可达到1MHz。
下位机在使用编译软件对主程序进行编译后,会生成变量地址分配文件(.map文件)文件,其中包含各个全局变量和寄存器的地址;上位机通过读取.map文件获得每个全局变量的地址,工程师选择要读取的全局变量、要调试的下位机id以及需要读取该变量的频率、读取的数量等参数,上位机生成UDP数据报发送给下位机。
在下位机主程序运行过程中,当接收到上位机由以太网发送的命令时,进入UDP中断,判断该命令是否为有效命令,如有效则对该命令进行分析,否则不做处理并退出中断。如要对全局变量进行写入操作,则直接写入要修改的值;如要对全局变量进行实时读取操作,则将DMA的源地址设置为该全局变量的地址,设置好数据长度并开启配置好的定时器,程序操作流程如图1所示。DMA将自动在每次定时触发后读取源地址的数据并保存在缓冲区1中,待缓冲区1存放数据量达到要求后触发DMA中断通过以太网发送缓冲区1数据。与此同时DMA将自动把目标地址切换为缓冲区2并继续读取操作。下位机将交替发送缓冲区1和缓冲区2的数据,程序操作流程如图2所示。
下位机程序中包含调试初始化程序,以下为下位机调试程序的详细说明:
上电后进行以太网、LwIP协议栈、DMA和TIM的初始化操作。其中申请两个pbuf以太网数结构体p1、p2,两个结构体中的payload指针分别指向Answer_Frame1和Answer_Frame2数组。
收到来自上位机的UDP数据报后,程序进入UDP的回调函数,在回调函数中,对命令进行判断、处理,将DMA的源地址设为要读取变量的地址,目标地址为Answer_Frame1数组,开启定时器。此时定时器每隔一定时间(时间由上位机决定,可达到1us)产生一次更新事件,触发DMA进行一次数据读取,每完成一次读取操作,目标地址自增1,此过程无需中断,不影响主程序运行。在Anwer_Frame1数组存满后,触发一次DMA中断,同时DMA自动将目标地址改为Anwer_Frame2数组并继续读取操作。程序在DMA中断中,用UDP协议将p1结构体发出并返回主程序。
上位机接收到下位机发送的UDP数据报后,调试软件对数据进行判断、处理、显示、制表与制图操作。在接收不同下位机发送的数据报时,可在同一时间轴上绘制多个下位机同一内存变量的实时变化图形,有利于工程师对比多个嵌入式系统的实时运行情况。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (2)
1.一种基于ARM CortexM4内核处理器的在线调试系统,包括一台上位机和多台下位机,其特征在于:所述下位机采用ARM CortexM4内核处理器作为处理核心,该内核处理器拥有工作于双缓冲模式下的DMA模块,同时还存储有调试程序且该调试程序作为内核处理器的前置程序配合上位机用以对下位机所属的嵌入式系统进行在线实时调试;
所述上位机与下位机通过以太网通信且上位机可连续读取下位机主程序中的任一全局变量,进而对其进行筛选、制表及制图的操作,以供调试员进行分析。
2.根据权利要求1所述的在线调试系统,其特征在于:所述上位机读取下位机主程序中全局变量的具体实现过程如下:
上位机打开下位机主程序编译后生成的全局变量地址分配文件,可获取得到每个全局变量对应的地址,从中找出所要读取的全局变量地址,并将该地址通过UDP数据报文发送给相应的下位机,UDP数据报文中同时还包含有上位机所要求的读取频率和读取次数;
下位机接收到上位机发送的UDP数据报文后进行处理,将DMA模块的源地址设为上位机所要读取的全局变量地址,目标地址设为以太网发送缓冲区D1的地址;进而下位机开启定时器,定时器每隔一段时间触发一次DMA模块,DMA模块被触发后对源地址中的全局变量进行读取并将其存至缓冲区D1中;当缓冲区D1存满数据后下位机自动切换DMA模块的目标地址为以太网发送缓冲区D2的地址并继续执行读取操作,同时触发中断将缓冲区D1中的数据通过UDP数据报文发送回上位机;当缓冲区D2存满数据后下位机自动切换DMA模块的目标地址为缓冲区D1的地址并触发中断将缓冲区D2中的数据通过UDP数据报文发送回上位机,依此反复切换直至所发送的数据量达到上位机的要求,关闭定时器停止读取操作;
上位机接收到完整的全局变量后,对其进行筛选、制表及制图的操作,以供调试员进行分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610933431.2A CN106547694B (zh) | 2016-10-25 | 2016-10-25 | 一种基于ARM CortexM4内核处理器的在线调试系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610933431.2A CN106547694B (zh) | 2016-10-25 | 2016-10-25 | 一种基于ARM CortexM4内核处理器的在线调试系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547694A true CN106547694A (zh) | 2017-03-29 |
CN106547694B CN106547694B (zh) | 2018-12-11 |
Family
ID=58392731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610933431.2A Active CN106547694B (zh) | 2016-10-25 | 2016-10-25 | 一种基于ARM CortexM4内核处理器的在线调试系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547694B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368415A (zh) * | 2017-07-20 | 2017-11-21 | 成都雅骏新能源汽车科技股份有限公司 | 一种实时数据流调试软件组件及其调试方法 |
CN110018959A (zh) * | 2019-03-26 | 2019-07-16 | 福建升腾资讯有限公司 | 一种嵌入式应用调试的方法以及系统 |
CN111324527A (zh) * | 2019-12-09 | 2020-06-23 | 许华敏 | 一种通过数据采集方式测试中断程序的装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571829A (zh) * | 2009-06-19 | 2009-11-04 | 北京航空航天大学 | 一种实时嵌入式软件自动化闭环测试方法 |
CN103336752A (zh) * | 2013-06-24 | 2013-10-02 | 上海太阳能电池研究与发展中心 | 一种微控制器实时数据传送装置及方法 |
CN103942311A (zh) * | 2014-04-21 | 2014-07-23 | 湖南深拓智能设备股份有限公司 | 一种监控系统变量的复用方法 |
US20150193362A1 (en) * | 2012-06-21 | 2015-07-09 | Byd Company Limited | Method, upper computer and system for programming nodes in a bus network |
-
2016
- 2016-10-25 CN CN201610933431.2A patent/CN106547694B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571829A (zh) * | 2009-06-19 | 2009-11-04 | 北京航空航天大学 | 一种实时嵌入式软件自动化闭环测试方法 |
US20150193362A1 (en) * | 2012-06-21 | 2015-07-09 | Byd Company Limited | Method, upper computer and system for programming nodes in a bus network |
CN103336752A (zh) * | 2013-06-24 | 2013-10-02 | 上海太阳能电池研究与发展中心 | 一种微控制器实时数据传送装置及方法 |
CN103942311A (zh) * | 2014-04-21 | 2014-07-23 | 湖南深拓智能设备股份有限公司 | 一种监控系统变量的复用方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368415A (zh) * | 2017-07-20 | 2017-11-21 | 成都雅骏新能源汽车科技股份有限公司 | 一种实时数据流调试软件组件及其调试方法 |
CN110018959A (zh) * | 2019-03-26 | 2019-07-16 | 福建升腾资讯有限公司 | 一种嵌入式应用调试的方法以及系统 |
CN111324527A (zh) * | 2019-12-09 | 2020-06-23 | 许华敏 | 一种通过数据采集方式测试中断程序的装置及方法 |
CN111324527B (zh) * | 2019-12-09 | 2023-08-11 | 武汉滨湖电子有限责任公司 | 一种通过数据采集方式测试中断程序的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106547694B (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9311205B2 (en) | Method and system for thread monitoring | |
Ravindranath et al. | {AppInsight}: Mobile App Performance Monitoring in the Wild | |
CN102346708B (zh) | 一种调试器及其调试方法 | |
Roussel | Controlling a solver execution with the runsolver tool | |
CN100442244C (zh) | 具有跟踪协处理器的数据处理设备、系统和方法 | |
CN101339581B (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
US8943248B2 (en) | Method and system for handling discarded and merged events when monitoring a system bus | |
CN105279021B (zh) | 执行不可屏蔽中断的方法和装置 | |
JP2020512613A (ja) | 同期するハードウェアイベント収集 | |
US8706937B2 (en) | Method and system of debugging multicore bus transaction problems | |
CN106547694A (zh) | 一种基于ARM CortexM4内核处理器的在线调试系统 | |
US20120226839A1 (en) | Method and System for Monitoring and Debugging Access to a Bus Slave Using One or More Throughput Counters | |
US9594419B2 (en) | Method and device for prolonging sleeping time of CPU | |
CN103440216A (zh) | 一种通过i2c从设备调试mcu的芯片及方法 | |
Viaud et al. | An efficient TLM/T modeling and simulation environment based on conservative parallel discrete event principles | |
CN108664380A (zh) | 一种带性能显示的执行后软件调试系统及调试方法 | |
CN105183555A (zh) | 用于媒体处理的硬件虚拟化 | |
CN114463163A (zh) | 一种异构多核的图像处理方法及装置 | |
Fedotova et al. | A high-precision time handling library | |
CN109766028B (zh) | 一种红外触摸屏触控分管系统和方法 | |
CN105824682B (zh) | 一种虚拟机的监控方法、装置和系统 | |
US6457124B1 (en) | Microcomputer having address diversion means for remapping an on-chip device to an external port | |
CN102467444A (zh) | 特殊功能寄存器的仿真调试系统 | |
CN101727388A (zh) | 一种网络计算机系统行为远程调试方法及其装置 | |
CN106126360A (zh) | 地址空洞屏蔽方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |