커널에서 정식으로 arm 디버깅 중의 하나인 coresite 에 대한 지원이 정식으로 릴리즈 되었네요


  이 분야는 워낙... 로우레벨 디버깅에 속하는지라 다큐먼트 역시 매우 하드합니다.  


  커널을 다운 받고 다큐먼트를 보았더니 아래 그림만 보이는군요.


 캡쳐 사진이 첨부가 되지 않아 그려 넣었습니다.


 파일은 Documentation/trace/coresight.txt


 29 At typical coresight system would look like this:

 30 

 31   *****************************************************************

 32  **************************** AMBA AXI  ****************************===||

 33   *****************************************************************    ||

 34         ^                    ^                            |            ||

 35         |                    |                            *            **

 36      0000000    :::::     0000000    :::::    :::::    @@@@@@@    ||||||||||||

 37      0 CPU 0<-->: C :     0 CPU 0<-->: C :    : C :    @ STM @    || System ||

 38   |->0000000    : T :  |->0000000    : T :    : T :<--->@@@@@     || Memory ||

 39   |  #######<-->: I :  |  #######<-->: I :    : I :      @@@<-|   ||||||||||||

 40   |  # ETM #    :::::  |  # PTM #    :::::    :::::       @   |

 41   |   #####      ^ ^   |   #####      ^ !      ^ !        .   |   |||||||||

 42   | |->###       | !   | |->###       | !      | !        .   |   || DAP ||

 43   | |   #        | !   | |   #        | !      | !        .   |   |||||||||

 44   | |   .        | !   | |   .        | !      | !        .   |      |  |

 45   | |   .        | !   | |   .        | !      | !        .   |      |  *

 46   | |   .        | !   | |   .        | !      | !        .   |      | SWD/

 47   | |   .        | !   | |   .        | !      | !        .   |      | JTAG

 48   *****************************************************************<-|

 49  *************************** AMBA Debug APB ************************

 50   *****************************************************************

 51    |    .          !         .          !        !        .    |

 52    |    .          *         .          *        *        .    |

 53   *****************************************************************

 54  ******************** Cross Trigger Matrix (CTM) *******************

 55   *****************************************************************

 56    |    .     ^              .                            .    |

 57    |    *     !              *                            *    |

 58   *****************************************************************

 59  ****************** AMBA Advanced Trace Bus (ATB) ******************

 60   *****************************************************************

 61    |          !                        ===============         |

 62    |          *                         ===== F =====<---------|

 63    |   :::::::::                         ==== U ====

 64    |-->:: CTI ::<!!                       === N ===

 65    |   :::::::::  !                        == N ==

 66    |    ^         *                        == E ==

 67    |    !  &&&&&&&&&       IIIIIII         == L ==

 68    |------>&& ETB &&<......II     I        =======

 69    |    !  &&&&&&&&&       II     I           .

 70    |    !                    I     I          .

 71    |    !                    I REP I<..........

 72    |    !                    I     I

 73    |    !!>&&&&&&&&&       II     I           *Source: ARM ltd.

 74    |------>& TPIU  &<......II    I            DAP = Debug Access Port

 75            &&&&&&&&&       IIIIIII            ETM = Embedded Trace Macrocell

 76                ;                              PTM = Program Trace Macrocell

 77                ;                              CTI = Cross Trigger Interface

 78                *                              ETB = Embedded Trace Buffer

 79           To trace port                       TPIU= Trace Port Interface Unit

 80                                               SWD = Serial Wire Debug



 사용법도 간단히 나와 있습니다.


 간략히 요약하면


 1. 부트로더에서 DT 연동으로 활성화

 2. sysfs 를 통한 active 및 enable 가능

 3. 장치 파일을 통한 trace 압축 정보를 읽기 가능 ( ex: dd if=/dev/20010000.etb of=~/cstrace.bin )

 4. tpm2human 을 이용한 압축해제

 5. 분석은 각자~


즉 trace 에 대한 설정을 하면 커널에서 해당 내용을 압축해서 버퍼에 보관합니다.

비활성화 시키고 해당 버퍼에서 꺼내서 압축된 데이타를 풀고

분석하시면 됩니다.


뭐 깔끔해 보이긴 합니다만  사용보다는 분석 결과에 대한 해석이 중요할텐데

사용해 보시려고 도전하시는 분들께 건투를...