FATでフォーマットされたSDカードにファームウェアファイルをコピーして挿入し、電源を投入します。
自動起動待ちのプロンプトが表示されたら即Enterキーを入力し、自動起動を停止させます。
barebox 2013.12.0-00316-g4095a93 #487 Thu Mar 6 15:54:40 JST 2014 Board: plum-ma[512MiB] nand: ONFI param page 0 valid nand: ONFI flash detected nand: NAND device: Manufacturer ID: 0x01, Chip ID: 0xda (AMD/Spansion S34ML02G1), 256MiB, page size: 2048, OOB size: 64 omap-hsmmc omap4-hsmmc0: registered as omap4-hsmmc0 mci0: registered disk0 m25p80 m25p800: m25p16 (2048 Kbytes) i2c-omap i2c-am33xx0: bus 0 rev0.11 at 100 kHz cpsw cpsw0: detected phy mask 0xc mdio_bus: miibus0: probed eth0: got preset MAC address: D0:FF:50:B2:4A:90 malloc space: 0x8e000000 -> 0x9dffffff (size 256 MiB) Reset is caused by "Warm Reset". envfs: wrong magic on /dev/env0 no valid environment found on /dev/env0. Using default environment running /env/bin/init... * mounting /dev/disk0.0 to /boot (filesystem type: fat) * mounting /dev/disk0.1 to /mnt/mmc1 (filesystem type: ext4) ext4 ext40: EXT2 rev 1, inode_size 256 UBI: attaching mtd0 to ubi0 UBI: scanning is finished registering /dev/ubi0 registering kernel.0 as /dev/ubi0.kernel.0 registering kernel.1 as /dev/ubi0.kernel.1 registering initramfs.0 as /dev/ubi0.initramfs.0 registering initramfs.1 as /dev/ubi0.initramfs.1 registering kmod.0 as /dev/ubi0.kmod.0 registering kmod.1 as /dev/ubi0.kmod.1 registering rootfs.0 as /dev/ubi0.rootfs.0 registering rootfs.1 as /dev/ubi0.rootfs.1 registering opt as /dev/ubi0.opt registering overlay as /dev/ubi0.overlay UBI: attached mtd0 (name "nand0.UBI", size 255 MiB) to ubi0 UBI: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512 UBI: VID header offset: 512 (aligned 512), data offset: 2048 UBI: good PEBs: 2040, bad PEBs: 0, corrupted PEBs: 0 UBI: user volume: 10, internal volumes: 1, max. volumes count: 128 UBI: max/mean erase counter: 10/7, WL threshold: 4096, image sequence number: 7535 UBI: available PEBs: 0, total reserved PEBs: 2040, PEBs reserved for bad PEB handling: 40 Hit m for menu or any other key to stop autoboot: 1 type exit to get to the menu barebox@plum-ma[512MiB]:/
SDカードは自動的に /boot にマウントされます。
SDカードにコピーしたファームウェアファイルを指定して “firmup” コマンドを実行します。
引数は下記のとおりです。Linux 起動前でファイルシステムが mount されていないため、明示的にエリア (0 or 1) を指定することもできます。
指定しない場合、古いファームウェアが入っているエリアが自動選択されます。
barebox@plum-ma[512MiB]:/ firmup usage: firmup [firmware_file] <0|1> barebox@plum-ma[512MiB]:/
barebox@plum-ma[512MiB]:/ firmup /boot/firmware.img ### MA-E3xx series firmware updater firm area to write: 1 firm_dual: 1 * image file for "kernel" found. copying kernel image to /dev/ubi0.kernel.1 ... * image file for "kmod" found. copying kmod image to /dev/ubi0.kmod.1 ... * image file for "initramfs" found. copying initramfs image to /dev/ubi0.initramfs.1 ... * image file for "rootfs" found. copying rootfs image to /dev/ubi0.rootfs.1 ... * image file for "dtb" found. erasing /dev/spi.dtb.1 ... copying dtb(DeviceTree) image to /dev/spi.dtb.1 ... * image file for "barebox.bin" found. erasing /dev/spi.barebox ... copying barebox image to /dev/spi.barebox ... erasing barebox environments (/dev/env0) ... update finished.
これで完了です。
新しいファームウェアで起動できます。
barebox@plum-ma[512MiB]:/ boot booting nand firm_kind0: 1 firm_area0: 1 dipsw: 0 [5] boot with latest firmware succeeded. bootm.image: /dev/ubi0.kernel.1 bootm.oftree: /dev/spi.dtb.1 bootm.initrd: /dev/ubi0.initramfs.1 bootargs.dyn.root: root=AREA=1 aufs=tmpfs bootargs.dyn.watchdog: omap_wdt.start_at_boot=1 omap_wdt.timer_margin=120 bootargs.dyn.console: console=ttyO0,115200 boot_info: 0x11 bootargs.dyn.cleanboot i2c0: timed out on polling for open i2c message handling [3] ioctl(RTC_RD_TIME) failed, Connection timed out Image Name: Linux-3.14.0-rc5+ Created: 2014-03-06 0:35:27 UTC OS: Linux Architecture: ARM Type: Kernel Image Compression: uncompressed Data Size: 3292080 Bytes = 3.1 MiB Load Address: 80008000 Entry Point: 80008000 Loading OS U-Boot uImage '/dev/ubi0.kernel.1' Loading devicetree from '/dev/spi.dtb.1' plum_of_fixup: eXternal I/O board's ID is 0x03, fixup device-tree... commandline: ubi.mtd=0 mtdoops.mtddev=OOPS mtdoops.record_size=8192 zswap.enabled=1 root=AREA=1 aufs=tmpfs omap_wdt.start_at_boot=1 omap_wdt.timer_margin=120 console=ttyO0,115200 booting kernel with devicetree [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct ・・・・
sftpなどでファームウェアを実機に転送するなどして、ファイルを準備します。
root権限で “firmup” コマンドを実行します。
root@plum:~# firmup /tmp/firmware.img ### MA-E3xx series firmware update utility (for 2-area firmware). Updating AREA: 0 ... * image file for kernel found. writing "kernel" image to /dev/mtdblock2 ... succeeded. * image file for kmod found. writing "kmod" image to /dev/mtdblock6 ... succeeded. * image file for initramfs found. writing "initramfs" image to /dev/mtdblock4 ... succeeded. * image file for rootfs found. writing "rootfs" image to /dev/mtdblock8 ... succeeded. * DTB file found. writing "dtb" image to /dev/mtd15 ... succeeded. * Bootloader file found. writing "barebox.bin" image to /dev/mtd13 ... succeeded. Succeeded.
これで完了です。
次回から、更新したファームウェアの面で起動します。
Linux で動作する firmup コマンドの書式は下記のとおりとなっています。
user1@plum:~$ sudo firmup --help [sudo] password for user1: ### MA-E3xx series firmware update utility (for 2-area firmware). usage: firmup <firmware_file> [0|1|c|o] update area selection: 0/1 : area0/area1 c : current o : other user1@plum:~$
アップデートするファームウェアファイルの形式によっては、ファームアップ対象のエリアを明示的に指定することができます。
エリア指定 | アップデート対象 |
---|---|
0 | エリア0 |
1 | エリア1 |
c | 現在使用中のエリア |
o | 現在使用中でない方のエリア |
ルートファイルシステムの更新を含まない場合に限り、更新する対象のエリアを指定することが可能です。
ルートファイルシステムの更新を含む場合、更新対象は現在使用中でないエリアに限られます。
ファームウェア更新をサポートしている LTE Module1) は、Linux 上でファームウェアの更新が可能です。
ここ からファームウェアのファイルをダウンロードし、firmup
コマンドで本体ファームウェア更新と同じように実行してください。