EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 4명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

임베디드! - 헉.. 보드 디버깅
글쓴이: EzDoum 글쓴날: 2004년 08월 01일 오전 02:55
하드웨어



주말내도록 보드랑 씨름했다.

이제까지 작업하던 보드는 개발 버젼 2.0인데 이번주 목요일날 양산용인 버젼 3.0 보드가 나와서 새로운 보드에서 기틀을 잡기 시작했다.

저번에는 이미 상당부분 진행된 보드에서 cpu동작 상태 확인, max232칩, flash 칩 달기에서부터 시작을 했었는데 이번엔 정말 맨땅부터 시작했다.

pcb 뜨고 나서 이것 저것 pcb에 칩을 장착해서 내가 실제로 작업을 시작한 것은 금요일 오후 늦게이다. 이번에 나온 3.0 보드는 지난번 보다 크기가 콤팩트 해지고.. 영상처리 칩 변경, pld대신에 처음 접했던 altera cyclone fpga가 사용되었다. ( 쿼터스를 써야 한다)

보드를 처음 받으면 무엇부터 일이 시작되는고 하면 우선 전원부 부터 점검을 시작한다. 입력으로 들어오는 전원은 그리 깨끗한 전압도 아니고 또 극성이 바뀌어서 들어 오거나 회로 내부에서 사용하는 전압은 5볼트 3.3볼트 1.2볼트 등이 사용되어서, 감압이 필요하다.

요것을 한번에 깔끔하게 처리해주는 것이 레귤레이터 이다.
필요한 전압이 총 3종류이고 또 아날로그 신호를 처리하는 3.3v와 디지털 신호를 처리하는 3.3v이렇게 나뉘어져 레귤레이터는 총 4개가 사용되었다.
오실로스코프로 각 레귤레이터 1번핀과 3번핀을 찍어보니 전압이 감압되고 정류가 되는 것이 보였다. (브릿지를 사용해서 전압이 입력이 반대로 들어와도 회로가 보호되는 것도 확인했다.)

참고로 5볼트는 rs232관련 max232칩으로 들어가고 3.3볼트는 회로 전체에서 사용되며 1.2볼트 전원은 blackfin 코어전압과 cyclone에 공급된다.

아차차 1.2볼트를 만드는 녀석은 레귤레이터가 아니라 tps76801이란 ic인데 요넘은 출력핀 1,2에 저항비율을 다르게 하면 다양한 전압이 1.2~5.5볼트 까지 생성이 가능했다.

그리고 나서 한 두번째 일은 보드 전체에 핀의 교통 정리를 담당하는 cyclone fpga를 프로그래밍을 시작했다. 요넘은 io핀이 많이 달려있고 프로그래밍으로 핀간의 연결이 가능해 하드웨어의 유연함을 높여주는데 큰 역할을 한다. 코딩으로 보드의 각핀에 신호를 공급하거나 로직을 넣을 수 있다니.. 세상 참 좋지 않은가 ㅎㅎ

하지만 이 편리함 뒤에는 복잡한 부가 지식이 필요했다. 우선 생소한 쿼터스II 프로그램을 익혀야 한다. 이전에 dsp코딩은 visual studio랑 닮은 visual dsp++라 쉽게 익혔지만 요넘은 vhdl이나 verilog를 코딩하는 거라 문법도 다르고 동작하는 방법도 달라 황당함 많이 남았다. 잘 모르는 녀석을 접하니 당연히 쏟아지는 궁금증에 호기심 충만!!

cyclone 칩에 프로그래밍을 할려면 pc와 인터페이스를 해야 하는데 이때 사용하는 것이 byteblaster란 놈으로 프린터 포트를 사용해 데이터를 써 넣는다. 아 그리고 cyclone이랑 byteblaster와는 바로 연결 되는게 아니라 중간에 다리역할을 하는 epcs1란 칩이 사용된다.

그런데 처음부터 순탄치가 않았다. byteblaster를 연결하고 쿼터스에서 디바이스가 감지 되어야 하는데 지대루 안되는 것이다. 왜 안되나... 전압이 문제 였다. 즉 칩에 공급되는 전압이 낮아서 동작을 안했다. blackfin 코어에서 1.2볼트를 사용해서 1.2볼트 전압을 cyclone에도 넣었는데 datasheet에 의하면 cyclone은 1.5볼트를 원했다. 의심이 가는 것은 요것 뿐이라서 아까 가변 전압을 만들던 칩에 r1/r2저항의 비율르 바꾸어 fpga로 들어가는 전압을 1.4볼트 정도로 맞추어 주었다. 나는 1.4볼트로 올리면 blackfin은 어쩌나 했는데 다행이 둘다 잘 동작을 했다.
(음.. 잘 동작하는게 아닐지도 모른다.../ 오늘 fpga를 셋팅하고 blackfin 테스트 코딩을 해봤는데.. 환장할.. 안됐다..)

