본문으로 바로가기

요즘 참 다양한 환경에서 시작하는 하는 중이라는 생각이 듭니다. 어떨때는 겁~나게 비싼 OS 환경에서 제어기를 꾸미다가, 또 어떨때는 FPGA가 제공해주는 편안한 Firmware 레벨에서 작업하다가 또 어떨때는 리눅스 환경에서 데이터를 수집하다가^^.. 뭐 이왕 이렇게 된거 DSP도 한 번?? 하는 생각입니다. ㅎㅎㅎ 이번에는 실제로 DSP 환경을 이야기 할까 합니다. 먼저 국내에서 DSP 관련 개발 보드를 구매하는 것은 아마 다들 SyncWorks라는 회사에서 하지 않을까 하는데요. 그 중에서 TMS320F28335 초소형 버스 모듈이라는 아이를 대상으로 했습니다. 공식판매페이지는 [바로가기]입니다. 여길 가면 핀맵 등과 같은 정보가 있습니다. 그리고 이 사이트에서 각 종 교육자료와 강좌 등을 거의 대부분 알 수 있습니다. 그런데 사소한 문제가 하나 있습니다.ㅠ.ㅠ. 바로 정리가 되어 있지 않다는 거죠ㅠㅠ. 그래서 오늘은 요걸 정리하면서 또 최신 환경인 mark Composer Studio V6에 맞춰 볼려고 합니다.^^ CCS를 다운받기 위해서는 [바로가기]로 가야합니다. CCS 다운로드 페이지에서 웹용 말고 스탠드얼론으로 받으시면 좀 더 편합니다.^^. 이제 그러고 난 뒤 CCS를 실행해보죠~

이 화면에서는 적당히 폴더 이름을 잡아줍니다.

그리고 Project->New CCS Project를 선택하시면 됩니다.

그리고 위 그림처럼 28335를 선택하면 됩니다. 그리고 Connection에서는 자신이 가지고 있는 JTAG을 선택하면 됩니다. 해당 JTAG이 정상인지 확인하는 것은 Verify를 해 보면

으로 알 수 있습니다.

그리고 위 그림처럼 Project Name을 정해주고 Empty Project (with main.c)로 정하고 시작하면 됩니다. 이제 한가지 작업을 해 두어야하는데요. 아까 이야기한 SyncWorks의 공식 판매 페이지에서 배포하는 라이브러리[바로가기]나 Texas Instruments에서 배포하는 controlSUITE[바로가기]라는 이름의 라이브러리(같은 겁니다.)를 다운받아 설치합니다. 저는 sprc530.zip을 설치해 두었습니다. 그리고 이제...

이제 생성된 프로젝트에서 마우스 우클릭으로 Properties를 엽니다.

이제 Build->C2000 Compiler->Include Options를 선택합니다. 그리고 위에 표시된 추가 버튼으로 

아까 이야기한 sprc530이 설치된 폴더에서

DSP2833x_common과 DSP2833x_header의 include의 경로(path)를 추가하시면 됩니다.

다음은 Build->C2000 Linker->File Search Path에서 

DSP2833x_common\cmd\28335_RAM_cmdDSP2833x_headers\cmd\DSP2833x_headers_nonBIOS.cmd를 추가합니다. 그리고 rts2800_fpu32.lib를 찾아서 추가합니다.

그리고 위에 표기된 경로를 추가합니다.

이제... Add Files라는 항목을 선택합니다.

아까 이야기한 TI에서 배포하는 라이브러리 및 예제 폴더에서 위에 표시된 파일들을 추가합니다.^^

그리고.. 프로젝트 관리를 위해 Copy files를 선택하면 됩니다. 뭐 Link to files를 선택해도 됩니다. 그러나 여러 버젼의 보드를 관리하다보면 관리 오류로 문제가 생길 수도 있어서 말이죠^^

그리고 또 위에 표시된 파일도 추가합니다.

그리고 위와 같이 표기된 파일들이 맞는지 확인하시면 되요...

아.. 그런데.. 이미 Project Properties에서 잡아 줬기 때문에 위 화면에 있는 28335_RAM_lnk.cmd는 제거안하면 설정이 중복이라는 에러가 뜨므로 제거하는게 좋습니다.

[바로가기]에서 나타나 있는 28335 개발 보드의 회로에 의하면 위 그림처럼 LED가 GPIO36에 연결되어 있다는 것을 알 수 있습니다. 이제 인터넷에 존재하시는 많은 고수분들 중 [바로가기]에 있는 LED 깜빡거리기 예제를 하나 가지고 옵니다. 그걸 main.c에 넣어주는거죠^^

