티스토리 뷰
출처 : http://muosys.egloos.com/198883
오늘은 잠깐 곁가지로 새서, EEPROM에 펌웨어를 구워보자.
이제까지 우리는 작성한 펌웨어를 EZ-USB Control Panel을 써서 CY7C68013으로 다운로드 해 왔다.
하지만 이러한 방법은 개발할 때에나 쓸 수 있는 것이고, USB장치를 사용할 때마다 사용자더러 이렇게 번거로운 절차를 행하라고 시킬 수는 없는 일 아닌가?
따라서 펌웨어를 EEPROM에 구워 넣고, 장치를 USB 포트에 끼워 넣으면 바로 우리가 코딩한 펌웨어에 따라 동작하는 USB 디바이스로 인식되게끔 만들어 보자.
먼저 EEPROM의 시작번지 첫 두 바이트에 0xFF 0xFF를 써 주어야 한다.
요 짓을 왜 하느냐 하면 아래에 설명하겠지만, EEPROM 이미지(xxx.iic 파일)를 EEEPROM(24LC64)에 써 넣는 일도 EZ-USB Control Panel을 사용해서 하는데, 만약 첫 두 바이트가 0xC0 0xXX 요렇게 이미 세팅되어 있다면 EZ-USB Control Panel이 '아! EEPROM이 이미 프로그램 되어 있구나' 하고 알아차리고는 덮어쓰기를 거부해 버린다.
따라서 EEPROM을 굽기 앞서 이 두 바이트를 지워주는 절차로서 “0xFF 0xFF”를 써주는 것이다.
자 어떻게 하는냐?
EEPROM이 소켓에 잘 끼워져 있는지 확인부터 하시라.
끼워져 있는가?
그럼 빼시라. ㅋㅋㅋ
(Tip. 처음 새 EEPROM을 끼울 때에는 접촉불량이 생길 수 있으므로, 그냥 세네번 끼웠다 뺐다를 반복해 주시라. 다리가 휘지 않도록 조심 하면서. 핀셋으로 하면 캡숑 좋다.)
EEPROM을 “뺀” 상태에서 UniHigh 보드를 USB 포트에 꼽는다.
그리고 나서 EEPROM을 끼워라.
이제 EZ-USB Contrrol Panel을 연다.
먼저 EZ-USB Contrrol Panel의 “Download” 버튼을 누른다.
C:CypressUSBExamplesFX2Vend_ax 폴더의 Vend_Ax.hex를 선택해서 다운로드한다.
Array
아래와 같이 세팅하고 “Vend Req” 버튼을 누른다.
이제 24LC64의 첫 두 바이트가 지워졌다.
이제 리셋버튼을 누르거나 USB 포트에서 분리 후 다시 장착해서 장치관리자를 들여다 보자.
위와 같이 나오면 EEPROM이 잘 초기화 된 것이다.
이제 EEPROM을 프로그램 할 차례이다.
EZ-USB Contrrol Panel의 “EEPROM” 버튼을 누른다.
굽고자 하는 펌웨어의 iic파일을 선택해 준다.
확인을 누르면 프로그램이 한 10초정도 응답이 없다가, 다 구워지면 커서가 깜빡거린다.
리셋버튼을 누르거나 USB 포트에서 분리 후 다시 장착해서 장치관리자를 들여다 보자.
우리가 짠 펌웨어대로 장치가 나타날 것이다.
이제는 우리가 만든 USB 디바이스를 아무 컴터에나 꼽기만 하면 인식이 될 것이다.
(물론 드라이버가 깔려있거나, 깔아야 하고, 테스트 프로그램도 있어야 하지만…)
사족.
펌웨어 소스를 빌드한 결과물은 hex파일이고, EEPROM이미지는 iic파일이다.
hex파일을 iic파일로 바꾸어주는 툴은 c:cypressusbbin 폴더의 hex2bix.exe이다.
이 hex2bix.exe를 사용한 예는 Keil u-Vision으로 예제 프로젝트를 열고, ( 왼쪽 창에서 “Target 1”이 선택된 상태에서) 메뉴의 Project->Options for Target “Target 1”을 선택한 후에 “Output” 탭을 선택하면 아래와 같이 볼 수 있다.
UniHigh 펌웨어와 BulkLoop 펌웨어의 세팅을 비교해 보시라.
hex2bix를 실행시킬 때 파라메터가 어덯게 다른지.
디바이스 디스크립터의 VID와 PID를 바꾸면 이 파라메터도 같이 바꾸어 주어야 한다.
'Hardware' 카테고리의 다른 글
GPIF를 사용한 Bulk In (0) | 2008.04.01 |
---|---|
두번째 Bulk In (0) | 2008.04.01 |
Bulk Out Pipe(PIPE 01)를 통해 디바이스로 데이터 전송하기 (0) | 2008.04.01 |
IN Setup & 버튼(메시지) 받기 (0) | 2008.04.01 |
UniHigh v2.1 & v2.2 와 드라이버 업데이트 (0) | 2008.04.01 |
- Total
- Today
- Yesterday
- console
- C#
- Information Processor
- Embedded System
- Military
- WDB
- Linux
- 나비효과
- Network Inspector
- win32
- diary
- 막장로그
- 프리랜서로 살아남는 법
- Life News
- 야마꼬툰
- Assembly
- Tech News
- 짤방 및 아이콘
- Reverse Engineering
- network
- Mabinogi
- Web Programming
- Battle
- medical
- 3D Engine
- cartoon
- humor
- wallpaper
- BadCode
- USB Lecture
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |