Mips32MaltaLinuxModifyingPlatformInstructions
Modifying the MIPS Malta Platform
A pre-built executable of the MIPS32 Malta Platform is provided as a demonstration of OVP, as described on
Mips32MaltaLinuxBootingInstructions.
All the source code of the MIPS32 Malta Platform, the MIPS32 processor and the peripherals are provided as open source. This allows the user to re-build the same platform executable and library containing processors and peripherals. It further enables the user to modify existing peripherals and/or easily add new peripherals into the MIPS Malta Platform.
The source code for models is provided as part of the OVPsim installation. Once installed the source library can be found at
IMPERAS_HOME/ImperasLib/source. This is structured into a
Vendor/Library/Name/Version (
VLNV) library structure.
The vendor names generally follow the rule of
.ovpworld.org. For example a 16450 UART model from national semiconductors is found at national.ovpworld.org/peripheral/16450/1.0
Pre-Requsites for Platform Recompilation
OVP Simulator
The OVP simulator, OVPsim, provides the high performance simulator at the core of OVP. This download includes a model source code library, a pre-compiled binary library containing all the components used in the MIPS32 Malta Platform and the platform executable itself.
| [for Windows] Main OVP Download including OVPsim Simulator and Self Contained Examples of all CPU Models using The (174.47 MB) Binary of the simulator, headers, examples of creating processors, peripherals and platforms, and running. Includes full documentation. Includes many models as source code. Includes single and multicore examples running fibonacci, linpack, dhrystone etc. |
| [for Linux] Main OVP Download including OVPsim Simulator and Self Contained Examples of all CPU Models using The (241.26 MB) Binary of the simulator, headers, examples of creating processors, peripherals and platforms, and running. Includes full documentation. Includes many models as source code. Includes single and multicore examples running fibonacci, linpack, dhrystone etc. |
OVP PSE Toolchain
Models of peripherals use a Peripheral Simulation Engine (PSE). It is, therefore, required to download and install the toolchain to allow compilation of peripheral models.
| [for Windows] OVP PSE Tools (70.58 MB) GCC and GDB tools for Peripheral Simulation Engines (PSEs) for behavioral modeling. |
| [for Linux] OVP PSE Tools (88.18 MB) GCC and GDB tools for Peripheral Simulation Engines (PSEs) for behavioral modeling. |
Installing MSYS / MINGW Environment for Windows Hosts
The compilation environment that is recommended for use on a Windows system uses MSYS and MINGW. Obtaining and installing the MSYS and MINGW environmemnt is described in
Imperas_Installation_and_Getting_Started.pdf
Recompiling Source Code
The source code for all of the library components is now part of the installation package OVPsim. The following is a basic guide to re-compiling source code that has been modified.
When modifying any model source code it is recommended to take a copy of the model source and create your own 'user' source library following the same structure. This will reduce the chance of you overwriting all your source code changes when installing a new version of OVPsim.
The following instructions are applicable when compiling an individual model from its source code and should be executed from the model source directory.
Compile into System Library
WARNING: This will overwrite binary models downloaded and installed as part of OVPsim
In an MSYS or bash shell go into the directory containing the downloaded source. At the command line type
>
make VLNVSYSTEM=1
This will compile into the system VLNV library.
Compile into Local Library
In an MSYS or bash shell go into the directory containing the downloaded source. At the command line type
>
make VLNVROOT=$(pwd)/localVLNVLib
This will compile into a local VLNV library structure called
localVLNVLib in the current working directory.
To then use the compiled components from the library by
default the environment variable IMPERAS_VLNV must be set. This can be set in the shell (and will take effect in this shell) by typing the following at the command line
>
export IMPERAS_VLNV = $(pwd)/localVLNVLib
you may just want to add this as an additional library
>
export IMPERAS_VLNV = $IMPERAS_VLNV:$(pwd)/localVLNVLib
MipsPlatforms ImperasPage