How robotis-git/opencr works
OpenCR is a microcontroller control-module platform: Arduino-compatible firmware runs on the board, with libraries for robotics, communications, graphics, and real-time tasks; separate development tools and bootloader support firmware writing and updates. The README identifies these repository roles, while sampled sources show bootloader command dispatch, loader command handling, and selected library behavior. Many library-to-library and hardware-level connections are not evidenced by the excerpts, so they are not drawn.
Main entry points: wiring.c Arduino Core · opencr_ld_shell/main.c Loader CLI · opencr_bootloader/main.c Bootloader Loop · opencr_ld.c Loader Engine
Components 20
Arduino Runtime
- Arduino Core
arduino/opencr_arduino/opencr/cores/arduino/wiring.c - Board Startup
arduino/opencr_arduino/opencr/variants/OpenCR/main.cpp - Serial I/O
arduino/opencr_arduino/opencr/cores/arduino/UARTClass.cpp
Robotics Libraries
- Dynamixel SDK
arduino/opencr_arduino/opencr/libraries/DynamixelSDK/src/dynamixel_sdk/protocol2_packet_handler.cpp - Dynamixel Workbench
arduino/opencr_arduino/opencr/libraries/DynamixelWorkbench/src/dynamixel_workbench_toolbox/dynamixel_workbench.cpp - Manipulator Manager
arduino/opencr_arduino/opencr/libraries/RobotisManipulator/src/robotis_manipulator/robotis_manipulator_manager.cpp - TurtleBot3 Control
arduino/opencr_arduino/opencr/libraries/turtlebot3/src/turtlebot3/turtlebot3_controller.cpp - TurtleBot3 ROS 2
arduino/opencr_arduino/opencr/libraries/turtlebot3_ros2/src/turtlebot3/turtlebot3_controller.cpp - ROS Serial
arduino/opencr_arduino/opencr/libraries/turtlebot3_ros_lib/ros/node_handle.h
System Libraries
- FreeRTOS Tasks
arduino/opencr_arduino/opencr/libraries/RTOS/src/tasks.c - CAN Interface
arduino/opencr_arduino/opencr/libraries/CAN/CAN.cpp - Graphics
arduino/opencr_arduino/opencr/libraries/Adafruit_GFX_Library/Adafruit_GFX.cpp - Eigen Math
arduino/opencr_arduino/opencr/libraries/Eigen331/src/Eigen.h
Firmware Tools
- Loader CLI
arduino/opencr_develop/opencr_ld_shell/main.c - Loader Engine
arduino/opencr_develop/opencr_ld/opencr_ld.c - Firmware Image
Bootloader
- Bootloader Loop
arduino/opencr_develop/opencr_bootloader/main.c - Flash Commands
arduino/opencr_develop/opencr_bootloader/src/cmd.c
Other components
- Firmware Developer
- OpenCR Board
Connections 10
- Firmware Developer → Arduino Core: develops firmware
- Arduino Core → Board Startup: runs on
- Arduino Core → Serial I/O: provides APIs
- Firmware Developer → Loader CLI: runs loader
- Loader CLI → Loader Engine: calls
arduino/opencr_develop/opencr_ld_shell/main.c - Loader CLI → Firmware Image: writes image
- Loader Engine → OpenCR Board: updates firmware
- OpenCR Board → Bootloader Loop: starts bootloader
- Bootloader Loop → Flash Commands: dispatches commands
arduino/opencr_develop/opencr_bootloader/main.c - Bootloader Loop → OpenCR Board: initializes board