计算机基础
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
流媒体RTSP 协议
序列号(seq):占16位,⽤于标识发送者所发送的RTP报⽂的序列号,每发送⼀个报⽂,序列号增1。时戳(Timestamp):占32位,时戳反映了该RTP报⽂的第⼀个⼋位组的采样时刻。PT: 有效载荷类型,占7位,⽤于说明RTP报⽂中有效载荷的类型,如GSM⾳频、JPEM图像等。P:填充标志,占1位,如果P=1,则在该报⽂的尾部填充⼀个或多个额外的⼋位组,它们不是有效载荷。M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记⼀帧的结束;CC:CSRC计数器,占4位,指示CSRC 标识符的个数。原创 2023-07-27 00:44:32 · 248 阅读 · 0 评论 -
pcie 链式DMA总结
XAPP1052我们学过每一次DMA请求开始后,只能传输PC 1个连续的物理内存块,如果要传输下一个内存块,则必须重新初始化内存并配置好DMA寄存器,再次启动DMA才可以完成。我们知道驱动申请一块连续的物理内存是否成功取决于系统内存大小,应用进程的多少等等因素,所以XAPP1052一次DMA的传输的最大值是不确定的。我在测试时,主机为2GB内存、开的应用也不多的情况下申请连续的4MB内存会时常失败。转载 2022-08-25 00:42:32 · 967 阅读 · 0 评论 -
硬件调试总结
1 该模块时钟没有使能,则不能访问该模块地址。原创 2022-08-24 23:30:09 · 160 阅读 · 0 评论 -
数据类型大小 printf()函数输出数据格式汇总
d,十进制整型;------->有符号的十进制整型%ld,十进制长整型;%3d,位数为3,不足在左边补空格;%-3d,位数为3,不足在右边补空格;(-可以理解为非,默认是在左边加0和空格的,-表示不是在左边,那就是在右边了?)%05d,位数为5,不足的在左边补0 //不可能在右边补0%u,无符号十进制整型;%lu,无符号十进制长整型;%o,无符号八进制整型;//形如012%lo,无符号八进制长整型;%x,无符号十六进制整型;//形如0x12%X,无符号十六进制整型大写;...转载 2022-08-22 23:20:47 · 1098 阅读 · 0 评论 -
cache 跟 TLB
cpu 会传输消息给 TLB 跟 cache。TLB 存在的是一些页表。页表为虚拟地址跟物理地址的对应关系。cpu操作的是虚拟地址。参考:TLB的含义、作用和实现。原创 2022-05-23 00:53:02 · 536 阅读 · 0 评论 -
Makefile 文件 configure可执行文件 跟 CFLAGS 参数
在使用 configure 进行交叉编译的时候,要指定交叉编译工具链。同时可能要指定一些参数交叉编译的参数。例如常见的Makfile 文件CC = arm-poky-linux-gnueabi-gccOTHER_HEADERS = ../../mjpg_streamer.h ../../utils.h ../output.h ../input.hCFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPICCFLAGS += -march=ar原创 2022-04-21 06:57:36 · 3429 阅读 · 0 评论 -
交叉编译工具链总结
1我们都知道如果使用gcc进行编译,那么在编译过程中,会去 /usr/include 索引头文件,会去/usr/lib 索引依赖库那么我们用交叉编译工具链的时候,去哪里索引头文件 跟 依赖库呢?这就需要 --sysroot先参考一篇文章:gcc交叉编译时设置了“–sysroot“会产生哪些影响接着看一个脚本SDKTARGETSYSROOT 是我编译生成的交叉编译工具链的目录export CC=“arm-poky-linux-gnueabi-gcc -march=armv7ve -mfp原创 2022-04-20 08:13:01 · 1248 阅读 · 0 评论 -
recv 实际问题
1 recv 如何设置超时1 首先说明一样,跟第四个参数关系不大2 函数填写位置3 打印 error 需要的库struct timeval timeout={3,0};//3sssize_t ret1;int ret=setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(const char*)&timeout,sizeof(timeout)); //在recv 之前设置就行if (ret != 0) printf("setsockopt fa原创 2022-03-26 21:25:10 · 495 阅读 · 0 评论 -
ASCII码
原创 2022-03-07 23:09:03 · 79 阅读 · 0 评论 -
宏定义使用
1 需要很多 if 进行判断,感觉用起来不太好看所以#include<stdio.h> #define MWE(A,B) {if(A) {B}}int add(int a,int b){ int c= a+b; printf("value is %d\n",c);}int main(void){ MWE(1,printf("hello\n");); MWE(0,add(2,5);); MWE(1,add(5,5);); }但是感觉原创 2021-03-01 22:46:53 · 93 阅读 · 0 评论 -
结构体的函数指针成员使用
1 #include<stdio.h> 2 struct qwer 3 { 4 int a; 5 void (*b)(struct qwer); //定义函数指针变量 6 }; 7 void myprintf(struct qwer a) 8 { 9 printf("myprintf is %d\n",a.a); 10 } 11 int main() 12 { 13 struct qwer a={1,myprintf}; ..原创 2020-06-06 13:19:13 · 830 阅读 · 0 评论 -
关于现场保护
今天看到一个篇,现场保护的文章Linux kernel 笔记 (53)——为什么“interrupt handler”不能被抢占?https://nanxiao.me/linux-kernel-%e7%ac%94%e8%ae%b0-%ef%bc%8853%ef%bc%89-%e4%b8%ba%e4%bb%80%e4%b9%88interrupt-handler%e4%b8%8d%e8%83%b...原创 2020-04-23 20:20:14 · 608 阅读 · 0 评论 -
printf 可以实现的数据格式转换- - -fprintf 应该也可以使用
#include<stdio.h>int main(){ int a=41; printf("a=%#o\n",a); printf("a=%#d\n",a); printf("a=%#x\n",a);}打印a=051a=41a=0x29原创 2020-03-24 09:16:14 · 266 阅读 · 0 评论 -
事件标志组一般是如何 置1和清0的
1 #include<stdio.h> 2 int main() 3 { 4 int a=0xaa; 5 a|=0x55; 6 printf("a is %x\n",a); 7 a=0xaa; 8 a&=~(0xa); 9 printf("a is %x\n",a); 10 }注意写法a|...原创 2020-03-24 00:03:35 · 256 阅读 · 0 评论 -
static修饰局部变量
static 修饰局部变量{…static int a = 10; //初始化 a为10 只能初始化一次在整个进程中,这么使用一般作为被调用的函数static int b; //初始化 b为0…}资料c语言变量的初始化和赋值的区别C语言:static作用(修饰函数、局部变量、全局变量...原创 2020-03-19 10:08:54 · 514 阅读 · 0 评论 -
wifi 模块为 ap 模式服务器 端 笔记本为 station 模式客户端
客户端可以多次连接服务器端服务器端#include <stdio.h>#include <sys/types.h> #include <sys/socket.h> //socket()#include <stdlib.h> //exit()#include <netinet/in.h> //socka...原创 2020-03-18 22:40:49 · 294 阅读 · 0 评论 -
链接脚本总结
1SECTIONS { .text 0 : { *(.text) } .rodata : { *(.rodata) } .data 0x30000000 : AT(0x800) { *(.data) } //这句话意思是 .data代码段数据放到 0x800这个地址,但是程序运行的时候要去 0x30000000去找。所以需要重定位把 0x800的数据移动到 0x3...原创 2020-03-12 23:45:59 · 411 阅读 · 0 评论 -
gpio 上拉下拉
链接http://m.elecfans.com/article/577391.html原创 2020-03-02 21:06:20 · 472 阅读 · 0 评论 -
linux 安装软件
1./configure --host=arm-linux --prefix=$PWD/tmp //创建到当前文件夹,tmp目录下2make3make install原创 2020-02-06 17:22:19 · 100 阅读 · 0 评论 -
什么是MSB、LSB,什么是大端、小端,区别是什么?
MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位。计算机业界,端表示数据在存储器中的存放顺序。大端与小端是两种数...原创 2020-02-03 07:26:37 · 28975 阅读 · 0 评论 -
static关键词用法
static void usbmouse_as_key_irq(struct urb *urb){ int i; static int cnt = 0;// 此处使用 static 可以不用定义全局变量,蠢逼老用 printk("data cnt %d: ", ++cnt); for (i = 0; i < len; i++) { printk("%02x ", usb...原创 2020-02-01 10:19:00 · 185 阅读 · 0 评论 -
取寄存器的值
int r = (rgb >> 16)& 0xff; int g = (rgb >> 8) & 0xff; int b = rgb & 0xff;因为取八位的值,所以用 0xff ,1111 1111 八个1,那么只取原创 2020-02-01 08:44:10 · 2167 阅读 · 0 评论 -
取寄存器的值
int r = (rgb >> 16)& 0xff; int g = (rgb >> 8) & 0xff; int b = rgb & 0xff;因为取八位的值,所以用 0xff ,1111 1111 八个1,那么只取 8个数。剩下的全部丢掉...原创 2020-01-28 08:26:35 · 2136 阅读 · 0 评论 -
例子根据寄存器地址进行移位
/* [31:24] : VBPD = tvb - 1 * [23:14] : LINEVAL = line - 1 * [13:6] : VFPD = tvf - 1 * [5:0] : VSPW = tvp - 1 */ LCDCON2 = ((plcdparams->time_seq.tvb - 1)<<24) | \ ...原创 2020-01-27 14:51:50 · 408 阅读 · 0 评论 -
三目运算符
int bppmode = plcdparams->bpp == 8 ? 0xb :\ plcdparams->bpp == 16 ? 0xc :\ 0xd; /* 0xd: 24,32bpp */三目运算符 赋值寄存器原创 2020-01-27 10:53:54 · 168 阅读 · 0 评论 -
typedef使用结构体
typedef struct lcd_controller{void (*init)(p_lcd_params plcdparams);void (*enable)(void);void (*disable)(void);}lcd_controller,*p_lcd_controller;1 这样就可以使用 cd_controller 和 *p_lcd_contro...原创 2020-01-27 08:13:55 · 137 阅读 · 0 评论 -
#ifndef #define #endif
这一套组合,正常的话,1 只会出现在 .h 文件2 只会用一次3 定义只是库文件名字原创 2020-01-27 06:52:25 · 111 阅读 · 0 评论 -
因为串口协议 所以内部电阻要拉高
#include "s3c2440_soc.h"/* 115200,8n1 */void uart0_init(){ /* 设置引脚用于串口 */ /* GPH2,3用于TxD0, RxD0 */ GPHCON &= ~((3<<4) | (3<<6)); GPHCON |= ((2<<4) | (2<<6)); GP...原创 2020-01-22 19:32:33 · 689 阅读 · 0 评论 -
python脚本运行可执行文件
############## python ################import osdevice = r'USBSTOR\DISK&VEN_GENERIC-&PROD_SD/MMC&REV_1.00\20100818841300000&0'blocksieze = '32KB'time = '00:00...原创 2020-01-14 22:58:20 · 492 阅读 · 0 评论 -
c语言 宏定义竟然这么灵活
#if #else #endif竟然可以包含宏定义 以前没怎么注意原创 2019-12-10 13:50:11 · 150 阅读 · 0 评论 -
忘记板子ip地址
树莓派忘记ip,但是跟主句在同一网段。找到地址的方法是 arp -a 得到所有的已用ip地址原创 2019-12-02 17:22:30 · 770 阅读 · 0 评论 -
arm-none-eabi把 elf 文件转换成 bin hex文件
转 hexarm-none-eabi-objcopy -O ihex audio_lib.elf 1.hex转 binarm-none-eabi-objcopy -O binary audio_lib.elf 1.bin原创 2019-12-02 11:40:03 · 2406 阅读 · 0 评论 -
结构体指针 a 成员 b(数组)的第 n个数据 怎么表示
a->b[n]原创 2019-11-16 09:43:43 · 409 阅读 · 0 评论 -
批处理
批处理 .bat 注释要注释的语句 前面加 :: 或者 rem 都行,都可以实现注释语句的作用原创 2019-10-14 11:25:16 · 127 阅读 · 0 评论 -
将地址强制转换为指针
在C和C++中可以将地址强制转化为指针假设一个32为的地址为0x12345678,这个是16进制表示,如果转化为二进制就是10010001101000101011001111000,也就是32个位。int *p,a;p = (int *)0x12345678;这样就把0x12345678这个地址强制转化为了指针,通过下面这个这句语句可以将地址中的值读取出来。a = *p;这样就把0x1...转载 2019-07-22 11:49:33 · 5609 阅读 · 0 评论 -
如何将数的第n位 置0 或者 置1,查询第n位是否为0
一 先 让 1 向左移 n-1位得到 a;二 如果置1 那么就 数 | a;三 如果置 0 那么 就 数 &(~a)原创 2019-08-07 09:00:35 · 1573 阅读 · 1 评论 -
宏定义printf 实现打印自由
#define DEBUG 1#if DEBUG#define DEBUG(…) printf(VA_ARGS)#else#define DEBUG(…)#endif原创 2019-08-07 12:35:06 · 443 阅读 · 0 评论 -
关于查找定时器中断的小方法
1 如果初始化定时器 ,里面会加一个清除标志位的2 然后 中断函数要加上 清除标志位 那么就知道 初始化函数的跟中断函数的关系啦原创 2019-08-07 16:38:00 · 487 阅读 · 0 评论 -
c语言 特别注意
1 switch 参数的类型 只能是 int char。2 用变量a给出下面的定义a) 一个整型数(An integer)b)一个指向整型数的指针( A pointer to an integer)c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)rd)一个有10个整型数的数组( An array of...原创 2019-08-15 11:56:37 · 107 阅读 · 0 评论 -
写 链表 注意事项
1 struct MyStruct{int num;struct MyStruct *point;};point 自己调用自己类型,在vs 上实验,当 point 没有 * 的时候报错,有的时候 不报错;原创 2019-08-26 10:08:45 · 374 阅读 · 0 评论