This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 147134a3fbe9657588a5dc4416aa7bfb123cfa8f
Author: raiden00pl <[email protected]>
AuthorDate: Sun Jul 5 11:11:16 2026 +0200

    boards/sim: add Lely CANopen examples
    
    add Lely CANopen examples for sim
    
    Signed-off-by: raiden00pl <[email protected]>
---
 .../platforms/sim/sim/boards/sim/index.rst         | 85 ++++++++++++++++++++++
 boards/sim/sim/sim/configs/lely-sock/defconfig     | 60 +++++++++++++++
 boards/sim/sim/sim/configs/lely/defconfig          | 59 +++++++++++++++
 3 files changed, 204 insertions(+)

diff --git a/Documentation/platforms/sim/sim/boards/sim/index.rst 
b/Documentation/platforms/sim/sim/boards/sim/index.rst
index da849afb5fe..d89ce5f5f84 100644
--- a/Documentation/platforms/sim/sim/boards/sim/index.rst
+++ b/Documentation/platforms/sim/sim/boards/sim/index.rst
@@ -2009,6 +2009,91 @@ Requirement: ``cansequence`` tool from 
``linux-can/can-utils``
       can0  002   [1]  12
 
 
+lely and lely-sock
+------------------
+
+These configurations build the Lely CANopen demos over the CAN character
+driver. Both the slave (``coslave`` built-in, node ``0x02``) and the master
+(``comaster`` built-in, node ``0x01``) are embedded in the single image. See
+:doc:`/applications/examples/lely_slave/index` and
+:doc:`/applications/examples/lely_master/index`.
+
+The master orchestrates a small CANopen network: it reads the slave's device
+type over an SDO transfer, commands the slave to OPERATIONAL with an NMT
+start, then produces SYNC while the slave streams a counter back in a
+synchronous TPDO which the master receives via an RPDO.
+
+The ``sim:lely`` configuration uses the CAN character driver; ``sim:lely-sock``
+is the same demo over SocketCAN (``CONFIG_SIM_CANDEV_SOCK``). Both bridge to a
+host ``vcan`` interface named ``can0``, which must exist and be up on the 
host::
+
+    sudo modprobe vcan
+    sudo ip link add dev can0 type vcan
+    sudo ip link set up can0
+
+The SocketCAN example brings its own NuttX interface up (via 
``netlib_ifup()``),
+so ``coslave``/``comaster`` can be started directly without a manual ``ifup``.
+
+.. _testing_lely_canopen_sim:
+
+Testing a CANopen network on the simulator
+==========================================
+
+The simulator CAN character driver (``CONFIG_SIM_CANDEV_CHAR``) bridges
+``/dev/can0`` to a host SocketCAN interface named ``can0`` (the index is
+``CONFIG_SIM_CANDEV_CHAR_IDX``). Each simulator process owns one host socket,
+so the two nodes are run as **two separate processes of the same image** on
+the shared ``can0`` bus.
+
+1. Create a virtual CAN interface named ``can0`` on the host:
+
+   .. code:: console
+
+      $ sudo modprobe vcan
+      $ sudo ip link add dev can0 type vcan
+      $ sudo ip link set up can0
+
+2. Build the image:
+
+   .. code:: console
+
+      $ ./tools/configure.sh sim:lely
+      $ make
+
+3. Run the slave in one terminal and the master in another (start the slave
+   first so it is up when the master boots it):
+
+   .. code:: console
+
+      # terminal 1
+      $ ./nuttx
+      nsh> coslave &
+
+      # terminal 2
+      $ ./nuttx
+      nsh> comaster &
+
+   The master prints the exchange it drives::
+
+      SDO: slave device type (0x1000) = 0x00000000
+      NMT: master + slave 0x02 OPERATIONAL
+      PDO rx: counter = 17
+      PDO rx: counter = 18
+      PDO rx: counter = 19
+
+4. Observe the bus from the host with ``candump``:
+
+   .. code:: console
+
+      $ candump can0
+      can0  702   [1]  7F                         # slave heartbeat (pre-op)
+      can0  602   [8]  40 00 10 00 00 00 00 00    # master SDO upload request
+      can0  582   [8]  43 00 10 00 00 00 00 00    # slave SDO upload response
+      can0  000   [2]  01 02                      # NMT start node 0x02
+      can0  080   [0]                             # SYNC (master)
+      can0  182   [4]  11 00 00 00                # slave TPDO (counter)
+
+
 nxscope
 -------
 
diff --git a/boards/sim/sim/sim/configs/lely-sock/defconfig 
b/boards/sim/sim/sim/configs/lely-sock/defconfig
new file mode 100644
index 00000000000..54d187993e6
--- /dev/null
+++ b/boards/sim/sim/sim/configs/lely-sock/defconfig
@@ -0,0 +1,60 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed 
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that 
includes your
+# modifications.
+#
+CONFIG_ALLOW_BSD_COMPONENTS=y
+CONFIG_ARCH="sim"
+CONFIG_ARCH_BOARD="sim"
+CONFIG_ARCH_BOARD_SIM=y
+CONFIG_ARCH_CHIP="sim"
+CONFIG_ARCH_SIM=y
+CONFIG_BOARDCTL_POWEROFF=y
+CONFIG_BOARD_LOOPSPERMSEC=0
+CONFIG_BOOT_RUNFROMEXTSRAM=y
+CONFIG_BUILTIN=y
+CONFIG_CANUTILS_LELYCANOPEN=y
+CONFIG_CANUTILS_LELYCANOPEN_CSDO=y
+CONFIG_CANUTILS_LELYCANOPEN_EMCY=y
+CONFIG_CANUTILS_LELYCANOPEN_MASTER=y
+CONFIG_CANUTILS_LELYCANOPEN_MPDO=y
+CONFIG_CANUTILS_LELYCANOPEN_NG=y
+CONFIG_CANUTILS_LELYCANOPEN_NMTBOOT=y
+CONFIG_CANUTILS_LELYCANOPEN_NMTCFG=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJDEFAULT=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJFILE=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJLIMITS=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJNAME=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJUPLOAD=y
+CONFIG_CANUTILS_LELYCANOPEN_RPDO=y
+CONFIG_CANUTILS_LELYCANOPEN_SDEV=y
+CONFIG_CANUTILS_LELYCANOPEN_SYNC=y
+CONFIG_CANUTILS_LELYCANOPEN_TIME=y
+CONFIG_CANUTILS_LELYCANOPEN_TPDO=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_EXAMPLES_LELYMASTER=y
+CONFIG_EXAMPLES_LELYSLAVE=y
+CONFIG_FS_PROCFS=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_IDLETHREAD_STACKSIZE=4096
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_NET=y
+CONFIG_NETDEV_IFINDEX=y
+CONFIG_NET_CAN=y
+CONFIG_NET_CAN_EXTID=y
+CONFIG_NET_CAN_SOCK_OPTS=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_READLINE=y
+CONFIG_READLINE_TABCOMPLETION=y
+CONFIG_SCHED_BACKTRACE=y
+CONFIG_SCHED_EVENTS=y
+CONFIG_SCHED_HAVE_PARENT=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_SIM_CANDEV=y
+CONFIG_SIM_CANDEV_SOCK=y
+CONFIG_START_MONTH=6
+CONFIG_START_YEAR=2008
+CONFIG_SYSTEM_DUMPSTACK=y
+CONFIG_SYSTEM_NSH=y
diff --git a/boards/sim/sim/sim/configs/lely/defconfig 
b/boards/sim/sim/sim/configs/lely/defconfig
new file mode 100644
index 00000000000..02642d8ca9b
--- /dev/null
+++ b/boards/sim/sim/sim/configs/lely/defconfig
@@ -0,0 +1,59 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed 
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that 
includes your
+# modifications.
+#
+CONFIG_ALLOW_BSD_COMPONENTS=y
+CONFIG_ARCH="sim"
+CONFIG_ARCH_BOARD="sim"
+CONFIG_ARCH_BOARD_SIM=y
+CONFIG_ARCH_CHIP="sim"
+CONFIG_ARCH_SIM=y
+CONFIG_BOARDCTL_POWEROFF=y
+CONFIG_BOARD_LOOPSPERMSEC=0
+CONFIG_BOOT_RUNFROMEXTSRAM=y
+CONFIG_BUILTIN=y
+CONFIG_CAN=y
+CONFIG_CANUTILS_LELYCANOPEN=y
+CONFIG_CANUTILS_LELYCANOPEN_CSDO=y
+CONFIG_CANUTILS_LELYCANOPEN_EMCY=y
+CONFIG_CANUTILS_LELYCANOPEN_LSS=y
+CONFIG_CANUTILS_LELYCANOPEN_MASTER=y
+CONFIG_CANUTILS_LELYCANOPEN_MPDO=y
+CONFIG_CANUTILS_LELYCANOPEN_NG=y
+CONFIG_CANUTILS_LELYCANOPEN_NMTBOOT=y
+CONFIG_CANUTILS_LELYCANOPEN_NMTCFG=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJDEFAULT=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJFILE=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJLIMITS=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJNAME=y
+CONFIG_CANUTILS_LELYCANOPEN_OBJUPLOAD=y
+CONFIG_CANUTILS_LELYCANOPEN_RPDO=y
+CONFIG_CANUTILS_LELYCANOPEN_SDEV=y
+CONFIG_CANUTILS_LELYCANOPEN_SYNC=y
+CONFIG_CANUTILS_LELYCANOPEN_TIME=y
+CONFIG_CANUTILS_LELYCANOPEN_TPDO=y
+CONFIG_CANUTILS_LELYCANOPEN_WTM=y
+CONFIG_CAN_EXTID=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_EXAMPLES_LELYMASTER=y
+CONFIG_EXAMPLES_LELYSLAVE=y
+CONFIG_FS_PROCFS=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_IDLETHREAD_STACKSIZE=4096
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_READLINE=y
+CONFIG_READLINE_TABCOMPLETION=y
+CONFIG_SCHED_BACKTRACE=y
+CONFIG_SCHED_EVENTS=y
+CONFIG_SCHED_HAVE_PARENT=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_SIM_CANDEV=y
+CONFIG_SIM_CANDEV_CHAR=y
+CONFIG_START_MONTH=6
+CONFIG_START_YEAR=2008
+CONFIG_SYSTEM_DUMPSTACK=y
+CONFIG_SYSTEM_NSH=y

Reply via email to