硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2576|回复: 0
收起左侧

[RL-TCPnet教程] 【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2017-10-26 15:06:18 | 显示全部楼层 |阅读模式
第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:
11.1.png


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

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

11.2.2 调试级别配置


       (重要说明,RL-TCPnet的调试是通过串口打印出来的)
        RL-TCPnet的调试功能是通过配置文件Net_Debug.c实现。在MDK工程中打开文件Net_Debug.c,可以看到下图所示的工程配置向导:
11.3.png

Print Time Stamp
        勾选了此选项的话,打印消息时,前面会附带时间信息。
其它所有的选项
        默认情况下,所有的调试选项都是关闭的,每个选项有三个调试级别可选择,这里我们以Memory Management Debug为例,点击下拉列表,可以看到里面有Off,Errors only和Full debug三个调试级别可供选择,每个调试选项里面都是这三个级别。
11.4.png

Off:表示关闭此选项的调试功能。
Errors only:表示仅在此选项出错时,将其错误打印出来。
Full debug:表示此选项的全功能调试。

11.2.3 打印函数重定向


        RL-TCPnet的调试功能就是通过调用函数printf实现打印功能,所以需要我们做一个串口重定向,也就是修改函数fputc,只不过这里稍有区别,对于换行符 \n 要特殊处理下,将其修改成回车符 \r 。否则打印出来的消息会错行,比较混乱。
  1. /*
  2. *********************************************************************************************************
  3. *    函 数 名: fputc
  4. *    功能说明: 重定义putc函数,这样可以使用printf函数从串口1打印输出
  5. *    形    参: 无
  6. *    返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. int fputc(int ch, FILE *f)
  10. {
  11. #if 0    /* 将需要printf的字符通过串口中断FIFO发送出去,printf函数会立即返回 */
  12.      comSendChar(COM1, ch);
  13.      return ch;
  14. #else    /* 采用阻塞方式发送每个字符,等待数据发送完毕 */
  15.      /* 使用了RL-TCPnet网络协议栈,这里特别调整下 */
  16.      if (ch == '\n')
  17.      {
  18.          USART_SendData(USART1, '\r');
  19.         
  20.           /* 等待发送结束 */
  21.          while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}
  22.      }
  23.    
  24.      USART_SendData(USART1, (uint8_t) ch);
  25.    
  26.      /* 等待发送结束 */
  27.      while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}
  28.      return ch;
  29. #endif
  30. }
复制代码

11.2.4 实际效果


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


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


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章节):
11.7.png

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

        这里仅对TCPnetDebug Definitions部分做了配置,而Application Debug Definitions未做配置,因为本章节提供的测试例子没有用到这些功能。
        由于这四个例子都是采用同样的配置,这里仅贴出裸机时的信息打印效果:
11.8.png

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

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章节):
11.10.png
对于这四个例子,Net_Debug.c配置文件对三种调试级别都做了选择,部分是Off,部分是Errors only,还有一部分是Full Debug。
11.9.png

        这里仅对TCPnetDebug Definitions部分做了配置,而Application Debug Definitions未做配置,因为本章节提供的测试例子没有用到这些功能。
        由于这四个例子都是采用同样的配置,这里仅贴出裸机时的信息打印效果:
11.10.png

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

11.4 总结

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


努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:40 , Processed in 0.222322 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表