第11章      RL-TCPnet调试方法

本章节为大家讲解RL-TCPnet的调试方法,RL-TCPnet的调试功能其实就是通过串口打印实时监控运行状态。而且RL-TCPnet的调试设置比较简单,因为官方已经为我们做好了调试版本的库,直接添加到工程,并使能相应的宏配置就可以使用了。

本章教程含STM32F407开发板和STM32F429开发板的调试方法说明。

11.1  初学者重要提示

11.2  RL-TCPnet调试方法设置

11.3  实验例程说明

11.4  总结

11.1  初学者重要提示

1、本章节讲解的内容相对比较简单,主要是配置Net_Debug.c文件即可。由于Net_Debug.c文件中可以使能的选项较多,实际测试中使能太多的话,会打印出非常多的信息,完全看不过来,所以实际测试的时候最好需要调试哪些功能,就开启哪些选项。

2、本章节使用的例子是由前面移植章节配套的例子简单修改而来。另外,对于本章节配套的例子,大家仅需要知道如何使能调试功能即可,具体代码实现的功能会在后面章节逐渐讲解。

11.2  RL-TCPnet调试方法设置

下面分四步进行说明RL-TCPnet的调试方法。

11.2.1  添加调试版本的RL-TCPnet库和配置文件

KEIL官方提供的库有如下几个版本,路径C:\Keil_v474\ARM\RV31\LIB:

其中TCP_CM3.lib是正式版本库,TCPD_CM3.lib是调试版本库,其中字母D表示Debug的意思。虽然标注的是CM3内核,但同样可以用于CM4内核,也就是说CM3和CM4内核的MCU都是用的这个版本的库。要用到调试功能,就得使用库TCPD_CM3.lib,而且要添加调试配置文件Net_Debug.c。前面章节的裸机,RTX,uCOS-III和FreeRTOS的四种移植版本都是用的这个库。比如裸机版本:

如果使用正式版,就不需要文件Net_Debug.c了,仅需移植库文件TCP_CM3.lib就可以了。

11.2.2 调试级别配置

(重要说明,RL-TCPnet的调试是通过串口打印出来的)

RL-TCPnet的调试功能是通过配置文件Net_Debug.c实现。在MDK工程中打开文件Net_Debug.c,可以看到下图所示的工程配置向导:

Print Time Stamp

勾选了此选项的话,打印消息时,前面会附带时间信息。

其它所有的选项

默认情况下,所有的调试选项都是关闭的,每个选项有三个调试级别可选择,这里我们以Memory Management Debug为例,点击下拉列表,可以看到里面有Off,Errors only和Full debug三个调试级别可供选择,每个调试选项里面都是这三个级别。

Off:表示关闭此选项的调试功能。

Errors only:表示仅在此选项出错时,将其错误打印出来。

Full debug:表示此选项的全功能调试。

11.2.3 打印函数重定向

RL-TCPnet的调试功能就是通过调用函数printf实现打印功能,所以需要我们做一个串口重定向,也就是修改函数fputc,只不过这里稍有区别,对于换行符 \n 要特殊处理下,将其修改成回车符 \r 。否则打印出来的消息会错行,比较混乱。

/*

*********************************************************************************************************

*    函 数 名: fputc

*    功能说明: 重定义putc函数,这样可以使用printf函数从串口1打印输出

*    形    参: 无

*    返 回 值: 无

*********************************************************************************************************

*/

int fputc(int ch, FILE *f)

{

#if 0    /* 将需要printf的字符通过串口中断FIFO发送出去,printf函数会立即返回 */

     comSendChar(COM1, ch);

     return ch;

#else    /* 采用阻塞方式发送每个字符,等待数据发送完毕 */

     /* 使用了RL-TCPnet网络协议栈,这里特别调整下 */

     if (ch == '\n') 

     {

         USART_SendData(USART1, '\r');

          /* 等待发送结束 */

         while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}

     }

     USART_SendData(USART1, (uint8_t) ch);

     /* 等待发送结束 */

     while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}

     return ch;

#endif

}

11.2.4 实际效果

下面开启如下几个选项的全功能调试(Application Debug Definitions的所有选项都是关闭的,没有开启):

这里开启的选项有点多,实际应用时,建议需要调试哪方面功能的时候,打开哪些选项,否则打印出来的信息非常多。我们这里只是为了让大家看效果,所以打开的选项稍多,显示效果如下:

11.3 实验例程说明

11.3.1 STM32F407开发板实验

本章节仅仅是教会大家调试方法,具体实验内容还不做讲解,仅需学会调试功能的开启方法即可。

对于STM32F407开发板,本章节配套了如下几个例子(这些例子与前面移植章节的例子是一样的,仅仅是修改了配置文件,所以其它功能看前面移植章节的说明即可。裸机版本是第7章的7.2.5小节,RTX版本是第8章的8.2.5章节,uCOS-III版本是第9章的9.2.6章节,FreeRTOS版本是第10章的10.2.6章节):

对于这四个例子,Net_Debug.c配置文件对三种调试级别都做了选择,部分是Off,部分是Errors only,还有一部分是Full Debug。

这里仅对TCPnet Debug Definitions部分做了配置,而Application Debug Definitions未做配置,因为本章节提供的测试例子没有用到这些功能。

由于这四个例子都是采用同样的配置,这里仅贴出裸机时的信息打印效果:

其它的调试选项,大家也可以自行开启测试,我们这里就不测试了。另外注意,选项不要开的太多,否则打印的信息内容太多,看不过来。

11.3.2 STM32F429开发板实验

