Для работы с файловой системой, в Marlin/src/libs/fatfs лежит FATFs и драйвер SDIO. Marlin зачем-то использует формат имен файлов в формате 8.3, а ESP модуль и plugin в Cura используют длинные имена файлов. Мне не удалось использовать для этого библиотеку из Marlin. Кроме того, драйвер SDIO используемый Marlin не умеет мультиблочное чтение/запись. Поэтому я использовал FATFs и свой драйвер SDIO. При начале передачи карта отключается от Marlin, заново происходит инит карты, и уже через FATFs запись файла. После передачи файла карта обратно подключается в Marlin.
Для работы с файловой системой, в Marlin/src/libs/fatfs лежит FATFs и драйвер SDIO. Marlin зачем-то использует формат имен файлов в формате 8.3, а ESP модуль и plugin в Cura используют длинные имена файлов. Мне не удалось использовать для этого библиотеку из Marlin. Кроме того, драйвер SDIO используемый Marlin не умеет мультиблочное чтение/запись. Поэтому я использовал FATFs и свой драйвер SDIO. При начале передачи карта отключается от Marlin, заново происходит инит карты, и уже через FATFs запись файла. После передачи файла карта обратно подключается в Marlin.
Во время передачи файла управление в цикл Marlin не возвращается. Это значит, что пока идет передача никакой функционал Marlina не работает, команды не исполняются, устройства не управляются. Предполагается, что загрузка файла происходит во время простоя принтера. Есть проверка на то, чтобы передача не началась во время печати, но лучше не пробовать.
Во время передачи файла управление в цикл Marlin не возвращается. Это значит, что пока идет передача никакой функционал Marlin не работает, команды не исполняются, устройства не управляются. Предполагается, что загрузка файла происходит во время простоя принтера. Есть проверка на то, чтобы передача не началась во время печати, но лучше не пробовать.
Почему такая убогая работа с DMA, с опросом флага в цикле. Я не смог использовать прерывание. Авторы libmapple зачем-то переименовали общепринятые названия обработчиков прерываний. Обработчик по умолчанию с "weak" я нашел, но почему-то мой обработчик с таким именем не работал. Если кто-то может показать как подключить свой обработчик прерывания DMA, это сделает код чище, проще и немного быстрее.
Почему такая убогая работа с DMA, с опросом флага в цикле. Я не смог использовать прерывание. Авторы libmapple зачем-то переименовали общепринятые названия обработчиков прерываний. Обработчик по умолчанию с "weak" я нашел, но почему-то мой обработчик с таким именем не работал. Если кто-то может показать как подключить свой обработчик прерывания DMA, это сделает код чище, проще и немного быстрее.