BCM35230 보드를 사용하여, 네트워크 기능을 확인하는 방법을 기술하고 있다.
Board Booting
현재 Nand 부팅이 안되는 관계로 Kernel, DTV Application 을 모두 NFS 로 사용해야 한다.
부트로더가 뜨면, 아래의 명령어들을 차례로 실행해주면 된다.
ifconfig eth0 -addr=192.168.100.50 -mask=255.255.255.0 -hwaddr=00-00-23-81-41-00 # 보드 IP 설정 boot -z -elf 192.168.100.12:kernel.gz 'root=/dev/nfs rw nfsroot=156.147.69.81:/nfsroot,nolock ip=192.168.100.50::192.168.100.254:255.255.255.0:localhost:eth0:off' # 12 -> PC, 81 -> 중계서버, 254 -> 게이트웨이 주소
수정사항
Kernel
Ethernet 포트에 랜선을 꼽아도, NM 에서 인식을 못하는 문제가 있다. 결국 랜선이 꼽혀 있음에도 UI 에서는 인식하지 못한다. 이를 위해서는 Ethernet 드라이버의 ioctl 처리 코드를 수정해야 한다. 여기서는 stblinux-2.6.28.9.tgz 파일을 기준으로 설명한다.
stblinux-2.6.28.9/drivers/net/bcmgenet/bcmgenet.c 파일을 수정한다.
static int bcmgenet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { ... switch (cmd) { ... case SIOCGMIIPHY: case SIOCGMIIREG: case SIOCSMIIREG: val = generic_mii_ioctl(&pDevCtrl->mii, if_mii(rq), cmd, NULL); // 위에 정의한 3가지의 ioctl 에대해서 해당 함수를 처리를 넘긴다 break; ... }
RGB 출력
일반 LVDS 케이블을 사용할 수 없기 때문에, 부득이 하게 RGB 쪽보드를 이용하여 UI 를 확인해야 했다.
이를 위해서는 코드 수정이 필요하다.
os/bcm35230_linux/nuxus_v0.1/magnum/portinginterface/vdc/35230/bvdc_displayhandler_priv.c 파일을 아래와 같이 수정한다.
L.1949 BVDC_P_Vec_Build_Hdmi_isr() { … /* Temporary For Bring Up */ *pList->pulCurrent++ = BRDC_OP_IMM_TO_REG(); *pList->pulCurrent++ = BRDC_REGISTER(BCHP_DVPO_0_MISC_CONTROL_2); #if 0 /*To use the RGB DAC board on LGE board for bringup*/ *pList->pulCurrent++ = 0x6C40020; #else *pList->pulCurrent++ = 0x6C20020; #endif *pList->pulCurrent++ = BRDC_OP_IMM_TO_REG(); *pList->pulCurrent++ = BRDC_REGISTER(BCHP_DVPO_0_MISC_CONTROL_3); #if 0 /*To use the RGB DAC board on LGE board for bringup*/ *pList->pulCurrent++ = 0xDB6; #else *pList->pulCurrent++ = 0; #endif … }
다음은 os/bcm35230_linux/nuxus_v0.1/magnum/portinginterface/lvd/35230/blvd.c 파일을 아래와 같이 수정한다.
L.896 BLVD_P_EnablePort() { … Register |= BCHP_FIELD_DATA(DVPO_0_LVDS_CFG_0, LVDS_ENCODE_ENABLE, ucEncodeEnable) | BCHP_FIELD_DATA(DVPO_0_LVDS_CFG_0, COLOR_MODE, 1/*jason Lim for LGE dac board uiColorMode*/ ) | BCHP_FIELD_DATA(DVPO_0_LVDS_CFG_0, REVERSE_LVDS_SHIFT, ucReverseLvdsShift) | BCHP_FIELD_DATA(DVPO_0_LVDS_CFG_0, JEIDA_MODE, hLVD->DeviceSettings.eLvdsMapping) ; BREG_Write32(hRegister, BCHP_DVPO_0_LVDS_CFG_0, Register) ; … }
rev. 2827 이후
bcm_platform_init.c 파일을 아래와 같이 수정한다.
L.695 #if 1 /* for using the LGE RGB DAC board */ // 1로 수정 platformSettings.displayModuleSettings.panel.customLinkSettings.lvdsMode = NEXUS_LvdsMode_eDualLink; platformSettings.displayModuleSettings.panel.customLinkSettings.lvdsColorMode = BLVD_ColorMode_e8Bit; #endif
Networkmanager
현재 NFS 로 실행을 하기때문에, 도중에 Network 설정을 바꾼다거나, 시도하게 되면, 기존의 접속이 끊겨 프로그램 실행이 중지된다. 따라서, 불가피하게 코드 수정이 필요하다. nmstate.c 파일을 아래와 같이 수정한다.
void nm_sm_event(NM_EVENT_T event) { while (event != NM_EVENT_NONE) { switch (EVENT_ID(_gNMControl.state, event)) { case EVENT_ID(NM_STATE_ETH_LINK_UP, NM_EVENT_ETH_SET_IP_IPC); // if(_gNMControl.currentcfg) # 주석처리함 ... }