MBR+ S.M.A.R.T. + ASM

Тема в разделе "WASM.BEGINNERS", создана пользователем test555, 7 дек 2007.

  1. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Немного о себе:
    Программироую в делфи и с++ лет 5, владеню winapi..
    На ассемблере писал только институтские лабораторки по программированию контроллеров Атмел.

    Т.е. с АСМом не знаком.

    Встала задача:
    1. В SMART контроллере винтов хранится некая информация, количество ошибок, температура и тд.
    Задача: научиться считывать эти парамерты. Я научился это делать в winXP используя АПИ функции, но нужен более универсальный способ, независимо от загруженной ОСИ, пусть это хоть линукс будет.
    Посоветовали пару книг, среди них автор Гук (навазние забыл), говорят что с примерами на АСМе.
    Далее, интересует возможность программирования этих параметров, т.е. изменение значений.

    Все это хорошо. Ну запись данных на диск я найду.

    Еще одна задача, а точнее то что прояснит идею:

    Как записать мою программу на Ассемблере которая проверяет параметра СМАРТ и считанные с диска, в MBR, т.е. прога сама сидит в МБР, запускается, проверяет параметры, сравнивает их, если определенные условия - выводит сообщение пользователю на экран..
    Далее передает управление загрузчику операционки.

    Идея такова. Посоветуйте пожалста куда копать, что изучать, какой кампялатор и тд.

    Спасибо. Слежу за ответами.
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    test555

    "Независимо от загруженной оси" не получится: если есть сколько-нибудь вменяемая ось, она просто-напросто не пропустит программу к контроллеру. Поэтому утилиты для конкретных осей и должны использовать соответствующие функции API.
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Будучи незнакомым с асмом, сделать это будет сложно. Думаю, для этого понадобится пример какого-нибудь загрузчика + документация по SMART. Последнее можно найти в стандарте (http://t13.org). Загрузчик придется делать самый примитивный, т.к. на все про-все отводится 446 байт (446 (код) + 64 (таблицы разделов) + 2 (сигнатура) == 512).

    В общем, надо изучить ассемблер, здесь или здесь можно почитать про MBR, здесь[/url ] про S.M.A.R.T здесь про прерывания.

    Если не влезешь в 446 байт, то можно воспользоваться тем, что перед началом первого раздела обычно есть пустое пространство размером 31.5 КБ. Правда, другая программа тоже может облюбовать это место, так что никаких гарантий. +немного места обычно есть после последнего раздела, но, опять же, не факт.

    Странно, что-то ссылки не удается разметить...
     
  4. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    SII

    Читай внимательнее, хочу размещать в загрузочнике.
    Про АПИ я писал что уже научился делать, и что это меня не устраивает..
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    test555
    А Вы сами себя внимательно почитайте.
    Т.е. ось должна быть УЖЕ загружена: не установлена, а, как Вы сами написали, именно загружена. Так что ни о каком "загрузочнике" здесь речь не идет.
    А то, что Вы там дальше про MBR написали, - это, как Вы сами оформили, "еще одна задача".
    Так что SII все правильно написал.