It has been a while since we announced the RED Brick here in the blog. We are working hard on the new Brick and are very happy to be able to give you a status update:
The circuit board order with clarification of technical details, the delivery time of one month and the long planning and preparation to populate the board had the consequence that we got the first populated prototype only on last Friday.
We created our own debian image based on Sunxi Linux, which aims to support all Allwiner processors. Unfortunately we were not able to get it running at all with the prototype. So we already had to search for bugs in the very early stages of testing. Fortunately Allwinner processors have an easy method to directly speak with the processor, the FEL Interface. With FEL we were able to determine that the processor was not able to boot from the SD card. After days of searching we were finally able to identify the culprit. The processor has a JTAG interface, which can also be used for debugging. With two pins from the processor it is possible to configure on which pins the JTAG interface is available. Unfortunately the JTAG interface was configured to be active on the SD card interface pins. Because of that it was impossible for us to use an SD card. The processor has several SD card interfaces, which where exchanged during the hardware design phase. It seems that in the end we forgot to adjust the SD card interface accordingly.
The guilty pins are connected to a via directly below the (BGA) processor, so they are not reachable. Thus we tried to utilize one of the other SD card interfaces. Fortunately we have another SD card interface on the general purpuse/camera interface. After a little while of botch wiring we were able to connect them:
We were not able to get this SD card interface running. The datasheet of the processor did not help in this regard. We suspect that the processor is not able to boot from this secondary SD card interface at all. Alternatively we had electrical problems or we were not able to configure the image correctly.
Our only other hope was to somehow cut the JTAG configurations pins to get the correct SD card interface working. We already had all of the processors that we ordered populated. To populate new boards with a fixed circuit board would have taken a huge amount of time. Another possible solution would have been to desolder the processor (FBGA), cut the trace to the via, reball the processor and solder it on again. Unfortunately this wasn’t an feasible option because of the small distance between processor and RAM. As a last resort we drilled out the via that connects one of the pins to the ground layer to sever the connection. An internal pull-up of the processors now pulls the pin high.
But how do you drill a via that has an outer diameter of 0.3mm and a drill diameter of 0.15mm?
We tried it with this temporary setup. Unfortunately we only had a 0.5mm drill bit lying around. To position the drill on top of the via was not easy at all. We were only able to determine the drill depth by trial and error. The ground layer has a distance to the top layer (that is used by the processor) of 0.2mm. We needed to drill open this connection without drilling into the processor itself.
You can find the result of our destructive work in the image above. As we connected the RED Brick to the PC and waited for a sign of life the tension was at an all time high. You might imagine how joyful we were when we actually got a prompt:
We are currently testing the new Brick. We will have to show that it works absolutely stable. Tomorrow we will get new smaller drills, which we will use to bring more prototypes to life. After that we have to test all of the interfaces, such as HDMI and USB host. Then we will test the stack interface for the Bricks as well as the Master Extensions. In parallel our linux image is improved, there are still lots of customizations and optimizations needed. A big open task is to write a Linux kernel driver for communication with stack participants as well as (if necessary) changing the stack communication of all Bricks. The last and biggest open task is to implement the end user interface and the internal program execution.
We are super happy with the prototypes. All of the bugs in the hardware design that we found until now can be corrected with ease. Currently it looks like we will even be able to reuse the SMD stencil of the prototype for the mass production, since we don’t have to relocate any of the pads.
In the future we will write more blog entries about the RED Brick. We hope to be able to pass all of the remaining tests without changes. Cross your fingers!