Filesystem in RTEMS

xuelin.tian at qkmtech.com xuelin.tian at qkmtech.com
Mon Oct 23 09:33:00 UTC 2017


Could you please share your flash driver with me? 

In my code, my flash is accessed via a handler defined in Xilinx BSP. 

typedef struct {
    rtems_jffs2_flash_control super;
    XQspiPs *flash_instance;
} flash_control;

static flash_control *get_flash_control(rtems_jffs2_flash_control *super) {
    return (flash_control *)super;
}

static int flash_read(
    rtems_jffs2_flash_control *super,
    uint32_t offset,
    unsigned char *buffer,
    size_t length) {

    flash_control *self = get_flash_control(super);
    XQspiPs *flash_handle = self->flash_instance;

    FlashRead(flash_handle, offset, length, QUAD_READ_CMD, temp_buffer, buffer);
    return S25FL256S_SUCCESS;
}

static int flash_write(
    rtems_jffs2_flash_control *super,
    uint32_t offset,
    unsigned char *buffer,
    size_t length) {

    flash_control *self = get_flash_control(super);
    XQspiPs *flash_handle = self->flash_instance;
    uint32_t num = length / S25FL256S_PAGE_SIZE;
    uint32_t remaining = length % S25FL256S_PAGE_SIZE;
    uint32_t written;

    for (written = 0; written < num; written++) {
        FlashWrite(flash_handle, beginning + written*S25FL256S_PAGE_SIZE, \
            S25FL256S_PAGE_SIZE, WRITE_CMD, \
            buffer + written*S25FL256S_PAGE_SIZE);
    }
    if (remaining) {
        FlashWrite(flash_handle, beginning + num*S25FL256S_PAGE_SIZE, \
            remaining, WRITE_CMD, buffer + num*S25FL256S_PAGE_SIZE);
    }
    return S25FL256S_SUCCESS;
}

where, my FlashRead and FlashWrite functions will invoke the functions defined in Xilinx BSP to transfer data from/into flash. 

I do not know where the problem is...



Best wishes,
xuelin.tian at qkmtech.com
 
From: Chris Johns
Date: 2017-10-23 12:19
To: xuelin.tian at qkmtech.com; Sebastian Huber
CC: users at rtems.org
Subject: Re: Filesystem in RTEMS
On 23/10/2017 12:53, xuelin.tian at qkmtech.com wrote:
> Yes, Everything is going well, if I erase the flash before use. 
>
> But, I need to store some files into flash, and reuse them when I restart my
> system. I can not erase the flash every time. 
 
Oh I see what you are saying.
 
I am using the JFFS2 on a Zynq with a 64M byte SPI flash and seeing no issues. I
suggest you check your flash driver and make sure you are writing to the flash
correctly.
 
Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20171023/5fc40c10/attachment-0002.html>


More information about the users mailing list