2007년 10월 28일 일요일

TMS320F28335 LED 점등 성공



어찌어찌 개발환경 구축을 마무리 하고 LED 점등까지 성공 하였다.

TI 에서 제공하는 예제를 컴파일 하여 JTAG 으로 다운로드 한 후 테스트 하였고

소비 전류를 확인해 보니 LED 점등시 319~324mA 전류소모가 있었다..

생각보다 밥을 너무 많이 먹어서 설정 부분을 확인해 보니 모든 주변장치가 활성화 되어 있음.

사용하는 Timer0 만 살려놓고 다시 확인해 보니 229~235mA 의 전류 소모를 보인다.

다른 28x 계열과 1:1 비교를 해보지는 않았지만 느낌상 더 많은 전력 소모를 보이는것 같다.

심각하게 고려해 봐야 할 문제. 

싱크웍스 블로그쪽에 보니 28335 모듈은 176pin 소켓에 방열 쿨러 까지 장착 한다고 하는 듯..

DSP 발열도 만만치 않을 듯 싶다.


생각보다 삽질이 많다.  개발환경이 여간 깐깐한게 아니다..

방금 알아낸 또하나의 사실.. 아직까지 TI 에서 제공하는 CCS용 2833x Flash Plugin 이 없다..

완전 안습... ㅠ.ㅠ SDFlash 에서 2833x 용 RS-232 Interface 를 지원 하는지도 확실치 않다..

Flash API 까지 지원하면서 도대체 무슨 시츄에이션인지...

짬날때 개발환경 구축에 관한 메뉴얼을 작성해야겠다.


TMS320F28335 개발환경 Update

기존 CCS 3.3 에서 FPU 관련 옵션이 먹통 이었던 문제를 해결하기 위하여 관련 문서를 찾아 보았다.

결론은 예상했던 대로 283x 출시 이후의 CCS 가 필요하다는 사실을 알게 되었다는 것. 

기존에 가지고 있던 CCS 3.3 의 버젼이 3.3.38 이었고  밤새 다운로드 받은 평가판의 버젼을 살펴보니 역시 3.3.38 이었다. -_-;;;

역시 컴파일 안됨.

혹시나 하여 TI 의 CCS Updates 항복을 확인해 보았는데 새로운 버전의 CCS 를 다운받을 수 있었다.

사실 이 부분은 CCS 정품 사용자가 등록을 한 후 사용 할 수 있는 부분인데 예전에 정품 등록 이후에

접근이 안되는 문제가 있었었다. 내 시리얼 번호가 유출되었나보다 하고 까맣게 잊고 있다가

오늘에서야 다시 접속을 해보니 제대로 된다.. -_-;;

이곳에 올라와 있는 자료는 CCS V3.3.57 이고 F283xx 를 지원한다는 설명이 붙어 있다. 

아마도 FPU 관련 옵션이 활성화 되어 있을 듯 하다. 다만 내가 등록하였던 CCS 정품은 플랜티넘 버젼이 아니고

C2000 전용 버전이기 때문에 다운로드 받는 버젼 역시 C2000 전용 CCS 이다.

또한 "F283xx Chip Support Package" 라는 자료가 있는데 CCS Setup 에서 관련 항목의 추가 인 듯 싶다. 

기존 CCS 설치 해 보았더니 CCS Setup 에서 283xx 항목이 나오는 것을 확인 할 수 있었다.  (하지만 옵션 항목은 없다.)

가지고 있는 JTAG 은 3rd party 의 제품(Wintech Digital 사의 TDS510)이기 때문에 드라이버 업데이트를 확인해 보았더니

CCS 3.3 용 드라이버가 업데이트 되어 있었다.  위 세개의 자료를 다운로드 받고 있으며 이후 컴파일러 관련 개발환경 구축은

어느정도 마무리 될 듯 싶다.  CCS 다운로드가 오래 걸리므로 역시 오늘은 여기까지.


이젠 논문작성 모드다.  Dr. Yoon 의 입국 날짜가 다가온다....  ㅎㄷㄷ  ㅠ.ㅠ

2007년 10월 27일 토요일

TMS320F28335 Test Board 진행사항


1.  RC 시정수를 이용한 리셋회로를 달아 주었고 오실로 스코프를 이용하여 와치독 리셋이 주기적으로 발생함을 확인 하였다.

2. JTAG Interface 를 위한 커넥터를 달고 연결 하였다.  CCS 3.3 에서 커넥션이 문제없이 이루어 짐을 확인 하였다.

3.  예제파일을 다운로드 받아보기 위하여 부트모드를 설정 할 수 있도록 점퍼용 헤더를 달아 주었다.  부트모드 선택용 GPIO 는 내부 풀업이 되어 있기 때문에 로직 변경시 그라운드 처리만 해 주면 된다.  예제 파일은 SARAM 구동용 이기 때문에 SARAM 부팅을 할 수 있도록 GPIO84~87 까지의 셀렉트 핀을 해당 사항에 맞도록 처리하였다.

4. CCS 3.3 에서 예제 파일을 컴파일 하였다.  혹시나 하던 문제점이 여지없이 들어났다.  28335에 탑재된 FPU 를 사용하기 위해서는 컴파일 옵션에 "--float_support=fpu32" 옵션을 추가해 주어야 하는데 잘못된 옵션으로 인식한다.  출력되는 메세지는 다음과 같다.  

WARNING: invalid compiler option --float_support=fpu32 (ignored)

아직까지는 해결방법을 찾지 못하였다.  최신 컴파일러에서도 같은 현상이 나타나는지 알아보기 위하여 TI 홈페이지에서 CCS 평가판을 다운로드 받고 있다.  시간이 많이 걸리므로 오늘은 여기까지.

2007년 10월 26일 금요일

