当前位置: 首页 > wzjs >正文

捡个校花做老婆是哪个网站的大连制作网站多少钱

捡个校花做老婆是哪个网站的,大连制作网站多少钱,男女做暖暖的时候网站,公网ip做网站访问不目录 一、简单介绍二、主要源码文件和目录gpio子系统pinctrl子系统两个子系统之间的关系设备树例子 三、主要的数据结构gpio子系统pinctrl子系统 四、驱动初始化流程五、难点说明 一、简单介绍 GPIO子系统: Linux GPIO子系统是Linux内核中负责处理GPIO(通用输入输出…

目录

    • 一、简单介绍
    • 二、主要源码文件和目录
      • gpio子系统
      • pinctrl子系统
      • 两个子系统之间的关系
      • 设备树例子
    • 三、主要的数据结构
      • gpio子系统
      • pinctrl子系统
    • 四、驱动初始化流程
    • 五、难点说明

一、简单介绍

GPIO子系统: Linux GPIO子系统是Linux内核中负责处理GPIO(通用输入输出)的一部分。它提供了一套接口,使得硬件工程师和软件开发者能够方便地使用和控制GPIO(来自百度百科);
Linux的pinctrl子系统是一种提供引脚复用和引脚配置的机制,它允许内核或者用户空间动态地控制硬件的引脚功能(来自百度百科);

二、主要源码文件和目录

gpio子系统

目录 linux-5.10.1xx/drivers/gpio/ ;
gpio-dwapb.c : 以DesignWare的IP库为例,具体芯片平台架构gpio外设的适配文件,其它平台gpio-xxxx.c 同理;
gpiolib-devres.c: 主要关于struct gpio_desc结构的操作;
gpiolib.c : gpio子系统和核心层;
gpiolib-sysfs.c : 在用户空间通过sysfs文件系统导出引脚,操作引脚的底层实现函数;
gpiolib-cdev.c : struct gpio_device结构注册为字符设备,操作相关函数;
gpiolib-legacy.c : 几个操作函数;
gpiolib-of.c : 关于gpio设备树配置解析的操作函数封装;
gpio-mmio.c : struct gpio_chip的钩子函数的定义在此处;

文件整体调用关系图:
在这里插入图片描述

pinctrl子系统

目录 linux-5.10.xxx/drivers/pinctrl/;
core.c:pinctrl核心,向外暴露的接口可以链接其它文件中的调用流程转换;
devicetree.c : 解析某个设备的设备树中关于引脚的设置,如解析pinctrl-0属性;
pinconf-generic.c: 操作设备树节点到 struct pinctrl_map结构的函数封装和pinctrl-utils.c 中接口配合使用;
pinconf.c : 操作struct pinctrl_map 和 struct pinctrl_setting的辅助接口;
pinctrl-xxxxx.c:具体芯片平台解析设备树pinctrl外设的probe函数,自定义结构的定义包含struct pinctrl_dev 是它的派生类;
pinctrl-utils.c :struct pinctrl_map 结构成员的操作;
pinmux.c: 请求pin引脚为某种复用功能时的函数集合,向下调用struct pinmux_ops *ops->set_mux成员函数,具体将配置进行执行到寄存器的操作实现;

文件整体调用关系图:
在这里插入图片描述

两个子系统之间的关系

核心纽带数据结构:

//此结构定义的是gpio空间和pinctrl空间一段对应的引脚范围
struct pinctrl_gpio_range{struct list_head node;const char *name;unsigned int id;unsigned int base;//gpio空间此段gpio编号的开始unsigned int pin_base;//pinctrl空间此段pin空间的开始unsigned const *pins;unsigned int npins;//此段范围总的引脚个数struct gpio_chip *gc;
}

图示:

在这里插入图片描述

设备树例子

以DesignWare的IP库为例,led gpio和pinctrl为两个外设
led设备设备树:

leds {compatible = "gpio-leds";pinctrl-names = "default";pinctrl-0 = <&leds_gpio>;status = "okay";heartbeat {label = "Heartbeat";gpios = <&port1 23 GPIO_ACTIVE_HIGH>;linux,default-trigger = "heartbeat";};};

gpio外设设备树:

gpio@地址 {compatible = "snps,dw-apb-gpio";reg = <0x0xxxxxxx 0xxxxx>;#address-cells = <1>;#size-cells = <0>;port1: gpio@0 {compatible = "snps,dw-apb-gpio-port";gpio-controller;#gpio-cells = <2>;snps,nr-gpios = <32>;reg = <0>;};port2: gpio@1 {compatible = "snps,dw-apb-gpio-port";gpio-controller;#gpio-cells = <2>;snps,nr-gpios = <32>;reg = <1>;};};

pinctrl外设设备树:

pinctrl@地址 {leds_gpio: leds_gpio {xxx,pins = <PF5>;    xxx,pull = <XXX_PULL_UP>;xxx,function = <XXX_FUNC_XXX>;};}

三、主要的数据结构

gpio子系统

struct gpio_chip:理解为一个gpio外设控制器或者gpio外设控制器下的某个端口的表示(每个端口有一组引脚);
struct gpio_device: struct gpio_chip的另一种表示,包含struct gpio_descs和struct gpio_chip的指针;
struct gpio_descs: 某个gpio外设或者gpio外设控制器下的某个端口下的某个引脚的表示,如一个外设或者端口下有个32个引脚那么每个引脚都会分配一个这样的结构;

pinctrl子系统

struct pinctrl:具体的设备在获取pinctrl-0属性前会生成一个这个结构,其中的 dev执行具体设备的dev;
struct pinctrl_dev: 包括 struct pin_desc ,struct pinctrl_desc 等;
struct pinctrl_gpio_range: 定义gpio和pinctrl一段引脚映射的关系;
struct pinctrl_map:对引脚的配置的一种表示,比如a引脚上拉是一个map,a引脚为gpio是一个map,其中的type成员会具体区分;
struct pin_desc: 关注成员gpio_owner;
struct pinctrl_pin_desc :注意和struct pin_desc的区分,表示pin号和pin的名字;

四、驱动初始化流程

1、pinctrl外设解析注册过程

xxxxx_probe(pinctrl-xxxx.c)->
devm_pinctrl_register(core.c) ->
pinctrl_register(core.c)->
pinctrl_enable 注册pinctrl外设到核心层的队列pinctrldev_list里;
调用过程中会涉及到pinctrl子系统中以上主要数据struct pinctrl_dev, struct pinctrl_pin_desc ,struct pin_desc等的创建和初始化;

2、具体设备根据设备中引脚的配置调用struct pinctrl_dev 的 struct pinctrl_desc的struct pinmux_ops钩子函数配置引脚

内核源码/drivers/base/dd.c ->
pinctrl_init_done(core.c)->
pinctrl_commit_state (core.c)->
pinmux_enable_setting (pinmux.c)->
pinmux_ops *ops->set_mux( pinctrl-xxxx.c 中注册的struct pinmux_ops 成员)

3、具体设备调用struct pinctrl_dev 的 struct pinctrl_desc的pinctrl_ops的 dt_node_to_map,通过解析具体设备的引脚配置生成 pinctrl_map的过程

内核源码/drivers/base/pinctrl.c -> devm_pinctrl_get(core.c)->
pinctrl_get(core.c)->
create_pinctrl(dev, NULL);(pinctrl/core.c) ->
pinctrl_dt_to_map(devicetree.c) 循环调用 ->
dt_to_map_one_config(devicetree.c )->
dt_node_to_map(pinctrl-xxxx.c 中注册的struct pinctrl_ops 成员)
设备在解析设备树获取引脚配置时会根据设备的设备树pinctrl-0等状态生成struct pinctrl结构,解析设备树引脚配置生成 struct pinctrl_map 并挂到struct pinctrl的链表成员中,需要仔细看代码理解;

五、难点说明

1、pinctrl子系统struct pinctrl_map 结构说明

struct pinctrl_map {const char *dev_name;const char *name;enum pinctrl_map_type type; //const char *ctrl_dev_name;union {struct pinctrl_map_mux mux;struct pinctrl_map_configs configs;} data;
};

以上述led设备树为例,会生成两个map,解析xxx,function属性生成一个成员type类型PIN_MAP_TYPE_MUX_GROUP的map,解析xxx,pull生成一个成员type类型PIN_MAP_TYPE_CONFIGS_PIN的map;


文章转载自:

http://smFlPrSz.fkfyn.cn
http://sLiwxhQp.fkfyn.cn
http://CcOgrUxw.fkfyn.cn
http://CGvX8SaK.fkfyn.cn
http://S1VpZ8IX.fkfyn.cn
http://tWuVfrpt.fkfyn.cn
http://EOwyKj0E.fkfyn.cn
http://adhsvDdk.fkfyn.cn
http://E6QGYLnK.fkfyn.cn
http://N81kA9YB.fkfyn.cn
http://EJHPzuwO.fkfyn.cn
http://EsI09tzF.fkfyn.cn
http://bRDhVSFd.fkfyn.cn
http://S3eMVZGU.fkfyn.cn
http://HKnXSVWv.fkfyn.cn
http://353pkCqC.fkfyn.cn
http://78gmp8G6.fkfyn.cn
http://ucrdr9LF.fkfyn.cn
http://lDYAqpi4.fkfyn.cn
http://XFiIxk38.fkfyn.cn
http://icDqVVbE.fkfyn.cn
http://UuNCfBUB.fkfyn.cn
http://IoT97lGB.fkfyn.cn
http://xrtCTv8g.fkfyn.cn
http://pVmLBods.fkfyn.cn
http://SubzvE9W.fkfyn.cn
http://50Vkg5bJ.fkfyn.cn
http://7fmYtsmk.fkfyn.cn
http://R5F78eeW.fkfyn.cn
http://DB8jiftM.fkfyn.cn
http://www.dtcms.com/wzjs/631015.html

相关文章:

  • 类似快手网站开发买了万网的域名跟定制网站还要买空间吗
  • 南京专业做网站公司怎么办?
  • wordpress建立网站实例如何保护我做的网站模板
  • 网站主题风格长沙河东做网站
  • 江西个人网站备案做论坛祁县网站建设
  • 做指甲的网站叫什么名字来着wordpress 博客搭建
  • 网站开发 pdf石家庄网站开发建设
  • 湛江做网站seo的犀牛网站建设
  • 建设岗位考试网站国内网站建设 必须实名认证
  • 怎么在手机上设计网站外贸网站网站推广
  • 无限个网站虚拟空间网站建设运营计划书
  • 网站专题页面开发西安网站建设qq群号
  • 梵客联盟seo免费培训教程
  • 专业电商网站建设多少钱开源建站软件
  • 西部数码网站管理助手serv-u默认密码加工网袋的设备多少钱
  • 三亚旅游网站建设做网站公司昆明
  • 网站顶部公告代码wordpress 调用文章列表
  • 徐州开发区中学网站网站建设影音先锋网址
  • 章丘哪里有建设网站的打开小程序入口直接进入
  • 创业园网站建设wordpress网页手机版
  • 网站备案填了虚假座机能过吗潍坊市企业网站建设
  • 有没有免费做编辑网站管理系统农村自建房设计图片大全
  • 织梦如何做网站wordpress如何换图片不显示不出来
  • 泉州专业网站开发公司wordpress新闻站自动采集
  • 微信建站网站开发公司不动产登记费入什么科目
  • 如何进行网站icp备案搜索指数查询平台
  • 百度建网站seo优化网站技术排名百度推广
  • 网站是怎样建立的流程是什么郴州建设工程建设信息网站
  • php网站建设安装环境本地房产交易信息网
  • 绩溪做网站无锡网站建设无锡速联科技