未验证 提交 c16eaf55 编写于 作者: Thomas_Fly's avatar Thomas_Fly 提交者: GitHub

[bsp/stm32l496_ali] add the on-chip flash (#6061)

* [bsp/stm32l496_ali] add the on-chip flash

* [bsp/stm32l496_ali]add Kconfig
Co-authored-by: mysterywolf's avatarMeco Man <920369182@qq.com>
上级 33be34d8
...@@ -63,6 +63,14 @@ menu "On-chip Peripheral Drivers" ...@@ -63,6 +63,14 @@ menu "On-chip Peripheral Drivers"
config BSP_USING_ON_CHIP_FLASH config BSP_USING_ON_CHIP_FLASH
bool "Enable on-chip FLASH" bool "Enable on-chip FLASH"
select RT_USING_FAL
default n
config BSP_USING_ON_CHIP_FLASH_FATFS
bool "Enable onchip flash with FatFS"
depends on BSP_USING_ON_CHIP_FLASH
select RT_USING_DFS
select RT_USING_DFS_ELMFAT
default n default n
menuconfig BSP_USING_SPI menuconfig BSP_USING_SPI
......
...@@ -18,6 +18,9 @@ if GetDepend(['BSP_USING_SPI_LCD']): ...@@ -18,6 +18,9 @@ if GetDepend(['BSP_USING_SPI_LCD']):
if GetDepend(['BSP_USING_SDCARD']): if GetDepend(['BSP_USING_SDCARD']):
src += Glob('ports/sdcard_port.c') src += Glob('ports/sdcard_port.c')
if GetDepend(['BSP_USING_ON_CHIP_FLASH']):
src += Glob('mnt.c')
path = [cwd] path = [cwd]
path += [cwd + '/CubeMX_Config/Inc'] path += [cwd + '/CubeMX_Config/Inc']
path += [cwd + '/ports'] path += [cwd + '/ports']
......
...@@ -14,30 +14,40 @@ ...@@ -14,30 +14,40 @@
#include "fal.h" #include "fal.h"
#include <dfs_fs.h> #include <dfs_fs.h>
#define DBG_TAG "mnt"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
#ifdef RT_USING_DFS #ifdef RT_USING_DFS
#include <dfs_fs.h> #include <dfs_fs.h>
int mnt_init(void) int mnt_init(void)
{ {
#ifdef BSP_USING_ON_CHIP_FLASH
fal_init(); fal_init();
#define FS_PARTITION_NAME "flash" #define FS_PARTITION_NAME "flash"
struct rt_device *mtd_dev; struct rt_device *mtd_dev;
mtd_dev = fal_blk_device_create(FS_PARTITION_NAME); mtd_dev = fal_blk_device_create(FS_PARTITION_NAME);
if (!mtd_dev)
{
LOG_E("Failed to create device.\n");
}
#ifdef BSP_USING_ON_CHIP_FLASH_FATFS
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0) if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
{ {
rt_kprintf("Filesystem initialized!"); LOG_I("Filesystem initialized!");
} }
else else
{ {
dfs_mkfs("elm", FS_PARTITION_NAME); dfs_mkfs("elm", FS_PARTITION_NAME);
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) != 0) if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) != 0)
{ {
rt_kprintf("Failed to initialize filesystem!"); LOG_I("Failed to initialize filesystem!");
} }
} }
#endif /* BSP_USING_ON_CHIP_FLASH_FATFS */
#endif /* BSP_USING_ON_CHIP_FLASH */
return 0; return 0;
} }
INIT_ENV_EXPORT(mnt_init); INIT_ENV_EXPORT(mnt_init);
#endif #endif /* RT_USING_DFS */
...@@ -27,8 +27,8 @@ extern const struct fal_flash_dev stm32_onchip_flash; ...@@ -27,8 +27,8 @@ extern const struct fal_flash_dev stm32_onchip_flash;
/* partition table */ /* partition table */
#define FAL_PART_TABLE \ #define FAL_PART_TABLE \
{ \ { \
{FAL_PART_MAGIC_WROD, "app", "onchip_flash", 0, 496 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "app", "onchip_flash", 0, 512 * 1024, 0}, \
{FAL_PART_MAGIC_WROD, "param", "onchip_flash", 496* 1024, 16 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, "flash", "onchip_flash", 512* 1024, 512 * 1024, 0}, \
} }
#endif /* FAL_PART_HAS_TABLE_CFG */ #endif /* FAL_PART_HAS_TABLE_CFG */
#endif /* _FAL_CFG_H_ */ #endif /* _FAL_CFG_H_ */
...@@ -96,10 +96,15 @@ menu "On-chip Peripheral Drivers" ...@@ -96,10 +96,15 @@ menu "On-chip Peripheral Drivers"
endif endif
config BSP_USING_ON_CHIP_FLASH config BSP_USING_ON_CHIP_FLASH
bool "Enable on-chip FLASH"
select RT_USING_FAL
default n
config BSP_USING_ON_CHIP_FLASH_FATFS
bool "Enable onchip flash with FatFS"
depends on BSP_USING_ON_CHIP_FLASH
select RT_USING_DFS select RT_USING_DFS
select RT_USING_DFS_ELMFAT select RT_USING_DFS_ELMFAT
select RT_USING_FAL
bool "Enable on-chip FLASH"
default n default n
config BSP_USING_USBD config BSP_USING_USBD
......
...@@ -13,8 +13,7 @@ CubeMX_Config/Src/stm32l4xx_hal_msp.c ...@@ -13,8 +13,7 @@ CubeMX_Config/Src/stm32l4xx_hal_msp.c
''') ''')
if GetDepend(['BSP_USING_ON_CHIP_FLASH']): if GetDepend(['BSP_USING_ON_CHIP_FLASH']):
src += Glob('mnt_onchip.c') src += Glob('mnt.c')
path = [cwd] path = [cwd]
path += [cwd + '/CubeMX_Config/Inc'] path += [cwd + '/CubeMX_Config/Inc']
......
/*
* Copyright (c) 2006-2022, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2022-06-08 supperthomas first version
*/
#include <rtthread.h>
#include <rtdevice.h>
#include "fal.h"
#define DBG_TAG "mnt"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
#ifdef RT_USING_DFS
#include <dfs_fs.h>
int mnt_init(void)
{
#ifdef BSP_USING_ON_CHIP_FLASH
fal_init();
#define FS_PARTITION_NAME "flash"
struct rt_device *mtd_dev;
mtd_dev = fal_blk_device_create(FS_PARTITION_NAME);
if (!mtd_dev)
{
LOG_E("Failed to create device.\n");
}
#ifdef BSP_USING_ON_CHIP_FLASH_FATFS
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
{
LOG_I("Filesystem initialized!");
}
else
{
dfs_mkfs("elm", FS_PARTITION_NAME);
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) != 0)
{
LOG_E("Failed to initialize filesystem!");
}
}
#endif /* BSP_USING_ON_CHIP_FLASH_FATFS */
#endif /* BSP_USING_ON_CHIP_FLASH */
return 0;
}
INIT_ENV_EXPORT(mnt_init);
#endif /* RT_USING_DFS */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册