CPU Card 5070 Octagon |
Ответить | Страница <123 |
Автор | |
Новичок Присоединился: 06 Ноябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 10 |
Опубликовано: 10 Ноябрь 2003 17:24 |
Хотелось бы все-таки понять, можно ли как-то решить на OCTAGON 5070 задачу, поставленную Алексеем Григорьевым (т.е. запись в энергонезависимую память порядка 20КБ в конце каждого 12мс цикла за время порядка 1мс)? Встречается такая задача в системах управления не так уж редко: как правило, нужно сохранять текущее состояние задачи и начинать последующую работу после включения питания с запомненного состояния (это могут быть блокировки, триггерная логика, рекурсивные алгоритмы и т.д.). Варианты типа "записывать не все" или "записывать по частям" здесь не проходят - в общем случае в одном цикле может измениться все и сразу. Вопрос важен еще и потому, что у разработчиков процессорных плат в последнее время наметилась тенденция отказа от SRAM с батарейным питанием в пользу Flash - у Fastwel CPU686E, например, ее тоже нет. Вот и хотелось бы понять, как решать на этих платах подобные задачи. Может быть, кто-нибудь может предложить приемлемый вариант, ведь на старых платах OCTAGON это делалось без всяких проблем.
|
|
С уважением,
Лопаткин Б.В. |
|
Новичок Присоединился: 25 Июнь 2003 Online Status: Offline Публикации: 29 |
|
Наверное, в такой постановке задачу решить другим способом нельзя.
Но, давайте все-таки разберемся с постановкой. Вот цифры: - цикл программы 12 мс - перезагрузка длится несколько секунд (1,5-минимум) Вопрос : в чем философия или физический смысл сохранения данных на КАЖДОМ цикле ? А если несчастье случилось на 1 секунду раньше ? На мой взгляд, абсолютно логично в этой ситуации сохранять данные 1 раз в секунду и жить долго и счастливо с обычным CompactFlash |
|
С уважением
Кругляк Константин |
|
Новичок Присоединился: 06 Ноябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 10 |
|
К сожалению, не все так просто. Дело в том, что кроме всего прочего мы еще пишем в SRAM архив событий, в который записываются все действия и события в системе. Типичная ситуация: произошла какая-то авария, события пишутся десятками в каждом цикле, после чего происходит переход на аварийное питание, в процессе которого возможен (а, значит, когда-нибудь обязательно произойдет) сбой по питанию и перезагрузка контроллера. И при последующих разборках важнее всего знать, что происходило как раз в эти последние несколько циклов. Конечно, решение есть. События пишутся в таких количествах далеко не всегда, поэтому нужно просто отслеживать, что писать и когда: что-то писать при определенных событиях, что-то - только по изменению, а что-то вообще не писать. Неприятно то, что это потребует полной переработки подсистемы архивирования, в которой раньше мы писали полное состояние системы в каждом цикле, причем с резервированием, контрольными суммами и т.п. А лезть с хитрыми алгоритмами в отработанную и годами проверенную часть программы уж очень не хочется. В этой связи только один вопрос: ладно, с числом циклов перезаписи как-то можно выкрутиться, а как быть с быстродействием? То есть в предельном случае нужно записать эти самые 20КБ за время порядка 1мс, возможно это на Flash 5070 или нет?
|
|
С уважением,
Лопаткин Б.В. |
|
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|
У нас подобная ситуация, только объёмы данных поменее (пару сот байт), и период перезаписи пониже (т.е. ассинхронный, по событиям)... В макетном действующем (более года) экземпляре мы пока так и сделали - регистрация пишется на DiskOnChip. Хотелось бы добавить вот какие соображения: 1. число перезаписей - это самый критический и настораживающий параметр. Но (это мне показывали мои аппаратчики - за что купил, за то и продал... ;-)) в новых образцах DiskOnChip схемотехнически исключаются участки, исчерпавшие ресурс перезаписи (сбойные), с прозрачной подменой их на резервные. При этом долговечность, похоже, возрастает на порядки. Детали - посмотрите на сайте производителя фирмы M-System (сайт как-то одноимённо называется, легко найти) - там много тех. информации. 2. об скорости - наверное, лучше всего уточнить там же. P.S. У нас есть небольшой, но в высшей степени продуктивный опыт взаимодействия с M-System - когда у нас возникли проблемы с драйверами TFS - мы обратились к ним мэйлом, и не более чем в 3 дня (не помню точно, но очень оперативно) - они нам переслали новые редакции со всеми комментариями и разъяснениями. |
|
Новичок Присоединился: 25 Июнь 2003 Online Status: Offline Публикации: 29 |
|
> произошла какая-то авария
Снятие "посмертной маски" - это же совершенно другая задача ! Писать 20Кб каждый цикл, конечно, можно, но это уж слишком "в лоб" > схемотехнически исключаются участки, исчерпавшие ресурс перезаписи эта технология называется "wear levelling", она реализована и у M-Systems и у Sandisk . Полную документацию по DOC Вы можете найти также здесь: ftp://www.prosoft.ru/pub/Hardware/msystems/DiskOnChip_CD/ А по CompactFlash Sandisk здесь : ftp://www.prosoft.ru/pub/Hardware/sandisk/CompactFlash/ > нужно записать эти самые 20КБ за время порядка 1мс В режиме последовательной записи для последних моделей CF Sandisk (с контроллером Athens) скорость составляет 9 Мб/с, то есть потребуется все-таки 2-3 мс. Но, опять-таки, кто же так делает ? Сам в свое время писал таких программ немерянно : - выделяется кольцевой буфер в ОЗУ - из прерывания в реальном времени в буфер инфо пишется - по флагу аварии фоновый процесс начинает выкачивать из буфера данные во флеш или на диск - если размер буфера подобран нормально, то проблем со временем не возникает |
|
С уважением
Кругляк Константин |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 27 Март 2003 Категория: Russian Federation Online Status: Offline Публикации: 240 |
|
Действительно, с числом циклов можно выкрутиться. Например ставите Флэш-диск в два раза большей емкости и можете работать на нем не 2, а 4 года. Что уже превышает время жизни большинства литиевых батареек в SRAM модулях. Оптимально было бы иметь SRAM диск в формате Compact Flash. Однако если для PC Card (PCMCIA) SRAM карты выпускаются, то для CF я такого не встречал. Для записи 20К в 1мс нужна пиковая пропускная способность CF интерфейса в 20Мбайт/сек. Это в основном зависит от используемого чипа на 5070 (так как ATA интерфейс сидит на внутренней шине, такая скорость в принципе возможна, но нужно смотреть даташит на эту микросхему). Средняя скорость записи в CF требуется около 2мбайт/сек, что лежит в рамках стандартных скоростей. Однако необходимо, что бы в CF карте был внутренний буфер, заполняемый в течении 1 мсек и затем переносимый собственно во флэш-память в следующие 10мсек. То есть нужно смотреть подробные технические данные на конкретную CF карту (точнее на размер внутреннего буфера). Другими словами, если пропускная способность интерфеса не менее 20мбайт/сек, а размер внутреннего буфера CF карты не менее 20К, то Вашу задачу можно решить в лоб. В конечном счете можно взять 5070 и провести соответствующие испытания. С Уважением, Сергей Сорокин |
|
Ответить | Страница <123 |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |