自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SdustLiYang的专栏

厚积薄发

  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 判断大小端的代码(可使代码兼容大小端)

int x=1;if(*(char *)&x==1)      /*小端*/else     /*大端*/这段代码在用户空间和内核空间都能使用,能有效的兼容大小端的问题。

2011-05-31 19:57:00 2605 5

转载 /etc/fstab文件详解

<br />有很多人经常修改/etc/fstab文件,但是其中却有很多人对这个文件所表达的意义不太清楚,因为只要按照一定的模式,就可以轻而易举地添加一行挂载信息,而不需要完全理解其中的原理。下面就让我们来看看到底还有多少是我们不了解的。<br /><br />   /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。<br /><br />

2011-05-31 15:57:00 898

原创 往具体地址写数据时遇到的问题

<br />   在驱动程序中,经常看到*(unsigned int *)0x56000000=0x12;<br />这样的直接给一个地址赋值的语句,这样的语句在应用程序中是不能直接用的,会出现段错误,LINUX系统不允许直接操作物理地址。<br /> <br /> <br />#include<stdio.h><br />#define NFCONF *(volatile unsigned int *)0x0804a008<br />int main()<br />{<br />       NFCONF

2011-05-31 14:10:00 699

转载 工作中与处理器有关的问题总结

<br />经常遇到的典型问题或者说我能想到的有以下这些:Ø字节序Ø字节对齐Ø异常Ø符号位问题Ø堆栈溢出Ø空指针Ø编译&反汇编<br />字节序问题:大端法小端法其实说白了就是一个顺序问题。现代的计算机系统一般采用字节(Octet, 8 bit Byte)作为逻辑寻址单位。当物理单位的长度大于1个字节时,就要区分字节顺序。常见的字节顺序有两种:Big Endian和Little Endian. Intel X86平台采用Little Endian,而PowerPC、ARM、MIP

2011-05-31 13:21:00 1193 4

原创 一个底层驱动函数的解读

