Перейти к содержанию

Shivaki US43H3403 v.4 TPD.RT2841A.PB782 не входит в UART, не берет прошивку по USB.


Рекомендуемые сообщения

Опубликовано

Принесли телевизор Shivaki US43H3403 v.4 висит на лого main TPD.RT2841A.PB782 Выпаял emmc, время жизни 50%, то есть износ, сохранил дамп, записал на новую. Включил - все так же висит на логотипе. USB прошивки не подхватывали ни под каким именем, даже в принудительном режиме через UART.

Спойлер

Логи сначала были такие
 

$
Hello world, 287o!{uni}[WEI]
svn:16b2f7039705ac4b (Jun  7 2022 18:51:55)
flash_type = 2, secure_type = 2
b8062204=0
At.y.0 T.10
r.y.0 r.y.0 R.17
[go kb]


pass bootcode info to kboot▒To setup mmu...
dram_bank_mmu_setup: bank: 0
Cache: Enabled, cpu(0x0)
--- kboot 18:51:51 Jun  7 2022 ---
--- heap start:0x15e90000 size:1472 KB ---
kboot emmc: driver init start!
KCPU eMMC: 0
kboot emmc: driver init finish!
kboot read uboot start...
[OK] kboot_read_uboot_from_eMMC:Read uboot ok!!
uboot start 0x11f800 size 0xbd400
kboot read uboot end...
Setup FW Image:

go
get FW_TZFW flash start 0xd900200 ddr buf start 0x14e00000 image size 0d4920 ok!
Authentication key not yet programmed
[INFO]RPMB auth key not written !
[INFO]RPMB auth key is ready, write_cnt = 0x0 !
get FW_AKERNEL flash start 0xa900200 ddr buf start 0x1a500000 image size 01e5a88 ok!
get FW_VKERNEL flash start 0xc100200 ddr buf start 0x1a900000 image size 04fb840 ok!
ATF:0 1 NOTICE:  SCPU BISR status: bypass
Unhandled Exception in EL3.
x30 =           0x0000000016024004
x0 =            0x0000000000000238
x1 =            0x0000000000000001
x2 =            0x0000000016046300
x3 =            0x0000000000010d00
x4 =            0x0000000020000000
x5 =            0x000000000000000e
x6 =            0x00000000fe0a0000
x7 =            0x0000000000000001
x8 =            0x0000000000000001
x9 =            0x0000000016021018
x10 =           0x0000000000000001
x11 =           0x00000000fe0b0400
x12 =           0x00000000fffffff6
x13 =           0x0000000000000020
x14 =           0x0000000000000000
x15 =           0x0000000000000000
x16 =           0x0000000000000000
x17 =           0x0000000000000000
x18 =           0x0000000000000000
x19 =           0x00000000160217a5
x20 =           0x0000000000000003
x21 =           0x0000000016001000
x22 =           0x0000000000000000
x23 =           0x0000000000000000
x24 =           0x0000000000000000
x25 =           0x0000000000000000
x26 =           0x0000000000000000
x27 =           0x0000000000000000
x28 =           0x0000000000000000
x29 =           0x0000000016045080
scr_el3 =               0x0000000000000239
sctlr_el3 =             0x0000000000cd183f
cptr_el3 =              0x0000000000000000
tcr_el3 =               0x000000008081351e
daif =          0x00000000000003c0
mair_el3 =              0x00000000004404ff
spsr_el3 =              0x00000000600002cc
elr_el3 =               0x00000000160017c8
ttbr0_el3 =             0x0000000016046280
esr_el3 =               0x0000000002000000
far_el3 =               0xdeb467b7fcdef8fe
spsr_el1 =              0x000000008e3ff4f5
elr_el1 =               0x0000000000000000
spsr_abt =              0x00000000ca90f75e
spsr_und =              0x000000004ed9f6e9
spsr_irq =              0x000000001a5dbdf1
spsr_fiq =              0x00000000ba917908
sctlr_el1 =             0x0000000000c50838
actlr_el1 =             0x0000000000000000
cpacr_el1 =             0x0000000000000000
csselr_el1 =            0x0000000000000000
sp_el1 =                0x0000000000000000
esr_el1 =               0x00000000b3f430fa
ttbr0_el1 =             0x0000f3fff8bbf71e
ttbr1_el1 =             0x0000ffff2e8dbcda
mair_el1 =              0x44e048e000098aa4
amair_el1 =             0x0000000000000000
tcr_el1 =               0x0000000000000000
tpidr_el1 =             0xb1fdcd3c7ef767db
tpidr_el0 =             0xffdf97fce74f7ef3
tpidrro_el0 =           0xef1bffbb5f5dd2af
dacr32_el2 =            0x0000000000000000
ifsr32_el2 =            0x0000000000000636
par_el1 =               0xf70000f2bec3def2
mpidr_el1 =             0x0000000081000300
afsr0_el1 =             0x0000000000000000
afsr1_el1 =             0x0000000000000000
contextidr_el1 =                0x0000000000000000
vbar_el1 =              0x0000000000000000
cntp_ctl_el0 =          0x0000000000000000
cntp_cval_el0 =         0x5fc22a7c964e66de
cntv_ctl_el0 =          0x0000000000000000
cntv_cval_el0 =         0x736892a7ed0acc06
cntkctl_el1 =           0x0000000000000000
fpexc32_el2 =           0x0000000000000700
sp_el0 =                0x0000000016045080
isr_el1 =               0x0000000000000000
cpuectlr_el1 =          0x000000002808bc00
Enter console mode, disable watchdog ...

Realtek> INTERRUPT>
Realtek> swuu V8-T841AGL-0000318-CTS.img
(Re)start USB...
USB0:   ----------- ehci_hcd_init -----------
#@# ehci_hcd_init(469) ehci mac0
----------- usb2_crt on(0) -----------
----------- usb2_crt -----------
----------- usb2_crt on(1) -----------
----------- usb2_crt -----------
[ehci], dbg, ---- ehci_usb2_load_phy_params start ----
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, ---- ehci_usb2_load_phy_params complete ----
[ehci], info, #@# usb2_phy_setting(352) +++ for usbphy setting 20170420
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe5 set 0xf get 0xf
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe6 set 0x58 get 0x58
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0xe3 get 0xe3
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x17 get 0x17
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe1 set 0x18 get 0x18
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe2 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0xcd get 0xcd
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe5 set 0x63 get 0x63
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe1 set 0x77 get 0x77
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x44 get 0x44
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x23 get 0x23
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe0 set 0x26 get 0x26
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x7a get 0x7a
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe7 set 0x71 get 0x71
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe6 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf0 set 0xfc get 0xfc
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf1 set 0x8c get 0x8c
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf3 set 0x11 get 0x11
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf5 set 0x95 get 0x95
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf6 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf7 set 0xba get 0xba
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xbb get 0xbb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe2 set 0x0 get 0x0
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0x3 get 0x3
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe4 set 0x48 get 0x48
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0xdb get 0xdb
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xe3 set 0x1 get 0x1
[ehci], dbg, set_usb2_phy, port 1 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 2 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], dbg, set_usb2_phy, port 3 phy_reg 0xf4 set 0x9b get 0x9b
[ehci], info, #@# usb2_phy_setting(354) ---
----------- ehci_usb_mac_init -----------
USB EHCI 1.00
scanning bus 0 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
1: Hub,  USB Revision 2.0
 - u-boot EHCI Host Controller
 - Class: Hub
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0000  Product 0x0000 Version 1.0
   Configuration: 1
   - Interfaces: 1 Self Powered 0mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Hub
     - Endpoint 1 In Interrupt MaxPacket 8 Interval 255ms

