- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 【中断】【ARM64】学习总结
从arm手册可以看出,异常向量表在EL1~EL3都有,本文只涉及Linux kernel中的实现,即只涉及EL1和EL0。
2024-05-02 10:29:17
460
转载 【转载】【ARMv8 编程】A64 数据处理指令——移动&比较指令
移动指令主要为 MOV 以及它的各种“变体”,而比较指令主要用来进行比较并更新条件标志,用来实现条件判断等。指令类型 指令移动 MOV、MVN、MOVK、MOVZ、MOVN比较 CMP、CMN、TST一、移动指令1.1 MOVMOV (to/from SP)在寄存器和堆栈指针之间移动:Rd = Rn。该指令是 ADD(立即数)指令的别名。在这里插入图片描述32-bit (sf == 0)MOV <Wd|WSP>, <Wn|WSP>等价指令ADD <Wd|WSP>, &l
2023-09-14 15:48:04
839
原创 【Linux kernel/cpufreq】framework ----big Little driver
一般ARM SOC包含能效和性能两个cluster,共8个 core,可以把这8个core统统开放给kernel,让kernel的调度器(scheduler)根据系统的实际情况,决定哪些任务应该在哪些core上执行。。
2022-11-25 21:45:36
999
原创 【Linux kernel/cpufreq】framework ----cpufreq governor
基于linux模块化的设计,早期的governor基本都是对CPU的使用率进行定时采样检查,然后根据使用率的情况调整CPU频率。
2022-11-01 21:33:16
1730
原创 【Linux kernel/cpufreq】framework ----cpufreq core
当CPU device和CPU driver匹配时,bus core会调用subsys interface的add_dev回调函数,相当于为该特定功能添加一个“device”,进而和该特定功能的“driver”(这里为cpufreq driver)匹配,执行driver的初始化(probe,或者其它)接口。对于不能自动调频的CPU core,必须由软件设定具体的频率值。init,driver的入口,由cpufreq core在设备枚举的时候调用,driver需要根据硬件情况,填充policy的内容。
2022-10-28 22:36:52
960
原创 【Linux kernel/cpufreq】framework ----初识
对CPU core来说,功耗和性能是一对不可调和的矛盾,通过调整CPU的电压和频率,可以在功耗和性能之间找一个平衡点。这种实现,软件复杂度非常低,通常情况下,只需要告诉CPU core电压和频率的调整范围(通过频率表示,scaling_min_freq和scaling_max_freq,也称作policy),CPU core即可自行调整。关键点2,OS需要根据大致的应用场景(例如,是高性能场景,还是低性能场景),设定一个频率范围,改变时机,由CPU core自行决定。
2022-10-27 21:11:30
1022
原创 【Linux kernel/CPU idle】CPU Idle ----menu governor
Linux kernel的framework有两种比较固定的抽象模式:模式1,provider/consumer模式,interrupt、clock、timer、regulator等大多数的framework是这种模式。它的特点是,这个硬件模块是为其它一个或多个模块服务的,因而framework需要从对上(consumer)和对下(provider)两个角度进行软件抽象;模式2,driver/governor模式,本文所描述的cpuidle framework即是这种模式。
2022-10-26 18:50:47
1310
原创 【Linux kernel/CPU idle】CPU Idle ----framework
当cpu没有执行任务的时候,系统是如何管理cpu的?如果没有运行任务直接对cpu下电,确实做到低功耗了,但会导致下次跑任务,CPU启动太慢会导致性能太拉跨。
2022-10-25 21:51:24
2177
原创 【Linux kernel/CPU idle】CPU Idle 初探
idle 进程是当系统没有调度 CPU 资源的时候,会进入 idle 进程,而 idle 进程的作用就是不使用 CPU,以此达到省电的目的。
2022-10-24 22:09:34
1369
原创 【C语言基础】GNU C 关键字__attribute__用法
GNU C 编译器用于声明函数、变量或类型属性的关键字__attribute__ ((ATTRIBUTE))用法总结
2022-10-20 22:42:28
2462
原创 【Linux】【驱动】【USB学习】
Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结Linux USB 驱动开发(一)—— USB设备基础概念
2022-04-14 07:32:06
833
原创 【Linux】【Spinlock学习总结】
Linux内核同步机制之(四):spin lockLinux 内核同步(二):自旋锁(Spinlock)handler原子锁_Linux的原子操作与同步机制下面展示一些 内联代码片。// A code blockvar foo = 'bar';// An highlighted blockvar foo = 'bar';arm原子操作实现在arm的指令集中,不存在指令前缀lock,那如何完成原子操作呢?Linux的源码中arm体系结构原子操作的定义文件为。linux2.6/incl
2022-04-14 07:25:03
363
1
原创 arm cp15/MIPS c0协处理器学习总结
摘抄自:鸿蒙轻内核源码分析:MMU 协处理器鸿蒙内核源码中C7,C2,C13三个寄存器协处理器CP15介绍—MCR/MRC指令(6)
2022-01-04 10:44:22
259
原创 CPU cache学习总结
内存的类型:SRAM和DRAMSRAM:基本电路单元是双稳态电路,6个晶体管实现,die面积大、成本高、;延时极小(门级延时),纯逻辑工艺方便集成到芯片内部。DRAM:基本电路单元是单稳态电路,1个晶体管+1电容,die面积小、成本低;延时大,工艺复杂很难集成到芯片内存。Cache要求访问速度快,所以Cache的存储单元通常是SRAM。因为单位SRAM消耗的die面积较大,现在CPU L1/L2 Cache很难做得太大。Intel现在一般CPU L2 Cache是2MB?问题:现在CPU顺便都是多
2022-01-04 10:36:15
875
原创 【Binder学习】
Android Binder: link.Android Bander设计与实现 - 设计篇: link.Android - Binder 进程间通讯: link.
2021-12-09 00:04:32
1467
原创 window10上vscode连接Ubuntu服务器问题解决过程
2021年11月6日今天在window10上vscode连接Ubuntu,发现连接不上。遇到如下两个问题。1.win10 VScode远程连接服务器时出现an SSH installation couldn’t be found解决过程:首先发现window上没有安装ssh,安装后依然报该问题。打开vscode的setting.json,加入“remote.SSH.path”: “C:\Program Files\OpenSSH\ssh.exe”注意后面应为你自己的ssh安装路径参考wiki:
2021-11-06 22:08:36
716
原创 vscode连接远程服务器显示could not establish connect,解决步骤
vscode连接远程服务器显示could not establish connect,解决步骤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器首先在Window
2021-02-28 01:55:00
7989
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人