Red de conocimiento informático - Material del sitio web - Cómo usar omapl138 para escribir funciones de interrupción en un sistema Linux integrado

Cómo usar omapl138 para escribir funciones de interrupción en un sistema Linux integrado

linux - inicio de arranque omapl138

El procesador de aplicaciones integrado con arquitectura DaVinci de TI utiliza una estructura asimétrica de múltiples núcleos que combina DSP y ARM. Por supuesto, también los hay totalmente compatibles con pines. .un solo núcleo. Este artículo presentará uno de los procesadores de bajo consumo OMAP L138.

OMAP L138 incluye un núcleo de procesador ARM9 con una frecuencia principal de 300M y un núcleo C6748DSP con una frecuencia de 300M (ambos son procesadores de 32 bits). Además, hay una gran cantidad de periféricos que no se explican aquí. En comparación con los núcleos ARM y DSP generales, tienen las siguientes diferencias:

1. direccionado, DSP y ARM comparten espacio de memoria 4G. Sin embargo, algunos de ellos solo son visibles para el DSP (como el caché de instrucciones de datos del DSP) y otros solo son visibles para el ARM (como la RAM interna del ARM. Ambos pueden acceder al resto). Consulte la información de su chip para obtener más detalles.

2. Interrupciones En comparación con DSP y ARM de uso general, la arquitectura DaVinci no agrega instrucciones para la comunicación de doble núcleo y el control mutuo en estos dos núcleos (¡quizás no lo noté! Si lo haces). encuentre instrucciones relevantes, envíeme un correo electrónico para informarme, ¡gracias!), pero agrega un total de 7 interrupciones entre los dos núcleos. Cuando los núcleos duales necesitan comunicarse, primero colocan los datos en la memoria a la que ambas partes pueden acceder y luego interrumpen a la otra parte. La otra parte recibe los datos pasados ​​en la interrupción para lograr la comunicación entre las dos partes. Personalmente creo que esto es lo que implementa DSP Link. El principio básico :)

3. Módulo de configuración de energía y sueño (PSC) Este módulo es el principal responsable de la gestión de energía de todo el sistema. Dormir el núcleo ARM, el núcleo DSP y la mayoría de los núcleos ARM periféricos. El control mutuo con el núcleo DSP se basa principalmente en este módulo.

Para OMAPL138, el valor predeterminado al encender es que el núcleo ARM está deshabilitado y el núcleo DSP está habilitado. Se dice que al arrancar, el núcleo DSP se inicia primero y luego el cargador de arranque ROM DSP realiza una inicialización y habilita el núcleo ARM antes de que el núcleo ARM comience a ejecutarse. Los diferentes procesadores DaVinci son diferentes. Por ejemplo, OMAPL137 es al revés. Si no está seguro, consulte los valores predeterminados de los núcleos ARM y DSP en el PSC. módulo.

1. Al encender, el modo de inicio configurado por el usuario en el pin BOOT se bloquea y se muestrea en el registro BOOTCFG del módulo SYSCFG, determinando así el modo de inicio del procesador.

2. El valor de inicio predeterminado en el módulo PSC es: el núcleo ARM está inactivo y el núcleo DSP está habilitado. Entonces, en este momento se inicia el DSP y el DSP lee las instrucciones de la ROM DSP L2 en el chip para su ejecución. Aquí hay un ROM Bloader que TI ha solidificado y al que solo se puede acceder mediante el núcleo DSP, denominado DSP RBL.

3. Después de que el RBL del DSP realiza una inicialización simple, habilita el núcleo ARM a través del módulo PSC y se duerme. Luego, ARM lee las instrucciones de la ROM local de la RAM en el chip y las ejecuta. Existe el gestor de arranque ARM ROM solidificado de TI, denominado ARM RBL.

4. Después de que el RBL de ARM realiza alguna inicialización, de acuerdo con la configuración del registro BOOTCFG, el cargador de arranque utilizado para iniciar U-Boot se lee desde el lugar especificado, es decir, U-Boot BootLoader, denominado U-Boot BootLoader. como UBL. UBL se puede colocar en Nandflash u obtenerse mediante descarga del puerto serie. Vale la pena mencionar que el formato UBL aquí es (AIS Application Image Script), no el formato BIN habitual.

5. Cuando ARM RBL lee UBL, inicializa, carga y ejecuta UBL de acuerdo con los comandos en formato AIS. Luego, UBL carga y ejecuta U-Boot, U-Boot inicia Linux de acuerdo con los parámetros de inicio y Linux carga el sistema de archivos raíz de acuerdo con los parámetros de inicio.

6. En este momento, Linux en el núcleo ARM se está ejecutando, pero el DSP aún está en estado inactivo.

Después de una serie de inicializaciones, Linux ejecutará las instrucciones de /etc/profile en el sistema de archivos. Si agregamos el comando para insertar el módulo del kernel DSP Link aquí, se generará un archivo de dispositivo llamado dsplink en el directorio /dev. Este módulo central DSP Link puede completar la comunicación y el control con el DSP a través de las interrupciones y configuraciones de PSC mencionadas anteriormente.

7. Luego ejecute nuestro propio programa del lado ARM y use la función de biblioteca DSP Link en el programa del lado ARM para acceder al dispositivo dsplink, logrando así el control y la comunicación del núcleo DSP en el espacio del usuario. En el programa del lado ARM que escribimos, usamos la función de biblioteca DSP Link para cargar la aplicación del lado DSP en la memoria y usamos la función PROC del DSP Link para iniciar el núcleo DSP. Luego, el núcleo ARM y el núcleo DSP se ejecutan de forma independiente y se comunican a través del enlace DSP