* How to get rom code to go on FADS?
@ 2000-05-11 21:11 Dan A. Dickey
2000-05-12 16:33 ` Richard Hendricks
0 siblings, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-11 21:11 UTC (permalink / raw)
To: linuxppc-embedded@lists.linuxppc.org
Ok, so I have the 8xxrom code running on my fads board;
and so far I've only been able to run it by using the
ADI connected to the debug port. I noticed the other
day that it was actually running without the ADI connected.
(Lights blinking, RS232 status LED coming on, etc...)
However, I cannot seem to figure out how to cause this to
happen at will. Is there some configuration thing I need
to set via the debug port? (Using mpc8bug95 on a windows
machine talking to the ADI board connected to the debug
port).
If anyone is familar with how this is done, I'd appreciate
a reply. Thanks again.
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-11 21:11 How to get rom code to go on FADS? Dan A. Dickey
@ 2000-05-12 16:33 ` Richard Hendricks
2000-05-12 17:03 ` Dan A. Dickey
0 siblings, 1 reply; 22+ messages in thread
From: Richard Hendricks @ 2000-05-12 16:33 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: linuxppc-embedded@lists.linuxppc.org
What do you mean, exactly? How to get it to run stand-alone? The
way I understand it, the 8xxROM code is designed to work stand-alone.
Do you mean running with the ADI&MPC8bug connected? In that case,
you could try reseting the ADS board without letting MPC8bug run its
default configuration scripts (type "reset :ni" I believe). This will
not initialize any of the on-chip registers. You might have to turn
on the ADS board, start MPC8bug, shut off the ADS board, turn the
ADS board back on again, then run "reset :ni" in order for this to
work properly, since MPC8bug does a reset when it starts. This will
make sure the registers are in their default state. Once you do that,
you should be able to do a "go", and the CPU should start automatically
at 0x0100. Remember though, MPC8bug doesn't do address translation, so
it will have problems displaying memory locations once the MMU's have
been enabled.
"Dan A. Dickey" wrote:
>
> Ok, so I have the 8xxrom code running on my fads board;
> and so far I've only been able to run it by using the
> ADI connected to the debug port. I noticed the other
> day that it was actually running without the ADI connected.
> (Lights blinking, RS232 status LED coming on, etc...)
>
> However, I cannot seem to figure out how to cause this to
> happen at will. Is there some configuration thing I need
> to set via the debug port? (Using mpc8bug95 on a windows
> machine talking to the ADI board connected to the debug
> port).
>
> If anyone is familar with how this is done, I'd appreciate
> a reply. Thanks again.
> -Dan
>
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-12 16:33 ` Richard Hendricks
@ 2000-05-12 17:03 ` Dan A. Dickey
2000-05-12 18:57 ` Richard Hendricks
2000-05-13 5:18 ` duncanp
0 siblings, 2 replies; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-12 17:03 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
> What do you mean, exactly? How to get it to run stand-alone? The
> way I understand it, the 8xxROM code is designed to work stand-alone.
Yes, I understand the 8xxROM code works that way.
Ok, I'll try to explain more clearly...
The 8xxROM code runs nicely with the ADI&mpc8bug connected.
No problems at all.
However, the 8xxROM code does not run *at all* without the ADI &
mpc8bug.
In fact, I'm pretty sure that no instruction at all are being
executed...
(I've modified 8xxrom code to setup IMMR, BR1/OR1 to point at BCSR;
and then can toggle the AUX LAMP led - all this as about the first
thing in the reset code).
(And, the above does toggle the AUX led just nicely - *WITH* adi &
mpc8bug).
But, when I exit mpc8bug95 and disconnect the ADI ribbon cable from the
FADS and toggle the power on the FADS; about all I get is the RUN, 5V,
SDRAM, DRAM, and FLASH leds on. No toggling AUX; nothing else for
as long as I leave it on. Kind of like its in a constant reset
condition.
Like I mentioned in my previous post, at one point in time I did indeed
see the AUX lamp blinking (*without* the ADI connected) and RS232 light
come on after powering on the FADS. But, that was several weeks ago
and I'm not sure how this happened. I'd like to be able to reliably
reproduce that state (ok - I know; according to previous posts, when
one is using a FADS you throw out any chance of reliability).
About at that time, I was wondering what the power up configuration
is set to, and how it gets changed. I understand that the hardware
asserts something on the bus at power-up (reset?) time to help the
powerpc initialize itself. I'm wondering if this is correct, and
if it is possible to change this via mpc8bug. Perhaps mpc8bug puts
this word into a state such that it won't go (Freeze mode or something).
So, I was hoping someone would have the answer to this question.
I'll be working on this tomorrow.
Ok, looking at the users manual now...
It's the Hard Reset Configuration Word (11.3.1.1) that gets put on
the data bus. It has all sorts of interesting things in it that
presumably can help or hinder the powerpc in getting through a reset.
> Do you mean running with the ADI&MPC8bug connected? In that case,
> you could try reseting the ADS board without letting MPC8bug run its
> default configuration scripts (type "reset :ni" I believe). This will
> not initialize any of the on-chip registers. You might have to turn
> on the ADS board, start MPC8bug, shut off the ADS board, turn the
> ADS board back on again, then run "reset :ni" in order for this to
> work properly, since MPC8bug does a reset when it starts. This will
> make sure the registers are in their default state. Once you do that,
> you should be able to do a "go", and the CPU should start automatically
> at 0x0100.
I haven't tried the above, but will do so.
> Remember though, MPC8bug doesn't do address translation, so
> it will have problems displaying memory locations once the MMU's have
> been enabled.
Yes, I'm aware of that.
Richard, thanks for your reply.
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-12 17:03 ` Dan A. Dickey
@ 2000-05-12 18:57 ` Richard Hendricks
2000-05-13 13:54 ` Dan A. Dickey
2000-05-13 5:18 ` duncanp
1 sibling, 1 reply; 22+ messages in thread
From: Richard Hendricks @ 2000-05-12 18:57 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> Richard Hendricks wrote:
> > What do you mean, exactly? How to get it to run stand-alone? The
> > way I understand it, the 8xxROM code is designed to work stand-alone.
>
> Yes, I understand the 8xxROM code works that way.
> Ok, I'll try to explain more clearly...
>
> The 8xxROM code runs nicely with the ADI&mpc8bug connected.
> No problems at all.
Okay.
> However, the 8xxROM code does not run *at all* without the ADI &
> mpc8bug.
> In fact, I'm pretty sure that no instruction at all are being
> executed...
Now that's interesting.
> (I've modified 8xxrom code to setup IMMR, BR1/OR1 to point at BCSR;
> and then can toggle the AUX LAMP led - all this as about the first
> thing in the reset code).
> (And, the above does toggle the AUX led just nicely - *WITH* adi &
> mpc8bug).
Is this precisely and exactly the only thing you do? Here's a copy of
some Metrowerks code that I use to run from flash. It includes
everything
from 0x0100 to initializing the the UPM and whatnot:
__start is located at 0x0100
> asm void __start(void)
> {
> nofralloc /* MWERKS: explicitly no stack */
> /* frame allocation */
>
> /*
> * PowerPC EABI init registers (stack, small data areas)
> */
> bl __init_registers
>
> /*
> * board-level initialization
> */
> bl __init_hardware
>
> /*
> * Memory access is safe now.
> */
>
> /*
> * Prepare a terminating stack record.
> */
> li r0, 0xFFFF /* load up r0 with 0xFFFFFFFF */
> stwu r1, -8(r1) /* Decrement stack by 8 bytes, (write word)*/
> stw r0, 4(r1) /* Make an illegal return address of 0xFFFFFFFF */
> stw r0, 0(r1) /* Make an illegal back chain address of 0xFFFFFFFF */
__init_registers looks like:
> asm static void __init_registers(void)
> {
> nofralloc /* see above on usage of nofralloc */
> /*
> * initialize stack pointer
> */
>
> lis r1, _stack_addr@h /* _stack_addr is generated by linker */
> ori r1, r1, _stack_addr@l
>
> /*
> * initialize small data area pointers (EABI)
> */
> lis r2, _SDA2_BASE_@h /* __SDA2_BASE_ is generated by linker */
> ori r2, r2, _SDA2_BASE_@l
>
> lis r13, _SDA_BASE_@h /* _SDA_BASE_ is generated by linker */
> ori r13, r13, _SDA_BASE_@l
>
> blr
> }
And __init_hardware looks like:
> asm void __init_hardware(void)
> {
> /*
> * Initialize Motorola ADS board unless running with MWDebug.
> * Uncomment the initialization below if running with MPC8BUG
> * or standalone. You may need to perform other initializations.
> */
> nofralloc
>
> /*
> * When customizing, be aware that the memory controller may not be
> * configured. R1, R2, and R13 are already initialized and cannot be used.
> * Stack pointer is configured, but the memory it points to is not!
> */
>
> /* Our address is really in high Flash ROM space. When reset, execution
> * starts at 0x0100. This code fragment jumps us to the correct
> * high memory area */
>
> lis r3, __init_hardware@h /* high address of __start */
> ori r3, r3, __init_hardware@l
> addi r3, r3, 0x0014 /* Jumps us into the NOPs below */
> mtctr r3
> bctr
>
> nop
> nop
>
> /* Now we need to fix the LR since it points back to 0x0000_010x,
> * not 0x0280_010x like it needs to after we muck up the BCSR's */
>
> mflr r3
> oris r3, r3, 0x0280
> mtlr r3
>
> //Setup MSR
> addi r4, r0, 0x1002
> mtmsr r4
> mtspr SRR1, r4
>
> //Setup IMMR
> lis r4, 0x0220
> ori r4, r4, 0x0000
> mtspr IMMR, r4
>
> //Disable and Invalidate I and D caches
> lis r3, DISABLE_CACHE
> mtspr IC_CST, r3
> isync
> mtspr DC_CST, r3
>
> lis r3, INVALID_CACHE
> mtspr IC_CST, r3
> isync
> mtspr DC_CST, r3
>
> //Setup SYPCR & disable software watchdog
> lis r3, 0xffff
> ori r3, r3, 0xff08
> stw r3, SYPCR(r4)
>
>
> //Setup SIUMCR to 0x0101_2440
> addis r5, r0, 0x0101
> ori r5, r5, 0x2440
> stw r5, SIUMCR(r4)
>
> //UPM init stuff...(skipped)
> //BCSR settings
> lis r17, 0x0210
> ori r17, r17, 0x0001
>
> lis r18, 0xffff
> ori r18, r18, 0x8110
>
> stw r17, BR1(r4)
> stw r18, OR1(r4)
>
> //Clear TimeBase and PIT interrupts
> //Freeze TB and PIT in debug mode
> li r3, 0x00c2
> sth r3, TBSCR(r4)
>
> li r3, 0x0082
> sth r3, PISCR(r4)
>
> //Setup the rest of the core registers
>
> //Normal mode, no show cycles
> lis r3, 0x0000
> ori r3, r3, 0x0007
> mtspr ICTRL, r3
>
> //DER = 0x0, all exceptions to target
> lis r3, 0xfdc7
> ori r3, r3, 0x400f
> mtspr DER, r3
>
> //Clear ICR
> mtspr ICR, r3
>
> blr
>
> }
Maybe if you could post the "bare-bones" init code you are trying
to use, we can offer more help.
> But, when I exit mpc8bug95 and disconnect the ADI ribbon cable from the
> FADS and toggle the power on the FADS; about all I get is the RUN, 5V,
> SDRAM, DRAM, and FLASH leds on. No toggling AUX; nothing else for
> as long as I leave it on. Kind of like its in a constant reset
> condition.
Strange. Try this:
1. Connect the ADI cable.
2. Turn on the board.
3. Start MPC8bug
4. Turn off the board.
5. Turn the board back on.
6. Execute "reset :ni" on MPC8bug. This will cause a reset, but not
initialize any of the internal registers.
7. Setup a break point in your code using "br <address>"
8. Type "go"
Your code should run up to the breakpoint. Since this is well before
the MMU is initialized, it shouldn't be a problem. Just remember
that a breakpoint does overwrite the contents of SRR0 and SRR1, so
(for example), you shouldn't breakpoint in the middle of writing to
either of them. This procedure should allow you to debug your boot
code.
> Like I mentioned in my previous post, at one point in time I did indeed
> see the AUX lamp blinking (*without* the ADI connected) and RS232 light
> come on after powering on the FADS. But, that was several weeks ago
> and I'm not sure how this happened. I'd like to be able to reliably
> reproduce that state (ok - I know; according to previous posts, when
> one is using a FADS you throw out any chance of reliability).
I find it kinda strange that people state this over and over.
I must just be remarkably lucky in that my three ADS boards are
super-troopers, taking a real beating and still merrily running
along. They've had components removed, and their daughtercards
exchanged constantly over the last few years, changing parts as
well.
> About at that time, I was wondering what the power up configuration
> is set to, and how it gets changed. I understand that the hardware
> asserts something on the bus at power-up (reset?) time to help the
> powerpc initialize itself. I'm wondering if this is correct, and
> if it is possible to change this via mpc8bug. Perhaps mpc8bug puts
> this word into a state such that it won't go (Freeze mode or something).
> So, I was hoping someone would have the answer to this question.
> I'll be working on this tomorrow.
The Hard Reset Configuration Word has a default value for the FADS
board. It's controlled by the FPGA's on the board. MPC8bug,
through the BCSR's, can affect the value, but when stand-alone
the default is used.
> Ok, looking at the users manual now...
> It's the Hard Reset Configuration Word (11.3.1.1) that gets put on
> the data bus. It has all sorts of interesting things in it that
> presumably can help or hinder the powerpc in getting through a reset.
>
> > Do you mean running with the ADI&MPC8bug connected? In that case,
> > you could try reseting the ADS board without letting MPC8bug run its
> > default configuration scripts (type "reset :ni" I believe). This will
> > not initialize any of the on-chip registers. You might have to turn
> > on the ADS board, start MPC8bug, shut off the ADS board, turn the
> > ADS board back on again, then run "reset :ni" in order for this to
> > work properly, since MPC8bug does a reset when it starts. This will
> > make sure the registers are in their default state. Once you do that,
> > you should be able to do a "go", and the CPU should start automatically
> > at 0x0100.
>
> I haven't tried the above, but will do so.
>
> > Remember though, MPC8bug doesn't do address translation, so
> > it will have problems displaying memory locations once the MMU's have
> > been enabled.
>
> Yes, I'm aware of that.
>
> Richard, thanks for your reply.
> -Dan
>
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-12 17:03 ` Dan A. Dickey
2000-05-12 18:57 ` Richard Hendricks
@ 2000-05-13 5:18 ` duncanp
1 sibling, 0 replies; 22+ messages in thread
From: duncanp @ 2000-05-13 5:18 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: Richard Hendricks, linuxppc-embedded@lists.linuxppc.org
On 12 May, Dan A. Dickey wrote:
>
[..snip..]
>
> However, the 8xxROM code does not run *at all* without the ADI &
> mpc8bug.
> In fact, I'm pretty sure that no instruction at all are being
> executed...
> (I've modified 8xxrom code to setup IMMR, BR1/OR1 to point at BCSR;
> and then can toggle the AUX LAMP led - all this as about the first
> thing in the reset code).
> (And, the above does toggle the AUX led just nicely - *WITH* adi &
> mpc8bug).
>
> But, when I exit mpc8bug95 and disconnect the ADI ribbon cable from the
> FADS and toggle the power on the FADS; about all I get is the RUN, 5V,
> SDRAM, DRAM, and FLASH leds on. No toggling AUX; nothing else for
> as long as I leave it on. Kind of like its in a constant reset
> condition.
>
This reminds me of something silly i've done in the past - Have you
remembered to disable the hardware watchdog?
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-12 18:57 ` Richard Hendricks
@ 2000-05-13 13:54 ` Dan A. Dickey
2000-05-15 15:54 ` Richard Hendricks
0 siblings, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-13 13:54 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
...
> Maybe if you could post the "bare-bones" init code you are trying
> to use, we can offer more help.
Ok, here is the start.S I'm using - its pretty much from 8xxROM,
but with some changes by me.
-Dan
/* 8xxROM - Startup Code for the FADS8xx series of Embedded Boards
* Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
* Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
*
* The processor starts at 0x00000100 and the code is executed
* from flash. The code is organized to be at an other address
* in memory, but as long we don't jump around before relocating.
* board_init lies at a quite high address and when the cpu has
* jumped there, everything is ok.
* This works because the cpu gives the flash (CS0) the whole
* address space at startup, and board_init lies as a echo of
* the flash somewhere up there in the memorymap.
*
* board_init will change CS0 to be positioned at the correct
* address and (s)dram will be positioned at address 0
*/
#include "config.h"
#define CONFIG_8xx 1
#define _LINUX_CONFIG_H 1
#include "ppc_asm.tmpl"
#include "ppc_defs.h"
#include <asm/processor.h>
#include <asm/cache.h>
#include <asm/mmu.h>
#include <board/board.h>
/* We don't want the MMU yet.
*/
#undef MSR_KERNEL
#define MSR_KERNEL MSR_
.text
.globl version_string
version_string:
.string "8xxROM 0.3.0"
. =
0x100
.globl _start
Xreset:
addis r2,0,_start@h
ori r2,r2,_start@l
mtspr LR,r2
bclr 20,0
/* Machine check */
STD_EXCEPTION(0x200, MachineCheck, MachineCheckException)
/* Data Storage exception. "Never" generated on the 860. */
STD_EXCEPTION(0x300, DataStorage, UnknownException)
/* Instruction Storage exception. "Never" generated on the 860. */
STD_EXCEPTION(0x400, InstStorage, UnknownException)
/* External Interrupt exception. */
STD_EXCEPTION(0x500, ExtInterrupt, UnknownException)
/* Alignment exception. */
. = 0x600
Alignment:
EXCEPTION_PROLOG
mfspr r4,DAR
stw r4,_DAR(r21)
mfspr r5,DSISR
stw r5,_DSISR(r21)
addi r3,r1,STACK_FRAME_OVERHEAD
li r20,MSR_KERNEL
rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */
lis r6, transfer_to_handler@h
ori r6, r6, transfer_to_handler@l
mtlr r6
blrl
.long AlignmentException
.long int_return
/* Program check exception */
. = 0x700
ProgramCheck:
EXCEPTION_PROLOG
addi r3,r1,STACK_FRAME_OVERHEAD
li r20,MSR_KERNEL
rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */
lis r6, transfer_to_handler@h
ori r6, r6, transfer_to_handler@l
mtlr r6
blrl
.long ProgramCheckException
.long int_return
/* No FPU on MPC8xx. This exception is not supposed to
happen.
*/
STD_EXCEPTION(0x800, FPUnavailable, UnknownException)
/* I guess we could implement decrementer, and may have
* to someday for timekeeping.
*/
STD_EXCEPTION(0x900, Decrementer, UnknownException)
STD_EXCEPTION(0xa00, Trap_0a, UnknownException)
STD_EXCEPTION(0xb00, Trap_0b, UnknownException)
STD_EXCEPTION(0xc00, SystemCall, UnknownException)
STD_EXCEPTION(0xd00, SingleStep, UnknownException)
STD_EXCEPTION(0xe00, Trap_0e, UnknownException)
STD_EXCEPTION(0xf00, Trap_0f, UnknownException)
/* On the MPC8xx, this is a software emulation interrupt. It
occurs
* for all unimplemented and illegal instructions.
*/
STD_EXCEPTION(0x1000, SoftEmu, SoftEmuException)
STD_EXCEPTION(0x1100, InstructionTLBMiss, UnknownException)
STD_EXCEPTION(0x1200, DataTLBMiss, UnknownException)
STD_EXCEPTION(0x1300, InstructionTLBError, UnknownException)
STD_EXCEPTION(0x1400, DataTLBError, UnknownException)
STD_EXCEPTION(0x1500, Reserved5, UnknownException)
STD_EXCEPTION(0x1600, Reserved6, UnknownException)
STD_EXCEPTION(0x1700, Reserved7, UnknownException)
STD_EXCEPTION(0x1800, Reserved8, UnknownException)
STD_EXCEPTION(0x1900, Reserved9, UnknownException)
STD_EXCEPTION(0x1a00, ReservedA, UnknownException)
STD_EXCEPTION(0x1b00, ReservedB, UnknownException)
STD_EXCEPTION(0x1c00, DataBreakpoint, UnknownException)
STD_EXCEPTION(0x1d00, InstructionBreakpoint, UnknownException)
STD_EXCEPTION(0x1e00, PeripheralBreakpoint, UnknownException)
STD_EXCEPTION(0x1f00, DevPortBreakpoint, UnknownException)
.globl _end_of_vectors
_end_of_vectors:
. = 0x2000
_start:
/* the original fadsrom code by Dan Malek did a lot of setup
*/
/* in assembler, I moved most of the code to C for readability
*/
addis r3, 0, _start@h
ori r3, r3, _start@l
addi r3, r3, 0x0014 /* Jumps us into the NOPs below */
mtctr
r3
bctr
nop
nop
/* Now we need to fix the LR since it points back to
0x0000_010x,
* not 0x0280_010x like it needs to after we muck up the BCSR's
*/
mflr r3
oris r3, r3, 0x0280
mtlr r3
addis r0,0,0
addi r3, r0, MSR_ /* Set ME, RI flags */
mtmsr r3
mtspr SRR1, r3 /* Make SRR1 match MSR */
/* Make the LR equal the PC. */
oris r3,r0,sync_jump@h
ori r3,r3,sync_jump@l
mtspr LR,r3
bclr 20,0
sync_jump:
#if 1
/* position IMMR */
lis r1, IMMR_VALUE@h
ori r1, r1, 0
mtspr 638, r1
bror1start:
/* need to setup BR1/OR1 to get to the BCSR on the fads */
lis r9,0xffff
ori r9,r9,0x8110
lis r10,0x0210
ori r10,r10,0x0001
stw r9,0x10C(r1)
stw r10,0x108(r1)
/* signal on */
lis r8,0x210
ori r8,r8,16
lis r9,0x210
ori r9,r9,16
lwz r10,0(r9)
rlwinm r9,r10,0,4,2
stw r9,0(r8)
#if 1
/* signal delay */
lis r8,0x5
sdloop1:
addi r8,r8,-1
li r9,-1
cmpw r0,r8,r9
bc 4,2,sdcont1
b sdstop1
sdcont1:
b sdloop1
sdstop1:
#endif
/* signal off */
lis r8,0x210
ori r8,r8,16
lis r9,0x210
ori r9,r9,16
lwz r10,0(r9)
oris r9,r10,0x1000
stw r9,0(r8)
#if 1
/* signal delay */
lis r8,0x5
sdloop2:
addi r8,r8,-1
li r9,-1
cmpw r0,r8,r9
bc 4,2,sdcont2
b sdstop2
sdcont2:
b sdloop2
sdstop2:
#endif
/* signal on */
lis r8,0x210
ori r8,r8,16
lis r9,0x210
ori r9,r9,16
lwz r10,0(r9)
rlwinm r9,r10,0,4,2
stw r9,0(r8)
#endif
addis r0,0,0
/* invalidate all tlb's */
tlbia
isync
#if 1
/* Reset the caches.
*/
lis r21, IDC_UNALL@h /* Unlock all */
mtspr IC_CST, r21
mtspr DC_CST, r21
lis r21, IDC_INVALL@h /* Invalidate all */
mtspr IC_CST, r21
mtspr DC_CST, r21
lis r21, IDC_DISABLE@h /* Disable data cache */
mtspr DC_CST, r21
#if 0
lis r21, IDC_ENABLE@h /* Enable instruction cache */
#else
lis r21, IDC_DISABLE@h /* Disable instruction cache */
#endif
mtspr IC_CST, r21
#endif
/* initialize some sprs that are hard to access from c */
/* Disable serialized ifetch and show cycles (i.e. set processor
* to normal mode).
* this is also a silicon bug workaround, see errata
*/
li r21, 0x0007
mtspr ICTRL, r21
/* Disable debug mode entry.
*/
li r21, 0
mtspr DER, r21
/* position IMMR */
lis r1, IMMR_VALUE@h
mtspr 638, r1
/* set up the stack to the internal DPRAM */
/* oris r1,r0,0 */
ori r1,r1,0x3000
/* load the stack pointer 72 bytes down from top of stack to
ensure one
* stack frame of safety margin.
*/
stwu r0,-72(r1)
/* let the c-code set up the rest */
lis r2,board_init@h
ori r2,r2,board_init@l
mtlr r2 /* Easiest way to do an absolute
jump */
blr
/* board_init will call start_main as the last thing it does. */
.globl start_main
start_main:
/* Initialize stack pointer and jump to main function.
* the c-code passed the stackpointer in r3 and the
* argument to main in r4.
*/
mr r1, r3 /* first argument from c-code */
mr r3, r4 /* second argument to first */
mr r4, r5 /* third argument to second */
bl main_loop
1: b 1b /* Loop forever if main exits */
/*
* This code finishes saving the registers to the exception frame
* and jumps to the appropriate handler for the exception.
* Register r21 is pointer into trap frame, r1 has new stack pointer.
*/
.globl transfer_to_handler
transfer_to_handler:
stw r22,_NIP(r21)
lis r22,MSR_POW@h
andc r23,r23,r22
stw r23,_MSR(r21)
SAVE_GPR(7, r21)
SAVE_4GPRS(8, r21)
SAVE_8GPRS(12, r21)
SAVE_8GPRS(24, r21)
#if 0
andi. r23,r23,MSR_PR
mfspr r23,SPRG3 /* if from user, fix up tss.regs
*/
beq 2f
addi r24,r1,STACK_FRAME_OVERHEAD
stw r24,PT_REGS(r23)
2: addi r2,r23,-TSS /* set r2 to current */
tovirt(r2,r2,r23)
#endif
mflr r23
andi. r24,r23,0x3f00 /* get vector offset */
stw r24,TRAP(r21)
li r22,0
stw r22,RESULT(r21)
mtspr SPRG2,r22 /* r1 is now kernel sp */
#if 0
addi r24,r2,TASK_STRUCT_SIZE /* check for kernel stack
overflow */
cmplw 0,r1,r2
cmplw
1,r1,r24
crand 1,1,4
bgt stack_ovf /* if r2 < r1 <
r2+TASK_STRUCT_SIZE */
#endif
lwz r24,0(r23) /* virtual address of handler */
lwz r23,4(r23) /* where to go when done */
mtspr SRR0,r24
mtspr SRR1,r20
mtlr r23
SYNC
rfi /* jump to handler, enable MMU
*/
int_return:
mfmsr r30 /* Disable interrupts */
li r4,0
ori r4,r4,MSR_EE
andc r30,r30,r4
SYNC /* Some chip revs need this... */
mtmsr r30
SYNC
lwz r2,_CTR(r1)
lwz r0,_LINK(r1)
mtctr r2
mtlr r0
lwz r2,_XER(r1)
lwz r0,_CCR(r1)
mtspr XER,r2
mtcrf 0xFF,r0
REST_10GPRS(3, r1)
REST_10GPRS(13, r1)
REST_8GPRS(23, r1)
REST_GPR(31, r1)
lwz r2,_NIP(r1) /* Restore environment */
lwz r0,_MSR(r1)
mtspr SRR0,r2
mtspr SRR1,r0
lwz r0,GPR0(r1)
lwz r2,GPR2(r1)
lwz r1,GPR1(r1)
SYNC
rfi
/* Cache functions.
*/
.globl icache_enable
icache_enable:
SYNC
lis r3, IDC_INVALL@h
mtspr IC_CST, r3
lis r3, IDC_ENABLE@h
mtspr IC_CST, r3
blr
.globl icache_disable
icache_disable:
SYNC
lis r3, IDC_DISABLE@h
mtspr IC_CST, r3
blr
.globl dcache_enable
dcache_enable:
#if 0
SYNC
#endif
#if 1
lis r3, 0x0400 /* Set cache mode with MMU off
*/
mtspr MD_CTR, r3
#endif
lis r3, IDC_INVALL@h
mtspr DC_CST, r3
#if 0
lis r3, DC_SFWT@h
mtspr DC_CST, r3
#endif
lis r3, IDC_ENABLE@h
mtspr DC_CST, r3
blr
.globl dcache_disable
dcache_disable:
SYNC
lis r3, IDC_DISABLE@h
mtspr DC_CST, r3
lis r3, IDC_INVALL@h
mtspr DC_CST, r3
blr
.globl dc_stat
dc_stat:
mfspr r3, DC_CST
blr
.globl dc_read
dc_read:
mtspr DC_ADR, r3
mfspr r3, DC_DAT
blr
#if 1
.globl udelay
udelay:
mulli r4,r3,1000 /* nanoseconds */
addi r4,r4,59
li r5,60
divw r4,r4,r5 /* BUS ticks */
1: mftbu r5
mftb
r6
mftbu r7
cmp 0,r5,r7
bne 1b /* Get [synced] base time */
addc r9,r6,r4 /* Compute end time */
addze r8,r5
2: mftbu r5
cmp 0,r5,r8
blt 2b
bgt 3f
mftb r6
cmp 0,r6,r9
blt 2b
3: blr
#endif
.globl get_immr
get_immr:
mfspr r3, 638
blr
.globl get_pvr
get_pvr:
mfspr r3, PVR
blr
.globl wr_ic_cst
wr_ic_cst:
mtspr IC_CST, r3
blr
.globl rd_ic_cst
rd_ic_cst:
mfspr r3, IC_CST
blr
.globl wr_ic_adr
wr_ic_adr:
mtspr IC_ADR, r3
blr
.globl wr_dc_cst
wr_dc_cst:
mtspr DC_CST, r3
blr
.globl rd_dc_cst
rd_dc_cst:
mfspr r3, DC_CST
blr
.globl
wr_dc_adr
wr_dc_adr:
mtspr DC_ADR, r3
blr
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-13 13:54 ` Dan A. Dickey
@ 2000-05-15 15:54 ` Richard Hendricks
2000-05-15 17:00 ` Dan A. Dickey
0 siblings, 1 reply; 22+ messages in thread
From: Richard Hendricks @ 2000-05-15 15:54 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
>
> /* Now we need to fix the LR since it points back to
> 0x0000_010x,
> * not 0x0280_010x like it needs to after we muck up the BCSR's
> */
>
> mflr r3
> oris r3, r3, 0x0280
> mtlr r3
>
> addis r0,0,0
>
> addi r3, r0, MSR_ /* Set ME, RI flags */
> mtmsr r3
> mtspr SRR1, r3 /* Make SRR1 match MSR */
>
> /* Make the LR equal the PC. */
> oris r3,r0,sync_jump@h
> ori r3,r3,sync_jump@l
> mtspr LR,r3
> bclr 20,0
> sync_jump:
Kinda odd you leave the mflr, oris, mtlr and then change it to match the
PC.
Since you are not being called from another function, you really
shouldn't
need either. (IE, what's the point in making the LR equal to the PC?
Would probably make more sense to make it point to, say, the Machine
Check exception)
> #if 1
> /* position IMMR */
>
> lis r1, IMMR_VALUE@h
> ori r1, r1, 0
> mtspr 638, r1
>
> bror1start:
> /* need to setup BR1/OR1 to get to the BCSR on the fads */
> lis r9,0xffff
> ori r9,r9,0x8110
> lis r10,0x0210
> ori r10,r10,0x0001
> stw r9,0x10C(r1)
> stw r10,0x108(r1)
> /* signal on */
> lis r8,0x210
> ori r8,r8,16
> lis r9,0x210
> ori r9,r9,16
> lwz r10,0(r9)
> rlwinm r9,r10,0,4,2
> stw r9,0(r8)
Hm.. Whay are you ori'ing in 16? BCSR1 should be at 0x4, not 0x10. You
end
up dropping r9 onto BCSR0, which can't be a good thing. Try changing
the
two ori's to ori r8,r8,4 and ori r9, r9, 4. Let me know what happens!
> #if 1
> /* signal delay */
> lis r8,0x5
> sdloop1:
> addi r8,r8,-1
> li r9,-1
> cmpw r0,r8,r9
> bc 4,2,sdcont1
> b sdstop1
> sdcont1:
> b sdloop1
> sdstop1:
> #endif
>
> /* signal off */
> lis r8,0x210
> ori r8,r8,16
> lis r9,0x210
> ori r9,r9,16
> lwz r10,0(r9)
> oris r9,r10,0x1000
> stw r9,0(r8)
>
> #if 1
> /* signal delay */
> lis r8,0x5
> sdloop2:
> addi r8,r8,-1
> li r9,-1
> cmpw r0,r8,r9
> bc 4,2,sdcont2
> b sdstop2
> sdcont2:
> b sdloop2
> sdstop2:
> #endif
>
> /* signal on */
> lis r8,0x210
> ori r8,r8,16
> lis r9,0x210
> ori r9,r9,16
> lwz r10,0(r9)
> rlwinm r9,r10,0,4,2
> stw r9,0(r8)
> #endif
>
> addis r0,0,0
>
> /* invalidate all tlb's */
>
> tlbia
> isync
>
> #if 1
> /* Reset the caches.
> */
>
> lis r21, IDC_UNALL@h /* Unlock all */
> mtspr IC_CST, r21
> mtspr DC_CST, r21
>
> lis r21, IDC_INVALL@h /* Invalidate all */
> mtspr IC_CST, r21
> mtspr DC_CST, r21
>
> lis r21, IDC_DISABLE@h /* Disable data cache */
> mtspr DC_CST, r21
>
> #if 0
> lis r21, IDC_ENABLE@h /* Enable instruction cache */
> #else
> lis r21, IDC_DISABLE@h /* Disable instruction cache */
> #endif
> mtspr IC_CST, r21
> #endif
>
> /* initialize some sprs that are hard to access from c */
>
> /* Disable serialized ifetch and show cycles (i.e. set processor
> * to normal mode).
> * this is also a silicon bug workaround, see errata
> */
>
> li r21, 0x0007
> mtspr ICTRL, r21
>
> /* Disable debug mode entry.
> */
>
> li r21, 0
> mtspr DER, r21
>
> /* position IMMR */
>
> lis r1, IMMR_VALUE@h
> mtspr 638, r1
>
> /* set up the stack to the internal DPRAM */
> /* oris r1,r0,0 */
> ori r1,r1,0x3000
> /* load the stack pointer 72 bytes down from top of stack to
> ensure one
> * stack frame of safety margin.
> */
> stwu r0,-72(r1)
>
> /* let the c-code set up the rest */
>
> lis r2,board_init@h
> ori r2,r2,board_init@l
> mtlr r2 /* Easiest way to do an absolute
> jump */
>
> blr
>
> /* board_init will call start_main as the last thing it does. */
>
> .globl start_main
>
> start_main:
>
> /* Initialize stack pointer and jump to main function.
> * the c-code passed the stackpointer in r3 and the
> * argument to main in r4.
> */
>
> mr r1, r3 /* first argument from c-code */
> mr r3, r4 /* second argument to first */
> mr r4, r5 /* third argument to second */
> bl main_loop
>
> 1: b 1b /* Loop forever if main exits */
>
> /*
> * This code finishes saving the registers to the exception frame
> * and jumps to the appropriate handler for the exception.
> * Register r21 is pointer into trap frame, r1 has new stack pointer.
> */
> .globl transfer_to_handler
> transfer_to_handler:
> stw r22,_NIP(r21)
> lis r22,MSR_POW@h
> andc r23,r23,r22
> stw r23,_MSR(r21)
> SAVE_GPR(7, r21)
> SAVE_4GPRS(8, r21)
> SAVE_8GPRS(12, r21)
> SAVE_8GPRS(24, r21)
> #if 0
> andi. r23,r23,MSR_PR
> mfspr r23,SPRG3 /* if from user, fix up tss.regs
> */
> beq 2f
> addi r24,r1,STACK_FRAME_OVERHEAD
> stw r24,PT_REGS(r23)
> 2: addi r2,r23,-TSS /* set r2 to current */
> tovirt(r2,r2,r23)
> #endif
> mflr r23
> andi. r24,r23,0x3f00 /* get vector offset */
> stw r24,TRAP(r21)
> li r22,0
> stw r22,RESULT(r21)
> mtspr SPRG2,r22 /* r1 is now kernel sp */
> #if 0
> addi r24,r2,TASK_STRUCT_SIZE /* check for kernel stack
> overflow */
> cmplw 0,r1,r2
> cmplw
> 1,r1,r24
> crand 1,1,4
> bgt stack_ovf /* if r2 < r1 <
> r2+TASK_STRUCT_SIZE */
> #endif
> lwz r24,0(r23) /* virtual address of handler */
> lwz r23,4(r23) /* where to go when done */
> mtspr SRR0,r24
> mtspr SRR1,r20
> mtlr r23
> SYNC
> rfi /* jump to handler, enable MMU
> */
>
> int_return:
> mfmsr r30 /* Disable interrupts */
> li r4,0
> ori r4,r4,MSR_EE
> andc r30,r30,r4
> SYNC /* Some chip revs need this... */
> mtmsr r30
> SYNC
> lwz r2,_CTR(r1)
> lwz r0,_LINK(r1)
> mtctr r2
> mtlr r0
> lwz r2,_XER(r1)
> lwz r0,_CCR(r1)
> mtspr XER,r2
> mtcrf 0xFF,r0
> REST_10GPRS(3, r1)
> REST_10GPRS(13, r1)
> REST_8GPRS(23, r1)
> REST_GPR(31, r1)
> lwz r2,_NIP(r1) /* Restore environment */
> lwz r0,_MSR(r1)
> mtspr SRR0,r2
> mtspr SRR1,r0
> lwz r0,GPR0(r1)
> lwz r2,GPR2(r1)
> lwz r1,GPR1(r1)
> SYNC
> rfi
>
> /* Cache functions.
> */
> .globl icache_enable
> icache_enable:
> SYNC
> lis r3, IDC_INVALL@h
> mtspr IC_CST, r3
> lis r3, IDC_ENABLE@h
> mtspr IC_CST, r3
> blr
>
> .globl icache_disable
> icache_disable:
> SYNC
> lis r3, IDC_DISABLE@h
> mtspr IC_CST, r3
> blr
>
> .globl dcache_enable
> dcache_enable:
> #if 0
> SYNC
> #endif
> #if 1
> lis r3, 0x0400 /* Set cache mode with MMU off
> */
> mtspr MD_CTR, r3
> #endif
>
> lis r3, IDC_INVALL@h
> mtspr DC_CST, r3
> #if 0
> lis r3, DC_SFWT@h
> mtspr DC_CST, r3
> #endif
> lis r3, IDC_ENABLE@h
> mtspr DC_CST, r3
> blr
>
> .globl dcache_disable
> dcache_disable:
> SYNC
> lis r3, IDC_DISABLE@h
> mtspr DC_CST, r3
> lis r3, IDC_INVALL@h
> mtspr DC_CST, r3
> blr
>
> .globl dc_stat
> dc_stat:
> mfspr r3, DC_CST
> blr
>
> .globl dc_read
> dc_read:
> mtspr DC_ADR, r3
> mfspr r3, DC_DAT
> blr
>
> #if 1
> .globl udelay
> udelay:
> mulli r4,r3,1000 /* nanoseconds */
> addi r4,r4,59
> li r5,60
> divw r4,r4,r5 /* BUS ticks */
> 1: mftbu r5
> mftb
> r6
> mftbu r7
> cmp 0,r5,r7
> bne 1b /* Get [synced] base time */
> addc r9,r6,r4 /* Compute end time */
> addze r8,r5
> 2: mftbu r5
> cmp 0,r5,r8
> blt 2b
> bgt 3f
> mftb r6
> cmp 0,r6,r9
> blt 2b
> 3: blr
> #endif
>
> .globl get_immr
> get_immr:
> mfspr r3, 638
> blr
>
> .globl get_pvr
> get_pvr:
> mfspr r3, PVR
> blr
>
> .globl wr_ic_cst
> wr_ic_cst:
> mtspr IC_CST, r3
> blr
>
> .globl rd_ic_cst
> rd_ic_cst:
> mfspr r3, IC_CST
> blr
>
> .globl wr_ic_adr
> wr_ic_adr:
> mtspr IC_ADR, r3
> blr
>
> .globl wr_dc_cst
> wr_dc_cst:
> mtspr DC_CST, r3
> blr
>
> .globl rd_dc_cst
> rd_dc_cst:
> mfspr r3, DC_CST
> blr
>
> .globl
> wr_dc_adr
> wr_dc_adr:
> mtspr DC_ADR, r3
> blr
>
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-15 15:54 ` Richard Hendricks
@ 2000-05-15 17:00 ` Dan A. Dickey
2000-05-15 17:43 ` Dan A. Dickey
2000-05-16 1:55 ` Dan A. Dickey
0 siblings, 2 replies; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-15 17:00 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
>
> "Dan A. Dickey" wrote:
> >
> >
> > /* Now we need to fix the LR since it points back to
> > 0x0000_010x,
> > * not 0x0280_010x like it needs to after we muck up the BCSR's
> > */
> >
> > mflr r3
> > oris r3, r3, 0x0280
> > mtlr r3
> >
> > addis r0,0,0
> >
> > addi r3, r0, MSR_ /* Set ME, RI flags */
> > mtmsr r3
> > mtspr SRR1, r3 /* Make SRR1 match MSR */
> >
> > /* Make the LR equal the PC. */
> > oris r3,r0,sync_jump@h
> > ori r3,r3,sync_jump@l
> > mtspr LR,r3
> > bclr 20,0
> > sync_jump:
>
> Kinda odd you leave the mflr, oris, mtlr and then change it to match the
> PC.
> Since you are not being called from another function, you really
> shouldn't
> need either. (IE, what's the point in making the LR equal to the PC?
> Would probably make more sense to make it point to, say, the Machine
> Check exception)
This stuff up above came from Motorola's 860 Initialization code.
I claim mostly ignorance when it comes to the 860/850; I have a
high degree of desire to *not* learn assembly for this processor.
But I do understand that I will have at least be able to read it,
and write some things. Mostly, I'm hoping to leverage off of
what others have already done; and contribute in other areas.
> > #if 1
> > /* position IMMR */
> >
> > lis r1, IMMR_VALUE@h
> > ori r1, r1, 0
> > mtspr 638, r1
> >
> > bror1start:
> > /* need to setup BR1/OR1 to get to the BCSR on the fads */
> > lis r9,0xffff
> > ori r9,r9,0x8110
> > lis r10,0x0210
> > ori r10,r10,0x0001
> > stw r9,0x10C(r1)
> > stw r10,0x108(r1)
>
>
> > /* signal on */
> > lis r8,0x210
> > ori r8,r8,16
> > lis r9,0x210
> > ori r9,r9,16
> > lwz r10,0(r9)
> > rlwinm r9,r10,0,4,2
> > stw r9,0(r8)
>
> Hm.. Whay are you ori'ing in 16? BCSR1 should be at 0x4, not 0x10. You
> end
> up dropping r9 onto BCSR0, which can't be a good thing. Try changing
> the
> two ori's to ori r8,r8,4 and ori r9, r9, 4. Let me know what happens!
Going along with my ignorance of assembly, the above I copied out
of a .s file - the result of writing the above in C and asking the
compiler
to produce the .s. Cut & paste is a wonderful thing. :) However,
sometimes it comes back to haunt you. It'd be my guess that I did
not change one of the register names correctly (after doing the cut &
paste, I changed the registers to be something more "appropriate").
I'll try your suggestion shortly - however, the processor never
reaches this point in execution.
Following your recommendation of powering off/on and just doing a
"reset :ni", I've been able to learn more. I'm not sure what at
the moment, but things definitely are not working the way they
should - while the above code runs just fine when doing a "reset :h".
I'll let you know more soon.
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-15 17:00 ` Dan A. Dickey
@ 2000-05-15 17:43 ` Dan A. Dickey
2000-05-15 18:25 ` Dan A. Dickey
2000-05-16 1:55 ` Dan A. Dickey
1 sibling, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-15 17:43 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
...
> I'll let you know more soon.
Ok, I'm down to this bit of code:
.text
.globl version_string
version_string:
.string "8xxROM 0.3.0"
. = 0x100
.globl _start
Xreset:
addis r2,0,_start@h
ori r2,r2,_start@l
mtspr LR,r2
bclr 20,0
nop
nop
... intermediate code suppressed ...
.globl _end_of_vectors
_end_of_vectors:
. = 0x2000
_start:
/* the original fadsrom code by Dan Malek did a lot of setup
*/
/* in assembler, I moved most of the code to C for readability
*/
addis r3, 0, _start@h
ori r3, r3, _start@l
addi r3, r3, 0x0014 /* Jumps us into the NOPs below */
mtctr r3
bctr
nop
nop
#if 0
/* Now we need to fix the LR since it points back to
0x0000_010x,
* not 0x0280_010x like it needs to after we muck up the BCSR's
*/
mflr r3
oris r3, r3, 0x0280
mtlr r3
#endif
addis r0,0,0
addi r3, r0, MSR_ /* Set ME, RI flags */
mtmsr r3
mtspr SRR1, r3 /* Make SRR1 match MSR */
#if 0
/* Make the LR equal the PC. */
oris r3,r0,sync_jump@h
ori r3,r3,sync_jump@l
mtspr LR,r3
bclr 20,0
sync_jump:
#endif
#if
1
/* position IMMR */
lis r1, IMMR_VALUE@h
ori r1, r1, 0
mtspr 638, r1
bror1start:
/* need to setup BR1/OR1 to get to the BCSR on the fads */
lis r9,0xffff
ori r9,r9,0x8110
lis r10,0x0210
ori r10,r10,0x0001
stw r9,0x10C(r1)
stw
r10,0x108(r1)
Ok, so I build this and put it into the flash.
While mpc8bug & the ADI are connected I power off, wait a bit, power on.
Enter "reset :ni" at the mpc8bug prompt.
Then, "br 02802038" (bror1start: address),
followed by "go 100".
I get the following from mpc8bug:
f850SARBug> br 02802038
f850SARBug> go 100
Use Ctrl-C to abort execution !
warning: might be in unrecoverable exception state (SRR1[RI]=0)
exception: DEVELOPMENT PORT INTERRUPT
0x00000100 3c400280 addis r2,r0,0x280
f850SARBug>
So, to me at the moment; it appears to not even be reaching bror1start.
Any suggestions?
Something here just seems plain wrong - some little thing that is
pretty innocuous but because its not set right, turns out to be
a showstopper. As soon as I (or someone else) finds it, it'll be
a "Doh - of course we need to do that...".
Any and all suggestions will be appreciated (and quite possibly tried).
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-15 17:43 ` Dan A. Dickey
@ 2000-05-15 18:25 ` Dan A. Dickey
2000-05-16 14:50 ` Richard Hendricks
0 siblings, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-15 18:25 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
Ok, I've now learned that even a simple:
_start:
b _start
fails with the development port interrupt.
Really odd...
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-15 17:00 ` Dan A. Dickey
2000-05-15 17:43 ` Dan A. Dickey
@ 2000-05-16 1:55 ` Dan A. Dickey
2000-05-16 14:45 ` Richard Hendricks
[not found] ` <3920ED16.A2D26629@snom.de>
1 sibling, 2 replies; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-16 1:55 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> Richard Hendricks wrote:
> >
> > "Dan A. Dickey" wrote:
...
> > > #if 1
> > > /* position IMMR */
> > >
> > > lis r1, IMMR_VALUE@h
> > > ori r1, r1, 0
> > > mtspr 638, r1
> > >
> > > bror1start:
> > > /* need to setup BR1/OR1 to get to the BCSR on the fads */
> > > lis r9,0xffff
> > > ori r9,r9,0x8110
> > > lis r10,0x0210
> > > ori r10,r10,0x0001
> > > stw r9,0x10C(r1)
> > > stw r10,0x108(r1)
> >
> >
> > > /* signal on */
> > > lis r8,0x210
> > > ori r8,r8,16
> > > lis r9,0x210
> > > ori r9,r9,16
> > > lwz r10,0(r9)
> > > rlwinm r9,r10,0,4,2
> > > stw r9,0(r8)
> >
> > Hm.. Whay are you ori'ing in 16? BCSR1 should be at 0x4, not 0x10. You
> > end
> > up dropping r9 onto BCSR0, which can't be a good thing. Try changing
> > the
> > two ori's to ori r8,r8,4 and ori r9, r9, 4. Let me know what happens!
>
> Going along with my ignorance of assembly, the above I copied out
> of a .s file - the result of writing the above in C and asking the
> compiler
> to produce the .s. Cut & paste is a wonderful thing. :) However,
> sometimes it comes back to haunt you. It'd be my guess that I did
> not change one of the register names correctly (after doing the cut &
> paste, I changed the registers to be something more "appropriate").
>
> I'll try your suggestion shortly - however, the processor never
> reaches this point in execution.
Ok, I've backed out your change, and am now or'ing in the 16.
Things work again. Well; the signal lamp goes on & off.
Checking the fads users manual, the address of BCSR1 is clearly
at 02100010. Perhaps you were thinking of word addresses or something?
And, I'm currently still stuck at the development port interrupt...
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-16 1:55 ` Dan A. Dickey
@ 2000-05-16 14:45 ` Richard Hendricks
[not found] ` <3920ED16.A2D26629@snom.de>
1 sibling, 0 replies; 22+ messages in thread
From: Richard Hendricks @ 2000-05-16 14:45 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> Ok, I've backed out your change, and am now or'ing in the 16.
> Things work again. Well; the signal lamp goes on & off.
> Checking the fads users manual, the address of BCSR1 is clearly
> at 02100010. Perhaps you were thinking of word addresses or something?
>
> And, I'm currently still stuck at the development port interrupt...
> -Dan
Doh, I thought you were using the IrDA LED. Nevermind. 0x10 is correct.
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-15 18:25 ` Dan A. Dickey
@ 2000-05-16 14:50 ` Richard Hendricks
2000-05-16 21:03 ` Dan A. Dickey
0 siblings, 1 reply; 22+ messages in thread
From: Richard Hendricks @ 2000-05-16 14:50 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: linuxppc-embedded@lists.linuxppc.org
Dan,
By any chance, do you not have +12V applied? Also, how are you
programming your Flash ROM? Try downloading it and reading the
memory locations with MPC8bug (normally MPC8bug puts the Flash
up at 0x02800100), then power off for a minute or two, then
reset the board normally through MPC8bug and read the memory
locations again. It almost sounds like your Flash isn't getting
programmed at all...
Do an mdi at 0x02800100 to see if your code is properly getting
programmed. I've got a feeling that I might know what's going on.
"Dan A. Dickey" wrote:
>
> Ok, I've now learned that even a simple:
>
> _start:
> b _start
>
> fails with the development port interrupt.
> Really odd...
> -Dan
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-16 14:50 ` Richard Hendricks
@ 2000-05-16 21:03 ` Dan A. Dickey
0 siblings, 0 replies; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-16 21:03 UTC (permalink / raw)
To: Richard Hendricks, duncanp; +Cc: linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
> Dan,
> By any chance, do you not have +12V applied?
Pretty sure I do - it is supposed to be. I don't have
a meter handy, so I can't actually measure it - but the
wire is there and so on (and it *is* attached to a power
supply).
> Also, how are you
> programming your Flash ROM? Try downloading it and reading the
> memory locations with MPC8bug (normally MPC8bug puts the Flash
> up at 0x02800100), then power off for a minute or two, then
> reset the board normally through MPC8bug and read the memory
> locations again. It almost sounds like your Flash isn't getting
> programmed at all...
I'm pretty sure it *is* getting programmed.
I'm loading it with a "loadf theSRECfile 10000".
It loads the sections into ram, and then into flash.
After power off/on the board, I can still disassemble
the flash region (02800000) and see what I intended to
be put there. (Yes, Xreset is at 02800100, and _start is
at 02802000).
> Do an mdi at 0x02800100 to see if your code is properly getting
> programmed. I've got a feeling that I might know what's going on.
Good, cause I sure don't. :)
One other point - I think I've determined that the
debug port interrupt *is* being caused by some sort
of timeout (watchdog perhaps?). I looked a bit more
at the Motorola Init860.s and after setting up
SYPCR early enough, I don't seem to be getting that
interrupt any more. I only managed to try that once
last night before needing to get to bed, and haven't
had a chance to look at it yet today. Later tonight
I'll look again and see what I can see...
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
[not found] ` <3921B844.572E3C63@charter.net>
@ 2000-05-17 2:31 ` Dan A. Dickey
2000-05-17 19:08 ` Richard Hendricks
0 siblings, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-17 2:31 UTC (permalink / raw)
To: Nicolas-Peter Pohland; +Cc: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> Nicolas-Peter Pohland wrote:
> >
> > Did you try "rms der 0" (assuming you have the ADI board and MPC8bug SW)
>
> Nope, haven't tried that. I'll look at it later tonight; thanks
> for the tip.
Good! Fantastic tip.
This helps tremendously, especially in the fact that now I can
actually boot and run the kernel on my fads... while the ADI &
mpc8bug are connected. Before that, I would always get the
InstructionTLBMiss exception - and of course, mpc8bug didn't
really know anything about the address.
Also, I'm also now running in "stand alone" mode - with the
ADI & mpc8bug disconnected. Straight from the flash.
For me, this is great news. I know that most of you don't
give a hoot! :)
So, I'm attributing this recent success to:
A) Setting SYPCR in the rom code fairly early on.
B) Issuing a "rms der 0" to mpc8bug when it is connected.
I'm a happy camper at the moment. Mostly. :)
I just need to get my regular system setup to allow bootp and
host an nfs root for the fads.
Also, I just noticed - the kernel couldn't mount root, so it's
doing its "Rebooting in 180 seconds.." act. However, about
all I'm seeing after that is a:
<0>Kernel panic: Kernel Mode Software FPU Emulation
and then the duo is repeating every 180 seconds...
Not quite what I call a reboot. I would think it would at
least manage to restart the rom initialization code.
Anyways, thats relatively minor...
have a good night!
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-17 2:31 ` Dan A. Dickey
@ 2000-05-17 19:08 ` Richard Hendricks
2000-05-18 3:20 ` Dan Malek
2000-05-18 3:20 ` Dan A. Dickey
0 siblings, 2 replies; 22+ messages in thread
From: Richard Hendricks @ 2000-05-17 19:08 UTC (permalink / raw)
To: Dan A. Dickey; +Cc: Nicolas-Peter Pohland, linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> "Dan A. Dickey" wrote:
> >
> > Nicolas-Peter Pohland wrote:
> > >
> > > Did you try "rms der 0" (assuming you have the ADI board and MPC8bug SW)
> >
> > Nope, haven't tried that. I'll look at it later tonight; thanks
> > for the tip.
>
> Good! Fantastic tip.
> This helps tremendously, especially in the fact that now I can
> actually boot and run the kernel on my fads... while the ADI &
> mpc8bug are connected. Before that, I would always get the
> InstructionTLBMiss exception - and of course, mpc8bug didn't
> really know anything about the address.
>
> Also, I'm also now running in "stand alone" mode - with the
> ADI & mpc8bug disconnected. Straight from the flash.
>
> For me, this is great news. I know that most of you don't
> give a hoot! :)
Au Contraire, I care very much, being the MPC823 support body! :)
> So, I'm attributing this recent success to:
> A) Setting SYPCR in the rom code fairly early on.
> B) Issuing a "rms der 0" to mpc8bug when it is connected.
Interesting. So clearing the SYPCR early in the ROM code is what
was preventing you from getting the code to run stand-alone? Kinda
odd, considering the initial value of the watchdog is very long,
and you were having problems getting your Aux LED to turn on
right at the very beginning.
> I'm a happy camper at the moment. Mostly. :)
> I just need to get my regular system setup to allow bootp and
> host an nfs root for the fads.
> Also, I just noticed - the kernel couldn't mount root, so it's
> doing its "Rebooting in 180 seconds.." act. However, about
> all I'm seeing after that is a:
> <0>Kernel panic: Kernel Mode Software FPU Emulation
> and then the duo is repeating every 180 seconds...
> Not quite what I call a reboot. I would think it would at
> least manage to restart the rom initialization code.
> Anyways, thats relatively minor...
> have a good night!
> -Dan
>
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-17 19:08 ` Richard Hendricks
@ 2000-05-18 3:20 ` Dan Malek
2000-05-18 3:22 ` Dan A. Dickey
2000-05-18 3:20 ` Dan A. Dickey
1 sibling, 1 reply; 22+ messages in thread
From: Dan Malek @ 2000-05-18 3:20 UTC (permalink / raw)
To: Richard Hendricks
Cc: Dan A. Dickey, Nicolas-Peter Pohland,
linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
> Interesting. So clearing the SYPCR early in the ROM code is what
> was preventing you from getting the code to run stand-alone?
Oh, yes. Clearing SYPCR is a very bad thing. You end up with counter
values set to zero and immediately time out. It seems a little strange,
as you have also cleared the enable flags. I am sure someone at SPS
could explain the transistors flipping inside the part to make this
happen.
-- Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-17 19:08 ` Richard Hendricks
2000-05-18 3:20 ` Dan Malek
@ 2000-05-18 3:20 ` Dan A. Dickey
2000-05-18 16:15 ` Richard Hendricks
1 sibling, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-18 3:20 UTC (permalink / raw)
To: Richard Hendricks
Cc: Nicolas-Peter Pohland, linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
>
> "Dan A. Dickey" wrote:
...
> > So, I'm attributing this recent success to:
> > A) Setting SYPCR in the rom code fairly early on.
> > B) Issuing a "rms der 0" to mpc8bug when it is connected.
>
> Interesting. So clearing the SYPCR early in the ROM code is what
> was preventing you from getting the code to run stand-alone? Kinda
> odd, considering the initial value of the watchdog is very long,
> and you were having problems getting your Aux LED to turn on
> right at the very beginning.
I believe that was at least a goodly portion of it.
It is interesting to note that the Aux LED still doesn't
blink unless the ADI & mpc8bug are connected.
Stand alone - no blinking light. I'm going to
attribute this for the time being to the UPM not
being initialized - or some piece of hardware.
In any case, I was trying to use the Aux LED as
an indicator of how far the cpu got through the
code. Getting to the point of an 8xxrom prompt
at which I can enter 'bootz', hit C/R, and see
linux boot up was enough for me to yank the assembly
version of the Aux LED blinking code.
I also think it was the delays I put in between
turning the light on/off that caused it to take too
long and for the watchdog to bite.
I might add that doing the "rms der 0" helped tremendously
as well. I can now leave the ADI & mpc8bug connected
(for flashing new code) - but still allow linux to load
& start. It doesn't without doing that (even though
8xxrom sets DER to 0!).
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-18 3:20 ` Dan Malek
@ 2000-05-18 3:22 ` Dan A. Dickey
0 siblings, 0 replies; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-18 3:22 UTC (permalink / raw)
To: Dan Malek
Cc: Richard Hendricks, Nicolas-Peter Pohland,
linuxppc-embedded@lists.linuxppc.org
Dan Malek wrote:
>
> Richard Hendricks wrote:
>
> > Interesting. So clearing the SYPCR early in the ROM code is what
> > was preventing you from getting the code to run stand-alone?
>
> Oh, yes. Clearing SYPCR is a very bad thing. You end up with counter
> values set to zero and immediately time out. It seems a little strange,
> as you have also cleared the enable flags. I am sure someone at SPS
> could explain the transistors flipping inside the part to make this
> happen.
Ok ok...not *clearing* SYPCR. :)
Just setting it to 0xFFFFFF88.
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-18 3:20 ` Dan A. Dickey
@ 2000-05-18 16:15 ` Richard Hendricks
2000-05-19 11:12 ` Dan A. Dickey
0 siblings, 1 reply; 22+ messages in thread
From: Richard Hendricks @ 2000-05-18 16:15 UTC (permalink / raw)
To: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> Richard Hendricks wrote:
> >
> > "Dan A. Dickey" wrote:
> ...
> > > So, I'm attributing this recent success to:
> > > A) Setting SYPCR in the rom code fairly early on.
> > > B) Issuing a "rms der 0" to mpc8bug when it is connected.
> >
> > Interesting. So clearing the SYPCR early in the ROM code is what
> > was preventing you from getting the code to run stand-alone? Kinda
> > odd, considering the initial value of the watchdog is very long,
> > and you were having problems getting your Aux LED to turn on
> > right at the very beginning.
>
> I believe that was at least a goodly portion of it.
> It is interesting to note that the Aux LED still doesn't
> blink unless the ADI & mpc8bug are connected.
> Stand alone - no blinking light.
Well that's just plain odd. If for some reason you couldn't
access the Aux LED, then you shouldn't be able to activate
any of the other stuff. Something very bizarre is happening. :)
Have you tried activating the LED from much later in your code?
> I'm going to
> attribute this for the time being to the UPM not
> being initialized - or some piece of hardware.
> In any case, I was trying to use the Aux LED as
> an indicator of how far the cpu got through the
> code. Getting to the point of an 8xxrom prompt
> at which I can enter 'bootz', hit C/R, and see
> linux boot up was enough for me to yank the assembly
> version of the Aux LED blinking code.
>
> I also think it was the delays I put in between
> turning the light on/off that caused it to take too
> long and for the watchdog to bite.
>
> I might add that doing the "rms der 0" helped tremendously
> as well. I can now leave the ADI & mpc8bug connected
> (for flashing new code) - but still allow linux to load
> & start. It doesn't without doing that (even though
> 8xxrom sets DER to 0!).
Um, that's documented so I take no blame for it. :)
See page 20-41. If you have debug mode enabled, and
are not currently IN debug mode (ie, MPC8bug is connected,
but you are running your code), then a write to the
DP registers is ignored.
What I do to download programs to MPC8bug is:
Flash the S-Records
Just download the ELF file symbols (load blah :js) for debug
Set the DER to something reasonable like 0xfdc7400f
(I'm very lazy about this, I added a "setder" command to .mpctcl.cfg
at the very end. Looks like:
a setder rms der 0xfdc7400f
Laziness is the mother of invention!)
Then I unload the PLPRCR and set the MF. Sometimes MPC8bug gets
lost when the CPU changes clock frequencies, this gets around that.
> -Dan
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-18 16:15 ` Richard Hendricks
@ 2000-05-19 11:12 ` Dan A. Dickey
2000-05-19 15:01 ` Richard Hendricks
0 siblings, 1 reply; 22+ messages in thread
From: Dan A. Dickey @ 2000-05-19 11:12 UTC (permalink / raw)
To: Richard Hendricks; +Cc: linuxppc-embedded@lists.linuxppc.org
Richard Hendricks wrote:
>
> "Dan A. Dickey" wrote:
> >
> > Richard Hendricks wrote:
> > >
> > > "Dan A. Dickey" wrote:
> > ...
> > > > So, I'm attributing this recent success to:
> > > > A) Setting SYPCR in the rom code fairly early on.
> > > > B) Issuing a "rms der 0" to mpc8bug when it is connected.
> > >
> > > Interesting. So clearing the SYPCR early in the ROM code is what
> > > was preventing you from getting the code to run stand-alone? Kinda
> > > odd, considering the initial value of the watchdog is very long,
> > > and you were having problems getting your Aux LED to turn on
> > > right at the very beginning.
> >
> > I believe that was at least a goodly portion of it.
> > It is interesting to note that the Aux LED still doesn't
> > blink unless the ADI & mpc8bug are connected.
> > Stand alone - no blinking light.
>
> Well that's just plain odd. If for some reason you couldn't
> access the Aux LED, then you shouldn't be able to activate
> any of the other stuff. Something very bizarre is happening. :)
> Have you tried activating the LED from much later in your code?
Yes, works just fine.
> > I'm going to
> > attribute this for the time being to the UPM not
> > being initialized - or some piece of hardware.
> > In any case, I was trying to use the Aux LED as
> > an indicator of how far the cpu got through the
> > code. Getting to the point of an 8xxrom prompt
> > at which I can enter 'bootz', hit C/R, and see
> > linux boot up was enough for me to yank the assembly
> > version of the Aux LED blinking code.
> >
> > I also think it was the delays I put in between
> > turning the light on/off that caused it to take too
> > long and for the watchdog to bite.
> >
> > I might add that doing the "rms der 0" helped tremendously
> > as well. I can now leave the ADI & mpc8bug connected
> > (for flashing new code) - but still allow linux to load
> > & start. It doesn't without doing that (even though
> > 8xxrom sets DER to 0!).
>
> Um, that's documented so I take no blame for it. :)
> See page 20-41. If you have debug mode enabled, and
> are not currently IN debug mode (ie, MPC8bug is connected,
> but you are running your code), then a write to the
> DP registers is ignored.
Page 20-41 of what? There's nothing like that in my
850 users manual, and the mpc8bug users manual doesn't
come close to having 20 chapters.
> What I do to download programs to MPC8bug is:
> Flash the S-Records
> Just download the ELF file symbols (load blah :js) for debug
> Set the DER to something reasonable like 0xfdc7400f
> (I'm very lazy about this, I added a "setder" command to .mpctcl.cfg
> at the very end. Looks like:
> a setder rms der 0xfdc7400f
> Laziness is the mother of invention!)
> Then I unload the PLPRCR and set the MF. Sometimes MPC8bug gets
> lost when the CPU changes clock frequencies, this gets around that.
Sounds good, I'll try this.
Though, at the moment I don't have any idea what the
PLPRCR or MF are. :) I'll read up on them.
-Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: How to get rom code to go on FADS?
2000-05-19 11:12 ` Dan A. Dickey
@ 2000-05-19 15:01 ` Richard Hendricks
0 siblings, 0 replies; 22+ messages in thread
From: Richard Hendricks @ 2000-05-19 15:01 UTC (permalink / raw)
To: linuxppc-embedded@lists.linuxppc.org
"Dan A. Dickey" wrote:
>
> > Um, that's documented so I take no blame for it. :)
> > See page 20-41. If you have debug mode enabled, and
> > are not currently IN debug mode (ie, MPC8bug is connected,
> > but you are running your code), then a write to the
> > DP registers is ignored.
>
> Page 20-41 of what? There's nothing like that in my
> 850 users manual, and the mpc8bug users manual doesn't
> come close to having 20 chapters.
>
Oooooh, you're one of those Netcomm customers. :) I currently
support the MPC823/MPC823e. They're very similar chips. Our
manual is slightly different from the Netcomm manual. The
chapter in question is the Development Capabilities chapter.
I don't have an MPC850 manual handy. Besides, ours is much
better. :)
BTW, the final version of the MPC823/MPC823e manual is now
availible on our website. A printed version should be availible
at the LDC in a few weeks. The Powers That Be are making us change
the cover from the spiffy one we have to a black Digital DNA one.
Feh.
--
MPC823 Applications Engineering Development
Get help from other MPC823 customers on the
comp.sys.powerpc.tech newsgroup!
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2000-05-19 15:01 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-05-11 21:11 How to get rom code to go on FADS? Dan A. Dickey
2000-05-12 16:33 ` Richard Hendricks
2000-05-12 17:03 ` Dan A. Dickey
2000-05-12 18:57 ` Richard Hendricks
2000-05-13 13:54 ` Dan A. Dickey
2000-05-15 15:54 ` Richard Hendricks
2000-05-15 17:00 ` Dan A. Dickey
2000-05-15 17:43 ` Dan A. Dickey
2000-05-15 18:25 ` Dan A. Dickey
2000-05-16 14:50 ` Richard Hendricks
2000-05-16 21:03 ` Dan A. Dickey
2000-05-16 1:55 ` Dan A. Dickey
2000-05-16 14:45 ` Richard Hendricks
[not found] ` <3920ED16.A2D26629@snom.de>
[not found] ` <3921B844.572E3C63@charter.net>
2000-05-17 2:31 ` Dan A. Dickey
2000-05-17 19:08 ` Richard Hendricks
2000-05-18 3:20 ` Dan Malek
2000-05-18 3:22 ` Dan A. Dickey
2000-05-18 3:20 ` Dan A. Dickey
2000-05-18 16:15 ` Richard Hendricks
2000-05-19 11:12 ` Dan A. Dickey
2000-05-19 15:01 ` Richard Hendricks
2000-05-13 5:18 ` duncanp
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 NNTP newsgroup(s).