SocketCAN for all platforms

Hello to all

I’m new to RIOT and want to work on extending SocketCAN support to all platforms and in the end build support for CANopen into RIOT

As suggested in some post, I look for opinions and ideas before getting too deep in implementation because there is a lot of conceptual decisions to be made

Since my first target is MCP2515, I thought a good start would be to create a mix between a SPI netdev device like ENC28J60 and a SPI CAN dev like MCP2515

So far I’ve made a config map to compare both config structures and build the best mix but stumbled into several problems:

  1. I don’t understand how and when driver.init function is called. Is there a document that explains boot sequence in detail?

  2. Even when in principle multiple device support exists, at least for ENC28J60 and MCP2515, it’s sketchy at best and rather hard to use for a newbie trying to get it to work quickly. I haven’t researched other SPI devices in depth but would like to ask: what is the recommended way to build a user-friendly config system for SPI/I2C devices?

  3. It would be best to build a common SocketCAN infrastructure that supports any CAN adapter but I don’t know how independent of current CAN support it should be. What I’ve seen is current support is divided between drivers/ and sys/. For example, candev definition is in drivers/ but one of its members, can_state, is defined in sys/. My proposal would be to solve those issues for SocketCAN support

Thanks in advance for all responses and comments



Hi @sigdl

I’m new too, but I wanted to welcome you.

A very good goal, I wish you success.

On the other hand, I know you are a very good programmer. I think you can make invaluable contributions to the Riot community on other issues as well.

BR, Murat

Thanks! :slight_smile:

If I fail in RIOT, I’ll try Windows CE :wink: