第32章Flash存储器接口和编程

32.1 简介

Boot装载程序控制芯片复位后的初始化操作,并提供对Flash编程的方法。Boot代码可以对空片进行初始编程、对事先已编程的芯片进行擦除和再编程或者是在系统运行时通过系统中的应用程序对Flash存储器进行编程。想深入了解如何操作?精彩编程与编程技巧_避免装载多份应用程序可能会对你有所帮助。

32.2 特性

在系统编程:在系统编程(ISP)是通过Boot装载软件和UART0串口对片内Falsh存储器进行编程/再编程的方法。这种方法也可以在芯片位于终端用户板的时候使用;欲知更多细节,flash存储器在线编程详解不容错过。

在应用编程:在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。如果你对实际操作有兴趣,AS编程FLASH是一个不错的参考。

32.3 描述

Flash Boot代码在芯片上电或复位后最先执行。Boot代码可以执行ISP程序或用户的应用代码。发生硬件复位后,P2.10引脚为低电平,这就被当作启动ISP命令处理器的外部硬件请求。假定在/RESET引脚上出现上升沿时,电源引脚出现正确的信号,那么在采样P2.10之前有3ms的时间决定是执行用户代码还是ISP处理程序。如果P2.10为低电平且看门狗溢出标志置位,那么忽略启动ISP命令处理器的外部硬件请求。在没有ISP命令处理器的请求(硬件复位后P2.10引脚为高电平)时,将搜索有效的用户程序。若发现有效的用户程序,执行控制权就被转移给用户程序。若没有找到有效的用户程序,就将调用自动波特率程序。引脚P2.10的状态作为ISP硬件请求时需要特别注意:由于P2.10在复位后处于高阻模式,所以要使该引脚的状态稳定,用户需要提供外部硬件(上拉电阻或其它器件)。否则可能就进入了ISP模式。上电复位后一旦处理器进入ISP模式后,IRC和PLL被用于产生14,748MHz系统时钟CCLK。这样下列波特率就很容易获得:9600波特、19200波特、38400波特、57600波特、115200波特和230400波特。当ISP通过用户应用程序来调用时可能不会出现上述情况(请参考“重新调用ISP”小节)。

32.3.1 复位后的存储器映射

复位后,在用户程序开始运行时,中断向量被设置成指向Flash存储器的开头。如果你想要进一步了解相关编程方法,Flash程序存储器常见的编程方法可以给你一些启发。