7/01/2017

MSP430 Project 관리 및 Debug

1. CCSV6의 MSP430 지원 및 확인사항 

CCSv6에서는 현재의 MSP430을 지원 해주고 있지만 CCS의 Version에 따라 Compiler의 Version이 달라진다.

특히 MSP430의 TI Compiler 의 Version은 상당히 민감한 것 같다. 이부분은 반드시 확인을 해놔야 하며 ,
기존 TI Compiler version 을 사용할 수 있다면 기존 Version으로 사용하도록 노력해야겠다.

MSP430의 Compiler는 TI Compiler 와 GCC를 동시 지원해주고 있지만, Compiler에 따라 사용하는 방법 역시 조금씩 다르다.

특히 ISR 부분을 보면 다른 부분을 쉽게 알수 있을 것이다. Link Script인 *.cmd File과
연동하는 부분 역시 다르다.

  • MSP430 Debugger 확인
기본의 XDS와 다르게 아래의 전용 USB Debugger 사용
- MSP-FET430UIF

CCS Version에 따라 상위에 Firmware version이 변경이 될수 있으므로 가능하면 상위 Version을 사용하는것이 좋을 것 같다.

  http://www.ti.com/tool/msp-fet430uif

특징은 UART로 ISP(in-system programming)기능을 가지고 있으며, JTAG기능도 포함을 하고 있다. (이부분은 AVR과 동일)
MSP430으로 내부 Flash에 저장할때는 ISP를 이용하고, JTAG 관련하여 HW Debug 가능.


  • MSP430 CCS  User Manual
  https://drive.google.com/open?id=0B_ehveuLi8MVd2ZCS3d5bjR3RHM


1.1 CCS의 Project의 기본정보확인

아래에서 둘중 하나로 Project의 기본속성을 확인하고 Compiler version을 확인하고,
File Format 확인 하자


File->Properties 선택
General 확인

Project Explorer창에서 Project의 선택
우측 마우스 클릭 후 Property 선택
General 확인




  • CCSv6  MSP430 추가설치 
만약 본인의 CCSv6에서 MSP430관련부분이 없다면, 추가 Package로 설치를 해야한다.

  View->CCS App Center




1.2 MSP430의 Project 관리 (Properties 세부설정)  

상위 Project의 Properties를 세부 설정을 살펴보면 아래와 같다.
아래의 항목들은 참조하여도 좋다

CCS의 기본사용법에서 Project관리에 대한 설명을 하지 않은 것 같아 이부분을 추가설명하고자 이부분을 넣으며, 이 부분은 구지 MSP430으로 제한적으로 생각하지 말자.

  • CCS의 기본사용법 

  https://ahyuo.blogspot.com/2015/07/ccs-v6.html

  • CCS Project 생성 및 기본 Project 가져오는 방법 

  https://ahyuo.blogspot.kr/2017/06/ccsv6-project.html


  • Linked Resource (Link가 될때, 참조되는 PATH) 
   추가방법은 변수를 이용하던지 직접 추가하면, 본인의 Project에 추가가 된다.




  • Build->MSP430 Compiler->include Options
Include 에러가 났을 경우 아래를 검토하고, 만약 Configuration을 두개를 사용한다면 둘다 별도로 설정



  • General->Manage Configuration 

현재 Access Point와 End Device를 Application을 동시에 진행을 하기 때문아래와 같이 분리하여 진행하고 있다.



  • Build->MSP430 Compiler->Advanced Options->Predefined Symbols
   직접 define해서 사용해서 사용하고 있음



  • Build->MSP430 Compiler->Advanced Options->Command Files


  아래와 같이 End Device 와 Access Point 와 --define을 적용하여 사용하고 있다.




2. CCS를 이용한 Debug 소개

- MSP-FET430UIF

상위 Debugger가 ISP기능과 JTAG을 지원해주기 때문에,  CCS에서 JTAG을 이용한 고급 Debug기능이 가능하다.

*ISP기능은 일반적으로 Serial로 SPI통신으로 File을 Upload해주는 기술 (AVR도 동일하게사용)


