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 mmcblk1p2mmcblk0便是板上对应的 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 Linuxmmcblk1只是一个 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。