Эмуляция SD-карты

Описание проблемы:

Я построил устройство чтения/записи RFID-меток 15693 на базе MSP430F2370. Основная плата имеет дочернюю плату в форме SD-карты, которая подключается к держателю/считывателю SD-карт.

Мы планировали обмениваться данными с КПК под управлением Windows Mobile 6 через интерфейс SD-карты с использованием SPI. Наша команда разработчиков программного обеспечения сказала нам, что это технически невозможно или, по крайней мере, на реализацию уйдет пара месяцев. У нас есть три недели, чтобы закончить все это.

Итак, мяч вернулся ко мне. Теперь меня попросили эмулировать SD-карту с помощью MSP. Это включает в себя все коммуникации SPI и эмуляцию FAT16. Это было сделано раньше , правда, не с MSP.

Вопрос:

После некоторого поиска мне не удалось найти предыдущие работы, использующие MSP для эмуляции SD-карт. Есть ли какая-либо информация/работа по этому поводу? Кроме того, у меня есть несколько толстых PDF-файлов со спецификациями SD-карт, но я не могу найти временные диаграммы, показывающие, что счастливая SD-карта должна отправлять хосту. Если бы кто-то мог также обратиться ко мне за более краткой и хорошей документацией по этому вопросу, было бы очень приятно.

Ответы (5)

Ваша задача, конечно, не является невыполнимой, но я думаю, что у вас будет 90+ часов в неделю за эти три недели, чтобы получить что-то, что вы могли бы использовать.

В дизайне нет ни одной части «ZOMG»; есть ряд более мелких блоков, которые довольно разделены и просты сами по себе. Например, есть физический интерфейс: SD-карты по сути (до) «четырехполосные» шины SPI, и вы можете ограничиться режимом SPI, чтобы упростить задачу. Это не очень сложно сделать, особенно если у вас есть аппаратное периферийное устройство SPI slave, которое вы можете использовать. Поддержка достаточного количества протокола SD для подделки стороны Windows, вероятно, также не будет сложной задачей, особенно если вместо этого вы можете ограничиться эмуляцией карты MMC, что менее сложно. Эмуляция файловой системы также не представляет особой сложности.

Как говорится... дьявол кроется в деталях. С точки зрения высокого уровня это выполнимо, хотя я думаю, что ваши сроки нереалистичны. Никто не может работать 90 часов в неделю и сохранять концентрацию и ясность мысли.

И, как гласит моя любимая поговорка... Разница между теорией и реальностью в том, что в теории разницы нет.

Хе-хе, я всегда знал это так: "В теории между теорией и практикой нет разницы, а на практике она есть".
Я согласен с этим ответом. Если вы можете сделать это за 3 недели, вы заслуживаете Нобелевской премии.
Он упомянул, что у него есть команда разработчиков программного обеспечения для части проекта, связанной с Windows Phone. Если над этим работают 3 или 4 человека, ваша оценка в 270 часов за 3 недели — это совсем неплохо. Если они разработчики Visual C# (для WP7), они в нескольких минутах от того, чтобы написать плохой код C, если вы попросите их об этом. Также учтите, что нет необходимости реализовывать универсальную карту MMC или файловую систему; ему нужно только эмулировать карту одного размера, одну файловую систему, содержащую один файл и не имеющую папок, и один файл, размер которого не нужно изменять.
В нескольких минутах от написания плохого кода на C... Мне это нравится. Звучит как ужасная идея, что слишком много людей будут готовы принять вас.
Или название отличной начальной книги C!

На самом деле у меня нет ответа для вас, но при работе с SD-картами и FAT16 на MSP430 я нашел следующие два полезных ресурса:

SD-карты с MSP430

FAT16 для MSP430

Мы планировали обмениваться данными с КПК под управлением Windows Mobile 6 через интерфейс SD-карты с использованием SPI.

К сожалению, хост SD решает, какой протокол использовать. Я ожидаю, что для мобильного устройства Windows будет использоваться более быстрый протокол SD, а не SPI. Таким образом, вам нужно будет реализовать протокол SD, который составляет 25 МГц: слишком быстро для вашего MSP MCU, тот, который вы упомянули, достигает максимальной частоты 16 МГц.

Для реализации SD-карты вам понадобится быстрый MCU (обычно на базе ARM) с аппаратной поддержкой протокола SD или смехотворно высокая тактовая частота > 100 МГц.

Или небольшой FPGA для обработки быстрого интерфейса и его буферизации для более медленного микроконтроллера. протокол SD имеет встроенное ограничение скорости, поэтому вы можете воспользоваться этим.

Если делать это вообще важнее, чем то, как вы это делаете, то делать это с помощью того, что проще всего (возможно, потому, что код доступен), а затем обмениваться данными между вашим MSP430 и отдельной системой, вероятно, будет проще всего. В целом задача более сложная, но если самая трудная часть уже решена для вас, вы выиграли.

Аналогичное решение было реализовано в 2006 году в рамках конкурса Circuit Cellar Design Challenge. Все программное и аппаратное обеспечение проекта можно найти здесь . Это решение загружает данные в книжку с картинками, но у вас аналогичная концепция.

Это должен быть комментарий к ответу, на который вы указываете.
В системе SE мы предпочитаем, чтобы ответы были автономными и использовали только внешние ресурсы. Если вы хотите написать ответ, кратко изложите, на что вы ссылаетесь, чтобы, если эта ссылка не работает, ваш ответ все еще оставался ответом. Когда вы получите больше репутации на сайте, вы сможете писать комментарии и просто оставлять что-то подобное в качестве комментария к другому ответу/вопросу.