* [ECOS] exception when calling reset_platform @ 2002-06-13 9:20 Roland Caßebohm 2002-06-13 10:16 ` Iztok Zupet 0 siblings, 1 reply; 7+ messages in thread From: Roland Caßebohm @ 2002-06-13 9:20 UTC (permalink / raw) To: ecos-discuss Hi, my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when the application calls reset_platform(). I added two nop's because I thought the processor prefetches the init_done value, but this doesn't help: ---------- .global reset_platform .type reset_platform,function reset_platform: #ifdef CYGSEM_HAL_ROM_MONITOR // initialize CPSR (machine state register) mov r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr cpsr,r0 b warm_reset #else mov r0,#0 mov pc,r0 // Jump to reset vector //roland mov r0,r0 // nop mov r0,r0 // nop #endif init_done: .long 0xDEADB00B ---------- Does anybody know what's wrong? Roland -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-13 9:20 [ECOS] exception when calling reset_platform Roland Caßebohm @ 2002-06-13 10:16 ` Iztok Zupet 2002-06-14 3:45 ` Roland Caßebohm 0 siblings, 1 reply; 7+ messages in thread From: Iztok Zupet @ 2002-06-13 10:16 UTC (permalink / raw) To: Roland Caßebohm; +Cc: ecos-discuss On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > Hi, > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when the > application calls reset_platform(). > > I added two nop's because I thought the processor prefetches the init_done > value, but this doesn't help: > > ---------- > .global reset_platform > .type reset_platform,function > reset_platform: > #ifdef CYGSEM_HAL_ROM_MONITOR > // initialize CPSR (machine state register) > mov > r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr > cpsr,r0 > b warm_reset > #else > mov r0,#0 > mov pc,r0 // Jump to reset vector > //roland > mov r0,r0 // nop > mov r0,r0 // nop > #endif > > init_done: > .long 0xDEADB00B > ---------- > > Does anybody know what's wrong? > > Roland Hi: Looks like that the abort prefetch hapens somewhere else, not in the code You've sent. Take a look at the reset vector and the code that executes there ( if it is in RAM). It may be corrupt for some reason. Anyhow, can You figure out the address of the exeption? iz -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-13 10:16 ` Iztok Zupet @ 2002-06-14 3:45 ` Roland Caßebohm 2002-06-14 5:04 ` Iztok Zupet 0 siblings, 1 reply; 7+ messages in thread From: Roland Caßebohm @ 2002-06-14 3:45 UTC (permalink / raw) To: iz; +Cc: ecos-discuss On Thursday, 13. June 2002 19:16, Iztok Zupet wrote: > On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > > Hi, > > > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when the > > application calls reset_platform(). > > > > I added two nop's because I thought the processor prefetches the > > init_done value, but this doesn't help: > > > > ---------- > > .global reset_platform > > .type reset_platform,function > > reset_platform: > > #ifdef CYGSEM_HAL_ROM_MONITOR > > // initialize CPSR (machine state register) > > mov > > r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr > > cpsr,r0 > > b warm_reset > > #else > > mov r0,#0 > > mov pc,r0 // Jump to reset vector > > //roland > > mov r0,r0 // nop > > mov r0,r0 // nop > > #endif > > > > init_done: > > .long 0xDEADB00B > > ---------- > > > > Does anybody know what's wrong? > > > > Roland > > Hi: > > Looks like that the abort prefetch hapens somewhere else, not in the code > You've sent. Take a look at the reset vector and the code that executes > there ( if it is in RAM). It may be corrupt for some reason. Anyhow, can > You figure out the address of the exeption? > > iz The exception seems to be at 0x31638: void vs_reboot(void) { ... 31638: ebffbb55 bl 20394 <reset_platform> } 3163c: e91ba800 ldmdb r11, {r11, sp, pc} -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-14 3:45 ` Roland Caßebohm @ 2002-06-14 5:04 ` Iztok Zupet 2002-06-14 5:41 ` Roland Caßebohm 0 siblings, 1 reply; 7+ messages in thread From: Iztok Zupet @ 2002-06-14 5:04 UTC (permalink / raw) To: Roland Caßebohm; +Cc: ecos-discuss On Friday 14 June 2002 12:45, Roland CaÃebohm wrote: > On Thursday, 13. June 2002 19:16, Iztok Zupet wrote: > > On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > > > Hi, > > > > > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when the > > > application calls reset_platform(). > > > > > > I added two nop's because I thought the processor prefetches the > > > init_done value, but this doesn't help: > > > > > > ---------- > > > .global reset_platform > > > .type reset_platform,function > > > reset_platform: > > > #ifdef CYGSEM_HAL_ROM_MONITOR > > > // initialize CPSR (machine state register) > > > mov > > > r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr > > > cpsr,r0 > > > b warm_reset > > > #else > > > mov r0,#0 > > > mov pc,r0 // Jump to reset vector > > > //roland > > > mov r0,r0 // nop > > > mov r0,r0 // nop > > > #endif > > > > > > init_done: > > > .long 0xDEADB00B > > > ---------- > > > > > > Does anybody know what's wrong? > > > > > > Roland > > > > Hi: > > > > Looks like that the abort prefetch hapens somewhere else, not in the > > code You've sent. Take a look at the reset vector and the code that > > executes there ( if it is in RAM). It may be corrupt for some reason. > > Anyhow, can You figure out the address of the exeption? > > > > iz > > The exception seems to be at 0x31638: > > void vs_reboot(void) > { > > ... > > 31638: ebffbb55 bl 20394 <reset_platform> > } > 3163c: e91ba800 ldmdb r11, {r11, sp, pc} Strange. Since the abort prefetch happens here (it happens only beacuse of the ABORT signal asserted) it means that <reset_platform> is no longer in valid memory that can be reached by cpu. What kind of memory mapping do You have? Take a look at the linker xxx.ldi script in the platform/hal directory if they if it's correct for Your memory layout. iz -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-14 5:04 ` Iztok Zupet @ 2002-06-14 5:41 ` Roland Caßebohm 2002-06-14 5:55 ` Iztok Zupet 2002-06-14 5:58 ` Roland Caßebohm 0 siblings, 2 replies; 7+ messages in thread From: Roland Caßebohm @ 2002-06-14 5:41 UTC (permalink / raw) To: iz; +Cc: ecos-discuss On Friday, 14. June 2002 14:05, Iztok Zupet wrote: > On Friday 14 June 2002 12:45, Roland CaÃebohm wrote: > > On Thursday, 13. June 2002 19:16, Iztok Zupet wrote: > > > On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > > > > Hi, > > > > > > > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when > > > > the application calls reset_platform(). > > > > > > > > I added two nop's because I thought the processor prefetches the > > > > init_done value, but this doesn't help: > > > > > > > > ---------- > > > > .global reset_platform > > > > .type reset_platform,function > > > > reset_platform: > > > > #ifdef CYGSEM_HAL_ROM_MONITOR > > > > // initialize CPSR (machine state register) > > > > mov > > > > r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr > > > > cpsr,r0 > > > > b warm_reset > > > > #else > > > > mov r0,#0 > > > > mov pc,r0 // Jump to reset vector > > > > //roland > > > > mov r0,r0 // nop > > > > mov r0,r0 // nop > > > > #endif > > > > > > > > init_done: > > > > .long 0xDEADB00B > > > > ---------- > > > > > > > > Does anybody know what's wrong? > > > > > > > > Roland > > > > > > Hi: > > > > > > Looks like that the abort prefetch hapens somewhere else, not in the > > > code You've sent. Take a look at the reset vector and the code that > > > executes there ( if it is in RAM). It may be corrupt for some reason. > > > Anyhow, can You figure out the address of the exeption? > > > > > > iz > > > > The exception seems to be at 0x31638: > > > > void vs_reboot(void) > > { > > > > ... > > > > 31638: ebffbb55 bl 20394 <reset_platform> > > } > > 3163c: e91ba800 ldmdb r11, {r11, sp, pc} > > Strange. Since the abort prefetch happens here (it happens only beacuse of > the ABORT signal asserted) it means that <reset_platform> is no longer in > valid memory that can be reached by cpu. What kind of memory mapping do You > have? Take a look at the linker xxx.ldi script in the platform/hal > directory if they if it's correct for Your memory layout. > > iz RAM is mapped to 0x0 and the size is 0x200000. The function reset_platform should be and is in this array (0x20394). Roland -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-14 5:41 ` Roland Caßebohm @ 2002-06-14 5:55 ` Iztok Zupet 2002-06-14 5:58 ` Roland Caßebohm 1 sibling, 0 replies; 7+ messages in thread From: Iztok Zupet @ 2002-06-14 5:55 UTC (permalink / raw) To: Roland Caßebohm; +Cc: ecos-discuss On Friday 14 June 2002 14:41, Roland CaÃebohm wrote: > On Friday, 14. June 2002 14:05, Iztok Zupet wrote: > > On Friday 14 June 2002 12:45, Roland CaÃebohm wrote: > > > On Thursday, 13. June 2002 19:16, Iztok Zupet wrote: > > > > On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > > > > > Hi, > > > > > > > > > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when > > > > > the application calls reset_platform(). > > > > > > > > > > I added two nop's because I thought the processor prefetches the > > > > > init_done value, but this doesn't help: > > > > > > > > > > ---------- > > > > > .global reset_platform > > > > > .type reset_platform,function > > > > > reset_platform: > > > > > #ifdef CYGSEM_HAL_ROM_MONITOR > > > > > // initialize CPSR (machine state register) > > > > > mov > > > > > r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE) msr > > > > > cpsr,r0 > > > > > b warm_reset > > > > > #else > > > > > mov r0,#0 > > > > > mov pc,r0 // Jump to reset vector > > > > > //roland > > > > > mov r0,r0 // nop > > > > > mov r0,r0 // nop > > > > > #endif > > > > > > > > > > init_done: > > > > > .long 0xDEADB00B > > > > > ---------- > > > > > > > > > > Does anybody know what's wrong? > > > > > > > > > > Roland > > > > > > > > Hi: > > > > > > > > Looks like that the abort prefetch hapens somewhere else, not in > > > > the code You've sent. Take a look at the reset vector and the code > > > > that executes there ( if it is in RAM). It may be corrupt for some > > > > reason. Anyhow, can You figure out the address of the exeption? > > > > > > > > iz > > > > > > The exception seems to be at 0x31638: > > > > > > void vs_reboot(void) > > > { > > > > > > ... > > > > > > 31638: ebffbb55 bl 20394 <reset_platform> > > > } > > > 3163c: e91ba800 ldmdb r11, {r11, sp, pc} > > > > Strange. Since the abort prefetch happens here (it happens only beacuse > > of the ABORT signal asserted) it means that <reset_platform> is no longer > > in valid memory that can be reached by cpu. What kind of memory mapping > > do You have? Take a look at the linker xxx.ldi script in the platform/hal > > directory if they if it's correct for Your memory layout. > > > > iz > > RAM is mapped to 0x0 and the size is 0x200000. The function reset_platform > should be and is in this array (0x20394). > > Roland Now, try to replace the bl <reset_platform> with mov r0,#0 mov pc,r0 // Jump to reset vector to see what happens. I dont have any other idea. Do You have any kind of memory management on board? iz -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [ECOS] exception when calling reset_platform 2002-06-14 5:41 ` Roland Caßebohm 2002-06-14 5:55 ` Iztok Zupet @ 2002-06-14 5:58 ` Roland Caßebohm 1 sibling, 0 replies; 7+ messages in thread From: Roland Caßebohm @ 2002-06-14 5:58 UTC (permalink / raw) To: iz; +Cc: ecos-discuss > > > > On Thursday 13 June 2002 18:20, Roland CaÃebohm wrote: > > > > > Hi, > > > > > > > > > > my ARM7TDMI (SNDS100 Board) makes an abort prefetch exception when > > > > > the application calls reset_platform(). Ooops, I think I have to disable the interrupts before trying to reset the platform. I have done this yet and till now the exception don't come anymore. Roland -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-06-14 12:58 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2002-06-13 9:20 [ECOS] exception when calling reset_platform Roland Caßebohm 2002-06-13 10:16 ` Iztok Zupet 2002-06-14 3:45 ` Roland Caßebohm 2002-06-14 5:04 ` Iztok Zupet 2002-06-14 5:41 ` Roland Caßebohm 2002-06-14 5:55 ` Iztok Zupet 2002-06-14 5:58 ` Roland Caßebohm
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).