В первоначальном варианте последовательность инициализации работоспособная, хотя и не для всех карт (только для SDC v1.0):
CMD0, CMD55, ACMD41
На CMD1 я бы переделывать не советовал, т.к. эта команда, введенная во времена древнючих MMC-карт и оставленная для совместимости у SDC v1.0, для новых карт (SDC v2.0, SDHC) считается obsolete (устаревшей, не поддерживаемой) и ХЗ какие из новых ее поддерживают (не исключаю что некоторые и понимают ее).
Сам я, знакомясь с даташитом на SD (на сайте SD-ассоциации) и готовыми реализациями в Инете (много исходников на С встречается) пришел в итоге к такой последовательности инициализации (поддержку MMC я не стал делать, только SD всех версий): CMD0, CMD8, CMD59, CMD55, ACMD41, CMD58, CMD9. Опционально еще CMD16 (установить размер блока с параметром для размера в 512байт). Плюс там есть анализы ответов карты и ветвления в зависимости от них, также не забываем что для разных типов карт (определяется по CMD8) надо подавать разный параметр при вызове ACMD41, и что CMD0 и CMD8 имеют разные CRC и это критично, а для прочих команд CRC большинство карт не проверяют и можно использовать 095h или другие. Что в итоге получилось, выкладывал тут (работает и на реале с большинством карт, и в эмуляторе).
- - - Добавлено - - -
после того как карта на ACMD41 ответила "00", туда надо слать следующие команды. Если туда вместо этого начать слать коды не являющиеся командами, или кучу FF (т.е. например читая в цикле карту ничего туда не отправляя), то карта переходит в IDLE и начинает отвечать 0х01. И вывести ее из IDLE можно только опять прогнав всю последовательность инициализации. Такое у меня остаточное знание, т.е. "но это не точно"{как теперь любят добавлять к ответам}
- - - Добавлено - - -
К сожалению, пока не могу проверить sdOS на реале, т.к. схема подключения SD у меня спаяна только на Орионе-ПРО, а в нем у меня нет ROM-диска и соответственно нет Ordos вместо которой можно было бы поставить sdOS. (На ПРО без ROM-диска Ордос запускаеться откуда-то из потрохов ROM-BIOS, по простому ее не заменить). Ближайший вариант это когда sdOS будет в виде приложения Ordos (т.е. с 16-байтным заголовком и посадочным адресом ниже Ордос чтобы ордос могла ее загрузить) - тогда смогу попробовать и на ПРО: дополнительные Ордос программы объемом до 8кб я научился автоматизированно запихивать прямо в "пустоты" 64к-шного ROM-BIOS Ориона-ПРО и обходиться без всяких дополнительных ROM-дисков.





}
Ответить с цитированием