README.ES.md -> 01_wait_forever
parent
7349acc9bc
commit
ac93ef59ac
@ -0,0 +1,55 @@
|
||||
# Tutorial 01 - Esperar para siempre
|
||||
|
||||
## tl;dr
|
||||
|
||||
* Se configura la estructura que tendrá 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 `Makefile` selecciona:
|
||||
|
||||
* `doc`: Genera la documentación.
|
||||
|
||||
* `qemu`: Ejecutar el kernel en QEMU.
|
||||
|
||||
* `clippy`
|
||||
|
||||
* `clean`
|
||||
|
||||
* `readelf`: Inspeccionar la salida de `ELF`.
|
||||
|
||||
* `objdump`: Inspecciona el ensamblador.
|
||||
|
||||
* `nm`: Inspecciona los símbolos.
|
||||
|
||||
## Código a revisar
|
||||
|
||||
* El script enlazador específico de `BSP` llamado `link.ld`.
|
||||
|
||||
* Carga la dirección en `0x8_0000`.
|
||||
|
||||
* Solo la sección `.text`.
|
||||
|
||||
* `main.rs`: [Atributos internos](https://doc.rust-lang.org/reference/attributes.html) importantes:
|
||||
|
||||
* `#![no_std]`, `#![no_main]`.
|
||||
|
||||
* `boot.s`: La función de ensamblador `__start()` que inicia `wfe` (Wait For Event / Esperar Por Un Evento), detiene todos los núcleos del procesador que están ejecutando `_start()`.
|
||||
|
||||
* Tenemos que definir una función `#[panic_handler]` para que el compilador no nos cause problemas.
|
||||
|
||||
* Hazla una `unimplemented!()` porque se eliminará ya que no está siendo usada.
|
||||
|
||||
## Pruébalo
|
||||
|
||||
Dentro de la carpeta del proyecto, ejecuta a QEMU y mira el núcleo del procesador hilado en `wfe`:
|
||||
|
||||
```
|
||||
$ make qemu
|
||||
[...]
|
||||
IN:
|
||||
0x00080000: d503205f wfe
|
||||
0x00080004: 17ffffff b #0x80000
|
||||
```
|
Loading…
Reference in New Issue