LDD3学习之short

http://qchfu2006.blog.163.com/blog/static/14153441020121120395443

编译好short之后,运行short_load会出现以下问题:

insmod: error inserting './short.ko': -1 No such device
然后运行dmesg查看,有以下信息:
[ 3021.587443] short: can't get I/O port address 0x378
此句正是在模块初始化函数中打印的,如下:
if (! request_region(short_base, SHORT_NR_PORTS, "short")) {
            printk(KERN_INFO "short: can't get I/O port address 0x%lx\n",short_base);
            return -ENODEV;
  }
即,该端口被占用-----猜测。下面验证:
root@ubuntu:/opt/LDD3/ldd3_examples/short#  cat /proc/ioports | grep 378
0378-037a : parport0
root@ubuntu:/opt/LDD3/ldd3_examples/short#  cat /proc/modules | grep par
parport_pc 25962 1 - Live 0xf8148000
parport 32635 3 lp,ppdev,parport_pc, Live 0xf813e000
root@ubuntu:/opt/LDD3/ldd3_examples/short# 
可见被占用了。另外,验证一下模块的版本是否有问题:
root@ubuntu:/opt/LDD3/ldd3_examples/short#  modinfo short.ko 
filename:       short.ko
license:        Dual BSD/GPL
author:         Alessandro Rubini
srcversion:     E5677DDD5394F9013998F9E
depends:        
vermagic:        2.6.32-21-generic  SMP mod_unload modversions 586 
parm:           major:int
parm:           use_mem:int
parm:           base:long
parm:           irq:int
parm:           probe:int
parm:           wq:int
parm:           tasklet:int
parm:           share:int
root@ubuntu:/opt/LDD3/ldd3_examples/short#  uname -r
2.6.32-21-generic

root@ubuntu:/opt/LDD3/ldd3_examples/short# 
可见,版本也是没有问题。

下面查看占用的模块:
root@ubuntu:/opt/LDD3/ldd3_examples/short#  lsmod | grep par
parport_pc             25962  1 
parport                32635  3 lp,ppdev,parport_pc

root@ubuntu:/opt/LDD3/ldd3_examples/short# 

=====================================解决办法,逐步卸载相应模块,逐步测试。
首先卸载lp模块,卸载前,要查看其信息,确定其位置,以备以后再挂载
root@ubuntu:/opt/LDD3/ldd3_examples/short# modinfo lp
filename:        /lib/modules/2.6.32-21-generic/kernel/drivers/char/lp.ko
下面卸载:rmmod lp
卸载后,还是不可以。接着卸载下一个。
root@ubuntu:/opt/LDD3/ldd3_examples/short# modinfo ppdev
filename:       /lib/modules/2.6.32-21-generic/kernel/drivers/char/ppdev.ko
alias:          char-major-99-*
license:        GPL
srcversion:     72666B19847D704839BC900
depends:        parport
vermagic:       2.6.32-21-generic SMP mod_unload modversions 586 
root@ubuntu:/opt/LDD3/ldd3_examples/short# rmmod ppdev
root@ubuntu:/opt/LDD3/ldd3_examples/short# ./short_load 
insmod: error inserting './short.ko': -1 No such device
root@ubuntu:/opt/LDD3/ldd3_examples/short# 
还是不可以,再卸载!
root@ubuntu:/opt/LDD3/ldd3_examples/short# modinfo parport_pc
filename:       /lib/modules/2.6.32-21-generic/kernel/drivers/parport/parport_pc.ko
root@ubuntu:/opt/LDD3/ldd3_examples/short# rmmod parport_pc
root@ubuntu:/opt/LDD3/ldd3_examples/short# 
root@ubuntu:/opt/LDD3/ldd3_examples/short# ./short_load 
root@ubuntu:/opt/LDD3/ldd3_examples/short# 
可以啦!!!!!

root@ubuntu :/dev# ls -l | grep short
crw-rw-rw-  1 root staff   250,   0 2012-12-20 15:23 short0
crw-rw-rw-  1 root staff   250,  16 2012-12-20 15:23 short0p
crw-rw-rw-  1 root staff   250,  32 2012-12-20 15:23 short0s
crw-rw-rw-  1 root staff   250,   1 2012-12-20 15:23 short1
crw-rw-rw-  1 root staff   250,  17 2012-12-20 15:23 short1p
crw-rw-rw-  1 root staff   250,  33 2012-12-20 15:23 short1s
crw-rw-rw-  1 root staff   250,   2 2012-12-20 15:23 short2
crw-rw-rw-  1 root staff   250,  18 2012-12-20 15:23 short2p
crw-rw-rw-  1 root staff   250,  34 2012-12-20 15:23 short2s
crw-rw-rw-  1 root staff   250,   3 2012-12-20 15:23 short3
crw-rw-rw-  1 root staff   250,  19 2012-12-20 15:23 short3p
crw-rw-rw-  1 root staff   250,  35 2012-12-20 15:23 short3s
crw-rw-rw-  1 root staff   250,   4 2012-12-20 15:23 short4
crw-rw-rw-  1 root staff   250,  20 2012-12-20 15:23 short4p
crw-rw-rw-  1 root staff   250,  36 2012-12-20 15:23 short4s
crw-rw-rw-  1 root staff   250,   5 2012-12-20 15:23 short5
crw-rw-rw-  1 root staff   250,  21 2012-12-20 15:23 short5p
crw-rw-rw-  1 root staff   250,  37 2012-12-20 15:23 short5s
crw-rw-rw-  1 root staff   250,   6 2012-12-20 15:23 short6
crw-rw-rw-  1 root staff   250,  22 2012-12-20 15:23 short6p
crw-rw-rw-  1 root staff   250,  38 2012-12-20 15:23 short6s
crw-rw-rw-  1 root staff   250,   7 2012-12-20 15:23 short7
crw-rw-rw-  1 root staff   250,  23 2012-12-20 15:23 short7p
crw-rw-rw-  1 root staff   250,  39 2012-12-20 15:23 short7s
crw-rw-rw-  1 root staff   250, 128 2012-12-20 15:23 shortint
crw-r--r--  1 root root    250, 129 2012-12-20 15:23 shortprint

root@ubuntu:/dev# 
root@ubuntu:/opt/LDD3/ldd3_examples/short#  more /proc/interrupts 
           CPU0       CPU1       
  0:         57          4   IO-APIC-edge      timer
  1:          2          2   IO-APIC-edge      i8042
  4:          3          3   IO-APIC-edge    
  7:          0          0   IO-APIC-edge      short
  8:          0          1   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:          2          4   IO-APIC-edge      i8042
 14:       7006       7057   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 16:     114700        920   IO-APIC-fasteoi   uhci_hcd:usb5, HDA Intel, nouveau, HDA Intel
 18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 19:          3          3   IO-APIC-fasteoi   uhci_hcd:usb3
 23:          1          2   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
 27:         91      81571   PCI-MSI-edge      eth0
NMI:          0          0   Non-maskable interrupts
LOC:    2511989     797757   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
PND:          0          0   Performance pending work
RES:      44437      29972   Rescheduling interrupts
CAL:        112         70   Function call interrupts
TLB:       6982       3961   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:         17         17   Machine check polls
ERR:          1
MIS:          0
root@ubuntu:/opt/LDD3/ldd3_examples/short#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值