-
Notifications
You must be signed in to change notification settings - Fork 15
Hypervisor Deployment
This section shows how to obtain the prplHypervisor and deploy it on a board.
Clone the git repository of the prplHypervisor and make sure that you are at the master branch:
git clone https://github.com/prplfoundation/prpl-hypervisor
git checkout master
Use the MPLABX IPE to flash the corresponding bootloader to your board. The bootloader can be found in the prplHypervisor/bin directory. The available bootloaders are:
- Microchip_Curiosity_UART.hex (Microchip PIC32MZ Curiosity board);
- Microchip_Eth_Starter_Kit_UART.hex (Microchip PIC32MZ Embedded Connectivity Starter Kit);
- chipKIT-WiFire-EF.hex (Digilent PIC32MZ Chipkit Wi-Fire Board).
These bootloaders were generated from the project https://github.com/chipKIT32/PIC32-avrdude-bootloader.
Connect the board to your host computer using a standard A to mini B cable. Use the mini B debugger connector on the board. After flashed, the LED1 will keep blinking showing the that the bootloader is ready to upload the hypervisor.
From the folder prplHypervisor created by the git clone on step 5, go to the platform directory platform corresponding to your board. The available platforms (folders) are:
- platform/pic32mz_starter_kit;
- platform/pic32mz_chipkit_Wifire, and;
- platform/pic32mz_curiosity.
On the chosen folder, use the make command to compile the hypervisor with its default configuration using the MIPS-MTI toolchain. This process will generate the firmware.hex file. This file contains the hypervisor and guests. Example:
~/prplHypervisor/platform/pic32mz_starter_kit$: make
gcc -o genconf cfg_reader/genconf.c -lconfig
#execute first and exit in case of errors
./genconf samples_cfg/sample-1VM.cfg || (exit 1)
blink
#execute and export to a makefile variable the ouput of the script
mips-mti-elf-gcc -EL -O2 -mtune=m14k -mips32r2 -Wa,-mvirt -mno-check-zero-division -msoft-float -fshort-double -c -ffreestanding -nostdlib -fomit-frame-pointer -G 0 -DETHERNET_SUPPORT -DUSB_SUPPORT -DCPU_SPEED=200000000 -DHYPVERSION="v0.11.27 (g9100f1a)" -I../../arch/mips/pic32mz_starter_kit/include -I../../arch/mips/common/include -I../../sys/lib/include -I../../sys/kernel/include -I../../platform/pic32mz_starter_kit/include \
../../sys/lib/libc.c \
../../sys/lib/linkedlist.c \
../../sys/lib/malloc.c
...
mips-mti-elf-size blink.elf
text data bss dec hex filename
12248 16 1424 13688 3578 blink.elf
make[1]: Saindo do diretório `/home/moratelli/hyper/prpl-hypervisor/bare-metal-apps/apps/blink'
../../scripts/genhex.sh blink
0+1 registros de entrada
1+0 registros de saída
65536 bytes (66 kB) copiados, 0,000635281 s, 103 MB/s
0+1 registros de entrada
1+0 registros de saída
32768 bytes (33 kB) copiados, 0,000245427 s, 134 MB/s
Note: See the main Makefile in your platform directory. You may want to modify the input configuration file (CFG_FILE), CROSS_COMPILER or the optional features. Example:
#Input CFG file for VMs configuration
CFG_FILE = ../samples_cfg/sample-1VM.cfg
# CROSS Compiler
CROSS_COMPILER = mips-mti-elf-
# Optional Device Drivers
CONFIG_INTERVMCOMM_DRV = yes
CONFIG_PIC32MZ_USB_DRV = yes
CONFIG_PIC32MZ_ETHERNET_DRV = yes
CONFIG_VIRTUAL_IO_DRV = yes
CONFIG_INTERRUPT_REDIRECT_DRV = yes
5.4 Uploading the firmware
Upload the resulting firmware.hex file to the board using the make load command. Make sure that you have a cable connected to the UART port on your board. The following table shows the required cable to the supported boards.
Board Required Cables Connections Microchip PIC32MZ Connectivity Starter Kit 2 x Standard A to mini B cables.
Connect the cables to connectors J3 (power) and J11 (UART). Digilent PIC32MZ Chiptkit Wi-Fire 1 x Standard A to mini B cables. Connect the cable to connector J1 (power/UART). Microchip PIC32MZ Curiosity board 1 x Standard A to mini B cables. 1 x Serial to USB adapter. Connect the mini B cable connector to J3 (power). Use the USB adapter on the UART pins on MikroBus 1.
Expected make load command output.
~/prplHypervisor/platform/pic32mz_starter_kit$: make load
stty 115200 raw cs8 -hupcl -parenb -crtscts clocal cread ignpar ignbrk -ixon -ixoff -ixany -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke -F /dev/ttyACM0
./pic32prog -S -d /dev/ttyACM0 firmware.hex
Programmer for Microchip PIC32 microcontrollers, Version 2.0.186 Copyright: (C) 2011-2015 Serge Vakulenko Adapter: STK500v2 Bootloader Program area: 1d000000-1d1fffff Processor: Bootloader Flash memory: 2048 kbytes Boot memory: 80 kbytes Data: 131072 bytes Erase: done Program flash: ################################# done Program rate: 6600 bytes per second
During power on, the bootloader will wait for 3 seconds before automatically loading the application. During this time, it is possible to flash a new firmware. Thus, before try to upload the firmware, press the reset button on your board and wait the blinking led.