zoukankan      html  css  js  c++  java
  • 【STM32H7】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)

    最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=95243

    第9章   RL-TCPnet调试方法(Event Recorder和串口两种)

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

    9.1 初学者重要提示

    9.2 RL-TCPnet支持的调试版本

    9.3 RL-TCPnet调试方法设置(串口打印)

    9.4 RL-TCPnet调试方法设置(Event Recorder)

    9.5 实验例程说明

    9.6 总结

    9.1   初学者重要提示

    1.   本章节讲解的内容相对比较简单,主要是配置Net_Debug.c文件即可。由于Net_Debug.c文件中可以使能的选项较多,实际测试中使能太多的话,会打印出非常多的信息,完全看不过来,所以实际测试的时候最好需要调试哪些功能,就开启哪些选项。
    2.   本章节使用的例子是由前面移植章节配套的例子简单修改而来。另外,对于本章节配套的例子,大家仅需要知道如何使能调试功能即可,具体代码实现的功能会在后面章节逐渐讲解。
    3.   如果不熟悉Event Recorder的使用,务必看下V7用户手册的第8章。http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

    9.2   RL-TCPnet支持的调试版本

    KEIL官方提供的库有如下几个版本:

     

    •   IPv4 Debug和IPv4/IPv6 Debug

    这两个版本用于Event Recoder的调试。

    •   IPv4 Debug STDIO和IPv4/IPv6 Debug STDIO

    这两个版本用于串口调试。

    •   IPv4 Release和IPv4/IPv6 Release

    这两个是正式发布版本。

    9.3   RL-TCPnet调试方法设置(串口打印)

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

    9.3.1      第1步,添加串口调试版本的RL-TCPnet库

    选择库文件IPv4/IPv6 Debug STDIO

     

    9.3.2      第2步,设置使用User模式的IO输出

    设置后,用户就可以设置串口输出数据。

     

    9.3.3      第3步,使用串口重定向函数stdout_putchar

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

    int stdout_putchar (int ch)
    {
    #if 0  /* 将需要printf的字符通过串口中断FIFO发送出去,printf函数会立即返回 */
        comSendChar(COM1, ch);
        
        return ch;
    #else    /* 采用阻塞方式发送每个字符,等待数据发送完毕 */
        /* 使用了RL-TCPnet网络协议栈,这里特别调整下 */
        if (ch == '
    ')  
        {
            /* 写一个字节到USART1 */
            USART1->TDR = '
    ';
    
            /* 等待发送结束 */
            while((USART1->ISR & USART_ISR_TC) == 0){}
        }
        
        /* 写一个字节到USART1 */
        USART1->TDR = ch;
        
        /* 等待发送结束 */
        while((USART1->ISR & USART_ISR_TC) == 0){}
        
        return ch;
    #endif    
    }

    9.3.4      第4步,调试级别配置

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

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

     

    •   Print Time Stamp

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

    •   其它所有的选项

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

     

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

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

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

    9.3.5      第5步,实际效果

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

     

    实际应用时,要调试哪方面功能的时候,打开哪些选项,否则打印出来的信息非常多,显示效果如下:

     

    9.4   RL-TCPnet调试方法设置(Event Recorder)

    下面分步说明RL-TCPnet的Event Recorder调试方法。关于JLINK,STLINK,CMSIS-DAP使用Event Recorder的注意事项在V7开发板用户手册的8章节有详细说明:

    http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

    9.4.1      第1步,添加Event Recorder调试版本的RL-TCPnet库

    选择库文件IPv4/IPv6 Debug。

     

    9.4.2      第2步,设置使用Event Recorder模式的IO输出

    使能bsp.h文件里面的宏定义,0表示禁止Event Recorder,1表示使能。

     

    这个宏定义控制的是bsp.c文件里面的Event Recorder的初始化。

    #if Enable_EventRecorder == 1  
        /* 初始化EventRecorder并开启 */
        EventRecorderInitialize(EventRecordAll, 1U);
        EventRecorderStart();
    #endif

    设置完毕后,配置STDOUT使用Event Recorder。

     

    9.4.3      第3步,调试级别配置

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

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

     

    •   Print Time Stamp

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

    •   其它所有的选项

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

     

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

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

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

    9.4.4      第4步,实际效果

    打开RL-TCPnet的调试组件:

     

    效果如下:

     

    Event Recorder组件:

     

    效果如下:

     

    9.5   实验例程说明

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

    本章节配套了如下几个例子:

     

    具体网络工程的测试看第7章的7.14小节或者第8章的8.14章节均可。

    9.6   总结

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

  • 相关阅读:
    js json与字符串相互转换
    Web 加入favicon
    JS 深拷贝
    C# 读取配置文件
    设计模式之抽象工厂模式
    设计模式之工厂方法的隐藏
    设计模式之工厂方法的重载
    设计模式之工厂方法配置文件与反射
    C#设计模式之工厂方法模式
    jq解析json文件
  • 原文地址:https://www.cnblogs.com/armfly/p/13634262.html
Copyright © 2011-2022 走看看