dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 (изменено) · Жалоба Хотел задать вопрос. Если случится так, что программа усложнится настолько, что вынуждена будет превысить максмальное доступное кол-во внутренней флеш-памяти для семейства STM32 (насколько знаю и LPC) в два мегабайта, насколько рациональным будет использование внешней sdram для хранения исполняемого кода программы и данных? Если да, то какое усложнение это за собой влечет (шаманство с линкером, загрузчики, data\nor spi мс памяти и тд..)? Например реализация программы с вкомилированными растровыми фонтами всех видов и размеров для 429 или 769 дискавери.. Понимаю, что альтернатива , это какой-нибудь Аllwinner-овский soc и Линукс+Qt, но всё-же?. Изменено 4 июля, 2018 пользователем dimone Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Понимаю, что альтернатива , это какой-нибудь Аlwinner-овский soc и Линукс иQt, но всё-же? Нет, альтернатива - это подключить упомянутый Вами же LPC (хотя как видно Вы не очень их знаете) имеющий интерфейс SPIFI. SPIFI даст расширение FLASH программ МК на объём внешнего чипа SPI-FLASH. А SDRAM тут вообще никаким боком, ведь Вам надо расширить non-volatile memory. На других МК (не имеющих аналога SPIFI) смотреть/читать надо в сторону оверлеев (программисты старой закалки должны это знать со времён 640К на ПК и подкачки с диска). Или (в каких-то простых случаях нехватки места для const данных) - вручную делать подкачку с non-volatile носителя в общую область ОЗУ. Тут для красивости можно использовать MMU (если есть) или просто MPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Почему non-volatile? Если линкеру указать адресное пространство внешнеи SDRAM и загрузить в оную при старте ОДИН , (как это делается в ПЛИС ),как вы сказали оверлей, то разве не будет работоспособным такое решение?.. п.с. с LPC действительно давно не работал, но насчет указаной фичи таки вспомнил, ее часто в холварах называют Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Например реализация программы с вкомилированными растровыми фонтами всех видов и размеров для 429 или 769 дискавери.. Очевидное решение - SPI флеш для хранения шрифтов и т.п., как уже отметил выше коллега. Эта штука работает достаточно быстро, чтобы можно было доставать оттуда шрифты на лету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Очевидное решение - SPI флеш для хранения шрифтов Извиняюсь, что привел пример программы со шрифтами в основе, оно направляет мышление в другое русло, -подкачки, фс, ttf.. Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm)) монопрогрмма , с сегментированнием, без и использования MМU и оверлеев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm)) Ещё Билл Гейтс пророчески заявлял: "640K ought to be enough for anyone". Вот даже не знаю, что это должна быть за программа, чтобы там было 2 мегабайта кода. Вы столько за всю жизнь не напрограммируете. В общем, я бы не парился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Почему non-volatile? Если линкеру указать адресное пространство внешнеи SDRAM и загрузить в оную при старте ОДИН , (как это делается в ПЛИС ),как вы сказали оверлей, то разве не будет работоспособным такое решение?.. Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH. Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm)) монопрогрмма , с сегментированнием, без и использования MМU и оверлеев. В смысле - в 2MB не лезет код??? А Вы реально можете написать такую программу? И написать до того, как появятся МК с бОльшим объёмом flash? :biggrin: Нет, я конечно встречал такие шедевры "программирования", где кажется, что автор не знает что такое циклы и лепит код копипастом. Который, к тому же, настолько кривой, что не работает с включённой оптимизацией в компиляторе выше чем уровень 0. Так пожалуй можно написать и на 2МБ. Но это - скорее клиника. PS: Вопрос, имхо, о сферическом коне в вакууме.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH. -чисто технически, по отношению к МК со встроенной флеш-пямятью, программа превышает допустимый ее размер, и требует загрузки, что несомненно.) Внешняя FLASH как вариант, что позволит не заморачиваться с загрузчиками, но уже имея установленную внешнюю SDRAM и внешнюю SPI non-volatilе память, хотелось попробовать с имеющимися средствами запустить хотя-б "хелло ворлд" из внешей памяти.. Осозню, что это костыли, тем более ST за 10 лет так и не удосужились сделать как Атмел САМБу, что-б можно было лить во внешний чип, но Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Присоединяюсь к скепсису коллег: какой процент занимает непосредственно код, а что данные (шрифты, тексты меню и тому подобное)? Не верю в код для stm32 более мегабайта. Можете намекнуть? Всё что больше мегабайта, это скорее тянет на проект для ОС Linux, а не stm32 - там понятно, много библиотек, много функционала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба хотелось попробовать с имеющимися средствами запустить хотя-б "хелло ворлд" из внешей памяти.. "Просто запустить" - ничего сложного. Вопрос тут - зачем? Для штатной работы устройства это малополезно (как написали выше), но может быть полезно для отладки. Я сам часто использую отладку кода в SDRAM (там где SDRAM есть). Это существенно ускоряет процесс отладки. Грузит код в SDRAM при этом отладчик. А оверлеи могут быть полезны на системах с разными типами памяти программ (разноскоростными). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serglg 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Думаю,что как и 20 лет назад в 8-битниках основной объем всех программ - тексты, таблицы и проч. А сейчас - заготовки графики, анимаций и проч. И всё это прекрасно хранится в spi flash. :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба ..ну, к примеру ,раз про шрифты зашло, -движок распаковки ttf, кодеки, микропитон, ТСР\ІР все протоколы.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба ..ну, к примеру ,раз про шрифты зашло, -движок распаковки ttf, кодеки, микропитон, ТСР\ІР все протоколы.. Это что за устройство такое, стесняюсь спросить? Смартфон что ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба В существующем дивайсе, на растеризованыйи Arial шести минимально необходимых размеров, где лишь кириллица и цифры, причем большие размры лишь цифры, для оледа 256х 64 , уже тянет на 1Mб.. для LCD этого явно не хватит.. аналог https://www.systecnet.com/en/products/IT3.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба В существующем дивайсе, на растеризованыйи 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться