博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用Eclipse开发Linux驱动
阅读量:7282 次
发布时间:2019-06-30

本文共 1535 字,大约阅读时间需要 5 分钟。

          之前写Linux驱动都是在纯文本下完成的,最近发现原来可以使用Eclipse来开发,于是捣鼓了半天终于编译成功,感觉还不错。下面以Hello World驱动为例说一下使用Eclipse开发ARM-Linux驱动的过程。

        关于Eclipse和CDT的安装就不说了。安装完Eclipse和CDT后,运行Eclipse,file->New->project选择C/C++里面的C Project,如下图:

然后点击Next,填写工程名为hello和设置工程路径,设置如下:

点击Next后再点击Next,填写交叉编译器前缀和交叉编译器路径,如下:

然后点击finish,此时的工程结构如下图所示,自动包含了几个与交叉编译器相关的头文件路径:

右键工程->Propertise,选择C/C++ General里的Paths and Symbols,选中在includes选项卡里的GNU C,然后点击右边的Add按钮,添加内核(必须事先已经用交叉编译器编译过)头文件目录,如下:

勾选Add to all configurations ,然后点击OK,在Symbols选项卡里添加一个Symbols,Name为__KERNEL__,Value为1,如下:

勾选Add to all configurations,然后点击OK。再点击OK,此时会弹出一个框,如下,选择YES。

编写hello.c文件:

1 #include 
/* Needed by all modules */ 2 #include
/* Needed for KERN_INFO */ 3 #include
/* Needed for the macros */ 4 5 6 static int __init hello_init(void) 7 { 8 printk(KERN_INFO "Hello, world\n"); 9 return 0;10 }11 12 static void __exit hello_exit(void)13 {14 printk(KERN_INFO "Goodbye, world\n");15 }16 17 module_init(hello_init);18 module_exit(hello_exit);19 MODULE_LICENSE("GPL");

编写Makefile文件:

1 obj-m += hello.o2 3 PWD = $(shell pwd)4 5 all:6     make -C /GT2440/kernel/linux-2.6.34.12 M=$(PWD) modules7 8 clean:9     rm -f *.o *.ko

完成后,如下图:

最后,右键工程->Properties->C/C++ Build,在Builder Settings选项卡里取消勾选Generate Makefiles automatically,如下:

然后单击OK。右键工程->Build Project编译工程,成功编译效果如下:

已经生成hello.ko文件,并且可以看到Console的输出和在终端下编译的输出是一样的。

 

附:

       要导入原来的C工程的方法是,File->Import,选在General下的Existing Projects into Workspace,如下:

 

然后点击Next,点击Browse选择要导入的工程的根目录,然后点击Finish。

 

转载地址:http://gtzjm.baihongyu.com/

你可能感兴趣的文章
内核中的同步与互斥
查看>>
linux下安装SVN和MAVEN,并依赖MAVEN环境打包MAVEN项目
查看>>
mysql的备份和恢复
查看>>
Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程
查看>>
iOS自动检测版本更新
查看>>
nginx-1.6.3
查看>>
验证逻辑
查看>>
DDoS deflate - Linux防御和减轻DDos***工具
查看>>
Http服务压力测试工具Alex(自带Web UI)
查看>>
linux(Centos7) elasticsearch 伪集群搭建
查看>>
服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题
查看>>
2016年度总结
查看>>
Red Hat 下LAMP环境——MyDNS安装实例
查看>>
windows server 2016 系统管理(二)
查看>>
Go Web基础视频教程
查看>>
用SQL语句,删除掉重复项只保留一条
查看>>
hibernate4与spring3的整合,不兼容
查看>>
我的友情链接
查看>>
Linux下的hosts文件和network文件区别
查看>>
vim脚本编程
查看>>