<br />/**************************************************************************<br />  * Description<br />  *   Write a byte into some one byte register.<br />  *<br />  * Parameters<br />  *   addr :  The register's address.<br />  *   data

2011-05-27 17:02:00 1810 9

转载 linux时,/etc/profile、~/.bash_profile等几个文件的执行过程

在登录Linux时要执行文件的过程如下:在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:if [ -f

2011-05-27 11:07:00 872

转载 25 条 SSH 命令和技巧

25 条 SSH 命令和技巧26十一 <br />2010<br /># 作者: riku /阅读: 5,074 /本文采用CC BY-NC-SA 2.5协议授权,转载请注明本文链接。<br />来源: 51CTO / 英文原文:25 BEST SSH COMMANDS / TRICKS<br />SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。下面是通过网络投票选出的25个最佳SSH命令,你必须牢记于心。<br />1

2011-05-27 10:42:00 735

转载 /etc/hosts文件

<br />/etc/hosts文件<br />  当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。 <br />  下面是一个“/etc/hosts”文件的示例: <br />IP Address Hostname Alias <br />127.0.0.1 Localhost Gate.openarch.com <br />208.1

2011-05-27 10:20:00 812

原创 如何禁止启用U盘的自动弹出功能

<br />1.su root<br />2.vim /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi<br />3.修改第78行 把false改成true 保存退出。<br />4.此时U盘自动弹出功能被禁止(true改成false可启用)。

2011-05-27 10:11:00 1240

转载 [经典]Linux内核中ioremap映射的透彻理解

<br />几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:<br /><br />  (1)I/O映射方式(I/O-mapped)<br /><br />  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。 <br

2011-05-25 13:03:00 1347 1

转载 定点数与浮点数

1、定点数: 定点数指小数点在数中的位置是固定不变的,通常有定点整数和定点小数。在对小数点位置作出选择之后,运算中的所有数均应统一为定点整数或定点小数,在运算中不再考虑小数问题。 (1)定义:数据中小数点位置固定不变的数 (2)种类:定点整数 (3)小数点在符号位与有效位之间。 注:定点数受字长的限制,超出范围会有溢出。 2、浮点数: 浮点数中小数点的位置是不固定的,用阶码和尾数来表示。通常尾数为纯小数,阶码为整数,尾数和阶码均为带符号数。尾数的符号表示数的正负;阶码的符号则表明

2011-05-24 11:08:00 1002

转载 NAND Flash ECC 校验原理与实现

NAND FLASH ECC校验原理与实现 收藏<br />参考文档: http://blogimg.chinaunix.net/blog/upfile2/080702112233.pdf<br /><br />NAND FLASH ECC校验原理与实现<br /><br /><br />ECC简介<br />  由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可

2011-05-24 09:25:00 1241

转载 NAND Flash硬件原理

<br />  一、存储数据的原理<br /><br />两种闪存都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结构,而FLASH为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。<br /> <br />  浮置栅极是由氮化物夹在两层二氧化硅材料之间构成的,中间的氮化物就是可以存储电荷的电荷势阱。上下两层氧化物的厚度大于50埃,以避免发生击穿。<br /><br />二

2011-05-24 08:23:00 2546

转载 结构体的定义、访问以及C与C++中结构体的区别

关于struct 和typedef  struct(转载)(2009-10-10 15:15:25)转载标签:杂谈分类:programing<br /> <br />1 首先:<br />在C中定义一个结构体类型要用typedef:<br />typedef struct Student<br />{<br />int a;<br />}Stu;<br />于是在声明变量的时候就可:Stu stu1;<br />如果没有typedef就必须用struct Student st

2011-05-23 20:10:00 1930

转载 nand flash 原理简介

<br />Fisrt part :<br />NAND flash和NOR flash的不同<br />NOR flash采用位读写,因为它具有sram的接口,有足够的引脚来寻址,可以很容易的存取其内部的每一个字节。NANDflash使用复杂的I/O口来穿行地存取数据。8个引脚用来传送控制、地址和数据信息。NAND的读和写单位为512Byte的页,擦写单位为32页的块。<br />● NOR的读速度比NAND稍快一些。<br />  ● NAND的写入速度比NOR快很多。<br />

2011-05-23 17:26:00 1047

转载 结构体成员的内存分布与对齐

我们先看一道IBM和微软的笔试题:IBM笔试题:struct{ short a1;short a2; short a3; }A; struct{ long a1; short a2; }B; sizeof( A)=6, sizeof(B)=8,为什么?注:sizeof(short)=2,sizeof(long)=4微软笔试题:struct example1{       short a ;       long b;};stru

2011-05-23 09:58:00 1043

转载 C语言中各种数据类型长度的总结

<br /><br /><br /><br />下面是我关于C语言中各种数据类型长度的总结:(参考The C Programming Language)<br /> <br />1. c语言中的整数类型有char, short, int, long等几种, 下面是C语言对每种数据类型长度的规定:<br />(a). short和long类型的长度不相同<br />(b). int类型通常同具体机器的物理字长相同<br />(c). short通常是16bits, int通常是16bits or 32bits

2011-05-23 09:44:00 1616

转载 C/C++中的枚举类型enum

<br />如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 <br /><br />  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!<br />enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚

2011-05-21 08:51:00 631

转载 宏的使用问题总结

C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) /  do{ if (EXP) /  fprintf(stderr, "Warning: " #EXP "/n"); } /

2011-05-20 21:03:00 789

转载 do{...}while(0)的妙用

<br />在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。<br />  但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 <br /><br />1. do...while(0)消除goto语句。<br />通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果

2011-05-20 19:58:00 533

原创 i++与++i(i--与--i同理)

<br />1.单独用时,是一样的,i++;等同于++i;,相当于i=i+1;<br />若赋值时,a=i++;相当于a=i;i=i+1;<br />            而a=++i;相当于i=i+1;a=i;<br /><br /><br />2.for循环中,i++等同于++i    如:for(i=0;i<10;i++){...}<br />                                                  for(i=0;i<10;++i){...}<br /> 

2011-05-20 14:16:00 1196 1

转载 宏函数writesb writesw writesl 与readsb readsw readsl详解

writesb(), writesw(), writesl() 宏函数功能:writesb()    I/O 上写入 8 位数据流数据 (1字节)writesw()   I/O  上写入 16 位流数据 (2字节)writesl()    I/O 上写入 32 位流数据 ( 4字节 )原型:引用 #include void  writesb (unsignedshortioaddr,void*addr,unsignedlongcount)void  writesw (unsign

2011-05-20 13:30:00 2620

转载 C语言中逗号运算符和逗号表达式

<br /> 刚开始学习C语言时,对逗号去处符和逗号表达式非常困惑,本文给了我很大的帮助。<br />来自:百度空间-软件工程师<br />  C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:<br />  3+5,6+8<br />称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为<br />         表达式1,表达式2<br />逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”

2011-05-19 20:14:00 886

转载 printf中#号的意思

<br />#进行宏字符串连接,在宏中把参数解释为字符串,不可以在语句中直接使用。<br />在宏定义中<br />printf("%s;/n", #S) 会被解释为<br />printf("%s;/n", "S")<br />例如下面的代码<br />code start<br />#define TRACE(S) (printf("%s;/n", #S), S) /*注意用逗号而不是分号*/<br /><br />#include <stdio.h><br />#include <stdlib

