====== ファームウェアの更新 ======
===== 本体ファームウェアの更新 =====
==== bootloaderからの更新 ====
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
・・・・
\\
==== Linuxからの更新 ====
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.
これで完了です。\\
次回から、更新したファームウェアの面で起動します。
\\
=== firmup コマンドについて ===
Linux で動作する firmup コマンドの書式は下記のとおりとなっています。
user1@plum:~$ sudo firmup --help
[sudo] password for user1:
### MA-E3xx series firmware update utility (for 2-area firmware).
usage: firmup [0|1|c|o]
update area selection:
0/1 : area0/area1
c : current
o : other
user1@plum:~$
\\
アップデートするファームウェアファイルの形式によっては、ファームアップ対象のエリアを明示的に指定することができます。
^ エリア指定 ^ アップデート対象 |
| 0 |エリア0 |
| 1 |エリア1 |
| c |現在使用中のエリア |
| o |現在使用中でない方のエリア |
ルートファイルシステムの更新を含まない場合に限り、更新する対象のエリアを指定することが可能です。\\
ルートファイルシステムの更新を含む場合、更新対象は現在使用中でないエリアに限られます。
\\
===== LTE Module ファームウェアの更新 =====
ファームウェア更新をサポートしている LTE Module((現時点では、AMTelecom 製 AMM570/AMP520 がサポートしています)) は、Linux 上でファームウェアの更新が可能です。\\
[[download_software:lte_module:start|ここ]] からファームウェアのファイルをダウンロードし、''firmup'' コマンドで本体ファームウェア更新と同じように実行してください。
\\