自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qazw9600的专栏

qazw9600的博客

  • 博客(221)
  • 收藏
  • 关注

原创 格式转换 - Base64算法

常见做法如下:打乱标准表中字符顺序使用其它可见字符替换标准表中部分字符。

2023-12-19 16:39:23 79

原创 Linux - 内存 - memblock 分配器

【代码】Linux - 内存 - memblock 分配器。

2023-12-13 16:45:54 210

原创 软件运行原理 - 内存模型 - 栈内存

说明C/C++软件运行时,内存根据使用方式的不同分为堆内存和栈内存,栈内存使用有以下特征:栈内存使用(申请、释放)由系统自动分配和释放,程序员不用做任何操作。栈内存重复使用,进入函数时数据入栈,函数执行完数据出栈。函数中的局部变量以及实参保存在栈内存中。内存模型栈内存处于进程虚拟内存的高地址,从高往低扩展。堆内存处于进程虚拟内存的低地址,从低往高扩展。原理在数据结构领域,栈是一种仅在尾部进行插入或删除操作的线性表,以后进先出的规则管理数据,先进入的数据被压入栈底,最后的

2023-12-11 22:41:42 139

原创 GUN编译器(gcc/g++)- 编译过程

【代码】GUN编译器(gcc/g++)- 编译过程。

2023-12-08 21:30:03 192

原创 ARMv8 - A64 - 函数调用,内存栈操作

【代码】ARMV8 - A64 - 函数调用,内存栈操作。

2023-12-07 13:59:11 226

原创 ARMV8 - A64 - 跳转和返回指令

【代码】ARMV8 - A64 - 跳转和返回指令。

2023-12-06 21:24:17 374

原创 ARMV8 - A64 - 存储器读写指令

【代码】ARMV8 - 汇编指令 - 存储器读写指令。

2023-11-30 16:36:47 243

原创 Linux - 系统调用(syscall)

syscall 原理

2023-11-25 18:41:12 574

原创 ARMV8 - AArch64 - 通用寄存器

Arm AArch64状态下提供了31个64位通用寄存器:X0 ~ X30。

2023-11-25 16:19:32 361

原创 Linux - 驱动开发 - RNG框架

【代码】Linux - 驱动开发 - RNG框架。

2023-11-18 21:47:17 475

原创 Linux - 物理内存管理 - memmap

【代码】Linux - 物理内存管理 - memmap。

2023-11-18 12:37:27 356

原创 Linux - 内存 - 预留内存占用分析

【代码】Linux - 内存 - 预留内存占用分析。

2023-11-16 18:12:06 340

原创 Linux - 内核 - 安全机制 - 内存页表安全

【代码】Linux - 内核 - 安全机制 - 内存页表安全。

2023-11-16 11:49:07 449

原创 Linux - 驱动开发 - watchdog - SMP机制下多核确活

【代码】Linux - 驱动开发 - watchdog - SMP机制下多核确活。

2023-11-13 19:26:41 540

原创 代码编辑器 - 混用编辑器导致代码缩进不齐

【代码】代码编辑器 - 混用编辑器导致代码缩进不齐。

2023-11-11 15:22:21 133

原创 uboot - 驱动开发 - dw watchdog

【代码】uboot - 驱动开发 - dw watchdog。

2023-11-09 14:22:23 669

原创 IC - 基础知识 - SOC与MCU

IC 基础知识,mcu 和 soc

2023-11-05 17:27:08 476

原创 IC - reset子系统

【代码】IC - reset子系统。

2023-11-03 20:02:20 267

原创 uboot - 驱动开发 - 驱动模型

【代码】uboot - 驱动开发 - 驱动模型。

2023-10-30 21:02:11 890 1

原创 vscode - 环境准备 - 修改缓存路径

vscode - 环境准备 - 修改缓存路径。

2023-10-12 13:37:18 4656 4

原创 uboot - preboot cmd

【代码】uboot - preboot cmd。

2023-09-13 14:16:50 216

原创 linux - 内存 - KO占用

【代码】linux 内存 - KO内存占用。

2023-08-08 19:26:50 726

