[U-Boot-Users] U-boot debugging using BDI2000

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[U-Boot-Users] U-boot debugging using BDI2000

Dheeraj Kaushik
Dear Friends,

 I am working with a MBX860 board to which U-boot is
already ported.But i am not getting the prompt.So,in
order to look into the system, i want to debug it.as i
went through the mailing list for ppcboot as well as
u-boot i came to know that BDI2000 is of great help in
that case.So, i purchsed one for us.
 Now can anybody help me how to go about using it.
This is the way i proceeded.......

Hardware setup......
BDI2000 is connected to the board through BDM port.
System Setup
RedHat 8.0 system with toolchain from www.denx.de
System has sufficient memory and other resources....

the board directory has TEXT_BASE value defined as
0xfe000000......so  i burned the u-boot image at this
address in the boards flash using BDI2000.
 Here is the BDI config file........

; bdiGDB configuration file for MBX860-001B / 50MHz
board
;
-------------------------------------------------------
;
[INIT]
; init core register
WSPR    638             0xFA200000      ;IMMR:
internal memory at 0xFA200000
WSPR    158             0x00000007      ;ICTRL: not
serialized, no show cycles

; init SIU register
WM32    0xFA200000      0x00612900      ;SIUMCR:
WM32    0xFA200004      0xFFFFFF88      ;SYPCR: enable
bus monitor, disable software watchdog
WM16    0xFA200200      0x00C2          ;TBSCR: stop
timebase and decrementer while freeze is asserted
WM32    0xFA200320      0x55CCAA33      ;RTCSCK:
unlock real-time clock status and control register
WM32    0xFA200324      0x55CCAA33      ;RTCK:  
unlock real-Time clock register
WM32    0xFA200328      0x55CCAA33      ;RTSECK:
unlock real-time alarm seconds
WM32    0xFA20032C      0x55CCAA33      ;RTCALK:
unlock real-time alarm register
WM16    0xFA200220      0x00C2          ;RTCSC: stop
real-time clock while freeze is asserted
WM16    0xFA200240      0x0082          ;PISCR: stop
periodic interrupt while freeze is asserted
WM32    0xFA200280      0x62000000      ;SCCR: disable
clock output
WM32    0xFA200284      0x0000D000      ;PLPRCR: clear
flags

; init UPM
SUPM    0xFA200168      0xFA20017C      ;Set address
for MCR and MDR

WUPM    0x00000000      0xCFAFC004      ;UPM: singel
read
WUPM    0x00000001      0x0FAFC404      ;UPM: singel
read
WUPM    0x00000002      0x0CAF8C04      ;UPM: singel
read
WUPM    0x00000003      0x10AF0C04      ;UPM: singel
read
WUPM    0x00000004      0xF0AF0C00      ;UPM: singel
read
WUPM    0x00000005      0xF3BF4805      ;UPM: singel
read
WUPM    0x00000006      0xFFFFC005      ;UPM: singel
read
WUPM    0x00000007      0xFFFFC005      ;UPM: singel
read

WUPM    0x00000008      0xCFAFC004      ;UPMA burst
read
WUPM    0x00000009      0x0FAFC404      ;UPMA burst
read
WUPM    0x0000000A      0x0CAF8C04      ;UPMA burst
read
WUPM    0x0000000B      0x00AF0C04      ;UPMA burst
read
WUPM    0x0000000C      0x07AF0C08      ;UPMA burst
read
WUPM    0x0000000D      0x0CAF0C04      ;UPMA burst
read
WUPM    0x0000000E      0x01AF0C04      ;UPMA burst
read
WUPM    0x0000000F      0x0FAF0C08      ;UPMA burst
read
WUPM    0x00000010      0x0CAF0C04      ;UPMA burst
read
WUPM    0x00000011      0x01AF0C04      ;UPMA burst
read
WUPM    0x00000012      0x0FAF0C08      ;UPMA burst
read
WUPM    0x00000013      0x0CAF0C04      ;UPMA burst
read
WUPM    0x00000014      0x10AF0C04      ;UPMA burst
read
WUPM    0x00000015      0xF0AF0C00      ;UPMA burst
read
WUPM    0x00000016      0xF3BF4805      ;UPMA burst
read
WUPM    0x00000017      0xFFFFC005      ;UPMA burst
read

