All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: get program exception in early setup
@ 2003-04-29 15:41 ghannon
  0 siblings, 0 replies; 2+ messages in thread
From: ghannon @ 2003-04-29 15:41 UTC (permalink / raw)
  To: jwalden; +Cc: linuxppc-embedded


Jerry Walden wrote:

> From System.map:

> c0113000 A __bss_start
>     |
>     |
>     |
>     V
> c013c050 A _end

> The symbol _end does not come after the bss - it is at the end of the
> kernel, so the memset gets an exception.

_end is correctly after bss_start.

There is probably a different problem with how memory is mapped.

Did your kernel get decompressed correctly at 0?


Gary


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

^ permalink raw reply	[flat|nested] 2+ messages in thread
* Using BDI-2000 to debug kernel
@ 2003-03-13 18:04 Jerry Walden
  2003-04-28 22:26 ` get program exception in early setup Jerry Walden
  0 siblings, 1 reply; 2+ messages in thread
From: Jerry Walden @ 2003-03-13 18:04 UTC (permalink / raw)
  To: linuxppc-embedded


Greetings:

I am having a strange problem trying to single step through the kernel.

I have a custom 405GPr board that runs u-boot like a trained pig.  Now
I'm on to the step of getting Linux up on the board.  I am using
a BDI-2000 to debug the kernel (I load it into memory, and enter the
go command, and I get an exception).

So I tried to find the problem as follows:

BDI>load

Loading /tftpboot/vmlinuz.bdi , please wait ....

Loading program file passed

BDI>info
    Target state      : debug mode
    Debug entry cause : JTAG stop request
    Current PC        : 0x00210000
    Current CR        : 0x00000000
    Current MSR       : 0x00000000
    Current LR        : 0x0021001c

BDI>md 0x00210000
00210000 : 7c7f1b78 7c9e2378 7cbd2b78 7cdc3378  |..x|.#x|.+x|.3x
00210010 : 7cfb3b78 3b000000 48002359 38001032  |.;x;...H.#Y8..2
00210020 : 7c1b03a6 3c00c000 600022d0 7c1a03a6  |...<...`.".|...
00210030 : 4c000064 00000000 00000000 00000000  L..d............
00210040 : 00000000 00000000 00000000 00000000  ................
00210050 : 00000000 00000000 00000000 00000000  ................
00210060 : 00000000 00000000 00000000 00000000  ................
00210070 : 00000000 00000000 00000000 00000000  ................
00210080 : 00000000 00000000 00000000 00000000  ................
00210090 : 00000000 00000000 00000000 00000000  ................
002100a0 : 00000000 00000000 00000000 00000000  ................
002100b0 : 00000000 00000000 00000000 00000000  ................
002100c0 : 00000000 00000000 00000000 00000000  ................
002100d0 : 00000000 00000000 00000000 00000000  ................
002100e0 : 00000000 00000000 00000000 00000000  ................
002100f0 : 00000000 00000000 00000000 00000000  ................


I disassembled head_4xx.o and so far this looks fine:
head_4xx.o:     file format elf32-powerpc

Disassembly of section .text:

00000000 <_start>:
       0:	7c 7f 1b 78 	mr	r31,r3
       4:	7c 9e 23 78 	mr	r30,r4
       8:	7c bd 2b 78 	mr	r29,r5
       c:	7c dc 33 78 	mr	r28,r6
      10:	7c fb 3b 78 	mr	r27,r7
      14:	3b 00 00 00 	li	r24,0
      18:	48 00 23 59 	bl	2370 <initial_mmu>

Now I set a breakpoint as recommended in "tool talk" white paper by Ultimate
Solutions.
In System.map:

c00022c4 T abort
c00022d0 t start_here
c0002370 t initial_mmu
c00023d4 T set_context
c00023e4 t rest_init

BDI>bi 0xc00022d0
Breakpoint identification is 0

BDI>go


- Target started with DBCR0 = 0x80800001

BDI>
- TARGET: target has entered debug mode

BDI>info
    Target state      : debug mode
    Debug entry cause : instruction breakpoint
    Current PC        : 0xc00022d0
    Current CR        : 0x00000000
    Current MSR       : 0x00001030
    Current LR        : 0x0021001c