칩은 인식이 되어서 byteblaster를 동작은 시켰지만 fpga에 제대로 다운로드가 되는지가 의심이 되었다. 테스트로 fpga의 특정 io핀을 low/high로 셋팅해보았는데 감감 무소식 --; 다시 점검에 들어 갔다. 급하게 설계를 해서 그런지 pcb에 실수가 많았다. fgpa의 칩을 활성화 하는 chip enable신호와 epcs1의 연결상태등 약간의 레이아웃 버그가 있었다. 원인은 간단하게 글 한두줄이지만 이것 때문에 금요일 12시가 넘게 까지 삽질했다 --;

여기 까지가 금요일날 한것이고;;

오늘 날씨 진짜 더웠다. 차를 타고 한대 앞으로 가는길이 어찌나 더운지 차는 땡볕에서 적당히 열을 받은지라 에어콘을 틀어도..(3단) 덥근 마찬가지.. 토요일 1시라 다른 분들은 다 들어가고 사무실엔 사람이 적었다.

어제 까지 fpga를 셋팅했으니 이제 dsp인 blackfin을 살리고 영상처리 칩에 초기화 명령을 주어서 영상 처리 칩도 활성화 해보는 것이다.

영상처리 칩은 전엔 기능이 많은 techwell 2824를 사용했지만 이것 대신에 필립스에서 나온 입력받는용, 출력하는 용 각각 두가지 종류의 칩을 사용하는데 이전의 텍웰칩은 이번 프로젝트에 사용하기엔 기능이 좀 많았다. 입력이 4개 까진가 되고 출력은 2개에 모션디텍트 등등 해서 크기도 크고 열도 제법 났다. 하지만 이번 필립스 칩은 두개 이기는 하지만 크기는 키보드 글자 한글자 크기 정도이어서 칩위에 써있는 글자도 잘 안보였다

요넘은 I2C란 프로토콜로 명령을 주어서 초기화나 동작을 설정하고 8개의 데이터핀에서 스트림 형태로 영상정보가 디지타이즈되어서 흘러나오거나 흘려 보내면 아날로그 영상신호를 만들어 냈다.

i2c.. 요것 역시 생소하다 이름은 들어봤지만 spi나 ppi도 마찬가지. 역시나 처음 사용해 보는데, 컴통시간에 배운 지식이 유용하게 작용하는거 같다. high상태로 있다가 로우로 떨어지기 시작하면 두개의 신호선으로 신호를 시리얼하게 보내서 ack/nack를 받으면서 커맨드를 날리는 구조였다. 큰틀을 이해 하고 나니 프로토콜에 관한 문제이어서 그리 복잡해 보이지는 않았다. (다른 프로젝트에서 사용한 소스들도 이해에 도움이 되었다)

자 i2c를 사용하려면 blackfin부터 기동을 해봐야 하는데 이거..역시 만만치가 않았다. 칩이 부팅하는 방법이 여러가지가 있는데 bmode란 핀이 두개가 나와있고 00,01,10,11 4가지 서로 다른 모드를 사용했다. blackfin 내부에도 롬이 있어서 00으로 하면 외부의 도움없이 운영이 가능했고 01,10으로 하면 외부의 flash나 ep롬으로 부팅이 가능하고 11로 하면 spi를 지원하는 다른 디바이스로 부터 부팅이 가능하다. bmode는 어제 작업한 cyclone과 연결되어 프로그래밍으로 활성화가 가능했다. 내가 사용하는 것은 외부 롬으로 부팅하는 01모드로 fpga를 프로그램 했다.

--; 난 또 울었다. 안된다.. 원인은 역시나 pcb 버그로 bmode가 제대로 연결이 안되어 있고, reset신호도 불량했다. 쩝.. 우선 bmode부터 처리했는데, 강제로 01을 만들어 주었는데 0은 그라운드에 연결을 하고 1이 들어가야 하는 핀은 vcc에 연결해서 해결하고 blackfin의 리셋컨트롤도 설정했다.

