Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сохранение настроечных параметров.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Oleg_IT
Есть готовый модуль с STM32F417, на нём стоит NAND. Как я понимаю, программа туда и записывается. Нужно сохранить несколько байт настроечной информации, периодически она может меняться. Как записать/считать данные и как выбрать адреса куда записывать в NAND, что бы там ни чего не испортить?
Непомнящий Евгений
Что такое готовый модуль? Там какая-то готовая прошивка?

stm32F4 не умеет исполнять программу из nand. Т.е. там есть загрузчик, который ее оттуда выгружает в ОЗУ. Дальше соответственно смотреть, что делает загрузчик, определить, какие блоки свободны и писать туда...
Oleg_IT
Модуль готовый, программа моя.
То что программа загружается в ОЗУ это понятно. Есть библиотека или примеры как в NAND записать/прочитать байт?
Непомнящий Евгений
AN2784 есть (он про F1, но разницы особой нет). Плюс даташит на вашу модель Nand.

Но я все еще не понял - программа ваша, а загрузчик нет? Можно ж посмотреть, что загрузчик делает...
scifi
Цитата(Oleg_IT @ Dec 8 2015, 15:44) *
Есть библиотека или примеры как в NAND записать/прочитать байт?

NAND для хранения часто меняющихся настроек - не очень кузяво. Ресурс, как считается, невелик по сравнению с набортной флеш STM32. Записывать можно только страницу целиком, стирать - только блок (много страниц).
Почему бы не задействовать для этого встроенную флеш STM32? На этом форуме уже было множество обсуждений нюансов, с этим связанных.
Непомнящий Евгений
Цитата(scifi @ Dec 8 2015, 16:28) *
NAND для хранения часто меняющихся настроек - не очень кузяво.


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

Но со встроенным флешем в разы проще, это да sm.gif
Oleg_IT
Сохранять нужно не более 10 байт, и очень редко, скорей всего при настройке.
Чего-то про встроенный флешь не подумал.
Kolia
Цитата(Oleg_IT @ Dec 9 2015, 11:02) *
Сохранять нужно не более 10 байт, и очень редко, скорей всего при настройке.
Чего-то про встроенный флешь не подумал.


Есть еще память RTC и Backup ОЗУ, правда нужна батарейка, зато доступ как к обычной ОЗУ
KnightIgor
Цитата(Oleg_IT @ Dec 8 2015, 10:34) *
Есть готовый модуль с STM32F417, на нём стоит NAND. Как я понимаю, программа туда и записывается. Нужно сохранить несколько байт настроечной информации, периодически она может меняться. Как записать/считать данные и как выбрать адреса куда записывать в NAND, что бы там ни чего не испортить?

Как scifi уже заметил, было множество обсуждений на тему.
Например я пишу настройки во внутреннюю флэш контроллера, объявляя настройки в программе как константы с атрибутами, которые собираются затем в последнюю страницу флэш. Более подробно в тему я писал тут.
Rash
можно написать эмулятор eeprom используя 2 страницы внутренней флеш, как по мне очень удобно. STMовский эмулятор советую не брать, глючный алгоритм при инициализации у них, проявилось на аккумуляторных устройствах, которые могут перезагружаться подряд несколько раз при севшем аккуме и все данные портить.
ohmjke
Цитата(Rash @ Dec 10 2015, 23:52) *
STMовский эмулятор советую не брать, глючный алгоритм при инициализации у них, проявилось на аккумуляторных устройствах, которые могут перезагружаться подряд несколько раз при севшем аккуме и все данные портить.


А в чем именно глючность?
AlexandrY
Цитата(KnightIgor @ Dec 10 2015, 19:15) *
Как scifi уже заметил, было множество обсуждений на тему.
Например я пишу настройки во внутреннюю флэш контроллера, объявляя настройки в программе как константы с атрибутами, которые собираются затем в последнюю страницу флэш. Более подробно в тему я писал тут.


Зачем мучать внутреннюю Flash контроллера когда есть NAND?
В Keil с недавних пор файловая система стала поддерживать NAND.
Там делов на пару минут.
Скачивается SDK для нужного чипа, конфигурируются разделы NAND и все, можно штатными командами fread , fwrite писать в NAND сколько и чего угодно.
Rash
Цитата(ohmjke @ Dec 11 2015, 00:03) *
А в чем именно глючность?


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

Цитата(AlexandrY @ Dec 11 2015, 00:18) *
В Keil с недавних пор файловая система стала поддерживать NAND.

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


AlexandrY
Цитата(Rash @ Dec 10 2015, 23:25) *
Поподробней можно этого трюка. В другие компиляторы, например в IAR портировать можно?


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

Но есть же еще лучшая файловая от Micrium. Давалась здесь инфа по этому поводу.
Rash
Micrium как то пропустил из вида, да и бесплатных обновлений нет на неё, но можно и FatFs прикрутить, вопрос кто Nand на прямую подключённую обслуживать правильно будет
Непомнящий Евгений
Мне попадалась вот такая штука http://uffs.sf.net/

Цитата
UFFS is a nand flash file system designed for embedded system.

UFFS have some unique and advanced features:
* Low cost: e.g. it needs only 164K bytes RAM for 128 MBytes NAND
flash (512 bytes per page, 32 pages per block, total 8192 blocks).
* Fast booting: typically it only needs 1~3 seconds to mount full
loaded 128 Mbytes NAND flash.
* Superb Reliability:
- The file system is designed for the embedded system which may
frequently lost powre/reset without care.
- Journal file system, the file system will automatically rollback
to last state if the 'write' operation is interrupted by
accident (power lost/reset etc.).
- When 'write' return without error, the data is 100% guarenteed be
saved to flash.

* Fast file create/read/write/seek.
* Bad-block tolerant, ECC enable and good ware-leveling.
* There is no garbage collection needed for UFFS.
* Support multiple NAND flash class in one system
* Support bare flash hardware, no operating system needed.
* Fully simulated on PC (Windows/Linux).


Правда она жрет кучу ОЗУ (Low cost: e.g. it needs only 164K bytes RAM for 128 MBytes NAND). Слова про low cost в контексте stm32 доставляют sm.gif Но по сравнению со "взрослыми" nand-ориентированными ФС это наверное и правда немного

Я на ее основе сделал свою недоФС, заточенную под b+ деревья, заодно получилось примерно 70К ОЗУ на 512М.

А кто кейлом пользовался - сколько памяти кушает его ФС? Ну и вопрос, насколько она заточена именно под nand
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.