Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с внешней памятью
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Ry-Sasha
Есть такая задумка: использовать программу на кристале в качестве бутлоадера, а основную программу хранить во внешней флеши.
Собственно вопрос: если подключить флешь как внешнюю память и использовать аппаратные возможности работы 51-го ядра с внешней памятью, будет ли в неё произведена запись, а точнее не будут ли маленькими для записи временные задержки, и какую конкретно энергонезависимую память для этого лучше использовать
Палыч
МК51 расчитан на работу с внешним ОЗУ. Чтение - пройдёт, запись - нет
Ry-Sasha
Если к примеру выход WR микроконтроллера подключить к ПЗУ и писать в адреса ОЗУ за пределами кристалла, разве не будет запись?
Меня больше интересует вложится ли во временные интервалы, и есть ли эненгонезависимая память с такими короткими интервалами записи, чтобы запись всё-же произошла
Палыч
Цитата(Ry-Sasha @ Jun 1 2009, 14:38) *
Если к примеру выход WR микроконтроллера подключить к ПЗУ и писать в адреса ОЗУ за пределами кристалла, разве не будет запись?
В ОЗУ запись, конечно, будет. А, вот, ПЗУ с такой быстрой записью Вы ненайдёте. Чем Вас внутренняя flash не устроила? Как вариант - поставить статическое ОЗУ с батарейным питанием (аккумулятором) для поддержания информации при отключении устройства от питающего напряжения.

Вариант 2
Внешнее ПЗУ (flash). При записи в него выдерживать тайминги бутлоадером, записанным во внутреннюю flash
Ry-Sasha
Спасибо, но лучше програмно записывать буду, просто хотел себе жизнь облегчить, а может использовать схемные решения? Возможно ли создать цепь задержки и что из этого будет?
Палыч
Цитата(Ry-Sasha @ Jun 1 2009, 14:48) *
Возможно ли создать цепь задержки и что из этого будет?
Посмотрите время выполнения команды MOVX и сравните со временем записи во flash.
Ry-Sasha
Под цепью задержки я подразумевал коденсатор и триггер, которые будут удерживать разрешение записи нужный интервал времени, или какое-либо другое чисто схемное решение
Палыч
Чем будете тормозить МК на время выполнения МОVX?
Ry-Sasha
А зачем его тормозить, пусть он себе WR отпускает. Есть же к примеру регистр с защелкой, и на выходе сигнал всё равно остаётся (это к примеру, схемное решение я как раз и прошу подсказать)
Палыч
Цитата(Ry-Sasha @ Jun 1 2009, 15:15) *
А зачем его тормозить, пусть он себе WR отпускает.
Следующая за MOVX команда откуда будет браться? Если всё это во внутреннем flash, то зачем городить этот "огород"? Если во внешнем, то как это будет работать: МК желает взять следующую команду, а ПЗУ занято записью...
Ry-Sasha
Так в первом посте- бутлоадер на кристале, следовательно и следующая - с кристала
Палыч
Цитата(Ry-Sasha @ Jun 1 2009, 15:37) *
Так в первом посте- бутлоадер на кристале, следовательно и следующая - с кристала
Тогда, зачем нужно вся эта "городушка" с задержками? Линии (шины) работы с внешней памятью, как правило, совмещены с параллельными портами. Формируй себе сигналы нужной последовательности и длительности программно - и все дела...
Ry-Sasha
Я конечно извиняюсь, может Вы не поняли сути, но я пытаюсь реализовать бутлоадер в том случае, в котором на кристале память программ перезаписать нет возможности.

Так я в пятом посте и писал - програмно, потом подумал, может ещё есть варианты
Палыч
Цитата(Ry-Sasha @ Jun 1 2009, 15:49) *
я пытаюсь реализовать бутлоадер в том случае, в котором на кристале память программ перезаписать нет возможности
Применение внешней памяти для этого, имхо, не лучшее решение. Можно предложить:
1. Поменять МК на другой, имеющий функции самопрограммирования
2. Поставить рядом "мелкий" МК - прошивальщик (бутлоадер) МК, примененного Вами
Ry-Sasha
Кстати, я считаю, что человек должен знать все способы решения проблемы, пусть даже абсурдные, может в другой ситуации как раз то. что сейчас кажется абсурдным может быть идеальным решением.
В любом случае спасибо за советы.
редактор
Подобную задачу решали лет 8-10 назад
Ставили ПЗУ с загрузчиком на младшие 8К памяти
На старшие 8К ставили ОЗУ.
С компьютера грузили программу в ОЗУ и затем оттуда ее выполняли. Использовалось данное решение на макете для отладки программ,
поскольку флашки были труднодоступны а возиться с УФ долго, эмулятор же не обеспечивал быстродействия DALASSa.
Насчет энергонезависимой памяти смотрите в сторону FRAM, достаточно шустрые.
Если совсем извращаться, то можно хранить программу в ПЗУ с последовательным доступом, а при загрузке загонять ее во внешнее ОЗУ.
НО это если с FRAM не получиться
pvlad
Цитата(редактор @ Jul 3 2009, 11:29) *
Подобную задачу решали лет 8-10 назад
Ставили ПЗУ с загрузчиком на младшие 8К памяти
На старшие 8К ставили ОЗУ.
С компьютера грузили программу в ОЗУ и затем оттуда ее выполняли. Использовалось данное решение на макете для отладки программ,
поскольку флашки были труднодоступны а возиться с УФ долго, эмулятор же не обеспечивал быстродействия DALASSa.
Насчет энергонезависимой памяти смотрите в сторону FRAM, достаточно шустрые.
Если совсем извращаться, то можно хранить программу в ПЗУ с последовательным доступом, а при загрузке загонять ее во внешнее ОЗУ.
НО это если с FRAM не получиться


По такому принципу можно и сейчас делать проекты, если:
1. Проект очень большой, особенно много текстовой или графической информации. Никакая внутренняя Флеш это "не потянет". Приходится постоянно, для исполнения, подгружать блоки в ОЗУ, которое выполняет роль внешнего ПЗУ.
2. Разработчик хочет максимально закрыть проект от копирования, но остается потребность делать частые обновления. Сам клиент находится далеко и приходится высылать ему НЕХ-файлы. Загрузчик во внутренней Флеш закрывается битамы защиты кристалла, а высылаемый НЕХ-файл тоже зашифрован, и алгоритм дешифрации знает загрузчик. В свое время, это спасло нашу молодую фирму (группу разработчиков и программистов), которая отпочковалась от "монстра". Последний захватил все права на производство изделия и стремился любой ценой завладеть программным обеспечением, хотя договор на разработку был заключен с нами.
Недостаток портов компенсируется расширителями портов. Сейчас это не проблема. А внешнюю флешку можно применить любую - хватило бы способностей ее "охомутать".
MaslovVG
Цитата(Палыч @ Jun 1 2009, 15:51) *
Посмотрите время выполнения команды MOVX и сравните со временем записи во flash.

Для записи во флеш вовсе не требуется выдеживать большие длительности сигналов записи. Необходимо просто выдеживать соответствующии паузы между пересылками во флешь пакетов данных. А скорость обмена данными кристалов флеш с процессором не уступает SRAM. Несколько лет назад делал блок памяти в котором флешь и статическое озу висело на одной шине и все работало на скорости 20Мгц.
Кроме того существует быстрая энергонезависимая память например FRAM ф. RAMTRON.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.