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

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

[复制链接]
BinWin 发布时间:2018-4-21 00:31
本帖最后由 wangdbff 于 2018-4-21 00:34 编辑
" C0 y7 ^$ S7 @; {9 }/ T% p( \: ~  |' y
     了解了一下TraceAlyzer,其实是一个OS时序分析软件.不过强大的功能却要收费,这里看到有FreeRTOS使用的免费版本,下载来看看。
8 T9 _/ r5 ?# ?+ Q1 F     需要填写几个表单
  b8 T- r. X- {4 ^1 J. x      E[M0`JYXC44EY2__T`(DPD2.png   K" |: k; e6 k# I5 \" G  O
       实验的工程中要添加trace的支持代码,是按照中间件提供的,如下
- [6 t: C7 H' v2 ?6 |) X         HANPHYP@PP%2W4JKZLZXCN0.png
$ y, z7 l" D: {& y& Y        这个目录是这个样子的# ^9 \' `$ U3 ^

) O4 V! o0 k1 f- M6 W. r
  1. readme.txt
    7 J* m* n9 E: u) u4 B
  2. │  trcKernelPort.c7 O: v: ?- \: S% `/ [8 F
  3. │  trcSnapshotRecorder.c* u5 ~" j8 t6 G# D% [7 l
  4. │  trcStreamingRecorder.c
    4 a0 `5 ?" U# s& F. ]5 U( f1 x& ]
  5. ├─config
    % U  Y' W' J& W1 E8 a$ @/ T" l9 [2 C4 h$ m
  6. │      trcConfig.h                  // 整个Trace源码的配置文件.8 ^5 z: s' j5 G' }* P- L
  7. │      trcSnapshotConfig.h          // 快照模式配置文件,和流模式对应文件选其一+ i6 A/ F$ g/ o% z4 p( O! Z3 s
  8. │      trcStreamingConfig.h         // 流模式配置文件,和快照模式对应文件选其一
    0 J4 G1 m. W" d# P1 V
  9. ├─include
    " g2 h1 w1 D/ X: e
  10. │      trcHardwarePort.h            // 所有硬件依赖关系。包含几个预定义的硬件端口,包括ARM Cortex-M,PIC32,Renesas RX等。. M: n8 a, ?9 i6 r  ^
  11. │      trcKernelPort.h              // FreeRTOS特定的定义,最值得注意的是跟踪钩子定义。3 {7 j  r8 X8 X! ~
  12. │      trcPortDefines.h             // 配置文件的各种常量定义3 z0 V! ]8 v) I' F5 D$ W
  13. │      trcRecorder.h                // 公共API,开发者将以上两种模式进行了统一,用户使用时,只需要包含该文件即可!! U) J1 \1 e5 ^
  14. └─streamports                       // 该文件夹下就是流模式对应的不同接口方式的实现,以下任选其一即可
    0 u. t7 |8 w+ m3 ~" M' [( u2 n
  15.     ├─Jlink_RTT; F+ g. ~; l; V1 H) \
  16.     │  │  Readme.txt
    5 _- E7 a- F' R+ }; D0 K$ u# g
  17.     │  │  SEGGER_RTT.c
    5 h% \3 k4 ?: j5 E0 N
  18.     │  │  SEGGER_RTT_Printf.c
    " g* ?0 J9 z, U. s. l" z- c
  19.     │  └─include) s, y# r4 c3 Y
  20.     │          SEGGER_RTT.h
    , l8 d0 _3 W) f4 N! f
  21.     │          SEGGER_RTT_Conf.h
    " f4 [3 n( [' X" j: p
  22.     │          trcStreamingPort.h
    4 g8 x! }/ Y4 r; g# O* u% ^& j
  23.     ├─TCPIP
      T+ D  s4 F) U' g/ @4 @+ A5 X
  24.     │  │  Readme.txt
    5 d- h( c. B* Z: g, Z* |
  25.     │  │  trcStreamingPort.c" F, G0 @/ N& R  o8 b1 O
  26.     │  └─include
    4 M$ [0 d: K8 _4 u
  27.     │          trcStreamingPort.h5 K! m$ f1 b/ l- \$ R9 F& W) d
  28.     └─USB_CDC# u- m, W4 r0 v. \8 ?+ d
  29.         │  Readme.txt
    : s7 H( n  x1 @/ n" P- ~1 y8 j& q7 `
  30.         │  trcStreamingPort.c- }9 T: f3 {( Y5 l7 }( Y- [
  31.         └─include
    ) C. s: ]" e6 q% I5 H, j
  32.                 trcStreamingPort.h
复制代码
      另外要在trcConfig文件中修改一些内容,重点看有注释的地方。
  1. #ifndef TRC_CONFIG_H" y) X; @5 B3 m9 ]1 o
  2. #define TRC_CONFIG_H4 u9 b3 U4 [- t
  3. 8 [; U- O; h' w
  4. #ifdef __cplusplus- ]; ]8 E* I! |+ u6 c5 v
  5. extern "C" {' S) m# e. {5 o- r
  6. #endif
    3 R; X* a5 q( Y& Y) |' l* g

  7. % ?2 N; R* ^; T) i3 B: ^
  8. #include "trcPortDefines.h"
    0 q# @: g* D. Z& G! Z5 N4 ]

  9. - O" R0 Y: ~* t' G
  10. /******************************************************************************
    5 I$ P1 [0 p* Z7 V% I6 I' i
  11. * Include of processor header file1 s. J( }6 r, X4 x/ @
  12. *
    % O$ [5 N+ ~, s
  13. * Here you may need to include the header file for your processor. This is
    / D( @7 b+ ]1 v8 h9 L6 F! F, w
  14. * required at least for the ARM Cortex-M port, that uses the ARM CMSIS API.
    ) T$ M) P) j' d3 o. j9 \$ j
  15. * Try that in case of build problems. Otherwise, remove the #error line below.
    1 D' J4 N! d7 p# b$ ]% \* J
  16. *****************************************************************************/
    4 x! c# M; I7 t
  17. #include "stm32F2xx.h"      // 这里根据需要添加自己的芯片的头文件
    ' n  e  x* i$ {1 \! `
  18. //#error "Trace Recorder: Please include your processor´s header file here and remove this line."$ t/ l! E: e/ S/ j  D
  19. 4 h& Z/ t! d1 G! ^7 o: \
  20. /*******************************************************************************
    ! K. ~- k) k% t
  21. * Configuration Macro: TRC_CFG_HARDWARE_PORT
    , a/ F6 z# a# N  `
  22. *
    & K1 w: [; `# V7 H. z
  23. * Specify what hardware port to use (i.e., the "timestamping driver").
    2 {0 f: `+ b" h
  24. * All ARM Cortex-M MCUs are supported by "TRC_HARDWARE_PORT_ARM_Cortex_M".
    " O9 Z; Y# V& B, f. E
  25. *
    " [& |6 J/ _9 V$ D
  26. * See trcSnapshotHardwarePort.h or trcStreamingHardwarePort.h for available  p- S; l0 C1 \4 l2 B
  27. * ports and information on how to define your own port, if not already present.
    ) p+ y' [3 U- Z# m2 F
  28. ******************************************************************************/& o/ D5 }$ ~. ~! s
  29. #define TRC_CFG_HARDWARE_PORT TRC_HARDWARE_PORT_ARM_Cortex_M        // 选择芯片对应的类型. J) O! f) P4 {* D4 X, [
  30. + `/ m; m1 O& w' h9 L
  31. /*******************************************************************************! @+ R2 A: e- m, a% I
  32. * Configuration Macro: TRC_CFG_RECORDER_MODE
    0 v( X, ]' B# o8 g. x1 j( p- g# R
  33. *
    3 C7 S- X- Q& g' ~
  34. * Specify what recording mode to use. Snapshot means that the data is saved in  a0 \3 y- \% `: G" `8 H- y
  35. * an internal RAM buffer, for later upload. Streaming means that the data is/ J3 S/ q! G4 W/ [, F. Y: \
  36. * transferred continuously to the host PC.
    7 X8 I8 k1 r  o6 }: o) m
  37. *
    2 W& i: G- N/ J' H# g4 a
  38. * For more information, see http://percepio.com/2016/10/05/rtos-tracing/0 P8 c/ G6 k) }6 b( m0 Q" W0 d
  39. * and the Tracealyzer User Manual.( ~0 X! d) |: ?" v6 h$ K
  40. *
    * E! l, p# w, z8 [1 d% x& t7 {
  41. * Values:9 C) ?' L: {( g9 S' l8 T6 {
  42. * TRC_RECORDER_MODE_SNAPSHOT" o7 R7 g! |) y- Y' n
  43. * TRC_RECORDER_MODE_STREAMING& O: ~% |* ^( K3 o
  44. ******************************************************************************/
    $ t: B2 b4 [; ~+ t3 e, a
  45. #define TRC_CFG_RECORDER_MODE TRC_RECORDER_MODE_STREAMING       // 选择追踪模式(默认快照模式,这里我改成了流模式); J9 s+ _: P% @

  46. & N6 g* X) K# k0 i) R
  47. /*******************************************************************************
    8 F5 F. g/ P  R5 i9 }% J
  48. * Configuration Macro: TRC_CFG_RECORDER_BUFFER_ALLOCATION' \4 l0 u& u# R  [0 W" G. H
  49. *
    & q- N! {; A8 c) p1 _
  50. * Specifies how the recorder's internal buffer is allocated (snapshot or: ~) J8 S& ~* u! x: {' ]
  51. * streaming). Note that CUSTOM is only supported in snapshot mode.
    " N* _; ~$ J6 O* \+ T5 A; y
  52. *) \: N3 K8 m- }
  53. * TRC_RECORDER_BUFFER_ALLOCATION_STATIC  - Static allocation " R% H) f7 f6 C" _* H: ]6 H
  54. * TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC - Allocated in vTraceEnable
    ) A3 X! ]4 i# B' R. P  [
  55. * TRC_RECORDER_BUFFER_ALLOCATION_CUSTOM  - Use vTraceSetRecorderDataBuffer8 O. \- l% ^7 K4 ?5 o
  56. ******************************************************************************/% Z) D5 z. G+ c- f& J4 a
  57. #define TRC_CFG_RECORDER_BUFFER_ALLOCATION TRC_RECORDER_BUFFER_ALLOCATION_STATIC
    ( ~& g# f) ]/ q  [

  58. # Z  k/ n1 [1 w8 B7 v. I, c
  59. /******************************************************************************
    ; c- @& A9 k) i1 I. J9 o4 Y( M
  60. * TRC_CFG_FREERTOS_VERSION$ l* W# N* N" y. w; }9 j* C" e
  61. *
    $ o) ~. ^  Q  s2 [5 N) H! c, i
  62. * Specify what version of FreeRTOS that is used (don't change unless using the
    ! ?5 R( S+ v- f
  63. * trace recorder library with an older version of FreeRTOS).6 K* @8 e7 k: _! F' d! D9 @
  64. *
    3 C4 F* f5 M; \$ [
  65. * TRC_FREERTOS_VERSION_7_3_OR_7_4              If using FreeRTOS v7.3.0 - v7.4.25 \2 G8 m$ g& b/ F8 `  H$ v8 w
  66. * TRC_FREERTOS_VERSION_7_5_OR_7_6              If using FreeRTOS v7.5.0 - v7.6.03 ^( H- K( q0 K6 f) Y: }4 ^
  67. * TRC_FREERTOS_VERSION_8_X                     If using FreeRTOS v8.X.X
    3 \, ~$ ?3 B* B* A$ L) c
  68. * TRC_FREERTOS_VERSION_9_X                     If using FreeRTOS v9.X.X; l$ X! f/ j4 ~# F: s
  69. *****************************************************************************/$ e/ T: B" a2 b2 {5 W3 [% z
  70. #define TRC_CFG_FREERTOS_VERSION    TRC_FREERTOS_VERSION_9_X                // 这里根据自己的FreeRTOS版本修改
    2 ?2 s3 S& Z% L; j+ o5 ^

  71. 7 u1 ]9 H+ ~) r7 }4 [5 H6 n: W
  72. /******************************************************************************) Z, f6 v3 P' q* h
  73. * TRC_CFG_MAX_ISR_NESTING
    # Q+ b9 Q) V7 k' R$ n/ Q0 p
  74. *
    + k" L& r9 U6 Q3 Z& L
  75. * Defines how many levels of interrupt nesting the recorder can handle, in
    4 z1 h/ _- R  J8 t( y4 a; h8 m+ E( j
  76. * case multiple ISRs are traced and ISR nesting is possible. If this) J' l  U$ `$ Q9 B
  77. * is exceeded, the particular ISR will not be traced and the recorder then
    % L2 d3 W* H# ?  A
  78. * logs an error message. This setting is used to allocate an internal stack
    4 v+ S2 E$ H; O! J) r$ n
  79. * for keeping track of the previous execution context (4 byte per entry).
    5 c( `& y8 T6 L; b6 R, f2 P
  80. *
    ' p. A+ C; T1 C9 z
  81. * This value must be a non-zero positive constant, at least 1.
      ~6 b& `! }/ j( N( s9 ^. J
  82. * + t- J1 A  t1 t8 k9 j+ e
  83. * Default value: 8
    ; W! N9 C( z7 l1 Y, B- @) A/ `
  84. *****************************************************************************/, ~# ]* x5 _8 O# Z% e  p5 O$ F
  85. #define TRC_CFG_MAX_ISR_NESTING 8
    / S8 h1 }; {+ Z# n

  86. ' \# J( t3 P" U& _* V
  87. /* Specific configuration, depending on Streaming/Snapshot mode */
    5 ?! O1 g* D" k2 U4 Y
  88. #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_SNAPSHOT)% C/ M0 S0 i; o+ v+ J
  89. #include "trcSnapshotConfig.h"7 l) ^! j9 j' m" R2 q
  90. #elif (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
    9 a# T+ ?$ p- f. [% Z$ d
  91. #include "trcStreamingConfig.h"( u+ p* a0 @' E3 _  a  f
  92. #endif! ^) U' j1 ^1 x9 @  Q' C6 h
  93. ( I6 O2 _/ A  n
  94. #ifdef __cplusplus' [& ?: D/ }& `* G2 y- s  o* o
  95. }& _: j7 u% n5 H; Q
  96. #endif
    * n7 T1 D: L. ^4 L3 r1 I

  97. 2 N4 V0 g" H: S- R; F. P0 F
  98. #endif /* _TRC_CONFIG_H */
复制代码
        主函数中使能trcRecorder,后续就可以使用API了。          3QT~EL7)@NO]H}KYET4}1OI.png          
