Skip to content

majianjia/ramdisk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ramdisk

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 块设备。除了能被文件系统格式化,还能当一般的块设备来存储数据。

Usage

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.

Examples

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);

About

A ramdisk device for RT-Thread

Resources

License

Stars

Watchers

Forks

Packages

No packages published