Доступ к памяти / регистры на внешних устройствах через программное обеспечение - PullRequest
2 голосов
/ 25 июня 2010

Этот вопрос немного расплывчатый, и я извиняюсь за это, но довольно расплывчатый ответ подойдет :) Как люди обычно получают доступ к адресам памяти внешних устройств (скажем, подключенных к ПК через USB или даже, скажем, многофункциональный микроконтроллер)? Мне интересно, как программное обеспечение может найти адрес для записи в регистры или пространство EEPROM.

Например, если я хочу записать значение в регистр 0x1234, программное обеспечение просто отправляет эту информацию (регистр и записываемое значение) в какой-то драйвер, который «общается» с устройством и заботится о значении поменять через железо? Является ли реализация этой функциональности в основном аппаратным обеспечением?

Спасибо!

1 Ответ

2 голосов
/ 25 июня 2010

Давайте в качестве примера рассмотрим довольно распространенный периферийный контроллер USB, основанный на 8-битном ядре микроконтроллера 8051.Одна его сторона подключается к хост-контроллеру USB на настольном компьютере.Другой конец относится к контроллеру USB-устройства, который выступает в качестве конечной точки FIFO для хоста.

Для инициализации стороны устройства потребуется некоторое встроенное программное обеспечение 8051.Драйвер класса потребуется на стороне хоста.Как только они будут созданы, разработчик приложения будет иметь имя устройства на стороне хоста, которое может быть открыто для чтения / записи.Иногда поставщик предоставляет библиотеку для выполнения определенных задач устройства и изолирует пользователя от необработанного устройства.Часто Windows DLL доступна для скрытия низкоуровневого ввода-вывода и представления операций устройства как вызовов функций.

Дополнительная прошивка 8051 контролирует FIFO с конца устройства и интерпретирует сообщения, отправленные из хост-приложения или DLL, а затем выполняет действия,Эти действия могут быть низкого уровня, такие как чтение / запись из ячейки памяти или регистра.Они могут быть высокого уровня, например, устанавливать значение ШИМ для программируемого массива счетчиков.

Таким образом, ваше гипотетическое описание записи в регистр 0x1234 недалеко от того, как это часто реализуется.

...