자 이제 다음 단계로 넘어갔다. cpu의 동작을 확인하는 것으로 들어갔다. 가장 좋은 방법은 적당한 클럭이 들어오면 led를 깜빡이는 것으로 이제 이것을 할수 있는 단계에 이르렀다. 이전 까지는 스코프와 경험으로 디버깅을 했는데 램프로 동작을 확인하는 상태에 이르렀다. ( 다음엔 rs-232를 연결해서 콘솔로 printf로 디버깅하는것 이쯤되면 rs-232만 있는 것도 얼마나 황송하던지..) 다 정상인데 어드레스2번핀이 이상했다. 다들 up일때 3.2볼트 정도 나왔는데 어드레스 2번만 1볼트 정도 나왔다.

이것은 어디와 합선이 된것이라면서 어드레스 2번과 연결된 부위를 점검했다. cpu 자체, 부팅롬, flash, sdram, fpga 이렇게 사용하는데 추적을 해보니 fpga와 문제가 있었다. 이전의 bmode가 이상한것과 연관이 있었는데 pcb 작업을 한사람이 bmode핀을 어드레스2번과 연결해버린듯 했다. 뭐 bmode는 접지와 vcc로 바로 연결했으니 fpga의 신호를 끊으면해결 될 문제이다..

여기 까지 해서 부팅되어서 롬 에뮬레이터로 프로그래밍 하고 롬에서 부팅하는 것 까지는 확인을 했지만 뭔가 또다른 문제로 아직 blackfin에서 프로그램 동작은 확인 못했다..


휴... 소감.. 이게 적고 싶어서 이렇게 글을 써댔는지 모르겠다. 일딴 너무 안개속이다.. 사람들이 이래서 중간에서들 많이 포기 하나 싶었다. 하지만 문제가 해결되면 얻는 성취감이나 또 과정 과정마다 알아가는 재미가 솔솔하다.

내일은 푸욱 쉬고 월요일 부터 다시 매달려 볼 참이다.. 아샤샤.. 화이팅!


[분류: 하드웨어 인쇄용 페이지 본문 email로 보내기 ]

<  프린터 드라이버 임시 | 임베디드! - 동작감지를 위한 영상처리  >
임베디드! - 헉.. 보드 디버깅 | 답장: 3개 | 본문에 답장
정렬 :  
답장 EzDoum 2004년 08월 01일 오전 11:00 [ 이글에 답장 | 본문에 답장 | 책갈피 ]
@@ http://www.analog.com/processors/resources/technicalLibrary/appNotes.html

@@ http://www.altera.com/literature/lit-cyc.jsp


ADSP-BF533 Blackfin Booting Process Application Note (EE-240)
http://www.analog.com/UploadedFiles/Application_Notes/173397137EE240v01.pdf


Cyclone Device Handbook (Complete Two-Volume Set)
v1 Chapter 13. Configuring Cyclone FPGAs
http://www.altera.com/literature/hb/cyc/cyc_c51013.pdf

v1 Chapter 14. Serial Configuration Devices (EPCS1 & EPC4 Data Sheet)
http://www.altera.com/literature/hb/cyc/cyc_c51014.pdf

v2 Chapter 2. Cyclone EP1C3T144 Device Pin Information
http://www.altera.com/literature/hb/cyc/cyc_c52002.pdf


[수정]

답장 EzDoum 2004년 08월 04일 오후 11:10 [ 이글에 답장 | 본문에 답장 | 책갈피 ]
i2c를 잘 정리해논 사이트 (한글)
http://nohbg.hihome.com/i2c_bus/i2c_bus.htm
[수정]

답장 EzDoum 2004년 08월 08일 오후 12:55 [ 이글에 답장 | 본문에 답장 | 책갈피 ]
http://users.telenet.be/educypedia/electronics/I2C.htm


[수정]

임베디드! - 헉.. 보드 디버깅 | 답장: 3개 | 본문에 답장
정렬 :  

답장 쓰기
글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

검색
Google

분류
·공지 (6)
·인터넷 (87)
·하드웨어 (260)
·C/C++ (65)
·어셈블리 (7)
·리눅스 (136)
·리눅스 커널 (67)
·윈도우즈 (25)
·데이터베이스 (20)
·보안 (16)
·.NET (25)
·그래픽 (13)
·책소개 (42)
·호기심 천국 (80)
·잡담 (111)
·사랑 (3)

전체 본문수: 963
전체 답장수: 525


분류 : 하드웨어
최근글
최근글
가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
뜨거운 감자
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

EzDoum투표
이지도움 어때요?
이게 뭐야. 다시 안올란다. --;
아이 좋아라~ +_+;
관심없다.
먼가는 있는거 같은데 뭐하는 곳이지?
기타 (자유게시판에 글로 남겨 주세요)
[ 결과 | 투표 ]

랜덤 링크
http://kldp.net


 Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
 Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum