일반

Linux에서 Code Composer Studio (CCS) - Ti ARM 개발환경 구축하기

Posted 2016. 06. 26 Updated 2017. 06. 02 Views 5046 Replies 0
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

Windows환경에서 Ti ARM계열 프로세서 개발환경을 구축하려면 설치파일 몇 개만 다운받아서 실행하기만 하면 알아서 다 세팅해 주지만, 리눅스 환경에서는 수동으로 설치하고 설정해 주어야 합니다.

하지만 다소 귀찮지만 초기 설치만 약간 공을 들여서 해 놓으면 그 이후에는 Windows에서 사용하던 것과 거의 동일한 환경에서 CCS를 사용할 수 있습니다. 여기에 더해서 ([Ctrl]+[Alt]+[T]만 누르면 바로 튀어나오는) 자유로운 Shell 환경과, 리눅스에서 사용 가능한 다양한 자원들을 함께 활용할 수 있다는 것은 덤입니다.ㅎㅎ

작년에 Ti의 ARM계열 LaunchPad 시리즈 중 하나인 EK-TM4C1294XL에 올릴 펌웨어를 개발하기 위해 Ubuntu에 Code Composer Studio (CCS)를 설치하는 등 한바탕 난리를 피웠던 적이 있습니다. 뭐, 속편하게 Windows에서 개발했다면 손쉽게 했겠지만, 향후 제가 하게 될 장래 삽질(?)에 대비해서 경험삼아 리눅스에서 개발을 진행했었습니다.

처음에는 컴파일러를 찾고, SDK들은 Windows에 설치한 것을 가져오는 등 대단한 삽질을 각오했었지만, Ti에서 Linux에도 개발환경을 쉽게 구축할 수 있도록 여러 툴들을 제공해 주고 있었습니다. IDE인 Code Composer Studio와 SDK인 TivaWare, StellarisWare, 여기에 더불어 마우스 클릭으로 코드를 생성해주는 Grace까지 모두 그대로 Linux환경에서 사용 가능합니다. 또한, GUI기반의 Firmware Flashing 유틸리티도 함께 제공하고 있습니다.

당시에 그 과정을 위키에 기록해 놓았었는데, 이번에 또다시 Linux에 개발환경을 구축할 일이 있어서 글로 옮기게 되었습니다. 이 글에서는 다음 내용들을 다룹니다.

  • IDE: Code Composer Studio (CCS) 설치
  • SDK: StellarisWare 및 TivaWare 설치
  • UniFlash(Firmware Writer) 설치

※ 이 글에서는 TM4C, LM4F120, MSP 계열 프로세서를 개발하기 위한 환경의 구축에 대해 설명합니다. 물론 CCS가 Ti에서 생산하는 모든 프로세서를 지원하기 때문에 다른 계열 프로세서들도 SDK만 별도로 다운받아서 설치하면 사용할 수 있습니다.


Code Composer Studio (CCS) 설치

1. 의존성 패키지 설치

CCS 설치파일을 실행하기 전에 이들 의존성 패키지를 먼저 설치해 줘야 합니다.

sudo apt-get update
sudo apt-get install libc6:i386 libx11-6:i386 libasound2:i386 libatk1.0-0:i386 libcairo2:i386 libcups2:i386 libdbus-glib-1-2:i386 libgconf-2-4:i386 libgdk-pixbuf2.0-0:i386 libgtk-3-0:i386 libice6:i386 libncurses5:i386 libsm6:i386 liborbit2:i386 libudev1:i386 libusb-0.1-4:i386 libstdc++6:i386 libxt6:i386 libxtst6:i386 libgnomeui-0:i386 libusb-1.0-0-dev:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386 unzip

Grace를 사용하려는 경우 다음 패키지들도 추가로 설치해 줍니다.

sudo apt-get install libnss3:i386 libnss3-1d:i386 libnss3-nssdb:i386

자세한 내용은 다음 위키 페이지를 참조하세요. (Ubuntu 버전에 따라 의존성 패키지가 달라질 수 있습니다.)
▶ http://processors.wiki.ti.com/index.php/Linux_Host_Support_CCSv6


2. CCS 설치

다음 페이지에서 Linux용 CCS 설치파일을 다운로드합니다.
▶ http://www.ti.com/tool/CCSTUDIO-TM4X?keyMatch=CCS&tisearch=Search-EN-Everything

압축을 풀면 ccs_setup_6.x.x.xxxxx.bin 파일이 나오는데, 이를 User 권한으로 실행합니다.

