I’m working on an Elixir application that I’m deploying to a Raspberry Pi Model B using Nerves and nerves_system_rpi3.
I’m communicating with devices using Circuits.SPI and the standard /dev/spidev0.0 and /dev/spidev/0.1 channels. Now I’d like to talk to more devices, and use the second SPI interface to do so (info about SPI devices).
To do this, I am led to believe that I need to add the following line to /boot/config.txt:
dtoverlay=spi1-3cs
I have therefore followed the instructions for overwriting files in the boot partition. I copied fwup.conf and config.txt to my '/configdirectory and edited them andconfig.exs` to point to one another.
However, when I deploy to my RPi, the devices do not show up:
If you add dtdebug=on to config.txt the early boot that happens in the VideoCore 4 GPU will be logged.
To see the log after Linux is booted, use vcdbg log msg.
[edit]
I just now tried this on my Rpi3B+ with latest Nerves etc. and got the log :: Failed to load overlay 'spi1-3cs' brfs: File read: /mfs/sd/overlays/spi1-3cs.dtb
and sure enough, /boot/overlays does not contain any spi1*.dt?
Drop the right .dtbo in there and things might work
[edit++]
To "drop the right .dtbo . . " you need to edit fwup.conf to make sure the spi1-3cs.dtbo file is copied in all the correct places.
Addendum: There are a couple more lines of on-resource spi1-3cs.dtbo {...} I needed to add to my fwup.conf (I just copied what was there). Notably I had the BOOT_B_PART_OFFSET line but not the corresponding A line, which meant it only worked once every two times I deployed the firmware!
@tobin, Hey, good work !
Think you didn’t need to fetch that spi1-3cs.dtbo file . . that and many other overlays are already present in the nerves_system_rpi3 artifacts cached in your ~/.nerves folder.
Just change that file resource path to be like existing ones above coming from images/rpi-firmware/overlays/