自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Peter的专栏

嵌入式人工智能,物联网,边缘计算,自动驾驶,机器人等专业技术分享和交流平台。

  • 博客(853)
  • 资源 (5)
  • 收藏
  • 关注

转载 Linux 电源管理子系统

Linux 在消费电子领域的应用已经相当普遍,而对于消费电子产品而言,省电是一个重要的议题。Linux 电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对系统待机的支持和每个设备的运行时(Runtime)电源管理,可以说它和系统中的每个设备驱动都息息相关。对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,下图呈现了 Lin...

2022-10-03 12:42:01 10

转载 Linux 性能分析工具汇总

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux 大牛,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性...

2022-09-29 08:40:55 7

原创 链接加载原理及ELF文件格式

作者简介:伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享。原理概述为什么要研究链接和加载?写一个小的main函数用户态程序,或者是一个小的内核态驱动ko,都非常简单。但是这一切都是在gcc和linux内核的封装之上,你只是实现了别人提供的一个接口,至于程序怎样启动、怎样运行、怎样实现这些机制你都一无所知。接着你会对程序出现的一...

2022-09-23 08:18:20 10

转载 万字整理 | 深入理解Linux电源管理

作者简介:程磊,在某手机公司担任系统开发工程师,最大的爱好是钻研Linux内核基本原理。目录:一、电源管理框架 1.1 电源状态管理 1.2 省电管理 1.3 电源管理质量二、睡眠与休眠 2.1 冻结进程 2.2 睡眠流程 2.3 休眠流程 2.4 自动睡眠三、关机与重启 3.1 用户空间处理 3.2 内核处...

2022-09-22 08:40:40 18

原创 为什么mmap之后访问地址仍然发生了缺页异常?

