реклама на сайте
подробности

 
 
> STM32 SDRAM, NOR Flash
Arlleex
сообщение Jul 19 2015, 11:44
Сообщение #1


Местный
***

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



Добрый день!
Наверняка многие из тех, кто "щупал" STM32F429, знают, что в этом контроллере STMicroelectronics допустила серьезную ошибку в аппаратной части модуля FMC - невозможно одновременно получить доступ к статической и динамической памяти без предварительного переключения последней в режим автоматической регенерации. Для программ, у которых четко однозначно распределено выделение и обращение к памяти во времени эта проблема не является существенной. Однако, в большинстве других приложений эта проблема - по сути катастрофа. Я разрабатываю графическое встраиваемое приложение, на плате установлена статическая NOR Flash память и SDRAM. Поскольку графических примитивов у меня довольно много, я разместил их в NOR Flash. SDRAM же у меня выполняет функцию графического буфера. Стандартная схема работы этого приложения - контроллер TFT-матрицы (LTDC) "прозрачно" (т. е. в неизвестно какой момент времени) для процессора через выделенный DMA (опять же, не видимый для программиста) отправляет пиксели на экран. Графический ускоритель DMA2D в это время копирует примитивные изображения в ту же SDRAM (в ту же экранную область). Получается несколько потоков претендуют на одну периферию, и тут контроллер FMC устанавливает арбитраж между DMA LTDC и DMA2D. Работает это, когда графические примитивы расположены во внутренней памяти микроконтроллера. Но стоит "натравить" DMA2D на источник NOR Flash, как все попадает в позицию Errata (нельзя достучаться до статической и динамической памяти одновременно), ведь по сути контроллер FMC должен "разрулить" следующие передачи:
1) SDRAM (экранный буфер) -> экран;
2) NOR Flash -> SDRAM (копирование графических примитивов).
И как видно, как раз на втором пункте и будет "затык". При обращении к NOR Flash SDRAM не перейдет в режим автоматической регенерации, данные в ней станут некорректными. Казалось бы, можно "руками" передать команду автоматической регенерации SDRAM, прежде чем обращаться к NOR Flash, и выхода из нее, чтобы вновь обращаться к SDRAM, но ведь первый пункт (запросы DMA LTDC) работает асинхронно. Если ее и контролировать, на экране будут жуткие мерцания частей изображений (как раз "затыки" между обращениями к SDRAM и NOR Flash).
Производитель исправил ошибку в 3 ревизии микроконтроллера. Но, пройдя по большинству интернет-магазинов электронных компонентов, никакой информации о ревизии нет (ну, наверное, в этом есть логика).
В микроконтроллере STM32F446 эта проблема уже полностью исчезла, но тут другая проблема - этот микроконтроллер максимум в 100-выводном корпусе.
А микроконтроллеров STM32F7-серии и подавно еще пока что нет в продаже.

Кто сталкивался, как решали проблему?

Сообщение отредактировал Arlleex - Jul 19 2015, 11:46
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
scifi
сообщение Jul 19 2015, 11:52
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Если я правильно понимаю, SDRAM легко может быть в разы больше, чем NOR Flash. В этом случае нужно просто при инициализации скопировать всё из NOR Flash в SDRAM и больше эту NOR Flash не трогать.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 11:57
Сообщение #3


Местный
***

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



По сути, как я понял, ты предлагаешь выделить небольшое место во внутренней SRAM микроконтроллера, и, "руками" разрешая/запрещая автоматическую регенерацию, переписать данные из NOR Flash в SDRAM и "забыть" о NOR Flash? rolleyes.gif
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jul 19 2015, 12:29
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
В микроконтроллере STM32F446 эта проблема уже полностью исчезла, но тут другая проблема - этот микроконтроллер максимум в 100-выводном корпусе.

Смотрю на свою плату и вижу stm32f446ze (144 ноги). Это сон?
Цитата
А микроконтроллеров STM32F7-серии и подавно еще пока что нет в продаже.

Это глюк?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Rash
сообщение Jul 19 2015, 12:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Сделайте запрос в инет магазины, что бы сообщили ревизию, она на корпусе написана, нормальные поставщики должны сообщить.
Интересно сколько виджетов нужно создать что бы забить внутреннюю флеш, конечно если это картинки или кучи всяких шрифтов.
Загрузить при старте в SDRAM виджеты и т.п. , можно и из любой флеш и по любому интерфейсу, смысл тогда от NOR Flash по FMC.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 12:51
Сообщение #6


Местный
***

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



Насчет STM32F446 - пардон, написал по памяти, но мне все равно нужен LQFP-176.
Да и насчет STM32F7, в продаже нет 176-выводных, по крайней мере там, где я смотрел.

