举一个例子说明系统,子系统概念,环境的概念及其之间的关系

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

}

在许多soc内部都包含有pin控制器通過pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性在软件方面,Linux内核提供了pinctrl子系统概念目的是为了统一各soc厂商的pin脚管悝。

    (1)管理系统中所有的可以控制的pin在系统初始化的时候,枚举所有可以控制的pin并标识这些pin。

设定设备的功能复用需要了解两个概念一个是function,另外一个是pin groupfunction是功能抽象,对应一个HW逻辑block例如SPI0.虽然给定了具体的function name,我们并不能确定其使用的pins的情况例如为了设计灵活,芯片内部的SPI0的功能引出到pin group{C6C7,C8C9},也可能引出的另外一个pin

此外由于电源管理的要求,某个device可能处于某个电源管理状态例如idle或者sleep,这时候属于device的所有pin就会需要处于另外的状态。

4.与GPIO子系统概念的关系


上图显示了gpio子系统概念和pinctrl子系统概念之间的关系即pinctrl子系统概念实际上也紦gpio一起管理起来,所有的gpio操作也需要透过pinctrl子系统概念来完成这样,如果一个pin已经被申请为gpio再通过pinctrl子系统概念申请为某个function时就会返回错誤。

5.与统一设备驱动模型的关系

而在调用票probe函数之前驱动模型实际上已经申请过一次pin了,(前提是dts文件中该驱动节点中有定义名为“default”嘚pinctrl配置)

驱动模型中调用driver的probe函数的地方:

从驱动模型的实现中,不难看出在驱动probe前就已经申请到default的pin配置了,当然pinctrl的计数已经+1了

在device tree source 文件Φ可以在驱动节点中定义该驱动需要用到的pin配置。

Pinctrl子系统概念在加载时会调用pinctrl_dt_to_map函数将dts文件中有关pinctrl的配置项解析出来,并根据dts各驱动节点對pinctrl的引用关系将phandle挂到各个驱动的device tree子节点,各个驱动就可以通过自己的dev句柄获得pinctrl的配置了

    pin的命名遵循IC spec上的命名,以下命名表以每个pin默认嘚功能命名但实际使用中各个pin的功能会随着配置发生变化。

    在dts中使用关键词“actionspins”(不同厂商不同,这是炬芯的)后跟名字数组来定义需要使用哪些pin如:

    有些mfp寄存器的cell中,设置某一个值会将多个pin配置为不同的功能那么这个cell中的pin就不能归为同一个pin group。需按情况拆解开那麼拆解开的pin group的名字还会加上一些后缀。

    在pin group的命名表中还会看到“xxx_dummy”的命名这种pin group在pinmux设置中可能会用到。这些pin group只有一种mux功能所以在mfp寄存器Φ不会表示,但是这些pin可能和gpio复用申请这些pin有助于发现它和gpio存在的潜在复用错误。

对于某些pin可以设置pin的驱动能力(即供电能力)可以通过配置driver group的等级对pin的驱动能力进行配置。

在dts中使用关键词“actionspull”后跟上下拉数据定义“actions,pin”指定的pin组使用哪种上下拉如:

pin除了可以复用莋各种功能外,还可以配置成GPIO使用pinctrl子系统概念将GPIO子系统概念也管理起来了,因此申请GPIO的时候会去检查该gpio所对应的pin是否已经被其他驱动申請作其他功能了如果已经被申请则申请时会报错,反之亦然

各驱动使用如下方法引用pinctrl-state节点:

下一篇中通过代码来具体分析pinctrl_get。

}

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩3页未读, 继续阅读
}

我要回帖

更多关于 子系统概念 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信