Date
1 - 4 of 4
Meta-raspberrypi - how to configure device tree for MCP251x
Chris Tapp
I am having trouble getting the Waveshare 2-CH CAN HAT working with an RPI4. Channel 0 does not come up, channel 1 does, but it will only send one message (eventually reporting "write: No buffer space available”) and not receive anything.
Looking at the mcp2515-can0-overlay.dts and mcp2515-can1-overlay.dts device tree files in /tmp/work-shared/raspberrypi4/kernel-source/arch/arm/boot/dts/overlays/, it looks as if the interrupts are not mapped as required for the board. DTS HAT CAN0 brcm,pins = <25> PIN23 CAN1 brcm,pins = <25> PIN25 This doesn’t look right, and seems consistent with the behaviour I am seeing. I would also like to check the device chip select signals, but I can't see how (if) they are mapped in the dts files. How can I override these settings when I build the image? |
|
Chris Tapp
Sorry, I meant to add that I have tried adding the following to local.conf:
toggle quoted message
Show quoted text
RPI_EXTRA_CONFIG = ' \n \ dtparam=spi=on \n \ dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 \n \ dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=23 \n \ ' However, this did not make any difference to the interrupts. Since then, I have manually changed mcp2515-can1-overlay.dts in the kernel build tree (after running bitbake - c do_configure virtual/kernel) and rebuilt the kernel / image. This does result in the interrupt mapping changing, and both CAN channels then operate correctly. Does anyone know why RPI_EXTRA_CONFIG doesn’t appear to be taking effect? -- Chris Tapp ---- You can tell you're getting older when your car insurance gets real cheap!
|
|
can you check boot/config.txt and see fi your changes are there in your target ?
toggle quoted message
Show quoted text
On Mon, Oct 4, 2021 at 1:21 AM Chris Tapp <opensource@...> wrote:
|
|
Chris Tapp
Hi Khem,
toggle quoted message
Show quoted text
There is nothing in /boot once the system has started, but if I mount /dev/mmcblk0p1 I can see a config.txt that includes: dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=23 This is what I could expect. On a quick scan, this appears to be the same as the one in tmp/deploy/images/raspberrypi4/bootfiles - the timestamp for this file indicated it was old, so I had manually cleaned and rebuilt rpi-bootfiles for changes to RPI_EXTRA_CONFIG to propagate. However, if I bring the CAN interface up: ip link set can1 up type can bitrate 100000 and look in /proc/interrupts, I see: 66: 0 0 0 0 pinctrl-bcm2835 25 Level spi0.0 even though can1 is on spi0.1. --
|
|