2.2 Installing the XDS510 USB JTAG Emulator This section contains the steps for installing the XDS510 USB JTAG Emulator. 2.2.1 XDS510 USB Installation Checklist To install the XDS510 USB JTAG emulator execute the following checklist: Turn off the power to your target board. 2.2 Installing the XDS510 USB JTAG Emulator This section contains the steps for installing the XDS510 USB JTAG Emulator. 2.2.1 XDS510 USB Installation Checklist To install the XDS510 USB JTAG emulator execute the following checklist: Turn off the power to your target board. XM360 2.0d Download - Xbox 360 Jtag XBLA / DLC / TU Content Organiser Discussion in ' Libxenon Homebrew / Jtag & Reset Glitch Content ' started by InsaneNutter, Mar 4, 2011. InsaneNutter Resident Nutter Staff Member.
I see the term JTAG used for reviving dead Android devices that otherwise don't respond to anything and aren't seen when USB connected. It seems that it's something done from the physical hardware side of the device (as opposed to some pure software based solution) and I've heard the term used elsewhere (in gaming consoles). I don't find much else about it, and I'd like to know specifically how it relates to Androids and similar devices. It seems to be a term in electronics or electrical engineering, both of which I am unfamiliar with. I'm wondering what it is and why it can be used on hard bricked devices.
Manubhargav2 Answers
How To Install Xm360 On Your Jtag Pinout Tool
JTAG and Android are two separate things.
You may find JTAG pins visible either under your device's battery or near its SIM / MicroSD card holder. The pins are hidden. You may have to dismantle your phone's back cover. The JTAG pins are usually six gold pins clustered close to each other, as shown in this photo:
Click to enlarge
You use a special hardware JTAG box which comes with a vast array of cables (different cables for different types of devices), plus specialized software specifically made for your device model. (There exist generic catch-all JTAG boxes that can be loaded with specific microcode instructions for your particular manufactured board. The tricky part is getting the exact microcode for your device's circuit board. If you use the wrong microcode, it can cause permanent damage.)
The microcode instructions are emitted by the JTAG box attached to the cable, clipped in position on top of the JTAG pins. The box sends a signal to your device to revive it. Now an appropriate firmware image can be flashed to your device.
This is a highly specialized topic. A background in electrical engineering can be handy, to know which pins are used for ground (GND), transmit (TX), receive (RX) and power (PWR). The power is the important one: if the battery is dead, power can still be fed into your device.
You can buy JTAG boxes online, but they tend to cost a couple hundred US dollars or so. It's because of differing manufacturers with different types of cables, and different arrangements of on-device JTAG pins.
ManubhargavJTAG is a Protocol !
Simply in other Protocols such as USB is protocol UART is protocol for transferring DATA or communicating with devices .
JTAG Directly communicate with the CPU and with the help of CPU's JTAG Protocol you can access CPU's peripherals and memory/NAND/eMMC one of this peripherals .
In order to relate directly answer to your question for the reviving part .Even Though your device is not able to boot-up from the internal memory/NAND/eMMC JTAG access still available through JTAG Protocol .
Accessing JTAG and re-writing Boot partitions to your device internal Memory/NAND/eMMC will revive your phone , phone will be able to boot-up and will be revived .
Some Commercial JTAGs : ort-jtag.com
Some JTAG Pinouts:
bmdixonNot the answer you're looking for? Browse other questions tagged hardwareunbrickingterminology or ask your own question.
Compiling OpenOCD on the RaspberryPi:
You will need:
- Raspberry Pi
- 6 Female-to-Female jumper wires
- Two Small pin clips (IC Hooks)
Note: I am using Occidentalis v0.2 from Adafruit. You should be able to install it fresh, follow the instructions to complete the setup, and then make sure ssh is turned on.
We are using a recent version of OpenOCD that has gpio-bitbang capabilities. This has been added since their latest release (v0.6.1 as I write this), and the openocd package that apt-get will give you is even older (v0.5.x). This means we have to compile it from the source, but don't worry. I've figured out the steps.
First, get the dependencies, and then grab the code:
NOTE: These commands are to be ran on the raspberry pi
This is the compile as one massive command, copy and paste it in, and let it run. It'll take a while.
Note: You might get an error about not having makeinfo. It's not a problem.
Note: usbprog and rlink require the older libusb-0.1 (libftdi-dev contains libusb-1.0)
Now, to actually install OpenOCD (You'll probably be asked for your password for any command that starts with sudo
):
Wiring it up:
TODO: Add images, cleanup description.
Using this schematic of the Arduino Due and this reference image of the Pi's GPIO pins, you'll connect these pins from the Due to the Pi (ideally with the power off -- you've been warned):
Due | Pi |
---|---|
JTAG_TCK (Debug header) | 11 |
JTAG_TMS (Debug header) | 25 |
JTAG_TDI (JTAG header, with clip) | 10 |
JTAG_TDO (JTAG header, with clip) | 9 |
MASTER-RESET (Debug header, closest to the reset button) | 7 |
GND (Debug header) | GND |
The JTAG header on the Due is the really small 5x2 pin header on the corner near the Reset button. Note that on the Due schematic, there's a small notched corner on the JTAG header symbol. That's matched by a dot on the silkscreen near a corner of the JTAG header of the actual Due. You'l use the clips to connect to two of those small pins.
The Debug header is the 0.1' male header right next to the JTAG header. You'll use F-F headers to connect to all four of those connections.
You'll also need to power the Due separately from the Pi, or you'll get random resets on the Pi.
How To Install Xm360 On Your Jtag Pinout System
Running it:
Test that it connects properly:
You should get something that looks like this:
Now, on you dekstop computer you can run gdb, but it has to be the arm gdb. I'm using Yatargo on OS X. You can also dig around in the Arduino distribution and find it.
Debugging an Arduino sketch
Maks sure you can program the Due from the Arduino environment normally.
Turn on 'Show verbose output during: [X] Debugging' in the Arduino preferences, and then compile your sketch.
You should see a line similar (on OS X) to this one, near the end of the listing in the Arduino console (lines broken for readability):
Copy the part that starts with /
and ends with arm-none-eabi-objcopy
and replace the objcopy
with gdb
to make the gdb command. (Add .exe
and flip the slashes as needed for windows.) Paste that into a command line, and add a space.
Now, copy the part that starts with /
and ends with .elf
and paste it at the end of the gdb command.
You should get something like this (except you won't have [...]
-- I put those there because the command get really long):
Now, you need the IP or DNS address of the Pi. On my local network, it's address is raspberrypi
-- replace that as you see it below as needed.
( SIDE NOTE:Making ssh keys are beyond the scope of this, but here's the command I used to send the keys to the Pi (whose) so that I won't have to enter my password anymore:cat ~/.ssh/id_rsa.pub ssh pi@raspberrypi -C 'mkdir .ssh; cat - >> ~/.ssh/authorized_keys'
)
Now, at the (gdb)
prompt, enter target extended-remote raspberrypi:3333
, and it should look like this:
Now you have debugger control of the Due, from your computer, through the Pi.
A few commands
quit
-- exits the debugger. (You'll still need to hit Ctrol-C on the Pi to stop the OpenOCD that's running)monitor reset halt
-- restarts the Due and stops it before runningrun
-- almost the same, starts he Due from reset-state (I believe this may not wipe RAM or registers properly)load
-- upload the hex file. (Will also cause gdb to rescan it for changes.) You can recompile in the Arduino, and upload right over the debug connection.file <filename.elf>
-- loads another .elf
file into gdb. Use load
to upload it.^c
-- type Control-C to stop the sketch running and drop into the debugger.break <function filename:line>
-- see the gdb command reference. Note: gdb doesn't know about the .ino file, and so it's difficult to see code that's in the sketch. This is a problem I'm yet to overcome properly.c
-- short for continue. Resumes running after a break.s
-- single-line step, over subroutines.n
-- next line -- single line step into subroutines.
See the gdb quick reference for more commands. Google is your friend as well.
I was even able to run it with the Pi connected to the network via WiFi.