타겟 부팅 시에 에러 발생 시에 문제를 해결하는 방법을 정리하였다.

Saturn 6

필자의 경우, 한 파티션에 원래의 파티션 크기보다 큰 파일을 넣고 .epk 를 생성 후, 이를 flash 에 write 하고 부팅하는 과정에서 이러한 문제가 발생하였다.

mstar # nand erase
mstar # swu a.epk

현재 파티션의 각 사이즈 및 사용량을 확인하기 위해서는 아래와 같이 명령한다.

mstar # mtdinfo
 
MTD Partition Information -----------------------------------------------------------------------------
 
cur epk ver : 0x030100
old epk ver : 0x030100
 
[ 0] "bbminfo"   : 0x00000000-0x00020000 (0x00020000)
[ 1] "boot"      : 0x00020000-0x000a0000 (0x00080000)  : "u-boot-nand.bin"[0] - 0x000000 : (U/V)
[ 2] "mtdinfo"   : 0x000c0000-0x000e0000 (0x00020000)  : "MTD.INFO"[0] - 0x000000 : (U/V)
[ 3] "rootfs"    : 0x000e0000-0x005e0000 (0x00500000)  : "rootfs.squashfs"[3211264] - 0x000001 : (U/V)
[ 4] "model"     : 0x005e0000-0x00680000 (0x000a0000)  : "model.jffs2"[131072] - 0x030100 : (U/V)
[ 5] "emanual"   : 0x00680000-0x00b80000 (0x00500000)  : "emanual.squashfs"[3448832] - 0x000001 : (U/V)
[ 6] "ezcal"     : 0x00b80000-0x01080000 (0x00500000)  : "ezcal.squashfs"[3145728] - 0x000001 : (U/V)
[ 7] "logo"      : 0x01080000-0x01380000 (0x00300000)  : "logo.img"[272896] - 0x030100 : (U/V)
[ 8] "opsrclib"  : 0x01380000-0x01e80000 (0x00b00000)  : "opsrclib.squashfs"[0] - 0x000000 : (U/V)
[ 9] "ywed"      : 0x01e80000-0x04680000 (0x02800000)  : "ywed.squashfs"[0] - 0x000000 : (U/V)
[10] "netflix"   : 0x04680000-0x05580000 (0x00f00000)  : "netflix.squashfs"[0] - 0x000000 : (U/V)
[11] "netid"     : 0x05580000-0x055a0000 (0x00020000)  : "netid.squashfs"[0] - 0x000000 : (U/V)
[12] "cmndata"   : 0x055a0000-0x05640000 (0x000a0000)  : "cmndata.jffs2"[0] - 0x000000 : (U/V)
[13] "kernel"    : 0x05640000-0x05a40000 (0x00400000)  : "uImage"[2045606] - 0x000001 : (U/V)
[14] "lgapp"     : 0x05a40000-0x06440000 (0x00a00000)  : "lgapp.lzo"[8582563] - 0x030100 : (U/V)      //
[15] "lgres"     : 0x06440000-0x07340000 (0x00f00000)  : "lgres.squashfs"[11952128] - 0x000001 : (U/V)
[16] "lgfont"    : 0x07340000-0x07d40000 (0x00a00000)  : "lgfont.img"[229376] - 0x000001 : (U/V)
[17] "kernel"    : 0x07d40000-0x08140000 (0x00400000)  : "uImage"[2153347] - 0x000001 : (u/V)
[18] "lgapp"     : 0x08140000-0x08b40000 (0x00a00000)  : "lgapp.lzo"[8580816] - 0x030100 : (u/V)
[19] "lgres"     : 0x08b40000-0x09a40000 (0x00f00000)  : "lgres.squashfs"[11948032] - 0x000001 : (u/V)
[20] "lgfont"    : 0x09a40000-0x0a440000 (0x00a00000)  : "lgfont.img"[229376] - 0x000001 : (u/V)
[21] "recdb"     : 0x0a440000-0x0a4e0000 (0x000a0000)
[22] "system"    : 0x0a4e0000-0x0a520000 (0x00040000)
[23] "user"      : 0x0a520000-0x0f800000 (0x052e0000)
[24] "reserved"  : 0x0f800000-0x10000000 (0x00800000)
 
A.      Add    flash partition
E.      Edit   flash partition
R.      Remove flash partition
 
D.       Default Normal
F.       Default Flash
L.       Load
S.       Save
Q.       Exit
 
select  :

예를 들어 'lgapp' 라는 파티션을 예로 들어보겠다. 파티션 크기는 '0x00a00000' 이고, 사이즈는 '8582563' 이다.
비교해보면, 약 2M 정도 남아있는 상태다.
만일 위와 같이 했음에도 불구하고 같은 현상이 반복한다면, 부트로더(SPI,NAND), 커널, 파일시스템, APP 까지 다시 write 한다.

Saturn 7

Saturn 7 에 들어오면서 변경된 점들은 다음과 같다.

BCM 3549

백라이트도 켜진 상태에서 화면에 아무것도 보이지 않을때, 다음과 같이 한다.
3549 DV1 보드에서 화면을 보기 위해서는 수정이 필요하다. 'gp2/src/drivers/frc/ursa3/frc_ursa3.c' 파일을 아래와 같이 수정한다.

...
DTV_STATUS_T FRC_URSA3_Init(void)
{
 DTV_STATUS_T ret = NOT_OK;
 rprintOn("\n++++++++++++++++++++++++FRC_URSA3_Init+++++++++++++++++\n");
 FRC_URSA3_SetLVDSBitNum(8);
 ret = OK;
 return ret;
}
...

또다른 방법은 Debug 모드를 사용하는 것이다.

...
> 52     <- 52 입력
*************Select Menu & Exit************
[0x01] SPI Firmware Download
[0x02] FRC Init
[0x03] MFC I2C Read
[0x04] MFC I2C Write
[0x05] FRC Change TruM Level
[0x06] FRC Demo Mode Control
[0x07] FRC Change demo bar color
[0x08] FRC On/Off control
[0x10] FRC Get current status
[0x11] FRC Set bypass window.....
[0x12] FRC Get FW version.....
[0x14] FRC Show Film Mode Debug
[0x20] FRC Set video block
[0x21] FRC Control Spread Spectrum
[0x23] FRC Debug block enable/disable
[0x25] FRC Read HV total
[0x26] FRC Set LVDS power
[0x27] FRC Set slow frame lock
[0x28] FRC Set output timing
[0x29] FRC Control reverse mode
[0x30] FRC Set Ti Mode bit number
[0x31] FRC Set Judder level
[0x32] FRC Set Blur level
[0x33] FRC Set LVDS VESA/JEIDA
[0x40] FRC URSA3 Internel PWM test
[0x50] FRC Reset Control
[0x90] FRC Reset
[0x91] FRC Set download mode
[0x92] FRC Chage Frame Rate
[0x93] FRC All Function enable/disable
[0x94] FRC Pwiz Debug Menu.
[0xFF] Exit
*******************************************
> 30    <- 30 입력
others:0 8bit:1 6bit:2
> 1     <- 1 입력

그러면 화면이 제대로 보일 것이다.

기존의 모든 Nand Flash 를 지우고 다시 설정한다.

>nand erase all
... => 이때 모든 블럭에 대해서 bad 블럭이 나오면 안된다. 나오지 않을 때까지 반복한다. 계속해서 나온다면 보드를 교체해야 한다

부트로더를 다운로드 해야 한다. 'gp2/os/bcm35xx_linux/boot' 아래에서 make 를 실행하면 컴파일되고, boot.pak 파일이 생성된다.

>sto tftp://192.168.0.1/boot.pak 
>reset
>macprog2 00-e0-91-69-12-81
>nset
>>Input '-' to remove value<<
       netDev : eth0
       - NET_SIPADDR Address : 156.147.69.181 => 
       - NET_TIPADDR Address :    192.168.0.1 =>      (<- 추가된 사항, Tftp 서버 주소입력)
       - NET_IPADDR Address :   192.168.0.10 => 
       - NET_NETMASK Address :  255.255.255.0 => 
       - NET_GATEWAY Address :    192.168.0.1 =>
 
>nand erase mtdinfo

mtd talble 을 다운로드 하기 위해서 파일을 생성해야 한다. 'gp2/src' 아래에서 'make depmtdinfo' 로 컴파일하면, 'mtdinfo.pak' 파일이 생성된다.
이를 다음과 같이 다운로드 한다.

