Хех... Хотел послать на электроникс на мой ответ по размещении определённых данных во флеше MSP430 да вспомнил, что тут может захотеться более сложного.
=== xdata.h
#define XDATA __attribute__((section(".xdata")))
#define XBSS __attribute__((section(".xbss")))
=== test.c
uint8_t XDATA xd1 = 5;
uint8_t *xptr XDATA = &xd1; // указатель в xdata
uint8_t XBSS xdbuf[1024];
=== ldscript (на базе штатного скрипта для меги128
MEMORY
{
text (rx) : ORIGIN = 0, LENGTH = 128K
data (rw!x) : ORIGIN = 0x800100, LENGTH = 4K
eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 4K
/* sections xdata and xbss */
xdata (rw!x) : ORIGIN = 0x808000, LENGTH = 32K
}
... поскипано
/* это было */
.eeprom :
AT (ADDR (.text) + SIZEOF (.text) + SIZEOF (.data))
{
*(.eeprom*)
__eeprom_end = . ;
} > eeprom
/* это добавили */
.xdata : AT (ADDR(.text) + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.eeprom))
{
PROVIDE (__xdata_start = .);
*(.xdata*)
PROVIDE (__xdata_end = .);
} > xdata
__xdata_load_start = LOADADDR(.xdata);
__xdata_load_end = __xdata_load_start + SIZEOF(.xdata);
.xbss SIZEOF(.xdata) + ADDR(.xdata) :
{
PROVIDE (__xbss_start = .) ;
*(.xbss)
PROVIDE (__xbss_end = .) ;
} > xdata
/*это было*/
/* Stabs debugging sections. */
... поскипано
-
- Вдогонку - ещё в запускалку надо добавить код дла переноса образа .xdata из флеша в ОЗУ - ReAl(07.10.2005 19:30, )