특히 MSP430의 TI Compiler 의 Version은 상당히 민감한 것 같다. 이부분은 반드시 확인을 해놔야 하며 ,
기존 TI Compiler version 을 사용할 수 있다면 기존 Version으로 사용하도록 노력해야겠다.
MSP430의 Compiler는 TI Compiler 와 GCC를 동시 지원해주고 있지만, Compiler에 따라 사용하는 방법 역시 조금씩 다르다.
특히 ISR 부분을 보면 다른 부분을 쉽게 알수 있을 것이다. Link Script인 *.cmd File과
연동하는 부분 역시 다르다.
- MSP430 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
1.1 CCS의 Project의 기본정보확인
아래에서 둘중 하나로 Project의 기본속성을 확인하고 Compiler version을 확인하고,
File Format 확인 하자
File->Properties 선택
General 확인
Project Explorer창에서 Project의 선택
우측 마우스 클릭 후 Property 선택
General 확인
- CCSv6 MSP430 추가설치
View->CCS App Center
1.2 MSP430의 Project 관리 (Properties 세부설정)
상위 Project의 Properties를 세부 설정을 살펴보면 아래와 같다.
아래의 항목들은 참조하여도 좋다
CCS의 기본사용법에서 Project관리에 대한 설명을 하지 않은 것 같아 이부분을 추가설명하고자 이부분을 넣으며, 이 부분은 구지 MSP430으로 제한적으로 생각하지 말자.
- CCS의 기본사용법
- CCS Project 생성 및 기본 Project 가져오는 방법
- Linked Resource (Link가 될때, 참조되는 PATH)
- Build->MSP430 Compiler->include Options
- General->Manage Configuration
현재 Access Point와 End Device를 Application을 동시에 진행을 하기 때문아래와 같이 분리하여 진행하고 있다.
- Build->MSP430 Compiler->Advanced Options->Predefined Symbols
- 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 순서는 다음과 같다.
- Debug As->Code Composer Debug Session 실행 or F11 실행 or Run->Debug
- ISP로 Firmware Download 진행
- CCS Debug 창에서 JTAG을 Debug 진행
- 실행 및 Debug
Debug를 시작하면 CMD 정보기반으로 MSP430의 Flash에 저장 및 RAM에 Loading 된다. 그리고 더불어 Source에서 Line에 더블 클릭을해서 HW Break pointer설정도 가능하여 JTAG기반의 Debugging도 가능하다.
Linkscript는 *.cmd File로 해보면, 간단히 분석이 가능하며,쉽게 분석이 가능하다.
- JTAG 기능 사용시 같이 봐야할 Debug기능
- View->Register를 이용하여 각종 Register 확인 및 수정가능
- View->Breakpointers: JTAG을 이용하여 소스에 BreakPointer를 설정가능
- View->Variables: JTAG을 이용하여 Debug시 Suspend일 경우 변수 값을 볼수 있다.
- View->Expressions: JTAG을 이용하여 Variables 값을 추적하여 볼수 있다.
- View->Disassembly: JTAG을 이용하여 Debug시 자동으로 Assembly 언어로 보여준다.
- View->Modules: 현재 COFF (a.out) 파일의 정보 및 Symbol Table 정보를 정확하게 볼수 있다.
- View->Outline : 현재 File의 함수이름과 전역변수 정보, Include 정보만 알려준다.
- View->Other ( MSP430 -> Target) MSP430의 Voltage도 감지가능
* 1번은 Suspend Mode에서 사용
* 2번은 Source의 Line에 더블클릭하고 설정하고, Breakpointers 창에서 이를 확인
2.1 CCS Debug 사용법 (JTAG Debug)
이 정보 뿐만 아니라, 현재 사용 중인 변수 값도 실시간으로 변화 값을 알수 있다.
정말 편리한 기능이므로 이용하여 사용해 보자.
- View->Breakpoints
View->Breakpoints를 설정하여 Debug를 설정
아래의 JTAG Debug 기능과 같이 사용해보고, Run Menu를 보면 다양한 기능을 제공해주고 있다.
- Run->Resume
- Run->Suspend
- Run->Step info
- Run->Step over
- Run->Step return
- Run->Go Main
- 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
예를 들면, Step info 로 지속적으로 함수를 디버그하면 함수내의 변수 변화를 추적가능하다.
- View->Registers
그리고, 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->Outline은 현재 File의 함수 와 전역변수 및 Include 정보를 제공하여 쉽게 볼수 있다.
- View->Memory Browser
2.2 CCS Debug 사용법 (Board 동작중)
상위는 항상 CCS에서 *.out을 ISP로 올려서 CCS로 Debug하는 방식이지만, 기본 동작 중에
Debugging 하고 싶을 경우가 발생한다.
** 2.1과 다른점은 ISP를 이용하지 않고, 보드가 동작 중에 CCS Debug를 사용하는 점이 다르다.
하지만 기능상의 제약은 따른다.
이럴 경우 아래와 같은 경우 절차로 실행하면 된다.
- View->Target Configuration 창 CCS Debug 추가
- 본인의 *.ccxml을 선택 후 우측마우스 클릭 (MSP430F5438A.ccmxl)
- Launch selected configuration 실행
- Run->Connect Target 실행
- 각 View를 통해 현재의 정보를 확인
아래와 같이 Target Configuration의 ccxml로 제어를 한다.
2.3 MSP430 의 기본 TEST 및 Debug
- EVM 기본 TEST
- Clock 설정 후 각 CLOCK의 Output을 확인 ( ACLK, SMCLK, MLCK) ( PINxSEL 확인)
- UCSI의 UART기능이 처음 구현이 되어있지 않다면 LED or 여분의 PIN을 이용하여 Debugging (스코프 이용)
- 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
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 하는 방법
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
- FET-Pro-430 Software Pkg. - LITE
- 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