2009年9月23日 星期三

OMAP3530 MINI V3 + 0xdroid

ICETEK OMAP3530 MINI V3號稱硬體跟beagle board相容.
由於mini board有512MB nand flash & DM9000 ethernet所以捨棄了beagle board.
但風險就是萬一硬體有不相容的地方就得自己搞了

http://code.google.com/p/beagleboard/wiki/BeagleSoftCompile

1.OMAP3530 boot
Boot對Embedded System是一件大事,就像生命的起源一般.
OMAP3530可以從nand flash or SD card boot,由x-loader開始.
x-loader負責初始化CUP,包含memory & nand flash,之後會載入並執行u-boot.

預設供電後由nand flash載入x-loader.
按住user button + reset button就會由SD card載入x-loader.

2.Compile x-loader

修改xloader/include/configs/omap3530Mini.h

/* NAND is partitioned:
 * 0x00000000 - 0x0007FFFF  Booting Image
 * 0x00080000 - 0x0025FFFF  U-Boot Image
 * 0x00260000 - 0x0027FFFF  U-Boot Env Data (X-loader doesn't care)
 * 0x00280000 - 0x0067FFFF  Kernel Image
 * 0x00680000 - 0x08000000  depends on application
 */
#define NAND_UBOOT_START    0x0080000 /* Leaving first 4 blocks for x-load */
#define NAND_UBOOT_END        0x0260000 /* Giving a space of 2 blocks = 256KB */
#define NAND_BLOCK_SIZE        0x20000

make
./signGP x-load.bin
mv x-load.bin.ift MLO

Build x-loader for nand boot

http://elinux.org/BeagleBoardNAND

Modify include/configs/omap3530mini.h

Disable CONFIG_MMC
//#define CONFIG_MMC 1

make
./signGP x-load.bin
Copy x-load.bin.ift to nand

3.Format SD Card

http://elinux.org/BeagleBoardBeginners

有一些細節要注意,就不再贅述
將MLO copy 到SD card FAT partition (FAT partition一定要是乾淨的)
將x-load.bin.ift copy到 FAT partition

4.Install pre-built 0xdroid images

複製uImage / 0xkernel-beagle.bin / android-beagle.ubi 到SD card FAT parition
退出SD card
Boot from SD card
進入u-boot command

由SD card更新nand flash上的檔案

Refresh x-load.bin.ift

OMAP3 MiniBoard # mmcinit
OMAP3 MiniBoard # fatload mmc 0 ${loadaddr} x-load.bin.ift
reading x-load.bin.ift

11332 bytes read
OMAP3 MiniBoard # nand unlock
Usage:
nand - NAND sub-system

OMAP3 MiniBoard # nand erase 0 40000

NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x20000 -- 100% complete.
OK
OMAP3 MiniBoard # nandecc hw
HW ECC selected
OMAP3 MiniBoard # nand write ${loadaddr} 0 40000

NAND write: device 0 offset 0x0, size 0x40000
 262144 bytes written: OK
OMAP3 MiniBoard # nand lock
Usage:
nand - NAND sub-system

Refresh u-boot

OMAP3 MiniBoard # mmcinit
OMAP3 MiniBoard # fatload mmc 0 ${loadaddr} u-boot.bin
reading u-boot.bin

275904 bytes read
OMAP3 MiniBoard # nand erase 80000 1e0000

NAND erase: device 0 offset 0x80000, size 0x1e0000
Erasing at 0x140000 -- 100% complete.
OK
OMAP3 MiniBoard # nand write ${loadaddr} 80000 1e0000

NAND write: device 0 offset 0x80000, size 0x1e0000
 917504 bytes written: OK
OMAP3 MiniBoard #

Refresh uImage.bin

OMAP3 Miniboard # mmcinit
OMAP3 Miniboard # fatload mmc 0 ${loadaddr} uImage-beagle.bin
reading uImage-beagle.bin

2140524 bytes read
OMAP3 Miniboard # nand erase 280000 400000

NAND erase: device 0 offset 0x280000, size 0x400000
Erasing at 0x660000 -- 100% complete.
OK
OMAP3 Miniboard # nand write ${loadaddr} 280000 400000

NAND write: device 0 offset 0x280000, size 0x400000
 4194304 bytes written: OK

5.取出SD card, reboot to install 0xdroid automaticlly.
完成後reboot

6.u-boot environment variable

setenv ubifsargs 'setenv bootargs console=${console} init=/init omapdss.def_disp=dvi omapfb.mode=dvi:1280x1024MR-24@60 root=ubi0:rootfs ubi.mtd=4 rw rootfstype=ubifs'

setenv nandboot 'echo Booting from nand ...; run ubifsargs; nand read ${loadaddr} 280000 400000; bootm ${loadaddr}'

7.0xdroid works

Texas Instruments X-Loader 1.4.2 (Sep 24 2009 - 17:05:57)
MiniBoard V2.0: Run Xloader from SD card
Loading u-boot.bin from nand


