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

Как при заливке проекта на основе TOuchGFX картинки попадают в QSPI Flash память?

Поигрался с платой STM32F746G-Disco и TouchGFXDesigner. Все предельно просто - кидаешь картинку на форму, указываешь в настойках ее размещение (если internal section - то она попадет во флеш контроллера, если external section - то во внешнюю память), генерируется проект, он открывается в Keil, прошивается контроллер - вуаля - картинка в дисплее.

У меня вопрос - а как она туда попадает при прошивке? Прошивается ведь флеш контроллера и все.... Сам контроллер с QSPI при этом не общается. Решил что это какая-то фишка встроенного в отладочную плату ST-Link - то есть может быть он как-то распознает некие команды и программирует QSPI Flash - посмотрел схему платы Disco - ничего такого нет.....

В чем фокус? Или я чего-то не понимаю и картинки все таки в мкроконтроллере, а не во внешней памяти?

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


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

Хм.... у меня в сгенерированном проекте только первый пункт из тех, что приведены на скриншоте. По идее программа должна была сгенерировать правильные настройки, но этого не случилось. Значит картинка у меня во внутреннем флеше?

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


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

8 minutes ago, MementoMori said:

Хм.... у меня в сгенерированном проекте только первый пункт из тех, что приведены на скриншоте. По идее программа должна была сгенерировать правильные настройки, но этого не случилось. Значит картинка у меня во внутреннем флеше?

На картинке есть кнопочка Add

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


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

Вы не поняли. Я знаю как это добавить, но я удивляюсь почему программа генерации проекта это не сделала (у меня нет двух ваших пунктов), но проект работает.  Значит картинка во внутреннем флеше.  Что странно, ведь если в тексте программы объявлен адрес внешней памяти то....

 

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


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

10 hours ago, MementoMori said:

 Сам контроллер с QSPI при этом не общается. Решил что это какая-то фишка встроенного в отладочную плату ST-Link - то есть может быть он как-то распознает некие команды и программирует QSPI Flash

В чем фокус? Или я чего-то не понимаю и картинки все таки в мкроконтроллере, а не во внешней памяти?

ST-Link - Дает доступ к памяти и ядру процессора,  почти как j-tag. ПО STM - с помощью доступа к железу контроллера умет прошивать разные флешки, подключенные к контроллеру. STM32CubeProg -  посмотрите для примера.

Но, все же, посмотрите репорты самого Keil - после сборки проекта - он генерирует подробный отчет, что , куда положил, в какую область, какой объем занимает. Вполне может быть, что маленькие картинки спокойно лежат во внутреннем флеше - зависит от настроек сборки проекта.

 

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


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

13 minutes ago, izerg said:

ST-Link - Дает доступ к памяти и ядру процессора,  почти как j-tag. ПО STM - с помощью доступа к железу контроллера умет прошивать разные флешки, подключенные к контроллеру. STM32CubeProg -  посмотрите для примера.

Мне кажется что те настройки, что  привел x893 - это для того чтобы записать во внешнюю флеш принудительно, в лоб.  А то, что описали вы - скорее всего действительно по каким-то директивам система понимает, что нужно пообщаться не только  с внутренней флеш, но и с внешней.

 

Вот как объявлена картинка в сгенерированном коде

 

Quote

LOCATION_PRAGMA("ExtFlashSection")
KEEP extern const unsigned char _blue_check_buttons_check_mark_pressed[] LOCATION_ATTRIBUTE("ExtFlashSection") =   // 44x44 ARGB8888 pixels.
{

 

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


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

2 minutes ago, MementoMori said:

Вот как объявлена картинка в сгенерированном коде

Да это понятно,  посмотрите репорт файл после компиляции - там расписано - что в каком флеше лежит.

и да... вы когда программу меняете... Кейл стирает только микроконтроллер, если ему команды не даны - то внешнюю флеш - он трогать не будет.

Если там осталась картинка от прошлой прошивки ... то код вполне спокойно может получить эти данные :)

