自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(289)
  • 收藏
  • 关注

转载 linux 内存管理原理

本文以32位机器为准,串讲一些内存管理的知识点。(转)初识linux内存管理子系统转 Linux内存管理(最透彻的一篇)Linux内存管理浅析(一)linux内存管理源码分析 - 页框分配器 1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的...

2016-09-30 18:13:58 751

原创 嵌入式内核制作、根文件系统及内核启动流程

嵌入式软硬件架构       软件:根文件系统、Linux内核、Bootloader       硬件:底层硬件嵌入式Linux系统由Linux内核与根文件系统两部分组成,缺一不可一、内核制作      采用默认的模板来作为.config,模板在/arch/arm/configs文件中步骤:(1)先清除原有配置与中间文件                            x86: make distclean                            arm: make distclean 

2011-03-24 00:45:00 6097

原创 QEMU 调试 TF-A开发环境建立(使用 QEMU 调试 TF-A (Trusted Firmware-A) 之二)

QEMU是一款开源的模拟器,可以模拟多种不同的处理器和硬件架构,包括ARMv7和ARMv8等。在 TF-A 开发过程中,使用 QEMU 可以将ARMv8软件在x86平台上运行,从而实现快速、灵活和低成本的开发和调试。通过使用 QEMU 调试 TF-A,开发者可以运行TF-A固件的ELF文件,可以停止和启动运行,可以单步运行,还可以在运行时检查和修改变量和寄存器状态。这种调试方式,比使用硬件调试器便宜许多,也更加方便一些。我们计划使用QEMU模拟Cortex-A57处理器来运行和调试TF-A。

2024-01-28 21:40:20 339

原创 014 - ARM64上的GIC-400(GICv2)

一个高优先级的中断可以抢占一个处于 active 状态的低优先级中断,即 GIC 的分发器会先找出并记录当前优先级最高并且处于 peding 的中断,然后抢占当前的中断服务,转而先处理高优先级中断,上述内容是从 GIC 角度分析的。GICD_ISENABLER1 的访问地址 = GIC-400 的基地址+ GIC-400 的 Distributor的偏移量+ 指定寄存器的偏移量 = 0x FF84 0000 + 0x100 + (0x100+4*1) = 0x FF84 0204。n=50/4=12。

2023-10-20 10:41:44 194

原创 Linux ARMv8 异常向量表

对于向量表vectors中的kernel_ventry 1, irq , 则 b el\()\el\()_\label跳转到el1_irq函数。2、系统调用:el0_sync->el0_svc->el0_svc_handler->el0_svc_common(__NR_syscalls, sys_call_table)->invoke_syscall。1、数据异常:el0/1_sync->el1_da->do_mem_abort->do_page_fault.点击(此处)折叠或打开。

2023-10-19 10:02:45 725

原创 Linux 内核启动分析

注:__idmap_text_start到__idmap_text_end的数据,其实就是启用mmu前后,需调用的那几个函数(因为CPU有加速指令处理的关系, 有些指令是乱序执行,防止开启mmu后,因为地址空间切换,导致的代码混乱的问题),因为有一段是va=pa因此, 之后即使还有code在用老的物理地址,也是不会出问题的。4、__create_page_tables: 创建内存映射表,一共两张,一张存放在swapper_pg_dir(线性映射),一张存放在idmap_pg_dir(一对一映射)。

2023-10-19 09:59:59 320

原创 Linux性能基础:CPU、内存、磁盘等概述

影响CPU性能的指标主要分为:主频、 CPU位数、CPU缓存指令集、CPU核心数和IPC。① CPU主频CPU主频是指CPU内核工作的时钟频率,单位Hz。它直接的决定了CPU的性能,也可以通过超频来提高CPU主频来获得更高性能。主频越大,运算越快。例如CPU在一个时钟周期内运算一条指令,2GHz运行一条指令需要10ns,那么1GHz需要20ns,运算速度慢了一倍。因为2GHz的时钟周期比1GHz的时钟周期占用的时间减少了一半,速度自然就快了一倍。主频不代表CPU整体速度。

