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

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

[复制链接]

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
发表于 2019-10-1 08:52:21 | 显示全部楼层 |阅读模式
本帖最后由 picc745514 于 2019-10-1 09:11 编辑
4 p$ n, v1 R& d: N* m
9 s- n) c. u  E/ p6 X$ T' O违规没有?版主。。。。。* C( ]( Q# z6 z7 x# ~( ~
原作者 hanwckf 原地址https://www.jianshu.com/p/77e529fb35f9
: I2 E! |2 |( ^% |( e' X简介
猫盘又是一款矿难机,配置如下
  • CPU: Marvell ARMADA A3720 1.0Ghz 2xCortex-A53
  • RAM: 512M DDR3
  • eMMC: 8G HS200
  • 网络: Marvell 88e1512 千兆phy
  • 外设: 原生SATA,主板引出USB2.0和TTL,带1个风扇和aw2013控制的三色LED
  • 电源: 5V3A9 L. \3 f/ p: L- y) p$ @
由于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/ S* x$ j" f: e' g% }1 e8 O3 o

准备工作
  • 空的2.5寸硬盘(需要移动硬盘盒或者易驱线)或U盘(需要将USB母座接到主板上的USB排针上,见下图)
  • USB转TTL线,如ch340等,按下图接线,波特率为115200,注意千万别接VCC0 E7 l6 g0 g; k$ r4 x7 w. }9 p0 m( [
1.png
8 K9 r* x3 W9 y) [4 w' }' M
7 C9 M1 @( J6 d& w& M* R* F) o
UART与USB排针
0 M# q5 R! T  f/ `) n$ T. V! [

& G: _; _8 o7 f4 N6 ^4 E  B
刷入uboot: 方法1
  • U盘/硬盘格式化为mbr的ext4或fat32分区,将flash-image.bin复制到其根目录下,然后插到猫盘上1 L$ d3 P8 q; Z1 M& w
    接好TTL后上电,在倒计时结束前反复按回车进入原厂uboot# i! _( v% i) K
    在uboot控制台依次输入以下命令:
    % i8 A2 a3 Z' a0 U% \  ~
setenv bootargs "console=ttyMV0,115200 root=/dev/mmcblk0p1 rootwait rw init=/bin/sh"ext4load mmc 0:1 0x1000000 boot/armada-3720-customer0.dtb5 p% W- A; _" K
ext4load mmc 0:1 0x2000000 boot/Image5 F% I1 ?* J. X+ V( V1 w5 k
booti 0x2000000 - 0x1000000
! p- N# j) a* \6 @) E0 s
等待系统启动完成进入无需登陆的shell
  • 进入shell后依次输入以下命令(这一步是把flash-image.bin复制到emmc的第2分区上)# j* }0 Y) E8 h9 w, w
    当同时插入U盘和硬盘的时候,有可能需要挂载/dev/sdb1
    7 e9 S3 }$ F) X
mount -t proc /proc
! S. }+ Y% q/ `6 `mount /dev/mmcblk0p2 /media/ p6 p6 E* @, p2 ~3 {1 i4 G
mount /dev/sda1 /mnt. s9 ~# f# o0 d( Q# t# C) r% {
cp -f /mnt/flash-image.bin /media
/ B6 A& E& d, n% h6 u) X. p: p8 [umount /media
0 `. C. J* c# M; O0 R6 W4 h$ |umount /mnt
0 L" \3 v6 g( p" p- ]. M' w( j' p
然后直接拔电
  • 上电,在倒计时结束前反复按回车再次进入原厂uboot
    4 d# P4 ^* y1 E- f- Q0 d8 `在uboot控制台依次输入以下命令 (切勿在uboot控制台中反复按回车)
    ( i4 ^% D$ w9 N* [+ R& }
ext4load mmc 0:2 0x1000000 flash-image.bin
) o1 J6 ~+ u9 I3 G7 v# {sf probe
5 K: u" J( C; J, y/ xsf erase 0x0 0x200000
7 s. t; U+ X; K, esf write 0x1000000 0x0 0x200000
! {9 _1 x% ]1 S
/ m; v1 M4 T+ E& r
  • 确保上一步的命令正常执行完毕之后,输入reset复位,然后在倒计时结束前反复按回车进入新uboot
    9 S3 D) |- X1 p在uboot控制台依次输入以下命令,注意mac地址要改成你自己的) N$ G" a  r/ c5 T
