- 博客(100)
- 资源 (2)
- 收藏
- 关注
原创 ubuntu解压window压缩的zip文件乱码解决
解压时加入制定编码unzip -O GBK ~.ziporunzip -O GB18030 ~.zip(-O,是大写的O)
2022-03-12 22:38:27
377
原创 ARM-寄存器
1.程序计数器R15(PC)当正确的读取了PC值时,该值为当前指令地址值加8个字节,也就时当前指令的下两条指令的地址当向PC写入一个地址时,程序将跳转到该地址执行2.程序状态寄存器用户模式和系统模式不是异常中断模式,所以它们没有SPSR。...
2021-10-24 15:48:44
122
原创 ubuntu20.04双系统
1.在磁盘管理界面删除卷以获得活动空间,如果删除以后磁盘显示未分配,那就需要使用分区软件先将显示未分配的磁盘转成逻辑空间,然后在转成活动空间。因为Ubuntu只能安装在活动空间,不能安装在未分配空间。分区软件一般在制作windows系统的启动盘里会自带2.下载Ubuntu镜像3.使用rufus工具来制作U盘启动盘,注意不能使用UltraISO工具来制作,我的环境用UltraISO制作以后安装ubuntu有问题4.进入bios,使用usb启动,注意这里选择usb启动的时候有两个选项,一个是带EFI的,
2021-08-14 14:33:43
272
原创 linux内核—逻辑地址/线性地址/物理地址 转换
概念1.逻辑地址包含在机器语言指令中用来指定一个操作数或一条指令的地址。每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离2.线性地址即虚拟地址,是一个32位无符号整数,用来表示4G的地址3.物理地址实际内存芯片上的地址在linux中,由于所有的段都是从0x00000000开始,所以逻辑地址和线性地址是相同的,也就是在linux中忽略逻辑地址这个概念即可线性地址转换物理地址linux使用三级页表转换,与二级页表转换原理相似,以下按二级页表说明32位线性地址
2021-08-09 16:28:28
711
转载 linux内核—switch_to三个参数
该宏有三个参数:prev, next, last。它们都是局部变量。prev:输入参数,变量值为旧进程描述符的地址。next:输入参数,变量值为新进程描述符的地址。last:输出参数,用来记录该进程是由哪个进程切换而来的,即保存 在当前进程之前 占用cpu的进程的 进程描述符地址。为什么需要last这个局部变量呢?因为:首先,记录前一进程的进程描述符地址,对进程切换是很有用的,具体什么用途,以后再说。其次,switch_to宏由就进程调用,在新进程结束,新进程如果想获取旧进程描述符地址,不能直接
2021-08-01 17:41:40
1138
转载 八大排序算法
汇总带动图的:https://www.cnblogs.com/zjp-blog/p/12186232.html1.插入排序void insert(){ int i, j, k; int tmp; int buf[12] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; int cnt = 11; for(i = 1; i < cnt; i++) { tmp = buf[i]; for(j = i; j > 0 &&
2021-05-25 16:09:08
168
原创 动态内存(堆)与物理内存的关系
偶然发现一个问题,我的板子是32位,1.5G物理内存,但程序有时最多动态申请1G多的内存(即将物理内存耗尽),有时却可以申请超过物理内存很多的动态内存下面测试验证:程序大意为开两个进程,父子进程同时申请动态空间直到申请失败,这时程序不退出,使用free命令和cat /proc/meminfo命令查看内存情况先看测试程序运行前的内存情况,可以看到总物理内存1.5G左右,可用1.3G左右,注意Committed_AS参数的变化:freecat /proc/meminfo测试一:void fork
2021-05-21 14:38:55
844
1
转载 ts与h264关系
ts文件为传输流文件,视频编码主要格式h264/mpeg4,音频为acc/MP3。详见https://blog.youkuaiyun.com/heiyeshuwu/article/details/52316738
2021-05-11 13:43:58
1189
原创 ffmpeg交叉编译
1.依赖libx2641)下载libx264源码2)./configure --enable-static --enable-shared --disable-asm --prefix=/home/chens/work/env/x264/output --host=arm-linux如果报错:endian test failed,换台电脑或虚拟机,环境的问题,不知道什么原因3)按下图修改config.mak文件,注意:AR=arm-hisiv300-linux-ar rc rc后面一定要有空格
2021-04-26 19:25:50
5076
原创 SDL1.2 交叉编译
SDL2交叉编译报错一直解决不了,放弃SDL1.2交叉编译配置./configure --disable-video-qtopia --disable-video-dummy --disable-video-fbcon --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-cdrom --disable-video-x11 --disable-nasm --enable-video-fbcon --enabl
2021-04-26 11:18:38
413
转载 h.264(2)——VCL/NAL/切片/宏块
参考:https://blog.youkuaiyun.com/weixin_30249203/article/details/98511939https://blog.youkuaiyun.com/yanghangwww/article/details/103676530?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.42421.VCL与NALH.264的功能分两层:VCL(Video Code
2021-04-22 17:15:06
1217
原创 h.264(1)——基础
1.压缩比相对于YUV420,压缩比为1/1002.GOP一组相关性很大的分组,每个GOP分组的开头都是IDR帧3.帧I帧:关键帧,帧内压缩IDR帧:特殊的I帧,解码器立即刷新,清空解码器参考buffer中的内容,GOP第一帧就是IDR帧P帧:向前参考帧,帧间压缩,占I帧大小一半B帧:双向参考帧,帧间压缩,占I帧大小1/4先解码I帧,再解码P帧,最后解码B帧,B帧依赖于I帧与P帧...
2021-04-22 16:45:17
110
原创 视频基础
1.RGB与BGR两个数据存放数据顺序不同,会导致一些播放器不能正常播放,一般播放器都支持RGB格式。BMP文件就是使用的BGR,显示前需要转换成RGB2.屏幕指标PPI:一英寸内的像素数3.码流常见宽高比:16:9、4:3常见帧率:15帧/s,30帧/s,60帧/sRGB码流 = 宽 * 高 * 3字节 * 帧率YUV4:2:0码流 = 宽 * 高 * 1.5字节 * 帧率4.YUVY:明亮度UV:色彩和饱和度标准使用YUV4:2:0YUV420 = Y * 1.5字节YU
2021-04-22 16:29:03
135
原创 emscripten c文件转js
1.创建example5.cc文件#include <stdlib.h>#include <string.h>#include <stdio.h>extern "C" { double SquareVal(double val) { return val * val; }}2.使用emcc编译注意-s EXTRA_EXPORTED_RUNTIME_METHODS=’[“ccall”, “cwrap”]’ -s WASM=0 一定要加上,否
2021-04-22 13:28:37
672
原创 网络编程(十一)——名字与地址转换
注:gethostbyname gethostbyaddr不可重入;gethostbyname_r gethostbyaddr_r可重入;getaddrinfo可重入1.gethostbynamegethostbyname gethostbyaddr不可重入2.gethostbyaddr3.getservbyname&getservbyport4.getaddrinfogetaddrinfo可重入...
2021-03-30 09:10:19
133
原创 网络编程(十)——udp基本编程
1.缓冲区udp并没有实际的缓冲区,所以只要设置的udp缓冲区大小大于发送缓冲区低水位就一直可写,udp调用write成功返回表示所写的数据报已被加入链路层的输出队列。如果该队列没有足够空间,内核通常返回ENOBUFS错误,或根本不返回错误。当udp写入一个大于发送缓冲区大小的数据时,会返回EMSGSIZE错误udp没有流量控制,当发送端发送数据快于接收端时,当接收端接收缓冲区满后,后面再发送的数据都会被丢弃2.发送3.connect4.性能...
2021-03-29 19:04:11
373
原创 网络编程(三)——tcp基本编程
1.ipv4结构2.socket3.connect4.bindbind就是把ip和端口绑定到套接字上客户端可以不调用bind绑定端口,内核会临时分配一个,但是服务器不能不绑定端口,如果不绑定那客户端就没法连到服务器5.listen6.accept7.closefork后,父进程打开的描述符被复制到子进程一份,所以这些文件描述符的引用计数为2.只有父子进程都关闭该描述符,该描述符才会真正被关闭...
2021-03-26 16:39:59
100
转载 结构体对齐计算
转:https://blog.youkuaiyun.com/u011404495/article/details/54837797原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。比如此例,首先系统会将字符型变量a存入第0个字节(相对地址,指内存开辟的首地址);然后在存放整形变量b时,会以4个字节为单位进行存储,由于第
2021-03-26 16:33:27
91
原创 网络编程(二)——tcp、udp基础
1.ipv4数据包最大大小是65535字节,包括ipv4首部2.最大传输单元MTU通常为1500字节,IPv4要求的最小链路MTU是68字节,这是允许最的IPv4首部拼接最小的片段,当一个IP数据包大小超过MTU时,将会分片3.TCP中的MSS(最大分节大小),用于向对端通告对端在每个分节中能发送的最大数据量4.tcp发送缓冲区...
2021-03-26 14:42:04
441
原创 linux Qt动态打包运行报错问题解决
按照网上编写脚本动态打包后,拿到其他电脑上运行,会报一个xcb相关的错误,这是由于qt可执行程序依赖libqxcb.so,而这个库又依赖于libQt5XcbQpa.so.5,从Qt安装目录下搜到这个库拿过来即可
2021-03-25 13:46:13
507
转载 网络编程(五)——SIGPIPE
转:https://blog.youkuaiyun.com/u010821666/article/details/81841755产生SIGPIPE的原因SIGPIPE信号产生的原因:简单来说,就是客户端程序向服务器端程序发送了消息,然后关闭客户端,服务器端返回消息的时候就会收到内核给的SIGPIPE信号。TCP的全双工信道其实是两条单工信道,client端调用close的时候,虽然本意是关闭两条信道,但是其实只能关闭它发送的那一条单工信道,还是可以接受数据,server端还是可以发送数据,并不知道clien
2021-03-18 10:01:16
351
ARM上电启动及Uboot代码分析.pdf
2020-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人