KVM sobre ARM Cortex A15 (OMAP5432 UEVM)

Hi! En este post voy a resumir los pasos que tenía que hacer para conseguir KVM de trabajo en el tablero OMAP5 ARM utilizando las extensiones de virtualización.

Modo HYP A15 ARM.

En Cortex-A15 de ARM han introducido un nuevo modo de funcionamiento llamado HYP (hipervisor). Tiene permisos más bajos que TruztZone. De hecho, HYP divide el mundo «inseguro» en dos partes, una para el hipervisor y la otra para los huéspedes. Por defecto, en la mayoría de los tableros el sistema arranca en el modo no HYP inseguro. Para entrar en el modo de HYP, es necesario utilizar formas específicas de la plataforma. . Para OMAP5 este consiste en hacer una llamada a la TrustZone que reiniciar los núcleos modo inseguros

Una buena visión general de cómo se ha añadido soporte de virtualización para ARM para Linux está disponible en LWN
http.: / / lwn.net/Articles/557132 /

parche Ingo Molnar HYP

Se ha producido un parche para el u-boot para permitir entrar en el modo HYP en OMAP5 por Ingo Molnar. Es una pena, que fue escrito, ya sea para una revisión temprana de OMAP5 o mal probado. No funcionó para mi pensión, así que tuve que aprender sobre OMAP5 TrustZone SMC comandos de varias fuentes y poner un parche (que está integrado a mi sucursal u-boot).
Si usted está interesado, puede echar un vistazo a la entrada de la lista de correo correspondiente.

http://u-boot.10912.n7.nabble.com/RFD-OMAP5-Working-HYP-mode-td163302.html

Preparando tarjeta SD u-boot

Obtener las imágenes android de TI o construir por sí mismo. Usted puede utilizar la herramienta usbboot para arrancar las imágenes de la PC. O mejor aún, usted puede construir u-boot (este es el modo preferido) y luego no tendrá imágenes de Android. Pero es posible que necesite la GLSDK TI para el x-loader (MLO). Creación de una tarjeta SD con u-boot es el mismo que para OMAP3 y OMAP4, así que voy a dejar esto. Hay algo de magia con la creación de una tabla de particiones adecuado, por lo que te aconsejo que te dan un poco de imagen creado previamente (como ubuntu para PandaBoard) y luego coloque los archivos en la partición FAT.

http://software-dl.ti.com/omap/omap5/omap5_public_sw/OMAP5432-EVM/5AJ_1_5_Release/index_FDS.html
Http://www.omappedia.com/wiki/6AJ.1.1_Release_Notes

Por favor consulte el manual de OMAP5432 sobre cómo configurar los interruptores DIP para que arranque desde la tarjeta SD.
Fuente

Compra u-boot:
https://github.com/astarasikov/uboot-tegra/tree/omap5_hyp_test

Para el kernel linux:
https://github.com/astarasikov/linux/tree/omap5_kvm_hacks

kernel Linux está basado en 3,8-y la rama de TI omapzoom. He arreglado un puntero nulo en el controlador USB3 DWC y algunos problemas con las máscaras de bits DMA de 64 bits (I hackeado los controladores a trabajar con ARM LPAE, pero esto probablemente les rompí para nada más. La corriente arriba aún no ha decidido sobre la forma como debe ser manipulados).

Compilar cosas

En primer lugar, vamos a construir la
! # / bin / bash
export PATH = / home/alexander/handhelds/armv6/codesourcery/bin: $ PATH
exportación ARCH = brazo
CROSS_COMPILE exportación = brazo Coincidir eabi-
U_BOARD = omap5_uevm
make clean
hacer distclean
hacer $ {} U_BOARD _config
make-j8

obtendrá el u-boot.bin y el u-boot.img (que se puede poner en la tarjeta SD). Además, que construirá la herramienta mkimage que vamos a necesitar más tarde.

Ahora, tenemos que crear el script de arranque de u-boot que cargue el kernel y el archivo de árbol de dispositivos en la memoria RAM.

i2c mw 0x48 0x15 0xd9
i2c mw 0x48 0x05 0xd4
setenv fdt_high 0xffffffff
FDT addr 0x80F80000
mmc rescan
parte mmc
fatload mmc 0:1 0x80300000 uImage
fatload mmc 0:1 $ {} fdtaddr OMAP5-uevm.dtb
mmcargs setenv setenv bootargs console = ttyO2, 115200n8 root = / dev/sda1 rw rootdelay = 5 earlyprintk nosmp
printenv
mmcargs ejecutar
bootm 0x80300000 – $ {fdtaddr}

Ahora, compile al formato binario u-boot:
. / tools / mkimage-Un brazo-T guión-C no-n «boot.scr OMAP5»-d boot.txt boot.scr

linux edificio:

export PATH = / home / alexander / handhelds / armv6/linaro-2012q2/bin: $ PATH
exportación ARCH = brazo
de exportación CROSS_COMPILE = / home/alexander/handhelds/armv6/linaro-2012q2/bin/arm-none-eabi-
OMAP_ROOT exportación = / home / alexander / handhelds / omap
MAKE_OPTS exportación = «-j4 ARCH = $ ARCH CROSS_COMPILE = $ CROSS_COMPILE»

pushd
cd $ {} OMAP_ROOT / kernel_omapzoom
hacer $ MAKE_OPTS omap5uevm_defconfig
hacer $ MAKE_OPTS zImage
popd

Ahora, tenemos que compilar el DTS (dispositivo de código fuente de árbol) con la función DTC. Si usted elige utilizar el usbboot lugar de u-boot, puede activar la opción de configuración de kernel y simplemente añadir el blob DTB hasta el final de zImage
(Opciones de arranque -> Usar anexa dispositivo árbol blob para zImage)

/ scripts / / dtc arch/arm/boot/dts/omap5-uevm.dts-o-OMAP5 uevm.dtb-O DTB kernel_omapzoom cat / arch / brazo / boot / zImage OMAP5-uevm.dtb> kernel
. / usbboot-f; fastboot-c» console = ttyO2 console = rootwait tty0 root = / dev/sda1 «-b núcleo de arranque 0x83000000

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *