zoukankan      html  css  js  c++  java
  • JLINK SWO Viewer

      1 
      2 
      3 #define ITM_ENA   (*(volatile unsigned int*)0xE0000E00) // ITM Enable
      4 #define ITM_TPR   (*(volatile unsigned int*)0xE0000E40) // Trace Privilege Register
      5 #define ITM_TCR   (*(volatile unsigned int*)0xE0000E80) // ITM Trace Control Reg.
      6 #define ITM_LSR   (*(volatile unsigned int*)0xE0000FB0) // ITM Lock Status Register
      7 #define DHCSR     (*(volatile unsigned int*)0xE000EDF0) // Debug register
      8 #define DEMCR     (*(volatile unsigned int*)0xE000EDFC) // Debug register
      9 #define TPIU_ACPR (*(volatile unsigned int*)0xE0040010) // Async Clock presacler register
     10 #define TPIU_SPPR (*(volatile unsigned int*)0xE00400F0) // Selected Pin Protocol Register
     11 #define DWT_CTRL  (*(volatile unsigned int*)0xE0001000) // DWT Control Register
     12 #define FFCR      (*(volatile unsigned int*)0xE0040304) // Formatter and flush Control Register
     13 //
     14 // STIM word and byte acces
     15 #define ITM_STIM_U32  (*(volatile unsigned int*)0xE0000000)
     16 #define ITM_STIM_U8   (*(volatile char*)0xE0000000)
     17 
     18 // The stimulus port from which SWO data is received and displayed.
     19 unsigned int ITM_PORT_BIT0 = 0;
     20 
     21 // Has to be calculated according to the CPU speed and the output baud rate
     22 unsigned int TargetDiv = 1;
     23 
     24 void SWO_Enable( void )
     25 {
     26   unsigned int StimulusRegs;
     27   //
     28   // Enable access to SWO registers
     29   //
     30   DEMCR |= ( 1 << 24 );
     31   ITM_LSR = 0xC5ACCE55;
     32   //
     33   // Initially disable ITM and stimulus port
     34   // To make sure that nothing is transferred via SWO
     35   // when changing the SWO prescaler etc.
     36   //
     37   StimulusRegs = ITM_ENA;
     38   StimulusRegs &= ~( 1 << ITM_PORT_BIT0 );
     39   ITM_ENA = StimulusRegs; // Disable ITM stimulus port
     40   ITM_TCR = 0;            // Disable ITM
     41 
     42   //
     43   // Initialize SWO (prescaler, etc.)
     44   //
     45   TPIU_SPPR = 0x00000002;     // Select NRZ mode
     46   TPIU_ACPR = TargetDiv - 1;  // Example: 72/48 = 1,5 MHz
     47   ITM_TPR = 0x00000000;
     48   DWT_CTRL = 0x400003FE;
     49   FFCR = 0x00000100;
     50   //
     51   // Enable ITM and stimulus port
     52   //
     53   ITM_TCR = 0x1000D; // Enable ITM
     54   ITM_ENA = StimulusRegs | ( 1 << ITM_PORT_BIT0 ); // Enable ITM stimulus port
     55 }
     56 
     57 // Prints a character to the ITM_STIM register in order to provide data for SWO
     58 void SWO_PrintChar( char c )
     59 {
     60   // Check if SWO is set up. If it is not,
     61   // return to avoid that a program hangs if no debugger is connected.
     62   //
     63   // Check if DEBUGEN in DHCSR is set
     64   //
     65   if ( ( DHCSR & 1 ) != 1 )
     66     return;
     67 
     68   //
     69   // Check if TRACENA in DEMCR is set
     70   //
     71   if ( ( DEMCR & ( 1 << 24 ) ) == 0 )
     72     return;
     73 
     74   //
     75   // Check if ITM_TRC is enabled
     76   //
     77   if ( ( ITM_TCR & ( 1 << 22 ) ) == 1 )
     78     return;
     79 
     80   //
     81   // Check if stimulus port 0 is enabled
     82   //
     83   if ( ( ITM_ENA & 1 ) == 0 )
     84     return;
     85 
     86   //
     87   // Wait until STIMx is ready to accept at least 1 word
     88   //
     89   while ( ( ITM_STIM_U8 & 1 ) == 0 )
     90   {
     91 
     92   }
     93 
     94   ITM_STIM_U8 = c;
     95 }
     96 
     97 // Prints a string via SWO
     98 void SWO_PrintString( const char *s )
     99 {
    100   //
    101   // Print out character per character
    102   //
    103   while ( *s )
    104   {
    105     SWO_PrintChar( *s++ );
    106   }
    107 }

     JLINK SWO Viewer

    Free-of-charge utility for J-Link. Displays the terminal output of the target using the SWO pin.
    Can be used in parallel with a debugger or stand-alone.

    This is especially useful when using debuggers which do not come with built-in support for SWO.

     http://www.segger.com/j-link-swo-viewer.html


  • 相关阅读:
    第三章 函数式编程中的异常处理
    第二章 函数式数据结构
    android 轮播图
    模仿qq列表信息滑动删除效果
    android绘制圆形图片的两种方式
    android图片验证码--自绘控件
    MPAndroidChart 3.0——LineChart(折线图)
    提交本地项目到github服务器
    android 帧动画,补间动画,属性动画的简单总结
    android AsynTask处理返回数据和AsynTask使用get,post请求
  • 原文地址:https://www.cnblogs.com/shangdawei/p/3011582.html
Copyright © 2011-2022 走看看