请选择 进入手机版 | 继续访问电脑版
查看: 282|回复: 2

[原创] IRDLPC1768 使用Event Recorder调试 --- 5

[复制链接]
回帖奖励 19 NXP金币 回复本帖可获得 1 NXP金币奖励! 每人限 1 次
  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 567 天

    [LV.9]以坛为家II

    42

    主题

    1440

    帖子

    19

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    3805
    最后登录
    2020-2-18
    发表于 2019-3-23 18:00:13 | 显示全部楼层 |阅读模式
    本帖最后由 okwh 于 2019-3-23 18:00 编辑

    IRDLPC1768 使用Event Recorder调试   ---- 5


    1  调试工具
        调试是开发的关键,中间关系已发成败。   优秀的调试工具 帮助编程者迅速确定错误定位、评估代码表现,对研发有举足轻重的影响。
    长期以来,我们基本的调试方法是单步执行。
    但随着嵌入系统的大量使用、开发复杂度的增加,单步执行调试效率不高,对多线程下的调试力有不逮。
          IDE同时提供丰富先进的调试方法非常重要,keil大约从5.22版以编译器扩展方式开始增加Event Recorder做为调试工具,后有增加component Viewer, 5.26可用的编译器扩展v1.6,两个新工具已经有了出色表现,成为调试利器。以完全可以和SeaggerRTTSystem Viewer相媲美甚至超越。更可贵的是这两个新工具是编译器扩展、可用户配置,几乎任何下载调试硬件都支持,不象RTTSystem Viewer只能配合那个Jlink才能用。

        CMSIS-DAP已功能完备,支持丰富的功能,至少在市场最广泛的Cortex-M上已充分够用,DAP调试器越来越多。

    0601.png

        使用RTOS时,调试尤其艰难,过去的Event Viewer不支持Keil RTX 5System and Thread Viewer也只支持到Keil RTX 4.82 许多RTOS自己内含了一些调试手段,但这增加了学习难度、和开发成本。
       0602.png
         Event Recordecomponent Viewer给人眼前一亮的感觉。有此利器,传统的裸机开发者可以转入RTOS下的开发,降低了自己的劳动强度、或扩展了自己处理复杂系统的能力。

    2 keil uVision 的编译扩展
    ARM Compiler Software Extensions
    安装在Keil/ARM/PACK/Keil/ARM_Compiler/1.6.0/Doc/General/html/index.html
    包括:Event Recorder 和各种I/O Retargeting STDINSTDOUTSTDERRTTYFile等,通常它们是用于调试的,并且不再象以前那样需要物理串口,现在它们可以各个方式重定向包括重定向到Event Recorder
          Event Recordecomponent Viewer在不同版本下有些不同,建议使用最新版uVision v5.26, 不然有时还是或出些莫名其妙的问题,比如至今仍让我感觉来无踪去无影、时有时无的memory mismatch错误。



    3  使用EventRecorder
    说明http://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html

    可以在运行环境选择插入Event Recorder

    0603.png

         可选分配指定Event Recorder使用争用内存,但这是可选的,可以不指定。

      
      
    flash配置

    default
    ROM1
    0x0
    0x80000
    startup
    default
    IRAM1
    0x10000000
    0x8000


    IRAM2
    0x2007C000
    0x8000





    flash配置
    event recorder
    default
    ROM1
    0x0
    0x80000
    startup

    RAM1
    0x2007C000
    0x800
    NoInit
    default
    IRAM1
    0x10000000
    0x8000


    IRAM2
    0x2007C800
    0x8000


    0604.png

           CMSIS-RTOS2 Keil RTX5自动支持 使用Event RecordercomponentViewer,在运行时环境选择加入RTOS RTX 源文件后,可在RTX配置指轻松配置。开发完成,可改选库方式非源文件加入,即可用于发布,不再调试。

    0605.png


    0607.png

    4 例程


    代码中使用: 添加头文件, 添加两句初始化,即可使用。自己编程发送消息使用EventRecordXXX(…)函数。 细节见http://www.keil.com/pack/doc/compiler/EventRecorder/html/er_use.html

    • #include "EventRecorder.h"      ////////////////////////////////////////////////////
    • ...........参前文例子工程
    • int main (void) {
    •   SystemCoreClockUpdate ();                 /* Update system core clock    100MHz   */
    • // SysTick_Config(SystemCoreClock/10);      /* SysTick 中断 each 100 ms  */
    • // 不需要了, RTX 做系统初始化,  SysTick被用于RTOS的调度计时,不得再它用
    •   LED_Initialize();                         /* Initialize the LEDs           */
    • EventRecorderInitialize (EventRecordAll, 1); ////////////////////////////////////////////////////
    • EventRecorderStart();                                 ////////////////////////////////////////////////////
    • osKernelInitialize();
    •   tid_phaseA = osThreadNew(phaseA, NULL, NULL);      //创建线程
    •   tid_phaseB = osThreadNew(phaseB, NULL, NULL);
    •   tid_phaseC = osThreadNew(phaseC, NULL, NULL);
    •   tid_phaseD = osThreadNew(phaseD, NULL, NULL);
    •   tid_Other  = osThreadNew(Other, NULL, NULL);
    • //         printf("456");
    • //        printf("123");
    •   osThreadFlagsSet(tid_phaseA, 0x0001);          /* set signal to phaseA thread  触发第一个线程  */
    •   osKernelStart();
    •   //osDelay(osWaitForever);
    •   while(1);
    • }


    [color=rgb(51, 102, 153) !important]复制代码


    debug下打开看到:这里显示的是RTOS的事件,对于分析RTOS行为极其有用。

    0608.png

    并且EventRecorder 可选设定配置显示那些事件及详细程度。

    0609.png


    debug下打开systrm analyizer 还看到:对于理解各线程极其状态变化和事件顺序极其有用

    0610.png



    5  使用ComponentViewer
    Event RecorderComponent Viewer是同一软件包。

    关于Component Viewer
    可动态观察软件组件、指定变量等,需要设计xml格式的.SCVD文件,告诉编译调试系统需要监控那些组件或变量(debug设置也下面的manage Component Viewer description Files…设置)MDKMiddleware, CMSIS, CMSIS-FreeRTOS已经包含调试用的*.SCVD 文件,例子参考http://www.keil.com/pack/doc/compiler/EventRecorder/html/cv_use.html


    debug下可打开看到:RTX5组件的各种关键信息,对于分析程序设计行为、资源占用  极其有用。




    参考:
    更多调试信息:
    http://www2.keil.com/mdk5/debug/?_ga=2.182893862.187618891.1553330228-952045664.1550065544
    https://developer.arm.com/products/software-development-tools/arm-development-studio/components/keil-uvision-debugger
    https://www.arm.com/products/development-tools/embedded-and-software/rtx5-rtos

    0611.png
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 567 天

    [LV.9]以坛为家II

    42

    主题

    1440

    帖子

    19

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    3805
    最后登录
    2020-2-18
     楼主| 发表于 2019-12-23 23:10:23 | 显示全部楼层
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-22 10:40
  • 签到天数: 53 天

    [LV.5]常住居民I

    8

    主题

    188

    帖子

    0

    金豆

    中级会员

    Rank: 3Rank: 3

    积分
    384
    最后登录
    2020-1-22
    发表于 2019-12-24 12:59:19 | 显示全部楼层

    回帖奖励 +1 NXP金币

    顶下,学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2020-2-18 14:44 , Processed in 0.107776 second(s), 16 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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