自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (3)
  • 收藏
  • 关注

原创 代码戏我千百遍,我待代码如初恋--数组和指针真的不一样啊。

我发现了一个秘密:数组和指针真的不一样啊。今天,我写了这么个坑爹的代码:array.c Array.h  Pointer.c  编译运行,运行到main红色框框里那句就出错了:  同样是打印p[0],在函数print_p();里没出错,到main里就出错了,好怪异

2012-07-17 07:05:59 1035

原创 原来程序是这样从NandFlash拷贝并跳转到SDRAM的

重新看了一下FL2440的BootLoader,终于把程序是怎样从Nandflash拷贝并跳转到SDRAM的过程弄清楚了,在这边做一下笔记。先上张图: 1.当S3C2440被配置成从Nand Flash启动时, S3C2440的Nand Flash控制器会在

2011-07-05 02:31:14 6376 4

原创 PX2摄像头驱动调试笔记

soc_camera_probe{ if (icl->board_info) { ret = soc_camera_init_i2c(icd, icl); } ret = soc_camera_video_start(icd);}

2015-11-24 10:52:17 1529

转载 Linux RCU机制详解 (透彻)

http://blog.csdn.net/unbutun/article/details/6621036一:前言 RCU机制出现的比较早,只是在linux kernel中一直到2.5版本的时候才被采用.关于RCU机制,这里就不做过多的介绍了,网上有很多有关RCU介绍和使用的文档.请自行查阅.本文主要是从linux kernel源代码的角度.来分析RCU的实现. 在讨论RCU的实现之

2012-12-01 10:59:58 2281

转载 安全编程: 防止缓冲区溢出(防止如今最常见的程序缺陷)

原文链接:http://www.ibm.com/developerworks/cn/linux/l-sp/part4/简介: 本文讨论 Linux/UNIX 系统中最常见的缺陷:缓冲区溢出。本文首先解释什么是缓冲区溢出,以及它们为何如此常见和如此危险。然后讨论广泛用于解决缓冲区溢出的新 Linux 和 UNIX 方法 ―― 以及为什么这些方法还不足够。随后将展示 C

2012-07-13 14:13:21 3247

转载 真正认识 REALLOC 的工作方式。

原文链接:http://www.cnblogs.com/ren54/archive/2008/11/20/1337545.htmlrealloc 用过很多次了。无非就是将已经存在的一块内存扩大。char* p = malloc(1024);char* q = realloc(p,2048);现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如

2012-06-29 16:44:12 354

转载 Linux中rename命令的用法

刚学习linux的时候,对文件重命名首先想到的就是rename命令,但是按照在windows下对文件重命名的方式试了N多次都没有反应,在网上一搜索,发现很多人都对rename命令知之甚少,甚至有一部分人说linux下没有rename命令,建议大家用mv命令。鉴于此,于是man rename一下,好好的研究了一下它的用法 ,在此对rename命令和mv命令在重命名文件方面做一个比较,有不足之处,希望

2011-11-19 16:00:49 466

转载 tar 压缩与解压缩打包命令

原文链接:http://www.xiaoxiaozi.com/2009/05/23/600/一直都只记着用tar命令怎么给gz的文件解压缩。可是,一旦下到个bz2的文件就不知道怎么处理了。这就是知识不扎实的结果,无奈,只好仔细查一下man手册,和向“鸟哥”请教。现记录一下,呵呵。高手勿怪。tar [-cxtzjvfpPN] 文件与目录参数:

2011-11-19 15:18:25 412

转载 关于s3c2410 中断异常处理

