135 lines
4.1 KiB
ReStructuredText
135 lines
4.1 KiB
ReStructuredText
.. 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 <flash_api>` on an SoC internal storage.
|
|
The sample uses :ref:`Flash map API <flash_map_api>` to obtain a device that has one
|
|
partition defined with the label ``storage_partition``, then uses :ref:`Flash API <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!
|