Autor Tema: Reducir tamaño de los binarios *.hex  (Leído 4832 veces)

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Reducir tamaño de los binarios *.hex
« en: 13 de Mayo de 2012, 08:43:18 »
Estoy compilando un programa en ensamblador que está al final de la memoria.
Cuando ensamblo consigo un binario *.HEX que ocupa toda la memoria y es muy grande.
¿Cómo puedo conseguir que el fichero binario sólo tenga las zonas programadas?  (Sólo el vector reset y las últimas posiciones)

Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Reducir tamaño de los binarios *.hex
« Respuesta #1 en: 13 de Mayo de 2012, 19:58:54 »
existia una opcion para evitar eso, es mas, a mi por defecto me lo compilaba como tu querias y lo quise cambiar al contrario para probar, ahora el caso es que compilador usas? Yo recuerdo que en el mplab miraba por las opciones del linker o algo asi y por alli te ponia algo, pero no recuerdo bien.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Reducir tamaño de los binarios *.hex
« Respuesta #2 en: 14 de Mayo de 2012, 01:52:13 »
Mi a ver si puede ser esto:

Project -> Build options -> Project -> Pestaña MPLAB PIC32 Linker -> Opción "Remove unused sections"

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Reducir tamaño de los binarios *.hex
« Respuesta #3 en: 14 de Mayo de 2012, 07:08:49 »
existia una opcion para evitar eso, es mas, a mi por defecto me lo compilaba como tu querias y lo quise cambiar al contrario para probar, ahora el caso es que compilador usas? Yo recuerdo que en el mplab miraba por las opciones del linker o algo asi y por alli te ponia algo, pero no recuerdo bien.
Utilizo el C18 C30 bajo MPLAB.

Mi a ver si puede ser esto:

Project -> Build options -> Project -> Pestaña MPLAB PIC32 Linker -> Opción "Remove unused sections"

Project -> Build options -> Project -> Pestaña MPLAB  LINK30 -> Opción "Remove unused sections"

No me funciona. Sigue produciendo un *.hex de 180kb en vez de 12kb. Puede que esa opción sirva para no incluir código de funciones que no se utilicen.


En mi caso el problema es que lo llena todo de ceros:

