You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 00_before_we_start/README.ES.md
+21-22Lines changed: 21 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -4,30 +4,30 @@ El texto a continuación es una copia 1:1 de la documentación que
4
4
puede ser encontrada al principio del archivo del código fuente
5
5
del núcleo (kernel) en cada tutorial. Esta describe la estructura
6
6
general del código fuente, e intenta transmitir la filosofía detrás
7
-
de cada respectivo acercamiento. Por favor leélo para familiarizarte
8
-
con lo que te vas a encontrar durante los tutoriales. Te ayudará a navegar el código de una mejor manera y entender las diferencias y adiciones entre los diferentes tutoriales.
7
+
de cada enfoque. Por favor leélo para familiarizarte
8
+
con lo que te vas a encontrar durante los tutoriales. Te ayudará a navegar el código de una mejor manera y a entender las diferencias y agregados entre los diferentes tutoriales.
9
9
10
-
Por favor también nota que el siguiente texto va a referenciar
11
-
los archivos del código fuente (e.j. `**/memory.rs`) o funciones que
10
+
Por favor, nota también que el siguiente texto va a referenciar
11
+
los archivos del código fuente (p. e.j. `**/memory.rs`) o funciones que
12
12
no van a existir aún en los primeros tutoriales. Estos archivos serán agregados
13
13
a medida que el tutorial avance.
14
14
15
15
¡Diviértanse!
16
16
17
17
# La estructura del código y la arquitectura
18
18
19
-
El código está dividido en diferentes módulos, cada uno representa un
19
+
El código está dividido en diferentes módulos donde cada uno representa un
20
20
subsistema típico del `kernel (núcleo)`. Los módulos de más alto nivel de los subsistemas se encuentran directamente en la carpeta `src`.
21
21
Por ejemplo, `src/memory.rs` contiene el código que está relacionado
22
22
con el manejo de memoria.
23
23
24
24
## Visibilidad del código de arquitectura del procesador
25
25
26
-
Algunos de los subsistemas del `núcleo (kernel)` dependen del código de nivel-bajo (low-level) que tiene como objetivo la arquitectura del procesador.
26
+
Algunos de los subsistemas del `núcleo (kernel)` dependen del código de bajo nivel (low-level) dedicado a la arquitectura del procesador.
27
27
Por cada arquitectura de procesador que está soportada, existe una subcarpeta en `src/_arch`, por ejemplo, `src/_arch/aarch64`.
28
28
29
29
La carpeta de arquitecturas refleja los módulos del subsistema establecidos en `src`. Por ejemplo, el código de arquitectura que pertenece al subsistema MMU del `núcleo(kernel)` (`src/memory/mmu.rs`) irá dentro de (`src/_arch/aarch64/memory/mmu.rs`).
30
-
El último archivo cargado como un módulo en `src/memory/mmu.rs` usando el `path attribute` (atributo de ruta). Usualmente, el nombre del módulo elegido es el nombre del módulo genérico con el prefijo de `arch_`
30
+
Este archivo puede ser cargado como un módulo en `src/memory/mmu.rs` usando el `path attribute` (atributo de ruta). Usualmente, el nombre del módulo elegido es el nombre del módulo genérico con el prefijo de `arch_`
31
31
32
32
Por ejemplo, esta es la parte superior de `src/memory/mmu.rs`:
33
33
@@ -38,25 +38,24 @@ mod arch_mmu;
38
38
```
39
39
40
40
En muchas ocasiones, los elementos de `arch_module` serán reexportados públicamente por el módulo principal.
41
-
De esta manera, cada módulo específico de la arquitectura puede proporcionar su implementación de un elemento, mientras que el *caller* no debe de preocuparse por la arquitectura que se ha compilado condicionalmente.
41
+
De esta manera, cada módulo específico de la arquitectura puede proporcionar su implementación de un elemento, mientras que el *invocante* no debe de preocuparse por la arquitectura que se ha compilado condicionalmente.
42
42
43
43
## Código BSP
44
44
45
45
`BSP` significa Board Support Package (Paquete de Soporte de la Placa).
46
-
El código `BSP` está dentro de `src/bsp.rs` y contiene las definiciones y funciones de la placa base específica a la que se tendrá como objetivo.
47
-
Entre estas cosas se encuentran diferentes elementos como el mapa de memoria de la placa o instancias de controladores para dispositivos que se presentan en la placa respectiva.
46
+
El código `BSP` está dentro de `src/bsp.rs` y contiene las definiciones y funciones de la placa base específica elegida.
47
+
Entre estas cosas se encuentran diferentes elementos como el mapa de memoria de la placa o instancias de controladores para dispositivos que se presentan en la placa elegida.
48
48
49
-
Justo como el código de la arquitectura del procesador, la estructura del módulo del código `BSP` trata de reflejar los módulos del subsistema del `núcleo (kernel)`, pero no ocurre una reexportación esta vez. Eso significa que lo que sea que se esté proporcionando debe ser llamado empezando por el *namespace* de `bsp`, e.j. `bsp::driver::driver_manager()`.
49
+
Justo como el código de la arquitectura del procesador, la estructura del módulo del código `BSP` trata de reflejar los módulos del subsistema del `núcleo (kernel)`, pero no ocurre una reexportación esta vez. Eso significa que lo que sea que se esté proporcionando debe ser llamado empezando por el *namespace*(espacio de nombres) de `bsp`, p. ej. `bsp::driver::driver_manager()`.
50
50
51
51
## La interfaz del núcleo (kernel)
52
52
53
-
El `arch` y el `bsp` contienen código que se compilará condicionalmente dependiendo del objetivo y placa actual para la que el núcleo (kernel) es compilado.
54
-
Por ejemplo, el hardware de `interrupt controller` de la `Raspberry Pi 3`
55
-
y la `Raspberry Pi 4` es diferente, pero nosotros queremos que el resto del código del kernel funcione correctamente con cualquiera de los dos sin mucha complicación.
53
+
El `arch` y el `bsp` contienen código que se compilará condicionalmente dependiendo del procesador y placa actual para la que se compila el núcleo (kernel).
54
+
Por ejemplo, el hardware de control de interrupciones de la `Raspberry Pi 3` y la `Raspberry Pi 4` es diferente, pero nosotros queremos que el resto del código del kernel funcione correctamente con cualquiera de los dos sin mucha complicación.
56
55
57
-
Para poder dar una limpia abstracción entre `arch`, `bsp` y `generic kernel code`, los rasgos de `interface` se proporcionan *siempre y cuando tenga sentido*. Son definidos en su respectivo módulo de subsistema y ayuda a reforzar el idioma de *program to an interface**(programa a una interface)*, no a una implementación.
56
+
Para poder dar una limpia abstracción entre `arch`, `bsp` y código genérico del núcleo, los rasgos de `interface` se proporcionan *siempre y cuando tenga sentido*. Son definidos en su módulo de subsistema correspondiente y ayuda a reforzar el patrón de programar con respecto a una interfaz, sin importar la implementación concreta.
58
57
59
-
Por ejemplo, habrá una *IRQ handling interface* común, el cual los dos diferentes `drivers` de `interrupt controller` de ambas `Raspberry` implementarán, y solo exportarán la interface del resto del `núcleo (kernel)`.
58
+
Por ejemplo, habrá una *IRQ handling interface*(interfaz de manejo de interrupciones) común, el cual los dos diferentes controladores de ambas `Raspberry` implementarán, y solo exportarán la interfaz común al resto del `núcleo (kernel)`.
60
59
61
60
```
62
61
+-------------------+
@@ -78,10 +77,10 @@ Para un subsistema lógico del `núcleo (kernel)`, el código correspondiente pu
78
77
79
78
-`src/memory.rs` y `src/memory/**/*`
80
79
81
-
- Código común que es independiente de la arquitectura del procesador de destino y las características de `BSP`.
82
-
- Ejemplo: Una función a un pedazo cero de memoria.
83
-
- Las interfaces para el subsistema de la memoria que son implementados por código `arch` o `BSP`.
84
-
- Ejemplo: Una interface`MMU` que define prototipos de función `MMU`.
80
+
- Código común que es independiente de la arquitectura del procesador de destino y las características de la placa (`BSP`).
81
+
- Ejemplo: Una función para poner a cero un trozo de memoria.
82
+
- Las interfaces para el subsistema de la memoria que son implementados por código de `arch` o `BSP`.
83
+
- Ejemplo: Una interfaz`MMU` que define prototipos de función de`MMU`.
85
84
86
85
-`src/bsp/__board_name__/memory.rs` y `src/bsp/__board_name__/memory/**/*`
87
86
@@ -100,5 +99,5 @@ Desde una perspectiva de *namespace*, el código del subsistema de **memoria** v
100
99
101
100
# Flujo de Boot / Boot flow
102
101
103
-
1.La punto de entrada del núcleo (kernel) es la función `cpu::boot::arch_boot::_start()`.
104
-
- Está implementada en `src/_arch/__arch_name__/cpu/boot.s`.
102
+
1.El punto de entrada del núcleo (kernel) es la función `cpu::boot::arch_boot::_start()`.
103
+
- Está implementado en `src/_arch/__arch_name__/cpu/boot.s`.
0 commit comments