El proceso específico del programa de descarga keil 2: enlace de hardware

introducción

        Este blog presentará el hardware por el que pasará el archivo de imagen durante el proceso de descarga del programa y presentará brevemente el acuerdo entre ellos.

1. Conexión de hardware

Figura 1 Conexión de hardware

        Después de conectar la PC, jlink y chip con la línea ubs y la línea swd, en el software keil en la PC, seleccionamos el emulador correspondiente y seleccionamos el protocolo de descarga.

 Figura 2 Seleccionar emulador

 Figura 3 Configurar el emulador

        En la Figura 2, elegimos el descargador jlink Como se puede ver en la Figura 3, el SN de jlink es 20090937 (1 en la Figura 2), la interfaz de descarga es la interfaz SW (2 en la Figura 2) y la ID del el chip es (en la Figura 2 3)

        En la parte 3 de la Figura 2, podemos ver 0x2BA01477, que es la ID del SWJ-DP dentro del chip, y ARM CoreSight SW-DP en Nombre del dispositivo es el nombre del componente de depuración que usamos. CoreSight es una arquitectura de depuración propuesta por ARM para hacer frente a la compleja depuración y seguimiento en SOC. Contiene varios componentes. Cuando depuramos en keil, se admiten los datos, los puntos de interrupción y los pasos individuales que se ven en cada ventana de keil. Operaciones como la ejecución. por esta arquitectura.

Dos, DAP

1. Protocolo SWD

        El jlink y el chip están conectados a través de la interfaz SWD (Serial Wire Debug), utilizando el protocolo SWD. Para ser precisos, SW-DP solo admite el protocolo SW, SWJ-DP admite los protocolos jtag y sw, y el blogger usa sw-dp, por lo que los artículos siguientes y subsiguientes se refieren a la interfaz SW-DP a menos que se especifique lo contrario. SWD puede leer y escribir los registros del chip mediante la transmisión de paquetes de datos. SWD es un protocolo de dos hilos para acceder a la interfaz de depuración ARM. Es parte de la especificación de arquitectura de interfaz de depuración ARM (Especificación de arquitectura de interfaz de depuración ARM) y es un reemplazo para JTAG. La capa física de SWD consta de dos líneas:

SWDIO: línea de datos bidireccional

SWCLK: la línea de reloj impulsada por el host

En la Figura 1 podemos ver que SW-DP está conectado a AHB-DP a través del bus DAP.

Figura 4

        Esta parte es el hardware involucrado en la interfaz SWD. Se puede acceder directamente al puerto de depuración de cable serie (SW-DP) conectándose a SWDIO/SWCLK. El SW-DP tiene acceso a uno o más puertos de acceso (AP) a través de los cuales se registra el resto del sistema. Un AP importante para las CPU de la serie M de Cortex es el AHB-AP, que es el maestro en el bus AHB interno. En otras palabras, AHB-AP tiene acceso al mapa de memoria del núcleo interno. Dado que la memoria flash interna, la SRAM, los componentes de depuración y los periféricos están mapeados en la memoria, el AHB-AP puede controlar todo el dispositivo, incluida la programación. Todo el proceso de operación de SWD se lleva a cabo en etapas, la señal de reloj se ingresa mediante el pin SWCLK y la señal de datos se ingresa y emite mediante el pin SWDIO. Primero, el depurador opera el SW-DP, determina los parámetros del registro AP y opera el mapa de memoria Cortex.