Código: [Seleccionar]
:020000040000fa
:08000000487f0400000000002d
:020000040000fa
:080200000040da000000fe00de
:020000040000fa
:0200000401f009
:04000000f7ff000006
:020000040000fa
:0200000401f009
:04000400ff7f00007a
:020000040000fa
:0200000401f009
:040008007fff000076
:020000040000fa
:0200000401f009
:04001400ffff0000ea
:020000040000fa
:1000080000010000000100000001000000010000e4
:1000180000010000000100000001000000010000d4
:1000280000010000000100000001000000010000c4
:1000380000010000000100000001000000010000b4
:1000480000010000000100000001000000010000a4
:100058000001000000010000000100000001000094
:100068000001000000010000000100000001000084
:100078000001000000010000000100000001000074
:100088000001000000010000000100000001000064
:100098000001000000010000000100000001000054
:1000a8000001000000010000000100000001000044
:1000b8000001000000010000000100000001000034
:1000c8000001000000010000000100000001000024
:1000d8000001000000010000000100000001000014
:1000e8000001000000010000000100000001000004
:0800f8000001000000010000fe
:020000040000fa
:1001080000010000000100000001000000010000e3
:1001180000010000000100000001000000010000d3
:1001280000010000000100000001000000010000c3
:1001380000010000000100000001000000010000b3
:1001480000010000000100000001000000010000a3
:100158000001000000010000000100000001000093
:100168000001000000010000000100000001000083
:100178000001000000010000000100000001000073
:100188000001000000010000000100000001000063
:100198000001000000010000000100000001000053
:1001a8000001000000010000000100000001000043
:1001b8000001000000010000000100000001000033
:1001c8000001000000010000000100000001000023
:1001d8000001000000010000000100000001000013
:1001e8000001000000010000000100000001000003
:0801f8000001000000010000fd
:020000040000fa
:1002080000000000000000000000000000000000e6
:1002180000000000000000000000000000000000d6
:1002280000000000000000000000000000000000c6
:1002380000000000000000000000000000000000b6
:1002480000000000000000000000000000000000a6
:100258000000000000000000000000000000000096
:100268000000000000000000000000000000000086
:100278000000000000000000000000000000000076
:100288000000000000000000000000000000000066
:100298000000000000000000000000000000000056
:1002a8000000000000000000000000000000000046
:1002b8000000000000000000000000000000000036
:1002c8000000000000000000000000000000000026
:1002d8000000000000000000000000000000000016
:1002e8000000000000000000000000000000000006
:1002f80000000000000000000000000000000000f6
:1003080000000000000000000000000000000000e5
:1003180000000000000000000000000000000000d5
:1003280000000000000000000000000000000000c5
:1003380000000000000000000000000000000000b5
:1003480000000000000000000000000000000000a5
:100358000000000000000000000000000000000095
:100368000000000000000000000000000000000085
:100378000000000000000000000000000000000075
:100388000000000000000000000000000000000065
:100398000000000000000000000000000000000055
:1003a8000000000000000000000000000000000045
:1003b8000000000000000000000000000000000035
:1003c8000000000000000000000000000000000025
:1003d8000000000000000000000000000000000015
:1003e8000000000000000000000000000000000005
:1003f80000000000000000000000000000000000f5
:1004080000000000000000000000000000000000e4
:1004180000000000000000000000000000000000d4
:1004280000000000000000000000000000000000c4
:1004380000000000000000000000000000000000b4
:1004480000000000000000000000000000000000a4
:100458000000000000000000000000000000000094
:100468000000000000000000000000000000000084
:100478000000000000000000000000000000000074
:100488000000000000000000000000000000000064
:100498000000000000000000000000000000000054
:1004a8000000000000000000000000000000000044
:1004b8000000000000000000000000000000000034
:1004c8000000000000000000000000000000000024
:1004d8000000000000000000000000000000000014
:1004e8000000000000000000000000000000000004
:1004f80000000000000000000000000000000000f4
:1005080000000000000000000000000000000000e3
:1005180000000000000000000000000000000000d3
:1005280000000000000000000000000000000000c3
:1005380000000000000000000000000000000000b3
:1005480000000000000000000000000000000000a3
:100558000000000000000000000000000000000093
:100568000000000000000000000000000000000083
:100578000000000000000000000000000000000073
:100588000000000000000000000000000000000063
:100598000000000000000000000000000000000053
:1005a8000000000000000000000000000000000043
:1005b8000000000000000000000000000000000033
:1005c8000000000000000000000000000000000023
:1005d8000000000000000000000000000000000013
:1005e8000000000000000000000000000000000003
:1005f80000000000000000000000000000000000f3
:1006080000000000000000000000000000000000e2
:1006180000000000000000000000000000000000d2
:1006280000000000000000000000000000000000c2
:1006380000000000000000000000000000000000b2
:1006480000000000000000000000000000000000a2
:100658000000000000000000000000000000000092
:100668000000000000000000000000000000000082
:100678000000000000000000000000000000000072
:100688000000000000000000000000000000000062
:100698000000000000000000000000000000000052
:1006a8000000000000000000000000000000000042
:1006b8000000000000000000000000000000000032
:1006c8000000000000000000000000000000000022
:1006d8000000000000000000000000000000000012
:1006e8000000000000000000000000000000000002
:1006f80000000000000000000000000000000000f2
:1007080000000000000000000000000000000000e1
:1007180000000000000000000000000000000000d1
:1007280000000000000000000000000000000000c1
:1007380000000000000000000000000000000000b1
:1007480000000000000000000000000000000000a1
:100758000000000000000000000000000000000091
:100768000000000000000000000000000000000081
:100778000000000000000000000000000000000071
:100788000000000000000000000000000000000061
:100798000000000000000000000000000000000051
:1007a8000000000000000000000000000000000041
:1007b8000000000000000000000000000000000031
:1007c8000000000000000000000000000000000021
:1007d8000000000000000000000000000000000011
:1007e8000000000000000000000000000000000001
:1007f80000000000000000000000000000000000f1
:1008080000000000000000000000000000000000e0
:1008180000000000000000000000000000000000d0
:1008280000000000000000000000000000000000c0
:1008380000000000000000000000000000000000b0
:1008480000000000000000000000000000000000a0
:100858000000000000000000000000000000000090
:100868000000000000000000000000000000000080
:100878000000000000000000000000000000000070
:100888000000000000000000000000000000000060
:100898000000000000000000000000000000000050
:1008a8000000000000000000000000000000000040
:1008b8000000000000000000000000000000000030
:1008c8000000000000000000000000000000000020
:1008d8000000000000000000000000000000000010
:1008e8000000000000000000000000000000000000
:1008f80000000000000000000000000000000000f0
:1009080000000000000000000000000000000000df
:1009180000000000000000000000000000000000cf
:1009280000000000000000000000000000000000bf
:1009380000000000000000000000000000000000af
:10094800000000000000000000000000000000009f
:10095800000000000000000000000000000000008f
:10096800000000000000000000000000000000007f
:10097800000000000000000000000000000000006f
:10098800000000000000000000000000000000005f
:10099800000000000000000000000000000000004f
:1009a800000000000000000000000000000000003f
:1009b800000000000000000000000000000000002f
:1009c800000000000000000000000000000000001f
:1009d800000000000000000000000000000000000f
:1009e80000000000000000000000000000000000ff
:1009f80000000000000000000000000000000000ef
:100a080000000000000000000000000000000000de
:100a180000000000000000000000000000000000ce
:100a280000000000000000000000000000000000be
:100a380000000000000000000000000000000000ae
:100a4800000000000000000000000000000000009e
:100a5800000000000000000000000000000000008e
:100a6800000000000000000000000000000000007e
:100a7800000000000000000000000000000000006e
:100a8800000000000000000000000000000000005e
:100a9800000000000000000000000000000000004e
:100aa800000000000000000000000000000000003e
:100ab800000000000000000000000000000000002e
:100ac800000000000000000000000000000000001e
:100ad800000000000000000000000000000000000e
:100ae80000000000000000000000000000000000fe
:100af80000000000000000000000000000000000ee
:100b080000000000000000000000000000000000dd
:100b180000000000000000000000000000000000cd
:100b280000000000000000000000000000000000bd
:100b380000000000000000000000000000000000ad
:100b4800000000000000000000000000000000009d
:100b5800000000000000000000000000000000008d
:100b6800000000000000000000000000000000007d
:100b7800000000000000000000000000000000006d
:100b8800000000000000000000000000000000005d
:100b9800000000000000000000000000000000004d
:100ba800000000000000000000000000000000003d
:100bb800000000000000000000000000000000002d
:100bc800000000000000000000000000000000001d
:100bd800000000000000000000000000000000000d
:100be80000000000000000000000000000000000fd
:100bf80000000000000000000000000000000000ed
:100c080000000000000000000000000000000000dc
:100c180000000000000000000000000000000000cc
:100c280000000000000000000000000000000000bc
:100c380000000000000000000000000000000000ac
:100c4800000000000000000000000000000000009c
:100c5800000000000000000000000000000000008c
:100c6800000000000000000000000000000000007c
:100c7800000000000000000000000000000000006c
:100c8800000000000000000000000000000000005c
:100c9800000000000000000000000000000000004c
:100ca800000000000000000000000000000000003c
:100cb800000000000000000000000000000000002c
:100cc800000000000000000000000000000000001c
:100cd800000000000000000000000000000000000c
:100ce80000000000000000000000000000000000fc
:100cf80000000000000000000000000000000000ec
:100d080000000000000000000000000000000000db
:100d180000000000000000000000000000000000cb
:100d280000000000000000000000000000000000bb
:100d380000000000000000000000000000000000ab
:100d4800000000000000000000000000000000009b
:100d5800000000000000000000000000000000008b
:100d6800000000000000000000000000000000007b
:100d7800000000000000000000000000000000006b
:100d8800000000000000000000000000000000005b
:100d9800000000000000000000000000000000004b
:100da800000000000000000000000000000000003b
:100db800000000000000000000000000000000002b
:100dc800000000000000000000000000000000001b
:100dd800000000000000000000000000000000000b
:100de80000000000000000000000000000000000fb
:100df80000000000000000000000000000000000eb
:100e080000000000000000000000000000000000da
:100e180000000000000000000000000000000000ca
:100e280000000000000000000000000000000000ba
:100e380000000000000000000000000000000000aa
:100e4800000000000000000000000000000000009a
:100e5800000000000000000000000000000000008a
:100e6800000000000000000000000000000000007a
:100e7800000000000000000000000000000000006a
:100e8800000000000000000000000000000000005a
:100e9800000000000000000000000000000000004a
:100ea800000000000000000000000000000000003a
:100eb800000000000000000000000000000000002a
:100ec800000000000000000000000000000000001a
:100ed800000000000000000000000000000000000a
:100ee80000000000000000000000000000000000fa
:100ef80000000000000000000000000000000000ea
:100f080000000000000000000000000000000000d9
:100f180000000000000000000000000000000000c9
:100f280000000000000000000000000000000000b9
:100f380000000000000000000000000000000000a9
:100f48000000000000000000000000000000000099
:100f58000000000000000000000000000000000089
:100f68000000000000000000000000000000000079
:100f78000000000000000000000000000000000069
:100f88000000000000000000000000000000000059
:100f98000000000000000000000000000000000049
:100fa8000000000000000000000000000000000039
:100fb8000000000000000000000000000000000029
:100fc8000000000000000000000000000000000019
:100fd8000000000000000000000000000000000009
:100fe80000000000000000000000000000000000f9
:100ff80000000000000000000000000000000000e9
:1010080000000000000000000000000000000000d8
:1010180000000000000000000000000000000000c8
:1010280000000000000000000000000000000000b8
:1010380000000000000000000000000000000000a8
:101048000000000000000000000000000000000098
:101058000000000000000000000000000000000088
:101068000000000000000000000000000000000078
:101078000000000000000000000000000000000068
:101088000000000000000000000000000000000058
:101098000000000000000000000000000000000048
:1010a8000000000000000000000000000000000038
:1010b8000000000000000000000000000000000028
:1010c8000000000000000000000000000000000018
:1010d8000000000000000000000000000000000008
:1010e80000000000000000000000000000000000f8
:1010f80000000000000000000000000000000000e8
:1011080000000000000000000000000000000000d7
:1011180000000000000000000000000000000000c7
:1011280000000000000000000000000000000000b7
:1011380000000000000000000000000000000000a7
:101148000000000000000000000000000000000097
:101158000000000000000000000000000000000087
:101168000000000000000000000000000000000077
:101178000000000000000000000000000000000067
:101188000000000000000000000000000000000057
:101198000000000000000000000000000000000047
:1011a8000000000000000000000000000000000037
:1011b8000000000000000000000000000000000027
:1011c8000000000000000000000000000000000017
:1011d8000000000000000000000000000000000007
:1011e80000000000000000000000000000000000f7
:1011f80000000000000000000000000000000000e7
:1012080000000000000000000000000000000000d6
:1012180000000000000000000000000000000000c6
:1012280000000000000000000000000000000000b6
:1012380000000000000000000000000000000000a6
:101248000000000000000000000000000000000096
:101258000000000000000000000000000000000086
:101268000000000000000000000000000000000076
:101278000000000000000000000000000000000066
:101288000000000000000000000000000000000056
:101298000000000000000000000000000000000046
:1012a8000000000000000000000000000000000036
:1012b8000000000000000000000000000000000026
:1012c8000000000000000000000000000000000016
:1012d8000000000000000000000000000000000006
:1012e80000000000000000000000000000000000f6
:1012f80000000000000000000000000000000000e6
:1013080000000000000000000000000000000000d5
:1013180000000000000000000000000000000000c5
:1013280000000000000000000000000000000000b5
:1013380000000000000000000000000000000000a5
:101348000000000000000000000000000000000095
:101358000000000000000000000000000000000085
:101368000000000000000000000000000000000075
:101378000000000000000000000000000000000065
:101388000000000000000000000000000000000055
:101398000000000000000000000000000000000045
:1013a8000000000000000000000000000000000035
:1013b8000000000000000000000000000000000025
:1013c8000000000000000000000000000000000015
:1013d8000000000000000000000000000000000005
:1013e80000000000000000000000000000000000f5
:1013f80000000000000000000000000000000000e5
:1014080000000000000000000000000000000000d4
:1014180000000000000000000000000000000000c4
:1014280000000000000000000000000000000000b4
:1014380000000000000000000000000000000000a4
:101448000000000000000000000000000000000094
:101458000000000000000000000000000000000084
:101468000000000000000000000000000000000074
:101478000000000000000000000000000000000064
:101488000000000000000000000000000000000054
:101498000000000000000000000000000000000044
:1014a8000000000000000000000000000000000034
:1014b8000000000000000000000000000000000024
:1014c8000000000000000000000000000000000014
:1014d8000000000000000000000000000000000004
...
...
Hasta el final de la memoria en el que está el bootloader.

