在虚拟机中的ubuntu中开发linux系统驱动程序,往往直接使用gedit编辑,makefile编译,而这种方法比较麻烦;Eclipse是开源软件框架,编辑器比较好用,配置好编译器后可以更加方便快捷的开发程序,本文介绍如何使用Eclipse开发Linux的驱动程序。
本文的前提:安装按arm-xilinx-linux-gnueabi-编译器工具链。
1. 建立C/C++项目工程,配置编译器为arm-xilinx-linux-gnueabi-gcc
右键单击空白的工程文件名,Properties->Discovery Options->Cross G++ Compiler
同理,Cross GCC Compiler中的Compiler invocation command设置成arm-xilinx-linux-gnueabi-gcc。
2. 选择C/C++ General->Paths and Symbols->Includes->GNU C,在包含文件中添加liunx内核的头文件目录,arm架构头文件目录和开发变所对应的mach目录:
3. 将设置导出为Symbol.xml文件(点击下方的Export Settings),先临时存储在桌面即可。
4. 内核文件编译后,进入/include/generated文件夹中,其中有一个autoconf.h,将其中的宏定义导出到xml文件中存储起来:
$: cd workspace/zynq/kernel/linux-xlnx/include/generated
$: cat autoconf.h | grep define |awk '{print "<macro><name>" $2 "</name><value>" $3 " </value></macro>"}' > symbol.xml
5. 打开之前导出的symbol.xml,在
<language name="C Source File">
</language>
中间添加(如果有两个则在最下面那个添加)
<macro>
<name>__KERNEL__</name>
<value>1</value>
</macro>
6. 将从autoconf.h导出的xml文件中所有内容复制到刚才添加的
<macro>
<name>__KERNEL__</name>
<value>1</value>
</macro>
下一行, 最后symbol.xml文件内容是这样的:
7. 保存上述的symbol.xml,导入到Eclipse的配置中
在Symbols中可以看到_STDC_PREDEF_H以下是新导入的宏。
8. 添加编译器的路径
Properties->C/C++ Build->Environment,在PATH字符串的Value中添加xilinx交叉编译器的bin目录路径。
9. 将Eclipse生成的makefile删掉,使用自定义的makefile对文件进行编译,反勾选Generate makefiles automatically
10. Makefile文件的内容:
export ARCH=arm
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
CC = $(CROSS_COMPILE)gcc
obj-m := ZYNQ_LED.o
KDIR :=/home/biac/workspace/zynq/kernel/linux-xlnx
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
注意:如果需要修改使用的编译器,修改CROSS_COMPILE即可,如果编译其他名称的文件,修改ZYNQ_LED.o即可。