9 I* M5 ?* E% M$ j/ O         安装好下载的软件并输入lisense以后就可以配置上位机。
+ B3 x. S* P2 B; ~& y+ v         具体配置方法可以看其他朋友写好的,详细步骤要多图配套,往IAR中添加Tracealyzer 工具的时候直接默认的名字6 \% Q4 Q( l% S5 o5 Y6 D3 \
          5B0LT$_S[@NQZ(ILJGIATKD.png 6 \3 ?1 ^- @2 E+ O% z& f$ z) v+ o
        选择后打开分析软件,从file中打来工程目录的money.hex文件就可以查看到该项目的运行情况。
" A; _1 D+ P) k  k% r* r$ {        我这里来只看下打开后的效果. j9 p1 L5 @* N. {" Z3 a
          2F1~OXQ9GLVWBV(I2[~30E3.png
, Z) O) Y0 t# j/ j          的确很强大,可以图形化的跟踪系统和记录,。3 g+ m6 P1 ~# F5 g& c5 U: v

6 _4 l/ p. J7 `: Z$ q7 q8 v7 N7 t, L
4 @+ d2 J7 W; c. t" c! |

; ^; I; n* D+ D
. Z  @+ `$ n9 s( a: Y9 x# E
收藏 评论3 发布时间:2018-4-21 00:31

举报

3个回答
AI++ 回答时间:2018-9-5 11:50:14
根本不行, 运行后直接进入了硬件错误中断7 w- }' R6 m9 G( h' e; J
0000000000000000001.jpg 9 u$ e& y9 z- b3 l  x
忆古思贤 回答时间:2018-9-30 09:07:06
多谢分享,辛苦了
米兰的无线电 回答时间:2019-7-4 11:30:08
本帖最后由 role_2099 于 2019-7-4 11:51 编辑 ! P3 k! Z' \+ H6 A  l3 l0 R

) M! _0 N3 S0 `- O6 `6 a, S楼主帮忙看一下,我的是IAR8.32.4,怎么没有你那项new tool啊. x  W2 C. |, k' H  E2 `: K  X2 ^

, T: s- c& {* X  L2 {* I5 C$ T! O 2019-07-04_11-28-11.png
& O8 |& p" r2 y
% K* N6 R  C* ?* }" z知道了,是我还没有在IAR添加这个工具,我再找一下方法吧,但我从Tracealyzer 4里面直接打开IAR编译生成的.bin问题,提示下面的错误,我是评估版本,已输入license
5 z* i. s: \, t3 p2 i 2019-07-04_11-48-53.png & B& c! G9 t( U
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版