El programa es de un bootloader que comienza al final de la memoria:

Código: [Seleccionar]
;********************************************************************
;       Tiny Bootloader         dsPIC series            Size=100words
;       claudiu.chiculita@ugal.ro
;       http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
;********************************************************************
        .equ __30F4012, 1
        .include "p30f4012.inc"
        .include "fuses.inc"


.equ    FOSC,   7370000
.equ    baud,   19200
.equ    IdTypePIC, 0x75
.equ    max_flash, 0x8000          ;dsPIC max address
.equ    first_address, 0x7E3C

        .global   __reset

        .section .bss
buff:   .space 4
buffer: .space 128+6

;REGISTRY:
;W0     imediat, param nvmcon
;W1     Receive
;W2     PUTCH           need?
;W3     count rcv
;W4     memory buffer pointer
;W5     ^
;W6     for
;W7     temp
;W8
;W9     Erase/Write Flag
;W10    delay1
;W11    delay2
;W12    EA Write
;W13    crc
;W14    void(black hole)
;W15    stack

.macro PUTCH car
       MOV.B    \car, W2
       MOV      W2,U1TXREG
       .endm

.text
       ;*************************************
       ; Relocated user Reset Vector
       ;*************************************
.org first_address
       CLR      W0
       CLR      W0
       CLR      W0
       CLR      W0

       ;*************************************
       ; Bootloader
       ;*************************************
