前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >博主的学习计划

博主的学习计划

作者头像
Jasonangel
发布2023-08-22 13:52:05
3040
发布2023-08-22 13:52:05
举报

博主专注于 Android/Linux 外设驱动,学习计划如下:

1、学习 Linux 启动流程

学习 Linux 有两种路线:第一种是按照 Linux 启动流程,去梳理每个子系统。第二种是先把 Linux 所有用到的子系统学会,再组合起来。

博主选择第一种方式,知道自己在学什么东西,在系统什么阶段起作用。

其实就是沿着 /init/main.c 的 start_kernel 函数一路向下分析。

手把手教你分析 Linux 启动流程

手把手教你分析 Android 系统启动流程

Linux 内核启动流程之 start_kernel

Linux 内核入口分析

2、学习 GPIO 子系统

GPIO 是基础,Linux 下 GPIO 的使用和单片机还是有区别的。

主要学习 PIN 脚的硬件结构、Linux GPIO 子系统、pinctrl 子系统的实现和用法。

GPIO 八种工作模式详解

GPIO 软件框架

手把手教你使用 gpio 子系统 API

GPIO 视频教程

Linux 下的 gpio、gpiod

pinctrl 子系统深入分析

3、学习 Linux 中断子系统

中断也是常用的,主要是学习 ARM 的 GIC 中断控制器 spec,普通 EINT 中断的申请、使用,中断下半部和中断线程化处理等知识。

Linux 中断子系统(一):框架

Linux 中断子系统(二):GIC 中断控制器

Linux 中断子系统(三):中断处理知识点大全

手把手教你中断唤醒系统

4、设备树

学习 GPIO 子系统和中断子系统,都离不开设备树,都需要去修改设备树,基础的设备树教程较为简单,很容易上手。

5、学习 I2C 协议

主要学习 I2C spec 和 I2C driver ,并写 demo 与外设芯片通信,学会其通信原理、debug 方法。(包含 MIPI I3C 协议)

I2C spec 总结

I2C 子系统(六):I3C

I2C 子系统(七)

I2C 子系统(八)

I2C 子系统(九)

I2C 子系统(十)

I2C 子系统(十一):debug

十分钟带你搞懂 Linux I2C 软件架构

6、学习 SPI 协议

主要学习 SPI spec 和 SPI driver,并写 demo 与外设芯片通信,学会其通信原理、debug 方法。

SPI 子系统(一):SPI spec

SPI 子系统(二):SPI driver

7、学习 sensohub

Sensorhub:智能传感集线器,是一种基于低功耗 MCU 和轻量级 RTOS 操作系统之上的软硬件结合的解决方案,其主要功能是连接并处理来自各种传感器设备的数据。

诞生之初的目的主要是为了解决在移动设备端的功耗问题。比如希望手机主控休眠的时候,依旧可以获取传感器数据,MCU 的耗电比 SOC 小很多。

包含单片机、FreeRTOS、RISC-V 架构等知识。

ST 六轴传感器 LSM6DSO 使用记录

气压计 BMP280 使用记录

环境传感器 AP3216C 使用记录

磁力计 HMC5883L 使用记录

8、学习 headset 耳机检测

工作以后接手的第一个驱动就是 android 平台下耳机的插拔检测和按键检测。这部分涉及的硬件知识比较简单,但是软件上对中断的处理,软件检测的鲁棒性,都有比较高的要求,涉及到驱动开发中经常使用的中断申请,工作队列,tasklet,竟态和同步,linux input 子系统,android 键值映射等知识。

推荐一篇关于耳机检测的文章:

https://yunzhi.github.io/headset_knowledge

9、学习 uart

主要关于 uart spec,即传输协议规格。以及 Linux 的 tty 架构及 UART 驱动,可以参考前几天博主发的文章:

基于Linux的tty架构及UART驱动详解

10、学习 touch panel

所谓 TP 触摸屏驱动,其实就是【I2C/SPI + EINT 中断 + input 子系统 + 多点触控协议】。因此这里的关键点在于 Linux input 子系统和 Android input 子系统的学习。

input 子系统是一个非常 common 的子系统,很多模块都会用到,可以重点学习。

Linux input 子系统的资料很多,Android input 子系统推荐如下系列文章:

https://www.jianshu.com/p/5a879b7ad3b2

11、学习 Linux led 子系统

前几天博主发了一篇文章可以直接做参考:

Linux Led 子系统

12、学习 USB

USB:Universal Serial BUS(通用串行总线),是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB 接口支持设备的即插即用和热插拔功能。USB 发展到现在已经有 USB1.0/1.1/2.0/3.0/4.0 等多个版本。目前用的最多的就是 USB1.1 和USB2.0,USB3.0、USB4.0目前已经开始普及。

USB 是一个很大的模块,包括:USB spec、USB emulation、USB ADB、USB MTP、USB ACM、USB OTG、充电等协议,每一点都要研究很久才能搞懂。

一文带你了解 USB

USB 能连接多少设备?

USB 学习路线

USB 学习路线【详细版】

13、后续

后续会继续学习 keypad、马达、SD 卡、ADC、PWM 、IR、charging、gauge、RTC 等模块。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式Linux系统开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、学习 Linux 启动流程
  • 2、学习 GPIO 子系统
  • 3、学习 Linux 中断子系统
  • 4、设备树
  • 5、学习 I2C 协议
  • 6、学习 SPI 协议
  • 7、学习 sensohub
  • 8、学习 headset 耳机检测
  • 9、学习 uart
  • 10、学习 touch panel
  • 11、学习 Linux led 子系统
  • 12、学习 USB
  • 13、后续
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档