Page 1 of 1

LA46A650 u-boot problems

Posted: Fri Dec 21, 2012 1:45 am
by mpoos
Hi

I have a LA46A650 which I suspect has been bricked in a boot loop.
I have serial output active. I have never been able to get to settings to change debug setting but I suspect this does not matter in this case.
I also suspect this is the result of a failed update.

It boots (5 times) to u-boot after pressing space, however there is no _StreamOS line after

Code: Select all

Enter MBL..[0001]
there is no prompt or any outher output.
all characters are echoed. Enter does nothing but seems to execute commands.

The following commands work (produce output to the console)

Code: Select all

echo
printenv
boot
setenv
saveenv
For printenv, pressing Enter repeats the previous command. This mode is exited by any character and then enter.

I have obtained T-AMBDAU which is the latest update for this TV but doesnt have all partition images I would expect.

Code: Select all

setenv silent no
has no effect on the output
help produces no output
flinfo, usb info produce no output.

Any ideas on how to proceed from here would be appreciated.

cheers
Mark

Re: LA46A650 u-boot problems

Posted: Fri Dec 21, 2012 8:52 am
by tom_van
Seems very similar to a problem I experienced with LA46A956. See viewtopic.php?f=8&t=49&start=40#p2445
Address to "unsilent" u-boot might be the same. Good luck.

Re: LA46A650 u-boot problems

Posted: Sat Dec 22, 2012 4:28 am
by mpoos
Thanks for the hint

The correct command for this one after some disassembly of u-boot.bin is

Code: Select all

mw 0x85f87610 0
And it sprang into life.

There also looks like it is checking for a gpio pin to enable or disable this but I dont have the correct circuit diagram for this particular model.

Still working on recovery but its better than being in the dark.

cheers
mark

Re: LA46A650 u-boot problems

Posted: Sun Dec 23, 2012 1:12 am
by mpoos
Just an update for any one in the future and save someone some time debricking one of these TVs.

The command set in u-boot is

Code: Select all

help
?       - alias for 'help'
askenv  - get environment variables from stdin
autoscr - run script from memory
base    - print or set address offset
bbm   - BBM sub-system
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
diskboot- boot from IDE device
echo    - echo args to console
erase   - erase FLASH memory
exit    - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls- list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
flinfo  - print FLASH memory information
FGP    - FlexoneNand CE Pattern Generator
go      - start application at address 'addr'
help    - print online help
ide     - IDE sub-system
iminfo  - print header information for application image
imls    - list all images found in flash
itest	- return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nm      - memory modify (constant address)
fnw    - FlexoneNand Writer
FGP    - FlexoneNand CE Pattern Generator
printenv- print environment variables
protect - enable or disable FLASH write protection
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sleep   - delay execution for some time
test    - minimal test like /bin/sh
usb     - USB sub-system
usbboot - boot from USB device
version - print monitor version
Note FGP is listed twice. The 1st one is actually format and the 2nd is onwall which writes all partitions to nand flash.

Some TV info...

Code: Select all

STi710x> coninfo
List of available devices:
serial   80000003 SIO stdin stdout stderr 
STi710x> bdinfo
boot_params = 0x85DDFF88
memstart    = 0x84000000
memsize     = 0x08000000
flashstart  = 0xA0000000
flashsize   = 0x85DFFF88
flashoffset = 0x00044080
ethaddr     = 00:01:01:01:01:01
ip_addr     = 10.240.74.57
baudrate    = 115200 bps

STb7109 version 3.x
PLL0      = 531 MHz
PLL1      = 360 MHz
ST40  CPU = 265 MHz
ST40  BUS = 132 MHz
ST40  PER = 66 MHz
ST231 CPU = 360 MHz
ST BUS    = 180 MHz
EMI       = 90 MHz
LMI       = 180 MHz
STi710x> flinfo

Bank # 1: missing or unknown FLASH type
The normal flash commands dont work so don't use them. Also don't use the commands for flash update shown in the environment.

Code: Select all

STi710x> printenv
baudrate=115200
ipaddr=10.240.74.57
netmask=255.255.255.0
gatewayip=10.240.74.1
serverip=10.240.74.106
ethaddr=00:04:67:FF:FF:0F
nfsserver=192.168.10.200
nfsrootdir=/data/Samsung/rootfs/rfs
bigphys=2000
memsize=84M
board=stb7100ref_27
monitor_base=0xA0000000
monitor_len=0x00020000
monitor_sec=1:0-8
env_sec=1:9-10
cleanenv=protect off $env_sec;erase $env_sec;protect on $env_sec
kernel_base=0xA0040000
kernel_len=0x00200000
kernel_sec=1:11-42
cramfs_base=0xA0240000
cramfs_sec=1:43-90
cramfs_len=0x00300000
load_addr=0x84000000
updatebootrom=protect off $monitor_sec;erase $monitor_sec;tftp $load_addr u-boot.bin;cp.b $load_addr $monitor_base $monitor_len;protect on $monitor_sec
updatelinux=protect off $kernel_sec;erase $kernel_sec;tftp $load_addr vmlinux.ub;cp.b $load_addr $kernel_base $kernel_len;protect on $kernel_sec
updaterfs=protect off $cramfs_sec;erase $cramfs_sec;tftp $load_addr rfs.cramfs;cp.b $load_addr $cramfs_base $cramfs_len;protect on $cramfs_sec
ipconf=set ip $ipaddr::$gatewayip:$netmask:stb7109::off 
nfsconf=set nfsroot $nfsserver:$nfsrootdir,nfsvers=2,rsize=4096,wsize=8192,tcp 
hwnfconf=set nwhwnet device:eth0,hwaddr:$ethaddr 
nfsbootargs=run ipconf;run nfsconf;run hwnfconf;set bootargs console=ttyAS0,115200 mem=$memsize root=/dev/nfs rw nfsroot=$nfsroot ip=$ip nwhwconf=$nwhwnet bigphysarea=$bigphys stmmaceth=msglvl:0,watchdog:4000,rxsize:512
cramfsbootargs=run ipconf;run hwnfconf;set bootargs console=ttyAS0,115200 mem=$memsize root=/dev/mtdblock2 rw rootfstype=cramfs ip=$ip nwhwconf=$nwhwnet bigphysarea=$bigphys stmmaceth=msglvl:0,watchdog:4000,rxsize:512 quiet
testlinux=tftp $load_addr vmlinux.ub; bootm $load_addr 
verify=n
bootdelay=1
stdin=serial
stdout=serial
stderr=serial
bootcmd=run ipconf;run hwnfconf; bbm open; bbm load kernel; bbm close; setenv bootargs mem=$memsize root=/dev/tbml6 rw rootfstype=squashfs ip=$ip nwhwconf=$nwhwnet bigphysarea=2000 stmmaceth=msglvl:1,watchdog:4000,rxsize:512 quiet; bootm 0x84100000 

