2013년 7월 15일 월요일

(망고210) sdwrite 수정 후 부팅하기 (UART2 로 디버깅 메시지 변경)




(망고210) sdwrite 수정 후 부팅하기 (UART2 로 디버깅 메시지 변경)

리눅스 PC에서
$ cd image
$ mkdir rootfs
$ cd rootfs
$ sudo tar xf ../rootfs.tar
$ vi etc/inittab
에서 아래와 같이 수정을 합니다.

#T1:12345:respawn:/sbin/getty -L -n -l /root/nologin ttySAC1 115200 vt100
T1:12345:respawn:/sbin/getty -L -n -l /root/nologin ttySAC2 115200 vt100
$ sudo tar cf ../rootfs.tar .

$cd ..
$ sudo chmod -R 777 *
$ vi sdwriter
UBOOT_210=mango210_uboot_uart2.bin
KERNEL_210=zImage_uart2

make_bl1()
{
case "$BOARD" in
   100)
   ./mkbl1  $UBOOT_100 mango100_bl1.bin 8192
   ;;

   210)
   ./mkbl1 $UBOOT_210  mango210_bl1.bin 8192
   ;;

   *)
   echo "Make BL1: Error !!!"
   ;;
esac
}

수정 후

리눅스 PC에 MicroSD card를 삽입합니다.
[root@icanjji-pc image]# df
Filesystem      1K-blocks      Used  Available Use% Mounted on
/dev/sda2      1947374844 759956904 1089955832  42% /
udev              2006136         4    2006132   1% /dev
tmpfs              805972      1536     804436   1% /run
none                 5120         0       5120   0% /run/lock
none              2014924        76    2014848   1% /run/shm
/dev/sda1           96880       120      96760   1% /boot/efi
/dev/sdi4          303792     16584     271528   6% /media/47489a0d-edd2-4098-935d-1fe172a6c56b
/dev/sdi3         1039064     34112     952168   4% /media/4a1e9ce3-efa8-426e-9533-e8f8757cc841
장치 디바이스 확인 저는 sdi 입니다.

[root@icanjji-pc image]# sudo ./sdwriter sdi 210
Mango SD Writer V1.0

Unmount all : success

Partition Create : success

Write Mango210 BL1 : success
Write Mango210 Uboot : success
Write Mango210 Kernel : success

Gnome Filesystem Create : success

Unmount all : success

Success

Write이 완료 된 후 파티션 2에 파일 시스템이 복사가 되었는지 확인을 합니다.
리눅스 PC에 Micro SD card를 다시 삽입합니다.
[root@icanjji-pc image]# df
Filesystem      1K-blocks      Used  Available Use% Mounted on
/dev/sda2      1947374844 759957264 1089955472  42% /
udev              2006136         4    2006132   1% /dev
tmpfs              805972      1524     804448   1% /run
none                 5120         0       5120   0% /run/lock
none              2014924        76    2014848   1% /run/shm
/dev/sda1           96880       120      96760   1% /boot/efi
/dev/sdi2          516040     56128     433700  12% /media/gnome
/dev/sdi1         6750308         4    6750304   1% /media/mango
[root@icanjji-pc image]# ls /media/gnome/
bin    include     m210_mrvl8787_wifi_module  opt   share  var
cpenv  lib         media                      proc  sys
dev    libexec     mnt                        root  tmp
etc    lost+found  mrvl8787_install.sh        sbin  usr

위와 같이 파일이 있는지 확인하기 바랍니다.
없으면 ,
“sdwriter” 스크립트에 오류가 있는 것입니다.
리눅스 PC에서 umount 합니다.

# umount /dev/sdi*

수행 후 Micro SD Card를 보드에 삽입 후
CM-V210 : 2 3 6 번 ON
Mango210 : 1 3 4 번 ON
후 부팅을 합니다.
UART2로 변경하였으므로 아래와 같이 연결해야 합니다.




부팅 시 u-boot에서 “bootcmd”와 “bootargs”를 확인 합니다.

MANGO210 # print
mtdpart=80000 400000 3000000
bootdelay=3
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
ipaddr=192.168.1.121
serverip=192.168.1.2
gatewayip=192.168.1.1
netmask=255.255.255.0
bootcmd=movi read kernel 20008000; bootm 20008000
bootargs=root=/dev/mmcblk0p4 rootfstype=ext3 console=ttySAC1,115200 rootdelay=1

환경 설정을 아래와 같이 하면 됩니다.
setenv bootcmd “movi read kernel 20008000; bootm 20008000”
setenv bootargs "root=/dev/mmcblk0p2 rootfstype=ext3 init=/sbin/init console=ttySAC2,115200 rootwait"

MANGO210 # setenv bootargs "root=/dev/mmcblk0p2 rootfstype=ext3 init=/sbin/init console=ttySAC2,115200 rootwait"
MANGO210 # save
Saving Environment to MANGO bootable device...
Done

그리고 다시 부팅을 합니다.

Uboot 코드에서 수정하려면



"board/samsung/mango210/mango210.c" 파일에서
int board_late_init (void) 함수에서
아래와 같이 수정하면 됩니다.
case BOOT_MMCSD:
       Outp32(0xe02002a4, 0x80);   // LED1 On
       Outp32(0xe02002c4, 0x0);    // LED0 Off

       if((~Inp32(0xe0200c04)) & 0x6) { // Linux Recovery Booting Mode
           sprintf(boot_cmd, "nand erase clean;nand scrub;movi read u-boot %08x;nand write %08x 0 70000;movi read kernel %08x;bootm %08x"
                   , MEMORY_BASE_ADDRESS + 0x1000000, MEMORY_BASE_ADDRESS + 0x1000000
                   , MEMORY_BASE_ADDRESS + 0x8000, MEMORY_BASE_ADDRESS + 0x8000);
           setenv("bootcmd", boot_cmd);
           sprintf(boot_cmd, "root=/dev/mmcblk0p3 rootfstype=ext3 console=ttySAC1,115200 rootdelay=1 recovery");
           setenv("bootargs", boot_cmd);
           sprintf(boot_cmd, "0");
           setenv("bootdelay", boot_cmd);
       } else
       if(default_boot_mode) { // using default environment
           sprintf(boot_cmd, "movi read kernel %08x; bootm %08x"
                   , MEMORY_BASE_ADDRESS + 0x8000
                   , MEMORY_BASE_ADDRESS + 0x8000);
           setenv("bootcmd", boot_cmd);
           sprintf(boot_cmd, "root=/dev/mmcblk0p2 rootfstype=ext3 init=/sbin/init console=ttySAC2,115200 rootwait");   
           setenv("bootargs", boot_cmd);
       }
       break;

   }

댓글 없음:

댓글 쓰기