找不到,换个地方问!

crazydog1982 2005-09-07 11:44:07
我现在要学习驱动程序开发.可是我搞不明白驱动程序和控制程序有什么区别.假设:一个ISA总线的数据采集卡,我可以用汇编写以下程序(假设地址是300H~303H,300H,301H是数据输入,302H,303H是数据输出):
RU PROC NEAR
MOV DX,300H
IN AL,DX
MOV DX,301H
IN AH,DX
ENDP
CHU PROC NEAR
MOV DX,302H
MOV AL,(数据)
OUT DX,AL
MOV DX,303H
MOV AL,(数据)
OUT AH,DX
END
如果要取数据的时候就可以直接调用这两个子程序了.那为什么还要驱动程序呢?这个程序能不能控制我做的ISA卡?
还有,听说学驱动程序还要学ASM32的保护,IA32(我不懂这是什么东西,可能是什么内核之类的),DDK(好像是一个驱动程序开发包吧).我都不明白学这些有什么用的.那位大侠给点建议吧.谢谢了!最好把要学的东西及东西的作用说明一下.
我知道操作系统把高低级分成四级ring(0~3),如果要访问硬件的话必须在ring(0)这一层,而操作硬件数据是通过一个I/O包实现的.既然能够通过I/O包去读写数据.也就是可以访问硬件了吧?只是不访问系统中的内存这些受保护的硬件.我现在的问题是:
如果做一个操作系统承认的驱动程序.是要通过VC++,DDK等工具开发,而且要符合32位的保护模式.但是,我现在可以通过in/out指令读取数据.我是不是就不用管这么多了?直接调用语言的读写函数就可以写用户级的驱动程序了.是不是就不用管系统承认不承认这驱动程序是它的一部分.
比喻:我现在有一个数据采集卡,我给用户提供的只要两个函数就够了.读数据和写数据.只要用户打开.直接调用这两个函数.就可以实现读写数据了.如果他要怎么处理这数据就是他的事了,也就是说,我只是写一个程序就行了.根本不用考虑别的.
如果真正的开发一个驱动程序,是要把这个程序成为操作系统的一部分.可以通过ring(0)访问硬件.大侠能不能举个例子呀?我听得有点不清不楚了.
...全文
98 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2005-09-07
  • 打赏
  • 举报
回复
关键看你的功能是否需要用到底层,或可以通过一些提供的接口访问到

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