요즘 참 다양한 환경에서 시작하는 하는 중이라는 생각이 듭니다. 어떨때는 겁~나게 비싼 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_cmd와 DSP2833x_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가 좀 이쁘게 자료가 잘 정리되어 있다면 좋겠지만 그렇지 않아서 살짝 인터넷의 많은 자료를 참조해서 이렇게 포스팅합니다..^^
'Hardware > MCU' 카테고리의 다른 글
[28335] DSP 28335 타이머 인터럽트 사용하기 Timer Interrupt (2) | 2016.05.11 |
---|---|
[28335] DSP 28335 GPIO 기초 확인하기 (9) | 2016.05.04 |
[28335] TI 공식 홈페이지에서 28335용 예제와 라이브러리를 다운받자 - controlSUITE - (6) | 2016.04.27 |
DC 모터의 모션(서보)제어 (Servo Control - Motion Control) (68) | 2011.07.06 |
[Cortex M3] 엔코더해석 결과를 일정시간간격으로 시리얼통신으로 전송하기 (42) | 2009.06.04 |
[Cortex M3] 단순 시리얼통신 테스트 ComPortMaster (4) | 2009.06.04 |
Cortex M3 LM8962 왕초보 설치기.... 헉헉 (10) | 2009.05.29 |