can't find the original disassembly i had, here is a new one.
this is quite rudimentary, just looked at it a bit, and named some functions
(go to Functions tab in IDA for a list of them
), and commented stuff
(especially function args and the boot/updateflags
).
the bootloader seems to be in three parts so three IDB's of the file.
1st: IPL, in the bin file at 0x0, 4KB.
2nd: some extra bootloader named VFL by OEM, in the bin file at 0x3000
3rd: I called this SPL, this can flash etc. otherwise called FTL by OEM, in the bin file at 0x3D000.
(the bin file just gets flashed into nand when upgrading, starting in nand from 0x0.
)
download:
http://hpcmonex.net/utdisasms.zip
BTW some of the filenames I had slightly wrong..
UT+CE
(uboot and CE
) upgrade file: UTCEIMG.BIN
chksum file for it: UTCEIMG.CKS
what was correct is confirmed now:
CE image
(CE only
) upgrade file: WINCEIMG.BIN
chksum file for it: WINCEIMG.CKS
and clearly it is the usual UT flashable format, that has the SIG-BINFS stuff
(header
) at the start. see the PNA images on my romstuff page on my site, they are the same format.
I still don't see any other way to boot into update mode on this C320 other than setting the bootflags in RAM, but it is certainly possible that I missed something

only looked at this a bit so far. very interesting: I could see that VFL checks some other stuff not just the flags in RAM
(see "bootup" function in VFL disasm
).
I'm sure there is also the standard UBOOT bootmenu somewhere, at least I found the strings for it. no code references yet
(other than manually disassembled ones
).
finally, what I find interesting is the string "UTLOCKED".
(see it in disasm
)
EDIT: ok, I found the usbdownloader is referenced right from bootup.

so if this FTL can boot up, then the usbdownloader is also ran. you just need the right timing with usb cable plugged in, the string at 0x3000311C is probably helpful:
ROM:3000311C 55 53 42 3A+aUsbIn_endpoint DCB "USB: IN_ENDPOINT:1 OUT_ENDPOINT:3",0xA,0
ROM:3000311C 20 49 4E 5F+ ; DATA XREF: usbdownloader+1DCo
ROM:3000313F 00 DCB 0
ROM:30003140 46 4F 52 4D+aFormatAddrData DCB "FORMAT: <ADDR
(DATA
):4>+<SIZE
(n+10
):4>+<DATA:n>+<CS:2>",0xA,0
ROM:30003140 41 54 3A 20+ ; DATA XREF: usbdownloader+1E4o
ROM:30003177 00 DCB 0
ROM:30003178 4E 4F 54 45+aNote1_PowerOff DCB "NOTE: 1. Power off/on or press the reset button for 1 sec",0xA,0
ROM:30003178 3A 20 31 2E+ ; DATA XREF: usbdownloader+1ECo
ROM:300031B3 00 DCB 0
ROM:300031B4 20 20 20 20+aInOrderToGetAV DCB " in order to get a valid USB device address.",0xA,0
ROM:300031B4 20 20 20 20+ ; DATA XREF: usbdownloader+1F4o
ROM:300031EA 00 DCB 0
ROM:300031EB 00 DCB 0
ROM:300031EC 20 20 20 20+a2_ForAdditiona DCB " 2. For additional menu, Press any key. ",0xA,0
ROM:300031EC 20 20 32 2E+ ; DATA XREF: usbdownloader+1FCo
ROM:3000321B 00 DCB 0
then I assume if you press any key it goes to bootmenu which you can also see in the disassembly
(without direct references though, probably executed through some jumptable/function pointers?
)
Edited by cmonex 2008-08-11 9:53 PM