On 04/19/2016 07:48 PM, Salvador Eduardo Tropea wrote:
Now I'm using an FPGA board with 4 MiB of flash, was using one with 128 kiB. So now the time to read/write/verify the whole memory is enough to annoy me ;-) So I tried creating a layout like this:
<-- 00000000:00007e2b fpga 00007e2c:003fffff free <--
Note: yes only 32300 bytes used, the rest can be used for other purposes (0,77%).
And then I used "-i fpga". But it didn't help ... flashrom read the 4 MiB twice (one at the beggining and another for the verification). Looking at the code I found a variable named read_all_first with a comment about the lack of implementation. So I implemented the needed code to:
- Add a command line option to make it 0 (avoiding the big reads).
This option can be used only when at least one image is indicated with -i 2) Skip the big read when read_all_first is 0. Only the regions indicated by the user are actually fetched from the memory. 3) Same for the verification stage.
Just a quick question: How does this mix with range erasure? Most likely, I can't erase 0-7e2b, but I have to erase 0-8000, or even the whole chip. If the chip was not read before erasing, the contents of those areas get destroyed. There are use cases for "-i" with the intention to keep everything in the chip intact except for the selected address range. What you need is a way to differentiate between "must not change" and "I don't care" areas, but the current layout system provides no way to do that. Traditionally "-i" is interpreted as declaring everything outside as "must not change", but your description sound like your patch changes the interpretation to "I don't care".
Regards, Michael Karcher