All Articles

FROGSBORO: SAM9X60 SiP Embedded Linux

Another custom embedded Linux board. I recently did a free evaluation of Altium Designer and built this as a way to try it out. The design is based on the SAM9X60 SiP and has a USB device port, two USB host ports, a microSD card, and a low profile 40-pin expansion connector (following the Raspberry Pi pinout) which breaks out GPIOs and various other peripherals. It’s called FROGSBORO, which I guess is a moderate improvement over CATFOOD.

Design files: Schematic (pdf), BOM (pdf), Gerbers (zip)

Completed PCB, top view. The board measures 67mm by 21mm, has a mini USB-B connector sticking out over one end and two vertical USB-A connectors on the other.

Completed PCB, bottom view. There is a microSD card connector on one end and a 40-pin low-profile board-to-board connector nearby.

Layout

A screenshot of some of the gerber layers superimposed upon each other.

I used a six layer stackup from a low-cost fab. It measures 67mm by 21mm. A MIC2800 PMIC provides the three necessary voltage rails. An oscillator and a crystal provide the core clocks, there’s a DDR voltage reference, and the various connectors have ESD protection. (This is the first spin of the board; the 1.0.2 version number reflects some back and forth with the fab). The total cost for PCBs, stencils, and components was around $200.

Assembly

Stencil Alignment Experiment

In the past I’ve used scrap PCBs to frame the board and a masking tape hinge on one edge of the stencil. Having just the one edge taped down facilitates lift-off without smearing, and it’s good enough to hold the stencil in place since I wipe the paste away from the hinge. These links describe similar processes in more detail: Video from JLCPCB, Tutorial from Sparkfun.

This has worked well for me with 0.8mm pitch BGAs and 0.4-0.5mm pitch QFNs and connectors. It takes some time to line everything up and tape it down, but once set up it’s surprisingly repeatable and it’s easy to run a number of boards through the jig. But I typically only assemble one board at a time and so I’d like to come up with a way that’s at least as accurate but easier to set up.

The bare PCBs (top and bottom), with the breakaway rails still attached.

On this board I added breakaway rails with mouse bites1. The rails each contain two stencil alignment holes, which are just a non-plated through hole and a corresponding footprint on the paste layer. Since it’s not typical2 to have paste over holes I included a note to the fab to clarify that this was intentional.

The rails also serve to hold the board on my preheater (see image in next section) as there’s not much clearance on the actual board.

Left: Stencil jig. Paste has just been wiped across the stencil and the excess removed. Right: Board with paste applied, the stencil has been lifted away.

The image above shows the result. This was somewhat more awkward to work with than the old scrap board/masking tape method. In order to make these alignment pins work I’ll need a better way to hold the board and a system for clean lift-off. I have some ideas about a fixture I could build, but until then I’ll probably revert to the old method.

Component Placement and Reflow

The PCB clamped onto a preheater, with some integrated circuits placed.

Once paste was applied I used my normal method for assembly. I use my preheater (turned off) to clamp the board while I place components..

The board (top view) with all of the top components placed and reflowed.

… and then reflow with the preheater around “300°C”3 and very low flow rate hot air at 350°C.

The board (top view) with all of the top components placed and reflowed.

For the bottom side, I keep the preheater lower (“100°C”) and use the same hot air settings. Through hole parts are the final step. They need thermal relief as I don’t have the board preheated when soldering these.

Software

A screenshot of a terminal running minicom. It's showing a serial console to the FROGSBORO board, and the output of uname -a and /proc/cpuinfo

I didn’t have to do much here. I was able to boot a demo image form the sam9x60-ek evaluation kit. I used linux4sam-buildroot-sam9x60ek-headless-2021.10.img. The device tree should ideally be modified to remove peripherals that aren’t present (e.g., Ethernet), but leaving it as-is doesn’t cause a problem.

I used an FTDI cable to access the UART for first boot. I then modified the inittab to load g_serial and start getty on ttyGS0. This lets me use the SAM9X60 USB device port, which is also powering the device, as a serial console.

Thoughts

  • Lots of ideas about paste application now. I’d really like that part to be less annoying to set up. I’ll probably revert back to the masking tape hinge method until I build a fixture.
  • This was my first six layer board. The extra routing layers were nice, but in this case less useful than they could be. At this budget I’m stuck with (relatively large) through vias meaning some areas can quickly become Swiss cheese on every layer.
  • I like this PMIC. Absolutely happy to use one part to provide all of the voltage rails when I can get away with it.
  • The fab I use has a coarse silkscreen print resolution. This isn’t the first board where I’ve had to delete some reference designators to make others fit. But the resulting silkscreen is still too crowded and, worse, ambiguous in places. I may start leaving designators off for most passives by default, and only including the ones that I think may be useful during debugging or rework.
  • In the future it would be better to place the mouse bites recessed back from the board edge so that the broken-off pieces don’t protrude.

  1. I used 0.5mm diameter non-plated holes, with 0.75mm from center to center and 0.5mm clearance from the outside hole edges to board edge. There is no copper on any layer on the rails.

  2. Aside from paste-in-hole, which I think is still fairly uncommon.

  3. This and other temperature settings I’ll mention for this preheater only loosely correspond to the actual temperature the board reaches. It’s an IR heating element an inch or so underneath the board and the control system, such as it is, controls the element temperature, not a temperature probe on the board.