51Testing软件测试论坛

标题: 关于Linux的设备驱动程序的测试 [打印本页]

作者: leesimon_sh    时间: 2004-7-30 17:19
标题: 关于Linux的设备驱动程序的测试
有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具?
作者: wsj112233    时间: 2004-8-2 20:52
哇        这个就比较高深了吧
作者: testing    时间: 2004-8-2 21:49
http://ltp.sourceforge.net/
作者: xm3525    时间: 2004-8-3 14:33
谢谢TESTING
作者: leesimon_sh    时间: 2004-8-11 13:59
谢谢站长!
作者: btman    时间: 2005-1-4 17:41
Originally posted by leesimon_sh at 2004-7-30 05:19 PM:
有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具?


有没有可以测试的工具啊?好像讨论的人不多啊。俺要计算代码的执行时间如何,有没有工具可用?拜托了!
作者: 冰河    时间: 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

[ 本帖最后由 addvalue 于 2006-5-11 00:17 编辑 ]
作者: C-C    时间: 2009-3-30 10:51
ltp 只是一个基本的测试 而且需要重新 在自己的平台上编译

主要还是利用脚本 进行测试!
作者: muerte    时间: 2009-6-9 16:55
原帖由 C-C 于 2009-3-30 10:51 发表
ltp 只是一个基本的测试 而且需要重新 在自己的平台上编译

主要还是利用脚本 进行测试!

不错,如果想在linux下进行测试的话,最好能会一门语言,加上一个脚本




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2