|
Прошивки более 2Мб (для STM32) |
|
|
|
Jul 4 2018, 08:26
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Хотел задать вопрос. Если случится так, что программа усложнится настолько, что вынуждена будет превысить максмальное доступное кол-во внутренней флеш-памяти для семейства STM32 (насколько знаю и LPC) в два мегабайта, насколько рациональным будет использование внешней sdram для хранения исполняемого кода программы и данных? Если да, то какое усложнение это за собой влечет (шаманство с линкером, загрузчики, data\nor spi мс памяти и тд..)? Например реализация программы с вкомилированными растровыми фонтами всех видов и размеров для 429 или 769 дискавери.. Понимаю, что альтернатива , это какой-нибудь Аllwinner-овский soc и Линукс+Qt, но всё-же?.
Сообщение отредактировал dimone - Jul 4 2018, 08:30
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 34)
|
Jul 4 2018, 08:33
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(dimone @ Jul 4 2018, 11:26)  Понимаю, что альтернатива , это какой-нибудь Аlwinner-овский soc и Линукс иQt, но всё-же? Нет, альтернатива - это подключить упомянутый Вами же LPC (хотя как видно Вы не очень их знаете) имеющий интерфейс SPIFI. SPIFI даст расширение FLASH программ МК на объём внешнего чипа SPI-FLASH. А SDRAM тут вообще никаким боком, ведь Вам надо расширить non-volatile memory. На других МК (не имеющих аналога SPIFI) смотреть/читать надо в сторону оверлеев (программисты старой закалки должны это знать со времён 640К на ПК и подкачки с диска). Или (в каких-то простых случаях нехватки места для const данных) - вручную делать подкачку с non-volatile носителя в общую область ОЗУ. Тут для красивости можно использовать MMU (если есть) или просто MPU.
|
|
|
|
|
Jul 4 2018, 08:49
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(scifi @ Jul 4 2018, 11:41)  Очевидное решение - SPI флеш для хранения шрифтов Извиняюсь, что привел пример программы со шрифтами в основе, оно направляет мышление в другое русло, -подкачки, фс, ttf.. Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm)) монопрогрмма , с сегментированнием, без и использования MМU и оверлеев.
|
|
|
|
|
Jul 4 2018, 09:06
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(dimone @ Jul 4 2018, 11:39)  Почему non-volatile? Если линкеру указать адресное пространство внешнеи SDRAM и загрузить в оную при старте ОДИН , (как это делается в ПЛИС ),как вы сказали оверлей, то разве не будет работоспособным такое решение?.. Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH. Цитата(dimone @ Jul 4 2018, 11:49)  Пусть будет сферическая программа в вакууме, но с покером и ..... , т.е. значительного размера (превышающего 2 Мб для stm)) монопрогрмма , с сегментированнием, без и использования MМU и оверлеев. В смысле - в 2MB не лезет код??? А Вы реально можете написать такую программу? И написать до того, как появятся МК с бОльшим объёмом flash?  Нет, я конечно встречал такие шедевры "программирования", где кажется, что автор не знает что такое циклы и лепит код копипастом. Который, к тому же, настолько кривой, что не работает с включённой оптимизацией в компиляторе выше чем уровень 0. Так пожалуй можно написать и на 2МБ. Но это - скорее клиника. PS: Вопрос, имхо, о сферическом коне в вакууме....
|
|
|
|
|
Jul 4 2018, 09:24
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(jcxz @ Jul 4 2018, 12:06)  Будет. Только: а) это уже не оверлей (прочитайте что это такое); б) тогда говорить надо не о SDRAM, а о связке SDRAM+внешняя_FLASH. -чисто технически, по отношению к МК со встроенной флеш-пямятью, программа превышает допустимый ее размер, и требует загрузки, что несомненно.) Внешняя FLASH как вариант, что позволит не заморачиваться с загрузчиками, но уже имея установленную внешнюю SDRAM и внешнюю SPI non-volatilе память, хотелось попробовать с имеющимися средствами запустить хотя-б "хелло ворлд" из внешей памяти.. Осозню, что это костыли, тем более ST за 10 лет так и не удосужились сделать как Атмел САМБу, что-б можно было лить во внешний чип, но
|
|
|
|
|
Jul 4 2018, 11:59
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
В существующем дивайсе, на растеризованыйи Arial шести минимально необходимых размеров, где лишь кириллица и цифры, причем большие размры лишь цифры, для оледа 256х 64 , уже тянет на 1Mб.. для LCD этого явно не хватит.. аналог https://www.systecnet.com/en/products/IT3.html
|
|
|
|
|
Jul 4 2018, 12:28
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(dimone @ Jul 4 2018, 14:59)  В существующем дивайсе, на растеризованыйи Arial шести минимально необходимых размеров, где лишь кириллица и цифры, причем большие размры лишь цифры, для оледа 256х 64 , уже тянет на 1Mб.. для LCD этого явно не хватит.. 256x64 - это размер LCD или размер одного символа? Если первое, то у меня есть проект с LCD 320x240 с 10-ю растеризованными TTF (латинница, кириллица, и весь диапазон ASCII 0x20...0x3F) и двумя кодеками. Так вот: секция со шрифтами весит ~40кБ, весь скомпилённый проект во флешь ~221кБ. Как бы всего-то ~10% от 2МБ. И там ещё куча всего кроме вышеозвученного. А если 2-е, то как тут уже писали: шрифты нетрудно хранить во внешней FLASH, последовательной или параллельной. А "TCP/IP все протоколы" - неужто так и все из в мире придуманных используются? А если только самые распространённые, то думаю в худшем случае уложатся килобайт в 60.
|
|
|
|
|
Jul 5 2018, 05:45
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(jcxz @ Jul 4 2018, 15:28)  256x64 - это размер LCD или размер одного символа? -это разрешение ОЛЕД индикатора. Попробуйте растеризовать кириллицу+латинницу и указаный вами диапазон для одного лишь нежирного Аrial 48 для LCD естесственно понадобятся значительно большие, если на пол-высоты крана цифири, а хотя бы на треть сообщния.. Естесственно соглашусь , что технически это всё тем или иным способом решается, просто было интересно, как можно обоити ограничения
|
|
|
|
|
Jul 5 2018, 06:22
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(scifi @ Jul 5 2018, 08:50)  У себя с самого начала сделал нехитрый RLE.. в EmWin-е вроде свои RLE есть, крупных шрфтов избыточность очевидна, со шрифтами то я управлюсь , мне было интересно решение вопроса мегапрошивки в принципе.
|
|
|
|
|
Jul 5 2018, 11:29
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(dimone @ Jul 5 2018, 08:45)  -это разрешение ОЛЕД индикатора. Попробуйте растеризовать кириллицу+латинницу и указаный вами диапазон для одного лишь нежирного Аrial 48 А зачем? У меня максимальные используемые шрифты: "Verdana 14pt", "Verdana 20pt", "Georgia 20pt" - так даже на моём 320x240 буквы уже кажутся очень большими (используются только для крупных надписей). А "Аrial 48" да на 256x64 ?... там хоть один символ то влезает в этот LCD? Или нужно скроллить? И нафига такой изврат нужен (на практике)? Цитата(dimone @ Jul 5 2018, 08:45)  для LCD естесственно понадобятся значительно большие, если на пол-высоты крана цифири, а хотя бы на треть сообщния.. Ну ладно - пускай там Вы может выводите бегущую строку по паре символов на экран (читаемость такой строки будет сомнительна), но зачем её выводить ещё и десятком разных шрифтов (все большие)??? А уж 1-2 шрифта даже такого размера вполне займут несколько десятков кБ. А это во много раз меньше 2MB. PS: Описание задачи очень сильно смахивает на сферического коня...
|
|
|
|
|
Jul 13 2018, 17:05
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(ViKo @ Jul 5 2018, 10:12)  А что всё SDRAM да SDRAM? Параллельная флэш-память подключается к шине. И размер программы ограничен только диапазоном адресного пространства, выделенного для такой памяти. Да подключить можно что угодно, но не будет ускорения, как во внутренней флеш, а это на порядок падение в скорости, если уж в устройстве используется графика, так наверняка есть СД-карта, грузите свою мегапрограмму в ОЗУ с карты и будет вам счастье  ЗЫ. А так конечно странно, что можно уложить в 2 мега, делал свою "мини ОС" на "тяжелом" камне аля "аллвиннеровские SOC", с поддержкой очень многочего, включая графику, сетевой стек, виртуальную машину, протоколы обмена и растеризованный шрифт по умолчанию... Потянуло меньше, чем 600кБайт, с оптимизацией, конечно.
Сообщение отредактировал mantech - Jul 13 2018, 17:10
|
|
|
|
|
Jul 13 2018, 18:42
|