2, AHB-AP

        SW-DP y AHB-AP se comunican a través del bus DAP. La dirección en el bus DAP es de 32 bits, y los 8 bits superiores se utilizan para seleccionar a qué dispositivo acceder. Se puede ver que se pueden colgar un máximo de 256 dispositivos. en el equipo DAP bus. Dentro del procesador M3, solo se usa una dirección de dispositivo y las 255 restantes se pueden usar para conectar el puerto de acceso (AP) al bus DAP. Cuando los datos se transmiten a la interfaz DAP, el siguiente paso es conectarse a un dispositivo AP llamado "AHB-AP", que es equivalente a un puente de bus, que se utiliza para convertir el comando del bus DAP en la transmisión de datos. en el bus AHB y luego se conecta a la red de bus dentro del M3. De esta forma, se cubre todo el espacio de direccionamiento del M3, incluido el registro de control de depuración establecido en el NVIC. En los productos de la serie CoreSight, hay varios tipos de dispositivos AP, incluidos APB-AP y JTAG-AP. Como sugiere el nombre, APB-AP se usa para generar acciones de transmisión de datos de bus APB, mientras que JTAG-AP se usa para controlar las interfaces de prueba tradicionales basadas en JTAG.

        AHB-AP está ubicado entre el sistema de memoria de CM3 y el módulo de interfaz de depuración (SWJ-DP/SW_DP), actuando como un puente de bus. Para la mayoría de las transferencias de datos básicas entre el host de depuración y el sistema CM3, solo se necesitan 3 registros en el AHB-AP, estos son: Palabra de control y estado (CSW), Registro de dirección de transferencia (TAR), Lectura/escritura de datos ( DRW).

        El registro CSW puede controlar la dirección de la transferencia (lectura/escritura), el tamaño de la transferencia y el tipo de transferencia. El registro TAR indica la dirección de transferencia, mientras que el registro DRW contiene los datos que se transferirán (la transferencia se inicia cuando se accede al registro). Los datos en DRW son consistentes con lo que realmente se muestra en el bus, por lo que para las transferencias de bytes y medias palabras, el hardware de depuración debe cambiar correctamente los datos resultantes para alinearlos con el LSB. Por ejemplo, si desea realizar una transferencia de media palabra en la dirección 0x1002, debe colocar los datos en [31:16] de DRW. AHB-AP puede generar transferencias no alineadas, pero no realizará automáticamente cambios de círculo en los datos de destino de acuerdo con el desplazamiento de la dirección. Este agujero debe taparse con el software de depuración: ya sea cambios manuales de círculo o descomponer el acceso no alineado en varios accesos alineados. .

        Hay otros registros en el AHB-AP que brindan funcionalidad adicional. Por ejemplo, AHB-AP proporciona 4 registros bancarizados y la función de incremento automático de direcciones para acelerar el acceso a datos en un pequeño rango de direcciones continuas. En el registro CSW, también hay un bit llamado MasterType. Por lo general, debe establecerse en 1 para informar al hardware que participa en la transmisión de datos AHB-AP que el depurador inicia la transmisión de datos. Sin embargo, un depurador también puede borrar este bit para hacerse pasar por el núcleo del procesador. De esta forma, el hardware que recibe datos en AHB pensará que se trata de una transferencia de datos iniciada por el kernel y, por lo tanto, funcionará con normalidad. Esta función se puede usar con fines de prueba, especialmente para periféricos con FIFO, para saber cómo se comporta de manera diferente cuando un depurador accede a ellos.

3. Tabla de ROM

        Hablando de esto, hay un problema que no se ha explicado, JLink está conectado al módulo SW-DP a través de la línea SW, ¿cómo sabes dónde está el AHB-AP? Aquí viene la tabla de ROM.
        La tabla ROM es parte del sistema de depuración incluido en el núcleo M3 y se usa para detectar automáticamente qué componentes de depuración están incluidos en un chip CM3.
        CM3 tiene un mapa de memoria predefinido y contiene componentes de depuración estándar, pero los nuevos dispositivos Cortex-M pueden contener diferentes componentes de depuración, y los fabricantes de chips también pueden modificar los componentes de depuración al implementar CM3. Para permitir que la herramienta de depuración detecte los componentes específicos incluidos en el sistema de depuración, se proporciona esta tabla de ROM, que registra las direcciones de la NVIC y cada bloque de función de depuración.
        La tabla de ROM se encuentra en 0xE00F_F000. Al analizar el contenido de la tabla ROM, se puede calcular la ubicación del sistema y los componentes de depuración en el sistema de memoria. Después de detectar los componentes de depuración, el depurador puede mirar sus registros de ID para determinar qué componentes están disponibles en el sistema.
        En la tabla ROM de CM3, el contenido de la primera entrada debe ser: el desplazamiento de la dirección de entrada de NVIC en relación con la dirección de entrada de la tabla ROM. El valor predeterminado de la primera entrada en la tabla ROM es 0xFFF0F003, y la función del campo de bit [1:0] es bastante especial: indica que el dispositivo correspondiente a esta entrada existe y que hay entradas posteriores detrás de esta entrada ( es decir, esta entrada de entrada no es la última entrada). De esta forma, a través de la primera entrada, sabemos que hay un NVIC en el sistema, y ​​hay una segunda entrada, y la dirección del NVIC se puede calcular como 0xE00F_F000+0xFFF0_F000=0xE000_E000.
        La tabla de ROM predeterminada se muestra en la figura. Pero debido a que el fabricante del chip puede agregar, eliminar y reemplazar algunos componentes opcionales con otros componentes de depuración de CoreSigth, la tabla ROM del chip será diferente de la predeterminada para reflejar los cambios correspondientes.

