跳转到主要内容

Eclipse开发ZYNQ驱动程序

judy 提交于

本文转载自:<span id="profileBt"><a href="https://blog.csdn.net/u010580016/article/details/113448878">亦梦云烟微信公众号</…;

在虚拟机中的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
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

同理,Cross GCC Compiler中的Compiler invocation command设置成arm-xilinx-linux-gnueabi-gcc。

2. 选择C/C++ General->Paths and Symbols->Includes->GNU C,在包含文件中添加liunx内核的头文件目录,arm架构头文件目录和开发变所对应的mach目录:
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

3. 将设置导出为Symbol.xml文件(点击下方的Export Settings),先临时存储在桌面即可。
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

4. 内核文件编译后,进入/include/generated文件夹中,其中有一个autoconf.h,将其中的宏定义导出到xml文件中存储起来:
<pre>$: cd workspace/zynq/kernel/linux-xlnx/include/generated

$: cat autoconf.h | grep define |awk '{print "&lt;macro&gt;&lt;name&gt;" $2 "&lt;/name&gt;&lt;value&gt;" $3 " &lt;/value&gt;&lt;/macro&gt;"}' &gt; symbol.xml</pre>

5. 打开之前导出的symbol.xml,在
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt="">

中间添加(如果有两个则在最下面那个添加)
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt="">

6. 将从autoconf.h导出的xml文件中所有内容复制到刚才添加的
<img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt="">

下一行, 最后symbol.xml文件内容是这样的:
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

7. 保存上述的symbol.xml,导入到Eclipse的配置中
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

在Symbols中可以看到_STDC_PREDEF_H以下是新导入的宏。

8. 添加编译器的路径

Properties->C/C++ Build->Environment,在PATH字符串的Value中添加xilinx交叉编译器的bin目录路径。
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

9. 将Eclipse生成的makefile删掉,使用自定义的makefile对文件进行编译,反勾选Generate makefiles automatically
<center><img src="http://xilinx.eetrend.com/files/2021-09/%E5%8D%9A%E5%AE%A2/100553758-22…; alt=""></center>

10. Makefile文件的内容:
<pre>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</pre>

注意:如果需要修改使用的编译器,修改CROSS_COMPILE即可,如果编译其他名称的文件,修改ZYNQ_LED.o即可。