新鲜出炉的 AVR Xmega Bootloader下载,欢迎移植
前些日子做了个Xmega板子,开始学习XMEGA,第一步就移植了AVR的bootloader,使用Shaoziyang做的AVRUBD下载程序,非常方便,欢迎大家移植,但是这不针对AVR,AVR和XMEGA还是有很大的差别的。下面说说移植办法:假如,你已经有XMEGA系统,并且想移植这个bootloader程序到你的系统中,使用串口升级你的应用程序!
你要做的:
1.确定你的设备型号,也就是XMEGA型号,查找以下参数:
1.1 芯片的页容量,把写到下面定义
#define BUFFERSIZE 256 (把你查到的数值写到这里 XMEGA64A3的页容量是256 bytes )
1.2 芯片的bootload 起始地址
#define BootStart 2 * 0x8000UL(XMEGA的boot是从0x10000 bytes开始)
同时把以上的数值 写到项目配置中 具体是:
菜单: Project -> Configuration Option -> Memory Settings
把 .text 的地址改到 BootStart (也就是把这些程序放置在boot区)
(注意这里的.text 的地址是以字算的,也就是说单位是word. (1 word =2 bytes))
以上的参数可以从芯片的数据手册或者对应的头文件得到,比如
atxmega64a3对应的头文件是 iox64a3.h
atxmega64a1对应的头文件是 iox64a1.h
atxmega128a1 对应的头文件是 iox128a1.h
atxmega128a3 对应的头文件是 iox128a3.h
以上这些文件都可以在winavr目录下找到\avr\include\avr
找到对应的头文件后查找 关键字: SPM_PAGESIZE 、 BOOT_SECTION_START 你得到的是以bytes为单位
2.修改你的串口,找到 Xmega_Boot.c 在程序开头有如下定义:
//使用UARTE1这里定义你的下载串口
#define USART USARTE1把这个改成你板子上用的串口
#define USART_PORT PORTE 串口对应的端口
#define USART_TX PIN7_bm发送端口号
#define USART_RX PIN6_bm接收端口号
3.修改你的LED显示状态,找到LED.h这文件,里面是LED控制程序,自行修改相关代码,或者直接把
#define LED_En 1 这个值定义为0,关掉LED指示!
4.如果你要修改波特率,请自行修改代码
修改 void USART_initial(void) 串口初始化子程序中的 USART_Baudrate_Set(&USART, 25 , 0);
32M RC中38400的波特率误差很小 0.16% 可以满足要求
//-------------------------------------------------------------------------------------------------------
系统:
联机密码:41 56 52 55 42 (HEX)
通信协议:标准XModem协议
数据帧长:256字节
串口波特率:38400,8,n,1
测试:
> 包 , 数据 , 重试
V 升级成功: 用时: , 速度: 2.9k/s.
编译环境:
winavr + AvrStudio
使用AvrStudio打开bootloader.aps 项目移植办法讲看bootcfg.h
(注,这个是AVR XMEGA 的引导程序)
如果你在移植到XMEGA时碰到问题可以通过 lisn3188@163.com 得到帮助
感谢源程序作者 Shaoziyang 给我的帮助,让我能快速把这个程序移植到XMEGA上
源代码(内有详细的注释):
AVR xmega bootloaderourdev_525245.rar(文件大小:34K) (原文件名:Xmega_BOOT.rar) 看来目前还是很少人用XMEGA呢,很多人对XMEGA还不太认识,只是XEMGA和AVR是一个内核的东西,并没有什么神秘的。
但是它却有AVR更多的功能更快的速度并且功耗更低,看看这个片子,TAOBAO上有一家在卖28元片(这并不是广告,只是说明一下这个价格,不要拿STM32来比)
Atxmega64a3(注:后缀有a1,a3,a4三种引脚分别是100,64,48)内部64K+4K flash闪存,4K RAM和2K EEPROM。
这个芯片的功能:
.4通道的DMA
.8通道的事件触发系统
.7个16位的定时器 PWM发生器、输入捕捉
.7个USART 支持IRDA
.2个TWI (I2C SMbus)
.3个SPI
.16位RTC
.2个12位最高2M采样率的ADC,各8个输入端口
.1个两通道的DAC 最高1M转换速度
.4个模拟比较器
.所有的IO引脚都可以产生中断
.独立时钟看门狗
.AES,DES加密引擎
.64脚TQFP封装
.最高32M系统时钟
这样的片子,可以完全取代AVR MEGA系列的高档芯片(如M128),当然这个Atxmega64a3是没有外部总线的,这只是表面上的比较,用什么片子还是项目决定
最后,希望大家多多关注XMEGA 顶一个,不知道dragon能不能对其下载? Dragon可以的,也可以仿真 顶,我也在玩Xmega,下载倒不愁,手上有克隆版的MKII(Dragon也可以下载),只是芯片用的人少,交流的也少。大虾们多做几块开发板,做点有意思的东东出来就好了。 LS 我正在用XMEGA的DAC做WAV播放器,TDA1308做功放.现在还有点小问题,做好了放上来大家一起玩玩。 最大的问题还是没中文DATASHEET...这个很影响普及的..
因为还要工作做其他事,所以还真没那么多时间去仔细研究英文数据手册...
近期打算做的一个东西还是准备用MEGA128.. LS,中文手册确实是一个问题,相信不久atmel会把它搞成中文的吧。
前阵子有个帖子说要翻译这个手册的,不知道怎么样了...
但是话说回来,做电子的人看不懂英文手册那也是一个悲哀... lisn3188 龙南 :
你的 “ xmega64a3 xmega128a3 空板”用于 XMEGA32A4 没问题吧? 我刚从淘宝上买了几片 XMEGA32A4 ,,25块一个,,还好不算
贵得离谱, 以后多向你请教! 【9楼】 tvro123
XMEGA从后缀上分,有A1、A3、A4 之分,一般A1是带总线的,有100脚之多
A3是64个脚的,而你买的XMEGA32A4 则是44个脚的,自然不能用我画的板子 太好了!!!!!!!!!!!!! 买不到片子,再好也没有用啊. 最近用a1,挂了8m的dram,开始是winavr的地址指针寻址不到64k sram以上的空间,换iar后使用huge指针可以使用,但用大模式编译的代码,printf不能使用,换小模式又可以,但只能寻址64k。初步断定是大模式库函数的问题,dlib和clib都一样。
不知道有人知道这是怎么回事吗? 学习 顶,在移植16D4,碰到些问题 感谢楼主lisn3188 龙南,感谢Shaoziyang,感谢ourdev,感谢大家,终于测试成功 上传最新的BOOT程序:
xmega最新bootloaderourdev_586009NLSY5Z.rar(文件大小:96K) (原文件名:USB_BOOT.rar)
这个版本使用 115200BPS 更快的程序下载速度。 顶, 学习 回复【9楼】tvro123
lisn3188 龙南 :
你的 “ xmega64a3 xmega128a3 空板”用于 xmega32a4 没问题吧? 我刚从淘宝上买了几片 xmega32a4 ,,25块一个,,还好不算
贵得离谱, 以后多向你请教!
-----------------------------------------------------------------------
这都一年多了,32A4现在淘宝上我找到的是29块钱。ATMEL现在是不差钱呀。AVR这点钱看不上了。 记号 除件下不了啊 多谢分享~ 大哥,按照你的指示做,为何设置了bootrst后查看汇编代码boot代码为何不是 位于boot区啊,郁闷纠结啊,神啊,救救我吧,我的芯片是XMEGA32D4 huangshuyi 发表于 2013-4-26 15:04 static/image/common/back.gif
大哥,按照你的指示做,为何设置了bootrst后查看汇编代码boot代码为何不是 位于boot区啊,郁闷纠结啊,神啊 ...
你用的是什么编译环境? 麻烦按楼主位的工程【环境 winAVR + AVRStudio 4.19】,设置.text 的起始地址到BOOT区。如果用的高级版本的AVRStudio 如5,6,自行研究如何设置吧。因为我没用过 我用的是IAR,没有可以设置.TEXT的选项,今天改了下XCL链接脚本,程序倒是位于0X8000了,可是程序不能正常工作啊,楼主对这方面熟悉吗,好像用IAR开发的真的少啊,貌似都是用STUDIO吗? 路过.........学习一下.... 学习 mark 顶一个,好东西
页:
[1]