vlad_sarov
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору dinnnngo Слив засчитан в очередной раз. Что же Вы тут "Такой умный" до сих пор пасётесь? Как говорится "Барабан на шею, свисток в ж***у и поезд на встречу" Это видимо Вы такие программы пишите, "небожитель"? ... А вот и живой пример трудов программиста "небожителя" -------------------------------------------------------------------------------- Start DLGDIAG V.409 ===================== 1x6=A0 - Выбирается "Master" 1x7_50 - HDD в состоянии готовности 1x6=A0 - Выбирается "Master" 1x7=EC Command: ATA-#6: IDENTIFY DEVICE - Читается паспорт диска 1x7_D0 - BUSY+DRDY+DSC 1x7_58 - Устройство готово к обмену данными [****** Host READ Data From HDD ******] 7A42 FF3F 37C8 1000 0000 0000 3F00 0000 zBя?7И.....?... 0000 0000 4457 572D 4143 394A 3931 3131 ....DWW-AC9J9111 3437 2038 2020 2020 0000 0040 3A00 3331 47 8 ...@:.31 302E 4733 3331 4457 2043 4457 3038 4A30 0.G331DW CDW08J0 2D42 3030 4D46 3041 2020 2020 2020 2020 -B00MF0A 2020 2020 2020 2020 2020 2020 2020 1080 Ђ ....____________cutting____________.... 1x7_50 - HDD в состоянии готовности 1x1_00 - Error Register без ошибок 1x7_50 - HDD в состоянии готовности -------------------------------------------------------------------------------- На первый взгляд здесь нет ошибок, но... Именно, при анализе паспорта, "небожитель" делает первую ошибку. ... Все модели, различных семейств, у любых производителей, имеют свой собственный идентификационный номер (Model-ID) и (или) ревизию, которые, обычно, встроены в имя и (или) серийный номер данной модели. Все эти данные, находятся в паспорте устройства. Проанализировав паспорт, программа должна определить свою совместимость с устройством. Если ID-номер, выходит за диапазон поддерживаемых моделей, то программа, должна выдать сообщение о несовместимости и прекратить дальнейшую работу. ... Но, по всей видимости, программист сделал ошибку первокласника, проверив только нижнюю границу диапазона поддерживаемых моделей, что в дальнейшем привело к несовместимости vendor-команд, так-как, тестируемый HDD, входит в состав более современного семейства, имеет другой набор vendor-команд и другую архитектуру SA. -------------------------------------------------------------------------------- продолжение... 3x6=06 -- DevCtrl \_ Reset Drive 3x6=02 -- DevCtrl / 1x7_80 - BUSY 1x7_50 - HDD в состоянии готовности 1x1=57 1x2=44 1x3=43 1x4=00 1x5=00 1x6=A0 1x7=8A - Подается несовместимая vendor-команда !!! Command: ATA-#6: Vendor specific commands (VS) 1x7_D0 - BUSY+DRDY+DSC 1x7_51 - !!! Error !!! 1x1_04 - Error Register = !!! ABORT !!! Устройство, чуть-ли не криком сообщает об ошибке... -------------------------------------------------------------------------------- ... но, мы-же "небожители", думает программист. На кой нам, проверять регистры статуса и ошибки..., лучше, сразу начнем читать service-area... -------------------------------------------------------------------------------- 1x2=01 1x3=10 1x4=FC 1x5=FF 1x6=EF 1x7=20 Command: ATA-#6: READ SECTOR(S) #12w/retry) - Попытка чтения отрицательных цилиндров... 1x7_D0 - BUSY+DRDY+DSC 1x7_51 - !!! Error !!! 1x1_10 - Error Register = !!! IDNF !!! - подумаешь... ID не нашел... 1x2=01 1x3=4F 1x4=FC 1x5=FF 1x6=EF 1x7=20 Command: ATA-#6: READ SECTOR(S) #12w/retry) - Подсунем другой адресок... 1x7_D0 - BUSY+DRDY+DSC 1x7_51 - !!! Error !!! 1x1_10 - Error Register = !!! IDNF !!! - Вот ведь, разорался... 3x6=06 -- DevCtrl \_ Reset Drive - Ладно... попробуем еще разок... 3x6=02 -- DevCtrl / 1x7_50 - HDD в состоянии готовности 1x1_01 - Error Register = !!! AMNF !!! 1x1=57 1x2=44 1x3=43 1x4=00 1x5=00 1x6=A0 1x7=8A - Подается несовместимая vendor-команда !!! Command: ATA-#6: Vendor specific commands (VS) 1x7_51 - !!! Error !!! 1x1_04 - Error Register = !!! ABORT !!! 1x2=01 1x3=10 1x4=FC 1x5=FF 1x6=EF 1x7=20 Command: ATA-#6: READ SECTOR(S) #12w/retry) 1x7_51 - !!! Error !!! 1x1_10 - Error Register = !!! IDNF !!! 1x2=01 1x3=4F 1x4=FC 1x5=FF 1x6=EF 1x7=20 Command: ATA-#6: READ SECTOR(S) #12w/retry) 1x7_51 - !!! Error !!! 1x1_10 - Error Register = !!! IDNF !!! - Вот-же блин, зараза... 3x6=06 -- DevCtrl \_ Reset Drive - Ну ничего... куда ты денешься... начнем все заново ... 3x6=02 -- DevCtrl / 1x7_50 - HDD в состоянии готовности 1x1_01 - Error Register = !!! AMNF !!! 1x6=AF 1x2=3F 1x7=91 Command: ATA-#5: Initialize drive parameters - проинициализируем параметры... 1x7_50 - HDD в состоянии готовности 1x1_00 - Error Register без ошибок - Слава те, Господи, в конце-концов... 1x6=A0 1x7=10 Command: ATA-#3: Recalibrate - рекалибруем его... 1x7_50 - HDD в состоянии готовности 1x2=01 1x3=00 1x4=00 1x5=00 1x6=E0 1x1=DA 1x4=4F 1x5=C2 1x7=B0 - Что там SMART-статус кажет ? Command: ATA-#6: SMART OPERATIONS 1x7_50 - HDD в состоянии готовности 1x1_00 - Error Register без ошибок 1x4_4F \_ SMART-статус в норме... 1x5_C2 / 1x7_50 - Все хорошо 1x4=4F 1x5=C2 1x1=D4 1x2=01 1x3=81 1x7=B0 - Запустим-ка Self-тест... может потом, съест вендора ? Command: ATA-#6: SMART OPERATIONS 1x7_51 - Self-тест не пройден, не поддерживается сей тест... а нам все по барабану 1x4=4F 1x5=C2 1x3=06 1x1=D5 1x7=B0 - Почитаем self-test log (прошлогодний) Command: ATA-#6: SMART OPERATIONS 1x7_50 - Все хорошо вроде... 1x2=01 1x3=00 1x4=00 1x5=F0 1x6=EF \_ Может регистры плохо пишутся ? 1x2=01 1x3=00 1x4=00 1x5=F0 1x6=EF / Попробуем дважы записать адрес трека... 1x1=57 1x2=01 1x7=8A - ... и добавим кусочек от вендора - эдакий, "Vendor Cocktail"... Command: ATA-#6: Vendor specific commands (VS) Баааа... Бааххх... 1x7_51 - !!! Error !!! 1x1_04 - Error Register = !!! ABORT !!! - Ой... что-то опять мимо... можа съел что-нибудь ?... Cancell User ============== Эх жаль... а ведь могло и получится что-нить... если-б юзер не прервал... | Всего записей: 436 | Зарегистр. 01-12-2014 | Отправлено: 08:20 19-04-2015 | Исправлено: vlad_sarov, 08:30 19-04-2015 |
|