Recientemente he comenzado a entrar en la materia bajo nivel y que mira en gestores de arranque y sistemas operativos, etc ...Confundido sobre la asignación de memoria
lo que tengo entendido, para procesadores ARM, por lo menos, los periféricos son inicializados por el gestor de arranque y luego están mapeados en el espacio de la memoria física. Desde aquí, el código puede acceder a los periféricos simplemente escribiendo valores en el espacio de memoria asignado a los registros de periféricos. Más tarde, si el chip tiene una MMU, se puede utilizar para reasignar aún más en espacios de memoria virtual. ¿Estoy en lo cierto?
Lo que no entiendo son (asumiendo que lo que he dicho anteriormente es correcta):
- ¿Cómo funciona el gestor de arranque inicializar los periféricos si no han sido asignadas a un espacio de direcciones todavía?
- Con la asignación de memoria virtual, hay tablas que le dicen a la MMU dónde asignar qué. Pero, ¿qué determina dónde se mapean los periféricos en la memoria física?
Gracias, eso ayudó a aclarar las cosas. Una última pregunta: ¿es posible 'desasignar' algo en el espacio de la memoria física? – tangrs
Puede reprogramar la GPMC y eliminar efectivamente la memoria del mapa aunque dudo que haya un buen caso de uso para esto. – doron