蜂鸟A20开发板刷 cubietruck 的 SD 卡固件

美睿视讯 为蜂鸟A20准备的 MerriiLinux 功能非常简陋。所以能用上主流的 debian 或者 LUbuntu 就可以说是非常迫切的需求了。蜂鸟A20(Merrii Hummingbird A20)从硬件配置上来说非常接近 cubietruck ,相同的全志A20,相同的千兆PHY 芯片 RT8211E ,相同的wifi Bluetooth芯片 AP6210。但内存和闪存比 cubietruck 要小。

准备工作:

1.编译蜂鸟专用 uboot (主要是为了激活网卡)

git clone https://github.com/boytm/u-boot-sunxi.git # 我已经提交了merge request,成功后可以直接拷主分支的 https://github.com/linux-sunxi/u-boot-sunxi.git
make Merrii_Hummingbird_A20_config CROSS_COMPILE=arm-linux-gnueabihf-
make CROSS_COMPILE=arm-linux-gnueabihf-

编译完成后会生成 spl/sunxi-spl.bin,u-boot.img 以及整合了两者的 u-boot-sunxi-with-spl.bin 。

这里简单介绍下 uboot 和 SD 卡分区情况

sector start size
   0      0   8KB Unused, available for partition table etc.
  16      8  32KB Initial SPL loader
  80     40 504KB u-boot  (sector 64 / 32KB for 2013.07 and earlier)
1088    544 128KB environment
1344    672 128KB Falcon mode boot params
1600    800  ---- Falcon mode kernel start
2048   1024     - Free for partitions (higher if using Falcon boot)
Free for partitions 一般是 boot 分区 和 rootfs 分区(大小取决于发行版),这两个分区,可以通过分区表查看到,是正常的分区。

2.下载 cubietruck 的SD卡镜像 ct-lubuntu-card-v2.0,并解压

地址:http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-card-v2.0/server/tsd/ct-lubuntu-server-tsd-tfcard-v2.0.img.gz

3.从 蜂鸟A20 中提取硬件配置文件

刷机步骤:

1.确定SD卡设备的名称,如果是u盘连接,则这里是 /dev/sd[abcd] 之类

card=/dev/mmcblk0

2.刷入SD卡镜像 ct-lubuntu-card-v2.0 到 SD 卡

dd if=ct-lubuntu-server-tsd-tfcard-v2.0.img of=${card}

3.替换SD卡中 uboot 区域(Initial SPL loader 开始,free partition 之前) 为自己编译的 uboot

card=/dev/mmcblk0
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8

4.此时能看到SD卡被分为2个区了 。通过 fdisk -l 可以看到 两个分区,我这里是 mmcblk0p1 和 mmcblk0p2

注意:

当前镜像启动参数有点问题,需要挂载 SD-card 第一个boot分区,修改启动参数(错误的设置为第2个sd卡了)

mount ${card}p1 /mnt
vi /mnt/uEnv.txt

修改 root 的值,从 mmcblk1p2 改为 mmcblk0p2

root=/dev/mmcblk0p2

umount ${card}p1

后记:

我也试过刷 cubietruck 的 nand 版本进nand,但网卡没法启动,及时我替换掉 script.bin (虽然里面3g节点有个 gmac_pwr 描述)后也无法启动。报错如下

[email protected]:~# ifconfig eth0 up 
<6>sunxi_gmac: probed 
<4>eth0: No PHY found

但 wlan0 是可以正常启动的,执行 iwlist scan 可以扫到 wifi 列表。但 替换 script.bin 后,wifi 貌似就不工作了。原因待查

参考文档:

http://sunxi.org/Bootable_SD_card

时间: 2024-08-29 13:52:24

蜂鸟A20开发板刷 cubietruck 的 SD 卡固件的相关文章

制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统

