Цитата(aaarrr @ Aug 3 2009, 20:50)

В спецификации SD все замечательно прописано - таймауты, ошибки и т.п. Если аккуратно и внимательно ей следовать, то проблем не будет.
Сразу видно что вы даже не задумывались о проблеме.
Какова должна быть реакция системы на бит 19 (ERROR - A general or an unknown error occurred during the operation) в Card Status ???
Или вы подаете заведомо корректную команду а в ответ неожиданно получаете ILLEGAL_COMMAND ???
И что делать если карта показывает busy гораздо дольше паспортного времени выполнения команды ?
В общем все это хотя бы перечислить на бумаге с указанием возможных путей разруливания - уже сизифов труд.
А мы еще не дошли до
Цитата
какие-то действия в случае отказа карты должен предпринимать верхний уровень - пользователю пожаловаться, переинициализировать/питание передернуть и т.д.
Встраиваеое устройство часто работает в автономном полете, жаловаться ему некому. Переинициализация как и ватчдог прервет нормальную работу системы, к чему объект управления или мониторинга может быть в данный момент не готов (проще говоря взорвется нафиг если им внезапно перестать управлять).
Цитата
Ну и конечно бороться программными методами с аппаратными проблемами совершенно бесполезно.
с проблемами нужно бороться
на всех уровняхРано или поздно найдется такая помеха которая пролезет через самые эффективные фильтры и уложит вашу систему. Как назло это случится в самый неподходящий момент. Поэтому пытаться выжить надо до конца, а не как в усб: единичный сбой->прекращение обмена