5/13/2014— Jia Huang
We recently started a production run of 2.5k Tessels. When we put something in production, it’s not just a matter of telling our manufacturer to start placing components on boards. We also have to make sure that every Tessel we produce is programmed and tested, and that’s where Testalator comes in.
Testalator is Tessel’s programming and test rig. It programs Tessel up with all its firmware and then makes sure the Tessel can operate to spec.
The physical Testalator is made up of a few key parts:
- A mechanical jig that holds the Tessel in place
- A second Tessel that checks that all the pins on the Tessel being tested works.
- A Raspberry Pi that hooks up to the jig, programs and checks Tessel, and then streams those logs online.
This is the physical setup required to connect all the pins of Tessel for testing. It involves around 60 pogo pins, 22 standoffs, and 2 cut pieces of acrylic that hold the Tessel in place. There’s also a few indicator LEDs showing the progression of the test.
“Wow Jia, you should try Mechanical Engineering”, said no one. The clear flanges that held the Tessel in place were too loose at first so Eric “fixed” it with some hot glue.
A Raspberry Pi operates the entire test. The jig connects to the Pi’s GPIO and USB ports. Testing & programming involves going through the following stages:
- One Time Program (OTP) the board. This sets up the version of the board, and makes it boot from internal flash by default. We also stick on our custom bootloader so we can update the firmware later.
- Put Tessel’s firmware on the board
- Upload some JS to do a pin test
- Upload some JS code while switching power sources
- Connect to wifi and do a ping test
There are some more checks in between each stage, but this covers most of the functionality of the board.
Tessel tests Tessel
One core part of Testalator is the pin test. The pin test is the test that checks to make sure that all the pins on the module headers (GPIO/SPI/I2C/ADC/etc) can operate as intended.
We use a Tessel to do the pin test on Tessel. The Tessel tester is hooked up on the bottom of the jig using vertical headers:
The Pi uploads some JS code to the Tessel being tested which starts up the pin test. After that, the two Tessels communicate for which test is commencing and what the expected output should be.
Streaming test logs
Testalator also streams all the test logs online as it operates.
Since manufacturing is still done in Massachusetts and we’re across the country in Berkeley right now, these logs give us an easy way to see which tests have passed or failed, and which bench did the testing. We’ve found this pretty helpful in debugging any consistent failures during manufacturing. Using this, I can see which failure modes are happening often, ssh into the Pi, and fix the test remotely.
The Testalators have programmed and tested about 100 boards so far, so there’s still quite a few more to go.
Here’s to hoping everything goes according to plan.