[feat][flash] add flash read write demo
This commit is contained in:
parent
aa5a88a88e
commit
8942c4d341
@ -70,9 +70,8 @@ void bflb_l1c_icache_disable(void)
|
|||||||
L1C_Cache_Enable_Set(0x0f);
|
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)
|
void bflb_l1c_dcache_enable(void)
|
||||||
@ -89,21 +88,21 @@ void bflb_l1c_dcache_clean_all(void)
|
|||||||
|
|
||||||
void bflb_l1c_dcache_invalidate_all(void)
|
void bflb_l1c_dcache_invalidate_all(void)
|
||||||
{
|
{
|
||||||
|
L1C_Cache_Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
void bflb_l1c_dcache_clean_invalidate_all(void)
|
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_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
|
#endif
|
@ -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)
|
@ -6,4 +6,4 @@ find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
|
|||||||
|
|
||||||
sdk_set_main_file(main.c)
|
sdk_set_main_file(main.c)
|
||||||
|
|
||||||
project(flash_secure_read)
|
project(flash_xip_read_write)
|
13
examples/peripherals/flash/flash_xip_read_write/Makefile
Normal file
13
examples/peripherals/flash/flash_xip_read_write/Makefile
Normal 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
|
51
examples/peripherals/flash/flash_xip_read_write/main.c
Normal file
51
examples/peripherals/flash/flash_xip_read_write/main.c
Normal 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) {
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
#set(CONFIG_XXX 1)
|
Reference in New Issue
Block a user