Нужно ли мне «отвязывать» драйвер pca953x от устройств GPIO на встроенной платформе для чтения с устройства?

#linux-kernel #linux-device-driver #embedded-linux #i2c #usrp

Вопрос:

У меня возникла проблема с чтением с устройств GPIO на встроенном устройстве (usrp n310). i2cdetect дает «UU» для конкретных устройств, к которым я пытаюсь подключиться, указывая, что устройства уже заняты чипом. /sys/bus/i2c/драйверы показывает, что драйвер, связанный с этими устройствами, является pca953x. Ранее я мог читать и записывать с устройства GPIO (tca6416) на платформе zc706, однако при сравнении драйверов /sys/bus/i2c/я не вижу никаких драйверов, связанных с этим чипом. Код, который я использую, выглядит следующим образом

 #include "i2c_dev.hpp"   int main()  {   int i2cfd;   __s32 num;    // Opening i2c adapter 6   printf("Opening bus adaptern");  i2cfd = open("/dev/i2c-6", O_RDWR);   if ( i2cfd lt; 0 ) {  printf("Failed to open /dev/i2c-6: %sn", strerror(errno));  return 1;  }   // Instatiating three objects of IO_Expander class   IO_Expander dba;    // Reading data from the IO Expander  printf("Setting slave address of devicen");  if (ioctl(i2cfd, I2C_SLAVE, 0x20) lt; 0) {  printf("Error setting slave address:%sn", strerror(errno));  return 1;  }   printf("Reading data from the IO Expander for DB-A Objectn");   num = dba.read_data(i2cfd, 0x00);  if (num lt; 0) {  printf("Error reading data: %sn", strerror(errno));  } else {  printf("The input value is %dn", num);  }   printf("Leaving DB-A Objectnnn");   // Closing the adapter  close(i2cfd); }  

Итак, я не могу читать с устройств GPIO на платформе n310 из-за этого драйвера pca953x? Если да, то будет ли правильным подходом «отвязать» драйвер pca953x от устройств, чтобы считывать с них значения?

Комментарии:

1. Что ты пытаешься сделать? Чего здесь можно ожидать? Зачем вам нужно развязать драйвер ядра?

2. @0andriy на n310 есть чип(tca6408), с которого я пытаюсь считывать значения, но не могу, потому что он, похоже, используется драйвером pca953x. Я отредактирую свой оригинальный пост

3. Зачем вам нужно их читать? Зачем ? (Вы, вероятно, не поняли, почему у нас есть драйверы ядра в первую очередь)

4. Что в настоящее время использует линии GPIO, предоставляемые расширителем ввода-вывода, и можете ли вы отключить эти линии GPIO вместо того, чтобы отключать сам расширитель ввода-вывода?

5. pca953x-это драйвер для чипа TCA6416.