编译及加载globalmem字符设备驱动出现的问题

本文记录了作者初次接触Linux字符设备驱动的学习过程,详细介绍了遇到的编译错误及解决方案,包括字符输入问题和主设备号冲突问题,并分享了如何创建和测试驱动程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        刚学习Linux字符设备驱动,第一个globalmem程序,基本一边了解,一边抄写。写完后,make的时候出现如下问题:

globalmem.c:99: 错误:程序中有游离的 ‘\343’
globalmem.c:99: 错误:程序中有游离的 ‘\200’
globalmem.c:99: 错误:程序中有游离的 ‘\200’

        这应该是linux下c编程比较常见的问题,原因是

        1.程序中输入的字符: , ; " ' / 等符号,有可能是使用的中文输入发输入的
        2.程序中有使用全角拼音的现象

        解决方法:把程序完全用 英语输入,半角输入运行正常

        

       解决上述问题后,编译通过,加载模块时出现错误如下:

device or resource busy
     网上查后得知是分配的主设备号254冲突,修改之后即正常加载。

  加载成功后,可以通过cat /proc/devices 查看,

# cat /proc/devices 
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
 88 globalmem
 99 ppdev
253 vmci
254 pcmcia

        的确,254设备号被占用。但同时也发现有的设备号可以重用,还不明白为什么,有知道的麻烦告诉我一声

测试驱动程序

首先应该在/dev/目录下创建与该驱动程序对应的文件节点,用如下命令创建:

[root@localhost dev]# mknod globalmem0 c 88 0

然后进行简单的测试,如下:

[root@localhost dev]# echo 'My first char device' > globalmem0 
[root@localhost dev]# cat globalmem0 
My first char device







                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值