I recently bought a GCW-Zero to play with in my spare time.
My interest being in hardware related issues, I will be needing a serial console output to debug low level code. It turns out this hardware feature is missing on the GCW-Zero out of the box, as it's often the case with embedded products. How come even a product made by geeks for geeks is missing this ? Embedded devices should have serial console output pins soldered on their PCB out of factory, me think.
Anyway, game-play level 0 comes down to soldering a serial console output to the board.
Materials, techniques & tools
For this purpose, here is a list of what you will need:
- GCW-Zero unit (obviously),
- Flat screwdriver #1.5,
- Philips screwdriver #00,
- Soldering station,
- Conical type of soldering tip 0.4mm diameter,
- Soldering wire 0.5mm diameter,
- Wire-wrapping wire 30AWG,
- 3.3V USB to serial RS232 converter,
- 4 Crocodile clips (optional),
- 4 Dupont wire cables with pin headers (optional).
The GCW-Zero PCB is crowded with teeny components, thus the tiny diameter of materials and tools above. The screwdrivers will help open the case, sealed by 4 small screws on the back.
Regarding the soldering tip, a 0.8mm diameter one might be workable if you're skilled enough -- I used a 0.4mm tip, better be safe than sorry. Have a look at my SMT soldering tools post for further details.
Connecting the serial output to your computer is what the USB to serial converter is for. I got a cheap one off eBay:
As shown on the picture above, this converter has a 5 pins connector:
- RX for receiving data,
- TX for transmitting data,
- GND for ground line,
- 3.3V for powering the serial output,
- 5V for powering the serial output.
Having both 3.3V and 5V pins will allow you to choose the voltage depending on your needs, should you ever plan to reuse the converter for another device.
Wrapping up the materials and tools list are the crocodile clips.
These ones are optional if you choose to solder the USB to serial converter to the GCW-Zero. I use the clips to avoid soldering the converter: result is messier due to more cables, but clips are easily detached to allow me to tuck wires away and keep the device portable.
Going with the crocodile clips, I also use Dupont wire cables and pin headers to space out the USB converter pins which are too close to be grabbed individually with the clips.
A good place to start learning about soldering techniques is the EEVblog on Youtube. David L. Jones shot a three parts soldering tutorial there:
- EEVblog Soldering Tutorial Part 1 - Tools
- EEVblog Soldering Tutorial Part 2 - Through Hole
- EEVblog Soldering Tutorial Part 3 - Surface Mount
Not being an expert solderer myself, I cannot tell much more on the subject than you'll learn watching those videos. And practicing.
Tinning the wire-wrapping wires and the pads on the PCB is important though. Let's cut to the chase.
Down the rabbit hole
On the back of the device are four cylindrical rubber pads you need to pull out to reveal the screws underneath -- using the flat screwdriver should help.
After removing the screws with the Philips screwdriver, gently detach the black back cover from the case to pry it open -- you can use the flat screwdriver by inserting the blade alongside the case; I just used my fingernails.
Be careful with the shoulder buttons and be aware that the battery is glued onto the inside of the back cover (on its right side) while being soldered to the PCB by two thin wires: you probably don't want to break these, unless you're ok with fixing it later.
There you have it, the GCW-Zero PCB in its full glory. Notice the black back cover on the right side of the picture: I didn't completely remove the back cover due to the battery being soldered to the board as mentioned earlier.
Looking closer, you can see 4 test points below the Ingenic JZ4770 SoC: RX, TX, GND and 3.3v. That's where you'll need to solder the wires to get a serial output.
You must first tin the test points by dropping a small amount of solder onto them.
Strip away the tip of the insulation of your wire-wrapping wire, and slightly coat the strand with solder too.
Having tinned both the pads on the board and the wires, you should now be ready to solder the wires to each of the test points. It's sometimes recommended to slightly tin the tip of the soldering iron to help conduct heat to the components, which I did by the way, but I'm not sure if that is advisable here, due to the small pads size.
I used a little too much solder during the process indeed, resulting in bigger solder joints than needed as you can see above.
Watch out for the green wire which is way too much close to that capacitor: a little push and it will short RX, making the problem hard to find out.
I also had a hard time soldering the GND test point. Despite many tries I couldn't get the solder to stick to the pad, and having less space to work with due to the other test points around didn't help either -- maybe starting with TX and GND and then soldering RX and 3.3v would have made it easier.
Since GND is used for ground connection anyway, I ultimately resorted to soldering it to the large pad next to the GCW-Zero logo.
Too much solder on this joint too, and I'm missing a small wire cutter to cut that strand off.
Big picture looks good. Not exactly pretty but good enough will do.
Don't know if this is a well spread practice but, as you've already noticed, I used the following wire colour code:
- White for TX,
- Green for RX,
- Black for GND,
- Red for Power (3.3v).
Cleaning everything up:
To hold everything in place and tidy up a bit, I glued the wires ontop of the MicroSD card holder, removed the speaker grill on the bottom left -- gently pushed it inward from the outside, it came off easily -- and passed the wires through.
Looking at the final contraption, with the wires attached to the USB converter using the crocodile clips, and extended with pin headers and Dupont cables.
Notice two things in the picture above:
- RX and TX wires are respectively attached to TX and RX USB converter pins,
- It still boots ;-).
Serial console software wonderland
With the GCW-Zero now enabled with a serial output, hook it up to a computer running your favourite serial console software:
Hocus pocus. Initially on the 3.5" screen, Linux boot process is now displayed on a 23" screen here through serial console output.
Software configuration is as follow:
- 57600 Bits/s baud rate,
- 8 bits data, No parity, 1 stop bit (8N1),
- No hardware flow control,
- No software flow control.
Enjoy the beauty of having the terminal at the end of the boot process at your fingertips.
Level 0 complete. Happy hacking :-).