linux驱动
chchchdx123
本人勤奋爱学,踏实肯干
展开
-
vmtools安装过程
1、启动并进入Linux系统。2、然后选择虚拟机菜单中的“虚拟机/安装VMware-Tools”,此时就会有把VMware-tools文件映像到CD-ROM中。3、把“VMwareTools-6.0.2-59824.i386.rpm,VMwareTools-6.0.2-59824.tar.gz”文件复制到自己的需要的位置中,然后选择一种安装方式。在此我选VMwareTools-6.0.2-59824.tar.gz。4、解压# tar -zxvf VmwareTools-6.0.2-59824.tar.gz5原创 2011-03-02 11:09:00 · 511 阅读 · 0 评论 -
硬件io
<br />1、I/O 端口和 I/O 内存 http://www.cublog.cn/u3/109117/showart_2230101.html 每个外设都是通过读写其寄存器来控制的。通常一个设备有几个寄存器,它们位于内存地址空间或者I/O地址空间,并且地址是连续的。 在硬件层上,内存区和I/O区域没有概念上的区别: 它们都是通过在地址总线和控制总线上发出电信号来存取(即,读写信号),并且通过数据总线来读写数据。 在一些CPU制造商在其芯片上实现了一个单地址空间(统一编址)的同时,其它的CPU制造商认为转载 2011-03-09 13:42:00 · 337 阅读 · 0 评论 -
list_for_each
<br />在 [net/core/netfilter.c] 的 nf_register_sockopt() 函数中有这么一段话: <br /><br />…… struct list_head *i; …… list_for_each(i, &nf_sockopts) { struct nf_sockopt_ops *ops = (struct nf_sockopt_ops *)i; …… } ……<br /><br /><br />函数首先定义一个 (struct list_head *) 指针变量i,转载 2011-03-11 17:16:00 · 1880 阅读 · 0 评论 -
2410平台上dm9000a网卡驱动分析
<br />该驱动基于linux-2.6.24.4内核。<br /> <br /> 首先,需要在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加如下代码:<br />static struct resource s3c_dm9000_resource [] = {<br /> [0] = {<br /> .start = 0x10000000,<br /> .end = 0x10000040,<br /> .flags转载 2011-03-25 10:32:00 · 567 阅读 · 0 评论 -
linux HZ Tick Jiffies
1.linux HZ<br />Linux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。<br /> <br />HZ <br />Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts。举例来说,HZ为1000,代表每秒有1000次timer interrupts。 HZ可在编译核心时设定,如下所示(以核心版本2.6.20-15为例):<br /> <br />adrian@adrian-d转载 2011-03-23 09:36:00 · 3935 阅读 · 4 评论 -
基于 EUI-64 地址的接口标识
<br />64 位 EUI 64 地址是由电气和电子工程师协会 (IEEE) 定义的。将 EUI-64 地址指派给网络适配器,或从 IEEE802 地址派生得到该地址。<br />IEEE 802 地址<br />用于网络适配器的传统接口标识可使用称为 IEEE 802 地址的 48 位地址。此地址由 24 位公司 ID(也称为制造商 ID)和 24 位扩展 ID(也称为底板 ID)组成。公司 ID(唯一指派给每个网络适配器的制造商)和底板 ID(在装配时唯一指派给每个网络适配器)的组合,即可生成全局唯一转载 2011-04-01 09:19:00 · 545 阅读 · 0 评论 -
基于 EUI-64 地址的接口标识
<br />64 位 EUI 64 地址是由电气和电子工程师协会 (IEEE) 定义的。将 EUI-64 地址指派给网络适配器,或从 IEEE802 地址派生得到该地址。<br />IEEE 802 地址<br />用于网络适配器的传统接口标识可使用称为 IEEE 802 地址的 48 位地址。此地址由 24 位公司 ID(也称为制造商 ID)和 24 位扩展 ID(也称为底板 ID)组成。公司 ID(唯一指派给每个网络适配器的制造商)和底板 ID(在装配时唯一指派给每个网络适配器)的组合,即可生成全局唯一转载 2011-04-01 09:19:00 · 233 阅读 · 0 评论 -
linux-2.6.38.8 内核下实现《linux设备驱动开发详解》
《linux设备驱动开发详解》第6章介绍了globalmem驱动实例,但是其实现环境是在比较低的内核版本下的,对于使用Fedora15的用户参照书上介绍的步骤会出现很多问题,这是由于Fedora15使用了2.6.38版的内核,这个内核比较新,进行了许多的更新,导致书本上介绍的部分转载 2011-09-26 17:11:11 · 1034 阅读 · 0 评论 -
ifconfig: SIOCSIFFLAGS: Cannot assign requested address
Linux昨天晚上终于跑起来了,文件系统也可以用了,我在开机时调用ifconfig设置进行IP地址的设置,可是总是会显示:ifconfig: SIOCSIFFLAGS: Cannot assign requested address很纳闷,网上查了一下,原来是MAC地址的问题,经过以下的处理,就OK啦~# ifconfig eth0 down# ifconfig eth0 hw e转载 2011-10-28 13:42:50 · 5000 阅读 · 0 评论 -
ioremap的原理及意义
<br />void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) <br />入口: phys_addr:要映射的起始的IO地址; <br /><br />size:要映射的空间的大小; <br /><br />flags:要映射的IO空间的和权限有关的标志; <br /><br />功能: 将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问; <br /><br />实现:对要映射的IO地转载 2011-03-09 11:38:00 · 398 阅读 · 1 评论 -
linux route命令
<br /> 使用路由方式。使用route命令。<br /><br />-- Route命令的正确用法<br />使用 Route 命令行工具查看并编辑计算机的 IP 路由表。Route 命令和语法如下所示:<br />route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]<br />-f 清除所有网关入口的路由表。 <br />-p 和 add 命令一起使用时使路由原创 2011-03-02 16:54:00 · 622 阅读 · 0 评论 -
mkinitrd
<br />9.9 mkinitrd指令:建立要载入ramdisk的映像文件 语法:mkinitrd[选择性参数][必要参数] 功能说明:根据内核版本和指定参数生成映像文件。 参数说明:必要参数的具体说明如下: 参 数 功 能 <映像文件> 指定映像文件名称和路径 <内核版本> 指定所依据的内核版本 选择性参数的具体说明如下: 参 数 功 能 --builtin=<模块> 认为指定模块已经装入内核,忽略错误 -f 允许覆盖已存在的映像文件 --image-version 内核版本号将附加到建立的映像文件的目原创 2011-03-02 17:25:00 · 360 阅读 · 0 评论 -
查看linux内核版本,cpu信息
<br />查看内核版本: uname -a<br /> more /etc/*release <br /> more /etc/redhat-release<br /> more /proc/version <br /><br />查看CPU信息:grep "model name" /proc/cpuinfo<br />原创 2011-03-04 10:10:00 · 230 阅读 · 0 评论 -
Linux环境变量的设置和查看方法
<br />1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ echo $HELLO Hello! 3. 使用env命令显示所有的环境变量 $ env HOSTNAME=redbooks.safe.org PVM_RSH=/usr/bin/rsh Shell=/bin/bash TERM=xterm HISTSIZE=1000 .原创 2011-03-03 16:29:00 · 280 阅读 · 0 评论 -
select函数
概况 select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组, 每一个数组元素都能与一打开的文件句柄(不管是Socket句柄,还是其他 文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执 行了select()的进程哪一Socket或文件可读。 操作程序 下面具体解释: #include #include #include int select(nfds, readf原创 2011-03-04 16:34:00 · 167 阅读 · 0 评论 -
驱动程序中的异步通知
用户空间中处理一个设备释放的信号,必须完成以下3项工作:1。通过F_SETOWN IO控制命令设置设备文件的拥有者为本进程,这样从设备驱动发出的信号才能被本进程所接收到2.通过F_SETFL IO控制命令设置设备文件支持FASYNC,即异步通知模式3.通过signal函数连接信号和信号处理函数。eg:main(){ int oflags; signal(SIGIO,input_handler); fcntl(STDIN_FILENO,F_SETOWN,getpid()); oflags=fc原创 2011-03-07 14:33:00 · 213 阅读 · 0 评论 -
select函数
<br /><br />int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout); <br /> <br />先说明两个结构体:<br /> <br />第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄,这可以是我们所说的普通意义的文件,当然Unix下任何设备、管道、FIFO等都是文件形式,全部包原创 2011-03-07 08:53:00 · 189 阅读 · 0 评论 -
yaffs启动出现Partially written block X detected信息
YAFFS2文件系统在做了创建、删除等操作后,下次开出现N多Partially written block X detected打印信息。显示如下: Creating 6 MTD partitions on "atmel_nand":0x000000000000-0x000000020000 : "bootstrap"0x000000020000-0x000000060000 :转载 2011-11-02 14:00:01 · 432 阅读 · 0 评论