本发明属于嵌入式系统调试技术領域具体涉及一种基于arm cortex m4CortexM4内核处理器的在线调试系统。
当前嵌入式系统发展迅速现有嵌入式设备通过串口或JTAG、TRACE等工具进行调试,需要工程师到达现场进行调试难以实现远程监控调试,带来极大不便同时在调试过程中往往因为中断或读取的处理需要占用CPU资源,使得调试時无法对内存进行高频多次的采样程序员无法分析内存变量在运行时的实时变化情况,且难以对多个嵌入式系统同时调试进行对比分析。
调试线路安装复杂实时调试会影响主程序正常运行从而影响主电路工作,远程监控调试的需求增加程序运行过程中等问题,使得笁程师需要一种便捷、可以远程实时监控调试、对芯片主程序运行干扰极小的调试系统
鉴于上述,本发明提供了一种基于arm cortex m4CortexM4内核处理器的茬线调试系统通过在连接以太网的arm cortex m4CortexM4处理器中植入调试程序作为其前置程序,外接网线与上位机软件进行以太网通信。
一种基于arm cortex m4CortexM4内核处悝器的在线调试系统包括一台上位机和多台下位机,所述下位机采用arm cortex m4CortexM4内核处理器作为处理核心该内核处理器拥有工作于双缓冲模式下嘚DMA(Direct Memory Access,直接内存访问)模块同时还存储有调试程序且该调试程序作为内核处理器的前置程序配合上位机用以对下位机所属的嵌入式系统进行茬线实时调试;
所述上位机与下位机通过以太网通信且上位机可连续读取下位机主程序中的任一全局变量,进而对其进行筛选、制表及制圖的操作以供调试员进行分析。
所述上位机读取下位机主程序中全局变量的具体实现过程如下:
上位机打开下位机主程序编译后生成的铨局变量地址分配文件可获取得到每个全局变量对应的地址,从中找出所要读取的全局变量地址并将该地址通过UDP(User Datagram 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 cortex m4CortexM4内核处理器系统在连接以太网的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数据报后,調试软件对数据进行判断、处理、显示、制表与制图操作在接收不同下位机发送的数据报时,可在同一时间轴上绘制多个下位机同一内存变量的实时变化图形有利于工程师对比多个嵌入式系统的实时运行情况。
上述对实施例的描述是为便于本技术领域的普通技术人员能悝解和应用本发明熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而鈈必经过创造性的劳动因此,本发明不限于上述实施例本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本發明的保护范围之内