Hello,

I finally got my BDI-2000 for PPC 860 this week, and tried to set it up to
debug my MMU problem.
This is my first time using the BDI-2000, and really hope someone here can
give me a hand.

Here is what I am trying to do:

I have a proven hardware platform with
        PPC860, IMMR is mapped to 0xf0000000.
        16 MB of SRAM in CS3 starts at physical locatio 0x0
        1 MB of BootROM in CS1 starts at physical location 0x28000000
        16 MB of code flash in CS5 starts at physical location 0x08000000
        some other IO mapped to miscellaneous addresses.

The hardware platform is running vxWorks with vxWorks bootrom.  I am trying
to
port the Linux to this custom hardware platform.  I was successful building
a zImage (no intrd yet)
with the compress vmLinux.gz.  The zImage.srec is then downloaded to the
target
platform using the vxWorks bootrom (I wrote a little program to take
srecords).  The following
information was dump out on the console

        boot device          : motfec
        unit number          : 0
        processor number     : 0
        host name            : linux
        file name            : linux\images\zImage.hex
        inet on ethernet (e) : 192.168.0.238
        host inet (h)        : 192.168.0.211
        user (u)             : me
        ftp password (pw)    : me
        flags (f)            : 0x8
        target name (tn)     : onu
        other (o)            : motfec

        Attached TCP/IP interface to motfec0.
        Attaching network interface lo0... done.
        Loading... S-Record:
                        Module Name: ../images/zImage.srec
                        Entry Location: 0x400000
                Starting at 0x400000...

        loaded at:     00400000 0040C30C
        board data at: 004001C0 004001E4
        relocated to:  0040C0E8 0040C10C
        zimage at:     0040C30C 004BC445
        avail ram:     004BD000 00800000

        Linux/PPC load: console=ttyS0,9600
nfsroot=192.168.0.211:/exports/rpx860/2.4.7-t
        imesys-3.1.254 ip=192.168.0.238
        Uncompressing Linux... done.
        Now booting the kernel

I was able to follow the execution from the power reset until the point
where the MMU is enabled
in the function kernel\arch\ppc\kernel\head_8xx.S:turn_on_mmu with visionICE
II (yes, I know there
is an update for the firmware to get visionICE to work with MMU, but I am
waiting for that also).

I don't think my MMU table is setup properly, therefore, I have aquired a
Abatron BDI-2000.  I have to
modified the .cfg files to use my UPM A table.  Furthermore, I modified the
registers defined in the
sample .cfg file to the values defined in my firmware.  I was successful in
powering up the BDI-2000,
connecting it to my target board, and telnet into the BDI.

I am able to check and modify the SRAM (at physical address location 0x0).
and view the bootROM memory
(at physical address of 0x28000000).  I enable the MMU XLAT and set the
PTBASE to 0xf0 as suggested in the
user manual.
Here is the output of the BDI

BDI>reset
- TARGET: processing user reset request
- TARGET: resetting target passed
- TARGET: processing target init list ....
- TARGET: processing target init list passed
BDI>bi 0x0c000000 0x0c00ffff
Breakpoint identification is 0
BDI>go 0x28000100
- TARGET: target has entered debug mode
BDI>ci
BDI>info
    Target state      : debug mode
    Debug entry cause : entering check stop state
    Current PC        : 0x00000220
BDI>

I never seem to get the break at the location of 0x0c000000.
The same problem if I set the break at location of start_here grep from
System.map

However I do get the break if I set at address location of 0 (start of the
head_8xx.S)
Can someone help me out here??

Thanks

Cecilia

P.S. here is a brief information of my .cfg file which I loaded to BDI

; bdiGDB configuration file for TQM855L/TQM860L Modules
; -----------------------------------------------------
;
[INIT]
; init core register
WREG    MSR             0x00001002      ;MSR  : ME,RI
WSPR    27              0x00001002      ;SRR1 : ME,RI
;;WSPR  149             0x2002000F      ;DER  : set debug enable register
WSPR    149             0x2006000F      ;DER  : enable SYSIE for BDI flash
progr.
WSPR    638             0xF0000000      ;IMMR : internal memory at
0xF0000000
WSPR    158             0x00000007      ;ICTRL:

; init SIU register
WM32    0xF0000000      0x70630200      ;SIUMCR
WM32    0xF0000004      0x0000FF80      ;SYPCR

;WM32   0xFFF00284      0x00000000      ;PLPRCR no need to change (1:1 clock
mode)

; Init Memory Controller:
;
; BR0 and OR0 (BOOT FLASH)
WM32    0xF0000104      0xFFF00550      ; 1 MB
WM32    0xF0000100      0x28000401      ; @ 0x28000000 - 0x280FFFFF, 8Bit,
GPCM

; BR3 and OR 3 (SDRAM)
WM32    0xF000011C      0xFF000800      ; 16 MB
WM32    0xF0000118      0x00000081      ; @ 0x00000000 - 0x00FFFFFF, 32Bit,
UPMA

; BR5 and OR5 (MAIN FLASH & MDIO GLUE)
WM32    0xF000012C      0xFD000550      ; 16 MB FLASH / 16 MB GLUE
WM32    0xF0000128      0x08000001      ; @ 0x08000000 - 0x08FFFFFF, 8Bit,
GPCM (FLASH)
                                        ; @ 0x0A000000 - 0x0AFFFFFF, 8Bit,
