RIOT-OS / RIOT

RIOT - The friendly OS for IoT
https://riot-os.org
GNU Lesser General Public License v2.1
4.9k stars 1.98k forks source link

Order of auto_init functions #13541

Open jue89 opened 4 years ago

jue89 commented 4 years ago

Description

I am using a cryptoauthlib-compatible chip for a board I am working on. It features a user-programmable config zone, which holds the EUI-64 of the device.

I would like to use this as the source for luid_base() to bring the EUI-64 to the attached network interfaces.

I started implementing luid_base() by fetching the EUI-64 from the crypto chip on-the-fly. But after doing so RIOT isn't able to boot.

The problem is luid_base() gets called before the cryptoauthlib auto_init function has been executed resulting in a failed boot-up.

I was able to resolve this problem by reordering the auto_init. The old order:

The new order:

Is anyone else experiencing similar difficulties? Or am I using RIOT wrongly?

benpicco commented 4 years ago

I think what you really want is #12641 This unfortunately got stuck when it came to the right way to handle multiple netifs and multiple EUIs…

I have a branch where I started assigning unique (ascending) IDs to netifs so those can be used by board_get_eui64() - I should probably finish that.

jue89 commented 4 years ago

Nice! This would resolve my conflict. The only remaining problem is that the netif auto_init functions are called before the cryptoauthlib auto_init function. Would it be an acceptable solution to reorder the auto_init functions?

benpicco commented 4 years ago

The order probably needs a cleanup - there is one ongoing already right now: #13542

miri64 commented 4 years ago

The order probably needs a cleanup - there is one ongoing already right now: #13542

That one does not reorder the function calls (and since it is already quite big and not very easy to track, I would prefer to do re-ordering in a separate PR).

benpicco commented 4 years ago

Yes, but if @jue89 wants to re-order something he should probably wait for this PR to go through first, otherwise a nasty merge conflict is guaranteed.