MCU开发利器:调试系统之UART

发布时间:2023-08-30  

搞软件开发的同学,对于调试,并不陌生。开发阶段,大家使用最多的调试手段:在调试器(eg:lauterbach)中,设置断点(Breakpoint),通过程序进入断点的方式确认问题。但是,此方式毕竟有其局限性,eg:

本文引用地址:
  1. 非开发人员(eg:测试人员)不能或者没有条件通过此方式进行程序调试;

  2. 车辆量产后,出现bug时,无法连接调试器,不能获取问题发生时的车辆工况信息

  3. ......

所以,谈到解决bug,我们就需要思考不同阶段的不同调试策略。本文聚焦(universal asynchronous receiver transmitter,通用异步收发器)调试系统。

关于调试(Debug),在Autosar规范中,也给出了多个调试模块,比如:

  • DET(Default ErrorTracer)系统,此模块侧重检查BSW(Basic Software)模块开发和运行时的错误,并不能将错误信息以缓存的方式输出。

  • DLT(Diagnostic Log and Trace)系统,此模块可以将SW-Cs、BSW、RTE、Det以及Dem记录的信息,以Message的形式通过外部接口输出,如此,即可利用外部的上位机监控程序的运行状态,或者将运行的时时状态存储下来,以便后续bug问题分析。

DLT与DET的关系如下所示:

车辆量产后的问题,相比于DET,DLT更适合,这类似于Linux等系统的日志系统,可以将程序运行的时时状态记录下来,以便于出现问题时,确认问题原因。本文所讨论的调试系统类似DLT,但是,相对于DLT,更轻量化,自由度也更大。

1、调试系统

UART调试系统,故名思意,就是利用串口功能,将log信息输出给上位机,示意如下所示:

(一)为什么要log系统?

如文章开篇提到的问题:车辆量产以后,出现bug问题时,无法使用调试器进行调试,同时,受限于DEM模块记录故障信息的能力,无法通过NVM存储的有限数据确认车辆问题时的运行工况,比如:网络状态、某些模块局部变量状态等。如果能像飞机黑匣子一样,将问题车运行的日志记录下来,通过DTC信息(快照数据、拓展数据)+日志信息即可最大程度的还原车辆故障时工况,进而有效确认问题原因。

(二)UART调试系统

在上使用调试系统,需要构造一个类似PC端的Printf接口,也就是重定向功能。利用MCU具有的外设,设计一个输出系统,而UART是最常用的外设。关于UART调试系统,网上资源很多,本文不过多讲解,文末给出一个源码链接。

2、利用UART系统进行MCU程序调试

本文分享的UART调试系统来自Lwip,玩Lwip系统的同学应该比较熟悉。使用Lwip调试系统注意点:

(一)参数配置

在debug.h文件中,定义了一个宏:LWIP_DEBUGF,此宏引用了Ifx_Lwip_printf接口,如下所示:

而Ifx_Lwip_printf接口封装了串口发送接口(sendUARTMessage),如下所示:

s8_tIfx_Lwip_printf(constchar*format, ...){#ifdef__LWIP_DEBUG__charstr[MAXCHARS + 4];s8_tresult = ERR_CONN;

va_list args;va_start(args, format);vsnprintf(str, MAXCHARS, format, args);va_end(args);{Ifx_SizeT cnt = 0;while(str[cnt]!=0)cnt++;sendUARTMessage(str, cnt);sendUARTMessage("rn", 2);}#endifreturnresult;}

使用调试系统时,需要使能Debug开关,第一个参数需要设置状态和层级,参数配置示意如下:

TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE。如下所示:

TCP_DEBUG使能需要在opt.h文件中配置,如下所示:

/*** TCP_INPUT_DEBUG:Enable debugging in tcp_in.c for incoming debug.*/#if!defined TCP_INPUT_DEBUG || defined __DOXYGEN__#defineTCP_INPUT_DEBUG LWIP_DBG_ON#endif

(二)串口上位机输出信息

在程序任意需要输出信息的位置,添加LWIP_DEBUGF语句,输出的调试信息如下所示:

如上的信息流就类似黑匣子信息,可以根据开发人员或者架构意图,预埋一些关键信息,以便于后期的排查。

当然,凡是有利有弊,虽然这样的调试系统,可以很方便的增加调试信息,对开发人员友好(个人很喜欢这样的调试系统),但是,增加这样的调试系统需要消耗软/硬件资源。

硬件:意味着需要增加一个用于调试的串口UART,也可以使用其他外设,eg:Ethernet。log系统需要缓存信息,因此需要消耗一块物理存储空间,对于MCU这种内存资源有限的单片机,一般需要把信息传递给车机或者中控这类资源丰富的控制器。举例:MCU将log信息传递给HUD(Head Up Display,抬头显示器),log信息由HUD存储,之后通过对应总线将信息输出给外部上位机,示意如下:

软件:增加一个调试模块,本身就需要增加对应的软件,消耗部分资源。同时,由于软件模块的增加,也会增加部分CPU负担,如果调试信息过多,会进一步加重CPU负担。所以,这里就需要考虑增加多大的CPU开销是系统所能承受的。

2、Lwip UART调试系统源码

本文源码链接:

https://github.com/Kaixinguo2021/TC397_Tasking_UART_Logging.git

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    RS485通信问题,能收不能发,485芯片坏的确认过程;一、问题分析 1、启动串口调试助手 问题 485转SSI设备支持485接口和MOUDBUS RTU规约,正常情况下,主机(PLC、计算机)和从......
    度足够了 杜邦线12根 03 获取M5311模块的IMEI和IMSI 1.把USB转TTL串口模块和M5311模块用杜邦线连接起来 2.把USB-TTL串口模块插到电脑上,电脑打开串口调试......
    没有PLC怎么用计算机控制变频器,串口调试工具实现通信; 最近的三菱FX3G基础入门中讲到的变频器的MODBUS通信控制,还是有好多粉丝私信询问相关问题,今天我们就使用串口......
    串口示波器的串口调试助手功能;逛github时看到这个QT的串口示波器,完全开源,支持串口、TCP、波形显示、通信协议。感觉很不错,跟以前分享的那个vofa+有点像。感兴......
    、STMicroelectronics IDE等工具进行JTAG调试。 2.使用串口调试器:串口调试器可以通过串口与单片机进行通信,实现单步执行、断点调试等功能。在STM32单片机中,可以使用ST-Link......
    发送数据成功还是接受到数据都会进入到中断程序中,故而在中断程序中判断是否RI被置位为1,如是则表示收到了数据。      然后只需要在主程序main函数中调用串行口初始化函数及用一定的逻辑调用数据发送函数即可。   (4)通过串口调试......
    STC89C51单片机对LCD显示的串口调试关照强度程序设计;最近在调试传感器的那块程序,这里总结一下自己的心得。 调试程序的方法 方法1:led显示法,在程序中调用这一句函数led = 0;可以......
    【MCS-51】内行串口及其应用;51单片机内部集成了许多通信接口,其中行串口(UART)是最常用的一种。UART是一种异步串行通信协议,可以通过两根数据线实现数据传输。在嵌入式系统中,UART广泛应用于串口调试......
    站的提供的实验板上已经装配好了全部硬件。 串口通讯的硬件电路如上图所示 为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。    点击这里可以下载并运行这个串口调试......
    在程序也在文末的链接中) 在串口调试助手中,可打开或关闭串口,不过此时还没有任何功能。 4.1 发送函数 接下来进行功能配置,虚拟串口的主要配置代码在 src->usbd_cdc_if.c中,其中......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>