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

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

[复制链接]
BinWin 发布时间:2018-4-21 00:31
本帖最后由 wangdbff 于 2018-4-21 00:34 编辑   E5 p& G- B- W( S5 C* ]. {. V; q

5 d/ a9 T+ w3 y     了解了一下TraceAlyzer,其实是一个OS时序分析软件.不过强大的功能却要收费,这里看到有FreeRTOS使用的免费版本,下载来看看。* u: N4 t2 {8 p$ Y! \
     需要填写几个表单8 H* P, A' O' @: i( u3 q2 p5 a2 q
      E[M0`JYXC44EY2__T`(DPD2.png . h7 V2 X8 `) M) E; p  {2 S
       实验的工程中要添加trace的支持代码,是按照中间件提供的,如下
8 q) S. U. W, k* i, D/ U         HANPHYP@PP%2W4JKZLZXCN0.png / x6 ?" h. z/ D8 _/ j# ]8 P
        这个目录是这个样子的0 O) K  J3 v6 K3 A; b

/ j6 W& A" g& R/ _/ ?# {7 O
  1. readme.txt
    ! r, o2 _, ~- P5 a4 E6 Q7 p
  2. │  trcKernelPort.c; m2 L3 E, G! v) M- b4 U
  3. │  trcSnapshotRecorder.c! o6 ?- u) k7 c" O) c2 ^
  4. │  trcStreamingRecorder.c
    . \" B5 ^% f6 `  S
  5. ├─config
    ! n& w& I2 f$ ?
  6. │      trcConfig.h                  // 整个Trace源码的配置文件.% C5 s# l! n% j
  7. │      trcSnapshotConfig.h          // 快照模式配置文件,和流模式对应文件选其一
    ! `9 b0 r. k4 Z( t( z$ s
  8. │      trcStreamingConfig.h         // 流模式配置文件,和快照模式对应文件选其一/ A2 T* ]( c2 E  }' ]1 h
  9. ├─include# i# {# @' \& f2 G! E
  10. │      trcHardwarePort.h            // 所有硬件依赖关系。包含几个预定义的硬件端口,包括ARM Cortex-M,PIC32,Renesas RX等。0 M* l" g9 U, N- l: K' J
  11. │      trcKernelPort.h              // FreeRTOS特定的定义,最值得注意的是跟踪钩子定义。8 U# Z3 ]2 O/ B" ?4 G6 F( ^% o
  12. │      trcPortDefines.h             // 配置文件的各种常量定义3 a: c+ m$ r. I" R. n( T
  13. │      trcRecorder.h                // 公共API,开发者将以上两种模式进行了统一,用户使用时,只需要包含该文件即可!
    2 S& F. T* o/ |% D  p/ ~
  14. └─streamports                       // 该文件夹下就是流模式对应的不同接口方式的实现,以下任选其一即可
    2 p6 u5 m5 T! b7 ]9 N) _! b
  15.     ├─Jlink_RTT
    9 p+ `- ^. b: _2 F- k
  16.     │  │  Readme.txt
    + R5 @- V& ]! n, \2 q
  17.     │  │  SEGGER_RTT.c# N2 d# _) d; M
  18.     │  │  SEGGER_RTT_Printf.c
    ) Q$ P7 n, m' K! I' M6 q, W
  19.     │  └─include! R, t& H/ t* m) z% A
  20.     │          SEGGER_RTT.h
    0 B7 m& M$ E5 @) `
  21.     │          SEGGER_RTT_Conf.h. P+ ?0 P$ x4 a. Q7 c1 i
  22.     │          trcStreamingPort.h5 L) ]2 E2 l/ I, N1 k
  23.     ├─TCPIP- F. t4 n3 u& r+ o* A9 y, a, {
  24.     │  │  Readme.txt" V" C) O: L6 h% N3 Y+ X/ N9 l# S* s
  25.     │  │  trcStreamingPort.c
    # T) k& E, @- C# H
  26.     │  └─include; E- N+ t  X  ^1 B# K7 h6 ^
  27.     │          trcStreamingPort.h
    * r9 t6 T0 t6 n6 m
  28.     └─USB_CDC" _2 L" {2 n4 C& f; ^
  29.         │  Readme.txt
    % K( I9 E# d/ ^" ^5 j0 Q/ k
  30.         │  trcStreamingPort.c
    ' ?; h2 \+ _' C' P
  31.         └─include3 L  S+ A3 A! @2 L! q% }% v
  32.                 trcStreamingPort.h
复制代码
      另外要在trcConfig文件中修改一些内容,重点看有注释的地方。
  1. #ifndef TRC_CONFIG_H
    ) ^3 q$ ^: s, Y. I
  2. #define TRC_CONFIG_H
    $ L; u( v- V4 Q2 b
  3. & o( _( N! j4 E2 Q: \0 V
  4. #ifdef __cplusplus+ o' ?8 n" Y$ A1 V* o2 U+ e6 Z
  5. extern "C" {1 a( V9 m8 ~# J1 O+ P, }
  6. #endif, x) b6 l3 u6 K2 Z7 f6 |

  7. 5 y/ v# f: h/ _# R9 R8 J! _' W0 t
  8. #include "trcPortDefines.h"
    " e: P0 x5 u" W2 q* H8 E

  9. ! [7 U# f+ M: t! k4 Y2 J1 G8 u
  10. /******************************************************************************3 r$ ^$ i  V7 u% d
  11. * Include of processor header file
    & K- y; p/ R% n( @0 L
  12. *
    * ?" F, [! X4 D& o5 i
  13. * Here you may need to include the header file for your processor. This is
    . F7 R# ^& O7 j# w' s1 q
  14. * required at least for the ARM Cortex-M port, that uses the ARM CMSIS API.
    - E+ y$ x; `5 D7 S
  15. * Try that in case of build problems. Otherwise, remove the #error line below.
    3 ]. e1 C3 j8 m+ O4 ~/ [
  16. *****************************************************************************/* j1 N1 l" S1 [& p  k9 x
  17. #include "stm32F2xx.h"      // 这里根据需要添加自己的芯片的头文件  N" W9 ~! [' ?5 z. i; |* S
  18. //#error "Trace Recorder: Please include your processor´s header file here and remove this line.", T. Z' ?" r5 ?6 R0 ], \* \

  19. " V7 n1 h* E( D2 P; ^
  20. /*******************************************************************************5 Y2 I8 |8 k/ y& E& |9 H5 r: i
  21. * Configuration Macro: TRC_CFG_HARDWARE_PORT
    , X. K3 s6 Y9 u2 g2 d
  22. *
    * ]. [1 |+ o1 Z% t
  23. * Specify what hardware port to use (i.e., the "timestamping driver").
    # K7 T  a5 J; M9 E
  24. * All ARM Cortex-M MCUs are supported by "TRC_HARDWARE_PORT_ARM_Cortex_M"./ Z# o$ k" N0 R
  25. *8 l  J9 i- o* L. N1 s+ S
  26. * See trcSnapshotHardwarePort.h or trcStreamingHardwarePort.h for available
    % a# a( x' w: E* L+ v/ p- q. Z9 `+ G
  27. * ports and information on how to define your own port, if not already present.7 }+ H0 S3 v) O; _; J
  28. ******************************************************************************/
    / @" h7 y2 i, G& Z
  29. #define TRC_CFG_HARDWARE_PORT TRC_HARDWARE_PORT_ARM_Cortex_M        // 选择芯片对应的类型
    0 x# |7 }6 f% \3 A) S2 s
  30. 4 N  I0 g$ H; z- J
  31. /*******************************************************************************0 K+ K# e+ S/ U' O4 M" g, b
  32. * Configuration Macro: TRC_CFG_RECORDER_MODE
    & u* v; j; n) j9 t
  33. *: C) c6 ?  p; o4 {1 v1 h6 R
  34. * Specify what recording mode to use. Snapshot means that the data is saved in
    4 X( T! r; Q6 @6 x5 P% T
  35. * an internal RAM buffer, for later upload. Streaming means that the data is2 |8 \0 N; Q+ o) N
  36. * transferred continuously to the host PC. $ i9 z5 ~7 w& N5 \2 X
  37. *$ g! Q% d/ f$ g2 f
  38. * For more information, see http://percepio.com/2016/10/05/rtos-tracing/8 s% a4 T4 n8 O- H
  39. * and the Tracealyzer User Manual.: x; a. M8 b5 r! |' _, q5 a
  40. *' s6 d$ U" Z/ s- L
  41. * Values:
    ! G( L1 [' B- _' n/ j& y9 n
  42. * TRC_RECORDER_MODE_SNAPSHOT
    0 V3 U3 \; m+ O$ ~; }+ M4 Y
  43. * TRC_RECORDER_MODE_STREAMING# y1 s  R0 t7 {! S7 `* _
  44. ******************************************************************************/( ?0 n9 g8 j% R
  45. #define TRC_CFG_RECORDER_MODE TRC_RECORDER_MODE_STREAMING       // 选择追踪模式(默认快照模式,这里我改成了流模式)3 t2 i$ P$ Z- a
  46. # Q0 v: U& O3 ?) ]
  47. /*******************************************************************************
    4 S8 s# g3 W$ u$ }* j
  48. * Configuration Macro: TRC_CFG_RECORDER_BUFFER_ALLOCATION+ L, h0 q. E2 l/ c+ T) S1 G
  49. *
    ' |0 M/ h( u: p0 k- X0 ~$ E
  50. * Specifies how the recorder's internal buffer is allocated (snapshot or0 y* m! Y1 w( w
  51. * streaming). Note that CUSTOM is only supported in snapshot mode.. s# y$ @( d( b4 E' s; D
  52. *6 W, {8 j$ S* r  X8 J, Y
  53. * TRC_RECORDER_BUFFER_ALLOCATION_STATIC  - Static allocation
    8 u3 v) F  w* {$ S4 A% P
  54. * TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC - Allocated in vTraceEnable
    # W& o5 O$ \1 y) @
  55. * TRC_RECORDER_BUFFER_ALLOCATION_CUSTOM  - Use vTraceSetRecorderDataBuffer
    / v, I5 f8 ~: ~
  56. ******************************************************************************/
    % J, L: Z8 V; _* E% [
  57. #define TRC_CFG_RECORDER_BUFFER_ALLOCATION TRC_RECORDER_BUFFER_ALLOCATION_STATIC* ^- d$ q+ @3 r/ T

  58. 2 [# ~) V5 i" Z  F9 P
  59. /******************************************************************************
    ! D+ a% B2 l! t8 L
  60. * TRC_CFG_FREERTOS_VERSION+ U+ W! o1 P  ~. l8 I6 b" L& f
  61. * 8 ~6 F; T1 l- m4 `& l& M  t& n
  62. * Specify what version of FreeRTOS that is used (don't change unless using the
    0 U% ~& A/ o) e' T3 N
  63. * trace recorder library with an older version of FreeRTOS).5 I7 F5 }" t2 K( T
  64. * 8 x0 @9 R1 R# p% K' I
  65. * TRC_FREERTOS_VERSION_7_3_OR_7_4              If using FreeRTOS v7.3.0 - v7.4.2
    0 S# ^% h" |# z7 t; ~* A
  66. * TRC_FREERTOS_VERSION_7_5_OR_7_6              If using FreeRTOS v7.5.0 - v7.6.0
    ; t, F9 L9 j% s) v8 _/ _- v
  67. * TRC_FREERTOS_VERSION_8_X                     If using FreeRTOS v8.X.X
    + ?; j, [, ?# c* x& k. j
  68. * TRC_FREERTOS_VERSION_9_X                     If using FreeRTOS v9.X.X2 W+ \4 x4 F, d+ E
  69. *****************************************************************************/" I, b( p! E" m3 e1 f& R0 Q1 l+ f* O
  70. #define TRC_CFG_FREERTOS_VERSION    TRC_FREERTOS_VERSION_9_X                // 这里根据自己的FreeRTOS版本修改
    # J' x. E+ l" \' A. w" v4 i- w

  71. - q5 I- _% Q/ `) U0 I
  72. /******************************************************************************
    + q. A6 R( z# _& \. d& H
  73. * TRC_CFG_MAX_ISR_NESTING
    8 G9 B6 E' O8 p0 B+ l. Y' d
  74. *
    % h% V0 c+ S7 V7 s
  75. * Defines how many levels of interrupt nesting the recorder can handle, in
    & N0 o) f3 q% l- d+ X8 J# P5 H
  76. * case multiple ISRs are traced and ISR nesting is possible. If this
    ! X* E. i% m4 h$ J$ q6 F% j9 q) j" {
  77. * is exceeded, the particular ISR will not be traced and the recorder then
    ; l# j3 e* J; `5 |$ a
  78. * logs an error message. This setting is used to allocate an internal stack5 `( I8 n8 P& j+ e
  79. * for keeping track of the previous execution context (4 byte per entry).
    ' O: \2 x  {+ g  E( q; w
  80. *
    3 Q5 K" z. F0 G" A5 K4 X% y
  81. * This value must be a non-zero positive constant, at least 1.
    % J+ _6 p6 B$ m2 u+ f0 C1 H
  82. * 0 y" g. C) q! Z, O% p$ {: Z. w
  83. * Default value: 80 Z- z+ M* A* Y! w) \
  84. *****************************************************************************/  z0 a/ a! a, D/ y' e8 y- n: D
  85. #define TRC_CFG_MAX_ISR_NESTING 80 Q0 V0 d  ?, I# k- ^
  86. 7 }4 t! h0 }7 d5 f, g% F/ P6 ?: D
  87. /* Specific configuration, depending on Streaming/Snapshot mode */6 U8 o: M' A+ {
  88. #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_SNAPSHOT)
    4 S% M" y2 g) O+ Z' c
  89. #include "trcSnapshotConfig.h"
    * c1 q7 d9 `8 V9 i4 o# f# i
  90. #elif (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)& U+ }. v) i/ D& {
  91. #include "trcStreamingConfig.h"" x0 J: u+ D" C4 `0 z$ U
  92. #endif, w+ H6 r! k# H" W# P% w' v" {! w* Z
  93. 3 [; P2 Y* {: L/ D
  94. #ifdef __cplusplus
    # @- e0 G$ u/ r# V! _
  95. }9 M0 t  N# ]/ M( u8 h
  96. #endif& A% I: P- G4 [& h6 [4 w. B/ a9 i) c3 X
  97. + U1 b0 b! L* i1 u5 B( K' n
  98. #endif /* _TRC_CONFIG_H */
复制代码
        主函数中使能trcRecorder,后续就可以使用API了。          3QT~EL7)@NO]H}KYET4}1OI.png          , G, q5 l1 V* H3 l' [( z; |) W  Z, ~
         安装好下载的软件并输入lisense以后就可以配置上位机。0 w4 p  _2 J6 h. D  r: H4 a2 ?
         具体配置方法可以看其他朋友写好的,详细步骤要多图配套,往IAR中添加Tracealyzer 工具的时候直接默认的名字
' @0 e' Y0 b. D          5B0LT$_S[@NQZ(ILJGIATKD.png ) L. i  C& i) t' m" X% M# F) \
        选择后打开分析软件,从file中打来工程目录的money.hex文件就可以查看到该项目的运行情况。9 m, X) e' N, I
        我这里来只看下打开后的效果5 l+ y7 K6 b" M5 ^
          2F1~OXQ9GLVWBV(I2[~30E3.png
0 N. j7 I" l0 u4 y+ T/ A. _          的确很强大,可以图形化的跟踪系统和记录,。
4 c% U2 j' D" ?$ C8 G7 k( N, N
* \7 B. g( r) w1 A, Q' s
( B5 W7 \8 y0 ]2 ^% z% W9 g" a' t4 h: q) @  e  w* W

# P: ?7 F  A. _+ g6 ^$ a; ]5 V+ I) H) J1 w2 x/ P2 i  H, M
收藏 评论3 发布时间:2018-4-21 00:31

举报

3个回答
AI++ 回答时间:2018-9-5 11:50:14
根本不行, 运行后直接进入了硬件错误中断
4 {6 _8 o: u; I( P 0000000000000000001.jpg
- I0 Y0 c$ O. L) z& @7 `* }
忆古思贤 回答时间:2018-9-30 09:07:06
多谢分享,辛苦了
米兰的无线电 回答时间:2019-7-4 11:30:08
本帖最后由 role_2099 于 2019-7-4 11:51 编辑 , V" \/ I5 m) r3 \: @2 e$ v* u
( o7 x0 Q7 r5 }- v; r- ]8 y+ S
楼主帮忙看一下,我的是IAR8.32.4,怎么没有你那项new tool啊. z4 Z. L" L* J* D, P

* e# \9 u2 W! q, Y; `. w7 o 2019-07-04_11-28-11.png
1 C8 D& s, I. U2 a
& Y0 v- ~; O8 t! {# c! l知道了,是我还没有在IAR添加这个工具,我再找一下方法吧,但我从Tracealyzer 4里面直接打开IAR编译生成的.bin问题,提示下面的错误,我是评估版本,已输入license
/ X. V6 N% }" G. s& Z- p 2019-07-04_11-48-53.png 9 W( Y! d: `" D( D0 P) Y
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版