วันอังคารที่ 14 กันยายน พ.ศ. 2553

Create Installation and Use uboot for mini2440

1. เริ่มต้นด้วยการติดตั้ง Cross tool chain อ่านได้การติดตั้ง cross tool chain
     $ cd $ mkdir uboot 
     $ cd uboot 
     $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git
2. กาหนด ตัวแปร CROSS_COMPILE เพื่อให้ make ใช้ Cross Tool Chain 
    ของ arm สาหรับการ Compile
    $ export CROSS_COMPILE=arm-angstrom-linux-gnueabi-
    $ cd mini2440 $ make mini2440_config $ make all
3. เมื่อ เสร็จสิ้นการ compile เราจะได้ไฟล์ u-boot.bin ซึ่งเราจะได้นำไปใช้ในการติดตั้งบน NAND Flashต่อไป การติดตั้ง u-boot.bin บน NAND Flash เตรียมพร้อมระบบด้วยการ 
  • ต่อ USB Client ของ mini2440 ไปยัง PC Host พร้อมทั้ง Start program dwn.exe 
  • ต่อ Serial port mini2440 ไปยัง PC Host พร้อมทั้งรันโปรแกรม Terminal emulator อย่างเช่น putty หรือ Hyperterminal ด้วย Buadrate 115200
ในส่วนของ nand flash นั้นเราไม่สามารถเข้าถึงได้โดยตรงจึงต้องเข้าถึงผ่าน nor flash แล้วใช้ Supervivi เพื่อเข้าถึงส่วนของ nand flash แทนซึ่ง Supervivi คือ bios ของ mini2440 ใช้ในการติดตั้งโปรแกรมและระบบต่าง ๆ ลงใน mini2440 สามารถอ่านวิธีการติดตั้ง Supervivi  การติดตั้ง Supervivi ใน nor flash
          เมื่อทำการติดตั้ง u-boot ลงใน nand  flash เรียบร้อยแล้วลำดับต่อไปเราจะทำการ configure nand flash ดังนี้

1. บันทึก u-boot ลง NAND Flash ดังนี้ 
  •  Turn Power Off 
  •  Switch NOR/NAND Selector to NOR 
  •  Turn Power Switch on เลือก q จาก vivi menu แล้วพิมพ์ข้อความข้างล่างโดย ให้แทนที่ 240500 ด้วยขนาดไฟล์จริงของ u-boot.bin ที่ได้จากการคอมไพล์ข้างต้น จากนั้นให้ upload ไฟล์ u-boot.bin ด้วย dwn.exe

    Supervivi> load flash 0 240500 u USB host is connected. Waiting a download. u-boot จะถูกบันทึกไปยัง NAND Flash
2. สร้าง bbt (Bad Block Table) ของ NAND Flash
  •  Turn Power Off
  •  Switch NOR/NAND Selector to NAND 
  •  Turn Power Switch on 
  •  mini2440 จะบูทเข้าสู่ u-boot ให้ใช้คาสั่ง nand scrub เพื่อลบ bbt 


ใช้คาสั่ง nand createbbt เพื่อสร้าง bad block table ใหม่

3. สร้าง Environment สาหรับ u-boot จาก ขั้นตอนที่ 2 โปรแกรม u-boot ที่ถูกบันทึกไว้จะถูกลบไปจาก NAND Flash ดังนั้นเราจึงจาเป็นต้องทาตามขั้นตอนที่ 1 ใหม่อีกครั้งเพื่อบันทึกโปรแกรม u-boot กลับเข้าไปใน NAND Flash
  •  Turn Power Switch Off 
  •  Switch NOR/NAND Selector to NAND 
  •  Turn Power Switch On mini2440 จะบูท u-boot
    โปรดสังเกตุว่าจะมีข้อความ *** Warning - bad CRC or NAND, using default environment ใช้คาสั่ง dynenv set 40000 เพื่อทาการสร้าง environment ใหม่ และตามด้วยคาสั่ง saveenv
ใช้คาสั่ง reset เพื่อรีบูทระบบ เมื่อเสร็จสิ้นการรีบูทแล้ว u-boot ก็พร้อมที่จะใช้งาน


การใช้งาน U-boot

                uboot เป็น boot loader ที่มีประสิทธิาพสูงมาก สามารถ boot ได้หลายรูปแบบ ทั้ง NOR Flash,NAND Flash,SD Card และ NFS ในที่นี่เราจะกล่าวถึงเฉพาะ NAND Flash,SD Card และ NFS เนื่องจาก NOR บนบอร์ด ใช้เก็บ vivi boot loader เป็นตัวสารองครับ
                 ในส่วนของการใช้งาน u-boot รวมทั้งการติดตั้ง u-boot ลงใน nand flash อ่านวิธีการติดตั้งได้จากการสร้างและติดตั้ง uboot สาหรับ mini2440 

