BA(Базовый адрес) регистров AHCI контролера

Тема в разделе "WASM.OS.DEVEL", создана пользователем C.MATPOCAB, 18 авг 2018.

  1. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Помогите пожалуйста, как из ABAR получить адрес регистров AHCI контролёра?
    Если брать со смещения 31:13, как написана в спецификации, ничего ни получается. Что можете подсказать?
    За ранее спасибо.
     
  2. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    это как? от куда уверенность, что это не то-что нужно? Сам адрес ABAR от куда был считан?
    AHCI Base Address - это 32 битный адрес в памяти, и если у тебя есть биты 31:13, значит остальные биты 12:0 нужно обнулить. Получишь выравнивание адреса на границу 213= 8 КБ
     
  3. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Спасиба, я уже разабрался. Я думал MMIO из риальнава рижима читать можна.
     
  4. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    так и читай сколько хочешь
     
  5. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Адриса 32-х битные!
     
  6. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    работай с портами: 0CF8h - порт адреса, 0CFCh - порт данных. класс контролёра AHCI = 010601h:
    ClassSub-ClassInterfaceMeaning
    100SCSI bus controller
    1xxhIDE controller
    20Floppy disk controller
    30IPI bus controller
    40RAID controller
    520hATA Controller с одиночным DMA
    630hATA Controller с цепочкой DMA
    70SATA Controller
    80h1SATA AHCI Controller
    70SAS Controller
    80h0Other Mass Storage Controller
    Тимур, там есть редактор таблиц 0.png
     
    Последнее редактирование модератором: 1 сен 2018
    _edge нравится это.
  7. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    И что!?
     
  8. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    если задаёшь такие вопросы, то ничто - тебе лучше туда не соваться.
     
  9. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Ты про что!?
     
    Последнее редактирование модератором: 30 авг 2018
  10. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    Есть элементарные алгоритмы для работы с MMIO из реального режима.
    Кидаешь 4-Гбайтный дескриптор в любой из сегментных регистров ES/GS/FS, и через него читаешь/пишешь память. Адрес берёшь из указанного выше порта 0CFCh. Если не хочешь возиться с портами, используй fn.0B1h INT-1Ah (должна быть поддержка биосом).
     
    _edge нравится это.
  11. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Я и так в защищёнам рижиме, я ни понил к чему ты это написал?
    ABAR кстати от туда и доставал. Я палагал что парты SATA кантралёра праицируютса на памить до первава мегабайта, и их можна дастать из реальнава рижима.
    А оказалась что BA(базавый адрис) всеволеш выравниваитса, как в маём случии на границу в 4096 байт.
     
  12. Коцит

    Коцит Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    90
    тебя не поймёшь..
    то ты думал, что из реального режима можна читать (см.пост 3),
    теперь ты оказывается в защищённом и не поймёшь, к чему я упоминаю то,
    от куда ты ABAR доставал - вообще туши свет.
    ты из под винды читаешь там порты чтоли, или свою ось пишешь и перешёл в PM?
     
  13. C.MATPOCAB

    C.MATPOCAB New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2018
    Сообщения:
    7
    Я ни знал что ризервныи биты абнулять надо для выравниванья. И тупа обращался по диапазону адрисов реального режима 31:13, как написана в intel-авской "Serial ATA AHCI 1.3 Specification".