<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: JTAG Boundary-Scan Vs. JTAG Emulation (ICE)</title>
	<atom:link href="http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/</link>
	<description>JTAG and Boundary-Scan Tools</description>
	<lastBuildDate>Fri, 22 Jul 2011 22:05:47 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: admin</title>
		<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-6310</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 15 Jul 2011 09:44:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-6310</guid>
		<description>Hi Baher,
Great question.
The answer is it depends on the processor you are using and what you are trying to do.
For example most JTAG enabled chips support both hardware and software breakpoints in the chip.

As for how this works in practice, to set a software break, the debugger would write an illegal/breakpoint instruction into memory that will cause the processor to go to an exception vector (interrupt) when the code is run and the address is hit. The debugger needs to take over this interrupt and put in its own handler to process the breakpoint.

This method has a few issues in embedded programming:
It does not work on FLASH based code (unless you want to replace the code in FLASH which is slow on most debuggers).
It does not work if mmu translation is happening like with LINUX applications as many applications share the same code address.
It does not work if a boot loader or some other mechanism overwrites the breakpoint. For example if you put a software breakpiont at the RAM address for the start of the LINUX kernel it will not work since UBoot will load the kernel to this address and overwrite your breakpoint. This is why you would use a hardware breakpoint.

Hardware breakpoints are built in on-chip. They are typically set and cleared by accessing processor registers.
Usually they branch to an exception when they are hit and can be handled in the same way as the software breakpoint from then on.

Other things the debugger needs to do on the host side:
Track the address of code and functions so that the user can set breaks at source code level.
Keep track of the number of breaks in use since all systems handle only a finite number of breakpoints.
thanks
pat</description>
		<content:encoded><![CDATA[<p>Hi Baher,<br />
Great question.<br />
The answer is it depends on the processor you are using and what you are trying to do.<br />
For example most JTAG enabled chips support both hardware and software breakpoints in the chip.</p>
<p>As for how this works in practice, to set a software break, the debugger would write an illegal/breakpoint instruction into memory that will cause the processor to go to an exception vector (interrupt) when the code is run and the address is hit. The debugger needs to take over this interrupt and put in its own handler to process the breakpoint.</p>
<p>This method has a few issues in embedded programming:<br />
It does not work on FLASH based code (unless you want to replace the code in FLASH which is slow on most debuggers).<br />
It does not work if mmu translation is happening like with LINUX applications as many applications share the same code address.<br />
It does not work if a boot loader or some other mechanism overwrites the breakpoint. For example if you put a software breakpiont at the RAM address for the start of the LINUX kernel it will not work since UBoot will load the kernel to this address and overwrite your breakpoint. This is why you would use a hardware breakpoint.</p>
<p>Hardware breakpoints are built in on-chip. They are typically set and cleared by accessing processor registers.<br />
Usually they branch to an exception when they are hit and can be handled in the same way as the software breakpoint from then on.</p>
<p>Other things the debugger needs to do on the host side:<br />
Track the address of code and functions so that the user can set breaks at source code level.<br />
Keep track of the number of breaks in use since all systems handle only a finite number of breakpoints.<br />
thanks<br />
pat</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Baher</title>
		<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-6309</link>
		<dc:creator>Baher</dc:creator>
		<pubDate>Fri, 15 Jul 2011 09:17:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-6309</guid>
		<description>How the break point on my debugger can set the break point on the processor? What is the sequence of operations that the software (debugger) on my host computer to make the processor reach the break point?? 

Does the software inserts a breakpoint instruction while the processor is running?? In other words...does the debugger software tries to write an instruction on the processor while it&#039;s running to force it to halt?? And if so..how the software debugger writes to memory while the processor is reading instructions from the same memory???</description>
		<content:encoded><![CDATA[<p>How the break point on my debugger can set the break point on the processor? What is the sequence of operations that the software (debugger) on my host computer to make the processor reach the break point?? </p>
<p>Does the software inserts a breakpoint instruction while the processor is running?? In other words&#8230;does the debugger software tries to write an instruction on the processor while it&#8217;s running to force it to halt?? And if so..how the software debugger writes to memory while the processor is reading instructions from the same memory???</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: returnGoodguy</title>
		<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1674</link>
		<dc:creator>returnGoodguy</dc:creator>
		<pubDate>Wed, 10 Jun 2009 05:11:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1674</guid>
		<description>Hi,
It&#039;s very helpful article. But to understand precisely, I have two questions about them.

First , I understand that ICE is more complicated than JTAG Boundary SCAN Test. Does functionality of the ICE cover that of another? I mean, ICE can control/run processors, directly program programmable devices, and test JTAG Cell enabled hardware logic.

Second, this is about ICE devices working with processor(like ARM)-based FPGA board (like MultiICE). ICE device must understand architecture of target microprocessor and know where JTAG cells are placed exactly in the architecture. So the ICE device can control the processor using the JTAG SCAN Chain of the processor, FLASH, RAM, and the others.


Please confirm above two questions.
Thanks for your time to answer.</description>
		<content:encoded><![CDATA[<p>Hi,<br />
It&#8217;s very helpful article. But to understand precisely, I have two questions about them.</p>
<p>First , I understand that ICE is more complicated than JTAG Boundary SCAN Test. Does functionality of the ICE cover that of another? I mean, ICE can control/run processors, directly program programmable devices, and test JTAG Cell enabled hardware logic.</p>
<p>Second, this is about ICE devices working with processor(like ARM)-based FPGA board (like MultiICE). ICE device must understand architecture of target microprocessor and know where JTAG cells are placed exactly in the architecture. So the ICE device can control the processor using the JTAG SCAN Chain of the processor, FLASH, RAM, and the others.</p>
<p>Please confirm above two questions.<br />
Thanks for your time to answer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1628</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 29 May 2009 09:28:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1628</guid>
		<description>Hi,
JTAG ICE - Used to control the processor and RUN CODE on the target microprocessor. ICE allows you to load the code, set it, run it ,stop it,  set breakpoints and in general debug the code. 

JTAG Boundary SCAN Test - Uses JTAG to send and receive test patterns to devices on a board, can also be used to program devices. Is NOT used to load code or debug code on the target microprocessor. In fact does not even require a microprocessor in the circuit; can work with hardware logic (JTAG Cell enabled) only.

JTAG ICE programs FLASH by loading code to RAM on the system and causing the target micro to run this code. The code does the erase and programming of the FLASH. ICE can also do slow FLASH programming by &quot;wiggling&quot; address, data and control, lines from micro to the FLASH. This does not require working RAM (or code in RAM).

Hope that helps</description>
		<content:encoded><![CDATA[<p>Hi,<br />
JTAG ICE &#8211; Used to control the processor and RUN CODE on the target microprocessor. ICE allows you to load the code, set it, run it ,stop it,  set breakpoints and in general debug the code. </p>
<p>JTAG Boundary SCAN Test &#8211; Uses JTAG to send and receive test patterns to devices on a board, can also be used to program devices. Is NOT used to load code or debug code on the target microprocessor. In fact does not even require a microprocessor in the circuit; can work with hardware logic (JTAG Cell enabled) only.</p>
<p>JTAG ICE programs FLASH by loading code to RAM on the system and causing the target micro to run this code. The code does the erase and programming of the FLASH. ICE can also do slow FLASH programming by &#8220;wiggling&#8221; address, data and control, lines from micro to the FLASH. This does not require working RAM (or code in RAM).</p>
<p>Hope that helps</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: abhayadev s</title>
		<link>http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1627</link>
		<dc:creator>abhayadev s</dc:creator>
		<pubDate>Fri, 29 May 2009 06:38:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.etoolsmiths.com/blog/jtag-boundary-scan-vs-jtag-emulation-ice/#comment-1627</guid>
		<description>Hi,
nice article... but still i am not clear on the functionality diff od both of them. can you be specif to an operation of ICE and JTAG whic compliments each other.

one more thing how a jtag/ice programs the flash ?

thanks for your time to reply,</description>
		<content:encoded><![CDATA[<p>Hi,<br />
nice article&#8230; but still i am not clear on the functionality diff od both of them. can you be specif to an operation of ICE and JTAG whic compliments each other.</p>
<p>one more thing how a jtag/ice programs the flash ?</p>
<p>thanks for your time to reply,</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Served from: www.etoolsmiths.com @ 2012-02-05 05:00:09 by W3 Total Cache -->