2023-10-16 16:16:00 593 11

原创 linux 性能分析perf

perf是用于性能分析的一个工具,功能强大,用法也非常多。但是要真正用明白,懂得分析,需要长时间的学习和沉淀。例如必须得知道cycles分支预测等这些是什么意思,每个性能事件的统计值高低所带来的影响分别是什么,如何增加/降低某个性能事件的统计值等等,只有在具备这些理论基础的情况下,去分析perf的统计值才比较有意义。end。

2023-10-09 12:27:05 227

原创 Arm64体系架构-MPIDR_EL1寄存器

CPU MIPDR的设置

2023-10-08 18:37:12 1529

原创 Cache Memory简单介绍

今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运行在 RAM之中,RAM 就是我们常说的DDR(例如 DDR3、DDR4等)。我们称之为main memor...

2022-05-16 08:21:35 1222

转载 Linux中内存管理详解

Linux中内存管理 内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏内核运行。 2、 用户...

2022-04-21 01:26:06 4305 3

原创 arm-linux内存页表创建

linux的内存(正式)页表是在内核代码执行到start_kernel函数后执行paging _init函数建立的,这里要注意一个事情就是说,这里paging_init函数可以正常创建内存页表的条件有两个:1、meminfo已初始化:即初始化物理内存各个node的各个bank,一般对于小型arm嵌入式设备,不涉及多个内存就是一个node和一个bank;这部分初始化是在paging_init函数前面的对uboot所传参数的解析中完成的(可在内核的arm_add_memory函...

2022-04-21 00:39:08 899

原创 音频硬件基础

参考自:https://www.pianshen.com/article/199251837/     https://blog.csdn.net/hellosky521/article/details/86740258 1、CODEC: 音频压缩CO+解压缩DEC,CODEC就...

2022-03-27 10:29:58 8874

转载 MMU的作用及工作过程

MMU的作用及工作过程 MMU(Memory Management Unit)是内存管理单元的简称,读者朋友在学习嵌入式的时候应该听说过µCLinux,这是适合没有MMU的微控制器使用的嵌入式Linux操作系统,比如ARM7。由于没有MMU,所以在µCLinux上实现多任务功能是一个非常棘手的问题。从而引出了本节的关注点:MMU的作用是什么?简单地说,MMU的作用有两点:地址翻译、内存保护。1、地址翻译 在处理器上一般会运行一个操作系统,如Linux,用户编写的源程序需要经过编...

2022-03-08 01:19:34 3523 1

原创 MMU的理解

MMU内存管理单元相关知识点总结1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用

2022-03-08 01:09:49 194

原创 MMU的理解

MMU内存管理单元相关知识点总结1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用

2022-03-08 01:04:35 683

原创 2021-10-21MIPI-DSI、MIPI-CSI、LVDS等接口解析

MIPI-DSI、MIPI-CSI、LVDS等接口解析 夜风~ 2019-03-29 14:06:00 ...

2021-10-21 09:42:56 3271

转载 使用perf record不能显示函数名称的解决方法

2021.2.5补充: 当可以使用perf但是不能通过perf record -g ./名称+perf report显示函数名的时候,直接安装以下依赖:(其中包括了解决函数名的工具以及提供了别的一系列工具) sudo apt-get install elfutils-devel libdw-dev systemtap-sdt-dev...

2021-10-12 18:49:03 2095

原创 测试 使用 perf 进行性能分析时如何获取准确的调用栈

测试使用 perf 进行性能分析时如何获取准确的调用栈ifonly·2020年02月27日· 101 次阅读目录perf是 Linux 下重要的性能分析工具,perf可以通过采样获取很多性能指标,其中最常用的是获取 CPU Cycles,即程序各部分代码运行所需的时间,进而确定性能瓶颈在哪。不过在实际使用过程中发现,简单的使用perf record -g获取到的调用栈是有问题的,存在大量[Unknown]函数,从perf report的结果来看这些部分对应地址大部分都是非...

2021-10-12 16:01:05 2642

原创 linux驱动之DMA

转载自:https://www.jianshu.com/p/e1b622234d13一、前言在嵌入式Linux的内核及驱动中,DMA常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于DMA的使用者来说,我们一般使用其接口,而很少去了解整个DMA的运作方式。那么本文就从头到尾,简单地说一下DMA吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。二、正文2.1 高端内存2.1.1 内核虚拟内存在了解DMA之前,我们需要先了解...

2021-08-12 11:31:22 2938 2

原创 2021-08-12

转载自:https://www.jianshu.com/p/e1b622234d13 一、前言 在 嵌入式Linux 的内核及驱动中,DMA 常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于 DMA 的使用者来说,我们一般使用其接口,而很少去了解整个 DMA 的运作方式。那么本文就从头到尾,简单地说一下 DMA 吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。 二、正文 2.1 高端内存 2.1.1 内核虚拟内...

2021-08-12 11:24:58 536

转载 linux驱动之DMA

转载自:https://www.jianshu.com/p/e1b622234d13 一、前言 在 嵌入式Linux 的内核及驱动中,DMA 常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于 DMA 的使用者来说,我们一般使用其接口,而很少去了解整个 DMA 的运作方式。那么本文就从头到尾,简单地说一下 DMA 吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。 二、正文 2.1 高端内存 2.1.1 内核虚拟内...

2021-08-12 11:22:51 625

转载 Linux下DMA驱动框架分析

linux下的DMA驱动框架drivers\dma\dmaengine.c文件内,在linux下编写DMA的设备驱动一般步骤如下。 申请DMA通道 struct dma_chan *dma_request_channel(dma_cap_mask_t mask, dma_filter_fn filter_fn, void *filter_param);   其中dma_cap_mase_t是根据dma_cap_sets指定的DMA传输类型;...

2021-08-12 11:07:23 1006

原创 手机回声消除原理

https://blog.csdn.net/ffmpeg4976/category_5648555.html手机回声有两种,一种是声学回声(Acoustic Echo),一种是线路回声(Line Echo)。一般我们需要消除的是声学回声。关于回声消除的两个基本认识:1. 回声是开免提或外接音箱时才会产生的,带耳机不会。2. A给B打电话,若B的电话没有做回声消除,A会听到自己的回声。也就是说,B的电话的回声消除只能影响到A。那具体应该怎么做回声消除呢?基本原理比较简单,如图所示:其中s2

2020-09-04 20:47:26 1121

原创 数字音频Mixer算法

1.1 问题提出Mix的意思是混音,无论在自然界,还是在音频处理领域这都是非常普遍的现象。自然界里你能同时听到鸟鸣和水声,这是因为鸟鸣和水声的波形在空气中形成了叠加,耳朵听到后能区分鸟鸣和水声这两种波形。在数字音频领域也是一样,比如你也可以一边打CS一边听歌,这是因为计算机把两个声音波形做了叠加。但是不同的是,计算机中的叠加,很容易造成越界。比如int plus1(int num0, int num1){return num0+num1;}如果赋值int num0...

2020-09-04 20:45:14 895

转载 【转】Alsa音频编程【精华】

【转】Alsa音频编程【精华】 一、前序这里了解一下各个参数的含义以及一些基本概念。声音是连续模拟量,计算机将它离散化之后用数字表示,就有了以下几个名词术语。样本长度(sample):样本是记录音频数据最基本的单位,计算机对每个通道采样量化时数字比特位数,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。帧(frame):帧记录了一个声音单元,其长度为样本长度与通道数的乘积,一段音频数据就是由苦干帧组成的。采样率(rate):每秒钟采样次数,该次

2020-09-01 19:43:48 472

原创 BT656跟BT1120和BT709有什么区别

601是SDTV的数据结构 656是SDTV的interface709是HDTV的数据结构 1120是HDTV的interface从数据结构上 都是Y Cb Cr只是SDTV用4:2:2&nb...

2020-03-06 20:15:58 1927

转载 数字视频标准二

2.    常用数字视频标准2.1 BT656    首先要理解模拟PAL/NTSC的视频信号的波形:    要进行视频的数字传输,首先我们要将模拟视频信号数字化,获得每个像素的YUV值,一般采用YUV422格式,仅仅传输图像数据还不行,还要传输行同步、场同步、奇偶场信号、以及每行图像什么时...

2020-03-06 20:01:13 755

转载 数字视频基础(一)

转自https://blog.csdn.net/shanghaiqianlun/article/details/26477675 1.   &nbs...

2020-03-06 19:57:53 394

原创 QNX 记录

https://blog.csdn.net/u011996698/article/details/82784398

2020-03-04 16:11:44 222

转载 DDR地址容量计算与理解

转 DDR地址和容量计算、Bank理解DDR3为减少地址线,把地址线分为行地址线和列地址线,在硬件...

2019-12-04 20:07:07 544

原创 DDR地址容量计算与理解

转 DDR地址和容量计算、Bank理解DDR3为减少地址线,把地址线分为行地址线和列地址线,在硬件...

2019-12-04 20:01:35 580

转载 DDR地址容量计算与理解

DDR地址和容量计算、Bank理解DDR3为减少地址线,把地址线分为行地址线和列地址线,在硬件上是同一组地址线; 地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址,再送出列地址。 一般来说列地址线是10位,及A0...A9;行地址线数量根据内存大小,BANK数目,数据线位宽等决定(感觉也应该是行地址决定其他) ;1BANK bank是存储库的意思,也就是说,一块内...

2019-12-04 19:57:24 980

原创 Android进阶——你所知道的Camera2和你所不知道的Camera2完全解析

Android进阶——你所知道的Camera2和你所不知道的Camera2完全解析CrazyMO_关注12017.10.10 17:00:26字数 3,001阅读 37,761引言一切源于在项目过程中的一个Bug:我的需求是在MainActivity 实现自动预览,也可以点击跳到签到SignedActivity去实现拍照签到,第一次进入界面的时候都是正常的,但是有时候返回来的时候预览失败,即从M...

2019-11-01 10:56:49 1199

原创 Android Camera2 教程 · 第一章 · 概览

Android Camera2 教程 · 第一章 · 概览DarylGo关注102019.01.22 15:45:26字数 3,758阅读 7,202Android Camera从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1(android.hardwa...

2019-11-01 10:25:01 641

转载 ANDROID之 HIDL 简单介绍

Android HAL类型 在此之前的ANDROID版本当中Android HAL没有什么特殊的特殊的,也么有什么分类,但是从android 8.0开始,Android重构了HAL与Android FW之间的联系结构,所以Android HAL会被区分成以下2种类型: 1,Binderiz...

2019-10-30 11:54:20 790

转载 转载 eMMC之分区管理、总线协议和工作模式

http://blog.csdn.net/u013686019/article/details/66472291一、eMMC 简介eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard,即MMC, 是一种闪存卡(Flash Memory Card)标准,它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而eMMC 则是对 ...

2019-09-25 14:43:29 356

原创 平时所有命令记录

1、查看 读写EMMC的命令及方式,或者在代码中打开block_dumpecho 1 > /proc/sys/vm/block_dump之后,然后通过cat /proc/kmsg 就可以查看当前谁在访问磁盘

2019-07-15 17:40:39 95

转载 内核通知链机制的原理及实现

这篇文章是对以下两位博主的文章进行了简单整理转载引用,备忘。非常感谢两位的分享。http://my.chinaunix.net/space.php?uid=25445243&do=blog&id=212959http://yfydz.cublog.cn 一、概念:    大多数内核子系统都是相互独立的,因此...

2019-07-05 10:32:32 700 1

转载 [mmc subsystem] mmc core(第二章)——数据结构和宏定义说明

mmc subsystem系列(持续更新中): [mmc subsystem] 概念与框架 [mmc subsystem] mmc core(第一章)——概述 [mmc subsystem] mmc core(第二章)——数据结构和宏定义说明 [mmc su...

2019-06-27 15:21:30 230

ARM平台常用性能测试方法.pdf

ARM平台常用性能测试方法.pdf

2022-11-29

空空如也

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

TA关注的人

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