extend bus(上): I2C client

3636 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
嵌入式工程师,嵌入式学习,Linux驱动工程师,或者有志从事Linux驱动开发的学员
你将会学到
驱动实战+流程图+内核源码导读,让你彻底理解整个设备树的运行机制,熟练学会修改和配置设备树
  • 彻底看懂Linux设备树文件
  • 能熟练修改和配置设备树文件
  • 掌握基于设备树的驱动开发方法
  • 掌握gpio和pinctrl的设备树配置
  • 掌握设备树中中断映射和地址映射等难点
  • 学习SoC芯片架构、总线机制
课程简介

设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?

设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。


引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。

本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和技能,学完本期课程,预期收获如下:

  • 彻底看懂Linux设备树文件

  • 能熟练修改和配置设备树文件

  • 掌握基于设备树的platform driver驱动编写方法

  • 掌握gpio和pinctrl的配置

  • 学习SoC芯片架构、总线机制

  • 对设备树运行机制有系统理解

  • 熟练掌握设备树的编程接口(驱动开发中常用)


常见问题
问:学习设备树需要什么基础吗?
答:需要。要对Linux设备模型、总线机制、platform_driver驱动的编写有一个大致的了解,这样学习设备树会更加轻松。
问:学习本套课程需要什么开发板?
答:本套课程不用再掏钱自己买开发板。课程基于ARM虚拟开发板学习,在虚拟ARM开发板上跑U-boot+Linux+NFS学习环境,学习设备树非常方便。搭建好的免费虚拟机镜像可以到这个地方下载:https://www.zhaixue.cc/qemu/qemu-qemu-lab.html,在你自己的电脑上安装VMware(建议版本vmware-15 Pro),然后使用VMware直接打开虚拟机镜像即可学习
问:现在网上已经很多设备树教程了,你出的新的设备树课程有什么特色?
答:特色1:本套课程不仅:讲设备树语法,还会花很大篇幅讲解SoC芯片架构的知识:比如总线、总线编址、桥接、memory mapped bus的总线地址映射、中断映射、以及PINMUX管脚复用的芯片内部实现原理。真正理解了SoC架构,也就真正理解了设备树 特色2:老师花了很大心思画流程图,将dtb文件格式、内核中的设备树、展开的platform_driver更直观展现出来,结合内核源码导读,学起来更轻松
问:学习本套课程需要什么基础?
答:需要本套课程的前置条件:需要对Linux设备模型,总线机制,platform_driver驱动的编写方法有一定了解,有了以上基础后,在学习设备树教程效果会更好。当然,这些前置基础在课程中也会做一些讲解
问:学习本套课程需要买开发板吗?在哪里做实验?
答:不需要买开发板。课程使用免费的ARM虚拟开发板,在上面跑U-boot+Linux+NFS嵌入式Linux学习环境,很方便学习设备树。搭建好虚拟开发板的Ubuntu镜像可以到这里下载:https://www.zhaixue.cc/qemu/qemu-qemu-lab.html,在你的电脑上使用VMware(最好VMware15 Pro版本)直接打开就可以运行
问:市面上已经有很多设备树教程了,你的课程有什么特色?
答:特色1:不仅将设备树语法,还会将SoC芯片架构(总线、桥接、总线地址映射、中断映射、pinmux芯片内部电路实现等),只有彻底理解了硬件,才能真正理解和修改设备树文件。 特色2:作者用心绘制的流程图,从设备树dtb文件格式到内核中的设备树,到展开的设备,结合内核源码导读,让您学习更加直观,理解更通透
展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交