- 博客(52)
- 收藏
- 关注
转载 栈增长方向与大端/小端问题
经常搞不清这类的,这里看到一篇文章,转载下:http://www.cnblogs.com/xkfz007/archive/2012/06/22/2558935.html 栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆
2015-05-04 13:40:02
564
转载 PPT转PDF,提示无法找到打印机
将ppt转换成PDF时, 出现错误:无法找到打印机解决方法:在桌面上右键"计算机"->"管理" ->"服务和应用程序"->服务 找到“Print Spooler”将其“启动类型”设为“自动”, 设置完之后,点启动, 最后确定。
2014-11-14 20:13:53
2409
原创 二叉树深度
#include #include typedef struct BinaryTreeNode{ int val; struct BinaryTreeNode* left; struct BinaryTreeNode* right;}BinaryTreeNode;BinaryTreeNode* CreateBinaryTreeNode(int val){ BinaryTr
2014-11-02 21:26:32
509
转载 const volatile int i = 10
const和volatile放在一起的意义在于:(1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。“const”含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。“volatile”的含义是“请不要做没谱的优化,这个值可能变掉的”,而并非“你可以修
2014-10-04 16:24:46
535
原创 字符串操作经常遇到的马虎问题
char Text[128] = "aaaaaaa"; char Cryptograph[128] = "0"; //加密后的字符串 int userId[2] = {123456789}; char string[20] = "abcdc"; char data[20] = "2014/9/20"; char platform[20] = "web"; count=st
2014-09-21 13:59:21
499
原创 并发服务器模型
1.tcp并发服务器模型服务器接收到客户端请求后,建立线程,进行处理; I/O多路复用并发服务器模型:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd
2014-09-15 10:42:14
536
原创 epoll
1. int epoll_create(int size);创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭
2014-09-15 10:41:02
511
转载 先记下
IIS总线(5根):IISDO(数据输出),IISDI(数据输入),IISSCLK(系统串行时钟)每个时钟用于传送一位音频信号 = 采样频率 * 声道数 * 每声道位数,IISLRCK(等于采样频率),CDCLK CDCLK为该芯片提供系统同步时钟,即编解码时钟,主要用于音频的A/D、D/A采样时的采样时钟,一般CDCLK为256fs或384fs。IIS只负责数字音频信号的传输,而要真正实现音频信
2014-09-11 16:38:16
575
转载 信号机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出
2014-09-03 21:19:00
524
原创 搭开发环境
擦除整个nandflash,重新烧uboot,正常,但扔挂载不了 显示still trying ...[u-boot@SMDK2440A]# printenvbootargs=console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.72:/opt/rootfs ip=192.168.1.226:192.168.1.72:192.168.1.7
2014-09-03 20:54:37
745
原创 mjpg-streamer移植与源码分析
1. 如何将mjpg-streamer移植到开发板上文件系统:fs_mini_mdev_new_auto_wifi_ap.tar.bz2(1) libjpeg 的移植tar xzvf libjpeg-turbo-1.2.1.tar.gzcd libjpeg-turbo-1.2.1mkdir tmp./configure --prefix=/work/jz2
2014-09-03 20:52:25
826
原创 调试程序方法
调试程序方法1.使用strace工具跟踪系统调用和信号:系统调用和信号是发生在用户空间和内核空间边界处的事件,使用strace工具执行程序会记录调用的系统调用、接受到的信号。strace -o xawtv.log xawtv2.使用memwatch进行内存调试:比如内存泄露、缓冲区溢出等内存错误。在代码中加入头文件memwatch.h与memwatch.c一起编
2014-09-03 20:51:56
507
原创 H.264库移植 /libjpeg库移植
1.H.264库移植F:\国嵌入式收费视频\高级项目\高级项目SDK[ED2000.COM]\高级项目SDK\SDK-H264\server\h264\avc-src-0.14下#cd avc/build/linux/#make //编译完成后在build/obj目录下生成.o结尾的目标文件#rm T264.o
2014-09-03 20:50:32
1253
原创 mmap/ioremap 内存相关
mmap/ioremap一般来说,在系统运行时,外设的I/O内存资源的物理地址是已知的,由硬件的设计决定。但是CPU通常并没有为这些已知的外设I/O内存资源的物理地址预定义虚拟地址范围,驱动程序并不能直接通过物理地址访问I/O内存资源,而必须将它们映射到核心虚地址空间内(通过页表),然后才能根据映射所得到的核心虚地址范围,通过访内指令访问这些I/O内存资源。void * __ior
2014-09-03 20:50:25
1613
转载 cp命令“-d”参数解释及实例
http://blog.youkuaiyun.com/duqi_2009/article/details/7205172-d:若源文件为连接文件杜属性,则复制连接文件属性而非文件本身。例如:1、root@ubuntu:/tmp# cp -s bashrc bashrc_slink #建立一个快捷方式root@ubuntu:/tmp# cp -l bashrc bashrc_hl
2014-08-18 09:29:22
4459
原创 随时记录,以后整理
struct v4l2_buffer {__u32 index;enum v4l2_buf_type type;__u32 bytesused;__u32 flags;enum v4l2_field field;struct timeval
2014-07-22 16:26:54
491
转载 source insight 设置自动缩进
使用source insight 的时候一直被一个问题困扰着:就是在 { 后如果敲下回车后,光标换行后,但没有自动缩进,用起来很不习惯,每次都还要瞧下TAB,麻烦~~实际不敲TAB的效果如下:fun(){int x=0;} 上面那样写程序很不标准,希望在 { 后敲回车后让代码自动缩进,如下效果。(比较郁闷的方法是每次敲回车后再敲下 TAB)fu
2014-07-20 16:27:51
1200
2
原创 Buffer的准备和数据读取
http://blog.sina.com.cn/s/blog_602f87700101bmvu.html1. 初始化 Memory Mapping 或 User Pointer I/O.int ioctl(int fd, int requestbuf, struct v4l2_requestbuffers * argp);参数一:open()所产生的句柄
2014-07-19 23:57:17
1462
原创 source insight 工具使用
1、标注当前文件中,当前变量使用的地方: 标注/不标注 shift+F8 2、一段代码移动,实现对齐: 左移动 F9 右移动 F10 3、source insight是不错的源码阅读工具,不过今天看kfs源码时,发现它不能支持.cc文件,注:(.
2014-07-16 22:15:57
495
转载 深入理解linux内核v4l2框架之videobuf
http://www.tuicool.com/articles/MzeeQf下面来介绍以下 videobuffer 相关的一些东西。V4L2 核心 api 提供了一套标准的方法来处理视频缓冲,这些方法允许驱动实现read(),mmap(), overlay() 等操作。同样也有方法支持 DMA 的 scatter/gather 操作,并且支持 vmallocbuffer( 这个
2014-07-11 13:17:33
758
原创 container_of
指针ptr指向结构体type中的成员member;通过指针ptr,返回结构体type的起始地址#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *
2014-07-10 15:34:06
405
转载 wait_event_interruptible_timeout和schedule_timeout的区别
一、适用情况wait_event_interruptible_timeout和schedule_timeout的区别当在某个硬件驱动程序中使用wait_event_interruptible_timeout时,执行的继续可以通过以下两种方式获得:1.其他人在等待队列上调用了wake_up2.超时到期。而调用schedule_timeout的进程始终会在超时到期时被唤醒。二、
2014-07-10 13:18:45
1044
原创 视频虚拟驱动 ioctl 流程
(linux-2.6.32.2版本)APP: ioctl VIDIOC_QBUF 先调用buffer_prepare,再调用buffer_queue APP: ioctl VIDIOC_REQBUFS 会调用 buffer_setup----------------------------------------------------------
2014-07-10 12:53:15
844
原创 虚拟视频驱动vivi.c分析(linux-3.4.2版本)
cank虚拟视频驱动vivi.c分析(linux-3.4.2版本):vivi_init vivi_create_instance(i);{struct vivi_dev *dev;struct video_device *vfd;struct v4l2_ctrl_handler *hdl; // 不是主要, 只是用于初始化一些东
2014-07-08 20:57:56
1484
转载 c实现面向对象
http://blog.youkuaiyun.com/songcdut/article/details/8132609面向对象无非就是封装继承和多态封装:struct实现继承:指针实现,就是把父类包含在结构体中。多态:可以用指针实现。一般实现多态,父结构体必须是子结构体的第一个元素,这样就可以通过强制转换子类和父类随意转换。结构如:[cpp] view pl
2014-07-08 10:42:25
521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人