概括起来说,Eclipse CDT,Toolchain用AVR Libc,以及:a, AVR Eclipse Plugin插件;b, make, rm等shell命令行工具;c, AVRDude,用来下载程序到单片机。
这篇随笔分2部分,第一部分是软件安装和设置步骤,第二部分建立一个demo工程,并编译、下载程序到开发板,以确定开发环境正常工作。
1. 安装和设置
首先安装Eclipse CDT,我用次新版Neon。在Marketplace搜索安装AVR Eclipse Plugin。
Toolchain有2个来源。首先,microchip网站可以单独下载AVR Toolchain for Windows。第二,可以安装Atmel Studio,里面除包含AVR Libc外,还有shell命令行工具。我采用后者,安装Atmel Studio,再把需要的东西拷贝出来。
Arduino软件中有AVRDude,可以直接拷贝出来用。
Atmel Studio安装目录下,Toolchain的路径为 toolchain\avr8\avr8-gnu-toolchain,如下图:
shell命令行工具的路径为 shellutils,如下图:
Arduino安装目录下,AVRDude路径为 hardware\tools\avr\bin\avrdude.exe,配置文件路径为 hardware\tools\avr\etc\avrdude.conf,将它们都拷贝出来,放在同一个目录下。AVRDude的配置文件默认搜寻路径中包括当前目录,因此可以把配置文件和可执行程序放在一起。顺便说一下,Arduino安装目录中也包含AVR Libc,但是是经过Arduino项目修改过的。用它应该是没有问题的,但是我还是用了官方出的。
另外,分析一下avrdude.exe的链接关系,发现它依赖于LIBUSB0.DLL,因此,需要把它一同拷贝出来,放在avrdude.exe相同的目录中。所以,AVRDude目录中应包含3个文件:avrdude.exe, avrdude.conf, libusb0.dll。
都弄妥后,需要设置PATH环境变量。我喜欢用一个bat批处理来启动Eclipse,这样可以单为Eclipse设置环境变量,而不用修改Windows系统变量。启动脚本如下:
set PATH=%windir%\System32 set JAVA_HOME=C:\Java\jdk_x64\jdk1.8.0_144 set TOOLCHAIN_HOME=%CD%\avr8-gnu-toolchain set SHELLUTILS_PATH=%CD%\shellutils set AVRDUDE_PATH=%CD%\avrdude set PATH=%JAVA_HOME%\bin;%TOOLCHAIN_HOME%\bin;%SHELLUTILS_PATH%;%AVRDUDE_PATH%;%PATH% start %CD%\eclipse\eclipse.exe
好吧,我承认,这些PATH其实是不必要的。AVR Eclipse Plugin插件设置中还是需要再设置这些路径的。但是,加到PATH中有一个好处是,可以在Eclipse Terminal中,手工执行一些命令行。接着设置AVR Eclipse Plugin,如下图。需要设置这几个路径:
- AVR-GCC:Toolchain安装目录下的 bin
- make:shellutils目录
- AVR Header Files:Toolchain安装目录下的avr\include
- AVRDude:
AVRDude的配置文件路径也需要指定一下,如下图:
接下来,要增加AVRDUde的“Programmer configuration”。简单地说,Programmer configuration就是调用AVRDude写程序的命令及选项的模板。为确定AVRDude命令及选项,有一个办法是借助Arduino软件。在Arduino软件中下载一个程序到开发板,观察输出区域中的命令调用,例如:
C:\Arduino\arduino-1.8.5\hardware\tools\avr/bin/avrdude -CC:\Arduino\arduino-1.8.5\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 -b115200 -D -Uflash:w:C:\Users\user1\AppData\Local\Temp\arduino_build_421366/Blink.ino.hex:i
由此可确定,对于 Arudino UNO:
- 协议为arduino(-c arduino)
- MCU为atmega328p(-p atmega328p)
- 串口号为COM4(-P COM4)
- 波特率为115200(-b 115200)
- -D选项
依照上述设置,增加Arduino UNO的Programmer configuration,如下。这里主要是选择协议和串口参数,其余选项会由AVR Eclipse Plugin自动补全。可以查看界面底部的命令行预览:
2. Demo工程
搞一个blink Demo工程。新建一个C Project,选择AVR GCC Toolchain,并指定MCU型号和主频。Arduino UNO为 atmega328p,16MHz主频:
增加源文件main.c,实现LED闪烁,代码如下。Arduino UNO开发板上LED接在PB5口:
#include <avr/io.h> #include <util/delay.h> int main() { DDRB = 0xFF; for (;;) { PINB = 1 << PINB5; _delay_ms(500); PINB = 0; _delay_ms(500); } }
需要对工程属性进行一些设置。首先指定生成HEX文件:
接下来,设置AVRDude有关的参数。Programmer configuration选择先前第一部分中创建的Arduino UNO配置。高级选项卡中启用-D选项。留意前面Arduino软件调用AVRDude的命令行,可以看到它使用了此选项:
现在可以编译了。选择菜单Project->Build Project,如果成功编译,在Debug目录下会生成blink.hex文件。再选择菜单AVR->Upload Project to Target Device,将HEX文件下载到开发板。留意Console View的输出内容,确认编译和下载成功。如果一切顺利,程序下载到开发板上后,LED会以1s的频率闪烁: