Hello everyone,

I have decided to work on tackling this issue:
https://github.com/apache/nuttx/issues/11321

The crux of it is: many boards rely on NSH to initialize
peripherals/board-level systems. This is done through the user-space call
to boardctl(BOARDIOC_INIT). However, BOARD_LATE_INITIALIZE also does the
same thing. This is confusing for many users and also results in boards
having out-of-sync init methods (i.e. late_init does something different
than app_init, but they shouldn't). To simplify the initialization and
reduce user confusion, the suggestion was to completely remove
BOARDIOC_INIT/board_app_initialize and NSH_ARCHINIT in favour of
BOARD_LATE_INITIALIZE. This is a massive breaking change and was put on the
to-do list for 13.0.0 but it hadn't been picked up yet and we're still in
time for 13.0.0.

I have a draft PR open here to the kernel with most of the boards adhering
to the new changes: https://github.com/apache/nuttx/pull/18408

And here to the apps repo removing references to BOARDIOC_INIT and
NSH_ARCHINIT: https://github.com/apache/nuttx-apps/pull/3405

These PRs are large, introduce breaking changes, and touch many different
boards (not all of which I am able to test on my limited hardware set). I
would appreciate eyes on these PRs to see if there are any flaws in my
initial approach and also in case anyone would like to volunteer to test
the changes on some hardware (I don't own anything with an STM32 for
instance).

The CI is also going to report a lot of errors due to the changes being
across both repositories (and they will be out of sync with each other in
the CI runs), hence the importance of testing :)

Thanks for your feedback in advance (and maybe your time testing if you
can!)
Matteo

Reply via email to