本章节仅仅是教会大家调试方法,具体实验内容还不做讲解,仅需学会调试功能的开启方法即可。

对于STM32F429开发板,本章节配套了如下几个例子(这些例子与前面移植章节的例子是一样的,仅仅是修改了下配置文件,所以其它功能看前面移植章节的说明即可。裸机版本是第7章的7.3.5小节,RTX版本是第8章的8.3.5章节,uCOS-III版本是第9章的9.3.6章节,FreeRTOS版本是第10章的10.3.6章节):

对于这四个例子,Net_Debug.c配置文件对三种调试级别都做了选择,部分是Off,部分是Errors only,还有一部分是Full Debug。

这里仅对TCPnet Debug Definitions部分做了配置,而Application Debug Definitions未做配置,因为本章节提供的测试例子没有用到这些功能。

由于这四个例子都是采用同样的配置,这里仅贴出裸机时的信息打印效果:

其它的调试选项,大家也可以自行开启测试,我们这里就不测试了。另外注意,选项不要开的太多,否则打印的信息内容太多,看不过来。

11.4 总结

本章节为大家讲解这么多,建议实际操作演练下,实践出真知。

【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法的更多相关文章

  1. 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-07-21)

    说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.由于是基于HAL库的文档,所以不限制H7系列,其它F1,F2,F3,F4 ...

  2. 【安富莱STM32H7教程】第1章 初学STM32H7的准备工作

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第1章   初学STM32H7的准备工作 俗话说万事开头 ...

  3. 【安富莱】RTX嵌入式操作系统教程发布,支持F103,F407和F429,含81个配套例程(2017-10-17)

    前言说明:1. 首先感谢大家对我们安富莱电子一年来的支持,2016年我们会再接再厉推出更好的教程. 2. 估计也有网友会问RTX的优势在那里,针对这个问题,教程中第一章分为6条专门回答了这个问题,有兴 ...

  4. 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)

    第10章     RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...

  5. 【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)

    第8章        RL-TCPnet网络协议栈移植(RTX) 本章教程为大家讲解RL-TCPnet网络协议栈的RTX操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要 ...

  6. 【安富莱】【RL-TCPnet网络教程】第7章 RL-TCPnet网络协议栈移植(裸机)

    第7章        RL-TCPnet网络协议栈移植(裸机) 本章教程为大家讲解RL-TCPnet网络协议栈的裸机移植方式,学习了上个章节讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文 ...

  7. 【安富莱专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控

    说明:1.  开发板Web服务器的设计可以看我们之前发布的史诗级网络教程:链接.2.  需要复杂些的Web设计模板,可以使用我们V6开发板发布的综合Demo:链接.3.  教程中使用的是花生壳免费版, ...

  8. 【安富莱TCPnet网络教程】HTTP通信实例

    第41章      HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...

  9. 【安富莱专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试

    说明:1.继前面的专题教程推出SEGGER的RTT,JScope,Micrium的uC/Probe之后,再出一期终极调试方案Event Recoder,之所以叫终极解决方案,是因为所有Link通吃.  ...

随机推荐

  1. The import javax.servlet.jsp.JspException cannot be resolved

    问题描述   重新更换了 Apache Tomcat 的版本,在 Eclipse 中项目报错信息:The import javax.servlet.jsp.JspException cannot be ...

  2. centos下设置开机启动程序

    首先,设置权限, 由于/etc/rc.local是/etc/rc.d/rc.local的软连接,所以必须确保/etc/rc.local和/etc/rc.d/rc.local都有x权限(可执行) 执行命 ...

  3. Android Q 变更和新特性

    安全和隐私变更 隐私保护是Android Q重要的主题之一,Android Q带来了一系列增强用户隐私保护的变更. 1 应用文件存储空间限制 应用访问限制是Android Q影响最大变更之一.在And ...

  4. .asmx支持post请求或者get请求调用(WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法)

    使用Post调用以asmx形式提供的webservice时,在本机调试没有调用问题.一旦部署至服务器后会提示如下信息: <html> <head> <title>因 ...

  5. 简易promise的实现(一)

    code 最近在思考promise的实现原理 于是准备自己写一个简单的demo 一开始想到的问题有两个 1.链式调用 2.异步顺序执行 -------------------------------- ...

  6. James Munkres《拓扑学》笔记前言

    许久以前,我读到了侯捷先生于<深入浅出MFC>一书中所写的“勿在浮砂筑高台”这句话,颇受警醒与启发.如今在工科领域已摸索多年,亦逐渐真切而深刻地认识到,若没有坚实.完整.细致的数学理论作为 ...

  7. MFC-注册热键

    0.测试环境 VS2015专业版,基于对话框的MFC程序, 例子地址:http://pan.baidu.com/s/1qX9IRec 1.MFC工程设置 类向导->消息->WM_HOTKE ...

  8. log4j警告:WARN Please initialize the log4j system properly 的解决方法

    出现这个问题的原因则是因为没有为log4j建立配置文件导致的.所以解决问题的方法很简单,只要在 src文件目录下建立配置文件即可: 右键点击src  -> New  ->  File 文件 ...

  9. java笔记:排错5:误删maven target:恢复不了,怎么再生成

    上篇讲过,误删maven项目的target,或clean以后,target文件夹会删掉. 想要重新加载模块生成最新的target目录,可以再跑一下tomcat. 但有时不灵,可能是因为Tomcat本身 ...

  10. html网页调用本地exe程序

    1.使用记事本(或其他文本编辑器)创建一个protocal.reg文件,并写入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ ...