目录 随机访问存储器 物理架构 从 CPU 角度看物理内存架构 查看NUMA相关信息 绑定NUMA节点 管理内存节点(node) node节点以及page数据结构之间关系 物理内存划分(zone) 物理内存页(page) 内存分配行为 内存分配ALLOC*标志 页面阈值 内存紧张时 内存分配流程
目录 SD卡无法识别问题定位 设备树确认mmc1 启用 驱动文件 sdhci-ss524v100.c 寄存器以及值的定义 probe函数匹配 通过函数的层层打印,sd卡寄存器读取出来时没有插上的状态 SD卡无法识别问题定位 硬件平台:ss524处理器, 内核版本:4.19.90 设备树确认mmc1 启用 mmc1: SD@0x10020000
RTP 实时传输协议 音视频数据传输,先将原始数据经过编码压缩后,将码流打包成一个个RTP包,再将码流传输到接收端。 打包的作用 接收端要正确地使用这些音视频编码数据,不仅仅需要原始的数据码流,还需要一些额外的信息当前编码标准,H264 H65等 按照什么速度播放视频? RTP告知接收端一些必要的信息。 网络带宽预测和拥塞控制。 RTP传输的协议UDP,不具有丢包重传和拥塞控制,需要
在一对多的情况下,根据每个接收端的带宽不同,灵活调整发送码率 SVC分层 第0层,最底层,可以独立进行编解码,不依赖第1,第2层 第1层,依赖于第0层 第2层,依赖于第0 ,1层 对于网络差的人,发送第0层,网络中等的人,发送第0,1层; 网络好的人,发送第0,1,2层 三层加起来,帧率、分辨率 画面质量最高 SVC分类 时域SVC 时域SVC 编码压缩率有
卡顿问题 在帧率达到10fps并且均匀播放是,就不太能看出来卡顿。 卡顿问题出现的可能性 1、帧率不够 两帧之间的间隔超过200ms,可能会出现卡顿 可能原因:机器性能不够,导致处理耗时太长。 解决办法:使用GPU做处理 2、编码出码率超过实际网络带宽 1)在RTC中比较常见,有时候网络突然变差,从网络预估出来的带宽很小,但实际播放的画面复杂,且需要的编码码率又比较高,容易出现发送
视频编码流程 DCT变换 离散余弦变换 它能将空域信号转换到频率上表示,并能够比较好的去除相关性。 对于图像来说,空域是平时看到的图像,频率是图像做完DCT变换之后的数据。 DCT变换是对残差块做的,通常情况下是在4X4的子块上进行变换的 二维DCT变换公式如下,f(i,j)是指第(i,j)位置点的信号值,N是采样点的总个数 计算公式: F(u,v) = c(u)c(v)\
视频编码流程 帧内预测 一张图像中相邻像素的亮度和色度信息是比较接近的,并且亮度和色度信息也是逐渐变化的,不会出现突变。 帧内预测是利用已经编码的像素值来预测待编码的像素值,达到减少空间冗余。已经编码的像素值变成码流,编码的像素会重建成重建像素,用来做之后待编码块的参考像素值。即,已经编码的块会解码成像素用来做参考像素。 块大小 不同块大小的帧内预测模式 H264 标准里,块分为宏
码控算法 用算法来控制编码器输出码流的大小,码控就是为一帧图像选择一个合适的QP值的过程。 一帧图像的画面确定了之后,画面的复杂度和QP值几乎决定了编码之后的大小。由于编码器无法决定画面的复杂度,因此码控的目标就是选择一个合适的QP值,以此来控制编码后码流的大小。 码控算法的类型 CBR (恒定码率) ,VBR (动态码率) ,CQP (恒定QP),CRF(恒定码率因子) VBR 码
一、带宽预测作用 控制音视频发送的数据量不会在网络带宽不够的时候,发送超出网络带宽的数据量。导致出现长延时和高丢包等问题,从而引发高延时或者卡顿的问题。 预测出实际的带宽,就可以控制音视频数据的发送数据量。如控制音视频数据的编码码率或者直接控制发送RTP包的速度。 WebRTC中主要的带宽预测算法: 1、基于延时的带宽预测算法 2、基于丢包的带宽预测算法 3、最大带宽探测算法 二、基
一、每处理器 在多处理器系统中,每处理器变量为每个处理器生成一个变量副本,每个处理器访问自己的副本; 优点:避免处理器之间和处理器缓存之间的同步,提高程序的执行速度。 二、编程接口 1、静态 DEFINE_PER_CPU(type,name);//定义 DECLARE_PER_CPU(type,name);//声明 宏定义展开 _ attribu
利用缓存提高性能的编程技巧 利用GCC编译器对齐属性 attribute((aligned(n))),利用处理器的缓存提高程序的执行速度; 使变量的起始地址对齐到一级缓存行长度的整数倍; 使结构体对齐到一级缓存行长度的整数倍 使结构体中一个字段对齐到一级缓存行长度整数倍; 实现方式 1、以 4 个下划线开头的宏 cacheline_aligned : 对齐到 一级缓存行的长度
前言 本文介绍linux性能优化CPU相关的知识点,首先介绍了CPU相关的性能指标,接着介绍经常使用的工具如 pidstat、sar、vmstat等并演示其使用方法,最后介绍性能分析时常用的方法与策略。图片来源Linux Performance 一、CPU 性能指标 1、CPU使用率用户CPU使用率:CPU使用率高,通常说明有应用程序比较繁忙; 系统CPU使用率:CPU使用率高,说明内核比
目录 内核空间 内核空间的扩展功能 硬件层面 ARM64虚拟地址空间划分 进程的用户虚拟地址空间 内存布局 物理地址空间 内存映射 内核空间 1)内核空间的基本功能虚拟内存管理,负责从进程的虚拟地址空间分配虚拟页,sys_brk用来扩大或收缩堆,sys_mmap用来在内存映射区域分配虚拟页sys_munmap用来释放
目录 虚拟地址空间划分(用户空间) 32位系统虚拟地址空间分配 64位系统虚拟地址空间分配 内存管理 内核布局虚拟地址空间 虚拟内存区域在内核中组织 内存访问权限 调用malloc 申请内存, 虚拟地址空间布局(内核) 直接映射区:范围地址3G-3G+896M 高端内存896M以上,ZONE_HIGHMEM, 虚拟内存 vmalloc 动态映
目录 一、调度场景分析 不支持内核抢占的内核 支持内核抢占 二、如何让新进程执行 三、调度的本质 一、调度场景分析 假如内核只有3个线程,线程0创建线程1和线程2.当系统时钟到来时,时钟中断处理函数会检查是否有进程需要调度。当有进程需要调度时,调度器会选择线程1或者线程2。 执行流程:start_kernel运行在线程0里,线程0创建线程1和线程2。函数调用关系start_ke
目录 前言 创建新进程 创建方式 函数do_fork->__do_fork copy_process wake_up_new_task 装载程序 前言 在shell中执行./a.out程序的时候,内核是如何执行的? ret = fork() if(ret > 0) { //父进程 } else if(ret == 0)//子进程 {
目录 一、EfficientNet V1 二、EfficientNet V2 Fused-MBConv模块 三、源码 一、EfficientNet V1 1)Google2019发表的文章2)论文中提出,EfficientNet-B7在Imagenet top-1上达到了当年最高准确率84.3%3)与之前准确率最高的G
目录 Mobilenet简介 一、MobilenetV1 二、MobilenetV2 三、MobilenetV3 四、程序 Mobilenet简介 传统神经网络,内存需求大,运算量大。无法在移动设备以及嵌入式设备上运行。Mobilenet专注于移动端或者嵌入式设备中的轻量级CNN网络(相比VGG16准确率下降0.9%,但模型参数只有
python实现两层神经网络 # coding: utf-8 import sys, os sys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定 from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet:
Vgg网络 网络亮点 通过堆叠多个3x3的卷积核来代替大尺寸卷积核(减少参数) 堆叠两个3x3的卷积核代替一个5x5的卷积核,堆叠三个3x3的卷积核代替7X7卷积核 import torch.nn as nn import torch # official pretrain weights model_urls = { 'vgg11': 'h
1)均方误差(mean squared error) 程序实现 def mean_squared_error(y, t): return 0.5 * np.sum((y-t)**2) 举例: t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]#假设第二个位置为正确值,ont-hot显示 y1 = [0.1, 0.05, 0.6, 0
使用yolov3 模型进行实时目标检测 主芯片:Hisi3559A摄像头:imx214 使用海思VI-VPSS-VO进行实时检测 程序修改,将识别图片修改成实时识别视频 ****************************************************************************** * function : SAMPLE
Alexnet 网络模型 网络亮点 首次使用GPU进行网络加速训练(是cpu的20-50倍速度) 使用Relu激活函数,而不是传统的sigmoid激活函数及Tanh激活函数 使用LRN局部相应归一化 在全连接层的前两层使用了Dropout随机失活神经元操作,以减少过拟合 pytorch 模型实现 import torch.nn as nn import torch
softmax函数 >>> a = np.array([0.3,2.9,4.0]) >>> exp_a=np.exp(a) >>> print(exp_a) [ 1.34985881 18.17414537 54.59815003] >>> sum_exp_a = np.sum(exp_a) >>&
模型下载地址 mobileNet_ssd # USAGE # python deep_learning_object_detection.py --image 0.jpg \ # --prototxt MobileNetSSD_deploy.prototxt --model MobileNetSSD_deploy.caffemodel # import the necessary
前言 在以往修改内核驱动时,一般在源码里 arch/arm/boot/dts/文件下,有相应的设备树文件而使用petalinux后,在哪里修改,内核源码在哪里? 在使用petalinux-build后,会自动生成文件project-spec/meta-user/recipes-bsp/device-tree/files文件,在此文件夹下有system-user.dtsi,这个就
文章目录 简介 软件架构 petalinux工具 开发环境搭建 简介 MYC-CZU3EG 是深圳市米尔科技有限公司推出的一款以 Xilinx XCZU3EG 作为核心的嵌入式核心板。 采用了 Xilinx 最新的基于 16nm 工艺 Xilinx Zynq UltraScale+ MPSoC 平
目录 SD卡分区 QSPI emmc UBOOT环境 硬件:Xilinx ZynqMP 将BOOT.BIN image.ub烧录到 Qspi中,将rootfs与app烧了在emmc 升级方法:使用SD卡作为辅助工具,SD卡先要分区,FAT32 与 ext4 SD卡分区 使用 fdi
激活函数 激活函数必须为非线性函数,线性函数的问题在于,不管如何加深层数,等效于无隐藏层的神经网络。例如: 线性函数h(x) = cx作为激活函数,y(x) = h(h(h(x))) 三层神经网络,简化为y(x)=c_c_c*x,无法发挥多层网络带来的优势。 1)阶跃函数: # coding: utf-8 import numpy as np
内容列表 一、定时器任务 二、内存管理 三、中断管理 四、CPU使用率统计 一、定时器任务 创建定时器 TimerHandle_t xTimerCreate( const char * const pcTimerName,//定时器名 const TickType_t xTimerPeriodInTicks,//定时周期 con
内容列表 一、消息队列 二、信号量 三、互斥量 四、事件 五、通知 一、消息队列 消息队列是一种常用于任务间通信的数据结构, 队列可以在任务与任务间、中断和任务间传递信息。读写队列均支持超时机制。 1、创建队列 QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength,//队列长度 UBaseT
任务 每个 FreeRTOS 任务都需要有自己的栈空间。当任务切出时,它的执行环境会被保存在该任务的栈空间中,这样当任务再次运行时,就能从堆栈中正确的恢复上次的运行环境,任务越多,需要的堆栈空间就越大,而一个系统能运行多少个任务,取决于系统的可用的 SRAM。 FreeRTOS 中的任务是抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。
源码 FreeRTOS源码选择 FreeRTOS 的最新版本 V9.0.0(2016 年)比较稳定 1)解压后的文件 提取的文件,FreeRTOS—>Source->portable目录下的MemMang,RVDSMemMang 存放内存相关的源文件,heap_1.c,heap_2.c,heap_3.c,heap_4.c,heap_5.c,RVDS 存放Cortex-M系列的文件
内容列表 简介 ESP8266介绍 模块参数 无线组网方式 AT指令 STM32连接模块与配置 GPIO配置 USART配置 中断函数 ESP8266使用流程 简介 文章介绍了ESP8266的特性以及连网模式(AP,station),使用串口(USART)接入STM32,实现连网功能。 ESP8266介绍 esp8266 内置超低
内容列表 OLED特性 手册说明 GDDRAM寻址模式(0x20) I2C地址与时序 软件配置 I2C的配置 OLED初始化过程 显示中文 显示英文 显示图片 OLED特性 型号:SSD1306 SSD1306是一款单芯片CMOS OLED/PLED驱动器,带有用于有机/聚合物发光二极管点阵式图形显示系统的控制器。它由128个段和6
内容列表 特性 引脚说明 使用I2C软件,驱动mpu6050 手册中寄存器描述 MPU6050初始化的步骤: 数据读取 mpu6050输出的值 特性 MPU6050 ,能同时检测三轴加速度、 三轴陀螺仪(三轴角速度)的运动数据以及温度数据。利用其内部的 DMP 模块(Digital Motion Processor 数字运动处理器) ,可对传感器数据进
内容列表 ATGM332D简介 特性 引脚接入 串口通信 NMEA 协议解析 串口输出 nmealib在linux下使用 ATGM332D简介 高性能、低功耗 GPS、北斗双模定位模块 特性 特性 说明 基本功能 三维位置定位(经纬度、海拔),测速,授时 导航系统 GPS、北斗 BDS(双模) 支持辅
原理 人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10um 左右的红外线。人体发射的 10um 左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路检测处理后就能产生报警信号。 实物图(正反面) 型号:HC-SR50 传感器特性 工作电压范围 直流电压 4.5-20V 电平输出 高 3.3
原理 光敏电阻将光强转换成电压信号;有强时 DO 输出低电平,光弱时 DO 输出高电平; 电源接 5V 时,DO 输出的是 2.6V不同强度的光强,可以通过调节滑块来改变 光敏电阻实物图 引脚说明 名称 Value VCC 电源(5V) GND 地线 OD 输出信号 实现功能 有光时,开发版的LED
内容列表 元器件图 DS18B20 特点 DS18B20内部结构 初始化时序 读时序 写时序 参考顺序 匹配ROM 跳过ROM 元器件图 DS18B20 特点 DS18B20 单线数字温度传感器,即“一线器件” 采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 测量温度范围宽,测量精
内容列表 手册中的指令 读取Flash ID函数 读取Device ID 扇区擦除 对Flash写操作 整页写 不固定数据量 读数据 手册中的指令 第一列代表指令名(写使能,读状态,写状态,擦除) 第二列代表指令码,程序中使用此进行操作 第三列至N列,带括号的字节参数,方向为 FLASH 向主机传输,即命令响应。不带括号的则为主机向 FLAS
内容列表 前言 一、NVIC 嵌套向量中断控制器 二、EXIT 外部中断控制器 三 、外部中断实验 1) 初始化用来产生中断的GPIO 2)初始化EXTI 3)配置NVIC 4)编写中断服务函数 前言 上一节中没有使用中断,这小节将使用中断,按键按下,触发中断,中断事情在中断服务函数中处理 一、NVIC 嵌套向量中断控制器 NVI
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信