GPCM (GLUE)
; init UPM A
;
SUPM    0xF0000168      0xF000017c      ;set address for MCR and MDR

;  single read. (offset 0 in upm RAM)
WUPM    0x00000000      0xFF0FC024
WUPM    0x00000001      0x0F03C024
WUPM    0x00000002      0x7F0FC004
WUPM    0x00000003      0x00ACC004
WUPM    0x00000004      0x0FF30000
WUPM    0x00000005      0x7FFFC004
WUPM    0x00000006      0xFFFFC005
WUPM    0x00000007      0xFFFFFFFF

;  burst read. (Offset 8 in upm RAM)
WUPM    0x00000008      0xFF0FC024
WUPM    0x00000009      0x0F03C024
WUPM    0x0000000A      0x7FFFC004
WUPM    0x0000000B      0x00FCC004
WUPM    0x0000000C      0x70FFC000
WUPM    0x0000000D      0xF0FFC000
WUPM    0x0000000E      0xF0FFC000
WUPM    0x0000000F      0xFFFFC000
WUPM    0x00000010      0xFFFFC004
WUPM    0x00000011      0xFFFFC005
WUPM    0x00000012      0xFFFFFFFF
WUPM    0x00000013      0xFFFFFFFF
WUPM    0x00000014      0xFFFFFFFF
WUPM    0x00000015      0xFFFFC034
WUPM    0x00000016      0x0FA00034
WUPM    0x00000017      0x7FAFC035

;  single write. (Offset 0x18 in upm RAM)
WUPM    0x00000018      0xFF0FC024
WUPM    0x00000019      0x0F03C024
WUPM    0x0000001A      0x7F0FC000
WUPM    0x0000001B      0x00AC0004
WUPM    0x0000001C      0x0FF30004
WUPM    0x0000001D      0x7FFFC005
WUPM    0x0000001E      0xFFFFFFFF
WUPM    0x0000001F      0xFFFFFFFF

;  burst write. (Offset 0x20 in upm RAM)
WUPM    0x00000020      0xFF0FC024
WUPM    0x00000021      0x0F03C024
WUPM    0x00000022      0x7F0FC000
WUPM    0x00000023      0x00FC0000
WUPM    0x00000024      0x70FFC000
WUPM    0x00000025      0xF0FFC000
WUPM    0x00000026      0xF0FFC004
WUPM    0x00000027      0xFFFFC005
WUPM    0x00000028      0xFFFFFFFF
WUPM    0x00000029      0xFFFFFFFF
WUPM    0x0000002A      0xFFFFFFFF
WUPM    0x0000002B      0xFFFFFFFF
WUPM    0x0000002C      0xFFFFFFFF
WUPM    0x0000002D      0x0FF30004
WUPM    0x0000002E      0x7FFFC005
WUPM    0x0000002F      0xFFFFFFFF

;  Refresh cycle, offset 0x30
;  One refresh cycle
WUPM    0x00000030      0x0FF0C004
WUPM    0x00000031      0x7FFFC004
WUPM    0x00000032      0xFFFFC004
WUPM    0x00000033      0xFFFFC004
WUPM    0x00000034      0xFFFFC005
WUPM    0x00000035      0xFFFFFFFF
;  Two refresh cycles
WUPM    0x00000036      0x0FF0C004
WUPM    0x00000037      0x7FFFC004
WUPM    0x00000038      0xFFFFC004
WUPM    0x00000039      0xFFFFC004
WUPM    0x0000003A      0x0FF0C004
WUPM    0x0000003B      0x7FFFC004
;  Exception, 0ffset 0x3C
WUPM    0x0000003C      0xFFFFC004
WUPM    0x0000003D      0xFFFFC005
WUPM    0x0000003E      0xFFFFFFFF
WUPM    0x0000003F      0xFFFFFFFF

WM32    0xF0000170      0x18043111      ; MAMR = machine A mode register

; Execute precharge-all command using Memory Command Register, Patch-Offset
0x2D
; Immediately following initialize SDRAM
;
; SRAM
WM32    0xF0000168      0x8000612D
WM32    0xF0000168      0x80006136      ; 2 cycle autorefresh command

WM32    0xF0000164      0x00000088      ; MAR = Memory Address Register
WM32    0xF0000168      0x80006115      ; rUN INDEX AT 0x15

; Initialize memory periodic timer prescaler (MPTPR). divide by 32
; enable timer
WM16    0xF000017A      0x0200
WM32    0xF0000170      0x18843111      ; MAMR = machine A mode register

WSPR    796             0x00000000      ;invalidate M_TWM in any case
WM32    0x000000f0      0x00000000      ;invalidate page table base

[TARGET]
CPUCLOCK    5000000     ;50MHz 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        ;enable address translation
PTBASE      0x000000f0  ;here is the pointer to the page table pointer

[HOST]
IP          192.168.0.211
;FILE        E:\cygnus\root\usr\demo\mbx860\vmlinux
;FORMAT      BIN
FILE        t:\cmuaddi\tftp\linux\images\zImage
FORMAT      IMAGE
;FILE        E:\cygnus\root\usr\demo\mbx860\vxWorks
;FORMAT      ELF
LOAD        MANUAL      ;load code MANUAL or AUTO after reset

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/



Reply via email to