[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".
- [avr-libc-dev] How many bits wide is __data_load_end?,
Bob Paddock <=