Перейти к содержанию
    

И еще чуть-чуть места

Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?

 

Думаю, что нереально. Доступ к EEPROM гораздо продолжительнее, чем FLASH, чтобы на программа могла бы там работать с нормальной тактовой частотой. А главное, что это и технически невозможно.

 

Да и тиня эта не способна модифицировать свой программый код, в отличие от старших моделей AVR (типа ATmega). Поэтому даже оверлей тут невозможно организовать (обменивать код между FALSH и EEPROM по мере надобности).

 

Самое разумное, что можно посоветовать в том случае, когда не хватает памяти для кода - взять МК с большим объемом памяти. Однако совместимых по ногам с 2312 не существует.

 

И последнее. Если памяти не хвататает чуток, то еще можно переписать свою программу на ассемблере, если до этого она у вас была написана под С. Startup-блок можно еще удалить, который инициирует регистры, и делать это самим. Ну вот в общем и все, что приходит в голову.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?

Нет. В арихтектуре AVR это абсолютно невозможно и исключено. Самым правильным решением является закладка МК с запасом памяти программ. Например, 20 - 50%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да и тиня эта не способна модифицировать свой программый код, в отличие от старших моделей AVR (типа ATmega). Поэтому даже оверлей тут невозможно организовать (обменивать код между FALSH и EEPROM по мере надобности).

С чего Вы это взяли? Команды записи EEPROM присутствуют. Обмен сделать можно, только долго будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С чего Вы это взяли? Команды записи EEPROM присутствуют. Обмен сделать можно, только долго будет.

EEPROM писать то не проблема, а вот как с флеш дела обстоят? haker_fox на мой взгляд прав.

Здесь я хотел убедиться в правильности своего мнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

EEPROM писать то не проблема, а вот как с флеш дела обстоят? haker_fox на мой взгляд прав.

Здесь я хотел убедиться в правильности своего мнения.

 

Извиняюсь, описался: команды записи флеш присутствуют. Ничто не мешает кусок из EEPROM перекинуть во флеш, если время не критично. (Использовал флеш для сохранения данных, редко изменяемых.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь, описался: команды записи флеш присутствуют. Ничто не мешает кусок из EEPROM перекинуть во флеш, если время не критично.
И сколько займет код для такого перекидывания? И на сколько проходов программы по обмениваемым кускам хватит ресурса флеш?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И сколько займет код для такого перекидывания? И на сколько проходов программы по обмениваемым кускам хватит ресурса флеш?

 

Я отвечал на неправильное утверждение в посте №2. Целесообразно ли применять такое решение, зависит от конкретной задачи. В 99% случаев - нецелесообразно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да там и EEPROM-то немного. Но помочь может, всё завиcит от логики программы.

Можно поместить в EEPROM какие-то таблицы, которые были во флеше. А если таких таблиц нет - сделать :-)

Например, какой-то развесистый switch превратить в набор функций, вызываемых по индексу, таблицу сохранить в EEPROM.

До такого у меня не доходило, таблицы во флеше же и сохранял - уже это помогало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как бы размер кода по киданию оверлея не оказался тем самым критическим размером, которого не хватает)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На сколько я знаю для tiny2313 нельзя сделать bootloader, а Вы пишите:

команды записи флеш присутствуют.

Как так? :laughing:

Или я чего-то не допонял...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На сколько я знаю для tiny2313 нельзя сделать bootloader, а Вы пишите:

 

Как так? :laughing:

Или я чего-то не допонял...

Обложка даташита: -2K Bytes of in-System Self Programmable Flash.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обложка даташита: -2K Bytes of in-System Self Programmable Flash.

Читайте что такое ISP.

Кратко: это технология, которая позволяет программировать микросхему, не вынимая ее из устройства, т.е. не демонтируя с печатной платы, т.е. в системе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то нужно различать ISP (In-System-Programming) и IAP (In-Application-Programmig).

Первый термин означает, что программу в память МК можно загрузить извне, без выпаивания его из устройства. Практически все современные МК имеют подобную возможность. Для этого могут использоваться совершенно разные интерфейсы JTAG, UART, SPI, USB и т.п. Но в любом случае при программировании МК используется загружаемая извне или уже встроенная в виде ROM или запрограммированной части Flash, специальная программа (исполняемый код), называемая Bootloader. Эта программа "знает как" и "умеет" программировать Flash-память данного конкретного МК.

IAP же означает, что МК может модифицировать свою собственную Flash-память, выполняя в самом МК пользовательскую программу, загруженную в память программ. Причем IAP может работать исключительно с использованием встроенной программы Bootloader, а может и не использовать ее, если имеется такая аппаратно-программная возможность и алгоритмы программирования описаны в документации. МК, фигурирующий у топикстартера (ATtiny2313), совершенно точно поддерживает ISP. А вот насчет IAP я что-то не уверен. Но поскольку я не являюсь большим знатоком семейства AVR, то не буду утверждать этого однозначно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читайте что такое ISP.

Кратко: это технология, которая позволяет программировать микросхему, не вынимая ее из устройства, т.е. не демонтируя с печатной платы, т.е. в системе.

 

А слово SELF Вам ничего не говорит?

Прочитайте хотя бы даташит, перед тем, как других учить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...