Rash, а просто плата уже разведена и изготовлена.
Изначально планировалось фоновое изображение выгружать из NOR Flash сразу в LTDC. А подвижные и динамичные изображения в SDRAM. Внутренней флеши не хватает (все довольно забито). Знал бы я раньше об этой проблеме, описанной в Errata, поставил бы SD карточку и не парился. Но, увы.

Насчет виджетов. А как, по Вашему, они строятся? Не из святого духа же, это же ведь картинки ("битмапы"), и они не слабо отнимают памяти, а тем более, что их нужно хранить в формате хорошего качества (кому нынче нравятся кнопочки без теней и альфа-канала? wink.gif ).

Сообщение отредактировал Arlleex - Jul 19 2015, 13:01
Go to the top of the page
 
+Quote Post
Rash
сообщение Jul 19 2015, 13:24
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



просто активно юзаю emWin, виджетов и диалогов много, в программе куча строковых констант флеш пока забита на 400 кБайт из них виджетами думаю не более 100к, но проект ещё не закончен, это на 407. Виджеты больше озу потребляет при отображении нежели флеш. В конечном варианте перескок планируется на 429 или на F7 в зависимости, что к концу реализации моего проекта будет менее глючно. Всегда опытные платы переделываю если меня не устраивает конечный вариант, а вот с серией уже сложнее там завязано производство, закупки и т.п..
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 19 2015, 13:47
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Arlleex @ Jul 19 2015, 14:57) *
По сути, как я понял, ты предлагаешь выделить небольшое место во внутренней SRAM микроконтроллера, и, "руками" разрешая/запрещая автоматическую регенерацию, переписать данные из NOR Flash в SDRAM и "забыть" о NOR Flash? rolleyes.gif

С нюансами не знаком, но не вижу повода для иронии. Неужели переписать содержимое из NOR Flash в SDRAM - неподъёмная задача? Коли так, бросайте эти микроконтроллеры.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 14:01
Сообщение #9


Местный
***

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



scifi, я не иронизировал. Я принял это как пока что единственный выход из моей ситуации =)
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 19 2015, 15:07
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Arlleex @ Jul 19 2015, 14:44) *
Поскольку графических примитивов у меня довольно много, я разместил их в NOR Flash.


Если не секрет, что это за примитивы такие, что во флеш мк не помещаются? Может окна битмап-рисунками делаете или еше что, но сам писал многооконный гуй с нуля, были все базовые виджеты, все это заняло 150-200 кило в памяти, без картинок, конечно, (они были загружены и распакованы в рам сразу из сд-карты) и трудно представить, что можно наваять хотябы на 512к...

И второе - что мешало использовать spi-флеш?
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 15:15
Сообщение #11


Местный
***

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



А вы как примитивы отрисовывали?
Просто у меня та же кнопка - это не набор из битмапа самой кнопки и отдельно накладываемого текста. У меня это кнопка с текстом сразу. Кнопка 229x54 пикселя, 32 бита на пиксель, итого ~49 кБайт на кнопку. Городить отдельно кнопку и накладывать на нее текст не хочу =) Если бы их было очень много, разных - тогда да, делал бы так.
SPI Flash не использовал. Потому что поставил сразу NOR Flash, т.к. хотел напрямую оттуда грузить данные в экран. Лишь позже узнал, что STM32F429 имеет неисправимый аппаратный глюк.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 19 2015, 17:12
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Arlleex @ Jul 19 2015, 18:15) *
А вы как примитивы отрисовывали?
Просто у меня та же кнопка - это не набор из битмапа самой кнопки и отдельно накладываемого текста. У меня это кнопка с текстом сразу. Кнопка 229x54 пикселя, 32 бита на пиксель, итого ~49 кБайт на кнопку.


О как оно!!! А вы не подумали, сколь времени будет отрисовываться такая кнопка? А если их много и переместили окно, будет слайд-шоу какое-то...
Я рисовал как обычно, с помощью прямоугольников, линий и дуг, а текст - растеризованный ttf шрифт. Занимает нисколько места и рисуется почти мгновенно.

Цитата(Arlleex @ Jul 19 2015, 18:15) *
Городить отдельно кнопку и накладывать на нее текст не хочу =)


Никогда бы не подумал, что это так сложно biggrin.gif

Цитата(scifi @ Jul 19 2015, 16:47) *
С нюансами не знаком, но не вижу повода для иронии. Неужели переписать содержимое из NOR Flash в SDRAM - неподъёмная задача? Коли так, бросайте эти микроконтроллеры.


Ну если уж там такая засада, что нужно отключать регенерацию динам. памяти, то читайте с флешки, как с гпио, она-же очень просто адресуется, как старые ромы - шина адреса, данных и строб ОЕ.

