====== Saturn6 사용하기 ====== NAND 메모리가 256 MB 인 새로운 Saturn6 보드를 받으면서, 보드를 살리기 위해 삽질했던 것들을 토대로 작성되어졌다. 참고로 나는 새 보드를 받기전에 47LH40-UA 의 Saturn5 기반의 보드를 사용하고 있었다. 새로운 보드에는 아무런 프로그램도 올라가 있지 않은 상태다. 여기서 보드의 부팅 시퀀스에 대해서 알아보자. {{ :computer:job:lg:bootloader.jpg |}} 부트로더는 boot_1st(small bootloader)와 boot_2nd(u-boot)로 나뉘어져 있다. nand flash 에 부트로더가 없거나 깨졌을 경우 SPI flash 에 있는 2nd boot 가 동작하게 된다. 물론 nand flash 에 2nd boot 가 있으면 nand flash 에 있는 부트로더가 동작하게 된다. 2nd boot 이미지 내부에 2nd boot size 가 포함되어 있으며, 1st boot 는 그 size 를 가져와서 2nd boot 를 loading 하게 되어 있다. ====== SPI 굽기 ====== 현재 보드는 아무런 프로그램도 없기 때문에, 가장 먼저 해야할 것은 SPI flash 에 부트로더를 write 하는 것이다. 이를 위해서 필요한 것들은 다음과 같다. - u-boot-spi.bin - USB-to-RGB Dongle - http://likewind.org/pds/lge/XP_driver.rar XP_driver.rar (USB-to-RGB Dongle 드라이버 파일) - http://likewind.org/pds/lge/ISP_Tool.rar ISP_Tool.tar (write 프로그램) 먼저 부트로더를 컴파일하여 필요한 파일(u-boot-spi.bin)을 생성해야 한다. 여기서는 GP2 를 기준으로 설명할 것이다. $cd work/gp2/os/saturn6_linux/boot/boot_2nd $./mk.sh // 기존의 바이너리 파일을 삭제하고 re-bulid 한다 컴파일 후 생성되는 u-boot-spi.bin 파일은 자동으로 중계서버로 복사된다. 준비한 USB-to-RGB Dongle 을 연결한다. '이때 주의할 점이 있다. 나의 경우, USB 허브에 꽂았을 때, 제대로 동작하지 않고 메인 USB 포트에 꽂았을 때만 제대로 동작하였다. 아마도 전원문제인 것 같다. 따라서 USB-to-RGB Dongle 사용시에는 USB 허브를 빼고 메인 USB 에 USB-to-RGB Dongle 을 꼽는다.' {{ :computer:job:lg:jtag.jpg |}} {{ :computer:job:lg:jtag1.jpg |}} XP_driver.rar 과 ISP_Tool.tar 을 설치한다. Front 보드의 RGB 포트에 USB-to-RGB 를 연결하고, ISP_Tool.exe 를 실행한다. Connect 탭을 누른다. {{ :computer:job:lg:isp_tool1.jpg |}} 아래와 같은 창이 뜬다면, 제대로 연결이 된 것이다. 만일 디바이스를 찾을 수 없다는 창이 나오면, 보드 전원을 리셋하거나, PC USB 포트를 뺐다가 다시 꽂아보자! ISP 프로그램도 재실행 해보자! {{ :computer:job:lg:isp_tool21.jpg |}} write 할 u-boot-spi.bin 파일을 읽어들이기 위해 Read 탭을 누른다. 경로를 지정해주면, 사이즈가 표시된다. {{ :computer:job:lg:isp_tool2.jpg |}} write 하기위해 Auto 탭을 누른다. 아래 화면과 같이 옵션을 설정하고, 'Run' 버튼을 누른다. {{ :computer:job:lg:isp_tool3.jpg |}} write 가 끝나면, 아래와 화면과 같이 'Pass' 가 출력된다. {{ :computer:job:lg:isp_tool4.jpg |}} 보드를 재부팅하고 시리얼 케이블을 연결하여, 부트로더가 출력되는 지 확인한다. ===== 에러 대처 방법 ===== 재부팅 후에 다음과 같은 문제가 발생할 수 있다. 여러가지 문제가 발생할 수 있지만, 여기서는 내가 직접 겪은 문제에 대해서만 설명하겠다. ==== ECC Error ==== SPI 를 다시 write 한다. 또는 최신 부트로더 코드를 빌드하여 다시 write 한다. ==== Job End Time out ==== 전원을 on 하자마자, 키보드의 'S' 를 누르고 있으면, 부트로더가 출력될 것이다. 이 문제는 nand 에 있는 2dn 부트로더가 깨졌을 때 발생한다. ====== Nand 굽기 ====== Nand Flash 에 부트로더를 write 해야 한다. 여기서부터는 USB-to-RGB Dongle 이 필요없다. tftp 로 전송하기 때문이다. 앞서, 부트로더 컴파일 시에 생성된 u-boot-nand.bin 파일을 사용한다. 호스트와 타겟을 크로스 케이블로 연결한 상태에서 다음과 같이 명령한다. mstar # load boot TFTP from server 192.168.0.1; our IP address is 192.168.0.10 Filename 'u-boot-nand.bin'. Load address: 0x82000000 Loading: checksum bad T ###############################checksum bad ################### done Bytes transferred = 255896 (3e798 hex) ====== Kernel, Rootfs, App 굽기 ====== .epk 파일을 write 하면, kernel, rootfs, app 를 모두 write 할 수 있다. epk 빌드 시, 처음에 한번만, 'y' 선택하여 커널을 재컴파일 한다. ===================================================== Kernel compilation for dvb_saturn6 ===================================================== Would you like to remove linux kernel directory and extract newly? [y/N] y // y 를 입력 위와 같이 처음에 한번 해주는 이유는 '부팅시, nand bed block.... 메세지가 출력되면서, 부팅이 안되는 문제' 를 사전에 방지하기 위함이다. ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----