Soy un desarrollador de aplicaciones de alto nivel (C #, python) y me gustaría ensuciarme las manos con el desarrollo de aplicaciones integradas de bajo nivel. La Universidad de Cambridge ha publicado una serie de tutoriales que le enseñan cómo crear un sistema operativo para Raspberry Pi llamado Baking Pi. Tengo la intención de publicar mi pregunta sobre este tutorial aquí y actualizar las respuestas a medida que avance. Tal vez incluso publique algunos puntos que descubrí yo mismo.
Así que he seguido la lección 1 y ya estoy confundido. Aquí está el enlace de la página .
La primera parte del tutorial dice que necesitamos (supongo) encender el controlador GPIO escribiendo el valor 0x20200000 para registrar r0. No puedo encontrar esa información relevante en ninguna parte de la hoja de datos. ( enlace ) Miré la sección GPIO pero no vi ninguna indicación de 16 registros o r0. ¿Dónde está esta información?
ACTUALIZAR
En primer lugar, el tutorial habla sobre encender el LED OK, que es el LED de estado. Quizás se pregunte en qué parte del Manual dice que GPIO 16 está conectado al LED OK. No lo hará. Debe mirar los esquemas de frambuesa y encontrar a qué GPIO está conectado el status_led. Aquí está el enlace de los esquemas. Página 2, Bloque BCM2835.
Entonces, el objetivo es seleccionar el pin GPIO16. (más actualizaciones por venir ...)
fuente
Gracias a Jivings y emcconville por responder la pregunta.
En la hoja de datos pdf, página 6 sección ARM physicall address , hay una sección que dice
Al ir a la página 90, la primera fila de la tabla dice:
entonces el 0x7E200000 se traduce a la dirección física 0x20200000, que es la función GPIO de selección de 0 bits.
En cuanto a r0, hay 16 registros de propósito general en el ARM, que podemos usar para almacenar números, y es por eso que en el tutorial está eligiendo r0 ya que es el primer registro gratuito.
fuente
El registro a
r0
travésr12
son de propósito general. Naturalmente, es más fácil comenzarr0
. Como Jivings señaló, el manual enumera cada dirección y establece:fuente