TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Nocturno en 17 de Noviembre de 2014, 16:04:00

Título: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 17 de Noviembre de 2014, 16:04:00
Hola amigos, necesito un bootloader para PIC24FJ que pueda cargar un firmware nuevo desde una SD card.
He estado googleando y no encuentro nada.

¿Conocéis alguno?

Gracias
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: planeta9999 en 17 de Noviembre de 2014, 17:24:35


Puedes partir de los fuentes del bootloader para puerto serie de las notas aplicativas AN1157/AN1094, y reemplazar las rutinas del puerto serie por las rutinas para leer tarjetas SD FAT/FAT32 de las Microchip Libraries Applications MLA (directorio fileio).

Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: KALLITOS en 17 de Noviembre de 2014, 17:56:30
Mejor aun, hay bootloader microchip desde USB, cambiar el usb por la sd, el manejo de fat32 ya viene implementado.

saludos!!.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: stk500 en 17 de Noviembre de 2014, 18:21:05
aka l tn   http://www.microchip.com/forums/m402873.aspx
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 18 de Noviembre de 2014, 02:48:36
Sí, la opción de modificar un bootloader actual para leer desde SD card es la que estoy barajando al no encontrar nada, pero antes de ponerme a trabajar preferiría encontrarlo hecho.

Abuelo, ese que enlazas es para PIC32
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: stk500 en 18 de Noviembre de 2014, 03:23:31

Abuelo, ese que enlazas es para PIC32
Nieto mio, y no lo puede emigrar a un PIC24FJ?
joder con los Atmel se puede emigrar lo que quiera :P

Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: migsantiago en 18 de Noviembre de 2014, 10:40:58
Hola :)

Manolo, ¿no es mejor venderles un PICkit2 y enseñarles a usar el modo programador offline?  :P
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 18 de Noviembre de 2014, 15:34:37
No me vale, Santiago :)

Debo actualizar dispositivos remotos a través de GPRS con un SIM908
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 18 de Noviembre de 2014, 19:13:09
¿Ese módulo no funciona como un modem, con interface UART y códigos AT?

http://wm.sim.com/producten.aspx?id=1024

Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: migsantiago en 18 de Noviembre de 2014, 22:09:04
Ohh ya veo.

Podrías guardar los datos en una RAM externa. Nosotros usamos una por SPI de 128kB para guardar audio. Lo cachábamos desde GPRS (FTP) y guardábamos todo en la RAM.

Bueno, mejor hazlo por SD Card jeje Se verá más pro y ahorrarás costos.  8)

Saludos.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 19 de Noviembre de 2014, 02:49:24
¿Ese módulo no funciona como un modem, con interface UART y códigos AT?

http://wm.sim.com/producten.aspx?id=1024


Sí, de hecho tengo un RX y un TX al micro.

Ohh ya veo.

Podrías guardar los datos en una RAM externa. Nosotros usamos una por SPI de 128kB para guardar audio. Lo cachábamos desde GPRS (FTP) y guardábamos todo en la RAM.

Bueno, mejor hazlo por SD Card jeje Se verá más pro y ahorrarás costos.  8)

Saludos.

Esa es la idea, además de que el hardware ya está fabricado. MI idea es cargar el firmware por bloques en la SD card y una vez completo y verificado, reiniciar el micro para que se actualice.

Pero visto lo visto me temo que tendré que currármelo, porque no encuentro nada hecho.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: AKENAFAB en 19 de Noviembre de 2014, 03:36:59
Hola amigos!

Hace unas semanas me llego email notificando que descontinuaran el modulo sim908  :5] .
Esto pasa a joder un poco los avances que llevamos,esto se debe a que el chipset que lleva el sim908 lo dejaran de fabricar.

Aunque seguro habra unos cuantos miles xD disponibles por ahora  :D


Saludos!

**Adjunto notificación +++
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 19 de Noviembre de 2014, 03:40:56
Sí, hablé con ellos asustado, y realmente no hay ningún problema.
Han sustituido el SIM908 por el SIM928 que es totalmente compatible tanto a nivel electrónico como de firmware, pero que incorpora nuevas funciones. Así que no tendrás que hacer nada para reemplazar uno por el otro.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 19 de Noviembre de 2014, 08:02:23

