ISA总线接口实验
ISA总线接口实验
实验内容
实验目的 实验方法 实验原理 实验步骤 结果与分析
实验目的
了解ISA总线的相关知识; 了解通过ISA接口扩展的实验设备; 掌握在Linux下访问ISA设备的方法; 掌握在Linux下编程访问指定设备寄存器的
方法; ……
实验方法
阅读实验原理中的相关介绍,了解ISA总线 的历史发展与技术特点
•
7、最具挑战性的挑战莫过于提升自我 。。20 20年9 月2020/ 9/1520 20/9/15 2020/9 /159/1 5/2020
•
8、业余生活要有意义,不要越轨。20 20/9/1 52020/ 9/15Sep tember 15, 2020
•
9、一个人即使已登上顶峰,也仍要自 强不息 。2020 /9/152 020/9/1 52020/ 9/1520 20/9/15
device_release函数
关闭设备时驱动需要完成的工作 这里仅仅将设备使用次数减1
驱动程序分析(续2)
device_read函数
将需要输出的信息拷贝到用户空间,也就是提交给 对设备进行读操作的程序
device_write函数
这里不支持写操作,因此仅仅打印出提示信息
cleanup_module函数
•
2、阅读一切好书如同和过去最杰出的 人谈话 。2020 /9/152 020/9/1 52020/ 9/159/ 15/2020 8:17:47 AM
•
3、越是没有本领的就越加自命不凡。 2020/9 /15202 0/9/152 020/9/ 15Sep-2 015-Se p-20
•
4、越是无能的人,越喜欢挑剔别人的 错儿。 2020/9 /15202 0/9/152 020/9/ 15Tues day, September 15, 2020
控制寄存器地址:283H 计数器0地址:280H 计数器1地址:281H
……
可使用IO命令访问设备(续)
ICH4中的实时钟RTC
RTC寄存器地址索引端口:70H RTC数据端口:71H
扩展实验板上的并口控制器(8255)+7段数码 管
8255控制寄存器端口:28BH 8255 A口地址:288H 8255 C口地址:28AH
ioperm
设置IO端口读写许可 需要有root权限 ioperm(from, num, turn_on)
可以使用IO命令访问的设备
ICH4中的定时器(8254)
0通道计数器:40H 1通道计数器:41H 2通道计数器:42H 计数器控制器:43H
扩展实验板上的定时器(8253)
函数依次对应了对设备读、写、打开、释放等操作 对应内核驱动需要进行的工作
设备通过主设备号与次设备号进行区分。在确 定系统中设备号可以在代码中指定,也可以由 系统自动分配
驱动程序分析
包括的头文件
<linux/fs.h>:定义了结构体 <asm/uaccess.h>:定义了其中用到的put_user函数
init_module函数
调用register_chrdev向系统注册字符设备,返回值即 系统分配的主设备号
分配的主设备号小于0,则表示注册设备错误
驱动程序分析(续1)
device_open函数
打开设备时驱动需要完成的工作
由于这里是虚拟设备,因此只是完成了部分内部变 量的初始化,以及设备使用次数加1
• 10、你要做多大的事情,就该承受多大的压力。
9/15/2020 8:17:47 AM2020/9/1520.9.15
• 11、自己要先看得起自己,别人才会看得起你。
•Leabharlann 5、知人者智,自知者明。胜人者有力 ,自胜 者强。 2020/9 /15202 0/9/152 020/9/ 152020 /9/159/ 15/202 0
•
6、意志坚强的人能把世界放在手中像 泥块一 样任意 揉捏。 2020年 9月15 日星期 二2020/ 9/1520 20/9/15 2020/9 /15
实验步骤
Linux下使用IO命令访问下列设备:
ICH4中的定时器(8254) ICH4中的实时钟(RTC) 扩展实验板上的定时器(8253) 扩展实验板上的7段数码管 ……
编写下列设备的字符设备驱动程序
ICH4中的RTC 扩展实验板上的7段数码管
•
1、有时候读书是一种巧妙地避开思考 的方法 。2020 /9/152 020/9/1 5Tuesday, September 15, 2020
调用unregister_chrdev从系统注销字符设备
Linux下直接访问IO地址
in,out,ins,outs
inb、inw、inl:从指定IO地址读1、2、4个字节 outb、outw、outl:向制定IO地址写入数据 inb_p、inw_p、……、outl_p:在执行完读写命
令后,执行一条空指令,暂停一下CPU
Linux下编程访问ICH4的计数器、RTC等功 能部分
Linux下编程访问扩展实验板上7段数码管、 8253定时器、8255并口等设备
学习字符设备驱动程序,编写实际的字符 设备驱动程序
实验原理
ISA总线
全称:Industry Standard Architecture总线 最初用于IBM PC,为8位总线 IBM PC/AT中扩展为16位 EISA协会开发的EISA总线为32位,向下兼容8
将底层设备抽象为设备文件 属于内核代码,运行在内核空间 可以使用Module模式,可以动态加载
字符设备驱动程序
定义了Module中必须定义的函数init_module和 cleanup_module
定义了结构体struct fops,里面定义了对应的 read、write、open、release等函数
位与16位ISA总线
PC104总线
用于工业控制计算机、嵌入式领域 具有功耗低、占用空间小、可扩展等特点
Linux设备驱动程序
Linux中IO设备分为:
字符设备:无需缓冲区直接读写,只能顺序访问 块设备 :以块为单位读写,可随即访问 网络设备:通过BSD套接口访问
Linux驱动程序