jinglixixi 发表于 2025-9-30 23:15

RA4M2-SENSOR开发板的Memory存储区读写测试

本帖最后由 jinglixixi 于 2025-9-30 23:18 编辑

申请原创


RA4M2-SENSOR开发板允许对Memory存储器进行读写,而Memory存储器则包括Code Flash、Data Flash及SRAM。对于RA4M2-SENSOR 开发板来说,其芯片型号为 R7FA4M2AD3CFL。它的分为两块,一块大小为8Kb,另一块为32Kb,见图1所示。
图1flash存储空间大小

对于code flash来说,其存储区域划分见图2所示。
图2 存储区域划分
为进行code flash读写测试,需使用RASC按图3进行配置并生成KEIL项目工程。
图3 配置处理
在完成配置并生成项目工程后,需为读写code flash添加以下函数:void FLASH_Init(void)
{
      err = R_FLASH_HP_Open(&g_flash0_ctrl,&g_flash0_cfg);
      assert(err == FSP_SUCCESS);
}

void Code_FLASH_Test(void)
{
      err = FSP_SUCCESS;
      uint8_t *p = CODE_FLASH_TEST_ADDR;
      for(uint8_t i = 0;i < CODE_FLASH_TEST_NUM;i++)
      {
                write_buffer = i;
                printf("buffer[ %d ]= %d \n\r",i,write_buffer );      
      }
      
      // 擦除,在写入新数据前必须擦除
      printf("Erase start\n\r");
      __disable_irq();                              // 关闭所有中断
      err = R_FLASH_HP_Erase(&g_flash0_ctrl,CODE_FLASH_TEST_ADDR,1);// 0x00078000地址开始,擦除一个块
      assert(err == FSP_SUCCESS);
      __enable_irq();

      // 写入新数据
      printf("write start\n\r");
         __disable_irq();
      err = R_FLASH_HP_Write(&g_flash0_ctrl, (uint32_t)write_buffer, CODE_FLASH_TEST_ADDR, CODE_FLASH_TEST_NUM);
      assert(err == FSP_SUCCESS);
         __enable_irq();
      
      // 读取指定地址的数据
      printf("read start\n\r");
      for(uint8_t i = 0;i < CODE_FLASH_TEST_NUM;i++)
      {
                read_buffer = *(p + i);
                printf("buffer[ %d ]= %d \n\r",i,read_buffer );      
      }
      
      // 对比写入和读取的数据
      if (0 == memcmp(read_buffer, write_buffer, CODE_FLASH_TEST_NUM))
      {
                printf("Data consistency\n\r");                // 数据一致,读写正确
      }
      else
      {
                printf("Data inconsistency\n\r");               // 数据不一致
                while(1);
      }
}

读写测试的主程序为:void hal_entry(void)
{
         err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
         assert(FSP_SUCCESS == err);      
         FLASH_Init();
         pritf("FLASH test: \n\r");
         Code_FLASH_Test();                        
         while(1);
}
经程序的编译和下载,其程序的测试结果如图4至图6所示。
图4 写入数据

图5 读取数据

图6 数据对比

此外,还可以在DeBug模式下,使用变量和存储器来进行观察。通过指定存储器地址来观察的效果如图7所示,而通过变量来观察的效果则如图8和图9所示。
图7观察存储器内容

图8 观察写入变量

图9 观察读取变量

页: [1]
查看完整版本: RA4M2-SENSOR开发板的Memory存储区读写测试