[U-Boot] env: Support multiple environments with varied size/offset/redund

Tim Harvey tharvey at gateworks.com
Thu Feb 14 01:56:06 UTC 2019


commit 7d714a24d7258db1188abe3c7c9c46a1cc7ab8be finalized adding
support for multiple env locations in U-Boot and I'm really thankful
for this work!

I would like to extend this such that each env can have a unique
size/offset/redund configuration. This would affect all the env
drivers so before I code it up I wanted to see if there was agreement
on how this should be done.

We could define a new struct in environment.h:
struct env_details
{
       enum env_location loc;
       unsigned long size;
       unsigned long offset;
       unsigned long offset_redund;
};

This can be added as a parameter to env_get_location(..) and would get
initialized such that size=CONFIG_ENV_SIZE, offset=CONFIG_ENV_OFFSET,
offset_redund=CONFIG_ENV_OFFSET_REDUND to that current users could do
nothing for current before but boards that are interested could differ
the details of the storage based on the type.

Then these details would need to be passed to each env drivers
init/load/save functions to be used instead of the currently hard
coded configs (CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, and
CONFIG_ENV_OFFSET_REDUND). There are likely some more I'll run into
along the way such as hardware partition etc.

Any opposing thoughts or suggestions before I code this up and submit a patch?

Tim


More information about the U-Boot mailing list