Hi Tomas,

For some flash operations we need to backup/restore the target memory. e.g. 
after setting flash breakpoints. As I see load_image does not support a backup 
feature.

On 13 Apr 2022, at 18:25, Tomas Vanek 
<tom_...@users.sourceforge.net<mailto:tom_...@users.sourceforge.net>> wrote:

[External: This email originated outside Espressif]
On 13/04/2022 15:21, Erhan Kurubas wrote:
+Tomas Vanek for his comment.
________________________________
From: Erhan Kurubas
Sent: Friday, April 8, 2022 11:57 PM
To: Antonio Borneo <borneo.anto...@gmail.com><mailto:borneo.anto...@gmail.com>
Subject: alternative workarea config

Hi Antonio,

Espressif targets use 2 different work area configs in sram for the code and 
data sections during stub flasher operations.

Currently upstream repo support only one command set. So, we added another 
command to specify working area for the data space. (-alt-work-area-xxx)

https://github.com/espressif/openocd-esp32/blob/master/tcl/target/esp_common.cfg#L22
https://github.com/espressif/openocd-esp32/blob/master/src/target/target.c#L5345

Before creating a patch, I would like to ask your opinion for this approach.

Thanks in advance for your support.

Hi Erhan,

you're right the current single work-area system in OpenOCD is not suitable for 
Harward architecture CPU.

Unfortunately some features of the solution used in esp fork seems me 
unacceptable:
1) I don't like the working area maintenance code is completely duplicated.
 target->working_areas is already implemented as the list, so adding properties 
like code_only and data_only
to struct working_area would do the job

2) The comment
https://github.com/espressif/openocd-esp32/blob/master/src/flash/nor/esp_flash.c#L44
reads:
 * It is important that the both stub sections reside
 * at the beginning of respective working areas because stub code is linked as 
ELF and therefore it is
 * position dependent. So target memory for stub code and data must be 
allocated first.

My question is why a working area is used at all if the both code and data 
should load at fixed addresses?
The OpenOCD concept of working area is suitable for (small chunks of) position 
independent code, buffers, stack.
I would recommend storing the huge stub as an elf file and using load_image.

Tom



Reply via email to