Jump to content
    

Вопрос по poll в Linux

Добрый день

Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ

Сейчас есть такой прототитп

1.  chip0_poll = open ("/dev/gpiochip0", O_RDONLY);

2.rq_poll.lineoffset = PD14;  //
  rq_poll.eventflags = GPIOEVENT_EVENT_RISING_EDGE;
  rq_poll.handleflags = GPIOHANDLE_REQUEST_INPUT;
  ret = ioctl (chip0_poll, GPIO_GET_LINEEVENT_IOCTL, rq_poll);

3.  pfd.fd =        rq_poll.fd;
     pfd.events = POLLIN | POLLPRI;

 //lseek( chip0_poll, 0, SEEK_SET);    /* consume any prior interrupt */  ??

4.ret = poll(&pfd, 1, time_out_ms);

 

5. if (pfd.revents & POLLPRI)

          rd = read(req.fd, &event, sizeof(event));  ??

 

close ( pfd.fd)  ??

close(rq_poll.fd)  ??

close (chip0_poll) ??

 

-Вопрос по черным строкам, как я понимаю надо прочитать файл после poll что бы исключить ошибочного повтора , какой  размер sizeof(event)  ??      Гдето 1 байт а гдето в примерах 10

   

-lseek    надо добавлять  , если да  то куда?

 

-close ( pfd.fd) close(rq_poll.fd)  close (chip0_poll)  это одно и тоже  и можно один оставить или они содержат разные значения?

 

 

Share this post


Link to post
Share on other sites

On 2/8/2024 at 3:54 PM, spirit_1 said:

Могли бы пояснить некоторые моменты касательно использования poll для случая GPIO в роли IRQ

в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся

https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication

 

Share this post


Link to post
Share on other sites

On 2/9/2024 at 3:26 PM, sasamy said:

в юзерспейс никогда не пользовался этим, но примеры быстро гуглятся

https://developerhelp.microchip.com/xwiki/bin/view/software-tools/linux/apps-gpio-irq/#HApplication

 

примеров очень много,  проблем а том что они разные , вобщем перлопатив все это, подключив кнопку и светодиод пришел к следедующему

Перед полингом надо обязательно делать рид, иначе на полинге не останавливается 

 и первый полинг всегда  пустой, т.е не зависимо от события при  первом вызове функции . В остальном все стндартно по  примерам

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...