找回密码
 立即注册
查看: 9302|回复: 39

猫盘 (ARMADA A3720) 刷机教程(搬运)

[复制链接]

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
发表于 2019-10-1 08:52:21 | 显示全部楼层 |阅读模式
本帖最后由 picc745514 于 2019-10-1 09:11 编辑 7 ?6 j4 O! a4 a# q+ g! }! p
  k3 o6 y/ }/ l7 P# U
违规没有?版主。。。。。! T" c- [3 D  M: U
原作者 hanwckf 原地址https://www.jianshu.com/p/77e529fb35f94 g' M" T2 S' u$ s7 t9 F3 c
简介
猫盘又是一款矿难机,配置如下
  • CPU: Marvell ARMADA A3720 1.0Ghz 2xCortex-A53
  • RAM: 512M DDR3
  • eMMC: 8G HS200
  • 网络: Marvell 88e1512 千兆phy
  • 外设: 原生SATA,主板引出USB2.0和TTL,带1个风扇和aw2013控制的三色LED
  • 电源: 5V3A
    # c" ]9 Z2 v3 [5 U, J0 s6 S
由于espressobin开发板的配置与本机器比较接近,所以内核是通用的,但是需要适配dts,适配好的dts请看参考资料里面的Github仓库
Marvell目前提供有4.4和4.14的bsp内核(猫盘原厂固件就是4.4bsp内核),另外linux主线内核对armada的支持也不错,espressobin的armbian固件就是采用主线内核(4.19 LTS),我会尽快更新build-catdrive加入4.19内核的armbian固件(此固件不重新编译内核,仅适配dtb,因此phy的LED不会闪烁,三色LED也不工作)
在build-catdrive中的其他固件均采用Marvell的4.14 bsp内核,已经加入了aw2013的驱动,LED正常工作,可以通过sysfs控制,在系统poweroff之后LED熄灭。另外网口的LED灯也会闪烁。
猫盘通过spi nor flash启动的,rootfs放在emmc中,若不慎刷砖,只需用编程器刷spi flash即可救砖
原厂的uboot无法保存环境变量(复位后自动恢复默认env),因此需要刷入新的uboot,然后在新uboot中启动U盘/硬盘的临时系统,最后将新的rootfs镜像写入emmc

资料下载(刮刮码)
  • flash-image.bin https://github.com/hanwckf/bl-armada-3720/releases/tag/v2019-07-22
  • img镜像 https://github.com/hanwckf/build-catdrive/releases/tag/v2019-09-17
  • 原厂资料备份,提取码: qc7c https://pan.baidu.com/s/1yikyr60_VpbHhOgpH8crgw- N) e+ U) `% e4 L6 \& S

