LPC11U35 闪存编程固件 学习笔记

说明:扇区大小为4KB,页的大小为256个字节,一个扇区包含16页。

 1、关于Boot loader

 功能:控制复位后的初始操作,并提供闪存编程的方法(初始编程/已编程设备的擦除与重编程/通过应用程序闪存编程)。Boot loader 会求闪存扇区0的前8个位置的校验和,如果为0,则执行控制将转交到用户代码(判定有效用户代码的标准)。

 位置: Boot loader 的大小为16kB,在存储器区域中的起始地址为 0x1FFF0000。复位后,驻留在片内Flash存储器的引导模块中的中断向量也将出现在起始地址为0x00000000的存储器区域中。 

 版本读取: 通过调用ISP或者IAP可获取

启动时间:器件每次上电或者复位时,都将执行引导程序代码一次。

 

Boot Loader的处理流程:

LPC11U35 闪存编程固件 学习笔记

 

CRP(代码读写保护):允许用户在系统中通过使能不同的安全级别来限制对片内Flash的访问和ISP的使用的一种机制(IAP不受CRP的影响)

调用CRP:通过Flash地址单元0x000002FC编程特定的格式,改变在经过一个电源周期后生效

选项:NO_ISP、CRP1、CRP2、CRP3

NO_ISP——防止对PIO0_1引脚采样,从而禁止进入ISP模式。

 

2、在线编程

  在线编程的两种主要方式:ISP(In-System Programing)在线系统可编程、IAP(In-Application Programing)在线应用编程

  ISP :指电路上的空白器件可以通过编程来写入用户代码,已编程的器件也可以用ISP方式擦除或者再编程。

  ISP的实现原理:通过单片机留出的串行接口与上位机软件进行通信,上位机发送命令对单片机内部的存储器进行改写,不需要编程器即可进行单片机的实验和开发,LPC11Uxx系列可通过UART或者USB接口实现ISP调用。

    ISP数据格式:数据流采用UU编码格式,每发送20个UU编码行之后,发送端应该发送校验和;UU编码行的长度不应超过61个字符。

    ISP采用软件XON/XOFF流控制模式,ASCII字符DC3使数据流停止,DC1恢复数据流。ESC中止命令,使用转义符。

    ISP命令处理程序使用的RAM:0x1000017C~x1000025B

 

 

IAP:IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。

IAP例程通过寄存器r0中的字指针调用,指向包含命令代码和参数的RAM,结果在r1指向的结果表中返回。

最大参数数目为5,传送到“将RAM复制到Flash”命令,最大结果数目为4,由“读UID”命令返回。

IAP程序是Thumb代码,定位在地址0x1FFF1FF0处。

 

3、ECC机制

    ECC(闪存内容保护机制):将从存储器读取的数据字解码为输出数据字,对要写入存储器的数据字进行编码。

    ECC本身存储在一个闪存中,一个字节相当于128位数据。擦除一个扇区时,相应的ECC字节也被擦除。

    为保证ECC机制的正常运行,写入数据时必须以16字节(128位)或者16的倍数字节一组写入闪存。

  

4、调试模式中的存储器映射

    检查闪存地址0x00000004处包含的值:0x1FFF0000 启动引导模式、0x00000000 用户闪存模式、0x10000000用户SRAM模式