转自网络,供学习记录使用,红色部分是我实验时,这篇文章和网站稍有出入的地方. 目的:制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统 在http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/quickstart/zynq(姑且把这个链接成为链接1吧)链接中找到 图1 点击绿色字体的链接,下载镜像原始文件.这里有不同时期的版本,本说明中选择 图2 下载的原始文件为:2014_R2-

嵌入式Linux裸机开发(十)——SD卡启动

嵌入式Linux裸机开发(十)--SD卡启动 存储设备分类: 磁存储设备:软盘.硬盘.光盘.CD.磁带 Flash:NandFlash.NorFlash 缺点:时序复杂,无坏块处理机制,接口不统一 NandFlash:MLC(可靠性差,容量大).SLC(可靠性高.容量小) 扩展卡式Flash:SD卡.MMC卡.MicroSD(TF卡) 内部为NnadFlash存储颗粒,外部封装了接口,接口标准统一.通用. 缺点:频繁使用导致卡槽接触不可靠 iNand.MoviNand.eSSD: 内部为Nand

android 开发:保存图片到SD卡上

1 byte[] bytes = decodeImagStr(imgString);//使用base64对图片进行解码 2 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//检查sd卡的状态 3 String pathDir= Environment.getExternalStorageDirectory()+ ConstantsForFile.TMP_FILE_DIRECTORY;//设定

全志A20 制作boot功能的SD卡

从这里开始:http://linux-sunxi.org/Bootable_SD_card

(待解决)开发板刷系统(一)---破坏bootloader以及从SD卡启动

开发板上默认在板载iNand中烧入了bootloader和Android系统镜像,如果想要从SD卡来启动,就必须先破坏掉iNand中的bootloader,让其校验失败,从而选择第二启动即从SD通道2启动. 破坏板载iNand中的bootloader的方法,可以参考九鼎的文档,其中提到的在Android平台下破坏iNand的bootloader的方法如下如所示: 执行上述指令后,在执行sync命令确保数据有效.解读下上面那条指令的意思: 输入文件是/dev/zero,输出文件是/dev/bloc

解剖嵌入式设备开发时以SD卡启动时SD卡的存储结构(以三星exynos4412为例)

目前面对高性能产品的嵌入式开发中,用SD卡来代替以往的JLINK显得备受大家喜欢,而且MCU厂家也对以SD卡启动的支持度越来越大,反而对JLINK不在那么重视(不过依旧保留着).一些以开发开发板的公司在提供他们自身的bootloader(只是其中一部分是他们自身的代码而已,下面我会讲到这一点)时其原码并不对外公开,不过大家喜欢的u-boot的原码是开源的,可是像友善之臂他们的那样,还得通过他们的superboot来把u-boot二进制代码载入到LAND FLASH,EMMC等这类外部rom设备中

Tiny6410_SMDK从SD卡直接启动裸板代码

今天折腾了一天终于可以可以直接从SD卡启动6410的裸板程序了,这也让我实现了完全在linux下开发裸板代码.详细过程如下: 1.通过查SMDK6410_IROM_APPLICATION NOTE_REV 1.00,可以查到如下 其中BL1是开发板自动运行的固件代码 从上可以知道应将代码烧到最后地址-(1025+1+16)*512字节处 2.测试代码如下: 1     .text 2     .code 32 3     .globl _start 4     _start: 5     ldr

S3C6410基于SD卡的裸机开发

手里只有一块OK6410开发板,一张8G的SD卡,没有相关的JTAG调试器,也没有集成开发环境可用,那如何进行裸机开发呢?查询开发的手册可知,6410芯片支持从SD卡启动,因此裸机开发就从SD卡开始. 1.开发环境的搭建 首先搭建虚拟机平台,安装Linux开发环境centos6.5,安装过程这里不再赘述. 2.交叉编译环境的安装 进入centos6.5,在/home目录下新建gnutools目录,将arm-linux-gcc-4.3.2.tgz(开发板的所带的资料)文件拷贝到 centos的/h

Android开发调试日志工具类[支持保存到SD卡]

直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; import java.text.SimpleDateFormat; impor