Можно ли реализовать DISKCOPY для копирования блока за блоком с тома eMMC на том USB

#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. Если это решит ваш вопрос, не могли бы вы, пожалуйста, принять ответ с галочкой слева?