__reset:
BootloaderEntry:
       MOV      #__SP_init, W15
       MOV      #__SPLIM_init, W0
       MOV      W0, SPLIM
       NOP

init_uart:
       ;Initialize and Enable UART1 for Tx and Rx
       MOV      #0x8000, W0     ;bit15=UARTEN  bit10=ALTIO
       MOV      W0, U1MODE
       MOV      #0x0400, W0     ;bit10=UTXEN
       MOV      W0, U1STA
       ; U1BRG = (((FOSC/baud) / 64) - 1) = 5  for 19200baud @ 7.37MHz
       MOV      #(((FOSC/baud)-32)/64), W0    ;?Initialize Baud rate (divide INSTRUCTION Cycle)
       MOV      W0, U1BRG                     ;to baud
       ;BSET     U1MODE, #ALTIO                ;Enable UART2

       ;wait for computer
       MOV      #buff, W4
       RCALL    Receive
       SUB.B    #0xC1, W1                     ;Expect C1h
       BRA NZ,  way_to_exit
       PUTCH    #IdTypePIC                    ;send PIC type

MainLoop:
       PUTCH    #'K'                          ; "-Everything OK, ready and waiting."

mainl:
       CLR      W13                           ;chksum
       MOV      #buff, W4
       MOV      #4,  W6

dorcv4:
       RCALL    Receive
       DEC      W6, W6
       BRA      NZ, dorcv4
       MOV      buff, W12
       MOV      buff+2, W3
       MOV      W3, TBLPAG
       ;test W3.H to find out what to do
       MOV      #(96+1), W6

dorcvB:
       RCALL    Receive
       DEC      W6, W6
       BRA      NZ, dorcvB
       CP0      W13                           ;check crc
       BRA      Z, chksumok

ziieroare:                                    ;CRC failed
       PUTCH    #'N'
       BRA      mainl

chksumok:
       ;-----------------------------------------------------
       ;ERASE
       TBLWTL   W0,[W12]                      ;dummy
       MOV      #0x4041,W0
       CLRWDT
       RCALL    Key_Sequence
       ;Load_Write_Latch:
       MOV      #buffer,W4
       DO       #31, edtbl3
       TBLWTL.B [W4++], [W12++]
       TBLWTL.B [W4++], [W12--]
       TBLWTH.B [W4++], [W12]
edtbl3:
       INC2     W12, W12
       MOV      #0x4001,W0
       RCALL    Key_Sequence
       BRA      MainLoop

;-------------------------------------------------------------
Key_Sequence:           ; Expects a NVMCON value in W0
       MOV      W0,NVMCON
       MOV      #0x55,W0                      ; Write the key sequence
       MOV      W0,NVMKEY
       MOV      #0xAA,W0
       MOV      W0,NVMKEY
       BSET     NVMCON,#WR                    ; Start the write cycle
       NOP
       NOP
       RETURN