Или, если идет линейная переброска в рам, то регенерация не нужна, там и так будет полный перебор строк... Нужно только включить ее не забыть после копирования biggrin.gif

Сообщение отредактировал mantech - Jul 19 2015, 17:13
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 17:30
Сообщение #13


Местный
***

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



mantech, ну, по мне так, как-то бледновато выходит, если рисовать все линиями, полуокружностями и другими примитивами. А насчет перетаскивания окон - для этого STM32F429 дает превосходное аппаратное ускорение - за счет выделенного графического DMA rolleyes.gif

Ведь в этом и фишка, что на МК без графического ускорителя пришлось бы наблюдать, как ты говоришь, слайд-шоу biggrin.gif
Но тут же работа со слоями чисто аппаратная.
Go to the top of the page
 
+Quote Post
DVF
сообщение Jul 19 2015, 18:37
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Цитата(mantech @ Jul 19 2015, 20:12) *
О как оно!!! А вы не подумали, сколь времени будет отрисовываться такая кнопка? А если их много и переместили окно, будет слайд-шоу какое-то...
Я рисовал как обычно, с помощью прямоугольников, линий и дуг, а текст - растеризованный ttf шрифт. Занимает нисколько места и рисуется почти мгновенно.

Это как? Прямоугольники, линии и т.п. посредством соответствующих функций-примитивов выводите? Там же математика. А отдать картинку на tft - поток без вычислений. И у меня это занимает меньше времени, чем вычисления.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 19 2015, 18:58
Сообщение #15


Местный
***

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



Линиями, думаю, такого эффекта не добиться.
Не нажатая кнопка:

Кнопка при нажатии (не отпущена):

Кнопка отпущена (но уже в другом состоянии и с другой надписью):

Все-таки тень (по нижнему правому краю) при не нажатой и ее отсутствие при нажатии делают интерфейс более красивым. Именно поэтому я храню кнопки битмапами, а не векторизую из линий окна, кнопки и т. д.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 19 2015, 19:09
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Arlleex @ Jul 19 2015, 21:58) *
Линиями, думаю, такого эффекта не добиться.

Повеяло девяностыми. Сейчас в моде прямоугольники, закрашенные сплошным цветом, и простой текст поверх них :-)
Но о вкусах не спорят. Хозяин - барин.
Go to the top of the page
 
+Quote Post
Rash
сообщение Jul 19 2015, 19:23
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



не критикую, но 49k на кнопку очень круто по ресурсам. У себя рисую всё векторно, да долго и отладки много, но зато один раз сделал и как хочешь потом крути и масштабируй. И данную картинку всю векторно (через линии и дуги) можно сделать и фон и кнопку. А то так памяти не напасёшься.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 19 2015, 19:57
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Rash @ Jul 19 2015, 22:23) *
не критикую, но 49k на кнопку очень круто по ресурсам

Я вас умоляю. Нынче внешняя флеш продаётся по 3 копейки за тонну.
Go to the top of the page
 
+Quote Post
DVF
сообщение Jul 19 2015, 20:30
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Цитата(scifi @ Jul 19 2015, 22:09) *
Сейчас в моде прямоугольники, закрашенные сплошным цветом, и простой текст поверх них :-)

Ну, если только в таком ключе.
Go to the top of the page
 
+Quote Post
Rash
сообщение Jul 20 2015, 05:40
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Цитата(scifi @ Jul 19 2015, 22:57) *
Я вас умоляю. Нынче внешняя флеш продаётся по 3 копейки за тонну.


согласен, только ИМХО лишнее это всё
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 20 2015, 06:18
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Arlleex @ Jul 19 2015, 21:58) *
Все-таки тень (по нижнему правому краю) при не нажатой и ее отсутствие при нажатии делают интерфейс более красивым. Именно поэтому я храню кнопки битмапами, а не векторизую из линий окна, кнопки и т. д.


Я тоже такое использую, как тип bitbutton, но только для "наружки", т.е. выбор на экране для клиента, а в формах настройки, где куча виджетов - обычные кнопки, как в винде. В любом случае гораздо оптимальней иметь саму кнопку, а текст накладывать отдельно, тогда в памяти будет только один экземпляр...

Цитата(scifi @ Jul 19 2015, 22:57) *
Я вас умоляю. Нынче внешняя флеш продаётся по 3 копейки за тонну.


Вот из-за такого подхода сейчас зайти на почту в инете все-равно, что загрузить видеоролик среднего размера, обленились все до нельзя, кидаются мегабайтами, где килобайта достаточно... Но каналы связи все-равно не резиновые, скоро все "вставать" начнет, как машины на дороге wacko.gif
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01565 секунд с 7
ELECTRONIX ©2004-2016