1

Тема: Восстновление Keeinetic Lite на RT3350

Дорый день!

Попал мне в руки Keeinetic Lite rev.A после неудачной перепрошивки (недождавшись вырубили питание) в виде трупа.
Собрал JTAG и UART подключил - флеш чистая.
Нагуглил кучу прошивок (mtd0-2), но большинство их от dir или простого keenetic, которые зависают при загрузке.
Вобщем, подошел один загрузчик, но под ним ни одна прошивка не стартует (kernel panic и т.д.)

Прошивка V1

U-Boot 1.1.3 (Feb 22 2012 - 15:38:06)

Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fb0000
config usb..*** Error: D+/D- is 1/1, config usb failed.
..*** Error: D+/D- is 1/1, config usb failed.


 Set info->start[0]=BF000000
flash_protect ON: from 0xBF000000 to 0xBF01D783
flash_protect ON: from 0xBF030000 to 0xBF030FFF
============================================
Ralink UBoot Version: 3.3.4L_ZyXEL
--------------------------------------------
ASIC 3052_MP2 (Port5<->None)
DRAM component: 256 Mbits SDR
DRAM bus: 16 bit
Total memory: 32 MBytes
Flash component: NOR Flash
Date:Feb 22 2012  Time:15:38:06
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384

 ##### The CPU freq = 320 MHZ ####

SDRAM bus set to 16 bit
 SDRAM size = 32 Mbytes
 Firmware test register status: 0x00000000

Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP.                     0

3: System Boot system code via Flash.
## Booting image at bf050000 ...
   Image Name:   ZyXEL KEENETIC Series
   Created:      2012-05-29  21:43:30 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    795175 Bytes = 776.5 kB
   Load Address: 80000000
   Entry Point:  8022e000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 8022e000) ...
## Giving linux memsize in MB, 32

Starting kernel ...


LINUX started...

 THIS IS ASIC
PROC INIT OK!
CPU 0 Unable to handle kernel paging request at virtual address 00005f8d, epc == 8003406c, ra == 8003406c
Oops[#1]:
Cpu 0
$ 0   : 00000000 00000001 00000001 00000001
$ 4   : 80256518 80257200 fffebe88 fffeb6b9
$ 8   : fffffffe fffeb6b8 00000000 8021a000
$12   : 00000000 00000000 38f5d600 00000032
$16   : 81048b80 efffffff 80271f80 00000000
$20   : 00000000 00000000 00000000 00000000
$24   : 5f911e00 000f422c
$28   : 80270000 80271f50 00000000 8003406c
Hi    : 10623940
Lo    : 0e55f218
epc   : 8003406c     Not tainted
ra    : 8003406c Status: 1100fc03    KERNEL EXL IE
Cause : 00800008
BadVA : 00005f8d
PrId  : 0001964c
Modules linked in:
Process events/0 (pid: 4, threadinfo=80270000, task=8105f898)
Stack : 80271f80 00000000 00000000 00000000 81048b88 81048b80 80034c28 80034c5c
        00000000 00000000 80038900 00000000 00000000 8105f898 80038db8 80271f8c
        80271f8c 00000000 fffffffc 80034ba4 00000000 8003891c 00000000 00000000
        00000000 00000000 00000000 00000000 80003914 00000000 1100fc03 00000000
        00000000 00000000 00000000 80003904 9caffadb 3612b8b0 5b56bbbe 2d64f2d2
        ...
Call Trace:[<80034c28>][<80034c5c>][<80038900>][<80038db8>][<80034ba4>][<8003891c>][<80003914>][<80003904>]

Code: 00000000  00c0f809  00000000 <80275f8c> 3c04801f  00403021  00511024  14400019  24846ea4

Прошивка V2

U-Boot 1.1.3 (Feb 22 2012 - 15:38:06)

Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fb0000
config usb..*** Error: D+/D- is 1/1, config usb failed.
..*** Error: D+/D- is 1/1, config usb failed.


 Set info->start[0]=BF000000
flash_protect ON: from 0xBF000000 to 0xBF01D783
flash_protect ON: from 0xBF030000 to 0xBF030FFF
============================================
Ralink UBoot Version: 3.3.4L_ZyXEL
--------------------------------------------
ASIC 3052_MP2 (Port5<->None)
DRAM component: 256 Mbits SDR
DRAM bus: 16 bit
Total memory: 32 MBytes
Flash component: NOR Flash
Date:Feb 22 2012  Time:15:38:06
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384

 ##### The CPU freq = 320 MHZ ####

SDRAM bus set to 16 bit
 SDRAM size = 32 Mbytes
 Firmware test register status: 0x00000000

Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP.                     0

3: System Boot system code via Flash.
## Booting image at bf050000 ...
   Image Name:   ZyXEL Keenetic Lite
   Created:      2013-08-29   3:34:06 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    868323 Bytes = 848 kB
   Load Address: 80000000
   Entry Point:  80272000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 80272000) ...
