kochevkv 0 23 января, 2020 Опубликовано 23 января, 2020 · Жалоба Наткнулся на вот такой документ 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. Что скажете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
unreal_himan 0 3 ноября, 2020 Опубликовано 3 ноября, 2020 · Жалоба К сожалению чего-нибудь дельного найти не удалось для микроконтроллеров. Для fatfs есть реализация exfat (вроде как там есть выравнивание износа). Можно поковыряться здесь (есть работа с голой nand) https://github.com/atmelcorp/atmel-software-package Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 3 ноября, 2020 Опубликовано 3 ноября, 2020 · Жалоба LevelX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 25 ноября, 2020 Опубликовано 25 ноября, 2020 (изменено) · Жалоба 23.01.2020 в 16:51, kochevkv сказал: иметь возможность подключения устройства в режиме Mass Storage Device, что подразумевает использование FAT. Как вариант некоторого "извращения" можно создать 1 файл на nand флеши прибора в LittleFS, Использовать поверх вы можете что угодно, хоть фат, или просто читать-записывать сектора, а сам алгоритм можно использовать простейший - в секторе флеша есть 16 байт служебной инфы, пишите туда статус и счетчик перезаписей, зарезервируйте вектор перехода на след исправный сектор в резервной области в случае выбытия данного из работы и при каждой записи инкрементируйте счетчик, как только он превысит Nное число, ставим флаг выбытия, и перекидываем на другой. Это примитивно, конечно, но если у вас не файловый сервер, то вполне пойдет.. Изменено 25 ноября, 2020 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 7 апреля, 2021 Опубликовано 7 апреля, 2021 · Жалоба On 11/25/2020 at 2:53 PM, mantech said: Использовать поверх вы можете что угодно, хоть фат, или просто читать-записывать сектора, а сам алгоритм можно использовать простейший - в секторе флеша есть 16 байт служебной инфы, пишите туда статус и счетчик перезаписей, зарезервируйте вектор перехода на след исправный сектор в резервной области в случае выбытия данного из работы и при каждой записи инкрементируйте счетчик, как только он превысит Nное число, ставим флаг выбытия, и перекидываем на другой. Это примитивно, конечно, но если у вас не файловый сервер, то вполне пойдет.. Давно не заглядывал сюда В итоге отказались от этой NANDы в пользу SD карты (у нормальных карт контроллер износа встроенный). Просто хотелось минимальный размер записи в 512 байт, а у NAND чтобы перезаписать 512 байт надо стереть кластер (уж не помню как он там называется) 64 кБ. Таким макаром перезапись FAT таблицы погубит флешку очень быстро. Хотя кто знает что там на SD карте происходит физически, может тоже так же, но там кэш встроен должен быть 64 кБ, а для NANDы только 4к, т.е. оперативу контроллера придется брать. И скорость оказалась нам недостаточна. С моим простым алгоритмом выравнивания с буферизацией работало медленно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 7 апреля, 2021 Опубликовано 7 апреля, 2021 · Жалоба 3 часа назад, kochevkv сказал: В итоге отказались от этой NANDы в пользу SD карты (у нормальных карт контроллер износа встроенный). Вполне разумно. Лет 10-15 назад, использование НАНДа посчитал бы оправданным, но теперь, когда есть СД карты - это глупость, даже, если уж так хочется в виде чипа на плату, лучше уж еММС, чем нанды, ИМХО... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 7 апреля, 2021 Опубликовано 7 апреля, 2021 · Жалоба 3 hours ago, kochevkv said: а для NANDы только 4к, т.е. оперативу контроллера придется брать. NAND-ы гораздо более детерминированы. Поэтому когда че писать надо и мало буфера, то только NAND. А юзать надо было YAFFS2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 8 апреля, 2021 Опубликовано 8 апреля, 2021 (изменено) · Жалоба 13 hours ago, mantech said: Вполне разумно. Лет 10-15 назад, использование НАНДа посчитал бы оправданным, но теперь, когда есть СД карты - это глупость, даже, если уж так хочется в виде чипа на плату, лучше уж еММС, чем нанды, ИМХО... Сначала хотели найти EMMC с последовательным интерфейсом и в корпусе SO-8 как NAND или NOR. По сути хотелось бы SD карту в корпусе SO-8 Но не нашлось такого. Либо многовыводный BGA, который у нас не любят совсем ну и платы под него многослойные надо, либо NAND в SO-8 но с вышеуказанными не решенными проблемами 13 hours ago, AlexandrY said: NAND-ы гораздо более детерминированы. Поэтому когда че писать надо и мало буфера, то только NAND. А юзать надо было YAFFS2. А она в Windows не поддерживается (?), а нужна ещё поддержка USB MSD. Хотел найти реализацию MTP интерфейса где-нибудь на STM32, но не нашёл. А так можно было бы YAFFS или Little FS использовать. Изменено 8 апреля, 2021 пользователем kochevkv Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 8 апреля, 2021 Опубликовано 8 апреля, 2021 · Жалоба 6 minutes ago, kochevkv said: А она в Windows не поддерживается (?), а нужна ещё поддержка USB MSD. Хотел найти реализацию MTP интерфейса где-нибудь на STM32, но не нашёл. А так можно было бы любую ФС использовать. У меня все проприетарные системы работают через FTP->TCP->RNDIS->USB. Очень удобно. От хостовой операционки нужен самый минимум драйверов и способностей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 8 апреля, 2021 Опубликовано 8 апреля, 2021 · Жалоба 2 minutes ago, AlexandrY said: У меня все проприетарные системы работают через FTP->TCP->RNDIS->USB. Очень удобно. От хостовой операционки нужен самый минимум драйверов и способностей. А не скажете какие минимальные требования к ОЗУ контроллера и сколько памяти кода требуется под это всё? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 8 апреля, 2021 Опубликовано 8 апреля, 2021 · Жалоба Just now, kochevkv said: А не скажете какие минимальные требования к ОЗУ контроллера и сколько памяти кода требуется под это всё? RTOS - крохи. Стек FTP - 2КБайта. Стек и буфер пакетов TCP - 64КБайта Стек и буфер USB RNDIS - 64КБайта Ну и на файловую, там куча. На кучу отдаю 200 КБайт. Эт для безбедной жизни, чтобы ни о чем не беспокоиться. А так конечно можно и оптимизировать до изнеможения. Раза в два можно сократить достаточно легко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 апреля, 2021 Опубликовано 8 апреля, 2021 · Жалоба 11 часов назад, AlexandrY сказал: Стек и буфер пакетов TCP - 64КБайта Во многих случаях можно вообще обойтись без каких либо "буферов" для TCP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 9 апреля, 2021 Опубликовано 9 апреля, 2021 · Жалоба 21 час назад, AlexandrY сказал: Стек и буфер пакетов TCP - 64КБайта Стек и буфер USB RNDIS - 64КБайта Ну и на файловую, там куча. На кучу отдаю 200 КБайт. Зачем все это?? Минимальный стек TCP\UDP - 1кбайт на переменные и пара буферов размером с MTU и все! ФС тоже много не берет, вообщем на МК с 64Кбайт памяти ОЗУ на все это добро хватит и еще много на собственно программу останется, ИМХО. 9 часов назад, jcxz сказал: Во многих случаях можно вообще обойтись без каких либо "буферов" для TCP. Можно, но с буфером под размер пакета все-таки удобнее... 21 час назад, kochevkv сказал: Сначала хотели найти EMMC с последовательным интерфейсом и в корпусе SO-8 как NAND или NOR. Они так-то есть, но чистый Китай, найти у нас проблематично, да и по отзывам, качество у них так себе, под загрузчик, с возможностью пару десятков раз обновиться - пойдет, для постоянной перезаписи не очень... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 9 апреля, 2021 Опубликовано 9 апреля, 2021 · Жалоба 07.04.2021 в 20:18, kochevkv сказал: Хотя кто знает что там на SD карте происходит физически На SD-карте тоже размер блока стирания может быть многократно больше блока записи. Давно не работал с SD, но насколько помню: типичные значения там - до 256КБ на стирание. Так что - поменяли шило на мыло. 07.04.2021 в 20:18, kochevkv сказал: И скорость оказалась нам недостаточна. "скорость" - понятие растяжимое. Одно дело - средняя скорость потока записываемых данных, а другое дело - максимальное время задержки на запись данных. С последним у SD-карт очень плохо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 9 апреля, 2021 Опубликовано 9 апреля, 2021 · Жалоба 1 hour ago, mantech said: Зачем все это?? Я ж сказал - чтоб ни в чем себе не отказывать. Зачем минимальный стек? У меня в тех параметрах укладывается максимальный стек. (ARP, RARP, IGMP, UDP, TCP, SNTP, DHCP, DNS, FTP, TLS,TELNET,MQTT...) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться