Model Me, Model World

Model Me, Model World

Blayground

PcDuino Acadia 刷机

刷机前准备

查看刷机前的内核版本

root@Acadia:~# uname -a
Linux Acadia 3.0.35-2666-gbdde708 #218 SMP PREEMPT Thu Dec 18 22:32:36 PST 2014 armv7l armv7l armv7l GNU/Linux

查看 CPU 信息

root@Acadia:~# cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 10 (v7l)
processor       : 0
BogoMIPS        : 790.52

processor       : 1
BogoMIPS        : 790.52

processor       : 2
BogoMIPS        : 790.52

processor       : 3
BogoMIPS        : 790.52

Features        : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc09
CPU revision    : 10

Hardware        : Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board
Revision        : 63012
Serial          : 200a59d4dbc84ce6

尝试理解刷机到底会覆盖那些内容

首先查看挂载点信息

root@Acadia:~# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,mode=600 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /run tmpfs rw,nosuid,noexec,relatime,size=76488k,mode=755 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0

内部存贮剩余空间

root@Acadia:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.3G  1.6G  5.3G  24% /
none             75M  256K   75M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            374M     0  374M   0% /run/shm

也就是说/dev/root是存储的主设备。从硬件上看应该就是一块 SanDisk 的 emmc。

查看其他/dev 设备

即使没有连接外部存贮设备,/dev/sda还是会存在与/dev下。此时如果尝试mount该设备或者读取相关信息将会失败。

root@Acadia:~# ls /dev/sd*
/dev/sda  /dev/sda1
root@Acadia:~# fdisk /dev/sda
fdisk: unable to open /dev/sda: No such device or address

在 USB 口插入 U 盘后便可以直接挂载/dev/sda1

寻找 emmc 在何处

在 Linux 中闪存设备一般都会以 mmcblk 开头出现在/dev下。下面的设备中很多都与上面的/dev/sda类似,只是 placeholder。

root@Acadia:~# ls /dev/mmcblk*
mmcblk0       mmcblk0p1     mmcblk0p4     mmcblk0p7     mmcblk1
mmcblk0boot0  mmcblk0p2     mmcblk0p5     mmcblk0p8     mmcblk1p1
mmcblk0boot1  mmcblk0p3     mmcblk0p6     mmcblk0p9     mmcblk1p2

mmcblk0便是板上对应的 emmc flash 了,其大小将近 8GB。

root@Acadia:~# fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 7944 MB, 7944011776 bytes
4 heads, 16 sectors/track, 242432 cylinders, total 15515648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1           40960    15515647     7737344   83  Linux

mmcblk1只是一个 placeholder 而已。

root@Acadia:~# fdisk /dev/mmcblk1
fdisk: unable to open /dev/mmcblk1: No such device or address
root@Acadia:~#

开始刷机

下载相应的 img 文件,并将其dd到一块 microSD 卡上。 下面的那个文件是用来烧写 emmc 用的。 烧写前将拨码开关改成2,7为 on 的状态,此时会从正面 sd 卡读取。 如果开关在1,7,会从背面 sd 卡槽读取。

Yuanzhang@YIF ~$cd down
Yuanzhang@YIF down$dd if=acadia_ubuntu12.04_v1.0_tf_burn_emmc.img of=/dev/sdc bs=1M
500+0 records in
2500+0 records out
2621440000 bytes (2.6 GB) copied, 610.39 s, 4.3 MB/s

当然,如果使用acadia_ubuntu12.04_v1.0_tf_hdmi同时按照上述方法设置拨码开关便能从 sd 卡中直接 boot 起来,而不是刷写到 emmc 中。

结束

将拨码开关恢复到1,2,4,7on 的状态,此时将从 emmc 中 boot。

参考

Source 1

Source 2

Blog maintained by Tao J

No longer hosted on GitHub Pages — Theme by mattgraham