So - I hit the breakpoint just fine - now I dump memory at start_here
and it is displayed below:

BDI>md 0xc00022d0

c00022d0 : 0223000d 00000a5f 2c019d00 003bd902  .#....._,....;..
c00022e0 : 23300b63 6d64002c 019e0000 00810223  #0.cmd.,.......#
c00022f0 : 3c0b6c65 6e002c01 9f000000 81022340  <.len.,.......#@
c0002300 : 0d000049 7d2c01a0 00000081 0223440d  ...I},.......#D.
c0002310 : 0001d231 2c01a100 001a2e02 23480022  ...1,.......#H."
c0002320 : 00004158 00006b91 142c01a4 0b6f6800  ..AX..k..,...oh.
c0002330 : 2c01a500 003ebc02 23000b6c 656e002c  ,....>..#..len.,
c0002340 : 01a60000 00810223 0c0d0001 d2312c01  .......#.....1,.
c0002350 : a7000041 58022310 000e0400 00011722  ...AX.#........"
c0002360 : 00004189 000015dc 3c2c01ac 0b696800  ..A.....<,...ih.
c0002370 : 2c01ad00 003e5402 23000d00 000a5f2c  ,....>T.#....._,
c0002380 : 01ae0000 3bd90223 30002200 0041b400  ....;..#0."..A..
c0002390 : 006d2d70 2c01b10b 6f68002c 01b20000  .m-p,...oh.,....
c00023a0 : 3ebc0223 000d0001 952e2c01 b300003c  >..#......,....<
c00023b0 : f3022310 00220000 41ee0000 6da3a02c  ..#.."..A...m..,
c00023c0 : 01b80b69 68002c01 b900003e 54022300  ...ih.,....>T.#.

Problem is if I look at the disassemble code at start_here I see:

000022d0 <start_here>:
    22d0:	3c 40 00 00 	lis	r2,0
    22d4:	60 42 00 00 	ori	r2,r2,0
    22d8:	3c 82 40 00 	addis	r4,r2,16384
    22dc:	38 84 02 70 	addi	r4,r4,624
    22e0:	7c 93 43 a6 	mtsprg	3,r4
    22e4:	38 60 00 00 	li	r3,0
    22e8:	7c 72 43 a6 	mtsprg	2,r3

Which does not match at all what I see above and hence when I use the
command
"go":

BDI>go


- Target started with DBCR0 = 0x80800001

# Step timeout detected
BDI>info
    Target state      : debug mode
    Debug entry cause : JTAG stop request
    Current PC        : 0x00000700
    Current CR        : 0x00000000
    Current MSR       : 0x00001000
    Current LR        : 0x0021001c

I get an exception indicating that an invalid opcode was fetched.
I can't figure out what to try next - Any ideas?

Thanks
Jerry Walden

Below is my cfg file for the BDI-2000:

;

[INIT]
; init core register
WSPR	954	0x00000000      ;DCWR: Disable data cache write-thru
WSPR	1018	0x00000000	;DCCR: Disable data cache
WSPR	1019	0x00000000	;ICCR: Disable instruction cache
WSPR	982	0x00000000	;EVPR: Exception Vector Table @0x0000000

; Setup Peripheral Bus
WDCR	18	0x00000010	;Select PB0AP
WDCR	19	0x9B015480	;PB0AP: Flash and SRAM
WDCR	18	0x00000000	;Select PB0CR
WDCR	19	0xFFF18000	;PB0CR: 1MB at 0xFFF00000, r/w, 8bit
WDCR	18	0x00000011	;Select PB1AP
WDCR	19	0x02815480	;PB1AP: NVRAM and RTC
WDCR	18	0x00000001	;Select PB1CR
WDCR	19	0xF0018000	;PB1CR: 1MB at 0xF0000000, r/w, 8bit
WDCR	18	0x00000012	;Select PB2AP
WDCR	19	0x04815A80	;PB2AP: Keyboard and Mouse
WDCR	18	0x00000002	;Select PB2CR
WDCR	19	0xF0118000	;PB2CR: 1MB at 0xF0100000, r/w, 8bit
WDCR	18	0x00000013	;Select PB3AP
WDCR	19	0x01815280	;PB3AP: IRDA
WDCR	18	0x00000003	;Select PB3CR
WDCR	19	0xF0218000	;PB3CR: 1MB at 0xF0200000, r/w, 8bit
WDCR	18	0x00000017	;Select PB7AP
WDCR	19	0x01815280	;PB7AP: FPGA
WDCR	18	0x00000007	;Select PB7CR
WDCR	19	0xF0318000	;PB7CR: 1MB at 0xF0300000, r/w, 8bit



; Setup SDRAM Controller

WDCR	16	0x00000080	;Select SDTR1
WDCR	17	0x0086400D	;SDTR1: SDRAM Timing Register
WDCR	16	0x00000040	;Select MB0CF
WDCR	17	0x00046001	;MB0CF: 16MB @ 0x00000000
WDCR	16	0x00000048	;Select MB2CF
WDCR	17	0x01046001	;MB2CF: 16MB @ 0x01000000
WDCR	16	0x00000030	;Select RTR
WDCR	17	0x05F00000	;RTR: Refresh Timing Register
WDCR	16	0x00000020	;Select MCOPT1
WDCR	17	0x80800000	;MCOPT1: Enable SDRAM Controller

; Setup MMU info
WM32    0x000000f4  0x00000000  ;invalidate kernel  page table base
WM32    0x000000f8  0x00000000  ;invalidate process page table base
WM32    0x000000f0  0xc00000f4  ;invalidate page table base


[TARGET]
;WAKEUP      3000                ;wakeup time after reset
;VECTOR      CATCH               ;catch unhandled exceptions
;SIO         7 9600              ;TCP port for serial IO
JTAGCLOCK   1                   ;use 16 MHz JTAG clock
CPUTYPE     405 		;the used target CPU type
BDIMODE     AGENT   	        ;the BDI working mode (LOADONLY | AGENT)
BREAKMODE   HARD      	        ;SOFT or HARD, HARD uses PPC hardware
breakpoint
STEPMODE    HWBP                ;JTAG or HWBP, HWPB uses one or two hardware
breakpoints
MMU         XLAT 0xC0000000     ;enable virtual address mode
PTBASE      0x000000f0          ;address where kernel/user stores pointer to
page table


;REGLIST     SPR                 ;select register to transfer to GDB
;REGLIST     ALL                 ;select register to transfer to GDB
;SCANPRED    2 2                 ;JTAG devices connected before PPC400
;SCANSUCC    3 3                 ;JTAG devices connected after PPC400

[HOST]
IP          192.168.0.123
FILE        /tftpboot/vmlinuz.bdi
FORMAT      BIN 0x00200000
START       0x00210000
LOAD        MANUAL              ;load code MANUAL or AUTO after reset
DEBUGPORT   2001
DUMP        /tmp/dump.bin            ;Linux: dump.bin must already exist and
public writable

[FLASH]
WORKSPACE   0x00004000  ;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. AM29F040
= 0x80000)
BUSWIDTH    8           ;The width of the flash memory bus in bits (8 | 16 |
32)
FILE        u-boot.srec
ERASE       0xFFF80000  ;erase sector 0 of flash in U7 (AM29F040)
ERASE       0xFFF90000  ;erase sector 1 of flash
ERASE       0xFFFA0000  ;erase sector 2 of flash
ERASE       0xFFFB0000  ;erase sector 3 of flash
ERASE       0xFFFC0000  ;erase sector 4 of flash
ERASE       0xFFFD0000  ;erase sector 5 of flash
ERASE       0xFFFE0000  ;erase sector 6 of flash
ERASE       0xFFFF0000  ;erase sector 7 of flash

[REGS]
IDCR1	0x010	0x011	;MEMCFGADR and MEMCFGDATA
IDCR2	0x012	0x013	;EBCCFGADR and EBCCFGDATA
IDCR3	0x014	0x015	;KIAR and KIDR
FILE    reg405gp.def


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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-04-29 15:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-04-29 15:41 get program exception in early setup ghannon
  -- strict thread matches above, loose matches on Subject: below --
2003-03-13 18:04 Using BDI-2000 to debug kernel Jerry Walden
2003-04-28 22:26 ` get program exception in early setup Jerry Walden

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.