• 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


  • 相关阅读:
    Charles抓https请求详细步骤
    【转载】http proxy原理
    Mac使用笔记大全
    Android自动化之Monkey测试(二)
    Android自动化之Monkey环境搭建(一)
    解决删除镜像时image is referenced in multiple repositories
    SQL Injection-Http请求的参数中对特殊字符的处理
    Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案
    Spring Boot-右键maven build成功但是直接运行main方法出错的解决方案
    maven+ssm项目环境搭建后测试404
  • 原文地址:https://www.cnblogs.com/shangdawei/p/3011582.html
Copyright © 2020-2023  润新知