知道原文作者是:蔡于清,原文链接无法打开s3c2410的中断异常处理模块总共由以下寄存器构成SRCPND(SOURCE PENDING REGISTER)INTMOD(INTERRUPT MODE REGISTER)INTMSK(INTERRUPT MASK

2011-09-08 19:51:58 633

转载 shmget() -- 建立共享内存

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://leezen.blogbus.com/logs/19564086.html    #include     #include     int shmget(key_t key

2011-09-08 10:01:02 618

转载 ARM 汇编 伪指令 MACRO及MEND

原文链接:http://hi.baidu.com/wypnewbie/blog/item/fd315f5128a009571138c22a.htmlMACRO伪操作标识 宏定义的开始,MEND标识宏定义的结束。用MACRO 及MEND定义一段代码,称为宏定义体,这样在程序中就可以通过宏指令多次调用该代码段语法格式MACRO{$label}  macroname {$parameter {,$p

2011-06-23 23:54:00 1054

转载 串口流控制(flow control)

我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。   1.流控制在串行通讯中的作用   这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常

2011-06-21 23:37:00 3779

转载 那些令人喷饭的注释

<br /><br />程序源代码中的注释经常是一个卧虎藏龙的地方,来看看这一辑国外某公司产品中的注释。注意:看的时候严禁喝水或进食。<br /> <br /> <br /><br />亲爱的代码维护人员:<br />当您尝试优化这段代码但发现这是一个极端错误的决定的时候,请修改下面的计时器,以便警示后人。<br />总计浪费在这段代码的时间 = 16小时<br /> <br /> <br /><br />真的很有问题<br /> <br /> <br /><br />谨以此代码献给我的妻子达琳,感谢她一直

2011-05-25 18:38:00 1153

转载 17.4.1 数据接收函数recv

<br />摘要:《Linux系统下C程序开发详解》第17章讲述的是面向连接的套接字通信,这种信息传输方式是网络中最常用最重要的信息传输方式,本节为您介绍的是数据接收函数recv。标签:Linux  C程序  开发  函数recv  Linux系统下C程序开发详解<br /> <br />17.4  数据的发送与接收<br />建立套接字并完成网络连接以后,可以把信息传送到远程主机上,这个过程就是信息的发送。对于远程主机发送来的信息,本地主机需要进行接收处理。本节将讲述这种面向连接的套接字信息发送与接收操作

2011-05-24 19:40:00 751

转载 Linux 信号signal处理机制

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都特别重要。下面就来看看什么是信号。 1、

2011-05-20 18:01:00 456

转载 linux中的信号处理(signal和alarm)

<br />信号是unix中所使用的进程通信的一种最古老的方法.系统使用它来同志一个或多个进程异步事件的发生.<br /><br />linux系统库bits/signum.h对信号名作了定义:<br />linux的大多数信号是提供给内核的,仅有少数几种信号可以在信号间发送.<br /><br />.SIGHUP 当终止一个终端时,内核就把这种信号发送给该终端所控制的所有进程.<br />.SIGINT 当一个用户按下中断键(ctrl+c)后,内核就向该终端用关联的所有进程发送这个信号.<br />.SI

2011-05-20 17:27:00 685 1

转载 linux超级终端minicom的使用方法

<br /><br /> ===== 一.Minicom介绍 ===== <br />    <br />  Linux下的Minicom的功能与Windows下的超级终端功能相似,可以通过串口控制外部的硬件 <br />  设备.适于在linux通过超级终端对嵌入式设备行管理.同样也可以使用minicom对外置Modem <br />  进行控制. <br />   <br />  ===== 二.Minicom的安装 ===== <br />   <br />  ==== 1.rpm包方式 ==== <

2011-05-02 01:16:00 633

转载 lrzsz的安装过程

<br /><br />本文是记录lrzsz的安装过程<br />1、从下面的网站下载 lrzsz-1.12.20.tar.gz<br />http://www.filewatcher.com/m/lrzsz-0.12.20.tar.gz.280938.0.0.html <br />2、查看里面的INSTALL文档了解安装参数说明和细节<br />3、解压文件<br />tar zxvf lrzsz-1.12.20.tar.gz<br />4、进入目录<br />cd lrzsz-1.12.20<br />

2011-04-25 00:07:00 1035

原创 常用AT指令

<br />常用AT指令有:<br />ATZ 软复位modem。<br />AT&K0 关闭流控制。<br />AT&K3 使用RTS/CTS流控制。<br />AT&W0 把当前设置保存到写到modem的永久存储器中的出厂设置配置文件0中。<br />AT&Y0 当MODEM在上电时自动调用出厂设置0,这样就能保证每次上电恢复我们预先设置的参数。<br />ATDn 拨号,其中n为电话号码。它必须是命令行中的最后一条指令,ATD命令使调制解调器摘机后,根据输入的参数拨号,以建立连接。<br />+++

2011-03-31 11:06:00 1592 1

转载 Source Insight经典教程

<br /><br />Source Insight实质上是一个支持多种开发语言(java,c ,c 等等)的编辑器,只不过由于其查找、定位、彩色显示等功能的强大,常被我们当成源代码阅读工具使用。<br />作为一个开放源代码的操作系统,Linux附带的源代码库使得广大爱好者有了一个广泛学习、深入钻研的机会,特别是Linux内核的组织极为复杂,同时,又不能像windows平台的程序一样,可以使用集成开发环境通过察看变量和函数,甚至设置断点、单步运行、调试等手段来弄清楚整个程序的组织结构,使得Linux内核源

2011-03-05 21:12:00 719 1

转载 单片机抗干扰技术

<br /><br />单片机系统硬件抗干扰的常用方法:<br />影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。<br />  形成干扰的基本要素有三个: <br />  (1)干扰源。指产生干扰的元件、设备或信号, 用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、

2011-02-11 19:40:00 2977

转载 基于MTD的NAND驱动开发

<br />○、说明 大约用了两个礼拜不到的时间为公司的IPcamera系统写了基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该驱动的支持下跑cramfs和jffs2文件系统,另外,该驱动也可以同时支持small page(每页512 Byte)和big page(每页2048 Byte)两种NAND芯片。在此整理一下与NAND驱动相关的概念,结构体,驱动框架和流程,同时分析一下基于MTD的NAND驱动的部分函数,尤其是其中的nand_scan()函数。(涉及到具体NAND芯片

2011-01-29 00:41:00 421

转载 VIVI中MTD驱动的实现(1)

<br /><br />在vivi中使用的flash有nor和nand,而mtd的作用就是提供一个中间层的驱动,实现接口函数的统一管理,这里首先介绍nand flash在mtd中的实现。<br />在vivi bootloader中,第6步的时候就是实现mtd中间驱动的实现,MTD驱动的函数调用关系如下:<br />mtd_dev_init()---->mtd_init()---->smc_init()在这里需要说明,mtd_init()函数可以按照配置调用不同的函数,包括cfi_init(),smc_in

2011-01-27 23:20:00 771

转载 S3C2410 bootloader vivi阅读笔记

<br /><br />建议读一读《嵌入式系统Boot Loader技术内幕》(詹荣开著),google一下就会找到一片。什么是Bootloader就不再这里废话了,看看上面的文章就明了了。 Bootloader有很多种,如本文将要阅读的vivi,除此之外还有uboot,redboot,lilo等等。Vivi 是韩国mizi公司专门为三星s3c2410芯片设计的Bootloader。<br />先来看看vivi的源码树:<br />vivi-+-arch-+-s3c2410<br />|-Documenta

2011-01-27 21:06:00 809

转载 s3c2440对nandflash的操作

nandflash在对大容量的数据存储中发挥着重要的作用。相对于norflash,它具有一些优势,但它的一个劣势是很容易产生坏块,因此在使用nandflash时,往往要利用校验算法发现坏块并标注出来,以便以后不再使用该坏块。nandflash没有地址或数据总线,如果是8位nandflash,那么它只有8个IO口,这8个IO口用于传输命令、地址和数据。nandflash主要以page(页)为单位进行读写,以block(块)为单位进行擦除。每一页中又分为main区和spare区,main区用于正常数据的存储,s

2011-01-25 11:31:00 3752 1

转载 ARM中断学习一/[友善2440test中的中断处理部分]

<br /><br />《 嵌入式开源网:www.embedos.org ,不可错过的网站,有兴趣的朋友还可以做版主,开源、共享、免费!——博主推荐 》<br />一直在看2440的中断处理部分,不懂的实在太多了,百度到这篇文章,实在有听君一席话,胜养十年猪的感觉啊,下面上文章:<br />中断向量 <br />     b     HandlerIRQ     ;handler for IRQ interrupt <br />很自然,因为所有的单片机都是那样,中断向量一般放在开头,用过单片机的人都会很熟悉

2011-01-24 23:39:00 602

转载 ARM的AREA指令的使用

<br /><br />AREA指令指示汇编程序汇编新的代码节或数据节。节是不可分的已命名独立代码或数据块,它们由链接器处理。有关详细信息,请参阅ELF节和AREA指令。<br />语法<br />    AREA sectionname{,ATtr}{,ATtr}...<br />其中:<br />    sectionname<br />是将要指定的节名。<br />可以为节选择任何名称。但是,以数字开始的名称必须包含在竖杠内,否则会产生一个缺失节名错误。 例如,|1_DATaArea|。有些名称是习惯

2011-01-24 21:45:00 9216 1

转载 SDRAM的逻辑Bank与芯片容量表示方法

1、逻辑Bank与芯片位宽      简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称L-Bank)。L-Bank存储阵列示意图

2011-01-24 15:48:00 735

转载 DRAM, SRAM, SDRAM的关系与区别

<br /><br />DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据.而且是行列地址复用的,许多都有页模式。 ARM<br />SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。 ARM开发论坛<br />SDRAM,同步的DRAM,即数据的读写需要时钟来同步。 DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM,但是现在,SDRAM的速度也已经很快了,时钟似乎已经有 150兆的了。那么就是读写周期小于10ns了。

2011-01-24 15:47:00 736

转载 DRAM SRAM SDRAM 说明精典完整版

<br />问题1:什么是DRAM、SRAM、SDRAM?<br />答:名词解释如下<br />DRAM--------动态随即存取器,需要不断的刷新,才能保存数据,而且是行列地址复用的,许多都有页模式<br />SRAM--------静态的随机存储器,加电情况下,不需要刷新,数据不会丢失,而且一般不是行列地址复用的<br />SDRAM-------同步的DRAM,即数据的读写需要时钟来同步<br /><br />问题2:为什么DRAM要刷新,SRAM则不需要?<br />答:这是由RAM的设计类型决

2011-01-24 15:46:00 643

转载 RAM,SRAM,SDRAM工作原理 之三

<br />在介绍FPM的读取过程的最后我着重提到了 FPM DRAM是在上一次的数据读取完毕才会进行下一个数据的读取,但是对于EDO DRAM却是完全不一样的。EDO DRAM可以在输出数据的同时进行下一个列地址选通,我们依然结合下面的EDO读取时序图来了解EDO DRAM读取数据的过程:<br /> <br /><br /><br /> <br />  1、RAS在结束上一次的读取操作之后,进入预充电状态,当接到读取数据的请求之后,行地址首先通过地址总线传输到地址引脚,在这个期间CAS依然处于预充电

2011-01-24 15:44:00 1017

转载 RAM,SRAM,SDRAM工作原理 之二

关于Bank的问题  前面我们讲述的都是8bit的内存,现在这种东西我们基本上都接触不到了,更常用的是32bit、64bit或者128bit。由于前面我们已经讲到了4Mx1bit模块实现bit输入输出的方法,所以我们很容易想到我们把足够多的芯片放在一个模块中就可以了。不过在实际应用中,仅仅这样做还是不行的,这里就需要引入bank的概念,bank是由多个模块组成的。请看下面的示意图:  上面的示意图显示的是由4组8bit模块组成的一个bank,如果构成模块的是4194304 x 1芯片,那么每个模块的架构应该

2011-01-24 15:43:00 569

转载 RAM,SRAM,SDRAM工作原理 之一

<br /><br />为了便于不同层次的读者都能基本的理解本文,所以我先来介绍一下很多用户都知道的东西。RAM主要的作用就是存储代码和数据供CPU在需要的时候调用。但是这些数据并不是像用袋子盛米那么简单,更像是 图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同的。对于RAM等存储器来说也是一样的,虽然存储的都是代表0和1的代码,但是不同的组合就是不同的数据。<br />  让我们重新回到书和书架上来,如果有一个书架上有10行和10列格子(每行和

2011-01-24 15:42:00 1068

转载 抛弃学生气,准备进入社会

<br /><br />一:沉稳<br />(1)不要随便显露你的情绪。<br />(2)不要逢人就诉说你的困难和遭遇。<br />(3)在征询别人的意见之前,自己先思考,但不要先讲。<br />(4)不要一有机会就唠叨你的不满。<br />(5)重要的决定尽量有别人商量,最好隔一天再发布。<br />(6)讲话不要有任何的慌张,走路也是。<br />(7)自信是好,但是别忽略任何人的想法。<br />(8)人无高低,不要一副拽拽的样子,对人对事,别忘了礼貌。<br />二:细心<br />(1)对身边发生

2011-01-23 16:47:00 365

转载 C语言宏定义技巧(常用宏定义)

<br />写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 <br /><br />  <br /><br />1,防止一个头文件被重复包含 <br /><br />#ifndef COMDEF_H <br /><br />#define COMDEF_H <br /><br />  //头文件内容 <br /><br />#endif <br /><br />2,重新定义一些类型,防止由于各种平台和编译器的不同,而

2011-01-22 15:41:00 420

转载 S3C2410中断处理

在进入正题之前,我想先把ARM920T的异常向量表(Exception Vectors)做一个简短的介绍。:]ARM920T 的异常向量表有两种存放方式,一种是低端存放(从0x00000000处开始存放),另一种是高端存放(从0xfff000000处开始存放)。关于为什 么要分两种方式进行存放这点我将在介绍MMU的文章中进行说明,本文采用低端模式。ARM920T能处理有8个异常,他们分别是:Reset,Undefined instruction,Software Interrupt,Abort (prefe

2011-01-22 15:34:00 741

转载 看了张孝祥的《绝对能够测试你的C语言功力的几个问题》

原题:int x=35;char str[10];//问:strlen(str)和sizeof(str)的值分别是多少?strcpy(str,"www.it315.org"/*共13个字母*/);//问:此时x和strlen(str)的值分别是多少?str="it315.org";//编译能通过吗?char *pstr;strcpy(pstr,"http://www.it315.org");//上句编译能通过吗?运行时有问题吗?const char *p1;char * const p2;//上面两句有什么

2011-01-21 17:23:00 751 1

转载 ARM立即数,LDR和MOV的区别

Mov 是把立即数赋给一个寄存器,但对立即数的范围有要求。只能是由8bit连续有效位通过偶数次移位能得到的数。如果立即数超出这个范围,就没办法用一条MOV指令给寄存器赋值。LDR除了普通的读数之外,也有给寄存器赋立即数的功能。你只要写 LDR R0,=0xabcdef它没有立即数范围的限制。因为这是一条伪指令。如果立即数在MOV的要求内,那就用一条汇编来实现。如果不在Mov的范围内,就用其它方式实现,如变成两条指令,或从PC偏移地址读一个32位数给寄存器。MOV是从一个寄存器或者移位的寄存器或者立即数的值传

2011-01-21 16:44:00 401

转载 ARM汇编伪指令介绍

在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。         在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。    符号定义( Symbol Definition )伪指令        符号定义

2011-01-21 10:14:00 426

转载 【ARM】2440init.s文件分析(2)

;这里引入一些在其它文件中实现在函数,包括为我们所熟知的main函数 ;IMPORT MMU_SetAsyncBusMode ;IMPORT MMU_SetFastBusMode ;hzh IMPORT Main;从这里开始就是正真的代码入口了! AREA    Init,CODE,READONLY ;这表明下面的是一个名为Init的代码段 ENTRY    ;定义程序的入口(调试用) EXPORT __ENTRY   ;导出符号_ENTRY,但在那用到就还没查明__ENTRYResetEntry;1)Th

2011-01-21 08:48:00 567

mk2.0 DIY全攻略

mk2.0 DIY全攻略,网上找的资料,关于四轴DIY的。

2011-07-12

RF905微功率模块资料集

RF905微功率模块资料集,里面有源代码和开发文档。

2011-01-08

LCD1602显示模块

LCD1602显示模块,适用于51单片机,汇编的。

2010-12-27

空空如也

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

TA关注的人

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