7224|16

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

驱动、IO Port、IRQ和硬件它们是如何联系起来的 [复制链接]

谁明白驱动、IO Port、IRQ和硬件它们是如何联系起来的吗?

硬件和IRQ的关系是可以动态设置的,那只能是通过IO Port来设置,但IO Port又是动态确定的,那操作系统如何分配IO Port呢?操作系统如何确定硬件的类型的呢?我们可以通过int指令来调用BIOS中的程序,如读取硬盘,那BIOS又是如何确定硬盘的IO Port呢?我手上的资料无法回答这些问题,Google也不管用,哪位高手可告诉我看哪些资料可以明白这些。

万分感谢

最新回复

1# 概括的很好 是个高手 帮顶。。。  详情 回复 发表于 2010-1-19 20:15
点赞 关注

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
随便找本操作系统概论的书,上面都会有讲到。


简单说一些:

如果是单独连接的外部设备,就称为端口(串口)
如果是多个外部设备共用的,就称为总线(PCI、USB总线==)
总线再往上是相应的控制器,控制器都有固定(标准化)的IO地址。
中断,分为内/外、可/不可屏蔽中断,是通过中断向量来完成的。
驱动程序,就是用来与上述这些打交道的,将上面的抽象出来,做成一个个“类”,方便你使用。
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
关注,我当时想看wince的驱动也没搞明白~~~感觉上层和底层完全是两个世界~~~
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
pla_007同学,哪本操作系统的书上能把这些个说清楚啊,我不要泛泛的概论,我知道具体的,从程序员的角度。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
看《微机原理》或者《计算机组成原理》
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
你要是具体的话,就得去看各类操作系统相关的驱动编写指南了。
Linux推荐《linux设备驱动开发详解》
Windows推荐《Windows设备驱动开发详解》、DDK手册和配套代码。

相关平台都有一些行内公认的入门书籍,看后再配合相关源码,不断学习之!

引用 3 楼 testcase 的回复:
pla_007同学,哪本操作系统的书上能把这些个说清楚啊,我不要泛泛的概论,我知道具体的,从程序员的角度。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

7
 
俺也正再学习呢,呵呵呵,天天向上。。。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

8
 
你要是具体的话,就得去看各类操作系统相关的驱动编写指南了。
Linux推荐《linux设备驱动开发详解》
Windows推荐《Windows设备驱动开发详解》、DDK手册和配套代码。

相关平台都有一些行内公认的入门书籍,看后再配合相关源码,不断学习之!


 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
我觉得你要是真的弄懂,全面把握这些之间的关系的话,没有什么书能帮助你,你所要做的就是(做一个假定,楼主熟悉某一架构处理器,如ARM,其次楼主在做wince开发):结合这个架构的user`s manual,读汇编代码,里面会有几种工作模式转换,以及exceptionHandler函数;然后读读OAL层的ISR,明白怎么根据中断找到对应驱动的原理,然后找到一个例程,看看IO中断的配置,你就会明白中断产生后系统的执行流程!这样才能明白硬件中断(IO),ISR,驱动以及系统调度的关系.

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
DINGDING
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
关键在于理解驱动程序原理与作用。找本关于驱动程序原理的书看下可能对你有帮助。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
感谢大家的关注,可能我的问题描述不清,arm9linuxpp比较明白我想知道什么。以下是我目前的进展:

如何确定设备类型、IO PORT和IRQ线?
ISA上的老设备的IO PORT和IRQ线是固定的,这样应该可以通过IO PORT来确定设备类型,而PCI设备是根据设备上的配置空间识别设备,PCI设备的IO PORT和IRQ线是动态分配的。

驱动程序如何与设备关联?
粗看了一下linux上的驱动程序好象是根据主设备号和次设备号来确定关联的设备,但跟PCI上的配置空间对不上。

通过int指令来调用BIOS中的程序,BIOS中的程序中干了什么?
BIOS程序也只是简单的把POST时保存到内存中的值返回给程序。

POST都干了什么?
POST如何确定总线类型,我看到的资料好像是根据CMOS中的数据,而不是通过总线控制器什么的?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 7 楼 lgy198612 的回复:
你要是具体的话,就得去看各类操作系统相关的驱动编写指南了。
Linux推荐《linux设备驱动开发详解》
Windows推荐《Windows设备驱动开发详解》、DDK手册和配套代码。

相关平台都有一些行内公认的入门书籍,看后再配合相关源码,不断学习之!




卢工说的有道理
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 7 楼 lgy198612 的回复:
你要是具体的话,就得去看各类操作系统相关的驱动编写指南了。
Linux推荐《linux设备驱动开发详解》
Windows推荐《Windows设备驱动开发详解》、DDK手册和配套代码。

相关平台都有一些行内公认的入门书籍,看后再配合相关源码,不断学习之!




卢工说的有道理
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
我的理解是对于cpu来说,对应一张向量表,就是irq的向量表,这是最底层的,完全由硬件完成,这些向量表都是指定了每个irq的硬件地址,即发生硬件中断时,该跳转地址,然后根据这个irq地址,可以选择不同的用途,如有的作为串口中断,自然可以实现com,有的作为io中断,可以用作keyboard,其实,什么驱动对应是由开发设计人员制定的,并不是必须,关键是对应的硬件接口,然后在这之上,加入一套进程调度机制,那么,最简单的操作系统就出现了。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 11 楼 testcase 的回复:
感谢大家的关注,可能我的问题描述不清,arm9linuxpp比较明白我想知道什么。以下是我目前的进展:

如何确定设备类型、IO PORT和IRQ线?
ISA上的老设备的IO PORT和IRQ线是固定的,这样应该可以通过IO PORT来确定设备类型,而PCI设备是根据设备上的配置空间识别设备,PCI设备的IO PORT和IRQ线是动态分配的。

驱动程序如何与设备关联?
粗看了一下linux上的驱动程序好象是根据主设备号和次设备号来确定关联的设备,但跟PCI上的配置空间对不上。

通过int指令来调用BIOS中的程序,BIOS中的程序中干了什么?
BIOS程序也只是简单的把POST时保存到内存中的值返回给程序。

POST都干了什么?
POST如何确定总线类型,我看到的资料好像是根据CMOS中的数据,而不是通过总线控制器什么的?

对于linux下我就不是很清楚,不过你的这个问题很专业,我觉得你要是搞懂了,那么你也就是嵌牛了!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

17
 
1# 概括的很好 是个高手 帮顶。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表