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

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

[复制链接]

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
发表于 2019-10-1 08:52:21 | 显示全部楼层 |阅读模式
本帖最后由 picc745514 于 2019-10-1 09:11 编辑 8 F% ~  i! x/ O+ g4 U
! ?$ @9 R/ O& E8 z0 Q
违规没有?版主。。。。。' G5 V# t5 K7 J$ c
原作者 hanwckf 原地址https://www.jianshu.com/p/77e529fb35f9/ q  h  D+ E2 z0 f3 Q$ H
简介
猫盘又是一款矿难机,配置如下
  • 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
    1 ^% k  }& Z6 g0 r, r+ V! H: ^
由于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_VpbHhOgpH8crgw5 r# V0 s( R7 @# ?* ?! _( J( V

准备工作
  • 空的2.5寸硬盘(需要移动硬盘盒或者易驱线)或U盘(需要将USB母座接到主板上的USB排针上,见下图)
  • USB转TTL线,如ch340等,按下图接线,波特率为115200,注意千万别接VCC, h/ y* u3 p; H/ d% `% k- \" v
1.png
0 m; W; o# Y7 f) G3 m6 W

) w2 ^) `  X' y$ z4 T' H
UART与USB排针
  X- |/ t6 j& Y8 g  g
7 e5 ]4 Y" K% v5 b9 j6 O2 D

刷入uboot: 方法1
  • U盘/硬盘格式化为mbr的ext4或fat32分区,将flash-image.bin复制到其根目录下,然后插到猫盘上) r2 ?+ u/ W5 c2 y/ v
    接好TTL后上电,在倒计时结束前反复按回车进入原厂uboot9 |1 d2 j- D% n& D' `) K
    在uboot控制台依次输入以下命令:" M/ y/ C8 Z6 W$ c5 d3 D4 Y* p
setenv bootargs "console=ttyMV0,115200 root=/dev/mmcblk0p1 rootwait rw init=/bin/sh"ext4load mmc 0:1 0x1000000 boot/armada-3720-customer0.dtb
/ N( z6 k) M! e  A8 c4 Lext4load mmc 0:1 0x2000000 boot/Image
5 j( W+ E+ ~, y6 n9 Y0 X, Ebooti 0x2000000 - 0x1000000
' p9 Q/ L: [. k" W3 r- i
等待系统启动完成进入无需登陆的shell
  • 进入shell后依次输入以下命令(这一步是把flash-image.bin复制到emmc的第2分区上)$ |- W! }, ?" e% W2 @
    当同时插入U盘和硬盘的时候,有可能需要挂载/dev/sdb1
    & Z8 I) @* Y$ M3 W! b7 s! q
mount -t proc /proc
- l. j: z2 R2 E1 H8 a! ~# ?* r$ D+ jmount /dev/mmcblk0p2 /media
8 A: [0 I/ n5 Y9 Fmount /dev/sda1 /mnt& c4 X3 Y0 O" X) [
cp -f /mnt/flash-image.bin /media
5 k2 u8 [# k& ^2 \umount /media6 B& |7 l! Q+ W
umount /mnt
- z4 j; H0 u8 w( O- l
然后直接拔电
  • 上电,在倒计时结束前反复按回车再次进入原厂uboot: ~- Z1 B4 y! k/ @) a( Y* I
    在uboot控制台依次输入以下命令 (切勿在uboot控制台中反复按回车)6 r# i, l8 {1 E( A; T; |
ext4load mmc 0:2 0x1000000 flash-image.bin& G5 w$ b" o4 i) l6 _- ]
sf probe" i8 U7 N, R/ J* P
sf erase 0x0 0x200000- `/ l7 w1 H6 w5 W
sf write 0x1000000 0x0 0x200000% H( N; `' J) D" G1 v
/ k/ f" J8 m' A; d) n
  • 确保上一步的命令正常执行完毕之后,输入reset复位,然后在倒计时结束前反复按回车进入新uboot
    & v! O' G5 V! f: ?( p( B在uboot控制台依次输入以下命令,注意mac地址要改成你自己的
    6 Y; _1 N- a1 D6 s  [$ U3 n5 e  @
env default -a
' {3 {8 U! m. x% xsetenv ethaddr "4c:65:a8:10:e2:55"0 O# r+ n0 C1 p3 k+ |6 h1 M
saveenv
& z3 l" w' ?! c5 {7 I6 }! B/ Y/ ^1 ]  k$ D此时新uboot已经部署完毕,可以直接拔电准备下一步操作

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

刷emmc
确保已经正确刷入新uboot,将img镜像解压后用etcher或者其他工具写入硬盘或者U盘, 插回板子上
  • 对于硬盘刷机:
    ; T6 P# [; }4 g4 w1 a2 b! a3 U上电,在倒计时结束前反复按回车进入新uboot
    ; r. T' `* m$ C% N% U1 W( H, `在uboot控制台依次输入以下命令:
  • setenv boot_targets "sata mmc0 usb"( z' f8 e( S( P: N3 ^4 M1 |
    boot
    % b% W! D' M' c+ V9 r
  • 对于U盘刷机:/ o. B' f& S8 S: Q; M
    插好U盘后直接上电即可
    2 u6 ~& B. G* d! ^( U
进入U盘/硬盘的临时系统后(应该是一个alpine,用户名:root;密码:admin),运行
emmc-install.sh
等待刷入完成,然后输入poweroff关机,输出示例如下:
( W; b+ g- q% g1 y
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
% e3 @) h1 o; \  j4 q$ ]
如果是用U盘刷机的话则需要拔掉U盘后再启动,即可进入新系统,而对于硬盘刷机则无需拔除硬盘,可在新系统中直接将其格式化
在刷好新uboot之后,若要刷入build-catdrive中的其他linux发行版,直接从刷emmc这一步开始即可' u7 G. w$ Z% H
由于猫盘内存较小,建议设置1GB的swap,具体操作请看下面

系统相关设置
  • 设置swap
    ! ]+ ?0 D; w* L; R6 z( C5 ]

    + g8 [+ Z' e3 S' P2 ?7 N/ u; Z
    , H# ~; S( p2 b% F! d8 t% s1 v# E( F6 G( ]" r
    dd if=/dev/zero of=/swapfile bs=1M count=1000 #创建1GB的swap& V" q( s3 D7 x; J2 H: T' g
    chmod 600 /swapfile! i3 O6 T1 [# N, `7 I- I
    mkswap /swapfile" ^/ v( v" R1 P6 Q' s0 O# H
    echo "/swapfile swap swap defaults 0 0" >> /etc/fstab" m( X2 S; r6 z: p) R( z# \

    0 ~9 g' h5 _# W, }. E5 q$ I

    + P7 o' S! N3 d" C6 p; G8 q
    * Z; z; a6 G4 m* }$ a. ^2 J& o9 l7 d/ N2 c
    风扇控制(主线内核不可用)/ H: m6 C0 I; X: N; C
    : Y, ^/ k7 r# W/ f. r9 m# u# i  ]
    8 W' F: K& D5 H' j& p$ c
    . ^1 |# d( K7 x* b  [& p
    echo 0 > /sys/class/thermal/cooling_device0/cur_state  #关闭风扇6 B$ p: R; u. e8 W" x9 j
    echo 1 > /sys/class/thermal/cooling_device0/cur_state  #打开风扇
    * I% M# b( ]! J/ @9 K' f4 v; {1 z

    , N7 N9 }5 r! D: M2 V) T( l* A* B4 s$ J

    $ K! L$ ?1 k( K1 p1 H* nLED灯控制(主线内核不可用)
      ~! o* F( m; K2 Q" _2 Z9 Z2 [

    , G. H% X5 A7 W; C8 o9 Q# v: r# G- s+ t2 t, ?" }1 q/ J
    echo 0 > /sys/class/leds/blue/brightness  #关闭蓝灯; T' C6 c7 M. M6 A3 o
    echo 255 > /sys/class/leds/green/brightness  #点亮最高亮度的绿灯! V. |# E; }0 w3 B) K
    echo 128 > /sys/class/leds/red/brightness  #点亮中等亮度的红灯
    2 _9 M+ A9 n9 `  Y! [- i% Pecho 2 > /sys/class/leds/red/blink #点亮红色呼吸灯,可设为其他值* i; X) T, R7 k3 m. p& e1 C
    echo 0 > /sys/class/leds/green/blink #关闭绿色呼吸灯) B/ {. B3 r- w) N7 `; a, D  D

    6 E& e6 W  A9 p7 A

    4 O: N/ n5 l) s4 p# y* M' ~8 J  N& b" _$ Q

    " x6 |! L1 d7 B( r硬盘休眠3 J0 z$ A6 H  Z6 ~+ N
    build-catdrive中的固件已经设置好10分钟无操作自动休眠硬盘,如果需要调整时长,请修改/etc/udev/rules.d/99-hdparm.rules里面的hdparm -S之后的参数,默认值是120(10分钟). N4 q0 C" s0 q: R  C4 o( Q
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*",ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", RUN+="/sbin/hdparm -S 120 $env{DEVNAME}"
  • 读写uboot环境变量) T; k' y; M  U$ T! w( W' g
fw_setenv foo barfw_printenv
uboot其他操作
  • 在新uboot里从U盘根目录中刷入uboot
    & Y7 |+ t% Y9 e0 E5 i
bubt flash-image.bin spi usb
  • 在新uboot里从tftp中刷入uboot
    . b1 i5 W& R4 z+ S- w2 F3 Z' A
setenv ipaddr 192.168.1.100 #设定本机
( `0 z" Y" D4 K8 b* Nipsetenv serverip 192.168.1.2 #设定tftp服务器
- x$ N) [  m8 }ipbubt flash-image.bin spi tftp
  • 在新uboot里改变启动顺序
    * e% W" m+ C  e2 d  K2 `' v
setenv boot_targets "usb sata mmc0" #默认为usb->mmc0->satasaveenv
已知问题
  • 主线内核中无法控制风扇的gpio(会导致以太网phy重新复位),所以poweroff后风扇不停
    * P2 _) {# C. L* A2 {  s

% j, @) F$ R3 Z. ]$ I- W/ s

+ x( ~; n" o  O) I$ z* Y- P& s/ i/ n, o- N
9 Z# I8 y. V- S) ~( h& u

; I" {; a6 j/ J. W2 |" ?" j  ~+ A5 F1 c+ W$ ^

, O2 r, y+ ~, w% p, H; b  A/ ^& y1 q; [! ~8 P; h. e

评分

参与人数 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
! z& ^/ S5 F+ H" j: r0 p: D* P) W这个好像有大佬搬运过
6 S/ L1 ~. }5 P; F& u! G# _% o
没注意哦,已经搬运了?

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
 楼主| 发表于 2019-10-1 09:06:38 | 显示全部楼层
xingjiwoniu 发表于 2019-10-1 09:03" i* E; {4 F$ v8 H$ \4 d  ~' U
应该把命令部分 编辑一下,选择 插入命令 这样就能复制链贴,刷机的时候不会出错 ...

5 ?8 w9 l' l# e6 q/ j6 G坛子编辑器难用。。。。弄了一下

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 | 显示全部楼层
" I8 }; o7 Z" a3 B
努力灌水吧

1

主题

19

回帖

191

积分

初级渣柚V2

积分
191
发表于 2019-10-2 00:09:15 | 显示全部楼层
来学习拿权限
7 n6 b" s' ], H* A, l1 C9 W
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 02:38 , Processed in 0.088172 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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