当前位置:网站首页>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,实操
无
边栏推荐
猜你喜欢
I have been in the software testing industry for nearly 20 years, let me talk to you about today's software testing
技术分享 | 接口自动化测试中如何对xml 格式做断言验证?
在软件测试行业近20年的我,再来和大家谈谈今日的软件测试
WAF WebShell Trojan free to kill
智能电视竞争白热化,利用小程序共建生态突围
Towards a General Purpose CNN for Long Range Dependencies in ND
redis的学习笔记
非关系型数据库MongoDB简介和部署
centos7安装mysql5.7
浅读一下dotenv的主干逻辑的源码
随机推荐
B站回应“HR 称核心用户都是 Loser”:该面试官去年底已被劝退,会吸取教训加强管理
centos7安装mysql5.7步骤(图解版)
H5网页播放器EasyPlayer.js播放器界面的加载效果无法消失是什么原因?
思源笔记 本地存储无使用第三方同步盘,突然打不开文件。
qt静态编译出现Project ERROR: Library ‘odbc‘ is not defined
微信小程序(一)
CAS:474922-22-0,DSPE-PEG-MAL,磷脂-聚乙二醇-马来酰亚胺科研试剂供应
Kubernetes 进阶训练营 网络
采用QT进行OpenGL开发(三)着色器编程
IDO代币预售合约系统开发技术详细
别再用Field注入了
最新真实软件测试面试题分享,收藏了还怕进入不了大厂?
In-depth study TypeScript TypeScript 】 【 class (under)
万物智联时代,悄然走入生活
辅助脚本开发之旅
Nlog自定义时间
CAS:1445723-73-8,DSPE-PEG-NHS,磷脂-聚乙二醇-活性酯两亲性脂质PEG共轭物
Auto.js实现朋友圈自动点赞
MySQL最大建议行数2000w, 靠谱吗?
resubmit 渐进式防重复提交框架简介