你将收获

1. 了解设备树的起源2. 彻底读懂设备树文件3. 掌握修改uboot,内核支持设备树以及编译设备树的方法

适用人群

对设备树感兴趣的高校学生,要用到设备树的工程师

课程介绍

现在的linux内核(Linux3.X)都已支持设备树机制(dts),不管你是玩内核还是玩驱动,一定会碰到设备树,而网上虽然有很多博客,但都讲的不够清晰,看了还是不懂,半桶水,学员急需一套讲解设备树比较透彻的课程,所以我们来了,致力于帮助广大学员扫清设备树在驱动以及内核学习中的障碍。

课程目录

讨论留言

正在加载中...

同学笔记

  • wws_alex 2020-07-28 20:55:05

    来源:字符设备驱动的编译测试 查看详情

    驱动程序的编译依赖与内核,所以需要先编译内核

  • wws_alex 2020-07-28 10:59:11

    来源:只想使用设备树不想深入研究怎么办 查看详情

    我们在设备树中怎么指定引脚(reg还是pin)完全取决于驱动程序

    在设备树中怎么指定硬件资源完全取决于写驱动程序的人,应该给出一个文档,告诉写设备树的人设备树中led的节点应该怎么去编写,对于内核自带的驱动程序,它自带的文档一般存放在Documentation/devicetree/bindings/

    设备树文件目录:arch>arm>boot>dts

  • wws_alex 2020-07-28 10:09:12

    来源:使用设备树时对应的驱动编程 查看详情

    1. 设备树:在DTS文件中构造节点,节点含有资源(管脚),dts>dtb传给内核,内核处理解析dtb文件得到一个一个的device.node结构体,由变为platform_device结构体,里面含有资源(资源来自DTS文件).platform_device与内核当中的platform_drive匹配,一旦匹配成功,platform_drive里的probe就会被调用,分配》设置》注册
    2. led节点有两个属性:我们使用compatible在内核里面找到能够支持这个节点的驱动程序;reg(本意为寄存器的地址)可以用来指定引脚
    3. reg = <S3C2410_GPF(5)  1>;S3C2410_GPF(5)为起始地址; 1为这个寄存器的大小
    4. platform_driver led_drv中.of_match_table = of_match_leds, /* 能支持哪些来自于dts的platform_device */
    5. "来自dts的platform_device结构体" 与 "我们写的platform_driver" 的匹配过程:
          "来自dts的platform_device结构体"里面有成员".dev.of_node", 它里面含有各种属性, 比如 compatible, reg, pin
          "我们写的platform_driver"里面有成员".driver.of_match_table", 它表示能支持哪些来自于dts的platform_device  如果"of_node中的compatible" 跟 "of_match_table中的compatible" 一致, 就表示匹配成功, 则调用 platform_driver中的probe函数;
    6.     在probe函数中, 可以继续从of_node中获得各种属性来确定硬件资源
    7. 如果想要修改所使用的灯,修改一下设备树,上传编译,从新启动内核,使用新的设备树,使用新的dtb文件来启动内核就可以了

没有更多了