>sto tftp://192.168.0.1/mtdinfo.pak
>swu pak-dvb_bb_bcm3556/model_RevNo8072_flash.epk

이후 .epk 파일을 다운로드 하면 된다.

이 문제에 대한 원인을 찾아내는 데 애를 먹었다. 언제나 그렇듯 생각해보면, 정말 아무것도 아닌 문제인 데 말이다.
어쨌든 이와 비슷한 문제를 겪는 다면 반드시 한번 시도해보자!

나의 경우는 중계서버의 문제였다. 이럴 경우, 중계서버의 모든 파일과 SVN 서버에서 중계서버로 마운트 되는 곳의 모든파일을 삭제한다. 그리고 다시 컴파일 한다.

$cd /tftpboot/bcm35xx/wjkim
$rm -rf *
$cd /share/global_platform/bcm35xx/wjkim
$rm -rf *

이후 중계서버(156.147.69.181)의 모든 파일을 삭제한다.
다시 컴파일하고, 실행해보자!

Saturn7 에서 비교적 간단했다. 하지만, BCM 플랫폼으로 넘어오면서 방법이 좀 더 번거로워 졌다.
여기서는 Wi-Fi 드라이버를 검증할 때 필요한 몇가지 파일들을 예로들어 설명하겠다. 'wlmips, ibss_status, lgm_wps' 가 그것이다.
'gp2/src/app/platform/bcm35xx' 아래의 'build.mk' 파일을 아래와 같이 수정한다.

... L.71
COPY_SCRIPTS += $(call cond_assign, YES, INCLUDE_NM, NetworkManager,)
COPY_SCRIPTS += $(call cond_assign, YES, INCLUDE_NM, wlmips,)
COPY_SCRIPTS += $(call cond_assign, YES, INCLUDE_NM, lgm_wps,)
COPY_SCRIPTS += $(call cond_assign, YES, INCLUDE_NM, ibss_status,)
...
... L.359
ifeq ($(INCLUDE_NM), YES)
 @$(CD) $(TEMP_DIR)/lgapp && $(CP) -v $(OUT_DIR)/NetworkManager $(TEMP_DIR)/lgapp
 @$(CD) $(TEMP_DIR)/lgapp && $(CP) -v $(OUT_DIR)/wlmips $(TEMP_DIR)/lgapp
 @$(CD) $(TEMP_DIR)/lgapp && $(CP) -v $(OUT_DIR)/lgm_wps $(TEMP_DIR)/lgapp
 @$(CD) $(TEMP_DIR)/lgapp && $(CP) -v $(OUT_DIR)/ibss_status $(TEMP_DIR)/lgapp
...

이후, Wi-Fi 드라이버 컴파일 후에 생성되는 파일을 'gp2/src/app/platform/bcm35xx' 아래에 복사한다. 이것으로 끝이 아니다. 추가한 파일들이 용량이 크기 때문에 해당 파티션의 크기를 늘려주어야 한다.
'gp2/src/apps/prj/atsc_bb_bcm3549/mtdinfo' 아래의 'mtdinfo.h' 파일을 아래와 같이 수정한다.

... L.183
#define DEFAULT_LGAPP_1_SIZE (0x1A00000)
...

컴파일하여, 새로운 'MTD.INFO' 파일을 만든다. 보드에 올릴때는 .epk 파일을 쓰기전에, mtd 정보를 업데이트 해준다.

> load mtdinfo
> swu ee.epk

epk 파일 빌드 시, 마지막에 중계서버로 바이너리 파일들을 복사하는데, 이 때 에러가 발생하여 파일서버에 제대로 복사되지 않는 경우가 있다. 이럴 때는 아래와 같이 실행한다.

$/prod/bin/prodsync /tftpboot/saturn7/자신의ID  # Mstar Platform
$/prod/bin/prodsync /tftpboot/bcm35xx/자신의ID  # BCM Platform

model 디렉토리 아래의 .cfg 파일을 열어 아래 항목을 수정한다.

...
eEventBoardType    = BOARD_PQ_1ST  # PQ 로 수정
...

컴파일 후, 부팅하여 확인해보자!

  • computer/lg/board_faq.txt
  • Last modified: 3 years ago
  • by likewind