1.Boot ด้วย Nand Flash

  • เริ่มต้นด้วยจัดเตรียมไฟล์ kernel และ File System(uImage และ FS.jffs2) เพื่อไว้ เขียนลงใน NAND Flash
  • Copy file ทั้งสองลงใน SD Card ที่มีเนื้อที่ว่างพอใช้งาน
  • เลือกสวิตซ์ไปที่ NAND แล้วเปิดเครื่อง
  • erase nand flash ในส่วนของ kernel และ เขียน uImage ลงไป
MINI2440 # nand erase kernel
MINI2440 # mmcinit
MINI2440 # fatload mmc 0:1 0x31000000 uImage
MINI2440 # nand write 0x31000000 kernel

  • erase nand flash ในส่วนของ root และ เขียน File System ลงไป
MINI2440 # nand erase root
MINI2440 # mmcinit
MINI2440 # fatload mmcblk0p0:1 0x31000000 gpe-image-micro2440.jffs2
MINI2440 # nand write.jffs2 0x31000000 root ${filesize}
  • ขั้นตอนสุดท้ายคือการเขียน boot command และ setting parameter ต่างๆ
MINI2440 # setenv bootcmd nboot.e kernel \; bootm
MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200
ในกรณีที่ใช้จอ 7" ในเพิ่ม mini2440=1tb เข้าไปด้วย
MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2  console=ttySAC0,115200 mini2440=1tb
MINI2440 # saveenv   เป็นอันว่าเสร็จพร้อมใช้งานครับ

2.Boot ด้วย SD Card เตรียม SD Card ขนาด 1-2G ขึ้นอยู่กับความต้องการของงานที่พัฒนา เตรียม kernel,file system สามารถดาวน์โหลดได้ ที่นี่

  - kernel
  •  uImage 
  • modules.tar.bz2
  - File System
  •  armel-rootfs-released-032110.tar.bz2
  - เสียบ SD Card เข้ากับ Card Reader ที่เชื่อมต่ออยู่กับ Linux Desktop ของท่าน check SD Card ว่าใช้ device อะไรด้วยคาสั่ง dmesg หรือ fdisk –l


จากข้อมูลของ sd card ซึ่งต่อกับระบบเป็น /dev/ mmcblk0p เราจะใช้คาสั่ง fdisk เพื่อสร้าง partition ที่มีลักษณะดังนี้


mmcblk0p1 - type b (fat32) ขนาด 100MB 
mmcblk0p2 - type 83 (Linux) ขนาดเท่ากับที่เหลือ 
mmcblk0p3 - type 82 (Swap)

หลังจากสร้าง partition เสร็จให้ Format Partition ดังนี้
$ sudo mkfs.vfat /dev/ mmcblk0p1
$ sudo mkfs.ext3 /dev/ mmcblk0p2

Copy kernel(uImage) ลงใน partition แรก
$sudo mkdir /mnt/sdc1
$sudo mkdir /mnt/sdc2
$sudo mount -t vfat /dev/ mmcblk0p1 /mnt/sdc1 
$sudo cp /path ที่เก็บไฟล์/uImage-mini2440 /mnt/sdc1

แตก file system และ module ของ kernel ลงไปใน partition ที่สอง
$ sudo mount /dev/ mmcblk0p2 /mnt/sdc2 
$ cd /mnt/sdc2 $ sudo tar xvjpf /path ที่เก็บไฟล์/ armel-rootfs-released-032110.tar.bz2 
$ sync

$ sudo tar xvjpf /path ที่เก็บไฟล์/modules.tar.bz2
$ sync

umount SD Card
$ sudo umount /mnt/sdc1 
$ sudo umount /mnt/sdc2

ตอน นี้จบขั้นตอนของ SD Card แล้วครับ นา SD Card ไปเสียบที่ บอร์ดได้เลย เหลืออยู่อีกขั้นตอนคือการเซ็ท uboot ให้ boot ด้วย SD Card Boot board เข้าสู่ uboot command prompt เขียน boot command และ boot argument ดังต่อไปนี้

MINI2440 # setenv bootcmd 'mmcinit ; fatload mmcblk0p 0:1 0x31000000 uImage-mini2440 ; bootm 0x31000000' 
MINI2440 # setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait'

หากเป็นจอ 7" ให้เพิ่ม mini2440=1tb เข้าไปใน bootargs ด้วยครับ
MINI2440 # # setenv bootcmd 'mmcinit ; fatload mmcblk0p 0:1 0x31000000 uImage-mini2440 ; bootm 0x31000000'
MINI2440 # setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait mini2440=1tb'

ปิดท้ายด้วยการ save parameter ด้วยคาสั่ง saveenv
เสร็จขั้นตอนการคอนฟิกให้ uboot บูท ด้วย SD แล้วครับ หลังจากนี้ให้ใช้คาสั่ง reset หรือ boot ต่อได้เลยครับ


3.Boot ด้วย NFS (Network File System)  ในส่วนของการใช้งาน NFS นั้นให้ท่านผู้ที่สนใจศึกษาจากเว็บไซต์นี้ได้เลยครับ  Boot ระบบด้วย Network File System

ไม่มีความคิดเห็น:

แสดงความคิดเห็น