Jump to content

    
Sign in to follow this  
Oleg_IT

Сохранение настроечных параметров.

Recommended Posts

Есть готовый модуль с STM32F417, на нём стоит NAND. Как я понимаю, программа туда и записывается. Нужно сохранить несколько байт настроечной информации, периодически она может меняться. Как записать/считать данные и как выбрать адреса куда записывать в NAND, что бы там ни чего не испортить?

 

Share this post


Link to post
Share on other sites

Что такое готовый модуль? Там какая-то готовая прошивка?

 

stm32F4 не умеет исполнять программу из nand. Т.е. там есть загрузчик, который ее оттуда выгружает в ОЗУ. Дальше соответственно смотреть, что делает загрузчик, определить, какие блоки свободны и писать туда...

Share this post


Link to post
Share on other sites

Модуль готовый, программа моя.

То что программа загружается в ОЗУ это понятно. Есть библиотека или примеры как в NAND записать/прочитать байт?

Share this post


Link to post
Share on other sites

AN2784 есть (он про F1, но разницы особой нет). Плюс даташит на вашу модель Nand.

 

Но я все еще не понял - программа ваша, а загрузчик нет? Можно ж посмотреть, что загрузчик делает...

Share this post


Link to post
Share on other sites
Есть библиотека или примеры как в NAND записать/прочитать байт?

NAND для хранения часто меняющихся настроек - не очень кузяво. Ресурс, как считается, невелик по сравнению с набортной флеш STM32. Записывать можно только страницу целиком, стирать - только блок (много страниц).

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

Share this post


Link to post
Share on other sites
NAND для хранения часто меняющихся настроек - не очень кузяво.

 

Тут вопрос, насколько заморочиться. Если сделать wear leveling, плюс использование всех страниц в блоке - по идее будет вполне нормально с ресурсом. Опять же вопрос, что есть настройки и как часто они меняются.

 

Но со встроенным флешем в разы проще, это да :)

 

Share this post


Link to post
Share on other sites
Сохранять нужно не более 10 байт, и очень редко, скорей всего при настройке.

Чего-то про встроенный флешь не подумал.

 

Есть еще память RTC и Backup ОЗУ, правда нужна батарейка, зато доступ как к обычной ОЗУ

Share this post


Link to post
Share on other sites
Есть готовый модуль с STM32F417, на нём стоит NAND. Как я понимаю, программа туда и записывается. Нужно сохранить несколько байт настроечной информации, периодически она может меняться. Как записать/считать данные и как выбрать адреса куда записывать в NAND, что бы там ни чего не испортить?

Как scifi уже заметил, было множество обсуждений на тему.

Например я пишу настройки во внутреннюю флэш контроллера, объявляя настройки в программе как константы с атрибутами, которые собираются затем в последнюю страницу флэш. Более подробно в тему я писал тут.

 

Share this post


Link to post
Share on other sites

можно написать эмулятор eeprom используя 2 страницы внутренней флеш, как по мне очень удобно. STMовский эмулятор советую не брать, глючный алгоритм при инициализации у них, проявилось на аккумуляторных устройствах, которые могут перезагружаться подряд несколько раз при севшем аккуме и все данные портить.

Share this post


Link to post
Share on other sites
STMовский эмулятор советую не брать, глючный алгоритм при инициализации у них, проявилось на аккумуляторных устройствах, которые могут перезагружаться подряд несколько раз при севшем аккуме и все данные портить.

 

А в чем именно глючность?

Share this post


Link to post
Share on other sites
Как scifi уже заметил, было множество обсуждений на тему.

Например я пишу настройки во внутреннюю флэш контроллера, объявляя настройки в программе как константы с атрибутами, которые собираются затем в последнюю страницу флэш. Более подробно в тему я писал тут.

 

Зачем мучать внутреннюю Flash контроллера когда есть NAND?

В Keil с недавних пор файловая система стала поддерживать NAND.

Там делов на пару минут.

Скачивается SDK для нужного чипа, конфигурируются разделы NAND и все, можно штатными командами fread , fwrite писать в NAND сколько и чего угодно.

Share this post


Link to post
Share on other sites
А в чем именно глючность?

 

где-то в автомате инициализации, при постоянном дерганье питания в различных режимам происходит сбой, что все 2 выделенные страницы помимо полезных данных, содержат всякий бред. Нет CRC данных, но это недостаток. Сильно разбираться не стал где косяк, т.к. выловить такое на отладке проблематично. Написал свою, пол года в работе, в различных условиях помех, нареканий не было.

 

В Keil с недавних пор файловая система стала поддерживать NAND.

Поподробней можно этого трюка. В другие компиляторы, например в IAR портировать можно?

 

 

 

Share this post


Link to post
Share on other sites
Поподробней можно этого трюка. В другие компиляторы, например в IAR портировать можно?

 

Нет в IAR не портируется, ибо Keil свои базовые либы на C-и не раскрывает. А файловая система у них работает через слой базовых библиотек.

 

Но есть же еще лучшая файловая от Micrium. Давалась здесь инфа по этому поводу.

Share this post


Link to post
Share on other sites

Micrium как то пропустил из вида, да и бесплатных обновлений нет на неё, но можно и FatFs прикрутить, вопрос кто Nand на прямую подключённую обслуживать правильно будет

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this