自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(482)
  • 资源 (12)
  • 收藏
  • 关注

原创 不可重入函数总结

1.malloc,free, printf均是不可重入函数(意味不能在中断函数或信号处理函数同时调用),但是线程安全函数(意味它可以被多个线程调用)2.函数有static变量,则该函数是不可重入函数满足下面条件之一的多数是不可重入函数:(1)使用了静态数据结构;(2)调用了malloc或free;(3)调用了标准I/O函数;标准io库很多实现都以不可重入的方式使用全

2016-04-11 12:59:55 5886

转载 Linux平台Cpu使用率的计算

proc文件系统/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。/proc目录中有一些以数字

2016-04-07 13:34:44 6186

转载 linux C内存泄露检测实现及内存泄露检测的一般方法

学习,以后对vxworks和linux搞一套通用的,这样同事就方便了!linux中,由于使用malloc或alloc而没有free掉申请的内存,就会造成内存的泄露。通常,来讲为了避免内存泄露的情况出现,一般要求,我们尽量的malloc之后,调用free。但是总会有忘记free的时候啊。一般可以有如下几种方式来避免内存泄露:1)  使用智能指针,这个在C++中较为常见;

2016-03-26 14:46:22 4256

转载 inet_ntoa函数陷阱

今天编程时遇到一个很诡异的问题,是关于inet_ntoa函数的。先看一个测试程序#include stdio.h>#include sys/socket.h>#include netinet/in.h>#include arpa/inet.h>#include string.h>int main(int argc, char* argv[])

2016-03-24 18:17:31 4212

转载 S3C2440开发板LED驱动——ioremap 映射

刚开始学字符设备驱动,感觉最难的是驱动和底层硬件的连接。linux上的驱动程序,是基于操作系统之上的,他并不直接和底层的硬件打交道,但是我们写的驱动必须能使硬件“跑”起来,即与硬件紧密相连。就拿最简单的LED驱动来说,我们的驱动程序是在虚拟的内存上面跑的,但是最终,LED的点亮还是必须靠GPIO管脚的高低电平来控制。那么,我们的虚拟的内存怎么才能和实际的硬件上面的寄存器对应起来呢?

2016-03-23 22:00:36 1732

转载 Linux设备驱动之Ioctl控制

大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/  用户程序所作的只是通过命令码告诉驱动程序它想做什么,

2016-03-23 21:55:18 1132

转载 /dev/mtd和/dev/mtdblock的区别

这里对于mtd和mtdblock设备的使用场景进行简单总结:mtd-utils工具只能应用与/dev/mtdN的MTD字符设备mount、umount命令只对/dev/mtdblockN的MTD块设备有效/dev/mtdN和/dev/mtdblockN是同一个MTD设备的同一个分区(N一样)一个MTD原始设备可以通过mtd_part分割成数个MTD原始设备注册进 mtd_t

2016-03-11 12:52:43 3875

转载 mdev的使用方法和原理以及实现U盘或SD卡的自动挂载

udev实现U盘或SD卡的自动挂载,在这里我们再说一下怎样用mdev实现这个功能。mdev的使用在busybox中的mdev.txt文档已经将得很详细了。 mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的自动挂载,只是在实现的过程中有点差异,在发生热插拔时间的时候,mdev是被hotplug直接调用,这时mdev通过环境变量中的

2016-03-10 09:29:00 2749

转载 Linux设备驱动之mmap设备操作

1.mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;参数:addr:映射的起始地址,设为NULL由系统指定;len

2016-03-09 09:21:39 1020

转载 Linux内核驱动自动创建设备节点文件

Linux下生成驱动设备节点文件的方法有3个:1、手动mknod;2、利用devfs;3、利用udev在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。在2.6.17以前,在/dev目录下生成设备文件很容易,

2016-03-06 08:28:51 5676

转载 Linux系统对IO内存和IO端口的管理

CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上 (如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。        物理地址空间,一部分给物理RAM(内存)用,一部分给总线用,这是由硬件设计来

2016-03-04 08:43:32 1437 1

转载 Linux下/dev/mem和/dev/kmem及操作gpio实例

目前我所知道的在linux下操作GPIO有两种方法: 1.  编写驱动,这当然要熟悉linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据ioctl命令进行GPIO寄存器的读写,并把结果回送到应用层。这里提供一点程序片断供大家参考:[cpp] view plain copy

2016-03-04 08:36:27 1896

转载 Device Tree常用方法解析

Device Tree常用方法解析Device Tree在Linux内核驱动中的使用源于2011年3月17日Linus Torvalds在ARM Linux邮件列表中的一封邮件,他宣称“this whole ARM thing is a f*cking pain in the ass”,并提倡学习PowerPC等其他架构已经成熟使用的Device Tree技术。自此,Device Tree

2016-03-04 08:34:21 926

转载 双网卡在同一网段的解决办法

1.动态路由/静态路由动态路由路由选择器自动共享路由信息自动构造路由表,需要一个路由协议,如RIP或OSPF静态路由路由选择器不共享路由信息(单方向路由)手工构造路由表2.直连路由/网关路由(间接路由)其区别在于,发往直连路由的设备中不但具有指明目的端的I P地址,还具有其mac地址。当报文被发往一个间接路由时,I P地址指明

2016-01-19 15:21:09 29407 3

转载 路由表详解

路由表。 使用ipconfig /all命令查看路由表信息,如下图:3. :活动的路由Network destination :网关,又称下一跳路由器。在发送IP:跳数,跳数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跳跃数量,一个跳数代表经过一个路由器。跳数越低,代表路由成本越低,优先级越高。Persistent Routes当系统接收到一个目的地址不在路由

2016-01-16 15:08:13 61813

转载 跨网段的ping过程

引用﹏、止 的 跨网段ping的过程192.168.1.1跨网段ping 192.168.2.1拓扑如下:过程:1.首先PC1观察目的IP:192.168.2.1与本机IP:192.168.1.1是否在同一个网段2.发现不在,因此看本机是否设置了网关,如果没有设置网关,目的不可达;发现设置了网关:192.168.1.254,于是执

2016-01-16 13:58:58 15329

转载 交换机上的三种端口模式

补充知识PVID和VID区别PVID英文解释为Port-base VLAN ID,是基于端口的VLAN ID,一个端口可以属于多个vlan,但是只能有一个PVID,收到一个不带tag头的数据包时,会打上PVID所表示的vlan号。VID(VLAN ID)是VLAN的标识,定义其中的端口可以接收发自这个VLAN的包,一个端口可以接收多个不同VID的包,即属于多个VL...

2016-01-10 22:27:27 19756

转载 /proc/pid/stat字段说明

可以通过查看/usr/src/linux/Documentation/filesystems/proc.txt文件来获得更多的信息[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654

2016-01-04 16:25:43 19945

转载 Linux下进程信息的深入分析

这里我们主要介绍进程的状态,进程的状态可以通过/proc/PID/status来查看,也可以通过/proc/PID/stat来查看.如果说到工具大家用的最多的ps也可以看到进程的信息.这里我们通过/proc/PID/status来分析进程的信息.在2.6.18之后的内核,多了capibilty/cpusets等信息.查看进程状态信息如下:more sta

2015-12-29 12:23:29 8708

转载 virtualbox三种网络连接方式

virtualbox 三种网络连接方式的学习2010-05-15 11:23三种网络连接方式   Host-only:  ----可以用wireshark抓虚拟机和主机之间的网络包三种网络方式 BRIDGED: bridge就是“桥”的意思,说起桥接,就不能不说局域网。比如我们有两个局域网络,他们的ip段都处于192.168.0.*,同时,我们希望把这两个网络链接起来,这中

2015-12-01 20:13:34 2396

原创 linux小知识

1.linux 包含  # include  ------ vxworks #include 2.linux 保护 include   ------vxworks没有 struct timeval{time_t tv_sec; /* Seconds.  */time_t tv_usec; /* Microseconds.  */};gettimeofday

2015-12-01 20:07:33 901

转载 vxworks下辅助时钟aux clk的使用示例

vxworks下aux clock的使用示例:利用辅助时钟进行对某些函数运行时间进行精确计时。1. vxworks映像中包含辅助时钟,包含组件hardware->peripherals->clocks->AUX clock,并将参数 AUX_CLK_RATE_MAX改大点,默认只有5000的。2. 程序中使用,比如要记录某个函数的执行时间,函数假设为为test(),示例:int g

2015-11-07 11:33:13 3293

转载 VxWorks下使用双向链表lstLib的小例子

#include #include #include typedef struct _Queue{ NODE * next; NODE * prev; int age; char name[255];} QUEUE;LIST list;void TestList(){    QUEUE *p;    int i

2015-09-24 15:49:35 2095

转载 变参宏

宏中"#"和"##"的用法#的功能是将其后面的宏参数进行字符串化操作(Stringfication)。##被称为连接符(concatenator),用来将两个Token连接为一个Token。注意这里连接的对象是Token就行,而不一定是宏的变量。#define debug(arg…) printf(arg)但是,如果变参的个数为0, compiler will co

2015-09-10 16:14:35 1076

原创 运放在开关电源的补偿电路--自控原理要熟悉!!!

求运放的传递函数时它的参考电压要忽略,假设为0。因为传递函数是小信号的交流量来说的,参考是直流量。因此传递函数G (s) =-Z1/Z2  Z1=(1/SC3)//(1/SC1+R2);  Z2=R1//(1/SC2+R3)

2015-01-15 11:24:50 6424

转载 什么是准双向口,双向口?

C51的说明书上说:”Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called quasi-bidirectionalports. When configured as inputs, they pull high and source current (IIL) when external

2014-10-29 11:16:08 41523 4

原创 AD分辨率到底是1/(2^n-1), 还是1/2^n

网上看到两种说法:如下:《1》

2014-10-28 15:39:13 12159

转载 差分运放检测电流电路

差分运算放大器原理电流测试电路,采用运放的方式作电流检测可以分为:“高端电流检测”和“低端电流检测”。如下图:

2014-10-22 14:33:51 45924 2

原创 linux 循环双链表(list.h)

最近看linux 链表,网上很多代码的讲解,总有点知其然不知其所以然的感觉,我看了下有点自己想法,特记录如下:我们之前学习双链表结构体一般如下typedef struct __Node{    int data;    数据    struct __Node *pre;    指向前一个结点指针    struct __Node *next;    指向下一个结点指针

2014-07-01 15:47:22 1496

原创 环形队列串口(收)应用

void CommISR(void) interrupt 4{ if (RI0) {     RI0=0;      CommRecBuffer[CommRecBufferTail]=SBUF0;     //receive data              CommRecBufferTail++;   if (CommRecBufferTail==DB_RE

2014-04-04 12:00:57 6521

转载 电荷泵(charge pump)原理

电荷泵的基本原理电荷泵的基本原理是给电容充电,把电容从充电电路取下以隔离充进的电荷,然后连接到另一个电路上,传递刚才隔离的电荷。我们形象地把这个传递电荷的电容看成是“装了电子的水桶”。从一个大水箱把这个桶接满,关闭龙头,然后把桶里的水倒进一个大水箱[8]。电荷泵也称为开关电容式电压变换器,是一种利用所谓的“快速”或“泵送”电容,而非电感或变压器来储能的DC-DC变换器(直流变换器)。它们能使输

2014-03-26 10:46:34 78045 2

原创 环形队列串口(发)应用

环形缓冲区的实现原理:环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不需要添加互斥保护机制就可以保证数据的正确性在设计串口驱动的过程中,要遵循

2014-03-20 14:38:07 9157 1

原创 vxworks的堆和栈

vxworks的堆和栈区别系统内存池系统内存池用于动态内存的分配(如malloc())、任务的堆栈和控制块及VxWorks运行时需要的内存。这部分内存有VxWorks管理,开销位于目标板上。系统内存池在系统启动时初始化,它的大小是整个内存减去其他区的大小。在启动后可以通过函数memAddToPool()向系统内存池中增加内存。SysMemTop()返回系统内存池(System

2013-12-29 16:38:51 8046

原创 NOR NAND FLASH编程

NandFlash的数据是以bit 的方式保存在memory cell里的,一般来说,一个cell 中只能存储一个bit,这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line

2013-12-20 10:08:51 1821 1

转载 Vxworks下flash驱动编写流程 .

作为BSP开发人员,我们要实现的是MTD和socket两块,其它的是由文件系统自己守成的。  MTD层 该层提供Flash 设备识别,读写,擦除,地址映射函数的具体实现。该层实现由 Flash 驱动开发人员完成。该层将实现在BSP 下tffsConfig.c 以及 tffsXXX.c 文件中。其中tffsConfig.c定义有MTD 层一个重要的数组mtdTable,该数组中保存了

2013-11-30 23:27:56 3807

原创 运放二阶滤波电路

二阶滤波电路有两种结构: Sallen-key和多路反馈(KFB)MFB型滤波器的基本电路如下图所示。该电路有两条负反馈支路,并且运算放大器是作为一个无限增益器件来反馈支路,并且运算放大器是作为一个无限增益器来使用的,所以称为无限增益多端反馈电路高通滤波: 把低通滤波的电阻用电容代替,再把滤波器的电容用电阻代替,就可以产生高通滤波基本

2013-11-25 11:43:10 31120

转载 过采样技术原理介绍

过采样技术原理介绍假定环境条件: 10位ADC最小分辨电压1LSB 为 1mv 假定没有噪声引入的时候, ADC采样上的电压真实反映输入的电压, 那么小于1mv的话,如ADC在0.5mv是数据输出为0 我们现在用4倍过采样来, 提高1位的分辨率, 当我们引入较大幅值的白噪声: 1.2mv振幅(大于1LSB), 并在白噪声的不断变化的情况下, 多次采样, 那么我们得到的结果有

2013-11-23 21:57:27 12698 3

转载 全差分运放

全差分运放:有两个输出(差分)的运放叫全差分运放。电路的两个输出电压是幅度相等而级性相反的(以电路的共模参考点为参考)差分信号比单端信号拥有更强的抗噪声能力,所以在高速数字电路和高精度ADC应用中均是采用了差分信号。与普通运放不同的是它多了一个OCM pin,即output common mode voltage pin,用于设置输出共模电压的电平。全差分放大器使用时还

2013-11-14 14:34:40 10771

转载 CRC校验原理

模2除法:与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。 1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1

2013-11-04 13:45:22 1713

转载 1-wire协议

作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ 左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程

2013-11-04 13:27:33 5825

TCP-IP详解卷2(17-23)

最经典讲解的TCP-IP协议的资料,TCP-IP的详解卷,共3册,这是一册!其他的我也有上传,分别都是《TCP-IP详解卷1》,《TCP-IP详解卷2》,《TCP-IP详解卷3》

2009-05-10

TCP-IP详解卷2(1-16)

最经典讲解的TCP-IP协议的资料,TCP-IP的详解卷,共3册,这是一册!其他的我也有上传,分别都是《TCP-IP详解卷1》,《TCP-IP详解卷2》,《TCP-IP详解卷3》

2009-05-10

TCP-IP详解卷3

最经典讲解的TCP-IP协议的资料,TCP-IP的详解卷,共3册,这是一册!其他的我也有上传,分别都是《TCP-IP详解卷1》,《TCP-IP详解卷2》,《TCP-IP详解卷3》

2009-05-10

TCP-IP详解卷1

最经典讲解的TCP-IP协议的资料,TCP-IP的详解卷,共3册,这是一册!其他的我也有上传,分别都是《TCP-IP详解卷1》,《TCP-IP详解卷2》,《TCP-IP详解卷3》

2009-05-10

protel DXP 教程

protel DXP 教程,学习DXP的好帮手

2009-05-10

C51+TCPIP源码

51单片机TCPIP协议移植,例程为一个网页的显示

2009-05-10

Linux设备驱动程序第三版

Linux设备驱动程序开发的经典书籍,强烈推荐下载

2009-05-10

ucos+tcpip+arm9

最新ucos带有TCPIP协议栈,运行在ARM9的例子,我试过,可以运行!

2009-05-08

mp3 源码和原理图 KEIL

里面有详细的mp3的原理图和KEIL下的源码,非常详细,有兴趣的朋友可以看看

2009-05-08

51在线升级源码,实现在线升级

51内核的单片机在线升级程序,不再需要JTAG口下载,便于日后升级程序,是成熟产品必不可少的!!

2009-05-08

非常完善TCPIP协议栈源码,写的不错!包括一个ARM上的移植

非常完善TCPIP协议栈源码,写的不错! 里面还有将这个TCPIP协议栈移植到ARM的例程 学习TCPIP协议建议好好看看

2009-05-08

USB_C51源码,建议对USB协议感兴趣的可以下来看看

学习USB协议的好源码,建议对USB感兴趣的可以下来看看

2009-05-05

空空如也

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

TA关注的人

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