본문으로 바로가기

요즘 참 다양한 환경에서 시작하는 하는 중이라는 생각이 듭니다. 어떨때는 겁~나게 비싼 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가 좀 이쁘게 자료가 잘 정리되어 있다면 좋겠지만 그렇지 않아서 살짝 인터넷의 많은 자료를 참조해서 이렇게 포스팅합니다..^^

신고