首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >outb()在LDD3示例短模块中不起作用

outb()在LDD3示例短模块中不起作用
EN

Stack Overflow用户
提问于 2014-05-21 03:39:35
回答 1查看 1.5K关注 0票数 0

我在Linux设备驱动程序3的示例中尝试使用short.c。

我的电脑有并行端口,在Ubuntu启动后,我可以看到这些:

代码语言:javascript
复制
cat /proc/ioports
0378-037a : parport0
037b-037f : parport0

outp 0x378 1 
(outp is another example in LDD3 which write data to ports)
the LED on the port is ON.

然后我运行这些命令来删除模块

代码语言:javascript
复制
rmmod lp
rmmod parport_pc
cat /proc/ioports
(There is no module on 0378-037f any more.)

我再次运行此命令,但此时LED未亮起。

代码语言:javascript
复制
outp 0x378 1

然后我安装了short.ko,request_region()成功了。

代码语言:javascript
复制
cat /proc/ioports
0378-037f : short

cat /proc/devices
249 short

outp 0x378 1
the LED is not ON this time either.

我也试过了,但同样的结果(LED不亮)

代码语言:javascript
复制
mknod /dev/short0 c 249 0
echo -n "a" > /dev/short0

"a“是0x61,所以最后一位是1。

为什么我得到了I/O区域,却不能写出数据?

谢谢你的回答。

EN

回答 1

Stack Overflow用户

发布于 2014-12-11 21:08:35

最后,我找到了解决方案。

确保“parport”模块没有加载或编译到内核中。简单地卸载parport模块是不够的,因为它会使端口处于不一致的状态。您必须重新启动机器,并从一开始就防止加载parport和所有相关模块/代码。

为此,一种方法是编辑/etc/modprobe.d/blacklist.conf文件并添加以下行:

代码语言:javascript
复制
blacklist ppdev
blacklist lp
blacklist parport_pc
blacklist parport

似乎partport已经修改了并行端口的模式。

如果安装了cups,则应修改/etc/modules-load.d/cups-filters.conf:

代码语言:javascript
复制
#lp
#ppdev
#parport_pc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23768493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档