Linux kernel 找到gpio被占用位置


一開始是通過斷點 printk看哪里申請這個GPIO正常哪里不正常,發現這種方法太繁瑣。

經過同事提醒,直接在 drivers/gpio/gpiolib.c 里面的 gpio_request 里面添加調試代碼,可以直接得出該GPIO 是在哪調用的。

  • 代碼如下:
    # drivers/gpio/gpiolib.c
    int gpio_request(unsigned gpio, const char *label)
    {
        // ... ...
         if(gpio == 29)
         {
            printk("-----here : %s ------\n", label);
         }
        // ... ...
    }
  • 這樣加入kernel 后就很容易在 LOG中找到大概的位置,找到是在哪被占用,為后續的自己的驅動以及文件系統層的調用提供保障。

  • 然后通過在用戶層就可以直接控制該GPIO,可參考:http://www.cnblogs.com/chenfulin5/p/6274076.html

  • kernel 4.4.12的調用接口是 devm_gpio_request gpio_direction_output


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM