I'm using NCS V2.5.1 to program an NRF52833DK hooked up to an external AT25XE41B spi-nor flash chip. I'll be using the external flash as the secondary mcuboot image parition.
Because this flash chip doesn't have an existing driver in the zephyr tree I've had to modify the "jedec,spi-nor" flash driver to suit my needs. I've successfully copied and modified the spi_flash sample to write and read from the external flash, using out of tree drivers in my project. Here's my folder structure:
├── CMakeLists.txt ├── Kconfig ├── drivers │ ├── CMakeLists.txt │ ├── Kconfig │ └── flash │ ├── CMakeLists.txt │ ├── Kconfig | ├── renesas_at25x.h │ └── renesas_at25x.c ├── dts │ └── bindings │ └── renesas,at25x.yaml ├── src │ └── <src code> ├── boards │ └── <overlays and confs> ├── west.yml └── zephyr └── module.yml
When I enable mcuboot as a bootloader, I'm unable to get the mcuboot child image to pick up my device binding (renesas_at25x.yaml), while the main image picks it up fine. I'm able to get the mcuboot fully working with the external flash if I simply move my binding (renesas_at25x.yaml) into the zephyr tree (zephyr/dts/bindings/mtd/renesas_at25x.yaml), and keep my driver source files within my project.
This isn't a clean way to handle the custom driver dependency. I'd really like my binding to be picked up without having to move it into the zephyr tree. I've tried changing the project folder structure in many ways to try and get this to work with no luck. How can I get the mcuboot child image to pick up my custom binding?