A ramdisk block device based on RT-Thread device driver framework.
It works as a block device which allows to be format to most of the filesystems supported by RT-Thread.
这是一个基于 RTT block device 的 ramdisk 块设备。除了能被文件系统格式化,还能当一般的块设备来存储数据。
Call to create a ramdisk block device.
调用以下接口即可新建一个 ramdisk 设备,并注册到 RTT 的块设备链表。
ramdisk_init(char *name, rt_uint8_t* addr, rt_size_t block_size, rt_size_t num_block);
name: device name.
addr: the start address of the memory block. Can pass NULL to use stack memory.
block_size: block size in byte.
num_block: the number of blocks.
This example does:
- Initialise a ramdisk with size of 2MB, block size of 512.
- Format it using elmFAT and mount it on root directory.
- Then, create a few folders as mounting point for SD card or storage temporary caching files.
/* Initialize the filesystem */
int filesystem_init(void)
{
// ramdisk as root
if(rt_device_find("ramdisk0"))
{
// format the ramdisk
mkfs("elm", "ramdisk0");
/* mount ramdisk0 as root directory */
if (dfs_mount("ramdisk0", "/", "elm", 0, RT_NULL) == 0)
{
LOG_I("ramdisk mounted on \"/\".");
/* now you can create dir dynamically. */
mkdir("/sd", 0x777);
mkdir("/cache", 0x777);
mkdir("/download", 0x777);
}
else
{
LOG_E("root folder creation failed!\n");
}
return RT_EOK;
}
LOG_E("cannot find ramdisk device");
return RT_ERROR;
}
INIT_ENV_EXPORT(filesystem_init);
int ramdisk_device_init(void)
{
ramdisk_init("ramdisk0", NULL, 512, 4096);
return RT_EOK;
}
INIT_DEVICE_EXPORT(ramdisk_device_init);