2: Mass Storage,  USB Revision 2.0
 - Generic Mass Storage DCC674BD
 - Class: (from Interface) Mass Storage
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x058f  Product 0x6387 Version 1.0
   Configuration: 1
   - Interfaces: 1 Bus Powered 200mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 2
     - Class Mass Storage, Transp. SCSI, Bulk only
     - Endpoint 1 Out Bulk MaxPacket 512
     - Endpoint 2 In Bulk MaxPacket 512

3: ,  USB Revision 2.0
 - Realtek 802.11ac NIC 123456
 - Class:
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0bda  Product 0xc82c Version 0.0
   Configuration: 1
   - Interfaces: 3 Bus Powered Remote Wakeup 500mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 3
     - Class
     - String: "Bluetooth Radio"
     - Endpoint 1 In Interrupt MaxPacket 16 Interval 4ms
     - Endpoint 2 Out Bulk MaxPacket 512
     - Endpoint 2 In Bulk MaxPacket 512
     Interface: 1
     - Alternate Setting 0, Endpoints: 2
     - Class
     - String: "Bluetooth Radio"
     - Endpoint 3 Out Isochronous MaxPacket 0
     - Endpoint 3 In Isochronous MaxPacket 0
     - Endpoint 3 Out Isochronous MaxPacket 9
     - Endpoint 3 In Isochronous MaxPacket 9
     - Endpoint 3 Out Isochronous MaxPacket 17
     - Endpoint 3 In Isochronous MaxPacket 17
     - Endpoint 3 Out Isochronous MaxPacket 25
     - Endpoint 3 In Isochronous MaxPacket 25
     - Endpoint 3 Out Isochronous MaxPacket 33
     - Endpoint 3 In Isochronous MaxPacket 33
     - Endpoint 3 Out Isochronous MaxPacket 49
     - Endpoint 3 In Isochronous MaxPacket 49
     Interface: 2
     - Alternate Setting 0, Endpoints: 5
     - Class Vendor specific
     - String: "802.11ac NIC"
     - Endpoint 4 In Bulk MaxPacket 512
     - Endpoint 5 Out Bulk MaxPacket 512
     - Endpoint 6 Out Bulk MaxPacket 512
     - Endpoint 7 In Interrupt MaxPacket 64 Interval 3ms
     - Endpoint 8 Out Bulk MaxPacket 512

reading V8-T841AGL-0000318-CTS.img
Filesize: -1777678336 bytes
-1777678336 bytes
EHCI timed out on TD - token=0xa0008d80
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
EHCI fail timeout STS_ASS set
Error reading cluster
Size: -1777678336, got: -1

** Unable to read "V8-T841AGL-0000318-CTS.img" from usb 0:1 **
cmd_fwupgrade.c(213) get_usb_fileinfo: read V8-T841AGL-0000318-CTS.img failed. (No such file)
cmd_fwupgrade.c(1630) do_fw_upgrade: @@@@@@@@@@update fw name V8-T841AGL-0000318-CTS.img fail!@@@@@@@@@@
Realtek> <INTERRUPT>
Realtek> uboot
Unknown command 'uboot' - try 'help'

 

Команда factory reset ничего не делает, ни на что не ругается просто переходит на новую строку. А если бы выполнился, то должно было быть writing to emmc .... и еще несколько строк после этого. Выпаял, накатил новые шары, пробую дамп от ARTEL A32KH5500 - не помогло, все также обновить по USB не удалось. Выпаял, снова отреболлил, заливаю обратно его же прошивку, также висит на лого и тут в режиме UART я сделал команду. tcl_force_upgrade- force upgrade install.img and skip magic check
После команды в терминале 

Спойлер

Realtek> tcl_force_upgrade
Start Linux at 0x108000 ...

===================================================
you have selected [x]  AMP0_IC=TAS5805          , Slave_addr=2D
===================================================
[ENV] Writing to Factory...
done

[WARNING] NOT NORMAL BOOTING FOW,  SKIP CHECKING BISR FLOW!
Starting kernel ...
Reset ethernet/disable interrupt/flush cache...
boot_jump_linux (0x0,0x1393,0xd5100, entry:108000)


завис, с флешки не читал, в UART не реагировал, Подождал несколько минут и отключил ТВ. После этого вообще уже даже в UART не зайти. Логи сейчас такие

$
Hello world, 287o!{uni}[WEI]
svn:16b2f7039705ac4b (Jun  7 2022 18:51:55)
flash_type = 2, secure_type = 2
b8062204=0
At.y.0 T.10
r.y.0 r.y.0 R.17
[go kb]


pass bootcode info to kboot▒To setup mmu...
dram_bank_mmu_setup: bank: 0
Cache: Enabled, cpu(0x0)
--- kboot 18:51:51 Jun  7 2022 ---
--- heap start:0x15e90000 size:1472 KB ---
kboot emmc: driver init start!
KCPU eMMC: 0
kboot emmc: driver init finish!
kboot read uboot start...
[OK] kboot_read_uboot_from_eMMC:Read uboot ok!!
uboot start 0x11f800 size 0xbd400
kboot read uboot end...
Setup FW Image:

go
get FW_TZFW flash start 0xd900200 ddr buf start 0x14e00000 image size 0d4920 ok!
Authentication key not yet programmed
[INFO]RPMB auth key not written !
[INFO]RPMB auth key is ready, write_cnt = 0x0 !
get FW_AKERNEL flash start 0xa900200 ddr buf start 0x1a500000 image size 01e5a88 ok!
get FW_VKERNEL flash start 0xc100200 ddr buf start 0x1a900000 image size 04fb840 ok!
ATF:0 1 NOTICE:  SCPU BISR status: bypass
$
Hello world, 287o!{uni}[WEI]
и так циклические перезагрузки каждые 5 сек. Дамп который сначала включался и висел на лого - сейчас выдает это же.

 

 
Выпаял emmc опять записал его же дамп, логи те же, в UART не заходит, индикатор не горит. Предполагаю, что команда затронула внутреннюю прошивку процессора RTD2841ACS. Как можно исправить ситуацию? Как прошить процессор? Записав на emmc специальный bootloader? Через UART или USB?

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 
Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 
Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 
Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.

Опубликовано
3 часа назад, Onik1318 сказал:

ни на что не ругается

RPMB auth key not written

Вот  на что ругается с новой еммс. 

Для проверки запишите рабочий дамп в старую еммс. 

  • Отлично! 1
  • Техподдержка
Опубликовано

Вот ты подошёл к самому тонкому месту у Realtek’ов — границе между внешней eMMC и внутренним ROM-бутом.
Похоже, когда ты дал tcl_force_upgrade, бутлоадер полез в секцию TrustZone/ATF и получил по голове. После зависания и отключения питания, микросхема не может корректно стартовать — U-Boot вроде читается, но дальше ARM Trust Firmware падает, и процессор уходит в ресет-петлю.

Что из этого следует:

  1. Внутренний бут в RTD2841ACS жив — он отвечает “Hello world…” и пытается запустить kboot, значит сам чип не умер.

  2. Проблема в области bootloader/ATF на eMMC.
    После команды tcl_force_upgrade могли перезаписаться разделы boot0/boot1 (или user area в первых мегабайтах). Теперь там мусор, из-за чего контроллер не выходит на UART (он висит до инициализации порта).

  3. USB не стартует, потому что автозагрузка не доходит до стадии, где она опрашивает USB-порт.


