历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2018年10月15日 | AVR使用范例--使用Bootloader 升级芯片内程序详解

2018-10-15 来源:eefocus

Bootloader是flash中高地址的一个程序区域,通过它可以实现程序的运行控制,程序更新等。本页给出的是通过串口实现在线更新的方法。程序编译环境:icc avr 6.31。


如果你使用Atmega16芯片,7.3728M晶振,1024的bootloader区,19200的波特率,那么你直接使用下面的hex文件就可以了,下载hex文件。
本站的开发板内,预制这个hex文件,可以按照本页的方法用串口线直接更新程序。


否则,你需要对程序进行调整,然后重新编译Bootloader的hex文件,下载软件包,软件中需要更改的部分:


  1. 芯片的类型


  2. #include //选择对应的芯片


  3. Bootloader区的大小,和ICC的option相对应。


  4. #define BootSize 'd' //1024


  5. 串口的通讯频率设置,根据晶振大小对应的进行修改。


  6. #define BAU 23 // 7.3728M 19200(计算方法如下图)


下面这个界面计算出UBBR的值正确的前提是CPU选项中的芯片类型和晶振都选择正确。


0


程序修改之后,进行如下操作,操作详细步骤说明:


1、在ICC中设置设置bootloader选项。


设置ICC的编译选项


2、编译,这里很容易出问题,因为你的ICC的安装路径,以及下载后存放文件的路径可能会不同,所以刚开始的时候编译可能会出错,解决的方法,Projects—>Options —>Paths 把路径修改为正确的路径,然后再编译。


3、用ISP下载线或JTAG调试器把生成的hex文件烧写到单片机里。


使用JTAG或ISP下载程序


4、配置熔丝,需要用ISP或者JTAG来完成。


编辑reset熔丝位


其他熔丝位请参考其他文献,在此不作详诉。Boot loader在flash中对应的是高位字节, 选中此熔丝的目的是让程序在复位时从boot loader开始运行,而不是0x0000。(此处再配置熔丝选择BOOTSZ=1024)


然后打开AVR.EXE


上位机操作说明:


1、确保所要升级程序的单片机与PC机的RS232接口连接正常;


2、打开本软件,选定所使用的通讯端口,选定波特率(本软件默认为19200bps,对应单片机使用7.3728MHz晶振)


3、点击 “打开串口” 按钮;


4、请您复位单片机或断电后重新启动单片机系统,此时在芯片信息栏里会出现您所要操作的单片机的相关信息;

其中版本可能显示与实际版本不符,但不影响使用;


得到芯片的信息

5、点击 “载入文件” 按钮,将您要更新的程序载入,完成后会在数据区正下方出现数据占用的页数; 每次都需重新点击“载入文件”选择相应的hex文件,不然下一步无法继续。


载入文件


6、点击 “下载程序”按钮开始下载,测试在总页数旁边会实时显示已经完成的页数,请耐心等待;


7、当所有程序都更新完后,实时显示的页数与总页数相等,并在信息框中会显示 “程序下载已完成”;


程序下载完成


8、点击 “退出BOOT”按钮,此时单片机跳转到0x0000开始运行从串口写入的程序,更新完毕。


想写入下一个程序时,再次点载入文件,然后复位一下单片机,就可以再出现第5步之后的界面了。


说明:上位机借用了别人的软件,此举是为了大家共同学习所用。在单片机复位,如接受不到上位机发出的命令,则自动转到应用程序区运行。


Ps: 此bootloader是由上位机通过串口发出命令控制,在实际的操作中完全可以模拟此程序写出满足自己要求的逻辑炸弹或相应的更新软件。自己做的测试程序 小灯 可以正常显示。


推荐阅读

史海拾趣

ERP公司的发展小趣事

在21世纪初,一家名为“电子智链”的ERP公司在中国电子行业崭露头角。创始人李明是一位资深电子工程师,他意识到电子企业面临的管理挑战和数字化转型的机遇。电子智链初期专注于为中小型电子企业提供定制化的ERP解决方案,帮助企业优化供应链管理、生产计划和财务管理。通过不断创新和积累客户反馈,电子智链逐渐在电子行业树立了良好的口碑。

ENTRELECUK公司的发展小趣事

在电子行业中,绿色环保和可持续发展已成为重要的议题。ENTRELEC UK积极响应这一趋势,致力于研发和生产环保型产品。公司采用环保材料和节能技术,降低产品对环境的影响。同时,公司还积极参与环保公益活动,推动行业的可持续发展。

ELM Technology Corporation公司的发展小趣事

