您的位置:首页 > 运维架构 > Linux

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

2015-12-02 11:44 288 查看
开发板: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: