AHAV9302보드의 MCU는 시리얼 다운로드를 지원한다. 그래서 JTAG 장비를 사지않더라도 저렴한 시리얼 케이블로 바이너리파일을 다운로드 할 수 있다.
엄마 몰래 리눅스 포팅강좌에는 u-boot에 대한 다운로드 방법이 간단해서인지 다운로드에 대한 자세한 사항이 없다. 그래서 직접 u-boot를 다운로드 해보기로 하였다.
(아마도 기본적으로 순대국밥님께서 미리 u-boot, uImage, rImage를 미리 다운로드 해놓아서 그런지도 모르겠다)
우선 본인은 VMWARE에서 우분투 9.04에 커널 2.6.28-14-generic를 사용하고 있다. 그리고 USB to SERIAL 컨버터를 사용하여 보드와 연결해서 사용중이다. 초기 다운로드는 랜으로 다운로드 할 수 없고, 무조건 시리얼 다운로드만 사용된다.(물론 JTAG는 제외된다)
기본적으로 설치되어 있는 NOR 메모리의 내용을 지워보기로 한다.
1. $minicom
본인은 USB to SERIAL를 사용하고 있으므로 minicom의 설정을 바꿨다. 우선 USB to SERIAL를 연결하면 자동으로 시리얼 장치로 인식이 되었다. 그리고 $ls /dev|grep USB를 해본 결과 ttyUSB0으로 나타났다. ttyUSB0을 사용하여야 하므로 minicom에서 CTRL-A O를 눌러 설정화면으로 들어간다. 그리고 Serial port setup를 선택하여 설정을 하였다. A - Serial Device에 있는 값을 /dev/ttyUSB0을 변경한다. 그리고 E - Bps/Par/Bits를 선택하면 다시 Speed를 설정할 수 있는데 115200으로 선택한다. 그리고 저장을 하고 설정화면을 빠져나간다. 이로써 기본적인 minicom에 대한 설정은 마쳤다.
보드를 리셋하게 되면 기본적으로 u-boot가 동작을 하게 되고 임베디드 리눅스를 부팅한다. 하지만!! NOR 메모리의 내용을 지우고 처음부터 다운로드하는 과정을 하기로 하였으므로 리셋을 하고 난 뒤 Hit any key to stop autoboot 부분에서 아무키나 눌러서 부팅을 멈추고 u-boot로 들어간다.
2. AHAV9302> protect off 60000000 60ffffff
3. AHAV9302> erase 60000000 60ffffff
u-boot, uImage, rImage부분을 protect on 되어 있으므로 NOR을 지우기 위해 protect를 해제한다. 그리고 NOR 모두를 지운다. 16진수 값으로 저 범위의 값은 0x1000000이다. 이는 16MB의 값을 가지므로 NOR을 모두 보호해제하고 지운다는 뜻이 된다. 이제는 리셋을 해보아도 부팅이 되지 않는다. 왜!! 모두 날라가 버렸기 때문이다.
지금부터 u-boot의 시리얼 다운로드를 해보기로 한다.
http://arm.cirrus.com/files/index.php?path=download/ 에서 Download_1-0-5.tar.gz를 다운로드 받고 압축을 풀자. 하위 디렉토리에 리눅스용 download가 바로 시리얼 다운로드 툴이다.
4. $./download -p USB0 u-boot.bin
본인은 USB to Serial을 사용하므로 -p 옵셥을 붙여서 포트를 따로 설정해주었다. 그리고 u-boot.bin은 당근이 강좌에 있는 u-boot, kernel, ramdisk 이미지입니다라는 글에 있는 base.zip을 받아서 압축을 풀어보면 그 안에 있다.
위의 명령을 실행시키면 USB to Serial 포트를 확인 한 뒤 시리얼 다운로드 모드가 될 때까지 기다리게 된다. 보드에 있는 BOOT버튼을 누르고 /POR버튼을 누른 뒤 떼면 다운로드를 시작한다. 혹시 동작하지 않으면 보드의 전원을 끄고 다시 연결해서 재시도해 본다.
엄마 몰래 리눅스 포팅 1
2009. 7. 30. 12:28