[PATCH 2/2] arm64: imx8mp: Read item and serial number from EEPROM ID page on DH i.MX8MP DHCOM
Marek Vasut
marex at denx.de
Wed Oct 23 14:41:09 CEST 2024
On 10/23/24 2:18 PM, Christoph Niedermaier wrote:
[...]
>> You do not, the following automatically reserves space on stack when
>> called and frees it up upon function return:
>>
>> function foo() {
>> u8 array[12];
>> ...
>> stuff(array);
>> ...
>> }
>
> Sorry, I expressed myself incorrectly here. Of course I meant that
> I don't want to reserve memory on the stack for the EEPROM ID page
> in the board_init() function.
Why ?
>>> I want to handle
>>> size and caching in the function dh_get_value_from_eeprom_id_page(). So I don't
>>> want to deal with size and structure in the function board_init(). For me, the use
>>> of a static variable is OK, but you don't like it. Do you know how I can do this
>>> without assigning a static variable, but not allocate the memory somewhere in a
>>> caller function?
>> Even the static variable space is allocated somewhere, either in .bss or
>> .data section, except with static variable(s) the memory persists
>> throughout the lifetime of U-Boot because their content has to be
>> retained even when the function using their content returns.
>>
>> With variable(s) allocated on stack (which is majority of variable), the
>> memory allocation happens on entry to the function and the memory is
>> automatically freed on exit from the function.
>>
>> It is perfectly fine to call some wrapper superfunction from
>> board_init() which holds the array on stack and calls all the EEPROM
>> parser/handler functions:
>>
>> eeprom_superwrapper() {
>> u8 eeprom[64];
>> ...
>> eeprom_do_stuff1(eeprom);
>> eeprom_do_stuff2(eeprom);
>> ...
>> }
>>
>> board_init() {
>> ...
>> eeprom_superwrapper();
>> ...
>> }
>
> That's not what I'm looking for. Do you have another solution?
No. I do not understand what is the problem with allocating 64 Bytes on
stack ?
More information about the U-Boot
mailing list