2014-12-19 1 views
0

Я пытаюсь написать драйвер символьного устройства Linux для устройства, которое просто происходит для связи через I2C. Устройство представляет собой микроконтроллер Atmel с кодом, который обеспечивает адрес I2C. Он уже работает с использованием типичного метода i2c-dev на стороне Linux.Что можно удалить из драйвера i2c-dev Linux, чтобы служить базой для нового драйвера, предназначенного только для одного устройства?

Итак, теперь я хочу реплицировать i2c-dev в качестве нового драйвера, который работает именно с этим конкретным устройством, чтобы я мог добавить некоторые из своих собственных абстракций для конкретного устройства. Но я хотел бы обрезать весь ненужный код от i2c-dev, который в настоящее время делает его общим. Что можно удалить в этой ситуации?

+0

Вы предлагаете использовать SPI вместо I2C? Или просто для справки, потому что модель программирования более похожа? – Crunchex

ответ

1

Что можно удалить в этой ситуации?

Вы действительно задаете вопрос XY.
Вам будет лучше смотреть и адаптировать существующий драйвер устройства I2C, который уже похож на требуемые функции, а не взломать специальный драйвер case для доступа к пользовательскому пространству.

Так что теперь я хочу повторить i2c-устр как новый драйвер, который работает именно с этим конкретным устройством, так что я могу добавить некоторые из моего собственного аппаратно-зависимого кода абстракции сверху

Так то вам на самом деле нужно написать «драйвер клиента», как описано ниже (от Linux Documentation/i2c/резюме):

When we talk about I2C, we use the following terms: 
    Bus -> Algorithm 
      Adapter 
    Device -> Driver 
      Client 

An Algorithm driver contains general code that can be used for a whole class 
of I2C adapters. Each specific adapter driver either depends on one algorithm 
driver, or includes its own implementation. 

A Driver driver (yes, this sounds ridiculous, sorry) contains the general 
code to access some type of device. Each detected device gets its own 
data in the Client structure. Usually, Driver and Client are more closely 
integrated than Algorithm and Adapter. 

подробности в Documentation/i2c/writing-clients.
Чтобы найти драйвер аналогичной функции, выполните поиск по списку I2C client drivers. Обратите внимание, что эти драйверы I2C расположены в исходном дереве Linux по их функциональности (например, drivers/rtc/ или drivers/hwmon/), а не их интерфейс (т. Е. I2C).