PIC32: "Código de 16 bits" no funciona (muchos errores "código de operación desconocido")

2

Tengo muy poco proyecto de prueba para PIC32MX440F512H, que se construye (con XC32 v1.21) y funciona correctamente.

Luego traté de generar un código de 16 bits, configuré la casilla de verificación "Generar código de 16 bits", apareció la opción adicional: -mips16

Pero ahora recibo muchos errores, aquí hay una parte del resultado:

 make -f nbproject/Makefile-Orion.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'D:/projects/trcomp_bundle/project_common/fw_test_pic32/appl/fw_test_pic32.X'
make  -f nbproject/Makefile-Orion.mk dist/Orion/debug/fw_test_pic32.X.debug.elf
make[2]: Entering directory 'D:/projects/trcomp_bundle/project_common/fw_test_pic32/appl/fw_test_pic32.X'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s: Assembler messages:
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:223: Error: unrecognized opcode 'rdpgpr'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:226: Error: unknown opcode 'mfc0 $k0,$13'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:229: Error: unknown opcode 'mfc0 $k1,$14'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:232: Error: illegal operands 'srl'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:238: Error: illegal operands 'sw'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:241: Error: unknown opcode 'mfc0 $k1,$12'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:244: Error: illegal operands 'sw'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:247: Error: unrecognized opcode 'ins'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:250: Error: unrecognized opcode 'ins'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:253: Error: unknown opcode 'mtc0 $k1,$12'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:256: Error: illegal operands 'sw'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:277: Error: illegal operands 'sw'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:280: Error: illegal operands 'sw'
d:\home\progr\LOCALS~1\Temp\ccnv5akn.s:283: Error: illegal operands 'sw'
 .................

Intenté limpiar el proyecto y reconstruirlo, el resultado es el mismo. Si elimino esa opción, el proyecto se genera con éxito nuevamente.

¿Qué podría estar mal?

    
pregunta Dmitry Frank

1 respuesta

1

Finalmente, encontré el motivo y lo arreglé, con la ayuda del usuario andersm de los foros de microchip, aquí está mi tema .

En breve: uso el puerto RTOS TNKernel PIC32 y hay una macro para declarar los ISR del sistema. Lástima que el compilador no apuntara al lugar donde se incluye esta macro.

Se corrigió agregando el atributo nomips16 . Bugreport se envía al autor del puerto PIC32 de TNKernel.

    
respondido por el Dmitry Frank

Lea otras preguntas en las etiquetas