keikey43
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-10-12
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:2201回复:17

老板逼我,疯了。

楼主#
更多 发布于:2002-04-14 11:27
  现在老板让我开发一个ISA卡在2000下的驱动。这个卡好象主要完成传真监控。首先他没给我那个卡,他只给我提供了一个以前在98下的.asm文件。从这个文件中我知道要对:双口RAM,中断,DMA,等操作。我是个新手,不知道该咋做,我真得快疯了。
溪流飘零
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-15 08:42
新手我的建议还是windriver,这种问题立即搞定,否则从头开始了解驱动概念,时间太长了
兄弟们,给点分吧
Master_Yi
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-15 12:24
可是调试呢?不了解的话怎么做?不能指望写完就OK吧?
我读书少,不要欺负我呀!
keikey43
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-10-12
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-15 15:01
Windriver里不是也能调试吗?想会用Windriver是不是看它的手册就足够了?哪儿有没有中文版的,因为它的英文版太长了,MY GOD,276页。
溪流飘零
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-15 15:11
windriver的手册应当算是短的,耐心看完吧,通常英文的表述更准确.
兄弟们,给点分吧
keikey43
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-10-12
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-16 09:10
查看了整个Windriver的手册,发现对硬件的资源的访问只限于I/O,MEMORY,Interupt以Register.而且大多都是针对PNP,我想问一下,现在我要开发的是Non PNP的ISA卡,那是不是我要对ISA卡的这些资源自已指定?另外,我还要用到对DMA的访问。手册中只有两个关于DMA的函数:WD_DMA()和WD_DMA_PAGE()这两个函数是否足够?
溪流飘零
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-16 10:25
DMA的两个函数绝对不够用,你没有指定相关的DMa控制器资源,没有设定寄存器,DMA是运行不起来的.和硬件相关的东东通常不是调用几个标准函数就可以解决问题的.
非即插即用卡的资源自己指定.
兄弟们,给点分吧
fzwwh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-16 17:21
从你提供的简单情况来看,老板只给了。ASM文件,我的观点硬件板肯定不是PNP的,那么你必须先把。ASM文件读通,然后读懂,我估计并不需用到诸如WINDRIVER之类的工具。先肯定地告诉我,板子是工作在实模式还是保护模式?
keikey43
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-10-12
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-16 18:04
首先要感谢楼上各位给我的帮助,说实话对我真是像冬天里给了把炭一样,使我暧融融的。老板没给我板子也没告诉我是实模式下还是保护模式,唯一给我的就是那个.asm,不过那板子的确不是pnp的,它以前是在98下运行的,没驱动,只有两个.asm提供一系列的函数。后来因为不稳定,要改成在2000下去用。而2000又不认什么.asm,所以
我一下就急了。我在看到那段汇编时说实在的真是从内心里感到汇编的强大。就那几行,能实现在2000驱动下要那么行去实现。不妨我把这几行拷到下面,大家有针对性的谈一下,看如何从2000角度去实现。第一个getramnr和setramnr两个函数实际上就是对端口的读写,还是很简单的,但后面的要对端口连续进行操作,我就不知道在2000驱动下如何实现了。  
  Static Name Aliases
;
TITLE   fax_txcz
;       NAME    fax_txcz.asm

.286c
FAX_TXCZ_TEXT   SEGMENT  BYTE PUBLIC \'CODE\'
FAX_TXCZ_TEXT   ENDS
_DATA   SEGMENT  WORD PUBLIC \'DATA\'
_DATA   ENDS
CONST   SEGMENT  WORD PUBLIC \'CONST\'
CONST   ENDS
_BSS    SEGMENT  WORD PUBLIC \'BSS\'
_BSS    ENDS
DGROUP  GROUP   CONST,  _BSS,   _DATA
ASSUME  CS: FAX_TXCZ_TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
EXTRN   __chkstk:FAR
EXTRN   _sjkbuf:BYTE
FAX_TXCZ_TEXT      SEGMENT