ELM Technology Corporation非常重视企业文化的建设。公司倡导“创新、协作、诚信、责任”的企业精神,鼓励员工积极创新、勇于担当。同时,公司还为员工提供了良好的工作环境和福利待遇,增强了员工的归属感和凝聚力。这种积极向上的企业文化为ELM的持续发展提供了强大的动力。

请注意,以上故事仅为概述,具体细节和事实需要根据ELM Technology Corporation的实际情况进行补充和完善。

AMRI Enterprise Co Ltd公司的发展小趣事

品质是AMRI Enterprise Co Ltd的生命线。公司始终坚持品质至上的原则,通过严格的质量管理体系和持续改进的工艺流程,确保产品的稳定性和可靠性。同时,AMRI还注重品牌建设,通过提升品牌形象和塑造企业文化,增强客户对公司的信任度和忠诚度。这些努力使得AMRI的产品在市场上赢得了良好的口碑和广泛的认可。

Diplohmatic A/S公司的发展小趣事

在追求经济效益的同时,Diplohmatic A/S公司也积极践行环保理念。公司投入资金研发环保型电子产品,采用可再生材料和节能技术,减少生产过程中的废弃物排放。此外,公司还积极参与环保公益活动,倡导绿色消费和低碳生活。这些举措不仅提升了公司的社会形象,也为推动电子行业的可持续发展做出了贡献。

AIM公司的发展小趣事

AIM公司自创立以来,便以其前瞻性的视野和独特的技术理念,在电子行业中崭露头角。创始团队凭借对市场的敏锐洞察和对技术的深刻理解,将公司定位为提供创新解决方案的引领者。在创立初期,AIM便投入大量资源进行技术研发,逐渐在行业中建立了自己的技术优势和品牌形象。

问答坊 | AI 解惑

三八节,真的是劳动妇女节

老公开玩笑时说“三八妇女劳动节”,事实上,不幸被其言中。由于上周出差拍摄了一些视频采访,今天编了一天的片子还没编完,晚上对着视频又记录文字,好明天作为字幕用,刚弄完。在这个三八节,我是不折不扣地在劳动。下午给一个朋友打电话,她也正 ...…

查看全部问答>

做一款非隔离式电源时遇到的怪现象

电路图:如下   此款电路经过调整电阻参数等: 输出负载为14并7串,总电流420MA的灯管; 频率为50KHZ左右; 实验用数字表;负载接线有点绕; 低压85-200V输入时,手碰到电流表420ma不变,当输入大于200V时,手接触电流表,电流就降低1 ...…

查看全部问答>

Microsoft ActiveSync 频繁断开

用的是 飞凌te2440 II 开发板, 上面搭载 WINCE5.0, 我用 Microsoft ActiveSync 4.5通过 usb口连接着计算机进行应用开发, 怎么每连接上几分钟,就会断开连接呢?…

查看全部问答>

FLASH MEMORY 的具体操作指南

Typical storage methods are shown. Read operation A read operation starts with a command (00h), followed by five address cycles, followed by the read confirm (30h). After the read transfer time (tR) of approximately 25 μs, the ...…

查看全部问答>

请教关于SDIO WIFI的加载问题!

大家好,我们现在在使用MARVELL8686这个WIFI芯片的驱动,总是没有加载成功,打印信息如下:高手们帮我分析一下呀1 SDBusDriver: PROCESS_ATTACH INIT - Enter DriverEntry *** Driver version 38.p45 *** *** Built on Aug 16 2009 18:44:11 ...…

查看全部问答>

PCI问题,是slave还是master?

Montavsta linux环境下,pci usb host controller芯片支持,当然这个PCI转USB设备应该是External pci master了,那板卡是Master还是slave,还是两者都是?因为master与slave的寄存器配置不一样…

查看全部问答>

列表控件如何拉伸图标?

在列表控件上显示设置里的图标,有的大有的小,如何才能拉伸致一样大?还有个问题,如何知道设置里的图标是在个人还是在系统还是在连接里?谢谢 void GetFileIcon(DWORD fpid,SHFILEINFO *info) {         ZeroMemory(info, ...…

查看全部问答>

关于应用程序直接操作NandFlash的问题

因项目需求,要给应用程序提供一个直接操作NandFlash的接口,小弟在网上找到些直接操作Flash的文章,按照上面试了下, [code] m_hFmd = CreateFile(_T(\"DSK1:\"),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); 运行这句话的时候 ...…

查看全部问答>

STM32中断

最近接触这款芯片,今天在看TIM中断的时候发现通用TIM的对应的中断向量只有一个,它的一个TIM有4个通道啊,在向量表中怎么只有一个中断向量呢?我以前遇到的每个通道都会有对应的中断函数的。如TIM1_channel1,TIM1_channel2....  在 ...…

查看全部问答>