Esa es la idea, además de que el hardware ya está fabricado. MI idea es cargar el firmware por bloques en la SD card y una vez completo y verificado, reiniciar el micro para que se actualice.

Pero visto lo visto me temo que tendré que currármelo, porque no encuentro nada hecho.

Nocturno, si la SD va a funcionar como una flash y no va a salir del PCB ¿Por qué no utilizar directamente una Flash?
También puedes utilizar la SD sin sistema de ficheros, guardando directamente la información como datos raw. Así te quitas mucha programación.

Un saludo.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 19 de Noviembre de 2014, 15:25:23
La SD funciona como una flash y no sale de la PCB. Podría haber usado una flash pero no encontré ninguna competitiva en precio en comparación con las SD.
Efectivamente, escribo y leo directamente posiciones de memoria; no tengo programada ninguna FAT ni nada que se le parezca.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 19 de Noviembre de 2014, 16:52:44
Por cierto, me vendría bien alguna utilidad que me represente los bloques de memoria que ocupa un HEX. ¿Conocéis alguna?
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 19 de Noviembre de 2014, 20:29:25
Aquí explica tu paisano cómo funciona un hex: http://www.todopic.com.ar/foros/index.php?topic=23342.0
¿Qué es lo que necesitas exactamente?
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 20 de Noviembre de 2014, 02:46:34
Pues me preguntaba si existirá alguna aplicación que pueda leer un HEX y pintar algo como esto:
(http://www.picprojects.net/serialbootloader/memory_map_bootloader.png)
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Suky en 20 de Noviembre de 2014, 08:45:28
Este... Paint  :mrgreen:

Si no hay nada hecho tenes que armarte tu aplicación que lea el hex desde la memoria SD y la escriba en la flash del micro. Teniendo eso funcionando vas a determinar cuanto espacio necesitas para el bootloader, como para protegerlo en la aplicación especifica y calcular las direcciones de los vectores de remapeo.

Ahí determinaras si con un pagina es suficiente para el bootloader (no se que tamaño tienen las de este micro) y a partir de la segunda es para la aplicación, etc..

Saludos
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 11:47:36
¿Lo que quieres saber es qué espacio de memoria ocupa exactamente el código HEX?
Creo que el compilador te lo da en formato texto (depende del compilador hay diferentes opciones)

También se puede hacer con facilidad en formato texto con una pequeña macro en Python:

Código: Python
  1. # -*- coding: cp1252 -*-
  2. """
  3.   Hex to Map
  4.   Convierte un archivo *.HEX con el código a grabar en un microcontrolador
  5.   en un mapa de memoria en formato texto.
  6.  
  7.   Versión de Python: 2.7
  8.  
  9.   Leyenda:
  10.   Cada punto representa 16 bytes de memoria
  11.   El primer punto arriba a la izquierda representa las posiciones de memoria 0 a 15
  12.   El ultimo punto a la izquierda de la primera linea representa la posición de memoria 1008 a 1023
  13.   .  = espacio libre en la memoria
  14.   o  = espacio de memoria ocupado de 1 a 7 bytes
  15.   O  = espacio de memoria ocupado de 8 a 16 bytes
  16. """
  17. import os
  18.  
  19. ext = '.hex'
  20. dots = 65536/16
  21. cols = 64
  22.  
  23. def main():
  24.    for filename in os.listdir('.'):
  25.       if filename[-len(ext):].lower() == ext:
  26.          hex2map(filename)
  27.  
  28. def hex2map(filename):
  29.    print 'Procesando', filename
  30.    try:
  31.       fi = open(filename, 'rt')
  32.    except:
  33.       return
  34.    hexmap = ['.'] * 4096
  35.    for line in fi:
  36.       if line[0] != ':':
  37.          continue
  38.       data = int(line[1:3],16), int(line[3:7],16)/16, int(line[7:9],16), line[9:41]
  39.       hexlen  = int(line[1:3],16)
  40.       hexdir  = int(line[3:7],16)/16
  41.       hextype = int(line[7:9],16)
  42.       hexdata = line[9:41]
  43.       if hextype == 0 and hexdata.lower() != 'ff' * hexlen:
  44.          if hexlen > 0:
  45.             hexmap[hexdir] = 'o'
  46.          if hexlen > 7:
  47.             hexmap[hexdir] = 'O'
  48.  
  49.    fo = open(filename[:-4] + '.txt', 'wt')
  50.    fo.write('Memory map of "%s"\n' % filename)
  51.    for i in range(0, dots, cols):
  52.       line = '   %s-%sh   %s' % (format(i*16, '04X'), format((i+cols)*16-1, '04X'), ''.join(hexmap[i:i+cols]))
  53.       print line
  54.       fo.write(line + '\n')
  55.    fo.close()
  56.  
  57. main()

Esta macro lee todos los archivos *.hex del directorio y los convierte en archivos de mapa de memoria.

Funciona en Python 2.7
Saludos.

Edito: Corrijo pequeña errata.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 20 de Noviembre de 2014, 13:43:31
¿Y cómo puedo ejecutar la macro?. He descargado Python y he buscado en Google "ejecutar macro python", pero no me aclaro.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: RedPic en 20 de Noviembre de 2014, 14:23:37
Manuelo: Desde una ventana Command o desde "Ejecutar" de Windows despes poner "Bin del executable de Pyhton" seguido del "Nombre del script .py". Si el uno u el otro tienen espacios en blanco debes entrecomillarlos entre dobles comillas. El script no es mas que un fichero de texto cuyo contenido es lo que te ha colocado el amigo Picuino.

Un poné:

Código: DOS
  1. "c:\python27\python.exe" "C:\MisScripts\miejemplo.py"


¡Atención, importante! El tabulado (identado) en Python es fundamental ya que no existen los símbolos para englobar código, como los ( { ó ) } como en C o Java. Un trozo de código empieza tras : y termina cuando se termine el nivel de identación.

Así en el scritp de Picuino se ejecuta en el bucle for todo lo que está identando un tabulador a la derecha del mismo, desde "line = ..." hasta "fo.write..."

Código: Python
  1. for i in range(0, dots, cols):
  2.      line = ''.join(hexmap[i:i+cols])
  3.      line = '   %s-%sh   %s' % (format(i*16, '04X'), format((i+cols)*16-1, '04X'), line)
  4.      print line
  5.      fo.write(line + '\n')

Si a esta última línea se te ocurriese quitarle un nivel de identación, en la forma de:

Código: Python
  1. for i in range(0, dots, cols):
  2.      line = ''.join(hexmap[i:i+cols])
  3.      line = '   %s-%sh   %s' % (format(i*16, '04X'), format((i+cols)*16-1, '04X'), line)
  4.      print line
  5.    fo.write(line + '\n')

Entonces la última línea "fo.write..." se ejecutaría una sola vez tras terminar la ejecución del "for i..."

Ultimamente estoy trabajando en Python y ...  :mrgreen:
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 20 de Noviembre de 2014, 15:25:08
Perfecto, ya lo he podido probar. Muchas gracias por la ayuda paisano.


Picuino, espectacular la macro. Funciona de arte, y con tan pocas líneas de código que impresiona.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 15:43:46
Ya he hablado otras veces en el foro de las virtudes de Python.

Cuando descubrí este lenguaje... fue amor a primera vista.

Nunca me cansaré de alabar sus virtudes que van mucho más allá de lo que has visto en esta macro

En cualquier caso un ejemplo vale más que mil palabras y es experimentando el código donde se ven de verdad las virtudes de un lenguaje.

Adjunto la macro en formato archivo por si alguien más tiene problemas.
La macro hay que colocarla en el mismo directorio que el archivo *.hex y, al ejecutarla, automáticamente lo convierte en un archivo de texto con el mapa de memoria.

Comento que la mejor manera de copiar el código es dando al boton "Insertar Cita", con el que aparece el texto original sin tabulaciones y sin numeración.

Por si te interesa, con el módulo PIL se pueden manejar con facilidad imágenes desde Python. Con unas líneas más se podría generar una imagen de mapa de bits semejante a la que pusiste.

Saludos.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 15:56:14
Adjunto la salida de un ejemplo que he utilizado para que se pueda apreciar:

Código: [Seleccionar]
Memory map of "18F4550_USB_Bootloader.hex"
   0000-03FFh   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
   0400-07FFh   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
   0800-0BFFh   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
   0C00-0FFFh   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
   1000-13FFh   OOOOOOOOOOOOOOOOOOO.............................................
   1400-17FFh   ................................................................
   1800-1BFFh   ................................................................
   1C00-1FFFh   ................................................................
   2000-23FFh   ................................................................
   2400-27FFh   ................................................................
   2800-2BFFh   ................................................................
   2C00-2FFFh   ................................................................
   3000-33FFh   ................................................................
   3400-37FFh   ................................................................
   3800-3BFFh   ................................................................
   3C00-3FFFh   ................................................................
   4000-43FFh   ................................................................
   4400-47FFh   ................................................................
   4800-4BFFh   ................................................................
   4C00-4FFFh   ................................................................
   5000-53FFh   ................................................................
   5400-57FFh   ................................................................
   5800-5BFFh   ................................................................
   5C00-5FFFh   ................................................................
   6000-63FFh   ................................................................
   6400-67FFh   ................................................................
   6800-6BFFh   ................................................................
   6C00-6FFFh   ................................................................
   7000-73FFh   ................................................................
   7400-77FFh   ................................................................
   7800-7BFFh   ................................................................
   7C00-7FFFh   ................................................................
   8000-83FFh   ................................................................
   8400-87FFh   ................................................................
   8800-8BFFh   ................................................................
   8C00-8FFFh   ................................................................
   9000-93FFh   ................................................................
   9400-97FFh   ................................................................
   9800-9BFFh   ................................................................
   9C00-9FFFh   ................................................................
   A000-A3FFh   ................................................................
   A400-A7FFh   ................................................................
   A800-ABFFh   ................................................................
   AC00-AFFFh   ................................................................
   B000-B3FFh   ................................................................
   B400-B7FFh   ................................................................
   B800-BBFFh   ................................................................
   BC00-BFFFh   ................................................................
   C000-C3FFh   ................................................................
   C400-C7FFh   ................................................................
   C800-CBFFh   ................................................................
   CC00-CFFFh   ................................................................
   D000-D3FFh   ................................................................
   D400-D7FFh   ................................................................
   D800-DBFFh   ................................................................
   DC00-DFFFh   ................................................................
   E000-E3FFh   ................................................................
   E400-E7FFh   ................................................................
   E800-EBFFh   ................................................................
   EC00-EFFFh   ................................................................
   F000-F3FFh   ................................................................
   F400-F7FFh   ................................................................
   F800-FBFFh   ................................................................
   FC00-FFFFh   ................................................................
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 16:00:36
Actualizo el programa que tenía una pequeña errata. Ahora en la salida se ve el caracter 'o' o el caracter 'O' dependiendo del número de posiciones ocupadas.


Saludos.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 20 de Noviembre de 2014, 16:06:10
¡Genial!   ((:-)) ((:-)) ((:-))

Código: [Seleccionar]
Memory map of "ex_bootloader.hex"
   0000-03FFh   O...............................................................
   0400-07FFh   ................................................................
   0800-0BFFh   ................................................................
   0C00-0FFFh   ................................................................
   1000-13FFh   ................................................................
   1400-17FFh   ................................................................
   1800-1BFFh   ................................................................
   1C00-1FFFh   ................................................................
   2000-23FFh   ................................................................
   2400-27FFh   ................................................................
   2800-2BFFh   ................................................................
   2C00-2FFFh   ................................................................
   3000-33FFh   ................................................................
   3400-37FFh   ................................................................
   3800-3BFFh   ................................................................
   3C00-3FFFh   ................................................................
   4000-43FFh   ................................................................
   4400-47FFh   ................................................................
   4800-4BFFh   ................................................................
   4C00-4FFFh   ...............................................................O
   5000-53FFh   OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo....
   5400-57FFh   ...............................................................O
   5800-5BFFh   ................................................................
   5C00-5FFFh   ................................................................
   6000-63FFh   ................................................................
   6400-67FFh   ................................................................
   6800-6BFFh   ................................................................
   6C00-6FFFh   ................................................................
   7000-73FFh   ................................................................
   7400-77FFh   ................................................................
   7800-7BFFh   ................................................................
   7C00-7FFFh   ................................................................
   8000-83FFh   ................................................................
   8400-87FFh   ................................................................
   8800-8BFFh   ................................................................
   8C00-8FFFh   ................................................................
   9000-93FFh   ................................................................
   9400-97FFh   ................................................................
   9800-9BFFh   ................................................................
   9C00-9FFFh   ................................................................
   A000-A3FFh   ................................................................
   A400-A7FFh   ................................................................
   A800-ABFFh   ................................................................
   AC00-AFFFh   ................................................................
   B000-B3FFh   ................................................................
   B400-B7FFh   ................................................................
   B800-BBFFh   ................................................................
   BC00-BFFFh   ................................................................
   C000-C3FFh   ................................................................
   C400-C7FFh   ................................................................
   C800-CBFFh   ................................................................
   CC00-CFFFh   ................................................................
   D000-D3FFh   ................................................................
   D400-D7FFh   ................................................................
   D800-DBFFh   ................................................................
   DC00-DFFFh   ................................................................
   E000-E3FFh   ................................................................
   E400-E7FFh   ................................................................
   E800-EBFFh   ................................................................
   EC00-EFFFh   ................................................................
   F000-F3FFh   ................................................................
   F400-F7FFh   ................................................................
   F800-FBFFh   ................................................................
   FC00-FFFFh   ................................................................
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 16:10:37
Gracias Nocturno.
Si te animas a aprender, programar en Python te permite hacer en poco tiempo macros muy útiles.

Adjunto la macro actualizada para que sea compatible también con la versión 3.4 de Python.

Código: Python
  1. # -*- coding: cp1252 -*-
  2. """
  3.   Hex to Map
  4.   Convierte un archivo *.HEX con el código a grabar en un microcontrolador
  5.   en un mapa de memoria en formato texto.
  6.  
  7.   Versión de Python: 2.7 y 3.4
  8.  
  9.   Leyenda:
  10.   Cada punto representa 16 bytes de memoria
  11.   El primer punto arriba a la izquierda representa las posiciones de memoria 0 a 15
  12.   El ultimo punto a la izquierda de la primera linea representa la posición de memoria 1008 a 1023
  13.   .  = espacio libre en la memoria
  14.   o  = espacio de memoria ocupado de 1 a 7 bytes
  15.   O  = espacio de memoria ocupado de 8 a 16 bytes
  16. """
  17. import os
  18.  
  19. ext = '.hex'
  20. dots = int(65536/16)
  21. cols = 64
  22.  
  23. def main():
  24.    for filename in os.listdir('.'):
  25.       if filename[-len(ext):].lower() == ext:
  26.          hex2map(filename)
  27.  
  28. def hex2map(filename):
  29.    print('Procesando', filename)
  30.    try:
  31.       fi = open(filename, 'rt')
  32.    except:
  33.       return
  34.    hexmap = ['.'] * 4096
  35.    for line in fi:
  36.       if line[0] != ':':  continue
  37.       hexlen  = int(line[1:3],16)
  38.       hexdir  = int(int(line[3:7],16)/16)
  39.       hextype = int(line[7:9],16)
  40.       hexdata = line[9:41]
  41.       if hextype == 0 and hexdata.lower() != 'ff' * hexlen:
  42.          if hexlen > 0:
  43.             hexmap[hexdir] = 'o'
  44.          if hexlen > 7:
  45.             hexmap[hexdir] = 'O'
  46.  
  47.    fo = open(filename[:-4] + '.txt', 'wt')
  48.    fo.write('Memory map of "%s"\n' % filename)
  49.    for i in range(0, dots, cols):
  50.       line = '   %s-%sh   %s' % (format(i*16, '04X'), format((i+cols)*16-1, '04X'), ''.join(hexmap[i:i+cols]))
  51.       print(line)
  52.       fo.write(line + '\n')
  53.    fo.close()
  54.  
  55. main()

Saludos.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Nocturno en 20 de Noviembre de 2014, 16:35:47
Alguna vez tuve un contacto con Python y me fascinó, pero nunca le he podido dedicar el tiempo suficiente como para entenderlo hasta el punto de sacarle todo el partido.

Me pasa algo raro con un HEX para 24F.

Tanto en el "Program Memory" del MPLAB
(http://www.todopic.com.ar/foros/imgtiny/33at8b9.jpg)

como en el winpic800 del maestro Sisco
(http://www.todopic.com.ar/foros/imgtiny/1zp0it2.jpg)

veo que la primera dirección ocupada es la 0x400, lo cual coincide con lo que he expresado en el código fuente.
   #define LOADER_SIZE     0x07FF
   #define LOADER_END      0xC00
   #define LOADER_ADDR     (LOADER_END - LOADER_SIZE)

Sin embargo, en tu macro, la primera posición ocupada es la 0x800.
Creo que alguna vez me ha pasado algo así con los HEX de los 24F, y es que las direcciones de memoria son doble de grandes (por aquello de los 16 bits).

Dejo el HEX adjunto por si quieres bichearlo.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Picuino en 20 de Noviembre de 2014, 19:58:58
Claro, en la macro aparece la dirección 800h porque en el archivo *.hex aparece esto:

Código: [Seleccionar]
:080000009A0504000000000055
:100800004200F800801F780081E0A90014028000F7
:10081000040EB3001402880081E0A800013B8800A8
:1008200054052000343B8800A40A2000343B880093

Si separas las columnas para ver las direcciones más claro:

Código: [Seleccionar]
:08 0000 00 9A05040000000000 55
:10 0800 00 4200F800801F780081E0A90014028000 F7
:10 0810 00 040EB3001402880081E0A800013B8800 A8
:10 0820 00 54052000343B8800A40A2000343B8800 93

Verás que las direcciones comienzan en el byte 0x0800  (excepto 8 bytes que hay en la posición cero)

Puede que se deba a que el mplab y el winpic800 se refieren a words de 16 bits, como has comentado.

Un saludo.
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Belgitaes en 21 de Noviembre de 2014, 02:59:12
La Memoria Programa Esta Organizada En Palabras De 16 Bits
 +00000000:   FFFF   = 16 Bits ( 2 Bytes)

Eso Es Porque La Direcion Es Multiplicada Por Dos
Antes De Que Sea Puesto En El Registro

   #define LOADER_SIZE     0x07FF
   #define LOADER_END      0xC00

LOADER_END (0xC00) Menos  LOADER_SIZE0 (x07FF) = 400

dirección de inicio
Código: [Seleccionar]
 10 0800 00  4200 F800 801F 7800 81E0 A900 1402 8000 F7
 
Ahora Cuando Lo Compilas Abres Tu Codigo Con Un Bloc De Notas
 Veras Que Ahora En La Direcion De La Memoria Se Han Invertidos Los Bytes
 Y (F8) Es Ahora Adress High Y (42) Low Adress
 Eso Es Debido A Que Cuando Compilas En El Formato Intel
 Una Palabra De 16 Bits Se Escribe En El Sentido (Byte LSB Seguido De Byte MSB)
 Por Eso Al Leer Tu Codigo En Un Bloc De Notas Los Opcodes Estan Invertidos  
Título: Re: Busco bootloader para PIC24FJ desde SD card
Publicado por: Belgitaes en 22 de Noviembre de 2014, 01:43:41
Me pasa algo raro con un HEX para 24F.

veo que la primera dirección ocupada es la 0x400, lo cual coincide con lo que he expresado en el código fuente.
Sin embargo, en tu macro, la primera posición ocupada es la 0x800.
Dejo el HEX adjunto por si quieres bichearlo.

Para Encontrar Los Datos Reales Escritos En Flash
Hay Que Dividir Entre 2 La Direcion En El Fichero Hex
Direcion (800 / 2) = Direcion 400 Datos Reales Escritos En Flash
Direcion (400 * 2) = Direcion 800 Datos Reales Escritos En El Fichero Hex