Linux驱动开发学习路线规划

Posted JeckXu666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux驱动开发学习路线规划相关的知识,希望对你有一定的参考价值。

Linux驱动开发学习路线规划

关于Linux驱动开发路线学习的一个规划,学习内容以博客形式记录,打钩的表示学习完成

入门操作篇:

  • Linux常用指令
  • vim 编辑器使用
  • Makefile 基础语法
  • shell 基础语法

总结文章: Linux驱动开发系列:入门Ubuntu知识

ARM裸机篇:

  • 了解 Cortex-A7 MPCore 架构:ARM裸机开发:Cortex-A7 MPCore架构基础
  • 了解 Cortex-A7 常用汇编指令:ARM裸机开发:ARM汇编基础
  • 熟悉 IMX 芯片程序下载下载流程:ARM裸机开发:I.MX6UL 程序编译下载(SD卡)
  • 了解 IO 配置有关寄存器,汇编编程点亮LED灯:ARM裸机开发:汇编LED灯实验(I.MX6UL芯片)
  • 了解 IMX 启动方式和启动原理:ARM裸机开发:I.MX6U 启动方式
  • 使用汇编准备C语言开发环境,用C语言点亮LED灯:ARM裸机开发:C语言点亮LED
  • 熟悉官方 SDK 移植开发流程:
  • 对 SDK 进行管理,建立 BSP 工程意识:
  • GPIO 控制加强,控制蜂鸣器:
  • GPIO 控制加强,读取按键输入:
  • 定时器学习,学会配置定时器中断:
  • 定时器学习加强,用定时器来做按键消抖:
  • 定时器学习加强,用定时器来做精准延时:
  • 了解串口收发器有关寄存器配置,学习使用串口收发数据:
  • 将C库函数映射到串口,方便直接调用
  • 了解DDR配置,学习使用扩展RAM
  • 了解 RGB LCD 的寄存器,学习如何使用 LCD
  • 了解触摸屏相关寄存器,学习如何获取 LCB 触摸位置数据
  • 了解 IMX 内部 RTC 模块寄存器,学习如何配置使用
  • 了解 IMX IIC 配置寄存器,使用 IIC
  • 了解 IMX SPI 配置寄存器,使用 SPI

系统移植篇:

  • 了解 U-Boot
  • 从 U-Boot 顶层 Makefile 分析其编译流程
  • 分析 U-Boot 启动流程
  • 移植官方 U-Boot 到 IMX 开发板
  • 学会使用图形化配置 U-Boot ,加快开发流程
  • 从 Linux 顶层 Makefile 分析其内核编译流程
  • 了解 Linux 内核启动流程
  • 移植官方提供的 Linux 内核到 IMX 开发板上
  • 了解根文件系统的组成以及如何构建根文件系统 rootfs
  • 使用 USB OTG 来烧写整个系统:

驱动开发篇:

  • 了解字符设备驱动开发
  • 使用老版驱动 API 函数编写 LED 驱动
  • 使用Linux内核推荐的新字符设备驱动API函数编写 LED 驱动
  • 了解 Linux 设备树
  • 基于设备树开发 LED 驱动
  • 学习借助 pinctrl 和 gpio 子系统来简化 GPIO 驱动开发,编写点灯程序
  • 上一节加强,驱动蜂鸣器
  • 学习多任务共享资源时的并发与竞争处理
  • 上一节加强,具体使用相关操作处理并发与竞争
  • 编写按键输入驱动,并且结合原子操作保护按键资源
  • 学习 Linux 内核提供的定时操作及其实现原理
  • 学习在 Linux 下使用中断
  • 学习一下阻塞和非阻塞 IO及如何在驱动程序中处理阻塞与非阻塞
  • 学习如何在驱动程序中进行异步通知
  • 学习一下 Linux 下的驱动分离与分层, 以及 platform 框架下的设备驱动该如何编写
  • 学习使用 Linux 自带的 LED 灯驱动(基于 platform 框架)
  • 学习编写无法分类的杂项驱动编写
  • 学习 Linux 内核中的 input 子系统处理输入事件
  • 学习 Linux 下驱动 LCD 屏幕
  • 学习 Linux 下驱动 RTC时钟
  • 学习 Linux 下 IIC 驱动框架
  • 学习 Linux 下 SPI 驱动框架
  • 学习 Linux 下 UART 驱动框架
  • 待更新

应用开发篇:

应用开发基础:

  • 了解文件IO基本操作:Linux应用开发:文件IO基础
  • 了解文件IO高级操作:Linux应用开发:文件IO进阶
  • 学习标准IO操作
  • 学习其他文件相关系统调用
  • 学习C库中常用的字符串处理函数
  • 学习使用 Linux 系统调用或C库函数获取系统信息
  • 学习 Linux 下信号的使用
  • 学习进程的基本操作
  • 学习进程间通信机制
  • 学习线程基本操作
  • 学习线程间的同步操作
  • 学习文件IO的高级操作

应用开发实战:

  • 点亮LED
  • 控制GPIO
  • 获取输入设备信息
  • Framebuffer帧缓冲设备应用编程(LCD使用)
  • PWM应用编程
  • 摄像头应用编程
  • 串口应用编程
  • 看门狗应用编程
  • IIC 应用编程
  • SPI 应用编程
  • CAN 应用编程

以上是关于Linux驱动开发学习路线规划的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux驱动程序开发学习路线?

linux驱动开发学习路线

Python学习路线规划

嵌入式驱动学习路线

嵌入式工程师学习路线

完整的嵌入式学习路线是怎样的?