mini2440をいじりはじめる2009年08月15日 23時31分05秒

開発機材一式

あるところからMINI2440をあずかってしまいました。

最終目的はandroidのポーティングですが、本体をあずかったのみで、それ以外の作業状況などの状態がわからん。

開発環境の準備

Linuxな開発環境が必要なので、今回は以下のような準備をすることにしました。

  • PCはAcer Aspire One(初代)をメインに考える
  • ubunto Linux 9.04 USBブート版(MicroSDHC16GB+USB Reader/Wriger)
  • 開発用領域として外付けUSB HDD(NTFS,18GB)
  • ※ubuntu LinuxではNTFS領域へ書き込めることを確認済み
  • USB HDDのデータ退避、というか母艦に移動
  • ubuntuのアップデート(しばらく触っていなかったので)

・・・とこの程度でも最初の一晩というか1日目終了。

MINI2440の状態の確認

ドキュメントによると2MB NOR Flashと64MB NAND Flashの2種類のFlashが搭載され、スイッチによりどちらから起動するのかが選択できるとのこと。

スイッチの存在はわかるがどっちがどっちなのかの説明がない。 これは起動してみるしかないのか・・・・

あずかった状態での起動では以下のようになる。

U-Boot 1.3.2-mini2440 (Jul  8 2009 - 13:25:23)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  64 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0
trying to detect SD Card...
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
MMC found. Card desciption is:
Manufacturer ID = 000000
HW/FW Revision = 0 0
Product Name =
Serial Number = 000000
Month = 0
Year = 1997
===============> MMC CMD Timeout
===============> MMC CMD Timeout
READ_BL_LEN=0, C_SIZE_MULT=0, C_SIZE=0
size = 0
===============> MMC CMD Timeout
===============> MMC CMD Timeout
===============> MMC CMD Timeout
mmc_block_read: err SDIDSTA=0x00000020
===============> MMC CMD Timeout
===============> MMC CMD Timeout
mmc_block_read: err SDIDSTA=0x00000020

** Unable to use mmc 0:1 for fatload **
Wrong Image Format for bootm command
ERROR: can't get kernel image!
MINI2440 #

スイッチを切り替えて起動すると以下のようになる。 メニュー表示のあと「b」を入力してみた結果です。

##### FriendlyARM BIOS for 2440 #####
[x] bon part 0 320k 2368k
[v] Download vivi
[k] Download linux kernel
[y] Download root_yaffs image
[c] Download root_cramfs image
[a] Absolute User Application
[n] Download Nboot
[e] Download Eboot
[i] Download WinCE NK.nb0
[w] Download WinCE NK.bin
[d] Download & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the nand flash
[p] Partition for Linux
[b] Boot the system
[s] Set the boot parameters
[t] Print the TOC struct of wince
[u] Backup NAND Flash to HOST through USB(upload)
[r] Restore NAND Flash from HOST through USB
[q] Goto shell of vivi
Enter your selection: b
Copy linux kernel from 0x00050000 to 0x30008000, size = 0x00200000 ... done
Warning: this binary is not compressed linux kernel image
zImage magic = 0xffffffff
Setup linux parameters at 0x30000100
linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
MACH_TYPE = 782
NOW, Booting Linux......

ま、どっちも工場出荷時状態とは違う気がしますね。 人から預ったものを返す時は元に戻す必要があるので、この状態をとりあえず保存したいのだが・・・・・

U-Bootの状態

最初の起動状態のU-Bootの起動は恐らくNAND Flashからの起動。エラーが出ているけどどういう起動をしたかったのかというところをprintenvコマンドに聞いてみる。

MINI2440 # printenv
bootdelay=3
baudrate=115200
ethaddr=08:08:11:18:12:27
ipaddr=10.0.0.111
serverip=10.0.0.4
netmask=255.255.255.0
usbtty=cdc_acm
mtdparts=mtdparts=mini2440-nand:256k@0(u-boot),128k(env),5m(kernel),-(root)
mini2440=mini2440=0tb
bootargs_base=console=ttySAC0,115200 noinitrd
bootargs_init=init=/sbin/init
root_nand=root=/dev/mtdblock3 rootfstype=jffs2
root_mmc=root=/dev/mmcblk0p2 rootdelay=2
root_nfs=/mnt/nfs
set_root_nfs=setenv root_nfs root=/dev/nfs rw nfsroot=${serverip}:${root_nfs}
ifconfig_static=run setenv ifconfig ip=${ipaddr}:${serverip}::${netmask}:mini2440:eth0
ifconfig_dhcp=run setenv ifconfig ip=dhcp
ifconfig=ip=dhcp
set_bootargs_mmc=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_mmc}
set_bootargs_nand=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nand}
set_bootargs_nfs=run set_root_nfs; setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nfs} ${ifconfig}
mtdids=nand0=mini2440-nand
bootcmd=mmcinit; fatload mmc 0:1 0x32000000 uImage.bin; bootm 0x32000000
bootargs=console=ttySAC0,115200 root=/dev/mmcblk0p2 init=/init rootfstype=ext3 rw mini2440=0tb rootdelay=3 nohz=off noinitrd
partition=nand0,0
mtddevnum=0
mtddevname=u-boot

Environment size: 1209/65532 bytes
MINI2440 #

SDカードのパーティションを分けて2番目のパーティションにext3なrootファイルシステムをおく必要があるみたいですね。

・・・とこの程度でもニ晩目終了。 これに専念しているわけでもないので勘弁して。

ちなみにこの作業が割り込んだ影響でペルセウス座流星群の観測、兼、モータードライブテストは流れてしまいました。