env default -a
  D  C) j  r* I6 [( A1 Ksetenv ethaddr "4c:65:a8:10:e2:55"6 [; Q* g5 {( f$ k
saveenv
& e3 f4 X3 x" R# l. h此时新uboot已经部署完毕,可以直接拔电准备下一步操作

刷入uboot: 救砖
如果在常规步骤中操作失误,导致上电后不能进入uboot控制台,则需要拆下板子上面的spi flash, 用编程器将flash-image.bin写入spi flash, 再焊回去, 之后按照常规操作的第4步恢复环境变量和mac地址即可
: o7 }; v: W  `3 a8 J# `% C% n3 \2 A! J除此之外,还可以使用A3700-utils中提供的wtptp串口工具救砖(需要Linux环境),具体操作请看参考资料

刷emmc
确保已经正确刷入新uboot,将img镜像解压后用etcher或者其他工具写入硬盘或者U盘, 插回板子上
  • 对于硬盘刷机:
    7 b! P- A% u$ q! j上电,在倒计时结束前反复按回车进入新uboot. q5 u9 \# \3 {% `4 \$ Z# B
    在uboot控制台依次输入以下命令:
  • setenv boot_targets "sata mmc0 usb"+ G8 p4 I9 F! D% q5 @9 t
    boot

    0 Y$ {3 R+ C% Y, k: S' ^
  • 对于U盘刷机:
    ) M& y. i7 I, S. c. z4 X插好U盘后直接上电即可
    0 j6 F' n% M$ I
进入U盘/硬盘的临时系统后(应该是一个alpine,用户名:root;密码:admin),运行
emmc-install.sh
等待刷入完成,然后输入poweroff关机,输出示例如下:

. Y  M$ w1 i/ o* |1 O
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

+ u* h+ N: T6 G/ ]
如果是用U盘刷机的话则需要拔掉U盘后再启动,即可进入新系统,而对于硬盘刷机则无需拔除硬盘,可在新系统中直接将其格式化
在刷好新uboot之后,若要刷入build-catdrive中的其他linux发行版,直接从刷emmc这一步开始即可
* @( R6 s" \: ^由于猫盘内存较小,建议设置1GB的swap,具体操作请看下面

系统相关设置
  • 设置swap+ e  L% g" T- t+ w

    + l5 V5 Y/ ^* ?6 c3 \
    ( r6 H  j/ f$ D! m8 n; m% m" B5 p1 P: f! R  l3 t0 n" y
    dd if=/dev/zero of=/swapfile bs=1M count=1000 #创建1GB的swap/ u4 @" r( d: s, N
    chmod 600 /swapfile0 |1 S. M. B6 u( c& q7 p
    mkswap /swapfile
    ! l  |; m- n. j0 o1 V& Kecho "/swapfile swap swap defaults 0 0" >> /etc/fstab6 y3 P: d4 [$ [' _3 J8 \
    2 t( ?, C( V) Z' Z* i; I
    2 K8 b7 b! S8 c! r% e

    / ]* Z" C3 q6 e; a
    , Y. |# k/ e2 {; f; m5 i5 V5 S风扇控制(主线内核不可用)
    # j% E1 V/ O4 ^, j: q2 }

    2 t' Z, K' z3 Z% R5 t' u9 ^' [" ~: d3 M' z' v4 D

    5 q7 t, I  j3 m) Techo 0 > /sys/class/thermal/cooling_device0/cur_state  #关闭风扇
    & M* Z9 F. J6 H6 V" S6 f# `echo 1 > /sys/class/thermal/cooling_device0/cur_state  #打开风扇% Y; j1 C. t& {' g5 I- l' x

    8 ]* X4 m8 B1 k: B  S6 j5 E! y

    ' D) W& }& ?4 i% r1 M
    0 j4 a9 I4 I$ c$ u! T' N
    $ d# o/ O6 g% u! r5 C6 a3 V; w( ]# hLED灯控制(主线内核不可用)
    3 U& a+ y4 c' J; b$ e; z7 K
    : k9 }! v/ ~) k( r$ E1 E

      ?" e2 \, g- vecho 0 > /sys/class/leds/blue/brightness  #关闭蓝灯  c) f$ l. `, l* r) j. g  _0 ?
    echo 255 > /sys/class/leds/green/brightness  #点亮最高亮度的绿灯
    : q8 ?: E  {" k* U" e4 K" d$ t- h( D3 kecho 128 > /sys/class/leds/red/brightness  #点亮中等亮度的红灯6 M- K+ I: U" x$ s% V6 I* i8 x4 X
    echo 2 > /sys/class/leds/red/blink #点亮红色呼吸灯,可设为其他值8 ^+ h9 C$ S" l1 g& K. U0 _
    echo 0 > /sys/class/leds/green/blink #关闭绿色呼吸灯
    9 _1 Y+ u/ s1 S$ i0 Z1 p# b9 p; r0 P( L; w$ V" |7 z/ G/ k
    9 A2 w! l, n6 z

    / P$ ~. i, ?: U" w0 T% F/ l) t; ]( T
    * W, `: u8 S+ i2 g, t. U硬盘休眠9 y7 r$ e9 b: @" L$ p, \5 j1 J& h0 I
    build-catdrive中的固件已经设置好10分钟无操作自动休眠硬盘,如果需要调整时长,请修改/etc/udev/rules.d/99-hdparm.rules里面的hdparm -S之后的参数,默认值是120(10分钟)
    ; m8 i) n$ K/ C* i& C# \: A; @
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*",ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", RUN+="/sbin/hdparm -S 120 $env{DEVNAME}"
  • 读写uboot环境变量
    4 y# B( ?8 K+ k# N7 y0 K0 d
fw_setenv foo barfw_printenv
uboot其他操作
  • 在新uboot里从U盘根目录中刷入uboot
    2 ^% }6 {' O2 {0 J
bubt flash-image.bin spi usb
  • 在新uboot里从tftp中刷入uboot2 A7 ]  e; k: G, W$ Q
setenv ipaddr 192.168.1.100 #设定本机4 I+ R! S7 h( A
ipsetenv serverip 192.168.1.2 #设定tftp服务器" R: E( r  W& `! l8 S: N% k5 S2 a
ipbubt flash-image.bin spi tftp
  • 在新uboot里改变启动顺序
    * w. L- o) j& ~! l8 ?
setenv boot_targets "usb sata mmc0" #默认为usb->mmc0->satasaveenv
已知问题
  • 主线内核中无法控制风扇的gpio(会导致以太网phy重新复位),所以poweroff后风扇不停" Z% q: d! H" N

* ~  c. f0 ~2 E
' I  v7 t, n  G. K

/ E. o" X( D5 l4 ]8 m/ s
& {% C( c: X* g+ \
' d2 L$ Z3 c7 ?( @3 E
1 J( P6 `/ n: g8 b% u7 Q5 l

+ b8 n+ S" u. `; A- q- y+ g! v, z3 E, I" ~" G/ J: C6 m0 u  K! I

评分

参与人数 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
! j6 X( {1 o) v5 W+ V9 c1 f这个好像有大佬搬运过
; S( f/ s  v# K6 z9 ]  w* H9 ^! L1 {- d
没注意哦,已经搬运了?

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
 楼主| 发表于 2019-10-1 09:06:38 | 显示全部楼层
xingjiwoniu 发表于 2019-10-1 09:03
" Z( G( p3 c" K4 `) @0 j( t应该把命令部分 编辑一下,选择 插入命令 这样就能复制链贴,刷机的时候不会出错 ...

7 a( O% T# m$ Y& G% s% E坛子编辑器难用。。。。弄了一下

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 | 显示全部楼层
+ {7 w( \1 s$ A, w) P2 u7 e" A( i
努力灌水吧

1

主题

19

回帖

191

积分

初级渣柚V2

积分
191
发表于 2019-10-2 00:09:15 | 显示全部楼层
来学习拿权限+ b5 U8 ]. Q1 }, G) @
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-5 03:53 , Processed in 0.070588 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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