@ -5,12 +5,11 @@ puede ser encontrada al principio del archivo del código fuente
del núcleo (kernel) en cada tutorial. Esta describe la estructura
general del código fuente, e intenta transmitir la filosofía detrás
de cada respectivo acercamiento. Por favor leélo para familiarizarte
con lo que te vas a encontrar durante los tutoriales. Te ayudará a navegar el código de una mejor manera y entender la diferencias y
las adiciones entre los diferentes tutoriales.
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.
Por favor también nota que el siguiente texto va a referenciar
los archivos del código fuente (e.j. `**/memory.rs`) o funciones que
no van a existir aún en los primeros tutoriales. Serán agregadas
no van a existir aún en los primeros tutoriales. Estos archivos serán agregados
a medida que el tutorial avance.
¡Diviértanse!
@ -39,7 +38,7 @@ mod arch_mmu;
```
En muchas ocasiones, los elementos de `arch_module` serán reexportados públicamente por el módulo principal.
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.
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.
## Código BSP
@ -51,7 +50,7 @@ Justo como el código de la arquitectura del procesador, la estructura del módu
## La interfaz del núcleo (kernel)
`arch` y `bsp` contienen código que se compilará condicionalmente dependiendo del blanco y placa actual para la que el núcleo (kernel) es compilado.
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.
Por ejemplo, el hardware de `interrupt controller` 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.
@ -78,14 +77,19 @@ Por ejemplo, habrá una *IRQ handling interface* común, el cual los dos diferen
Para un subsistema lógico del `núcleo (kernel)`, el código correspondiente puede ser distribuido sobre diferentes localizaciones físicas. Aquí un ejemplo para el subsistema de memoria:
- `src/memory.rs` y `src/memory/**/*`
- Código común que es independiente de la arquitectura del procesador de destino y las características de `BSP`.
- Ejemplo: Una función a un pedazo cero de memoria.
- Interfaces para el subsistema de la memoria que son implementados por código `arch` o `BSP`.
- Las interfaces para el subsistema de la memoria que son implementados por código `arch` o `BSP`.
- Ejemplo: Una interface `MMU` que define prototipos de función `MMU`.
- `src/bsp/__board_name__/memory.rs` y `src/bsp/__board_name__/memory/**/*`
- `src/bsp/__board_name__/memory.rs` y `src/bsp/__board_name__/memory/**/*`
- Código específico de `BSP`.
- Ejemplo: El mapa de memoria de la placa (direcciones físicas de DRAM y dispositivos MMIO).
- `src/_arch/__arch_name__/memory.rs` y `src/_arch/__arch_name__/memory/**/*`
- `src/_arch/__arch_name__/memory.rs` y `src/_arch/__arch_name__/memory/**/*`
- El código específico de la arquitectura del procesador.
- Ejemplo: Implementación de la interfaz `MMU` para la arquitectura `__arch_name__`.