2011-05-19 20:08:00 2557

转载 request_mem_region粗略讲解

<br />linux下request_mem_region的粗略理解<br /><br />文章来源:http://gliethttp.cublog.cn<br />  Linux把基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此它仍然可以用resource结构类型来描述。<br />  Linux是以一种倒置的树形结构来管理每一类I/O资源(如:I/O

2011-05-19 16:43:00 657

转载 信号量与自旋锁

<br /> 信号量与自旋锁<br />内核同步措施<br />    为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。<br />    Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越

2011-05-19 13:52:00 468

转载 Linux环境变量设置总结

<br /> 1、引言<br /><br />    在 linux系统 下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“ command not found ”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量 PATH 的设置问题,而 PATH 的设置也是在 linux 下定制环境变量的一个组成部分。本文基于 RedHat 9.0 ,详细讲解了环境变量定制的问题。<br /><br />    2、变量简介<br /><br />  

2011-05-19 10:57:00 474

转载 如何设置Windows扩展屏幕,扩展屏幕和主屏有何区别,如何优化使用扩展屏幕?

支持电脑同时接多个显示器是Windows的一项基本功能,使用起来很简单,无须特别的外部硬件设备支持。只要将多个显示器(或设备,如UVA)连接到电脑的多个显卡输出上,重启电脑后,就可以在“显示属性”的“设置”页面里看到所连接的显示器,只是在没有配置以前它是没有输出的(低亮的)。<br />   用鼠标选中要配置的显示器(如下图),并点选“将Windows 桌面扩展到该监视器上”,就可以将Windows的一部分桌面延伸到那个显示器上了,在没有进一步设置之前,扩展显示器

2011-05-19 08:28:00 3604

原创 RJ45电气特性

<br />转输过程中没有固定的“0”电平,都是采用两根线的中值当作“地”电平。只要两根线的的电势差小于1.6V即可认为是“0”,两根线的电势差大于8V,就可确认为“1”。<br /><br />使用两根线传输一个信号,是为了延长传输地距离,两根线使用差分地形式,再传输过程中,两根线上感应的杂波信号基本相同(这就是为什么采用双绞线地原因),当信号经过差分放大地时候,杂波信号将会抵消,而差分形式地有用信号将会有效地放大,从而延长通信距离!<br /> 10 100base tx RJ45接口引脚定义如下 

2011-05-18 19:40:00 5868 1

转载 寻址空间

<br />寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的

2011-05-18 09:05:00 688

转载 GNU C的__attribute__机制