WUPM    0x00000018      0xCFFF0004      ;UPMA single
write
WUPM    0x00000019      0x0FFF0404      ;UPMA single
write
WUPM    0x0000001A      0x0CFF0C00      ;UPMA single
write
WUPM    0x0000001B      0x13FF4804      ;UPMA single
write
WUPM    0x0000001C      0xFFFFC004      ;UPMA single
write
WUPM    0x0000001D      0xFFFFC005      ;UPMA single
write
WUPM    0x0000001E      0xFFFFC005      ;UPMA single
write
WUPM    0x0000001F      0xFFFFC005      ;UPMA single
write

WUPM    0x00000020      0xCFFF0004      ;UPMA burst
write
WUPM    0x00000021      0x0FFF0404      ;UPMA burst
write
WUPM    0x00000022      0x0CFF0C00      ;UPMA burst
write
WUPM    0x00000023      0x03FF0C0C      ;UPMA burst
write
WUPM    0x00000024      0x0CFF0C00      ;UPMA burst
write
WUPM    0x00000025      0x03FF0C0C      ;UPMA burst
write
WUPM    0x00000026      0x0CFF0C00      ;UPMA burst
write
WUPM    0x00000027      0x03FF0C0C      ;UPMA burst
write
WUPM    0x00000028      0x0CFF0C00      ;UPMA burst
write
WUPM    0x00000029      0x13FF4804      ;UPMA burst
write
WUPM    0x0000002A      0xFFFFC004      ;UPMA burst
write
WUPM    0x0000002B      0xFFFFC005      ;UPMA burst
write
WUPM    0x0000002C      0xFFFFC005      ;UPMA burst
write
WUPM    0x0000002D      0xFFFFC005      ;UPMA burst
write
WUPM    0x0000002E      0xFFFFC005      ;UPMA burst
write
WUPM    0x0000002F      0xFFFFC005      ;UPMA burst
write

WUPM    0x00000030      0xFCFFC004      ;UPMA refresh
WUPM    0x00000031      0xC0FFC004      ;UPMA refresh
WUPM    0x00000032      0x01FFC004      ;UPMA refresh
WUPM    0x00000033      0x0FFFC004      ;UPMA refresh
WUPM    0x00000034      0x1FFFC004      ;UPMA refresh
WUPM    0x00000035      0xFFFFC004      ;UPMA refresh
WUPM    0x00000036      0xFFFFC005      ;UPMA refresh
WUPM    0x00000037      0xFFFFC005      ;UPMA refresh
WUPM    0x00000038      0xFFFFC005      ;UPMA refresh
WUPM    0x00000039      0xFFFFC005      ;UPMA refresh
WUPM    0x0000003A      0xFFFFC005      ;UPMA refresh
WUPM    0x0000003B      0xFFFFC005      ;UPMA refresh

WUPM    0x0000003C      0xFFFFC007      ;UPMA
exception
WUPM    0x0000003D      0xFFFFC007      ;UPMA
exception
WUPM    0x0000003E      0xFFFFC007      ;UPMA
exception
WUPM    0x0000003F      0xFFFFC007      ;UPMA
exception

; init memory controller
WM32    0xFA200104      0xFFE00940      ;OR0: Flash
2MB, all accesses, CS early negate, 4ws
WM32    0xFA200100      0xFE000001      ;BR0: Flash at
0xFE000000, 32bit, R/W, no parity, use GPCM
WM32    0xFA20010C      0xFFC00400      ;OR1: DRAM
4MB, all accesses
WM32    0xFA200108      0x00000081      ;BR1: DRAM at
0x00000000, 32bit, R/W, no parity, use UPMA
WM32    0xFA200124      0xFFE00930      ;OR4: NVRAM
WM32    0xFA200120      0xFA000401      ;BR4: NVRAM
WM32    0xFA20012C      0xA0000108      ;OR5: PCI I/O
and Memory
WM32    0xFA200128      0x80000001      ;BR5: PCI I/O
and Memory
WM32    0xFA200134      0xFFFF0108      ;OR6: PCI Bus
Bridge
WM32    0xFA200130      0xFA210001      ;BR6: PCI Bus
Bridge
WM32    0xFA20013C      0xFF800940      ;OR7: 8bit
socketed Flash
WM32    0xFA200138      0xFC000401      ;BR7: 8bit
socketed Flash

