Autor Tema: PIC32MZ - Estrenando micro y bugs en el silicio/compilador  (Leído 46680 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #45 en: 16 de Mayo de 2015, 16:03:35 »
No, no he hecho nada para el USB. Tuve muchos problemas con SPI. Ya será tal vez después.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #46 en: 16 de Mayo de 2015, 19:56:45 »
Citar
¡Ojalá! Ahorita el rendimiento que tengo del micro es bajo, puedo hacer toggle de GPIOs a 1MHz. Ya tiene la caché ROM habilitada, pero faltan las optimizaciones PRO.

Quise instalar el modo de evaluación de XC32, desde web, desde consola y ningún método me funciona. Sin optimizaciones el micro es tan lento como sus hermanos menores PIC16/18.  redhot

Citar
Dato curioso... los GPIOs necesitan reloj. El máximo que aceptan también es de 100MHz. No sé aún si es posible hacerlos oscilar tan rápido, sólo he visto en el foro de Microchip que lo han logrado a 20MHz... muy lejanos de mi 1MHz con la versión gratuita del compilador FREE.

he revisado todo el post y he visto esto, ¿a que te refieres? yo pensaba que los compiladores y la optimización solo afectaban al tamaño que el código ocupa en memoria, tambien afecta al rendimiento del micro? funcionas los periféricos a una velocidad menor sin la optimización?

un saludo

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #47 en: 16 de Mayo de 2015, 21:54:30 »
No se en que se basa la optimizacion de Microchip.

Por que un codigo puede optimizarse de muchas formas, se puede optimizar para que sea muy rapido (y que ocupe lo que quiera de memoria), o se puede optimizar para que cosuma la menor cantidad de memoria.
Imagino que buscaran un intermedio de ambos. Por lo que si, una optimizacion significaria un incremento de la velocidad, obviamente respetando el maximo posible segun el clock del periferico.

Lo que si no se como manejara el compilador al tener ese cache y los perifericos a menor velocidad. Me refiero que hasta que sea posible otro cambio del puerto pueden pasar varias instrucciones, eso las rellenara con nops ?
« Última modificación: 16 de Mayo de 2015, 21:59:15 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #48 en: 17 de Mayo de 2015, 04:00:31 »
Hombre esta claro que la manera de escribir el ensamblador va a condicionar el tiempo en el que se ejecuta una función, pero de hay a capar la velocidad del periférico de manera intencionada me parece muy fuerte.

Es que el ejemplo que esta diciendo migsantiago es que consigue el togle de un puerto a 1MHz con respecto a los 24 MHz que se consigue con el pro. Esto es una variación grandisima esto no puede ser por escribir un poco mas de ensamblador.

Si en el while principal solo metes el togle, y con el pro va a 24MHz y sin el pro va a 1MHz es para mandar a tomar por culo a microchip.

Es lógico que con el pro tengas mas memoria, es básicamente lo que hacen otros fabricantes limitandote a 32kb por ejemplo. Pero es la primera vez que escucho que te Capen las capacidades del micro.

Alguien sabe si microchip esta haciendo esto? En su pagina web pone que la optimización afecta solo al tamaño que ocupa el código.

Un saludo

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #49 en: 17 de Mayo de 2015, 10:55:55 »
Sino que realize un pequeño programa con un toggle, y que muestre el disassembly  y vemos :), yo no tengo Harmony , ni XC32, menos el conocimiento para programarlos, asi que si lo bajo para hacerlo voy a estar 1 año. Si mig o vos juaperser pueden proporcionar ese codigo en ASM seria genial para poder verlo.

Hablo de un programa asi:

while(1)
{
  toggle(PIN_x);
}

Y nada mas xD, Yo debo imaginar que es IMPOSIBLE que no llegue a 24.xxxxx Mhz  (suponiendo que divida por 4 al clk)

Seria hecho burdametne:

bandera
     cambio de puerto
     nop
     nop
     nop
     goto bandera