From http://hi.baidu.com/cygnusnow/blog/item/8b82000f871fcf2f6159f3de.html<br />GNUC的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function    Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。<br />__attribute__书写特征是:__attribute__前后都有

2011-05-17 13:41:00 470

转载 __DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__

<br />C99 ( ISO/IEC 9899:1999 ) 网上有pdf文件。<br /><br /> C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。<br /><br />__DATE__<br /> 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)<br /><br />__FILE__<br /> 代表当前源代码文件名的字符串文字<br /><br />__LINE__<br /> 代表当前源代码中的行号的

2011-05-17 10:27:00 1245

转载 MTD原始设备与FLASH硬件驱动的对话

MTD原始设备与FLASH硬件驱动的对话 看了>后对以MTD的分层结构以及各层的分工情况有了大致的了解,然而各层之间是如何进行对话的呢,对于这个问题,>上没有详细的去说明。小弟抽空研究了一下,打算从下到上,在从上到下,分两条主线来研究一下MTD原始设备与FLASH硬件驱动的对话(MTD原始设备与更上层的对话留待以后再研究)。以下是第一部分,从下到上的介绍FLASH硬件驱动与MTD原始设备是如何建立联系的。1、首先从入口函数开始:static int s3c24xx_nand_probe

2011-05-17 09:04:00 1276

转载 MTD源码分析(2)

<br />mtdchar.c<br /><br />MTD字符设备的文件<br />notifier<br />MTD字符设备的notifier<br />static struct mtd_notifier notifier = {           <br />       add:mtd_notify_add,<br />       remove:   mtd_notify_remove,<br />};<br /> <br />mtd_lseek<br />格式:<br /

2011-05-17 08:10:00 928

转载 MTD源码分析(1)

<br />Linux MTD源代码分析<br />by jim zeus<br />vision 0.1If you got any Problem, Suggestion, Advice or Question ,<br />Please mail to: jimzeus@sina.com.cn<br />Any correction will be appreciated.<br /><br />专有名词:<br /> <br />1.MTD:Memory Technology Dev

2011-05-17 08:08:00 1326

转载 《Linux内核修炼之道》之高效学习linux驱动开发

  《Linux内核修炼之道》 之 高效学习Linux驱动开发 收藏<br />这本《Linux内核修炼之道》已经开卖(网上的链接为: 卓越、当当、china-pub ),虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完。同时我也把书中一部分自己

2011-05-16 13:44:00 791 1

转载 zImage与uImage的区别

<br />对于Linux内核,编译可以生成不同格式的映像文件,例如:<br /># make zImage<br /># make uImage<br /><br />    zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另

2011-05-16 09:19:00 582

转载 跟我一起写 Makefile

[精华] 跟我一起写 Makefile http://www.chinaunix.net 作者:gunguymadman  发表于:2009-06-30 15:55:17【发表评论】【查看原文】【C/C++讨论区】【关闭】 <br />陈皓<br /><br />概述<br />——<br /><br />什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一

2011-05-13 14:02:00 637

转载 make clean与make distclean的区别

<br />make clean仅仅是清除之前编译的可执行文件及配置文件。<br />而make distclean要清除所有生成的文件。<br />Makefile<br />  在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:<br />make<br />  根据Makefile编译源代码,连接,生成目标文件,可执行文件。<br />make clean<br />  清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。<br

2011-05-13 10:50:00 924

转载 redhat下升级tar版本(解决pax_global_header问题)

<br />由于解压一些tar包时候报错如下:<br />tar: pax_global_header: Unknown file type 'g', extracted as normal file<br />经过查资料说是tar版本太低,所以需升级下。<br />tar的下载地址:http://ftp.gnu.org/gnu/tar/tar-1.20.tar.bz2<br />我是从1.13.25升级到tar-1.20版本的。<br />Tar 是一个归档程序,用来保存文件到归档文件或者从给定的ta

2011-05-13 10:33:00 2592

linux设备驱动程序学习笔记.rar

整理的对LDD的学习笔记,非常适合新手入门看。。。

2011-01-14

空空如也

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

TA关注的人

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