Поиск:

Ответ в темуСоздание новой темы Создание опроса
> физический адрес USB flash, как узнать? 
:(
    Опции темы
piritus
Дата 20.9.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Подскажите, пожалуйста, как узнать при помощи только прерываний BIOS узнать физический адрес USB flash-накопителя

Это сообщение отредактировал(а) piritus - 20.9.2007, 18:53
--------------------
PM MAIL ICQ   Вверх
10110111
Дата 20.9.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 28.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Для доступа к любому USB-девайсу надо программить хост-контроллер, к которому подрублен девайс. А насчет них - на сайты:
EHCI и UHCI - Intel
OHCI - <кто-то там, не знаю точно(гугл в помощь)>
Далее есть несколько протоколов работы юсб флешек, про них точно не скажу, т.к. сам еще в этом не разобрался.
PM MAIL   Вверх
piritus
Дата 20.9.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



привер бы, а то так хз что делать...
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 20.9.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



piritus
через PCI BIOS можно
поиск устройства на PCI
class code = 0Ch
subclass code = 03h
interface = FEh (или 00h, 10h, 20h, 80h)
после получения bus/device/function номеров
пользуемся
этим
и этим
для чтения и записи BAR-ов (Base Address Registers) устройства
да, вот еще, возьми datasheet на свой чипсет и почитай про USB контроллер (программирование, конфигурирование)



Это сообщение отредактировал(а) MAKCim - 20.9.2007, 19:26


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 20.9.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Благодарю.
SI = device index (0-n) как его узнать?
interface = FEh (или 00h, 10h, 20h, 80h) почему или-или?
как PCI будет искать устройства на USB?
я наверное не точно выразился... Нужно узнать серийный номер флешки, т.е. ее отличительная особенность (типа MAC'а на сетевых картах), программа, использующая привязку к железу...
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 20.9.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(piritus @  20.9.2007,  19:56 Найти цитируемый пост)
SI = device index (0-n) как его узнать?

думаю, перебором
Цитата(piritus @  20.9.2007,  19:56 Найти цитируемый пост)
interface = FEh (или 00h, 10h, 20h, 80h) почему или-или?

разные номера интерфейсов соответствуют разным компонентам
00h    Universal Serial Bus (USB) following
               the Universal Host Controller
               Specification
10h    Universal Serial Bus (USB) following
               the Open Host Controller
               Specification
20h    USB2 host controller following the
               Intel Enhanced Host Controller
               Interface
80h    Universal Serial Bus with no specific
               programming interface
FEh    USB device (not host controller)
Цитата(piritus @  20.9.2007,  19:56 Найти цитируемый пост)
как PCI будет искать устройства на USB?

я ж говорю, при помощи PCI BIOS находишь USB контроллер
дальше по спецификации на чипсет с ним работаешь


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 21.9.2007, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



почему в регистрах не передается адрес на буфер,
т.е. мне нужно считать "02h    WORD    device ID (read-only)" где он располагается в памяти?
для чего нужна спецификация на чипсет, если меня интересует device ID?
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 21.9.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(piritus @  21.9.2007,  07:33 Найти цитируемый пост)
для чего нужна спецификация на чипсет, если меня интересует device ID? 

что управляет флеш-устройством?
контроллер USB
т. е чтобы получить информацию про какой-то конкретный девайс, нужно работать с контроллером шины, к которой этот девайс подключен
обычно наличие того или иного контроллера определяется чипсетом
потому и нужна спецификация


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 23.9.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



DI = register number (0000h-00FFh, must be multiple of 4) - как его узнать
02h    WORD    device ID (read-only) - как считать
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 23.9.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



Цитата(piritus @  23.9.2007,  11:24 Найти цитируемый пост)
DI = register number (0000h-00FFh, must be multiple of 4) - как его узнать

смещение в конфигурационном простанстве PCI устройства
в твоем случае PCI устройство - это USB контроллер
описание регистров конфигурационного пространства ищи в спецификации на чипсет
Цитата(piritus @  23.9.2007,  11:24 Найти цитируемый пост)
02h    WORD    device ID (read-only) - как считать 

это где?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 23.9.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Цитата(MAKCim @  23.9.2007,  11:49 Найти цитируемый пост)
это где?

в PCI BIOS v2.0c+ - READ CONFIGURATION DWORD 
после описания функции:

Format of PCI Configuration Data:

Offset  Size    Description     (Table 00878)
00h    WORD    vendor ID (read-only) (see #00732 at AX=B102h)
FFFFh returned if requested device non-existent
02h    WORD    device ID (read-only)
04h    WORD    command register (see #00879)
06h    WORD    status register (see #00880)
08h    BYTE    revision ID
09h  3 BYTEs   class code
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 23.9.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



piritus
каждое PCI устройство имеет конфигурационное пространство
по различным смещениям в нем храняться различные регистры, которые отвечают за включение/выключение определенных функций устройства и его идентификацию
Format of PCI Configuration Data:

Offset  Size    Description     (Table 00878)
00h    WORD    vendor ID (read-only) идентификатор производителя устройства (для Intel 8086h)
FFFFh returned if requested device non-existent
02h    WORD    device ID (read-only) идентификатор устройства для данного производителя
04h    WORD    command register (see #00879) включение/выключение различной функциональности
06h    WORD    status register (see #00880) регистр статуса устройства
08h    BYTE    revision ID
09h  3 BYTEs   class code




--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 23.9.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



у меня по PCI Configuration Map (SMBUS-D31:F3)
00-01h        VID        Vendor ID        8086h    RO
02-03h    DID        Device ID        2413h    RO

т.е. что бы узнать DeviceID, register number должен быть равен 0000h, т.к. значение
должно быть кратно 4. Так?

тогда получится что-то типа:
Код

...
;PCI BIOS v2.0c+ - FIND PCI CLASS CODE
    mov si, 0ffh

find_index:
    mov ax, 0b103h
    mov ecx, 000c03feh
    inc si
    int 1ah
    
    cmp bl, 86h
    je find_index


;PCI BIOS v2.0c+ - READ CONFIGURATION DWORD
    mov ax, 0b10ah
    xor di, di
    int 1ah
...


но Device ID - это как я понял не ID flash-накопителя, а ID host контроллера USB и в моем случае дефолтным является значение: 2413h
как тогда узнать ID флешки?

Это сообщение отредактировал(а) piritus - 23.9.2007, 14:44
--------------------
PM MAIL ICQ   Вверх
MAKCim
Дата 23.9.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: нет
Всего: 207



piritus
Код

    xor    bh, bh ; bus number
    mov    bl, F8h ; device (bits 7-3) and function (bits 2-0) number
    xor    di, di ; register number
    mov    ax, B10Ah
    int    1Ah


Это сообщение отредактировал(а) MAKCim - 23.9.2007, 14:40


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
piritus
Дата 23.9.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



пока я редактировал сообщение, ты уже ответил smile

у меня по PCI Configuration Map (SMBUS-D31:F3)
00-01h        VID        Vendor ID        8086h    RO
02-03h    DID        Device ID        2413h    RO

т.е. что бы узнать DeviceID, register number должен быть равен 0000h, т.к. значение
должно быть кратно 4. Так?

тогда получится что-то типа:
Код

...
;PCI BIOS v2.0c+ - FIND PCI CLASS CODE
    mov si, 0ffh

find_index:
    mov ax, 0b103h
    mov ecx, 000c03feh
    inc si
    int 1ah
    
    cmp bl, 86h
    je find_index


;PCI BIOS v2.0c+ - READ CONFIGURATION DWORD
    mov ax, 0b10ah
    xor di, di
    int 1ah
...


но Device ID - это как я понял не ID flash-накопителя, а ID host контроллера USB и в моем случае дефолтным является значение: 2413h
как тогда узнать ID флешки?

Это сообщение отредактировал(а) piritus - 23.9.2007, 14:52
--------------------
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0949 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.