Skip to content

Commit a6be5b3

Browse files
zanezhubzanezandre-richtereldruin
authored
README.ES.md -> 01 & 02 (#150)
* README.ES.md I added a spanish translation for the README.md file, and modified the README.md to add my github profile and to add the link to README.ES.md file * Slightly reorganize translation overview * README.ES.md These changes are in response to PR comments * Update README.ES.md * README.ES.md -> 00_before_we_start * Updating README.ES.md I corrected a few mistakes in both README.ES.md files. * README.ES.md for 00 These changes are in response to PR comments * README.ES.md -> 01_wait_forever * README.ES.md -> 02_runtime_init * README.md for 01 & 02 with corrections/improvements * Update 01_wait_forever/README.ES.md * Update 02_runtime_init/README.ES.md Co-authored-by: zanez <zanez@protonmail.com> Co-authored-by: Andre Richter <andre-richter@users.noreply.github.com> Co-authored-by: Diego Barrios Romero <eldruin@gmail.com>
1 parent 722e8b7 commit a6be5b3

File tree

2 files changed

+403
-0
lines changed

2 files changed

+403
-0
lines changed

01_wait_forever/README.ES.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Tutorial 01 - Esperar infinitamente
2+
3+
## tl;dr
4+
5+
* Se configura la estructura que tiene el proyecto.
6+
7+
* 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.
8+
9+
## Compilar
10+
11+
* El archivo `Makefile` permite ejecutar:
12+
13+
* `doc`: Genera la documentación.
14+
15+
* `qemu`: Ejecutar el kernel en QEMU.
16+
17+
* `clippy`: Analiza el código y sugiere mejoras.
18+
19+
* `clean`: Elimina todos los archivos generados durante la compilación, etc.
20+
21+
* `readelf`: Inspecciona el archivo `ELF` de salida.
22+
23+
* `objdump`: Inspecciona el ensamblador.
24+
25+
* `nm`: Inspecciona los símbolos.
26+
27+
## Código a revisar
28+
29+
* El script para enlazado específico para la `BSP` llamado `link.ld`.
30+
31+
* Carga la dirección en `0x8_0000`.
32+
33+
* Solo la sección `.text`.
34+
35+
* `main.rs`: [Atributos internos](https://doc.rust-lang.org/reference/attributes.html) importantes:
36+
37+
* `#![no_std]`, `#![no_main]`.
38+
39+
* `boot.s`: La función de ensamblador `_start()` que inicia `wfe` (Wait For Event / Esperar Hasta Un Evento), detiene todos los núcleos del procesador que están ejecutando `_start()`.
40+
41+
* Tenemos que definir una función que funcione como `#[panic_handler]` (manejador de pánico) para que el compilador no nos cause problemas.
42+
43+
* Hazla `unimplemented!()` porque se eliminará ya que no está siendo usada.
44+
45+
## Pruébalo
46+
47+
Dentro de la carpeta del proyecto, ejecuta a QEMU y mira el núcleo del procesador ejecutando `wfe` en bucle:
48+
49+
```
50+
$ make qemu
51+
[...]
52+
IN:
53+
0x00080000: d503205f wfe
54+
0x00080004: 17ffffff b #0x80000
55+
```

0 commit comments

Comments
 (0)