摘要:
目的:修改AC3编码的描述子标准,根据客户需求提供欧标和美标选项进行设定。 ac3格式: ATSC标准:ac3的stream_type =0x81, descriptor_tag =none DVB标准: ac3的stream_type =0x06, descriptor_tag =0x6a eac3格式 ATSC标准:eac3的stream_type = 0x87, descripto... 阅读全文
posted @ 2020-03-23 16:53
standardzero
阅读(1028)
评论(0)
推荐(0)
摘要:
调用setsockopt接口设置缓冲区方法: int nRecvBuf=1024*1024;//设置为1M setsockopt(s32Sockfd,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)); 调用ffmpeg接口设置接收缓冲区方法: AVDictionary *dic = NULL; av_dict_set(&... 阅读全文
posted @ 2020-03-23 16:52
standardzero
阅读(4354)
评论(0)
推荐(0)
摘要:
废话少说,直接贴上代码。 decode_yuv.c /* * ===================================================================================== * * Filename: decode_yuv.c * * Description: * * Version... 阅读全文
posted @ 2020-03-23 16:49
standardzero
阅读(3236)
评论(0)
推荐(0)
摘要:
首先需要确保FFMPEG是否已经安装libx264。 废话少说,直接贴上代码。 encode_yuv.c #include #include #include #include #include #include #include void usage(void) { printf("./encode_yuv input_file.yuv width hei... 阅读全文
posted @ 2020-03-23 16:47
standardzero
阅读(952)
评论(0)
推荐(0)
摘要:
1.将mp3文件转换为pcm文件2.贴上代码3.编译4.执行TOC 1.将mp3文件转换为pcm文件 ffmpeg -i test.mp3 -f s16le test.pcm 2.贴上代码 aac.c #include #include #include #include #include SwrContext *g_swr_ctx = NULL; static int... 阅读全文
posted @ 2020-03-23 16:45
standardzero
阅读(1345)
评论(0)
推荐(0)
摘要:
1.变量运算2.条件分支语句3.循环语句4.函数5.read 使用6.sort 使用7.grep 使用8.sed 使用9.awk 使用10.获取当前脚本所在的绝对路11. 批量替换文件里面的内容12. 如何判断一个变量是否被赋值TOC 1.变量运算 特殊变量 $0:当前脚本变量名字 $n:传入脚本或函数的第几个参数 $#:传输脚本或函数的参数个数 $*:传给脚本或函数的所有参数 $@... 阅读全文
posted @ 2020-03-23 16:30
standardzero
阅读(221)
评论(0)
推荐(0)
摘要:
一般形式: printf("格式控制字符串",输出列表); 格式控制字符串形式: [标志][输出最小宽度][.精度][长度][类型] 特殊符号使用:* printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个*代替那个常量,然后在后面提供变量给*。 类型: d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前... 阅读全文
posted @ 2020-03-23 16:01
standardzero
阅读(1586)
评论(0)
推荐(0)
摘要:
1. API2. 源码3. 对system进行封装TOC 1. API #include int system(const char *command); 注: 这个函数的作用相当于,在shell下执行command命令 2. 源码 int system(const char * cmdstring) { pid_t pid; int status... 阅读全文
posted @ 2020-03-23 15:58
standardzero
阅读(232)
评论(0)
推荐(0)
摘要:
TOC 程序异常退出大部分都是系统发出的信号导致的,程序收到某些信号退出时,会产生core文件,如段错误信号SIGSEGV;但是某些信号不会产生,core文件,程序收到此类信号默认退出,排查这类问题时,会抓不到方向。 因此有必要对这类信号,进行捕获并记录日志。linux有一套处理信号的API。 样例 #include #define ARRAY_SIZE(arr) (sizeof((... 阅读全文
posted @ 2020-03-23 15:57
standardzero
阅读(128)
评论(0)
推荐(0)
摘要:
container_of(ptr, type, member):通过计算member的地址, 获取 ptr 所在的结构体type的首地址。 #define container_of(ptr, type, member) ({ \ const typeof(((type *)0)->member) *__mptr = (ptr);\ (type *)((cha... 阅读全文
posted @ 2020-03-23 15:56
standardzero
阅读(311)
评论(0)
推荐(0)
摘要:
1. 从linux内核源码拿到list.h 从linux内核拿到的源码需要添加相关的宏变量 直接可以使用的list.h #ifndef _LINUX_LIST_H #define _LINUX_LIST_H #include #include #include #include # define POISON_POINTER_DELTA 0 #define LIST_POIS... 阅读全文
posted @ 2020-03-23 15:54
standardzero
阅读(1284)
评论(0)
推荐(0)
摘要:
1.异步IO概念 在传统的 I/O 模型中,有一个使用惟一句柄标识的 I/O 通道。在 UNIX 中,这些句柄是文件描述符(这对等同于文件、管道、套接字等等)。在阻塞 I/O 中,我们发起了一次传输操作,当传输操作完成或发生错误时,系统调用就会返回。 在异步非阻塞 I/O 中,我们可以同时发起多个传输操作。这需要每个传输操作都有惟一的上下文,这样我们才能在它们完成时区分到底是哪个传输操作完成了... 阅读全文
posted @ 2020-03-23 15:51
standardzero
阅读(1556)
评论(0)
推荐(1)
摘要:
net.h /* * ===================================================================================== * * Filename: net.h * * Description: * * Version: 1.0 * Created: 07... 阅读全文
posted @ 2020-03-23 15:47
standardzero
阅读(2032)
评论(0)
推荐(0)
摘要:
前言编写简单的自定义驱动创建相关目录和文件关联上一级目录的Kconfig和Makefile配置&编译TOC 前言 在了解了Kconfig和Makefile的相关原理后,是不是有种在源码上自定义驱动的冲动。 放心,接下来,我会满足你的小小欲望。 编写简单的自定义驱动 hello_dev.c #include #include #include #include #... 阅读全文
posted @ 2020-03-23 11:40
standardzero
阅读(404)
评论(0)
推荐(0)
摘要:
前言语法Makefile 语法Kconfig 语法.configTOC 前言 要想了解内核的编译过程,分析这三个文件的作用是很有必要的。 三者的作用: 简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜。 Makefile:一个文本形式的文件,编译源文件的方法。 Kconfig:一个文本形式的文件,内核的配置菜单。 .config:编译内... 阅读全文
posted @ 2020-03-23 11:39
standardzero
阅读(1367)
评论(0)
推荐(0)
摘要:
Makefile #**************************************************************** # * # Makefile for MB86M01/M02/M03 driver * ... 阅读全文
posted @ 2020-03-23 11:38
standardzero
阅读(211)
评论(0)
推荐(0)
摘要:
1. 根据硬件工程生成设备数文件 dts / { amba_pl: amba_pl { #address-cells = ; #size-cells = ; compatible = "simple-bus"; ranges ; axi_timer_0: timer@42800000 { ... 阅读全文
posted @ 2020-03-23 11:37
standardzero
阅读(289)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2020-03-23 11:35
standardzero
阅读(104)
评论(0)
推荐(0)
摘要:
不是所有的驱动程序都必须有自己的工作队列。驱动程序可以使用内核提供的缺省工作队列。由于这个工作队列由很多驱动程序共享,任务可能会需要比较长一段时间才能开始执行。为了解决这一问题,工作函数中的延迟应该保持最小或者不要延时。 需要特别注意的是缺省队列对所有驱动程序来说都是可用的,但是只有经过GP许可的驱动程序可以用自定义的工作队列。 创建工作队列 每个工作队列有一个专门的线程,所有来自运行队... 阅读全文
posted @ 2020-03-23 11:31
standardzero
阅读(225)
评论(0)
推荐(0)
摘要:
1. 相关接口2. 代码样例3. 编译运行TOC 1. 相关接口 module_param(参数名,参数类型,参数读/写权限) module_param_array(数组名,数组类型,数组长,参数读/写权限) 说明: 参数和参数类型,需保持一致 参数类型有: byte、short、ushort、int、uint、long、ulong、charp(字符指针)、bool 或 invboo... 阅读全文
posted @ 2020-03-23 11:30
standardzero
阅读(389)
评论(0)
推荐(0)
摘要:
旋锁和信号量都是解决互斥问题的基本手段,面对特定的情况,应该如何进行选择呢? 选择的依据是临界区的性质和系统的特点。 从严格意义上说,信号量和自旋锁属于不同层次的互斥手段,前者的实现依赖于后者。在信号量本身的实现上,为了保证信号量结构存取的原子性,在多CPU 中需要自旋锁来互斥。 信号量是进程级的,用于多个进程之间对资源的互斥,虽然也是在内核中,但是该内核执行路径是以进程的身份,代表进程来争... 阅读全文
posted @ 2020-03-23 11:29
standardzero
阅读(298)
评论(0)
推荐(1)
摘要:
短延时(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsigned long msecs); 长延时(忙等) void msleep(unsigned int millisecs); unsigned long msleep_interruptible(uns... 阅读全文
posted @ 2020-03-23 11:28
standardzero
阅读(195)
评论(0)
推荐(0)
摘要:
1. 相关接口和结构体2. 驱动代码示例3. 应用层测试代码TOC 1. 相关接口和结构体 接口: //初始化接口 int fasync _ helper(int fd, struct file *filp, int mode, struct fasync _ struct **fa); //释放信号接口 void kill _ fasync(struct fasync _ struct... 阅读全文
posted @ 2020-03-23 11:27
standardzero
阅读(248)
评论(0)
推荐(0)
摘要:
1. eventfd 事件通知 eventfd 事件通知不仅可以用于线程间的事件通知,还可以用于内核和用户空间的事件通知。 2. eventfd 用户空间API #include //创建事件通知句柄,可以被read 和 write 函数使用 int eventfd(unsigned int initval, int flags); Linux shell下 输入 man event... 阅读全文
posted @ 2020-03-23 11:22
standardzero
阅读(1645)
评论(0)
推荐(0)
摘要:
1. 定时器简介2. jiffies 变量3.定时器相关API4. 驱动例程TOC 1. 定时器简介 软件上的定时器最终要依靠硬件时钟来实现,简单的说,内核会在时钟中断发生后检测各个注册到内核的定时器是否到期,如果到期,就回调相应的注册函数,将其作为中断底半部来执行。实际上,时钟中断处理程序会触发TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。设备驱动程序如要获得时间信息以... 阅读全文
posted @ 2020-03-23 11:20
standardzero
阅读(375)
评论(0)
推荐(0)
摘要:
1.ioctl 简介2.ioctl 函数实现模板TOC 1.ioctl 简介 ioctl是Linux专门为用户层控制设备设计的系统调用接口,这个接口具有极大的灵活性,我们的设备打算让用户通过哪些命令实现哪些功能,都可以通过它来实现,ioctl在操作方法集中对应的函数指针是long (*unlocked_ioctl) (struct file *, unsigned int, unsigned ... 阅读全文
posted @ 2020-03-23 11:18
standardzero
阅读(1507)
评论(0)
推荐(0)
摘要:
1.主设备号码和次设备号2.字符设备的注册3.字符设备驱动程序样例TOC 1.主设备号码和次设备号 dev_t dev_t 类型是定义在中定义用来保存设备编号(前12位用来表示主设备号,后20位表示次设备号) 注意:我们获取主设备号和次设备号应该使用内核提供的宏 MAJOR(dev_t):获取主设备号 MINOR(dev_t):获取次设备号 MKDEV(int major, ... 阅读全文
posted @ 2020-03-23 11:17
standardzero
阅读(260)
评论(0)
推荐(0)
摘要:
1.找到和本机相符的linux源码2.编写一个简单的驱动程序3.编译驱动及加载TOC 1.找到和本机相符的linux源码 查看本机是否有linux源码 查看目录/usr/src 以ubuntu14.04为例,linux源码目录为/usr/src/linux-headers-3.13.0-24-generic 若是本机没有源码就需要自己去下载相应的源码 同样以ubunt... 阅读全文
posted @ 2020-03-23 11:15
standardzero
阅读(330)
评论(0)
推荐(0)
摘要:
问题:使用内核包编译驱动时常常提示如下: WARNING: Symbol version dump /usr/src/linux-2.6.26/Module.symvers is missing; modules will have no dependencies and modversions. 原因:通常头核心包中是没有Module.symvers这个文件的,要想获取... 阅读全文
posted @ 2020-03-23 11:12
standardzero
阅读(5793)
评论(1)
推荐(0)

浙公网安备 33010602011771号