mirror of
https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials.git
synced 2024-11-11 07:10:59 +00:00
1.8 KiB
1.8 KiB
Tutorial 02 - Inicialización del runtime
tl;dr
- Extendimos la funcionalidad de
boot.s
para 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 qemu
de 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 cortex-a, 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.