## 7 Migrating Existing OSH Designs to SensoTube Architecture
### Design and Development Support of Multi-MCU Systems  
The SensoTube architecture provides the maximum possible support for the multi-MCU functional shields as it described in Section 4. In particular:  
* It provides a plethora of communication peripheral signals through the S-BECs, e.g., three UARTs, SPI-bus with two distinct enable pins, I2C-bus, etc., which can meet the requirements of many MCU-based expansion shields;
* It provides four interrupt signals to support multi-MCU collaborative application scenarios and functions such as wake up from deep sleep modes;
* It provides BEC signal rerouting or isolation mechanisms at each functional shield in order to avoid signal conflicts;
* It provides a variety of scalable power management configurations;
* It particularly supports 16-bit and 32-bit MCUs, such as MSP430 and ARM cores by reserving specific signal BEC pins for Spy-Bi-Wire (SBW), Serial Wire Debugging (SWD) and JTAG compatible cores; and, \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline \# & **Component** & **Description** & **Qty** & **Part Number** & **Manufacturer** & **Cost (euros)** \\ \hline
1 & C1 & Capacitor & 1 & CC003 KKX27R9 BB104 & Yagoe & 0.091 \\
2 & C2 & Capacitor & 1 & CC003 KKX7R9 BB104 & Yagoe & 0.091 \\
3 & C3 & Capacitor & 1 & GRM188R6J0105 KA01D & Murata & 0.091 \\
4 & PC1 & Capacitor & 1 & EMVA250 ADA470 MF55G & &
\begin{tabular}{c} United \\ Chemi-Con \\ \end{tabular} & 0.32 \\
5 & PC2 & Capacitor & 1 & EMVA250 ADA470 MF55G & &
\begin{tabular}{c} United \\ Chemi-Con \\ \end{tabular} & 0.32 \\
6 & X1 & Connector & 1 & PI-102 AH & CU Inc & 1.08 \\
7 & D1 & Diode & 1 & S2M-13-F & Diodes Inc. & 0.311 \\
8 & UI & IC & 1 & NCP1117 ST50T3G & On Semi & 0.398 \\
9 & U2 & IC & 1 & LP2985-33 DSWK & TI & 0.498 \\
10 & U5 & IC & 1 & LAM358 HDGK & TI & 0.67 \\
11 & L & LED & 1 & APT2012 YC & Kingbright & 0.119 \\
12 & ON & LED & 1 & LG R971-KN-1 & OSRAM & 0.22 \\
13 & RN1 & Resistor & 1 & CAY16-1034 LF & Bourns & 0.095 \\
14 & RN2 & Resistor & 1 & CAY16-1024 LF & Bourns & 0.095 \\
15 & T1 & Transistor & 1 & FDN340P & Fairchild & 0.338 \\ \hline \hline \end{tabular}
\end{table} 
Table 7: The parts list of the power management circuitry of Arduino Uno Rev. 3. Figure 41: The sub-total costs of the MCU, programming and debugging, and power management circuitries as percentages to the final cost of Arduino Uno Rev. 3. * It supports the programming and debugging of multiple MCU-based shields through flexible, energy efficient, and cost effective combinations. Regarding the programming and debugging of multiple MCUs in the same system we show two use cases. In the first use case we have three functional shields which have an Arduino MCU on-board (namely an AVR MCU from Atmel). To ensure a concurrent firmware development, programming and debugging of the three MCUs we have plug-in three Programming and Debugging Layer (PDL) shields. Each one of these PDL shields has a circuit identical or similar to that illustrated in Figure 39 (programming and debugging circuit of Arduino Uno Rev. 3) and it can be connected via a USB port to a personal computer. In the personal computer there are three instances of the Arduino IDE, one per MCU of the contemplated system. In Figure 42 we show the exact signals connections among the aforementioned expansion shields. Dotted lines indicate the internal signals connections through the shared BECs of the system. In cases where there is no need of concurrent firmware development and testing, then just one PDL shield is enough. Specifically, through the signals rerouting mechanism provided by SensoTube, the RXD and TXD signals pins of the PDL should be rerouted to the associated signals pins of the functional shield. In either case, when the programming and debugging is completed, then the PDL(s) can be totally removed from the system. A second use case includes several functional shields which have an ARM-core MCU on-boards. In this case, as it is shown in Figure 43, only one PDL shield is required for the programming and the debugging of all the MCUs.