摘要:
1. 前言 在计算机系统中,CPU的功能是执行程序,总结起来就是我们在教科书上学到的:取指、译码、执行。那么问题来了,如果没有程序要执行,CPU要怎么办?也许您会说,停掉就是了啊。确实,是要停掉,但何时停、怎么停,却要仔细斟酌,因为实际的软硬件环境是非常复杂的。 我们回到Linux kernel上, 阅读全文
摘要:
您可以使用设备树编译器 (DTC) 编译设备树源文件。不过,在将叠加层 DT 应用于目标主 DT 之前,您还应该通过模拟 DTO 的行为来验证结果。 1. 通过DTC进行编译 构建主 DT .dts 的示例命令: dtc -@ -O dtb -o my_main_dt.dtb my_main_dt. 阅读全文
摘要:
设备树源 (DTS,device tree source) 格式是设备树的文本表示形式。设备树编译器 (DTC) 可将这种格式处理为二进制设备树,这是 Linux 内核要求的形式。 1. 使用引用 DTC(Device Tree compiler + overlay patches)项目在 dtc- 阅读全文
摘要:
设备树 (DT, Device Tree) 是用于描述 non-discoverable(google这样写的,意思应该就是硬件信息看不到) 硬件的命名节点和属性构成的一种数据结构。操作系统(例如在 Android 中使用的 Linux 内核)会使用 DT 来支持 Android 设备使用的各种硬件 阅读全文
摘要:
本章的我们来学习uprobe ,顾名思义,相对于内核函数/地址的监控,主要用于用户态函数/地址的监控。听起来是不是有点神奇,内核怎么监控用户态函数的调用呢?本章的内容包括: 如何使用uprobe 内核是如何通过uprobe监控用户态的调用,其原理是如何的 1 如何使用uprobe 站在用户视角,我们 阅读全文
摘要:
1. 前言 也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中? 众所周知,ARM的big·Little架构,也称作HMP(具体可参考“Linux CPU core的电源管理(2)_cpu topology”中相关的介绍),通过在一个 阅读全文
摘要:
考虑到文章篇幅,在这里我只讨论普通进程,其调度算法采用的是CFS(完全公平)调度算法。 至于CFS调度算法的实现后面后专门写一篇文章,这里只要记住调度时选择一个优先级最高的任务执行 一、调度单位简介 1.1 task_struct 结构体简介 对于Linux内核来说,调度的基本单位是任务,用 str 阅读全文
摘要:
1. 前言 前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入到clock framework的内部,分 阅读全文
摘要:
1. 前言 本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。 由于kernel称clock driver为clock provider(相应的,clock的使用者为clo 阅读全文
摘要:
1. 前言 common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分: 1)向其它driver提供操作clocks的通用API。 2)实现clock控制的通用逻辑,这部分和硬件无关。 3)将和硬件相关的clock控制逻辑封装成操作函数集,交由底层的p 阅读全文