## Giving linux memsize in MB, 32

Starting kernel ...


LINUX started...

 THIS IS ASIC
Linux version 2.6.23.17 (developers@ndmsystems.com) (gcc version 4.1.2) #1 Tue Aug 6 11:20:57 MSK 2013

 The CPU frequency set to 320 MHz
32M RAM Detected!
CPU revision is: 0001964c
Determined physical RAM map:
 memory: 02000000 @ 00000000 (usable)
Built 1 zonelists in Zone order.  Total pages: 8128
Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4 rootfstype=squashfs ramdisk=0x0890 load_ramdisk=1 prompt_ramdisk=0 noinitrd
Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
cause = 40808000, status = 11000000
PID hash table entries: 128 (order: 7, 512 bytes)
calculating r4koff... 0004e200(320000)
CPU frequency 320.00 MHz
Using 160.000 MHz high precision timer.
console [ttyS1] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 29736k/32768k available (2194k kernel code, 3032k reserved, 305k data, 128k init, 0k highmem)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
Generic PHY: Registered new driver
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
squashfs: version 4.0 (2009/01/31) Phillip Lougher
io scheduler noop registered
io scheduler deadline registered (default)
Ralink gpio driver initialized
HDLC line discipline: version $Revision: 4.8 $, maxframe=4096
N_HDLC line discipline registered.
Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
RAMDISK driver initialized: 1 RAM disks of 2192K size 4096 blocksize
loop: module loaded
MAC_ADRH -- : 0x00000000
MAC_ADRL -- : 0x00000000
Ralink APSoC Ethernet Driver Initilization. v2.0  256 rx/tx descriptors allocated, mtu = 1500!
NAPI enable, weight = 0, Tx Ring = 256, Rx Ring = 256
MAC_ADRH -- : 0x0000000c
MAC_ADRL -- : 0x4328800d
PROC INIT OK!
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
MPPE/MPPC encryption/compression module registered
NET: Registered protocol family 24
L2TP kernel driver, v1.0
PPTP driver version 0.8.3.37
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
ralink flash device: 0x400000 at 0x1f000000
Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
Ralink SoC physically mapped flash: Swapping erase regions for broken CFI table.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 6 MTD partitions on "Ralink SoC physically mapped flash":
0x00000000-0x00030000 : "U-Boot"
0x00030000-0x00040000 : "U-Config "
0x00040000-0x00050000 : "RF-EEPROM"
0x00050000-0x00140000 : "Kernel"
0x00140000-0x003f0000 : "RootFS"
0x003f0000-0x00400000 : "Config"
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ctnetlink v0.93: registering with nfnetlink.
nf_conntrack_rtsp v0.6.21 loading
IPv4 over IPv4 tunneling driver
nf_nat_rtsp v0.6.21 loading
ip_tables: (C) 2000-2006 Netfilter Core Team
Type NAT: Restricted Cone
ClusterIP Version 0.8 loaded successfully
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 10
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
decoding /dev/mtdblock4...
RAMDISK: squashfs filesystem found at block 0
RAMDISK: Loading 2189KiB [1 disk] into ram disk... done.
Mounting ramdisk...
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 128k freed
Bad page state in process 'init'
page:81004f20 flags:0x0000020c mapping:8120f770 mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
Call Trace:[<80007818>][<80007818>][<8004bcb4>][<8004c684>][<8004c6e0>][<8000174c>][<80050090>][<8028d000>][<800504fc>][<80047010>][<80047ac8>][<80047aa8>][<8028d000>][<8028d000>][<800b60bc>][<8004741c>][<80045f60>][<80049798>][<8027241c>][<80272470>][<80272470>][<80045f60>][<8006ab5c>][<8005d5a4>][<80038de8>][<8006b4a4>][<8006ba18>][<80009fe4>]
Bad page state in process 'init'
page:81004ea0 flags:0x0000020c mapping:8120f9f0 mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
Call Trace:[<80007818>][<80007818>][<8004bcb4>][<8004c684>][<8004c6e0>][<8000174c>][<80050090>][<8028d000>][<800504fc>][<80047010>][<80047ac8>][<80047aa8>][<8028d000>][<8028d000>][<800b60bc>][<8004741c>][<80045f60>][<80049798>][<8027241c>][<80272470>][<80272470>][<80045f60>][<8006ab5c>][<8005d5a4>][<80038de8>][<8006b4a4>][<8006ba18>][<80009fe4>]
Bad page state in process 'init'
page:81004e80 flags:0x00000208 mapping:8120f9f0 mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
Call Trace:[<80007818>][<80007818>][<8004bcb4>][<8004c684>][<8004c6e0>][<8000174c>][<80050090>][<8028d000>][<800504fc>][<80047010>][<80047ac8>][<80047aa8>][<8028d000>][<8028d000>][<800b60bc>][<8004741c>][<80045f60>][<80049798>][<8027241c>][<80272470>][<80272470>][<80045f60>][<8006ab5c>][<8005d5a4>][<80038de8>][<8006b4a4>][<8006ba18>][<80009fe4>]

