Softune и MB90F583 с внешней памятью - или баг или я чего... (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено e-not 22 июня 2004 г. 11:30

Делаю некий регистратор событий, для чего к MB90F583 приделал 1М внешнего ОЗУ с адреса 0x100000.
Проблема возникла при заполнении таблицы событий начальными значениями. Таблица существенно больше 64 К и запись, расположенная на переходе с одного 64 К банка на следующий инициализируется совсем не так, как надо. Это замечено и на железе, и симулятор Softune показывает то же самое.
На приведенном примере в симуляторе можно увидеть, что запись по адресу 0x110000 совсем не такая, как соседние (вместо 11 22 33 33 33 33 там 33 33 33 33 33 33). Softune v3.4. Оптимизация отключена.

//----- nvram.c -----
#pragma section FAR_DATA=NVRAM, locate=0x100000
#pragma section DCLEAR=NVRAM_DCLEAR

__far volatile unsigned long EventBeg;
__far volatile unsigned long EventEnd;

//----- nvram.h -----
__far volatile extern unsigned long EventBeg;
__far volatile extern unsigned long EventEnd;

//----- main.c -----

#include "nvram.h"

typedef struct
{
unsigned char Code;
unsigned char Item;
unsigned long Time;
} SEvent; //структура записи события

void main(void)
{

__far SEvent *CurEvent;

EventBeg = 0x100010;
EventEnd = EventBeg + 50000 * sizeof(SEvent); //размер-50000 записей

//инициализация таблицы событий
CurEvent = (__far SEvent*)EventBeg;
while ((unsigned long)CurEvent <= EventEnd)
{
CurEvent->Code = 0x11;
CurEvent->Item = 0x22;
CurEvent->Time = 0x33333333;
CurEvent++;
}

while (1);
}

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru