Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
void get_mac_addr(u32 base_addr)
{
u8 mac[6];
/*
* Последовательно читаем байты из порта base_addr и сохраняем их в массиве mac[]
*/
for(int i = 0; i < 6; i++)
mac[i] = inb(base_addr + i);
/*
* Отображаем результат
*/
printf("%02X:%02X:%02X:%02X:%02X:%02X ",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
}
Функция get_mac_addr() принимает в качестве параметра адрес порта I/O адаптера RTL8139C и в цикле производит считывание данных MAC-адреса из пространства I/O, выделенного адаптеру. При выходе из цикла в буфере mac[] будет находиться искомый MAC-адрес.
Теперь вся задача сводится к определению значения базового адреса порта I/O адаптера RTL8139C. Как найти этот адрес? Чтобы ответить на этот вопрос, давайте познакомимся поближе с шиной PCI.
Общая характеристика шины PCI
Разработка шины PCI началась весной 1991 года как внутренний проект корпорации Intel (Release 0.1). Специалисты компании поставили перед собой цель разработать недорогое решение, которое бы позволило полностью реализовать возможности нового поколения процессоров 486/Pentium/P6. Особенно подчеркивалось, что разработка проводилась «с нуля», а не была попыткой установки новых «заплат» на существующие решения. В результате шина PCI появилась в июне 1992 года (R1.0). Разработчики Intel отказались от использования шины процессора и ввели еще одну «антресольную» (mez-zanine) шину.
Благодаря такому решению шина получилась,
во-первых, процессорно-независимой, а во-вторых, могла работать параллельно с
шиной процессора, не обращаясь к ней за запросами и тем самым снижая её
загрузку. Стандарт шины был объявлен открытым и передан PCI Special Interest Group
(
Основные возможности шины следующие:
n Синхронный 32- или 64-разрядный обмен данными. При этом для уменьшения числа контактов (и стоимости) используется мультиплексирование, то есть адрес и данные передаются по одним и тем же линиям.
n Поддержка 5V и 3.3V логики. Частота 66 МГц поддерживается только 3.3V логикой.
n Частота работы шины 33 МГц или 66 МГц позволяет обеспечить широкий диапазон пропускных способностей (с использованием пакетного режима):
n 132 Мб/сек при 32-бит/33 МГц;
n 264 Mб/сек при 32-бит/66 МГц;
n 264 Mб/сек при 64-бит/33 МГц;
n 528 Мб/сек при 64-бит/66 МГц.
При этом для работы шины на частоте 66 МГц необходимо, чтобы все периферийные устройства работали на этой частоте.
n Полная поддержка multiply bus master (например, несколько контроллеров жестких дисков могут одновременно работать на шине).
n Автоматическое конфигурирование карт расширения при включении питания.
n Спецификация шины позволяет комбинировать до восьми функций на одной карте (например, видео + звук).
n Шина позволяет устанавливать до 4 слотов расширения, однако возможно использование моста PCI-PCI для увеличения количества карт расширения.