Может у кого есть родные бэкапы mtd0 - mtd2, а может и fullflash?

Насторожил установленный RT3350, в то время как u-boot распознает RT3052

U-Boot 1.1.3 (Feb 22 2012 - 15:38:06)
RT3052 # md 10000000
10000000: 33335452 20203035 00000000 00000102    RT3350  ........
10000010: 01400000 00000000 00000000 00000000    ..@.............

Отредактировано Buch (2013-09-13 23:19:36)

2

Re: Восстновление Keeinetic Lite на RT3350

Вообще-то, неувязочек много:
1) Какая всё-таки ревизия роутера?
Если это Lite rev.A то проц RT3050 и 4 Мб флеш(параллельная),
если Lite rev.B то проц RT5350 и 8Мб SPI флеш
Если это дешевый китаец  wink , то вероятней всего, RT3052(как у простого Кинетика) и 4Мб флеш(параллельная).
Или там физически стоит RT3350 (видно)?
Сколько антен у роутера?
(Тогда вам на другой форум надо)
2) Как распаяли JTAG, если в Лайтах(А и Б) он не разведен даже?

UPD
mtd0-5(тобиш фуллфлеш) от Лайта А есть, от Лайта Б тоже могу сделать smile

Отредактировано Dr.Acid (2013-09-13 22:07:19)

3

Re: Восстновление Keeinetic Lite на RT3350

Вот фотки тела:

http://s1.ipicture.ru/uploads/20130914/HZOlV4Jp.jpg

http://s1.ipicture.ru/uploads/20130914/h5sC7Vzy.jpg

Радиатор не отрывал, хорошо сидит. Штырьки JTAG напаял сам (слева вверху). Флеш 4Мб.

Отредактировано Buch (2013-09-13 23:13:00)

4

Re: Восстновление Keeinetic Lite на RT3350

Buch, подтверждаю: это - Лайт А.
Вот уж не думал, что площадки в левом верхнем углу - это JTAG! smile
Вот мои mtd0-2 - этого должно хватить для восстановления прошивки(сначала JTAG, после TFTP):
http://yadi.sk/d/3Wpxjgo06JQzg /rev_A/mtd0-2_Lite.rar

UPD

Кстати, вы смогли определить, что за оставшиеся 2 нераспаянных контакта на 6ти контактном разъеме в левом нижнем углу?

Отредактировано Dr.Acid (2013-09-14 23:45:41)

5

Re: Восстновление Keeinetic Lite на RT3350

Странно, но ранее, как оказалось, я использовал именно Ваши файлы и только они заработали!
Похоже дело в железе флеш/ОЗУ, буду проверять.

Контакты я не изучал, позже гляну куда идут.

UPD:
Проверте, пожалуйста, какой у Вас проц. (в терминале u-boot выполнить md 10000000)

Отредактировано Buch (2013-09-15 14:40:26)

6

Re: Восстновление Keeinetic Lite на RT3350

Buch :

Проверте, пожалуйста, какой у Вас проц. (в терминале u-boot выполнить md 10000000)