原创 ARMv8 - 安全机制(TrustZone) - 异常等级

允许操作系统(EL1)请求虚拟化(EL2)服务当在ARMv8-A架构下,normal world, EL1尝试去访问EL2的时候,则会陷入到虚拟化层的,其中是通过HVC指令HVC指令用于生成同步异常,该异常由EL2中运行的管理程序处理。参数和返回值通过寄存器传递,虚拟机监控程序还可以捕获住操作系统(EL1中的guest os)发出的SMC call,并且支持SMC call被模仿、传递给下一级或拒绝通过。汇编指令SMC(Secure Monite

2023-06-29 16:56:13 1501

原创 密码学 - 加解密算法 - 填充算法

加解密算法填充算法

2022-12-02 21:28:29 2573 1

原创 密码学 - 加解密算法 - 加解密模式

对称加密 , 加密模式

2022-12-02 20:13:52 2894

原创 Linux shell - 目录栈操作(pushd popd dirs)

Linux shell 目录栈操作(pushd popd dirs)

2022-09-28 21:00:12 569

原创 数据结构 - RingBuffer

ringbuffer 学习

2022-07-16 18:10:50 860

原创 Linux性能分析工具 - perf 和火焰图

linux 性能分析工具 perf 和火焰图

2022-07-11 16:05:06 3252

原创 c语言缺陷 - 函数声明和定义,参数不一致校验缺失

背景使用C语言开发时常会遇到以下问题:多次修改导致代码文件(.c)中的函数定义的参数个数/类型与头文件中的函数声明不一致,编译器无法检测出来,即使是开启了严格的编译选项(-Wall -Werror),如下:* test.hint test(int a);* test.c#include <stdio.h>int test(int a, int b){ a = 1; b = 2; ....}* main.c#include <stdio.

2022-05-11 16:45:57 2054

原创 cpu cache flush 和 内存 invalidate

背景嵌入式开发中遇到问题:将SD卡中某个文件读取到一块内存中,再将该内存地址发送给外设硬件,硬件通过该地址读取数据做处理,处理结果异常,并且现象有以下规律:通过代码实现将SD卡中的文件数据拷贝到新文件中,文件是正常的。外设硬件处理前,先使用代码使用一次该块内存,即使是简单的打印,处理结果也是正常的。问题分析从问题现象很容易会想到和缓存有关,但是应用层/OS创建的DDR缓存还是cpu L1/L2/L3 cache需要确认下,最终该问题测试验证是cpu cache导致的。嵌入式开发中,cp

2022-05-11 11:05:31 2477

原创 alios thing - rhino内核 - 内存管理

alios thing 内存管理

2022-04-11 20:03:25 3134

原创 Linux 应用 - 动态库 - 内存占用

背景在小内存(64M)嵌入式Linux平台上开发中遇到以下两个现象验证公版程序,由于程序文件较大,设备flash中放不下,测试时需要将部分动态库放在SD卡中,插上SD卡,添加SD卡路径到动态库查找路径后再执行程序;程序支持SD卡录像功能,测试录像功能时,在录像过程中拔掉SD卡,程序必现bus err崩溃问题,gdb定位到的错误代码是随机的,但是大部分是保存在SD卡中的动态库中的代码,如果不拔卡能够稳定运行,如果不放动态库在SD中,程序也不会有问题,只是录像写文件会失败。裁减公版程序,程序功能裁减

2022-03-25 18:41:54 3739

原创 linux - 内核 - io子系统 - io调度

背景在嵌入式平台实现行车记录仪等产品的录像功能(使用SD卡存储)时,性能普通,研究确认IO调度是否能提升性能。调度说明在linux平台以普通方式(缓存io)读写文件,读写请求并不是直接发给存储设备处理,操作系统会先将请求(包含数据)缓存起来,经过算法调度和处理(合并、排序请求)后,再发送请求到存储设备。为何需要调度算法IO请求较多以及来源(请求发起进程)比较复杂时。为了保证所有IO请求能够以相对公平的方式得到执行,从而产生的优先级问题。为了尽可能的提高性能,需要配合缓存机制实现一

2022-03-21 21:45:48 835

原创 自动化构建 - make&Makefile - recipe 执行原理

背景在Makefile recipe中执行另外一个目录下的Makefile,图简单使用了cd命令,但是测试发现cd命令未生效,示例代码如下:test: cd workspace make cd -常规做法是使用-C选项,如下,test: make -C workspace以上代码首先会切换到workspace目录,再执行此目录下的Makefile,且会有以下打印,workspace下的Makefile执行完后,会切换回原来的目录和Makefile。

2022-03-10 20:51:09 344

原创 C - 关键字 - restrict

【代码】C - 关键字 - restrict。

2022-03-09 16:32:54 2656

原创 行车记录仪 - 录像 - 文件缓存

背景基于ffmpeg实现录像功能,性能不理想,前后路摄像头视频码率相加只有28Mbps加上音频也只有4MB/s左右,使用class 10的sd卡 + 2秒 ringbuffer缓存的情况下,依然出现写卡不及时导致的丢帧现象,class 4 sd卡表现更差。分析使用dd命令测试class 10 SD卡在该平台上的读写速度,写速度能达到7~8MB/s,因此丢帧问题不是SD卡写性能不足导致的,是录像逻辑的问题。通过测试定位到ffmpeg接口av_write_frame(写一帧数据)耗时异常,异常部分

2022-03-08 17:35:44 1906

原创 行车记录仪 - 录像 - ffmpeg AVPacket 复用

说明基于ffmpeg实现录像功能,写每一帧数据都需要生成一个AVPacket变量传递给av_write_frame,常见流程如下:av_new_packet函数中需要申请一定大小的内存空间存储媒体数据,av_write_frame执行完后再需要使用av_packet_free释放内存空间,在行车记录仪产品大码率,较高帧率,长时间录制的环境下,该循环操作对性能的影响不容忽视,生成AVPacket实测耗时如下:01-01 08:02:13.393 230 478 I get_pack

2022-01-07 15:52:05 770

原创 文件io - 操纵文件空间 - fallocate

说明以普通方式(缓存io)写文件,由于无法预知文件的最终size(即所需磁盘块个数),操作系统无法提前申请好磁盘空间只能按需分配,当系统进程将缓存脏页写入磁盘时,发现内存页没有对应的磁盘空间(磁盘块),系统会触发中断,向存储器申请分配一块,再将数据写入存储器中。磁盘空间预分配:按照用户需求提前分配好磁盘空间(一定数量的磁盘块)。使用录像预分配,以加快录像存储的速度。加速原理减少查找可用块的时间损耗按需分配磁盘块时,每次申请一块磁盘块,申请时存储器需要查找可用磁盘块,需要耗费一定的

2021-12-11 17:14:57 1090 2

原创 H26x 编解码 - GOP 模式

GOP 简介GOP(Group Of Picture),在互联网流媒体领域也被称为 GOF(Group of frame)。H26x编解码中视频帧分为I帧(关键帧)、P帧(参考帧)等,P帧等依赖于I帧,视频帧可以以I帧为第一帧的组形式划分的。GOP值也是I帧的间隔帧数。智能编码技术市场上售卖的安防产品时常会声称支持smartH264,smartH265,smartH264++,smartH265++等技术,实际上就是智能编码技术,很大部分是在GOP上做文章。智能编码技术的目的:降低码率,低

2021-09-26 21:22:42 1937

原创 c/c++ 32/64位兼容编程

说明在工作(芯片设计公司开发)中,使用到的平台较多,交叉编译工具链有32位的也有64位的。所谓32位/64位是硬件层次的概念,是指处理单元的三大总线(数据总线,控制总线,地址总线)是32根导线还是64根导线,每一根导线可以传输1位数据,所以是32位和64位,64位的cpu可以在软件层次兼容32位程序,安装32位系统也能跑32位程序,但是32位的cpu当前无法兼容64位的程序,理论上软件也能实现兼容,但是好像没有必要性。编程方面,希望程序能够兼容32位和64位,这样换平台只需要重新编译就好了,不需要进

2021-09-03 21:48:28 2562

空空如也

空空如也

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

TA关注的人

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