TMS320F28335 Test Borad

사용자 삽입 이미지


변환기판에 TMX320F28335 를 부착하고, 세개의 Regulator 를 달았다.

Clock Out은 30MHz 오실레이터 사용 시 기본 3.75Mhz 이 출력 되고 24MHz 크리스탈 사용시 3MHz 가 출력된다.

전류 소모는 30MHz 사용시 약 88mA, 24MHz 사용시 약 85mA 정도.

Regulator 와 LED 에서 약 33mA 정도를 소모 하므로 DSP 는 55 ~ 52mA 정도 소모 함.

JTAG 연결을 시도 해 보아야겠다.

TMS320F28335 DOC

Technical Documents
Back to TopDatasheets
TMS320F28332, TMS320F28334, TMS320F28335 Digital Signal Controllers (DSCs) (Rev. B) (tms320f28335.pdf, 2241 KB)
12 Oct 2007 Download
TMS320x2833x Digital Signal Controllers Silicon Errata (sprz272.pdf, 113 KB)
09 Sep 2007 Download
Back to TopApplication Notes
Configuring Source of Multiple ePWM Trip-Zone Events (spraar4.htm, 9 KB)
25 Oct 2007 Abstract
Getting Started With TMS320C28x Digital Signal Controllers (Rev. A) (spraam0a.htm, 9 KB)
25 Oct 2007 Abstract
TMS320x280x to TMS320x2833x Migration Overview (spraaq8.htm, 9 KB)
09 Oct 2007 Abstract
TMS320x281x to TMS320x2833x Migration Overview (spraaq7.htm, 9 KB)
19 Sep 2007 Abstract
Custom Bootloader Options via One-Time Programmable (OTP) Memory (spraaq3.htm, 9 KB)
18 Sep 2007 Abstract
An Overview of Designing Analog Interface With TM320F28xx/28xxx DSCs (spraap6.htm, 9 KB)
13 Aug 2007 Abstract
Interfacing SD/MMC Cards With TMS320F28xxx DSCs (spraao7.htm, 9 KB)
26 Jul 2007 Abstract
C28x FPU Primer (spraan9.htm, 8 KB)
08 Jun 2007 Abstract
TMS320280x and TMS320F2801x ADC Calibration (Rev. A) (spraad8a.htm, 9 KB)
06 Mar 2007 Abstract
Using Enhanced Pulse Width Modulator (ePWM) Module for 0-100% Duty Cycle Control (spraai1.htm, 8 KB)
20 Dec 2006 Abstract
Using the eQEP Module in TMS320x280x as a Dedicated Capture (spraah1.htm, 8 KB)
30 Nov 2006 Abstract
TMS320x281x to TMS320x280x/2801x/2804x Migration Overview (Rev. A) (spraa58a.htm, 9 KB)
05 Oct 2006 Abstract
Programming TMS320x28xx and 28xxx Peripherals in C/C++ (Rev. A) (spraa85a.htm, 8 KB)
05 Oct 2006 Abstract
TMS320F280x DSC USB Connectivity Using TUSB3410 USB-to-UART Bridge Chip (spraa91.htm, 9 KB)
26 May 2006 Abstract
Power Line Communication for Lighting Apps using BPSK w/ a Single DSP Controller (spraad5.htm, 9 KB)
07 Mar 2006 Abstract
Using PWM Output as a Digital-to-Analog Converter on a TMS320F280x (spraa88.htm, 9 KB)
13 Feb 2006 Abstract
Running an Application from Internal Flash Memory on the TMS320F28xx DSP (Rev. F) (spra958f.htm, 9 KB)
31 Jan 2006 Abstract
Online Stack Overflow Detection on the TMS320C28x DSP (spra820.htm, 9 KB)
02 May 2003 Abstract
An Easy Way of Creating a C-callable Assembly Function for the TMS320C28x DSP (spra806.htm, 8 KB)
30 Oct 2001 Abstract
View Application Notes for TMS320F283x Controllers
Back to TopUser Guides
TMS320x2833x External Interface (XINTF) Reference Guide (Rev. A) (spru949a.htm, 8 KB)
25 Oct 2007 Abstract
TMS320x2833x Multichannel Buffered Serial Port (McBSP) Reference Guide (Rev. A) (sprufb7a.htm, 8 KB)
25 Oct 2007 Abstract
TMS320x2833x Analog-to-Digital Converter (ADC) Module Reference Guide (Rev. A) (spru812a.htm, 9 KB)
12 Oct 2007 Abstract
TMS320x28xx, 28xxx Enhanced Capture (ECAP) Module Reference Guide (Rev. B) (spru807b.pdf, 296 KB)
12 Oct 2007 Download
TMS320x28xx, 28xxx Enhanced Pulse Width Modulator (ePWM) Module (Rev. D) (spru791d.htm, 8 KB)
04 Oct 2007 Abstract
TMS320x28xx, 28xxx DSP (Rev. E) (spru566e.htm, 8 KB)
01 Oct 2007 Abstract
TMS320x28xx, 28xxx Enhanced Quadrature Encoder Pulse (eQEP) Module RG (Rev. B) (spru790b.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x System Control and Interrupts Reference Guide (sprufb0.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x Boot ROM Reference Guide (spru963.htm, 9 KB)
10 Sep 2007 Abstract
TMS320x2833x Direct Memory Access (DMA) Reference Guide (sprufb8.htm, 8 KB)
07 Sep 2007 Abstract
TMS320x28xx, 28xxx High-Resolution Pulse Width Modulator (HRPWM) Reference Guide (Rev. B) (spru924b.htm, 8 KB)
07 Sep 2007 Abstract
TMS320C28x Floating Point Unit and Instruction Set Reference Guide (sprueo2.htm, 8 KB)
03 Jun 2007 Abstract
TMS320x28x, 28xxx Serial Peripheral Interface (SPI) Reference Guide (Rev. D) (spru059d.htm, 8 KB)
30 Nov 2006 Abstract
TMS320x28xx, 28xxx Enhanced Controller Area Network (eCAN) Reference Guide (Rev. E) (spru074e.htm, 9 KB)
03 Oct 2006 Abstract
TMS320C28x DSP/BIOS 5.31 Application Programming Interface (API) Reference Guide (Rev. H) (spru625h.htm, 9 KB)
30 Sep 2006 Abstract
TMS320C28x Assembly Language Tools User's Guide (Rev. B) (spru513b.htm, 8 KB)
01 Mar 2006 Abstract
TMS320x28xx, 28xxx Inter-Integrated Circuit (I2C) Reference Guide (Rev. A) (spru721a.htm, 9 KB)
31 Oct 2005 Abstract
TMS320C28x Optimizing C/C++ Compiler User's Guide (Rev. B) (spru514b.htm, 9 KB)
19 Oct 2005 Abstract
TMS320x28xx, 28xxx Serial Communications Interface (SCI) Reference Guide (Rev. B) (spru051b.htm, 9 KB)
04 Nov 2004 Abstract
TMS320C28x DSP CPU and Instruction Set Reference Guide (Rev. D) (spru430d.htm, 8 KB)
31 Mar 2004 Abstract
TMS320C28x Instruction Set Simulator Technical Overview (Rev. A) (spru608a.pdf, 77 KB)
30 Nov 2002 Download
View User Guides for TMS320F283x Controllers
Back to TopMore Literature
TMS320C2000 Digital Signal Controllers Brochure (Rev. B) (sprb176b.pdf, 752 KB)
31 Jul 2007 Download
View More Literature for TMS320F283x Controllers

Tools & Software
Back to Top Name Part # Company Tool / Software Type
Code Composer Studio IDE CCSTUDIO Texas Instruments Code Composer Studio(TM) IDE
Dual Fiber Optic Serial Port Daughtercard for the Spectrum Digital F2812 eZdsp Link Research Daughter Cards
Dual RS-232 Serial Port Daughtercard for the F2812 eZdsp Development System Link Research Daughter Cards
Multi-Channel 14-bit, Precision Data Acquisition Daughtercard for the F2812 eZdsp Link Research Daughter Cards
TMS320F2833x reference design SPRC541 Texas Instruments Development Boards/EVMs
UPCC-2812 - Universal Power Converter Control HPE - High Power Engineering Development Boards/EVMs
MCK2812 DSP Motion Control Kit Technosoft Development Boards/EVMs
MCK2812 Kit C Pro Technosoft Development Boards/EVMs
Blackhawk™ LAN560 JTAG Emulator Blackhawk Emulators/Analyzers
Blackhawk™ PCI560 JTAG Emulator for TI DSPs Blackhawk Emulators/Analyzers
Blackhawk™ USB560 JTAG Emulator Blackhawk Emulators/Analyzers
Blackhawk™ USB560BP JTAG Emulator Blackhawk Emulators/Analyzers
JTAGjet Emulator for C2000 Signum Systems Emulators/Analyzers
JTAGjet USB 2.0 Emulator for TMS320 Signum Systems Emulators/Analyzers
XDS510PP PLUS JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
XDS510USB JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
XDS510USB PLUS JTAG Emulator Spectrum Digital, Inc. Emulators/Analyzers
TMS320F28335 eZdsp Starter Kit TMDXEZ28335 Texas Instruments Starter Kits
C2833x C/C++ Header Files and Peripheral Examples SPRC530 Texas Instruments Application Software
Download: TMS320F2833x Flash APIs (v1.01) (sprc539.zip, 686 KB )
14 Sep 2007 zip

2007년 10월 25일 목요일

지금.. 내 모습..

사용자 삽입 이미지

지금 나의 모습.

아직 젊다!!  아자!!!


Nikon D70 + Nikkor AF 50mm F/1.8D


2007년 10월 22일 월요일

2007 산업대 라인 트레이서 경연대회



COEX 에서 열린 산업대 라인트레이서 경연대회.

단국대 멤버 주행모습...

다들 블라인드 구간 때문에 안습 상황...

사용자 삽입 이미지

대회 마치고 참가자 단체 사진.


사용자 삽입 이미지

구조부분 우승한 로봇.

2위 3위 로봇은 기존에 많이 보았던 풍량형 주행이라 식상하였지만, 전방향 주행 가능한 이 로봇은

꽤 참신해 보였음.  하지만 저 좋은 스펙에 주행 능력은 정말 꽝...~  요놈 제어 한번 해보고 싶다.


대회 준비위 여러분, 참가자 여러분 수고하셨습니다.


2007년 10월 19일 금요일

TMX320F28335 입수

사용자 삽입 이미지

어찌어찌 하여 요녀석 입수에 성공을 했는데

같은날 싱크웍스에서도 판매를 하네요.. 쩝~

아.. 손가락이 근질근질.. ㅋㅋㅋ

2007년 10월 16일 화요일

로봇에 사용할 DSP 선택하기 [2편]

기억을 더듬어 보면.. 한 5,6년 전쯤의 일인거 같다.. Daum의 마사모 카페에서 정모 공지가 올라왔는데 장소는

경기대 였는지 경희대 였는지.. 수원쪽에 있는 학교 였었다.  당시 나는 196, 188, 296 을 사용해 장난감을 만들어

본 후 ARM 에 관심을 갖고 3410으로 마우스를 만들어보고 있었을 때였는 듯 싶다.  당시에 학교 소모임에 구축

되어 있는 개발환경은 8051과 196 뿐이었고, 배운게 8bit Micom 밖에 없었던 나는 DSP 의 개념조차 생소하였던

미숙아였다.  마우스에 대한 동경심만을 갖은 채... 주변에서 도움을 받을 수 있는 곳은 거의 전무 했었고

그나마 디동의 고전자료와 다음 마사모 회원님들이 간간히 알려주는 노하우 들은 나에게 있어서 사막의 오아시스

같은 존재였었다.  막상 정모에 참석을 하자니 참으로 뻘쭘하드라.  같이 가겠다는 녀석들은 모두다 빵꾸를

냈었고, 갈까말까 많은 고민 끝에 결국은 수원행 버스를 타게 된다.  어리버리 주삣쭈빗 정모장소에 들어선 나를..

꼭 평소에 알고 지내던 사람처럼 맞아 주셨던게 단국대 최윤근 님이었다.  강의실 문앞에서 회원들을 맞아주시고

악수까지 하며 인사를 건내주시던 윤근이형이 얼마나 고맙던지... ㅠㅠ

사진 및 대회장에서 멀찍이 떨어져서 구경하던 마우스를... 처음으로 코앞에서.. 그것도 풀미로 주행하는 모습을

보면서... 감격, 감격, 또 감격 하였고 몇년안에 저자리에 내가 서리라.. 모질게 마음을 다잡았던 자리였었다..

특히 아주대 아톰의 윤병민님께서 제작하신 '삽질만세' 의 주행은... 엄청난 충격이었다..


마우스의 친선경연이 끝난 후 옆 강의실로 자리를 옮겨 세미나를 진행 하였다.  (글을쓰다보니.. 2회 정모와..

3회 정모를 헤깔리고 있는거 같다...  -_-;;;;;  )  무튼.. 윤근형이 어렵게 섭외하여 모셔왔다는...

향후 내 마우스 인생에 있어서 은사님이신 단국대 MAZE의 Killer33 제작자이신 이상문님의 강의를 듣게 된다..

이때가 처음으로 DSP 라는 녀석의 존재를 어렴풋이 느끼게 된 순간이었을 것이다.. 상문형은 본인이 직접

코딩중인 소스를 보여주시면서 세미나를 진행 하셨고... 화면에 나와있는.. 소수(Floating Point)들의 향연이란...

놀라움과 동경의 대상이 되어버린 그 순간을 난 잊을 수 없다.



어찌어찌하여 몇달 후 모 집단에 소속하게 되면서 상문형과 인천대 마마의 후까시 제작자이신 김용현님을

사부님으로 모실 수 있는 인생일대 최고의 기회를 맏을 수 있게 되었다.  수십개월을 혼자서 맨딴에 헤딩하며

만들었던 마우스는 이미 오래전부터 한계에 부딛혀 꼼짝을 못하고 있는 상황이었기에 그 순간은...  희열..

그 자체로 받아들여졌다.

그렇게 시작된 나와 TMS320VC33...  단국대 MAZE의 전유물이라고 생각되었던 33 PCB 를 받게 되었고,

개발환경을 구축하고, 프로그래밍을 시작하게 된다. 

처음부터 난관이 많았다.  쌩 PCB 에 모든 소자를 직접 박아 넣는 과정을 처음으로 해보게 되었고, 33의 LQFP

패키지와 플래쉬용 PLCC to SMD 소켓.. 피치가 겁나게 좁은 여러 IC 등...  하도 떼었다 붙였다 하여 패턴 떨어진

PCB와, 다 되었다 싶어도 전원만 인가하면 타들어가는 IC 들...  과연 이 장벽을 넘을수 있을 것인가.. 포기 할

것인가 하는 고민속에 용현형은 원칩 DSP 로 가시겠다며 TMS320LF2406 으로 넘어가시고...  내 보드는 살아날

가망성이 없고...  결국 울상인 나를 불쌍히 여기사 상문형께서 완성품 33 보드를 하사해 주셨으니, 이제부터

본젹적인 시작.


TMS320VC33 은 TI 사에서 오래전에 개발한 고성능 부동소수점 연산장치 이다.  150 버젼과 120 버젼이 있는데

최대 동작주파수를 의미한다.  75 MIPS, 150 MFLOPS 의 연산속도를 내는.. 빠른 연산장치이다.  VC33 이전에

같은 라인업의 DSP 로써 V31 과 V32 가 있었고, 32는 좀 다르지만 33은 31의 Upgrade 된 버젼이라고 보면 된다.

때문에 처음 시작할 경우 33 관련 자료가 별로 없더라도, 31 같은 경우 국내에 관련 서적이 몇권 있으니 참고하면

많은 도움을 받을 수 있다.  31과 33의 가장 큰 차이점은 동작속도와 매모리 크기 정도라고 보면 되기 때문에

31관련 지식을 습득 후 33의 데이터쉬트 등을 보면서 그 차이점만 이해하면 사용하는데 문제 없다고 본다.

뭐니뭐니 해도 33의 가장큰 장점은 실수연산을 정수연산처럼 겁나게 때려 박아도 정수형 DSP 의 처리 속도만큼

그 연산속도가 나온다는 것이라고 할 수 있겠다.  DSP 든 아니든 실수 연산을 정수 연산장치에서 원하는 속도로

수행하기 위하여 우리는 수없는 꽁수를 쥐어짜냈었고, 그 잔마리 굴리는 시간과 시행착오, 삽질 등을 생각해 볼때

33의 실수연산 처리는 너무나 달콤한 유혹이 아닐수 없다. 

하지만, 예쁜 여자친구를 사귀려면 수없는 스트레스를 감당해야 하는 것처럼, 실수연산이라는 미인계로 우리를

꼬시는 33을 데리고 살라면 많은 스트레스를 받아야 한다.  이 이쁜 녀석이 IQ는 높아서 두뇌회전은 빠른데

할 줄 아는게 아무것도 없다.  다시 말하면, 가지고 있는 것이라고는 달랑 32bit Timer 두개와, 외부인터럽트 몇개,

메모리 관리 능력정도...  아.. 내부램도 꽤 가지고 있긴 하다.

솔직히 말해서 이정도 스펙이면 로봇에 적용하기는 완전 꽝이다.  LED 하나 켜볼수 있는 IO 포트도 하나 없고,

UART 통신조차 못하고... 도대체 무얼 할 수 있단 말인가?

결론은 우리가 필요로 하는 모든 주변장치들을 이 녀석에게 붙여 주어야 한다는 것이다.  보통 아날로그쪽 파트는

전용 IC 를 매모리맵핑 시켜서 사용하고 디지털 파트는 FPGA 나 CPLD 등으로 로직을 구현하여 사용을 할 수 밖에

없다.  그렇다.  상당히 귀찮은 작업이 아닐수 없다.  하다못해 천원짜리 AVR 만 하더라도 LED 하나 켜볼라믄

땜하고 코딩해서 한시간이면 떡을 치는데 VC33.. 이 녀석은 LED 하나 켜볼라고 하려면 회로도 그리고, PCB 뜨고,

PCB 땜빵하고, 프로그래머블 디바이스에 IO 설계하고, 외부 플래쉬에 모니터 굽고, 코딩하고...........  기타 등등..

의 과정을 거쳐야 한다.  정말 토나오는 작업들이다.


나름 맨땅에 헤딩한답시고 VC33 을 이용한 DC 라인트레이서는 만든다는 시나리오로 시뮬레이션을 해보자.


우선 알고 있는 모든 루트와 수단을 이용하여 VC33 및 V31 에 관련된 자료를 모은다.  학교 도서관에 있는 31관련

서적을 두어권 빌려오고, Maze 홈페이지에 있는 33관련 모든 자료를 구해본다.  최근에 정환형님께서 DC카페에

회로도를 공개 해 주셨기 때문에 그것을 참고하면 금상첨화. 

개인적으로 부탁하여 모니터 프로그램까지 얻을 수 있다면 더할나위 없겠다.

책과, 데이터 쉬트와, 회로도 등을 보고 개념을 잡는다.  개념이 안서면 개념을 위한 노력을 아낌없이 한다.

어느정도 개념이 섰으면 내가 사용할 주변장치를 계획해 보자.  일단 센서 입력을 위한 ADC 를 선정해야겠다.

우리는 돈없는 학생이니 샘플 잘주고 종류 많은 TI 홈페이지에가서 ADC 를 검색한다.  검색하는 순간 당황스런

상황 발생.  제품이 너무 많다..  도대체 무엇을 써야할지 감이 안온다.  필터링을 위해 또다시 관련 학습을 시작.

ADC 와 컨트롤러 간의 Interface 방식을 보니 대충 페레럴, SPI, IIC 기타 등등이 눈에 띤다.  관련 용어를

공부하자.  그러면 IC 간의 병렬 및 직렬 연결에 대한 개념을 잡을 수 있을 것이고 각 통신방식에 대한 감을

얻을 수 있을 것이다.  VC33 에서 주변장치를 확장하기 위한 방법은 메모리 메핑 방식이다.  따라서 첫번째

필터로 Interface 방식이 병렬인 것을 골라 정렬해보자.   헉.. 하지만 그래도 많다.  이번엔 SAR 방식 변환이니

시그마델타 변환이지 하는 방법을 공부하고 맘에 드는 놈으로 필터링 하자. 그래도 많다.  이번엔 내가 어느정도의

해상도로 변환을 할 것인지 결정하고, 필터링..  이제 눈으로 대충 훑어볼 수 있을 정도의 컨버터가 보일 것이다.

그럼 내가 하드웨어 트리거 방식으로 쓸 것인지, 소프트웨어 트리거 방식으로 쓸것인지 정도만 결정하면

남는 것은 거의 한두가지... 내가 쓸만한 ADC를 찾은 것이다.  일단 ADC 선정은 여기까지.

다음은 디지털 주변장치를 위한 소자 선정이다.  정환형님 회로도를 보니 CPLD 가 사용되어지고 있다.

프로그래머블 디바이스로 FPGA 와 CPLD 가 있다고 하니 두가지의 차이점을 공부하고 CLPD 면 되겠다 싶어서

디바이스를 선택하는 단계이다.  대표적인 생산 업체를 알아보니 자일링스와 알테라라는 회사가 대세인득 하다.

동전 뒤집기를 해서 선택하던, 주변 지인들에게 개발 Tool 지원을 받을수 있는 쪽으로 선택하던 하나를 선택한다.

고구려에 사용된 CPLD 는 Altera 사의 MAX 계열인 7000 시리즈로써 매크로셀이 512개 들어있는 디바이스다.

주변을 보아하니 알테라 칩을 쉽게 구할 수 있을 것 같기도 하고 맥스플러스나 쿼터스 같은 EDA 도 구할수

있을 것 같으니 같은 모델을 선택하거나, 필자의 경우라면 새로운 라인업인 MAX2 계열의 EPM570 시리즈를

선택한다.  같은 패키지라면 MAX 계열보다 MAX2 계열이 두배 이상의 매크로셀이 들어있고, 가격도 저렴하며

Propagation Delay 도 적기 때문이다.  그럼 CPLD 의 선정도 결정을 하였다.

위와 같은 방법으로 UART IC 와 Regulator, Motor Driver 등등을 선정하여 필요한 아이템을 득 한다.

자, 필요한 사전 준비는 끝났다. 이젠 설계다.  로봇에 장착될 보드이니 PCB 제작이 필요하겠다.

OrCAD 도 좋고 PADS 도 좋고, 내가 편한 CAD 로 회로도를 그린다.  예쁘게 그린다.  그리고 각 CAD 별 관련

서적을 준비하여 Artwork 과정을 익히고 내 보드를 디자인 하고.. 설계가 끝나면 발주를 해보자.

이젠 PCB 도 생겼다.  그럼 땜을 하고, 오실로 스코프로 클럭 아웃을 찍어본다. 정현파 클럭이 나오면 성공이다.

롬라이터로 플레쉬를 굽고, 모니터가 뜨는지 확인이 되면 상당한 진척이다.  이제 디지털 주면장치 설계를 해보자.

필요한 디지털 주변장치를 따져보니, 엔코더 펄스 카운트를 위한 QEP 모듈과, PWM 생성 모듈, 디스플레이

장치 구동을 위한 I/O, 센서 구동을 위한 I/O 및 디코더, 가각의 주변장치 선책을 위한 메모리 디코더 등등이 필요

하겠다.  까마득 하지 않은가?  또 책을 보자.  1학년때 그토록 지겨웠던 디지털 공학 책을 빼들고 씹어먹자.

동기부여가 되었기 때문에 훨씬 재미있고 습득도 빠를 것이다.

기본적인 디코더와 I/O 만 설계 후 테스트를 완료하게 되면 그 기쁨은 처음 LED 구동을 해봤을 때 보다 더 크다.

이제야 쓸만한 제어 및 연산장치 준비가 다 되었다.  진정 VC33 의 위력을 느껴보기 위하여 디지털 필터를 구현해

보자.  또 막막한가?  그럼 신호처리 책을 보자.  필터의 종류를 공부하고 내가 원하는 필터를 구현하여 Matlab으로

돌려보자.  수업시간에는 먼 소린지도 몰랐던 돼지털 필터가 이렇게 쉽게 이해될 줄이야.. 싶을 것이다.

그럼 이제 Matlab 으로 구현한 소스를 C 의 문법에만 맞도록 약간의 수정을 하여 VC33 에 포팅 해보자.  정수형

연산장치에서는 감히 상상도 못할 상황이다.  하지만 원하는 결과는 널널하게 보여주는 VC33.... 감동하자.


뭐.. 일단 위와 같은 진행 사항을 겪어야 할 것이다.  토나온다.  아마도 이 글을 보고 있는 여러분은 VC33 에 대한

정내미가 뚝 떨어져 버렸을지도 모른다.  하지만 다시 생각해 보자.  내가 위 과정을 겪으며 무엇을 얻게 되었는지..


첫째, 이제 어디가서 ADC 에 대한 이야기가 나올때 상식 수준의 이야기라면 절때 꿀리지 않는다. 

또한 칩간의 통신방법도 어지간 하면 다 안다.

둘째, 전자공학 전공자임에도 불구 회로도 한번 Artwork 한번 안해본 학생들이 거의 다 인데 벌써 PCB 도 떠봤고
 
더군다나 CAD도 왠만큼 쓸 줄 알게 되었다. 

셋째, PLD 설계를 위한 준비를 하다보니 디지털 공학의 실력가가 되었으며, HDL 에 관한 경험도 생겼다. 

쿼터스 같은 EDA 도 쓸줄 안다.

넷째, 디지털 신호처리에서 중요한 필터를 설계해 보았고 Matlab 의 기본적인 사용법도 알게 되었다.

다섯째, DSP 및 주변장치의 구조가 내 머리속에 있다.  각각의 모듈을 테스트 해보겠다고 데이터 쉬트를 뒤적거릴

필요도 없으며 테스트된 모듈별 루틴을 합친다고 코드가 꼬일 일도 절대 없다.  그냥... 생각나는 대로 코딩하면

다............ 된다.


이 얼마나 알흠답지 아니한가.



2편 끝.     3편에 계속....

2007년 10월 15일 월요일

로봇에 사용할 DSP 선택하기 [1편]

몇몇 학부 후배들이 이제 전시회도 끝나고, 주행로봇을 제대로 시작 해 보겠다고 한다.  뭐부터 시작하면 좋겠냐고

물어보길래 제대로 할라믄 DSP 를 써야 할 것이고 그러기 위해서 DSP 가 무엇인지, 범용 MPU 등과의 차이는

무엇인지, 어떤게 쓸만한지, 무었을 쓸것인지 등등을 정리해 보라고 하였다.  기특하게도 두어명이 나름 공부하여

정리 해 놓은 것들을 보았다.  하지만 안타깝게도 참신한 자료는 하나도 없드라... 

그네들이 접하고 공부하고 인용하여 정리한 자료는 거의 99%가 싱크워X 라는 회사의 홈페이지에 올라와 있는

자료였다.  나 역시 처음 DSP 를 시작할때 거의 유일하다싶이 자료를 얻을 수 있었던 곳이었고, 유용한 자료가

상당히 많은 곳이긴 하다.  회사의 CEO 로 계신 백 이사님께서 상당히 열성적으로 자료를 구축 해 놓으셨고

수년이 지난 지금 국내의 여느 커뮤니티 보다 많은 자료를 보유하고 있는 곳이기도 하다.  이런 커뮤니티의

존재에 대하여 참 고마움을 표하고 싶기는 하지만 개인적으로 몇가지 불만을 가지고 있기도 하다.

이 회사의 주력은 TI사의 28계열 DSP 의 개발모듈을 개발하여 판매하는 것과, 이를 이용하는 기업 및 기관을

상대로 유료 기술지원 등을 하는 것이다.  때문에 자사의 제품을 부곽시키기 위하여 28계열이 아닌 타 DSP 를

평가절하 하거나 고가의 개발장비를 소유하지 못한 학생들에 대한 기술지원이 엄청 소홀하다는 느낌을

지울수 없었다.  일례로 몇년 전(281x 가 막 번창하고 있을 때. 280x 는 출시 전.) 백 이사님과 식사를 하면서

나누던 대화 중... VC33 에 대한 견해를 들었는데 33을 완전 쓰레기 취급 하더라는......  -_-;;;

홈페이지의 자료를 보면 정수형 프로세서를 홍보하기 위하여 실수형 프로세서를 엄청나게 까고(?) 있는 모습도

어렵지 않게 볼 수 있다.  곧 TI에서 FPU를 탑재한 283x DSP 가 정식 출시 될 것이고 EV Board 를 제작하여

판매를 개시 할 때... 과연 제품 홍보를 어떻게 할 지... 사뭇 기대된다..


사설이 길었다.  본론으로 넘어가고자 한다.

노파심에 한마디 더 하자면 본 글은 불특정 다수에게 은근히 보이기 위한 글이지만 읽는 이로 하여금

"뭐여.. 누굴 가르치려 들어?" 라는 말을 들을 수도 있는 글이라고 생각한다. 

어투나.. 뉘앙스 부터가 그렇다고...  본인도 생각한다.. -_-;; 

하지만 제말 오해하지 말아 주시길 간절히 부탁드린다.  절대 그런 의도가 아닌, 불특정 다수를 절친한 후배로

가정하고 경험을 공유하기 위하여 쓰는 글임을...


필자는 뭐 이렇다 할 경력도 없고, 내새울만한 기술을 보유하고 있는 것도 아니지만 나름 자부하는 것이 있는데

취미삼아 이것저것 여러 MPU 및 DSP 를 다뤄 보았다는 것이다.  특정 솔루션을 개발한다기 보다는,

단지 호기심에 의한 경험이었고, 쉽게 접할 수 있는 녀석들이라면 닥치는대로 입수하여 개발 환경 구축 및

간단한 장난감을 만들어 보는 것이 대학시절 큰 즐거움이였다. 

사용해본 녀석들을 지금 생각나는대로 적어보면 8051(MCS-51)부터 시작하여

80c196(MCS-96), AM188(x86), 80c186(x86), 80c296(MCS-96), ATmega 시리즈, H8 시리즈,

S3C3410(ARM7), S3C2410(ARM9), Strong-ARM, TMS320VC33, TMS320LF2407A, TMS320F2812, TMS320F2808

등이 있다.  DSP의 경우 TI 사의 제품만 사용해 봤다는게 지금도 참 아쉽다.  본 글은 DSP 선택에 관한 글이므로

위에 언급한 TI 사의 C2000 계열에 한해서 내용을 진행 하려 한다.  DSP 가 뭐니, 곱의 합이 어쩌니 하는 원론적인

이야기는 관련된 아주 좋은 자료가 많이 있으므로, 경험에 의한... 특히 로봇에 적용할 녀석을 선정할때의, 각각의

장단점 등을 서술해 보겠다. 

지극히 주관적인 견해가 깔려 있으므로 태클은 걸지 마시길 바라고, 단지!! 참고만 하시길...


후배들이 정리 해 놓을 것을 보니, 각 DSP 들의 특징 및 장점들만 쭈르륵 나열 해 놓고 더 좋은 수식어가 붙어있는

DSP 를 선택하고자 하는것을 볼 수 있었다.  틀린 이야기는 아니지만 그런 식의 선택은 향후 약간의 후회를 야기

할 수 있다고 말 해 주고 싶다.  여러가지 상황이 발생 할 수 있지만 지금 생각나는 한가지 예상 상황을 들어보자면

이놈들은 281x 에 비하여 280x 의 주변장치가 더 성능 향상 되었다는 말에 다들 트레이서에 2808을 쓰겠다고 한다.

훌륭한 선택이다.  단지 스펙만 놓고 따져보면 꿀릴것 하나없고 퍼포먼스 죽여준다.  하지만 오래전 2808 로 마우스

를 만들기 시작할때, 한정된 내부 메로리만을 사용하여 모터 제어기의 게인값을 튜닝하거나, 센서 데이터를 분석

하면서... 옆에서 2812로 작업하는 다른놈이 그렇게 부러울 수 없었다.  난 기껏해야 3초 데이터를 분석할때...

이놈은 수십초 데이터 뿌려놓고 편하게 작업하드라... 뭐.. 이런 상황을 이야기 해주고 싶다.


약 십몇년전 부터 몇년 간 한국에서 가장 인기 좋고 사용자층 두껍고 가장 많이 팔렸던 MPU 중의 하나가 80c196

이었다.  워낙 제품 컨셉 자체가 모터 제어용이였고, 알맞는 주변장치가 쏙쏙들이 들어 있었기 때문에 마우스나

트레이서에서 196을 찾아보기란 어렵지 않았다.  당대의 마우스나 트레이서의 80~90%는 196을 썼었을 것이라

생각된다.  하지만 그 많은 사용자들이... 196의 스펙을 보고 '아 딱 이거네' 라고 탄성을 외치며 196을 사용한

것이라고는 생각하지 않는다.  나는 그 많은 사용자가 196을 선택하게 된 가장 큰 이유는(그들의 자의던 타의던..)

권영철님의 마이크로마우스 '길벗' 이 있었기 때문이라고 생각한다.  길벗의 주행은 당시 마우스계의 센세이션을

불러 일으켰고 감사하게도 권영철님께서 당시 하이텔 디동(디지털 동호회)에 회로라던지 소스를 공유해 주신 덕에

많은 이바닦 선배님들께서 의심없이 믿고 선택하여 사용하게 된 것이 196이다.  지금은 196의 자리를 128에 넘겨

준 상황이 되었지만 당대를 풍미하던 196 마우스보다 잘가는 128 마우스는 손에 꼽히는 정도인 상황을 볼 때..

단지, 길벗이 사용하고 동아리 선배가 사용하였기 때문에 나도 사용한 196은.. 정말 훌륭한 선택이었던 것이다.

만약 길벗에 사용한 연산장치가 Z80 이나 V55 나... H8 이었다면.. 196이 아닌 그것들이 대세였을 것이라는것을

믿어 의심치 않는다.  실제로 일본의 경우 Z80과 V55 의 시대를 거쳐 노리꼬등의 일류 마우스가 H8 계열을 사용함

에 따라 지금까지도 많은 매니아들이 H8 계열을 사용하고 있다.

같은 이유로 고려대 두둥, 콰광에 사용되었던 AM188 이 로봇에 주류를 이뤘을 때가 있었고, 호서대 화랑이나

부유 등에 사용한 296, 아주대 제어만세와 단국대 혜성, 인천대 마마2005 등에 사용된 S3C3410(ARM7) 도

지금까지 훌륭한 연산장치로 사용되어지고.. 기억되고 있다..

또다시 삼천포로 빠지는 듯한 이런 이야기를 떠벌떠벌 하고 있는 이유는... 다 들 느끼셨겠지만.. 당대의 훌륭한

로봇 제작자 분들이 사용하였던 연산장치는 의심의 여지가 없이 '나'도 사용 할 만한 연산장치이고, 사용했을때

좋았으면 좋았지 후회는 안한다는 것이다.  당대의 히어로이신 선배들이 충분한 고민과 시행착오를 거치며

선택된 최고의 아이템들인 것이다.  이제 DSP 한번 써봐야지... 라고 생각했다면... 뭘 사용하지? 라는 고민에

몇날며칠 고민하지 말고, 오늘날 지존 득 하신 분들이 무엇을 사용하는지 부터 알아보자.  조금만 찾아보면

알 수 있고, 모르겠으면 물어보자.  내가 알고 있는 한 안가르쳐 주실분은 한분도 없다.


그럼 오늘날 지존 득 하신 분들은 무얼 쓰시나... 알아보자. (다들 DSP 를 사용하고 계신다.)

감히 이런 허접한 글에 성함조차 올려드리기 죄송스러운... 몇몇 분들이 있다.

마우스에 지존 득 하신 단국대 MAZE 황하윤님. 

현재 마이크로마우스 고구려 시리즈로 미국대회 석권... 한국대회 석권... 마지막으로 올해 11월달에 있을

일본대회만 석권하시면 마우스계의 그랜드 슬램을 달성하는... 명예의전당에 입성할 황하윤님은

고구려 이전의 HH2 시절까지 VC33 을 사용하시다가 현재 고구려에는 TMS320F2808 을 사용하고 계신다.

트레이서쪽에는 모두들 아시다 싶이 지존 득 하신 두분이 계시는데 시립대 제틴 출신의 조세형 님과 단국대 MAZE

출신의 김정환 님.  조세형님의 경우 CC9900 에 TMS320F2812 를 사용하고 계시고 김정환님의 경우는 트레이서

고구려에 TMS320VC33 을 사용하고 계신다.


뭔가 삘이 팍 오는가.  (당연한 이야기지만.. 저런 DSP 를 쓰셨기 때문에 지존 득 하신건 절대 아니다.)

TI 사에서 나온 28x 계열의 DSP 는 기본적인 DSP 기능(연산) 은 기본이고 거기다 다른 반도체 회사의 DSP 와는

차별화를 두어 제어용으로써 다양한 주변장치를 탑재한.. 로봇하기에 정말 구미가 당기게 만든 DSP 이다. 

196의 컨셉과 비슷하게 모터 제어에 최적화 되어 설계된 연산장치이기 때문에 관련 주변장치가 모두 내장되어있고

어떤 모터든 제어가 용이하게 구성되어 있다.  브러쉬형 DC 모터는 물론이거니와, 오히려 BLDC 에 더욱 최적화

되어 있다는 느낌도 받는다.  그러니 우리내가 만드는 로봇에 왜 안쓰이겠는가.


진짜 본론으로...  -_-;;;

위에 언급한... 대표되는 세가지의 DSP (TMS320VC33, TMS320F2812, TMS320F2808) 의 특징을 경험에 비추어

정리해 보려고 한다.  2812의 경우 비교적 많은 사용을 해보지는 않았지만 TMS320VC33과 TMS320F2808으로는

나름 마이크로마우스를 만들어서 입상한 경험이 있기 때문에 믿으셔도 좋으리라 생각된다.


1편 끝.  (결국 본론은 하나도 없다는... -_-;;;)  2편에 계속..

2007년 10월 7일 일요일

THE 28th ALL JAPAN MICROMOUSE CONTEST

 
  일시 : 2007년 11월 16일 ~ 18일
  장소 : Tsukuba International Congress Center (EPOCHAL TSUKUBA), (Takezono, Tsukuba, Ibaraki)
  참가신청 : 10월 15일 까지
  영문 홈페이지 : http://www.robomedia.org/directory/en/mouse-e.html

  올해있을 전일본 대회 공지가 떴다..
  작년과 마찬가지로 동경이 아닌 다른 도시...  젠....

  시립대 상품으로 3명, 단국대에서 서너명, 태준형과 회사분들 세분, 제틴 몇명....
  역대 가장 대규모의 원정단이 될 듯 하다..  대략 십여명이 넘어설 듯...

  갈 수 있을까...?
  간다는 전제로 준비 하련다.. 못굴려도 간다.
  하지만 두개의 과제 평가가 그때쯤 이라는거... ㅎㅎㅎㅎ;;;;

  한국세 스고이가  난발하는 대회를 기대한다.