This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Best solution for programming Softdevice/Bootloader/Firmware to multiple nrf51822 from one PC.

Hello,

I am almost finishing developement of a BLE module using nrf51822.

For mass production, I hope I can program Softdevice/Bootloader/Firmware to 10 nrf51822 using one PC. (since on my PCB array, there are 10 single boards)

Using 10 j-link is a solution, but it is a quite expensive way.

Is there any cheaper solution?

Thanks.

Jason

Parents
  • This is how we're doing it:

    (1) We built a custom programming jig. See here for details: wimoto.wordpress.com/.../

    (2) We wrote a Python script that automagically takes our hex files (see Stefan's answer) and 'burns' it via a JLink to each board that's pressed down onto the programming jig.

    (3) Our firmware does some rudimentary testing and logging via a "pseudo" SWO output (really just a pin configured as UART TX) to the Python program.

    It's not fun. It's not pretty. But it works. In our experience, the biggest pain point is not what programmer or software you use but the physicality of the problem. YMMV.

    -m

Reply
  • This is how we're doing it:

    (1) We built a custom programming jig. See here for details: wimoto.wordpress.com/.../

    (2) We wrote a Python script that automagically takes our hex files (see Stefan's answer) and 'burns' it via a JLink to each board that's pressed down onto the programming jig.

    (3) Our firmware does some rudimentary testing and logging via a "pseudo" SWO output (really just a pin configured as UART TX) to the Python program.

    It's not fun. It's not pretty. But it works. In our experience, the biggest pain point is not what programmer or software you use but the physicality of the problem. YMMV.

    -m

Children
  • Hi, Marc, sorry, I am not sure if my understand is correct. Do you mean using one J-link to burn mulitple nrf51822? But actually I need to do some different actions for each board on each PCB array(who has 10 boards. And for saving time, I need to burn 10 boards almost simultateouly (parallel), not one after one.

  • Yes, spring type pogo pin and jig board is also necessary for my system. But my main problem is how to burn to 10 boards and and write different values to flash of each board, and do this job parallel (or pipeline) rather than one board by one board.

  • We depanelize the PCBs first and then do them in a pipeline. We program different data to each board and also read the board's details such as Static Random Address (pseudeo-MAC) as it goes through the pipeline. I don't know a pipeline is that much more work than a panel at a time -- our panels are 10-up, too.

    That said, we also figured out a way to use one JLink with an analog switch and pogo pins....just didn't build it.