Hi,
I've got as far as writing bootldr 2.14.8 to the flash of an iPAQ 3630, and
everything went smoothly until I checked the write-protect for the bootldr
flash area using "qflash 2". It returns all zero instead of 00010001. I tried
to set it manually (several times) using "pflash 0 0xffff 1", but to no
avail. The entire session text is included below. I'm a little nervous
about hard-resetting the iPAQ without write-protect on the bootldr flash
area, so thus far I've only rebooted using the "boot" command, which works,
and I assume means that
the bootldr image HAS been successfully burned into flash. Do you have any
idea
why the write-protect appears not to set? If not, could you tell me a
little more about what qflash does? (I'm a little puzzled by the "2"
argument -is that the address offset of the flash status register, or the
flash sector number...?) Hope you can advise.
Rob Duffy
CLIENTCLIENTMap Flash virtual section to DRAM at: C1E00000
flashword=50000000
btflash_init: mfrid=00890089
devid=00170017
walking flash descriptors
btflash_init: found flash 28F640J3A
flashDescriptor=C002FA74
flashSectors=C002F870
nsectors=00000080
flash_size=02000000
flash_address_mask=01FFFFFF
dram_size: 02000000
>> Compaq OHH BootLoader, Rev 02.09.00
>> 00-08-15_23:13
>> ARM Processor Rev=6901B116
>> CPSR=6000001F
>> (c) 2000 Compaq Cambridge Research Laboratory
Press Return to start the OS now, any other key for monitor menu
eval param blk
booting flash...
boot_magic=EA0003FE
kernel_image_first_word=00000000
Corrupt kernel image
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> peek flash 0x0
addr = 00000000
value = EA0003FE
boot> load bootldr
loading flash region bootldr
using xmodem
ready for xmodem download..
boot> peek flash 0x0
addr = 00000000
value = EA0003FE
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> load bootldr
loading flash region bootldr
using xmodem
ready for xmodem download..
Download Successful
00018A80 bytes loaded to C0000400
BSD sum value is: 00000000
programming flash...erasing ...
Erasing sector 00000000
len=00018A80
writing flash..
addr: 00000000 data: EA00008E
addr: 00010000 data: E5DE2004
verifying ... done.
boot> peek flash 0x0
addr = 00000000
value = EA00008E
boot> peek flash 0x020
addr = 00000020
value = 646C7462
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> ?
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> boot
booting flash...
boot_magic=EA0003FE
kernel_image_first_word=00000000
Corrupt kernel image
boot> qflash 2
value = 00000000
boot> pflash 0 0xffff 1
addr=00000000
len=0000FFFF
protect=00000001
Protecting sector 00000000
boot> qflash 2
value = 00000000
boot> ?
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> qflash 0
value = 00890089
boot> qflash 1
value = 00170017
boot> qflash 0x0
value = 00890089
boot> help
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> display
SA1100 Registers:
SA1100_UART3: 80050000
UTCR0 0x00 *0x80050000 == 00000008
UTCR1 0x04 *0x80050004 == 00000000
UTCR2 0x08 *0x80050008 == 00000001
UTCR3 0x0c *0x8005000C == 00000003
UTDR 0x10 *0x80050014 == 0000000D
UTSR0 0x14 *0x8005001C == 00000004
UTSR0+4 0x18 *0x8005002C == 00000000
UTSR0+8 0x1c *0x8005003C == 00000000
UTSR1 0x20 *0x80050020 == 00000001
boot> pflash 0 0xffff 1
addr=00000000
len=0000FFFF
protect=00000001
Protecting sector 00000000
boot> qflash 2
value = 00000000
boot> qflash 0
value = 00890089
boot> qflash 0x2
value = 00000000
boot> qflash 0x0
value = 00890089
boot> qflash 000
value = 00890089
boot> qflash 3
value = 00000000
boot> qflash 2
value = 00000000
boot> qflash 1
value = 00170017
boot> boot
booting flash...
boot_magic=EA0003FE
kernel_image_first_word=00000000
Corrupt kernel image
boot> ?
Available Commands:
?
help <command>
<command> help
boot [flash|nfsroot|altkernel]
display
load [kernel | ramdisk | bootldr | params | usercode | ram]
save [all | bootldr | debugger | flash | kernel | ramdisk | params |
usercode |
world | altkernel]
peek ram|flash|int|short|byte <addr>
poke ram|flash|int|short|byte <addr>
breakpoint
qflash [cfi|id] <waddr> -- query flash
eflash <sectoraddr>|chip -- erase sector or chip
pflash <sectoraddr>|chip -- protect sector or chip
physaddr <vaddr> -- returns <paddr>
call <addr> args
jump <addr>
set <param> <value>
show [<param>]
evalparams
params [eval|show|save|reset]
flash_type <flashtype>
boot> show
baudrate=57600;ŸÁ˜;ŸÁ€;ŸÁÀ;ŸÁdðÀ
os=autoselect
boot_type=flash
download_kernel=0x00000000
kernel_in_ram=0x00000000
force_unzip=0x00000000
noerase=0x00000000
override=0x00000000
entry=0xC0000000
copy_ramdisk=0x00000000
dram_size=0x02000000
dcache_enabled=0x00000001
icache_enabled=0x00000001
memc_ctrl_reg=0x0000110C
serial_number=0x000000FF
system_rev=0x00000001
linuxargs= root=/dev/ram initrd ramdisk_size=8192
hostname=
ipaddr=
gateway=
netmask=
nfs_server_address=
nfsroot=
xmodem=0x00000001
verbose=0x00000000
boot> qflash 2
value = 00000000
boot> boot
booting flash...
boot_magic=EA0003FE
kernel_image_first_word=00000000
Corrupt kernel image
boot> pflash 0 0xffff 1
addr=00000000
len=0000FFFF
protect=00000001
Protecting sector 00000000
boot> qflash 2
value = 00000000
boot> peek flash 0x20
addr = 00000020
value = 646C7462
boot> peek flash 2
addr = 00000002
value = EA00008E
boot>
Received on Wed Jun 13 11:07:00 2001
This archive was generated by hypermail 2.1.8 : Tue May 04 2004 - 09:38:26 EDT