- 博客(11)
- 资源 (12)
- 收藏
- 关注
转载 linux C内存泄露检测实现及内存泄露检测的一般方法
学习,以后对vxworks和linux搞一套通用的,这样同事就方便了!linux中,由于使用malloc或alloc而没有free掉申请的内存,就会造成内存的泄露。通常,来讲为了避免内存泄露的情况出现,一般要求,我们尽量的malloc之后,调用free。但是总会有忘记free的时候啊。一般可以有如下几种方式来避免内存泄露:1) 使用智能指针,这个在C++中较为常见;
2016-03-26 14:46:22 4257
转载 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 3877
转载 mdev的使用方法和原理以及实现U盘或SD卡的自动挂载
udev实现U盘或SD卡的自动挂载,在这里我们再说一下怎样用mdev实现这个功能。mdev的使用在busybox中的mdev.txt文档已经将得很详细了。 mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的自动挂载,只是在实现的过程中有点差异,在发生热插拔时间的时候,mdev是被hotplug直接调用,这时mdev通过环境变量中的
2016-03-10 09:29:00 2750
转载 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 1439 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 1897
转载 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
TCP-IP详解卷2(17-23)
2009-05-10
TCP-IP详解卷2(1-16)
2009-05-10
TCP-IP详解卷3
2009-05-10
TCP-IP详解卷1
2009-05-10
非常完善TCPIP协议栈源码,写的不错!包括一个ARM上的移植
2009-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人