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

Прошивки более 2Мб (для STM32)

Хотел задать вопрос.

Если случится так, что программа усложнится настолько, что вынуждена будет превысить максмальное доступное кол-во внутренней флеш-памяти для семейства STM32 (насколько знаю и LPC) в два мегабайта, насколько рациональным будет использование внешней sdram для хранения исполняемого кода программы и данных?

Если да, то какое усложнение это за собой влечет (шаманство с линкером, загрузчики, data\nor spi мс памяти и тд..)?

Например реализация программы с вкомилированными растровыми фонтами всех видов и размеров для 429 или 769 дискавери..

Понимаю, что альтернатива , это какой-нибудь Аllwinner-овский soc и Линукс+Qt, но всё-же?.

Изменено пользователем dimone

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


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

Понимаю, что альтернатива , это какой-нибудь Аlwinner-овский soc и Линукс иQt, но всё-же?

Нет, альтернатива - это подключить упомянутый Вами же LPC (хотя как видно Вы не очень их знаете) имеющий интерфейс SPIFI. SPIFI даст расширение FLASH программ МК на объём внешнего чипа SPI-FLASH.

А SDRAM тут вообще никаким боком, ведь Вам надо расширить non-volatile memory.

На других МК (не имеющих аналога SPIFI) смотреть/читать надо в сторону оверлеев (программисты старой закалки должны это знать со времён 640К на ПК и подкачки с диска). Или (в каких-то простых случаях нехватки места для const данных) - вручную делать подкачку с non-volatile носителя в общую область ОЗУ. Тут для красивости можно использовать MMU (если есть) или просто MPU.

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


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

Почему non-volatile? Если линкеру указать адресное пространство внешнеи SDRAM и загрузить в оную при старте ОДИН , (как это делается в ПЛИС ),как вы сказали оверлей, то разве не будет работоспособным такое решение?..

п.с. с LPC действительно давно не работал, но насчет указаной фичи таки вспомнил, ее часто в холварах называют

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


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

Например реализация программы с вкомилированными растровыми фонтами всех видов и размеров для 429 или 769 дискавери..

Очевидное решение - SPI флеш для хранения шрифтов и т.п., как уже отметил выше коллега. Эта штука работает достаточно быстро, чтобы можно было доставать оттуда шрифты на лету.

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


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

Очевидное решение - SPI флеш для хранения шрифтов

Извиняюсь, что привел пример программы со шрифтами в основе, оно направляет мышление в другое русло, -подкачки, фс, ttf..

Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm))

монопрогрмма , с сегментированнием, без и использования MМU и оверлеев.

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


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

Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm))

Ещё Билл Гейтс пророчески заявлял: "640K ought to be enough for anyone". Вот даже не знаю, что это должна быть за программа, чтобы там было 2 мегабайта кода. Вы столько за всю жизнь не напрограммируете. В общем, я бы не парился.

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


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

Почему non-volatile? Если линкеру указать адресное пространство внешнеи SDRAM и загрузить в оную при старте ОДИН , (как это делается в ПЛИС ),как вы сказали оверлей, то разве не будет работоспособным такое решение?..

Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH.

 

Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm))

монопрогрмма , с сегментированнием, без и использования MМU и оверлеев.

В смысле - в 2MB не лезет код??? А Вы реально можете написать такую программу? И написать до того, как появятся МК с бОльшим объёмом flash? :biggrin:

Нет, я конечно встречал такие шедевры "программирования", где кажется, что автор не знает что такое циклы и лепит код копипастом. Который, к тому же, настолько кривой, что не работает с включённой оптимизацией в компиляторе выше чем уровень 0. Так пожалуй можно написать и на 2МБ. Но это - скорее клиника.

 

PS: Вопрос, имхо, о сферическом коне в вакууме....

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


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

Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH.

-чисто технически, по отношению к МК со встроенной флеш-пямятью, программа превышает допустимый ее размер, и требует загрузки, что несомненно.)

Внешняя FLASH как вариант, что позволит не заморачиваться с загрузчиками, но уже имея установленную внешнюю SDRAM и внешнюю SPI non-volatilе память,

хотелось попробовать с имеющимися средствами запустить хотя-б "хелло ворлд" из внешей памяти..

Осозню, что это костыли, тем более ST за 10 лет так и не удосужились сделать как Атмел САМБу, что-б можно было лить во внешний чип, но

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


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

Присоединяюсь к скепсису коллег: какой процент занимает непосредственно код, а что данные (шрифты, тексты меню и тому подобное)? Не верю в код для stm32 более мегабайта. Можете намекнуть? Всё что больше мегабайта, это скорее тянет на проект для ОС Linux, а не stm32 - там понятно, много библиотек, много функционала.

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


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

хотелось попробовать с имеющимися средствами запустить хотя-б "хелло ворлд" из внешей памяти..

"Просто запустить" - ничего сложного. Вопрос тут - зачем? Для штатной работы устройства это малополезно (как написали выше), но может быть полезно для отладки. Я сам часто использую отладку кода в SDRAM (там где SDRAM есть). Это существенно ускоряет процесс отладки. Грузит код в SDRAM при этом отладчик.

А оверлеи могут быть полезны на системах с разными типами памяти программ (разноскоростными).

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


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

Думаю,что как и 20 лет назад в 8-битниках основной объем всех программ - тексты, таблицы и проч.

А сейчас - заготовки графики, анимаций и проч.

И всё это прекрасно хранится в spi flash. :-)

 

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


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

..ну, к примеру ,раз про шрифты зашло, -движок распаковки ttf, кодеки, микропитон, ТСР\ІР все протоколы..

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


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

..ну, к примеру ,раз про шрифты зашло, -движок распаковки ttf, кодеки, микропитон, ТСР\ІР все протоколы..

Это что за устройство такое, стесняюсь спросить? Смартфон что ли?

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


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

В существующем дивайсе, на растеризованыйи Arial шести минимально необходимых размеров, где лишь кириллица и цифры, причем большие размры лишь цифры,

для оледа 256х 64 , уже тянет на 1Mб.. для LCD этого явно не хватит..

аналог

https://www.systecnet.com/en/products/IT3.html

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


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

В существующем дивайсе, на растеризованыйи Arial шести минимально необходимых размеров, где лишь кириллица и цифры, причем большие размры лишь цифры,

для оледа 256х 64 , уже тянет на 1Mб.. для LCD этого явно не хватит..

256x64 - это размер LCD или размер одного символа?

Если первое, то у меня есть проект с LCD 320x240 с 10-ю растеризованными TTF (латинница, кириллица, и весь диапазон ASCII 0x20...0x3F) и двумя кодеками. Так вот: секция со шрифтами весит ~40кБ, весь скомпилённый проект во флешь ~221кБ. Как бы всего-то ~10% от 2МБ. И там ещё куча всего кроме вышеозвученного. :laughing:

А если 2-е, то как тут уже писали: шрифты нетрудно хранить во внешней FLASH, последовательной или параллельной.

 

А "TCP/IP все протоколы" - неужто так и все из в мире придуманных используются? B)

А если только самые распространённые, то думаю в худшем случае уложатся килобайт в 60.

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


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

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

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

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

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

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

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

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

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

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