RT-Thread Studio 下使用 HPM6750EVK 挂载 SPI FLASH 作为文件系统

一、配置RT-Thread Studio

        本章使用野火的HPM6750IVM2作为测试开发板。
        第一步需要将FAL、DFS 、Fatfs组件打开,因为需要FAL的帮助来划分分区和提供访问SPI FLASH的接口以及文件系统的接口。 

二、挂载文件系统

        首先在已经创建好的项目下的 board 文件夹下找到 fal_cfg.h 文件,在 FAL_PART_TABLE 宏定义下划分一个新的区域。文章中定义为 filesystem 。

#define FAL_PART_TABLE                                                               \
{                                                                                    \
    {FAL_PART_MAGIC_WORD,       "app", NOR_FLASH_DEV_NAME,         0,           4*1024*1024,    0}, \
    {FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME,         4*1024*1024, 3*1024*1024,    0}, \
    {FAL_PART_MAGIC_WORD,  "download", NOR_FLASH_DEV_NAME,         7*1024*1024, 8*1024*1024,    0}, \
    {FAL_PART_MAGIC_WORD,   "flashdb", NOR_FLASH_DEV_NAME,        15*1024*1024, 1*1024*1024,    0}, \
    {FAL_PART_MAGIC_WROD, "filesystem",NOR_FLASH_DEV_NAME, (512 + 1024 + 512 + 7 * 1024) * 1024,  7 * 1024 * 1024, 0}, \
}

然后在main函数下初始化块设备和挂载块设备到文件系统上。

#define FS_PARTITION_NAME  "filesystem"    

/* 在 spi flash 中名为 "filesystem" 的分区上创建一个块设备 */
struct rt_device *flash_dev = fal_blk_device_create(FS_PARTITION_NAME);
if (flash_dev == NULL)
{
    rt_kprintf("Can't create a block device on '%s' partition.\n", FS_PARTITION_NAME);
}
else
{
    rt_kprintf("Create a block device on the %s partition of flash successful.\n", FS_PARTITION_NAME);
}

/* 挂载 spi flash 中名为 "filesystem" 的分区上的文件系统. 参数 快设备名称 - 挂载路劲 - 文件格式 */
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
{
    rt_kprintf("Filesystem initialized!\n");
}
else
{
    rt_kprintf("Failed to initialize filesystem!\n");
    rt_kprintf("You should create a filesystem on the block device first!\n");
}

在完成上面操作之后运行代码会报下面的错误:
 1. The sector size of device is greater than the sector size of FAT.
 2. Failed to initialize filesystem.
第一个问题的解决方法:

rtconfig.h 文件
#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096   之前默认是512,改为4096

dfs.h 文件
#define SECTOR_SIZE              4096  之前默认是512,改为4096

第二个问题的解决方法:

//造成初始化不成功的原因是没有将块设备格式化为文件系统格式
//故在 RT-Thread studio 下的 msh 命令将块设备格式, 再次重新跑代码就能挂载上
mkfs -t elm filesystem

三、实验结果

        SPI FLASH 划分的区域被成功初始化为块设备并挂载在文件系统上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值