#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

void delay_loop();

void main(void)
{
	InitSysCtrl();

	EALLOW;
	GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 0;
	GpioCtrlRegs.GPBDIR.bit.GPIO36 = 1;
   	EDIS;

   	EINT;   // Enable Global interrupt INTM
	ERTM;   // Enable Global realtime interrupt DBGM

	while(1)
	{
		GpioDataRegs.GPBTOGGLE.bit.GPIO36 = 1;
		delay_loop();
		GpioDataRegs.GPBTOGGLE.bit.GPIO36 = 1;
		delay_loop();
	}
}

void delay_loop()
{
	Uint32 i;
    for(i=0;i<2000000;i++);
}

위 예제는 그냥 심플하게 36번 GPIO를 HIGH/LOW로 토글합니다.^^

Build를 해보면 에러가 없다는 것을 알 수 있구요^^ 이제 Debug를 눌러주면 됩니다.^^

그런데 만약 이 단계에서 위와 같은 메세지가 나타날 수도 있습니다. Error initializing emulator라는 에러인데요. 위 에러를 읽어보면 JTAG의 펌웨어를 업그레이드를 하라는 이야기인데요.. 

ti->ccs_base->common->uscif->xds2xx경로의 내용을 보면 됩니다. 그 중에 ReadMe를 읽으면

터미널에서 update_xds2xx.bat xds200이라고 입력하라네요~^^

위와 같이 해주면 됩니다.^^ 다시 Debug를 해보면

위 그림처럼 이쁜 화면(^^)이 나타납니다. 여기서 resume을 선택하면 

위 그림의 보드의 LED가 깜빡 거립니다.^^ 첫 설정이죠.. 다들 여기서 좀 많이 고생들 하시구요^^ SyncWorks가 좀 이쁘게 자료가 잘 정리되어 있다면 좋겠지만 그렇지 않아서 살짝 인터넷의 많은 자료를 참조해서 이렇게 포스팅합니다..^^


댓글을 달아 주세요

  1. BlogIcon kakawood 2016.04.22 09:49 신고

    드디어 금요일이네요, 이번 한주도 수고 많으셨습니다
    미리 좋은 주말 보내세요~

  2. BlogIcon 비키니짐(VKNY GYM) 2016.04.22 12:08 신고

    잘 보고갑니다^^

  3. BlogIcon 에이티포 2016.04.22 12:30 신고

    핑크님~~ 이런거 포스팅해도 유입이 많이 되시나요?

    • BlogIcon PinkWink 2016.04.22 22:54 신고

      사실.. 이런 포스팅은 두 가지 이유가 있는데요..
      하나는 제가 기억을 잊지 않기 위해서이고...
      또 하나는 다음 글을 쓸 때 글이 길어지지 않게 참조용으로 남기기 위해서인데...
      요즘은 그냥 아무렇게나 무규칙으로ㅠㅠ... 뭐 아무튼. 유입은 있긴 하지만.. 미미하지요~^^

  4. BlogIcon 영준이 2016.04.22 20:20 신고

    저도 저런 비싼물건(?) 가지고 한번 놀아보고싶네요..

  5. BlogIcon 핑구야 날자 2016.04.23 08:06 신고

    DSP환경하에서의 구현은 잘 모르지만 ~~ 잘 보고 가요

  6. BlogIcon ☆Unlimited☆ 2016.04.23 19:28 신고

    으앙 너무 어렵당

  7. BlogIcon 아쿠나 2016.04.25 07:34 신고

    유용한 정보 잘 보고 가구요~
    한주의 시작 매끄럽게 시작하세요 ^^

  8. 블루윙 2017.09.01 11:54 신고

    안녕하세요 내용 잘 보고 갑니다. 저도 최근에 이걸 만지는 계기가 있어서 알아보고 있는데요.
    좋은 자료를 보면서 공부하고있습니다.

  9. JYS0531 2018.02.08 13:47 신고

    안녕하세요 많은 정보 얻고 갑니다.
    한가지 질문사항이 있는데요 제가 가지고 있는 JTAG를 선택하여 연결이 된건지 확인하려고 Verify하면 전력이 부족하다고 뜨는데요 실제로 에뮬레이터 LED불도 초록불이 아닌 빨간불이 들어오더라구요... 이부분은... DSP쪽에 5v 입력을 따로 넣어줘야 할까요?? 컴퓨터의 USB 연결만으로는 파워 공급이 원활히 안되는것인지... 아니면 설정같은걸로 해결할수있는지 궁금합니다.