Autor Tema: FreeRTOS C30 - PIC24  (Leído 3423 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
FreeRTOS C30 - PIC24
« en: 07 de Julio de 2012, 01:56:38 »
Hola que tal amigos, estoy en el intento de empezar a hacer algunas pruebas con algunos PIC24 con RTOS. Uso MPLAB-X y no pude compilar el demo de ejemplo para los PIC24 así que decidí hacer un proyecto nuevo con solo lo básico para que pudiera compilar correctamente y a partir de ahi trabajar.
Después de unas horas corrigiendo errores y aprendiendo me queda un solo error que no pude sacar  :(. El compilador me arroja esto:

Código: [Seleccionar]
CLEAN SUCCESSFUL (total time: 1s)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `D:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Crear_Task_simple.X.production.hex
make[2]: Entering directory `D:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X'
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/_ext/1728301206/croutine.o.d -o build/default/production/_ext/1728301206/croutine.o ../Source/croutine.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/_ext/1728301206/list.o.d -o build/default/production/_ext/1728301206/list.o ../Source/list.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/_ext/1728301206/queue.o.d -o build/default/production/_ext/1728301206/queue.o ../Source/queue.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/_ext/1728301206/tasks.o.d -o build/default/production/_ext/1728301206/tasks.o ../Source/tasks.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/_ext/1728301206/timers.o.d -o build/default/production/_ext/1728301206/timers.o ../Source/timers.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe" -g -omf=elf -x c -c -mcpu=24HJ128GP502 "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/include" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC" "-ID:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Source" -MMD -MF build/default/production/Main.o.d -o build/default/production/Main.o Main.c
"C:\Program Files (x86)\Microchip\MPLAB C30\bin\pic30-gcc.exe"   -omf=elf -mcpu=24HJ128GP502  -o dist/default/production/Crear_Task_simple.X.production.elf build/default/production/_ext/1728301206/croutine.o build/default/production/_ext/1728301206/list.o build/default/production/_ext/1728301206/queue.o build/default/production/_ext/1728301206/tasks.o build/default/production/_ext/1728301206/timers.o build/default/production/Main.o        -Wl,--defsym=__MPLAB_BUILD=1,--heap=128,--stack=256,--script="C:\Program Files (x86)\Microchip\MPLAB C30\support\PIC24H\gld\p24HJ128GP502.gld"
build/default/production/_ext/1728301206/tasks.o(.text+0x48)c:\program files (x86)\microchip\mplab c30\bin\bin\..\bin/pic30-elf-ld.exe: Dwarf Error: found address size '236', this reader can not handle sizes greater than '4'.
: In function `.LM7':
: undefined reference to `_pxPortInitialiseStack'
build/default/production/_ext/1728301206/tasks.o(.text+0x5c): In function `.LM10':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0xca): In function `.LM24':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x1b2): In function `.LM64':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x256): In function `.LM82':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x260): In function `.LM85':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x29a): In function `.LM93':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x308): In function `.LM113':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x34a): In function `.LM119':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x3e8): In function `.LM139':
: undefined reference to `_xPortStartScheduler'
build/default/production/_ext/1728301206/tasks.o(.text+0x3fc): In function `.LM144':
: undefined reference to `_vPortEndScheduler'
build/default/production/_ext/1728301206/tasks.o(.text+0x414): In function `.LM151':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x4ae): In function `.LM174':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x4b8): In function `.LM178':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x4be): In function `.LM180':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x6a2): In function `.LM238':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x6fc): In function `.LM249':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/tasks.o(.text+0x720): In function `.LM259':
: undefined reference to `_vApplicationIdleHook'
build/default/production/_ext/1728301206/tasks.o(.text+0x7e8): In function `.LM295':
: undefined reference to `_pvPortMalloc'
build/default/production/_ext/1728301206/tasks.o(.text+0x7fa): In function `.LM297':
: undefined reference to `_pvPortMalloc'
build/default/production/_ext/1728301206/tasks.o(.text+0x814): In function `.LM299':
: undefined reference to `_vPortFree'
build/default/production/_ext/1728301206/tasks.o(.text+0xe8): In function `.LM29':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/tasks.o(.text+0xea): In function `.LM29':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/tasks.o(.text+0x160): In function `.LM47':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/tasks.o(.text+0x162): In function `.LM47':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/tasks.o(.text+0x194): In function `.LM58':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/tasks.o(.text+0x196): more undefined references to `_vPortYield' follow
build/default/production/_ext/1728301206/queue.o(.text+0x98)c:\program files (x86)\microchip\mplab c30\bin\bin\..\bin/pic30-elf-ld.exe: Dwarf Error: found address size '28', this reader can not handle sizes greater than '4'.
: In function `.LM22':
: undefined reference to `_pvPortMalloc'
build/default/production/_ext/1728301206/queue.o(.text+0xae): In function `.LM25':
: undefined reference to `_pvPortMalloc'
build/default/production/_ext/1728301206/queue.o(.text+0xd8): In function `.LM31':
: undefined reference to `_vPortFree'
build/default/production/_ext/1728301206/queue.o(.text+0xf0): In function `.LM36':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x11e): In function `.LM42':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x12c): In function `.LM45':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x140): In function `.LM50':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x144): In function `.LM52':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x162): In function `.L31':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x216): In function `.LM81':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x274): In function `.LM94':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x282): In function `.LM97':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x298): In function `.LM102':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x29c): In function `.LM104':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x2ba): In function `.L72':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x364): In function `.LM133':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x36c): In function `.LM135':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x38c): In function `.LM143':
: undefined reference to `_vPortFree'
build/default/production/_ext/1728301206/queue.o(.text+0x390): In function `.LM144':
: undefined reference to `_vPortFree'
build/default/production/_ext/1728301206/queue.o(.text+0x462): In function `.LM167':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x492): In function `.LM175':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x494): In function `.LM176':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x4c4): In function `.LM184':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x4ce): In function `.LM187':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x4e0): In function `.LM189':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x506): In function `.LM197':
: undefined reference to `_vPortEnterCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x51c): In function `.LM199':
: undefined reference to `_vPortExitCritical'
build/default/production/_ext/1728301206/queue.o(.text+0x118): In function `.LM41':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/queue.o(.text+0x11a): In function `.LM41':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/queue.o(.text+0x188): In function `.LM58':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/queue.o(.text+0x18a): In function `.LM58':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/queue.o(.text+0x24e): In function `.LM89':
: undefined reference to `_vPortYield'
build/default/production/_ext/1728301206/queue.o(.text+0x250): more undefined references to `_vPortYield' follow
build/default/production/_ext/1728301206/croutine.o(.text+0xa)c:\program files (x86)\microchip\mplab c30\bin\bin\..\bin/pic30-elf-ld.exe: Dwarf Error: found address size '122', this reader can not handle sizes greater than '4'.
: In function `.LM2':
: undefined reference to `_pvPortMalloc'
make[2]: Leaving directory `D:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X'
make[1]: Leaving directory `D:/Datos (Disco)/Electronica/Pruebas FreeRTOS/Crear Task simple.X'
make[2]: *** [dist/default/production/Crear_Task_simple.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 20s)

