4
\$\begingroup\$

I have multiple mcu's that are configured to communicate with bus topology. I have 10 pins (4 of them is occupied by now)

I need to debug (update firmware online, etc) all of these mcu's. I read this article but I didn't understand how to achieve the goal.

Question: How can I daisy chain these mcu's?

MCU: STM32F407VG

Debug protocol: SWD

\$\endgroup\$
3
  • \$\begingroup\$ Your development tools need to support it. \$\endgroup\$ Mar 8, 2014 at 12:24
  • 1
    \$\begingroup\$ I need the algorithm, I can build the development tool. \$\endgroup\$
    – ceremcem
    Mar 8, 2014 at 16:26
  • 1
    \$\begingroup\$ I think that you need to license that from ARM. \$\endgroup\$ Mar 8, 2014 at 17:06

2 Answers 2

6
\$\begingroup\$

How can I daisy chain these mcu's? MCU: STM32F407VG Debug protocol: SWD

These MCUs support JTAG and SWD. While JTAG supports a daisy chain configuration, SWD does not. There is a multi drop extension in SWD 2.0 protocol, but I am pretty sure your MCU does not implement this.

If you really want to debug multiple chips in a daisy chain, use JTAG. Beware: Tool configuration(s) may be non-trivial to do.

Note that you might want to separate a firmware update from your debugging scenario. Firmware updates can be done in multiple ways using a bootloader, so SWD or JTAG is not required in this case.

\$\endgroup\$
2
  • \$\begingroup\$ I need to be sure that I can not brick the device after a firmware update. I can fall back to the previous firmware if anything happens as far as I would use a debug port (JTAG or SWD). I'm not sure if bootloader option gives me that opportunity. My emergency plan is as follows: I can create point to point routes between mcu's and use every mcu as a proxy. \$\endgroup\$
    – ceremcem
    Mar 8, 2014 at 19:27
  • \$\begingroup\$ Here is the last solution we have: github.com/aktos-io/stm-flasher This is a command line utility that loads the firmware over uart. \$\endgroup\$
    – ceremcem
    Apr 15, 2016 at 0:21
0
\$\begingroup\$

I use mux chips, such as 74LVC1G18 or 74LVC1G19 for clock, and DG4157E for data. (Data requires an analog switch because it is bi-directional.)

There are of course higher-radix mux chips in case you want to program more devices from the same programmer.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.