./ccs_setup_6.x.x.xxxxx.bin

실행을 하면 조금 오랬동안 아무런 반응이 없는데, 원래 오래 걸리는 것이므로 기다리도록 합니다. (아무래도 Windows의 InstallShield를 에뮬레이션;;하느라 오래 걸리는것 같습니다.)

만약 아무 일도 일어나지 않고 그냥 종료되면 의존성 패키지가 올바르게 설치되지 않은 것입니다. 의존성 패키지 설치를 다시 진행하고 시도하세요. (오류메지시라도좀 띄워주지;;)

이후 CCS 설치 과정은 Windows에서와 같습니다. (글꼴이 좀 맘에 안드는것 같기는 하지만..) 설치 경로를 지정하고 설치할 구성요소들을 선택하고 설치를 진행합니다.

install-CCS.png
▲ CCS 설치 과정

에뮬레이션이라서 그런지 설치시간도 Windows에 비해 좀 많이 오래 걸립니다. 잠시 딴짓을 하거나, 다음 과정들에 필요한 파일들을 미리 다운받아 놓도록 합시다..ㅎㅎ


3. Driver 설치

install-CCS-finish.png
▲ CCS 설치 완료

CCS의 설치가 완료되면 위와 같이 Driver를 설치하라는 안내가 나옵니다. 이 과정을 그대로 수행하도록 합니다.

Driver 설치를 위한 스크립트는 {설치 경로}/ccsv6/install_scripts/ 디렉토리에 있습니다. 설치 과정에서 설치 경로를 바꾸지 않고 그대로 설치했다면 /home/{UserName}/ti/ccsv6/install_scripts/ 디렉토리에 있을 것입니다.

여기로 이동해서 install_driver.shRoot권한으로 실행합니다.

cd /home/{UserName}/ti/ccsv6/install_scripts
sudo ./install_drivers.sh


SDK 설치: StellarisWare, TivaWare

StellarisWare는 LM4F120계열 프로세서를 위한 SDK이고, TivaWare는 TM4x계열 프로세서를 위한 SDK입니다. 이 두 SDK는 내용물은 비슷한데, 지원하는 프로세서 종류가 다르므로 잘 구분해서 사용해야 나중에 문제가 생기지 않습니다.

[뱀발] 무슨 영문인지는 잘 모르겠지만, Ti에서는 Stellaris LaunchPad와 SDK를 출시한 지 얼마 되지 않아서 이를 버리고(?) Tiva계열 LaunchPad와 SDK인 TivaWare를 출시하였습니다. 이후 Stellaris LaunchPad는 거의 사장되다시피 하고, Tiva계열 LaunchPad가 우수수 쏟아져 나왔습니다. 그리고 이후에는 TivaWare를 주로 밀고 있는것으로 보입니다. 사실상, TivaWare는 StellarisWare의 구성요소를 모두 포함하고 있는 확장판이라고 할 수 있습니다.

다음 페이지에서 StellarisWare/TivaWare 설치용 파일(*.exe)을 다운로드합니다. 이 글을 쓰는 시점 기준으로 가장 위쪽에 있는 다운로드 버튼입니다. (SW-EK-LM4F120XL 및 SW-TM4C)

[StellarisWare]
▶ http://www.ti.com/tool/SW-EK-LM4F120XL?keyMatch=EK-LM4F120XL&tisearch=Search-EN-Everything

[TivaWare]
▶ http://www.ti.com/tool/sw-tm4c?keyMatch=tivaware&tisearch=Search-EN-Everything

다운로드한 파일의 확장자는 Windows 실행 파일인 EXE지만, 실상은 ZIP 압축파일입니다.[...] 다운받은 EXE파일을 unzip 명령으로 압축을 풀어주도록 합니다.

※ 압축을 풀 때 현재 디렉토리에 풀어버리므로(ㅡㅡ^) StellarisWare나 TivaWare라는 이름의 디렉토리를 새로 만들어서 여기에 파일을 옮긴 뒤 압축을 풀도록 합니다.

이제 이 압축을 푼 디렉토리들을 적당한 위치(~/ti/StellarisWare 또는 ~/ti/TivaWare)로 옮겨줍니다.


UniFlash 설치

UniFlash는 Windows환경의 LM Flash Programmer와 같은 역할을 하는 툴입니다. LaunchPad에 붙어있는 Debugger와 연계해서 프로세서에 작성한 펌웨어를 올릴 때 사용합니다.

