module-wide config parameters
[
'l1PMode',
{
desc: "L1P Cache",
base: 0x00E00000,
map: [
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
],
defaultValue: "32k",
memorySection: "L1PSRAM"
}
],
[
'l1DMode',
{
desc: "L1D Cache",
base: 0x00F00000,
map: [
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
],
defaultValue: "32k",
memorySection: "L1DSRAM"
}
],
[
'l2Mode',
{
desc: "L2 Cache",
base: 0x00800000,
map: [
[
"0k",
0x0000
],
[
"32k",
0x8000
],
[
"64k",
0x10000
],
[
"128k",
0x020000
],
[
"256k",
0x040000
],
[
"512k",
0x080000
],
[
"1024k",
0x100000
]
],
defaultValue: "0k",
memorySection: "L2SRAM"
}
]
];
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
];
[
"0k",
0x000000
],
[
"32k",
0x008000
],
[
"64k",
0x010000
],
[
"128k",
0x020000
],
[
"256k",
0x040000
],
[
"512k",
0x080000
],
[
"1024k",
0x100000
]
];
instance:
per-instance config parameters
[
"L2SRAM",
{
comment: "1MB L2 SRAM/CACHE",
name: "L2SRAM",
base: 0x00800000,
len: 0x00100000,
space: "code/data",
access: "RWX"
}
],
[
"L1PSRAM",
{
comment: "32KB RAM/CACHE L1 program memory",
name: "L1PSRAM",
base: 0x00E00000,
len: 0x00008000,
space: "code",
access: "RWX"
}
],
[
"L1DSRAM",
{
comment: "32KB RAM/CACHE L1 data memory",
name: "L1DSRAM",
base: 0x00F00000,
len: 0x00008000,
space: "data",
access: "RW"
}
],
[
"MSMCSRAM",
{
comment: "1MB MSMC SRAM",
name: "MSMCSRAM",
base: 0x0C000000,
len: 0x00100000,
space: "code/data",
access: "RWX"
}
]
];
per-instance creation
per-instance functions
}
config ITMS320C6655.cacheMap // module-wide |
|
[
'l1PMode',
{
desc: "L1P Cache",
base: 0x00E00000,
map: [
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
],
defaultValue: "32k",
memorySection: "L1PSRAM"
}
],
[
'l1DMode',
{
desc: "L1D Cache",
base: 0x00F00000,
map: [
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
],
defaultValue: "32k",
memorySection: "L1DSRAM"
}
],
[
'l2Mode',
{
desc: "L2 Cache",
base: 0x00800000,
map: [
[
"0k",
0x0000
],
[
"32k",
0x8000
],
[
"64k",
0x10000
],
[
"128k",
0x020000
],
[
"256k",
0x040000
],
[
"512k",
0x080000
],
[
"1024k",
0x100000
]
],
defaultValue: "0k",
memorySection: "L2SRAM"
}
]
];
config ITMS320C6655.cacheSizeL1 // module-wide |
|
config Long cacheSizeL1[string] = [
[
"0k",
0x0000
],
[
"4k",
0x1000
],
[
"8k",
0x2000
],
[
"16k",
0x4000
],
[
"32k",
0x8000
]
];
config ITMS320C6655.cacheSizeL2 // module-wide |
|
config Long cacheSizeL2[string] = [
[
"0k",
0x000000
],
[
"32k",
0x008000
],
[
"64k",
0x010000
],
[
"128k",
0x020000
],
[
"256k",
0x040000
],
[
"512k",
0x080000
],
[
"1024k",
0x100000
]
];
config ITMS320C6655.cpuCore // instance |
|
A string identifying the CPU Core
override config String cpuCore = "6600";
DETAILS
This uniquely identifies the instruction set that the CPU can
decode and execute.
config ITMS320C6655.cpuCoreRevision // instance |
|
A string that uniquely identifies a revision of the core
override config String cpuCoreRevision = "1.0";
config ITMS320C6655.dataWordSize // instance |
|
The size of an int on the target in 8-bit bytes
override config Int dataWordSize = 4;
config ITMS320C6655.deviceHeader // instance |
|
The optional header file that define device specific constants and
structures
config String deviceHeader;
config ITMS320C6655.memMap // instance |
|
The default memory map for this device
[
"L2SRAM",
{
comment: "1MB L2 SRAM/CACHE",
name: "L2SRAM",
base: 0x00800000,
len: 0x00100000,
space: "code/data",
access: "RWX"
}
],
[
"L1PSRAM",
{
comment: "32KB RAM/CACHE L1 program memory",
name: "L1PSRAM",
base: 0x00E00000,
len: 0x00008000,
space: "code",
access: "RWX"
}
],
[
"L1DSRAM",
{
comment: "32KB RAM/CACHE L1 data memory",
name: "L1DSRAM",
base: 0x00F00000,
len: 0x00008000,
space: "data",
access: "RW"
}
],
[
"MSMCSRAM",
{
comment: "1MB MSMC SRAM",
name: "MSMCSRAM",
base: 0x0C000000,
len: 0x00100000,
space: "code/data",
access: "RWX"
}
]
];
config ITMS320C6655.minDataUnitSize // instance |
|
The minimum addressable data unit size in 8-bit bytes
override config Int minDataUnitSize = 1;
config ITMS320C6655.minProgUnitSize // instance |
|
The minimum addressable program unit size in 8-bit bytes
override config Int minProgUnitSize = 1;
config ITMS320C6655.peripherals // instance |
|
A map of peripherals available on the device
Instance Creation |
|
create(String revision);
// Create an instance-object
ARGUMENTS
revision
a string that identifies revision of the CPU to be
created.
DETAILS
A "data sheet" for a CPU allows one to get specific attributes
for a CPU programatically; e.g., the memory map of the CPU.
Notice that we don't specify CPU registers when we create a
a data-sheet; registers are provided as necessary to the other
functions defined in this interface. This allows one to more easily
get memory maps for several different setting of the registers,
for example.
ITMS320C6655.getMemoryMap() // instance |
|
Get the memory map that corresponds to the values of the specified
registers
function getMemoryMap(registers);
ARGUMENTS
registers
a hash of named registers to values at the time
an executable is to be loaded (for example)
DETAILS
If a register is not specified and this register can affect the
memory map, the register is assumed to be set to its reset
value (the value of the register immediately after a CPU reset).
RETURNS
Returns an array of
xdc.platform.IPlatform.Memory
objects that represent the memory visible to an
executable running on the CPU.
ITMS320C6655.getRegisterSet() // instance |
|
The set of valid register names for this CPU
function getRegisterSet();
DETAILS
This function returns the complete set of register names that may be
passed to the
getMemoryMap() function. This function is
only used to enable one to write a "requires contract" for the
getMemoryMap() function.
RETURNS
Returns an array of valid register names (strings) for
this device; only names from this array are valid keys
for the registers argument to
getMemoryMap().