;-------------------------------------------------------------
Receive:
       MOV     #(1000*(FOSC/1000)/(7*4096)), W10 ; ms waiting
rpt2:          
       MOV     #1000, W11
rpt1:
       BTSS     U1STA, #URXDA
       BRA      norcv
       MOV      U1RXREG,W1                    ;return read data in W
       MOV.B    W1, [W4++]
       ADD.B    W1, W13, W13                  ;compute checksum
       RETURN
norcv:
       CLRWDT
       DEC      W11, W11
       BRA      NZ, rpt1
       DEC      W10, W10
       BRA      NZ, rpt2
timeout:
way_to_exit:
       CLR     U1MODE                        ; deactivate UART
       BRA     first_address

.end

Saludos.
« Última modificación: 14 de Mayo de 2012, 10:44:06 por Picuino »

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Reducir tamaño de los binarios *.hex
« Respuesta #4 en: 14 de Mayo de 2012, 10:25:53 »
Pero si usas C18 como es que has cambiado las opciones en el link30? Para el C18 es el MPASMWIN, MCC18 y MPLINK

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Reducir tamaño de los binarios *.hex
« Respuesta #5 en: 14 de Mayo de 2012, 10:43:48 »
Me he confundido  :oops:, es la costumbre de programar para los PIC18.
En este caso el programa es un bootloader para un dsPIC30F4012 y estoy utilizando el compilador C30 ensamblador ASM30 con LINK30
(ya lo he corregido)

Saludos.
« Última modificación: 14 de Mayo de 2012, 10:47:55 por Picuino »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Reducir tamaño de los binarios *.hex
« Respuesta #6 en: 14 de Mayo de 2012, 12:55:24 »
He estado toqueteando y no consigo generar un HEX pequeñito. ¿Es posible que sea por culpa de que mi compilador es versión demo y no optimiza?, ¿el tuyo es full?

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Reducir tamaño de los binarios *.hex
« Respuesta #7 en: 14 de Mayo de 2012, 13:18:11 »
Era full hasta que pasó el periodo de prueba.
Eso será, gracias Nocturno.

Saludos.