WM16    0xFA20017A      0x0200          ;MPTPR :
divide by 32
WM32    0xFA200170      0x18801000      ;MAMR : PTA=24
(15.36us @ 50MHz)

; Setup MMU info
WSPR    796             0x00000000      ;M_TWB
invalidate TWB
WM32    0x000000f0      0x00000000      ;invalidate
page table pointer pointer


[TARGET]
CPUCLOCK    50000000 ;the CPU clock rate after
processing the init list
BDIMODE     AGENT       ;the BDI working mode
(LOADONLY | AGENT)
BREAKMODE   HARD         ;SOFT or HARD, HARD uses PPC
hardware breakpoints
;MMU         XLAT         ;translate effective to
physical address


[HOST]
IP          196.1.105.112
;FILE        c:/cdotdelhi/prog1/fibo.elf
;FORMAT      ELF
;LOAD        MANUAL      ;load code MANUAL or AUTO
after reset


[FLASH]
WORKSPACE   0xFA202000  ;workspace in target RAM for
fast programming algorithm
CHIPTYPE    AM29F       ;Flash type (AM29F | AM29BX8 |
AM29BX16 | I28BX8 | I28BX16)
CHIPSIZE    0x80000     ;The size of one flash chip in
bytes (e.g. AM29F010 = 0x20000)
;BUSWIDTH    8   ;for 0xfc000000
;FILE        redboot_ROM.bin
;FORMAT      BIN 0xfc000000
;ERASE       0xfc000000
;ERASE       0xfc010000
;ERASE       0xfc020000
;ERASE       0xfc030000
;ERASE       0xfc040000
;ERASE       0xfc050000
;ERASE       0xfc060000
;ERASE       0xfc070000
BUSWIDTH    32          ;The width of the flash memory
bus in bits (8 | 16 | 32)
FILE        uboot.elf  ; the file to program
FORMAT      ELF
ERASE       0xFE000000  ;erase sector 0 of flash
ERASE       0xFE040000  ;erase sector 1 of flash
ERASE       0xFE080000  ;erase sector 2 of flash
ERASE       0xFE0C0000  ;erase sector 3 of flash
ERASE       0xFE100000  ;erase sector 4 of flash
ERASE       0xFE140000  ;erase sector 5 of flash
ERASE       0xFE180000  ;erase sector 6 of flash
ERASE       0xFE1C0000  ;erase sector 7 of flash

[REGS]
DMM1 0xFA200000
FILE  reg860.def

BDI2000 is showing the image at right location.
Now i want to debug u-boot.
So this is my approach.
bdi>bi 0xfe000000
bdi>go 0xfe000000

now at the host system
$ppc_8xx-gdb u-boot
gdb>target remote bdi:2001
Remote debugging using 196.1.105.162:2001
0xfe000000 in ??() at /u-boot/cpu/mpc8xx/start.S:97
97 _start:
gdb>c
Continuing.

Program received signal signal SIGTRAP ,
Trace/breakpoint trap.
0xfe000000 in ??() at /u-boot/cpu/mpc8xx/start.S:97
97 _start:
gdb>

Can anybody help me HOW CAN A DEBUG THE U-BOOT IMAGE
USING BDI2000.I want to single step through the code.

Your help is highly appreciated.


Best Regards

Dheeraj Kaushik



=====
Dheeraj Kaushik
Research Engineer
IMT-2000
Transmission Division
C-DOT
39,Main Pusa Road,
New Delhi-110005
Phone : +91-11-25763041,25753350-59 Ext. 301
Fax : +91-11-25756378
Mobile No. : +91-11-31088262


__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com



Reply | Threaded
Open this post in threaded view
|

[U-Boot-Users] U-boot debugging using BDI2000

Wolfgang Denk
In message <20030626131238.31815.qmail at web40707.mail.yahoo.com> you wrote:
>
> the board directory has TEXT_BASE value defined as
> 0xfe000000......so  i burned the u-boot image at this
> address in the boards flash using BDI2000.

