|
STM32 SDRAM, NOR Flash |
|
|
|
Jul 19 2015, 11:44
|

Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Jul 19 2015, 17:12
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Arlleex @ Jul 19 2015, 18:15)  А вы как примитивы отрисовывали? Просто у меня та же кнопка - это не набор из битмапа самой кнопки и отдельно накладываемого текста. У меня это кнопка с текстом сразу. Кнопка 229x54 пикселя, 32 бита на пиксель, итого ~49 кБайт на кнопку. О как оно!!! А вы не подумали, сколь времени будет отрисовываться такая кнопка? А если их много и переместили окно, будет слайд-шоу какое-то... Я рисовал как обычно, с помощью прямоугольников, линий и дуг, а текст - растеризованный ttf шрифт. Занимает нисколько места и рисуется почти мгновенно. Цитата(Arlleex @ Jul 19 2015, 18:15)  Городить отдельно кнопку и накладывать на нее текст не хочу =) Никогда бы не подумал, что это так сложно  Цитата(scifi @ Jul 19 2015, 16:47)  С нюансами не знаком, но не вижу повода для иронии. Неужели переписать содержимое из NOR Flash в SDRAM - неподъёмная задача? Коли так, бросайте эти микроконтроллеры. Ну если уж там такая засада, что нужно отключать регенерацию динам. памяти, то читайте с флешки, как с гпио, она-же очень просто адресуется, как старые ромы - шина адреса, данных и строб ОЕ. Или, если идет линейная переброска в рам, то регенерация не нужна, там и так будет полный перебор строк... Нужно только включить ее не забыть после копирования
Сообщение отредактировал mantech - Jul 19 2015, 17:13
|
|
|
|
Сообщений в этой теме
Arlleex STM32 SDRAM, NOR Flash Jul 19 2015, 11:44 scifi Если я правильно понимаю, SDRAM легко может быть в... Jul 19 2015, 11:52 Arlleex По сути, как я понял, ты предлагаешь выделить небо... Jul 19 2015, 11:57 scifi Цитата(Arlleex @ Jul 19 2015, 14:57) По с... Jul 19 2015, 13:47 Genadi Zawidowski ЦитатаВ микроконтроллере STM32F446 эта проблема уж... Jul 19 2015, 12:29 Rash Сделайте запрос в инет магазины, что бы сообщили р... Jul 19 2015, 12:42 Arlleex Насчет STM32F446 - пардон, написал по памяти, но м... Jul 19 2015, 12:51 Rash просто активно юзаю emWin, виджетов и диалогов мно... Jul 19 2015, 13:24 Arlleex scifi, я не иронизировал. Я принял это как пока чт... Jul 19 2015, 14:01 mantech Цитата(Arlleex @ Jul 19 2015, 14:44) Поск... Jul 19 2015, 15:07  DVF Цитата(mantech @ Jul 19 2015, 20:12) О ка... Jul 19 2015, 18:37 Arlleex mantech, ну, по мне так, как-то бледновато выходит... Jul 19 2015, 17:30 Arlleex Линиями, думаю, такого эффекта не добиться.
Не наж... Jul 19 2015, 18:58 scifi Цитата(Arlleex @ Jul 19 2015, 21:58) Лини... Jul 19 2015, 19:09  DVF Цитата(scifi @ Jul 19 2015, 22:09) Сейчас... Jul 19 2015, 20:30 mantech Цитата(Arlleex @ Jul 19 2015, 21:58) Все-... Jul 20 2015, 06:18 Rash не критикую, но 49k на кнопку очень круто по ресур... Jul 19 2015, 19:23 scifi Цитата(Rash @ Jul 19 2015, 22:23) не крит... Jul 19 2015, 19:57 Rash Цитата(scifi @ Jul 19 2015, 22:57) Я вас ... Jul 20 2015, 05:40
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|