51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7648|回复: 14
打印 上一主题 下一主题

[讨论] 关于Linux的设备驱动程序的测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-7-30 17:19:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

15#
发表于 2009-6-9 16:55:57 | 只看该作者
原帖由 C-C 于 2009-3-30 10:51 发表
ltp 只是一个基本的测试 而且需要重新 在自己的平台上编译

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

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

使用道具 举报

该用户从未签到

14#
发表于 2009-3-30 10:51:09 | 只看该作者
ltp 只是一个基本的测试 而且需要重新 在自己的平台上编译

主要还是利用脚本 进行测试!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-5-10 23:30:37 | 只看该作者
shell programming

[ 本帖最后由 addvalue 于 2006-5-11 00:17 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-5-9 07:05:11 | 只看该作者
使用共享内存在测试程序编写中经常遇到。
共享内存作为一种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。
注意,断开操作只是切断进程与该共享内存的关联,并不会释放内存段。
介绍几个调用的功能,使用共享内存的操作顺序为:创建(查找)——连接——控制——访问——断开,在确信不用时进行销毁(实际上是控制的一个特例)。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-5-9 06:55:52 | 只看该作者
当然编译内核是首要的一步:
检查/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,完成安装
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2005-11-15 23:22:41 | 只看该作者

有趣的一个话题

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

使用道具 举报

该用户从未签到

9#
发表于 2005-11-15 14:09:40 | 只看该作者
谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-2-5 16:20:39 | 只看该作者
做过ide硬盘驱动的读写性能比较,两种方法,或者插入代码,或者用现成的工具,google上找。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2005-2-4 15:49:00 | 只看该作者

谢谢管理员!

回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-1-4 17:41:11 | 只看该作者
Originally posted by leesimon_sh at 2004-7-30 05:19 PM:
有没人对Linux的设备驱动程序的测试发表评论?
如何测试?使用什么工具?


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

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2004-8-11 13:59:07 | 只看该作者
谢谢站长!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-8-3 14:33:02 | 只看该作者
谢谢TESTING
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-8-2 21:49:24 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2004-8-2 20:52:13 | 只看该作者
哇        这个就比较高深了吧
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 06:58 , Processed in 0.086839 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表