Environment size: 1968/131068 bytes


The silent env variable does not exist in this u-boot hence the use of

Code: Select all

mw 0x85f87610 0
to unsilence the console.

The standard bbm usb command doesnt work in this A series model.

There is an onw command (in help it shows as fnw) but that wont work.
use

Code: Select all

help onw
onw  
    - FlexoneNand Writer
MBL    ADDRESS : 0x87400000
U-BOOT ADDRESS : 0x87500000
KERNEL ADDRESS : 0x87600000
ROOTFS ADDRESS : 0x87A00000


To get the address of the image it will use to write the nand flash partition.
There are addresses for the other partitions but they are not shown anywhere. The full list is

Code: Select all

1     MBL    ADDRESS : 0x87400000
2     U-BOOT ADDRESS : 0x87500000
3     U-Boot param data - not writable
4     KERNEL ADDRESS : 0x87600000
5     ROOTFS ADDRESS : 0x87A00000
6     BOOTIMG ADDRESS : 0x88200000
7     EXEDATA ADDRESS : 0x88A00000
8     APPDATA ADDRESS : 0x90A00000
9     UNKNOWN ADDRESS : 0x91600000
bbm show partition works but the format is different.

Code: Select all

STi710x> bbm show partition
<< PARTITION INFORMATION >>
 id        : Boot Loader (0x1)
 attr      : RW (0x1)
 first_blk    : 0
 no_blks : 1
  ---------------------  
 id        : u-boot (0x2)
 attr      : RW (0x1)
 first_blk    : 1
 no_blks : 3
  ---------------------  
 id        : u-boot parmeter (0x5)
 attr      : RW (0x1)
 first_blk    : 4
 no_blks : 1
  ---------------------  
 id        : User Defined (0x4)
 attr      : RW (0x1)
 first_blk    : 5
 no_blks : 2
  ---------------------  
 id        : KERNEL (0x3)
 attr      : RW (0x1)
 first_blk    : 7
 no_blks : 24
  ---------------------  
 id        : CRAMFS (0x8)
 attr      : RW (0x1)
 first_blk    : 31
 no_blks : 36
  ---------------------  
 id        : RFS (0x9)
 attr      : RW (0x1)
 first_blk    : 67
 no_blks : 80
  ---------------------  
 id        : User Defined (0xa)
 attr      : RW (0x1)
 first_blk    : 147
 no_blks : 92
  ---------------------  
 id        : User Defined (0xb)
 attr      : RW (0x1)
 first_blk    : 239
 no_blks : 40
  ---------------------  
 id        : User Defined (0xc)
 attr      : RW (0x1)
 first_blk    : 279
 no_blks : 92
  ---------------------  
 id        : User Defined (0xd)
 first_blk    : 371
 no_blks : 40
  ---------------------  
 id        : User Defined (0xe)
 attr      : RW (0x1)
 first_blk    : 411
 no_blks : 36
  ---------------------  
 id        : User Defined (0xf)
 attr      : RW (0x1)
 first_blk    : 447
 no_blks : 48
  ---------------------  
e.g.
so load the kernel to 0x87600000 using

Code: Select all

fatload usb 1 0x87600000 /vmlinux.ub
next run onw to get the writer menu. I selected 4 to update the kernel

Code: Select all

STi710x> onw
[ONW:   ] Bootloader already formated BML

 ---------------- Sub Menu -------------
   Update select partition            
  1 : MBL Bootloader partition    
  2 : u-boot partitionn               
  4 : kernel image partition          
  5 : rootfs image partition          
  6 : boot image partition          
  7 : exeDSP image partition          
  8 : appdata image partition          
  x : go Main menu                    
 ---------------------------------------
 ##  Number of Partition : 13

 ##  Select a partition : [ONW:   ]  Erase Blocks  : 000004008012016020025029033037041045050054058062066070075079083087091095[ONW:   ]  +-----------------------+[ONW:   ]  | IMAGE ERASE FINISHED! |[ONW:   ]  +-----------------------+[ONW:   ]  Write Blocks  : 000001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100[ONW:   ]  +-----------------------+[ONW:   ]  | IMAGE WRITE FINISHED! |[ONW:   ]  +-----------------------+Completed Update Image ? (y/n)

Reboot!Enter MBL..[0001]


After the reboot, it all sprang into life. I did need to do a full usb software in the conventional way as there were dark shadows on the screen prior.

cheers
Mark

Re: LA46A650 u-boot problems

Posted: Mon Dec 24, 2012 10:04 am
by juusso
Perhaps better move this info to wiki? Could you pls? :)