blob: 0cd163d1cdf3a30c68efdeb61693d2a4b5e2f920 [file] [log] [blame]
requires xdc.platform [1,0,1];
/*!
* ======== xdc.platform.generic ========
* Platform package for the generic platform.
*
* This package implements the interfaces (xdc.platform.IPlatform)
* necessary to build and run executables on a "generic" platform; a
* platform specified by:
* @p(blist)
* - device name; e.g., "TMS320C2812"
* - catalog name; the name of a package containing the device named above
* - clock rate; the clock rate in MHz of the CPU
* - external memory map; an array of memory blocks external to the device
* @p
* For a complate list of parameters that can be specified when creating a
* platform instance see the instance configuration parameters specified
* by `{@link xdc.platform.generic.Platform}`. This list, of course,
* includes all the instance config parameters specified by the
* `{@link xdc.platform.IPlatform}` interface.
*
* @a(Throws)
* `XDCException` exceptions are thrown for fatal errors. The following error
* codes are reported in the exception message:
* @p(dlist)
* - `xdc.platform.generic.LINK_TEMPLATE_ERROR`
* This error is raised when this platform cannot found the default
* linker command template `linkcmd.xdt` in the build target's
* package. When a target does not contain this file, the config
* parameter `{@link xdc.cfg.Program#linkTemplate}` must be set.
* @p
*
* @a(EXAMPLES)
* Example 1: Suppose you need to create an application for a HW platform
* that uses the TMS320C2812 running at 150 MHz. You can use this package
* (in lieu of one specifically created for the HW platform) by defining a
* named instance of this package's Platform module. Add the following
* statements to your `config.bld` file to add the platform instance named
* "xdc.platform.generic:C28".
* @p(code)
* Build.platformTable["xdc.platform.generic:C28"] = {
* clockRate: 150,
* catalogName: "ti.catalog.c2800",
* deviceName: "TMS320C2812"
* };
* @p
* With this name defined, it is now possible to configure an application
* using the platform instance name "xdc.platform.generic:C28". For example,
* if you are using `{@link xdc.tools.configuro}` to configure your
* application, the string "xdc.platform.generic:C28" can now be used to
* identify your platform:
* @p(code)
* xs xdc.tools.configuro -b config.bld -p xdc.platform.generic:C28 ...
* @p
*
* @p(html)
* <hr/>
* @p
*
* Example 2: The following example illustrates how to specify a platform
* instance with memory regions external to the specified device. In this
* case, we define a platform using a TMS320C6416 running at 600 MHz on a
* board with two external SDRAM memory blocks.
* @p(code)
* Build.platformTable["xdc.platform.generic:C64"] = {
* clockRate: 600,
* catalogName: "ti.catalog.c6000",
* deviceName: "TMS320C6416",
* externalMemoryMap : [
* ["SDRAM1", {
* name: "SDRAM1",
* base: 0x80000000, len: 0x1000000, space: "code/data"
* }],
* ["SDRAM2", {
* name: "SDRAM2",
* base: 0x90000000, len: 0x1000000, space: "code/data"
* }],
* ]
* }
* @p
*
* The `externalMemoryMap` attribute is a map of string names to
* `{@link xdc.platform.IPlatform#Memory}` structures.
*
* @see xdc.platform.generic.Platform
* @see xdc.bld.BuildEnvironment#platformTable
* @see xdc.platform.IPlatform
*/
package xdc.platform.generic [1, 0, 0] {
module Platform;
}