U-Boot 2009.08-00217-g30d7aae-dirty ( 9月 24 2009 - 20:23:31)

OMAP3530-GP ES2.1, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
DRAM:  256 MB
NAND:  512 MiB
In:    serial
Out:   serial
Err:   serial
Beagle Board rev C
Die ID #4b9a00020000000004031c1307010007
Hit any key to stop autoboot:  0
Unknown command 'mmcinit' - try 'help'
Booting from nand ...

NAND read: device 0 offset 0x280000, size 0x400000
 4194304 bytes read: OK
## Booting kernel from Legacy Image at 80200000 ...
   Image Name:   Linux-2.6.29-omap1-g327a826
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2165760 Bytes =  2.1 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...




5 則留言:

  1. 您好!!
    我想請問史大大個問題
    OMAP3530 MINI V3 跟 OMAP3530 DevKit8000
    同樣都是要玩 0xdroid
    之間有甚麼不同嗎?
    關於這句:複製uImage / 0xkernel-beagle.bin / android-beagle.ubi 到SD card

    uImage板子是一定吃的到
    而xkernel-beagle.bin & android-beagle.ubi
    我的版子好像吃不起來
    是因為版子原廠問題?
    還是我要改我的u-boot?
    [版主回覆07/24/2010 18:13:52]建議不要用mini v3因為0xdroid並未support這塊板子.
    在u-boot下mmcinit or mmc init就能使用SD card上的file.
    注意你的SD card要依照omap3的要求建立FAT file system.

    回覆刪除
  2. 你好阿!
    我那各SD 卡裡面有原來的檔案,我按照你講的
    按住user button + reset button就會由SD card載入x-loader.
    但是畫面會停掉ㄟ!
    都不會動,救無發更新囉!
    請你指導一下囉!
    謝謝
     


     
    [版主回覆12/23/2010 00:04:06]從SD card boot有看到東西嗎? 傳上來偶看看.

    如果你的nand flash上的u-boot有支援讀取SD card也可以.
    進入u-boot console之後下指令 mmc init 或 mmcinit (要看你的u-boot版本而定)
    接下來應該跟blog上的流程一樣.

    回覆刪除
  3. 您好:
      我想請問您一些問題,我現在手上有一塊mini V3的板子,但他官方提供的kernel source似乎只有到2.6.28,我自己從網路上下載的kernel source code是2.6.32,現在我再驅動SPI Interface,再設定menuconfig的時候,沒有看到有關min v3i的config設定,導致無法更新kernel,想請問哪邊還能下載到2.6.32以上有支援mini V3的kernel source呢?或是有關於mini V3如何將spi給掛載起來。在2.6.28我已經有將spi包進kernel內,但沒有看到有關於spi的裝置,想請問你是否有研究過spi呢?希望您能給我一點建議!!謝謝!!
    [版主回覆12/31/2010 16:10:11]據我所知mini v3的kernel原廠還是停留在2.6.28
    試試看 TI 官方的kernel source 有沒有支援mini v3吧.
    沒有的話就要自己Porting了.

    OMAP 3 SPI我沒有實際試過.
    有一些基礎的mux / register要先正確設定.參考omap 3530 user manual

    沒有看到spi裝置?
    1.確定driver有載入系統
    2.自行建立device node (用mknod)

    接著寫資料給SPI driver以示波器看有沒有信號.

    回覆刪除
  4. 您好:
    TI 官方的kernel source我再設定config時,似乎沒有mini v3的config。所以可能要自己porting,那要怎麼porting呢,我還沒有這方面的經驗,請高手指點一下!!!謝謝您!!
    [版主回覆12/31/2010 17:42:09]建議你還是在2.6.28上搞SPI會比較妥當.

    Porting的細節與問題很難一一說明.
    基本上就是找一個相近的硬體config來參考複製(mini v3 以 beagleboard config 最適合)

    回覆刪除
  5. 您好!!有問題想請教大大,我在Terminal端輸入nand erase把u-boot給洗掉了,我上google查詢並嘗試了各種方法,有些文章是說只要在SD卡上面放MLO、u-boot.bin、uImage,另外還有文章是寫要在SD卡上放置x-load.bin.ift、MLO、u-boot.bin、flash-uboot.bin、uImage、randisk.gz等等,想請問這些放法有什麼差別呢,請問有沒有相關的參考網址可以提供給我。另外就是這兩種方法我都試過,檔案放到sd卡後按著user插電,但就是讀不到x-load等開機檔案,是否也能提供一下方法呢?
    [版主回覆02/16/2011 15:11:42]差別只有從NAND boot or SD Card boot.
    你需要先從SD Card boot進入u-boot再將x-loader / u-boot寫入nand flash.
    請仔細閱讀並製作SD Card. http://elinux.org/BeagleBoardBeginners

    MLO : x-loader for boot from SD Card
    x-load.bin.ift : x-loader for boot from nand flash

    兩個都要copy到SD card, boot之後再將x-load.bin.ift寫入nand flash
    其他u-boot.bin, uImage等是沒有分別的


    回覆刪除