你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

RTOS超低功耗平台应用---使用TraceAlyzer

[复制链接]
BinWin 发布时间:2018-4-21 00:31
本帖最后由 wangdbff 于 2018-4-21 00:34 编辑
$ [" f( W6 P- J0 h4 O2 H3 l# r( }
     了解了一下TraceAlyzer,其实是一个OS时序分析软件.不过强大的功能却要收费,这里看到有FreeRTOS使用的免费版本,下载来看看。6 N2 i6 v6 B8 P8 |" ?' @
     需要填写几个表单- h' }; k& N/ _' F) v
      E[M0`JYXC44EY2__T`(DPD2.png 1 {# x& s9 p8 a' I
       实验的工程中要添加trace的支持代码,是按照中间件提供的,如下) C! _$ L. ~4 n5 M9 _
         HANPHYP@PP%2W4JKZLZXCN0.png ) o* |: O8 U# ^7 V3 q8 N$ B% H5 T
        这个目录是这个样子的/ h+ ?, Y* P+ c3 _# C) [
4 V+ d5 Q$ l7 O4 _9 ^' v  R
  1. readme.txt* F, j( J- F) [; \
  2. │  trcKernelPort.c
    $ v) w; ~0 N( L, H
  3. │  trcSnapshotRecorder.c* {+ I3 g. g7 B) b0 E1 i5 O6 D
  4. │  trcStreamingRecorder.c
    7 W/ z* i5 I3 N  D6 y
  5. ├─config
    0 [& c0 L5 A8 h/ u/ a6 R" z
  6. │      trcConfig.h                  // 整个Trace源码的配置文件.
    1 H( \) x4 R3 W! }2 C% |' |
  7. │      trcSnapshotConfig.h          // 快照模式配置文件,和流模式对应文件选其一
    ' {7 Y$ n* ]) q: U
  8. │      trcStreamingConfig.h         // 流模式配置文件,和快照模式对应文件选其一+ u/ Q' |( B2 n8 {/ D- I
  9. ├─include
    + I2 Q! y; x: o2 l  g+ @
  10. │      trcHardwarePort.h            // 所有硬件依赖关系。包含几个预定义的硬件端口,包括ARM Cortex-M,PIC32,Renesas RX等。
    % a* W( G1 Z4 r! U
  11. │      trcKernelPort.h              // FreeRTOS特定的定义,最值得注意的是跟踪钩子定义。3 B- P' ]% l5 F+ |( c9 x$ C2 I
  12. │      trcPortDefines.h             // 配置文件的各种常量定义
    $ x& t+ t/ N# q0 Q! m* s
  13. │      trcRecorder.h                // 公共API,开发者将以上两种模式进行了统一,用户使用时,只需要包含该文件即可!
    ( B; p3 j) y. F! F+ Q* o" |
  14. └─streamports                       // 该文件夹下就是流模式对应的不同接口方式的实现,以下任选其一即可
    ) z$ G, J) i8 B; u# |, @: l
  15.     ├─Jlink_RTT( V* u! n% \+ C( x
  16.     │  │  Readme.txt
    * D: \, ]+ d/ j0 w& R. P
  17.     │  │  SEGGER_RTT.c1 i: B: Q% _6 }3 V( @$ u. O
  18.     │  │  SEGGER_RTT_Printf.c6 P& y: n$ d$ c1 Y# S
  19.     │  └─include2 e: Q+ z; H9 P; t( u- l9 G
  20.     │          SEGGER_RTT.h
    1 z' Q% Q( T  e& a' Q; N# S
  21.     │          SEGGER_RTT_Conf.h2 }0 ~8 ~9 O: b; {
  22.     │          trcStreamingPort.h( f3 l9 b9 G/ @2 E, P, B9 p- U, S
  23.     ├─TCPIP
    * L+ A. j) g4 v
  24.     │  │  Readme.txt. U% U: B% }  T8 B; k, q/ t6 M5 I) A
  25.     │  │  trcStreamingPort.c+ x# k% Z" [# [
  26.     │  └─include
    : Z  m9 f0 N' P2 G4 P0 u4 Q
  27.     │          trcStreamingPort.h
    " |- s0 B+ D0 u% x' b3 b; o) X
  28.     └─USB_CDC
    # O+ B* \# r2 k: D( P8 U
  29.         │  Readme.txt
    6 J1 Y& q# L( Y) J9 V
  30.         │  trcStreamingPort.c% q- u" q$ Z- c% Z
  31.         └─include8 A2 q+ F+ K! i( h! {; K
  32.                 trcStreamingPort.h
复制代码
      另外要在trcConfig文件中修改一些内容,重点看有注释的地方。
  1. #ifndef TRC_CONFIG_H
    , Q  Z6 T% h& e* A4 V6 G3 \. K
  2. #define TRC_CONFIG_H0 k1 z1 ?, R+ u4 @9 Z

  3. ) K! s8 Y- V! ~
  4. #ifdef __cplusplus
    + G' ~$ x0 K1 c( I2 F; t
  5. extern "C" {9 v' q& e5 I/ I
  6. #endif
    % O6 W. ]& L: Q& m" g# T
  7. 6 b0 c# v5 L7 Y( [- P
  8. #include "trcPortDefines.h"
    - }2 _4 ~  k6 [( a
  9. : y# n0 C) h0 V( a# P
  10. /******************************************************************************
    + L" C" q# k4 G0 D" T1 P
  11. * Include of processor header file
    4 f2 z& ~6 d; h) U' s) i" I
  12. *
    , {9 t' q1 d) g/ l% |
  13. * Here you may need to include the header file for your processor. This is
    & u+ l- C& _( `! S6 `' _
  14. * required at least for the ARM Cortex-M port, that uses the ARM CMSIS API.7 D+ |/ w2 v6 |: x1 q8 y
  15. * Try that in case of build problems. Otherwise, remove the #error line below.
    ! _' p2 j2 c4 }. c1 ]  a/ q
  16. *****************************************************************************/
    , |9 \: G4 P3 o6 G* \: k) F$ X
  17. #include "stm32F2xx.h"      // 这里根据需要添加自己的芯片的头文件5 o4 ]: |" ]9 |& I1 `0 b8 F" M$ X: q
  18. //#error "Trace Recorder: Please include your processor´s header file here and remove this line."
    ; h. ?5 x9 N( m
  19.   G" s3 S' @8 i. U1 B
  20. /*******************************************************************************
    8 B% J3 K$ @' n" w% b, ]' c4 I
  21. * Configuration Macro: TRC_CFG_HARDWARE_PORT
    ! P$ J4 i# }( A' z: K, f5 c
  22. *
    ' ^8 `! _' p% Q9 Y# p5 h
  23. * Specify what hardware port to use (i.e., the "timestamping driver").
    ; l; {$ Y  Q8 ~! i: j7 \
  24. * All ARM Cortex-M MCUs are supported by "TRC_HARDWARE_PORT_ARM_Cortex_M".
    ' I! c- i$ h8 y; |: x! [# w$ g
  25. *; A4 @9 I$ V; K4 W% P
  26. * See trcSnapshotHardwarePort.h or trcStreamingHardwarePort.h for available
    - n3 t+ Q8 V& Z8 T
  27. * ports and information on how to define your own port, if not already present.
    " X+ }% Q/ p6 z8 X- x3 P* y; Q
  28. ******************************************************************************/
    , K, b6 g2 i; Q  ^* L7 w
  29. #define TRC_CFG_HARDWARE_PORT TRC_HARDWARE_PORT_ARM_Cortex_M        // 选择芯片对应的类型7 i" F* i" [7 s4 G4 U

  30. ! _& m: _( ?3 q6 X- y5 Q
  31. /*******************************************************************************- H- _! I/ o) W0 L3 [/ {
  32. * Configuration Macro: TRC_CFG_RECORDER_MODE
    # t) i6 e3 v( r$ u- n7 m$ b
  33. *+ t  g/ v: ]' {) q4 f
  34. * Specify what recording mode to use. Snapshot means that the data is saved in3 w  J' _7 s: {6 ^$ x) _
  35. * an internal RAM buffer, for later upload. Streaming means that the data is
    4 S" H+ H" [8 l3 }# o. J) Z+ ]( h: R
  36. * transferred continuously to the host PC. 4 A! P5 z2 L4 R/ N7 E+ U& W' L
  37. *# s3 k. S3 K( i% i% T" B5 h
  38. * For more information, see http://percepio.com/2016/10/05/rtos-tracing/
    ( o; Y2 H' o# I! R9 J& ~- e
  39. * and the Tracealyzer User Manual.
    2 n; X( l6 f* t* }
  40. *
    4 L: V9 a% n: M  J! M
  41. * Values:
    7 ]0 `+ S4 `$ _: G% [' h
  42. * TRC_RECORDER_MODE_SNAPSHOT. n% D* p: X' c# \
  43. * TRC_RECORDER_MODE_STREAMING
      h* B4 C2 b0 P) [
  44. ******************************************************************************/0 n& j. Y! [3 h6 k- X* k
  45. #define TRC_CFG_RECORDER_MODE TRC_RECORDER_MODE_STREAMING       // 选择追踪模式(默认快照模式,这里我改成了流模式)' b& F% ?, t- u3 F1 n
  46. 5 L0 ~4 m+ Y( V& `
  47. /*******************************************************************************) q3 H- O- S, G
  48. * Configuration Macro: TRC_CFG_RECORDER_BUFFER_ALLOCATION
    ( Z' U; Z8 w5 W# I% o8 Z
  49. *
    % L( K! }  T5 h5 o  w6 G4 d' f
  50. * Specifies how the recorder's internal buffer is allocated (snapshot or
    " H. V0 d6 @8 U; f& Z  l$ |
  51. * streaming). Note that CUSTOM is only supported in snapshot mode.
    1 h1 l1 q3 @# A. q: O
  52. *8 N& h" M5 T, ]1 q
  53. * TRC_RECORDER_BUFFER_ALLOCATION_STATIC  - Static allocation
    . a) T1 M0 X# G: M( D
  54. * TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC - Allocated in vTraceEnable
    8 [# L5 g* p# M9 d: c8 t: {8 G
  55. * TRC_RECORDER_BUFFER_ALLOCATION_CUSTOM  - Use vTraceSetRecorderDataBuffer
    ; @9 c  x7 v; \0 C; j
  56. ******************************************************************************/
    0 {8 D2 z! h/ M* m( T4 `
  57. #define TRC_CFG_RECORDER_BUFFER_ALLOCATION TRC_RECORDER_BUFFER_ALLOCATION_STATIC' z/ x! I) L! B+ a# C- x1 M1 [: E
  58. 9 {4 \4 }/ M" i& x
  59. /******************************************************************************
    . C( {! I) c, H- d2 r" f- [7 i
  60. * TRC_CFG_FREERTOS_VERSION: t+ @3 _$ l1 K1 S) W1 E. K
  61. * 1 H( _1 q0 A3 I5 l% [. o  l3 V
  62. * Specify what version of FreeRTOS that is used (don't change unless using the
    4 k# o) Z6 {( u
  63. * trace recorder library with an older version of FreeRTOS).
    7 {, H9 I" Y2 @  T/ y
  64. * ! ^) t9 Y, t" l( d
  65. * TRC_FREERTOS_VERSION_7_3_OR_7_4              If using FreeRTOS v7.3.0 - v7.4.2: X& X  a! `7 E/ @8 i
  66. * TRC_FREERTOS_VERSION_7_5_OR_7_6              If using FreeRTOS v7.5.0 - v7.6.00 z5 P1 `3 i8 w& b4 O% z8 c
  67. * TRC_FREERTOS_VERSION_8_X                     If using FreeRTOS v8.X.X
    6 O. G7 \5 i! \
  68. * TRC_FREERTOS_VERSION_9_X                     If using FreeRTOS v9.X.X. d$ b! R- [! R& A  H( C1 O5 I3 k
  69. *****************************************************************************/* `2 k" [2 d4 P
  70. #define TRC_CFG_FREERTOS_VERSION    TRC_FREERTOS_VERSION_9_X                // 这里根据自己的FreeRTOS版本修改
    + q9 W) u3 u1 B3 l

  71. " u3 D1 t; J6 ^* G! I! p
  72. /******************************************************************************$ Q6 R2 J5 S1 l  |/ t. u" P" j
  73. * TRC_CFG_MAX_ISR_NESTING
    & B& |' I* x# ]; j! }& p  v: F; m
  74. *
    ' c+ R  ^" V3 b: e1 y& \
  75. * Defines how many levels of interrupt nesting the recorder can handle, in% t7 I  E  `" S1 K
  76. * case multiple ISRs are traced and ISR nesting is possible. If this# G5 W# J- k/ G) v( x3 \, x: M9 n
  77. * is exceeded, the particular ISR will not be traced and the recorder then
    , ]5 L( \4 P  }0 I$ m! H1 j7 Y
  78. * logs an error message. This setting is used to allocate an internal stack
    " K* s! E! v+ i5 z) ]" r2 ?6 g% T, A
  79. * for keeping track of the previous execution context (4 byte per entry).
    ! D. c. {5 l5 K/ B) m. c
  80. *9 x7 N9 d/ X! n8 z$ J9 Z1 q$ U
  81. * This value must be a non-zero positive constant, at least 1.  E5 x8 T7 D! w+ n/ e
  82. *
    ! F  N; c4 m( c& F& p& z0 E7 y1 {
  83. * Default value: 8$ l9 Q+ z$ S. Z2 q! j! X
  84. *****************************************************************************/& f) d  I' D; w" c! l3 s
  85. #define TRC_CFG_MAX_ISR_NESTING 8
    ) u3 p# J' S+ W% H
  86. 4 E8 |0 b0 t: j1 z
  87. /* Specific configuration, depending on Streaming/Snapshot mode */
    ) @' Y& q) g/ e7 ?. K$ D
  88. #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_SNAPSHOT)1 U2 s4 V% @! U
  89. #include "trcSnapshotConfig.h"# I% l, s- M- t( v
  90. #elif (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING); K6 [5 I9 g( Q$ d% b' M9 \
  91. #include "trcStreamingConfig.h"4 a# L& g5 J. b/ J
  92. #endif
    5 |1 A$ W) }  E: _. C
  93. ) h7 i  f6 A! s' J% r2 Q5 e
  94. #ifdef __cplusplus! E0 z, T9 V2 W0 K
  95. }: i8 O: i& B* |  J8 ]5 j( A' D
  96. #endif
    $ r7 l" C1 M. e0 L  N. K3 v' {
  97. * ?: G* X# k0 U' Y: x8 {
  98. #endif /* _TRC_CONFIG_H */
复制代码
        主函数中使能trcRecorder,后续就可以使用API了。          3QT~EL7)@NO]H}KYET4}1OI.png          
  z) E' L4 g$ G8 v         安装好下载的软件并输入lisense以后就可以配置上位机。/ a1 A. V. I9 d7 B9 {2 `
         具体配置方法可以看其他朋友写好的,详细步骤要多图配套,往IAR中添加Tracealyzer 工具的时候直接默认的名字
