使用eclipse开发linux驱动_linux 驱动 eclipse x86-程序员宅基地

技术标签: include  编译器  Linux  xml  linux  properties  eclipse  

Eclipse具有很强大的自动补全功能,在浏览代码和编辑代码的时候用起来十分得心应手,下面我将介绍如何配置Eclipse,让它来帮助我们开放linux驱动

(注意,此处说的Eclipse是Eclipse IDE for C/C++ Developers 。而不是Eclipse IDE for Java Developers 安装CDT插件后)。

1、新建一个c project。此项目专门为驱动使用。

在右侧project explorer列表中,右键单击刚才新建的项目,选择properties.
依次选择c/c++ general -> paths and symbols, 在右面选择includes选项卡,languages中选择 GNU C
此时在右侧会显示出编译器默认的include路径,好的添加以下内容
/path/of/kernel/dir/include
/path/of/kernel/dir/arch/arm/include

(如果写的是x86下的驱动,用/path/of/kernel/dir/arch/x86/include)


再选择Symbols选项卡, 点击下方Export Settings,将设置导出为xml文件.
打开该xml文件, 在<language name="C Source File"> </language>标签中,添加
<macro><name>__KERNEL__</name><value>1</value></macro>

之后我们还需要将autoconf.h中的宏定义加入到Eclipse中,执行如下步骤

  1. cd /path/of/kernel/dir/include/linux/  
  2. cat autoconf.h |grep define |awk '{print "<macro><name>" $2 "</name><value>" $3 "</value></macro>"}' > symbol.xml

打开symbol.xml, 将里面的全部内容复制到 刚才xml文件</macro>的后面。

保存文件,点击Import Settings 导入该文件(如果在导入的时候经常提示解析错误,那么应该是xml的格式写错了,一定要好好地检查一下到底是错在哪里了。)

点击OK退出properties,再右击项目,选择 Index -> Rebuild

但是配置到此以后,还是没有办法自动编译。只好使用自己编写的Makefile来编译了。

选择项目properties.
依次选择c/c++ build -> Makefile Generation,将build Direcotry指定为Makefile位置。如${workspace_loc:/HelloDriver}。其中的HelloDriver是我的项目根目录。

然后自己手动编写Makefile文件。并放置到项目的根目录下。

Makefile示例

pwd = $(shell pwd)
KERNEL_SRC = /lib/modules/$(shell uname -r)/build
obj-m := hello.o
module-objs := hello.o
all:
        $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
         rm -f *o *~ .*cmd *o *ko *~ .*cmd  hello.mod.c



右键选择项目->Make Target->Create。在弹出的对话框中,填写Target Name。此处的名称一般为自己编写Makefile中目标名称。在我的Makefile文件中,我一般写all。同样方法也可以添加clean。

此时就可以用Eclipse编写自己的驱动,并且可以通过Make来自动编译驱动程序了。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Blaider/article/details/7474786

智能推荐

C#中显/隐式实现接口及其访问方法-程序员宅基地

文章浏览阅读111次。原贴地址: http://www.cnblogs.com/dudu837/archive/2009/12/07/1618663.html在实现接口的时候,VS提供了两个菜单,一个是"实现接口",一个是"显式实现接口",它们到底有何不一样呢我们来比较一下看看1.首先假设我们有一个接口public interface ICustomer{ void SomeMethod()..._c# 怎么访问实现类的protect接口

recycleview复用导致的Edittext,checkbox,ratingbar等数据错乱_recycleview ratingbar-程序员宅基地

