fusibles Attiny, bits de bloqueo para el archivo ELF

1

Estoy tratando de incrustar código en mi proyecto Attiny4 que establecerá los fusibles y los bits de bloqueo (en AtmelStudio 7). Copié / pegué el código que Atmel sugiere aquí :

#include <avr/io.h>

typedef struct _tagConfig
{
    unsigned char f1;
} Config;

typedef struct _tagLock
{
    unsigned char f1;
} Lock;

typedef struct _tagSig
{
    unsigned char f1;
    unsigned char f2;
    unsigned char f3;
} Signature;

Config __config __attribute__((section(".config"))) =
{
    f1 : 0xfb, // Set CKOUT
};

Lock __lock __attribute__((section(".lock"))) =
{
    f1 : 0xfc, // Further programming and verification disabled
};

Signature __sig __attribute__((section(".signature"))) =
{
    f1 : 0x03,
    f2 : 0x90,
    f3 : 0x1e,
};

Luego trato de compilar y falla directamente con los siguientes errores:

attiny4-fan.elf section '.config' will not fit in region 'config'
region 'config' overflowed by 1 bytes
ld returned 1 exit status
recipe for target 'attiny4-fan.elf' failed

Parece que no puedo encontrar otra información sobre cómo hacer esto para un ATTiny4 / 5/9/10. La hoja de datos parece mencionar algo sobre las ubicaciones, pero como nunca he hecho esto antes, especialmente para el Attiny4 con el que estoy jugando aquí, no tengo idea de cómo proceder.

Esta es la salida de

avr-objdump --section-headers


Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000000c8  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800040  00800040  0000013c  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000003  00800040  00800040  0000013c  2**0
                  ALLOC
  3 .comment      00000030  00000000  00000000  0000013c  2**0
                  CONTENTS, READONLY
  4 .note.gnu.avr.deviceinfo 0000003c  00000000  00000000  0000016c  2**2
                  CONTENTS, READONLY
  5 .debug_info   000002ab  00000000  00000000  000001a8  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_abbrev 00000284  00000000  00000000  00000453  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_line   000000d3  00000000  00000000  000006d7  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    000000f6  00000000  00000000  000007aa  2**0
                  CONTENTS, READONLY, DEBUGGING

Mientras tanto, también descubrí que en el archivo de encabezado ATtiny DFP para Attiny4 / 5/9/10, se definen las siguientes macros (ATtiny9 como ejemplo):

/* Fuses */
#define FUSE_MEMORY_SIZE 0
/* Lock Bits */
#define __LOCK_BITS_EXIST
/* Signature */
#define SIGNATURE_0 0x1E
#define SIGNATURE_1 0x90
#define SIGNATURE_2 0x08

¿Por qué FUSE_MEMORY_SIZE se define como 0?

¿Puede alguien ayudarme a que mi ELF contenga fusibles y brocas de bloqueo?

    
pregunta danielheinrich

0 respuestas

Lea otras preguntas en las etiquetas