Для полной уверенности - стираете принудительно внешнюю флеш и сам контроллер, компилируете заново проект и прошиваете.

Если работает с картинками - смотрите отладчиком - куда прошились данные картинки.

И еще - Keil - ну очень долго шьет внешнюю флешку, это косвенно показатель. Долго по сравнению с "прошить контроллер".

Встречный вопрос- а зачем нужно с этим разбирать? что-то не работает?

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


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

1 minute ago, izerg said:

Встречный вопрос- а зачем нужно с этим разбирать? что-то не работает?

Нет, просто я и не подозревал, что есть такая возможность - прошивка внешней флеш контроллером не во время его работы, а во время прошивки. Был готов морально к геморрою, составлению карты адресного пространства, расчету адресов, бубнами с заливкой во внешнюю флеш картинок. А тут пару кликов - и все. Вот вам и калокуб))) Понятно, что созданный им код нужно будет еще оптимизировать и чистить, но такого "сервиса" не ожидал.

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


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

Не, ну... отставляем в сторону TouchGFX, CubeMX... и делаем все ручками :)

Тогда - нужны вон те настройки в проекте Кейла (хотя они и так нужны, иначе он не поймет что такое ExtFlashSection ).

Но и в этом случае - вы получите все го лишь два разных файла прошивки - отдельно прошивку для контроллера (его внутренней флешки) и отдельно прошивку для внешней флешки ( а бывает что их стоит не одна :))

... а так - Вам еще повезло с " STM32F746G-Disco " - для нее проекты сделаны более / менее "ровно".

Для STM32F469 - проект "из коробки" работает - если прошивать самим TouchGFX :)

Кейл с нуля проект от TouchGFX -  не соберет, "ему там чего-то не хватает".:)

 

Так что - попробовать, убедится что железо работает, и драйвера видят все чипы - на готовых проектах - хорошо, а вот дальше - все руками.

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


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

17 минут назад, MementoMori сказал:

А тут пару кликов - и все. Вот вам и калокуб)))

Да конечно все здорово, только при одном условии - если повторите в точности подключения, как на вашей дискавери, а потом вдруг придется проц поставить немного другой или подключить, как удобнее не инженерам СТ, а вам... Вот такие пляски с бубном начнутся, потому, что вы не представляете, как все этот куб делал - два ж клика всего-то, вот повеселитесь бывало...

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


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

Ну тогда придется делать не 2 а 4 клика, в том же ST-Link ... 2 клика - зашить проц, и еще 2 клика - зашить флешку.

... а то если очень все "через пень-колоду" подключено, например штатный QSPI- чем то занят, то можно и свой загрузчик написать.

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


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

38 minutes ago, izerg said:

посмотрите репорт файл после компиляци

Не подскажете, где он лежит и как хотя бы называется? Калокуб для Hello World генерирует миллиард файлов.

17 minutes ago, mantech said:

если повторите в точности подключения, как на вашей дискавери, а потом вдруг придется проц поставить немного другой или подключить, как удобнее не инженерам СТ,

Вот я  и пытался поглядеть, нет ли чего особенного в подключении. Не увидел. ЕДинственное - у меня две флешки, а на дискавери одна, но то такое. Я в этом отношении насторожен, не исключаю, что моя плата этим чудесным свойством обладать не будет.

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


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

не нравится куб - пишите самостоятельно :)

Файлы репорты сборки - находятся там, куда Keil их положил, и Куб к ним отношения не имеет.

Файлы появятся в выходной папке, после того - как проект скомпилировать.

 

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


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

Расширение для прошивки чего угодно можно самому написать и Keil его будет использовать и записывать куда надо.

Нажмите кнопку Add и посмотрите ВНИМАТЕЛЬНО на имя файла. Там же лежит шаблон.

После изучения шаблона - делайте своё расширение (.elf) под что угодно.

 

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...