0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Milk-V Duo开发板免费体验 GPIO分析

范成功 来源:wakojosin 作者:wakojosin 2023-07-14 22:14 次阅读

设备树

下面截取gpio0的设备树,复制自: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 >;
	};
};

以下是复制自: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 >;
		};
	};

驱动

cv180x的GPIO控制器用到是dw-apb-gpio控制器驱动,驱动代码位于: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);

关键函数是probe函数

// drivers/gpio/gpio-dwapb.c
dwapb_gpio_probe:

	dwapb_gpio_get_pdata(dev)

		device_for_each_child_node(dev, fwnode)  { //遍历设备树节点

			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 //注册到gpiolib的gpio_devices中

gpio子系统

// 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 //添加到相关的设备模型子系统
					device_create_file //创建/sys下的设备属性文件
					... //其他相关设置

小结

通过上面的3块,就实现了/sys/class/gpio/export导出gpio的过程即对gpio的操作。

关于gpio的相关操作函数就在gpiolib.c里面。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4920

    浏览量

    97109
  • GPIO
    +关注

    关注

    16

    文章

    1189

    浏览量

    51859
  • Milk-V Duo
    +关注

    关注

    2

    文章

    28

    浏览量

    173
收藏 人收藏

    评论

    相关推荐

    Milk-V Duo 开发板免费体验】小身板大能力RISC-V开发板

    Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能够运行基于LINUX和RTOS的操作系统。Milk-V Duo为专业人士、工业OEM企业、物联网爱好者、业余爱好者、D
    的头像 发表于 06-30 10:25 4780次阅读
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b> <b class='flag-5'>开发板</b><b class='flag-5'>免费</b>体验】小身板大能力RISC-<b class='flag-5'>V</b><b class='flag-5'>开发板</b>

    Milk-V Duo 开发板免费体验】+ 1、开箱

    Milk-V Duo是一个基于CV1800B芯片的超紧凑嵌入式开发平台。它可以运行Linux和RTOS,为专业人士、工业ODM、AIoT爱好者、DIY爱好者和创作者提供了一个可靠、低成本和高性能的平台。
    的头像 发表于 07-13 09:24 1401次阅读
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b> <b class='flag-5'>开发板</b><b class='flag-5'>免费</b>体验】+ 1、开箱

    Milk-V Duo】1、入门篇

    入门milk-V Duo开发板
    的头像 发表于 07-07 11:21 1554次阅读
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b>】1、入门篇

    Milk-V Duo开发板免费体验】Milk-V初次使用

    Milk-V Duo开发板免费体验】Milk-V初次使用
    的头像 发表于 08-08 09:03 2405次阅读
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b><b class='flag-5'>开发板</b><b class='flag-5'>免费</b>体验】<b class='flag-5'>Milk-V</b>初次使用

    Milk-V Duo 开发板免费体验】 + 系统镜像烧录以及登录

    Milk-V Duo 开发板免费体验】+系统镜像烧录以及登录 一.Milk-V Duo
    发表于 07-11 11:43

    Milk-V Duo 开发板免费体验】Milk-V Duo之开箱初体验

    一,第一印象 外观设计方面,Milk-V Duo以简约而精致的风格为主,采用沉金工艺,给人一种高端大气的感觉。开发板的尺寸小巧,便于携带和使用,在我拿到的所有的开发板中,也只有
    发表于 07-16 01:15

    Milk-V Duo 开发板免费体验】Milk-V Duo 开发板学习初体验

    第一次申请成功,心情很是喜悦,经过几天的等待收到了我心心念念的Milk-V Duo 开发小板。 迫不及待的开始了学习初体验,先牺牲下爱车的行车记录仪SD卡贡献下 1、直接下载镜像
    发表于 07-28 15:58

    Milk-V Duo 开发板免费体验】开发板使用3

    接上文 【Milk-V Duo 开发板免费体验】开发板使用1 |和接上文 【Milk-V
    发表于 07-29 08:17

    Milk-V Duo 开发板免费体验】milkv-duo 申请成功体验

    。 引脚图 总结 Milk-V Duo开发板的小巧精致设计和强悍的性能确实为创客和开发者提供了一个优秀的平台。它的紧凑设计使得它适用于各种空间有限的场景,同时强大的性能可以支持复杂
    发表于 07-29 14:31

    Milk-V Duo 开发板免费体验】初体验(一)---- 初识GPIO外挂点灯

    1、初识milk-v duo GPIO milk-v duoGPIO分为了五组,每组32个端口
    发表于 08-16 08:04

    Milk-V Duo 开发板免费体验】Milk-V Duo 开发板初体验

    今天收到 ,打开快递的第一感觉就是非常精致小巧,一个黑色的小盒子及一块非常小巧但功能非常完善的开发板Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能够运行基于LINUX
    发表于 08-18 00:26

    Milk-V Duo 开发板免费体验】3-Linux控制小车方向

    接上两篇:【Milk-V Duo 开发板免费体验】2控制螺旋桨电路https://bbs.elecfans.com/jishu_2371054_1_1.html 【
    发表于 08-20 23:57

    Milk-V Duo 开发板免费体验】4-Linux控制小车动作(原创)首发

    接上三篇: [接上两篇:【Milk-V Duo 开发板免费体验】3-Linux控制小车方向https://bbs.elecfans.com/jishu_2371135_1_1.html
    发表于 08-21 02:11

    Milk-V Duo 开发板免费体验】初体验及开箱视频

    刚刚收到开发板,给大家做个视频来初步了解以下Milk-V Duo 开发板Milk-V Duo
    发表于 08-22 23:59

    Milk-V Duo 开发板免费体验】②、ssh连接Milk-V Duo开发板

    承接上期的开箱贴,此次将Milk-V Duo开发板运行linux系统。在此之前需要手头准备一张8GB以上的TF卡,并使用读卡器将TF烧录Linux镜像文件。这里需要借助烧写工具rufus,这款工具
    发表于 08-29 00:53