[an error occurred while processing this directive]
AVR + IAR + External RAM
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Артём 13 декабря 2005 г. 16:46

К AVR подключена внешняя память. Пытаюсь расположить в ней массивы данных следующим образом:
подключаю к проекту файл ram.c


#include "CommonTypes.h"
#define UART_RX_BUFFER_SIZE 1024
#pragma location=0x1100
__no_init volatile unsigned char UartRxBuffer0[UART_RX_BUFFER_SIZE];
__no_init volatile unsigned char UartRxBuffer1[UART_RX_BUFFER_SIZE];
__no_init volatile unsigned char GPSEvntBuffer[512];
#define PACKET_RX_BUFFER_SIZE 512
__no_init volatile unsigned char PacketRxBuffer0[PACKET_RX_BUFFER_SIZE];
__no_init volatile unsigned char PacketRxBuffer1[PACKET_RX_BUFFER_SIZE];
__no_init volatile unsigned char PacketRxBuffer01[PACKET_RX_BUFFER_SIZE];
__no_init volatile unsigned char PacketRxBuffer11[PACKET_RX_BUFFER_SIZE];
__no_init volatile struct TAddressBookRecord AddressBook[8];
__no_init volatile struct TSendTimers SendTimers;
__no_init volatile struct TSendData SendData[ALARM_SEND_NUMBER];
__no_init volatile struct TSendCtrlData SendCtrlData;
__no_init volatile unsigned char SenderPacketBuffer[512];

и создаю файл ram.h


#include "CommonTypes.h"
#define UART_RX_BUFFER_SIZE 1024
#pragma location=0x1100
extern __no_init volatile unsigned char UartRxBuffer0[UART_RX_BUFFER_SIZE];
extern __no_init volatile unsigned char UartRxBuffer1[UART_RX_BUFFER_SIZE];
extern __no_init volatile unsigned char GPSEvntBuffer[512];
#define PACKET_RX_BUFFER_SIZE 512
extern __no_init volatile unsigned char PacketRxBuffer0[PACKET_RX_BUFFER_SIZE];
extern __no_init volatile unsigned char PacketRxBuffer1[PACKET_RX_BUFFER_SIZE];
extern __no_init volatile unsigned char PacketRxBuffer01[PACKET_RX_BUFFER_SIZE];
extern __no_init volatile unsigned char PacketRxBuffer11[PACKET_RX_BUFFER_SIZE];
extern __no_init volatile struct TAddressBookRecord AddressBook[8];
extern __no_init volatile struct TSendTimers SendTimers;
extern __no_init volatile struct TSendData SendData[ALARM_SEND_NUMBER];
extern __no_init volatile struct TSendCtrlData SendCtrlData;
extern __no_init volatile unsigned char SenderPacketBuffer[512];

При компиляции выдаётся ошибка:

Error[e16]: Segment NEAR_N (size: 0x54f align: 0) is too long for segment definition. At least 0x2af more
bytes needed. The problem occurred while processing the segment placement command
"-Z(DATA)NEAR_N=_..X_EXT_NV_BASE-_..X_EXT_NV_END", where at the moment of placement the
available memory ranges were "DATA:E60-10FF"
Reserved ranges relevant to this placement:
DATA:100-39F CSTACK
DATA:3A0-79F RSTACK
DATA:7A0-88E NEAR_I
DATA:88F-E5F NEAR_Z

Как с этим бороться?
Что это вообще значит?

Даже если ошибка не возникает, то не все переменные видны в AVRStudio. Почему?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru