- 博客(22)
- 资源 (4)
- 收藏
- 关注
原创 TCP三次握手
在server和client调用socket生成套接字后,server调用listen监听某个端口后,调用accept来等待client的连接,accept本身是阻塞的,直到收到client的请求后,accept才返回client调用connect函数项server所在主机发起连接请求,连接的报文中除了包含server的iP和端口外,还包含了client端初始化的序号SYN a 和MSS=1460(最大数据段的大小),正在倾听client连接的server收到client的连接请求后,server从acce
2010-07-18 16:15:00 1343
原创 按键中断的platform bus设备和驱动
<br />platform_device <br /> <br />/*<br />程序说明:基于platform bus的按键中断设备程序,与platform BUS的按键驱动程序匹配使用<br />作者:谢思源<br />时间:2010.7.16<br />*/<br />#include <linux/init.h><br />#include <linux/module.h><br />#include <linux/kernel.h><br />#include <linux/fs.h><br
2010-07-17 12:50:00 2271 2
转载 Linux内核中的platform机制
Linux内核中的platform机制从Linux 2.6起引入了一套新的驱动管理和注册机制:platform_device和platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内
2010-07-17 00:12:00 1547
原创 mini2440按键中断和LED gpio
<br />驱动程序:<br />LED分别使用GPB5/6/7/8 六个按键分别使用GPG0、3、5、7、6、11、所用中断号是8、11、13、15、14、19<br />/*<br />程序说明:字符型按键驱动,按下按键1时候1号LED亮,按2按键LED2亮,依次,按5时候所有LED都亮,按6时候闪烁两下<br />*/<br />#include <linux/miscdevice.h><br />#include <linux/kernel.h><br />#include <linux/init.
2010-07-16 14:34:00 3043
原创 struct device 中的dev_id哪里去了?
struct device -replace bus_id with dev_name(),以后只要使用 dev -> bus_id 的时候,改成 dev_name()就可以了。参看http://blog.chinaunix.net/u3/108840/showart_2270330.html
2010-07-13 20:29:00 2479
转载 snprintf()和sprintf()格式化字符串
int snprintf(char *str, size_t size, const char *format, ...);将可变个参数(...)按照format格式化成字符串,然后将其复制到str中 (1) 如果格式化后的字符串长度 (2) 如果格式化后的字符串长度 => size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('/0') 函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。 -----------------------------
2010-07-13 15:05:00 7409
原创 kobject和kset
1 Kobject1.1 简介<br />Kobject 是Linux 2.6 引入的新的设备管理机制,在内核中由struct kobject数据结构 进行描述通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管 理,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注 册的kobject对象都对应于sysfs文件系统中的一个目录。Kobject是组成设备模型的基本结 构。但是,它比较低调,从不单独使用,都是嵌套在别的数据结构中。类似于C++中
2010-07-13 12:35:00 1898
原创 register_chrdev_region()和registe_chrdev()
分配设备编号,注册设备与注销设备的函数均在fs.h中申明,如下:extern int register_chrdev_region(dev_t, unsigned, const char *); //静态的申请和注册设备号extern int alloc_chrdev_region(dev_t, unsigned, const char *);//动态的申请注册一个设备号extern int register_chrdev(unsigned int, const char *,
2010-07-12 21:25:00 7029 2
转载 linux内核ioctl函数学习
我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。<br />一、 什么是ioctl。<br />ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:<br />int ioctl(int fd, ind cmd, …)
2010-07-12 19:15:00 3456
原创 MMU工作原理以及S3C2440的MMU
<br />MMU,全称Memory Manage Unit, 中文名——存储器管理单元。<br />许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面 前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆
2010-07-12 13:39:00 8024 8
原创 Linux对ARM的支持(头文件的支持)
1.在include/asm-arm/arch-s3c2410中有许多关于2410的头文件(.h)如:regs-gpio.hmap.hhardware.h2.在linux/arch/arm/mach-s3c2410/gpio.c中有许多关于2410的文件(.c .h)如:gpio.c
2010-07-12 12:06:00 1872
原创 register_chrdev() register_chrdev_region() alloc_chrdev_region的区别?
<br />在fs.h中的申明如下:<br />分配设备号:<br />extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);<br />extern int register_chrdev_region(dev_t, unsigned, const char *);<br />注册设备:<br />extern int register_chrdev(unsigned int, const char *,<br
2010-07-12 01:10:00 2975
原创 __init __initdata __exit __exitdata的不同和说明
<br />__init宏使内建模块中的init函数在执行完成后释放掉,不过可装载的模块不受影响。如果你关心init函数什么时候调用,这一点是很有用的。<br />还有个__initdata,和__init的作用基本上一样,不过它是针对变量而不是函数的。<br />__exit宏会使那些内建到内核的模块省略掉cleanup函数,不过和__init一样,对loadable模块没影响。再说一遍,如果你关心cleanup运行的时机,这是重要的。
2010-07-11 22:00:00 1651
原创 s3c2410_gpio_cfgpin等内核导出函数
//这里面的函数都是内核导出函数/plat-s3c24XX/gpio.c中#include #include #include #include #include #include #include #include #include #include //设置gpio的工作模式,是输入,输出还是其他的//s3c2410_gpio_cfgpin(S3C2410_GPB(5),S3C2410_GPIO_INPUT),就是设置GPB5为输入模式void s3c2410_gpio_cfgpin(unsigned
2010-07-11 19:50:00 4586 2
原创 自动在/dev/下创建设备文件
<br />在modprobe或者insmod后,如果不自动创建设备文件,需要mknod手动创建设备文件,然后应用程序才能工作,<br />我们可以在安装了模块后,自动在/dev下创建设备文件<br /> <br />在设备中添加用于创建设备文件的class和每个即将在/dev下创建的设备struct device<br />如下:<br />struct mem_dev <br />{
2010-07-10 22:20:00 5113
转载 poll select 机制
<br /> poll 和 select <br />使用非阻塞 I/O 的应用程序常常使用 poll, select, 和 epoll 系统调用. poll, select 和 epoll 本质上有相同的功能: 每个允许一个进程来决定它是否可读或者写一个或多个文件而不阻塞. 这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来读或写. 因此, 它们常常用在必须使用多输入输出流的应用程序, 而不必粘连在它们任何一个上. 相同的功能常常由多个函数提供, 因为 2 个是由不同的团队在几乎相同时间完成的:
2010-07-10 18:21:00 2868
原创 QT获取本机IP,本地IP
<br />QString str;<br /> QList<QHostAddress> NetList = QNetworkInterface::allAddresses(); //取得全部信息<br /> for(int Neti = 0;Neti < NetList.count(); Neti++)<br /> {<br /> str = NetList.at(Neti).toString();<br /> //qDebug()<<str;<br /> if(str != "127.
2010-07-10 13:07:00 2469
原创 阻塞性驱动编写
<br />memdevQueue.c和memdevQueue.h是驱动程序,另有两个测试程序,当设备中无数据可读时候阻塞进程,然后调用另一个测试程序向设备写入数据,此时设备中有数可以读取,则唤醒读进程,从设备中读取数据。<br />驱动程序<br />memdevQueue.h<br />#include<linux/ioctl.h> //包含ioctl已经命令定义等<br />#ifndef _MEMDEV_H_<br />#define _MEMDEV_H_<br />#ifndef MEMDEV_
2010-07-10 12:49:00 1282
原创 基于mini2440的QT程序移植
<br />利用QT_Creator来编写QT程序,建立一个空工程,然后逐步添加.h和.cpp,主要利用Creator的自动补齐和手册功能方便,然后保存工程,进入工程目录,把源文件和头文件拷贝到另一个文件夹里面,参考hello的.pro文件来编写这个程序的。pro 文件,<br />.pro 文件格式如下<br />CONFIG += qtopiaapp<br />CONFIG -= buildQuicklaunch<br />DESTDIR = $(QPEDIR)/bin<br /> <br />HE
2010-07-09 13:01:00 2487 1
原创 学习之路
2010.7.8号编译内核2.6.32.2成功,并且移植到开发板上2010.7.8号第一个测试驱动程序移植成功2010.7.9号QT移植成功,附带桌面图标的
2010-07-09 11:14:00 1041 2
原创 基于mini2440的驱动程序开发和移植
<br />首先要保证自己的驱动程序正确的,然后编写Makefile,下面是Makefile例子<br />ifneq ($(KERNELRELEASE),)<br />obj-m := memdev.o<br />else<br /> <br />KDIR := /opt/FriendlyARM/mini2440/linux-2.6.32.2<br />all:<br /> make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
2010-07-08 14:49:00 4780
原创 vim配置C、C++高亮显示
一、首先,确认你的linux系统是否安装了功能完整的且足够新的vim。比如你用的是RedHat(Fedora),请确定安装了vim-enhance的rpm包。以下命令将对你有所帮助。查看系统中已经安装的vim组件(后三行为示例输出,已经安装了完整的vim):# rpm -qa|grep vimvim-enhanced-7.1.12-1.fc7vim-common-7.1.12-1.fc7vim-minimal-7.0.235-1.fc7安装vim-enhanced:# y
2010-07-01 18:45:00 7817
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人