打印
[G32A]

G32A1445芯片的Flash模块介绍

[复制链接]
504|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guiyan|  楼主 | 2024-9-9 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 guiyan 于 2024-9-23 09:46 编辑

前言
本文旨在介绍G32A FLASH模块的常用使用功能。
一、组成结构及其用途简介
      组成结构
  • PFlash:Program flash, 8KB Sector
  • CFGNVM :Configurable Nonvolatile memory , 4KB Sector。包含DFlash和EEPROM备份区。
  • CFGRAM
            
      用途简介:
            PFlash:用来存储代码, 并包含16-byte 的Flash配置区域: 0x400 – 0x40F
            DFlash :存储代码或者存储数据
            EEPROM Backup:备份存储EEPROM的数据,掉电后不丢失
            RAM:作为传统RAM使用,例如Program Section command 编程
            EERAM:用作模拟EEPROM,用户可进行单字节读写


二、使用功能介绍            1.编程:通过指令的形式,对Flash模块进行擦除或编程
          命令如下:
*!
* [url=home.php?mod=space&uid=247401]@brief[/url] Operation Commands
*/
#define FTFx_VERIFY_BLOCK                             0x00U
#define FTFx_VERIFY_SECTION                          0x01U
#define FTFx_PROGRAM_CHECK                       0x02U
#define FTFx_READ_RESOURCE                         0x03U
#define FTFx_PROGRAM_LONGWORD             0x06U
#define FTFx_PROGRAM_PHRASE                      0x07U
#define FTFx_ERASE_BLOCK                               0x08U
#define FTFx_ERASE_SECTOR                             0x09U
#define FTFx_PROGRAM_SECTION                    0x0BU
#define FTFx_VERIFY_ALL_BLOCK                      0x40U
#define FTFx_READ_ONCE                                  0x41U
#define FTFx_PROGRAM_ONCE                         0x43U
#define FTFx_ERASE_ALL_BLOCK                       0x44U
#define FTFx_SECURITY_BY_PASS                      0x45U
#define FTFx_PFLASH_SWAP                               0x46U
#define FTFx_ERASE_ALL_BLOCK_UNSECURE  0x49U
#define FTFx_PROGRAM_PARTITION                  0x80U
#define FTFx_SET_EERAM                                      0x81U



      2.只能在RUN模式下,才能进行Flash擦除或编程。而在HSRUN, VLPR模式下,只能读。
            
      3.Flash配置区域

            0x400~0x407:存储器8个字节的后门解密秘钥(backdoor key),用于使能后门解密时临时解密MCU;
            0x408~0x40B:PFlash保护配置;
            0x40C:Flash加密配置;
            0x40D:Flash非易失选项配置字节;
            0x40E:EEPROM保护配置字节;
            0x40F:D-Flash保护配置字节;
            在复位过程中,由硬件自动加载到FLASH模块相应寄存器当中。


      4.只能编程一次的区域
            0x3C0 – 0x3FF区域,存在64-bytes,每个芯片只允许编程一次,且不能擦除,可以自由读取。
            可通过命令FTFx_PROGRAM_ONCE 进行一次编程,通过命令FTFx_READ_ONCE 进行读取。
      5.同时读写操作
            若执行的代码和需要编程/擦除的扇区是属于同一个区域的话,则器件是不允许该操作的。
            详细情况,请参考下图所示:
            
            把执行命令的函数,加载到SRAM中运行。
            这样,在执行命令操作的时候,是在SRAM中读取代码,同时对Pflash/Dflash执行编程或者擦除。
              

            可参考以下示例:
FUNCTION_DEFINITION_AT_RAMSECTION_START
static STATUS_T FLASH_CommandSequence(const FLASH_SSD_CONFIG_T * ssdCfg)
{
    ...
    ...
}
FUNCTION_DEFINITION_AT_RAMSECTION_END


      6.Dflash和EEPROM分区
            Flash模块很重要的特性,就是DE分区。
            在下图所示,可以将CFGNVM的DFlash区域和EEPROM备份区域配置成不同大小。
            若是进行模拟EEPROM分区配置后,则需要把CFGRAM配置成EERAM功能,然后往EERAM进行单字节写入,
            器件会把数据备份到EEPROM备份区。以此,可以实现EEPROM单字节写入的功能。
      
Partition  
Code
Data  flash  
size(KB)
EEPROM   backup  
size(KB)
0x0000
64
0
0x0011
32
32
0x0100
0
64
0x1000
0
64
0x1010
16
48
0x1011
32
32
0x1100
64
0
0x1111
Default
/

三、结语
      关于G32A器件的Flash模块,本节学习内容已介绍完毕。
      若大家发现有趣的知识点或应用,可以在这里分享分享哈!




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