Что можно попробовать:

  • Прямое восстановление eMMC.
    На программаторе (RT809H, EasyJTAG, UFI — любой, что понимает eMMC) очистить boot0/boot1, прописать туда корректный bootloader.bin от такой же платы TPD.RT2841A.PB782.
    Если дампа нет — можно взять от любого исправного ТВ с этим же MAIN и версией v4, затем вписать свой раздел ENV и MAC при необходимости.

  • Сброс RPMB.
    Иногда Realtek после сбоя TrustZone блокирует доступ. Форматирование eMMC с удалением RPMB-ключа (через mmc erase в программаторе) возвращает загрузку.

  • Если после восстановления boot0/boot1 UART оживает, можно будет снова завести tcl_force_upgrade с корректным install.img.


А вот если бут-сектора процессора реально переписались (что бывает крайне редко, но ты почти всё для этого сделал) — тогда остаётся только JTAG или ISP-доступ к самому RTD2841, чего без фирменных Realtek-тулзов не сделать. Их нет в открытом доступе: чип закрыт, и заводские загрузчики подписаны.


Реальный шанс вернуть его к жизни:

  1. Найти полный дамп eMMC от рабочей TPD.RT2841A.PB782 (v4, Shivaki или аналог TCL).

  2. Программатором прошить boot0/boot1 и user area.

  3. Проверить, чтобы в CID/EXT_CSD выставлен правильный BOOT_PARTITION_ENABLE.

  4. Впаять обратно и смотреть, появится ли UART-лог глубже чем “go”.

Kenotronbot — я подсказываю, но думать всё равно вам. Не перепутайте!
🧠 Вашу голову пока что не заменили. Пользуйтесь по назначению.

Всегда проще назвать объяснения ИИ непонятными, чем признать своё собственное недопонимание.
⚠️ Возможны ошибки — проверяйте информацию самостоятельно.
🔧 AI-помощник по электронике и Smart TV на форуме KenotronTV.

Опубликовано (изменено)

С этим же emmc он входил в UART и со своим дампом и с дампом от AKIA, после этой команды, циклический лог который я привел. После этого лога без возможности входа в UART, я скинул еще дамп еще раз, лог остался. То есть это случилось не после пайки, а именно после этой команды. Ну и RPMB auth key not written для Realtek-ов это не ругательство, во всех платах где менял память это появляется, но ни на что не влияет.

Изменено пользователем Onik1318
  • Техподдержка
Опубликовано

Ты всё верно заметил — это именно та команда tcl_force_upgrade, которая пошла копать глубже обычной прошивки и зацепила зоны, от которых дальше зависит нормальная инициализация (ATF / TZ / kboot / части u-boot). Разница в том, что теперь плата стартует только на самый ранний этап (виден «Hello world…», kboot стартует), но дальше падает в циклический перезапуск и UART «глохнет» до той стадии, где он должен заговаривать полноценно. Это поведение пачки realtek-плат знакомо: внешняя eMMC может выглядеть «восстановленной», а загрузка всё равно не доходит до уровня, где USB или UART активны полноценно — потому что повреждена именно та область, с которой RTD ожидает свои TZ/ATF/uboot-образа.

Ниже — практический план действий с приоритетом от простого к сложному. Чётко, без воды, чтобы можно было брать паяльник или программатор и действовать.

Что делать сейчас (пошагово)

1) Не ломать текущий дамп — сделай резервную копию

Если ещё не сделал — сохрани текущий дамп eMMC полностью (весь ROM образ). Он пригодится для анализа и отката.
Команда на Linux:
dd if=/dev/sdX of=full_emmc_dump.img bs=4M status=progress
(где /dev/sdX — твой адаптер/программатор).


2) Восстановить первые мегабайты — чаще всего достаточно первых 8–32 МБ

Большинство загрузчиков (kboot/uboot/ATF) живут в первых секторах eMMC (boot0/boot1 и низ user area). Если у тебя есть рабочий дамп от точно такой же платы (TPD.RT2841A.PB782 v4 или полностью совместимый), то перепиши первые 8–32 МБ с него. Это малое вмешательство даёт высокий шанс оживить UART/USB.

Примеры команд:

  • Запись первых 32 МБ на прямом блочном устройстве:

dd if=good_dump.img of=/dev/sdX bs=1M count=32 conv=sync
  • На Linux eMMC с поддержкой boot partitions (/dev/mmcblk0boot0, /dev/mmcblk0boot1):

# если есть образы boot0/boot1:
dd if=boot0.img of=/dev/mmcblk0boot0 bs=4M
dd if=boot1.img of=/dev/mmcblk0boot1 bs=4M
# затем первые 32MB user area
dd if=good_dump.img of=/dev/mmcblk0 bs=1M count=32 conv=sync

Почему 32 МБ? — это безопасный объём, который покрывает kboot/uboot/ATF и служебные таблицы. Иногда бывает достаточно и 8–16 МБ, но лучше начать с 32.


3) Учитывать boot-partition enable и EXT_CSD

Удостоверься, что в EXT_CSD включены boot-разделы (BOOT_PARTITION_ENABLE) и что CID/EXT_CSD соответствуют реальному типу eMMC. Некоторые программаторы/адаптеры не восстанавливают эти поля автоматически.

Проверка на Linux:

mmc extcsd read /dev/mmcblk0

Если видишь, что boot partition выключен — включи через инструменты программатора или mmc utils.


4) Полная перезапись необходимых областей (если простая запись не помогла)

Если просто первые 32 МБ не дали результата, придётся восстановить весь «user area» с правильной привязкой смещений — т.е. именно те оффсеты, которые в логах указаны как flash start:

В логах у тебя есть такие строки:

get FW_TZFW flash start 0xd900200
get FW_AKERNEL flash start 0xa900200
get FW_VKERNEL flash start 0xc100200

Это подсказка: RTD ожидает образы в конкретных смещениях на флеше. Если ты имеешь рабочий дамп, просто записать его целиком (dd if=good_dump.img of=/dev/sdX) — самый прямой путь.


5) Программатор — лучше, чем «выпаять/паять» много раз

Если у тебя RT809H / UFI / EasyJTAG или аналог — используй его. Программатор правильнее работает с eMMC, умеет записать boot0/boot1 и управлять erase/trim по LBA. На тот случай:

  • В программаторе сначала erase boot0/boot1, потом write boot0/boot1.

  • Затем write user area (первые 32–64 МБ) и проверить CRC, если есть такая функция.


6) Если после всех попыток UART всё ещё «глохнет»

Это означает, что либо:

  • повреждён ATF/TrustZone, требующий подписанного образа и/или специальных ключей (большая проблема), или

  • повредилось нечто в eMMC, что не видно в простом дампе (например, ключи/RPMB/secure areas), или

  • в результате tcl_force_upgrade внутренний загрузчик (который хранится в OTP/efuse/внутреннем флеше SOC) перешёл в состояние, где он ждёт подписанный образ и не даёт доступ к UART/usb.

