自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(239)
  • 资源 (2)
  • 收藏
  • 关注

转载 为什么需要字节对齐

概念 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然边界(alignment)分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。为了使CPU能够对变量进行快速的访问,变量的起始地址应该

2016-12-30 14:14:15 3464

转载 linux程序分析工具介绍-ldd,nm

转载自: http://www.wuzesheng.com/?p=1595本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具。ldd是用来分析程序运行时需要依赖的动态库的工具;nm是用来查看指定程序中的符号表相关内容的工具。下面通过例子,分别来介绍一下这两个工具:1. ldd, 先看下面的例子, 用ldd查看cs程序所依赖的动态库:wuze

2016-09-01 16:13:08 1845

转载 struct file_operations中 ioctl 和 unlocked_ioctl

转载自 "http://blog.chinaunix.net/uid-20543672-id-3015637.html"很久都没有写驱动代码了,对于一些驱动相关的内核变化也没有怎么关心。这次重游《LDD3》获益良多,其值对于struct file_operations中ioctl的消失也让我长了不少见识。当年看《LDD3》的时候已经注意到了书中对ioctl的评价不是很好:“ioctl调

2016-08-30 15:50:42 5041

转载 udev 规则文件介绍

配置文件:        udev的配置文件位于 /etc/udev/ 和 /lib/udev/ ( # 开头的是注释)        udev 的主配置文件是 /etc/udev/udev.conf。 它包含一套变量,允许用户修改 udev 默认值。可以设置的变量如下:                udev_root    设备目录,默认是 /dev

2016-08-27 10:41:21 7259

转载 C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和

2016-08-22 17:06:39 598

转载 c语言 struct 的初始化

struct数据有3中初始化方法:顺序,C风格及C++风格的乱序。1)顺序 这种方法很常见,在一般的介绍C的书中都有介绍。顺序初始化的特点是: 按照成员定义的顺序,从前到后逐个初始化;允许只初始化部分成员;在被初始化的成员之前,不能有未初始化的成员。 eg: struct User oneUser = {10, "Lucy", "/home/Lucy"}; 2)乱序(C

2016-07-29 23:20:41 1463

转载 I2C总线协议

1.I2C协议  2条双向串行线,一条数据线SDA,一条时钟线SCL。   SDA传输数据是大端传输,每次传输8bit,即一字节。   支持多主控(multimastering),任何时间点只能有一个主控。   总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.   系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datashe

2016-07-27 15:26:22 706

转载 L3总线接口

下面介绍一下L3总线接口(在一些codec 芯片中使用,Eg: uda1341)L3就是line 3(3条线)的意思,它只有L3DATA(数据线:用于传输数据)、L3MODE(模式线:用于选择模式)、L3CLOCK(时钟线:用于传输时钟)。L3一共有两个模式:地址模式和数据传输模式,先传输地址模式数据,再传输数据模式数据。L3MODE为低时是地址模式,L3MODE为高时是数据传输模式。L3DA

2016-07-27 00:14:15 2748

转载 解读PTR_ERR,ERR_PTR,IS_ERR

最近要找工作了,就把内核以及驱动的知识复习了一下。看到了几个宏PTR_ERR,ERR_PTR,IS_ERR(其实是内联函数).还是不太明白,然后就google搜索了一下,搜出来的结果真是不让人满意,看完一些解释我更迷糊了。看来还得依靠内核源码,依靠对内核的理解自己弄明白了。大致看了一下这几个宏的定义还有在内核的用法,恍然大悟。原来这几个宏这么简单,原理也这么简单。下面就说一下这几个宏的由来与用处。

2016-07-17 23:18:15 812

转载 linux 用户空间与内核空间——高端内存详解

摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自己的规则;本文旨在探讨内核空间的地址映射。 Linux内核地址空间划分通常32位Linux内

2016-07-17 22:32:00 3937

转载 Linux操作系统实时性学习总结

一、实时系统基本概念什么是实时系统,POSIX作了这样的定义:指能够在限定的响应时间内提供所需水平服务的系统。另个一被Donald Gillies提出定义为:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。实时系统对响应时间有严格要求。实时操作系统(RTOS,RealTime Operation Syste

2016-07-14 14:56:35 2659

转载 linux ioctl 控制字

在Linux字符设备驱动入门(一)中,我们实现了字符设备的简单读写字符功能,接下来我们要在这个基础上加入ioctl功能。首先,我们先来看看3.0内核下../include/linux/fs.h中file_operations结构体的定义:struct file_operations {    struct module *owner;    loff_t (*llseek) (

2016-06-29 00:21:54 2022

转载 x86架构PC机系统总线概述

总线的演变首先应该讲讲总线的演变历史,这方面《PC架构系列:CPU/RAM/IO总线的发展历史!》这篇文章写得很好!感谢文章的作者!以下内容大量来自这篇文章,可以说是这篇文章的缩减转载。公共总线早期PC中,CPU/RAM/IO都是挂在一条总线上,所有的部件都必须在同步的模式下工作。这样就带来一个"互锁" (locked to each other )效应:所有设备都被限定在一个通用

2016-06-21 22:23:17 7687

转载 详解SPI中的极性CPOL和相位CPHA

SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常讯。

2016-06-20 23:36:13 2317

转载 X11 Wayland 及 Mir 比较

MirCanonical 2013年3月宣布开发自己的显示服务器 Mir之后,引发了开源界的大量谴责,很多人指责Canonical为什么不采用被设计用来取代X11的Wayland,Wayland的开发者也表示Wayland完全能够满足Canonical的需求,指责Canonical搞分裂的行为。而 Canonical 则表示现在的 X 以及未来的 Wayland 无法满足未来横跨桌面、手机

2016-06-02 22:21:45 11827

转载 Makefile常用函数

在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:    $()或是    ${}这里,就是函数名,make支持的函数不多。是函数的参数,参数间以逗

2016-05-25 15:29:29 586

转载 module_init的内核调用顺序

现在以module_init为例分析initcall在内核中的调用顺序在头文件init.h中,有如下定义:#define module_init(x)     __initcall(x);#define __initcall(fn) device_initcall(fn)继续看:#define device_initcall(fn)

2016-04-29 14:43:23 937

转载 linux 程序存储结构

inux系统下,程序是一个可执行文件,通常是ELF格式。通常,Linux的可执行文件拥有两种内存分配方式:存储时 和 运行时1、存储时看实例,下面是对可执行文件aa运行size命令后得到的结果。[root@xxx1 algriom]# size aatext data bss dec hex filename1257 500 16 1773 6ed aa其中:text(

2016-04-12 23:44:58 645

转载 Linux 内核堆栈

所有进程(包括内核进程和普通进程)都有一个内核栈,在x86的32位机器上内核栈大小可以为4KB或8KB,这个可以在编译内核的时候配置。内核栈的用途有两个:1)当进程陷入内核态,即内核代表进程执行系统调用时,系统调用的参数就放在内核栈上,内核栈记录着进程的在内核中的调用链;2)在内核栈被配置成8KB大小的情况下,当中断服务程序中断当前进程时,它将使用当前被中断进程的内核栈。对于用户进程,其既有用

2016-04-12 23:34:13 1349

转载 C\C++ sizeof 陷阱&&总结

C\C++ sizeof 陷阱&&总结今天使用动态数组,本来想通过sizeof 获取动态数据,结果出现了错误。先对自己做个测试,能做出下面这个题目,并做出合理解释,可以不用往下看了。View Code 示例来源于网络,参考解释如下:a是一个很奇怪的定义,他表示一个指向 double*[3][6]类型数组的指针。既然是指针,所以sizeof(a)就是4。(指针占用

2016-04-11 22:10:46 1714

转载 CFLAGS,CXXFLAGS,LDFLAGS,LIBS

CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入

2016-03-29 14:43:25 1046

转载 Cmake的介绍和使用

一、Cmake优点1.      开发源代码,实用类BSD许可发布。2.      跨平台,并可以生成native编译配置文件,在linux/unix平台,生成makefile,在mac平台可以生成xcode,在windows平台可以生成msvc工程的配置文件。3.      能够管理大型项目4.      简化编译构建过程和编译过程,只需要cmake+make就可

2016-03-19 16:25:39 774

转载 xinit启动X Window System过程初探

启动X主要有两种方法:一是Display Manager,如XDM、GDM、KDM,此种方法通过图形界面登录;另一种是通过xinit,此种方法适用于字符界面登录。我们常用于登录X的startx命令也是通过传递参数给xinit来启动X的,也就是说,最终启动X的是xinit。startx只是一个bash脚本。下面主要分析xinit一下初始化X的过程:  首先来看一看xinit命令的用法:

2016-03-18 18:07:29 4354

转载 策略路由基础命令(Linux)

策略路由是一种比基于目标网络进行路由更加灵活的数据包路由转发机制。我们主要讲解了策略路由配置的相关命令,希望让您对策略路由有一个更加深刻的理解... 策略路由策略性是指对于IP包的路由是以网络管理员根据需要定下的一些策略为主要依据进行路由的。例如我们可以有这样的策略:"所有来直自网A的包,选择X路径;其他选择Y路径",或者是"所有TOS为A的包选择路径F;其他选者路径K"Linux最多

2016-03-17 10:41:56 1054

转载 使用QEMU创建虚拟机

QEMU是一款高效而实用的模拟器及虚拟机监管器,本系列博客试图从最基本的安装使用开始,逐层深入地介绍QEMU。本篇文章从QEMU最基础的知识讲起,介绍了QEMU的安装使用、系统模拟的基本原理以及如何利用QEMU来创建和管理虚拟机。QEMU虚拟化 一、QEMU简介QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要

2016-02-17 00:19:00 30521 3

转载 How to configure the kernel parameter "console"

The Linux kernel is configured to select the console by passing it theconsole parameter. The console parameter can be given repeatedly, but the parameter can only be given once for each console tech

2015-12-31 00:44:13 633

转载 Linux内核模块自动加载机制

Linux内核模块自动加载机制思考如果想让内核启动过程中自动加载某个模块该怎么做呢?最容易想到的方法就是到/etc/init.d/中添加一个启动脚本,然后在/etc/rcN.d/目录下创建一个符号链接,这个链接的名字以S开头,这内核启动时,就会自动运行这个脚本了,这样就可以在脚本中使用modprobe来实现自动加载。但是我们发现,内核中加载了许多硬件设备的驱动,而搜

2015-12-11 00:17:49 5908

转载 FLASH闪存文件系统研究

什么是FLASH闪存文件系统?在嵌入式领域,FLASH是一种常用的存储介质,由于其特殊的硬件结构,所以普通的文件系统如ext2,ext3等都不适合在其上使用,于是就出现了专门针对FLASH的文件系统,比较常用的有jffs2

2015-11-19 10:42:05 1124

转载 update-alternatives学习笔记

Linux 发展到今天,可用的软件已经非常多了。这样自然会有一些软件的功能大致上相同。例如,同样是编辑器,就有 nvi、vim、emacs、nano,而且我说的这些还只是一部分。大多数情况下,这样的功能相似的软件都是同时安装在系统里的,可以用它们的名称来执行。例如,要执行 vim,只要在终端下输入 vim 并按回车就可以了。不过,有些情况下我们需要用一个相对固定的命令调用这些程序中的一个。例如,当

2015-11-17 10:25:38 518

转载 ISP DSP的区别

ISP 是Image Signal Processor 的简称,也就是图像信号处理器。而DSP是Digital Signal Processor 的缩写,也就是数字信号处理器。ISP一般用来处理Image Sensor(图像传感器)的输出数据,如做AEC(自动曝光控制)、AGC(自动增益控制)、AWB(自动白平衡)、色彩校正、Lens Shading、Gamma 校正、祛除坏点、Auto Bl

2015-11-10 01:03:43 19057

转载 IP分片和TCP分段的区别

IP分片和TCP分段的区别1,MTU(Maximum Transmission Unit,MTU),最大传输单元 (1)以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。链路层的这个特性称作MTU。不同类型的网络大多数都有一个上限。如果IP层有一个数据要传,且数据的长度比链路层的MTU还大,那么IP层就要进行分片(fragmentation),把数据报分成若干片

2015-10-21 23:50:20 1979

转载 TCP通信丢包原因总结

TCP协议本身是保证传输的数据完整性不会丢数据的。如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题。例如服务器给客户端发大量数据,Send的频率很高,那么就有可能在Send时发生错误(原因可能是又多种,可能是程序处理逻辑问题,多线程同步问题,缓冲区溢出问题等等)如果没有对Send失败做处理重发数据,那么客户端收到的数据就会比理论应该收

2015-10-20 23:08:09 5972

转载 alsa设置默认声卡

首先说一下alsa的配置文件。alsa的配置文件是alsa.conf位于/usr/share/alsa目录下,通常还有/usr/share/alsa/card和/usr/share/alsa/pcm两个子目录用来设置card相关的参数,别名以及一些PCM默认设置。以上配置文件,我等凡夫从不用修改,修改它们是大神的工作。还有两个配置文件/etc/asound.conf和~/.asoundrc

2015-09-12 21:33:13 8253

转载 Linux Desktop Entry 文件深入解析

Linux Desktop Entry 文件深入解析Desktop Entry 文件是 Linux 桌面系统中用于描述程序启动配置信息的文件。Desktop Entry 文件实现了类似于 Windows 操作系统中快捷方式的功能。本文详细介绍了 Linux Desktop Entry 文件的定义,编程和使用方式。读者可以通过文章末尾的实例操作进一步加深对 Desktop Entry 文

2015-08-26 20:43:52 819

转载 [Ubuntu] LightDM 轻量级桌面显示管理器

原文  http://www.cnblogs.com/ifantastic/p/3956916.htmlLightDM(Light Display Manager)是一个全新的轻量级 Linux 桌面显示管理器,而传统的 Ubuntu 是使用 GNOME 桌面标准的 GDM。LightDM 是一个跨桌面显示管理器,其目的是成为 X org 的 X Server 的标准显示管理器

2015-08-26 09:51:47 9949

转载 vimdiff 命令使用技巧

源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并。当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff

2015-08-11 10:54:18 1093

转载 modprobe 及 配置文件 /etc/modprobe.conf

modprobe -- program to add and remove modules from the Linux Kernel从linux核心中添加或删除模块。modprobe intelligently adds or removes a module from the Linux kernel:  note  that  for  convenience,there  is

2015-08-05 11:18:23 34989 5

转载 linux内核动态加载模块

一、安装内核模块:一般步骤:(1) 在/usr/src/linux/下运行make menuconfig把需要编译成模块的项打上(M),保存并退出。(2) 运行make modules,这一步将在/usr/src/linux/下生成*.o或*.ko文件。(3) 运行make modeules_install来安装,这步会把生成的.o或ko文件拷贝到/lib/mo

2015-08-05 09:55:25 7035 1

转载 parted分区介绍

我们在工作中会发现,我们使用平时的分区工具fdisk不能创建大于2T的分区, 是linux不支持吗?不对,现在的Linux内核中支持Large Block Device,完全可以使用大于2T的块设备为什么使用fdisk会有问题?    Fdisk所使用的分区表为MBR,Master Boot Record,即主引导记录。     硬盘的0面、0道、1扇区就是主引导扇区,Fdis

2015-07-31 00:10:43 2730

转载 对硬盘进行分区时,GPT和MBR有什么区别?

在Windows 8或8.1中设置新磁盘时,系统会询问你是想要使用MBR还是GPT分区。GPT是一种新的标准,并在逐渐取代MBR。GPT带来了很多新特性,但MBR仍然拥有最好的兼容性。GPT并不是Windows专用的新标准—— Mac OS X,Linux,及其他操作系统同样使用GPT。在使用新磁盘之前,你必须对其进行分区。MBR(Master Boot Record)和GPT(GUID

2015-07-25 00:25:04 2412 1

iptables使用手册

手册中对linux防火墙工具iptables的使用进行了详细的讲解,非常适合正在研究这款工具的人,尤其对表、链、规则进行了细致的罗列,通俗易懂!

2013-01-13

计算机经典书籍汇总

这份文档对计算机领域涉及到的经典书籍进行了细致的罗列,对计算机学习感兴趣的人有很大的帮助,尤其是酷爱编程的人,里面推荐的书籍堪称经典。

2012-10-28

空空如也

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

TA关注的人

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