Simics® QSP Virtual Platform
What is Simics®?
The Simics simulator is the functional virtual platform technology used in Intel® Integrated Simulation Infrastructure with Modeling (Intel® ISIM). The Simics simulator has been designed to let virtual platforms run target binaries in a fast, deterministic, and controllable way. This provides an ideal environment for early software development and debugging, analysis, tracing, and instrumentation of software running on the platform.
Here is an interesting article for further reading about Simics: Simics® 6 A Deeper Look at How Software Uses Hardware
In this guide, we will focus on how to boot up on Simics Quick-Start Platform (QSP).
The QSP is a simple model of a standard PC, and is part of the Simics base product.
Setting up Simics® Simulator
Please head over to this link to understand and setup Simics® Simulator:
Please refer to the guide bwlow to get your Simics Simulator setting up!
Here is a snapshot of Simics Simulator after setting up:
Building SBL for Simics QSP
Time to get ready with SBL!
Before trying on SBL, you are strongly recommended to at least go through the Tutorial section in Simics Simulator to get yourself familiarized with it.
Please refer to Get Started section here
To build SBL for Simics QSP (it is the same image as QEMU, SBL will auto detect the platform at runtime):
python BuildLoader.py build qemu
QSP SBL shares the same image as QEMU SBL, SBL will auto detect the platform at runtime via Host Bridge Device ID.
The output images are generated under
QSP SBL does not require stitching the SBL into an IFWI.
Boot to Shell on QSP Simics
Start Simics Simulator. You should be able to see the Simics Control Panel pop up:
Now proceed to load SlimBootloader.bin using Simics CLI method (in Simics terminal):
simics> run-command-file targets/qsp-x86/firststeps.simics bios_image = "/home/(SlimBootloader.bin path)"
A graphics console and a serial console will pop up:
Then ‘turn on’ the platform:
Booted to SBL Shell!:
A snapshot of Console outputs:
============= Intel Slim Bootloader STAGE1A ============= SBID: SB_QEMU ISVN: 001 IVER: 000.005.001.001.00581 SVER: 8BB52DAACA47D50A FDBG: BLD(D IA32) FSP(R) FSPV: ID($QEMFSP$) REV(00001000) Loader global data @ 0x00001D44 Run STAGE1A @ 0x00070000 Load STAGE1B @ 0x00040000 HASH verification for usage (0x00000001) with Hash Alg (0x2): Success ============= Intel Slim Bootloader STAGE1B ============= Host Bridge Device ID:0x3400 Board ID:0x2 - Loading Simics QSP! Loading Component KEYH:_HS_ Registering container KEYH HASH verification for usage (0x00000100) with Hash Alg (0x2): Success SignType (0x2) SignSize (0x180) SignHashAlg (0x2) RSA verification for usage (0x00000100): Success HASH verification for usage (0x00000000) with Hash Alg (0x2): Success Append public key hash into store: Success