Make the doc slightly more complete and add notes on how to add a new target in OpenWrt, some serial console and JTAG tips and tricks
SVN-Revision: 13880master
parent
4df7bb3579
commit
2a25d94250
@ -0,0 +1,61 @@ |
||||
Debugging hardware can be tricky especially when doing kernel and drivers |
||||
development. It might become handy for you to add serial console to your |
||||
device as well as using JTAG to debug your code. |
||||
|
||||
\subsection{Adding a serial port} |
||||
|
||||
Most routers come with an UART integrated into the System-on-chip |
||||
and its pins are routed on the Printed Circuit Board to allow |
||||
debugging, firmware replacement or serial device connection (like |
||||
modems). |
||||
|
||||
Finding an UART on a router is fairly easy since it only needs at |
||||
least 4 signals (without modem signaling) to work : VCC, GND, TX and |
||||
RX. Since your router is very likely to have its I/O pins working at |
||||
3.3V (TTL level), you will need a level shifter such as a Maxim MAX232 |
||||
to change the level from 3.3V to your computer level which is usually |
||||
at 12V. |
||||
|
||||
To find out the serial console pins on the PCB, you will be looking |
||||
for a populated or unpopulated 4-pin header, which can be far from |
||||
the SoC (signals are relatively slow) and usually with tracks on |
||||
the top or bottom layer of the PCB, and connected to the TX and RX. |
||||
|
||||
Once found, you can easily check where is GND, which is connected to |
||||
the same ground layer than the power connector. VCC should be fixed |
||||
at 3.3V and connected to the supply layer, TX is also at 3.3V level |
||||
but using a multimeter as an ohm-meter and showing an infinite |
||||
value between TX and VCC pins will tell you about them being different |
||||
signals (or not). RX and GND are by default at 0V, so using the same |
||||
technique you can determine the remaining pins like this. |
||||
|
||||
If you do not have a multimeter a simple trick that usually works is |
||||
using a speaker or a LED to determine the 3.3V signals. Additionnaly |
||||
most PCB designer will draw a square pad to indicate ping number 1. |
||||
|
||||
Once found, just interface your level shifter with the device and the |
||||
serial port on the PC on the other side. Most common baudrates for the |
||||
off-the-shelf devices are 9600, 38400 and 115200 with 8-bits data, no |
||||
parity, 1-bit stop. |
||||
|
||||
\subsection{JTAG} |
||||
|
||||
JTAG stands for Joint Test Action Group, which is an IEEE workgroup |
||||
defining an electrical interface for integrated circuit testing and |
||||
programming. |
||||
|
||||
There is usually a JTAG automate integrated into your System-on-Chip |
||||
or CPU which allows an external software, controlling the JTAG adapter |
||||
to make it perform commands like reads and writes at arbitray locations. |
||||
Additionnaly it can be useful to recover your devices if you erased the |
||||
bootloader resident on the flash. |
||||
|
||||
Different CPUs have different automates behavior and reset sequence, |
||||
most likely you will find ARM and MIPS CPUs, both having their standard |
||||
to allow controlling the CPU behavior using JTAG. |
||||
|
||||
Finding JTAG connector on a PCB can be a little easier than finding the |
||||
UART since most vendors leave those headers unpopulated after production. |
||||
JTAG connectors are usually 12, 14, or 20-pins headers with one side of |
||||
the connector having some signals at 3.3V and the other side being |
||||
connected to GND. |
Loading…
Reference in new issue