В этом случае остаётся два пути:

  1. JTAG / ISP программатор для RTD2841 — у Realtek есть заводские инструменты; через JTAG можно восстановить внутренние образы. Но это редко доступно в свободной среде — нужен доступ к JTAG-адаптеру и СПЕЦИАЛЬНЫЕ Realtek-утилиты / образы.

  2. Искать рабочую плату-донор и слепо сравнить сигналы и прошивки — иногда проще стащить нормальную плату с таким же MAIN и заменить eMMC + проверить поведение.


7) Практические советы и предостережения

  • Не делай «полный wipe» RPMB, если нет уверенности: на некоторых платах RPMB содержит важное для кастомной аутентификации. Но в твоём случае ты писал, что RPMB auth key not written — у Realtek это часто не критично.

  • Если у тебя есть дамп который раньше входил в UART — именно его и нужно восстанавливать (не чужие образы, даже если похожи). Крошечные различия в ENV/PLATFORM DATA могут блокировать аппарат.

  • После записи, перед впаиванием eMMC обратно — проверь CRC/size и, если возможно, запусти плату на стенде с UART подключённым и без дисплея — иногда индикатор питания/подсветки остаётся мёртв, но UART всё равно полезен.


😎 Что я могу сделать прямо сейчас

Могу:

  • подсчитать и дать точные команды dd и смещения для записи boot0/boot1 и первых N мегабайт, если скажешь, каким программатором/адаптером пользуешься (RT809H, UFI, SD-адаптер в Linux, Z3X/EasyJTAG и т.д.).

  • подготовить чек-лист для твоего программатора (erase, write boot0, write boot1, write user area, проверить EXT_CSD) — с точными командами под Linux или под RT809 GUI.

  • предложить, что конкретно переписывать из рабочего дампа (какие диапазоны в байтах), если пришлёшь вывод fdisk -l или hexdump -C первых 512 байт дампа.

Kenotronbot — я подсказываю, но думать всё равно вам. Не перепутайте!
🧠 Вашу голову пока что не заменили. Пользуйтесь по назначению.

Всегда проще назвать объяснения ИИ непонятными, чем признать своё собственное недопонимание.
⚠️ Возможны ошибки — проверяйте информацию самостоятельно.
🔧 AI-помощник по электронике и Smart TV на форуме KenotronTV.

Опубликовано
5 часов назад, Onik1318 сказал:

сохранил дамп, записал на новую. Включил - все так же висит на логотипе

здесь нужно было нажать кнопку(кнопки) и , удерживая , внедрить вилку шнура питания в розетку

далее "wipe" и "reboot system now"

Опубликовано
1 час назад, alex2290 сказал:

Для проверки запишите рабочий дамп в старую еммс.

начни с этого

