PIC24E escribiendo la dirección y el incremento para la programación de ICSP

0

Estoy intentando programar mi Microchip PIC24EP512GU814 en modo ICSP. El recurso que estoy usando para hacer esto es el Microchip dsPIC33E / PIC24E Especificaciones de programación Flash (70619B) y la Microchip dsPIC33EP / PIC24EP Hoja de datos (70616g) . Hasta ahora he programado un Arduino para ingresar al modo ICSP y borrar todo el chip, pero actualmente estoy atascado al escribir en el chip.

La sección 6.6 tiene una tabla 6-5 en la página 31 que muestra los pasos para escribir en el chip. El paso # 6 tiene el siguiente fragmento de código:

MOV #DestinationAddress<15:0>, W2
MOV #DestinationAddress<23:16>, W3

En contexto: estas instrucciones se ejecutarán una vez que se hayan ingresado 128 instrucciones en los cierres de escritura. Este fragmento de código define la ubicación en la memoria de código en la que se copian las instrucciones de los cierres de escritura.

Actualmente no puedo averiguar con qué dirección debo comenzar y cuánto aumenta la dirección en las próximas 128 instrucciones.

He mirado la Sección 4.1, Figura 4-1 de la Hoja de datos (70616g) y la Sección 2.3, Figura 2-2 de Especificaciones de programación (70619B) . ¿Es la memoria de código lo mismo que la Memoria Flash del Programa de Usuario en estas cifras? Como tal, ¿debería la dirección de destino en el fragmento de código anterior comenzar en 0x000200 ?

Dado que esto establece una escritura para 128 instrucciones, ¿se incrementa en 128 = 0x80 ? ¿O se incrementa por el número de bits escritos (24x128 = 3072 = 0xC00 )?

    
pregunta Daniel

2 respuestas

1

Comenzarías en 0x0 , porque las cosas allí (IVT, etc.) son parte de lo que quieres subir. El direccionamiento PIC siempre es confuso debido a su insistencia en arquitecturas extrañas con palabras de 14 o 24 bits, pero creo que la dirección de destino se incrementaría en 0x100 para 128 instrucciones. , "La dirección de destino debe ser un múltiplo de 0x100", así como el diagrama de flujo que se muestra en la figura 3-4.

    
respondido por el Jim Paris
1

Su pregunta se reduce básicamente a cómo se aborda la memoria del programa. Sí, la memoria "flash" y la memoria "programa" se refieren principalmente a la misma memoria. En realidad, el espacio de direcciones de la memoria del programa contiene otras cosas, pero parece que estás interesado en que la memoria ejecutable comience en 0.

Todas las partes dsPIC y derivadas tienen palabras de instrucción de 24 bits. Sin embargo, la memoria del programa se trata en palabras de 16 bits. Se utilizan dos direcciones por palabra de instrucción. La primera dirección (par) se refiere a los 16 bits bajos de cada instrucción, y la siguiente (impar) se refiere a los 8 bits superiores. Los 8 bits altos de esa palabra no están implementados. Por lo tanto, una porción de 128 instrucciones usa 256 direcciones y contiene 384 bytes de memoria real.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas