OVP Peripheral Model: MipsSmartLoaderLinux

Model Specific Information

This page provides introductory usage information for an Imperas OVP peripheral behavioral model. The page is split into sections providing specific information for this peripheral, including any ports for connecting into a platform, registers, other component parts, and configuration options and general information for peripheral modeling with Imperas OVP.


Open Source Apache 2.0


Smart peripheral creates memory initialisation for a MIPS32 based Linux kernel boot. Performs the generation of boot code at the reset vector (virtual address 0xbfc00000) of the MIPS32 processor. Loads both the linux kernel and initial ramdisk into memory and patches the boot code to jump to the kernel start. Initialises the MIPS32 registers and Linux command line.


MIPS Malta User Manual. MIPS Boot code reference.


The SmartLoaderLinux peripheral model is located in an Imperas/OVP installation at the VLNV: / peripheral / SmartLoaderLinux / 1.0.

Peripheral Instance Parameters

This model accepts the following parameters:

Table : Peripheral Parameters

kernelstringThis must specify the name of the Linux kernel that is being loaded. This must be consistent with the imagefile loaded and specified by the imagefile attribute on the processor.
dtbstringOptionally specific the flattened device tree blob file specifying the development board details for the Linux kernel to read.
envpaddressuns32The hex address in virtual memory that contains the command line. Default 0x80002000.
initrdstringSpecify a compressed initial ram disk file file for loading.
rootstringSpecify the root filesystem for booting. This is a string of the form '/dev/hda1'.
boardiduns32Allows the boardID to be configured. Defaults to 0x420 for Malta with CoreLV.
memsizeuns32The decimal size of the available memory. For Example 128MBytes is 134217728.
commandstringThis attribute allows an additional kernal command(s) to be added.
nonelinuxboolThis attribute allows a non linux program to be loaded onto the Malta platform. The program elf should be passed as though it was the kernel file.
bootimagestringThis attribute is used to pass a new boot image for the non:volatile memory that contains the reset vector from which the procesor starts execution.
endianstringSet the system endian, "big" or "little"; used for writing boot code. Default is "little" endian.
goldfishboolThis attribute is used to indicate that the peripheral is being used to configure the Android Goldfish platform.
writebootimagestringThis attribute is used to control the writing of a file of the boot code containing the reset vector from which the procesor starts execution.
fixuplinuxstartuns32This attribute is used to set the address at which the the code should be 'fixed' to add the setup required for booting a linux kernel a0 = number of kernel arguments a1 = command table start a2 = command line arguments start a3 = size fo physical ram
disablebootgenboolDisable the generation of boot code.
disableboolDisable this peripheral. Only provides the boardId in this case.
PCIslotuns32Specify the PCI slot.
PCIfunctionuns32Specify the PCI function number.
pagebitsuns32Specify the number of bits to be used when aligning the initrd data (should match page size configured into kernel). default=12.
initrdhighboolLocate the initial ramdisk in top of memory. By default the ramdisk is located in the next page after the top of the kernel image.

Bus Master Ports

This model has the following bus master ports:

Bus Master Port: mport

Table 1: mport

NameAddress Width (bits)Description
mport32This is a master port to access the memory in the system for initalisation of initrd and writing boot code to the reset vector

Bus Slave Ports

This model has the following bus slave ports:

Bus Slave Port: idport

Table 2: Bus Slave Port: idport

NameSize (bytes)Must Be ConnectedDescription
idport0x4F (False)This is a slave port that provides the boardId for Malta (default 0x420)

No address blocks have been defined for this slave port.

Platforms that use this peripheral component

Peripheral components can be used in many different platforms, including those developed by Imperas or by other users of OVP. You can use this peripheral in your own platforms.

Table 3: Publicly available platforms using peripheral 'SmartLoaderLinux'

Platform NameVendor

Page was generated in 0.0116 seconds