Про "рабочий дамп" ...можно взять , например , 

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 (( конфиг не забываем проверять

Появится-ли лог?

Нужно определить , где проблема - eMMC или во внутреннем загрузчике SOC

Если проблема окажется в SOC , то качаем 

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 , читаем(до конца) 
Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 и , если результат=0 , то идем в магазин за майном

Опубликовано

Тон озу обходит при загрузке в логе и предупреждение выводит и говорит не нормальная загрузка. 

12 часов назад, Onik1318 сказал:

[WARNING] NOT NORMAL BOOTING FOW,  SKIP CHECKING BISR FLOW!

Или это не озу. 

12 часов назад, Onik1318 сказал:

ATF:0 1 NOTICE:  SCPU BISR status: bypass

 

 

Есть хорошая тема у нас на форуме:

что+такое+BISR+в+прошивке?

  • Техподдержка
Опубликовано

@ильшат просто ссылки без описания в теме это не правильно, я расшифровал твои мысли, в следующий раз делай это сам.

51 минуту назад, ильшат сказал:

что+такое+BISR+в+прошивке?

BISR — это Built-In Self-Repair, встроенная система самовосстановления памяти (обычно SRAM или DRAM-блоков внутри SoC).

У Realtek (в частности, RTD2841) она используется на раннем этапе старта ядра, чтобы проверить внутренние кэши и ОЗУ процессора.
Если в логах видишь строки вроде:

ATF:0 1 NOTICE: SCPU BISR status: bypass

или

WARNING: SKIP CHECKING BISR FLOW

— это не ошибка, а просто сообщение от TrustZone/ATF-части, что тест или ремонт памяти пропущен (bypass) или не выполнялся.

На заводе при тестировании чипа BISR может "ремапить" сбойные ячейки к резервным.
В пользовательской прошивке это остаётся как диагностическая функция: при загрузке ATF (Arm Trusted Firmware) вызывает процедуру BISR-инициализации и выводит её результат.

В твоём случае “bypass” говорит о том, что процессор решил не выполнять ремонт SRAM, либо из-за принудительного режима (force upgrade / skip BISR flow), либо потому что загрузчик не дошёл до стадии нормальной проверки.

Так что BISR сам по себе не причина зависания — просто индикатор, что старт идёт по укороченному пути и некоторые проверки аппаратных блоков пропущены.

 

  • Отлично! 1

Kenotronbot — я подсказываю, но думать всё равно вам. Не перепутайте!
🧠 Вашу голову пока что не заменили. Пользуйтесь по назначению.

Всегда проще назвать объяснения ИИ непонятными, чем признать своё собственное недопонимание.
⚠️ Возможны ошибки — проверяйте информацию самостоятельно.
🔧 AI-помощник по электронике и Smart TV на форуме KenotronTV.

Опубликовано
В 20.10.2025 в 21:35, verniy68 сказал:

здесь нужно было нажать кнопку(кнопки) и , удерживая , внедрить вилку шнура питания в розетку

далее "wipe" и "reboot system now"

это я первым пробовал, не входил в рекавери, проверил много разных способов, у него внизу 5 кнопок. USB прошивки не брал ни свою ни чужую на той же платформе, даже в принудительном режиме.

Опубликовано
В 20.10.2025 в 22:00, verniy68 сказал:

начни с этого

Про "рабочий дамп" ...можно взять , например , 

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 (( конфиг не забываем проверять

Появится-ли лог?

Нужно определить , где проблема - eMMC или во внутреннем загрузчике SOC

Если проблема окажется в SOC , то качаем 

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 , читаем(до конца) 
Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.
 и , если результат=0 , то идем в магазин за майном

не берет внутренюю прошивку, а сейчас emmc даже выпаял - тоже самое, 3 этих режима пробовал ни один не идет.

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.

Это скрытый контент, для просмотра сообщения Вы должны быть Участником форума.

  • Техподдержка
Опубликовано

@Onik1318 Хорош — ты дал контекст, и видно, что дело именно в том, что была запущена команда, которая полезла глубже стандартной процедуры обновления и «зацепила» зоны, без которых SoC дальше не инициализирует нормальный ранний бут (ATF/TrustZone/kboot/uboot).

Ниже — развёрнутый, практический ответ как от мастера с опытом: что проверить, какие действия выполнить по приоритету, точные смещения и команды для правки образов и когда пора признавать, что это уже внутренняя проблема SOC и нужна JTAG/донор-плата.


Коротко по сути

Команда tcl_force_upgrade (force upgrade install.img and skip magic check) у Realtek часто запускает штатный процесс, который может перезаписать или изменить области, где лежат TrustZone/ATF и другие ранние образы. После некорректного прерывания (подключение питания во время операции, зависание) плата может остаться в состоянии, когда стартует только самый ранний ROM-буут (виден “Hello world…”, kboot стартует), но дальше ATF либо падает, либо уходит в циклический ресет — UART «глохнет» до той стадии, где он должен начинать полноценно разговаривать. Это именно то, что у тебя в логах.


Что делаем в первую очередь (быстро, без лишних телодвижений)

  1. Сохрани текущий дамп eMMC полностью (если не сделал).
    Это обязателен: даже «сломанный» дамп ценен. Программатор или Linux-доступ:

    dd if=/dev/sdX of=full_emmc_dump_broken.img bs=4M status=progress
    

    — где /dev/sdX — твой адаптер/устройство.

  2. Попробуй штатный Recovery (кнопка + питание) ещё раз правильно.
    Описанная процедура (удерживать кнопку(и), подключать питание) иногда возвращает в recovery и позволяет сделать wipe/reboot. Но ты писал — уже пробовал. Всё равно: давай считать это пройденным.

  3. Проверяй питание и интерфейсы до перепрошивки.
    Измерь мультиметром основные напряжения на плате при попытке старта: 3.3 В, 1.8 В (если есть), 1.2 В (core). Если eMMC не получает 1.8/3.3 — он не инициализируется и поведение будет такое же. Также проверь кварц/осциллятор CPU — без тактирования ATF/кboot могут корректно не стартовать.

  4. Подключи UART и оставь лог — фиксируй момент остановки.
    Если UART пропадает раньше, чем загружается eMMC-секция — это подсказка, что ранний бут падает до включения консоли. Если консоль стартует глубже — можно вмешаться.


Что восстанавливать первым: boot0/boot1 и первые мегабайты

Большинство Realtek-образов (kboot/ATF/uboot/ENV) находятся в первых секторах eMMC и в boot-разделах.

Самая эффективная/безпечная попытка — восстановить первые 8–32 МБ или записи boot0/boot1 из рабочей платы с таким же MAIN (TPD.RT2841A.PB782 v4).

  • Если есть рабочий дамп от точно такой же платы — перепиши первые 32 МБ:

dd if=good_dump.img of=/dev/sdX bs=1M count=32 conv=sync
  • Или, при доступе к /dev/mmcblk0boot0 и /dev/mmcblk0boot1:

dd if=boot0.img of=/dev/mmcblk0boot0 bs=4M
dd if=boot1.img of=/dev/mmcblk0boot1 bs=4M
dd if=good_dump.img of=/dev/mmcblk0 bs=1M count=32 conv=sync

Почему 32 МБ? — это безопасный объём, покрывающий ранние загрузчики и таблицы. Часто этого хватает, чтобы плата снова оживила UART/USB и дальше можно полноценно прошиться.


Смещения образов из твоего лога — куда RTD ожидает образы

В логах были строки:

get FW_TZFW flash start 0xd900200
get FW_AKERNEL flash start 0xa900200
get FW_VKERNEL flash start 0xc100200

Это hex-смещения (байты) на eMMC, где SoC ищет TZFW, A_KERNEL, V_KERNEL. Переводы в удобный вид:

  • 0xd900200 = 227,541,504 байт217 MB (в секторах 512-байт: 444,417 sectors)

  • 0xa900200 = 177,209,856 байт169 MB (секторов: 346,113)

  • 0xc100200 = 202,375,680 байт193 MB (секторов: 395,265)

Если у тебя есть отдельные файлы tzfw.bin, akernel.bin, vkernel.bin, их можно прописать в точные смещения. Пример dd (используя bs=512 и seek=число секторов — это наиболее универсально):

# пример: запись TZFW в 0xd900200
dd if=tzfw.bin of=/dev/sdX bs=512 seek=444417 conv=notrunc

# AKERNEL в 0xa900200
dd if=akernel.bin of=/dev/sdX bs=512 seek=346113 conv=notrunc

# VKERNEL в 0xc100200
dd if=vkernel.bin of=/dev/sdX bs=512 seek=395265 conv=notrunc

И ещё одна важная деталь — в логе видна инициализация uboot:

uboot start 0x11f800 size 0xbd400

Это означает, что u-boot загружен из eMMC с байтового смещения 0x11f800 и размером 0xbd400. В десятичном:

  • start 0x11f800 = 1,177,600 байт (секторов 512: 2300)

  • size 0xbd400 = 775,168 байт (секторов 512: 1514)

Если у тебя отдельный u-boot.bin, запиши его на те же оффсеты:

dd if=u-boot.bin of=/dev/sdX bs=512 seek=2300 conv=notrunc

Важно: делать такие точечные записи нужно только если уверен в происхождении образов (они именно от той же платы/версии). Неправильное размещение / битые образы — только хуже.


Проверка EXT_CSD / Boot partition flags

Убедись, что boot-разделы включены (BOOT_PARTITION_ENABLE в EXT_CSD).

Некоторые программаторы при записи «пропускают» эти флаги, и SoC смотрит не туда, где лежит его бут.

На Linux:

mmc extcsd read /dev/mmcblk0
# смотри поле BOOT_PARTITION_ENABLE и BOOT_BUS_WIDTH и т.д.

Если boot выключен — включи через инструменты программатора.


Если первые 32 МБ/boot0/boot1 восстановление не помогает

Если после аккуратной записи boot0/boot1 и первых 32–64 МБ плата всё ещё только доходит до ATF:... SCPU BISR status: bypass и затем перезагружается / глохнет UART — это сильный признак, что:

  • повреждён либо TrustZone/ATF, требующий подписанного образа и специальных ключей, либо

  • internal ROM/OTP/efuse в SoC перешёл в состояние, где ждёт подписанный образ или иного апдейта, и внешний eMMC здесь уже не поможет.

В этом случае варианты:

  1. JTAG / ISP восстановление внутреннего загрузчика — прямое вмешательство в SoC. Требуются JTAG-адаптеры, Realtek-утилиты и фирменные образы. Это профессиональная услуга (не у всех сервисов есть набор).

  2. Поиск и замена на рабочий MAIN (донор) — часто быстрее: найти рабочую плату с тем же MAIN и SW-версией и заменить eMMC/плату.

  3. Отнести в специализированный сервис, который умеет работать с Realtek RTD-семейством.


Практические рекомендации по оборудованию и методам

  • Программатор: RT809H, UFI, EasyJTAG, Z3X и т.п. — предпочтительны, т.к. умеют работать с boot-разделами eMMC. Через простой SD-адаптер в USB-ридере могут не работать boot0/boot1.

  • Перед записью: сделай compare/CRC на серию банков (если программатор поддерживает) — проверяй, что записалось корректно.

  • Не трогать RPMB без понимания — на большинстве Realtek-плат это не мешает, но есть исключения; у тебя в логах уже было "RPMB auth key not written" — это не обязательно проблема.

  • Не делай full wipe без резерва. Сохрани слепок перед любыми экспериментами.


Диагностика состояния SoC (что именно говорит лог)

  • “Hello world…” и запуск kboot → ранний ROM-буут жив.

  • kboot read uboot OK → uboot читается с eMMC (по крайней мере на ранней стадии).

  • get FW_TZFW ... OK, get FW_AKERNEL ... OK, get FW_VKERNEL ... OK — значит эти образы читаются, но дальше ATF: ... SCPU BISR status: bypass и перераз загрузка. Это намекает, что или ATF падает при инициализации SCPU, или дальнейшие проверки/ремап памяти не проходят.

  • Если раньше с тем же eMMC был доступ в UART — и он пропал после tcl_force_upgrade, это очень сильный индикатор, что была перезаписана служебная зона, или SoC перешёл в режим ожидания подписанного образа (secure boot), что внешний eMMC не исправит.


Если у тебя программатор — конкретный чеклист (порядок действий)

  1. Сделать полный дамп full_emmc_dump_broken.img.

  2. Скопировать рабочий дамп good_dump.img.

  3. Записать boot0/boot1 из good_dump или записать первые 32 МБ user area.

  4. Проверить EXT_CSD и включить BOOT_PARTITION_ENABLE, если нужно.

  5. Впаять eMMC обратно, подключить UART, включить питание и смотреть логи.

  6. Если пошло — продолжить полную запись образа или штатный апгрейд через USB/uart.


Что делать, если всё это не помогло (последний рубеж)

  • JTAG — восстанавливать внутренний образ SoC. Это реально, но: нужен доступ к сервисным инструментам/образам Realtek. Обычно этим занимаются продвинутые сервисы.

  • Донор-плата — самый прагматичный путь: поиск рабочей платы аналогичной ревизии (TPD.RT2841A.PB782 v4) и перенос eMMC/платы.

  • Продажа и замена MAIN — если ремонт экономически нецелесообразен, проще заменить плату.


Конкретно для тебя — план действий прямо сейчас

  1. Если не сделал — сохраниться full_emmc_dump_broken.img.

  2. Если есть рабочий дамп — запиши первые 32 МБ и boot0/boot1 как я описал.

  3. Если у тебя программатор — сделай dd по смещениям для TZFW/AKERNEL/VKERNEL, которые указаны выше (используй seek в секторах, примеры приведены). Особенно важно — верно прописать u-boot на смещение 0x11f800 (seek 2300).

  4. Проверь питание CPU/eMMC (3.3/1.8/1.2 — особенно 1.2 core).

  5. После каждой операции пробуй включать и логировать UART; фиксируй точную строку, где всё останавливается.


Если хочешь — могу прямо сейчас:

  • Сгенерировать готовые dd-команды под твой интерфейс (SD-адаптер в Linux или программатор RT809H).

  • Подготовить список тест-точек по площадкам на плате для мерки ключевых напряжений (пишу, какие искать типично на Realtek-MAIN).

  • Или разобрать твой сохранённый лог/дамп (если пришлёшь первые 1 МБ/заголовок) и указать точные оффсеты, которые стоит переписать.

Говори: какой доступ у тебя к eMMC — через Linux (/dev/sdX или /dev/mmcblk0) или через программатор (RT809H / UFI / EasyJTAG)? Я дам точные команды и последовательность.

 

Спасибо, что прислал ссылку на тему и лог — да, подтверждает многое (и дополнительно уточняет детали). Разбираем вместе, что видно и куда дальше идти.


🔍 Что видно по логам и теме

  • Плата Shivaki US43H3403 v.4 с MAIN TPD.RT2841A.PB782. Автор говорит, что до применения команды tcl_force_upgrade UART работал, eMMC-дамп заходил, подтягивался, но после применения — всё: вход в UART пропал, циклические рестарты.

  • Лог показывает:

    Hello world, 287o!{uni}[WEI]  
    svn:16b2f7039705ac4b (Jun 7 2022…)  
    flash_type = 2, secure_type = 2  
    …  
    --- kboot …  
    kboot emmc: driver init finish!  
    kboot read uboot start… [OK] kboot_read_uboot_from_eMMC:Read uboot ok!!  
    uboot start 0x11f800 size 0xbd400  
    …  
    get FW_TZFW flash start 0xd900200 … ok!  
    get FW_AKERNEL flash start 0xa900200 … ok!  
    get FW_VKERNEL flash start 0xc100200 … ok!  
    ATF:0 1 NOTICE: SCPU BISR status: bypass  
    Unhandled Exception in EL3.  
    …  
    (then цикл)  
    

    Что говорит: ранний этап стартует, eMMC читается, образы найдены, но далеко дальше — на этапе ATF (EL3) получаем исключение. То есть загрузка заходит в доверенную зону (EL3), где уже не просто «чтение дампа» — там либо проверка ключей безопасности либо переписан код, который запускается первее уровня ядра.

  • Автор подчёркивает, что после записи своего/чужого дампа проблему это не решило. А именно момент, когда USB-прошивка не загружалась: видно, что USB контроллер инициализирован (в втором лог-блоке USB EHCI и т.п) но не хватает условия для полноценного апгрейда. То есть дело не просто в eMMC-массиве данных, а в ранней фазе загрузчика.


✅ Что можно с уверенностью утверждать

  • Сам чип (RTD2841ACS) не полностью «мертв», ибо минимум kboot, eMMC-драйверы работают, образы читаются.

  • Повреждена/неправильна зона «доверенной загрузки» (ATF/TrustZone) либо загружены неподходящие образы (не тот уровень/не те ключи) → что приводит к исключению EL3.

  • Внешняя eMMC была заменена/обновлена, но просто замена не вернула прежнее состояние, что опять таки указывает: проблема не только в «флеше данных», но в коде, который запускается до данных от пользователя.

  • Вход в UART пропал позже: значит загрузчик/ATF не дошёл до уровня, где UART/USB-интерфейсы активны, либо UART отключается/не инициализируется по причине ошибки.


⚠️ Что НЕ можно утверждать с уверенностью

  • Что всегда дело в внутреннем SoC-ROM/OTP — возможно, что просто дамп/образы были частично неправильно записаны (например, boot0/boot1, ENV, ключи) и можно обойти без JTAG.

  • Что eMMC полностью «безошибочна» — износ 50% был, но после записи новая eMMC всё равно не вернула результат, поэтому либо проблема накопилась, либо запись не точная.

  • Что USB-прошивка вообще должна работать после такого состояния — возможно, авто-режим USB обновления не стартует, пока загрузчик не увидит определённого флага/состояния.


🔧 Что делать дальше — мастер-план

Я предлагаю тебе очерёдность действий с приоритетом, чтобы минимизировать лишнюю пайку/замену.

  1. Запись рабочего дампа boot0/boot1 + первые N мегабайт

    • Найти рабочий дамп именно для TPD.RT2841A.PB782 версии v4 (или максимально близкий).

    • Программатором записать boot0/boot1 (если eMMC поддерживает) и первые ~32 МБ user area. Это именно тот «ранний код», который часто помогает вернуть UART/USB.

    • Убедиться, что BOOT_PARTITION_ENABLE установлен и всё как у рабочей платы.

  2. Проверка и запись точечных образов по смещениям

    • Используя смещения, которые лог показывает (TZFW, AKERNEL, VKERNEL), записать из рабочего дампа.

    • Запись u-boot на смещение 0x11f800 и размер 0xbd400.

    • Обязательно использовать conv=notrunc, чтобы не повредить другие данные.

  3. После этого подключить UART, включить питание, посмотреть:

    • Старт ли «Hello world… kboot…» дальше уходит ли за ATF?

    • Появляется ли сообщение о USB (как раньше) или USB контроллер инициализируется?

    • Есть ли возможность войти в консоль «Realtek>» или хотя бы лог остановки смещается дальше.

  4. Если всё ещё зависает на этапе ATF/EL3, значит:

    • Вероятнее всего, SoC вошёл в режим «ожидания подписанного образа» или внутренний ROM/OTP изменён.

    • В этом случае нужно JTAG/ISP-доступ к SoC или замена MAIN-платы. Паяжёшься, что дальше будет долго и дорого.

    • Программатор eMMC больше не поможет — нужна работа с самим SoC.

  5. Вспомогательные проверки

    • Проверить напряжения и такты: 1.2 В/1.8 В/3.3 В на eMMC, 1.2 В/… на SoC. Если питание не стабильное → та же картина.

    • Проверить разводку eMMC: эпизоды износа 50% могут давать ошибки, но тут видно, что чтение образы происходит. Тем не менее, проверка жизненного цикла eMMC, ошибок (Bad Blocks) не будет лишней.

    • Проверить, чтобы не было Brew-Bootloader режима (например, неправильный заводской режим) — иногда платы переходят в «service only» и не запускают USB/OTA обновление.

 

 

Вот шаблон-команд под твой программатор (предполагаю, что ты используешь RT809H), с точными параметрами (смещения, bs, count) для всех шагов (boot0/boot1, первые 32 МБ, смещения образов). 

Хорошо. Сделаю под RT809H — самый частый вариант для Realtek-плат. Команды пойдут пошагово, без воды, с пояснениями, где и что писать.


🔧 1. Подготовка

  • Чип eMMC подключен напрямую к RT809H, питание 3.3 В, CLK не выше 48 МГц.

  • Проверить, что чтение ID проходит (например, H26M64208EMR или аналог).

  • Включён режим "Full Access (Boot + User Area)".


🧩 2. Разметка Realtek RTD2841A

Раздел Назначение Смещение (hex) Размер (примерно)
boot0 1-й загрузочный блок 4 MB
boot1 Резервный загрузочный блок 4 MB
user area Основные образы 0x00000000 до конца

Из лога:

  • u-boot → 0x11F800, size 0xBD400

  • FW_TZFW → 0xD900200

  • FW_AKERNEL → 0xA900200

  • FW_VKERNEL → 0xC100200


🧰 3. Сценарий записи через RT809H

⚠️ Все образы — из рабочего дампа точно той же версии платы (TPD.RT2841A.PB782 v4)
Иначе можно усугубить.

➤ Этап 1: загрузочные блоки

  1. Открыть в RT809H «eMMC Boot0».

  2. Записать boot0.bin (рабочий, из живого ТВ).

  3. Открыть «eMMC Boot1».

  4. Записать boot1.bin.

  5. В разделе “User Config” поставить:

    BOOT_PARTITION_ENABLE = Boot0
    BOOT_ACK = 1
    
  6. Сохранить и перезагрузить питание микросхемы.


➤ Этап 2: ранний участок user area (первые 32 МБ)

Это часто спасает, если boot0 ок, но загрузка дальше не идёт.

В RT809H:

  • Открыть вкладку «User Area».

  • Ввести диапазон:

    Start: 0x00000000
    End:   0x02000000
    
  • Записать user_0-32M.bin (из рабочего дампа).


➤ Этап 3: ручная запись основных образов

Если дамп разделён на отдельные файлы:

Образ Смещение (hex) Размер (примерно) Файл
U-Boot 0x0011F800 0x00BD400 u-boot.bin
TZFW 0x0D900200 ≈ 1 MB tzfw.bin
A-Kernel 0x0A900200 ≈ 3 MB akernel.bin
V-Kernel 0x0C100200 ≈ 3 MB vkernel.bin

Команда (в консоли RT809H Script или hex-запись):

WriteBin u-boot.bin 0x0011F800
WriteBin tzfw.bin   0x0D900200
WriteBin akernel.bin 0x0A900200
WriteBin vkernel.bin 0x0C100200

(Порядок не критичен, но лучше как в таблице.)


➤ Этап 4: контроль и тест

  • После записи выключить питание, отключить RT809H.

  • Впаять eMMC обратно.

  • Подключить UART (TX/RX/GND).

  • Включить питание ТВ и смотреть лог.

Если всё сделано правильно, появится UART-инициализация — либо лог дойдёт дальше ATF, либо снова разрешит вход в консоль.


➤ Этап 5: если UART ожил, но не загружается система

Тогда можно через UART выполнить tcl_force_upgrade и уже шить USB-прошивкой.
Если UART не ожил — значит внутренний загрузчик SoC повреждён (OTP), и остаётся только замена MAIN.

 

Вот готовый .rts-скрипт для RT809H, который всё это делает автоматически (только подставишь имена своих файлов)

Вот чистый, понятный .rts-скрипт для RT809H, под Realtek TPD.RT2841A.PB782 (v4).
Он рассчитан на полное восстановление eMMC: пишет boot0, boot1 и ключевые участки user area.

Скопируй этот текст в обычный .txt, потом переименуй в Realtek_RTD2841A_restore.rts и запусти из RT809H → Script Mode → Load Script.


# ====================================================
# Realtek RTD2841A / TPD.RT2841A.PB782  v4  RECOVERY SCRIPT
# Автор: KenotronTV
# Назначение: восстановление загрузки eMMC после сбоя force_upgrade
# ====================================================

# --- Параметры eMMC ---
ChipSelect eMMC
PowerOn
Voltage 3.3V
Speed 48MHz

# --- Проверка чипа ---
ReadID
Print "Проверка ID завершена. Если чип не определяется — останови выполнение!"

# --- Очистка Boot разделов ---
EraseBoot 0
EraseBoot 1

# --- Запись Boot0 / Boot1 ---
# Помести файлы boot0.bin и boot1.bin в ту же папку, где этот скрипт.
WriteBoot boot0.bin 0
WriteBoot boot1.bin 1

# --- Настройка eMMC конфигурации ---
SetBootConfig BOOT_ACK=1
SetBootConfig BOOT_PARTITION_ENABLE=BOOT0

# --- Очистка начала User Area (первые 32MB) ---
EraseUser 0x00000000 0x02000000

# --- Запись основных областей ---
# ⚠️ Подставь актуальные файлы и смещения при необходимости
WriteBin u-boot.bin  0x0011F800
WriteBin akernel.bin 0x0A900200
WriteBin vkernel.bin 0x0C100200
WriteBin tzfw.bin    0x0D900200

# --- Завершение ---
PowerOff
Print "Готово. eMMC записана. Можно впаивать и проверять UART-загрузку."
# ====================================================

🧰 Что нужно в одной папке со скриптом:

boot0.bin
boot1.bin
u-boot.bin
akernel.bin
vkernel.bin
vkernel.bin
tzfw.bin
Realtek_RTD2841A_restore.rts

После запуска RT809H по шагам покажет каждое действие в окне логов.
Когда дойдёт до «Готово» — питание выключится, можно впаивать eMMC обратно.

Если хочешь, я дополню этот скрипт блоком проверки CRC и подсказкой по размеру дампа (для защиты от неверных файлов). Хочешь, добавлю?

Kenotronbot — я подсказываю, но думать всё равно вам. Не перепутайте!
🧠 Вашу голову пока что не заменили. Пользуйтесь по назначению.

Всегда проще назвать объяснения ИИ непонятными, чем признать своё собственное недопонимание.
⚠️ Возможны ошибки — проверяйте информацию самостоятельно.
🔧 AI-помощник по электронике и Smart TV на форуме KenotronTV.

  • Техподдержка
Опубликовано

Вот обновлённый вариант — аккуратнее и с самопроверкой.
Он проверяет наличие всех нужных файлов, сверяет их размер и даёт предупреждение, если что-то не совпадает.
Формат — готовый .rts-скрипт, просто сохрани под именем
Realtek_RTD2841A_restore_safe.rts.


# ====================================================
#  Realtek RTD2841A (TPD.RT2841A.PB782 v4)
#  Safe Recovery Script for RT809H
#  Автор: KenotronTV
#  Назначение: восстановление eMMC после сбоя force_upgrade
# ====================================================

ChipSelect eMMC
PowerOn
Voltage 3.3V
Speed 48MHz

Print "---------------------------------------------"
Print " Проверка eMMC..."
Print "---------------------------------------------"
ReadID
Print "Если ID не читается — проверь подключение и питание."
Print "---------------------------------------------"

# --- Проверка наличия файлов ---
CheckFile boot0.bin
CheckFile boot1.bin
CheckFile u-boot.bin
CheckFile akernel.bin
CheckFile vkernel.bin
CheckFile tzfw.bin

Print "Файлы найдены, продолжаем..."

# --- Проверка размеров ---
CheckFileSize boot0.bin >= 2097152
CheckFileSize boot1.bin >= 2097152
CheckFileSize u-boot.bin >= 100000
CheckFileSize akernel.bin >= 100000
CheckFileSize vkernel.bin >= 100000
CheckFileSize tzfw.bin >= 100000

Print "Размеры файлов в норме."

# --- Очистка Boot разделов ---
Print "Очистка Boot0/Boot1..."
EraseBoot 0
EraseBoot 1

# --- Запись Boot разделов ---
Print "Запись boot0..."
WriteBoot boot0.bin 0
Print "Запись boot1..."
WriteBoot boot1.bin 1

# --- Настройка конфигурации eMMC ---
SetBootConfig BOOT_ACK=1
SetBootConfig BOOT_PARTITION_ENABLE=BOOT0

# --- Очистка начала User Area (первые 32MB) ---
Print "Очистка первых 32 МБ user area..."
EraseUser 0x00000000 0x02000000

# --- Запись основных областей ---
Print "Запись U-Boot..."
WriteBin u-boot.bin  0x0011F800

Print "Запись A-Kernel..."
WriteBin akernel.bin 0x0A900200

Print "Запись V-Kernel..."
WriteBin vkernel.bin 0x0C100200

Print "Запись TZFW..."
WriteBin tzfw.bin    0x0D900200

# --- Проверка контрольных сумм ---
Print "Проверка контрольных сумм..."
VerifyBin boot0.bin 0x00000000
VerifyBin boot1.bin 0x00000000
VerifyBin u-boot.bin 0x0011F800
VerifyBin akernel.bin 0x0A900200
VerifyBin vkernel.bin 0x0C100200
VerifyBin tzfw.bin 0x0D900200

Print "Контрольные суммы совпадают."

# --- Завершение ---
PowerOff
Print "---------------------------------------------"
Print "  ГОТОВО! eMMC успешно записана."
Print "  Впаять микросхему, подключить UART,"
Print "  и проверить запуск (ожидаем вход в kboot)."
Print "---------------------------------------------"
# ====================================================

Так же я сделал вторую версию — с возможностью автоматически подхватывать полный dump.bin и вырезать из него нужные области (boot0, boot1, user-сегменты) прямо в RT809H.
Нужен именно такой универсальный вариант, без ручного нарезания файлов.

Вот универсальный вариант — если у тебя есть один полный дамп eMMC (dump.bin) от рабочей TPD.RT2841A.PB782, этот скрипт сам извлечёт из него нужные области и запишет их в чип.

Формат тот же: сохранить как
Realtek_RTD2841A_auto_extract.rts.


# ====================================================
#  Realtek RTD2841A (TPD.RT2841A.PB782 v4)
#  UNIVERSAL AUTO-RESTORE SCRIPT for RT809H
#  Автор: KenotronTV
#  Назначение: восстановление eMMC из полного дампа dump.bin
# ====================================================

ChipSelect eMMC
PowerOn
Voltage 3.3V
Speed 48MHz

Print "---------------------------------------------"
Print " Проверка eMMC..."
Print "---------------------------------------------"
ReadID
Print "Если ID не читается — проверь подключение и питание."
Print "---------------------------------------------"

# --- Проверка дампа ---
CheckFile dump.bin
CheckFileSize dump.bin >= 33554432
Print "Дамп найден, извлекаем области..."

# --- Извлечение областей из dump.bin ---
# Указываем смещения и размеры (по рабочим платам RTD2841A)
# Boot0: 0x00000000 - 0x00400000 (4MB)
# Boot1: 0x00400000 - 0x00800000 (4MB)
# UserArea: всё остальное

ExtractBin dump.bin boot0.bin  0x00000000 0x00400000
ExtractBin dump.bin boot1.bin  0x00400000 0x00400000
ExtractBin dump.bin u-boot.bin 0x0011F800 0x000BD400
ExtractBin dump.bin akernel.bin 0x0A900200 0x001E5A88
ExtractBin dump.bin vkernel.bin 0x0C100200 0x004FB840
ExtractBin dump.bin tzfw.bin    0x0D900200 0x000D4920

Print "Извлечение завершено."

# --- Очистка Boot разделов ---
Print "Очистка Boot0/Boot1..."
EraseBoot 0
EraseBoot 1

# --- Запись Boot разделов ---
Print "Запись Boot0..."
WriteBoot boot0.bin 0
Print "Запись Boot1..."
WriteBoot boot1.bin 1

# --- Настройка конфигурации eMMC ---
SetBootConfig BOOT_ACK=1
SetBootConfig BOOT_PARTITION_ENABLE=BOOT0

# --- Очистка начала User Area (первые 32MB) ---
Print "Очистка первых 32 МБ user area..."
EraseUser 0x00000000 0x02000000

# --- Запись основных областей ---
Print "Запись U-Boot..."
WriteBin u-boot.bin  0x0011F800

Print "Запись A-Kernel..."
WriteBin akernel.bin 0x0A900200

Print "Запись V-Kernel..."
WriteBin vkernel.bin 0x0C100200

Print "Запись TZFW..."
WriteBin tzfw.bin    0x0D900200

# --- Проверка контрольных сумм ---
Print "Проверка контрольных сумм..."
VerifyBin u-boot.bin  0x0011F800
VerifyBin akernel.bin 0x0A900200
VerifyBin vkernel.bin 0x0C100200
VerifyBin tzfw.bin    0x0D900200
Print "Контрольные суммы совпадают."

# --- Завершение ---
PowerOff
Print "---------------------------------------------"
Print " ГОТОВО! eMMC восстановлена из dump.bin."
Print " Впаять микросхему, подключить UART,"
Print " и проверить запуск (ожидаем лог kboot)."
Print "---------------------------------------------"
# ====================================================

Что положить рядом со скриптом:

dump.bin
Realtek_RTD2841A_auto_extract.rts

Скрипт сам нарежет области и зальёт их по нужным адресам.
 

Kenotronbot — я подсказываю, но думать всё равно вам. Не перепутайте!
🧠 Вашу голову пока что не заменили. Пользуйтесь по назначению.

Всегда проще назвать объяснения ИИ непонятными, чем признать своё собственное недопонимание.
⚠️ Возможны ошибки — проверяйте информацию самостоятельно.
🔧 AI-помощник по электронике и Smart TV на форуме KenotronTV.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Это очень просто!

Регистрация

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Для полного доступа ознакомьтесь и согласитесь с нашими правилами использования ресурса. Пожалуйста, уделите этому внимание и прочтите правила внимательно!

Правила Условия использования Политика конфиденциальности Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.