下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、atmega48的bootloader的软件实用方法是公司推出的第一款真正意义上的risc结构8位,具有先进的命令集及单时钟周期命令执行时光,数据吞吐率可高达1,其性能显然优于其他类型8位单片机。作为avr主流产品,mega系列的无数产品(mega8megal6mega32mega8535等)在硬件上都支持boot-loader功能。这样可灵便运行boot区程序,实现在应用编程(iap)及一些高级应用,如系统智能升级,密码校验自庇护,远程系统更新等。但有很高性价比的mega48在硬件上却不支持bootloader功能。因此,本文针对mega48首次提出两种软件实现bootloader的办法:跳
2、转保存法和倒置法。1 atmega48 bootloader的软件实现办法mega48在硬件上不支持bootloader功能,不能像其他产品那样通过编程来设置相应的熔丝位以实现bootloader,只能通过软件来实现。在mega48上实现bootloader的关键在于通过软件实现程序存储器空间划分。复位后,boot区获得mcu控制权,自编程结束后mcu控制权返还给app区.以下将具体介绍本文提出的两种新办法。1.1 跳转保存法本办法的核心在于跳转和保存,因此命名为跳转保存法。跳转指上电后mcu跳转至boot区,mcu控制权被boot区获得。保存指对app区程序复位地址的保存,惟独保存了该地址才
3、干保证mcu控制权正常返还给app区。跳转保存法采纳普通分区方式,即app区位于程序存储器空间的低地址处,boot区在高地址处。因本文用法的上位机软件为avrosp,boot区需占用1 kb。此外,因为atmega48不支持通过熔丝位修改程序的复位向量,故需多划分给boot区4个页面大小的空间。为提高程序的可移植性,可用法预定义语句来划分boot区大小,详细实现如下:define pagesize 64每个页面由64个字节组成define app_pages (4*1024pagesize) - (1*1024+256)pagesize)app区的页面数define app_end app_p
4、ages*pagesizeapp区共占用的字节数在编译过程中,因为iccavr编译器只支持标准的boo了区大小设置,即25651210242048 kb。故用法下面办法定义boot区大小;pragma text:mytextvoidboot()pragma text;text编译过程中,在projectoptionstarget的other options中,添加“-bmytext;0x?”,其中0x?为boot区开头的地址。这样就可以按照实际需要设定boo了区大小。这对于囫囵程序空间惟独4 kb的atmcga48来说,是十分适合的。程序详细流程1所示。1所示,boot区程序块的第一步就是读取
5、eeprom中的app区原复位地址,以便单片机在执行boot区程序条件不成立时,跳转到app区执行程序。eeprom_read(0xfe,appreset);当执行boot区程序条件成立时,单片机将执行boot区程序来更新app区中的内容。这里特殊要注重对即将更新到app区内程序复位地址的处理:保存该程序中复位地址到ram中,并修改该地址为boot区人口地址。这个工作必需在页面填充前完成,否则在更新后,单片机复位运行不会首先跳转到boot区。if(address=o)appreset=data;data=bootreset; boot区的入口bootreset=0x1300boot区程序块最后
6、一步是对app区程序复位地址的保存。惟独通过上电复位才干移交mcu控制权给app区,这将导致ram被清零。为了保存ram中的原app区程序复位地址,需上电复位前,将这个地址保存到eeprom中。eeprom_write(oxfe,appreset);值得一提的是,在第一次运行时,程序并不能挺直跳转到boot区首地址,所以第一次运行时,app区内容应为空。这样,当单片机上电运行时,程序指针(pc)会自增向下运行到第一句可执行代码,即boot区中的首行代码。同样,第一次运行时也不行能读取出正确的返回app区的入口地址(取出值为0xff),所以第一次运行时必需保证执行boot区程序条件成立,否则将无
7、法正确跳回到app区。惟独执行了boot区程序,才干写入正确的app返回地址到eeprom中,从而为以后的运行做好预备。跳转保存法遵循了bootloader的常规实现流程,但它的mcu控制权交接处理比较复杂,下文将提到的倒置法就很好地解决了这个问题。1.2 倒置法普通来说,程序存储区的上部为npp区,下部为boot区,这也是常规办法所实行的分区办法。这种分区办法由支持bootloader功能的芯片程序存储区中rww和nrww的划分方式所打算的。针对mega48,它的程序存储区没有rww区和nrww区之分,spm命令可以在囫囵flash区中执行,所以大可不必拘泥于普通逻辑,彻低可以把app区和b
8、oot区倒置,即把程序存储区的上部划分为boot区,下部划分为app区。本文中将这种分区办法称为倒置分区办法。倒置法背弃了常规分区形式,创新地采纳倒置分区法对程序存储区举行分区。这样,在每次上电后,boot区自动获得mcu控制权,而不需修改和保存用户程序复位向量,这比跳转保存法简便。boot区大小划分仍用法预定义语句,详细实现如下:define pagesize 64define app_pages(4096pagesize)-(1024pagesize)define app_end app_pages*pagesize在对app区程序编译时,编译器的配置办法类似于常规办法中对boot区程序编
9、译时的配置倒置法流程2所示。2所示,当执行boot区程序条件不成立时,程序跳转至app区入口处,该地址是固定的(4096"1024)。详细实现如下:asm(“jmp 0x0c00n”);跳转到app区开头执行需要注重的是,中断向量空间在程序存储器的低地址上,这正巧位于boot区中,故为了增强app区和b00t区两部分程序的自立性,可在app区中人为构建除复位向量以外的其他中断向量空间。在自编程过程中,实施页写入时,不是按常规办法的挨次从第一个页开头更新,由于需更新的是app区所在的页面,而不是boot区所在的,所以要从app区所在的页面处开头更新。倒置法打破了常规的分区模式,大大简化了对mcu控制权的处理,但其页面更新处理较为繁琐。跳转保存法则因沿袭了常规处理方式,所以页面更新无需做特殊处理,并能很好地兼容硬件实现bootloader的程序。用户可以按照实际需要来挑选办法。2 硬件测试原理图及结果调试硬件原理图3所示。图3中的isp接口是用来完成第一次非bootloadcr的编程方式,从而建立bootloader的应用环境。这以后的每次编程均可以通过串口挺直完成,不需要任何其他设备。在本文中用法的编译环境为iccavr demo版,通过用法avr单片机的井口下载线完成b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西生态工程职业技术学院单招综合素质考试备考试题带答案解析
- 财经培训课件
- 医疗保险业务分析
- 烧烫伤急诊处理总结2026
- 2026年河南农业职业学院单招综合素质考试备考试题带答案解析
- 医院手术室人员职业素养培训
- 财政收入概述课件
- 财富金瑞课件
- 2026年保定电力职业技术学院单招综合素质笔试参考题库带答案解析
- 护理专业发展面临的挑战与应对
- 北京市北师大附中2024-2025学年高一上学期期末考试数学试卷(含答案)
- 市政工程施工机械管理制度
- 带货主播年终述职报告
- 成都大学《C语言程序设计》2023-2024学年第一学期期末试卷
- JJF 1375-2024机动车发动机转速测量仪校准规范
- DL∕T 1512-2016 变电站测控装置技术规范
- GB/T 4074.6-2024绕组线试验方法第6部分:热性能
- 医疗卫生机构6S常态化管理打分表
- 危险源辨识、风险评价、风险控制措施清单-05变电站工程5
- 2023年副主任医师(副高)-推拿学(副高)考试历年真题摘选带答案
- 朱子治家格言(朱子家训)课件
评论
0/150
提交评论