Местный
  
Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264

|
Ну, 2МБайт Flash можно использовать по-разному, смотря что за приложение. Скажу за себя. Делали одно устройство технологическое, объект находится за тысячу километров от рабочего стола. Больше отладиться, собственно, не на чем. Поэтому компилировал некоторые версии прошивок (с вариативным набором функций и алгоритмов работы особо интересных мест) и забивал ими Flash. При включении техник выбирал кнопочками на дисплее каждую подготовленную версию и она загружалась как текущая рабочая. По ней оглашались результаты и принималось дальнейшее решение, что и как писать в следующих ревизиях. В итоге, правда, оказалось, что отладили все достаточно быстро и пришлось убрать загрузчик с возможностью выбора боевой прошивки. Это был своего рода механизм быстрого отката назад при тестировании нового ПО, ведь основную работу устройство должно сделать так или иначе, а вот потестить его с новой версией ПО это как бы факультативное задание было
|
|
|
|
|
Jul 13 2018, 19:50
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Arlleex @ Jul 13 2018, 21:42)  Ну, 2МБайт Flash можно использовать по-разному, смотря что за приложение. Скажу за себя. Делали одно устройство технологическое, объект находится за тысячу километров от рабочего стола. Больше отладиться, собственно, не на чем. Поэтому компилировал некоторые версии прошивок (с вариативным набором функций и алгоритмов работы особо интересных мест) и забивал ими Flash. При включении техник выбирал кнопочками на дисплее каждую подготовленную версию и она загружалась как текущая рабочая. По ней оглашались результаты и принималось дальнейшее решение, что и как писать в следующих ревизиях. В итоге, правда, оказалось, что отладили все достаточно быстро и пришлось убрать загрузчик с возможностью выбора боевой прошивки. Это был своего рода механизм быстрого отката назад при тестировании нового ПО, ведь основную работу устройство должно сделать так или иначе, а вот потестить его с новой версией ПО это как бы факультативное задание было  В принципе, их можно было б их хранить на карточке памяти, флешке (сейчас почти у каждого путного мк есть усб хост) да во внешней спи-флешке даже, а бутлоадер прошьет во флеш мк ту, которую выберет техник...
Сообщение отредактировал mantech - Jul 13 2018, 19:50
|
|
|
|
|
Jul 15 2018, 21:22
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(dimone @ Jul 4 2018, 11:26)  Хотел задать вопрос. Если случится так, что программа усложнится настолько, что вынуждена будет превысить максмальное доступное кол-во внутренней флеш-памяти для семейства STM32 (насколько знаю и LPC) в два мегабайта, насколько рациональным будет использование внешней sdram для хранения исполняемого кода программы и данных? Тогда придется переходить на 32-bit TriCore™ Microcontroller от Infineon. https://www.infineon.com/cms/en/product/mic...y-tc297ta-adas/Up to 8MB Flash !!!
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Jul 16 2018, 09:06
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(dimka76 @ Jul 16 2018, 00:22)  Тогда придется переходить на 32-bit TriCore™ Microcontroller от Infineon. https://www.infineon.com/cms/en/product/mic...y-tc297ta-adas/Up to 8MB Flash !!! Так почему-бы сразу не перейти на балалайку с Линуксом? К чему такие страдания? Ну не лезет у ТС во флэш. Тем более: Цитата(dimone @ Jul 4 2018, 11:26)  Понимаю, что альтернатива , это какой-нибудь Аllwinner-овский soc и Линукс+Qt, но всё-же?.
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|