前不久从淘宝上淘来了一块二手的linux开发板,芯片AM3354,板载4GBMMC和512MBDDR3。内部烧录的是安卓2.3系统。正好最近想学Linux,就打算把它改成linux系统试试。试之前,肯定得把原系统备份一下,给自己留条后路。
板子预留有SD卡槽,所以我们可以使用外部SD卡备份系统。
首先找到板子上得LOG串口,接好线,使用USB转TTL接入电脑。打开串口工具,我这里用的CRT。上电,在上电瞬间狂点“↓”键,进入Uboot模式。
当你看到这样子,说明进入了Uboot模式了。因为我板子上的存储使用的MMC,所以使用MMC指令去读取内容。
1、我们首先下发
mmc dev 1
确保我们目前处于板载mmc,而不是外插的SD卡。
2、下发
mmcinfo
获取mmc信息,确保我们切换成功了。
3、下发
mmc part
获取存储分区
可以看到我的mmc被分为三个分区,
第一个分区起始扇区63,每一个扇区512字节,则大小为144522*512B~=70.5M,类型为0c(FAT32)
第二个分区起始扇区144585,大小为947835*512B~=462.8M,类型为83(ext4)
第三个分区起始扇区1092420,大小为6538455*512B~=43192.6M,类型为0c(FAT32)
说明:一般第一个分区存放着Uboot、Kenerl等,第二分区存放文件系统,第三个分区为用户数据等
4、SD分区
有了以上信息,我们就可以找一张比它大的SD卡去备份系统了。首先我们下载一个DiskGenius.exe,去对我们的SD卡分区。
注意每个分区尽量大于等于原有分区,上图分区一,我是因为知道原有分区内容的大小。
5、系统拷贝
(1)将SD卡插入开发板的卡槽,按照上面的方法进入系统uboot。
(2)切换到板载MMC
mmc dev 1
(3)读取分区一内容
mmc read 80000000 3f 2348A
80000000是指内存DDR3的地址,3F即分区一起始扇区63的十六进制,2348A即分区一的扇区数量
当显示OK,说明读写完成。
(4)切换到SD卡
mmc dev 0
(5)确定SD卡分区
mmc part
可以看到,我们SD的分区一起始扇区也是63
(6)写入SD卡
mmc write 80000000 3f 2348A
正常是拷贝多少写入多少,但我这一里分区一只有1F5C9(128457的十六进制),便只写入1F5C9
当看到OK时,便可以将开发板断电,取出SD卡,插入电脑查看。其中FAT32分区可以在WINDOWN上直接用文件管理器查看,但EXT4便只能在DiskGenius或Linux中查看。
按照此方法,拷贝后面的分区二、分区三的内容,要注意每次拷贝不要超过内存的大小,比如我这里的内存只有512M,就每一次只能拷贝小于512M的内容。
我要拷贝的扇区大于512M怎么办?分多次拷贝就行,注意每一次拷贝和写入的起始扇区加上前一次拷贝的长度即可。
以上为个人经验,如有错误,欢迎指正。