大总结:基于Kernel5.4的Linux外设驱动实战--Apple的学习笔记

前言

大总结:动手写Linux驱动练习--Apple的学习笔记是对驱动的基础复习及实现简单的驱动。于是我又去买了陀螺仪和OLED屏幕作为外设来玩Linux驱动。
1. MPU6500六轴陀螺仪驱动
它可以使用i2c,也可以使用spi。我设计的是采用input子系统polling方式上报采样数据。
分别玩下spi和i2c总线设备驱动。
MPU6500六轴陀螺仪linux驱动(i2c)--Apple的学习笔记
MPU6500六轴陀螺仪linux驱动(spi)--Apple的学习笔记
然后进行设计优化将spi和i2c驱动的公共部分抽象出来,优化驱动代码,通过dts配置选择spi或者选择i2c总线来驱动陀螺仪。
MPU6500六轴陀螺仪linux驱动(spi&i2c合并)--Apple的学习笔记
2. 再次进行理论spi和i2c源码分析
Linux i2c子系统源码分析--Apple的学习笔记
Linux spi子系统源码分析--Apple的学习笔记
probe函数中device参数的来历--Apple的学习笔记
3. linux驱动OLED
屏幕没有点亮,我怀疑是硬件电流太小导致的。
Linux驱动OLED屏st7735s(framebuffer学习)--Apple的学习笔记
4. 插曲:临时用下TQ2440
由于bb black开发板无法电流屏幕,但是我想实际玩下framebuffer驱动,所以翻出了10年前买了TQ2440,因为它有LCD屏幕,BB black需要连接HDMI搭建硬件麻烦。我依然使用Kernel5.4及设备树,所以用新代码来驱动老板子,结果uboot和kernel能工作,但是文件系统死活起不来。
TQ2440成功移植uboot2016.11解决Using dm9000 device卡死问题--Apple的学习笔记
过程中复习了下uboot的内存重定位,进行源码分析
uboot内存重定向详解--Apple的学习笔记
TQ2440改成设备树启动kernel5.4成功--Apple的学习笔记
5. qemu仿真环境搭建及使用
TQ2440硬件无法使用,但是我还是想亲自动手调试framebuffer,我怕光理解代码,理解错误。所以要通过调试来验证理解是否正确。
由于qemu启动后要运行我的app代码,app代码会更新,每次更新都要制作一个文件系统比较麻烦,所以qemu需用使用nfs挂载。学习了下ubuntu命令方式网桥的设置。
ubuntu18.04配置网桥支持qemu模拟开发板挂载NFS启动LCD--Apple的学习笔记
vexpress是DRM框架,不是直接使用framebuffer(后来才了解到DRM包含了framebuffer注册了),所以我在网上找了TQ2440的qemu版本使用。重要心想事成完成了framebuffer驱动调试验证。
framebuffer驱动qemu仿真调试--Apple的学习笔记
DRM之前用过opengl和vulKan等API,知道底层是DRM,但是DRM驱动没有研究过。所以顺便了解下模块关系,源码分析等之后用了opengles及HDMI驱动后再做DRM驱动专题
kernel5.4版本gpu DRM驱动入门--Apple的学习笔记
6. qemu虚拟化原理
因为用了特制版本的qemu可以仿真开发板LCD,所以觉得qemu好神奇,花时间探究下,顺便看看qemu源码,学习下他的设计思路。
qemu虚化原理入门--Apple的学习笔记
Qemu2.8虚拟机源码分析—Apple的学习笔记

你可能感兴趣的:(大总结:基于Kernel5.4的Linux外设驱动实战--Apple的学习笔记)