Marvell 에서 생산되는 모든 Wi-Fi 칩은 양산이 되기 전에 정상동작 하는지 여부를 확인한다. 이때 사용하는 프로그램이 '랩툴(Labtool)' 이다.

이를 사용하여 Chip spec 을 만족하는지 각각 기능별로 테스트한다.

테스트 방법은 아래 그림과 같다.

타겟에서 mfgbridge 를 실행하는 방법

앞서 살펴본 것은 일반 PC 를 타겟으로 mfgbridge 를 실행하고, 여기에 연결된 쪽보드와의 통신을 통해 테스트하는 방법이었다.

이런 방법은 reference 보드의 경우에 적합하다. 하지만 거의 대부분 실제 제품에 실장되기 때문에 labtool 을 포팅하여 타겟에서 바로 실행한다.
여기서는 Samsung 갤럭시 그랜드(8777)를 기준으로 설명한다.

아래 문서를 참고하여 환경 설정을 완료했다면, 이제 Labtool 을 안드로이드에 포팅한다.

먼저 labtool 코드를 다운로드 받는다. 8797.tar.gz
압축을 풀고 안드로이드 소스코드 아래의 특정 디렉토리에 labtool 코드를 복사한다.

#tar xzf 8797.tar.gz
#cd /8797/mfg_and_Labtool/bridge_linux_0.1.0.29
#mkdir -p (안드로이드 소스코드 최상위디렉토리)/external/labtool
#cp -arf bridge drvwrapper (안드로이드 소스코드 최상위디렉토리)/external/labtool/

빌드하기 전에 수정사항이 있는데, Android_mbt.mk 파일을 사용해야 한다.

#cd (안드로이드 소스코드 최상위디렉토리)/external/labtool/bridge
#mv Android.mk Android.mk-ori
#mv Android_mbt.mk Android.mk

파일명을 수정했으면, 빌드하자.

#mm          // 일반 빌드 할때
 
또는
 
#mm -B       // 강제로 재빌드 할 때

에러없이 빌드되었다면, (안드로이드 소스코드 최상위디렉토리)/out/target/product/보드명/system/bin 아래에 mfgbridge 라는 파일이 보일 것이다. 이 파일을 타겟으로 전송하자.

#cd (안드로이드 소스코드 최상위디렉토리)/out/target/product/보드명/system/bin
#adb push mfgbridge /tmp

mfgbridge 파일이 실행될 때, 참조하는 설정 파일을 함께 전송해야 한다.

#adb push bridge_init.conf /tmp

이제 타겟에서 실행해보자!

#adb shell
#cd /tmp
#./mfgbridge

네트워크 설정하기

Labtool 을 사용하기 위해서는 타겟보드와 호스트 PC 가 서로 네트워크 통신이 가능해야 한다. 이를 위해서는 각각 설정이 필요하다.

타겟(핸드폰)의 설정에서 'USB tethering' 을 선택한다. 이렇게 하면, 타겟과 호스트 PC 사이에 통신하는 데 필요한 인터페이스(usb0)가 생성된다.

#adb shell
#root@android:/ # netcfg                                                        
rndis0   UP                              192.168.42.129/24  0x00001043 aa:e5:e0:27:de:b3
ccinet0  DOWN                                   0.0.0.0/0   0x00001082 a6:e2:79:51:aa:b6
ccinet1  DOWN                                   0.0.0.0/0   0x00001082 72:12:7f:a2:ea:7e
ccinet2  DOWN                                   0.0.0.0/0   0x00001082 32:ef:31:dc:ae:0f
ccinet6  DOWN                                   0.0.0.0/0   0x00001082 ce:86:74:7c:20:ab
ccinet7  DOWN                                   0.0.0.0/0   0x00001082 72:6f:be:cb:0b:52
ccinet3  DOWN                                   0.0.0.0/0   0x00001082 9e:d6:f3:ed:4b:4d
ccinet4  DOWN                                   0.0.0.0/0   0x00001082 02:4f:04:b9:97:b1
ccinet5  DOWN                                   0.0.0.0/0   0x00001082 76:f0:2c:2e:e7:ce
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
tunl0    DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00

타겟의 IP 주소는 '192.168.42.129' 로 설정된 것을 알 수 있다. 이제 default gw 를 지정해주어야 한다. 참고로 192.168.42.130 는 Host PC 의 usb0 인터페이스에 할당할 IP 주소다.

#route add default gw 192.168.42.130 dev rndis0      // Host PC 에 물려있는 IP 주소를 default gw 로 설정
#ifconfig usb0 192.168.42.130 up
#ping 192.168.42.129               // 타겟 쪽으로 ping 테스트, 반대로 타겟에서도 Host PC 쪽으로 테스트 해본다 

이제 외부와의 통신을 위해 아래와 같이 실행한다.

#iptables -F
#echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9930 -j DNAT --to 192.168.42.129:9930

labtool 의 통신 포트인 9930 를 외부 IP 로 포트 포워딩한다.

Labtool 실행하기

이제 타겟과 Host PC 각각 프로그램을 실행시켜 명령어를 통해 제대로 동작하는지 확인하자.

  • computer/marvell/labtool_사용하기.txt
  • Last modified: 3 years ago
  • by likewind