{"id":325667,"date":"2021-06-29T15:00:18","date_gmt":"2021-06-29T15:00:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=325667"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=325667","title":{"rendered":"\u041d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u0443\u0430\u043b\u0431\u0443\u0442: \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0441 \u00ab\u0434\u0432\u043e\u0439\u043d\u044b\u043c \u0434\u043d\u043e\u043c\u00bb"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/563394\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4e\/ns\/wt\/4enswtpavkxxzm78hsagu4q6iw8.jpeg\"><\/div>\n<p><\/a><br \/>   \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043d\u0430 Habr Q&amp;A \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 <a href=\"https:\/\/qna.habr.com\/q\/975213\">\u0432\u043e\u043f\u0440\u043e\u0441<\/a> \u2014 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0436\u0435\u0441\u0442\u043a\u0438\u0445 \u0434\u0438\u0441\u043a\u0430 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430? \u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0440\u0443\u0441, \u043f\u043e\u043f\u0430\u0432 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043d\u0438\u043a\u043e\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u043c\u043e\u0433 \u0437\u0430\u0440\u0430\u0437\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e. \u0412 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0438\u0441\u043a \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0438\u0442\u0430\u043d\u0438\u0435. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e HDD? \u0414\u0430-\u0434\u0430, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0443\u0447\u0438\u043d\u044b \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0438 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0430!<br \/>  <a name=\"habracut\"><\/a><\/p>\n<blockquote><p><b>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: <\/b><i>\u0417\u0430 \u043f\u043e\u043b\u043e\u043c\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0430\u0432\u0442\u043e\u0440 \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f RUVDS \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0435\u0441\u0443\u0442!<\/i><\/p><\/blockquote>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u2014 \u0432\u0437\u044f\u0442\u044c \u0434\u0438\u0441\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 320 \u0433\u0438\u0433\u043e\u0432, \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0432 160, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434 \u0441\u0430\u043c\u044b\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u201c\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u201d \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0438. \u0422\u043e\u0433\u0434\u0430 \u043d\u0438\u043a\u0442\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0441\u0430\u043c \u041f\u041a, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0438\u0441\u043a\u0435 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430! <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/2a\/zk\/mq\/2azkmqurowmetd24g-iev9i20nk.png\"> <br \/>  <i><font color=\"#999999\">\u0421\u0445\u0435\u043c\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u201c\u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u0434\u043d\u043e\u201d. \u0412\u0441\u0451 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430!<\/font><\/i> <\/p>\n<p>  \u0417\u0432\u0443\u0447\u0438\u0442 \u043b\u0435\u0433\u043a\u043e, \u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0434\u0435\u043b\u0435! <br \/>  (\u043a\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u2014 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0435\u0441\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438\u0434\u0435\u0438 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c <sup><a href=\"#video\">\u0442\u044b\u043a<\/a><\/sup>) <\/p>\n<h2><font color=\"#3AC1EF\">\u0420\u0430\u0437\u043c\u0438\u043d\u043a\u0430 \u2014 \u201c\u0443\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0438\u0432\u0430\u0435\u043c\u201d \u0434\u0438\u0441\u043a<\/font><\/h2>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0434\u043b\u044f Western Digital \u2014 <a href=\"https:\/\/wdmarvel.com\/\">WD Marvel<\/a>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qx\/io\/fw\/qxiofwdcwytlhjlsb6xhctukace.png\"> <br \/>  <i><font color=\"#999999\">\u0412 \u043d\u0435\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430<\/font><\/i> <\/p>\n<p>  \u0412 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u2014 \u0438\u043c\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0438\u0441\u043a\u0430 \u0432 LBA: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5z\/-e\/lt\/5z-elt7ybt8n40-plcc43hnueeq.png\"> <br \/>  <i><font color=\"#999999\">\u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441\u043a\u0443\u0447\u043d\u043e?<\/font><\/i> <\/p>\n<p>  \u041d\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0433\u0432\u043e\u0437\u0434\u043a\u0430 \u2014 \u0434\u0435\u043c\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0441\u043f\u043e\u0440\u0442 \u0432 \u0444\u0430\u0439\u043b, \u0430 \u0432\u043e\u0442 \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0434\u0438\u0441\u043a, \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <font color=\"#999999\">\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0439 WD-R 6.0, \u043d\u043e \u044d\u0442\u043e \u0436\u0435 \u043d\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \ud83d\ude42 \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u0430\u043c\u0438!<\/font> <br \/>  \u0412 WD Marvel \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u201c\u043a\u043e\u043c\u0430\u043d\u0434\u044b\u201d, \u0433\u0434\u0435 \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430\u043c \u0434\u0430\u044e\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 ATA \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0v\/hn\/pc\/0vhnpcgsbvreowecjlhicgwrthq.png\"> <br \/>  <i><font color=\"#999999\">\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043e\u0448\u043a\u0430 \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u0438\u0441\u043a\u0443<\/font><\/i> <\/p>\n<p>  \u0418\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u043a\u043e\u0448\u043a\u0430, \u0443\u0437\u043d\u0430\u0451\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u201cSuper ON\u201d, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0430\u0448 \u0434\u0438\u0441\u043a \u0447\u0435\u0440\u0435\u0437 USB-SATA \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0435\u0440\u0435\u0437 Wireshark: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ye\/-e\/jg\/ye-ejgbcqz7cvcwq0asokrpiham.png\"> <br \/>  <i><font color=\"#999999\">\u0418 \u043f\u0440\u0430\u0432\u0434\u0430, \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435!<\/font><\/i> <\/p>\n<p>  <b><font color=\"#3AC1EF\">45 0b 00 44 57\u2026 <\/font><\/b> \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u201cSuper On\u201d, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u201cSCSI Command: <b><font color=\"#3AC1EF\">0xa1<\/font><\/b> \u201d, \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <a href=\"https:\/\/www.t10.org\/ftp\/t10\/document.04\/04-262r8.pdf\">SCSI ATA Pass Through<\/a>, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f ATA \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 SCSI. \u0418\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 ATA \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vf\/tr\/zs\/vftrzs0f0yhuejb0glcg28fhlqo.png\"> <br \/>  <i><font color=\"#999999\">\u0417\u0430\u043f\u0440\u043e\u0441 ATA \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u0433\u043e<\/font><\/i> <\/p>\n<p>  \u0427\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u0442\u0441\u044f \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pa\/hw\/r8\/pahwr8wy-d2zyytbcdnrjbgegla.png\"> <br \/>  <i><font color=\"#999999\">\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 ATA \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/font><\/i> <\/p>\n<p>  \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432\u0438\u0434\u0438\u043c \u0432 \u043b\u043e\u0433\u0435 \u0438 ATA \u201c\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u201d. \u0422\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043c\u0438\u043c\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0435\u0449\u0451 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0431\u043b\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4q\/fp\/4z\/4qfp4zlqznsp-x2c4vmxeoeiqgu.png\"> <br \/>  <i><font color=\"#999999\">\u0422\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043f\u0443\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430\u2026 \u0410 \u0432\u0441\u0451 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0435\u043a\u0442\u043e\u0440\u0430<\/font><\/i> <\/p>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u201c\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445\u201d, \u0434\u0438\u0441\u043a \u043d\u0430\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xf\/z5\/4f\/xfz54fee4wwrfgs1euy_ohnai1g.png\"> <br \/>  <i><font color=\"#999999\">\u0410 \u0432\u043e\u0442 \u0438 \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043e\u043c <\/font><\/i> <\/p>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 WD Marvel, \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b:<\/p>\n<ul>\n<li>\u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0445\u043e\u0436\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <br \/>   Super ON \u21d2 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u21d2 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u2014 <b><font color=\"#3AC1EF\"> 08 \/ 01<\/font><\/b><\/li>\n<li>\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0447\u0442\u0435\u043d\u0438\u044f RAM \u2014 <b><font color=\"#3AC1EF\"> 13 \/ 01<\/font><\/b><\/li>\n<li>\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 RAM \u2014 <b><font color=\"#3AC1EF\"> 13 \/ 02<\/font><\/b><\/li>\n<\/ul>\n<p>  \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 <b><font color=\"#3AC1EF\">08 \/ 02<\/font><\/b>! \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0435\u0451 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u201c\u041a\u043e\u043c\u0430\u043d\u0434\u044b\u201d \u0432 WD Marvel, \u043d\u043e \u043c\u044b \u0436\u0435 \u043d\u0435 \u0438\u0449\u0435\u043c \u043b\u0435\u0433\u043a\u0438\u0445 \u043f\u0443\u0442\u0435\u0439, \u0432\u0435\u0440\u043d\u043e? <br \/>  \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 SATA \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443\u2026 \u0434\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 USB-ATA \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430 Python (\u0432\u0437\u044f\u0432 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 <a href=\"https:\/\/github.com\/brandonlw\/drivecom\/blob\/master\/drivecom.py\">\u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440<\/a>)! <br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0451\u043c \/ \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 SCSI \u043a\u043e\u043c\u0430\u043d\u0434: <\/p>\n<pre><code class=\"python\">def GenSpdt(DataIn, Timeout, Cmd, Size):     scsi = SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER()     scsi.sptd.Length = ctypes.sizeof(scsi.sptd)     scsi.sptd.TimeOutValue = Timeout     scsi.sptd.SenseInfoOffset = SENSE_OFFSET     scsi.sptd.SenseInfoLength = ctypes.sizeof(scsi.sense)     scsi.sptd.CdbLength = len(Cmd)     scsi.sptd.Cdb = (ctypes.c_byte * 16)(*Cmd)     scsi.sptd.DataTransferLength = Size     scsi.sptd.DataIn = DataIn     return scsi  def ScsiIn(self, cmd, size, timeout=5):     scsi = GenSpdt(1, timeout, cmd, size)     buffer = ctypes.create_string_buffer(size)     scsi.sptd.DataBuffer = ctypes.cast(buffer, ctypes.POINTER(ctypes.c_char))     request = bytearray(scsi)     win32file.DeviceIoControl(self.handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, request, len(request), None)     return bytearray(buffer)  def ScsiOut(self, cmd, data, timeout=5):     scsi = GenSpdt(0, timeout, cmd, len(data))     scsi.sptd.DataBuffer = ctypes.cast(data, ctypes.POINTER(ctypes.c_char))     request = bytearray(scsi)     win32file.DeviceIoControl(self.handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, request, len(request), None)<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c ATA \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 ATA \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b: <\/p>\n<pre><code class=\"python\">def AtaIn(self, cmd, size, timeout=5):     scsicmd = b&quot;\\xa1\\x08\\x0e&quot; + cmd + b&quot;\\x00\\x00&quot; #PIO_IN + DIR_IN     reply = self.ScsiIn(scsicmd, size, timeout)     self.UpdateRegs()     return reply  def AtaOut(self, cmd, data, timeout=5):     scsicmd = b&quot;\\xa1\\x0a\\x06&quot; + cmd + b&quot;\\x00\\x00&quot; #PIO_OUT + DIR_OUT     result = self.ScsiOut(scsicmd, data, timeout)     self.UpdateRegs()     return result def UpdateRegs(self):     scsicmd = b&quot;\\xa1\\x1f\\x0d&quot; + b&quot;\\x00&quot; * 9     self.regs.parse(self.ScsiIn(scsicmd, 0x20)[3:14])<\/code><\/pre>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u2014 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Western Digital: <\/p>\n<pre><code class=\"python\">def WdSu(self):     self.AtaIn(b&quot;\\x45\\x0b\\x00\\x44\\x57\\xa0\\x80&quot;, 0)  def WdSendCmd(self, cmd):     self.WdSu()     self.AtaOut(b&quot;\\xd6\\x01\\xbe\\x4f\\xc2\\xa0\\xb0&quot;, cmd)  def WdReadData(self):     sectors = self.regs.lbas[1] + (self.regs.lbas[2] &lt;&lt; 8)     return self.AtaIn(b&quot;\\xd5&quot; + bytes([sectors]) + b&quot;\\xbf\\x4f\\xc2\\xa0\\xb0&quot;)  def WdWriteData(self, data):     sectors = self.regs.lbas[1] + (self.regs.lbas[2] &lt;&lt; 8)     self.AtaOut(b&quot;\\xd5&quot; + bytes([sectors]) + b&quot;\\xbf\\x4f\\xc2\\xa0\\xb0&quot;, data)  def WdReadModule(self, idx):     self.WdSendCmd(struct.pack(&quot;&lt;HHH&quot;, 8, 1, idx))     return self.WdReadData()  def WdWriteModule(self, idx, data):     self.WdSendCmd(struct.pack(&quot;&lt;HHH&quot;, 8, 2, idx))     return self.WdWriteData(data)  def WdReadRam(self, offset, length):     self.WdSendCmd(struct.pack(&quot;&lt;HHII&quot;, 0x13, 1, offset, length))     return self.WdReadData()  def WdWriteRam(self, offset, data):     self.WdSendCmd(struct.pack(&quot;&lt;HHII&quot;, 0x13, 2, offset, len(data)))     return self.WdWriteData(data)<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0430\u0441\u043f\u043e\u0440\u0442 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f! <br \/>  \u041c\u0435\u043d\u044f\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440, \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443, \u043d\u0443 \u0438 \u0438\u043c\u044f \u0434\u0438\u0441\u043a\u0430 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cj\/5_\/mx\/cj5_mxqngggayc8ar8f8vxdvkom.png\"> <br \/>  <i><font color=\"#999999\">\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438, \u043c\u0430\u043b\u043e \u043b\u0438<\/font><\/i> <\/p>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0441\u043f\u043e\u0440\u0442 \u0432 \u0444\u0430\u0439\u043b \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0442\u0440\u0435\u043c\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"python\">disk = WdDev(&quot;\\\\\\\\.\\\\PhysicalDrive1&quot;) data = open(&quot;C:\\\\WDMarv_demo\\\\Default\\\\Modified\\\\02.mod&quot;, &quot;rb&quot;).read() disk.WdWriteModule(2, data)<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0441\u043a, \u0438\u043d\u0430\u0447\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u0438\u0434\u0435\u043b\u0430 \u0435\u0433\u043e \u043a\u0430\u043a 320 GB. \u041d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/p3\/lf\/ci\/p3lfci52sdvwp5ymjpti_8bgsyi.png\"> <br \/>  <i><font color=\"#999999\">\u0423\u0432\u044b, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f<\/font><\/i> <\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u043c\u0435\u0435\u043c \u0434\u0438\u0441\u043a, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e, \u0430 \u0435\u0449\u0451 \u0443\u0442\u0438\u043b\u0438\u0442\u043a\u0443, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0434\u0438\u0441\u043a\u0443 \u043b\u044e\u0431\u0443\u044e ATA \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u2014 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0443\u044e, \u0442\u0430\u043a \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0443\u044e. <\/p>\n<h2><font color=\"#3AC1EF\">\u0422\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430 \u2014 \u043f\u0430\u0442\u0447\u0438\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 HDD<\/font><\/h2>\n<p>  \u0427\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c RAM \u0435\u0441\u0442\u044c, \u0447\u0438\u0442\u0430\u0442\u044c\/\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0443\u043c\u0435\u0435\u043c, \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0447\u0443\u0436\u0438\u0445 <a href=\"https:\/\/habr.com\/ru\/post\/523054\/\">\u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u0441 \u0440\u0435\u0432\u0435\u0440\u0441\u043e\u043c \u044d\u0442\u0438\u0445 \u0436\u0435 \u0434\u0438\u0441\u043a\u043e\u0432, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e, \u0432\u0435\u0440\u043d\u043e? \u041d\u0435 \u0442\u0443\u0442-\u0442\u043e \u0431\u044b\u043b\u043e! \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0430\u044f, \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0439 \u0441\u0445\u043e\u0434\u0443 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0432\u044b\u0448\u043b\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 (\u0447\u0442\u043e \u0436 \u043f\u043e\u0434\u0435\u043b\u0430\u0442\u044c) \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443. FT232H \u0441 \u0430\u043b\u0438\u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441, \u0440\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0430 JTAG \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, <font color=\"#999999\">\u043f\u0440\u043e\u0432\u043e\u0434\u043a\u0438 \u0438\u0437 \u0430\u0448\u0430\u043d\u043e\u0432\u0441\u043a\u043e\u0433\u043e SCART \u043a\u0430\u0431\u0435\u043b\u044f\u2026<\/font> <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yt\/uo\/h8\/ytuoh8tbmb-ktj4stn2deb8yf_w.png\"> <br \/>  <i><font color=\"#999999\">\u0410\u0434\u0430\u043f\u0442\u0435\u0440 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442 \u0437\u0430 \u0441\u0432\u043e\u044e \u0446\u0435\u043d\u0443. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e <\/font><\/i> <\/p>\n<p>  \u041f\u0440\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a OpenOCD \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0432 \u0434\u0438\u0441\u043a\u0435 \u0442\u0440\u0438 ARM \u044f\u0434\u0440\u0430, \u0442\u0430\u043a \u0438 \u0443\u043a\u0430\u0436\u0435\u043c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435:<\/p>\n<pre><code class=\"plaintext\">interface ftdi ftdi_vid_pid 0x0403 0x6014 ftdi_layout_init 0x0008 0x000b ftdi_layout_signal nTRST -data 0x0010 -oe 0x0010 ftdi_layout_signal nSRST -data 0x0020 -oe 0x0020 reset_config trst_and_srst adapter_khz 500 telnet_port 4444 gdb_port 3333 jtag newtap mv c -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x4ba00477 jtag newtap mv s -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x140003d3 jtag newtap mv m -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id 0x140003d3 target create s feroceon -chain-position mv.s target create m feroceon -chain-position mv.m <\/code><\/pre>\n<p>  \u0418\u0438\u0438: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ih\/an\/wg\/ihanwgtwlbc5cy3smkeqnuiduoc.png\"> <br \/>  <i><font color=\"#999999\">\u0422\u0440\u0435\u0442\u044c\u0435 \u044f\u0434\u0440\u043e \u043d\u0430\u043c \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0442\u0430\u0440\u0433\u0435\u0442\u0430<\/font><\/i> <\/p>\n<p>  \u0415\u0441\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0430\u0433\u0438\u044e breakpoints \u0438 watchpoints, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043f\u0443\u0442\u044c ATA \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u2014 \u043c\u0435\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 LBA (\u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0435\u043a\u0442\u043e\u0440\u0430) \u043a\u043e\u043c\u0430\u043d\u0434 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438, \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0442\u0447 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u043a \u0434\u0438\u0441\u043a\u0430. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rw\/gi\/ge\/rwgige8xnvc4f8uztnvnly1i1w0.png\"> <br \/>  <i><font color=\"#999999\">\u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 Super On, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0441\u044e\u0434\u0430 \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0440\u044f\u043a?<\/font><\/i> <\/p>\n<p>  <i>Breakpoints <\/i>\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043c\u0435\u0441\u0442\u0430 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 (\u043a\u0430\u043a \u043d\u0430\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f) \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, <i>watchpoints <\/i> \u2014 \u043d\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043a\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c (\u0438\u043b\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0435\u043a\u0442\u043e \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c. \u0418 \u0442\u0430\u043a \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0438 \u0438\u0434\u0451\u043c. \u0414\u0435\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0434\u0432\u0430 \u044f\u0434\u0440\u0430 \u0438 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c breakpoint\/watchpoint (\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0434\u0440\u0430), \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0436\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dr\/du\/pp\/drduppyqnpdxpldiqzs6pl-xuvo.png\"> <br \/>  <i><font color=\"#999999\">\u0412\u043e\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/font><\/i> <\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 ATA \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0447\u0438\u0442\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nd\/5t\/bv\/nd5tbv9e-dsdyrymtn67e8zh1cg.png\"> <br \/>  <i><font color=\"#999999\">\u0417\u0430\u0447\u0435\u043c-\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u043b\u044f 24- \u0438 48-\u0431\u0438\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434<\/font><\/i> <\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043a LBA \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f 0x300000. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0448 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043e\u0434: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w2\/jh\/_z\/w2jh_z9olzbeary3g5xcy5tifiy.png\"> <\/p>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u043c\u043e\u0437\u0430\u0438\u043a\u0438, \u0442\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e LBA, \u044d\u0442\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0443 \u0434\u0438\u0441\u043a \u043d\u0435 \u043f\u043e\u0441\u043b\u0430\u043b \u043d\u0430\u0441 \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bb\/s0\/ju\/bbs0ju3k3_d-wlw-m-dt8ywmlti.png\"> <br \/>  <i><font color=\"#999999\">\u041a\u0441\u0442\u0430\u0442\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f LBA<\/font><\/i> <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u0431\u043e\u0431\u0449\u0438\u0442\u044c, ATA \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u0430\u043f\u044b:<\/p>\n<ul>\n<li>\u0427\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u21d0 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443<\/li>\n<li>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ATA \u043a\u043e\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u043e\u0434 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u21d0 \u043d\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e<\/li>\n<li>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 LBA \u0438\u0437 ATA \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 LBA \u21d0 \u044d\u0442\u043e \u043f\u0430\u0442\u0447\u0438\u043c<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446 LBA \u21d0 \u044d\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435\u2026) \u21d0 \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c<\/li>\n<\/ul>\n<p>  \u041d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u041e\u0417\u0423 0x0000-0x10000. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0438\u0437 SPI ROM, \u0438 \u043f\u0430\u0442\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u043e! \u0412\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 LBA \u043f\u0440\u0438 \u201c\u043e\u0431\u044b\u0447\u043d\u044b\u0445\u201d \u0447\u0442\u0435\u043d\u0438\u0438\/\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 0x1459C, \u0447\u0435\u0439 \u043a\u043e\u0434 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u211613 (Cache Overlay): <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wl\/ba\/vu\/wlbavu9stf__irnkijzluy5sroa.png\"> <br \/>  <i><font color=\"#999999\">\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u0441\u0442\u0430\u0442\u0438, \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0432 \u041e\u0417\u0423 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x10840<\/font><\/i> <\/p>\n<p>  \u0417\u043d\u0430\u0447\u0438\u0442 \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u043c\u0441\u044f \u0442\u0443\u0434\u0430! \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u043d\u0446\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043a\u0430\u043a \u0440\u0430\u0437 \u0445\u0432\u0430\u0442\u0438\u0442 \u0434\u043b\u044f \u043f\u0430\u0442\u0447\u0430: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gy\/ca\/1u\/gyca1utua8iqbhrtbyktzsiqfr8.png\"> <br \/>  <i><font color=\"#999999\">\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0441\u043d\u043e\u0432\u0430 \u201c\u0434\u043e\u0431\u0438\u0432\u0430\u043b\u0438\u201d \u0434\u043e \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0435\u043a\u0442\u043e\u0440\u0430<\/font><\/i> <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u0441\u043b\u0435 \u043f\u0430\u0440\u044b \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043c\u043e\u0437\u0433\u043e\u043c\u044b\u0441\u043b\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">#define PART_SIZE 0x12A17558 typedef uint32 (*convert_lba_func)(uint32 * descriptor); uint32 my_convert_lba (uint32 * descriptor) { \t\/\/ \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 &quot;\u0440\u0435\u0436\u0438\u043c&quot; \tuint32 * translate_flag = (uint32*)0x17FFC; \tconvert_lba_func orig_convert_lba = (convert_lba_func)0x21F7; \tuint32 input_lba = descriptor[2]; \t\/\/ \u043f\u043e\u0434\u0430\u0447\u0430 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445 LBA \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c\u044b \u0434\u0438\u0441\u043a\u0430 \tif (input_lba == 0xFFFFFFF1) { \t\t*translate_flag = 1; \t\t*(unsigned short *)0x5642 = 0x46C0; \/\/ \u043f\u0430\u0442\u0447\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 LBA \t} else if (input_lba == 0xFFFFFFF0) { \t\t*translate_flag = 0; \t} else if (input_lba &lt; PART_SIZE) { \t\tif (*translate_flag == 1) \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \t\t\tdescriptor[2] = input_lba + PART_SIZE; \t} else { \/\/ \u0441\u0430\u043c\u0438 \u043d\u0435 \u0434\u0430\u0451\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \t\tdescriptor[2] = 0xFFFFFFFF; \t} \/\/ \u0438 \u0443\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \treturn orig_convert_lba(descriptor); }<\/code><\/pre>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Thumb \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u0435\u0441\u0442\u0430. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u2014 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0442\u0447 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043a\u0443:<\/p>\n<pre><code class=\"python\">data = open(&quot;C:\\\\Work\\\\wddpatch\\\\patch.bin&quot;, &quot;rb&quot;).read() disk.WdWriteRam(0x17F20, data) # \u0441\u0430\u043c \u043a\u043e\u0434 disk.WdWriteRam(0x1465E, b&quot;\\x03\\xF0\\x5F\\xFC&quot;) # \u043f\u0440\u044b\u0436\u043e\u043a \u043d\u0430 \u043a\u043e\u0434<\/code><\/pre>\n<p>  \u0418 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c\u044b (\u0434\u0430, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 ATA \u043a\u043e\u0434 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 48-\u0431\u0438\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434):<\/p>\n<pre><code class=\"python\">disk.AtaIn(b&quot;\\x00\\x00\\x00\\x01\\xff\\xf0\\x00\\xff\\x00\\xff\\xe0\\x24&quot;, 0x200) # \u0440\u0435\u0436\u0438\u043c &quot;0&quot; data = disk.AtaIn(b&quot;\\x00\\x01\\x00\\x00\\x00\\xe0\\x20&quot;, 0x200) # \u0447\u0438\u0442\u0430\u0435\u043c 0 \u0441\u0435\u043a\u0442\u043e\u0440 hexdump(data) disk.AtaIn(b&quot;\\x00\\x00\\x00\\x01\\xff\\xf1\\x00\\xff\\x00\\xff\\xe0\\x24&quot;, 0x200) # \u0440\u0435\u0436\u0438\u043c &quot;1&quot; data = disk.AtaIn(b&quot;\\x00\\x01\\x00\\x00\\x00\\xe0\\x20&quot;, 0x200) # \u0441\u043d\u043e\u0432\u0430 \u0447\u0438\u0442\u0430\u0435\u043c 0 \u0441\u0435\u043a\u0442\u043e\u0440 hexdump(data)<\/code><\/pre>\n<p>  \u0418 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u0430! <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ih\/c1\/8u\/ihc18upb60f2fcfkxcwcuuzgxye.png\"> <br \/>  <i><font color=\"#999999\">\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043b\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0430!<\/font><\/i> <\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c 13 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0437\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0434\u0438\u0441\u043a. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0434\u0438\u0441\u043a, \u0443 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u0435\u0440\u043d\u0430\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f 02 \u0437\u0430 \u043d\u0430\u0441 \u0435\u0451 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u043b\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 WD Marvel \u0435\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442\u0430 \u0441\u0443\u043c\u043c\u044b, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u044b\u043a\u0430\u0432 \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e, \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043e \u043d\u0443\u043b\u044f \u0441\u0443\u043c\u043c\u044b \u0432\u0441\u0435\u0445 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432 \u043c\u043e\u0434\u0443\u043b\u044f:<\/p>\n<pre><code class=\"python\">def ModuleCsum(data):     csum = 0     for i in range(0, len(data), 4):         csum += struct.unpack(&quot;&lt;I&quot;, data[i:i+4])[0] if i != 0xC else 0     csum = 0x100000000 - (csum &amp; 0xFFFFFFFF)     print(hex(csum))     return data[0:0xC] + struct.pack(&quot;&lt;I&quot;, csum) + data[0x10:]<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432\u0441\u0451:<\/p>\n<pre><code class=\"python\">data = open(&quot;C:\\\\WDMarv_demo\\\\Default\\\\Modified\\\\13.mod&quot;, &quot;rb&quot;).read() disk.WdWriteModule(0x13, ModuleCsum(data)) <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043a \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0430\u043c\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f, \u0439\u0435\u0435\u0435\u0439! <br \/>  \u2026 <br \/>  \u041d\u043e \u043a\u0430\u043a \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430? <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yn\/f7\/qe\/ynf7qerphtujbrpp9t90gytqiaw.png\"> <br \/>  <i><font color=\"#999999\">\u042d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043a\u043e\u043d\u0435\u0446, \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e&#8230;<\/font><\/i> <\/p>\n<h2><font color=\"#3AC1EF\">\u041d\u0430\u0447\u0430\u043b\u043e \u2014 UEFI \u0438 \u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/font><\/h2>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u0430\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0434\u0435\u043b\u0443. \u0410 \u0432\u043e\u0442 \u0438 \u043d\u0430\u0448 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u043b\u043e\u0434\u043e\u0439 Lenovo 310-15IKB: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yf\/ds\/eb\/yfdsebzrmqnr2dazbumtcpq51ag.png\"> <br \/>  <i><font color=\"#999999\">\u041f\u043e\u0442\u0440\u0435\u043f\u0430\u043d \u0436\u0438\u0437\u043d\u044c\u044e, \u043d\u043e \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043e\u0432 \u0441\u0433\u043e\u0434\u0438\u0442\u0441\u044f<\/font><\/i> <\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0438\u0441\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f UEFI, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u041d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u0432 UEFI \u043a\u043e\u0434, \u0447\u0442\u043e \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043d\u043e\u043f\u043e\u043a, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0442\u0443 \u0441\u0430\u043c\u0443\u044e ATA \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u0438\u0441\u043a\u0443! <br \/>  \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439. \u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440, BIOS \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c?! \u041a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c? \u0412\u0435\u0434\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0441\u0442\u043e\u044f\u0442 \u043a\u0430\u043a \u0447\u0443\u0433\u0443\u043d\u043d\u044b\u0439 \u043c\u043e\u0441\u0442\u2026 \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u0431\u0430\u043c\u0431\u0430\u0441, \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u2014 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0439\u0442\u0435, SPI \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 DediProg EM100 Pro: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/u1\/fd\/zj\/u1fdzjv5gq4amyakgxhhkfqs5uo.png\"> <br \/>  <i><font color=\"#999999\">\u041d\u0430 \u043e\u0444 \u0441\u0430\u0439\u0442\u0435 \u0441\u0442\u043e\u0438\u0442 $750, \u043d\u043e \u044f \u0432\u0437\u044f\u043b \u043d\u0430 ebay \u0437\u0430 $80<\/font><\/i> <\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u0431\u043e\u0440\u0447\u0438\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b BIOS, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0437 \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u0435\u0449\u0451, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f! \u041f\u0430\u044f\u0435\u043c \u0435\u0433\u043e \u043a \u043d\u043e\u0443\u0442\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0440\u0430\u0434\u0443\u0436\u043d\u044b\u043c \u0448\u043b\u0435\u0439\u0444\u043e\u043c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ge\/lr\/41\/gelr41yjioqhwfg4oniztqs11_s.png\"> <br \/>  <i><font color=\"#999999\">\u041e\u0447\u0435\u043d\u044c \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0448\u043b\u0435\u0439\u0444, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0432\u044b\u0440\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b<\/font><\/i> <\/p>\n<p>  \u0418 \u0432\u043e\u0442 \u0443\u0436\u0435 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f <s>\u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u0435<\/s> \u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043b\u0435\u0448\u043a\u0438, \u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0441\u0435\u0431\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nb\/rv\/-p\/nbrv-pmj0vd5yadgjefothwuxz0.png\"> <br \/>  <i><font color=\"#999999\">\u0423\u0432\u044b, \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0443\u0436\u0435\u043d \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/font><\/i> <\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u0434\u043b\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/ionescu007\/VisualUefi\">VisualUefi<\/a>, \u0432\u044b\u043a\u0438\u043d\u0435\u043c \u0438\u0437 \u043a\u043e\u0434\u0430 \u0432\u0441\u0451, \u043a\u0440\u043e\u043c\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b:<\/p>\n<pre><code class=\"cpp\">EFI_STATUS UefiMain (EFI_HANDLE Handle, EFI_SYSTEM_TABLE *SystemTable) {     return EFI_SUCCESS; }<\/code><\/pre>\n<p>  \u0418 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e-\u043f\u043e\u043b\u043d\u043e\u0439! <br \/>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/LongSoft\/UEFITool\">UEFITool<\/a> \u0432 \u043e\u0431\u0440\u0430\u0437\u0435 UEFI \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0443\u0442\u0430 \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u043c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0432\u0430\u043d\u043a\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zd\/9f\/6w\/zd9f6wjh6nqke-gxaxe1dx1rdrc.png\"> <br \/>  <i><font color=\"#999999\">\u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u043b\u044e\u0431\u043e\u0439 DXE \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u043e..<\/font><\/i> <\/p>\n<p>  \u041f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0431\u0430\u0442\u043d\u0438\u043a, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432 \u043e\u0431\u0440\u0430\u0437 UEFI \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440:<\/p>\n<pre><code class=\"bash\">UEFIReplace.exe ..\/lenbios_mod.bin 77777777-7777-7777-7777-777777777777 10 ..\/vs\/samples\/x64\/Release\/UefiDriver.efi -o ..\/lenmod_upd.bin  &quot;C:\\Program Files (x86)\\DediProg\\EM100\\smucmd.exe&quot; --stop &quot;C:\\Program Files (x86)\\DediProg\\EM100\\smucmd.exe&quot; --set W25Q64FV -d C:\\Work\\lenmod_upd.bin &quot;C:\\Program Files (x86)\\DediProg\\EM100\\smucmd.exe&quot; --start<\/code><\/pre>\n<p>  <i><font color=\"#999999\">\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u043a\u043e\u043b\u043e\u043b\u0441\u044f, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0431\u0435\u0437 &#8212;set, \u0438 \u0432\u043e\u0437\u043c\u0443\u0449\u0430\u043b\u0441\u044f, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f<\/font><\/i> <\/p>\n<p>  \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u0432 Post-Build Events: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ms\/1k\/xb\/ms1kxbuscr8y3tkxn0wrqeprvqa.png\"> <br \/>  <i><font color=\"#999999\">\u0414\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0443\u0441\u0441\u043a\u0443\u044e VS, \u043d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u0432, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044f\u0437\u044b\u043a \u043b\u0435\u043d\u044c<\/font><\/i> <\/p>\n<p>  \u041a\u0440\u0430\u0441\u043e\u0442\u0430 \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440, \u0438 \u043e\u043d \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435! \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u0440\u043d\u0443\u0442\u044c \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0430\u043c\u0443\u044e \u0442\u0443\u043f\u0443\u044e \u0432\u0435\u0449\u044c \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u043e\u0434 <b><font color=\"#3AC1EF\">while(1)<\/font><\/b> \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u0415\u0441\u043b\u0438 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u043d\u043e\u0443\u0442 \u0432\u0438\u0441\u043d\u0435\u0442, \u0430 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u2014 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c! <br \/>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u0435\u0447\u0430\u0442\u0438 \u0434\u0435\u0431\u0430\u0436\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u0435 DediProg EM100 \u043e\u043f\u0438\u0441\u0430\u043d \u0432\u043e\u0442 \u0442\u0430\u043a: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m3\/pi\/8l\/m3pi8l5qwdjv4losip7xata0jc8.png\"> <br \/>  <i><font color=\"#999999\">\u041f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443, \u0432\u044b\u0448\u043b\u0435\u043c \u0434\u043e\u043a\u0438? \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435??<\/font><\/i> <\/p>\n<p>  \u041d\u0443 \u0434\u0430 \u043b\u0430\u0434\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u043a\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0430\u043c, \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0434\u0435\u0431\u0430\u0433\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<ul>\n<li>\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f SPI \u043a\u043e\u043c\u0430\u043d\u0434\u0430 0x11, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 DATA \u0441\u0430\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 SPI Read (0x03 \/ 0x0B), \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u0447\u0442\u0435\u043d\u0438\u044f<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 SPI Read (0x03 \/ 0x0B) \u0438 SPI Write (0x02), \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 DATA \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430\u043f\u0438\u0441\u0438<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043c\u043d\u043e\u0433\u043e\u0447\u0430\u0441\u043e\u0432\u044b\u0445 \u043c\u0443\u0447\u0435\u043d\u0438\u0439 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u0418 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0435 \u043d\u0430 \u043c\u043e\u0439 \u0447\u0438\u043f\u0441\u0435\u0442 (Intel Skylake \/ Kaby Lake) \u043d\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e SPI \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e \u0448\u0438\u043d\u0435, \u044d\u0442\u043e \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0435 <a href=\"https:\/\/download.csdn.net\/download\/zzcom11\/8543123\">\u0443 \u043a\u0438\u0442\u0430\u0439\u0446\u0435\u0432<\/a>. \u0427\u0438\u043f\u0441\u0435\u0442 \u043d\u0430\u0433\u043b\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u043c\u043e\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441, \u0431\u0443\u0434\u0442\u043e \u044d\u0442\u0430 \u0444\u0438\u0447\u0430 (SPI Software Sequencing) \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u043a\u043e\u0440\u043e\u0447\u0435 \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b, \u0433\u0434\u0435 \u0435\u0451 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c. <br \/>  \u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0442\u043e\u0436\u0435 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0435\u0449\u0451 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0435\u0435. \u041f\u043e \u0438\u0434\u0435\u0435, \u0432\u043e\u0442 \u0442\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u0445\u043e\u0434 \u0438 \u0432\u044b\u0445\u043e\u0434 \u0432 \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ke\/wb\/cz\/kewbczb1qungda6ckms28npzk7s.png\"> <\/p>\n<p>  \u0410 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0430\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u044c (<b><font color=\"#3AC1EF\">Write uFIFO<\/font><\/b>) \u2014 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f (<b><font color=\"#3AC1EF\">03h<\/font><\/b>) \u0438 \u0442\u0440\u0438 \u0431\u0430\u0439\u0442\u0430 \u0437\u0430 \u043d\u0435\u0439. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0430\u0439\u0442 (<b><font color=\"#3AC1EF\">Byte 4 <\/font><\/b>) \u2014 \u0431\u0430\u0439\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yw\/kl\/oi\/ywkloilhuj0x-qnykii8nziv9yi.png\"> <\/p>\n<p>  \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u044d\u0442\u0438 \u0442\u0440\u0438 \u0431\u0430\u0439\u0442\u0430 \u0437\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u2014 \u0441\u0430\u043c \u0430\u0434\u0440\u0435\u0441 \u0447\u0442\u0435\u043d\u0438\u044f, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">void TestSend(uchar * buf, int data_size) {     SpiRead(0xAAAA, 1);                  \/\/ \u0432\u0445\u043e\u0434\u0438\u043c \u0432 &quot;HyperTerminal mode&quot;     SpiRead(0x5555, 1);     SpiRead(0xAAAA, 1);     for (i = 0; i &lt; data_size + 6; i++)         SpiRead(0xC000 + buf[i], 1);     \/\/ \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 \u0432 uFIFO \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e     SpiRead(0xE000, 1);                  \/\/ \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 &quot;HT mode&quot; }<\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u0434\u0430? \u0424\u0438\u0433! \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u0437\u0440\u044f<b><font color=\"#3AC1EF\"> Byte 5 <\/font><\/b>\u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a None, \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442<b><font color=\"#3AC1EF\"> \u043b\u044e\u0431\u044b\u0435 <\/font><\/b>\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0448\u0438\u043d\u0435 SPI, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f (\u0430 \u043c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0447\u0438\u0442\u0430\u0435\u043c 1 \u0431\u0430\u0439\u0442). \u0412 \u0438\u0442\u043e\u0433\u0435 \u0432\u043c\u0435\u0441\u0442\u043e 1 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430, \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f, \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u042f \u0431\u044b \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0437\u0432\u0430\u043b \u0447\u0442\u0435\u043d\u0438\u0435 0 \u0431\u0430\u0439\u0442, \u043d\u043e \u0447\u0438\u043f\u0441\u0435\u0442 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442\u2026 <br \/>  \u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0451\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 SpiWrite(). \u041d\u043e \u0438 \u0442\u0443\u0442 \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u043d\u044e\u0430\u043d\u0441\u043e\u0432. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043b\u043e\u0433 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0447\u0438\u043f\u0441\u0435\u0442 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442<b><font color=\"#3AC1EF\"> 0x3B <\/font><\/b>(Dual Read) \u0438<b><font color=\"#3AC1EF\"> 0x6B<\/font><\/b> (Quad Read), \u0430 \u0442\u0430\u043a\u043e\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e<b><font color=\"#3AC1EF\"> 0x03 \/ 0x0B<\/font><\/b> \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0451\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6d\/n7\/xl\/6dn7xluf540gnqskfyorn_jmyao.png\"> <\/p>\n<p>  \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Fast Read \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0435 BIOS, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0432\u044b\u043d\u0443\u0434\u0438\u0432 \u0447\u0438\u043f\u0441\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b 0x03. <a href=\"https:\/\/github.com\/LongSoft\/UEFITool\/blob\/master\/descriptor.h\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430<\/a> \u0435\u0441\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 UEFITool:<\/p>\n<pre><code class=\"cpp\">typedef struct _FLASH_PARAMETERS {     UINT8 FirstChipDensity : 4;     UINT8 SecondChipDensity : 4;     UINT8 : 8;     UINT8 : 1;     UINT8 ReadClockFrequency : 3;     UINT8 FastReadEnabled : 1;  \/\/ &lt;======== \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u0431\u0438\u0442\u0438\u043a     UINT8 FastReadFrequency : 3;     UINT8 FlashWriteFrequency : 3;     UINT8 FlashReadStatusFrequency : 3;     UINT8 DualOutputFastReadSupported : 1;     UINT8 : 1; } FLASH_PARAMETERS;<\/code><\/pre>\n<p>  \u041d\u0435\u0434\u043e\u043b\u0433\u043e \u043a\u043e\u043f\u0430\u0435\u043c\u0441\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430, \u0432 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u044d\u0442\u043e\u0442 \u0431\u0438\u0442 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u0435 \u0432 \u0431\u0430\u0439\u0442\u0435 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x32 \u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/-w\/08\/mu\/-w08mupqulwgentpq4aegcmqc9u.png\"> <\/p>\n<p>  \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e, \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446!!! \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0439<b><font color=\"#3AC1EF\"> printf<\/font><\/b>:<\/p>\n<pre><code class=\"cpp\">void HabraPrint(CONST CHAR8* FormatString, ...) {     UINT8 buf[0x110];     VA_LIST Marker;     VA_START(Marker, FormatString);     UINTN data_size = AsciiVSPrint(buf + 6, 248, FormatString, Marker) + 1;     VA_END(Marker);     *(UINT32*)buf = 0x47364440;         \/\/ \u0421\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430     buf[4] = 0x05;                      \/\/ \u0442\u0438\u043f = ASCII \u0442\u0435\u043a\u0441\u0442     buf[5] = data_size;                 \/\/ \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 (\u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043d\u0443\u043b\u0435\u043c)     SpiRead(0xAAAA, 1);                 \/\/ \u0432\u0445\u043e\u0434\u0438\u043c \u0432 &quot;HyperTerminal mode&quot;     SpiRead(0x5555, 1);     SpiRead(0xAAAA, 1);     SpiWrite(0xC000, buf, data_size + 6); \/\/ \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 + \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432 uFIFO     SpiRead(0xE000, 1);                 \/\/ \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 &quot;HT mode&quot; }  EFI_STATUS UefiMain (EFI_HANDLE Handle, EFI_SYSTEM_TABLE *SystemTable) {     HabraPrint(&quot;Hello, habr!&quot;);     return EFI_SUCCESS; }<\/code><\/pre>\n<p>  \u041d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u0441\u0451 \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0447\u0430\u0442\u044c\u044e \u0432 \u0440\u0430\u0437\u044b \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u0435\u0435: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pz\/rp\/cl\/pzrpclexu9tlgrun-n7lctyswia.png\"> <br \/>  <i><font color=\"#999999\">\u041d\u0443 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c!<\/font><\/i> <\/p>\n<h2><font color=\"#3AC1EF\">\u0424\u0438\u043d\u0438\u0448\u043d\u0430\u044f \u043f\u0440\u044f\u043c\u0430\u044f. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0434\u0440\u0430\u0439\u0432\u0435\u0440<\/font><\/h2>\n<blockquote><p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 EFI? \u2014 \u042d\u0442\u043e \u043c\u043e\u0440\u0435! \u041c\u043e\u0440\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043f\u043e\u0434 \u0441\u043f\u0438\u0434\u0430\u043c\u0438&#8230;<\/p><\/blockquote>\n<p>\u0418\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044f \u0432\u044b\u0447\u0438\u0442\u0430\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0437\u0430 \u044d\u0442\u0438 \u0434\u043d\u0438, \u044f \u043f\u043e\u043d\u044f\u043b \u2014 \u043e\u0441\u043d\u043e\u0432\u0443 UEFI \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b. \u041f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0445 \u043d\u0430\u0431\u043e\u0440. \u0422\u043e\u0442 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 SATA \u0434\u0438\u0441\u043a\u0430 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438 DevicePath, DiskInfo, BlockIo, AtaPassThru (\u0438 \u0434\u0440.). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 UEFI \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0449\u0438. <br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043d\u043e\u043f\u043e\u043a. \u041d\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0434\u0430 \u0438 \u043d\u0430\u0448 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0435\u0449\u0451 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u041a\u0430\u043a \u0431\u044b\u0442\u044c? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043c\u044b \u0431\u0435\u0440\u0451\u043c \u0438 \u043f\u0440\u043e\u0441\u0438\u043c UEFI \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0442\u044c \u043d\u0430\u0441 \u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u043d\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435:<\/p>\n<pre><code class=\"cpp\">void RegisterKbdProtoHandler() {     EFI_EVENT TextInExInstallEvent;     \/\/ \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448 callback     gBS-&gt;CreateEvent(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, OnTextInExInstall, NULL, &amp;TextInExInstallEvent);     \/\/ \u0430 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u043e\u0441\u0438\u043c \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430     \/\/ \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b SimpleTextInputEx (\u0432\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432)     gBS-&gt;RegisterProtocolNotify(&amp;gEfiSimpleTextInputExProtocolGuid, TextInExInstallEvent, &amp;TextInExInstallRegistration); } \/\/ \u0441\u0430\u043c callback VOID EFIAPI OnTextInExInstall(EFI_EVENT Event, VOID* Context) {     EFI_HANDLE HandleBuffer;     UINTN BufferSize = sizeof(EFI_HANDLE);     \/\/ \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0445\u0435\u043d\u0434\u043b \u043d\u0430 \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442 (\u043a\u043b\u0430\u0432\u0443)     Status = gBS-&gt;LocateHandle(ByRegisterNotify, NULL, TextInExInstallRegistration, &amp;BufferSize, &amp;HandleBuffer);     if (!EFI_ERROR(Status)) \/\/ \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a         SetupHotkeyOnHandle(HandleBuffer); }<\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0441\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl + \u201cC\u201d:<\/p>\n<pre><code class=\"cpp\">void SetupHotkeyOnHandle(EFI_HANDLE Handle) {     EFI_KEY_DATA MyKey;     EFI_HANDLE NotifyHandle;     \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e \u0445\u0435\u043d\u0434\u043b\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430     EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL* SimpleTextInEx;     gBS-&gt;HandleProtocol(Handle, gEfiSimpleTextInputExProtocolGuid,                          (VOID**)&amp;SimpleTextInEx);     \/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c, \u043a\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c (Ctrl + 'c')     MyKey.Key.ScanCode = 0;     MyKey.Key.UnicodeChar = L'c';     MyKey.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID                                   | EFI_LEFT_CONTROL_PRESSED;     MyKey.KeyState.KeyToggleState = 0;     \/\/ \u0438 \u0432\u0435\u0448\u0430\u0435\u043c callback!     SimpleTextInEx-&gt;RegisterKeyNotify(SimpleTextInEx, &amp;MyKey,                                       HotkeyHandler, &amp;NotifyHandle); }<\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u2014 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043b\u0430\u0436\u043e\u043a. \u0418 \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0431\u044b\u043b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f LBA 0xFFFFFFF1, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043a\u0440\u044b\u0442\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0443. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0438\u0441\u043a\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0435\u0449\u0451 \u0438 \u0438\u043c:<\/p>\n<pre><code class=\"cpp\">EFI_STATUS HotkeyHandler(IN EFI_KEY_DATA* KeyData) {     \/\/ \u0444\u043b\u0430\u0436\u043e\u043a \u0443\u0436\u0435 \u0431\u044b\u043b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0440\u0430\u043d\u0435\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c     if (alt_hdd)         return EFI_SUCCESS;     \/\/ \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u043b\u0430\u0433     alt_hdd = TRUE;     \/\/ \u0448\u043b\u0451\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0432\u0441\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0434\u0438\u0441\u043a\u0438     ProcessExistingHdds();     return EFI_SUCCESS; } void ProcessExistingHdds() {     UINTN Index, HandleCount = 0;     EFI_HANDLE* HandleBuffer;     \/\/ \u0438\u0449\u0435\u043c \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u0434\u0438\u0441\u043a\u0438, \u0444\u043b\u0435\u0448\u043a\u0438) \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c BlockIo     gBS-&gt;LocateHandleBuffer(ByProtocol, &amp;gEfiBlockIoProtocolGuid, NULL,                             &amp;HandleCount, &amp;HandleBuffer);     for (Index = 0; Index &lt; HandleCount; Index++) {         \/\/ \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043d\u0430\u0448\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f         SendHddCommand(HandleBuffer[Index]);     }     FreePool(HandleBuffer); }<\/code><\/pre>\n<p>  \u0418, \u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0434\u0438\u0441\u043a<\/p>\n<pre><code class=\"cpp\">\/\/ \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e OnTextInExInstall, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0434\u0438\u0441\u043a\u0438 VOID EFIAPI OnHddInstall(EFI_EVENT Event, VOID* Context) {     EFI_HANDLE HandleBuffer;     UINTN BufferSize = sizeof(EFI_HANDLE);     \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0445\u0435\u043d\u0434\u043b \u0434\u0438\u0441\u043a\u0430 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b     Status = gBS-&gt;LocateHandle(ByRegisterNotify, NULL, HddInstallRegistration,                      &amp;BufferSize, &amp;HandleBuffer);     if (!EFI_ERROR(Status))         SendHddCommand(HandleBuffer); }  void SendHddCommand(EFI_HANDLE Handle) {     EFI_BLOCK_IO_PROTOCOL* BlockIoProto;     EFI_LBA OrigLba;     UINT8 Buffer[0x200];     if (!alt_hdd) {         \/\/ \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+C \u043d\u0435 \u0431\u044b\u043b\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0448\u043b\u0451\u043c         return;     }     \/\/ \u0434\u043e\u0441\u0442\u0430\u0435\u043c BlockIo \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u043e \u0445\u0435\u043d\u0434\u043b\u0443     gBS-&gt;HandleProtocol(Handle, &amp;gEfiBlockIoProtocolGuid,                         (VOID**)&amp;BlockIoProto);     \/\/ \u0430 \u0432\u043e\u0442 \u0442\u0443\u0442 \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u0439 \u0442\u0440\u044e\u043a, \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c UEFI \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 LBA     OrigLba = BlockIoProto-&gt;Media-&gt;LastBlock;     BlockIoProto-&gt;Media-&gt;LastBlock = 0xFFFFFFF8;     \/\/ \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c\u043e \u0447\u0442\u0435\u043d\u0438\u0435 LBA     BlockIoProto-&gt;ReadBlocks(BlockIoProto, BlockIoProto-&gt;Media-&gt;MediaId, 0xFFFFFFF1, 0x200, Buffer);     \/\/ \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u0438\u0441\u043a\u0435     BlockIoProto-&gt;Media-&gt;LastBlock = OrigLba; }<\/code><\/pre>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435, \u043f\u043e\u043c\u0438\u043c\u043e <a href=\"https:\/\/github.com\/tianocore\/tianocore.github.io\/wiki\/EDK-II-Documentation#specifications\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0433\u043e <a href=\"https:\/\/github.com\/tianocore\/edk2\">EDK II<\/a>, \u0442\u0430\u043a \u0438 <a href=\"https:\/\/github.com\/andreiw\/lampone-edk2-platforms\/\">lampone-edk2<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u043f\u043e\u0434 \u043c\u043d\u043e\u0433\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0422\u044b\u0441\u044f\u0447\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u0412 \u0441\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c\u0438 \u043b\u043e\u0433\u0430\u043c\u0438 \u0432\u0438\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k7\/eh\/rd\/k7ehrdguelhdyqnrupm6fs0_3fa.png\"> <br \/>  <i><font color=\"#999999\">\u0421 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/font><\/i> <\/p>\n<p>  \u041f\u043e JTAG \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0444\u043b\u0430\u0433 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0441\u043a\u0430 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430! \u0423\u0441\u043f\u0435\u0445! <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mp\/11\/fg\/mp11fgmoiiows44k-lzwy8-0mei.png\"> <br \/>  <i><font color=\"#999999\">\u041e\u043d\u043e \u0444\u0443\u0440\u044b\u0447\u0438\u0442! \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0443!<\/font><\/i> <\/p>\n<p>  \u041d\u0443 \u0438 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wr\/v3\/ue\/wrv3uewudecj6rvyq1jouc1oruy.png\"> <br \/>  <i><font color=\"#999999\">\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c BIOS \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043b\u0435\u0448\u043a\u0443, \u0432\u0441\u0451 \u043e\u0442\u043f\u0430\u0438\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c!<\/font><\/i> <\/p>\n<h2><font color=\"#3AC1EF\">\u0413\u043e\u0442\u043e\u0432\u043e, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c!<\/font><\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0430\u0444\u0435\u0442\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0434\u0438\u0441\u043a \u041e\u0421\u0435\u0439, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0438\u0442\u043e\u0433:<\/p>\n<p>  <a name=\"video\"><\/a><\/p>\n<div class=\"oembed\"><iframe allowfullscreen id=\"60cb8bfa9b18798fbe34cb49\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/60cb8bfa9b18798fbe34cb49\"><\/iframe><\/div>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u043e\u0445\u043d\u0443\u0442\u044c, \u0443\u0434\u0438\u0432\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0442\u0435\u044f \u0443\u0434\u0430\u043b\u0430\u0441\u044c, \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/p1\/ky\/qn\/p1kyqnarldnm7l5weh5bdailx_i.jpeg\"><\/p>\n<p>  <a href=\"https:\/\/ruvds.com\/news\/read\/142?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=15432&amp;utm_content=neobychnyj_dualbut:_noutbuk_s_%C2%ABdvojnym_dnom%C2%BB\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" width=\"100%\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/fd2\/b54\/bc3\/fd2b54bc3722efda2cfd8dc052376907.jpg\"><\/div>\n<p><\/a><br \/>  <a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=15432&amp;utm_content=neobychnyj_dualbut:_noutbuk_s_%C2%ABdvojnym_dnom%C2%BB\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ou\/g5\/kh\/oug5kh6sjydt9llengsiebnp40w.png\"><\/a><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/563394\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/563394\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/563394\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4e\/ns\/wt\/4enswtpavkxxzm78hsagu4q6iw8.jpeg\"><\/div>\n<p><\/a><br \/>   \u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043d\u0430 Habr Q&amp;A \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 <a href=\"https:\/\/qna.habr.com\/q\/975213\">\u0432\u043e\u043f\u0440\u043e\u0441<\/a> \u2014 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0430 \u0436\u0435\u0441\u0442\u043a\u0438\u0445 \u0434\u0438\u0441\u043a\u0430 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430? \u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0440\u0443\u0441, \u043f\u043e\u043f\u0430\u0432 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043d\u0438\u043a\u043e\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u043c\u043e\u0433 \u0437\u0430\u0440\u0430\u0437\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e. \u0412 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0438\u0441\u043a \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0438\u0442\u0430\u043d\u0438\u0435. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e HDD? \u0414\u0430-\u0434\u0430, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0443\u0447\u0438\u043d\u044b \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0438 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0438\u043d\u0438\u0440\u0438\u043d\u0433\u0430!  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-325667","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325667"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325667\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}