Адресація циліндрів жорсткого диска


-1

Я хочу звернутися до циліндрів жорсткого диска, але я не можу знайти гарного посібника з розрізування інтерфейсу IDE. Хтось знає, як це зробити?

Я не хочу нічого читати / писати на диску, просто рухаю рукою через циліндри. І я хочу це зробити, підключивши деякі дроти в інтерфейсі і відправивши деякі сигнали.


Як ви хочете рухати рукою через циліндри? механічно чи програмно?
Гастур

Я хочу підключити деякі дроти до інтерфейсу і надіслати на нього сигнали напруги за допомогою мікроконтролера.

Якщо вам не пощастить, можливо, ви, можливо, захочете спробувати електротехнічну стекову біржу, прочитавши їх правила, звичайно.
Cristian Ciupitu

Як припускає DS, взаємозв'язок між фізичними циліндрами та проводами в роз'ємі IDE знаходиться десь між невиразним та міфічним. Всі сучасні накопичувачі містять вбудований мікропроцесор, який робить доступ до реального диска.
Даніель Р Хікс

(Можливо, вам варто спробувати відтворити «Якорі Aweigh» на лінійному принтері 1403.)
Daniel R Hicks

Відповіді:


2

Мій співробітник грав з хаком, де він використовував крокові двигуни в старих дискетах для створення музики.

Тут я знайшов сайт щодо основ доступу до двигунів на дискетах: http://www.epanorama.net/circuits/diskstepper.html

Однак я вважаю, що навряд чи подібний прямий доступ до двигуна можливий за допомогою накопичувачів стилю IDE ... Сучасні жорсткі диски (пост MFM) серйозно абстрагували управління фізичним обладнанням навіть від викликів API найнижчого рівня. Я не впевнений, чи можливо те, що ти хочеш зробити, хоча це, можливо, ти можеш надіслати електронною поштою Стіву Гібсону на сайті grc.com.


2

Ви можете знайти щось цікаве, наприклад, у Art of Assembly: Глава тринадцята

Дотримуючись 13.2.5 INT 13h - Дискові послуги низького рівня, які ви можете подуматиint 13h

Функція int 13h надає декілька різних дискових сервісів низького рівня для програм ПК: Скидання системи дискетів, отримання статусу дискети, зчитування секторів дискет, написання секторів дискетт, перевірка секторів дискет та форматування доріжки дискети та багато іншого.

З розділу Деякі загальні дискові підсистеми підсистеми дискових дзвінків :
AH = 0Ch
Вхідні параметри: Те саме, що і (4) вище, за винятком того, що немає потреби в секторі
Вихідні параметри: Те саме, що (4) вище Відправляє головку диска на вказану доріжку на диску .
Опис: надсилає головку диска до вказаної доріжки на диску.

Що стосується розпізнавання IDE ... це перше зображення, яке вийшло з пошуку Google "IDE PINOUT" :

введіть тут опис зображення


Що я хочу, це підключити деякі дроти до цих штифтів і відправити на них сигнали напруги за допомогою мікроконтролера.

0

Інтерфейс IDE (дійсно паралельний ATA) добре описаний у статті Вікіпедії ("Паралельна ATA"). Звідти ви можете знайти посилання на фактичні характеристики. Старіші версії специфікацій безкоштовно завантажувати (або були, востаннє я перевіряв).

Однак DigitalSorceress є правильним: на роз'ємі немає штифтів, які просто і безпосередньо підкажуть приводу перемістити руку. (Навіть інтерфейс дискети не такий простий.) Диски IDE спочатку були розроблені для прямого підключення до 16-бітної шини ISA в IBM PC AT. Привід декодує декілька "портів вводу / виводу", на які адресується процесор. Привід інтерпретує їх як "регістри". Ви завантажуєте різні регістри з параметрами для команди, а потім пишете команду в регістр команд. (Ви робите це, промовляючи протокол шини ISA до штифтів IDE-накопичувача.) Потім перевірте стан, прочитавши назад ті самі регістри.

Два регістри вказують номер циліндра, але просто встановлення номера циліндра в них недостатньо, а також введення номера циліндра в них не є лише справою встановлення деяких напруг на штифтах.

Якщо ви думали приєднати накопичувач до Arduino або щось подібне (я думаю, це повинно бути щось на зразок Меги, щоб отримати достатньо шпильок, я думаю), ви, ймовірно, могли змусити голови рухатися, маючи значну кількість програмування. Пам'ятайте, що в цьому випадку ви не тільки будете реалізовувати протокол PATA, але і будете запускати протокол ISA у своєму коді. Це не страшно складно, але все це додає, і я не знаю, чи Arduino був би досить швидким, щоб задовольнити вимоги до терміну в автобусі.

Набагато простіше було б просто підключити накопичувач до старого ПК. Тоді ви можете написати невеликий код складання, щоб викликати функції INT із BIOS для доступу до різних блоків на диску, як запропонував Гастур.

Або ви можете підключити його до адаптера PATA до USB і запустити його з більш нового ПК. Не важко написати програму, яка спілкується на неформатованому жорсткому диску (тобто такій, що не має визнаної файлової системи).

Ще одне ускладнення полягає в тому, що ми вже не вирішуємо жорсткі диски циліндром / головою / сектором. Ми просто використовуємо LBA - адреси логічних блоків. Вони починаються з 0 і йдуть лінійно до n-1. Диск турбується про те, як ці карти відображаються на C / H / S місцях. Таке відображення не є простим, оскільки в сучасних приводах кількість секторів на доріжку змінюється від зовнішніх циліндрів до внутрішніх. Я, відверто кажучи, не знаю, чи можуть сучасні накопичувачі більше приймати C / H / S. Звичайно, якщо ви просто надішліть накопичувачу ряд збільшуючих LBA, рука буде рухатися раз у раз, коли трапляється перетинати межі циліндрів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.