AVR Bootloader编程

AVR之Bootloader

     AVR系列单片机有一个很强大的功能,那就是Bootloader,这里的bootloader和嵌入式的不同,嵌入式中的bootloader是MCU引导操作系统的,AVR所谓的Bootloader是进行整个flash(包括Bootloader本身)的擦写操作,可以进行MCU程序的升级,这对于需要连接到PC机的设备来说,其中的重大意义不言而喻。

   这里以ATmega168为例。

   1.首先,理解168的Flash存储结构:

      整个flash有两种区分方法:

          1>应用程序区和Bootloader区:两个区的空间大小由BOOTSZ熔丝位来配置,具体设置可参考168的Datasheet;

          2>RWW区与NRWW区: 所谓RWW,即同时读写(Read-While-Write)。具体区域大小参见Datasheet.

                在对RWW区和NRWW区进行操作需要明白:

                  对RWW区内的页进行擦除和写操作时,可以读NRWW区;

                  对NRWW区内的页进行擦除和写操作时,CPU停止。

   2.理解如何进行SPM指令的操作:

       这就涉及到 程序存储控制器和状态寄存器---SPMCSR 和 Z指针,其中Z指针就是用于SPM指令的寻址。

       一开始看到SPM指令的时候,容易和其它的汇编指令联系在以前,以为会带个参数什么的,其实spm指令不带任何参数,但是它可

   以进行4种操作:

          1>RWW区读使能操作;

          2>Boot区锁定位设置;

          3>页写入;

          4>页擦除;

      但是一个spm指令如何进行区分,到底该执行哪种操作呢?这就需要结合SPMCSR寄存器了,在这个寄存器里,以上几种操作都有

   相应的使能位,如果相应的使能位和SPMEN位置位了,那接下来的四个指令周期,就会执行相应的操作。操作所需要的地址就是Z指

   针的事了。

  3.相应的步骤:

   

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值