#usb #stm32 #fatfs #sdmmc
Вопрос:
Я использую STM32, FATFS, SDMMC, eMMC и создал FATFS на eMMC. Я также создал том FATFS на USB-накопителе (режим хоста). Это тоже прекрасно работает.
FATFS eMMC работают нормально, тогда мне нужно скопировать все файлы с eMMC на USB-накопитель. Копирование файла за файлом из eMMC через FATFS занимает слишком много времени.
Я думаю, что было бы быстрее, если бы я просто слепо копировал блок памяти за блоком (512 байт) из eMMC в USBH. Поэтому я внедрил достаточно рутины, чтобы сделать это. Проблема в том, что копия не удалась после копирования примерно нескольких сотен блоков. Сбой, по-видимому, произошел из-за того, что USBH не отвечает.
Мой вопрос: 1- «Возможно ли копировать блок за блоком необработанные данные из eMMC в USBH, как я пытаюсь это сделать?» 2 — кто-нибудь успешно это делает?
Комментарии:
1. Оба привода могут иметь различную структуру, и в большинстве случаев они не будут работать.
Ответ №1:
Да, совершенно нормально слепо копировать все блоки одного устройства хранения данных на другое и ожидать, что оно будет работать.
Единственная загвоздка в том, что устройства должны либо иметь одинаковый размер блока, либо вы должны, по крайней мере, притворяться, что это так (например: рассматривайте каждый физический блок объемом 4 КБ как восемь блоков по 512 байт). Это связано с тем, что многие драйверы файловых систем всегда предполагают, что размер блока составляет 512 байт.
Еще одна проблема, с которой я столкнулся при этом, заключается в том, что устройства могут перегреваться (но это не проблема программного обеспечения).
Комментарии:
1. Спасибо, Том! Да, и USB, и eMMC имеют размер блока 512 байт. Так что я думаю, что все в порядке. Сначала я беспокоюсь о плохих секторах, у 2 устройств может быть другой плохой сектор . Но я немного покопался и понял, почему это называется «логическим блоком», потому что устройство имеет собственное отображение, и для внешнего мира все они являются последовательными секторами.
2. Да, обоим этим устройствам потребуется выполнить выравнивание износа, чтобы они могли одновременно отображать неисправные блоки с минимальными дополнительными накладными расходами.
3. Если это решит ваш вопрос, не могли бы вы, пожалуйста, принять ответ с галочкой слева?