avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-libc-dev] How many bits wide is __data_load_end?


From: Bob Paddock
Subject: [avr-libc-dev] How many bits wide is __data_load_end?
Date: Wed, 29 Sep 2010 12:37:55 -0400

In my XMega128A1 project I just crossed the 65535 byte boundry, now my
power up CRC fails.

>From the error that I'm getting, below, I belive that __data_load_end
is only 16 bits wide?

What magic linker fu do I need to change it to 32 bits, in avrxmega7.x
(that I've already customized)?

Should I file a bug report about this in the tracker?

/*
 * LOADADDR(section):Return the absolute LMA of the named section. This
 * is normally the same as ADDR, but it may be different if the AT
 * attribute is used in the output section definition.
*/
   __data_load_start = LOADADDR(.data);
   __data_load_end = __data_load_start + SIZEOF(.data);
   __data_noinit_start = LOADADDR(.noinit);
   __data_noinit_end = __data_noinit_start + SIZEOF(.noinit);


#if( USE_CRC_FLASH_CHECK > 0 )
extern uint16_t __data_load_end[1]; /* Defined by the linker script.
Set to address of last byte of .text+.data section */
#include <util/crc16.h>
static __inline__ uint16_t crc_flash_check_has_error( void );
static __inline__ uint16_t crc_flash_check_has_error( void )
{
  uint8_t  byte_u8;
  uint16_t crc_u16, i;
  uint16_t flash_end_u16 = (uint16_t) &(__data_load_end[0]);
...

Changing from uint16_t to uint32_t in all the correct places results
in "cast of pointer to integer of different size".



reply via email to

[Prev in Thread] Current Thread [Next in Thread]