-
- Что интересно, у меня ни разу не возникало желание иметь файловую
систему. Открывать/закрывать файлы, делать там seek/read/write?
Обычно есть калибровочная таблица - просто кусок флеша, который
несложно стереть/записать/прочитать. И настройки пользователя,
которые по сути структура, и её кусочки могут часто меняться. У
меня реализовано в виде дописывания журнала изменений, ну и при
старте этот журнал разматывается, воспроизводя структуру в ОЗУ. - SciFi(13.01.2025 20:31)
- Как-бы задачи разные бывают. Это значит только что у вас нет задач в которых фигурируют данные именно в виде файлов. AlexG(261 знак., 14.01.2025 23:27)
- А когда окажется, что нужно хранит конфигурации произвольно
подключаемых периферийных устройств, настройки пользователей,
журналы всего этого - желание заниматься жёстким распределением
данных и выравниванием износа вручную - отпадёт и придёт понимание,
что "как было бы хорошо работать с файлами"... - Nikolay_Po(13.01.2025 23:01)
- Это уже другого класса устройство. Там, возможно, будет уместен
линух. - SciFi(14.01.2025 08:17)
- ставить линукс везде где и не надо его ... так себе упращение жизни. недолгое. - klen(14.01.2025 14:25)
- Ну да. В условиях -20..+40 окружающей, с вибрациями на пром.
оборудовании... Да я лучше SPI-флешку с LittleFS поставлю. - Nikolay_Po(14.01.2025 13:48)
- Просто интересно, что за устройство работает в условиях -20 +40 с
вибрациями и прочей прелестью, у которого через несколько лет после
разработки появляется необходимость приладить какую-нибудь фенечку,
доступную только из развитой файловой системы? - Kpoк(14.01.2025 17:04)
- У меня сейчас в текущем проекте, первые системы которого уже в эксплуатации, 16МБ флеш-памяти для записей журналов. При этом, выгрузка делается весьма неудобно - по Modbus RTU через стороннюю графическую панель, в итоге, в файлы. Неудобно, долго и нудно. И я бы с удовольствием заменил текущее решение на своё. Но на момент начала проекта и проработки архитектуры, не было уверенности, что в заданные сроки сможем разработать сами. Nikolay_Po(87 знак., 14.01.2025 21:21)
- Просто интересно, что за устройство работает в условиях -20 +40 с
вибрациями и прочей прелестью, у которого через несколько лет после
разработки появляется необходимость приладить какую-нибудь фенечку,
доступную только из развитой файловой системы? - Kpoк(14.01.2025 17:04)
- Это уже другого класса устройство. Там, возможно, будет уместен
линух. - SciFi(14.01.2025 08:17)
- А что за хрень тут происходит? Ralex(34 знак., 13.01.2025 12:52)
- а я предупреждал! ваш любимый С в олбанском стиле нужно смореть через зеленые стекла... не поверили :) что характерно! код имеет Copyright (c) 2017, Arm Limited. All rights reserved. - klen(13.01.2025 18:39)
- Если ошибки не возникает в принципе, то возвращается значение типа int, даже если тип err был другим. Такое может быть полезно как затычка, для случая, когда ошибок быть не может - чтобы сделать неявное приведение типа, когда err не int, а какой нибудь другой тип, например, enum или что там в Плюсах может быть. Если кусок кода не генерирует ошибки - возвращаем ноль и не паримся с типом. В других случаях возможны предупреждения компилятора. - Nikolay_Po(13.01.2025 18:18)
- Недавно читал пост, в котором автор подобного фрагмента объяснял его появление тем, что он гуманитарий AlexG(52 знак., 13.01.2025 16:33)
- err имеет внутренние значения (0 - нет ошибкИ, не ноль - код
ошибки). И вот "наружу" согласно API надо выдать 0 (false?) если
есть ошибка (!err) - как вариант почему так могло получиться - POV(13.01.2025 15:53)
- это понятно, но чем эти две строчки отличаются от одной "return err;" ? - Ralex(13.01.2025 16:15)
- И не такое встречается :-) il-2(1 знак., 13.01.2025 15:42, картинка)
- в общем да, с такми глазами я это пытаюсь выпрямить. klen(1 знак., 13.01.2025 18:44, картинка)
- Надел зеленые очки и повдуплял. Только у меня в очках не тот
оттенок зеленого :) Интересно было бы поганять телегу под линухом.
Только нет интерфейса для io_t и надо вылускивать, что там внутри.
Видно там все на свалку и вызовы библиотечных функций и переменные
и буфера. Вот если бы был интерфейс можно было бы сделать
имплементацию под линх и погонять на тестах и проверить
санитайзерами. Да и функции драйвера можно вынести в класс (если
понял правильно то это framer(15 знак., 12.01.2025 22:46)
- функции драйвера как раз и вынесены - в параметр шаблона - класс
io_t , а сам io_t тоже шаблонный и имеет параметр - класс драйвер
специфической флехи. klen(25530 знак., 12.01.2025 23:39)
- О теперь понятнее. Сразу же убился об макро. framer(1095 знак., 13.01.2025 21:04)
- сейчас 32-бит контроллера без DMA не очень-то и найти... в
побайтных SPI-трансферах на одних инлайнах/неинлайнах от фантазий
компиляторописателей можно такие разбросы огрести, что все эти
измерения - частный случай. и вам везёт - выбираете флешки без
неравномерного размера страниц по телу (на плюсах должно решаться,
конечно, удобнее)... ну а wait_busy подразумевает либо тупое
ожидание, либо отдано на откуп вытеснению. при 2-х устройствах на
одном SPI решение будет сильно Vit(54 знак., 13.01.2025 00:53)
- Как втащить поддержку dma мне понятно. Поддержку синхронизации для
мультпоточности уже всунул. Я имел ввиду свойства самой littlefs. - klen(13.01.2025 01:57)
- так там ещё нужно решать тучу моментов стыковки уровня
сектор-кластер. на DMA это в первую очередь и ложится, но оно
торчит на слой выше голых дров. т.е. это не те дрова. ну и если
явно видно ожидающую семантику, то опять же никаких возвратных
статусов не видно. оно, наверно, выглядит проще, но, КМК, тематика
съедена давно, а реализации как раз и соревнуются в вопросах
синхронизации и кэширования. т.е. там самое интересное, а не в API - Vit(13.01.2025 09:13)
- апи тоже важен, он отражает педали алгоритмов. видя мой сценарий - для чего я ваще это все затеял, думаю попробывать добавить управление кэшем, чтоб делать упреждающее чтение файла, или как то добавить это в автомат. при работе с драйвером видеокарты сейчас можно настроить политику шины - то есть дать драйверу априорную информацию о цели работы с файлом для балансировки шины. хочу тут также. мне нужно чтоб чтение всегда было из кеша. одно расстраивает - нет в сh32vxxx klen(27 знак., 13.01.2025 12:51)
- так там ещё нужно решать тучу моментов стыковки уровня
сектор-кластер. на DMA это в первую очередь и ложится, но оно
торчит на слой выше голых дров. т.е. это не те дрова. ну и если
явно видно ожидающую семантику, то опять же никаких возвратных
статусов не видно. оно, наверно, выглядит проще, но, КМК, тематика
съедена давно, а реализации как раз и соревнуются в вопросах
синхронизации и кэширования. т.е. там самое интересное, а не в API - Vit(13.01.2025 09:13)
- Как втащить поддержку dma мне понятно. Поддержку синхронизации для
мультпоточности уже всунул. Я имел ввиду свойства самой littlefs. - klen(13.01.2025 01:57)
- функции драйвера как раз и вынесены - в параметр шаблона - класс
io_t , а сам io_t тоже шаблонный и имеет параметр - класс драйвер
специфической флехи. klen(25530 знак., 12.01.2025 23:39)
- А ты LFS как-то им коммитил, или только для себя правил?... POV(113 знак., 12.01.2025 21:50)
- Какбы делал на FatFs от Chan на больших носителях и на мелких своя файловая система (бейсик контроллер), но временные интервалы замерить не было идеи. Для вашей реализации расчет показывает , что на тактовой частоте 30М время передачи данных по SPI ~ 50 миллисекунд. Остальное либо накладные расходы стека либо ожидание готовности флэша, что сильно менее чем "(write) 424.1мс". Думаю надо понять , сколько ожидание от w25q512, а потом делать выводы. Позиционирование Driver_gv(51 знак., 12.01.2025 21:38)
- Что интересно, у меня ни разу не возникало желание иметь файловую
систему. Открывать/закрывать файлы, делать там seek/read/write?
Обычно есть калибровочная таблица - просто кусок флеша, который
несложно стереть/записать/прочитать. И настройки пользователя,
которые по сути структура, и её кусочки могут часто меняться. У
меня реализовано в виде дописывания журнала изменений, ну и при
старте этот журнал разматывается, воспроизводя структуру в ОЗУ. - SciFi(13.01.2025 20:31)