Tabla de ROM predeterminada de Cortex-M3.

        Los dos bits más bajos del valor se utilizan para indicar si el dispositivo existe (bit[1]) y si hay otras entradas detrás (bit[0]). En circunstancias normales, NVIC, DWT y FPB siempre deben existir, por lo que los dos últimos bits siempre son 1. Sin embargo, TPIU y ETM pueden eliminarse y posiblemente reemplazarse por otros componentes de depuración de la familia CoreSight.
        La parte de orden superior del valor se utiliza para dar el desplazamiento de la dirección de entrada del componente correspondiente en relación con la dirección de entrada de la tabla ROM. Por ejemplo, dirección de entrada NVIC = 0xE00F_F000 + 0xFFF0_F000 = 0xE000_E000 (se ignora el bit de acarreo)
        Al desarrollar herramientas de depuración, es necesario verificar cada componente de depuración de la tabla ROM uno por uno, porque es inevitable que algunos chips CM3 alternativos personalice los componentes de depuración y modifique la tabla ROM, y la dirección obtenida al calcular la tabla ROM se puede tomar para tomar una decisión.

        En este punto, podemos saber que después de que Keil haga clic en el botón Descargar, JLink conectará la interfaz SW-DP del chip a través de la línea SW, se comunicará con la interfaz interna AHB-AP, AHB-AP se comunicará con el bus y luego acceder a todo el espacio de direcciones 4G (se puede acceder a todas las direcciones del chip).

tres, destello

        Una vez que los datos se transmiten al bus AHB (bus AHB, bus APB, los dos están conectados a través del puente del bus), se pueden transmitir a todo el espacio de direcciones 4G en el núcleo M3 y todos los recursos en el núcleo M3 se pueden El flash se monta en el AHB en el bus. Generalmente, el flash para almacenar programas se monta en el bus AHB, porque el bus AHB es mucho más rápido que el bus APB, y los periféricos de baja velocidad como uart, temporizador, etc., esta palabra se explicará más adelante) contiene el código del programa, cuanto mayor sea la velocidad de acceso natural, mejor, y se monta en el bus AHB. El diagrama de conexión del bus de conexión flash y el núcleo M4 (la diferencia entre los núcleos M3 y M4 no es muy grande, y la diferencia entre los dos no está involucrada en este artículo, los lectores pueden pensar que los dos son iguales en este serie de artículos) se muestra en la figura.

 

         El núcleo M3 tiene 3 buses: el bus de instrucciones (I-BUS), el bus de datos (D-BUS) y el bus del sistema (System-BUS). Los tres buses tienen su propio bus de direcciones, bus de datos y bus de control. El núcleo M3 es una estructura Haval, por lo que hay un bus de instrucciones y un bus de datos, y los dos toman valores en paralelo. El bus de instrucciones obtiene datos (instrucciones) de FLASH a través de la interfaz XIP conectada a la matriz del bus, el bus de datos obtiene datos de flash y lee y escribe datos de RAM a través de XIP, y el bus del sistema accede a otros recursos. Consulte la ROM en la imagen de arriba, y su función se presentará en el siguiente artículo.

        Hasta ahora, hemos presentado el hardware que usamos y los protocolos que usamos. El blogger mismo no realizó una investigación profunda sobre protocolos como SWD y DAP. No son muy relevantes para el tema de este artículo. Más introducciones Es el proceso de circulación de datos.

Supongo que te gusta

Origin blog.csdn.net/zichuanning520/article/details/132252353
Recomendado
Clasificación