====== 35230 보드 Bring-up 하기 ======
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) # 주석처리함
...
}
----
{{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}}
----