日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rt5350 中断初始化

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rt5350 中断初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux 下的中斷初始化,實際就是對 irq_desc 這個結構體進行初始化,其中最關鍵莫過于

irq_flow_handler_t?? ?handle_irq??????????? 中斷處理函數

struct irqaction?? ????? *action?????????????????? 用戶自己設置的處理函數鏈表,由handle_irq調用

struct irq_chip?? ??? ?*chip??????????????????????? 硬件相關的操作,比如設置管腳為中斷模式,使能中斷等等。

這三個結構體成員變量的賦值了,其中handle_irq和chip一般官方的bsp里會為我們設置好,而action鏈表是我們自己的中斷處理函數,handle_irq會去遍歷action鏈表并執行。系統中每一個中斷號會對應一個irq_desc結構體。

kernel/irq/handle.c,系統為我們定義并初始化了一個irq_desc的結構體數組,中斷號為數組下標。也就是

說每一個中斷號會對應一個irq_desc結構體。linux整個中斷機制實際就是圍繞這個結構體數組進行的,即,

賦值,調用等等。



1. arch/mips/kernel/irq_cpu.c

??? mips_cpu_irq_init

??????????? for (i = irq_base + 2; i < irq_base + 8; i++)
?? ??? ???????????? set_irq_chip_and_handler(i, &mips_cpu_irq_controller,handle_level_irq);

???????? irq_base為0,實際上注冊了2 -- 7 中斷號的處理函數

2. kernel/irq/chip.c

??? set_irq_chip_and_handler

?????????? __set_irq_handler

??????????????? desc->handle_irq = handle

?????? 最終是把handle_level_irq作為這個6個中斷號的中斷處理函數


handle_level_irq

1.? kernel/irq/chip.c

???? handle_level_irq

??????????? handle_IRQ_event(irq, action)

2.kernel/irq/handle.c

????? handle_IRQ_event

?????????????????? do {
?? ??? ?????????????? ret = action->handler(irq, action->dev_id);
?? ??? ? ? ? ? ? ? ? if (ret == IRQ_HANDLED)
?? ??? ??? ????????????????? status |= action->flags;
?? ??? ?????????????? retval |= ret;
?? ??? ????????????? action = action->next;
?? ??????????? } while (action);

???????????????? 這里挨個調用desc中action鏈表中的處理函數進行真正的中斷處理


下面分析rt5350中對gpio中斷的初始化,從 include/asm-mips/rt2880/surfboardint.h 中可以看到

#define SURFBOARDINT_GPIO?? ? 6?? ?/* GPIO */

說明GPIO中斷的中斷號為6,這塊和三星的芯片差別比較大,三星的芯片有專門的外部中斷管腳(雖然也是

GPIO管腳復用),但是每個外部中斷管腳對應一個中斷號。而且ralink的是所有的GPIO復用中斷管腳共用一個

中斷號6. 而且ralink的bsp中給6號中斷已經注冊了action鏈表,那,我想我們就不用自己調用request_irq函數去

給他注冊action鏈表了吧,直接修改ralink_gpio_irqaction應該就行了吧

1. arch/mips/kernel/head.S

??? j?? ??? ?start_kernel

2. init/main.c

????? start_kernel

???????????????????? init_IRQ

3.? arch/mips/kernel/irq.c

???? init_IRQ

??????????????????? arch_init_irq

4.? arch/mips/rt2880/irq.c

??????? arch_init_irq

?????????????????? ralink_gpio_init_irq

5. drivers/char/ralink_gpio.c

??????? ralink_gpio_init_irq

???????????? setup_irq(SURFBOARDINT_GPIO, &ralink_gpio_irqaction);

??????????? 實際上request_irq也是調用setup_irq來注冊中斷處理函數,那么我們就不應該再去調用request_irq了,實際上系統已經為我們做好了6號中斷的注冊,我們應該只需要將我們需要的GPIO管腳設置為中斷模式即可。

???????????? 其中SURFBOARDINT_GPIO=6,在這個函數中注冊action,以供handle_IRQ_event調用

? 使用cat /proc/interrupts命令可以看到gpio中斷號的確是6


總結

以上是生活随笔為你收集整理的rt5350 中断初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费在线观看黄色网址 | 禁断介护av一区二区 | 激情视频免费在线观看 | 国产精品九九视频 | 亚洲人视频在线观看 | 四虎影库| 寡妇激情做爰呻吟 | 成人午夜福利一区二区 | 午夜久久久久久久久久影院 | 一炮成瘾1v1高h| 国产麻豆午夜三级精品 | 97久久久久久久 | 亚洲两性视频 | 超碰人人射 | 朝桐光在线播放 | 国产欧美日韩一区二区三区 | 狠狠干夜夜骑 | 国产精品国语对白 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 成年人性视频 | 日韩精品视频在线播放 | 黄频在线播放 | 欧美18免费视频 | 色超碰| 亚洲蜜桃精久久久久久久久久久久 | 国产一区视频观看 | 波多野结衣视频一区二区 | 亚洲hh| 国产精品视频全国免费观看 | 福利视频在线免费观看 | 秋霞视频在线 | 无码一区二区三区在线 | 永久免费看mv网站入口亚洲 | 亚洲AV无码一区二区三区蜜桃 | 精品人妻一区二区三区浪潮在线 | 日韩福利影院 | 日本精品在线观看 | 久久精品店| 中文亚洲欧美 | 插插看| 91噜噜噜 | 亚洲一区二区图片 | 色无极亚洲 | 国产精品一区在线免费观看 | 中国特级黄色片 | 在线免费观看网站入口在哪 | 十八禁毛片 | 99热最新| 玖玖色在线 | 青青视频在线免费观看 | 青青av| 射在线| 成人免费影视网站 | 亚洲国产精品久久久久久久 | 国产顶级毛片 | 婷婷色小说 | 一级片一级片 | 色噜噜狠狠一区二区三区 | 视频一区二区三区精品 | 久久wwww| 日本午夜视频在线观看 | 久久女人 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 99久久精品免费看国产交换 | 岛国av免费在线 | 久久久久亚洲av无码专区首jn | 国产中文字幕在线观看 | 亚洲精品一区二区三区影院忠贞 | 欧美第一视频 | 久久机热 | 国产成人精品aa毛片 | 国产寡妇亲子伦一区二区三区四区 | 亚洲va天堂va国产va久 | 青青成人网| 国产成人av无码精品 | 国产亚洲av在线 | 天天插天天狠天天透 | 你懂的在线观看网站 | av天天射 | 精品欧美一区二区精品久久 | 91精品婷婷国产综合久久蝌蚪 | 夜夜天堂 | 国产精品一区二区在线 | 日韩久| 成人你懂的 | 国产理论精品 | 亚洲大片 | 亚洲另类自拍 | 韩国bj大尺度vip福利网站 | 亚洲日本韩国在线 | 黑人毛片网站 | 久久青青草原 | 欧美久久久久久又粗又大 | 免费国产网站 | 日韩91 | 久草午夜| 女人又爽又黄免费女仆 | 日韩av伦理 | 先锋资源国产 |