文章浏览阅读250次。recycleview复用导致的Edittext,checkbox,ratingbar等数据错乱记录一个问题由于recycleview复用机制,会导致在刷新adapter的时候,数据发生错乱,也就是下一个item用了上一个item的数据通常是由于监听器导致,在设置数据前移除监听即可,例如:if(et.getTag() instanceof TextWatcher){ et.removeTextChangedListener((TextWatcher)et.getTag());._recycleview ratingbar

蓝桥杯2016年B组C++国赛题解(部分_2016年 蓝桥杯c++ 上机-程序员宅基地

文章浏览阅读286次。一步之遥题目描述:从昏迷中醒来,小明发现自己被关在 X 星球的废矿车里。 矿车停在平直的废弃的轨道上。 他的面前是两个按钮,分别写着 “F” 和 “B” 。小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。 按 F,会前进 97 米。按B 会后退127 米。 透过昏暗的灯光,小明看到自己前方 1 米远正好有个监控探头。 他必须设法使得矿车正好停在摄像头的下方,才有机会争取同伴的援助。 或许,通过多次操作 F 和 B 可以办到。矿车上的动力已经不太足,黄色的警示灯在默默闪烁… 每次进行 F 或_2016年 蓝桥杯c++ 上机

FFMPEG学习【libavutil】:音频相关(一)_av_audio_fifo_size-程序员宅基地

文章浏览阅读2.3k次。一、音频FIFO缓冲区一)、函数void av_audio_fifo_free (AVAudioFifo *af)释放AVAudioFifo。AVAudioFifo * av_audio_fifo_alloc (enum AVSampleFormat sample_fmt, int channels_av_audio_fifo_size

hdu 5414 CRB and String (贪心)_hdu5414-程序员宅基地

文章浏览阅读587次。题目:http://acm.hdu.edu.cn/showproblem.php?pid=5414题意:给定字符串s和t,可以在s里面选一个字符c,然后任选一个字符d(d!=c)将d插入到c的后面,问能不能将s变为t。分析:先考虑可以插的字符(串)的情况,若在字符串"sd"的字符s后面插字符串p(|p|>=1),只要p[0]!=‘s’就行,比如p="oola",第一个o插在's'后面,第二_hdu5414

【Unity3D】常用API学习笔记_unity on开头的方法-程序员宅基地

文章浏览阅读1.9w次,点赞13次,收藏95次。【Unity3D】常用API学习笔记1、MonoBehaviour类(UnityEngine命名空间中定义):Awake:最开始调用,做一些初始化工作。建议少用,此刻物体可能还没有实例化出来,会影响程序执行顺序。Start:不是很紧急的初始化,一般放在Start里面来做。仅在Update函数第一次被调用前调用。Reset:用户点击检视面板的Reset按钮或者首次添加该组件时被调用。_unity on开头的方法

随便推点

react Cannot GET /-程序员宅基地

文章浏览阅读5.8k次。react Cannot GET /_react cannot get /

实现mini-vue3-程序员宅基地

文章浏览阅读600次。初始化项目yarn init -y[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jv0z6mLw-1638152199262)(https://i.loli.net/2021/11/28/2W6ANjVYauZeykC.png)]vue3源码采用的是monorerpo的管理方式,我们这就简单点的方式创建包集成typescript注意如果没有安装typescript需要先安装typescriptnpx tsc --init集成jestyarn add j_mini-vue3

让SAP云平台上的Web应用使用destination服务-程序员宅基地

文章浏览阅读45次。首先在SAP云平台里创建一个destination,维护service的end point:然后打开SAP云平台的WebIDE,创建一个新的文件夹和新的HTML5 Application Descriptor:将下列内容粘贴到neo-app.json去:{ "welcomeFile": "index.html", "routes": [ { "p..._sapui5 destination authentication

java xfire client_xfire-在客户端调用WebServices-程序员宅基地

文章浏览阅读143次。接下来我们在客户端调用这个web服务。首先我们也应该有一个和服务端完全一致的接口,包名也应该一致!public interface IHelloService {public List getAllUser();public String sayHi(String uname);}然后再客户端使用如下的代码就可以调用了。package com.pengzj.service.invoke;impor..._xfire client 初始化

webcomponent组件库ivy-ui_基于webcomponents的库-程序员宅基地

文章浏览阅读662次。前言作为开发者,我们都知道尽可能多的重用代码是一个好主意。这对于自定义标记结构来说通常不是那么容易 — 想想复杂的HTML(以及相关的样式和脚本),有时您不得不写代码来呈现自定义UI控件,并且如果您不小心的话,多次使用它们会使您的页面变得一团糟。Web Components旨在解决这些问题 — 它由三项主要技术组成,它们可以一起使用来创建封装功能的定制元素,可以在你喜欢的任何地方重用,不必担心代码冲突。Custom elements(自定义元素):一组JavaScript API,允许您定义custo_基于webcomponents的库

onejar-maven-plugin把java类与lib打包为一个可运行jar-程序员宅基地

文章浏览阅读2.8k次。尊重原创原文地址:https://my.oschina.net/noahxiao/blog/78241通过maven-onejar插件将项目打包成 一个可运行jar文件,相比IDE提供的将所有文件抽出放在一个jar里能解决文件冲突问题<build> <plugins> <plugin> ..._onejar-maven-plugin