[fal] using rt-thread raw API instead of std API

This commit is contained in:
Meco Man 2024-11-23 14:38:44 -05:00 committed by Rbb666
parent fbcda2a788
commit 13e0671f65
41 changed files with 621 additions and 652 deletions

View File

@ -16,9 +16,9 @@
#include <sfud.h> #include <sfud.h>
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
extern sfud_flash sfud_norflash0; extern sfud_flash sfud_norflash0;
struct fal_flash_dev nor_flash0 = struct fal_flash_dev nor_flash0 =
@ -30,13 +30,13 @@ struct fal_flash_dev nor_flash0 =
{init, read, write, erase} {init, read, write, erase}
}; };
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
sfud_read(&sfud_norflash0, nor_flash0.addr + offset, size, buf); sfud_read(&sfud_norflash0, nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
if (sfud_write(&sfud_norflash0, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(&sfud_norflash0, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
@ -46,7 +46,7 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
if (sfud_erase(&sfud_norflash0, nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(&sfud_norflash0, nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {

View File

@ -19,9 +19,9 @@
rt_device_t sd_dev; rt_device_t sd_dev;
#define SECTOR_SIZE 512 #define SECTOR_SIZE 512
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
struct fal_flash_dev sd_card = { struct fal_flash_dev sd_card = {
"sdcard0", /* name string match yml file */ "sdcard0", /* name string match yml file */
@ -31,13 +31,13 @@ struct fal_flash_dev sd_card = {
{init, read, write, erase} {init, read, write, erase}
}; };
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
rt_size_t sector_pos; rt_size_t sector_pos;
rt_size_t sector_offset; rt_size_t sector_offset;
rt_size_t remain_size = size; rt_size_t remain_size = size;
rt_size_t req_size; rt_size_t req_size;
rt_align(4) uint8_t buffer[SECTOR_SIZE]; rt_align(4) rt_uint8_t buffer[SECTOR_SIZE];
while (remain_size) while (remain_size)
{ {
@ -54,13 +54,13 @@ static int read(long offset, uint8_t *buf, size_t size)
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
rt_size_t sector_pos; rt_size_t sector_pos;
rt_size_t sector_offset; rt_size_t sector_offset;
rt_size_t remain_size = size; rt_size_t remain_size = size;
rt_size_t req_size; rt_size_t req_size;
rt_align(4) uint8_t buffer[SECTOR_SIZE]; rt_align(4) rt_uint8_t buffer[SECTOR_SIZE];
while (remain_size) while (remain_size)
{ {
@ -79,7 +79,7 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
return size; return size;
} }
@ -93,7 +93,7 @@ static int init(void)
} }
rt_device_open(sd_dev, RT_DEVICE_OFLAG_RDWR); rt_device_open(sd_dev, RT_DEVICE_OFLAG_RDWR);
struct dev_sdmmc *dev_sdmmc = (struct dev_sdmmc *)sd_dev->user_data; struct dev_sdmmc *dev_sdmmc = (struct dev_sdmmc *)sd_dev->user_data;
sd_card.len = (size_t)dev_sdmmc->geometry.bytes_per_sector * dev_sdmmc->geometry.sector_count; sd_card.len = (rt_size_t)dev_sdmmc->geometry.bytes_per_sector * dev_sdmmc->geometry.sector_count;
sd_card.blk_size = dev_sdmmc->geometry.bytes_per_sector; sd_card.blk_size = dev_sdmmc->geometry.bytes_per_sector;
return 0; return 0;

View File

@ -21,9 +21,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev ext_nor_flash0 = struct fal_flash_dev ext_nor_flash0 =
@ -51,19 +51,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -72,10 +72,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -20,9 +20,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev ext_nor_flash0 = struct fal_flash_dev ext_nor_flash0 =
@ -50,19 +50,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -71,10 +71,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -20,9 +20,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev ext_nor_flash0 = struct fal_flash_dev ext_nor_flash0 =
@ -50,19 +50,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -71,10 +71,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -20,9 +20,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev ext_nor_flash0 = struct fal_flash_dev ext_nor_flash0 =
@ -50,19 +50,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -71,10 +71,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -25,9 +25,9 @@
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
@ -57,19 +57,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, ext_nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, ext_nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -78,10 +78,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, ext_nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -42,9 +42,9 @@
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -85,9 +85,9 @@ FAL_RAMFUNC static int init(void)
{ {
s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U; s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U;
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -104,12 +104,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -126,7 +126,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -151,21 +151,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -214,17 +214,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -42,9 +42,9 @@
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -85,9 +85,9 @@ FAL_RAMFUNC static int init(void)
{ {
s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U; s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U;
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -104,12 +104,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -126,7 +126,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -151,21 +151,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -214,17 +214,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -42,9 +42,9 @@
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -85,9 +85,9 @@ FAL_RAMFUNC static int init(void)
{ {
s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U; s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U;
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -104,12 +104,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -126,7 +126,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -151,21 +151,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -214,17 +214,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -42,9 +42,9 @@
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -85,9 +85,9 @@ FAL_RAMFUNC static int init(void)
{ {
s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U; s_flashcfg.device_info.clk_freq_for_non_read_cmd = 0U;
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -104,12 +104,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -126,7 +126,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -151,21 +151,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -214,17 +214,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -56,9 +56,9 @@ static rt_base_t s_interrupt_level;
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -98,9 +98,9 @@ FAL_RAMFUNC static int init(void)
else else
{ {
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -117,12 +117,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -139,7 +139,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -164,21 +164,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -227,17 +227,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -57,9 +57,9 @@ static rt_base_t s_interrupt_level;
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -99,9 +99,9 @@ FAL_RAMFUNC static int init(void)
else else
{ {
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -118,12 +118,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -140,7 +140,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -165,21 +165,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -228,17 +228,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -57,9 +57,9 @@ static rt_base_t s_interrupt_level;
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -99,9 +99,9 @@ FAL_RAMFUNC static int init(void)
else else
{ {
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -118,12 +118,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -140,7 +140,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -165,21 +165,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -228,17 +228,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -57,9 +57,9 @@ static rt_base_t s_interrupt_level;
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -99,9 +99,9 @@ FAL_RAMFUNC static int init(void)
else else
{ {
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -118,12 +118,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -140,7 +140,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -165,21 +165,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -228,17 +228,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -57,9 +57,9 @@ static rt_base_t s_interrupt_level;
***************************************************************************************************/ ***************************************************************************************************/
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static xpi_nor_config_t s_flashcfg; static xpi_nor_config_t s_flashcfg;
@ -99,9 +99,9 @@ FAL_RAMFUNC static int init(void)
else else
{ {
/* update the flash chip information */ /* update the flash chip information */
uint32_t sector_size; rt_uint32_t sector_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
uint32_t flash_size; rt_uint32_t flash_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_total_size, &flash_size);
nor_flash0.blk_size = sector_size; nor_flash0.blk_size = sector_size;
nor_flash0.len = flash_size; nor_flash0.len = flash_size;
@ -118,12 +118,12 @@ FAL_RAMFUNC static int init(void)
* @param size Size of data to be read * @param size Size of data to be read
* @return actual read bytes * @return actual read bytes
*/ */
FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size) FAL_RAMFUNC static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t flash_addr = nor_flash0.addr + offset; rt_uint32_t flash_addr = nor_flash0.addr + offset;
uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr); rt_uint32_t aligned_start = HPM_L1C_CACHELINE_ALIGN_DOWN(flash_addr);
uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size); rt_uint32_t aligned_end = HPM_L1C_CACHELINE_ALIGN_UP(flash_addr + size);
uint32_t aligned_size = aligned_end - aligned_start; rt_uint32_t aligned_size = aligned_end - aligned_start;
rt_base_t level = rt_hw_interrupt_disable(); rt_base_t level = rt_hw_interrupt_disable();
l1c_dc_invalidate(aligned_start, aligned_size); l1c_dc_invalidate(aligned_start, aligned_size);
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
@ -140,7 +140,7 @@ FAL_RAMFUNC static int read(long offset, uint8_t *buf, size_t size)
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *buf, size_t size) FAL_RAMFUNC static int write_unaligned_page_data(long offset, const rt_uint32_t *buf, rt_size_t size)
{ {
hpm_stat_t status; hpm_stat_t status;
@ -165,21 +165,21 @@ FAL_RAMFUNC static int write_unaligned_page_data(long offset, const uint32_t *bu
* @param size Size of data to be written * @param size Size of data to be written
* @return actual size of written data or error code * @return actual size of written data or error code
*/ */
FAL_RAMFUNC static int write(long offset, const uint8_t *buf, size_t size) FAL_RAMFUNC static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t *src = NULL; rt_uint32_t *src = NULL;
uint32_t buf_32[64]; rt_uint32_t buf_32[64];
uint32_t write_size; rt_uint32_t write_size;
size_t remaining_size = size; rt_size_t remaining_size = size;
int ret = (int)size; int ret = (int)size;
uint32_t page_size; rt_uint32_t page_size;
rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size); rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_page_size, &page_size);
uint32_t offset_in_page = offset % page_size; rt_uint32_t offset_in_page = offset % page_size;
if (offset_in_page != 0) if (offset_in_page != 0)
{ {
uint32_t write_size_in_page = page_size - offset_in_page; rt_uint32_t write_size_in_page = page_size - offset_in_page;
uint32_t write_page_size = MIN(write_size_in_page, size); rt_uint32_t write_page_size = MIN(write_size_in_page, size);
(void) rt_memcpy(buf_32, buf, write_page_size); (void) rt_memcpy(buf_32, buf, write_page_size);
write_size = write_unaligned_page_data(offset, buf_32, write_page_size); write_size = write_unaligned_page_data(offset, buf_32, write_page_size);
if (write_size < 0) if (write_size < 0)
@ -228,17 +228,17 @@ write_quit:
* @ret RT_EOK Erase operation is successful * @ret RT_EOK Erase operation is successful
* @retval -RT_ERROR Erase operation failed * @retval -RT_ERROR Erase operation failed
*/ */
FAL_RAMFUNC static int erase(long offset, size_t size) FAL_RAMFUNC static int erase(long offset, rt_size_t size)
{ {
uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U); rt_uint32_t aligned_size = (size + nor_flash0.blk_size - 1U) & ~(nor_flash0.blk_size - 1U);
hpm_stat_t status; hpm_stat_t status;
int ret = (int)size; int ret = (int)size;
uint32_t block_size; rt_uint32_t block_size;
uint32_t sector_size; rt_uint32_t sector_size;
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_sector_size, &sector_size);
(void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size); (void) rom_xpi_nor_get_property(BOARD_APP_XPI_NOR_XPI_BASE, &s_flashcfg, xpi_nor_property_block_size, &block_size);
uint32_t erase_unit; rt_uint32_t erase_unit;
while (aligned_size > 0) while (aligned_size > 0)
{ {
FAL_ENTER_CRITICAL(); FAL_ENTER_CRITICAL();

View File

@ -35,8 +35,8 @@ static void configure_memory()
#define QSPI_STD_CMD_RSTEN 0x66 #define QSPI_STD_CMD_RSTEN 0x66
#define QSPI_STD_CMD_RST 0x99 #define QSPI_STD_CMD_RST 0x99
uint8_t temporary = 0x40; rt_uint8_t temporary = 0x40;
uint32_t err_code; rt_uint32_t err_code;
nrf_qspi_cinstr_conf_t cinstr_cfg = nrf_qspi_cinstr_conf_t cinstr_cfg =
{ {
.opcode = QSPI_STD_CMD_RSTEN, .opcode = QSPI_STD_CMD_RSTEN,
@ -75,7 +75,7 @@ static void configure_memory()
} }
static int init(void) static int init(void)
{ {
uint32_t err_code; rt_uint32_t err_code;
nrfx_qspi_config_t config = NRFX_QSPI_DEFAULT_CONFIG(BSP_QSPI_SCK_PIN, BSP_QSPI_CSN_PIN, nrfx_qspi_config_t config = NRFX_QSPI_DEFAULT_CONFIG(BSP_QSPI_SCK_PIN, BSP_QSPI_CSN_PIN,
BSP_QSPI_IO0_PIN, BSP_QSPI_IO1_PIN, BSP_QSPI_IO2_PIN, BSP_QSPI_IO3_PIN); BSP_QSPI_IO0_PIN, BSP_QSPI_IO1_PIN, BSP_QSPI_IO2_PIN, BSP_QSPI_IO3_PIN);
@ -89,9 +89,9 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t err_code; rt_uint32_t err_code;
m_finished = false; m_finished = false;
err_code = nrfx_qspi_read(buf, size, offset); err_code = nrfx_qspi_read(buf, size, offset);
WAIT_FOR_PERIPH(); WAIT_FOR_PERIPH();
@ -106,9 +106,9 @@ static int read(long offset, uint8_t *buf, size_t size)
} }
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t err_code; rt_uint32_t err_code;
m_finished = false; m_finished = false;
err_code = nrfx_qspi_write(buf, size, offset); err_code = nrfx_qspi_write(buf, size, offset);
WAIT_FOR_PERIPH(); WAIT_FOR_PERIPH();
@ -123,9 +123,9 @@ static int write(long offset, const uint8_t *buf, size_t size)
} }
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
uint32_t err_code; rt_uint32_t err_code;
m_finished = false; m_finished = false;
err_code = nrfx_qspi_erase(NRF_QSPI_ERASE_LEN_64KB, offset); err_code = nrfx_qspi_erase(NRF_QSPI_ERASE_LEN_64KB, offset);
WAIT_FOR_PERIPH(); WAIT_FOR_PERIPH();

View File

@ -36,7 +36,7 @@ static const struct fal_partition *part = NULL;
* *
* @return result * @return result
*/ */
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) { EfErrCode ef_port_init(ef_env const **default_env, rt_size_t *default_env_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
*default_env = default_env_set; *default_env = default_env_set;
@ -60,10 +60,10 @@ EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode ef_port_read(rt_uint32_t addr, rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
fal_partition_read(part, addr, (uint8_t *)buf, size); fal_partition_read(part, addr, (rt_uint8_t *)buf, size);
return result; return result;
} }
@ -78,7 +78,7 @@ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode ef_port_erase(rt_uint32_t addr, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
/* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */
@ -102,10 +102,10 @@ EfErrCode ef_port_erase(uint32_t addr, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode ef_port_write(rt_uint32_t addr, const rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) if (fal_partition_write(part, addr, (rt_uint8_t *)buf, size) < 0)
{ {
result = EF_WRITE_ERR; result = EF_WRITE_ERR;
} }

View File

@ -26,7 +26,7 @@ static int fal_test(const char *partiton_name)
{ {
int ret; int ret;
int i, j, len; int i, j, len;
uint8_t buf[BUF_SIZE]; rt_uint8_t buf[BUF_SIZE];
const struct fal_flash_dev *flash_dev = RT_NULL; const struct fal_flash_dev *flash_dev = RT_NULL;
const struct fal_partition *partition = RT_NULL; const struct fal_partition *partition = RT_NULL;
@ -241,7 +241,7 @@ static void easyflash_sample(void)
/* easyflash init */ /* easyflash init */
if(easyflash_init() == EF_NO_ERR) if(easyflash_init() == EF_NO_ERR)
{ {
uint32_t i_boot_times = NULL; rt_uint32_t i_boot_times = NULL;
char *c_old_boot_times, c_new_boot_times[11] = {0}; char *c_old_boot_times, c_new_boot_times[11] = {0};
/* get the boot count number from Env */ /* get the boot count number from Env */

View File

@ -16,9 +16,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev w25q128 = struct fal_flash_dev w25q128 =
@ -46,19 +46,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, w25q128.addr + offset, size, buf); sfud_read(sfud_dev, w25q128.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, w25q128.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, w25q128.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -67,10 +67,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, w25q128.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, w25q128.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -57,7 +57,7 @@ static const struct fal_partition *part = NULL;
* *
* @return result * @return result
*/ */
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) { EfErrCode ef_port_init(ef_env const **default_env, rt_size_t *default_env_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
*default_env = default_env_set; *default_env = default_env_set;
@ -81,10 +81,10 @@ EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode ef_port_read(rt_uint32_t addr, rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
fal_partition_read(part, addr, (uint8_t *)buf, size); fal_partition_read(part, addr, (rt_uint8_t *)buf, size);
return result; return result;
} }
@ -99,7 +99,7 @@ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode ef_port_erase(rt_uint32_t addr, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
/* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */
@ -123,10 +123,10 @@ EfErrCode ef_port_erase(uint32_t addr, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode ef_port_write(rt_uint32_t addr, const rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) if (fal_partition_write(part, addr, (rt_uint8_t *)buf, size) < 0)
{ {
result = EF_WRITE_ERR; result = EF_WRITE_ERR;
} }

View File

@ -16,9 +16,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev w25q128 = struct fal_flash_dev w25q128 =
@ -46,19 +46,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, w25q128.addr + offset, size, buf); sfud_read(sfud_dev, w25q128.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, w25q128.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, w25q128.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -67,10 +67,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, w25q128.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, w25q128.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -57,7 +57,7 @@ static const struct fal_partition *part = NULL;
* *
* @return result * @return result
*/ */
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) { EfErrCode ef_port_init(ef_env const **default_env, rt_size_t *default_env_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
*default_env = default_env_set; *default_env = default_env_set;
@ -81,10 +81,10 @@ EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode ef_port_read(rt_uint32_t addr, rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
fal_partition_read(part, addr, (uint8_t *)buf, size); fal_partition_read(part, addr, (rt_uint8_t *)buf, size);
return result; return result;
} }
@ -99,7 +99,7 @@ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode ef_port_erase(rt_uint32_t addr, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
/* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */
@ -123,10 +123,10 @@ EfErrCode ef_port_erase(uint32_t addr, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode ef_port_write(rt_uint32_t addr, const rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) if (fal_partition_write(part, addr, (rt_uint8_t *)buf, size) < 0)
{ {
result = EF_WRITE_ERR; result = EF_WRITE_ERR;
} }

View File

@ -16,9 +16,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev w25q64 = struct fal_flash_dev w25q64 =
@ -46,19 +46,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, w25q64.addr + offset, size, buf); sfud_read(sfud_dev, w25q64.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, w25q64.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, w25q64.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -67,10 +67,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, w25q64.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, w25q64.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -55,7 +55,7 @@ static const struct fal_partition *part = NULL;
* *
* @return result * @return result
*/ */
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) { EfErrCode ef_port_init(ef_env const **default_env, rt_size_t *default_env_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
*default_env = default_env_set; *default_env = default_env_set;
@ -79,10 +79,10 @@ EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode ef_port_read(rt_uint32_t addr, rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
fal_partition_read(part, addr, (uint8_t *)buf, size); fal_partition_read(part, addr, (rt_uint8_t *)buf, size);
return result; return result;
} }
@ -97,7 +97,7 @@ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode ef_port_erase(rt_uint32_t addr, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
/* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */
@ -121,10 +121,10 @@ EfErrCode ef_port_erase(uint32_t addr, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode ef_port_write(rt_uint32_t addr, const rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) if (fal_partition_write(part, addr, (rt_uint8_t *)buf, size) < 0)
{ {
result = EF_WRITE_ERR; result = EF_WRITE_ERR;
} }

View File

@ -35,9 +35,9 @@
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
struct fal_flash_dev nor_flash1 = struct fal_flash_dev nor_flash1 =
{ {
@ -73,19 +73,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, nor_flash1.addr + offset, size, buf); sfud_read(sfud_dev, nor_flash1.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, nor_flash1.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, nor_flash1.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -94,10 +94,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, nor_flash1.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, nor_flash1.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -37,7 +37,7 @@ static const struct fal_partition *part = NULL;
* *
* @return result * @return result
*/ */
EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) { EfErrCode ef_port_init(ef_env const **default_env, rt_size_t *default_env_size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
*default_env = default_env_set; *default_env = default_env_set;
@ -61,10 +61,10 @@ EfErrCode ef_port_init(ef_env const **default_env, size_t *default_env_size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode ef_port_read(rt_uint32_t addr, rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
fal_partition_read(part, addr, (uint8_t *)buf, size); fal_partition_read(part, addr, (rt_uint8_t *)buf, size);
return result; return result;
} }
@ -79,7 +79,7 @@ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode ef_port_erase(rt_uint32_t addr, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
/* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */
@ -103,10 +103,10 @@ EfErrCode ef_port_erase(uint32_t addr, size_t size) {
* *
* @return result * @return result
*/ */
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode ef_port_write(rt_uint32_t addr, const rt_uint32_t *buf, rt_size_t size) {
EfErrCode result = EF_NO_ERR; EfErrCode result = EF_NO_ERR;
if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) if (fal_partition_write(part, addr, (rt_uint8_t *)buf, size) < 0)
{ {
result = EF_WRITE_ERR; result = EF_WRITE_ERR;
} }

View File

@ -29,14 +29,14 @@ static int fal_sfud_init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
sfud_read(&sfud_norflash0, nor_flash0.addr + offset, size, buf); sfud_read(&sfud_norflash0, nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
if (sfud_write(&sfud_norflash0, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(&sfud_norflash0, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
@ -46,7 +46,7 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
if (sfud_erase(&sfud_norflash0, nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(&sfud_norflash0, nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {

View File

@ -13,10 +13,10 @@
#include "yc_qspi.h" #include "yc_qspi.h"
#include "rtdbg.h" #include "rtdbg.h"
#define FLASH_START_ADRESS ((uint32_t)0x1000000) #define FLASH_START_ADRESS ((rt_uint32_t)0x1000000)
#define FLASH_SIZE ((uint32_t)4 * 1024 * 1024) #define FLASH_SIZE ((rt_uint32_t)4 * 1024 * 1024)
#define FLASH_BLOCK_SIZE ((uint32_t)512) #define FLASH_BLOCK_SIZE ((rt_uint32_t)512)
#define FLASH_END_ADDRESS ((uint32_t)(FLASH_START_ADRESS + FLASH_SIZE)) #define FLASH_END_ADDRESS ((rt_uint32_t)(FLASH_START_ADRESS + FLASH_SIZE))
#define FLASH_PAGE_NBPERBANK 256 #define FLASH_PAGE_NBPERBANK 256
#define FLASH_BANK_NUMBER 2 #define FLASH_BANK_NUMBER 2
#define FLASH_PAGE_SIZE 256 #define FLASH_PAGE_SIZE 256
@ -26,9 +26,9 @@
#else #else
#define YC3122_FLASH_DEBUG(...) #define YC3122_FLASH_DEBUG(...)
#endif #endif
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t addr = yc3122_onchip_flash.addr + offset; rt_uint32_t addr = yc3122_onchip_flash.addr + offset;
if ((addr + size) > FLASH_END_ADDRESS) if ((addr + size) > FLASH_END_ADDRESS)
{ {
@ -40,9 +40,9 @@ static int read(long offset, uint8_t *buf, size_t size)
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
uint32_t addr = yc3122_onchip_flash.addr + offset; rt_uint32_t addr = yc3122_onchip_flash.addr + offset;
if ((addr + size) > FLASH_END_ADDRESS) if ((addr + size) > FLASH_END_ADDRESS)
{ {
@ -54,14 +54,14 @@ static int write(long offset, const uint8_t *buf, size_t size)
return -1; return -1;
} }
YC3122_FLASH_DEBUG("w_ addr:0x%x,size:0x%x\n", addr, size); YC3122_FLASH_DEBUG("w_ addr:0x%x,size:0x%x\n", addr, size);
qspi_flash_write(addr, (uint8_t *)buf, size); qspi_flash_write(addr, (rt_uint8_t *)buf, size);
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
uint32_t addr = yc3122_onchip_flash.addr + offset; rt_uint32_t addr = yc3122_onchip_flash.addr + offset;
if ((addr + size) > FLASH_END_ADDRESS || addr % 0x100 != 0) if ((addr + size) > FLASH_END_ADDRESS || addr % 0x100 != 0)
{ {
YC3122_FLASH_DEBUG("ERROR: erase outrange flash size! addr is (0x%p)\n", (void *)(addr + size)); YC3122_FLASH_DEBUG("ERROR: erase outrange flash size! addr is (0x%p)\n", (void *)(addr + size));
@ -72,7 +72,7 @@ static int erase(long offset, size_t size)
{ {
YC3122_FLASH_DEBUG("ERROR: erase addr is not page alignment\n"); YC3122_FLASH_DEBUG("ERROR: erase addr is not page alignment\n");
} }
for (uint32_t i = 0; i < size; i += 256) for (rt_uint32_t i = 0; i < size; i += 256)
qspi_flash_pageerase(addr + i); qspi_flash_pageerase(addr + i);
return size; return size;
} }

View File

@ -5,14 +5,10 @@ menuconfig RT_USING_FAL
default n default n
if RT_USING_FAL if RT_USING_FAL
config FAL_DEBUG_CONFIG config FAL_USING_DEBUG
bool "Enable debug log output" bool "Enable debug log output"
default y default y if RT_USING_DEBUG
default n
config FAL_DEBUG
int
default 1 if FAL_DEBUG_CONFIG
default 0
config FAL_PART_HAS_TABLE_CFG config FAL_PART_HAS_TABLE_CFG
bool "FAL partition table config has defined on 'fal_cfg.h'" bool "FAL partition table config has defined on 'fal_cfg.h'"

View File

@ -25,7 +25,7 @@ const struct fal_partition *fal_partition_find(const char *name)
## 获取分区表 ## 获取分区表
```C ```C
const struct fal_partition *fal_get_partition_table(size_t *len) const struct fal_partition *fal_get_partition_table(rt_size_t *len)
``` ```
| 参数 | 描述 | | 参数 | 描述 |
@ -38,7 +38,7 @@ const struct fal_partition *fal_get_partition_table(size_t *len)
FAL 初始化时会自动装载默认分区表。使用该设置将临时修改分区表,重启后会 **丢失** 该设置 FAL 初始化时会自动装载默认分区表。使用该设置将临时修改分区表,重启后会 **丢失** 该设置
```C ```C
void fal_set_partition_table_temp(struct fal_partition *table, size_t len) void fal_set_partition_table_temp(struct fal_partition *table, rt_size_t len)
``` ```
| 参数 | 描述 | | 参数 | 描述 |
@ -49,7 +49,7 @@ void fal_set_partition_table_temp(struct fal_partition *table, size_t len)
## 从分区读取数据 ## 从分区读取数据
```C ```C
int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t *buf, size_t size) int fal_partition_read(const struct fal_partition *part, rt_uint32_t addr, rt_uint8_t *buf, rt_size_t size)
``` ```
| 参数 | 描述 | | 参数 | 描述 |
@ -63,7 +63,7 @@ int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t
## 往分区写入数据 ## 往分区写入数据
```C ```C
int fal_partition_write(const struct fal_partition *part, uint32_t addr, const uint8_t *buf, size_t size) int fal_partition_write(const struct fal_partition *part, rt_uint32_t addr, const rt_uint8_t *buf, rt_size_t size)
``` ```
| 参数 | 描述 | | 参数 | 描述 |
@ -77,7 +77,7 @@ int fal_partition_write(const struct fal_partition *part, uint32_t addr, const u
## 擦除分区数据 ## 擦除分区数据
```C ```C
int fal_partition_erase(const struct fal_partition *part, uint32_t addr, size_t size) int fal_partition_erase(const struct fal_partition *part, rt_uint32_t addr, rt_size_t size)
``` ```
| 参数 | 描述 | | 参数 | 描述 |

View File

@ -25,7 +25,7 @@ const struct fal_partition *fal_partition_find(const char *name)
## Get the partition table ## Get the partition table
```C ```C
const struct fal_partition *fal_get_partition_table(size_t *len) const struct fal_partition *fal_get_partition_table(rt_size_t *len)
``` ```
| Parameters | Description | | Parameters | Description |
@ -38,7 +38,7 @@ const struct fal_partition *fal_get_partition_table(size_t *len)
The default partition table will be automatically loaded when FAL is initialized. Using this setting will temporarily modify the partition table and will **lost** this setting after restarting The default partition table will be automatically loaded when FAL is initialized. Using this setting will temporarily modify the partition table and will **lost** this setting after restarting
```C ```C
void fal_set_partition_table_temp(struct fal_partition *table, size_t len) void fal_set_partition_table_temp(struct fal_partition *table, rt_size_t len)
``` ```
| Parameters | Description | | Parameters | Description |
@ -49,7 +49,7 @@ void fal_set_partition_table_temp(struct fal_partition *table, size_t len)
## Read data from partition ## Read data from partition
```C ```C
int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t *buf, size_t size) int fal_partition_read(const struct fal_partition *part, rt_uint32_t addr, rt_uint8_t *buf, rt_size_t size)
``` ```
| Parameters | Description | | Parameters | Description |
@ -63,7 +63,7 @@ int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t
## Write data to partition ## Write data to partition
```C ```C
int fal_partition_write(const struct fal_partition *part, uint32_t addr, const uint8_t *buf, size_t size) int fal_partition_write(const struct fal_partition *part, rt_uint32_t addr, const rt_uint8_t *buf, rt_size_t size)
``` ```
| Parameters | Description | | Parameters | Description |
@ -77,7 +77,7 @@ int fal_partition_write(const struct fal_partition *part, uint32_t addr, const u
## Erase partition data ## Erase partition data
```C ```C
int fal_partition_erase(const struct fal_partition *part, uint32_t addr, size_t size) int fal_partition_erase(const struct fal_partition *part, rt_uint32_t addr, rt_size_t size)
``` ```
| Parameters | Description | | Parameters | Description |

View File

@ -56,7 +56,7 @@ const struct fal_partition *fal_partition_find(const char *name);
* *
* @return partition table * @return partition table
*/ */
const struct fal_partition *fal_get_partition_table(size_t *len); const struct fal_partition *fal_get_partition_table(rt_size_t *len);
/** /**
* set partition table temporarily * set partition table temporarily
@ -65,7 +65,7 @@ const struct fal_partition *fal_get_partition_table(size_t *len);
* @param table partition table * @param table partition table
* @param len partition table length * @param len partition table length
*/ */
void fal_set_partition_table_temp(struct fal_partition *table, size_t len); void fal_set_partition_table_temp(struct fal_partition *table, rt_size_t len);
/** /**
* read data from partition * read data from partition
@ -78,7 +78,7 @@ void fal_set_partition_table_temp(struct fal_partition *table, size_t len);
* @return >= 0: successful read data size * @return >= 0: successful read data size
* -1: error * -1: error
*/ */
int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t *buf, size_t size); int fal_partition_read(const struct fal_partition *part, rt_uint32_t addr, rt_uint8_t *buf, rt_size_t size);
/** /**
* write data to partition * write data to partition
@ -91,7 +91,7 @@ int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t
* @return >= 0: successful write data size * @return >= 0: successful write data size
* -1: error * -1: error
*/ */
int fal_partition_write(const struct fal_partition *part, uint32_t addr, const uint8_t *buf, size_t size); int fal_partition_write(const struct fal_partition *part, rt_uint32_t addr, const rt_uint8_t *buf, rt_size_t size);
/** /**
* erase partition data * erase partition data
@ -103,7 +103,7 @@ int fal_partition_write(const struct fal_partition *part, uint32_t addr, const u
* @return >= 0: successful erased data size * @return >= 0: successful erased data size
* -1: error * -1: error
*/ */
int fal_partition_erase(const struct fal_partition *part, uint32_t addr, size_t size); int fal_partition_erase(const struct fal_partition *part, rt_uint32_t addr, rt_size_t size);
/** /**
* erase partition all data * erase partition all data

View File

@ -11,63 +11,8 @@
#ifndef _FAL_DEF_H_ #ifndef _FAL_DEF_H_
#define _FAL_DEF_H_ #define _FAL_DEF_H_
#include <stdint.h>
#include <stdio.h>
#include <rtthread.h> #include <rtthread.h>
#define FAL_PRINTF rt_kprintf
#define FAL_MALLOC rt_malloc
#define FAL_CALLOC rt_calloc
#define FAL_REALLOC rt_realloc
#define FAL_FREE rt_free
#ifndef FAL_DEBUG
#define FAL_DEBUG 0
#endif
#if FAL_DEBUG
#ifdef assert
#undef assert
#endif
#define assert(EXPR) \
if (!(EXPR)) \
{ \
FAL_PRINTF("(%s) has assert failed at %s.\n", #EXPR, __FUNCTION__); \
while (1); \
}
/* debug level log */
#ifdef log_d
#undef log_d
#endif
#define log_d(...) FAL_PRINTF("[D/FAL] (%s:%d) ", __FUNCTION__, __LINE__); FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\n")
#else
#ifdef assert
#undef assert
#endif
#define assert(EXPR) ((void)0);
/* debug level log */
#ifdef log_d
#undef log_d
#endif
#define log_d(...)
#endif /* FAL_DEBUG */
/* error level log */
#ifdef log_e
#undef log_e
#endif
#define log_e(...) FAL_PRINTF("\033[31;22m[E/FAL] (%s:%d) ", __FUNCTION__, __LINE__);FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\033[0m\n")
/* info level log */
#ifdef log_i
#undef log_i
#endif
#define log_i(...) FAL_PRINTF("\033[32;22m[I/FAL] "); FAL_PRINTF(__VA_ARGS__);FAL_PRINTF("\033[0m\n")
/* FAL flash and partition device name max length */ /* FAL flash and partition device name max length */
#ifndef FAL_DEV_NAME_MAX #ifndef FAL_DEV_NAME_MAX
#define FAL_DEV_NAME_MAX 24 #define FAL_DEV_NAME_MAX 24
@ -79,8 +24,8 @@ if (!(EXPR)) \
struct flash_blk struct flash_blk
{ {
size_t size; rt_size_t size;
size_t count; rt_size_t count;
}; };
struct fal_flash_dev struct fal_flash_dev
@ -88,23 +33,23 @@ struct fal_flash_dev
char name[FAL_DEV_NAME_MAX]; char name[FAL_DEV_NAME_MAX];
/* flash device start address and len */ /* flash device start address and len */
uint32_t addr; rt_uint32_t addr;
size_t len; rt_size_t len;
/* the block size in the flash for erase minimum granularity */ /* the block size in the flash for erase minimum granularity */
size_t blk_size; rt_size_t blk_size;
struct struct
{ {
int (*init)(void); int (*init)(void);
int (*read)(long offset, uint8_t *buf, size_t size); int (*read)(long offset, rt_uint8_t *buf, rt_size_t size);
int (*write)(long offset, const uint8_t *buf, size_t size); int (*write)(long offset, const rt_uint8_t *buf, rt_size_t size);
int (*erase)(long offset, size_t size); int (*erase)(long offset, rt_size_t size);
} ops; } ops;
/* write minimum granularity, unit: bit. /* write minimum granularity, unit: bit.
1(nor flash)/ 8(stm32f2/f4)/ 32(stm32f1)/ 64(stm32l4) 1(nor flash)/ 8(stm32f2/f4)/ 32(stm32f1)/ 64(stm32l4)
0 will not take effect. */ 0 will not take effect. */
size_t write_gran; rt_size_t write_gran;
struct flash_blk blocks[FAL_DEV_BLK_MAX]; struct flash_blk blocks[FAL_DEV_BLK_MAX];
}; };
typedef struct fal_flash_dev *fal_flash_dev_t; typedef struct fal_flash_dev *fal_flash_dev_t;
@ -114,7 +59,7 @@ typedef struct fal_flash_dev *fal_flash_dev_t;
*/ */
struct fal_partition struct fal_partition
{ {
uint32_t magic_word; rt_uint32_t magic_word;
/* partition name */ /* partition name */
char name[FAL_DEV_NAME_MAX]; char name[FAL_DEV_NAME_MAX];
@ -123,9 +68,9 @@ struct fal_partition
/* partition offset address on flash device */ /* partition offset address on flash device */
long offset; long offset;
size_t len; rt_size_t len;
uint32_t reserved; rt_uint32_t reserved;
}; };
typedef struct fal_partition *fal_partition_t; typedef struct fal_partition *fal_partition_t;

View File

@ -12,7 +12,7 @@
- `static int init(void)`**可选** 的初始化操作 - `static int init(void)`**可选** 的初始化操作
- `static int read(long offset, uint8_t *buf, size_t size)`:读取操作 - `static int read(long offset, rt_uint8_t *buf, rt_size_t size)`:读取操作
|参数 |描述| |参数 |描述|
|:----- |:----| |:----- |:----|
@ -21,7 +21,7 @@
|size |待读取数据的大小| |size |待读取数据的大小|
|return |返回实际读取的数据大小| |return |返回实际读取的数据大小|
- `static int write(long offset, const uint8_t *buf, size_t size)` :写入操作 - `static int write(long offset, const rt_uint8_t *buf, rt_size_t size)` :写入操作
| 参数 | 描述 | | 参数 | 描述 |
| :----- | :------------------------ | | :----- | :------------------------ |
@ -30,7 +30,7 @@
| size | 待写入数据的大小 | | size | 待写入数据的大小 |
| return | 返回实际写入的数据大小 | | return | 返回实际写入的数据大小 |
- `static int erase(long offset, size_t size)` :擦除操作 - `static int erase(long offset, rt_size_t size)` :擦除操作
| 参数 | 描述 | | 参数 | 描述 |
| :----- | :------------------------ | | :----- | :------------------------ |

View File

@ -21,9 +21,9 @@
#endif #endif
static int init(void); static int init(void);
static int read(long offset, uint8_t *buf, size_t size); static int read(long offset, rt_uint8_t *buf, rt_size_t size);
static int write(long offset, const uint8_t *buf, size_t size); static int write(long offset, const rt_uint8_t *buf, rt_size_t size);
static int erase(long offset, size_t size); static int erase(long offset, rt_size_t size);
static sfud_flash_t sfud_dev = NULL; static sfud_flash_t sfud_dev = NULL;
struct fal_flash_dev nor_flash0 = struct fal_flash_dev nor_flash0 =
@ -60,19 +60,19 @@ static int init(void)
return 0; return 0;
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
sfud_read(sfud_dev, nor_flash0.addr + offset, size, buf); sfud_read(sfud_dev, nor_flash0.addr + offset, size, buf);
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_write(sfud_dev, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) if (sfud_write(sfud_dev, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS)
{ {
return -1; return -1;
@ -81,10 +81,10 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
assert(sfud_dev); RT_ASSERT(sfud_dev);
assert(sfud_dev->init_ok); RT_ASSERT(sfud_dev->init_ok);
if (sfud_erase(sfud_dev, nor_flash0.addr + offset, size) != SFUD_SUCCESS) if (sfud_erase(sfud_dev, nor_flash0.addr + offset, size) != SFUD_SUCCESS)
{ {
return -1; return -1;

View File

@ -13,18 +13,18 @@
#include <stm32f2xx.h> #include <stm32f2xx.h>
/* base address of the flash sectors */ /* base address of the flash sectors */
#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base address of Sector 0, 16 K bytes */ #define ADDR_FLASH_SECTOR_0 ((rt_uint32_t)0x08000000) /* Base address of Sector 0, 16 K bytes */
#define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000) /* Base address of Sector 1, 16 K bytes */ #define ADDR_FLASH_SECTOR_1 ((rt_uint32_t)0x08004000) /* Base address of Sector 1, 16 K bytes */
#define ADDR_FLASH_SECTOR_2 ((uint32_t)0x08008000) /* Base address of Sector 2, 16 K bytes */ #define ADDR_FLASH_SECTOR_2 ((rt_uint32_t)0x08008000) /* Base address of Sector 2, 16 K bytes */
#define ADDR_FLASH_SECTOR_3 ((uint32_t)0x0800C000) /* Base address of Sector 3, 16 K bytes */ #define ADDR_FLASH_SECTOR_3 ((rt_uint32_t)0x0800C000) /* Base address of Sector 3, 16 K bytes */
#define ADDR_FLASH_SECTOR_4 ((uint32_t)0x08010000) /* Base address of Sector 4, 64 K bytes */ #define ADDR_FLASH_SECTOR_4 ((rt_uint32_t)0x08010000) /* Base address of Sector 4, 64 K bytes */
#define ADDR_FLASH_SECTOR_5 ((uint32_t)0x08020000) /* Base address of Sector 5, 128 K bytes */ #define ADDR_FLASH_SECTOR_5 ((rt_uint32_t)0x08020000) /* Base address of Sector 5, 128 K bytes */
#define ADDR_FLASH_SECTOR_6 ((uint32_t)0x08040000) /* Base address of Sector 6, 128 K bytes */ #define ADDR_FLASH_SECTOR_6 ((rt_uint32_t)0x08040000) /* Base address of Sector 6, 128 K bytes */
#define ADDR_FLASH_SECTOR_7 ((uint32_t)0x08060000) /* Base address of Sector 7, 128 K bytes */ #define ADDR_FLASH_SECTOR_7 ((rt_uint32_t)0x08060000) /* Base address of Sector 7, 128 K bytes */
#define ADDR_FLASH_SECTOR_8 ((uint32_t)0x08080000) /* Base address of Sector 8, 128 K bytes */ #define ADDR_FLASH_SECTOR_8 ((rt_uint32_t)0x08080000) /* Base address of Sector 8, 128 K bytes */
#define ADDR_FLASH_SECTOR_9 ((uint32_t)0x080A0000) /* Base address of Sector 9, 128 K bytes */ #define ADDR_FLASH_SECTOR_9 ((rt_uint32_t)0x080A0000) /* Base address of Sector 9, 128 K bytes */
#define ADDR_FLASH_SECTOR_10 ((uint32_t)0x080C0000) /* Base address of Sector 10, 128 K bytes */ #define ADDR_FLASH_SECTOR_10 ((rt_uint32_t)0x080C0000) /* Base address of Sector 10, 128 K bytes */
#define ADDR_FLASH_SECTOR_11 ((uint32_t)0x080E0000) /* Base address of Sector 11, 128 K bytes */ #define ADDR_FLASH_SECTOR_11 ((rt_uint32_t)0x080E0000) /* Base address of Sector 11, 128 K bytes */
/** /**
* Get the sector of a given address * Get the sector of a given address
@ -33,9 +33,9 @@
* *
* @return The sector of a given address * @return The sector of a given address
*/ */
static uint32_t stm32_get_sector(uint32_t address) static rt_uint32_t stm32_get_sector(rt_uint32_t address)
{ {
uint32_t sector = 0; rt_uint32_t sector = 0;
if ((address < ADDR_FLASH_SECTOR_1) && (address >= ADDR_FLASH_SECTOR_0)) if ((address < ADDR_FLASH_SECTOR_1) && (address >= ADDR_FLASH_SECTOR_0))
{ {
@ -96,8 +96,8 @@ static uint32_t stm32_get_sector(uint32_t address)
* *
* @return sector size * @return sector size
*/ */
static uint32_t stm32_get_sector_size(uint32_t sector) { static rt_uint32_t stm32_get_sector_size(rt_uint32_t sector) {
assert(IS_FLASH_SECTOR(sector)); RT_ASSERT(IS_FLASH_SECTOR(sector));
switch (sector) { switch (sector) {
case FLASH_Sector_0: return 16 * 1024; case FLASH_Sector_0: return 16 * 1024;
@ -120,23 +120,23 @@ static int init(void)
/* do nothing now */ /* do nothing now */
} }
static int read(long offset, uint8_t *buf, size_t size) static int read(long offset, rt_uint8_t *buf, rt_size_t size)
{ {
size_t i; rt_size_t i;
uint32_t addr = stm32f2_onchip_flash.addr + offset; rt_uint32_t addr = stm32f2_onchip_flash.addr + offset;
for (i = 0; i < size; i++, addr++, buf++) for (i = 0; i < size; i++, addr++, buf++)
{ {
*buf = *(uint8_t *) addr; *buf = *(rt_uint8_t *) addr;
} }
return size; return size;
} }
static int write(long offset, const uint8_t *buf, size_t size) static int write(long offset, const rt_uint8_t *buf, rt_size_t size)
{ {
size_t i; rt_size_t i;
uint32_t read_data; rt_uint32_t read_data;
uint32_t addr = stm32f2_onchip_flash.addr + offset; rt_uint32_t addr = stm32f2_onchip_flash.addr + offset;
FLASH_Unlock(); FLASH_Unlock();
FLASH_ClearFlag( FLASH_ClearFlag(
@ -146,7 +146,7 @@ static int write(long offset, const uint8_t *buf, size_t size)
{ {
/* write data */ /* write data */
FLASH_ProgramByte(addr, *buf); FLASH_ProgramByte(addr, *buf);
read_data = *(uint8_t *) addr; read_data = *(rt_uint8_t *) addr;
/* check data */ /* check data */
if (read_data != *buf) if (read_data != *buf)
{ {
@ -158,12 +158,12 @@ static int write(long offset, const uint8_t *buf, size_t size)
return size; return size;
} }
static int erase(long offset, size_t size) static int erase(long offset, rt_size_t size)
{ {
FLASH_Status flash_status; FLASH_Status flash_status;
size_t erased_size = 0; rt_size_t erased_size = 0;
uint32_t cur_erase_sector; rt_uint32_t cur_erase_sector;
uint32_t addr = stm32f2_onchip_flash.addr + offset; rt_uint32_t addr = stm32f2_onchip_flash.addr + offset;
/* start erase */ /* start erase */
FLASH_Unlock(); FLASH_Unlock();

View File

@ -9,8 +9,17 @@
*/ */
#include <fal.h> #include <fal.h>
#include <rtdevice.h>
static uint8_t init_ok = 0; #define DBG_TAG "FAL"
#ifdef FAL_USING_DEBUG
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include <rtdbg.h>
static rt_uint8_t init_ok = 0;
/** /**
* FAL (Flash Abstraction Layer) initialization. * FAL (Flash Abstraction Layer) initialization.
@ -40,12 +49,12 @@ __exit:
if ((result > 0) && (!init_ok)) if ((result > 0) && (!init_ok))
{ {
init_ok = 1; init_ok = 1;
log_i("RT-Thread Flash Abstraction Layer initialize success."); LOG_I("RT-Thread Flash Abstraction Layer initialize success.");
} }
else if(result <= 0) else if(result <= 0)
{ {
init_ok = 0; init_ok = 0;
log_e("RT-Thread Flash Abstraction Layer initialize failed."); LOG_E("RT-Thread Flash Abstraction Layer initialize failed.");
} }
return result; return result;

View File

@ -11,14 +11,22 @@
#include <fal.h> #include <fal.h>
#include <string.h> #include <string.h>
#define DBG_TAG "FAL"
#ifdef FAL_USING_DEBUG
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include <rtdbg.h>
/* flash device table, must defined by user */ /* flash device table, must defined by user */
#if !defined(FAL_FLASH_DEV_TABLE) #if !defined(FAL_FLASH_DEV_TABLE)
#error "You must defined flash device table (FAL_FLASH_DEV_TABLE) on 'fal_cfg.h'" #error "You must defined flash device table (FAL_FLASH_DEV_TABLE) on 'fal_cfg.h'"
#endif #endif
static const struct fal_flash_dev * const device_table[] = FAL_FLASH_DEV_TABLE; static const struct fal_flash_dev * const device_table[] = FAL_FLASH_DEV_TABLE;
static const size_t device_table_len = sizeof(device_table) / sizeof(device_table[0]); static const rt_size_t device_table_len = sizeof(device_table) / sizeof(device_table[0]);
static uint8_t init_ok = 0; static rt_uint8_t init_ok = 0;
/** /**
* Initialize all flash device on FAL flash table * Initialize all flash device on FAL flash table
@ -27,7 +35,7 @@ static uint8_t init_ok = 0;
*/ */
int fal_flash_init(void) int fal_flash_init(void)
{ {
size_t i, j, offset; rt_size_t i, j, offset;
if (init_ok) if (init_ok)
{ {
@ -36,33 +44,33 @@ int fal_flash_init(void)
for (i = 0; i < device_table_len; i++) for (i = 0; i < device_table_len; i++)
{ {
assert(device_table[i]->ops.read); RT_ASSERT(device_table[i]->ops.read);
assert(device_table[i]->ops.write); RT_ASSERT(device_table[i]->ops.write);
assert(device_table[i]->ops.erase); RT_ASSERT(device_table[i]->ops.erase);
/* init flash device on flash table */ /* init flash device on flash table */
if (device_table[i]->ops.init) if (device_table[i]->ops.init)
{ {
device_table[i]->ops.init(); device_table[i]->ops.init();
} }
log_d("Flash device | %*.*s | addr: 0x%08lx | len: 0x%08x | blk_size: 0x%08x |initialized finish.", LOG_D("Flash device | %*.*s | addr: 0x%08lx | len: 0x%08x | blk_size: 0x%08x |initialized finish.",
FAL_DEV_NAME_MAX, FAL_DEV_NAME_MAX, device_table[i]->name, device_table[i]->addr, device_table[i]->len, FAL_DEV_NAME_MAX, FAL_DEV_NAME_MAX, device_table[i]->name, device_table[i]->addr, device_table[i]->len,
device_table[i]->blk_size); device_table[i]->blk_size);
offset = 0; offset = 0;
for (j = 0; j < FAL_DEV_BLK_MAX; j ++) for (j = 0; j < FAL_DEV_BLK_MAX; j ++)
{ {
const struct flash_blk *blk = &device_table[i]->blocks[j]; const struct flash_blk *blk = &device_table[i]->blocks[j];
size_t blk_len = blk->count * blk->size; rt_size_t blk_len = blk->count * blk->size;
if (blk->count == 0 || blk->size == 0) if (blk->count == 0 || blk->size == 0)
break; break;
if(offset > device_table[i]->len) if(offset > device_table[i]->len)
{ {
log_i("Flash device %*.*s: add block failed, offset %d > len %d.", LOG_I("Flash device %*.*s: add block failed, offset %d > len %d.",
FAL_DEV_NAME_MAX, FAL_DEV_NAME_MAX, device_table[i]->name, device_table[i]->addr, offset, device_table[i]->len); FAL_DEV_NAME_MAX, FAL_DEV_NAME_MAX, device_table[i]->name, device_table[i]->addr, offset, device_table[i]->len);
break; break;
} }
log_d(" blk%2d | addr: 0x%08lx | len: 0x%08x | blk_size: 0x%08x |initialized finish.", LOG_D(" blk%2d | addr: 0x%08lx | len: 0x%08x | blk_size: 0x%08x |initialized finish.",
j, device_table[i]->addr + offset, blk_len, blk->size); j, device_table[i]->addr + offset, blk_len, blk->size);
offset += blk_len; offset += blk_len;
} }
@ -82,10 +90,10 @@ int fal_flash_init(void)
*/ */
const struct fal_flash_dev *fal_flash_device_find(const char *name) const struct fal_flash_dev *fal_flash_device_find(const char *name)
{ {
assert(init_ok); RT_ASSERT(init_ok);
assert(name); RT_ASSERT(name);
size_t i; rt_size_t i;
for (i = 0; i < device_table_len; i++) for (i = 0; i < device_table_len; i++)
{ {

View File

@ -10,7 +10,15 @@
#include <fal.h> #include <fal.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#define DBG_TAG "FAL"
#ifdef FAL_USING_DEBUG
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include <rtdbg.h>
/* partition magic word */ /* partition magic word */
#define FAL_PART_MAGIC_WORD 0x45503130 #define FAL_PART_MAGIC_WORD 0x45503130
@ -55,8 +63,8 @@ static struct fal_partition *partition_table = NULL;
static struct part_flash_info *part_flash_cache = NULL; static struct part_flash_info *part_flash_cache = NULL;
#endif /* FAL_PART_HAS_TABLE_CFG */ #endif /* FAL_PART_HAS_TABLE_CFG */
static uint8_t init_ok = 0; static rt_uint8_t init_ok = 0;
static size_t partition_table_len = 0; static rt_size_t partition_table_len = 0;
/** /**
* print the partition table * print the partition table
@ -64,7 +72,7 @@ static size_t partition_table_len = 0;
void fal_show_part_table(void) void fal_show_part_table(void)
{ {
char *item1 = "name", *item2 = "flash_dev"; char *item1 = "name", *item2 = "flash_dev";
size_t i, part_name_max = strlen(item1), flash_dev_name_max = strlen(item2); rt_size_t i, part_name_max = strlen(item1), flash_dev_name_max = strlen(item2);
const struct fal_partition *part; const struct fal_partition *part;
if (partition_table_len) if (partition_table_len)
@ -82,10 +90,10 @@ void fal_show_part_table(void)
} }
} }
} }
log_i("==================== FAL partition table ===================="); LOG_I("==================== FAL partition table ====================");
log_i("| %-*.*s | %-*.*s | offset | length |", part_name_max, FAL_DEV_NAME_MAX, item1, flash_dev_name_max, LOG_I("| %-*.*s | %-*.*s | offset | length |", part_name_max, FAL_DEV_NAME_MAX, item1, flash_dev_name_max,
FAL_DEV_NAME_MAX, item2); FAL_DEV_NAME_MAX, item2);
log_i("-------------------------------------------------------------"); LOG_I("-------------------------------------------------------------");
for (i = 0; i < partition_table_len; i++) for (i = 0; i < partition_table_len; i++)
{ {
@ -95,26 +103,26 @@ void fal_show_part_table(void)
part = &partition_table[partition_table_len - i - 1]; part = &partition_table[partition_table_len - i - 1];
#endif #endif
log_i("| %-*.*s | %-*.*s | 0x%08lx | 0x%08x |", part_name_max, FAL_DEV_NAME_MAX, part->name, flash_dev_name_max, LOG_I("| %-*.*s | %-*.*s | 0x%08lx | 0x%08x |", part_name_max, FAL_DEV_NAME_MAX, part->name, flash_dev_name_max,
FAL_DEV_NAME_MAX, part->flash_name, part->offset, part->len); FAL_DEV_NAME_MAX, part->flash_name, part->offset, part->len);
} }
log_i("============================================================="); LOG_I("=============================================================");
} }
static int check_and_update_part_cache(const struct fal_partition *table, size_t len) static int check_and_update_part_cache(const struct fal_partition *table, rt_size_t len)
{ {
const struct fal_flash_dev *flash_dev = NULL; const struct fal_flash_dev *flash_dev = NULL;
size_t i; rt_size_t i;
#ifndef FAL_PART_HAS_TABLE_CFG #ifndef FAL_PART_HAS_TABLE_CFG
if (part_flash_cache) if (part_flash_cache)
{ {
FAL_FREE(part_flash_cache); rt_free(part_flash_cache);
} }
part_flash_cache = FAL_MALLOC(len * sizeof(struct part_flash_info)); part_flash_cache = rt_malloc(len * sizeof(struct part_flash_info));
if (part_flash_cache == NULL) if (part_flash_cache == NULL)
{ {
log_e("Initialize failed! No memory for partition table cache"); LOG_E("Initialize failed! No memory for partition table cache");
return -2; return -2;
} }
#endif #endif
@ -124,13 +132,13 @@ static int check_and_update_part_cache(const struct fal_partition *table, size_t
flash_dev = fal_flash_device_find(table[i].flash_name); flash_dev = fal_flash_device_find(table[i].flash_name);
if (flash_dev == NULL) if (flash_dev == NULL)
{ {
log_d("Warning: Do NOT found the flash device(%s).", table[i].flash_name); LOG_D("Warning: Do NOT found the flash device(%s).", table[i].flash_name);
continue; continue;
} }
if (table[i].offset >= (long)flash_dev->len) if (table[i].offset >= (long)flash_dev->len)
{ {
log_e("Initialize failed! Partition(%s) offset address(%ld) out of flash bound(<%d).", LOG_E("Initialize failed! Partition(%s) offset address(%ld) out of flash bound(<%d).",
table[i].name, table[i].offset, flash_dev->len); table[i].name, table[i].offset, flash_dev->len);
partition_table_len = 0; partition_table_len = 0;
@ -162,38 +170,38 @@ int fal_partition_init(void)
#else #else
/* load partition table from the end address FAL_PART_TABLE_END_OFFSET, error return 0 */ /* load partition table from the end address FAL_PART_TABLE_END_OFFSET, error return 0 */
long part_table_offset = FAL_PART_TABLE_END_OFFSET; long part_table_offset = FAL_PART_TABLE_END_OFFSET;
size_t table_num = 0, table_item_size = 0; rt_size_t table_num = 0, table_item_size = 0;
uint8_t part_table_find_ok = 0; rt_uint8_t part_table_find_ok = 0;
uint32_t read_magic_word; rt_uint32_t read_magic_word;
fal_partition_t new_part = NULL; fal_partition_t new_part = NULL;
size_t i; rt_size_t i;
const struct fal_flash_dev *flash_dev = NULL; const struct fal_flash_dev *flash_dev = NULL;
flash_dev = fal_flash_device_find(FAL_PART_TABLE_FLASH_DEV_NAME); flash_dev = fal_flash_device_find(FAL_PART_TABLE_FLASH_DEV_NAME);
if (flash_dev == NULL) if (flash_dev == NULL)
{ {
log_e("Initialize failed! Flash device (%s) NOT found.", FAL_PART_TABLE_FLASH_DEV_NAME); LOG_E("Initialize failed! Flash device (%s) NOT found.", FAL_PART_TABLE_FLASH_DEV_NAME);
goto _exit; goto _exit;
} }
/* check partition table offset address */ /* check partition table offset address */
if (part_table_offset < 0 || part_table_offset >= (long) flash_dev->len) if (part_table_offset < 0 || part_table_offset >= (long) flash_dev->len)
{ {
log_e("Setting partition table end offset address(%ld) out of flash bound(<%d).", part_table_offset, flash_dev->len); LOG_E("Setting partition table end offset address(%ld) out of flash bound(<%d).", part_table_offset, flash_dev->len);
goto _exit; goto _exit;
} }
table_item_size = sizeof(struct fal_partition); table_item_size = sizeof(struct fal_partition);
new_part = (fal_partition_t)FAL_MALLOC(table_item_size); new_part = (fal_partition_t)rt_malloc(table_item_size);
if (new_part == NULL) if (new_part == NULL)
{ {
log_e("Initialize failed! No memory for table buffer."); LOG_E("Initialize failed! No memory for table buffer.");
goto _exit; goto _exit;
} }
/* find partition table location */ /* find partition table location */
{ {
uint8_t read_buf[64]; rt_uint8_t read_buf[64];
part_table_offset -= sizeof(read_buf); part_table_offset -= sizeof(read_buf);
while (part_table_offset >= 0) while (part_table_offset >= 0)
@ -208,7 +216,7 @@ int fal_partition_init(void)
{ {
part_table_find_ok = 1; part_table_find_ok = 1;
part_table_offset += i; part_table_offset += i;
log_d("Find the partition table on '%s' offset @0x%08lx.", FAL_PART_TABLE_FLASH_DEV_NAME, LOG_D("Find the partition table on '%s' offset @0x%08lx.", FAL_PART_TABLE_FLASH_DEV_NAME,
part_table_offset); part_table_offset);
break; break;
} }
@ -249,10 +257,10 @@ int fal_partition_init(void)
while (part_table_find_ok) while (part_table_find_ok)
{ {
memset(new_part, 0x00, table_num); memset(new_part, 0x00, table_num);
if (flash_dev->ops.read(part_table_offset - table_item_size * (table_num), (uint8_t *) new_part, if (flash_dev->ops.read(part_table_offset - table_item_size * (table_num), (rt_uint8_t *) new_part,
table_item_size) < 0) table_item_size) < 0)
{ {
log_e("Initialize failed! Flash device (%s) read error!", flash_dev->name); LOG_E("Initialize failed! Flash device (%s) read error!", flash_dev->name);
table_num = 0; table_num = 0;
break; break;
} }
@ -262,10 +270,10 @@ int fal_partition_init(void)
break; break;
} }
partition_table = (fal_partition_t) FAL_REALLOC(partition_table, table_item_size * (table_num + 1)); partition_table = (fal_partition_t) rt_realloc(partition_table, table_item_size * (table_num + 1));
if (partition_table == NULL) if (partition_table == NULL)
{ {
log_e("Initialize failed! No memory for partition table"); LOG_E("Initialize failed! No memory for partition table");
table_num = 0; table_num = 0;
break; break;
} }
@ -277,7 +285,7 @@ int fal_partition_init(void)
if (table_num == 0) if (table_num == 0)
{ {
log_e("Partition table NOT found on flash: %s (len: %d) from offset: 0x%08x.", FAL_PART_TABLE_FLASH_DEV_NAME, LOG_E("Partition table NOT found on flash: %s (len: %d) from offset: 0x%08x.", FAL_PART_TABLE_FLASH_DEV_NAME,
FAL_DEV_NAME_MAX, FAL_PART_TABLE_END_OFFSET); FAL_DEV_NAME_MAX, FAL_PART_TABLE_END_OFFSET);
goto _exit; goto _exit;
} }
@ -297,14 +305,14 @@ int fal_partition_init(void)
_exit: _exit:
#if FAL_DEBUG #ifdef FAL_USING_DEBUG
fal_show_part_table(); fal_show_part_table();
#endif #endif /* FAL_USING_DEBUG */
#ifndef FAL_PART_HAS_TABLE_CFG #ifndef FAL_PART_HAS_TABLE_CFG
if (new_part) if (new_part)
{ {
FAL_FREE(new_part); rt_free(new_part);
} }
#endif /* !FAL_PART_HAS_TABLE_CFG */ #endif /* !FAL_PART_HAS_TABLE_CFG */
@ -324,7 +332,7 @@ const struct fal_partition *fal_partition_find(const char *name)
if (!init_ok) if (!init_ok)
return NULL; return NULL;
size_t i; rt_size_t i;
for (i = 0; i < partition_table_len; i++) for (i = 0; i < partition_table_len; i++)
{ {
@ -339,8 +347,8 @@ const struct fal_partition *fal_partition_find(const char *name)
static const struct fal_flash_dev *flash_device_find_by_part(const struct fal_partition *part) static const struct fal_flash_dev *flash_device_find_by_part(const struct fal_partition *part)
{ {
assert(part >= partition_table); RT_ASSERT(part >= partition_table);
assert(part <= &partition_table[partition_table_len - 1]); RT_ASSERT(part <= &partition_table[partition_table_len - 1]);
return part_flash_cache[part - partition_table].flash_dev; return part_flash_cache[part - partition_table].flash_dev;
} }
@ -352,9 +360,9 @@ static const struct fal_flash_dev *flash_device_find_by_part(const struct fal_pa
* *
* @return partition table * @return partition table
*/ */
const struct fal_partition *fal_get_partition_table(size_t *len) const struct fal_partition *fal_get_partition_table(rt_size_t *len)
{ {
assert(len); RT_ASSERT(len);
if (!init_ok) if (!init_ok)
return NULL; return NULL;
@ -371,13 +379,13 @@ const struct fal_partition *fal_get_partition_table(size_t *len)
* @param table partition table * @param table partition table
* @param len partition table length * @param len partition table length
*/ */
void fal_set_partition_table_temp(struct fal_partition *table, size_t len) void fal_set_partition_table_temp(struct fal_partition *table, rt_size_t len)
{ {
assert(table); RT_ASSERT(table);
if (!init_ok) if (!init_ok)
{ {
log_e("FAL NOT initialized"); LOG_E("FAL NOT initialized");
return; return;
} }
@ -398,31 +406,31 @@ void fal_set_partition_table_temp(struct fal_partition *table, size_t len)
* @return >= 0: successful read data size * @return >= 0: successful read data size
* -1: error * -1: error
*/ */
int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t *buf, size_t size) int fal_partition_read(const struct fal_partition *part, rt_uint32_t addr, rt_uint8_t *buf, rt_size_t size)
{ {
int ret = 0; int ret = 0;
const struct fal_flash_dev *flash_dev = NULL; const struct fal_flash_dev *flash_dev = NULL;
assert(part); RT_ASSERT(part);
assert(buf); RT_ASSERT(buf);
if (addr + size > part->len) if (addr + size > part->len)
{ {
log_e("Partition read error! Partition(%s) address(0x%08x) out of bound(0x%08x).", part->name, addr + size, part->len); LOG_E("Partition read error! Partition(%s) address(0x%08x) out of bound(0x%08x).", part->name, addr + size, part->len);
return -1; return -1;
} }
flash_dev = flash_device_find_by_part(part); flash_dev = flash_device_find_by_part(part);
if (flash_dev == NULL) if (flash_dev == NULL)
{ {
log_e("Partition read error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name); LOG_E("Partition read error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name);
return -1; return -1;
} }
ret = flash_dev->ops.read(part->offset + addr, buf, size); ret = flash_dev->ops.read(part->offset + addr, buf, size);
if (ret < 0) if (ret < 0)
{ {
log_e("Partition read error! Flash device(%s) read error!", part->flash_name); LOG_E("Partition read error! Flash device(%s) read error!", part->flash_name);
} }
return ret; return ret;
@ -439,31 +447,31 @@ int fal_partition_read(const struct fal_partition *part, uint32_t addr, uint8_t
* @return >= 0: successful write data size * @return >= 0: successful write data size
* -1: error * -1: error
*/ */
int fal_partition_write(const struct fal_partition *part, uint32_t addr, const uint8_t *buf, size_t size) int fal_partition_write(const struct fal_partition *part, rt_uint32_t addr, const rt_uint8_t *buf, rt_size_t size)
{ {
int ret = 0; int ret = 0;
const struct fal_flash_dev *flash_dev = NULL; const struct fal_flash_dev *flash_dev = NULL;
assert(part); RT_ASSERT(part);
assert(buf); RT_ASSERT(buf);
if (addr + size > part->len) if (addr + size > part->len)
{ {
log_e("Partition write error! Partition address out of bound."); LOG_E("Partition write error! Partition address out of bound.");
return -1; return -1;
} }
flash_dev = flash_device_find_by_part(part); flash_dev = flash_device_find_by_part(part);
if (flash_dev == NULL) if (flash_dev == NULL)
{ {
log_e("Partition write error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name); LOG_E("Partition write error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name);
return -1; return -1;
} }
ret = flash_dev->ops.write(part->offset + addr, buf, size); ret = flash_dev->ops.write(part->offset + addr, buf, size);
if (ret < 0) if (ret < 0)
{ {
log_e("Partition write error! Flash device(%s) write error!", part->flash_name); LOG_E("Partition write error! Flash device(%s) write error!", part->flash_name);
} }
return ret; return ret;
@ -479,30 +487,30 @@ int fal_partition_write(const struct fal_partition *part, uint32_t addr, const u
* @return >= 0: successful erased data size * @return >= 0: successful erased data size
* -1: error * -1: error
*/ */
int fal_partition_erase(const struct fal_partition *part, uint32_t addr, size_t size) int fal_partition_erase(const struct fal_partition *part, rt_uint32_t addr, rt_size_t size)
{ {
int ret = 0; int ret = 0;
const struct fal_flash_dev *flash_dev = NULL; const struct fal_flash_dev *flash_dev = NULL;
assert(part); RT_ASSERT(part);
if (addr + size > part->len) if (addr + size > part->len)
{ {
log_e("Partition erase error! Partition address out of bound."); LOG_E("Partition erase error! Partition address out of bound.");
return -1; return -1;
} }
flash_dev = flash_device_find_by_part(part); flash_dev = flash_device_find_by_part(part);
if (flash_dev == NULL) if (flash_dev == NULL)
{ {
log_e("Partition erase error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name); LOG_E("Partition erase error! Don't found flash device(%s) of the partition(%s).", part->flash_name, part->name);
return -1; return -1;
} }
ret = flash_dev->ops.erase(part->offset + addr, size); ret = flash_dev->ops.erase(part->offset + addr, size);
if (ret < 0) if (ret < 0)
{ {
log_e("Partition erase error! Flash device(%s) erase error!", part->flash_name); LOG_E("Partition erase error! Flash device(%s) erase error!", part->flash_name);
} }
return ret; return ret;

View File

@ -10,12 +10,16 @@
*/ */
#include <fal.h> #include <fal.h>
#ifdef RT_VER_NUM
#include <rtthread.h>
#include <rtdevice.h> #include <rtdevice.h>
#include <string.h>
#include <stdlib.h> #define DBG_TAG "FAL"
#ifdef FAL_USING_DEBUG
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include <rtdbg.h>
/* ========================== block device ======================== */ /* ========================== block device ======================== */
struct fal_blk_device struct fal_blk_device
@ -34,7 +38,7 @@ static rt_err_t blk_dev_control(rt_device_t dev, rt_uint8_t cmd, void *args)
{ {
struct fal_blk_device *part = (struct fal_blk_device*) dev; struct fal_blk_device *part = (struct fal_blk_device*) dev;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
if (cmd == RT_DEVICE_CTRL_BLK_GETGEOME) if (cmd == RT_DEVICE_CTRL_BLK_GETGEOME)
{ {
@ -80,7 +84,7 @@ static rt_ssize_t blk_dev_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_s
int ret = 0; int ret = 0;
struct fal_blk_device *part = (struct fal_blk_device*) dev; struct fal_blk_device *part = (struct fal_blk_device*) dev;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
ret = fal_partition_read(part->fal_part, pos * part->geometry.block_size, buffer, size * part->geometry.block_size); ret = fal_partition_read(part->fal_part, pos * part->geometry.block_size, buffer, size * part->geometry.block_size);
@ -104,7 +108,7 @@ static rt_ssize_t blk_dev_write(rt_device_t dev, rt_off_t pos, const void* buffe
rt_size_t phy_size; rt_size_t phy_size;
part = (struct fal_blk_device*) dev; part = (struct fal_blk_device*) dev;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
/* change the block device's logic address to physical address */ /* change the block device's logic address to physical address */
phy_pos = pos * part->geometry.bytes_per_sector; phy_pos = pos * part->geometry.bytes_per_sector;
@ -157,13 +161,13 @@ struct rt_device *fal_blk_device_create(const char *parition_name)
if (!fal_part) if (!fal_part)
{ {
log_e("Error: the partition name (%s) is not found.", parition_name); LOG_E("Error: the partition name (%s) is not found.", parition_name);
return NULL; return NULL;
} }
if ((fal_flash = fal_flash_device_find(fal_part->flash_name)) == NULL) if ((fal_flash = fal_flash_device_find(fal_part->flash_name)) == NULL)
{ {
log_e("Error: the flash device name (%s) is not found.", fal_part->flash_name); LOG_E("Error: the flash device name (%s) is not found.", fal_part->flash_name);
return NULL; return NULL;
} }
@ -192,12 +196,12 @@ struct rt_device *fal_blk_device_create(const char *parition_name)
/* no private */ /* no private */
blk_dev->parent.user_data = RT_NULL; blk_dev->parent.user_data = RT_NULL;
log_i("The FAL block device (%s) created successfully", fal_part->name); LOG_I("The FAL block device (%s) created successfully", fal_part->name);
rt_device_register(RT_DEVICE(blk_dev), fal_part->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE); rt_device_register(RT_DEVICE(blk_dev), fal_part->name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
} }
else else
{ {
log_e("Error: no memory for create FAL block device"); LOG_E("Error: no memory for create FAL block device");
} }
return RT_DEVICE(blk_dev); return RT_DEVICE(blk_dev);
@ -217,7 +221,7 @@ static rt_ssize_t mtd_nor_dev_read(struct rt_mtd_nor_device* device, rt_off_t of
int ret = 0; int ret = 0;
struct fal_mtd_nor_device *part = (struct fal_mtd_nor_device*) device; struct fal_mtd_nor_device *part = (struct fal_mtd_nor_device*) device;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
ret = fal_partition_read(part->fal_part, offset, data, length); ret = fal_partition_read(part->fal_part, offset, data, length);
@ -239,7 +243,7 @@ static rt_ssize_t mtd_nor_dev_write(struct rt_mtd_nor_device* device, rt_off_t o
struct fal_mtd_nor_device *part; struct fal_mtd_nor_device *part;
part = (struct fal_mtd_nor_device*) device; part = (struct fal_mtd_nor_device*) device;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
ret = fal_partition_write(part->fal_part, offset, data, length); ret = fal_partition_write(part->fal_part, offset, data, length);
@ -261,7 +265,7 @@ static rt_err_t mtd_nor_dev_erase(struct rt_mtd_nor_device* device, rt_off_t off
struct fal_mtd_nor_device *part; struct fal_mtd_nor_device *part;
part = (struct fal_mtd_nor_device*) device; part = (struct fal_mtd_nor_device*) device;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
ret = fal_partition_erase(part->fal_part, offset, length); ret = fal_partition_erase(part->fal_part, offset, length);
@ -299,13 +303,13 @@ struct rt_device *fal_mtd_nor_device_create(const char *parition_name)
if (!fal_part) if (!fal_part)
{ {
log_e("Error: the partition name (%s) is not found.", parition_name); LOG_E("Error: the partition name (%s) is not found.", parition_name);
return NULL; return NULL;
} }
if ((fal_flash = fal_flash_device_find(fal_part->flash_name)) == NULL) if ((fal_flash = fal_flash_device_find(fal_part->flash_name)) == NULL)
{ {
log_e("Error: the flash device name (%s) is not found.", fal_part->flash_name); LOG_E("Error: the flash device name (%s) is not found.", fal_part->flash_name);
return NULL; return NULL;
} }
@ -321,12 +325,12 @@ struct rt_device *fal_mtd_nor_device_create(const char *parition_name)
/* set ops */ /* set ops */
mtd_nor_dev->parent.ops = &_ops; mtd_nor_dev->parent.ops = &_ops;
log_i("The FAL MTD NOR device (%s) created successfully", fal_part->name); LOG_I("The FAL MTD NOR device (%s) created successfully", fal_part->name);
rt_mtd_nor_register_device(fal_part->name, &mtd_nor_dev->parent); rt_mtd_nor_register_device(fal_part->name, &mtd_nor_dev->parent);
} }
else else
{ {
log_e("Error: no memory for create FAL MTD NOR device"); LOG_E("Error: no memory for create FAL MTD NOR device");
} }
return RT_DEVICE(&mtd_nor_dev->parent); return RT_DEVICE(&mtd_nor_dev->parent);
@ -348,7 +352,7 @@ static rt_ssize_t char_dev_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_
int ret = 0; int ret = 0;
struct fal_char_device *part = (struct fal_char_device *) dev; struct fal_char_device *part = (struct fal_char_device *) dev;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
if (pos + size > part->fal_part->len) if (pos + size > part->fal_part->len)
size = part->fal_part->len - pos; size = part->fal_part->len - pos;
@ -367,7 +371,7 @@ static rt_ssize_t char_dev_write(rt_device_t dev, rt_off_t pos, const void *buff
struct fal_char_device *part; struct fal_char_device *part;
part = (struct fal_char_device *) dev; part = (struct fal_char_device *) dev;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
if (pos == 0) if (pos == 0)
{ {
@ -410,7 +414,7 @@ static int char_dev_fopen(struct dfs_file *fd)
{ {
struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data; struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
switch (fd->flags & O_ACCMODE) switch (fd->flags & O_ACCMODE)
{ {
@ -429,12 +433,12 @@ static int char_dev_fopen(struct dfs_file *fd)
return RT_EOK; return RT_EOK;
} }
static int char_dev_fread(struct dfs_file *fd, void *buf, size_t count) static int char_dev_fread(struct dfs_file *fd, void *buf, rt_size_t count)
{ {
int ret = 0; int ret = 0;
struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data; struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
if (DFS_FILE_POS(fd) + count > part->fal_part->len) if (DFS_FILE_POS(fd) + count > part->fal_part->len)
count = part->fal_part->len - DFS_FILE_POS(fd); count = part->fal_part->len - DFS_FILE_POS(fd);
@ -449,12 +453,12 @@ static int char_dev_fread(struct dfs_file *fd, void *buf, size_t count)
return ret; return ret;
} }
static int char_dev_fwrite(struct dfs_file *fd, const void *buf, size_t count) static int char_dev_fwrite(struct dfs_file *fd, const void *buf, rt_size_t count)
{ {
int ret = 0; int ret = 0;
struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data; struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data;
assert(part != RT_NULL); RT_ASSERT(part != RT_NULL);
if (DFS_FILE_POS(fd) + count > part->fal_part->len) if (DFS_FILE_POS(fd) + count > part->fal_part->len)
count = part->fal_part->len - DFS_FILE_POS(fd); count = part->fal_part->len - DFS_FILE_POS(fd);
@ -498,13 +502,13 @@ struct rt_device *fal_char_device_create(const char *parition_name)
if (!fal_part) if (!fal_part)
{ {
log_e("Error: the partition name (%s) is not found.", parition_name); LOG_E("Error: the partition name (%s) is not found.", parition_name);
return NULL; return NULL;
} }
if ((fal_flash_device_find(fal_part->flash_name)) == NULL) if ((fal_flash_device_find(fal_part->flash_name)) == NULL)
{ {
log_e("Error: the flash device name (%s) is not found.", fal_part->flash_name); LOG_E("Error: the flash device name (%s) is not found.", fal_part->flash_name);
return NULL; return NULL;
} }
@ -530,7 +534,7 @@ struct rt_device *fal_char_device_create(const char *parition_name)
#endif #endif
rt_device_register(RT_DEVICE(char_dev), fal_part->name, RT_DEVICE_FLAG_RDWR); rt_device_register(RT_DEVICE(char_dev), fal_part->name, RT_DEVICE_FLAG_RDWR);
log_i("The FAL char device (%s) created successfully", fal_part->name); LOG_I("The FAL char device (%s) created successfully", fal_part->name);
#ifdef RT_USING_POSIX_DEVIO #ifdef RT_USING_POSIX_DEVIO
/* set fops */ /* set fops */
@ -540,7 +544,7 @@ struct rt_device *fal_char_device_create(const char *parition_name)
} }
else else
{ {
log_e("Error: no memory for create FAL char device"); LOG_E("Error: no memory for create FAL char device");
} }
return RT_DEVICE(char_dev); return RT_DEVICE(char_dev);
@ -551,7 +555,7 @@ struct rt_device *fal_char_device_create(const char *parition_name)
#include <finsh.h> #include <finsh.h>
extern int fal_init_check(void); extern int fal_init_check(void);
static void fal(uint8_t argc, char **argv) { static void fal(rt_uint8_t argc, char **argv) {
#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ') #define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
#define HEXDUMP_WIDTH 16 #define HEXDUMP_WIDTH 16
@ -564,7 +568,7 @@ static void fal(uint8_t argc, char **argv) {
int result = 0; int result = 0;
static const struct fal_flash_dev *flash_dev = NULL; static const struct fal_flash_dev *flash_dev = NULL;
static const struct fal_partition *part_dev = NULL; static const struct fal_partition *part_dev = NULL;
size_t i = 0, j = 0; rt_size_t i = 0, j = 0;
const char* help_info[] = const char* help_info[] =
{ {
@ -593,7 +597,7 @@ static void fal(uint8_t argc, char **argv) {
else else
{ {
const char *operator = argv[1]; const char *operator = argv[1];
uint32_t addr, size; rt_uint32_t addr, size;
if (!strcmp(operator, "probe")) if (!strcmp(operator, "probe"))
{ {
@ -651,7 +655,7 @@ static void fal(uint8_t argc, char **argv) {
{ {
addr = strtol(argv[2], NULL, 0); addr = strtol(argv[2], NULL, 0);
size = strtol(argv[3], NULL, 0); size = strtol(argv[3], NULL, 0);
uint8_t *data = rt_malloc(size); rt_uint8_t *data = rt_malloc(size);
if (data) if (data)
{ {
if (flash_dev) if (flash_dev)
@ -713,7 +717,7 @@ static void fal(uint8_t argc, char **argv) {
{ {
addr = strtol(argv[2], NULL, 0); addr = strtol(argv[2], NULL, 0);
size = argc - 3; size = argc - 3;
uint8_t *data = rt_malloc(size); rt_uint8_t *data = rt_malloc(size);
if (data) if (data)
{ {
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
@ -784,9 +788,9 @@ static void fal(uint8_t argc, char **argv) {
return; return;
} }
/* full chip benchmark test */ /* full chip benchmark test */
uint32_t start_time, time_cast; rt_uint32_t start_time, time_cast;
size_t write_size = strtol(argv[2], NULL, 0), read_size = strtol(argv[2], NULL, 0), cur_op_size; rt_size_t write_size = strtol(argv[2], NULL, 0), read_size = strtol(argv[2], NULL, 0), cur_op_size;
uint8_t *write_data = (uint8_t *)rt_malloc(write_size), *read_data = (uint8_t *)rt_malloc(read_size); rt_uint8_t *write_data = (rt_uint8_t *)rt_malloc(write_size), *read_data = (rt_uint8_t *)rt_malloc(read_size);
if (write_data && read_data) if (write_data && read_data)
{ {
@ -880,7 +884,7 @@ static void fal(uint8_t argc, char **argv) {
result = fal_partition_read(part_dev, i, read_data, cur_op_size); result = fal_partition_read(part_dev, i, read_data, cur_op_size);
} }
/* data check */ /* data check */
for (size_t index = 0; index < cur_op_size; index ++) for (rt_size_t index = 0; index < cur_op_size; index ++)
{ {
if (write_data[index] != read_data[index]) if (write_data[index] != read_data[index])
{ {
@ -936,4 +940,3 @@ static void fal(uint8_t argc, char **argv) {
MSH_CMD_EXPORT(fal, FAL (Flash Abstraction Layer) operate.); MSH_CMD_EXPORT(fal, FAL (Flash Abstraction Layer) operate.);
#endif /* defined(RT_USING_FINSH) && defined(FINSH_USING_MSH) */ #endif /* defined(RT_USING_FINSH) && defined(FINSH_USING_MSH) */
#endif /* RT_VER_NUM */