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.
Smart peripheral creates memory initialization 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. Initializes the MIPS32 registers and Linux command line
Open Source Apache 2.0
MIPS Malta User Manual. MIPS Boot code reference
The SmartLoaderLinux peripheral model is located in an Imperas/OVP installation at the VLNV: mips.ovpworld.org / peripheral / SmartLoaderLinux / 1.0.
Peripheral Instance Parameters
This model accepts the following parameters:
Table : Peripheral Parameters
|kernel||string||This 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.|
|envpaddress||uns32||The hex address in virtual memory that contains the command line. Default 0x80002000.|
|initrd||string||Specify a compressed initial ram disk file file for loading.|
|root||string||Specify the root filesystem for booting. This is a string of the form '/dev/hda1'.|
|memsize||uns32||The decimal size of the available memory. For Example 128MBytes is 134217728.|
|command||string||This attribute allows an additional kernal command(s) to be added.|
|nonelinux||bool||This 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.|
|bootimage||string||This 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.|
|endian||string||Set the system endian, "big" or "little"; used for writing boot code. Without this attribute the default is "little" endian.|
|goldfish||bool||This attribute is used to indicate that the peripheral is being used to configure the Android Goldfish platform.|
|writebootimage||string||This attribute is used to control the writing of a file of the boot code containing the reset vector from which the procesor starts execution.|
|fixuplinuxstart||uns32||This 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|
|disablebootgen||bool||Disable the generation of boot code.|
|disable||bool||Disable this peripheral. Only provides the boardId in this case.|
|PCIslot||uns64||Specify the PCI slot.|
|PCIfunction||uns64||Specify the PCI function number.|
|pagebits||uns32||Specify the number of bits to be used when aligning the initrd data (should match page size configured into kernel). default=12.|
Bus Master Ports
This model has the following bus master ports:
Bus Master Port: mport
Table 1: mport
|Name||Address Width (bits)||Description|
|mport||32||This 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
|Name||Size (bytes)||Must Be Connected||Description|
|idport||0x4||F (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'