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

准备工作:

1.编译蜂鸟专用 uboot (主要是为了激活网卡。如果不想编译uboot,可以参考后面安装 NAND 镜像的解决方案)
说明:蜂鸟GMAC电源由 GPIO 口控制。蜂鸟 SDK 会在内核GMAC模块 sunxi_gmac.ko 初始化时候,读取 3g_para.gmac_pwr ,然后设置此 GPIO 口设为 1。而 cubietruck 硬件的 GMAC 电源不由 GPIO 口控制,所以 cubietruck 的内核GMAC模块不会打开电源。
编译器推荐 GCC linaro 4.6

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-gnueabi-
make CROSS_COMPILE=arm-linux-gnueabi-
编译完成后会生成 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,并解压
 
 
3.从 蜂鸟A20 中提取硬件配置文件
注意: 蜂鸟自带 sys_config.fex 并不完全适用于 cubietruck 系统。
比如:
wifi 驱动,蜂鸟的驱动会读 ap6xxx_wl_host_wake,但 cubietruck 的驱动会读 gpio_pin_2;
gmac 驱动,蜂鸟的驱动会载入时候读 gmac_pwr, 但 cubietruck 压根不用 GPIO 控制 GMAC 电源;
 

刷机步骤:

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..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= seek=
 
4.此时能看到SD卡被分为2个区了 。通过 fdisk -l 可以看到 两个分区,我这里是 mmcblk0p1 和 mmcblk0p2
 
5.修改 script.bin
需要修改 usbc 节点的配置(cubietruck 的配置导致只有一个USB口可用)
[usbc0]
usb_used = 1
usb_port_type = 2
usb_detect_type = 1
usb_id_gpio = port:PH04<0><1><default><default>
usb_det_vbus_gpio = "axp_ctrl"
usb_drv_vbus_gpio = port:PB09<1><0><default><0>
usb_ac_enable_gpio = port:PH05<1><0><default><0>
usb_restrict_gpio = 0
usb_host_init_state = 0
usb_restric_flag = 0
usb_restric_voltage = 3550000
usb_restric_capacity= 5 ;-------------------------------------------------------------------------------
;--- USB1控制标志
;------------------------------------------------------------------------------
[usbc1]
usb_used = 1
usb_port_type = 1
usb_detect_type = 0
usb_drv_vbus_gpio = port:PH02<1><0><default><0>
usb_restrict_gpio =
usb_host_init_state = 1
usb_restric_flag = 0

SATA 电源管脚 (注意,audio占用了 PH15口,需要禁用它)

[sata_para]
sata_used = 1
sata_power_en = port:PH15<1><default><default><1> [audio_para]
audio_used =
audio_pa_ctrl = port:PH15<1><default><default><0>

注意:以上只是常用的 GPIO 口,其它 GPIO 口可能也存在配置不正确的,这就需要你自己对照 Merri 蜂鸟 的电路图的管脚去核对了。

备注:如何修改 script.bin,可参考 http://docs.cubieboard.org/tutorials/common/edit_the_system_configuration 。

 
 

注意:

当前镜像启动参数有点问题,需要挂载 SD-card 第一个boot分区,修改启动参数(错误的设置为第2个sd卡了) 
mount ${card}p1 /mnt
vi /mnt/uEnv.txt
修改 root 的值,从 mmcblk1p2 改为 mmcblk0p2
root=/dev/mmcblk0p2
umount ${card}p1
 
 
 

刷 NAND 版本:

蜂鸟A20开发板刷 cubietruck 的 nand 版本后可正常启动 wifi,但网卡没法启动。报错如下
 
root@cubietruck:~# ifconfig eth0 up 
<6>sunxi_gmac: probed 
<4>eth0: No PHY found 
 
这里不修改uboot (因为 sunxi uboot nand 版很简单就是把全志 uboot 的 nand 作了开源替换,而且也不是活跃开发状态),改用内核模块 gpio_sunxi 驱动网卡。
修改 script.bin
[gpio_para]
gpio_used = 1
gpio_num = 2
; gmac power
gpio_pin_1 = port:PH16<1><default><default><1>

在 /etc/rc.local 中的 exit 0 前插入

echo  > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio1_ph16/direction
echo > /sys/class/gpio/gpio1_ph16/value
sleep 5 && ifconfig eth0 up # 稍微延迟等待 gmac 驱动加载成功后再启用网卡

重启即可

 
 
 
 
 参考文档:
http://sunxi.org/Bootable_SD_card
http://linux-sunxi.org/GPIO
http://docs.cubieboard.org/tutorials/common/edit_the_system_configuration
 

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

  1. S5PV210开发板刷机(SD卡uboot、串口+USB-OTG刷机方法)

    一.介绍 九鼎的S5PV210开发板,在出厂前已经默认刷了Android4.0系统.如果需要刷其它的系统或者是由于系统问题无法启动时,就需要对板子刷机. 其实,刷机是对210开发板的一个基础学习,目的 ...

  2. 全志A20芯片用于启动的SD卡的布局

    起始 大小 内容 0 8KB 存放分区表等 8 24KB SPL loader 32 512KB u-boot 544 128KB environment 672 352KB 保留 1024 - 用于 ...

  3. S3C2416裸机开发系列十六_sd卡驱动实现

    S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子    1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...

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

    目前面对高性能产品的嵌入式开发中,用SD卡来代替以往的JLINK显得备受大家喜欢,而且MCU厂家也对以SD卡启动的支持度越来越大,反而对JLINK不在那么重视(不过依旧保留着).一些以开发开发板的公司 ...

  5. 使用Arduino和SD卡模块记录数据并导出到Excel

    在本篇文章中,我们将学习如何基于Arduino开发板使用一个SD卡模块.同时结合DS3231实时时钟模块,我们将制作一个数据记录仪的示例,在示例中,我们将温度传感器的数据存储到SD卡中,并将这些数据导 ...

  6. SD卡报错“error -110 whilst initialising SD card”

    目前开发遇到了某些SD卡和TI的SOC芯片的驱动不协调的地方,具体表现为: uboot 阶段初始化mmc dev 1 没有任何串口信息输出,无法读写mmc Kernel阶段报错”SD卡初始化失败 er ...

  7. 荣品RP4412开发板烧写Ubuntu系统应注意SD卡内存大些

    问:RP4412开发板用SD卡烧写光盘中的fastboot失败,现在如何补救呢? 答:INAND格式化, 利用usb来升级啊, 也有文档,看升级文档. 问: 这个是怎么回事? 答:你是升级什么系统? ...

  8. Android开发之下载Tomcat服务器的文件到模拟器的SD卡

    Tomcat服务器可以到Apache的官网去下载http://tomcat.apache.org/,如何配置和使用百度下也有很多介绍,只要把Java的SDK配下java_home环境变量就行了,因为T ...

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

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

随机推荐

  1. WebStorm JavaScript 开发神器

    WebStorm 百度百科 http://baike.baidu.com/view/5443872.htm?fr=aladdin

  2. 剑指offer-面试题22.栈的压入,弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第 二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等. 例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1 是该压栈 ...

  3. HDU 1272 小希的迷宫(并查集) 分类: 并查集 2015-07-07 23:38 2人阅读 评论(0) 收藏

    Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就 ...

  4. 【HTML+CSS】浅谈:相对定位与绝对定位

    相对定位和绝对定位 ·定位标签:position  ·包括属性:relative(相对) absolute(绝对) 1.position:relative; 假设对一个元素进行相对定位.首先它将出如今 ...

  5. 并行任务task

    http://msdn.microsoft.com/zh-cn/library/dd537609(v=vs.110).aspx http://www.cnblogs.com/yangecnu/p/So ...

  6. ACdreamOJ 1154 Lowbit Sum (数字dp)

    ACdreamOJ 1154 Lowbit Sum (数位dp) ACM 题目地址:pid=1154" target="_blank" style="color ...

  7. apache的keepalive和keepalivetimeout

    在APACHE的httpd.conf中,KeepAlive指的是保持连接活跃,类似于Mysql的永久连接.换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避 ...

  8. synchronized关键字的用法

    synchronized用于给方法或者块加锁用的,只有获得该对象或者块的锁的对象才能够执行里面的代码,否则将阻塞在那里,等待该锁被释放,然后获得该锁继续执行.比如下面模拟售票的代码: /** * 模拟 ...

  9. React-Native之ViewPagerAndroid的使用

    刚接触React-Native不久,我就被深深折服了. 前几天做项目用到了ViewPager做广告页,在研究了一番官方文档之后,终于也是大体做出来了,今天就分享给大家吧. 其实,大家如果使用过Andr ...

  10. P - A + B(第二季水)

    Description          读入两个小于100的正整数A和B,计算A+B.                 需要注意的是:A和B的每一位数字由对应的英文单词给出.             ...