Разработка ПО для RTU188 |
Ответить |
Автор | |
Новичок Присоединился: 20 Сентябрь 2006 Online Status: Offline Публикации: 11 |
Опубликовано: 20 Май 2007 16:17 |
Ситуация следующая..RTU188-BS, программа, написанная на borland pascal 7.0. Все нормально работает, если скомпиллированный файл меньше 6 кбайт. Если файл превышает этот размер, то портится информация по приемо-передатчикам, формируемая RTU188. Причем, программа не зависает, все прерывания отрабатываются штатно. Впечатление такое, что не хватает памяти и данные портятся из-за сохранений регистров в стек, но в программе описано переменных на 600 слов и, кажется, что со стеком они не должны пересекаться. Впору вызывать шамана с бубном( Может кто знает в чем дело?
|
|
Действительный член Присоединился: 08 Март 2006 Категория: Russian Federation Online Status: Offline Публикации: 440 |
|
Попробуйте поупражняться с директивой {$M stack, heap_min, heap_max}. По умолчанию stack_size стоит 16384. С уважением, SAN |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Новичок Присоединился: 06 Март 2004 Категория: Russian Federation Online Status: Offline Публикации: 14 |
|
Если среди Ваших обработчиков прерываний есть таймерный и он построен по схеме {шагХ; вызов старого обработчика; шагУ}, то могут пригодиться мои воспоминания. Была, помнится, в 2001г. у RTU-188 фишка - отложенная запись на флешь, случающаяся аккурат в обработчике таймера (IRQ0). То есть прога успешно закрывает модифицированный файл, но реальная запись на флешь не происходит. А где-то через время ХХХ родной FBIOS-овский обработчик INT8 вдруг решает произвести реальную запись кэша на флешь и на этой операции сильно задерживается. Правда, прерывания он при этом разрешает, поэтому почти для всех ничего не заметно. Время идет, IRQ0/INT8 возникает снова и снова, и наконец запись заканчивается и происходит возврат из того самого обработчика, который инициировал запись. Все это время вызова INT8 были по сути вложенными в тот самый задержанный вызов и если Ваш обработчик по замыслу должен был выдавать строгую последовательность ...шагХ-шагУ-шагХ-шагУ-шагХ-шагУ..., то реально может случиться ...шагХ-шагХ-шагУ-шагХ-шагУ-шагУ.. |
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |