历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2019年10月14日 | ATMEL系列MCU在线升级bootloader固件源码及操作过程

2019-10-14 来源:eefocus

前几天出差,无意间问了大家是否需要bootloader实现在线升级,需要的还是比较多,在这里我就把我实现过程与大家分享,并我的bootloader固件给大家参考。我在mage和xmage上都实现过,不过我使用的RS485,所以固件里面也是RS485的,大家使用RS232的话,把RS485的控制去掉就可以了,RS232实现起来比RS485简单,因为RS232是全双工的。


我开发使用的环境是Atmel Studio 6.2,这个看大家习惯,环境主要就是实现可执行文件。bootloader固件都是C语言

实现,相信大家都能看明白,这里就直接上传bootloader固件源码。bootloader固件是需要仿真器等设备下载到设备中的。


我上传的这个bootloader是在xmage16上实现的,大家可以根据自己的芯片稍作修改就可以。


ATMEL的mcu大多数都分boot区和应用区,都有熔丝位的设置,所以要实现在线升级,首先需要设置熔丝位,使mcu上电从boot区启动。然后在boot区判断是否需要升级,不需要自动跳到应用。还有就是要注意,我给的bootloader固件只是实现上电时进入boot区,需要其他方法实现,可以自行修改,原理一样。


下面我说一下熔丝位的设置,这个需要针对mcu,不通的mcu设置稍有不同。
我在mage88pa上实现过,熔丝位设置为:


使用仿真器ISP设置mega88pa熔丝位,设置如下:
1, BOOTSZ:选择512W_0E00;
2, BOOTRST:选中,表示使用上电从boot区开始启动。
3, SPIEN:选中,默认仿真器模型,ISP下载程序,但不能仿真。该模式可设置熔丝位。
4, 需要仿真时,选中DWEN,去掉SPIEN。即选择debugwire,在仿真在调试时disable后进入ISP;
5, EESAVE:执行擦除命令时是否保留E2PROM中的内容,默认状态为“1”,表示E2PROM中的内容同Flash中的内容一同擦除。该位设置为“0”,对程序进行下载前的擦除命令只会对FLASH代码区有效,而对E2PROM区无效。
6, BODLEVEL:选择4.2V;掉电检测。
7, SUT_CKSEL:选择EXTXOSC_8MHZ_XX_16kCK_14CK_65MS;最后一个,根据使用的晶体来选择。
8, 其他不选择。

在xmage16上实现过,熔丝位设置相对简单一下,只设置从boot区启动即可。

熔丝位设置好后,就使用仿真器把bootloader固件固化到mcu中。
接下来就是实现在线升级了。如果使用pc机实现在线升级的画,在pc机就需要一个应用软件。


接下来说一下这个应用软件的的使用,下面是针对mage88pa来说:

1) 启动 AVRUBD.EXE 。

2) 设置 AVRUBD 。 点击“选项”,点击下拉菜单的AVR, 先将“ AVR ” 选项卡下的参数设置为图 一 的要求, 注意 flash 空间大小是8K (这个根据具体mcu设置,如xmage16,应设置为16K); 联机密码为HEX:41 56 52 55 42;然后选“系统” 卡片, 设成图二 所示, 注意通讯协议要选简化 Xmodem 协议;数据帧长度为:64,(根据mcu串口接收buff设置,如xmage16应设置为256); 再选“串口 ” 卡片, 将其设成图三 所示, 其中串口号要根据你所用电脑实际串口确定;波特率为38400; 完成以上设置后点击“确定




3) 载入要写到芯片中的 HEX 文件。 这一步是将你要下载到电路板的程序先装入电脑, 方法是点击
左上角菜单中“文件 –> 载入”, 然后选择要下载的文件, 点击“打开”。



4) 点击“下载”( 图4 ), 随即给目标板上电。 注意这里有一个时间配合的问题, 当你点击“下载”
后, PC 会查询下位机, 这段时间约为数秒。 当板卡上电后也有一个等待串口命令的时间,
这个时间只有 1 – 2 秒, 如果这两个时间配合不上, 就会出现联机失败( 图 5 ), 所以应当点击“下
载” 后马上给下位机( 即主板卡) 上电。 当顺利完成时, 你应该看到与图 6 类似的结果。




到这里,在线升级完全实现了,感觉写得有点乱,但相信你也能看明白。


推荐阅读

史海拾趣

Fujitsu America公司的发展小趣事

在物联网(IoT)和智能制造领域,Fujitsu America也展现出了卓越的创新能力和市场洞察力。公司通过与PTC等合作伙伴的紧密合作,将物联网技术和智能制造技术相结合,推出了一系列面向制造业的智慧工厂解决方案。这些解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能源消耗,为制造业的数字化转型和可持续发展提供了有力支持。Fujitsu America的智慧工厂解决方案在北美市场得到了广泛应用和认可,为公司赢得了良好的市场口碑和品牌形象。

Azoteq公司的发展小趣事

随着触控技术的兴起,Azoteq在2004年增加了第二条产品线,以应对新兴的电容式触摸和接近感应产品市场。这一举措使得Azoteq能够紧跟市场趋势,为客户提供更多样化的产品选择。通过不断的技术创新和市场拓展,Azoteq在这一领域逐渐取得了领先地位。

Alcatel-Lucent公司的发展小趣事

Azoteq公司成立于1998年,由Frederick Bruwer博士创立。作为一家无晶圆厂半导体公司,Azoteq从一开始就致力于开发创新的传感解决方案。其首个产品系列——LightSense™,是针对LED手电筒和穿戴头灯的智能控制而设计的。这一产品系列的推出,为Azoteq在半导体设计制造领域奠定了坚实的基础。

常忆科技(CHINGIS)公司的发展小趣事

在电子行业的激烈竞争中,常忆科技也面临着诸多挑战。其中,市场需求的快速变化和竞争对手的不断涌现是公司需要重点关注的问题。为了应对这些挑战,常忆科技不断调整和优化产品结构,以满足市场的多样化需求。同时,公司还加大了对核心技术的保护力度,防止技术泄露和侵权行为的发生。

在面对行业危机时,常忆科技展现出了强大的抗风险能力。公司通过加强内部管理、降低运营成本、提高生产效率等措施,成功度过了多次行业危机。这些经历不仅锻炼了公司的应对能力,也进一步提升了公司在行业中的地位和影响力。

Alliance Memory公司的发展小趣事

展望未来,常忆科技将继续坚持创新驱动的发展战略。公司将不断加大在研发和创新方面的投入,推动产品技术的持续升级和迭代。同时,常忆科技还将积极拓展新的应用领域和市场空间,以满足更多客户的需求。

为了实现可持续发展,常忆科技还将注重环境保护和社会责任。公司将致力于推广绿色环保的生产方式和产品应用,为社会的可持续发展做出贡献。在未来的发展中,常忆科技有望凭借其卓越的技术实力和创新精神,继续在电子行业中书写新的辉煌篇章。

ABECO公司的发展小趣事

在1950年代的英国,ABECO的创始人凭借对电子行业的热爱和对手工工具的独特见解,开始了他的创业之路。初创时期,资金匮乏,人员稀少,但创始人凭借着对品质的执着和对创新的追求,不断研发出满足市场需求的高质量工具。他亲自走访客户,了解需求,不断完善产品,逐渐在电子行业中树立起了良好的口碑。

问答坊 | AI 解惑

485 现场总线施工的实际问题和解决办法(1)

一、关于485总线的几个概念: 1、485总线的通讯距离可以达到1200米。 根据485总线结构理论,在理想环境的前提下,485总线传输距离可以达到1200米。其条件是通讯线材优质达标,波特率为9600,只负载一台485设备,才能使得通讯距离达 ...…

查看全部问答>

请教关于DXP2004中原理图的“Title Block”的修改

请教大家一个问题:    在 Protel DXP2004 sp2 的原理图编辑中,它右下角的那个“Title Block”的区域中的信息,有没有非常方便的方法修改呢?    恳请大家告诉我正确的方法,谢谢!…

查看全部问答>

全国一等奖候选队复测名单

本帖最后由 paulhyde 于 2014-9-15 09:20 编辑 http://www.nuedc.com.cn/news.asp?bid=5&sid=20  …

查看全部问答>

verilog 3*3 按键扫描

https://bbs.eeworld.com.cn/viewthread.php?tid=82614&page=3&extra=page%3D1#pid299699 26楼…

查看全部问答>

嵌入式开发板——飞凌6410性能及配置详解

嵌入式开发板——飞凌6410性能及配置详解 S3C6410开发板产品备注:     S3C6410是一款低功耗、高性价比的RSIC处理器,可广泛应用于移动电话和通用处理等领域;     S3C6410为2.5G和3G通信服务提供了优化的硬件性能,内置 ...…

查看全部问答>

如何实现CE设备在PC上识别为U盘?

通过看资料: http://blog.eeworld.net/nanjianhui/archive/2009/08/20/4466741.aspx 我的BSPP中USB 驱动中有         1、USB\\FUNCTION         2、USB\\HCD\\OHCD   & ...…

查看全部问答>

vxworks死机问题,,十万火急

vxworks死机问题。 我是在一个任务中做了TCP、udp,但是当UDP还在SEND的时候,TCP却断了。我感觉应该是协议栈初始配置的问题。通过抓包程序发现,当TCP dead的时候,接受主机一样能收到来自VXWORKS设备的PING包,并且主机也做了正确的回应,只是vx ...…

查看全部问答>

在linux下发送at指令给支持windows的设备可以吗?

想在arm+linux下做开发,需要发送彩信,但是没有相关的GPRS模块,有的彩信猫也只是支持windows,据客服说,只“在硬件上支持,需要自己写程序”。我想问下,在自己的系统下,发送at指令给彩信猫的接口,然后调用彩信猫发送彩信,不知道可行吗?谢谢 ...…

查看全部问答>

一下还不习惯用ST的库函数(懒记),所以自己对GPIO口进行

另外,对ST的一些寄存器定义也不大习惯,所以也重新做了定义,例如GPIOx_BSRR我另外定义了一个GPIOx_SET,GPIOx_BRR我另外定义了一个GPIOx_CLR,这样自己记起来轻松多了——男人何必为难自己呢...看看这个流水灯的程序,看上去是不是容易些了 ...…

查看全部问答>

IAR程序移植到ICC

网上下了个fft的程序,看了一下它包含的头文件应该是在IAR上调试通过的,移植到ICC后移植编译出错, 源程序如下: #include #include /*********************************************************************       & ...…

查看全部问答>