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

    

Прошивки более 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.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация