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

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

[复制链接]

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
发表于 2019-10-1 08:52:21 | 显示全部楼层 |阅读模式
本帖最后由 picc745514 于 2019-10-1 09:11 编辑 % g) O. r3 s7 |' F- @

$ h  Z1 }# j! }" `' c违规没有?版主。。。。。
1 O# z( c' F$ G# n原作者 hanwckf 原地址https://www.jianshu.com/p/77e529fb35f9
- U/ l( `" d% B- U简介
猫盘又是一款矿难机,配置如下
  • 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
    5 C# x, |$ W4 Z
由于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
    9 v7 y( B% ]3 r8 c

准备工作
  • 空的2.5寸硬盘(需要移动硬盘盒或者易驱线)或U盘(需要将USB母座接到主板上的USB排针上,见下图)
  • USB转TTL线,如ch340等,按下图接线,波特率为115200,注意千万别接VCC" m& [: x& V  r! o9 `5 n* a
1.png
8 u0 R0 ]9 o! X( {. F
* [) g' ~0 T# q) N  M
UART与USB排针8 P# {. R! T3 G) }' \+ v

% b, Y5 ]! S- I! ?+ z+ s/ |; U
刷入uboot: 方法1
  • U盘/硬盘格式化为mbr的ext4或fat32分区,将flash-image.bin复制到其根目录下,然后插到猫盘上
    , g; f# e2 |# ~3 ]1 x2 Y接好TTL后上电,在倒计时结束前反复按回车进入原厂uboot
    % B! q, i% j7 V, E在uboot控制台依次输入以下命令:2 j. {& W9 i( Q- [
setenv bootargs "console=ttyMV0,115200 root=/dev/mmcblk0p1 rootwait rw init=/bin/sh"ext4load mmc 0:1 0x1000000 boot/armada-3720-customer0.dtb) A  @7 l! [% G4 D
ext4load mmc 0:1 0x2000000 boot/Image
; l! d# @% @: h- y% C: [0 sbooti 0x2000000 - 0x1000000
/ Z* |4 L* x: v
等待系统启动完成进入无需登陆的shell
  • 进入shell后依次输入以下命令(这一步是把flash-image.bin复制到emmc的第2分区上)
    $ o( {$ D1 B/ c$ q- L当同时插入U盘和硬盘的时候,有可能需要挂载/dev/sdb1
    . [. W: ^/ d# J; j. _2 ~
mount -t proc /proc5 N7 P" M3 [3 P9 P5 G5 u
mount /dev/mmcblk0p2 /media$ q! I1 `  w4 z- }' V- C
mount /dev/sda1 /mnt
# j# Q4 q' g$ f; M! mcp -f /mnt/flash-image.bin /media
5 T: g! ^- o6 i  Bumount /media
2 P3 o* T% h8 T  tumount /mnt

8 m; l- h5 P2 q6 y/ b
然后直接拔电
  • 上电,在倒计时结束前反复按回车再次进入原厂uboot
    * L4 H5 c6 O" h! b, c$ {; w: O) u3 k+ C在uboot控制台依次输入以下命令 (切勿在uboot控制台中反复按回车); r$ x" O% \7 d3 ]% b6 V
ext4load mmc 0:2 0x1000000 flash-image.bin
# g2 ~4 e5 u3 @sf probe1 S2 z. H, j, s* B
sf erase 0x0 0x200000' M9 {  N6 n$ D% d3 H/ Q3 r. p
sf write 0x1000000 0x0 0x2000006 y! S. c( H7 x' C4 m

$ d3 K9 C( \2 R" {
  • 确保上一步的命令正常执行完毕之后,输入reset复位,然后在倒计时结束前反复按回车进入新uboot; T; F  @: W1 K0 o
    在uboot控制台依次输入以下命令,注意mac地址要改成你自己的
    + c, M4 F( [0 r( p( A1 O3 M6 F/ m
env default -a
' q9 q, a& H6 X% n6 @! a7 [9 }' Jsetenv ethaddr "4c:65:a8:10:e2:55"
+ o# |% f6 W3 J) M& |( O, Csaveenv
1 D& ~5 Q7 P8 ^2 K/ v此时新uboot已经部署完毕,可以直接拔电准备下一步操作

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

刷emmc
确保已经正确刷入新uboot,将img镜像解压后用etcher或者其他工具写入硬盘或者U盘, 插回板子上
  • 对于硬盘刷机:
      C7 [7 I6 R* ]; w上电,在倒计时结束前反复按回车进入新uboot& J* o3 W$ r, l4 n7 ~
    在uboot控制台依次输入以下命令:
  • setenv boot_targets "sata mmc0 usb"
    5 c* y; F/ a. ]boot

    - R  Q& E, o( m0 t! N4 E1 U
  • 对于U盘刷机:4 `2 M- o3 n% o
    插好U盘后直接上电即可- L! M$ Z* I7 N5 }$ C8 I. G, N1 A3 d
进入U盘/硬盘的临时系统后(应该是一个alpine,用户名:root;密码:admin),运行
emmc-install.sh
等待刷入完成,然后输入poweroff关机,输出示例如下:

" p! f2 [. V1 L" L! r
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

; a% l8 r7 y4 e* X$ O
如果是用U盘刷机的话则需要拔掉U盘后再启动,即可进入新系统,而对于硬盘刷机则无需拔除硬盘,可在新系统中直接将其格式化
在刷好新uboot之后,若要刷入build-catdrive中的其他linux发行版,直接从刷emmc这一步开始即可- Q4 I7 x8 U( E2 {
由于猫盘内存较小,建议设置1GB的swap,具体操作请看下面

系统相关设置
  • 设置swap, Y8 p( [" a" p& S( b6 P! I

      I6 z+ I) c% p4 U5 u" s. X- j' W+ Z5 p& N  z, L
    + ]( J, s9 o" T7 X8 e. A
    dd if=/dev/zero of=/swapfile bs=1M count=1000 #创建1GB的swap% O- i& j2 W3 n5 w+ ^
    chmod 600 /swapfile3 F" m4 c3 |" \! K. n3 [8 A4 v, N
    mkswap /swapfile6 `# Z/ ?4 y7 O! @  `( f
    echo "/swapfile swap swap defaults 0 0" >> /etc/fstab# ~9 H8 W2 d. W7 y" M* ^. K
    : |" m$ n% s" E9 B+ i6 }
    . \- Z# m, k6 P( d2 E" E7 f5 f
    " ?/ B% Z/ p& L

    ! h4 @) Y. ^  T2 p; W7 }! Z) Y风扇控制(主线内核不可用)
    5 C5 V0 d% n% w$ _8 G& Q+ \
    , E! Y0 w2 }  g4 x, H4 v4 J1 Y- g0 y
    ; W6 Z9 R9 _0 v* K- `5 [! w

    , u0 \$ ?6 k' J$ b* T, I4 \" `echo 0 > /sys/class/thermal/cooling_device0/cur_state  #关闭风扇
    . o% R% p6 H& g' J4 ~/ H! d; Wecho 1 > /sys/class/thermal/cooling_device0/cur_state  #打开风扇5 [  W$ F) T0 Y  b4 d
    ; V1 T; i$ u$ G& ]  d
    ; z( X# G/ `/ s, u! m  ?
    . Z* Y6 ?9 b, v

    5 ]9 o4 u0 D" C4 f' s+ GLED灯控制(主线内核不可用)

    / ]: r7 H3 o- f( J' u8 [: S
    8 N; ?( F- I3 t! N; s& K8 f$ @) }+ `8 ?$ H! x- h; D
    echo 0 > /sys/class/leds/blue/brightness  #关闭蓝灯
    ; S: O5 @& j$ h" G! qecho 255 > /sys/class/leds/green/brightness  #点亮最高亮度的绿灯
      Y) T4 ]# U5 j: xecho 128 > /sys/class/leds/red/brightness  #点亮中等亮度的红灯. d3 c& [; `3 O  V) z
    echo 2 > /sys/class/leds/red/blink #点亮红色呼吸灯,可设为其他值/ T+ h1 ~. ?' Y# {. j3 ~
    echo 0 > /sys/class/leds/green/blink #关闭绿色呼吸灯: [( ~8 ^' k8 O1 V. h6 M7 b
    5 Y* C! `! y; S. y$ e0 D3 F

    , J# S+ P5 c& }: P- E8 {6 @9 h
    3 i0 A( F) U9 w* Z# Q
    ) I4 P2 \4 I, u4 y# s: m硬盘休眠
      f0 Q% l, w! U8 Abuild-catdrive中的固件已经设置好10分钟无操作自动休眠硬盘,如果需要调整时长,请修改/etc/udev/rules.d/99-hdparm.rules里面的hdparm -S之后的参数,默认值是120(10分钟)
    % \- X. q0 P6 t1 x  j$ _3 t
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*",ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", RUN+="/sbin/hdparm -S 120 $env{DEVNAME}"
  • 读写uboot环境变量. A+ z. w$ Q2 Q2 ~
fw_setenv foo barfw_printenv
uboot其他操作
  • 在新uboot里从U盘根目录中刷入uboot; w# E7 x9 I) W# W3 ^/ I7 w5 b
bubt flash-image.bin spi usb
  • 在新uboot里从tftp中刷入uboot
    6 w7 n/ X/ P  C3 X6 K
setenv ipaddr 192.168.1.100 #设定本机* k5 O2 ?% @# P3 L6 q1 D
ipsetenv serverip 192.168.1.2 #设定tftp服务器
& |& U" P$ h8 X3 V3 j; G$ ~ipbubt flash-image.bin spi tftp
  • 在新uboot里改变启动顺序* U1 }/ }, T$ B6 v
setenv boot_targets "usb sata mmc0" #默认为usb->mmc0->satasaveenv
已知问题
  • 主线内核中无法控制风扇的gpio(会导致以太网phy重新复位),所以poweroff后风扇不停1 l# n. c2 w( I7 R" N" R* Q

+ ^/ j& P- w+ L2 e9 H! D% j: E

8 o, d, A! o, F9 b. X+ u4 S! C& M- m4 r. ]
0 S: F" }; {4 x' {) P6 f' Y
: w% g) A2 d! }
+ q, G+ u# _$ J- k9 D( l

6 C' e* m* N/ I( c! H) J3 E2 s1 f3 b. ]( _( \" U

评分

参与人数 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:580 _+ e" ?+ x4 ]4 j- K0 c
这个好像有大佬搬运过
, C7 B) g( c7 e! M6 n
没注意哦,已经搬运了?

22

主题

230

回帖

1028

积分

中级渣柚V3

积分
1028
 楼主| 发表于 2019-10-1 09:06:38 | 显示全部楼层
xingjiwoniu 发表于 2019-10-1 09:03
) u8 M7 E" M1 ]* f  J) r应该把命令部分 编辑一下,选择 插入命令 这样就能复制链贴,刷机的时候不会出错 ...
, L) l1 M+ R4 t6 d. W7 j' j6 D
坛子编辑器难用。。。。弄了一下

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 | 显示全部楼层

. l$ T( r' b2 D1 |努力灌水吧

1

主题

19

回帖

191

积分

初级渣柚V2

积分
191
发表于 2019-10-2 00:09:15 | 显示全部楼层
来学习拿权限
, ~+ k  v6 R; V: k
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-9 01:50 , Processed in 0.364726 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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