[feat][flash] add flash read write demo

This commit is contained in:
jzlv 2022-11-18 17:05:26 +08:00
parent aa5a88a88e
commit 8942c4d341
9 changed files with 80 additions and 7 deletions

View File

@ -70,9 +70,8 @@ void bflb_l1c_icache_disable(void)
L1C_Cache_Enable_Set(0x0f);
}
ATTR_TCM_SECTION void bflb_l1c_icache_invalid_all(void)
void bflb_l1c_icache_invalid_all(void)
{
L1C_Cache_Flush();
}
void bflb_l1c_dcache_enable(void)
@ -89,21 +88,21 @@ void bflb_l1c_dcache_clean_all(void)
void bflb_l1c_dcache_invalidate_all(void)
{
L1C_Cache_Flush();
}
void bflb_l1c_dcache_clean_invalidate_all(void)
{
L1C_Cache_Flush();
}
void bflb_l1c_dcache_clean_range(void *addr, uint32_t size)
{
}
void bflb_l1c_dcache_invalidate_range(void *addr, uint32_t size)
ATTR_TCM_SECTION void bflb_l1c_dcache_invalidate_range(void *addr, uint32_t size)
{
L1C_Cache_Flush();
}
void bflb_l1c_dcache_clean_invalidate_range(void *addr, uint32_t size)
{
}
#endif

View File

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.15)
include(proj.conf)
find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
sdk_set_main_file(main.c)
project(flash_secure_read_write)

View File

@ -6,4 +6,4 @@ find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
sdk_set_main_file(main.c)
project(flash_secure_read)
project(flash_xip_read_write)

View File

@ -0,0 +1,13 @@
SDK_DEMO_PATH ?= .
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../../..
export BL_SDK_BASE
CHIP ?= bl616
BOARD ?= bl616dk
CROSS_COMPILE ?= riscv64-unknown-elf-
# add custom cmake definition
#cmake_definition+=-Dxxx=sss
include $(BL_SDK_BASE)/project.build

View File

@ -0,0 +1,51 @@
#include "bflb_flash.h"
#include "bflb_l1c.h"
#include "board.h"
#define FLASH_TEST_SIZE 1 * 1024 * 1024
int main(void)
{
board_init();
uint8_t write_buf[256];
uint8_t *read_buf;
for (uint16_t i = 0; i < 256; i++) {
write_buf[i] = i;
}
for (uint32_t i = 1; i < (FLASH_TEST_SIZE / 1024); i++) {
printf("test addr:%08x\r\n", (0x00010000 + (i - 1) * 1024));
/* erase 0x00010000 4k flash */
bflb_flash_erase(0x00010000 + (i - 1) * 1024, i * 1024);
/* read 0x00010000 flash data */
read_buf = (uint8_t *)(FLASH_XIP_BASE - 0x2000 + 0x00010000 + (i - 1) * 1024);
bflb_l1c_dcache_invalidate_range(read_buf, 256);
for (uint16_t j = 0; j < 256; j++) {
if (read_buf[j] != 0xff) {
printf("flash test1 fail at %d, expect:%d but with %d\r\n", j, 0xff, read_buf[j]);
while (1) {
}
}
}
/* write 0x00010000 flash data */
bflb_flash_write(0x00010000 + (i - 1) * 1024, write_buf, sizeof(write_buf));
/* read 0x00010000 flash data */
read_buf = (uint8_t *)(FLASH_XIP_BASE - 0x2000 + 0x00010000 + (i - 1) * 1024);
bflb_l1c_dcache_invalidate_range(read_buf, 256);
for (uint16_t j = 0; j < 256; j++) {
if (read_buf[j] != write_buf[j]) {
printf("flash test2 fail at %d, expect:%d but with %d\r\n", j, write_buf[j], read_buf[j]);
while (1) {
}
}
}
}
printf("flash test success\r\n");
while (1) {
}
}

View File

@ -0,0 +1 @@
#set(CONFIG_XXX 1)