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

Не могу найти библиотеку для STM32 NAND WEAR-LEVELING

Наткнулся на вот такой документ http://read.pudn.com/downloads786/sourcecode/embedded/3108807/UM1653_Rev1.pdf в котором описывается работа библиотеки работы с NAND флеш от STM содержащую в себе, помимо прочего, реализацию алгоритма выравнивания износа страниц. Может кто даст направление где искать саму библиотеку? На сайте stm не нашел.

Также буду рад ссылкам на другие реализации выравнивания износа (nand wear leveling).

Есть еще возможность использования Yaffs, LittleFS и прочих, но хотелось бы иметь возможность подключения устройства в режиме Mass Storage Device, что подразумевает использование FAT. 
Как вариант некоторого "извращения" можно создать 1 файл на nand флеши прибора в LittleFS, например, и писать туда блоками по 512 байт считая что это функции записи непосредственно на носитель, а поверх этого уровня уже FAT. Что скажете?

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


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

К сожалению чего-нибудь дельного найти не удалось для микроконтроллеров. Для fatfs есть реализация exfat (вроде как там есть выравнивание износа). Можно поковыряться здесь (есть работа с голой nand) https://github.com/atmelcorp/atmel-software-package

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


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

23.01.2020 в 16:51, kochevkv сказал:

иметь возможность подключения устройства в режиме Mass Storage Device, что подразумевает использование FAT. 
Как вариант некоторого "извращения" можно создать 1 файл на nand флеши прибора в LittleFS,

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

Изменено пользователем mantech

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


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

On 11/25/2020 at 2:53 PM, mantech said:

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

 

Давно не заглядывал сюда :acute: В итоге отказались от этой NANDы в пользу SD карты (у нормальных карт контроллер износа встроенный). 
Просто хотелось минимальный размер записи в 512 байт, а у NAND чтобы перезаписать 512 байт надо стереть кластер (уж не помню как он там называется) 64 кБ. Таким макаром перезапись FAT таблицы погубит флешку очень быстро. Хотя кто знает что там на SD карте происходит физически, может тоже так же, но там кэш встроен должен быть 64 кБ, а для NANDы только 4к, т.е. оперативу контроллера придется брать. И скорость оказалась нам недостаточна. С моим простым алгоритмом выравнивания с буферизацией работало медленно.

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


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

3 часа назад, kochevkv сказал:

В итоге отказались от этой NANDы в пользу SD карты (у нормальных карт контроллер износа встроенный). 

Вполне разумно. Лет 10-15 назад, использование НАНДа посчитал бы оправданным, но теперь, когда есть СД карты - это глупость, даже, если уж так хочется в виде чипа на плату, лучше уж еММС, чем нанды, ИМХО...

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


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

3 hours ago, kochevkv said:

 а для NANDы только 4к, т.е. оперативу контроллера придется брать.

NAND-ы гораздо более детерминированы. Поэтому когда че писать надо и мало буфера, то только NAND.
А юзать надо было YAFFS2. 

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


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

13 hours ago, mantech said:

Вполне разумно. Лет 10-15 назад, использование НАНДа посчитал бы оправданным, но теперь, когда есть СД карты - это глупость, даже, если уж так хочется в виде чипа на плату, лучше уж еММС, чем нанды, ИМХО...

Сначала хотели найти EMMC с последовательным интерфейсом и в корпусе SO-8 как NAND или NOR. По сути хотелось бы SD карту в корпусе SO-8 :acute: Но не нашлось такого. Либо многовыводный BGA, который у нас не любят совсем ну и платы под него многослойные надо, либо NAND в SO-8 но с вышеуказанными не решенными проблемами

13 hours ago, AlexandrY said:

NAND-ы гораздо более детерминированы. Поэтому когда че писать надо и мало буфера, то только NAND.
А юзать надо было YAFFS2. 

А она в Windows не поддерживается (?), а нужна ещё поддержка USB MSD. Хотел найти реализацию MTP интерфейса где-нибудь на STM32, но не нашёл. А так можно было бы YAFFS или Little FS использовать.

Изменено пользователем kochevkv

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


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

6 minutes ago, kochevkv said:

А она в Windows не поддерживается (?), а нужна ещё поддержка USB MSD. Хотел найти реализацию MTP интерфейса где-нибудь на STM32, но не нашёл. А так можно было бы любую ФС использовать.

У меня все проприетарные системы работают через FTP->TCP->RNDIS->USB.
Очень удобно. От хостовой операционки нужен самый минимум драйверов и способностей. 

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


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

2 minutes ago, AlexandrY said:

У меня все проприетарные системы работают через FTP->TCP->RNDIS->USB.
Очень удобно. От хостовой операционки нужен самый минимум драйверов и способностей. 

А не скажете какие минимальные требования к ОЗУ контроллера и сколько памяти кода  требуется под это всё?

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


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

Just now, kochevkv said:

А не скажете какие минимальные требования к ОЗУ контроллера и сколько памяти кода  требуется под это всё?

RTOS - крохи.
Стек FTP - 2КБайта.
Стек и буфер пакетов TCP - 64КБайта
Стек и буфер USB RNDIS - 64КБайта
Ну и на файловую, там куча. На кучу отдаю 200 КБайт.
Эт для безбедной жизни, чтобы ни о чем не беспокоиться. А так конечно можно и оптимизировать до изнеможения.
Раза в два можно сократить достаточно легко.  

 

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


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

11 часов назад, AlexandrY сказал:

Стек и буфер пакетов TCP - 64КБайта

Во многих случаях можно вообще обойтись без каких либо "буферов" для TCP.

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


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

21 час назад, AlexandrY сказал:

Стек и буфер пакетов TCP - 64КБайта
Стек и буфер USB RNDIS - 64КБайта
Ну и на файловую, там куча. На кучу отдаю 200 КБайт.

Зачем все это??  Минимальный стек TCP\UDP - 1кбайт на переменные и пара буферов размером с MTU и все! ФС тоже много не берет, вообщем на МК с 64Кбайт памяти ОЗУ на все это добро хватит и еще много на собственно программу останется, ИМХО.

9 часов назад, jcxz сказал:

Во многих случаях можно вообще обойтись без каких либо "буферов" для TCP.

Можно, но с буфером под размер пакета все-таки удобнее...

21 час назад, kochevkv сказал:

Сначала хотели найти EMMC с последовательным интерфейсом и в корпусе SO-8 как NAND или NOR.

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

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


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

07.04.2021 в 20:18, kochevkv сказал:

Хотя кто знает что там на SD карте происходит физически

На SD-карте тоже размер блока стирания может быть многократно больше блока записи. Давно не работал с SD, но насколько помню: типичные значения там - до 256КБ на стирание. Так что - поменяли шило на мыло.

07.04.2021 в 20:18, kochevkv сказал:

И скорость оказалась нам недостаточна.

"скорость" - понятие растяжимое. Одно дело - средняя скорость потока записываемых данных, а другое дело - максимальное время задержки на запись данных. С последним у SD-карт очень плохо.

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


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

1 hour ago, mantech said:

Зачем все это?? 

Я ж сказал - чтоб ни в чем себе не отказывать.
Зачем минимальный стек? У меня в тех параметрах укладывается максимальный стек. (ARP, RARP, IGMP, UDP, TCP, SNTP, DHCP, DNS, FTP, TLS,TELNET,MQTT...)   :biggrin: 

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


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

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

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

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

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

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

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

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

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

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