혹자는 CCS의 도구상자에 있는 디버그 버튼(CCS-Debug.png)을 플래싱 대용으로 쓰는[...] 경우가 종종 있는데, 이래저래 여러 가지 부가 기능을 제공하는 정식 툴을 사용하는 것을 추천합니다. (화면 막 바뀌고, 이후 Stop버튼 눌러서 빠져나와야 하는 등 번거롭잖아요ㅎㅎ - 뭐., 어차피 이래나 저래나 굽는건 같다고 한다면 반박불가긴 합니다만..)

다음 페이지에서 UniFlash 설피차일을 다운로드 받습니다.
http://processors.wiki.ti.com/index.php/Category:CCS_UniFlash

다운로드 받은 설치파일(uniflash_setup_x.x.x.xxxxx.bin)에 실행 권한을 부여(chmod +x)하고, 실행하면 설치 과정을 진행할 수 있습니다.

install-UniFlash.png
▲ UniFlash 설치


UniFlash 기본 사용 방법: 펌웨어 올리기

UniFlash는 LM Flash Programmer와는 상당히 다른 인터페이스를 제공합니다. 실행하면 바로 Flashing을 할 수 있는 버튼이 나타나는게 아니라 다음과 같이 '뭐 어쩌라고[!]'가 바로 튀어나오는 창이 딱 튀어나오니 말이죠..

UniFlash.png
▲ UniFlash 실행 화면

Flashing을 하기 위해서는 우선 Target 프로세서를 설정해 줘야 합니다. 이 과정이 좀 귀찮기 때문에, UniFlash에서는 CCS프로젝트 설정파일(*.ccxml)로부터 Target정보를 불러오는 기능을 제공합니다.

상단 메뉴의 [File] -> [Open Configuration]을 실행하고 [Browse] 버튼을 클릭하여 작업중인 CCS 프로젝트 디렉토리에 있는 *.ccxml파일(target_config.ccxml)을 열어줍니다.

이제 본격 왼쪽 영역에 메뉴들이 나타나기 시작♬할 것입니다. 펌웨어를 굽는 메뉴는 가장 아래에 있는 [Programs] 메뉴 입니다.

UniFlash-Flashing.png
▲ UniFlash로 펌웨어를 굽는 모습

왜때문인지는 잘 모르겠지만, 펌웨어 바이너리들을 리스트에 등록해놓고 선택해서 프로그램할 수 있도록 되어 있습니다. 저같은 경우는 주로 하나만 등록해서 쓰게 될 테지만, 왜 리스트로 만들어 놓았는지는 좀 많이 궁금하네요..

여기서 [Add] 버튼을 눌러서 작성한 펌웨어 바이너리 파일(*.out)을 선택한 뒤 [Program] 버튼을 눌러서 펌웨어를 MCU에 올릴 수 있습니다. (아, 물론 타켓 보드가 PC에 연결되어 있어야겠죠?^^) 자동으로 PC에 연결된 Target을 찾아 알아서 동작하기 때문에 편리합니다.


지금까지 Ubuntu환경에서 Ti MCU 펌웨어 개발을 위한 개발환경을 구축하는 방법에 대해 다루었습니다. 설치한 CCS를 실행하면 Windows에서 보던 인터페이스 그대로 작업을 진행할 수 있을 것입니다.


TIP

StellarisWare 및 TivaWare를 설치한 디렉토리 안에는 유용한 참고자료 및 툴들이 많이 들어있습니다.

  • API 문서: ~/ti/StellarisWare/docs/, ~/ti/TivaWare/docs/
  • 예제 프로젝트: ~/ti/StellarisWare/boards/, ~/ti/TivaWare/examples/boards
  • 유용한 Tool: ~/ti/StellarisWare/tools/, ~/ti/TivaWare/tools/

여기에 있는 자원들을 잘 활용하면,펌웨어를 작성할 때 구글링을 최소화하면서 효율적으로 작업을 진행할 수 있습니다.

예제 프로젝트들을 잘 활용하면 프로젝트를 처음 시작할 때 Base로 활용할 수 있고, 특히 API문서들의 경우 방대한 분량에 자세한 설명, 예제까지 수록되어 있어 작업 진행시 매우 유용합니다.

제공하는 Tool중에는 콘솔 환경에서 사용할 수 있는 Flasher인 sflash, 파일 시스템을 패킹해서 단일 헤더파일로 만들어주는 makefsfile, TTF형식 폰트 파일을 그래픽 라이브러리에서 사용할 수 있도록 Rasterize해주는 ftrasterize 등이 있습니다.