社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 2532|回复: 7

[原创] ubuntu12.04(pc机下)下helloworld驱动从失败到成功过程

[复制链接]

399

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-8-14 10:10:02 | 显示全部楼层 |阅读模式
最近想弄弄OK335xII开发板,发现以前也做过一些嵌入式有关的工作,重新开始搞搞了。把之前的东西搬到论坛里来和大家一起学习,进步。
最近在看linux的设备驱动程序,写一个简单的helloworld程序都花了我好久的时间,具体过程如下:
编写helloworld.c

编写Makefile

注意,makefile中的命令那里是一个tab,而不是多个空格,还有源文件的名字不要写错了,然后make,出现了下面这些错误make -C /lib/modules/3.8.0-29-generic/build  M=/home/Linux/helloworld modules
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-29-generic'
  CC [M]  /home/Linux/helloworld/helloworld.o
In file included from include/linux/types.h:5:0,
                 from include/linux/init.h:5,
                 from /home/Linux/helloworld/helloworld.c:1:
include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory
compilation terminated.
make[2]: *** [/home/Linux/helloworld/helloworld.o] Error 1
make[1]: *** [_module_/home/Linux/helloworld] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-29-generic'
make: *** [default] Error 2

在pc机的linux下运行helloworld驱动时不需要重新编译内核的,然后上面却提示缺少文件,后面看看确实是缺少文件,于是,我在windows下装了个虚拟机,用的也是ubuntu12.04,关于安装可以看我上传的资源,将这个helloworld.c和Makefile拷贝虚拟机下的ubuntu下,运行make,出现

ls一下可以看到生成的文件如下:

可以看到什么都没有改,然而这里就make成功了。看来用wubi安装系统有一定的缺陷。
insmod ./helloworld.ko加载驱动,没有打印信息,在/var/log/syslog下可以看到打印信息,注意不是在/var/log/messages下的哦。vim /var/log/syslog后按下G,跳到后面,看下图

这样,ubuntu12.04下pc机的helloworld驱动就正常运行起来了。

注明:上面的东西发表在10月15日,但在10月17日才找出真正的原因,上面的历程就当是一个回忆,下面对上面的错误的理解进行纠正。
首先:上面提到了再pc机的ubuntu(不是虚拟机,即是用wubi安装的ubuntu),编译helloworld驱动不成功,这个确实是不用编译内核的,上面报错的原因是由于他在make的时候是采用了交叉编译环境,而不是gcc。在修改了

注释到下面的3行,make就成功了。而绝不是wubi安装ubuntu系统带来了的问题。注明:修改的文件是/etc/bash.bashrc,然后修改后必须要重启终端。

发现该问题的过程:
10月15号,装了一个虚拟机,成功的运行了helloworld驱动程序后,就有了上面的文档,之后再虚拟机上装了交叉编译工具,在17日编译的时候再度出错,原来成功的东西又出错,就觉得是这里的问题了,过来,安装上面的改法就成功了,不容易啊,菜鸟。

评分

1

查看全部评分



回复

使用道具 举报

399

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-8-14 10:12:19 | 显示全部楼层
竟然可以直接粘贴图片了,哈哈

点评

一直可以直接帖图片,只是有的网站图片允许外链,比如CSDN,有的网站不允许外链,比如 百度 腾讯  详情 回复 发表于 2014-8-14 10:51


回复

使用道具 举报

2万

TA的帖子

61

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2014-8-14 10:51:05 | 显示全部楼层
南盗 发表于 2014-8-14 10:12
竟然可以直接粘贴图片了,哈哈

一直可以直接帖图片,只是有的网站图片允许外链,比如CSDN,有的网站不允许外链,比如 百度 腾讯

点评

ok,明白了,之前没试过,  详情 回复 发表于 2014-8-15 10:04
2017,加油!继续为中国电子行业做出小小的贡献吧!
QQ 1206973913


回复

使用道具 举报

399

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-8-15 10:04:56 | 显示全部楼层
soso 发表于 2014-8-14 10:51
一直可以直接帖图片,只是有的网站图片允许外链,比如CSDN,有的网站不允许外链,比如 百度 腾讯

ok,明白了,之前没试过,


回复

使用道具 举报

203

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-8-18 11:12:09 | 显示全部楼层
请问你的hello_world驱动是在PC上运行还是可以在ARM板子上运行

点评

这个是运行在pc下得,在板子得要过几天我试试。  详情 回复 发表于 2014-8-18 12:49


回复

使用道具 举报

399

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2014-8-18 12:49:32 | 显示全部楼层
cer1991 发表于 2014-8-18 11:12
请问你的hello_world驱动是在PC上运行还是可以在ARM板子上运行

这个是运行在pc下得,在板子得要过几天我试试。


回复

使用道具 举报

6663

TA的帖子

176

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2015-8-28 16:38:49 | 显示全部楼层
MARK适合新手 回头看


回复

使用道具 举报

27

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-12-30 16:57:05 | 显示全部楼层
楼主,我用交叉编译器的时候也出现了这种情况,您在下面注释的什么


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-11-22 11:44 , Processed in 0.364458 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表