* 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* get program exception in early setup
2003-03-13 18:04 Using BDI-2000 to debug kernel Jerry Walden
@ 2003-04-28 22:26 ` Jerry Walden
0 siblings, 0 replies; 2+ messages in thread
From: Jerry Walden @ 2003-04-28 22:26 UTC (permalink / raw)
To: linuxppc-embedded
Greetings:
I just built a brand new kernel(2.4.18) for the PPC 405Gp, and I discovered
something that does
not make sense to me.
In setup.c / early_setup:
/* First zero the BSS -- use memset, some arches don't have
* caches on yet */
memset_io(PTRRELOC(&__bss_start), 0, &_end - &__bss_start);
>From System.map:
c0113000 A __bss_start
c0113000 A __chrp_begin
c0113000 A __chrp_end
c0113000 A __init_end
c0113000 A __openfirmware_begin
c0113000 A __openfirmware_end
c0113000 A __pmac_begin
c0113000 A __pmac_end
c0113000 A __prep_begin
c0113000 A __prep_end
|
|
|
V
c013bc40 B ipv4_config
c013bc4c B unix_socket_table
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.
It also looks like there is no _bss at all -
Help?
Do I hack the heck out of the file, or is there a better way?
I did a:
make mrproper
make dep
make pImage
Thanks
Jerry
** 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.