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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux子系统led,Linux设备驱动GPIO子系统

發布時間:2023/12/31 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux子系统led,Linux设备驱动GPIO子系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux設備驅動GPIO子系統

時間:2017-12-05?????來源:星創客

1、內核中gpio的函數API--->gpiolib.c

[1]測試gpio端口是否合法:

int gpio_is_valid(int number);

[2]申請、釋放gpio管腳

static inline int gpio_request(unsigned gpio, const char *label);

static inline void gpio_free(unsigned gpio);

[3]標記gpio的使用方向包括輸入還是輸出/*成功返回零失敗返回負的錯誤值*/

static inline int gpio_direction_input(unsigned gpio);

static inline int gpio_direction_output(unsigned gpio , int value);

[4]獲得gpio引腳的值和設置gpio引腳的值(對于輸出)

static inline int gpio_get_value(unsigned gpio);

static inline void gpio_set_value(unsigned int gpio, int value);

[5]gpio當作中斷口使用

static inline int gpio_to_irq(unsigned int gpio);

2、用戶空間gpio的調用

在/sys/下提供了相關用戶層與底層進行交互的屬性文件;

/sys/class/gpio/

(2.0)內核配置

Device Drivers ?--->

-*- GPIO Support ?--->

[*] ? /sys/class/gpio/... (sysfs interface)

如果說用戶空間想跟內核中的GPIO管叫進行交互的話,首先需要將該管腳導出至用戶空間;

(2.1) export/unexport

/sys/class/gpio/export

(2.2) /sys/class/gpio/gpioN:pin

direction: in/out

value:0/1

(2.3)/sys/class/gpio/gpiochipN

3、gpio的led編寫方式

(3.0)原理圖中led對應管腳信息:

led2 ?gpx2_7

led3 ?gpx1_0

led4 ?gpf3_4

led5 ?gpf3_5

(3.1)GPIO管腳設備樹的寫法:

[1]改寫設備樹

設備樹寫法:

fs4412-leds-gpio{

compatible = "fs4412,leds";

/* index : ? ? ?0 ? ? ? ? 1*/

led2 = ;

led3 = ;

led4 = ;

led5 = ;

};

/*

就led2引用節點剖析:

gpx2這一組對應的設備樹:exynos4x12-pinctrl.dtsi

582 ? ? ? ? gpx2: gpx2 {

583 ? ? ? ? ? ? gpio-controller;

584 ? ? ? ? ? ? #gpio-cells = <2>;---->表征的是其子節點或者是繼承者的GPIO的;

中&gpx2后邊的參數個數,7代表第七個管腳,0代表工作模式

586 ? ? ? ? ? ? interrupt-controller;

587 ? ? ? ? ? ? #interrupt-cells = <2>;

588 ? ? ? ? };

*/

編譯設備樹:

make dtbs

拷貝設備樹生成的文件至掛載目錄:

cp xxx.dtb ?~/tftpboot

[2]程序編寫

[2.1]將設備樹中的設備信息所在的節點獲取

設備樹節點信息獲取:of_find_node_by_path

gpio管腳獲取 ? ? ?:of_get_named_gpio

[2.2]獲取該節點中的設備信息

[2.3]執行gpio相關的操作

總結

以上是生活随笔為你收集整理的linux子系统led,Linux设备驱动GPIO子系统的全部內容,希望文章能夠幫你解決所遇到的問題。

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