<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Truly Integrated &#187; HW</title>
	<atom:link href="http://truly-integrated.net/category/hw/feed/" rel="self" type="application/rss+xml" />
	<link>http://truly-integrated.net</link>
	<description>electronics microcontrollers fpga vhdl</description>
	<lastBuildDate>Fri, 19 Feb 2010 21:22:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>USB JTAG i OpenOCD 0.1.0 + Eclipse</title>
		<link>http://truly-integrated.net/2009/07/usb-jtag-i-openocd-010-eclipse/</link>
		<comments>http://truly-integrated.net/2009/07/usb-jtag-i-openocd-010-eclipse/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 16:24:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[HW]]></category>
		<category><![CDATA[SW]]></category>

		<guid isPermaLink="false">http://truly-integrated.net/?p=32</guid>
		<description><![CDATA[Jakiś czas temu światło dzienne ujrzała nowa wersja popularnego oprogramowania OpenOCD, służącego do programowania i debugowania uC. W związku z tym, jakże wspaniałym, wydarzeniem uznałem za zasadne przedstawienie Czytelnikowi treści skryptów, służących do programowania pamięci flash mikrokontrolerów AT91SAM7S64. Wybór mikrokontrolera jest podyktowany tym, iż znalazł on zastosowanie w dużej części wykonanych przeze mnie urządzeń. W [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu światło dzienne ujrzała nowa wersja popularnego oprogramowania <a title="OpenOCD" href="http://openocd.berlios.de/web/">OpenOCD</a>, służącego do programowania i debugowania uC. W związku z tym, jakże wspaniałym, wydarzeniem uznałem za zasadne przedstawienie Czytelnikowi treści skryptów, służących do programowania pamięci flash mikrokontrolerów AT91SAM7S64. Wybór mikrokontrolera jest podyktowany tym, iż znalazł on zastosowanie w dużej części wykonanych przeze mnie urządzeń. W roli JTAG&#8217;a wykorzystałem, własnoręcznie wykonany,<a href="http://truly-integrated.net/archives/3"> klon Turtelizera 2</a>.</p>
<p>W pakiecie OpenOCD dołączono wiele skryptów opisujących sposób pracy interfejsów JTAG, jak również dla poszczególnych układów docelowych (targetów). Nic nie stoi na przeszkodzie aby je wykorzystać i znacząco ułatwić sobie życie. Przykładowy skrypt flashujący uC plikiem<em> main.hex </em> wygląda następująco:</p>
<pre>source [find openocd-0.1.0/src/target/interface/turtelizer2.cfg] # (1)
source [find openocd-0.1.0/src/target/target/sam7s64.cfg]        # (2)

init                                  # (3)
reset halt                            # (4)
flash write_image main.hex 0          # (5)
reset run                             # (6)
shutdown                              # (7)</pre>
<p>Pierwsza linia zawiera ściężkę prowadzącą do opisu użytego interfejsu JTAG, zaś linia (2) wskazuje na plik z opisem układu docelowego. Jeśli Czytelnik w swej pracy wykorzystuje inne uklady docelowe należy przejrzeć katalog <em>target</em> w folderze instalacyjnym OpenOCD w poszukiwaniu odpowiedniego pliku. Z każdym dniem społeczność pracująca nad OpenOCD uzupełnia zbiór plików konfiguracyjnych o nowe targety. Pozostałe linie mają składnię podobną do znanej z poprzednich wersji OpenOCD. Powodują one inicjalizację komunikacji z targetem oraz jego zresetowanie i wstrzymanie (3, 4). Flashowanie odbywa się dzięki komendzie zawartej w linii (5), której pierwszym parametrem jest operacja jaką wykonujemy na pamięci flash, po niej następuje nazwa pliku oraz offset od początku przestrzeni adresowej uC pod jaki zostaną zapisane dane. Linie (6, 7) kolejno resetują mikrokontroler i &#8220;wprawiają go w ruch&#8221; oraz kończą pracę OpenOCD. Jak wynika z załączonego przykładu skrypty, dzięki gotowym zbiorom plików konfiguracyjnych, uległy znacznemu uproszczeniu.</p>
<p>Skrypt służący do debugowania jest równie prosty co powyższy, używany do flashowania. Jego treść przedstawia się w sposób zgodny z przdestawionym na listingu:</p>
<pre>source [find ./openocd-0.1.0/src/target/interface/turtelizer2.cfg] # (1)

# Change the default telnet port...
telnet_port 4444                     # (2)

# GDB connects here
gdb_port 3333                        # (3)

# GDB can also flash my flash!
gdb_memory_map enable                # (4)
gdb_flash_program enable             # (5)
gdb_breakpoint_override hard         # (6)

source [find ./openocd-0.1.0/src/target/target/sam7s64.cfg]        # (7)

init                                 # (8)</pre>
<p>Przeznaczenie linii  (1, 7)  jest znane z poprzedniego skryptu. Linia (2) służy do konfiguracji portu na którym będzie nasłuchiwać OpenOCD. Linia (3) ustawia port pracy samego debuggera GDB. Linie (4, 5) umożliwiają programowanie pamięci flash uC z wykorzystaniem GDB. Linia (6) ustawia rodzaj stosowanych breakpoinów na breakpointy hardwareowe. Opcja ta jest niezbędna w momencie gdy firmware został zlinkowany tak by pracować w pamięci flash a nie w pamięci ram. Należy mieć świadomość, iż liczba jednocześnie stosowanych breakpointów hardwareowych jest bardzo ograniczona, a w przypadku AT91SAM7S64 wynosi dokładnie dwa. Linia (8) służy do uruchomienia procesu debugującego.</p>
<p style="text-align: justify;">Tak przygotowany skrypt wyśmienicie współpracuje ze środowiskiem Eclipse. Konfigurację Eclipsa z doinstalowanym pluginem <a title="Zylin CDT plugin" href="http://opensource.zylin.com/embeddedcdt.html">Zylin Embedded CDT</a> rozpoczynamy od dodania nowej <em>Debug Configuration</em> typu <em>Zylin Embedded Debug (Native)</em>. Należy wybrać nazwę projektu dla którego konfigurujemy debug oraz plik wykonywalny w formacie <em>elf</em>, który zawiera m. in. symbole niezbędne dla debugu. Plik taki powstaje każdorazowo w wyniku zlinkowania skompilowanych źródeł projektu.</p>
<p style="text-align: center;"><a href="http://truly-integrated.net/wp-content/uploads/2009/07/debug_conf.png"><img class="aligncenter size-medium wp-image-63" title="debug_conf" src="http://truly-integrated.net/wp-content/uploads/2009/07/debug_conf-570x427.png" alt="debug_conf" width="570" height="427" /></a></p>
<p style="text-align: justify;">Następnie przechodzimy do zakładki <em>Debbuger</em>, gdzie ustawiamy jako aplikację debugującą <em>arm-elf-gcc</em> lub innym, w zależności z jakich kompilatorów korzystamy. W zakładce <em>Commands</em> ustawiamy komendy wysyłane podczas inicjalizacji oraz samego uruchomienia trybu debug. Komendy, jakie należy umieścić w sekcji <em>Initialize commands</em> są następujące:</p>
<pre style="text-align: justify;">target remote localhost:3333
monitor reset halt</pre>
<p>Sekcję<em> &#8216;Run commands&#8217;</em> pozostawiamy pustą. Tak przygotowany Eclipse jest gotowy do odpluskwiania (ech&#8230;), zaraz po uruchomieniu opisanego wcześniej skryptu uruchamiającego <em>debug mode</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://truly-integrated.net/2009/07/usb-jtag-i-openocd-010-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turtelizer 2 JTAG Cloned.</title>
		<link>http://truly-integrated.net/2009/04/turtelizer-2-jtag-cloned/</link>
		<comments>http://truly-integrated.net/2009/04/turtelizer-2-jtag-cloned/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 12:50:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HW]]></category>

		<guid isPermaLink="false">http://rzech.int.pl/~vontas/?p=3</guid>
		<description><![CDATA[Truly Integrated Turtelizer 2 Clone to kolejna implementacja popularnego Turtelizera 2, którego wersja pierwotna została opisana na ethrenut.de. Programator został zaprojektowany tak aby współpracować z oprogramowaniem OpenOCD. 10-pinowe złącze JTAG jest pinowo kompatybilne z pierwowzorem. Cały projekt jest oparty na popularnym scalaku FT 2232 firmy FTDI. Scalak ten ma wsparcie zarówno ze strony systemu operacyjnego [...]]]></description>
			<content:encoded><![CDATA[<p>Truly Integrated Turtelizer 2 Clone to kolejna implementacja popularnego Turtelizera 2, którego wersja pierwotna została opisana na<a title="ethernut.de" href="http://ethernut.de"> ethrenut.de</a>. Programator został zaprojektowany tak aby współpracować z oprogramowaniem <a href="http://openocd.berlios.de/web/">OpenOCD</a>. 10-pinowe złącze JTAG jest pinowo kompatybilne z pierwowzorem. Cały projekt jest oparty na popularnym scalaku FT 2232 firmy <a href="http://www.ftdichip.com/">FTDI</a>. Scalak ten ma wsparcie zarówno ze strony systemu operacyjnego Windows jak również Linux. Prócz samego interfejsu <a href="http://pl.wikipedia.org/wiki/JTAG">JTAG</a> programator został wyposażony  w port RS232 o prędkości do 115200 bps. Konwersję poziomów napięć dla RSa zapewnia ST3232, który jest podobnież jednym z lepszych konwerterów poziomów napięć spośród scalaków dostępnych na rynku. Aby zabezpieczyć komputer przed możliwością wystąpienia efektów typu światło-dzwięk-zapach, powstających w wyniku tzw. przepięć wyjścia układu zostały połączone poprzez bufory, które dodatkowo umożliwiają współpracę z targetami zasilanymi napięciami innymi niż to, którym zasilany jest sam JTAG.</p>
<p>Aby móc użyć portu szeregowego w systemie Linux należy załadować moduł jądra o nazwie <em>ftdi_sio</em>. Z racji tego iż programator korzysta z nietypowego <em>vendor_id</em> oraz <em>product_id</em> (nietypowe = różne od domyślnego dla kości FT2232) ładowanie modułu należy przeprowadzić w następujący sposób:</p>
<pre># modprobe ftdi_sio vendor=0x403 product=0xbdc8</pre>
<p>Sterowniki dla systemu Windows znajdują się w pakiecie OpenOCD.  Wieść niesie, że podobno działają, ja niestety potwierdzić tego nie mogę gdyż nie posiadam takowego systemu operacyjnego (bida, panie..).</p>
<p>Na zakończenie zamieszczam zdjęcie programatora mej produkcji:</p>
<p><img class="aligncenter size-medium wp-image-76" title="Programator JTAG" src="http://truly-integrated.net/wp-content/uploads/2009/04/prog1-570x358.jpg" alt="Programator JTAG" width="570" height="358" /></p>
]]></content:encoded>
			<wfw:commentRss>http://truly-integrated.net/2009/04/turtelizer-2-jtag-cloned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
