1.1 Flash and OTP Menory Blocks
本章介绍配置闪存和一次性可编程(OTP)存储器的等待状态和操作模式的正确顺序。它还包括有关Flash和OTP功率模式以及如何通过启用Flash管线模式来提高Flash性能的信息。
1.1.1 Flash Memory
The on-chip flash is uniformly mapped in both program and data memory space.This flash memroy is always enabled and features:
-
多个扇区
可以擦除的最小闪存量是一个扇区。
拥有多个扇区可以使某些扇区保持编程状态,而只擦除特定的扇区。 -
代码安全
闪存受代码安全模块(CSM)的保护。通过将密码编程到闪存中,用户可以防止未经授权的unauthorized人员访问闪存。有关使用代码安全模块的信息,请参见第1.2节。 -
低功耗模式
为了在不使用flash时节省电量,可以使用两种级别的低功耗模式。有关可用flash功率模式的更多信息,请参见第1.1.3节。 -
可配置的等待状态 Configurable wait states
可以根据CPU频率调整可配置的等待状态,以在给定的执行速度下提供最佳性能。 -
增强的性能
提供了闪存管线模式pipeline mode以提高线性代码执行的性能。
1.1.2 OTP Memory
一次性可编程(OTP)存储器的1K x 16块均匀地映射在程序和数据存储空间中。因此,OTP可用于编程数据或代码。与闪存不同,该块只能编程一次,并且不能擦除。
1.1.3 Flash and OTP Power Modes
The following operating states apply to the flash and OTP memory:
- Reset or Sleep State
这是设备重置后的状态。在此状态下,the bank and pump处于睡眠状态(最低功率)。当闪存处于睡眠状态时,读取到闪存或OTP存储器映射区域的CPU数据或读取操作码将自动将电源模式更改为待机状态,然后更改为活动状态。在过渡到活动状态期间,CPU将自动停止。完成向活动状态的转换后,CPU访问将正常完成。 - 待机状态 Standby State
在此状态下,排和泵 the bank and pump 处于待机功率模式状态。与睡眠状态相比,此状态使用更多的功率,但是转换到活动或读取状态所需的时间更短。当闪存处于待机状态时,读取到闪存或OTP存储器映射区域的CPU数据或读取操作码将自动将电源模式更改为活动状态。在过渡到活动状态期间,CPU将自动停止。闪存/ OTP进入活动状态后,CPU访问将正常完成。 - 活动或读取状态
在此状态下,排和泵处于有功功率模式状态(最高功率)。 CPU对闪存/ OTP存储器映射区域的读取或获取访问等待状态由FBANKWAIT和FOTPWAIT寄存器控制。还可以启用称为闪存管线的预取机制,以提高线性代码执行的取回性能。
注:在引导过程中,Boot ROM对位于闪存中的代码安全模块(CSM)密码位置执行虚拟读取。
执行此读取操作以解锁没有密码存储的新设备或已擦除设备,从而可以执行闪存编程或将代码加载到受CSM保护的SARAM中。在已存储密码的设备上,该读取无效,并且CSM保持锁定状态(有关CSM的信息,请参见第1.2节)。读取的结果是,flash将从睡眠(重置)状态转换为活动状态。
Flash/ OTP组和泵始终处于相同的电源模式。有关可用电源状态的图形说明,请参见图1-1。您可以如下更改当前的闪存/ OTP存储器电源状态:
- To move to a lower power state
将PWR模式位从较高功率模式更改为较低功率模式。此更改会立即将闪存/ OTP存储库移至低功耗状态。只能通过运行在Flash / OTP存储器外部的代码访问该寄存器。 - To move to a higher power state
-要从低功耗状态转换到高功耗状态,有两种选择。
1.将FPWR寄存器从较低状态更改为较高状态。 这种访问使闪存/ OTP存储器进入较高状态。
2.通过读取访问或程序操作码提取访问来访问闪存或OTP存储器。此访问将使闪存/ OTP存储器自动进入活动状态。
从低功耗状态转换到高功耗状态时会有延迟。请参见图1-1。需要此延迟才能使Flash稳定在更高功率的模式下。如果在此延迟期间对闪存/ OTP存储器进行任何访问,则CPU会自动停止,直到延迟完成。
延迟的持续时间由FSTDBYWAIT和FACTIVEWAIT寄存器确定。从睡眠状态到待机状态的延迟是由FSTDBYWAIT寄存器确定的计数。从待机状态到活动状态的延迟由FACTIVEWAIT寄存器确定的计数被延迟。 FSTDBYWAIT + FACTIVEWAIT会延迟从睡眠模式(最低功耗)到活动模式(最高功耗)的移动。这些寄存器应保持默认状态。
1.1.3.1 Flash and OTP Performance
CPU对闪存/ OTP的读取或数据获取操作可以采用以下形式之一:
• 32位指令提取
•读取16位或32位数据空间
•16位程序空间读取
一旦闪存处于the active power state,则对存储体存储器映射区域的读取或读取访问可以分类为闪存访问或OTP访问。
主闪存阵列分为行rows和列columns。这些行包含2048位信息。对闪存和OTP的访问是三种类型之一:
1.Flash Memory Random Access 闪存随机存取
对2048位行的第一次访问被视为随机访问。
2.Flash Memory Paged Access 闪存分页访问
虽然对行的第一次访问被认为是随机访问,但同一行中的后续访问被称为分页访问。
可以通过对FBANKWAIT寄存器进行编程来配置随机访问和分页访问的等待状态数。
随机访问使用的等待状态数量由RANDWAIT位控制,而分页访问使用的等待状态数量由PAGEWAIT位控制。 FBANKWAIT寄存器默认为最坏情况下的等待状态计数,因此需要根据CPU时钟频率和闪存的访问时间初始化适当数量的等待状态,以提高性能。当PAGEWAIT位设置为零时,闪存支持0等待访问。假定CPU速度足够低以适应访问时间。要确定随机和分页访问时间要求,请参阅特定设备的数据手册。
3.OTP Access
对OTP的读取或读取访问由FOTPWAIT寄存器中的OTPWAIT位控制。对OTP的访问时间比闪存更长,并且没有分页模式。要确定OTP访问时间要求,请参见特定设备的数据手册。
使用Flash时要记住的其他几点:
•将忽略对闪存或OTP内存映射区域的CPU写入。它们在一个周期内完成。
•固定代码安全模块(CSM)后,从安全区域外部读取闪存/ OTP存储器映射区域的次数与普通访问次数相同。但是,读操作返回零。
•对CSM密码位置的读取被硬连线为16个等待状态。 PAGEWAIT和RANDOMWAIT位对这些位置没有影响。有关CSM的更多信息,请参见第1.2节。
1.1.3.2 Flash Pipeline Mode
闪存通常用于存储应用程序代码。在代码执行期间,除非发生中断,否则将从连续的存储器地址中提取指令。通常,代码中位于顺序地址中的部分构成了应用程序代码的大部分,被称为线性代码。为了提高线性代码执行的性能,已实现了闪存管线模式。默认情况下,禁用闪存管道功能。将FOPT寄存器中的ENPIPE位置1启用此模式。闪存管线模式独立于CPU管线。
从闪存或OTP提取的指令每次访问读取64位。从闪存访问的起始地址会自动与64位边界对齐,以使指令位置在要提取的64位之内。启用闪存流水线模式(见图1-2)后,将从指令提取中读取的64位存储在64位宽的2级深度指令预提取缓冲区中。然后,将该预取缓冲区的内容发送到CPU,以根据需要进行处理。
单个64位访问中最多可以驻留2条32位指令或4条16位指令。大多数C28x指令为16位,因此对于从闪存存储区中提取的每条64位指令,预取缓冲区中最多可能有多达4条指令准备通过CPU处理。在处理这些指令期间,闪存管道会自动启动对闪存存储区的另一次访问,以预取接下来的64位。以这种方式,闪存流水线模式在后台工作,以使指令预取缓冲区保持尽可能满。使用此技术,可以显着提高从闪存或OTP执行顺序代码的整体效率。
仅在由于执行分支,BANZ,调用或循环之类的指令而导致PC中断时,才会中断Flash管道的预取。
发生这种情况时,预取中止,刷新 flush 预取缓冲区的内容。发生这种情况有两种可能的情况:
1.如果目标地址在闪存或OTP内,则预取中止,然后在目标地址处恢复 resume。
2.如果目标地址不在闪存和OTP的范围内,则预取将中止并仅在跳转返回闪存或OTP时才重新开始。
Flash流水线预取机制仅适用于从程序空间program space取指令。从数据存储器data memory和程序存储器program memory读取的数据未利用预取缓冲区功能,因此绕过了预取缓冲区。例如,诸如MAC,DMAC和PREAD之类的指令从程序存储器中读取数据值。发生此读取时,将绕过预取缓冲区,但不会刷新该缓冲区。如果在启动数据读取操作时预取指令已经在进行中,则读取的数据将被暂停直到预取完成。
1.1.3.3 Reserved Locations Within Flash and OTP
将代码和数据分配给 allocate 闪存和OTP存储器时,请记住以下几点:
1.地址位置0x3F 7FF6和0x3F 7FF7保留用于输入Flash跳转指令branch instruction。
当使用从引导到闪存的启动选项时,引导ROM将跳到地址0x3F 7FF6。如果您在此处编写分支指令,则该分支指令会将代码执行重定向到应用程序的入口点。
2.从0x3F 7FF0到0x3F 7FF5的地址保留用于数据变量,并且不包含程序代码。
1.1.3.4 Procedure to Change the Flash Configuration Registers
在闪存配置期间,无法进行对闪存或OTP的访问。这包括仍在CPU管道中的指令,数据读取和指令预取操作。为确保在配置更改期间没有访问发生,对于修改FOPT,FPWR,FBANKWAIT或OTPWAIT寄存器的任何代码,都应遵循图1-3中所示的过程。