首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分配串行端口寄存器时request_region函数调用失败

分配串行端口寄存器时request_region函数调用失败
EN

Stack Overflow用户
提问于 2011-11-24 16:36:12
回答 1查看 1.4K关注 0票数 0

我是一个专业的C程序员。我正在学习设备驱动程序,并想编写(和测试)一个简单的串口驱动程序,以便以9600的波特率发送字符。我已经开始写代码了。

问题是,当我尝试分配地址范围为03f8-03ff的串行端口寄存器时,函数request_region失败(返回NULL)。当我发出命令"cat /proc/ioports“时,我可以看到下面的代码行

03f8-03ff :串行。

我认为这是因为这些端口已经分配给已经存在的串行驱动程序

我是否需要卸载已经存在的串行驱动程序来测试我的驱动程序?如果是这样,我如何做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-28 21:33:45

您是对的:已经有一个内核驱动程序在使用这些端口。我假设你是在Intel机器上运行的,所以大多数probaby你使用的是8250驱动程序。您可以尝试通过以下方式卸载:

代码语言:javascript
复制
modprobe -vr 8250

但如果你使用的是发行版提供的内核,这很可能会失败,因为大多数发行版都有这个“内置”模块。您可以使用以下命令进行检查

代码语言:javascript
复制
grep CONFIG_SERIAL_8250 /boot/config-`uname -r`

你得到了CONFIG_SERIAL_8250=y,然后你需要编译你的内核,8250驱动程序实际上是一个可加载的模块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8254131

复制
相关文章

相似问题

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