Forums

PRAM segment. What is it ?

Started by Unknown November 7, 2002
Is about from two years that I'm using 56805 microcontroller and I don't
know yet what PRAM segment is. Can anyone explan me ?
Thanks




If you are asking about "P RAM", it is the RAM that is in the Program (P) memory
space. The following is from the Linker Command File "linker.cmd" in the
directory:
...\src\dsp56805evm\nos\applications\timers\configflash
where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).

The P RAM is located as follows:

In the "MEMORY" section:

# Linker.cmd file for DSP56803EVM/DSP56805EVM
# using internal data memory only ( EX = 0, Boot Mode 0A ) #*******************************************************************************
MEMORY { .pInterruptVector (RX) : ORIGIN = 0x0000, LENGTH = 0x0086
.pFlash (RX) : ORIGIN = 0x0086, LENGTH = 0x7D7A
.pIntRAM (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
.pIntRAM_Mirror (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
.pBootFlash (RX) : ORIGIN = 0x8000, LENGTH = 0x0800
.pReserved (RX) : ORIGIN = 0x8800, LENGTH = 0x7800 In the "SECTIONS" section: #*******************************************************************************
.InitializedDataForProgramRAM : AT (ADDR(.pFlash) + 1 + SIZEOF(.pFlash) / 2)
{
# Define variables for C initialization code of Program RAM data

F_Pdata_start_addr_in_ROM = ADDR(.pFlash) + 1 + SIZEOF(.pFlash) / 2;
F_Pdata_start_addr_in_RAM = .;
_P_DATA_ADDR = .;

# SDK initialized data to be placed into Program RAM

pramdata.c (.data)
F_Pdata_ROMtoRAM_length = . - _P_DATA_ADDR;

} > .pIntRAM_Mirror

#******************************************************************************* As is shown by the above example, the "P RAM" is located at P:$7E00 to P:$7FFF
in the Program (P) memory space (for the 805 chip). The initialized data
(.data) from the SDK file "pramdata.c" is placed in this memory area. You can
see the contents of this file by looking at:
...\src\dsp56805evm\nos\config\pramdata.c
where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).

You should also know that any data in P RAM cannot be accessed directly from
your C code, you must use the SDK interface functions like memReadP16(),
memWriteP16(), etc. The function prototypes for these are located in the file:
...\src\dsp56805evm\nos\include\mempx.h
where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).

I hope this answers your question.

Regards,

Art Johnson
Senior Systems Analyst
PMC Prime Mover Controls Inc.
3600 Gilmore Way
Burnaby, B.C., Canada
V5G 4R8
Phone: 604 433-4644
FAX: 604 433-5570
Email:
http://www.pmc-controls.com
-----Original Message-----
From: [mailto:]
Sent: Thursday, November 07, 2002 6:45 AM
To:
Subject: PRAM segment. What is it ? Is about from two years that I'm using 56805 microcontroller and I don't
know yet what PRAM segment is. Can anyone explan me ?
Thanks




Art,

I'm relitivly new to DSP as well, and well, I can see that there is P
and X RAM as well as P and X FLASH. I have used microchip chips
which have P and X FLASH and X RAM. So for me, I can see how to use
them and transfer data between them all, but what is the intent (if
any). Why would you need ram space for a program, my primary
assumption is it can be used when doing say a field upgrade of P
flash.

Jacob

--- In motoroladsp@y..., "Art Johnson" <art@p...> wrote:
> If you are asking about "P RAM", it is the RAM that is in the
Program (P) memory space. The following is from the Linker Command
File "linker.cmd" in the directory:
> ...\src\dsp56805evm\nos\applications\timers\configflash
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> The P RAM is located as follows:
>
> In the "MEMORY" section:
>
> # Linker.cmd file for DSP56803EVM/DSP56805EVM
> # using internal data memory only ( EX = 0, Boot Mode
0A )
>
>
#*********************************************************************
**********
> MEMORY { > .pInterruptVector (RX) : ORIGIN = 0x0000, LENGTH = 0x0086
> .pFlash (RX) : ORIGIN = 0x0086, LENGTH = 0x7D7A
> .pIntRAM (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
> .pIntRAM_Mirror (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
> .pBootFlash (RX) : ORIGIN = 0x8000, LENGTH = 0x0800
> .pReserved (RX) : ORIGIN = 0x8800, LENGTH = 0x7800 > In the "SECTIONS" section:
#*********************************************************************
**********
> .InitializedDataForProgramRAM : AT (ADDR(.pFlash) + 1 + SIZEOF
(.pFlash) / 2)
> {
> # Define variables for C initialization code of Program RAM
data
>
> F_Pdata_start_addr_in_ROM = ADDR(.pFlash) + 1 + SIZEOF
(.pFlash) / 2;
> F_Pdata_start_addr_in_RAM = .;
> _P_DATA_ADDR = .;
>

> # SDK initialized data to be placed into Program RAM
>
> pramdata.c (.data)
> F_Pdata_ROMtoRAM_length = . - _P_DATA_ADDR;
>
> } > .pIntRAM_Mirror
>
#*********************************************************************
**********
>
>
> As is shown by the above example, the "P RAM" is located at P:$7E00
to P:$7FFF in the Program (P) memory space (for the 805 chip). The
initialized data (.data) from the SDK file "pramdata.c" is placed in
this memory area. You can see the contents of this file by looking
at:
> ...\src\dsp56805evm\nos\config\pramdata.c
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> You should also know that any data in P RAM cannot be accessed
directly from your C code, you must use the SDK interface functions
like memReadP16(), memWriteP16(), etc. The function prototypes for
these are located in the file:
> ...\src\dsp56805evm\nos\include\mempx.h
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> I hope this answers your question.
>
> Regards,
>
> Art Johnson
> Senior Systems Analyst
> PMC Prime Mover Controls Inc.
> 3600 Gilmore Way
> Burnaby, B.C., Canada
> V5G 4R8
> Phone: 604 433-4644
> FAX: 604 433-5570
> Email: art@p...
> http://www.pmc-controls.com >
> -----Original Message-----
> From: giuliano.to@q... [mailto:giuliano.to@q...]
> Sent: Thursday, November 07, 2002 6:45 AM
> To: motoroladsp@y...
> Subject: PRAM segment. What is it ? > Is about from two years that I'm using 56805 microcontroller and I
don't
> know yet what PRAM segment is. Can anyone explan me ?
> Thanks





Jacob,

We do use the P RAM in all our products here to store data that would normally
be placed in X RAM, or to have a copy of data that we have placed in X Flash.
We do this for 2 reasons:

1) In some products, it saves us from having to add an external RAM chip to get
the amount of RAM we need.

2) We copy data from X Flash to P RAM, and use it from the P RAM, so that we are
free to erase and program X Flash while our programs are in normal operation.
This is more fully described in my message "RE: [motoroladsp] Program xFlash &
interrupt problem" that I posted to this discussion group on September 19, 2002,
at about 7:05am.

Another possible use is what you mentioned, that code can be run out of P RAM
while the P Flash is being erased and programmed.

Art

PS: I am replying to your message immediately after approving it to the
discussion group. So, you may receive it _before_ you see your original message
on the discussion group!
-----Original Message-----
From: Jacob Christ [mailto:]
Sent: Thursday, November 07, 2002 9:38 AM
To:
Subject: Re: PRAM segment. What is it ? Art,

I'm relitivly new to DSP as well, and well, I can see that there is P
and X RAM as well as P and X FLASH. I have used microchip chips
which have P and X FLASH and X RAM. So for me, I can see how to use
them and transfer data between them all, but what is the intent (if
any). Why would you need ram space for a program, my primary
assumption is it can be used when doing say a field upgrade of P
flash.

Jacob

--- In motoroladsp@y..., "Art Johnson" <art@p...> wrote:
> If you are asking about "P RAM", it is the RAM that is in the
Program (P) memory space. The following is from the Linker Command
File "linker.cmd" in the directory:
> ...\src\dsp56805evm\nos\applications\timers\configflash
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> The P RAM is located as follows:
>
> In the "MEMORY" section:
>
> # Linker.cmd file for DSP56803EVM/DSP56805EVM
> # using internal data memory only ( EX = 0, Boot Mode
0A )
>
>
#*********************************************************************
**********
> MEMORY { > .pInterruptVector (RX) : ORIGIN = 0x0000, LENGTH = 0x0086
> .pFlash (RX) : ORIGIN = 0x0086, LENGTH = 0x7D7A
> .pIntRAM (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
> .pIntRAM_Mirror (RWX) : ORIGIN = 0x7E00, LENGTH = 0x0200
> .pBootFlash (RX) : ORIGIN = 0x8000, LENGTH = 0x0800
> .pReserved (RX) : ORIGIN = 0x8800, LENGTH = 0x7800 > In the "SECTIONS" section:
#*********************************************************************
**********
> .InitializedDataForProgramRAM : AT (ADDR(.pFlash) + 1 + SIZEOF
(.pFlash) / 2)
> {
> # Define variables for C initialization code of Program RAM
data
>
> F_Pdata_start_addr_in_ROM = ADDR(.pFlash) + 1 + SIZEOF
(.pFlash) / 2;
> F_Pdata_start_addr_in_RAM = .;
> _P_DATA_ADDR = .;
>

> # SDK initialized data to be placed into Program RAM
>
> pramdata.c (.data)
> F_Pdata_ROMtoRAM_length = . - _P_DATA_ADDR;
>
> } > .pIntRAM_Mirror
>
#*********************************************************************
**********
>
>
> As is shown by the above example, the "P RAM" is located at P:$7E00
to P:$7FFF in the Program (P) memory space (for the 805 chip). The
initialized data (.data) from the SDK file "pramdata.c" is placed in
this memory area. You can see the contents of this file by looking
at:
> ...\src\dsp56805evm\nos\config\pramdata.c
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> You should also know that any data in P RAM cannot be accessed
directly from your C code, you must use the SDK interface functions
like memReadP16(), memWriteP16(), etc. The function prototypes for
these are located in the file:
> ...\src\dsp56805evm\nos\include\mempx.h
> where "..." is the base directory where you installed the SDK
(C:\Development\DSP568xx\Moto_SDK in our systems here).
>
> I hope this answers your question.
>
> Regards,
>
> Art Johnson
> Senior Systems Analyst
> PMC Prime Mover Controls Inc.
> 3600 Gilmore Way
> Burnaby, B.C., Canada
> V5G 4R8
> Phone: 604 433-4644
> FAX: 604 433-5570
> Email: art@p...
> http://www.pmc-controls.com >
> -----Original Message-----
> From: giuliano.to@q... [mailto:giuliano.to@q...]
> Sent: Thursday, November 07, 2002 6:45 AM
> To: motoroladsp@y...
> Subject: PRAM segment. What is it ? > Is about from two years that I'm using 56805 microcontroller and I
don't
> know yet what PRAM segment is. Can anyone explan me ?
> Thanks