页面加载中,请稍候
来源:嵌入式Linux系统开发发布时间:2023-05-102035浏览
询问 AI博主专注于 Android/Linux 外设驱动,学习计划如下:
1、学习 Linux 启动流程学习 Linux 有两种路线:第一种是按照 Linux 启动流程,去梳理每个子系统。第二种是先把 Linux 所有用到的子系统学会,再组合起来。
博主选择第一种方式,知道自己在学什么东西,在系统什么阶段起作用。
其实就是沿着 /init/main.c 的 start_kernel 函数一路向下分析。
2、学习 GPIO 子系统GPIO 是基础,Linux 下 GPIO 的使用和单片机还是有区别的。
主要学习 PIN 脚的硬件结构、Linux GPIO 子系统、pinctrl 子系统的实现和用法。
3、学习 Linux 中断子系统中断也是常用的,主要是学习 ARM 的 GIC 中断控制器 spec,普通 EINT 中断的申请、使用,中断下半部和中断线程化处理等知识。
4、设备树学习 GPIO 子系统和中断子系统,都离不开设备树,都需要去修改设备树,基础的设备树教程较为简单,很容易上手。
5、学习 I2C 协议主要学习 I2C spec 和 I2C driver ,并写 demo 与外设芯片通信,学会其通信原理、debug 方法。(包含 MIPI I3C 协议)
6、学习 SPI 协议主要学习 SPI spec 和 SPI driver,并写 demo 与外设芯片通信,学会其通信原理、debug 方法。
7、学习 sensohubSensorhub:智能传感集线器,是一种基于低功耗 MCU 和轻量级 RTOS 操作系统之上的软硬件结合的解决方案,其主要功能是连接并处理来自各种传感器设备的数据。
诞生之初的目的主要是为了解决在移动设备端的功耗问题。比如希望手机主控休眠的时候,依旧可以获取传感器数据,MCU 的耗电比 SOC 小很多。
包含单片机、FreeRTOS、RISC-V 架构等知识。
8、学习 headset 耳机检测工作以后接手的第一个驱动就是 android 平台下耳机的插拔检测和按键检测。这部分涉及的硬件知识比较简单,但是软件上对中断的处理,软件检测的鲁棒性,都有比较高的要求,涉及到驱动开发中经常使用的中断申请,工作队列,tasklet,竟态和同步,linux input 子系统,android 键值映射等知识。
推荐一篇关于耳机检测的文章:
https://yunzhi.github.io/headset_knowledge
9、学习 uart主要关于 uart spec,即传输协议规格。以及 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 子系统前几天博主发了一篇文章可以直接做参考:
12、学习 USBUSB: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、充电等协议,每一点都要研究很久才能搞懂。
13、后续后续会继续学习 keypad、马达、SD 卡、ADC、PWM 、IR、charging、gauge、RTC 等模块。
新闻来源:嵌入式Linux系统开发,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!

2026-06-08

2026-06-23
4 天前