.. zephyr:code-sample:: soc-flash-nrf :name: nRF SoC Internal Storage :relevant-api: flash_interface flash_area_api Use the flash API to interact with the SoC flash. Overview ******** This sample demonstrates using the :ref:`Flash API ` on an SoC internal storage. The sample uses :ref:`Flash map API ` to obtain a device that has one partition defined with the label ``storage_partition``, then uses :ref:`Flash API ` to directly access and modify the contents of a device within the area defined for said partition. Within the sample, user may observe how read/write/erase operations are performed on a device, and how to first check whether device is ready for operation. Building and Running ******************** The sample will be built for any SoC with internal storage, as long as there is a fixed-partition named ``storage_partition`` defined on that internal storage. .. zephyr-app-commands:: :zephyr-app: samples/drivers/soc_flash_nrf :board: nrf52840dk/nrf52840 :goals: build flash :compact: Sample Output ============= .. code-block:: console *** Booting Zephyr OS build v2.7.99-17621-g54832687bcbb *** Nordic nRF5 Internal Storage Sample =================================== Test 1: Flash erase page at 0x82000 Flash erase succeeded! Test 2: Flash write (word array 1) Attempted to write 1122 at 0x82000 Attempted to read 0x82000 Data read: 1122 Data read matches data written. Good! Attempted to write aabb at 0x82004 Attempted to read 0x82004 Data read: aabb Data read matches data written. Good! Attempted to write abcd at 0x82008 Attempted to read 0x82008 Data read: abcd Data read matches data written. Good! Attempted to write 1234 at 0x8200c Attempted to read 0x8200c Data read: 1234 Data read matches data written. Good! Test 3: Flash erase (2 pages at 0x80000) Flash erase succeeded! Test 4: Flash write (word array 2) Attempted to write 1234 at 0x82000 Attempted to read 0x82000 Data read: 1234 Data read matches data written. Good! Attempted to write aabb at 0x82004 Attempted to read 0x82004 Data read: aabb Data read matches data written. Good! Attempted to write abcd at 0x82008 Attempted to read 0x82008 Data read: abcd Data read matches data written. Good! Attempted to write 1122 at 0x8200c Attempted to read 0x8200c Data read: 1122 Data read matches data written. Good! Test 5: Flash erase page at 0x82000 Flash erase succeeded! Test 6: Non-word aligned write (word array 3) Attempted to write 1122 at 0x82001 Attempted to read 0x82001 Data read: 1122 Data read matches data written. Good! Attempted to write aabb at 0x82005 Attempted to read 0x82005 Data read: aabb Data read matches data written. Good! Attempted to write abcd at 0x82009 Attempted to read 0x82009 Data read: abcd Data read matches data written. Good! Attempted to write 1234 at 0x8200d Attempted to read 0x8200d Data read: 1234 Data read matches data written. Good! Attempted to write 1122 at 0x82011 Attempted to read 0x82011 Data read: 1122 Data read matches data written. Good! Attempted to write aabb at 0x82015 Attempted to read 0x82015 Data read: aabb Data read matches data written. Good! Attempted to write abcd at 0x82019 Attempted to read 0x82019 Data read: abcd Data read matches data written. Good! Attempted to write 1234 at 0x8201d Attempted to read 0x8201d Data read: 1234 Data read matches data written. Good! Test 7: Page layout API Offset 0x00041234: belongs to the page 65 of start offset 0x00041000 and the size of 0x00001000 B. Page of number 37 has start offset 0x00025000 and size of 0x00001000 B. Page index resolved properly SoC flash consists of 256 pages. Test 8: Write block size API write-block-size = 1 Finished!