README.rst
1.. zephyr:code-sample:: soc-flash-nrf
2 :name: nRF SoC Internal Storage
3 :relevant-api: flash_interface flash_area_api
4
5 Use the flash API to interact with the SoC flash.
6
7Overview
8********
9
10This sample demonstrates using the :ref:`Flash API <flash_api>` on an SoC internal storage.
11The sample uses :ref:`Flash map API <flash_map_api>` to obtain a device that has one
12partition defined with the label ``storage_partition``, then uses :ref:`Flash API <flash_api>`
13to directly access and modify the contents of a device within the area defined for said
14partition.
15
16Within the sample, user may observe how read/write/erase operations
17are performed on a device, and how to first check whether device is
18ready for operation.
19
20Building and Running
21********************
22
23The sample will be built for any SoC with internal storage, as long as
24there is a fixed-partition named ``storage_partition`` defined
25on that internal storage.
26
27.. zephyr-app-commands::
28 :zephyr-app: samples/drivers/soc_flash_nrf
29 :board: nrf52840dk/nrf52840
30 :goals: build flash
31 :compact:
32
33Sample Output
34=============
35
36.. code-block:: console
37
38 *** Booting Zephyr OS build v2.7.99-17621-g54832687bcbb ***
39
40 Nordic nRF5 Internal Storage Sample
41 ===================================
42
43 Test 1: Flash erase page at 0x82000
44 Flash erase succeeded!
45
46 Test 2: Flash write (word array 1)
47 Attempted to write 1122 at 0x82000
48 Attempted to read 0x82000
49 Data read: 1122
50 Data read matches data written. Good!
51 Attempted to write aabb at 0x82004
52 Attempted to read 0x82004
53 Data read: aabb
54 Data read matches data written. Good!
55 Attempted to write abcd at 0x82008
56 Attempted to read 0x82008
57 Data read: abcd
58 Data read matches data written. Good!
59 Attempted to write 1234 at 0x8200c
60 Attempted to read 0x8200c
61 Data read: 1234
62 Data read matches data written. Good!
63
64 Test 3: Flash erase (2 pages at 0x80000)
65 Flash erase succeeded!
66
67 Test 4: Flash write (word array 2)
68 Attempted to write 1234 at 0x82000
69 Attempted to read 0x82000
70 Data read: 1234
71 Data read matches data written. Good!
72 Attempted to write aabb at 0x82004
73 Attempted to read 0x82004
74 Data read: aabb
75 Data read matches data written. Good!
76 Attempted to write abcd at 0x82008
77 Attempted to read 0x82008
78 Data read: abcd
79 Data read matches data written. Good!
80 Attempted to write 1122 at 0x8200c
81 Attempted to read 0x8200c
82 Data read: 1122
83 Data read matches data written. Good!
84
85 Test 5: Flash erase page at 0x82000
86 Flash erase succeeded!
87
88 Test 6: Non-word aligned write (word array 3)
89 Attempted to write 1122 at 0x82001
90 Attempted to read 0x82001
91 Data read: 1122
92 Data read matches data written. Good!
93 Attempted to write aabb at 0x82005
94 Attempted to read 0x82005
95 Data read: aabb
96 Data read matches data written. Good!
97 Attempted to write abcd at 0x82009
98 Attempted to read 0x82009
99 Data read: abcd
100 Data read matches data written. Good!
101 Attempted to write 1234 at 0x8200d
102 Attempted to read 0x8200d
103 Data read: 1234
104 Data read matches data written. Good!
105 Attempted to write 1122 at 0x82011
106 Attempted to read 0x82011
107 Data read: 1122
108 Data read matches data written. Good!
109 Attempted to write aabb at 0x82015
110 Attempted to read 0x82015
111 Data read: aabb
112 Data read matches data written. Good!
113 Attempted to write abcd at 0x82019
114 Attempted to read 0x82019
115 Data read: abcd
116 Data read matches data written. Good!
117 Attempted to write 1234 at 0x8201d
118 Attempted to read 0x8201d
119 Data read: 1234
120 Data read matches data written. Good!
121
122 Test 7: Page layout API
123 Offset 0x00041234:
124 belongs to the page 65 of start offset 0x00041000
125 and the size of 0x00001000 B.
126 Page of number 37 has start offset 0x00025000
127 and size of 0x00001000 B.
128 Page index resolved properly
129 SoC flash consists of 256 pages.
130
131 Test 8: Write block size API
132 write-block-size = 1
133
134 Finished!
135