自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

转载 处理printf的变参问题

VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;(2)然后用VA_START宏初始化刚定义的VA_LIST变量;(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用...

2017-12-01 14:56:00 201

转载 关于SIGPIPE导致的程序退出

1.概述 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。又或者当一个进程向某个已经收到RST的socket执行写操作是,内核向该进程发送一个SIGPIPE信号。该信号的缺省学位是终止进程,因此进程必须捕获它以...

2017-12-01 14:27:00 142

转载 01.mp4v2应用—mp4转h264

1.h264文件基本功能NAL 头 0x00 0x00 0x00 0x01sps :nal+0x67开头pps :nal+0x68开头I帧 0x65 开头......2.mp4v2提取264文件的代码#include <stdlib.h>#include <stdio.h>#include <string.h>...

2017-08-18 17:39:00 532

转载 00.mp4v2工具的用法

1.交叉编译mp4v2库# ./configure --prefix=/usr/local/mp4v2-2.0.0 --host=arm-hisiv300-linux CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-g++#make#make install2.工具用法./mp4info 20161024091151_180...

2017-08-18 17:10:00 191

转载 交叉编译x264和ffmpeg

1.x264./configure --host=arm-hisiv300-linux CC=arm-hisiv300-linux-gcc --enable-pic --prefix=/usr/local/ffmpeg --cross-prefix=arm-hisiv300-linux- --enable-static --enable-sharedmakemake inst...

2017-08-17 19:47:00 329

转载 pcm2aac

1、下载faac源代码:http://downloads.sourceforge.net/faac/faac-1.28.zip2、在VAWARE上进行交叉编译,安装。 ./configure --target=arm-linux --host=arm-hisiv300-linux make make install之后默认安装在/usr/locol下,头文件...

2017-08-17 14:38:00 270

转载 保存一下东西

最近在看流媒体编程,这些博主都挺好的。保存一下,以后慢慢消化...http://www.52rd.com/Blog/wqyuwss/559/2/http://blog.csdn.net/sloan6/article/details/48680527mp4详细文件格式详解:http://blog.csdn.net/szu030606/article/details/5943279h26...

2017-07-27 19:02:00 74

转载 05.移植内核3.4.2

1 uboot的启动流程由uboot的启动流程可知,最后阶段将会传来两个关键的参数。一个是机器id,另一个是tag参数地址。而内核的任务是根据机器id选择/判断是否支持该机器,如果支持,则调用机器相关的初始化函数->解析TAG参数->装载驱动程序->挂接根文件系统->启动应用程序2 移植kernel的过程 1 一. 内核启动流程,据此配置内核(机...

2017-02-04 12:51:00 99

转载 04.移植u-boot

1.读readme获取信息 1.1 由Building the Software可知,需修改顶层makefile,指定架构和编译器 ifeq ($(HOSTARCH),$(ARCH)) CROSS_COMPILE ?= arm-linux- endif ARCH = arm CROSS_COMPILE = arm-linux-2.新建一个单板 c...

2017-02-03 21:57:00 176

转载 03.应用程序调试

一、应用调试1:使用strace命令来跟踪系统调用1.strace移植cd /work/debug/strace-4.5.15tar xjf strace-4.5.15.tar.bz2cd strace-4.5.15patch -p1 ../strace-fix-arm-bad-syscall.patch配置./configure --host=arm-linux...

2017-02-02 16:31:00 124

转载 02.驱动调试

驱动程序的调试一. 打印: printk, 自制proc文件UBOOT传入console=ttySAC0(串口) console=tty1(LCD)1. 内核处理UBOOT传入的参数console_setup add_preferred_console // 我想用名为"ttySAC0"的控制台,先记录下来2. 硬件驱动的入口函数里: drivers/serial/s3c24...

2017-01-31 18:10:00 346

转载 01.裸板调试

1. 点灯法 1 led_flicker: 2 ldr r0,=0x56000050 3 ldr r1,=(1<<(4*2)) 4 str r1,[r0] 5 ldr r0,=0x56000054 6 ldr r1,=0 7 ldr r2,(1<<4) 8 loop: 9 ...

2017-01-30 21:59:00 133

转载 驱动14.字符设备的另一种写法

原本的字符设备只能有255个驱动程序,原因是一个主设备号占用了0~255的次设备号把register_chrdev展开可得到一下几个部分:register_chrdev_region/alloc_chrdev_region,cdev_init,cdev_add参照register_chrdev的写法完成hello.c的代码 1 #include <linux/m...

2017-01-30 18:05:00 101

转载 驱动13.i2c设备驱动程序

1 分析i2c设备的识别过程i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver); list_for_each_entry(adapter, &...

2017-01-30 16:34:00 136

转载 驱动12.移植dm9000驱动程序

1 确定相异性1.1 选中网卡芯片nGCS41.2 确定相异性:基地址,中断号,设置时序(内存控制器BWSCON,BANKCONn)1.3 修改相应的部分2 测试DM9000C驱动程序:2.1 把dm9dev9000c.c放到内核的drivers/net目录下2.2 修改drivers/net/Makefile 把obj-$(CONFIG_DM9000) += dm900...

2017-01-30 14:47:00 95

转载 驱动11.网卡驱动程序

1 网络传输的简介    (1)接收过程,如上图,网络上的数据包到达网卡后,网卡产生中断,然后设备驱动层收到中断后,开始进行网络包的接收,接收完之后调用一个netif_rx函数交给网络协议层(层次结构上图一),然后就是一层一层的网上传到用户空间了。  (2)发送过程,从用户空间过来的数据包,经过层层穿越之后,到达网络协议层,然后调用一个dev_queue_xmit(...

2017-01-30 14:31:00 191

转载 驱动10.nor flash

1 比较nor/nand flash NOR NAND接口: RAM-Like,引脚多 引脚少,复用容量: 小 1M 2M 3M    大:128M 256M G读: 简单 ...

2017-01-13 20:59:00 89

转载 驱动09.nand flash

1 nand flash的操作目的:读地址A的数据,把数据B写到地址A。问1. 原理图上NAND FLASH和S3C2440之间只有数据线,怎么传输地址?答1.在DATA0~DATA7上既传输数据,又传输地址,当ALE为高电平时传输的是地址。问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令?答2.在DATA0~DATA...

2017-01-13 16:33:00 112

转载 驱动08.块设备驱动程序

1 块设备的概述  linux支持的两种重要的设备类型分别是字符设备和块设备,块设备可以随机地以固定大小的块传送数据。与字符设备相比,块设备有以下几个特殊之处:  (1)块设备可以从数据的任何位置进行访问  (2)块数据总是以固定长度进行传输,即便请求的这是一个字节  (3)对块设备的访问有大量的缓存。当进行读时,如果已经缓存了,就直接使用缓存中的数据,而不再读设备,对于...

2017-01-13 14:35:00 75

转载 驱动07.USB驱动程序

1 了解USB识别的过程eg:在Windows系统下的一个现象:把手机的USB设备接到PC  1. 右下角弹出"发现android phone"  2. 跳出一个对话框,提示你安装驱动程序问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android ph...

2017-01-13 00:26:00 113

转载 驱动06.触摸屏驱动程序

1.触摸屏的简介  触摸屏是标准的输入设备,在写驱动程序时采用的之前讲过的输入子系统那套框架。我们无需关心对设备文件的操作,只需关心对硬件寄存器的操作和上报事件即可。  触摸屏是附在LCD上的一层薄膜,并不是我们平时认识的触摸屏,它只是起到确定坐标的作用。 S3C2440提供的触摸屏接口有4种处理模式,分别是:正常转换模式、单独的X/Y位置转换模式、自动X/Y位置转换模式...

2017-01-11 18:21:00 164

转载 驱动05.lcd设备驱动程序

参考s3c2410fb.c总结出框架1.代码分析1.1 入口函数1 int __devinit s3c2410fb_init(void)2 {3 return platform_driver_register(&s3c2410fb_driver);4 }注册一个platform_driver结构体,如果存在同名的设备dev时,将调用pr...

2017-01-10 16:13:00 111

转载 驱动04.平台总线驱动模型——点亮LED灯

1 平台总线的简介  平台总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。  我们可以把一个驱动程序抽出来分为两部分,一部分是硬件相关的dev,另一部分则是稳定的纯软件部分...

2017-01-09 16:37:00 244

转载 驱动03.输入子系统

之前我们做的按键驱动程序都是应用程序主动open设备/dev/buttons而现实情况不能来打开这个设备甚至不知道这个设备的存在。解决方案:变成通用的驱动程序。接下来我们引入的输入子系统可以完成该任务。1.输入子系统的简介1.1 引入输入子系统的好处:(1)统一了物理形态各异的相似的输入设备的处理功能。例如,各种鼠标,不论PS/2、USB、还是蓝牙,都被同样处理。(2...

2017-01-09 13:27:00 126

转载 驱动02.按键

一.以查询方式实现1.写出驱动框架  1.1 仿照其他程序加一些必要的头文件  1.2 构造一个结构体file_operations  1.3 根据file_operations的所选项写出所需的函数,并构建出来  1.4 入口函数、出口函数的注册和卸载  1.5 修饰入口函数和出口函数  1.6 给sysfs提供更多的信息,并有udev机制自动创建/dev/xxx设备节点2.硬件操...

2017-01-08 21:08:00 100

转载 驱动01.LED

1.写出leds_open,leds_write函数2.1告诉内核这几个函数的存在?定义一个结构体file_operations2.2把这个结构体告诉内核?用register_chrdev(major,name,file_operations) //将主设备号与file_operations结构一起向内核注册 //major=register_chrdev(0,name,fi...

2017-01-07 01:06:00 79

转载 更换编译器(转载)

1、以4.3.2版本的编译器为例将arm-linux-gcc-4.3.2.tar.bz2放在/work目录下解压缩:sudo tar jxvf /work/arm-linux-gcc-4.3.2.tar.bz2 -C /添加环境变量:sudo vi /etc/environment注释掉原有的环境变量#PATH="/usr/local/sbin:/usr/lo...

2017-01-07 00:55:00 480

转载 2.使用线程方式获取标准输入

前面讲到,使用非阻塞方式有许多的缺点。主要是单线程,一直占用CPU资源,其他程序无法执行,造成资源的浪费。只能用于较简单循环的场所。而线程灵活,CPU占用率小,适用于大部分场合。1.条件变量的使用条件变量是用来通知共享数据的状态信息的机制。由于涉及共享数据,所以一般和互斥量配合使用。1.1创建和销毁条件变量pthread_cond_t表示条件变量。在使用pthread_c...

2016-12-27 12:36:00 177

转载 1.使用非阻塞方式获取标准输入

//首先,我们先来看总的main函数框架 1 int main() 2 { 3 char c; 4 int i=0; 5 6 nonblock(NB_ENABLE); 7 while(!i) 8 { 9 usleep(1);10 i=kbhit();11 ...

2016-12-25 23:05:00 460

转载 编写一个通用的Makefile文件

1.1在这之前,我们需要了解程序的编译过程a.预处理:检查语法错误,展开宏,包含头文件等b.编译:*.c-->*.Sc.汇编:*.S-->*.od.链接:.o +库文件=*.exe1.2体验在VC下程序的编译a.先编译,在链接b.修改了哪个文件,就单独编译此文件,在链接c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接1.3在li...

2016-12-24 14:39:00 150

转载 链表_初步认识

根据代码来分析链表的操作eg:1.定义一个结构体,并定义一个表头指针1 typedef struct NAME{2 char *name;3 struct NAME *pre;4 struct NAME *next;5 }T_Name, *PT_Name;6 7 static PT_Name g_ptNameHead;...

2016-12-11 22:03:00 142

空空如也

空空如也

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

TA关注的人

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