In gmane.os.ecos.general, you wrote:
That's the exact same situation I'm in: the top 1MB contains
that's loaded into an FPGA by hardware on startup (before the
CPU starts).
Our setup was different. The CPU downloaded the bitstream in the
FPGA. So erasing the flash did not brick the system. It just mean the
FPGA did not "boot".
However, I don't want "fis init -f" to erase that block, and it
appears that it would do so as the code exists now. Is that
correct?
It looks like that.
I'd like to be able to do that as well, so perhaps my proposed
solution isn't the best.
What I really want is:
* A reserved block in the top of flash for the CPLD data.
That block must be left untouched by "fis init -f".
It would be cool if that block showed up in fis list and
could be updated using RedBoot as long as it can't be
deleted by "fis del" and re-used for something else.
It sounds like you need to add your own entries to the table,
in the same way cfg/fis is added to the table and fis init
known not to touch them.
I think it already works that way for the reserved space at
the bottom of flash. There's an option called
CYGOPT_REDBOOT_FIS_RESERVED_BASE with this description:
If an area of FLASH is reserved, it is informative to have
a fis entry describing it. This option controls creation
of such an entry by default in the fis init command.
I don't think this is going to be a generic solution which you
can contribute back. It seems to be too specific to your
platform.
I'm going to have to test it a bit, but I think the
FIS_RESERVED_BASE option does almost exactly what I want. What
I'm not positive there's a RedBoot command that will allow the
user to write a block of data into the reserved space. I think
that "fis create -f <addr>" will do that, but I'm not sure yet.
I just need the same thing at the top of flash as well. :)