课程背景
驱动是连接软件和硬件的纽带,在一个成熟的操作系统中,驱动代码的比例最高,工作量也很大。不论是UART,I2C,SPI,SD,显示,声音,视频编解码等嵌入式场景的驱动,还是服务器场景的pcie驱动,块设备驱动和网络驱动,驱动程序在整个系统中都发挥着重要的作用。
课程介绍
课程中软件研发最基本能力(环境和文档)开始带大家上手,从最简单的GPIO驱动带大家步入驱动的殿堂。从GPIO驱动引出Linux内核对硬件的抽象,内存管理和设备模型等话题。然后从大驱动(网络驱动),电源管理和调试三方面,带领大家提升解决复杂问题的能力。
具体目录如下
第一课 (2.5小时) | 工欲善其事,必先利器—一开发环境搭建 | 获得代码的两种方法 |
获得文档的两个思路 | ||
利用前面两步搭建自己的开发环境 | ||
从GPIO看硬件抽象
| MCU如何访问GPIO | |
Linux如何访问GPIO | ||
基于GPIO的驱动 | ||
Linux下访问GPIO实际发生了什么 | ||
使用shell脚本测试gpio | ||
第二课 (2.5小时) | 驱动程序的寄存器访问和内存分配 | MCU和Linux的寄存器API对比和实操 |
MCU和Linux的dma API对比和实操 | ||
用户空间内存分配,malloc的背后的原理 | ||
内核内存分配,在驱动中分配内存 | ||
使用工具获得内存分配状态 | ||
第三课 (2.5小时) | Linux设备模型与电源管理 | 如何学习Linux设备之“道” |
这么多种设备如何管理? Linux对硬件的抽象 | ||
电源管理在操作系统的中的位置 | ||
电源管理的硬件架构 | ||
Linux的电源管理框架 | ||
设备拓扑结构与休眠唤醒 | ||
第四课 (2.5小时) | 网络驱动 | TCP/IP协议栈 |
MCU使用网络协议的两个方法 | ||
Linux的网络协议栈 | ||
RGMII协议 | ||
phy芯片的驱动和调试工具 | ||
使用python测试网络状态 | ||
第五课 (2.5小时) | 驱动调试手段 | 打印 |
断点 | ||
如何判断是否是驱动的性能瓶颈? | ||
5.0内核之后的重要内核更新 | 设备驱动框架的更新 | |
内存管理的更新 | ||
调测的更新 |
课程收益
• 掌握Linux下设备驱动开发方法;
• 熟悉设备驱动和操作系统的关系,不再盲人摸象;
• 通过工具和方法支持自己高效工作,从自己每次重复性驱动移植和调试硬件的工作中解脱出来;
• 学习如何每次移植和调试变成加深对操作系统理解的过程。
讲师介绍
张健/Bamvor
十年IT基础设施研发经验,其中6年Linux kernel一线研发经验,在suse,华为(17级),星际比特(技术合伙人)等公司工作。
作为团队核心成员参与了大陆第一个Cortex-A8 SOC芯片研发,负责CPU软件验证,操作系统移植等工作。
作为华为派驻到Linaro的技术专家,主导/参与多个Linux与arm架构相关特性研发(ILP32,continuous bit hint,kernel selftest等)
课程受众
• 希望从MCU(单片机)转行到Linux开发的工程师;
• 已经有Linux开发经验,希望深入了解操作系统的工程师;
• 日常有大量重复驱动调试工作,希望更多时间拓展自己的人。
课程定价:6000元/人(阅码场会员减1024,训练营老用户优惠券已发放。)
开课时间:2023年10月
课前准备:课程咨询请联系客服小月(WX:linuxer2016)