<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/24190/multiplexing-swdio-swclk-to-program-panels-in-production---why-is-it-a-bad-idea</link><description>Hello, 
 I&amp;#39;ve been researching how to go about programming our devices on the production line. Most of the threads I&amp;#39;ve seen suggest two options: either to order them pre-programmed or to use several flashers connected to a PC (or use that solution that</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sat, 30 Jun 2018 10:44:03 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/24190/multiplexing-swdio-swclk-to-program-panels-in-production---why-is-it-a-bad-idea" /><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/138375?ContentTypeID=1</link><pubDate>Sat, 30 Jun 2018 10:44:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:66ea2116-9ae9-480f-b580-cf7106ab893e</guid><dc:creator>Turbo J</dc:creator><description>&lt;p&gt;You can automate the OTA process. No real need for manual work here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/138372?ContentTypeID=1</link><pubDate>Sat, 30 Jun 2018 09:45:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8779e252-199f-4cd0-9141-6a423456397c</guid><dc:creator>godmode</dc:creator><description>&lt;p&gt;I have built 48 port SWD multiplexer that runs on 250cm long cables at 4MHz clock programming and debugging.&lt;br /&gt;Please check releated post (text and photos):&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/35094/what-is-the-swd-driver-impedance-of-swdio-line"&gt;devzone.nordicsemi.com/.../what-is-the-swd-driver-impedance-of-swdio-line&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95262?ContentTypeID=1</link><pubDate>Tue, 15 Aug 2017 09:10:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1f9c88e9-6289-4435-9fd8-531246e1b646</guid><dc:creator>thefool</dc:creator><description>&lt;p&gt;why bother commenting without answering the question then? Of course board space is quite cheap, and like I said, the programming stub is a great idea, still I know that 5000x individual programming is going to cost so much more time than 100x automated gang programming of 50 devices at once... even adding the development time of a simple muxing gang programmer. BTW - I probably wouldn&amp;#39;t put the muxing chips onto each panel, I&amp;#39;d make a seperate gang-programmer-pcb that I could optionally connect to a bed-of nails (for the entire panel) with jumper cables or a pcb-edge connecter that costs nothing on the pcb panel, and a euro or two on the gang-programmer. Oh and your comment on OTA: &amp;quot;That costs nothing&amp;quot;? have you calculated 5000x (OTA transfer time+ BLE searching, connecting, etc, for each device) * minimum wage? The whole point of gang programming  is saving time, OTA does the opposite.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95265?ContentTypeID=1</link><pubDate>Sat, 12 Aug 2017 02:37:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:880da344-c07b-4af9-a1a9-529d0ffb74a9</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;why bother - compared to adding mux chips, board area is (relatively) cheap. Remember this is for an initial production run of 5000 so something easy cheap and inefficient may (their choice) be preferable over something which requires coding and chips and more setup Assuming the board is fully populated, the cost of having a couple in the middle you can&amp;#39;t program because your mux system was too complicated likely outweighs the cost of extra board to give each instance a snapoff programming stub.&lt;/p&gt;