На Лайте, к сожалению, не могу проверить - я у него консоль не распаивал, а сам роутер сейчас в работе.
Но, вот что показал китайский аналог 4ж А SL-R7206(у него на проце не было радиатора, так что проц совершенно точно RT3050F):

U-Boot 1.1.3 (Mar 21 2013 - 10:50:53)

Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fb4000
config usb..
flash_protect ON: from 0xBF000000 to 0xBF019EC3
flash_protect ON: from 0xBF030000 to 0xBF030FFF
============================================
Ralink UBoot Version: 3.3.4L_ZyXEL
--------------------------------------------
ASIC 3052_MP2 (Port5<->None)
DRAM component: 256 Mbits SDR
DRAM bus: 16 bit
Total memory: 32 MBytes
Flash component: NOR Flash
Date:Mar 21 2013  Time:10:50:53
============================================
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384

 ##### The CPU freq = 320 MHZ ####

SDRAM bus set to 16 bit
 SDRAM size = 32 Mbytes
 Firmware test register status: 0x00000000

Please choose the operation:
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   9: Load Boot Loader code then write to Flash via TFTP.
 4
You choosed 4

 0



4: System Enter Boot Command Line Interface.

U-Boot 1.1.3 (Mar 21 2013 - 10:50:53)
RT3052 # md 10000000
10000000: 33335452 20203035 00000000 00000102    RT3350  ........
10000010: 00400000 00000000 00000000 00000000    ..@.............
10000020: 00000000 00000000 00000000 40000000    ...............@
10000030: 0004283c 00000000 00000000 00000000    <(..............
10000040: 00000000 00000000 00000001 00000000    ................
10000050: 00000001 00000000 00000000 00000000    ................
10000060: 0000039f 00000000 00000000 00000000    ................
10000070: 00000000 00000000 00000000 00000000    ................
10000080: 00000000 00000000 00000000 00000000    ................
10000090: 00000000 00000000 00000000 00000000    ................
100000a0: 00000000 00000000 00000000 00000000    ................
100000b0: 00000000 00000000 00000000 00000000    ................
100000c0: 00000000 00000000 00000000 00000000    ................
100000d0: 00000000 00000000 00000000 00000000    ................
100000e0: 00000000 00000000 00000000 00000000    ................
100000f0: 00000000 00000000 00000000 00000000    ................
RT3052 #

Вообще странно - при запуске пишет RT3052(загрузчик родной, или от Лайта - не помню уже точно, должен быть родной), внутри упоминается RT3350, ну а на деле это, конечно, RT3050F (написано на чипе).

В общем, я бы исходил(и исхожу) из того, что в Лайт А стоит RT3050

7

Re: Восстновление Keeinetic Lite на RT3350

Похоже нашел проблему: не пишется последний сектор флешки начиная с адреса bf3f2000 до bf3fffff.
Теперь другая проблема: где найти замену

8

Re: Восстновление Keeinetic Lite на RT3350

Buch :

Похоже нашел проблему: не пишется последний сектор флешки начиная с адреса bf3f2000 до bf3fffff.

Ничего себе "сектор" - почти 1 Мб!

Теперь другая проблема: где найти замену

Замену чему? Флешке?

У меня есть даташит на семейство флешек, что стоят в Лайт А(можно нагуглить) - там говориться, что есть 2 варианта организации:
1)  MX29LV320DT  - сектора по 64Кбайт, а 8 последних - по 8Кбайт, с (какой-то специальной) защитой.
2) MX29LV320DB - первые 8 - по 8Кбайт, остальные по 64
На моей флешке написано 29LV320DTTI-70G , т.е. вариант 1.
Может, с этим проблема связана?

UPD
На моем китайце вроде точно такаяже(или почти такаяже) флешка стоит. Он шьётся из консоли u-boot без проблем(естественно, перед записью во флеш не забываем снимать защиту).
Вот пример, как я писал(запись mtd0 из адреса 80100000 (RAM)):

protect off BF000000 BF02FFFF

erase BF000000 BF02FFFF

protect off BF000000 BF02FFFF

cp 80100000 BF000000 C000

Аналогично пишуться и все остальные блоки, правда mtd5 я вроде не пробовал так писать.

Отредактировано Dr.Acid (2013-09-19 22:18:58)

9

Re: Восстновление Keeinetic Lite на RT3350

Некропостинг, но всё же. Подскажите пожалуйста распиновку uart на keenetic lite rev.A