|
本帖最后由 shamiao 于 2012-5-16 07:08 编辑
最近JTAG下载器新固件支持AVRStudio5,真是个好消息。
不用折腾4.19和工具链,不用改串口,不用装winavr,不用每个project都去繁琐对应...省去很多麻烦。
发现对于新固件+avrstudio5,旧教程有很多不适应之处。所以尝试重写一份,轻拍,多谢。
教程1:LGT开发环境的建立(AVR Studio 5.1)
从ATMEL官网下载AVR Studio 5.1:
http://www.atmel.com/Images/as5installer-stable-5.1.208-full.exe
602MB,完整版,带所有的依赖环境与Jungo USB驱动,一次装完无需联网。无需另外准备WinAVR、AVR工具链或其它软件。
注意AVR Studio 5基于Visual Studio 2010,会自动安装.net 4.0环境。安装请准备一小时以上的时间。
AVR Studio 5的运行慢是个普遍问题,请做以下两个必备优化:
① 如果是XP系统,安装后请手动打系统补丁KB971513并重启,否则AVRStudio5界面会龟速。
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=cd55456d-9703-42a0-b982-8a8a89ca0aa3
(如果你没打,avrstudio也会提示你打的)
② avrstudio5华丽的动画效果,容易造成软件缓慢(点个菜单要等半天),尤其是集成显卡机器。
打开Tools->Options,去掉"Visual Experience"下的三个勾:
注:时刻注意,AVR Studio 5其实就是Visual Studio 2010。
对付vs2010速度慢,网上有很多加速方法,都可以考虑在AVR Studio 5上试用。有需要请自行搜索。
教程2:LGT编程、编译、烧录、仿真的第一个范例:流水灯
所需设备:
1. LGT 专用 JTAG ICE 仿真下载器(不能使用AVR工具)
2. LGT演示板
3. 外接电源(5V)——必须连接!!!如无连接,会提示目标板未供电(target power has switched on之类提示),无法下载调试!
4. 8个LED。——自行解决,方法随意。可按阿莫教程2所示自制。我用的是马潮AVR-51实验板。
一、刷下载器新固件(仅需一次):
在LGT官网下载JTAG新固件:
http://www.mcugreen.com/LGT8F0XA/tools/SWDICE_mkII_studio5_v1.1.rar
短接下载器J4连上电脑,显示Dev Update专用32Ku盘。copy固件文件,正常弹出u盘即更新好。
仅需刷一次,长期使用不必重刷。
二、新建工程项目,添加代码:
点击File->New->Project新建工程
工程类型默认(AVRGCC C Executable)不必修改;
名称Name随意指定,本演示中为“LGT_test”;
解决方案名Solution name自动与Name一致。不特意理会。
存储位置随意。默认存储位置在“我的文档\AVRStudio 5.1\Solution name\Name”。
设备选择,对于LGT8F08A,选ATmega164A。
LGT_test.c自动出现,粘贴以下代码- #include <avr/io.h> //AVR设备头文件
- #include "iolgt8f0xa.h" //LGT设备头文件,请放在与本程序文件同一目录下。
- /* 以下两条调用AVR内置延时函数库。延时函数应用于LGT有若干注意事项,
- 不影响本演示,可不加注意。如有兴趣,请参见文件末尾的注解。 */
- #define F_CPU 4000000UL
- #include <util/delay.h>
- int main(void)
- {
- unsigned char i=0; //用来做移动标志
- DDRA = 0XFF; //设置A为输出模式
- PORTA = 0XFF; //LED全灭(LED是0点亮,1点亮请自行修改)
- _delay_ms(500);
-
- while(1) { //无限循环
- for (i=0; i<8; i++) { //0号灯到7号灯流水
- PORTA = ~_BV(i); //点亮PA的第i个LED。内置符号_BV(x) = (1 << x),代表第x位为1其余为0
- _delay_ms(500);
- }
- PORTA = 0XFF; _delay_ms(500); //全灭
-
- for (i=0; i<8; i++) { //7号灯到0号灯流水
- PORTA = ~_BV(7-i);
- _delay_ms(500);
- }
- PORTA = 0XFF; _delay_ms(500); //全灭
-
- PORTA = 0x00; _delay_ms(500); //全亮
- PORTA = 0xF0; _delay_ms(500); //低四位,0~3号灯亮
- PORTA = 0x0F; _delay_ms(500); //高四位,4~7号灯亮
-
- PORTA = 0XFF; _delay_ms(500); //全灭
- }
- }
- /*
- 关于如何引用iolgt8f0xa.h:
- 通过使用双引号的语法(#include "filename.h"),引用和.c同一目录下的文件,是C的经典方式。
- 但如果用AVR Studio 5组织大项目,推荐将iolgt8f0xa.h放在项目目录的任意位置(很可能项目目录下会专门有放include的地方),
- 然后用Project->Add Existing Item加入到工程中。这样只要.c文件在项目当中,不论文件位置在项目目录的什么地方,
- 都可直接用#include "iolgt8f0xa.h"来引用,无需考虑任何目录层次问题,对于大项目的组织很方便。
- 这个小演示不必过分关心此问题,只要.h和.c在同一目录下就够了。
- */
- /*
- 关于延时库:
- 1. 延时函数需要已知系统时钟频率F_CPU,通过AVR的指令集,达到特定的延时时间;
- 但LGT指令效率高于AVR,所以同样的时种与延时程序下,LGT的延时会明显缩短。
- LGT上电时钟源为RC1MHz。这里定义CPU频率为4MHz,即将LGT的延时时间放大约4倍,保证延时时间不出现明显不一致;
- 2. 但即使如此,由于指令执行时间的缩短不定,所以delay的时间并无准确保证。
- 由于大致上可以接受,也仅为演示简便,所以如此使用。在实际LGT工程中请勿依赖内置的延时函数。
- 3. F_CPU也可以在工程选项中定义,对整个工程有效。位置在Project->XXX Properties,
- Toolchain->AVR/GNU C Compiler->Symbols->Defined Symbols (-D),加入F_CPU=4000000UL。
- */
复制代码 代码最后的注释是两点应用要点,不想看就不看。
打上代码之后,会看到AVRStudio5将汉字认为是英文的拼写错,加上大片的红色波浪线,难看。
解决方法:菜单VAssistX->Visual Assist X Options,左侧选Advanced->Underlines,去掉underlines spelling errors in comments and strings前的勾。
(也是只调整一次,以后不必重调)
代码中引用了LGT的头文件iolgt8f0xa.h。这不是AVR Studio自带的,请从LGT官网下载
http://www.mcugreen.com/LGT8F0XA/tools/lgt8f0xa_header_v1.1.rar
请将iolgt8f0xa.h放在LGT_test.c的同一目录下即可。
注:我不推荐修改AVR Studio的原安装,绝对不建议将iolgt8f0xa.h放入AVR Studio安装目录下的任何地方。每个工程copy一下而已,不麻烦。
三、编译,生成仿真与烧录文件
相对于4.19,AVR Studio 5无需各种复杂的选项设置,也无需与WinAVR安装包互动,特别方便。
请插入LGT JTAG下载器。点击工具栏上,设备名ATmega164A右边的No Tool,指定下载与调试工具
下载器选JTAGICE mkII,界面选JTAG就OK
Build->Build LGT_test(LGT_test是你的项目名),编译工程
OK!1 succeeded代表1个工程编译成功,生成了烧录仿真的hex和elf文件,可去项目目录下寻找!
四、烧录(下载)
选Tools->AVR Programming
选择工具设备界面为:JTAGICE mkII, ATmega164A, JTAG,按Apply显示烧录界面。按左侧的Memories进入文件选择画面:
在项目目录下找到hex文件,按Program烧录。下方的状态会显示成功。
注意:烧录成功后,LGT不马上开始执行新程序,看起来像是旧程序“卡死”,这不是故障,请放心。
按Close退出烧录窗口,烧录才显示效果,这时LGT单片机才开始执行新程序。
五、在线仿真
点击工具栏的Start Debugging and Break按钮,进入在线仿真,可以进行单步调试、断点等功能。
.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|