OSLoader - Partially ported to HPC - Not Booting yet
Hasjim Williams
futaris01@optusnet.com.au
Mon, 12 May 2003 13:32:36 +1000
This is a multi-part message in MIME format.
------=_NextPart_000_0025_01C3188A.F3AA8CE0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Guys,
I've had a little fiddle with osloader and gotten it working on the
Jornada 820. In case you don't know, OSLoader is what the Compaq
Handhelds group used to boot "bootldr" before they had completed their
flash loader, bootblaster. I have attached a version that doesn't
really do much at the moment, besides dump registers and load "\My
Documents\wince-bootldr.bin" into memory at 0xC0022000 (Halfway in the
framebuffer - I didn't modify the address). As there are no versions of
wince-bootldr that actually support the Jornada 820 yet, I haven't
gotten this code working. Additionally, I think the older inline
assembly doesn't work. The wince-bootldr.bin that supports the Jornada
720 should work, but I don't know where to find it. The latest bootldr
at handhelds.org doesn't seem to support building wince-bootldr yet.
Perhaps if I checkout an older version of bootldr, we can build a
version for the Jornada 820, and use it to dump RAM, FLASH, etc.
The following code snippet should work on the SA-1100 too, no???:
#if defined(ARM)
/*
__emit( 0xe3a00000 ); // mov r0,#0
__emit( 0xee070f17 ); // mcr 15, 0, r0, cr7, cr7, {0} flush
ID cache
__emit( 0xee010f10 ); // mcr 15, 0, r0, cr1, cr0, {0} //
disable MMU
// Jump to 0xc0022000, trashes r1, r2
__emit( 0xe3a02103 ); // mov r2, #-1073741824 ; 0xc0000000
__emit( 0xe2821a22 ); // add r1, r2, #139264 ; 0x22000
__emit( 0xe1a0f001 ); // mov pc, r1
*/
# define JumpToC0022000() \
{ \
__emit( 0xe3a00000 ); \
__emit( 0xee070f17 ); \
__emit( 0xee010f10 ); \
\
__emit( 0xe3a02103 ); \
__emit( 0xe2821a22 ); \
__emit( 0xe1a0f001 ); \
}
#else
# define JumpToC0022000()
#endif
I have also attached a copy of the regdump.txt that osloader spits out
into "\Windows". There is another utility called "syswatch" that is in
the same directory as osloader. This utility is probably a lot more
useful as it monitors the state of a device.
It does this by saving all the registers periodically. The user gets to
define the period to the nearest ms. Currently it only saves the
differences for a maximum of 100 time deltas.
eg. if I say to monitor every 1000ms I will get 100s worht of data. The
monitoring will cease when 100th period is reached and the details will
be written to a file (regdiff.txt).
See the source directories below for more info.
The original windowsce utilities are located at
cvs.handhelds.org:/cvs/windowsce You can view the directory via the web
at http://cvs.handhelds.org/cgi-bin/viewcvs.cgi/windowsce/
My non-booting version can be found at:
http://members.optusnet.com.au/futaris01/jornada820/osloader-hpc-noboot.
zip
------=_NextPart_000_0025_01C3188A.F3AA8CE0
Content-Type: text/plain;
name="regdump.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="regdump.txt"
UDC (serial port 0) (addr: contents)
0x80000000: 0x00000041
0x80000004: 0x00000000
0x80000008: 0x00000008
0x8000000C: 0x00000008
0x80000010: 0x00000000
0x80000014: 0x00000000
0x80000018: 0x00000001
0x8000001C: 0x00000029
0x80000020: 0x00000000
0x80000024: 0x00000000
0x80000028: 0x00000041
0x8000002C: 0x00000000
0x80000030: 0x00000000
UART (serial port 1) (addr: contents)
0x80010000: 0x0000000C
0x80010004: 0x00000000
0x80010008: 0x000000BF
0x8001000C: 0x00000009
0x80010010: 0x00000000
0x80010014: 0x000000A9
0x80010018: 0x00000000
0x8001001C: 0x00000000
0x80010020: 0x00000004
GPCLK (serial port 1) (addr: contents)
0x80020060: 0x00000000
0x80020064: 0x00000000
0x80020068: 0x00000000
0x8002006C: 0x00000000
0x80020070: 0x00000000
0x80020074: 0x00000000
0x80020078: 0x00000000
0x8002007C: 0x00000000
0x80020080: 0x00000000
0x80020084: 0x00000000
ICP - UART (serial port 2) (addr: contents)
0x80030000: 0x00000008
0x80030004: 0x00000000
0x80030008: 0x00000017
0x8003000C: 0x00000000
0x80030010: 0x00000000
0x80030014: 0x000000DB
0x80030018: 0x00000000
0x8003001C: 0x00000000
0x80030020: 0x00000004
ICP - HSSP (serial port 2) (addr: contents)
0x80040060: 0x00000000
0x80040064: 0x00000000
0x80040068: 0x00000000
0x8004006C: 0x00000000
0x80040070: 0x00000000
0x80040074: 0x00000000
0x80040078: 0x00000000
UART (serial port 3 (addr: contents)
0x80050000: 0x00000008
0x80050004: 0x00000000
0x80050008: 0x00000017
0x8005000C: 0x00000000
0x80050010: 0x00000000
0x80050014: 0x000000FE
0x80050018: 0x00000000
0x8005001C: 0x00000000
0x80050020: 0x00000004
MCP (serial port 4) (addr: contents)
0x80060000: 0x00052821
0x80060004: 0x00000000
0x80060008: 0x00000000
0x8006000C: 0x00000000
0x80060010: 0x0000032D
0x80060014: 0x00000000
0x80060018: 0x00001504
0x8006001C: 0x00000000
SSP (serial port 4) (addr: contents)
0x80070060: 0x00000387
0x80070064: 0x00000000
0x80070068: 0x00000000
0x8007006C: 0x000000CF
0x80070070: 0x00000000
0x80070074: 0x00000012
OS Timer (addr: contents)
0x90000000: 0xAD763777
0x90000004: 0x21212744
0x90000008: 0x2110008C
0x9000000C: 0x28101A03
0x90000010: 0xAD753D15
0x90000014: 0x0000000C
0x90000018: 0x00000000
0x9000001C: 0x00000001
Real-Time Clock (addr: contents)
0x90010000: 0x007C0920
0x90010004: 0x00035193
0x90010008: 0x01148003
0x9001000C: 0x00000000
Power Mangement (addr: contents)
0x90020000: 0x00000000
0x90020004: 0x00000000
0x90020008: 0x00000000
0x9002000C: 0x80008001
0x90020010: 0x00000001
0x90020014: 0x00000009
0x90020018: 0x02000000
0x9002001C: 0x00000001
Reset Controller (addr: contents)
0x90030000: 0x00000000
0x90030004: 0x00000000
0x90030008: 0xA0000400
GPIO (addr: contents)
0x90040000: 0x028AABFD
0x90040004: 0x0ABA37FC
0x90040008: 0x00000000
0x9004000C: 0x00000000
0x90040010: 0x0404C002
0x90040014: 0x00048001
0x90040018: 0x00000000
0x9004001C: 0x08603FFC
Interrupt Controller (addr: contents)
0x90050000: 0x00000000
0x90050004: 0x87C28801
0x90050008: 0x00000000
0x9005000C: 0x00000001
0x90050010: 0x00000000
0x90050014: 0x00000000
PPC (addr: contents)
0x90060000: 0x00005000
0x90060004: 0x0001E8FF
0x90060008: 0x00040000
0x9006000C: 0x000AA000
0x90060010: 0x0003D000
0x90060014: 0x00000000
0x90060018: 0x00000000
Memory Controller (addr: contents)
0xA0000000: 0x063D213F
0xA0000004: 0x18C6301F
0xA0000008: 0xFFFF0C63
0xA000000C: 0xFFFFFFFF
0xA0000010: 0x6738675A
0xA0000014: 0x7DE89398
0xA0000018: 0x294B294B
0xA000001C: 0x00000000
0xA0000020: 0x00000000
0xA0000024: 0x00000000
0xA0000028: 0x00000000
0xA000002C: 0x00000000
0xA0000030: 0x00000000
DMA Controller (addr: contents)
0xB0000000: 0x80C00571
0xB0000004: 0x00000050
0xB0000008: 0x00000050
0xB000000C: 0x00000050
0xB0000010: 0xC0050000
0xB0000014: 0x00001000
0xB0000018: 0xC0051000
0xB000001C: 0x00001000
0xB0000020: 0x80C00560
0xB0000024: 0x00000000
0xB0000028: 0x00000000
0xB000002C: 0x00000000
0xB0000030: 0xC0052000
0xB0000034: 0x00000000
0xB0000038: 0xC0053000
0xB000003C: 0x00000000
0xB0000040: 0xFFFDFF79
0xB0000044: 0x00000000
0xB0000048: 0x00000000
0xB000004C: 0x00000000
0xB0000050: 0xFFFFFFFF
0xB0000054: 0x00001FFF
0xB0000058: 0xFFFFFFFF
0xB000005C: 0x00001FFF
0xB0000060: 0x818002A8
0xB0000064: 0x00000000
0xB0000068: 0x00000000
0xB000006C: 0x00000000
0xB0000070: 0xC0057000
0xB0000074: 0x00000000
0xB0000078: 0xC0058000
0xB000007C: 0x00000000
0xB0000080: 0x81400591
0xB0000084: 0x00000050
0xB0000088: 0x00000050
0xB000008C: 0x00000050
0xB0000090: 0xC0058000
0xB0000094: 0x00001000
0xB0000098: 0xC0059000
0xB000009C: 0x00001000
0xB00000A0: 0x81400580
0xB00000A4: 0x00000000
0xB00000A8: 0x00000000
0xB00000AC: 0x00000000
0xB00000B0: 0xC005A000
0xB00000B4: 0x00000000
0xB00000B8: 0xC005B000
0xB00000BC: 0x00000000
LCD Controller (addr: contents)
0xB0100000: 0x0000023D
0xB0100004: 0x00000002
0xB0100008: 0x0000023D
0xB010000C: 0x00000002
0xB0100010: 0xC0002E00
0xB0100014: 0xC00249A0
0xB0100018: 0xC0028800
0xB010001C: 0xC004B4D0
0xB0100020: 0x01010A70
0xB0100024: 0x000000EF
0xB0100028: 0x0000FF15
0xB010002C: 0x0000FF15
0xB0100030: 0xC0002E00
0xB0100034: 0xC0003160
------=_NextPart_000_0025_01C3188A.F3AA8CE0--