@@ -118,8 +118,60 @@ Programming and Debugging (A55)
118
118
119
119
.. zephyr :board-supported-runners ::
120
120
121
- U-Boot "cpu" command is used to load and kick Zephyr to Cortex-A secondary Core, Currently
122
- it is supported in : `Real-Time Edge U-Boot `_ (use the branch "uboot_vxxxx.xx-y.y.y,
121
+ There are multiple method to program and debug Zephyr on the A55 core:
122
+
123
+ Option 1. Boot Zephyr by Using JLink Runner
124
+ ===========================================
125
+
126
+ The default runner for the board is JLink, connect the EVK board's JTAG connector to
127
+ the host computer using a J-Link debugger, power up the board and stop the board at
128
+ U-Boot command line, execute the following U-boot command to disable D-Cache:
129
+
130
+ .. code-block :: console
131
+
132
+ dcache off
133
+
134
+ then use "west flash" or "west debug" command to load the zephyr.bin
135
+ image from the host computer and start the Zephyr application on A55 core0.
136
+
137
+ Flash and Run
138
+ -------------
139
+
140
+ Here is an example for the :zephyr:code-sample: `synchronization ` application.
141
+
142
+ .. zephyr-app-commands ::
143
+ :zephyr-app: samples/synchronization
144
+ :host-os: unix
145
+ :board: imx93_evk/mimx9352/a55
146
+ :goals: flash
147
+
148
+ Then the following log could be found on UART2 console:
149
+
150
+ .. code-block :: console
151
+
152
+ *** Booting Zephyr OS build Booting Zephyr OS build v3.7.0-2055-g630f27a5a867 ***
153
+ thread_a: Hello World from cpu 0 on imx93_evk!
154
+ thread_b: Hello World from cpu 0 on imx93_evk!
155
+ thread_a: Hello World from cpu 0 on imx93_evk!
156
+ thread_b: Hello World from cpu 0 on imx93_evk!
157
+
158
+ Debug
159
+ -----
160
+
161
+ Here is an example for the :zephyr:code-sample: `hello_world ` application.
162
+
163
+ .. zephyr-app-commands ::
164
+ :zephyr-app: samples/hello_world
165
+ :host-os: unix
166
+ :board: imx93_evk/mimx9352/a55
167
+ :goals: debug
168
+
169
+ Option 2. Boot Zephyr by Using U-Boot Command
170
+ =============================================
171
+
172
+ U-Boot "go" command can be used to start Zephyr on A55 core0 and U-Boot "cpu" command
173
+ is used to load and kick Zephyr to the other A55 secondary Cores. Currently "cpu" command
174
+ is supported in : `Real-Time Edge U-Boot `_ (use the branch "uboot_vxxxx.xx-y.y.y,
123
175
xxxx.xx is uboot version and y.y.y is Real-Time Edge Software version, for example
124
176
"uboot_v2023.04-2.9.0" branch is U-Boot v2023.04 used in Real-Time Edge Software release
125
177
v2.9.0), and pre-build images and user guide can be found at `Real-Time Edge Software `_.
@@ -129,23 +181,45 @@ v2.9.0), and pre-build images and user guide can be found at `Real-Time Edge Sof
129
181
.. _Real-Time Edge Software :
130
182
https://www.nxp.com/rtedge
131
183
132
- Copy the compiled ``zephyr.bin `` to the first FAT partition of the SD card and
133
- plug the SD card into the board. Power it up and stop the u-boot execution at
134
- prompt.
184
+ Step 1: Download Zephyr Image into DDR Memory
185
+ ---------------------------------------------
186
+
187
+ Firstly need to download Zephyr binary image into DDR memory, it can use tftp:
188
+
189
+ .. code-block :: console
190
+
191
+ tftp 0xd0000000 zephyr.bin
135
192
136
- Use U-Boot to load and kick zephyr.bin to Cortex-A55 Core1:
193
+ Or copy the Zephyr image ``zephyr.bin `` SD card and plug the card into the board, for example
194
+ if copy to the FAT partition of the SD card, use the following U-Boot command to load the image
195
+ into DDR memory (assuming the SD card is dev 1, fat partition ID is 1, they could be changed
196
+ based on actual setup):
137
197
138
198
.. code-block :: console
139
199
140
- fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; cpu 1 release 0xd0000000
200
+ fatload mmc 1:1 0xd0000000 zephyr.bin;
141
201
202
+ Step 2: Boot Zephyr
203
+ -------------------
142
204
143
- Or use the following command to kick zephyr.bin to Cortex-A55 Core0 :
205
+ Then use the following command to boot Zephyr on the core0 :
144
206
145
207
.. code-block :: console
146
208
147
- fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; go 0xd0000000
209
+ dcache off; icache flush; go 0xd0000000;
210
+
211
+ Or use "cpu" command to boot from secondary Core, for example Core1:
212
+
213
+ .. code-block :: console
214
+
215
+ dcache flush; icache flush; cpu 1 release 0xd0000000
216
+
217
+ Option 3. Boot Zephyr by Using Remoteproc under Linux
218
+ =====================================================
148
219
220
+ When running Linux on the A55 core, it can use the remoteproc framework to load and boot Zephyr,
221
+ refer to Real-Time Edge user guide for more details. Pre-build images and user guide can be found
222
+ at `Real-Time Edge Software `_.
149
223
150
224
Use this configuration to run basic Zephyr applications and kernel tests,
151
225
for example, with the :zephyr:code-sample: `synchronization ` sample:
0 commit comments