zedboard--ubuntu12.04(基于pc机)编译globalmem驱动

43 篇文章 39 订阅
16 篇文章 1 订阅

先参考下http://blog.csdn.net/xzyiverson/article/details/12681223

globalmem.c中的注释中的编译器是交叉编译器,实际上我注释掉了交叉编译器(上面的博客),用的是gcc的编译器。

globalmem.c和Makefile上传到附件资源了,需要的下载了,记得顶一下啊!

宋宝华书上的例程显然是不能在ubuntu12.04下编译成功的,因为内核有很多的改变,有必要做下面的修改:

1:没有#include <asm/system.h>这个文件,注释掉。

编译仍然出现错误unknown field 'ioctl' specified in initializer。

出现原因:2.6.36后的file_operations结构发生了重大变化。取消了原有的ioctl成员,添加来新的成员       

 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
     long (*compat_ioctl) (struct file *, unsigned int, unsigned long);

2.所以将.ioctl 改为.unlocked_ioctl

编译还是出错error:implicit declaration of function 'kmalloc'


错误原因:缺少头文件

3添加#include <linux/slab.h>

编译成功



ls一下


可能出现的错误:

error inserting 'globalmem.ko': -1 Device or resource busy
用cat /proc/devices 命令查看发现主设备号254已被rtc占用,所以更改驱动程序
#define GLOBALMEM_MAJOR 250(这个错误我没有出现。)

总结 :(来自韦东山)

移植驱动到新内核的时候:
1. 编译,必定会出现错误
2. 解决错误
2.1 头文件不对:去掉或改名
2.2 宏不对:改名使用新宏
2.3 有些函数没有了:改名使用新函数


  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值