Creo que la fuente del problema es donde dice:

Código: [Seleccionar]
build/default/production/_ext/1728301206/tasks.o(.text+0x48)c:\program files (x86)\microchip\mplab c30\bin\bin\..\bin/pic30-elf-ld.exe: Dwarf Error: found address size '236', this reader can not handle sizes greater than '4'.
: In function `.LM7':

Pero no tengo idea que pueda significar. Les dejo el link por si quieren revisar es un .rar con el source del RTOS y el proyecto de MPLAB por si quieren revisar las configuraciones del proyecto. He visto en internet mucha info pero para PIC18 nada para PIC24 con C30.
Como verán el programa no tiene nada, solo los include y el main vacio, por ahora solo quisiera que compile correctamente para poder a partir de ahi comenzar a trabajar.

Link: Proyecto y fuente de FreeRTOS - PIC24 - C30

Desde ya muchas gracias.
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: FreeRTOS C30 - PIC24
« Respuesta #1 en: 07 de Julio de 2012, 14:21:58 »
Ok, finalmente pude resolverlo. Estaba usando la versión 3.12 del C30 y estaba algo vieja así que baje la última de la web de microchip la v3.31 muchos errores se solucionaron. Luego observe que había que poner la funcion:

Código: [Seleccionar]
void vApplicationIdleHook( void )
Que debe estar definida por petición del RTOS. Así compilo perfectamente les dejo el .rar con todo el proyecto por si alguien quiere tenerlo.

Proyecto MPLAB-X con FreeRTOS PIC24 y C30 FUNCIONANDO
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder