linux第一个驱动helloword遇到的问题

开发板:TQ210 V4 coreB

虚拟机 fedora 9

由于TQ开发板附带光盘里没有linux2.6源码,只有出厂的烧录镜像,所以用的是友善之臂tiny210提供的源码去编译hello.c

make后生成hello.ko,放到开发板上 insmod hello.ko 报错,

hello: version magic '2.6.35.7-FriendlyARM preempt mod_unload ARMv7 ' should be '2.6.35.7-EmbedSky preempt mod_unload ARMv7 '
insmod: can't insert 'hello.ko': invalid module format

才知道是版本检测不匹配,

       参照http://blog.sina.com.cn/s/blog_5d2a81780100mat6.html,网上有参照此种方法改了 utsrelease后发现再次编译后仍无法解决,原因是utsrelease是make后自动生成的,所以手动改没什么意义。

        既然是make后生成,就修改源码目录下的Makefile 可以修改版本号,再查看.config配置文件CONFIG_LOCALVERSION="-FriendARM",开发板内核版本与生成的hello.ko内核版本就只有此处不同,所以将CONFIG_LOCALVERSION="-FriendARM改为CONFIG_LOCALVERSION="-EmbedSky"然后重新make ,再编译hello.c,生成hello.ko,使用/sbin/modinfo hello.ko查看,可以看到vermagic:       2.6.35.7-EmbedSky preempt mod_unload ARMv7 ,此时与开发板 vermagic一致

        在开发板上insmod hello.ko出现了内存溢出的错误,也不知道怎么解决。

       实在没辙,好不容易在网上找了天嵌公司提供的linux2.6源码,解压 拷贝配置文件到.config,make后却发现有错误,下了linux3.0源码 编译也有同样的错误,仔细看报错信息显示源码目录下drivers/media/video/samsung/tv20/ s5p_stda_grp.c 第594行有语法错误,也不知道怎么改,就将友善之臂提供的源码同样的文件打开对比了下,确实有不同,反正也不懂就干脆将这个文件用友善之臂提供的替换掉了,再次make 通过,然后修改hello.c的Makefile文件里的内核源码目录,再次make,开发板nfs挂载文件后,insmod hello.ko终于见到了久违的helloword

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值