[U-Boot-Users] MPC850, read FLASH manufacturer ID, Mxu Board
Gerhard Butscher
gerhard.butscher at esk.fhg.de
Wed Feb 26 11:56:25 CET 2003
Hello,
We have an Infineon Switch Evaluation Board (MXU rev.B, MPC850), a
Lauterbach Emulator. We started with the tqm850L configuration (u-boot
0.2.0).
- Reading manufacturer ID of FLASH doesn't work.
Using the VxWorks boot prompt commands it works to write the command
sequence and then read the ID. We now managed to read the ID also with
issuing FLASH writes/reads from Emulator.
The VxWorks boot prompt command uses "sth" assembler command to write
to flash and the u-boot flash_get_size() command uses "stw" assembler
code.
- Could someone explain why "sth" works and "stw" doesn't work in
our case?
Thanks,
Gerhard
I saw while stepping in assembler, the u-boot code uses following
commands to write the command sequence (first using original long,
then using short which works!):
short i;
ulong value;
ulong base = (ulong)addr;
801F0008 lwz r0,0x8(r31) ; r0,8(r31
901F0018 stw r0,0x18(r31) ; r0,24(r31
unsigned short *flash_addr = (unsigned short *)addr
801F0008 lwz r0,0x8(r31) ; r0,8(r31
901F001C stw r0,0x1C(r31) ; r0,28(r31
/* Write auto select command: read Manufacturer ID */
addr[0x0] = 0xAAAAAAAA
813F0008 lwz r9,0x8(r31) ; r9,8(r31
3C00AAAA lis r0,-0x5556 ; r0,-21846
6000AAAA ori r0,r0,0xAAAA ; r0,r0,43690
90090000 stw r0,0x0(r9) ; r0,0(r9)
addr[0x0] = 0x55555555;
813F0008 lwz r9,0x8(r31) ; r9,8(r31)
3C005555 lis r0,0x5555 ; r0,2184
60005555 ori r0,r0,0x5555 ; r0,r0,21845
90090000 stw r0,0x0(r9) ; r0,0(r9)
addr[0x0] = 0x90909090;
813F0008 lwz r9,0x8(r31) ; r9,8(r31)
3C009090 lis r0,-0x6F70 ; r0,-28528
60009090 ori r0,r0,0x9090 ; r0,r0,37008
90090000 stw r0,0x0(r9) ; r0,0(r9
value = addr[0];
813F0008 lwz r9,0x8(r31) ; r9,8(r31)
80090000 lwz r0,0x0(r9) ; r0,0(r9
901F0014 stw r0,0x14(r31) ; r0,20(r31
/* Write auto select command: read Manufacturer ID */
flash_addr[0x0] = 0xAAAA;
813F001C lwz r9,0x1C(r31) ; r9,28(r31
3800AAAA li r0,-0x5556 ; r0,-2184
B0090000 sth r0,0x0(r9) ; r0,0(r9)
flash_addr[0x0] = 0x5555;
813F001C lwz r9,0x1C(r31) ; r9,28(r31)
38005555 li r0,0x5555 ; r0,21845
B0090000 sth r0,0x0(r9) ; r0,0(r9)
flash_addr[0x0] = 0x9090;
813F001C lwz r9,0x1C(r31) ; r9,28(r31)
38009090 li r0,-0x6F70 ; r0,-28528
B0090000 sth r0,0x0(r9) ; r0,0(r9)
value = addr[0];
813F0008 lwz r9,0x8(r31) ; r9,8(r31)
80090000 lwz r0,0x0(r9) ; r0,0(r9)
901F0014 stw r0,0x14(r31) ; r0,20(r31)
More information about the U-Boot
mailing list