Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Raspberry Pi
  3. Disabling IRQ

Disabling IRQ

Запланировано Прикреплена Закрыта Перенесена Raspberry Pi
8 Сообщения 1 Posters 152 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано pi
    #1

    Пишу программу для Raspberry PI 3 Model B v1.2, система Raspbian GNU/Linux 9.4 (stretch) realtime . При работе с ttyS0 у меня периодически выскакивает сообщение

    Disabling IRQ: 59
    

    после чего ttyS0 перестает работать и приходится перезагружать устройство.
    Нашел один из вариантов решения проблемы прописать в grub.cfg "noirqdebug", но у меня Raspbian и там нет grub. Как осуществить это действие в Raspbian?

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано
      #2

      А что в логи ядра (dmesg, /var/log/messages) пишется, когда такая ошибка вываливается?

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #3
        [  199.901675] ------------[ cut here ]------------
        [  199.901708] WARNING: CPU: 1 PID: 86 at kernel/irq/handle.c:151 __handle_irq_event_percpu+0x2cc/0x2d0
        [  199.901721] irq 166 handler irq_default_primary_handler+0x0/0x1c enabled interrupts
        [  199.901726] Modules linked in: xt_tcpudp iptable_mangle xt_DSCP cmac bnep hci_uart btbcm serdev bluetooth ecdh_generic brcmfmac brcmutil cfg80211 rfkill snd_bcm2835(C) snd_pcm snd_timer snd uio_pdrv_genirq fixed uio ip_tables x_tables ipv6
        [  199.901803] CPU: 1 PID: 86 Comm: irq/59-bcm2835- Tainted: G         C      4.14.34-rt27-v7 #2
        [  199.901806] Hardware name: BCM2835
        [  199.901830] [<8010fdf8>] (unwind_backtrace) from [<8010bf74>] (show_stack+0x20/0x24)
        [  199.901847] [<8010bf74>] (show_stack) from [<807a2e24>] (dump_stack+0xc8/0x10c)
        [  199.901863] [<807a2e24>] (dump_stack) from [<8011db1c>] (__warn+0xf8/0x110)
        [  199.901876] [<8011db1c>] (__warn) from [<8011db7c>] (warn_slowpath_fmt+0x48/0x50)
        [  199.901890] [<8011db7c>] (warn_slowpath_fmt) from [<8017a948>] (__handle_irq_event_percpu+0x2cc/0x2d0)
        [  199.901905] [<8017a948>] (__handle_irq_event_percpu) from [<8017a994>] (handle_irq_event_percpu+0x48/0x84)
        [  199.901919] [<8017a994>] (handle_irq_event_percpu) from [<8017aa58>] (handle_irq_event+0x88/0xc0)
        [  199.901935] [<8017aa58>] (handle_irq_event) from [<8017e550>] (handle_level_irq+0xb4/0x19c)
        [  199.901952] [<8017e550>] (handle_level_irq) from [<8017984c>] (generic_handle_irq+0x34/0x44)
        [  199.901968] [<8017984c>] (generic_handle_irq) from [<8050ece4>] (bcm2835_auxirq_handler+0x48/0x94)
        [  199.901983] [<8050ece4>] (bcm2835_auxirq_handler) from [<8017bba0>] (irq_forced_thread_fn+0x30/0x84)
        [  199.901998] [<8017bba0>] (irq_forced_thread_fn) from [<8017bf14>] (irq_thread+0x12c/0x200)
        [  199.902013] [<8017bf14>] (irq_thread) from [<8013e844>] (kthread+0x144/0x174)
        [  199.902031] [<8013e844>] (kthread) from [<80107d94>] (ret_from_fork+0x14/0x20)
        [  199.902036] ---[ end trace 0000000000000002 ]---
        [  246.381155] irq 59: nobody cared (try booting with the "irqpoll" option)
        [  246.381163] CPU: 0 PID: 86 Comm: irq/59-bcm2835- Tainted: G        WC      4.14.34-rt27-v7 #2
        [  246.381165] Hardware name: BCM2835
        [  246.381187] [<8010fdf8>] (unwind_backtrace) from [<8010bf74>] (show_stack+0x20/0x24)
        [  246.381197] [<8010bf74>] (show_stack) from [<807a2e24>] (dump_stack+0xc8/0x10c)
        [  246.381209] [<807a2e24>] (dump_stack) from [<8017d684>] (__report_bad_irq+0x3c/0xdc)
        [  246.381219] [<8017d684>] (__report_bad_irq) from [<8017dae8>] (note_interrupt+0x29c/0x2ec)
        [  246.381227] [<8017dae8>] (note_interrupt) from [<8017a9c4>] (handle_irq_event_percpu+0x78/0x84)
        [  246.381235] [<8017a9c4>] (handle_irq_event_percpu) from [<8017aa58>] (handle_irq_event+0x88/0xc0)
        [  246.381243] [<8017aa58>] (handle_irq_event) from [<8017e550>] (handle_level_irq+0xb4/0x19c)
        [  246.381250] [<8017e550>] (handle_level_irq) from [<8017984c>] (generic_handle_irq+0x34/0x44)
        [  246.381259] [<8017984c>] (generic_handle_irq) from [<804daa48>] (bcm2836_chained_handle_irq+0x38/0x50)
        [  246.381267] [<804daa48>] (bcm2836_chained_handle_irq) from [<8017984c>] (generic_handle_irq+0x34/0x44)
        [  246.381274] [<8017984c>] (generic_handle_irq) from [<80179e58>] (__handle_domain_irq+0x6c/0xc4)
        [  246.381282] [<80179e58>] (__handle_domain_irq) from [<80101528>] (bcm2836_arm_irqchip_handle_irq+0xac/0xb0)
        [  246.381291] [<80101528>] (bcm2836_arm_irqchip_handle_irq) from [<807bddbc>] (__irq_svc+0x5c/0xa8)
        [  246.381294] Exception stack(0xb96cfe98 to 0xb96cfee0)
        [  246.381297] fe80:                                                       b9c34568 bb802210
        [  246.381303] fea0: 00000001 b96ce000 b9c34500 b9c34568 b9685740 b9c34510 b9c34500 b9685740
        [  246.381308] fec0: 8017bb70 b96cfef4 b96cfee8 b96cfee8 807bd6bc 807bd6d0 40000113 ffffffff
        [  246.381317] [<807bddbc>] (__irq_svc) from [<807bd6d0>] (_raw_spin_unlock_irq+0x44/0x7c)
        [  246.381324] [<807bd6d0>] (_raw_spin_unlock_irq) from [<8017bb14>] (irq_finalize_oneshot.part.1+0x8c/0xe8)
        [  246.381332] [<8017bb14>] (irq_finalize_oneshot.part.1) from [<8017bbd0>] (irq_forced_thread_fn+0x60/0x84)
        [  246.381339] [<8017bbd0>] (irq_forced_thread_fn) from [<8017bf14>] (irq_thread+0x12c/0x200)
        [  246.381347] [<8017bf14>] (irq_thread) from [<8013e844>] (kthread+0x144/0x174)
        [  246.381356] [<8013e844>] (kthread) from [<80107d94>] (ret_from_fork+0x14/0x20)
        [  246.381358] handlers:
        [  246.381362] [<8017aaec>] irq_default_primary_handler threaded [<8050ec9c>] bcm2835_auxirq_handler
        [  246.381370] Disabling IRQ #59
        
        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #4

          Был вариант что это происходит из-за одновременного обращения к ttyS0 из разных потоков. Сейчас переделал программу и запись/чтение идет в одном потоке, ошибка все равно выскакивает.

          1 ответ Последний ответ
          0
          • piP Не в сети
            piP Не в сети
            pi
            написал в отредактировано pi
            #5

            Я думаю, что проблема в ядре, попробуй обычное, а не realtime
            Попробуй BT отключить, он висит в 3-ке на UART'е -

            dtoverlay=pi3-disable-bt
            

            в config.txt прописать

            1 ответ Последний ответ
            0
            • piP Не в сети
              piP Не в сети
              pi
              написал в отредактировано
              #6

              Тут еще заметил один нюанс. Если запустить программу сразу после перезагрузки, она работает без каких-либо нареканий. Можно запускать, останавливать и проблем нет. А вот если скопировать после этого на плату новый исполняемый файл и запустить его. то почти сразу появляется ошибка.
              Спасибо за рекомендации. Сейчас попробую.

              1 ответ Последний ответ
              0
              • piP Не в сети
                piP Не в сети
                pi
                написал в отредактировано
                #7

                После добавления строки dtoverlay=pi3-disable-bt в config.txt перестал работать ttyS0. При попытке отправить туда данные echo "Hello" > ttyS0 пишет что не доступны операции чтения/записи.

                1 ответ Последний ответ
                0
                • piP Не в сети
                  piP Не в сети
                  pi
                  написал в отредактировано pi
                  #8

                  В итоге получил следующее:

                  /boot/config.txt добавить: dtoverlay=pi3-disable-bt 
                  Консоль: sudo systemctl disable hciuart
                  /boot/cmdline.txt убрать: console=serial0,115200
                  

                  После этого работа с UART0 ведется через ttyAMA0, при этом никаких проблем с прерываниями в ходе работы не возникает (По крайней мере пока их небыло).

                  1 ответ Последний ответ
                  0

                  • Войти

                  • Нет учётной записи? Зарегистрироваться

                  • Login or register to search.
                  • Первое сообщение
                    Последнее сообщение
                  0
                  • Категории
                  • Главная
                  • Документация
                  • Последние
                  • Пользователи