設(shè)備樹(shù)
下面截取gpio0的設(shè)備樹(shù),復(fù)制自:linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base.dtsi
gpio0: gpio@03020000 {
compatible = "snps,dw-apb-gpio";
reg = 0x0 0x03020000 0x0 0x1000?>;
#address-cells = 1?>;
#size-cells = 0?>;
porta: gpio-controller@0 {
compatible = "snps,dw-apb-gpio-port";
bank-name = "porta";
gpio-controller;
#gpio-cells = 2?>;
snps,nr-gpios = 32?>;
reg = 0?>;
};
};
以下是復(fù)制自:linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base_riscv.dtsi
gpio0: gpio@03020000 {
porta: gpio-controller@0 {
interrupt-controller;
interrupts = 60 IRQ_TYPE_LEVEL_HIGH?>;
interrupt-parent = &plic0?>;
};
};
驅(qū)動(dòng)
cv180x的GPIO控制器用到是dw-apb-gpio控制器驅(qū)動(dòng),驅(qū)動(dòng)代碼位于:linux_5.10/drivers/gpio/gpio-dwapb.c
#define DWAPB_DRIVER_NAME "gpio-dwapb"
// 省略其他代碼
static struct platform_driver dwapb_gpio_driver = {
.driver = {
.name = DWAPB_DRIVER_NAME,
.pm = &dwapb_gpio_pm_ops,
.of_match_table = dwapb_of_match,
.acpi_match_table = dwapb_acpi_match,
},
.probe = dwapb_gpio_probe,
};
module_platform_driver(dwapb_gpio_driver);
關(guān)鍵函數(shù)是probe函數(shù)
// drivers/gpio/gpio-dwapb.c
dwapb_gpio_probe:
dwapb_gpio_get_pdata(dev)
device_for_each_child_node(dev, fwnode) { //遍歷設(shè)備樹(shù)節(jié)點(diǎn)
fwnode_property_read_u32(fwnode, "snps,nr-gpios", &pp->ngpio)
fwnode_property_read_u32(fwnode, "reg", &pp->idx)
}
dwapb_gpio_add_port
devm_gpiochip_add_data
devm_gpiochip_add_data_with_key
gpiochip_add_data_with_key //注冊(cè)到gpiolib的gpio_devices中
gpio子系統(tǒng)
// drivers/gpio/gpiolib.c
struct gpio_desc *gpio_to_desc(unsigned gpio) //從gpio_devices獲取gpio_desc
// include/asm-generic/gpio.h
// drivers/gpio/gpiolib-sysfs.c
gpio_export:
gpiod_export(gpio_to_desc(gpio), direction_may_change)
device_create_with_groups
device_create_groups_vargs
device_add
kobject_add //添加到相關(guān)的設(shè)備模型子系統(tǒng)
device_create_file //創(chuàng)建/sys下的設(shè)備屬性文件
... //其他相關(guān)設(shè)置
小結(jié)
通過(guò)上面的3塊,就實(shí)現(xiàn)了/sys/class/gpio/export導(dǎo)出gpio的過(guò)程即對(duì)gpio的操作。
關(guān)于gpio的相關(guān)操作函數(shù)就在gpiolib.c里面。
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6291瀏覽量
118149 -
GPIO
+關(guān)注
關(guān)注
16文章
1328瀏覽量
56231 -
Milk-V Duo
+關(guān)注
關(guān)注
2文章
28瀏覽量
554
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】小身板大能力RISC-V開(kāi)發(fā)板
Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能夠運(yùn)行基于LINUX和RTOS的操作系統(tǒng)。Milk-V Duo為專業(yè)人士、工業(yè)OEM企業(yè)、物聯(lián)網(wǎng)愛(ài)好者、業(yè)余愛(ài)好者、D
【Milk-V Duo S 開(kāi)發(fā)板免費(fèi)體驗(yàn)】測(cè)試舵機(jī)
。使用wiringX,開(kāi)發(fā)者可以使用相同的代碼來(lái)控制不同平臺(tái)上的 GPIO 引腳,簡(jiǎn)化了跨平臺(tái)開(kāi)發(fā)的工作,使得開(kāi)發(fā)嵌入式應(yīng)用程序更加方便和靈活。
選擇pwm1,先找到針腳。
然后到
發(fā)表于 08-09 22:46
【作品合集】群芯閃耀Milk-V Duo S 開(kāi)發(fā)板測(cè)評(píng)
:【RISC-V專題】Milk-V Duo S 開(kāi)發(fā)板免費(fèi)試用
作者:zealsoft【Milk-V
發(fā)表于 09-16 11:03
Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】 + 系統(tǒng)鏡像燒錄以及登錄
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】+系統(tǒng)鏡像燒錄以及登錄
一.Milk-V Duo
發(fā)表于 07-11 11:43
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo之開(kāi)箱初體驗(yàn)
一,第一印象
外觀設(shè)計(jì)方面,Milk-V Duo以簡(jiǎn)約而精致的風(fēng)格為主,采用沉金工藝,給人一種高端大氣的感覺(jué)。開(kāi)發(fā)板的尺寸小巧,便于攜帶和使用,在我拿到的所有的開(kāi)發(fā)板中,也只有
發(fā)表于 07-16 01:15
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開(kāi)發(fā)板學(xué)習(xí)初體驗(yàn)
第一次申請(qǐng)成功,心情很是喜悅,經(jīng)過(guò)幾天的等待收到了我心心念念的Milk-V Duo 開(kāi)發(fā)小板。
迫不及待的開(kāi)始了學(xué)習(xí)初體驗(yàn),先犧牲下愛(ài)車的行車記錄儀SD卡貢獻(xiàn)下
1、直接下載鏡像
發(fā)表于 07-28 15:58
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】開(kāi)發(fā)板使用3
接上文 【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】開(kāi)發(fā)板使用1 |和接上文 【Milk-V
發(fā)表于 07-29 08:17
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】milkv-duo 申請(qǐng)成功體驗(yàn)
。
引腳圖
總結(jié)
Milk-V Duo開(kāi)發(fā)板的小巧精致設(shè)計(jì)和強(qiáng)悍的性能確實(shí)為創(chuàng)客和開(kāi)發(fā)者提供了一個(gè)優(yōu)秀的平臺(tái)。它的緊湊設(shè)計(jì)使得它適用于各種空間有限的場(chǎng)景,同時(shí)強(qiáng)大的性能可以支持復(fù)雜
發(fā)表于 07-29 14:31
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開(kāi)發(fā)板初體驗(yàn)
今天收到 ,打開(kāi)快遞的第一感覺(jué)就是非常精致小巧,一個(gè)黑色的小盒子及一塊非常小巧但功能非常完善的開(kāi)發(fā)板。
Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能夠運(yùn)行基于LINUX
發(fā)表于 08-18 00:26
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】3-Linux控制小車方向
接上兩篇:【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】2控制螺旋槳電路https://bbs.elecfans.com/jishu_2371054_1_1.html
【
發(fā)表于 08-20 23:57
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】4-Linux控制小車動(dòng)作(原創(chuàng))首發(fā)
接上三篇:
[接上兩篇:【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】3-Linux控制小車方向https://bbs.elecfans.com/jishu_2371135_1_1.html
發(fā)表于 08-21 02:11
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】初體驗(yàn)及開(kāi)箱視頻
剛剛收到開(kāi)發(fā)板,給大家做個(gè)視頻來(lái)初步了解以下Milk-V Duo 開(kāi)發(fā)板。
Milk-V Duo
發(fā)表于 08-22 23:59
Milk-V Duo開(kāi)發(fā)板免費(fèi)體驗(yàn) GPIO分析
評(píng)論