全志-芯片软件android10使用说明_第1页
全志-芯片软件android10使用说明_第2页
全志-芯片软件android10使用说明_第3页
全志-芯片软件android10使用说明_第4页
全志-芯片软件android10使用说明_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言................................................ 编写目的........................................... 适用范围........................................... 相关........................................... 相关术语.................

.................

............... ..............................DeviceTreesource .................................... DeviceTree结构介绍约定.................................. 结点名称(nodenames)................................. 路径名称......................................... 属性(properties)..................................... 属性名称...................................... ................属性值.......................... ................

.....

....

.....

..... 设备树文件关系....................................... 存在sys_config.fex配置情况.............................. 配置sys_config.fex...................................... ........................................ of_find_node_by_path.................................................. 其 前介绍devicetree配置、设备驱动如何获取devicetree配置信息等内容,让用户明确掌握 A64/H64/R18B100/G102A20E/V40/T3/T3A/T3L/R40H5A63/A63vrH6H616A100A133相关平台相关linux项目组同事,linux内核和驱动开发术语/术语/

DeviceTreeBlobFile,设备树二进制文 Allwinner FDT模块Devicetree是一种描述硬件信息的数据结构,它表现为一颗由电路板上CPU、总线、设备组成的树,Devicetree由一系列被命名的结点(node)和属性(property)组成,而结点本身可以包含子结点。所name和valueDeviceTree中,可描述以下信息:CPU····GPIOclockBootloader会将这棵树传递给内核,内核可以识别这棵树,并根据它展开出Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、IRQ、寄存器等资源,也会通过DTB传递给内核,内核会将这些资源绑定给展开的相应设备。因此,对devicetree的理解,可从以下5步进行。dts认识DTC工···BootloaderDTB···(Devicetree的解析)DeviceTreesource.dts或.dtsiSIereeMlinux.dtsM的mahin。Cmachine.ds共同的部分。inux内核为了简化,采用了C语言包含头文件的方式,将C公共的部分或者多个machine.dts,其他的mahine.dts就inclde.dtsi含结点和属性的简单树状结构,属性就是键-值对(名字对),而结点可以同时包含属性结点。例.dts 1:dts··两个子节点:``node1··node1的子节点:``child-node1''``child-文本字符串(无结束符)可以引号表示:a-string-property=''o逗号也可用于创建字符串列表:a-string-list-property=''string'',''secondDeviceTree结点(node规范:devicetree中每个结点名必须遵守以下原则结结点名称node-name@uint- A- 加 减备地址就是用来该设备的主地址,并且该地址也在结点的reg属性中列出。同级结点名必须是唯一的,但只要地址不同,多个结点的名称也可以相同,如 node-name和unit-address,它是通过`` 2:dts从例子中,可以看到,一个根结点/下有3个子结点:结点名称为cpu的结点通过地址0和ethernetfe001000fe002000路径devicetree中,唯一识别结点的另一个方法就是指定绝对路径,即给结点指定从根结点到该结点的完整路径。Devicetree中约定了完整路径的表达方式://node-name-1/node-name-2/.../node-name-实例 图 dts结点命名规范示例中cpu@1的完整路径如注:如果完整路径可以明确表 需要确定的结点时,结点之后的地址可以省属性在DeviceTree属性名或机构定义了该属性。例如fsl,channel-fifo-lenallwinner,pull=属性名称由31的字符串组成。属性名称支持的字符如表1所示。属性名称可以分为或机构定义了该属性。例如fsl,channel-fifo-lenallwinner,pull=属性属性值是一个包含属性相关信息的数组,数组可能有0息时,属性值可以为空值。这时,属性值的存在或不存在,就已经足够描述属性的相关信息了。属性 空 空32bit整数64bit整数配置SoCSoCsun50iw1p1.dtsi board.dts设备树文件的配置是该SoC所有方案的通用配置,对于ARM64cpu(以sun50iw10p1为例)的路径为:kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw10p1-clk.dtsi。SoCARM32cpu( 的路径为:kernel/linux-4.9/arch/arm/boot/dts/sun8iw16p1-clk.dtsi板级设备树(board.dts)devicetree sun50iw10p1- sun50iw10p1-3:dtbboard.dtsboard.dtssun50iw*.dtsiboard级配置文件跟SoC级配置文件出现相同节点属性时,BoardSoC级的相同属性存在sys_config.fex配置情当存在sys_config.fexSoCSoCsun50iw*dtsisys_config.fexuart0sys_config.fexboot阶段使用,内核驱动使用的信息,不建议在sys_config.fex文件配置,建议配置在board.dts。4:5:接口Linux系统为devicetree提供了标准的API接口使用内核提供的device使用内核提供的devicetreeLinux系统提供的devicetree接口头文件#include<linux/of.h>Devicetreeunsignedunsignedintirq_of_parse_and_map(structdevice_node*dev,intdev要解析中断号的设备indexdts源文件点interrupt属性值索引以timerDts配置Dts配置timer0:timer@1c20c00interrupts=<GIC_SPI18staticvoidinitsunxi_timer_init(structdevice_nodeintirq=irq_of_parse_and_map(node,if(irq<=panic("Can'tparse}voidvoidiomem*of_iomap(structdevice_node*np,intnp要内存的设备节点indexdts源文件点reg属性值索引如果成功,返回IOmemory的虚拟地址,否则返回NULL.0.0以timer节点为例子,dtstimer0:timer0:timer@1c20c00reg=<0x00x01c20c000x0以timerstaticvoidinitsunxi_timer_init(structdevice_nodetimer_base=of_iomap(node,}staticstaticinlineintof_property_read_u32(conststructdevice_nodeconstchar*propname,u32np想要获取属性值的节点propname属性名称out_value以timer节点为例子,dtssoc_timer0:soc_timer0:{clock-frequencytimer-prescale=以timerclock-frequencyintif(of_property_read_u32(node,"clock-frequency",{pr_err("<%s>musthaveaclock-frequencyproperty\n",node-}constchar*propname,constcharnp想要获取属性值的节点propname属性名称output以timer节点为例子,dtssoc_timer0soc_timer0:{clock-frequencytimer-prescale=以timerclock-frequencyconstconstchar*name=if(of_property_read_string(node,"clock-frequency",{pr_err("<%s>musthaveaclock-frequencyproperty\n",node-}4.1.54.1.5constchar*propname,intindex,constcharnp想要获取属性值的节点propname属性名称indexdtspropname的值output string-propstring-prop的属性值,Dtse:vdevice@0{string_prop=constchar*name=if}4.1.6externexternstructdevice_node*of_find_node_by_name(structdevice_nodeconstcharfrom:从哪个节点开始找起name:··如果成功,返回节点结构体,失败返回null。 vdeivce的节点,dtse:vdevice@0{string_prop=structdevice_nodenode= LL,ifpr_warn("cannotget}7 externexternstructdevice_node*of_find_node_by_name(structdevice_nodeconstcharfrom:从哪个节点开始找起type:想要查找节点中device_type如果成功,返回节点结构体,失败返回null。 device_typevdeivce的节点,dtssoc@01c20800{vdevice:vdevice@0{string_prop="abcd";structdevice_nodeifpr_warn("cannotget}4.1.8path vdeivce的节点,dtse:vdevice@0{string_prop="abcd";structdevice_nodenode=ifpr_warn("cannotget}4.1.9 intintof_get_named_gpio_flags(structdevice_node*np,constcharintindex,enumof_gpio_flagsnp包含所需要查找GPIO的节点propnameGPIO信息的属性indexpropname中属性值的索引 flagsgpioflags。如果成功,返回gpio,flags存放gpio配置信息,失败返回null·该函数用于获取指定名称的gpio信息 ·vdeivce的节点,dtse:vdevice@0{test-gpios=<&pioPA1111{structgpio_confignode=of_find_node_by_type(NULL,printk("cannotfind}(enumof_gpio_flags*)&config);if(!gpio_is_valid(ret))return-}其sysfsdevicetreedtb文件中,并在/sys/devices下会生成对应设备节点,其节点命名规则如形成这种节点名的设备,在devicetree里的节点配置具有reg属性。uart0:uart0:uart@01c28000reg=<0x00x01c280000x00x400>;prcmreg=<0x00x01f014000x0(2)"节点名."节点名的结构是``节点名.'',例如soc.0、usbc0.5。形成这种节点名的设备,在devicetree里的节点配置没有reg属性。soc:soc:{compatible="simple-usbc0:usbc0@0以这么做,是因为devicetree中允许配置同名节点,所以需要通过单元地址或者来区分这些同名-----{reg=of_get_property(node,"reg",if(reg)}magic=atomic_add_return(1,&bus_no_reg_magic);}This

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论