소스를 빌드 후 Project에서 아래와 같이 *.out 생성되었다면 Debug 순서는 다음과 같다.

  1. Debug As->Code Composer Debug Session 실행  or F11 실행 or Run->Debug
  2. ISP로 Firmware Download 진행 
  3. CCS Debug 창에서 JTAG을 Debug 진행 




  • 실행 및 Debug 
빌드시 최종파일 형식은 A.out Format으로 나올 것이다. 그리고 또한 이 File에 Debug 정보를 포함하여
Debug를 시작하면 CMD 정보기반으로 MSP430의 Flash에 저장 및 RAM에 Loading 된다. 그리고 더불어 Source에서 Line에 더블 클릭을해서 HW Break pointer설정도 가능하여 JTAG기반의 Debugging도 가능하다.
Linkscript는  *.cmd  File로 해보면, 간단히 분석이 가능하며,쉽게 분석이 가능하다.

  • JTAG 기능 사용시 같이 봐야할 Debug기능 
  1. View->Register를 이용하여 각종 Register 확인 및 수정가능 
  2. View->Breakpointers: JTAG을 이용하여 소스에 BreakPointer를 설정가능 
  3. View->Variables: JTAG을 이용하여 Debug시 Suspend일 경우 변수 값을 볼수 있다.
  4. View->Expressions: JTAG을 이용하여 Variables 값을 추적하여 볼수 있다. 
  5. View->Disassembly: JTAG을 이용하여 Debug시 자동으로 Assembly 언어로 보여준다. 
  6. View->Modules: 현재 COFF (a.out) 파일의 정보 및 Symbol Table 정보를 정확하게 볼수 있다. 
  7. View->Outline : 현재 File의 함수이름과 전역변수 정보, Include 정보만 알려준다. 
  8. View->Other ( MSP430 -> Target)  MSP430의 Voltage도 감지가능

* 1번은 Suspend Mode에서 사용
* 2번은 Source의 Line에 더블클릭하고 설정하고, Breakpointers 창에서 이를 확인


2.1 CCS Debug 사용법 (JTAG Debug)
상위대로 ISP를 이용하여 진행하면, Source에 원하는 Line에 HW Break Point 사용하여, 관련 정보를 보는 것이 가능하다.
이 정보 뿐만 아니라, 현재 사용 중인 변수 값도 실시간으로 변화 값을 알수 있다.
정말 편리한 기능이므로 이용하여 사용해 보자.

  • View->Breakpoints
본인이 원하는 Source Line에 더블 Click하게 될 경우 아래에 Breakpoints 창에 추가가 된다.
View->Breakpoints를 설정하여 Debug를 설정
아래의 JTAG Debug 기능과 같이 사용해보고, Run Menu를 보면 다양한 기능을 제공해주고 있다.

  1. Run->Resume 
  2. Run->Suspend
  3. Run->Step info 
  4. Run->Step over
  5. Run->Step return 
  6. Run->Go Main 
  7. Run->Reset->Hard Reset or Soft Reset

아래의 창은 각각의 Source Line에 Breakpoint를 설정해 놓고 사용할 것 인지 설정하는 것이다.
한번 설정하면, 이 List에 기록이 되어져 있다.


  • View->Expressions

View->Expressions창은 본인이 원하는 전역변수 or Register를 직접추가하여 변수의 변화를 알수 있어 Debug하기가 쉬어진다.
다만 추가할 경우, 본인이 직접 이름을 추가해서 넣어야 한다.
그리고, 더불어 아래의 Disassembly 와 Source 창을 함께 놓고 보면 좋다.
Suspend Mode 일 경우 각 Source 창에서 변수를 마우스로 가르키면, 변수의 값을 알수 있다.


  • View->Variables
변수지만, Stack을 사용하는 Local 변수가 추적해주는 시스템이기에, 이것을 사용하기위해서는 상위의 Line 별로 Debug를 해야한다.
예를 들면, Step info 로 지속적으로 함수를 디버그하면 함수내의 변수 변화를 추적가능하다.





  • View->Registers 
Register 창을 이용하여 현재 MSP430의 상태를 정확하게 파악이 가능하며 Debug가 쉽다.
그리고, Expression에 이를 등록하여 봐도 된다.



  C:\ti\ccsv6\ccs_base\common\targetdb\boards
  C:\ti\ccsv6\ccs_base\common\targetdb\cpus

  http://processors.wiki.ti.com/index.php/Creating_Custom_Memory_Mapped_CCStudio_Register_Windows

  • View->Outline 과  View->Module 
View->Module창은 현재 올라간 COFF 파일의 Symbol Table 및 각종 정보를 쉽게 파악이 가능하며,
View->Outline은 현재 File의 함수 와 전역변수 및 Include 정보를 제공하여 쉽게 볼수 있다.




  • View->Memory Browser 
Pointer or RAM 의 Address를 정확한 정보를 보기 위해서 아래와 같이 본다.



2.2 CCS Debug 사용법 (Board 동작중)

상위는 항상 CCS에서 *.out을 ISP로 올려서 CCS로 Debug하는 방식이지만, 기본 동작 중에
Debugging 하고 싶을 경우가 발생한다.

** 2.1과 다른점은 ISP를 이용하지 않고, 보드가 동작 중에 CCS Debug를 사용하는 점이 다르다.
하지만 기능상의 제약은 따른다.


이럴 경우 아래와 같은 경우 절차로 실행하면 된다.
  1. View->Target Configuration 창 CCS Debug 추가 
  2. 본인의 *.ccxml을 선택 후 우측마우스 클릭 (MSP430F5438A.ccmxl)
  3. Launch selected configuration 실행 
  4. Run->Connect Target 실행 
  5. 각 View를 통해 현재의 정보를 확인 



아래와 같이 Target Configuration의 ccxml로 제어를 한다.





2.3 MSP430 의 기본 TEST 및 Debug

  • EVM 기본 TEST 
EVM 일 경우, 각 CLOCK 및 전류도 측정이 가능하여 다양하게 TEST가 가능하다.

  1. Clock 설정 후 각 CLOCK의 Output을 확인 ( ACLK, SMCLK, MLCK)  ( PINxSEL 확인)
  2. UCSI의 UART기능이 처음 구현이 되어있지 않다면 LED or 여분의 PIN을 이용하여 Debugging (스코프 이용)
  3. CCS는 Debug Mode를 적극 이용 


3. Hex File 생성 방법 

Hex File을 생성하는 방법을 소개하고 이를 이용하여 Flash하는 방법을 알아보자

IAR도 Hex File 생성이 가능하며 내 경우는 IAR에서 MSP430을 사용해보지 않았아서 이부분은 생략


3.1 CCS에서 Hex File 생성방법 

CCS에서 Hex File을 생성하는 방법을 제공을 하며 이를 이용하여 Gang으로 Flash가 가능하다.



  • How to Generate MSP430 Binary Files
MSP430의 HEX File 생성 시키는 방법

  http://processors.wiki.ti.com/index.php/Generating_and_Loading_MSP430_Binary_Files
  http://processors.wiki.ti.com/index.php/Hex_Utility_in_CCS


3.2  MSP-FET430UIF을 이용하여 Hex Flash 방법 


  • Hex File 기반으로 MSP430 Flash 하는 방법 
  Gang 과 MSP-FET430UIF 을 이용하여 Flash 방법소개
  https://e2e.ti.com/support/microcontrollers/msp430/f/166/p/237820/833683


  • 방법-1 ( 사실 Gang의 위한 Program들) 
아래의 프로그램은 기본적으로 무료 프로그램은 아니며, 일단 유료지만, 무료로 이용가능한 기간이 있다
그리고, MSP-FET430UIF의 Firmware Version이 맞아야 제대로 동작이 가능하다.
이부분을 체크해야한다. 현재 Reset 만 확인했으며, 나의 경우는 Firmware Version이 맞지 않아 현재 Update 고려중

  https://www.elprotronic.com/productdata

  1. FET-Pro-430 Software Pkg. - LITE
  2. FET-Pro-430 Software Pkg. - STD

  • 방법-2 
아직 사용해보지 못한 방법
  http://www.ti.com/tool/msp430-flasher

  • 방법-3 
아직 사용해보지 못한 방법
  http://dlbeer.co.nz/mspdebug/


4. GDB관련정보 

Compiler를 GCC를 사용할 경우, GDB 사용하는 법

  http://processors.wiki.ti.com/index.php/GDB_with_MSP430_and_CCSv6