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

From development to mass production

Hi,

I'm developing a FW that is now validated. We are "almost ready" to go in mass production (6000 PCE for the first batch).

For the moment, I'm still using the debugger with the NRF51DK. The programmation is done by NRF go studio etc... Not really efficient for mass production.

I read a lot of things about nrfjprog, Python script, merging tool to merge softDevice and the application but I'm a little bit lost.

What are the best tips, advises to go in production and be more efficient in the way to program and test the application?

Thank you

  • There are many different ways to skin this cat.

    I like using a linux machine with command line tools and a uart. All in cost for one station is about $150usd plus the cost of the Segger J-Link. Multiply by 2-4 stations depending on how quick you want the work to go. You will want to read up more on how to do a production build using command line tools. You can prepare a .bin/.hex using your dev tools and program it onto the board using the SEGGER JLINKEXE command line tools.

    It's a good idea to have a 'factory' firmware to flash onto the device that does basic board self-testing - test all your I's and O's, make sure any secondary chips are discoverable, etc. If something isn't right, make it painfully obvious at this step. Flash your led's like a nonstop siren, make your units play a constant pitch error tone if you have a speaker, output errors via UART connected to a linux machine and a python script with something like an FTDI cable, whatever.

    I'll send commands to the device over uart and have the unit report back pass or fail. I'll log every device's response to the linux machine along with their pass fail history. I'll post this information up to a webserver so we can get realtime notifications on production run pass/fail rates.

    We'll give each unit a unique serial number with a corresponding datamatrix code that can be scannable and it's own encryption key for DFU. Scanning the code associates it with the device_id and sends over the encryption key. This is a better alternative to having a default "admin:password" credentialing system. If you are just flashing non-unique firmware than skip this step obviously. It's helpful for preventing ghost shift runs amongst other things.

    We use jigs like these to hold the electronics during bringup. Each one is about $90USD when made in Shenzhen or about $500 when made in the US. You can hookup as many testpads to pogopins as you need - at minimum you'll need 4 for the Segger and 2 more for power. I add another 2 for UART and a handful more for testpoints.

    Log everything but don't expect workers manning the machine to parse any of it. For them it should be painfully simple process: 1) put pcb on machine 2)close machine 3)push "start programming button" 4) wait 5 seconds while machine tests 5)bright green pass led lights up if good / bright red fail led lights up if bad 6) remove board from jig and put in corresponding pass or fail box.

    Bonus points if you swap step 3 for scanning a unique barcode with usb scanner. You can build this whole system yourself for the cost of the jig + segger + $70 in parts with an arduino+linux computer / raspberry pi / whatever. You can also work with a company like Assembly and get a few of their "Core" units if you are getting more fancy.

    Edit: For a walkthrough on alternative ways to flash the nRF from the command line see this utility and guide from Adafruit. It is compatible with both the spendier, more rock solid J-link programmer and the more affordable, less reliable ST-Link Arm Flasher.

  • You can use the IDAP-Link to parallel flash the nRF5x series. It's a lot cheaper solution. The provided software can flash multiple boards with softdevice + firmware + dfu all at once using PC. It can also flash stand alone using an SD card one on one.

  • Hi Nguyen,

    You suggested IDAP-Link but nordic guide is suggesting SEGGER and PEmicro production programmers for chip already mounted on PCB/module. So is it like deviating from what nordic has suggested? Also I have one more query: Do we need to send our modules to SEGGER house for programming after talking to them or we need to buy their programmers tools and do at our side?

    Please help us by giving answers and let us go forward.

    Thanks,

    Sridhar

Related