Ummm... there are many ways  to  handle  this;  if  you  followed  he
archives  you  will  see  that some people even recommend to load and
start U-Boot to RAM initally...

My approach is usually different. I follow the same logic as the  CPU
will.  Maybe  my  imagination  is jkust limited, but I find this much
easier.

A consequence of this  approach  is  that  you  should  perform  only
minimal initialization in your BDI2000 config file, i. e. disable the
watchdog and set DER.

If you do so, you will see the boot device (flash  memory)  with  the
same  mapping  as  the  CPU will see it, i. e. your U-Boot image will
start at 0x0000 or 0xFFF00000 (depending on your HRCW) no matter what
the actual link address is.


> -------------------------------------------------------
> ;
> [INIT]
> ; init core register
> WSPR    638             0xFA200000      ;IMMR:
> internal memory at 0xFA200000
> WSPR    158             0x00000007      ;ICTRL: not
> serialized, no show cycles
>
> ; init SIU register
> WM32    0xFA200000      0x00612900      ;SIUMCR:
> WM32    0xFA200004      0xFFFFFF88      ;SYPCR: enable

OK until here.

I would delete everything else from here until ...

> bus monitor, disable software watchdog
> WM16    0xFA200200      0x00C2          ;TBSCR: stop
> timebase and decrementer while freeze is asserted
> WM32    0xFA200320      0x55CCAA33      ;RTCSCK:
> unlock real-time clock status and control register
...
> ; Setup MMU info
> WSPR    796             0x00000000      ;M_TWB
> invalidate TWB
> WM32    0x000000f0      0x00000000      ;invalidate
> page table pointer pointer

...until here.

U-Boot expects a "virgin" CPU, so you  should  not  modify  too  many
things  -  except  you  know  exactly what you are doing and what the
consequences for U-Boot are.

> [HOST]
> IP          196.1.105.112
> ;FILE        c:/cdotdelhi/prog1/fibo.elf
> ;FORMAT      ELF
> ;LOAD        MANUAL      ;load code MANUAL or AUTO
> after reset

FILE /ttftpboot/u-boot.bin
FORMAT BIN
LOAD MANUAL

>
> [FLASH]
> WORKSPACE   0xFA202000  ;workspace in target RAM for
> fast programming algorithm
> CHIPTYPE    AM29F       ;Flash type (AM29F | AM29BX8 |
> AM29BX16 | I28BX8 | I28BX16)
> CHIPSIZE    0x80000     ;The size of one flash chip in
> bytes (e.g. AM29F010 = 0x20000)
> ;BUSWIDTH    8   ;for 0xfc000000
> ;FILE        redboot_ROM.bin
> ;FORMAT      BIN 0xfc000000
> ;ERASE       0xfc000000
> ;ERASE       0xfc010000
> ;ERASE       0xfc020000
> ;ERASE       0xfc030000
> ;ERASE       0xfc040000
> ;ERASE       0xfc050000
> ;ERASE       0xfc060000
> ;ERASE       0xfc070000

Assuming that your flash sectors are really like that, and  that  you
are booting low, make this:

FILE /ttftpboot/u-boot.bin
FORMAT BIN 0
ERASE 0x00000000
ERASE 0x00010000
ERASE 0x00020000

> BUSWIDTH    32          ;The width of the flash memory
> bus in bits (8 | 16 | 32)
> FILE        uboot.elf  ; the file to program
> FORMAT      ELF
> ERASE       0xFE000000  ;erase sector 0 of flash
> ERASE       0xFE040000  ;erase sector 1 of flash
> ERASE       0xFE080000  ;erase sector 2 of flash
> ERASE       0xFE0C0000  ;erase sector 3 of flash
> ERASE       0xFE100000  ;erase sector 4 of flash
> ERASE       0xFE140000  ;erase sector 5 of flash
> ERASE       0xFE180000  ;erase sector 6 of flash
> ERASE       0xFE1C0000  ;erase sector 7 of flash

resp.

FILE /ttftpboot/u-boot.bin
FORMAT BIN 0
ERASE 0x00000000

[U-Boot is much smaller than 256 kB]



Hope this helps.

Best regards,

Wolfgang Denk

--
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
The software required `Windows 95 or better', so I installed Linux.