Tutorial 02 - Inicialización del runtime
tl;dr
- Extendimos la funcionalidad de
boot.spara que sea capaz de llamar código Rust por primera vez. Antes de que el cambio a Rust ocurra, se realizan algunos trabajos de inicialización delruntime(soporte para ejecución de código). - El código Rust que es llamado solo pausa la ejecución con una llamada a
panic!(). - Ejecuta
make qemude nuevo para que puedas ver el código adicional en acción.
Adiciones importantes
-
Adiciones importantes al script
kernel.ld:-
Nuevas secciones:
.rodata,.got,.data,.bss. -
Un lugar totalmente dedicado a enlazar argumentos de tiempo de arranque (boot-time) que necesitan estar listos cuando se llame a
_start().
-
-
_start()en_arch/__arch_name__/cpu/boot.s: -
_start_rust():- Llama a
kernel_init(), que llama apanic!(), que al final también pone al núcleo 0 en pausa.
- Llama a
-
La librería ahora usa el crate aarch64-cpu, que nos da abstracciones sin coste y envuelve las partes que hacen uso de un
unsafe(partes con código que no es seguro y podría causar errores) cuando se trabaja directamente con los recursos del procesador.- Lo puedes ver en acción en
_arch/__arch_name__/cpu.rs.
- Lo puedes ver en acción en
Diferencia con el archivo anterior
Please check the english version, which is kept up-to-date.