Tutorial 01 - Esperar infinitamente
tl;dr
-
Se configura la estructura que tiene el proyecto.
-
Se ejecuta una pequeño código hecho en ensamblador que tiene como función detener todos los núcleos del procesador que están ejecutando el kernel.
Compilar
-
El archivo
Makefilepermite ejecutar:-
doc: Genera la documentación. -
qemu: Ejecutar el kernel en QEMU. -
clippy: Analiza el código y sugiere mejoras. -
clean: Elimina todos los archivos generados durante la compilación, etc. -
readelf: Inspecciona el archivoELFde salida. -
objdump: Inspecciona el ensamblador. -
nm: Inspecciona los símbolos.
-
Código a revisar
-
El script para enlazado específico para la
BSPllamadokernel.ld.-
Carga la dirección en
0x8_0000. -
Solo la sección
.text.
-
-
main.rs: Atributos internos importantes:#![no_std],#![no_main].
-
boot.s: La función de ensamblador_start()que iniciawfe(Wait For Event / Esperar Hasta Un Evento), detiene todos los núcleos del procesador que están ejecutando_start(). -
Tenemos que definir una función que funcione como
#[panic_handler](manejador de pánico) para que el compilador no nos cause problemas.- Hazla
unimplemented!()porque se eliminará ya que no está siendo usada.
- Hazla
Pruébalo
Dentro de la carpeta del proyecto, ejecuta a QEMU y mira el núcleo del procesador ejecutando wfe en bucle:
$ make qemu
[...]
IN:
0x00080000: d503205f wfe
0x00080004: 17ffffff b #0x80000