Es todo el codigo e.e
« Última modificación: 17 de Mayo de 2015, 10:58:05 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #50 en: 17 de Mayo de 2015, 11:05:48 »
En cuanto lo vi ayer pensé en hacerlo, no me llevaría ni dos minutos, copias los fuses de otro proyecto pones el while 1 togle y ha ver como va. El problema... no tengo osciloscopio  :( :(  la cosa seria hacer ese while(1) togle bajarse la versión de evaluación de 30 dias y ir cambiando el nivel de optimización  a ver si sube la velocidad.

Un saludo.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #51 en: 17 de Mayo de 2015, 11:37:20 »
De todas formas cuando esta tarde llegue a mi casa lo hago y te enseño el ensamblador a ti KILLER que sabes mucho sobre ensamblador a ver como lo ves.

Un saludo

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #52 en: 17 de Mayo de 2015, 12:11:06 »
Yo no se, a mi me gusta el ASM nada mas.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #53 en: 17 de Mayo de 2015, 12:56:09 »
Citar
Yo no se, a mi me gusta el ASM nada mas.


he visto tus codigos en ensamblador y si que sabes ensamblador.

no habia una manera de ver o crear el equivalente en ensamblador desde el C en MPLABX? nunca lo he usado pero habia escuchado que se podia, pero solo veo en los archivos generados el .o del codigo maquina.

un saludo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #54 en: 17 de Mayo de 2015, 13:14:02 »
Podrias ver la memoria de programa, o fijate que hay una ventana de disassembly, aunque no se si te lo muestra cuando esta simulanod nomas, luego de eso a volver a ver MIPS32 :P

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #55 en: 17 de Mayo de 2015, 13:57:44 »
vale, lo he conseguido en opcines de programa, marcando la opcion de no borrar archivos intermedios.

esto es un codigo en XC32 sin harmony y sin nada, solo fuses y un togle, y la configuracion de que los pines sean digitales, para un PIC32MX250F128

XC32 (1.34)

Código: [Seleccionar]
#include <xc.h>

    //FUSES DE CONFIGURACION
#pragma config DEBUG =      OFF
#pragma config JTAGEN =     OFF
#pragma config ICESEL =     ICS_PGx3
#pragma config PWP =        0x3f
#pragma config BWP =        OFF
#pragma config CP =         OFF

/*** DEVCFG1 ***/

#pragma config FNOSC =      PRIPLL
#pragma config FSOSCEN =    OFF
#pragma config IESO =       OFF
#pragma config POSCMOD =    HS
#pragma config OSCIOFNC =   OFF
#pragma config FPBDIV =     DIV_1
#pragma config FCKSM =      CSDCMD
#pragma config WDTPS =      PS1048576
#pragma config FWDTEN =     OFF
#pragma config WINDIS =     OFF

/*** DEVCFG2 ***/

#pragma config FPLLIDIV =   DIV_5
#pragma config FPLLMUL =    MUL_20
#pragma config FPLLODIV =   DIV_2
#pragma config UPLLIDIV =   DIV_5
#pragma config UPLLEN =     ON

/*** DEVCFG3 ***/

#pragma config USERID =     0xffff
#pragma config PMDL1WAY =   ON
#pragma config IOL1WAY =    ON
#pragma config FUSBIDIO =   ON
#pragma config FVBUSONIO =  OFF

void main (void)
{
    ANSELB = 0;                 //Puerto B digital

    while(1)
    {
       LATBbits.LATB0=~LATBbits.LATB0;
    }
}

el codigo en ensamblador me parece una burrada, y no me entero de nada, el ensamblador de PIC32 lo he tocado muy muy poquito, a ver si tu lo entiendes mejor:

Código: [Seleccionar]
.section .mdebug.abi32
.previous
.gnu_attribute 4, 3
.section .debug_abbrev,info
.Ldebug_abbrev0:
.section .debug_info,info
.Ldebug_info0:
.section .debug_line,info
.Ldebug_line0:
.section .text,code
.Ltext0:
.align 2
.globl main
.LFB2 = .
.file 1 "c:/users/juanjo/desktop/borrar/prueba.x/main.c"
.loc 1 42 0
.set nomips16
.set nomicromips
.ent main
.type main, @function
main:
.frame $fp,8,$31 # vars= 0, regs= 1/0, args= 0, gp= 0
.mask 0x40000000,-4
.fmask 0x00000000,0
.set noreorder
.set nomacro
# End mchp_output_function_prologue
addiu $sp,$sp,-8
.LCFI0:
sw $fp,4($sp)
.LCFI1:
move $fp,$sp
.LCFI2:
.loc 1 43 0
lui $2,%hi(ANSELB)
sw $0,%lo(ANSELB)($2)
.L2:
.loc 1 47 0
lui $2,%hi(LATB)
lw $2,%lo(LATB)($2)
ext $2,$2,0,1
andi $2,$2,0x00ff
nor $2,$0,$2
andi $2,$2,0x00ff
andi $2,$2,0x1
andi $4,$2,0x00ff
lui $3,%hi(LATB)
lw $2,%lo(LATB)($3)
ins $2,$4,0,1
sw $2,%lo(LATB)($3)
.loc 1 48 0
j .L2
nop

.set macro
.set reorder
# Begin mchp_output_function_epilogue
# End mchp_output_function_epilogue
.end main
.LFE2:
.size main, .-main
.section .debug_frame,info
.Lframe0:
.4byte .LECIE0-.LSCIE0
.LSCIE0:
.4byte 0xffffffff
.byte 0x1
.ascii "\000"
.uleb128 0x1
.sleb128 -4
.byte 0x1f
.byte 0xc
.uleb128 0x1d
.uleb128 0x0
.align 2
.LECIE0:
.LSFDE0:
.4byte .LEFDE0-.LASFDE0
.LASFDE0:
.4byte .Lframe0
.4byte .LFB2
.4byte .LFE2-.LFB2
.byte 0x4
.4byte .LCFI0-.LFB2
.byte 0xe
.uleb128 0x8
.byte 0x4
.4byte .LCFI1-.LCFI0
.byte 0x9e
.uleb128 0x1
.byte 0x4
.4byte .LCFI2-.LCFI1
.byte 0xd
.uleb128 0x1e
.align 2
.LEFDE0:
.section .text,code
.Letext0:
.file 2 "c:/program files (x86)/microchip/xc32/v1.34/pic32mx/include/proc/p32mx250f128b.h"
.section .debug_info,info
.4byte 0x2a0
.2byte 0x2
.4byte .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.ascii "GNU C 4.5.2 MPLAB XC32 Compiler v1.34\000"
.byte 0x1
.ascii "main.c\000"
.ascii "C:/Users/JUANJO/Desktop/borrar/Prueba.X\000"
.4byte .Ltext0
.4byte .Letext0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x4
.byte 0x7
.ascii "unsigned int\000"
.uleb128 0x3
.byte 0x4
.byte 0x2
.2byte 0x11b5
.4byte 0x1a5
.uleb128 0x4
.ascii "LATB0\000"
.byte 0x2
.2byte 0x11b6
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1f
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB1\000"
.byte 0x2
.2byte 0x11b7
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1e
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB2\000"
.byte 0x2
.2byte 0x11b8
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1d
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB3\000"
.byte 0x2
.2byte 0x11b9
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1c
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB4\000"
.byte 0x2
.2byte 0x11ba
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1b
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB5\000"
.byte 0x2
.2byte 0x11bb
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x1a
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB7\000"
.byte 0x2
.2byte 0x11bd
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x18
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB8\000"
.byte 0x2
.2byte 0x11be
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x17
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB9\000"
.byte 0x2
.2byte 0x11bf
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x16
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB10\000"
.byte 0x2
.2byte 0x11c0
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x15
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB11\000"
.byte 0x2
.2byte 0x11c1
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x14
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB13\000"
.byte 0x2
.2byte 0x11c3
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x12
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB14\000"
.byte 0x2
.2byte 0x11c4
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x11
.byte 0x2
.byte 0x23
.uleb128 0x0
.uleb128 0x4
.ascii "LATB15\000"
.byte 0x2
.2byte 0x11c5
.4byte 0x6e
.byte 0x4
.byte 0x1
.byte 0x10
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x3
.byte 0x4
.byte 0x2
.2byte 0x11c7
.4byte 0x1bf
.uleb128 0x4
.ascii "w\000"
.byte 0x2
.2byte 0x11c8
.4byte 0x6e
.byte 0x4
.byte 0x20
.byte 0x0
.byte 0x2
.byte 0x23
.uleb128 0x0
.byte 0x0
.uleb128 0x5
.byte 0x4
.byte 0x2
.2byte 0x11b4
.4byte 0x1d3
.uleb128 0x6
.4byte 0x7e
.uleb128 0x6
.4byte 0x1a5
.byte 0x0
.uleb128 0x7
.ascii "__LATBbits_t\000"
.byte 0x2
.2byte 0x11ca
.4byte 0x1bf
.uleb128 0x2
.byte 0x4
.byte 0x7
.ascii "long unsigned int\000"
.uleb128 0x2
.byte 0x4
.byte 0x5
.ascii "long int\000"
.uleb128 0x2
.byte 0x4
.byte 0x5
.ascii "int\000"
.uleb128 0x2
.byte 0x1
.byte 0x6
.ascii "char\000"
.uleb128 0x2
.byte 0x2
.byte 0x7
.ascii "short unsigned int\000"
.uleb128 0x2
.byte 0x2
.byte 0x5
.ascii "short int\000"
.uleb128 0x8
.byte 0x1
.ascii "main\000"
.byte 0x1
.byte 0x29
.byte 0x1
.4byte .LFB2
.4byte .LFE2
.byte 0x1
.byte 0x6e
.uleb128 0x9
.ascii "ANSELB\000"
.byte 0x2
.2byte 0x1167
.4byte 0x260
.byte 0x1
.byte 0x1
.uleb128 0xa
.4byte 0x6e
.uleb128 0xb
.4byte .LASF0
.byte 0x2
.2byte 0x11cb
.ascii "*LATB\000"
.4byte 0x279
.byte 0x1
.byte 0x1
.uleb128 0xa
.4byte 0x1d3
.uleb128 0x9
.ascii "ANSELB\000"
.byte 0x2
.2byte 0x1167
.4byte 0x260
.byte 0x1
.byte 0x1
.uleb128 0xb
.4byte .LASF0
.byte 0x2
.2byte 0x11cb
.ascii "*LATB\000"
.4byte 0x279
.byte 0x1
.byte 0x1
.byte 0x0
.section .debug_abbrev,info
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0x8
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.uleb128 0x1b
.uleb128 0x8
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x1
.uleb128 0x10
.uleb128 0x6
.byte 0x0
.byte 0x0
.uleb128 0x2
.uleb128 0x24
.byte 0x0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0x0
.byte 0x0
.uleb128 0x3
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x4
.uleb128 0xd
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0xb
.uleb128 0xb
.uleb128 0xd
.uleb128 0xb
.uleb128 0xc
.uleb128 0xb
.uleb128 0x38
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x5
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x6
.uleb128 0xd
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x7
.uleb128 0x16
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0x8
.uleb128 0x2e
.byte 0x0
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0xc
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x1
.uleb128 0x40
.uleb128 0xa
.byte 0x0
.byte 0x0
.uleb128 0x9
.uleb128 0x34
.byte 0x0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x3c
.uleb128 0xc
.byte 0x0
.byte 0x0
.uleb128 0xa
.uleb128 0x35
.byte 0x0
.uleb128 0x49
.uleb128 0x13
.byte 0x0
.byte 0x0
.uleb128 0xb
.uleb128 0x34
.byte 0x0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x2007
.uleb128 0x8
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0xc
.uleb128 0x3c
.uleb128 0xc
.byte 0x0
.byte 0x0
.byte 0x0
.section .debug_pubnames,info
.4byte 0x17
.2byte 0x2
.4byte .Ldebug_info0
.4byte 0x2a4
.4byte 0x23b
.ascii "main\000"
.4byte 0x0
.section .debug_pubtypes,info
.4byte 0x1f
.2byte 0x2
.4byte .Ldebug_info0
.4byte 0x2a4
.4byte 0x1d3
.ascii "__LATBbits_t\000"
.4byte 0x0
.section .debug_aranges,info
.4byte 0x1c
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x4
.byte 0x0
.2byte 0x0
.2byte 0x0
.4byte .Ltext0
.4byte .Letext0-.Ltext0
.4byte 0x0
.4byte 0x0
.section .debug_str,info
.LASF0:
.ascii "LATBbits\000"
.section .text,code
.ident "GCC: (Microchip Technology) 4.5.2 MPLAB XC32 Compiler v1.34"
# Begin MCHP vector dispatch table
# End MCHP vector dispatch table
# Microchip Technology PIC32 MCU configuration words
# Configuration word @ 0xbfc00bfc
.section .config_BFC00BFC, code, keep, address(0xBFC00BFC)
.type __config_BFC00BFC, @object
.size __config_BFC00BFC, 4
__config_BFC00BFC:
.word 0x7FFFFFEA
# Configuration word @ 0xbfc00bf8
.section .config_BFC00BF8, code, keep, address(0xBFC00BF8)
.type __config_BFC00BF8, @object
.size __config_BFC00BF8, 4
__config_BFC00BF8:
.word 0xFF74CE5B
# Configuration word @ 0xbfc00bf4
.section .config_BFC00BF4, code, keep, address(0xBFC00BF4)
.type __config_BFC00BF4, @object
.size __config_BFC00BF4, 4
__config_BFC00BF4:
.word 0xFFF97CDC
# Configuration word @ 0xbfc00bf0
.section .config_BFC00BF0, code, keep, address(0xBFC00BF0)
.type __config_BFC00BF0, @object
.size __config_BFC00BF0, 4
__config_BFC00BF0:
.word 0x7FFFFFFF


aunque creo que aqui lo que vale es esto:

si te fijas aqui:

Código: [Seleccionar]
.L2:
.loc 1 47 0
lui $2,%hi(LATB)
lw $2,%lo(LATB)($2)
ext $2,$2,0,1
andi $2,$2,0x00ff
nor $2,$0,$2
andi $2,$2,0x00ff
andi $2,$2,0x1
andi $4,$2,0x00ff
lui $3,%hi(LATB)
lw $2,%lo(LATB)($3)
ins $2,$4,0,1
sw $2,%lo(LATB)($3)
.loc 1 48 0
j .L2
nop

se ve un nop al final :?

un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #56 en: 17 de Mayo de 2015, 14:00:35 »
Hola, el rendimiento del micro se ve afectado por la lectura de la ROM. El micro corre más rápido que la lectura de la ROM. Para eso se usa la caché, que va pre-leyendo por donde cree que el micro va a pasar. Sin embargo, bajo ejecuciones inesperadas del programa la caché no va a usarse y se tienen que cargar las siguientes instrucciones desde la ROM.

Para poder ver la conversión de C a ASM ingresen este comando:

Código: [Seleccionar]
${MP_CC_DIR}\xc32-objdump -S ${ImageDir}\${PROJECTNAME}.${IMAGE_TYPE}.elf > list.lst
En project properties, building, execute this line after build.

Esto es lo que genera:

Código: [Seleccionar]
  while(1)
       ++APP_DEBUG_PIN;
9d002428: 3c02bf86 lui v0,0xbf86
9d00242c: 8c440120 lw a0,288(v0)
9d002430: 7c8400c0 ext a0,a0,0x3,0x1
9d002434: 38840001 xori a0,a0,0x1
9d002438: 8c430120 lw v1,288(v0)
9d00243c: 7c8318c4 ins v1,a0,0x3,0x1
9d002440: ac430120 sw v1,288(v0)
9d002444: 0b40090b j 9d00242c <APP_Read_SD_Card_Table+0x84>
9d002448: 00000000 nop

Tengo optimización 1, que es la que ofrece el compilador gratuito.

Ya se acabó mi periodo de prueba del completo.

Saludos.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #57 en: 17 de Mayo de 2015, 14:03:49 »
Esto es lo mismo con optimización 0.

Código: [Seleccionar]
   while(1)
       ++APP_DEBUG_PIN;
9d003e64: 3c02bf86 lui v0,0xbf86
9d003e68: 8c420120 lw v0,288(v0)
9d003e6c: 7c4200c0 ext v0,v0,0x3,0x1
9d003e70: 304200ff andi v0,v0,0xff
9d003e74: 24420001 addiu v0,v0,1
9d003e78: 30420001 andi v0,v0,0x1
9d003e7c: 304400ff andi a0,v0,0xff
9d003e80: 3c03bf86 lui v1,0xbf86
9d003e84: 8c620120 lw v0,288(v1)
9d003e88: 7c8218c4 ins v0,a0,0x3,0x1
9d003e8c: ac620120 sw v0,288(v1)
9d003e90: 0b400f99 j 9d003e64 <APP_Read_SD_Card_Table+0xc0>
9d003e94: 00000000 nop

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #58 en: 17 de Mayo de 2015, 14:13:51 »
Y este se soluciona con el nivel de optimización pro? El micro siempre deberá cargar instrucciones desde la ROM... ante interrupciones por ejemplo? No?

Lo que tampoco me gusta es ese nop al final, de todas formas un nop no es como para retrasar un togle de 20mhz a 1mhz.

Llegaste a probar lo del togle con tu versión de evaluación pro con un osciloscopio?

Un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #59 en: 17 de Mayo de 2015, 14:37:49 »
Es curioso... muchas funciones terminan en un NOP. Quién sabe para qué.

No, en esos entonces no probé ya eso.

Puedes activar la evaluación si estás interesado en ver cómo optimiza... yo ya no puedo activarla...

http://www.microchip.com/xcdemo/GetDemoLicense.aspx