AVR IAP功能应用.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR IAP功能应用.pdf

关于 AVR IAP 功能应用的几点说明和思考 作者:马潮老师 / 整理:armok / 2005-01-17/ www.OurAVR.com 以下是我在 2004 年一月在 21IC 上的帖子,现重新帖在在 OURAVR 上,供大家参考(A 区:应用程序 区。B 区:BOOTLOAD 区)。 1.A 区和 B 区的大小是可以通过熔丝位的设置改变大小的,但 RWW,NRWW 是固定的,不会改变。对于 M8 来说,B 区的大小可设置为 128、256 、512、1024 字,而 RWW/NRWW 则固定为 3072/1024 字。 2.MCU 挂起,表示 MCU“暂停”工作,即暂时停止取指令、响应中断等,待前一个硬件操作完成后再继续执行 后续的指令操作。 3.当MCU 对 RWW 区域进行页读取、写入或擦除时,一旦指令发出后,操作将由硬件自动完成(例如由硬件 将 RWW 区中的一页 32 字读到临时缓冲页中),这个操作过程需要占用一定的时间,在这段时间内,MCU 可 以读取NRWW 区中的指令并执行。这与“一边读写 RWW 区域,一边干别的什么事”是不同的概念。这同当 AVR 的硬件在做AD 转换,或 URAT 正在接收一个字节数据时,MCU 也同时执行一条指令是类似的。下面给 一个例子: a.从 UART 口读入32 个字,存入 RAM (程序在NRWW 区域的 B 区中) b.使用循环将 32 个字写入临时缓冲页中(程序在 NRWW 区域的 B 区中) c.将写入 SPMCR 寄存器,并执行 SPM 指令实施对 RWW 区中的页写入(程序在NRWW 区域的 B 区中) d1.等待 3.7ms,待页写入操作完成(程序在NRWW 区域的 B 区中) d2.或从 UART 口读入后续的32 个字,存入 RAM (程序在NRWW 区域的 B 区中)!!! e.3.7ms 到(最好使用 SPM 中断响应):如采用d1 此时则做 d2 ;采用d2 则直接到 f f.跳到 b ,更新RWW 中的下一页。 在这个简单的操作过程中,采用 d2 的方式,就是利用了“对 RWW 操作时,可以同时对 NRWW 区进行读 操作” 的特点。它减少了更新FLASH 的时间。但对NRWW 区更新时,不能采用上面的操作过程。一旦对 NRWW 区中的页进行更新操作(C 后),MCU 将暂停,直到操作完成后,MCU 才读取下一条指令,继续运 行。这是由芯片内部的硬件电路控制,不是由指令控制的。 4.AVR 的BOOTLOAD 功能同其它一些芯片不同,它的 BOOTLOAD 程序没有固化在芯片内部(出厂为空), 而是需要由用户设计实现(实际上,你第一次下载 BOOTLOAD 程序还必须使用其它的方式编程,如 ISP 、 JTAG 等),因此对一般的用户掌握起来有一定的困难,不如一些其它芯片的 BOOTLOAD 使用方便。但对高 手来讲,可以根据实际需要编写高级、高效、专用的 BOOTLOAD 程序,如从一个 U 盘读取数据,更新用户 的应用程序;编写一个时间炸弹,或对用户的密码进行验证,10 次不对则将系统程序销毁等等。简单意味着 使用方便,但灵活和适应性差,而灵活性需要你具备更高的能力去驾驭它。可能会有一天,在单片机的系统上 也出现了“病毒”程序,其原因就是使用了固化的 BOOTLOAD 程序。由于固化的程序必须有统一开放的接口, 那么用一个带“病毒” 的应用程序更新原来的应用程序也就轻而易举了。 5.一般情况下,不提倡用 B 更新 B ,一旦把B 中的BOOTLOAD 程序破坏了,那么整个 BOOTLOAD 的功能便 无法实现了。其整个概念为,“B 区可以自编程,但不要把 B 区中的BOOTLOAD 程序破坏” !给2 个设计参 考。 a.设置 B 区为 1024 字,其低 768 字为中断向量区和中断服务程序及其他程序,高 256 字为 BOOTLOAD 程 序。此种情况,可以运行高 256 字的 BOOTLOAD 程序,更新低 768 字中的程序。 b.BOOTLOAD 程序也要更新的设计: 必须将 bootload 程序限制在一个规定的长度以内,假定为 256 字。 B 区设置为 1024 字,前 512 字为中断向量区和中断服务程序,接下来的 256 字空间保留,准备放新的 BOOTLOAD 程序,最后 256 字为当前的 BOOTLOAD 程序。 当需要更新BOOTLOAD 程序时,使用当前的 BL 程序将新的 BL2 程序写入保留的 256 字空间,并同时更新应 用程序转入

文档评论(0)

caijie1982 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档