准备工作
  • 空的2.5寸硬盘(需要移动硬盘盒或者易驱线)或U盘(需要将USB母座接到主板上的USB排针上,见下图)
  • USB转TTL线,如ch340等,按下图接线,波特率为115200,注意千万别接VCC
    8 w0 j: f. B% V1 x( X# p' s/ S
1.png , d4 B% N& O% m  u' j
1 T/ }9 N+ [- @2 @+ Z
UART与USB排针2 k6 o- y: ?2 x6 o8 a" c0 H3 K8 G

& ^' |# t+ j' K+ X" @4 K" B/ f
刷入uboot: 方法1
  • U盘/硬盘格式化为mbr的ext4或fat32分区,将flash-image.bin复制到其根目录下,然后插到猫盘上
    ; M2 |8 x- q1 i接好TTL后上电,在倒计时结束前反复按回车进入原厂uboot4 z* H8 n, B  E. z
    在uboot控制台依次输入以下命令:  d' u9 S0 Z7 B- d
setenv bootargs "console=ttyMV0,115200 root=/dev/mmcblk0p1 rootwait rw init=/bin/sh"ext4load mmc 0:1 0x1000000 boot/armada-3720-customer0.dtb( N' c! d4 D7 f
ext4load mmc 0:1 0x2000000 boot/Image9 p9 x0 T8 g5 b# C' m! p
booti 0x2000000 - 0x1000000' o& J# o1 V. d0 R" ?  t
等待系统启动完成进入无需登陆的shell
  • 进入shell后依次输入以下命令(这一步是把flash-image.bin复制到emmc的第2分区上)4 h" ]% k- f% l! m3 Q+ K1 r0 [
    当同时插入U盘和硬盘的时候,有可能需要挂载/dev/sdb1! B2 N" X1 I5 H$ X; j) z
mount -t proc /proc
7 |4 P- q* q% h4 K' u0 Gmount /dev/mmcblk0p2 /media
# G) X8 x7 w2 V" w  z+ Kmount /dev/sda1 /mnt: i& m" v. L% x7 @3 y9 p
cp -f /mnt/flash-image.bin /media
2 P3 s" p' v- O, s6 r0 W0 [- mumount /media( B5 \3 v0 B) |) ~$ o2 R! l
umount /mnt
2 x0 S. N' X% x/ n" o
然后直接拔电
  • 上电,在倒计时结束前反复按回车再次进入原厂uboot
    ; q# x" U) T: G/ S9 I在uboot控制台依次输入以下命令 (切勿在uboot控制台中反复按回车)
    * e9 K( ^& y. B  d$ a
ext4load mmc 0:2 0x1000000 flash-image.bin+ g! i# H4 J$ t  Z3 p/ g& v
sf probe
0 R( q" p+ U+ z' y' U" m. Jsf erase 0x0 0x200000
" J% U/ j$ e( R0 `  d: _sf write 0x1000000 0x0 0x2000009 I* w( Q" c# g0 t  ^/ s
& [; O% J+ e* T
  • 确保上一步的命令正常执行完毕之后,输入reset复位,然后在倒计时结束前反复按回车进入新uboot
    8 l. g- R- c& M0 e5 [( @7 G2 d5 k& [在uboot控制台依次输入以下命令,注意mac地址要改成你自己的
    2 a8 W' B" x& Y# O. y. V
env default -a, l4 h0 }+ }# @8 x( t
setenv ethaddr "4c:65:a8:10:e2:55"/ S: y, z" R# v6 b* }  r* H
saveenv
' T" \1 q. d; P8 n; B. R此时新uboot已经部署完毕,可以直接拔电准备下一步操作

刷入uboot: 救砖
如果在常规步骤中操作失误,导致上电后不能进入uboot控制台,则需要拆下板子上面的spi flash, 用编程器将flash-image.bin写入spi flash, 再焊回去, 之后按照常规操作的第4步恢复环境变量和mac地址即可
1 t$ r$ F4 Y. O& T$ i除此之外,还可以使用A3700-utils中提供的wtptp串口工具救砖(需要Linux环境),具体操作请看参考资料

刷emmc
确保已经正确刷入新uboot,将img镜像解压后用etcher或者其他工具写入硬盘或者U盘, 插回板子上
  • 对于硬盘刷机:
    ( m- H& M: z# Q) n) {$ B上电,在倒计时结束前反复按回车进入新uboot
    1 s1 h. j9 f9 F在uboot控制台依次输入以下命令:
  • setenv boot_targets "sata mmc0 usb"$ d; Q( S% s( Z$ F( o/ }+ [! T
    boot
    & s- d7 U4 z3 y+ C5 ]
  • 对于U盘刷机:
    - C" ^$ t  w$ H6 W插好U盘后直接上电即可
    " K; y" y* z& ]8 A  V
进入U盘/硬盘的临时系统后(应该是一个alpine,用户名:root;密码:admin),运行
emmc-install.sh
等待刷入完成,然后输入poweroff关机,输出示例如下:

- w: [! M9 w) I" k& {) a# h0 L$ C
alpine:~# emmc-install.sh
flash emmc...
1000MiB 0:00:33 [29.8MiB/s] [================================>] 100%            
7+7144 records in
7+7144 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 34.5134 s, 30.4 MB/s
flash done, please unplug USB drive and reboot now!
alpine:~# poweroff

; _) |8 A. X- Z: S
如果是用U盘刷机的话则需要拔掉U盘后再启动,即可进入新系统,而对于硬盘刷机则无需拔除硬盘,可在新系统中直接将其格式化
在刷好新uboot之后,若要刷入build-catdrive中的其他linux发行版,直接从刷emmc这一步开始即可" b4 F- H2 \- p$ g
由于猫盘内存较小,建议设置1GB的swap,具体操作请看下面

系统相关设置
  • 设置swap& L1 @% r( J$ Y, z! v8 w4 x

    0 X! c2 P2 ]$ d* j/ y' n9 Y# b( }3 O! Z: Y
    ' J( w) m9 O( i5 J3 n* K2 s
    dd if=/dev/zero of=/swapfile bs=1M count=1000 #创建1GB的swap
    7 R) o9 H) h: }4 o( Zchmod 600 /swapfile
    ! x; x$ S  ?: d4 Xmkswap /swapfile1 b& u7 W( A2 X9 ~" R% \5 g
    echo "/swapfile swap swap defaults 0 0" >> /etc/fstab! Q  V3 A" Y. f
    , ~. J( ~8 q* G4 L6 w

      |8 r% f8 e* i! T" O3 Y0 |: `/ {9 E
    5 {' K7 @9 i% n: W
    ( s* d. {6 V$ ~风扇控制(主线内核不可用)2 P9 }& T/ c0 N

    0 H7 S! m7 Y5 L% P( C
    . G. C5 `! o) I& o+ A
    ; K. ^. b6 X; n+ X5 _2 mecho 0 > /sys/class/thermal/cooling_device0/cur_state  #关闭风扇
    0 I( C9 P  c! fecho 1 > /sys/class/thermal/cooling_device0/cur_state  #打开风扇6 [* C6 E) w0 A

    / S% C, ]$ h, S1 f

    8 r: U& i5 Q5 c
    ' S, ^0 I/ H1 v4 S5 y; ^1 O1 P: A1 \5 |$ d* m( H6 K  [
    LED灯控制(主线内核不可用)
    5 P$ A# Q: X- _- W
    ! Q$ g5 E) s* S3 P8 M- S2 ^. o

    5 V: U: x/ P' D4 _1 C: h' Hecho 0 > /sys/class/leds/blue/brightness  #关闭蓝灯. T, o0 a7 e( F5 s
    echo 255 > /sys/class/leds/green/brightness  #点亮最高亮度的绿灯- A$ r: K, s/ v* F' E
    echo 128 > /sys/class/leds/red/brightness  #点亮中等亮度的红灯
    $ H. E) F# L# C) G6 Q+ }5 Xecho 2 > /sys/class/leds/red/blink #点亮红色呼吸灯,可设为其他值
    # r4 c# \/ |2 j$ R, |6 \, iecho 0 > /sys/class/leds/green/blink #关闭绿色呼吸灯+ u& ?, j) u* W% q$ d# P

    / {4 F% x# O3 y( F" U

    % F, r$ C/ w( u" n2 Q
    3 \) R- t6 E' Q: l
    " b! v  Z$ V& Q1 |硬盘休眠( F' ~2 u- Y% Z* p& z
    build-catdrive中的固件已经设置好10分钟无操作自动休眠硬盘,如果需要调整时长,请修改/etc/udev/rules.d/99-hdparm.rules里面的hdparm -S之后的参数,默认值是120(10分钟)
    + _3 y: V% f: U7 y- ~0 F/ E# o
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*",ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", RUN+="/sbin/hdparm -S 120 $env{DEVNAME}"
  • 读写uboot环境变量
    ( @" o' M: a7 O' @5 _2 N
fw_setenv foo barfw_printenv
uboot其他操作
  • 在新uboot里从U盘根目录中刷入uboot2 k& Q( I9 |9 V/ v! l" p8 j
bubt flash-image.bin spi usb
  • 在新uboot里从tftp中刷入uboot
    6 F3 T* m) ^, B3 K* r" |, f
setenv ipaddr 192.168.1.100 #设定本机
" C- Q: M3 {* w0 j, Cipsetenv serverip 192.168.1.2 #设定tftp服务器
! P0 @6 J$ R$ Qipbubt flash-image.bin spi tftp
  • 在新uboot里改变启动顺序
    ) N1 p1 g/ q5 @
setenv boot_targets "usb sata mmc0" #默认为usb->mmc0->satasaveenv
已知问题
  • 主线内核中无法控制风扇的gpio(会导致以太网phy重新复位),所以poweroff后风扇不停
    : `1 \1 `) u/ e4 @/ T

; G- a/ ?8 \2 t* K7 F6 L

3 j0 f( M( h4 M! ]' E
# m; _' e5 m2 ^+ k' i1 \9 p- D0 `* F9 v7 E4 N
% ^# u1 i( c7 @$ l

3 @2 g: d) m; w+ L% O
5 W" s5 j. \5 A+ {% h4 T% ~! `: P0 e. }% H

评分

参与人数 3经验值 +60 收起 理由
lyxq745514 + 20 神马都是浮云
longge123 + 30 很给力!
xxx + 10 赞一个!

查看全部评分

2

主题

66

回帖

69

积分

初级渣柚V2

积分
69
发表于 2019-10-1 08:58:16 来自手机 | 显示全部楼层
这个好像有大佬搬运过

5

主题

57

回帖

491

积分

中级渣柚V1

积分
491
发表于 2019-10-1 09:03:41 | 显示全部楼层
应该把命令部分 编辑一下,选择 插入命令 这样就能复制链贴,刷机的时候不会出错

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
 楼主| 发表于 2019-10-1 09:06:14 | 显示全部楼层
浪卡飞羽 发表于 2019-10-1 08:58
$ o# z3 E  [7 I/ v2 A; j这个好像有大佬搬运过
+ t/ ~3 e, r  [4 J
没注意哦,已经搬运了?

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
 楼主| 发表于 2019-10-1 09:06:38 | 显示全部楼层
xingjiwoniu 发表于 2019-10-1 09:039 Q! u4 L. i) J, ~* L6 P# {
应该把命令部分 编辑一下,选择 插入命令 这样就能复制链贴,刷机的时候不会出错 ...

  Q$ ]# u3 p! A坛子编辑器难用。。。。弄了一下

11

主题

126

回帖

454

积分

中级渣柚V1

积分
454
发表于 2019-10-1 09:14:16 | 显示全部楼层
支持一把

1

主题

33

回帖

290

积分

中级渣柚V1

积分
290
发表于 2019-10-1 23:06:12 | 显示全部楼层
努力灌水吧

8

主题

54

回帖

365

积分

中级渣柚V1

积分
365
发表于 2019-10-2 00:08:40 | 显示全部楼层
. R# a% p& c! H) }$ j: U
努力灌水吧

1

主题

19

回帖

191

积分

初级渣柚V2

积分
191
发表于 2019-10-2 00:09:15 | 显示全部楼层
来学习拿权限
  u# o; ]8 z  W5 L  b  W7 I
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2024-12-22 17:28 , Processed in 0.057143 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表