首页
学习
活动
专区
工具
TVP
发布

linux驱动个人学习

专栏作者
698
文章
1317424
阅读量
180
订阅数
linux cpufreq framework(5)_ARM big Little driver
也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中?
233333
2023-05-03
7180
Linux内核调试技术——kprobe使用与实现
Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术。利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程。kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。本文首先简单描述这3种探测技术的原理与区别,然后主要围绕其中的kprobe技术进行分析并给出一个简单的实例介绍如何利用kprobe进行内核函数探测,最后分析kprobe的实现过程(jprobe和kretprobe会在后续的博文中进行分析)。
233333
2021-09-08
5.4K0
Linux之设备树解耦架构解读-V1.0
Dts:DTS即Device Tree Source,是一个文本形式的文件,用于描述硬件信息。一般都是固定信息,无法变更,无法overlay。
233333
2021-08-18
1.3K0
android功耗优化(2)--对齐唤醒
Android手机上安装的很多应用都会频繁唤醒手机(唤醒系统、唤醒屏幕),造成手机耗电等现象。良好的对齐唤醒管理方案,就是对后台应用待机时不频繁唤醒,智能节省电量。
233333
2020-09-08
9010
vmalloc函数
kmalloc、vmalloc和malloc这三个常用的API函数具有相当的分量,三者看上去很相似,但在实现上大有讲究。kmalloc基于slab分配器,slab缓冲区建立在一个连续的物理地址的大块内存之上,所以缓冲对象也是物理地址连续的。如果在内核中不需要连续的物理地址,而仅仅需要内核空间里连续的虚拟地址的内存块,该如何处理呢?这时vmalloc()就派上用场了。
233333
2020-07-07
1.1K0
ARM64内核内存布局图
ARM64架构处理器采用48位物理寻址机制,最大可以寻找到256TB的物理地址空间。对于目前的应用来说已经足够了,不需要扩展到64位的物理地址寻址。虚拟地址也同样最大支持48位支持,所以在处理器的架构设计上,把虚拟地址空间划分为两个空间,每个空间最大支持256TB。Linux内核在大多数体系结构中都把两个地址空间划分为用户空间和内核空间。
233333
2020-05-18
2.4K0
ARM32 内核内存布局
Linux内核在启动时会打印出内核内存空间的布局图,下面是ARM Vexpress平台打印出来的内存空间布局图:
233333
2020-05-18
1.5K0
ARM32 页表映射
在32bit中的Linux内核中一般采用3层映射模型,第1层是页面目录(PGD),第2层是页面中间目录(PMD),第3层才是页面映射表(PTE)。但在ARM32系统中只用到两层映射,因此在实际代码中就要3层映射模型中合并一层。在ARM32架构中,可以按段(section)来映射,这时采用单层映射模式。使用页面映射需要两层映射结构,页面的选择可以是64KB的大页面或4KB的小页面,如图2.4所示。Linux内核通常使用4KB大小的小页面。
233333
2020-05-09
2.8K0
展讯平台uboot启动流程
start.S代码结构 u-boot的stage1代码通常放在start.S文件中,用汇编语言,主要实现功能如下:
233333
2020-02-12
1.1K0
海思uboot启动流程详细分析
介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行)。
233333
2019-05-25
3.5K0
海思uboot启动流程详细分析(二)
从start_armboot开始,在startup.c中有包含#include <config.h>
233333
2019-05-25
2.3K0
海思uboot启动流程详细分析(一)
首先我们可以在u-boot.lds中看到ENTRY(_start),即指定了入口_start,_start也就是整个start.S的最开始;
233333
2019-05-25
2.6K0
ARMV8体系结构简介
本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。包含如下的内容:
233333
2019-05-25
1.3K0
local_irq_disable和disable_irq的区别
local_irq_disable的功能是屏蔽当前CPU上的所有中断,通过操作arm核心中的寄存器来屏蔽到达CPU上的中断,此时中断控制器中所有送往该CPU上的中断信号都将被忽略。
233333
2019-05-25
1.5K0
Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】
在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给Camera,HDMI等设备。下面分析它的基本代码流程。
233333
2018-12-28
3.5K0
高通msm8909耳机调试
1、DTS相应修改: DTS相关代码:kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi: 1 sound { 2 compatible = "qcom,msm8x16-audio-codec"; 3 qcom,model = "msm8909-skuc-snd-card"; 4 qcom,msm-snd-card-id = <0>; 5 qcom,msm-codec-typ
233333
2018-03-07
3.7K0
uboot中 make xxx_config 的作用(以make smdk2410_config为例)
1、创建到目标板相关文件的链接 ln -s asm-arm asm ln -s arch-s3c24x0 asm-arm/arch ln -s proc-armv asm-arm/proc 2、创建include/config.mk文件,内容如下: ARM = arm CPU = arm920t BOARD = smdk2410 VENDOR = samsung SOC = s3c24x0 3、创建与目标板相关的头文件include/config.h 内容如下: #include <configs/smdk
233333
2018-03-07
7620
分析uboot中 make xxx_config过程
make xxx_config实质上就是调用了 首先看MKCONFIG: 【注意】SRCTREE=源文件下的目录 之后的语句: @$(MKCONFIG) $(@:_config=) arm arm92
233333
2018-03-07
1.1K0
ARM中断处理过程
以s3c2440  ARM9核为例: 一:s3c2440 ARM处理器特性:   1、S3C2440支持60个中断源,含子中断源;   2、ARM9采用五级流水线方式;    3、支持外部中断和内部中断; 二、s3c2440 支持的寄存器: 2.1 外部中断寄存器             24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体可参考datesheet数据手册。 寄存器:  
233333
2018-03-07
1.6K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档