作者简介:viho he,ARM64专家,现供职于某芯片公司,专注于Linux内核、BSP、ARM64虚拟化以及与ARM64 SoC相关的各种底软技术问题简述在笔者的开发平台上,应用程序使用ION申请cma内存,并用mmap映射到用户地址空间去做写操作。重点代码摘要如下:客户希望提高node->var = some_value;这里的访问效率(实际代码要复杂些,是申请了一个大数组并往里循环读...

2022-09-21 08:18:03 20

转载 FreeRTOS 任务简介

一、FreeRTOS用途FreeRTOS一般被用于硬件设计上RAM大小存在一定限制(成本、资源、性能功耗比等)的平台之中,它是目前运用的比较多的实时操作系统之一。选用FreeRTOS作为项目应用一般从以下几方面考虑:实时性(时间约束):与多数的RTOS一样,每个时钟节拍,就绪的高优先级任务会抢占CPU(FreeRTOS是一个实时调度器,项目在此内核基础上构建满足硬实时的应用)。确定性(可预测):规...

2022-09-19 08:18:21 11

原创 FreeRTOS学习笔记 | 基础知识体系梳理

我发现学习 RTOS 是学习 Linux 内核的好方法。大有弯道超车的可能。1. 任务堆栈1.1 任务栈大小确定1.2 栈溢出检测机制2. 任务状态3. 任务优先级3.1任务优先级说明3.2 任务优先级分配方案3.3 任务优先级与终端优先级的区别4. 任务调度4.1 调度器5. 临界区、锁与系统时间5.1 临界区与开关中断5.2 锁5.3 FreeRTOS 系统时钟节拍和时间管理一、 单任务系统(...

2022-09-18 16:51:15 91

原创 一文搞懂显示技术的底层框架

1. DPU与GPU的耦合是历史产物,完全可以独立出来2. DPU的原型设计2.1【DPU的四大组成部分】2.2【KSM与DPU】3. DPU的最新设计3.1【Source Suface Pipes or Overlays】3.2【Blender】3.3【Destination surface post-processor】3.4【Display Interface】4. 总结PC上DPU是嵌入在...

2022-09-09 08:18:32 910

原创 这是我平时看的技术视频总结!

现在网上的学习资料是真的丰富,我上大学时除了图书馆借书看之外很难看到自己想看的知识,羡慕现在的大学生可以在网上搜到海量的学习资料,甚至可以去听清华北大等名校教授的课程,这对自己的职业发展是非常有好处的。我记得刚毕业的时候做嵌入式linux开发,市面上只能看韦东山和宋宝华等老师的书籍,遇到不理解的知识也很难找到人一起讨论,更不要说现在微信群里小伙伴们的学习。现在只要你想学习某方面的知识,除了各种网站...

2022-09-07 08:18:39 35

原创 万字整理 | systrace的实现

作者简介:伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享,个人微博CSDN pwl999。上图基本就能说清systrace的整个框架:1、systrace调用atrace抓取目标机的trace数据;2、systrace把trace数据和'prefix.html'、'suffix.html'、'systrace_trace_vi...

2022-09-05 08:23:30 23

原创 内存管理专栏 | 之内存管理架构

一、内存管理架构二、虚拟地址空间布局架构三、物理内存体系架构四、内存结构五、内存模型六、虚拟地址和物理地址的转换七、内存映射原理分析一、内存管理架构内存管理子系统架构可以分为:用户空间、内核空间及硬件部分3个层面,具体结构如下所示:1、用户空间:应用程序使用malloc()申请内存资源/free()释放内存资源。2、内核空间:内核总是驻留在内存中,是操作系统的一部分。内核空间为内核保留,不允许应用...

2022-09-02 08:18:15 94 1

原创 文件系统专栏 | 之文件系统挂载

ext4文件系统挂载大家可以使用以下命令挂载一个u盘到 /mnt目录下:mount-text4/dev/sda1/mnt其中mount这个应用程序就是使用了mount函数进行系统调用,其系统调用为:SYSCALL_DEFINE5(mount,char__user*,dev_name,char__user*,dir_name,char__user*,type,...

2022-08-31 08:18:56 55

转载 芯片制作 | 和我一起来卷芯片

如果想把程序员当作长期职业,那我们就需要考虑:在哪些方面的努力是更有效率的,最终大家一致同意:搞好基础知识才是王道!任你技术风向怎么变,底层的理论依然还是操作系统、编译原理、计算机网络等东西。关注我公号的朋友大体了解,平时主要输出操作系统相关的内容,随着网络上操作系统学习资源的丰富,越来越多的人了解操作系统,但芯片和操作系统结合的内容缺很少,这也是我经常提及的软硬件融合是核心竞争力的说法。如果你和...

2022-08-28 20:14:50 30

原创 文件系统专栏 | 之文件系统架构

文件系统层次分析由上而下主要分为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层用户层:最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。VFS层:我们知道Linux分为用户态和内核态,用户态请求硬件资源需要调用System Call通过内核态去实现。用户的这些文件相关操作都有对应的System Call函数接口,接口调用 VFS...

2022-08-26 08:18:42 60

原创 内核启动时为什么要做线性映射?

作者简介:周文嘉: 曾服务于ARM、阿里系子公司、HTC等公司。10年以上工作经验,主要从事系统软件开发,涵盖:系统库开发、指令集优化、Linux内核开发等。累计为某些开源社贡献过一定数量的patch。在 Linux 内核启动之后,对于 32 位的系统来说,他会把 0 ~ 896M 这部分低端内存(low memory)都做线性映射,不管这部分内存是否需要用到。对于 64 位的系统,内核会把所有的...

2022-08-25 08:18:29 53

转载 一个打通软硬件的极好资源

大家好,我是 Peter!今天宣布一个好消息。很荣幸和大佬们一起合写了本书《计算机系统开发与优化实战》,最近就要上市了。本书首先介绍通用处理器的架构,以及汇编和编译的技术;然后讲解 Linux 内存管理、 Linux 进程管理,以及 GDB、 trace、 eBPF、 SystemTap 等 Linux 系统开发工具;接着通过视频编解码主流技术和 NVIDIA 计算平台 CUDA 等讨论人工智能技...

2022-08-22 08:32:10 33

原创 万字整理 | 深入理解工作队列

伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享,个人微博CSDN pwl999,欢迎大家关注!1.1 worker_pool1.1.1 normal worker_pool1.1.2 unbound worker_pool1.2 worker1.2.1 worker处理work1.2.2 worker_pool动态管理work...

2022-08-21 21:40:10 317

转载 一文搞懂 | ARM微架构的变化

一、引言伴随智能手机的高速发展,移动处理器架构设计厂商ARM公司几乎每年都更新CPU的核心架构。从2018至2020年,ARM公司基于ARMv8架构推出了三代Cortex-A76、Cortex-A77、Cortex-A78经典CPU核心架构。基于这几代CPU架构,芯片设计厂商也设计了多款性能优秀的处理器产品。本文从A76微架构开始学习,通过对比每一代的变化,让读者了解处理器微架构关键知识。下表给出...

2022-08-19 08:18:32 78

原创 万字整理 | 深入理解Linux时间子系统

作者简介:程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。一、时间概念解析1.1 时间使用的需求1.2 时间体系的要素1.3 时间的表示维度1.4 时钟与走时1.5 时间需求之间的关系二、时间子系统的硬件基础2.1 时钟硬件类型2.2 x86平台上的时钟2.3 ARM平台上的时钟三. 时间子系统的软件架构3.1 系统时钟的设计3.2 系统时钟的实现3.3 动态tick与定...

2022-08-15 08:18:40 282

转载 Linux内核性能剖析的方法学和主要工具

计算机科学的先驱Donald Knuth(高德纳)曾经说过:“过早的优化是万恶之源”,更详细的原文如下:“We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should no...

2022-08-11 08:48:49 46

转载 六万字 | 深入理解Linux进程调度

作者简介:程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。目录一、进程调度概览1.1 什么是调度1.2 为什么要调度1.3 为什么能调度1.4 何时调度1.5 如何调度1.6 调度均衡1.7 调度器评价1.8 调度器历史二、进程调度框架2.1 调度队列2.2 进程唤醒2.3 调度时机2.4 调度流程2.5 调度算法2.6 进程优先级2.7 进程切...

2022-08-09 08:23:04 80

原创 万字整理 | 深入理解编译系统

作者简介:程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。一、编译系统的形成与发展1.1 手工硬件编程1.2 面向硬件编程1.3 高级语言编程1.4 编译系统的组成二、编译系统的逻辑结构2.1 狭义编译2.2 最狭义编译2.3 链接过程2.4 组建系统三、编译原理简介3.1 词法分析3.2 语法分析3.3 语义分析3.4 中间码生成3.5 中间码...

2022-08-06 22:14:16 191 1

原创 五万字 | 深入理解Linux内存管理

作者简介:程磊,一线码农,在某手机公司担任系统开发工程师,日常喜欢研究内核基本原理。1.1 内存管理的意义1.2 原始内存管理1.3 分段内存管理1.4 分页内存管理1.5 内存管理的目标1.6 Linux内存管理体系2.1 物理内存节点2.2 物理内存区域2.3 物理内存页面2.4 物理内存模型2.5 三级区划关系3.1 Buddy System3.1.1 伙伴系统的内...

2022-08-05 20:52:49 419

转载 文末福利 | 性能领域:你知道的越多,不知道的也就越多

计算机性能是一门令人激动的,富于变化同时又充满挑战的领域。系统性能是对整个计算机系统的性能的研究,包括主要硬件组件和软件组件。所有数据路径上和从存储设备到应用软件上所发生的事情都包括在内,因为这些都有可能影响性能。对于分布式系统来说,这意味着多台服务器和多个应用。如果你还没有关于你的环境的一张示意图,用来显示数据的路径,赶紧找一张或者自己画一张。它可以帮助你理解所有组件的...

2022-08-03 08:23:50 36

原创 含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(下)

入口函数和运行库入口函数初学者可能一直以来都认为C程序的第一条指令就是从我们的main函数开始的,实际上并不是这样,在main开始前和结束后,系统其实帮我们做了很多准备工作和扫尾工作,下面这个例子可以证明:我们有两个C代码://entry.c#include<stdio.h>__attribute((constructor))voidbefore...

2022-08-01 08:18:56 37

原创 含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(中)

可执行文件的装载进程和装载的基本概念的介绍程序(可执行文件)和进程的区别程序是静态的概念,它就是躺在磁盘里的一个文件。进程是动态的概念,是动态运行起来的程序。现代操作系统如何装载可执行文件给进程分配独立的虚拟地址空间将可执行文件映射到进程的虚拟地址空间(mmap)将CPU指令寄存器设置到程序的入口地址,开始执行可执行文件在装载的过程中实际上如我们所说的那样是映射的虚拟地址...

2022-07-29 08:18:24 61

转载 搞软硬件的同事,最近和我聊了一件事

关注+星标公众号,不错过精彩内容素材来源| 硬创社共享平台前段时间,搞软硬件的同事给我吐槽了自己的工作,每天破事很多,关键工资还不高。所以,他最近利用业余时间兼职做硬件项目,挣了不少钱,让我羡慕了,还说后面请我们吃“大餐”。。。经过一番了解之后才发现,原来他是在一个硬件项目分享平台(硬创社)上传项目获取项目补贴。下面就给大家介绍下这个平台以及如何通过做项目挣外快的。硬创...

2022-07-29 08:18:24 280

原创 含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(上)

常用工具我们首先列出一些在接下来的介绍过程中会频繁使用的分析工具,如果从事操作系统相关的较底层的工作,那这些工具应该再熟悉不过了。不熟悉的读者可以先看一下这里的简单的功能介绍,我们会在后文中介绍一些详细的参数选项和使用场景。另外,建议大家在遇到自己不熟悉的命令时,通过 man 命令来查看手册,这是最权威的、第一手的资料。ELF文件详解ELF文件的三种形式在Linux下,可...

2022-07-27 08:18:50 74

原创 实例演示 | 用Kdump分析内核奔溃原因

本文主要介绍kdump服务和crash的使用,并结合一个简单的实例演示如何分析内核奔溃的原因。本文基于linux kernel 4.19, 体系结构为aarch64。kdump概述kdumpkdump 是一种先进的基于 kexec 的内核崩溃转储机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。当内核产生错误时,kdump会将内存导出为v...

2022-07-25 08:18:31 230

转载 招聘内核工程师 | 初创芯片公司

公司介绍遇贤微电子始创于2020年,团队云集了CPU产业专家及技术骨干,致力于为中国市场提供国产云计算高性能CPU芯片,拉动国内云计算架构CPU切换趋势。产品基于ARM架构,采用先进制程技术,自研部分核心IP,与客户软件生态协同发展,具备一流竞争力。初创公司+ 软件部现在由CEO直接领导负责 = 待遇没有天花板Linux 内核工程师工作地:上海/深圳/西安岗位职责:负责针...

2022-07-22 08:18:36 60

原创 CPU体系结构之cache小结

What is cache?CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又...

2022-07-20 08:18:02 127

原创 Slub分配器的来龙去脉

slab分配器设计的需求在Linux内核的内存子系统中,伙伴系统无疑处于内存管理的核心地带,但是如果将内存管理从逻辑上分层,它的位置则处于最底层。Buddy是所有物理内存的管家,不论使用何种接口申请内存都要经由伙伴系统进行分配。但是,伙伴系统管理的物理内存是以页为单位,以4K页为例,它也包含了4096个字节。但是无论是内核自己还是用户程序,在日常的使用中都很少会需要使用四...

2022-07-18 08:18:31 76

转载 高通招聘 | 车载多媒体软件工程师(视频/相机方向)

车载多媒体软件工程师(视频/相机方向)工作内容:参与基于高通手机或车载平台的多媒体嵌入式软件开发(音频audio,视频video,相机camera,显示display,虚拟现实,增强现实)任职要求:精通至少一种编程语言:C/C++/Python了解计算机体系结构,多进程多线程编程,操作系统以及数据结构熟悉Linux/Android开发环境和工具使用者优先有以下任一领域开发...

2022-07-17 20:08:13 69

原创 万字剖析 Armv8 架构虚拟化

综述本文描述了Armv8-A AArch64的虚拟化支持。包括stage 2页表转换,虚拟异常,以及陷阱。本文介绍了一些基础的硬件辅助虚拟化理论以及一些Hypervisor如何利用这些虚拟化特性的例子。文本不会讲述某一具体的Hypervisor软件是如何工作的以及如何开发一款Hypervisor软件。通过阅读本文,你可以学到两种类型的Hypervisor以及它们是如何映射...

2022-07-13 08:18:46 220

转载 训练营:ARM安全架构之Trustzone-TEE实战

01讲师介绍baron,九年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。是国内较早一批做TEE的,对商用TEE、开源TEE研究也比较深入,对未来的安全架构/安全趋势也有着明确的看法...02课程背景2021年ARM又推出了ARMv9架构,系统软件架构也在悄无声息地发生变化。在这种架构中,强调的是隔离技术,包括资源的隔离、运行时隔离...

2022-07-12 08:18:35 157

原创 利用eBPF探测Rootkit漏洞

作者简介:许庆伟,Linux Kernel Security Researcher & Performance Develope如今,云原生平台越来越多的使用了基于eBPF的安全探测技术。这项技术通过创建安全的Hook钩子探针来监测内部函数和获取重要数据,从而支持对应用程序的运行时做监测和分析。Tracee是用于Linux的运行时安全和取证的开源项目,它基于eBP...

2022-07-11 08:08:17 413

转载 招聘内核工程师

Linux内核软件开发 - 长安汽车工作职责参与项目的需求分析和技术文档的编写;负责Linux内核性能的评估,设计、实现、验证工作;负责分析RT、LTS、CVE等补丁和新Feature的移植;负责Linux系统下内存、调度、文件系统、网络等内核子系统的优化、调试、交付工作;基于SOC芯片的BSP包进行自研内核版本的移植;负责完成内核开发的技术文档设计及输出;负责编写编译脚...

2022-07-10 20:08:05 55

原创 高性能BPF内存分析工具解析

作者简介:许庆伟,Linux Kernel Security Researcher & Performance Developer众所周知,Linux内核和CPU处理器负责将虚拟内存映射到物理内存。为了提高效率,在一个称为页的内存组中创建一个内存映射,其中每个页的大小根据处理器的实际情况而来。尽管大多数处理器也支持更大的页,但默认通常是4 KB,。内核可以从页空闲...

2022-07-08 08:18:07 117

转载 trace32专栏 | 基础调试

T32打开界面首先需要安装,一般默认安装在C:\T32,在安装路径下T32/bin/windows64 下打开t32start.exe,如下,检查路径是否正确,检查core是否正确。然后点击start;界面功能说明如下:参数设置设置CPU等参数。也可以写一个.cmm脚本,在file--> edit script中加载并debug该脚本。一个简单的脚本(命令行方式)如...

2022-07-05 08:28:24 587 1

转载 使用 Ftrace 分析函数性能

作者简介:伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享。0.背景ftrace的功能非常强大,可以在系统的各个关键点上采集数据用以追踪系统的运行情况。既支持预设的静态插桩点(trace event),也支持每个函数的动态插桩(function tracer)。还可以利用动态插桩来测量函数的执行时间(f...

2022-06-07 08:11:44 125

git gerrit

git gerrit相关的知识讲解

2015-10-21

exynos4412_datesheet

关于exynos4412说明文档 密码是mcd.sec@samsung.com

2014-03-15

alsa-lib alsa-utils移植到arm的脚本

alsa-lib alsa-utils移植到arm的脚本

2014-03-10

TS和M3U8的解析

在Android支持TS和M3U8的解析

2013-04-12

Homlet4.0开发指南

android第三方开发的说明指南

2012-07-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除