蜂鳥A20開發板刷 cubietruck 的 SD 卡固件


美睿視訊 為蜂鳥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.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
 
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 = 0
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 1 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio1_ph16/direction
echo 1 > /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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM