This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Which are different memory storage option?

Hello, I am using pca10028 and sdk 12.2. I have interfaced temp sensor with nrf51 and now I want to store that data continuously in memory of nrf51. I want to store min 4k sample consisting of 2 bytes of data. So should I prefer fds or pstorage or fstorage? Can I get example code to do this? Also I am am facing difficulty in displaying output through uart although code doesnt gives me error. I am attaching my code . Please let me know suggestions. Thanks, Shailav

error - debug1.PNG

  • I started getting error as ._build\nrf51422_xxac.axf: Error: L6218E: Undefined symbol fds_test_init (referred from main.o). I know I messed up with sdk_config file but can you tell me what lines should I add to fix this error.

  • FormerMember
    0 FormerMember in reply to FormerMember

    Below is the needed FDS part in sdk_config.h (nRF51822):

     // <e> FDS_ENABLED - fds - Flash data storage module
    //==========================================================
    #ifndef FDS_ENABLED
    #define FDS_ENABLED 1
    #endif
    #if  FDS_ENABLED
    // <o> FDS_OP_QUEUE_SIZE - Size of the internal queue. 
    #ifndef FDS_OP_QUEUE_SIZE
    #define FDS_OP_QUEUE_SIZE 4
    #endif
    
    // <o> FDS_CHUNK_QUEUE_SIZE - Determines how many @ref fds_record_chunk_t structures can be buffered at any time. 
    #ifndef FDS_CHUNK_QUEUE_SIZE
    #define FDS_CHUNK_QUEUE_SIZE 8
    #endif
    
    // <o> FDS_MAX_USERS - Maximum number of callbacks that can be registered. 
    #ifndef FDS_MAX_USERS
    #define FDS_MAX_USERS 8
    #endif
    
    // <o> FDS_VIRTUAL_PAGES - Number of virtual flash pages to use. 
    // <i> One of the virtual pages is reserved by the system for garbage collection.
    // <i> Therefore, the minimum is two virtual pages: one page to store data and
    // <i> one page to be used by the system for garbage collection. The total amount
    // <i> of flash memory that is used by FDS amounts to @ref FDS_VIRTUAL_PAGES
    // <i> @ref FDS_VIRTUAL_PAGE_SIZE * 4 bytes.
    
    #ifndef FDS_VIRTUAL_PAGES
    #define FDS_VIRTUAL_PAGES 3
    #endif
    
    // <o> FDS_VIRTUAL_PAGE_SIZE  - The size of a virtual page of flash memory, expressed in number of 4-byte words.
     
    
    // <i> By default, a virtual page is the same size as a physical page.
    // <i> The size of a virtual page must be a multiple of the size of a physical page.
    // <256=> 256 
    // <512=> 512 
    // <1024=> 1024 
    
    #ifndef FDS_VIRTUAL_PAGE_SIZE
    #define FDS_VIRTUAL_PAGE_SIZE 256
    #endif
    
    #endif //FDS_ENABLED
    // </e>
    
    // <e> FSTORAGE_ENABLED - fstorage - Flash storage module
    //==========================================================
    #ifndef FSTORAGE_ENABLED
    #define FSTORAGE_ENABLED 1
    #endif
    #if  FSTORAGE_ENABLED
    // <o> FS_QUEUE_SIZE - Configures the size of the internal queue. 
    // <i> Increase this if there are many users, or if it is likely that many
    // <i> operation will be queued at once without waiting for the previous operations
    // <i> to complete. In general, increase the queue size if you frequently receive
    // <i> @ref FS_ERR_QUEUE_FULL errors when calling @ref fs_store or @ref fs_erase.
    
    #ifndef FS_QUEUE_SIZE
    #define FS_QUEUE_SIZE 4
    #endif
    
    // <o> FS_OP_MAX_RETRIES - Number attempts to execute an operation if the SoftDevice fails. 
    // <i> Increase this value if events return the @ref FS_ERR_OPERATION_TIMEOUT
    // <i> error often. The SoftDevice may fail to schedule flash access due to high BLE activity.
    
    #ifndef FS_OP_MAX_RETRIES
    #define FS_OP_MAX_RETRIES 3
    #endif
    
    // <o> FS_MAX_WRITE_SIZE_WORDS - Maximum number of words to be written to flash in a single operation. 
    // <i> Tweaking this value can increase the chances of the SoftDevice being
    // <i> able to fit flash operations in between radio activity. This value is bound by the
    // <i> maximum number of words which the SoftDevice can write to flash in a single call to
    // <i> @ref sd_flash_write, which is 256 words for nRF51 ICs and 1024 words for nRF52 ICs.
    
    #ifndef FS_MAX_WRITE_SIZE_WORDS
    #define FS_MAX_WRITE_SIZE_WORDS 256
    #endif
    
    #endif //FSTORAGE_ENABLED
    // </e>
    
  • Hello Kristin, Earlier you mentioned the link for zip project ble_app_hrs-fds-test-github.zip but that link is not working. Please let me know some other link if that's broken.

    Thanks

  • FormerMember
    0 FormerMember in reply to FormerMember

    I have updated the link.

  • My this statement while (fds_record_find(FILE_ID, REC_KEY, &record_desc, &ftok) == FDS_SUCCESS) in read function does not returns succcess. Please find my code here

    Thanks

Related