- 博客(14)
- 资源 (2)
- 收藏
- 关注
转载 Linux内核同步机制之Per-CPU变量
本文转自http://www.wowotech.net/kernel_synchronization/per-cpu.html。蜗窝出品,必属精品。一、源由:为何引入 Per-CPU 变量?1、lock bus 带来的性能问题 在 ARM 平台上,ARMv6 之前,SWP 和 SWPB 指令被用来支持对 shared memory 的访问:SWP <Rt>, <Rt2>, [<Rn>]Rn 中保存了 SWP 指令要操作的内存地址,通过...
2021-05-15 13:35:29
956
转载 编译乱序(Compiler Reordering)
本文转自http://www.wowotech.net/kernel_synchronization/453.html。蜗窝出品,必属精品。编译器(compiler)的工作就是优化我们的代码以提高性能。这包括在不改变程序行为的情况下重新排列指令。因为 compiler 不知道什么样的代码需要线程安全(thread-safe),所以compiler假设我们的代码都是单线程执行(single-threaded),并且进行指令重排优化并保证是单线程安全的。因此,当你不需要 compiler 重新排序指令的时.
2021-01-31 17:49:20
434
转载 Linux内核同步机制之原子操作
本文转自http://www.wowotech.net/linux_kenrel/atomic.html,在作者原文基础上(黑体),加入自己的阅读理解(红色字体),形成学习笔记并记录于此。蜗窝科技,如果你是一位 Linux 驱动开发工程师,那么强烈建议把它加到你的收藏夹,干货实在是太多。一、源由 我们的程序逻辑经常遇到这样的操作序列:1、读一个位于 memory 中的变量的值到寄存器中2、修改该变量的值(也就是修改寄存器中的值)3、将寄存器中的数值写回 mem...
2020-08-30 22:02:25
660
原创 Linux Thermal机制源码分析之Thermal zone
一、of_parse_thermal_zones() 接着上一节的代码流程,of_parse_thermal_zones() 这个函数粉墨登场,可以说读懂了这个函数,Thermal框架就明白了一大半。那这个函数是干什么用的呢?做了些什么事情呢?函数体有点长,我们拆分来解析:/** * of_parse_thermal_zones - parse device tree thermal data * * Initialization function that can be cal...
2020-05-31 21:39:13
3778
原创 Linux Thermal机制源码分析之Governor
在开始源码分析之前,需要先说明一下。Linux 内核代码庞大而复杂,如何 reading the Fxxk source code 相信是很多从事Linux 内核/驱动开发人员非常关注也一直苦恼的事情,尤其是初涉内核开发的同行。本文在剖析 Thermal 机制的同时,也试图向读者展示作者如何来分析内核源码,以期读者可以借鉴一二。当然,由于本人能力有限,如果有错误的地方还请读者朋友不...
2020-05-05 12:56:16
1747
1
转载 ARM AMBA总线介绍
转自:https://blog.csdn.net/u013246792/article/details/79840729一、AMBA 简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字 IC 从基于时序驱动的设计方法,发展到基于 IP 复用的设计方法,并在 SoC 设计中得到了广泛应用。在基于 IP 复用的 SoC 设计中,片上总线设计是最关键的问题。为...
2020-05-03 22:22:30
1071
原创 Linux Thermal机制源码分析之框架概述
Thermal,中文意思是热的、保暖的。在 Linux 内核中,Thermal 特指一套关于温控机制的驱动框架,其目的是为了防止 SoC 等硬件芯片因过热而造成系统不稳定,甚至缩减芯片寿命。 Thermal 框架是在软件层面上对自然界散热系统的抽象。试想一下空调的工作机制,假设场景是夏天,室内温度 35 度,用户设定目标温度 25 度。对房间降温首先得知道房间里当前温...
2020-05-03 19:20:05
4533
转载 Windows与虚拟机的Linux共享一个文件夹
转自:https://www.cnblogs.com/ericli-ericli/p/7238048.html最近刚换了电脑,想着装个 Ubuntu 的虚拟机,以方便后续调试和学习。以下操作步骤亲测有效,我的环境是 Win10 + VMware Ubuntu14.04。1、安装 VMware Tools,在 VMware 面板上选择 “虚拟机-重新安装VMware tools…”...
2019-06-16 10:59:37
133
原创 I2C协议和驱动框架分析(二)
二、I2C驱动框架浅析1. I2C驱动框架概述 上一节主要介绍了协议和具体的 I2C 读写操作,本节开始介绍 Linux 内核下的 I2C 驱动框架。代码分析基于 RK3399 Android 7.1 平台,kernel 版本是 4.4.126。下图是之前在网上找到的 Linux 下整个 I2C 子系统的软件框架图,出处已无从证实,借此引用,如有侵权,请联系本人。在内...
2019-06-02 15:38:00
1368
原创 I2C协议和驱动框架分析(一)
一、I2C协议及硬件原理1. I2C总线协议1.1 概念 I2C(Inter-Integrated Circuit)总线是由 Philips 公司开发的两线式串行总线,这两根线分别为时钟线(SCL)和双向数据线 (SDA)。I2C 在标准模式下传输速率最高 100K bits/s,在快速模式下最高可达 400K bits/s,高速模式下位速率高达 3.4M bits/s。...
2019-06-02 11:27:49
610
原创 C语言易错点汇总(二)
三、关键字 我们都知道ANSI C标准中 C 语言共有 32 个关键字。后面 ISO 的 C99 标准和 C11 标准又分别增加了 5 个和 7 个关键字。本文无意介绍各个标准之间的恩恩怨怨,感兴趣的可以上网查查,包括后面新增的这 12 个关键字。本节将集中介绍ANSI C标准中的 32 个关键字,不过有些简单或是出现频率较低的关键字将略掉不提。先来和这个 32 个关键字打...
2019-04-15 20:20:06
4010
原创 C语言易错点汇总(一)
一、热身运动 熟悉 Linux 操作系统的朋友都知道,差不多 95% 以上的 Linux 内核代码都是用 C 完成的。对于混迹于 Linux 内核(驱动)的软件开发人员来说,C 的重要性不言而喻。如果把操作系统中的进程管理和文件系统比作屠龙刀倚天剑,那么 C 就是九阳神功,只有内功扎实了,我们才有可能一窥内核中各大子系统的源码级实现原理。所以对于 C 的学习再怎么强调其重要性都不为...
2019-04-14 17:57:51
1373
C陷阱与缺陷
2019-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人