! |! W9 I, a$ \) p5 e# M+ A          5B0LT$_S[@NQZ(ILJGIATKD.png
% S: B  H6 C# u" a        选择后打开分析软件,从file中打来工程目录的money.hex文件就可以查看到该项目的运行情况。
% i! H7 m+ T$ t2 K9 N) U2 g& u        我这里来只看下打开后的效果# n+ q2 }) J+ A
          2F1~OXQ9GLVWBV(I2[~30E3.png * s9 T0 v7 Z7 ^$ M4 s7 V1 k! s
          的确很强大,可以图形化的跟踪系统和记录,。
8 e' q/ V, H7 |6 L
* D1 v' t: A7 H# `* w+ o5 n. N1 A5 p6 j+ r& O6 q

% W8 ^( d- ^; w7 k* I
5 s1 K# s( [  C6 k0 Q1 L) u  q. ?* j. [9 ^, `; r0 }
赞 收藏 评论3 发布时间:2018-4-21 00:31

举报

3个回答
KEY1 回答时间:2018-9-5 11:50:14
根本不行, 运行后直接进入了硬件错误中断
- R' S# t, }7 l2 H% }8 H1 f 0000000000000000001.jpg
! Z& `! U" q& D, ]+ Z
忆古思贤 回答时间:2018-9-30 09:07:06
多谢分享,辛苦了
米兰的无线电 回答时间:2019-7-4 11:30:08
本帖最后由 role_2099 于 2019-7-4 11:51 编辑 $ Y; b6 h* Y; h% Z2 z# q

) w( G4 T( @2 g- c楼主帮忙看一下,我的是IAR8.32.4,怎么没有你那项new tool啊
7 M; w. V0 c" R
& [9 {* T, q. }; H 2019-07-04_11-28-11.png
$ p2 l! u( ~" C& k6 [& a2 x6 r1 I; B* f
知道了,是我还没有在IAR添加这个工具,我再找一下方法吧,但我从Tracealyzer 4里面直接打开IAR编译生成的.bin问题,提示下面的错误,我是评估版本,已输入license
5 n- u3 k& l2 }$ U, u* z5 ~ 2019-07-04_11-48-53.png
  j% n( P" k8 `) j7 }7 v2 ~

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版