&lt;p&gt;There is another option of course. If they quickly put together a blinky + bootload + softdevice + DFU package (which is pretty much available right out of the SDK), that could go to the factory NOW for gang programming. Then they get boards which have flashing lights to check them and they can OTA them with the final software. That costs nothing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95263?ContentTypeID=1</link><pubDate>Thu, 10 Aug 2017 17:53:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4ea8eb6f-b83a-4d91-8678-5bb2c1dde69f</guid><dc:creator>thefool</dc:creator><description>&lt;p&gt;Hmm, OK... too bad, since the question was all about Muxing ;-) Yeah, I haven&amp;#39;t seen anything that supports multidrop either... - Lets assume trace lengths of less than 10cm with adequate trace width on an inner layer, with a ground plane on top/bottom to shield them. What would be the problem with a couple of 8:1 Mux/demux chips that would switch between the 40-50 pairs of swd lines to the single pair coming from the J-link? It would essentially (theoretically) be the same as disconnecting the swd lines from one device and connecting it to the next... except you could do that programatically than physically, saving huge amounts of time (money) in production... The question remains whether it&amp;#39;s enough to switch just one - either swdio OR swdclk, or if both have to be switched...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95264?ContentTypeID=1</link><pubDate>Thu, 10 Aug 2017 14:17:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:59d1862e-f2ff-48f3-82d8-230d38b1bd27</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;you&amp;#39;ve misunderstood much of what I suggested. I&amp;#39;m not suggesting muxing anything, I don&amp;#39;t think it will work to mux even swdclk over more than a few devices because you&amp;#39;ll run into capacitance issues. I know what multidrop is and how it works, but even the spec for multidrop doesn&amp;#39;t say how many devices can be connected (not that I&amp;#39;ve found) and anyway nothing supports it. The SWD v1 spec specifies one device per swdclk/swdio line pair.&lt;/p&gt;
&lt;p&gt;I suggest having one single bed of nails per device on thin strips around the actual devices which can be broken off after use. You don&amp;#39;t need 50 jlinks, you need one, or two, or three, you just go from bed to bed and program each device. It&amp;#39;s slow but it works. The more jlinks you have, the faster you get it done. One guy does one panel, someone else does another.&lt;/p&gt;
&lt;p&gt;No muxing at all.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95266?ContentTypeID=1</link><pubDate>Thu, 10 Aug 2017 13:44:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6abc6641-613b-44e6-92be-9e641d078e43</guid><dc:creator>thefool</dc:creator><description>&lt;p&gt;Like I said in another comment: The jumper cables from any bed of nails setup to the JLINKs would be just as long as the traces... (and on the PCB, you could surround them with  a ground plane...) But I like the idea of moving the &amp;quot;connector&amp;quot; (large enough testpads for bed of nails) to unused panel space, outside of the individual pcb area... nonetheless, whether bed of nails or another method, the question is still valid: to program 50 devices, you still need either 50 J-links or multiplex SWD lines somehow. Muxing any data-line should be no problem - multidrop on swd is not muxing, but rather having all devices connected to the same two swd lines, and the devices figure out which one is supposed to be programmed now... as far as I understood, the question is about whether muxing just one of the lines (swdio OR swdclk) is enough (and which is better), or if both have to be muxed...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95268?ContentTypeID=1</link><pubDate>Thu, 10 Aug 2017 13:34:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29ac21d9-33ed-493c-bd8c-21308102f010</guid><dc:creator>thefool</dc:creator><description>&lt;p&gt;You&amp;#39;re funny... OTA Firmware update on 5000 devices &amp;quot;just&amp;quot; before shipping? :-D
The jumper cables from any bed of nails setup to the JLINKs would be just as long as the traces... and the traces can be on unused areas of the panel, and on inner layers of the 4 layer PCB, whereas the pads have to be on the top or bottom of each device...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95261?ContentTypeID=1</link><pubDate>Wed, 09 Aug 2017 21:45:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bca2bbac-3eac-4949-93c8-44355799975b</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;Not sure it&amp;#39;s going to work too well. Even if you have individual traces per board, you&amp;#39;re going to have some fairly long lines. You&amp;#39;ll have to route them to be about the same length and even then the stray capacitance on the longer ones is going to cause you at the least speed issues, at the worst, programming failures.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t think muxing the SWDCLK is going to work. SWD v1 wasn&amp;#39;t designed for that, again I think you&amp;#39;ll run into capacitance issues pretty quickly apart from problems with multiple devices trying to respond. ARM designed SWDv2 multi-drop for sort of that and I can&amp;#39;t find quickly in the spec how many devices are allowed to attach to SWD even there. And the nRFs don&amp;#39;t support multidrop (don&amp;#39;t know if anyone does). If they supported JTAG mode that would be a cool way to program lots of them, you could really set the whole array up as a big boundary scan chain, but they don&amp;#39;t support that either.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve never come across anyone trying to do it this way, which makes me feel that .. there&amp;#39;s always a better plan.&lt;/p&gt;
&lt;p&gt;You said the board is too small for a bed of nails. Even the tag-connect size with 3 holes (they&amp;#39;re a pain) and 6 pads? I&amp;#39;d recommend trying that again and see if you can find a creative way to get them in.&lt;/p&gt;
&lt;p&gt;Last option I&amp;#39;d probably try if there really is no room is to panelize the boards with a strip of beds of nails between them, one per actual board (you should be able to pack those in), program the boards via their (personal) connector, then snap them off. You&amp;#39;ll probably reduce your board count per panel that way because of the extra area, but you have the advantage that it will work, you don&amp;#39;t need to make anything complicated to make it work and programming will be super quick. You&amp;#39;ll have to work out the economies of getting fewer boards out of each panel and thus how much it&amp;#39;ll cost per board to do this, I&amp;#39;d hope for a run of 5000 you&amp;#39;d be talking pennies per board, not insignificant for a kickstarter run, but if it gives you 100% programmability of every board on the panel using a simple method, it may be worth it to get it done.&lt;/p&gt;
&lt;p&gt;I reckon by the time you&amp;#39;ve done 5000 you&amp;#39;ll be quite good at it :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95270?ContentTypeID=1</link><pubDate>Wed, 09 Aug 2017 15:37:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3696aeda-ce61-4964-9d28-6c97d68fbe7d</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;A combination of both SWCLK &amp;amp; SWDIO sequence is required at initialization.  Depending on the state of SWDIO and x clock pulses, it puts the DAP in certain state.  It is not recommended to just switch SWDIO but you try it if you like.&lt;/p&gt;
&lt;p&gt;PS you can also use the &lt;a href="http://embeddedsoftdev.blogspot.ca/p/idap-link.html"&gt;IDAP-Link or IDAP-M&lt;/a&gt; for parallel programming of your boards.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95271?ContentTypeID=1</link><pubDate>Wed, 09 Aug 2017 15:20:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:87fa610b-cfbf-4a3c-9852-7b09ca49f295</guid><dc:creator>Andy</dc:creator><description>&lt;p&gt;Is it possible to share SWCLK and just multiplex SWDIO? I read in the ARM CoreSight spec that if the SW-DP detects activity on the clock without any movement on the SWDIO line, the debug interface will try to reset. I&amp;#39;m not sure about this though. Why did you say that both are needed?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95269?ContentTypeID=1</link><pubDate>Wed, 09 Aug 2017 15:16:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8982d2d1-e985-4a96-a1e4-d9a6714147cf</guid><dc:creator>Nguyen Hoan Hoang</dc:creator><description>&lt;p&gt;You can multiplex them, just make sure you switch both SWDIO &amp;amp; SWCLK.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Multiplexing SWDIO/SWCLK to program panels in production - Why is it a bad idea?</title><link>https://devzone.nordicsemi.com/thread/95267?ContentTypeID=1</link><pubDate>Wed, 09 Aug 2017 14:13:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:081fff8b-f859-4b43-a1a3-f9193c8f21f9</guid><dc:creator>Turbo J</dc:creator><description>&lt;blockquote&gt;
&lt;p&gt;Our panel will have 40 to 50 boards and the PCB has 4 layers. We are planning to use a single J-Link and multiplex the SWD lines to program one device at a time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Calculating the required routing space in my head, this solution will be &lt;em&gt;larger&lt;/em&gt; than having just some tiny pads or vias for the SWD lines somewhere on each board.&lt;/p&gt;
&lt;p&gt;You will need some other test pads for any &lt;em&gt;proper&lt;/em&gt; production testing anyway.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;we would have to send the final binaries to the manufacturer now and the firmware is not ready yet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then just send them the Softdevice and OTA Bootloader. You can then update the firmware over thin air just before shipping off to the customer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>