查看完整版本: 关于Linux的设备驱动程序的测试

leesimon_sh 2004-7-30 17:19

关于Linux的设备驱动程序的测试

有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具?

wsj112233 2004-8-2 20:52

哇        这个就比较高深了吧

testing 2004-8-2 21:49

[url]http://ltp.sourceforge.net/[/url]

xm3525 2004-8-3 14:33

谢谢TESTING

leesimon_sh 2004-8-11 13:59

谢谢站长!

btman 2005-1-4 17:41

[quote]Originally posted by [i]leesimon_sh[/i] at 2004-7-30 05:19 PM:
有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具? [/quote]

有没有可以测试的工具啊?好像讨论的人不多啊。俺要计算代码的执行时间如何,有没有工具可用?拜托了!

冰河 2005-2-4 15:49

谢谢管理员!

black_tulip 2005-2-5 16:20

做过ide硬盘驱动的读写性能比较,两种方法,或者插入代码,或者用现成的工具,google上找。

fjzpczj 2005-11-15 14:09

谢谢!

addvalue 2005-11-15 23:22

有趣的一个话题

配合用于这方面测试的工具主要有ICE和ROM仿真器。
其实光测试功能,也必须如black_tulip举例那样,应该分开考虑。大体上应该对以下基本功能进行测试:
1、能够自动扫描并轮询连接到系统上的外部设备;
2、读取、修改设备I/O空间的内容,即能够读写设备寄存器;
3、在用户空间就完成了通常需要在内核空间才能完成的I/O操作,假若全部程序运行在用户空间,同样要确保驱动的通用性、高可移植性、兼容性;
4、可与寄存器描述文本配合,对I/O空间的内容进行解析,给出当前寄存器内容所表示的意义,并在修改寄存器内容时提供参考信息

addvalue 2006-5-9 06:55

当然编译内核是首要的一步:
检查/usr/src/下有没有linux-2.4.20-8目录及指向该目录的符号连接linux-2.4,若没有,则插入光盘2,挂载/dev/cdrom到/mnt/cdrom,进入/root,执行rpm -ivh kernel-source*,等等命令执行完毕,安装源码结束。
进入/usr/src/linux-2.4/
make mrprobe,这一步很重要,如果跳过,可能会编译无法通过。
make menuconfig,选择你想要的选项,退出并保存。
make clean,清除垃圾(为了保险起见)。
make bzImage,编译内核。
make modules,编译模块。
make modules_install,安装模块。
make install,完成安装

addvalue 2006-5-9 07:05

使用共享内存在测试程序编写中经常遇到。
共享内存作为一种IPC,用于进程间通信,甚至可以实现用户程序与内核间的数据交换。现在我们就简单介绍一下共享内存的几个系统调用。

创建
第一步要做的是创建一个共享内存结构。
#include <sys/shm.h>
#include <sys/ipc.h>

int shmget (key_t key, int size, int shmflg);

key是一个整数值,用来指定一个关键字,它可以用于搜寻一个共享内存结构。
size表示要创建的共享内存的大小,以字节计算。
shmflg为创建指派属性。
IPC_CREAT表示创建一个新的共享内存结构,若key已经代表了一个结构并且该结构未被删除,则直接返回这个结构的标识。
IPC_EXCL需要与IPC_CREAT一起使用,指定IPC_EXCL后,若key已经关联了一个共享内存结构,则shmget出错,返回-1。所以IPC_EXCL可以保证shmget创建一个新的结构。若shmflg为0,则shmget寻找key关联的共享内存结构,若找到,返回改结构的标识符,否则返回-1。
若调用成功,则返回得到的共享内存结构标识符,否则返回-1。
连接
创建了一个共享内存结构之后,需要将这个结构和一段存储区域、一个指针连接起来,才能通过该指针正确访问共享的内存区域。
#include <sys/types.h>
#include <sys/shm.h>

void *shmat (int shmid, const void *shmaddr, int shmflg);

shmid是shmget调用得到的共享内存结构标识符。
shmaddr指定连接的目的地址。若shmaddr为0,则由内核选择目的内存段,并返回该段的指针。若shmaddr不为0,且shmflg未指定SHM_RND选项,则shmaddr必须为页对齐的地址,该地址表示的内存段将被连接;若shmaddr不为0且shmflg指定了SHM_RND,则连接的地址为小于shmaddr且最接近shmaddr的SHMLBA的倍数。
shmflg指定连接的属性。除了上面说的SHM_RND外,还可以指定SHM_RDONLY属性。若指定了SHM_RDONLY,则以只读方式连接,否则连接的内存是可读可写的。
若调用成功则返回得到的存储区域指针,否则返回-1。
访问
连接成功后,根据的到的指针,我们就可以根据需要来使用得到的存储空间了。

控制
我们可以根据需要来设置的到的共享内存结构的属性,甚至可以实现删除。
#include <sys/shm.h>
#include <sys/ipc.h>

int shmctl (int shmid, int cmd, struct shmid_ds *buf);

shmid是要操作的共享内存结构标识符。
cmd用来指定我们要进行的操作。
IPC_STAT用来获得共享内存段的状态信息,结果保存在buf中
IPC_SET用来设置共享内存段的一些状态信息,在buf的成员shm_perms中预先指定我们想要改变的属性。
IPC_RMID给shmid指定的内存段加上删除标志,在该段最后一次断开连接后,内存将被释放。
SHM_LOCK锁定内存段以保证不会被访问。
SHM_UNLOCK解除锁定。
SHM_LOCK、SHM_UNLOCK只在Linux系统中有效,并且只有超级用户才可以使用。
buf保存shmid标识的共享内存结构的信息。
断开
一般用完共享内存段之后要断开连接。
#include <sys/types.h>
#include <sys/shm.h>

int shmdt (const void *shmaddr);

shmaddr是连接后得到的指针。
若调用成功,返回0,否则返回-1。
注意,断开操作只是切断进程与该共享内存的关联,并不会释放内存段。
介绍几个调用的功能,使用共享内存的操作顺序为:创建(查找)——连接——控制——访问——断开,在确信不用时进行销毁(实际上是控制的一个特例)。

addvalue 2006-5-10 23:30

shell programming

[[i] 本帖最后由 addvalue 于 2006-5-11 00:17 编辑 [/i]]
页: [1]
查看完整版本: 关于Linux的设备驱动程序的测试