포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.

삼성에서 제공하는 u-boot 에는 dnw 라는 명령어가 포팅되어 있습니다.


타겟보드를 USB device 케이블로 연결한 다음 u-boot 상에서 dnw 0xc0008000

와 같이 입력해주고, Windows XP에서 DNW.exe 프로그램을 실행해서 필요한 파일을

밀어 넣어주는 형식입니다.


Windows용 DNW.exe 프로그램이 리눅스용으로도 포팅되어 있는데 이름이 smdk-usbdl 입니다.


이걸 fork() 함수를 써서 daemon 모드로 동작하도록 고쳤습니다. smdk-usbdl 프로그램을 매번 실행할 필요 없이 한번만 실행시켜 놓고 TFTP를 사용하던것 처럼 이용하실수 있습니다.


동작은 잘 됩니다만, 몇가지 고쳐야 될점은 다음과 같습니다.


1. u-boot 에서 dnw 명령을 내린후 잠시 기다려야 합니다. cpu를 많이 잡아먹길래 몇군데 sleep() 함수를 썼더니 그렇군요.

2. 프로그램을 실행시키면 깨진 문자열들이 출력됩니다. 디버깅 못했습니다. 보기 싫으신 분은 일단 > /dev/null 붙여주세요.

3. fork() 함수를 사용한 위치를 잘못 잡은것 같은데 usb 벌크 장치는 써본적이 없어서 대충 짰더니만..^^;

4. 파라미터 형식으로 넘겨주는 옵션값들을 ~.conf 형식으로 바꿔야 합니다.


사용 방법

--------


USB 케이블을 연결한 다음


u-boot 에서 dnw 0xc0008000


리눅스에서 ./smdk-usbdl -a 0xc000800 -f /tftpboot/zImage > /dev/null




고도리

2010.08.15 08:12:22
*.66.210.20

수고하셨습니다.

 

자세한 부분은 저랑 다시 함 튜닝 봐보도록 하는게 어떨까요?....ㅎ

유형목

2010.08.16 02:06:13
*.131.99.183

VirtualBox + Ubuntu Linux 10.04  환경에서 USB를 써서 NFS 부팅을 시도해보았습니다. 일단 성공적으로 동작은 잘 됩니다.


그런데 smdk-usbdl 프로그램과 usb0 를 둘다 동시에 쓸수는 없네요. 허긴 장치가 하나인데 두가지 방법으로 동시에 쓸수는 없으니 당연한 결과일듯 합니다.


어쨌든 smdk-usbdl 프로그램을 daemon 모드로 돌리다가 usb0 가 생기면 자동으로 끊어야 하는데 이걸 처리하려면 아마도 udev를 개입시켜야 될것 같습니다. 그 반대의 경우도 처리가 필요하구요. 좀 더 천천히 생각해보면 답이 있을것 같긴 합니다만..

유형목

2010.08.16 09:30:20
*.131.99.183

역시나 답은 udev 에 있었습니다. ^^; fork() 함수 써서 daemon 모드로 만든 것은 뻘짓이 되버렸네요. -_-;


다음과 같이 한줄만 써주면 됩니다. 역시 머리를 잘 써야 손발이 덜 고생한다는...


vi /etc/udev/rules.d/80-dnw.rules

---------------------------------

# USB bulk device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="1234", RUN+="/usr/sbin/smdk-usbdl -a 0xc0008000 -f /tftpboot/zImage"


벤더ID와 프로덕트ID를 써주고 나서 RUN+= 에 명령을 써주는게 전부입니다. 벤더ID와 프로덕트ID는 u-boot 에서 dnw 0xc0008000 명령을 내린다음 리눅스 쪽에서  lsusb  혹은 usb-devices 라고 입력해 보면 알수 있습니다.

이제현

2010.08.16 19:10:18
*.90.137.102

허무하지만 정말 멋지게 마무리 해주셨네요~~ ㅎㅎ


참, 좀 중요한 팁인데요.

smdk-usbdl 옵션인 "-a 주소" 는 안쓰셔도 됩니다.

보드쪽(u-boot) dnw 명령어에서 설정된 번지로 잘 전송됩니다.

유형목

2010.08.17 07:56:05
*.131.99.183

그렇군요. 잘 참고 하겠습니다. ^^;

신진철

2011.06.27 23:13:51
*.104.46.57

감사합니다!! 잘 쓰겠습니다!



List of Articles
번호 제목 글쓴이 날짜 조회 수sort
108 linux kernel API [1] 고현철 2007-10-18 51060
107 ffmpeg 사용법 example 고도리 2013-02-20 45202
106 HP Diagnostics - USB 드라이버가 인식 안될 때 사용 file 김재훈 2009-03-30 15433
105 안드로이드용 구글 공식 한글 키보드 file [2] 이제현 2010-11-23 15078
104 I2C spec입니다. file [3] 이훈기 2009-04-07 14042
103 Busy box내의 tftp 사용법 박세웅 2008-02-16 13217
102 TI - C6713 DSP용 Flash Write 및 Booting 방법에 대한 메뉴얼 file 김재훈 2009-04-27 12966
101 tslib compile howto 고도리 2009-06-22 12845
100 scratchbox2 사용기.. file [3] 이상철 2008-01-25 12479
99 삼성 S3C2410 Datasheet [한글판] file 김재훈 2008-07-14 12457
98 [정보] 안드로이드 소스코드 빌드해보기 [2] 유형목 2008-10-26 11939
» 리눅스용 DNW 프로그램을 고쳤습니다. file [6] 유형목 2010-08-14 11686
96 tslib 포팅 - 안드로이드에서 사용하기 위한.... file [9] 정낙주 2010-07-27 11614
95 Platform Builder 6.0 업데이트 패키지 (2008 Rollup) file 김재훈 2009-03-27 11587
94 OpenRISC Processor 개발 킷 (VMWARE Image) file 김재훈 2009-09-07 11416
93 gcc-4.x.x arm9 arm11(?) cross-toolchain make howto file [3] 고현철 2007-11-30 11293
92 TI - C67xx DSP용 EMIF Interface User Guide file 김재훈 2009-04-27 10954
91 aesop2440 linux device driver tutorial using linux kernel d... file 고현철 2009-09-08 10936
90 Visual Studio 2005 와 IE8 사용시 프로젝트 생성 오류 패치 file 김재훈 2009-05-29 10853
89 타겟 보드 아무데서나 접속하기 [3] 박병구 2007-10-18 10535

사용자 로그인