PUBLIC  _getramnr
_getramnr       PROC FAR
push    bp
mov     bp,sp
push    dx
;       dkaddr = 6
mov     dx,[bp+6]       ;dkaddr
in      al,dx
sub     ah,ah
pop     dx
mov     sp,bp
pop     bp
ret    
_getramnr       ENDP

PUBLIC  _setramnr
_setramnr       PROC FAR
push    bp
mov     bp,sp
push    dx
;       dkaddr = 6
;       data = 8
mov     dx,[bp+6]       ;dkaddr
mov     al,[bp+8]       ;data
out     dx,al
pop     dx
mov     sp,bp
pop     bp
ret    
_setramnr       ENDP

PUBLIC  _hqidmasj
_hqidmasj       PROC FAR
push    bp
mov     bp,sp
push    bx
push    cx
push    dx
push    si
;       addr = 6
;       qsaddr = 8
mov     cx,WORD PTR [bp+6]
inc     cx
inc     cx
mov     bx,WORD PTR [bp+8]
mov     si,0        
cmp     WORD PTR [bp+8],3000H   ;qsaddr
jae     $I24
$F25:
cmp     si,12288                ;PM
jge     $I29
mov     dx,cx
mov     ax,bx
out     dx,ax
inc     bx
mov     dx,WORD PTR [bp+6]
;        in      ax,dx
in      ax,dx
mov     BYTE PTR _sjkbuf[si],ah
inc     si
mov     BYTE PTR _sjkbuf[si],al
inc     si
;        in      ax,dx
in      ax,dx
jmp     SHORT $F25
$I24:
cmp     si,12288                ;DM
jge     $I29
mov     dx,cx
mov     ax,bx
out     dx,ax
inc     bx
mov     dx,WORD PTR [bp+6]
;        in      ax,dx
in      ax,dx
mov     BYTE PTR _sjkbuf[si],ah
inc     si
mov     BYTE PTR _sjkbuf[si],al
inc     si
jmp     SHORT $I24
$I29:
pop     si
pop     dx
pop     cx
pop     bx
mov     sp,bp
pop     bp
ret    
_hqidmasj       ENDP

PUBLIC  _fwcz
_fwcz   PROC FAR
push    bp
mov     bp,sp
push    bx
push    dx
push    es
push    si
;       addr = 6
;       cxbuf = 8
;       cxcd = 12
les     si,[bp+8]               ;cxbuf

mov     ax,1                    ;
mov     dx,WORD PTR [bp+6]      ;xxxH数据口
inc     dx                      
inc     dx                      ;xxx+2H
out     dx,ax
dec     dx                      
dec     dx                      ;xxxH
mov     bx,3                    ;i
jmp     SHORT $L20002
$F27:
mov     ah,es:[bx][si]
mov     al,es:[bx+1][si]
out     dx,ax  
mov     ah,0
mov     al,es:[bx+2][si]
out     dx,ax  
add     bx,3      
$L20002:
cmp     bx,[bp+12]              ;cxcd
jl      $F27
mov     ax,0
mov     dx,WORD PTR [bp+6]      ;xxxH
inc     dx                      
inc     dx                      ;xxx+2H
out     dx,ax  
dec     dx                      
dec     dx                      ;xxxH
mov     bx,0                    ;i
mov     ah,es:[bx][si]
mov     al,es:[bx+1][si]
out     dx,ax  
mov     ah,0
mov     al,es:[bx+2][si]
out     dx,ax  

$I44:
pop     si
pop     es
pop     dx
pop     bx
mov     sp,bp
pop     bp
ret    
_fwcz   ENDP

