bluefishhttp://blog.yesky.com/Blog/vincentzhou/复制地址
公告栏
专注wince底层开发,学习linux 为生活而奋斗!
控制面板
日历
<2008年7月>
SuMoTuWeThFrSa
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
留言簿(12)
文章分类
文章档案
日记档案
向强人学习

想不明白为什么客户要4个串口呢,要是要3个立马就给你。客户是上帝,我也只能遵从。

迫于没有st16c554的源代码,只能自己从wince5自带的ser16550来改写,我几乎确认所有改过的地方是没有问题的,但是偏偏问题就是出现了,根本就不能发送,更别说接收了。可以确定的是寄存器地址没有映射对,也没有中断产生。

在走投无路之余,用将原来的wince4.2下那个554的dll加载上去试一试了。这个东西竟然不是用com作为prefix,我靠!不过还好这个老的驱动可以发送了,但是很明显在发送完了(在pc端可以看到接收的字符)串口工具就一直挂在那里了。在发送之后(将数据写到寄存器之后)要等一个发送完中断,只有这样才能确定所有的数据都被发送出去了。但是就是这个中断一直没有。

外部中断号和要映射到的内存地址都是在linux下可以正常的,到了我这里就拜拜了。奇怪之余,只能分析下原来的554的dll了。在网上找了个反汇编的工具--IDA。嘿,这东西还真不错,谁用谁知道,没想到第一次用反汇编工具就这么顺利。对照.map和反汇编的代码找了一通,确实是把内存地址映射的不对以及sysintr也不对,这个家伙太可恶了,不留原代码也就算了,竟然象这些iobase和irq值都不是从reg中读取而是自己在代码中写死的。太过分了!

怪不得我怎么映射irq和sysintr都没有中断产生呢,正常情况下这些驱动只是和irq有关,象sysintr只是从reg读取的,没有想到那个变态把那给写死了。真是人走了,也带走了所有的残云!


作者:bluefish 阅读() 评论()  编辑 发表于:2007-12-04 09:05
相关内容
文章评论

  • # re: 你这该死的串口(1)
  • 请问如何在LINUX下启用第五个串口,我现在只能用ttyS【0-3】,ttyS4可以用MAKEDEV,mknod添加,但用setserial ttyS4时显示ttyS4: No such device or address。怎么解决?
    天极博友 | 2008-06-23 11:09
  • # re: 你这该死的串口(1)
  • 不好意思,我对linux不太懂。
    bluefish | 2008-06-23 15:40

    发表评论
    标题 *  
    姓名 *  
    内容 *  
       验证码: *       
           
    版权声明:天极是本Blog托管服务提供商。如本文牵涉版权问题,天极不承担相关责任,请版权拥有者直接与文章作者联系解决。
    Powered by:

    Copyright © bluefish