8/10/2017

CCS MSP430의 Breakpoint 기능 및 Graph 기능

1. MSP430 JTAG의 고급 사용 

  • MSP430 CCS Manual
2.2.1 Breakpoint Types 에 본인의 MCU에 따라 지원되는 기능과 HW Breakpoint 제한이 있으니 확인해봐야한다.

  http://www.ti.com/lit/ug/slau157ao/slau157ao.pdf

아래의 기능을 MSP430으로 한정 지어서 생각할 필요는 없으며, 다른 TI Chip에게도 해당이 되는 일이기에 같이 설명한다.

1.1 HW Breakpoint의 작동원리 

기존에 설명했듯이 MSP430의 Debug는 JTAG이 지원을 하며, HW Breakpointer를 지원하 디버깅이 쉽게 가능하다.
물론 Breakpointer 기능이 SW로 구현이 가능하며, 이는 또한 Software debugger 필요하겠지만,  여기서 설명하는 것은 JTAG을 이용한 HW breakpoint 기능이다.
하지만 좀 더 많은 기능을 사용해보기 위해서 아래와 같이 BreakPointer의 원리와 구성을 알아보자.

  • HW BreakPoint의 기본동작
HW BreakPointer를 Source의 Line에 설정하면, 아래와 같이 설정화면이 나오는데, Action의 기능이 나오고 기타 기능이 나온다.
기본적으로 동작원리는 얼추 비슷하다. 심볼테이블에서에 실제 주소를 찾아 이 부분이 Cache에 들어올때
확인하여 그부분을 멈추는 것이다.



1.2 Breakpoint 세부설정 

상위에서 기본동작 원리를 알았으니, 이제 아래에서 세부적으로 더 설정이 가능한지 알아보자.
Breakpoint에는 Properties라는 설정이 있는데, 이는 세부적인 Control을 가능하게 만들어준다.

  • Breakpoint Properties 설정 



  • 기본설정구성 
Trigger 0:  구성
  -  Location:  현재 사용중인 a.out format
  -  Access :
  1. instruction fetch:  fetch 할 때 비교 하여  멈춤 

Skip Count:  설정
    Current Count 설정

Instruction Fetch 설정할 경우

Action :
  1. Remain Halted :  Trigger 의 조건이 맞을 경우, 멈추는 것 
  2. Refresh All Windows:  Trigger의 조건이 맞을 경우, 현재 CCS의 Window를 Refresh 



  • Breakpoint 관련 Manual 
  다양한 Breakpoint의 기능을 사용하고 싶다면 아래의 글을 읽어보도록 하자. 

  http://www.ti.com/lit/an/slaa393f/slaa393f.pdf
  https://drive.google.com/open?id=0B_ehveuLi8MVcVRwa3ZpNEZGSGc


2. HW Breakpoint 응용


아래와 같이 Register->View Memory at Address를 하면 쉽게 아래와 같이 주소를 알수 있으며,
이것을 상위 BreakPoint와 조합을 이용하여 사용이 가능하다.


본인이 원하는 Breakpoint를 별도로 설정하고 Register를 감시하자.
Watchpoint 를 사용해도 좋다.



아래 보면, Breakpointer list에 등록이 되어 있고 사용중인 지 항상확인해야 한다.




  • View->Expressions
이전에도 설명 했지만, Expressions에서는 주로 전역변수를 등록하여 감시가 가능하며, 여기서 아래와 같이 이중 포인터 설정가능하다.
(Local 변수도 가능하지만 제한적으로 가능)
쉽게 등록하는 방법은 Watchpoint로 등록하는 방법이고, 직접 여기에 전역변수를 본인이 직접 넣어도 무방하다.
다만 여기에는 Symboltable 기반으로 작동이 되는것 같다.


Breakpointer와 항상 사용하다보면 아래와 같이 이부분을 변경하며 Debug하게 된다.

간단한 사용의 예를 아래와 같이 정리한다.
아래는 txmsg는 배열선언 했으며, 이고, txhead는 일반 value 선언했다.
이를 이용하여 아래와 같이 C 프로그래밍처럼 배열참조가 가능하다.

각 Value에 우측 마우스를 이용하여 다음과 같은 메뉴가 나오며, 이를 이용하여 좀 더 나은 디버깅을 해보자.
  1. View Memory :  Memory 창에서 전역변수의 주소를 볼수가 있다.  
  2. View Memory at Address :  전역변수의 값의 주소를 볼수가 있다. 
  3. Number Format:  Value의 Format을 변경한다. (중요) 
  4. Graph는 추후 설명 



2.1 전역변수 Graph 설정

상위에서 HW BreakPointer의 설정을 이제 Graph에 적용을 해보자.
아래와 같이 설정하면, Breakpointer는 멈추지 않고 Graph를 Refresh 하고 그려줄 것이다.

  1. Breakpointer Properties -> Action -> Refresh All Windows 설정 
  2. Expression 창에서 전역변수를 등록
  3. 전역변수 우클릭으로 Graph 창 설정  
or

  1. Tools->Single Time 설정 
  2. Gprah Properties 설정 ( Start Address 설정 중요 )


아래의 기능은 아이콘 형태로 제공되므로 잘 찾아보자. 

  • Graph Properties를 설정
  1. Start Address : 전역변수 주소 
  2. Sampling Rate :  본인은 원하는 Rate
  3. Grid Style :  본인인 원하는 설정 
  4. Time Display Unit :  Sample or ms or us 





  • 추가적인 설정 
  1. Reset Graph: 그래프를 처음부터 보고 싶다고 한다면 
  2. (Disable/Enable) Continuous Refresh : 지속적으로 보고 싶다고 한다면. 
  3. Refresh on Halt :  Halt일 경우 Refresh 기능 



  http://processors.wiki.ti.com/index.php/Data_Breakpoint/Watchpoint
  http://processors.wiki.ti.com/index.php/Breakpoint
  https://www.youtube.com/watch?v=-iGnh0_9YxE

댓글 없음 :