FAX_TXCZ_TEXT   ENDS
END
溪流飘零
xeonjohn
驱动牛犊
驱动牛犊
  • 注册日期2001-07-25
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-04-16 23:28
诸位,WinDriver能开发WIN2000的驱动吗?据我所知,WinDriver的应用应该在95/98/ME平台。
我思故我在
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-17 09:27
windriver当然能用在win2000,只不过版本应该新一点.
这些代码看来是运行在16位实模式下的,改成2000下运行这些源代码应该没用了,关键是分析他具体作了些什么事情,完成一项工作要有哪些具体步骤.
端口的读写windriver实现非常容易.
兄弟们,给点分吧
fzwwh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-04-17 11:22
我的观点,板子是工作在实模式,并且不需所谓WIN98或WIN2K驱动,只不过是在WINDOWS操作系统下的一块8086模式的应用,这样看来,也无需专门为他写什么驱动程序了,将你手重的。ASM文件编译以下,看看是个什么现象,运气好的话,就可交差,先试试看,祝你好云。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-04-17 14:21
如果是98,95,而且只涉及io端口的操作,那么可能真的是只要编译一下就可以运行.但现在的前提是2000,而且有端口,擅自操作端口几乎肯定要蓝屏.何况还有中断,dma
兄弟们,给点分吧
drivecat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2008-08-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-04-18 21:12
  怎么看怎么象反汇编的东东,你命真好,真的很好。
不怕笨死的熊。
keikey43
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-10-12
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-04-18 22:02
楼上的,你为什么说我命好啊,说实话,我愁都愁不过来呢,不过很感谢各位帮忙,我觉得这个网站的讨论的气氛真得很浓,很好。我以后要多向大家学啊
溪流飘零
syuanyy6
驱动牛犊
驱动牛犊
  • 注册日期2001-11-03
  • 最后登录2009-03-31
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-04-24 14:35
用windriver来解决isa型驱动烦恼


etude 写到 \"www.windriver.com有下载驱动程序快速生成软件,有for win和for linux的,且每个平台都有windriver和kerneldriver两中版本(区别么看名字就知道了) 以下是针对isapnp(有点老的结构)设备怎样在linux下正确安装驱动做个简单说明首先弄到pnptools这套工具(套装linux都有带),先在/etc下建立配置文件(关于pnptools的用法可看man) , 这个配置文件记录了你机器上所有isa设备的可利用资源信息,不过每个设备只有一组资源可用,其余的不能用.接下来就是确定你的设备到底占用了哪些资源,并根据具体情况更改配置.有很多文章都推荐进入windows的系统管理来观察资源(假定你的设备在win下可以工作),并根据win的数据更改linux下的.但是,win和linux分配硬件资源的代码并不一样,根据win只会导致失败(在我的机器上就是如此,win中mouse为com2,linux里为cua0,真是奇了怪了!)你可以去www.windriver.com下载windriver for linux,然后运行里面的工具pnpscan(注意了没注册的windriver模块只能运行10分钟,所以要快点执行pnpscan),这样它会把linux下所有isapnp设备的正确资源都找出来,开始改配置吧(我的modem就这样搞定的).
由于有isapnp(pnptools的一个程序)的帮助,linux可以正确安装isa设备了,那么pci设备怎么办呢?在此提供一个设想:
下载windriver for win 和 for linux,用wd for win的驱动程序生成向导对你所指定的设备快速生成驱动源代码(无须自己写),然后在linux下的wd中编译,加载wd模块后,编译的驱动应该可以顺利执行.但是linux下没注册的wd模块只能运行10分钟,管不管用我没试过.
btw,linux下显卡是最麻烦的设备了,当初为了linux的x,特地去弄了块可以用的,以前那块pci的显卡在linux下根本就是废物了.(当时没有看到windriver,本来倒可以试试win下生成的驱动在linux下是不是可以用)\"


 
zzfd97
驱动小牛
驱动小牛
  • 注册日期2002-02-01
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-24 14:48
如果你只是做简单的驱动程序,那你可以用windriver,要是具体的话,那你可要用到driver studio来开发比较的好一些,具体的你自己把握了。
lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2002-04-26 15:41
老板再逼你,你就革命吧! :D
lvhaow
游客

返回顶部