当前位置:网站首页>21天学习挑战赛(1)设备树的由来
21天学习挑战赛(1)设备树的由来
2022-08-02 22:39:00 【小辉_Super】
活动地址:CSDN21天学习挑战赛
以前也接触过 Linux 的内核,主要就是编写一些小的驱动,调试一些模块,但没有真正地去研究过内核底层,因为底层已经由芯片厂商整理好,无需我去调试。现在趁着这个 21 天学习挑战赛,我打算认真学习一下 Linux 内核的一些基本知识,说不定以后能用上。
学习计划
1,学习目标
- 内核设备树学习:掌握内核硬件 HW 配置
- 内核调试技巧学习:掌握内核的调试手段
- 内核驱动子系统学习:掌握 I2C、SPI 等总线子系统驱动
2,学习内容
8 月 1 日 至 8 月 7 日:
- 设备树的由来
- 图解设备树的使用
- 设备树二进制文件(DTB)解析
- 设备树 dtb 信息转化为 device_node 结构
- DTS 架构下 Device 与 Driver 匹配流程
- 内核对设备树的处理
- 设备树的解析 of 函数介绍
- DTB 的基本调试方法
- 内核启动阶段获得 dtb 位置指针过程介绍
8 月 8 日 至 8 月 14 日:
- 如何使用 dynamic debug 动态打印调试
- 如何使用 dump_stack 分析函数调用关系
- 休眠唤醒 standby 调试指南
- 如何创建一个 proc 节点提供上层 app 调试使用
- devmem 直接读写寄存器进行调试
- Linux Kernel Printk
- 利用 debugfs 调试
8 月 15 日 至 8 月 21 日
- GPIO 子系统
- Pinctrl 子系统详解
- SPI 子系统
- I2C 子系统
- UART 子系统
- Input 子系统
4,学习产出
每天一篇打卡笔记
学习日记
1,学习知识点
设备树的由来
Linux 之父 Linus 认为 内核中 arch 目录下 ARM 的代码太多,每次 merge ARM 平台的代码变化占到了整个 ARCH 目录的 60%,讨论后,确定的问题如下:
- ARM Linux 缺少 platform 之间的协调(各个 SOC 之间的统一),导致 ARM Linux 的代码有重复。
- ARM Linux 中大量的 board specific 的源代码应该被提出 Kernel,否则这些垃圾代码和 table 会影响 Linux Kernel 的长期目标。
- 各个 sub architecture 的维护者直接提交接给 Linux 并入主线的机制缺乏层次。
解决办法:
- ARM 的核心代码依然保存在 arch/arm 目录下
- ARM SOC core architecture code 保存在 arch/arm 目录下
- ARM SOC 的周边外设模块的驱动保存在 driver 目录下
- ARM SOC 的特定代码在 arch/arm/mach-xxx 目录下
- ARM SOC board specific 的代码被移除,由 Device Tree 机制来负责传递硬件拓扑和硬件资源信息。
在使用设备树之前,HW 配置信息都需要嵌入到内核中,现在改用设备树,只需要在 bootloader 运行时传递 DB 形式的文件,在系统启动阶段,bootloader 会加载内核并将控制权交给内核。设备树的信息应该包括:
- 识别 platform 的信息
- runtime 的配置参数
- 设备的拓扑结构以及特性
2,学习遇到的问题
无
3,学习的收获
知道了设备树的由来及为什么取消板级支持包
4,实操
无
边栏推荐
猜你喜欢
Software testing pen questions 1 (with answers)
Controller层代码这么写,简洁又优雅!
同一份数据,Redis为什么要存两次?
markdown语法
Task 4 Machine Learning Library Scikit-learn
程序员如何优雅地解决线上问题?
Technology Sharing | How to do assertion verification for xml format in interface automation testing?
00 -- jieba分词
TDengine 在中天钢铁 GPS、 AIS 调度中的落地
图像识别从零写出dnf脚本关键要点
随机推荐
Token、Redis实现单点登录
学习基因富集工具DAVID(2)
雷克萨斯lm的安全性如何?
Go语言如何操作文件
基于奇异谱分析法和长短时记忆网络组合模型的滑坡位移预测
CAS:1445723-73-8,DSPE-PEG-NHS,磷脂-聚乙二醇-活性酯两亲性脂质PEG共轭物
Technology Sharing | How to do assertion verification for xml format in interface automation testing?
IDO预售代币合约系统开发技术说明及源码分析
TDengine 在中天钢铁 GPS、 AIS 调度中的落地
airflow db init 报错
学习Autodock分子对接
vscode 自定义快捷键——设置eslint
CKA、CKAD、CKS、KCNA、CFCD考试
MySQL 用id分库使用name查询
APT级全面免杀拿Shell
redis的学习笔记
IDO代币预售合约系统开发技术详细
你离「TDengine 开发者大会」只差一条 SQL 语句!
一个很少见但很有用的SQL功能
2022暑假牛客多校1 (A/G/D/I)