CMD1 используется для инициализации очень старых карт - MMC и самых первых SD (собственно, с помощью CMD1 вкупе с прочими ветвлениями инита, и можно отдетектить MMC там или SD). В современных SD вместо CMD1 рекомендуют использовать CMD55+ACMD41, по CMD1 большинство из них почему-то не инициализируется (на счет старшего бита в ACMD41 меня проглючило, согласен - не там посмотрел, у меня он не ставится в 1 ни в эмуляторе ни на реале ), при этом после ACMD41 желательно выставить размер блока (CMD16) в 512 чтобы общим кодом работали все 2Gb карты (у некоторых из них дефолтом блок 1024), а в самых последних SD (новые SDC и все SDHC) перед CMD55+ACMD41 еще надо выполнить CMD8 и в зависимости от того что она вернет выполнять ACMD41 с параметром 0 (для SDC v1.0) либо с параметром 0x40000000 (для SDC v2.0 и SDHC).
- - - Добавлено - - -
Также, для SDC v2.0 и SDHC я использую CMD59 для отключения CRC. Пишут, помогает некоторым картам которые реально считают CRC, ведь у нас в коде CRC передается только для первой команды инициализации (он же не везде 95h). Я добавлял CRC еще для нескольких послеидущих команд, но это слабо влияло (подозреваю там в другом месте собака порылась).
- - - Добавлено - - -
Тут нужна статистика на больших выборках. У меня работают 5 SDC карт из 8 имеющихся (закономерность от объема и года выпуска не ясна - и новые 2Gb работают но не все, и старые 512Мб тоже работают но не все), с SDHC пока разбираюсь, они что-то не инитятся, надо респонсы смотреть.
- - - Добавлено - - -
Пока что экспериментирую с простейшей полностью программной схемой подключения SD на одном регистре для программного формирования упр. сигналов и данных и 1-битном буфере для чтения данных (паять более сложные не хватает терпения), условно называемой мной в эмуляторе "от N8VEM" хотя таких схем полно (ввиду ее очевидности). Соответственно, скорость там минимальная.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Чтобы тут больше по теме SD-карт не офтопить, приглашаю интересующихся продолжить здесь (там я и статистику привожу и исходники во вложении):
Что сделал к этому моменту:
После доработки старого алгоритма детекта (предыдущий был с правками годовалой давности) к списку читающихся добавилось пара древних 2Gb карт SDC что ранее почему-то не читались. Плюс все SDHC (которые до 32Gb) теперь детектируются (и показывают реальный размер в maxlba) и читаются неоднократно и без проблем - это было главной целью. Запись SDHC проверил только на одной uSDHC 16Gb L&D, сектор записался, а вообще, запись проверяю реже - жалко современные карты под эксперименты на запись портить ). Читаются и инитятся SDHC все что попробовал, вообще они более беспроблемные по этой части оказались.
Исходники утилиты на который экспериментирую пока в git не закоммитил (т.к. неокончательный вариант), размещаю в том посте во вложении (основные правки см. в архиве в файле BIOSSD.MAC, компилировал в версию для CP/M - АльтаирДОС, версия для ORDOS потребует исправления размера кода в заголовке Ордос). Если у кого будут мысли, доработки алгоритмов SD-карт, статистика (вдруг кто попробует на реале) - пишите в той теме.
- - - Добавлено - - -
Очень расчитываю, что b2m или PVV добавят правки инита и поддержку SDHC в свой двухкилобатный sdOS. Я код 8080 не осилю (мне от его мнемоник дурно делается), но тем не менее было бы неплохо этот sdOS спортировать на Орион под Ordos и в идеале в коде 8080 для олдфилов.
Последний раз редактировалось Error404; 06.12.2017 в 13:21.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Для желающих самостоятельно собрать Галаксию на плате изготовленной ЛУТом и имеющих для этого пару недель свободных вечеров вот здесь http://www.nedopc.org/forum/viewtopi...rt=225#p143285 выложена вся информация.
В прошивке, доступной по вышеприведенной ссылке, SDOS Галаксии поддерживает теперь и SDHC карты, пока проверенно мною на 4 и 16ГБ, большей статистики пока нет, нужны тестировщики .
SD интерфейс на той плате сделан как самостоятельный узел, который можно применить на любых наших 'маленьких' ПК, а код SDOS сделан в коде 8080. Исходники будут.
Платы готовы. Процесс сборки новой Галаксии будет описываться здесь.
Последний раз редактировалось fifan; 02.08.2018 в 18:52.
Начал делать комплектацию на плату Галаксии. Все детали нашёл, но 8 микросхем с обвязкой запаивать пока не буду - они относятся к контроллеру SD карты.
Нашёл касяк. Цоколёвка транзисторов VT1 - VT3 не соответствует действительности. Если расположить транзистор BC547 (ВС549) или КТ3102 лицом к себе, то цоколёвка - КБЭ, на плате - БЭК. Пришлось раскорячить транзисторы. VT1 можно не запаивать - цепь считывания с магнитофона. Косяк по цоколёвке мой - не проверил привязку схемного элемента с посадочным местом.
Создал новую тему.
Последний раз редактировалось fifan; 17.08.2018 в 19:40.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)