From f0f934bd363dc34c94425a402705ffaf49a4d22b Mon Sep 17 00:00:00 2001 From: Jason Kridner <jkridner@beagleboard.org> Date: Sun, 12 Nov 2023 09:40:11 -0500 Subject: [PATCH] Try graphviz --- projects/beagleconnect/index.rst | 205 ++++++++++++++++++++++++++++++- 1 file changed, 199 insertions(+), 6 deletions(-) diff --git a/projects/beagleconnect/index.rst b/projects/beagleconnect/index.rst index 6aede886..df4ed6ea 100644 --- a/projects/beagleconnect/index.rst +++ b/projects/beagleconnect/index.rst @@ -15,7 +15,6 @@ architecture. .. image:: ../freedom/media/BeagleConnect-Freedom-Front.* :width: 598 :align: center - :height: 400 :alt: BeagleConnect Freedom BeagleConnectâ„¢ is built using `Greybus <https://kernel-recipes.org/en/2015/talks/an-introduction-to-greybus/>`__ @@ -55,11 +54,205 @@ High-level Software architecture --------------------- -.. image:: media/bcf_block_diagram.png - :width: 600 - :align: center - :height: 400 - :alt: BeagleConnect Block Diagram +.. graphviz:: BeagleConnect Software Architecture + + digraph S { + graph [bb="0,0,480,772.5"]; + node [color=white, + label="\N", + shape=box + ]; + subgraph cluster_0 { + graph [bb="8,310,237,764.5", + color=black, + label="Linux PC", + lheight=0.23, + lp="122.5,752.25", + lwidth=0.73 + ]; + subgraph cluster_1 { + graph [bb="16,655.5,229,732", + color=lightgrey, + label="Linux userspace", + lheight=0.23, + lp="122.5,719.75", + lwidth=1.23, + style=filled + ]; + node [color=green, + style=filled + ]; + A [height=0.5, + label="User Application", + pos="78,681.5", + tooltip="Primary developer entry point", + width=1.5035]; + g [height=0.5, + label="gbridge**", + pos="186,681.5", + tooltip="Bridge Greybus to networked devices", + width=0.98264]; + } + subgraph cluster_2 { + graph [bb="35,318,229,647.5", + color=lightgrey, + label="Linux kernel", + lheight=0.23, + lp="132,635.25", + lwidth=0.97, + style=filled + ]; + node [color=green, + style=filled + ]; + I [height=0.5, + label="IIO Drivers", + pos="83,597", + tooltip="Hundreds of drivers for sensors and acutators", + width=1.0972]; + m [height=0.5, + label="mikrobus**", + pos="84,525", + tooltip="Board-level abstraction to identify sensor connections", + width=1.1285]; + I -> m [pos="e,83.756,543.1 83.247,578.7 83.351,571.41 83.475,562.73 83.592,554.54"]; + r [height=0.5, + label=greybus, + pos="85,453", + tooltip="Dynamic RPC-like bus interface for I2C, SPI, UART, etc.", + width=0.81597]; + n [height=0.5, + label="gb-netlink**", + pos="86,344", + tooltip="Extend Greybus over netlink to userspace", + width=1.1806]; + r -> n [pos="e,85.84,362.15 85.161,434.81 85.315,418.27 85.552,392.98 85.734,373.44"]; + m -> r [pos="e,84.756,471.1 84.247,506.7 84.351,499.41 84.475,490.73 84.592,482.54"]; + w [height=0.5, + label="wpanusb**", + pos="182,453", + tooltip="USB-interface to IEEE802.15.4 radio", + width=1.0764]; + i [height=0.5, + label=ieee802154, + pos="182,525", + tooltip="Standards-based radio interface", + width=1.0868]; + i -> w [pos="e,182,471.1 182,506.7 182,499.41 182,490.73 182,482.54"]; + 6 [height=0.5, + label=lowpan, + pos="184,597", + tooltip="IPv6 for low-power wireless networks", + width=0.77431]; + 6 -> i [pos="e,182.49,543.1 183.51,578.7 183.3,571.41 183.05,562.73 182.82,554.54"]; + } + A -> I [pos="e,81.941,615.47 79.06,663 79.697,652.5 80.522,638.89 81.253,626.83"]; + g -> 6 [pos="e,184.42,615.47 185.58,663 185.32,652.5 184.99,638.89 184.7,626.83"]; + n -> g [pos="e,159.23,663.18 74.425,362.48 42.035,413.75 -42.302,565.28 34,647.5 42.11,656.24 129.58,652.08 141,655.5 143.6,656.28 146.22,657.22 \ +148.81,658.29"]; + } + subgraph cluster_3 { + graph [bb="245,217.5,395,427", + color=black, + label="BCF gateway", + lheight=0.23, + lp="320,414.75", + lwidth=1.03 + ]; + subgraph cluster_4 { + graph [bb="275,225.5,365,302", + color=lightgrey, + label=CC1352, + lheight=0.23, + lp="320,289.75", + lwidth=0.62, + style=filled + ]; + node [color=green, + style=filled + ]; + z [height=0.5, + label="gateway**", + pos="320,251.5", + tooltip="Zephyr-based IEEE802.15.4 radio accepting HDLC over UART transactions", + width=1.0347]; + } + subgraph cluster_5 { + graph [bb="253,318,387,394.5", + color=lightgrey, + label=MSP430, + lheight=0.23, + lp="320,382.25", + lwidth=0.67, + style=filled + ]; + node [color=green, + style=filled + ]; + b [height=0.5, + label="usb_uart_bridge**", + pos="320,344", + tooltip="USB interace to access CC1352 UART that encapulates WPANUSB in HDLC", + width=1.6285]; + } + b -> z [pos="e,320,269.9 320,325.55 320,313.03 320,295.87 320,281.33"]; + } + subgraph cluster_6 { + graph [bb="192,8,472,209.5", + color=black, + label="BCF node", + lheight=0.23, + lp="332,197.25", + lwidth=0.77 + ]; + subgraph cluster_7 { + graph [bb="248,100.5,392,177", + color=lightgrey, + label=CC1352, + lheight=0.23, + lp="320,164.75", + lwidth=0.62, + style=filled + ]; + node [color=green, + style=filled + ]; + k [height=0.5, + label="greybus-mikrobus**", + pos="320,126.5", + tooltip="Zephyr-based applies Greybus transactions from IPv6/IEEE802154 to physical I2C, SPI, UART, etc.", + width=1.7847]; + } + subgraph cluster_8 { + graph [bb="200,16,464,92.5", + color=lightgrey, + label="mikroBUS add-on board", + lheight=0.23, + lp="332,80.25", + lwidth=1.88, + style=filled + ]; + node [color=green, + style=filled + ]; + e [height=0.5, + label="manifest 1-wire EEPROM**", + pos="368,42", + tooltip="Manifest for mikroBUS driver", + width=2.4306]; + s [height=0.5, + label=sensor, + pos="235,42", + tooltip="Over 1,000 different sensor, actuator and indicator options", + width=0.75]; + } + k -> e [pos="e,357.84,60.471 330.18,108 336.54,97.066 344.87,82.748 352.1,70.334"]; + k -> s [pos="e,245.76,60.146 291.4,108.1 284.71,103.43 277.83,98.106 272,92.5 264.85,85.628 258.04,77.267 252.26,69.386"]; + } + w -> b [pos="e,304.6,362.3 220.59,434.64 224.88,432.26 229.11,429.7 233,427 256.75,410.55 280.4,387.74 297.03,370.35"]; + z -> k [pos="e,320,144.77 320,233.14 320,213.18 320,180.1 320,156.27"]; + } + TODO items ---------- -- GitLab