Microprocessor Software Specification (MSS)
MSS Overview
The MSS file contains directives for customizing operating systems (OSs), libraries, and drivers.
MSS Format
An MSS file is case insensitive and any reference to a file name or instance name in the MSS file is also case sensitive. Comments can be specified anywhere in the file. A pound (#) character denotes the beginning of a comment, and all characters after it, right up to the end of the line, are ignored. All white spaces are also ignored and carriage returns act as sentence delimiters.
The keywords that are used in an MSS file are as follows:
- BEGIN
-
The keyword begins a driver, processor, or file system definition block. BEGIN should be followed by the driver, processor, or filesys keywords.
- END
- This keyword signifies the end of a definition block.
- PARAMETER
-
The MSS file has a simple name = value format for statements. The PARAMETER keyword is required before NAME and VALUE pairs. The format for assigning a value to a parameter is parameter name = value. If the parameter is within a BEGIN-END block, it is a local assignment; otherwise it is a global (system level) assignment.
Requirements:
The syntax of various files that the embedded development tools use is described by the Platform Specification Format (PSF). The current PSF version is 2.1.0. The MSS file should also contain version information in the form of parameter Version = 2.1.0, which represents the PSF version 2.1.0.
MSS Example:
An example MSS file follows:
parameter VERSION = 2.1.0
BEGIN OS
parameter PROC_INSTANCE = my_microblaze
parameter OS_NAME = standalone
parameter OS_VER = 1.0
parameter STDIN = my_uartlite_1
parameter STDOUT = my_uartlite_1
END
BEGIN PROCESSOR
parameter HW_INSTANCE = my_microblaze
parameter DRIVER_NAME = cpu
parameter DRIVER_VER = 1.0
parameter XMDSTUB_PERIPHERAL = my_jtag
END
BEGIN DRIVER
parameter HW_INSTANCE = my_intc
parameter DRIVER_NAME = intc
parameter DRIVER_VER = 1.0
END
BEGIN DRIVER
parameter HW_INSTANCE = my_uartlite_1
parameter DRIVER_VER = 1.0
parameter DRIVER_NAME = uartlite
END
BEGIN DRIVER
parameter HW_INSTANCE = my_uartlite_2
parameter DRIVER_VER = 1.0
parameter DRIVER_NAME = uartlite
END
BEGIN DRIVER
parameter HW_INSTANCE = my_timebase_wdt
parameter DRIVER_VER = 1.0
parameter DRIVER_NAME = timebase_wdt
END
BEGIN LIBRARY
parameter LIBRARY_NAME = XilMfs
parameter LIBRARY_VER = 1.0
parameter NUMBYTES = 100000
parameter BASE_ADDRESS = 0x80f00000
END
Global Parameters
These parameters are system-specific parameters and do not relate to a particular driver, file system, or library.
PSF Version
This option specifies the PSF version of the MSS file. This option is mandatory, and is formatted as:
parameter VERSION =
2.1.0Instance-Specific Parameters
OS, Driver, Library, and Processor Block Parameters
The following list shows the parameters that can be used in OS, driver, library, and processor blocks.
PROC_INSTANCE
This option is required for the OS associated with a processor instances specified in the hardware database, and is formatted as:
parameter PROC_INSTANCE = <instance_name>
All operating systems require processor instances to be associated with them. The instance name that is given must match the name specified in the hardware database.
HW_INSTANCE
This option is required for drivers associated with peripheral instances specified in the hardware database and is formatted as:
parameter HW_INSTANCE = <instance_name>
All drivers in software require instances to be associated with the drivers. Even a processor definition block should refer to the processor instance. The instance name that is given must match the name specified in the BD file.
OS_NAME
This option is needed for processor instances that have OSs associated with them and is formatted as:
parameter OS_NAME = standalone
OS_VER
The OS version is set using the OSVER option and is formatted as:
parameter OS_VER = 1.0
This version is specified as x.y, where x and y are digits. This is translated to the OS directory searched as follows:
OS_NAME_vx_y
The MLD (Microprocessor Library Definition) files needed for each OS should be named OS_NAME.mld and should be present in a subdirectory data/ within the driver directory. Refer to Microprocessor Library Definition (MLD) for more information.
DRIVER_NAME
This option is needed for peripherals that have drivers associated with them and is formatted as:
parameter DRIVER_NAME = uartlite
Library Generator copies the driver directory specified to the OUTPUT_DIR/ processor_instance_name/libsrc directory and compiles the drivers using makefiles provided.
DRIVER_VER
The driver version is set using the DRIVER_VER option, and is formatted as:
parameter DRIVER_VER = 1.0
This version is specified as x.y, where x and y are digits. This is translated to the driver directory searched as follows:
DRIVER_NAME_vx_y
The MDD (Microprocessor Driver Definition) files needed for each driver should be named DRIVER_NAME_v2_1_0.mdd and should be present in a subdirectory data/ within the driver directory. Refer to Microprocessor Driver Definition (MDD) for more information.
LIBRARY_NAME
This option is needed for libraries, and is formatted as:
parameter LIBRARY_NAME = xilmfs
The tool copies the library directory specified in the OUTPUT_DIR/processor_instance_name/libsrc directory and compiles the libraries using makefiles provided.
LIBRARY_VER
The library version is set using the LIBRARY_VER option and is formatted as:
parameter LIBRARY_VER = 1.0
This version is specified as x.y, where x and y are digits. This is translated to the library directory searched by the tool as follows:
LIBRARY_NAME_vx_y
The MLD (Microprocessor Library Definition) files needed for each library should be named LIBRARY_NAME.mld and should be present in a subdirectory data/ within the library directory. Refer to Microprocessor Library Definition (MLD) for more information.
MLD/MDD Specific Parameters
Parameters specified in the MDD/MLD file can be overwritten in the MSS file and formatted as:
parameter PARAM_NAME = PARAM_VALUE
See Microprocessor Library Definition (MLD)) and Microprocessor Driver Definition (MDD) for more information.
OS—Specific Specific Parameters
The following list identifies all the parameters that can be specified only in an OS definition block.
STDIN
Identify the standard input device with the STDIN option, which is formatted as:
parameter STDIN = instance_name
STDOUT
Identify the standard output device with the STDOUT option, which is formatted as:
parameter STDOUT = instance_name
Example: MSS Snippet Showing OS options
BEGIN OS
parameter PROC_INSTANCE = my_microblaze
parameter OS_NAME = standalone
parameter OS_VER = 1.0
parameter STDIN = my_uartlite_1
parameter STDOUT = my_uartlite_1
END
Processor—Specific Specific Parameters
Following is a list of all of the parameters that can be specified only in a processor definition block.
XMDSTUB_PERIPHERAL
The peripheral that is used to handle the XMDStub should be specified in the XMDSTUB_PERIPHERAL option. This is useful for the MicroBlaze™ processor only, and is formatted as follows:
parameter XMDSTUB_PERIPHERAL = instance_name
COMPILER
This option specifies the compiler used for compiling drivers and libraries.
The compiler defaults to or powerpc-eabi-gcc depending on whether
the drivers are part of the MicroBlaze processor
or PowerPC processor instance. Any other compatible compiler can be specified as an
option, and should be formatted as follows:
This example denotes the Diab compiler as the compiler to be used for drivers and libraries.
ARCHIVER
This option specifies the utility to be used for archiving object files into
libraries. The archiver defaults to mb-ar or
powerpc-eabi-ar depending on whether or not the drivers are
part of the MicroBlaze or PowerPC processor
instance. Any other compatible archiver can be specified as an option, and should be
formatted as follows:
parameter ARCHIVER = ar
parameter COMPILER = dcc
This example denotes the archiver ar to be used for drivers and libraries.
COMPILER_FLAGS
This option specifies compiler flags to be used for compiling drivers and libraries. If the option is not specified, the tool automatically uses platform and processor-specific options. This option should not be specified in the MSS file if the standard compilers and archivers are used.
The COMPILER_FLAGS option can be defined in the MSS if there is a need for custom compiler flags that override generated flags. The EXTRA_COMPILER_FLAGS option is recommended if compiler flags must be appended to the ones already generated.
Format this option as follows:
parameter COMPILER_FLAGS = ““
EXTRA_COMPILER_FLAGS
This option can be used whenever custom compiler flags need to be used in addition to the automatically generated compiler flags, and should be formatted as follows:
parameter EXTRA_COMPILER_FLAGS = -g
This example specifies that the drivers and libraries must be compiled with debugging symbols in addition to the generated COMPILER_FLAGS.
Example: MSS Snippet Showing Processor options
BEGIN PROCESSOR
parameter HW_INSTANCE = my_microblaze
parameter DRIVER_NAME = cpu
parameter DRIVER_VER = 1.00.a
parameter DEFAULT_INIT = xmdstub
parameter XMDSTUB_PERIPHERAL = my_jtag
parameter STDIN = my_uartlite_1
parameter STDOUT = my_uartlite_1
parameter COMPILER = mb-gcc
parameter ARCHIVER = mb-ar
parameter EXTRA_COMPILER_FLAGS = -g -O0
parameter OS = standalone
END