<?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>Backblog</title>
	<atom:link href="http://backblog.betriebswerk-landshut.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://backblog.betriebswerk-landshut.de</link>
	<description>Über Linux, Fotos und anderes Zeug</description>
	<lastBuildDate>Thu, 12 Aug 2010 09:52:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Digikam Metadata mit PHP auslesen</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/07/11/digikam-metadata-php/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/07/11/digikam-metadata-php/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 20:42:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[digikam]]></category>
		<category><![CDATA[iptc]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=534</guid>
		<description><![CDATA[Das Auslesen der mit digikam gesetzten Keywords für die Fotoverwaltung stellt an und für sich kein Problem dar wenn man Sie erst mal gefunden hat. Entgegen meiner Annahme ich würde die Tags in den Exif Bilddaten finden werden diese in den IPTC Infos gespeichert und können einfach ausgelesen werden. Beispiel: &#60;?php $path = &#8220;test3.jpg&#8221;; $info [...]]]></description>
			<content:encoded><![CDATA[<p>Das Auslesen der mit digikam gesetzten Keywords für die Fotoverwaltung stellt an und für sich kein Problem dar wenn man Sie erst mal gefunden hat. Entgegen meiner Annahme ich würde die Tags in den Exif Bilddaten finden werden diese in den IPTC Infos gespeichert und können einfach ausgelesen werden.</p>
<p>Beispiel:</p>
<blockquote><p>&lt;?php<br />
$path = &#8220;test3.jpg&#8221;;<br />
$info = array();<br />
$size = getimagesize($path, $info);<br />
$iptc = iptcparse($info['APP13']);</p>
<p>foreach ($iptc as $key =&gt; $section) {<br />
foreach ($section as $name =&gt; $val) {<br />
echo &#8220;$key.$name.$section: $val&lt;br /&gt;\n&#8221;;</p>
<p>}<br />
}</p>
<p>?&gt;</p></blockquote>
<p>an die zugehörigen Exifdaten kommt man am besten über die<a href="http://de3.php.net/manual/de/function.exif-read-data.php"> exif_read_data </a>funktion welche in der <a href="http://de3.php.net/manual/">PHPhilfe</a> sehr ausführlich dokumentiert ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/07/11/digikam-metadata-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regensburg Panorama</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/07/01/regensburg-panorama/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/07/01/regensburg-panorama/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 19:08:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Hotel Sorat]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Regen]]></category>
		<category><![CDATA[Regensburg]]></category>
		<category><![CDATA[Steinerne Brücke]]></category>
		<category><![CDATA[Ufer]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=531</guid>
		<description><![CDATA[Heute hab ich ein wenig Zeit gefunden die Bilder letzten Bilder nochmal durchzusehen. Es ist mir dabei das Regensburg Panorama in die Hände gefallen. Sehr schön kann man auf dem Bild die Steinerne Brücke, das Nord Ufer des Regen und das Insel Hotel Sorat sehen. Es ist eventuell eines der Wenigen Bilder auf denen der [...]]]></description>
			<content:encoded><![CDATA[<p>Heute hab ich ein wenig Zeit gefunden die Bilder letzten Bilder nochmal durchzusehen. Es ist mir dabei das Regensburg Panorama in die Hände gefallen. Sehr schön kann man auf dem Bild die Steinerne Brücke, das Nord Ufer des Regen und das Insel Hotel Sorat sehen. Es ist eventuell eines der Wenigen Bilder auf denen der Dom nicht zu sehen ist.</p>
<div id="attachment_532" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/07/Regensburg_Panorama_Regen_Nord_smal.jpg"><img class="size-medium wp-image-532" title="Regensburg Panorama" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/07/Regensburg_Panorama_Regen_Nord_smal-300x70.jpg" alt="Panorama der Stadt Regensburg bzw des Nordufers des Regens" width="300" height="70" /></a><p class="wp-caption-text">Regensburg Panorama</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/07/01/regensburg-panorama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atrium der Stusta zum Stustaculum 2010</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/06/13/atrium-der-stusta-zum-stustaculum-2010/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/06/13/atrium-der-stusta-zum-stustaculum-2010/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 10:47:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Stustaculum]]></category>
		<category><![CDATA[12 mm]]></category>
		<category><![CDATA[360 Grad]]></category>
		<category><![CDATA[Atrium]]></category>
		<category><![CDATA[Autopano Pro]]></category>
		<category><![CDATA[Canon 5D II]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Regen]]></category>
		<category><![CDATA[Stusta]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=524</guid>
		<description><![CDATA[Dieses Panorama entstand an einem Morgen während des Stustaculums im Atrium der Studenten Stadt München &#8211; Freimann. Es besteht aus 12 Fotos mit einer Brennweite von 12 mm welche ich mit der Canon 5D II eines bekannten aus der Hand aufgenommen habe und deckt annähernd 360 Grad ab. Auf dem Bild sind noch deutlich die [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_525" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/06/Atrium_Stusta_2010_Panorma_360_Stustaculum.jpg"><img class="size-medium wp-image-525" title="360 Grad Panorama des Atriums der Stusta 2010" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/06/Atrium_Stusta_2010_Panorma_360_Stustaculum-300x123.jpg" alt="360 Grad Panorama des Atriums der Stusta 2010" width="300" height="123" /></a><p class="wp-caption-text">360 Grad Panorama des Atriums der Stusta 2010</p></div>
<p>Dieses Panorama entstand an einem Morgen während des Stustaculums im Atrium der Studenten Stadt München &#8211; Freimann. Es besteht aus 12 Fotos mit einer Brennweite von 12 mm welche ich mit der Canon 5D II eines bekannten aus der Hand aufgenommen habe und deckt annähernd 360 Grad ab. Auf dem Bild sind noch deutlich die Pfützen von den vorhergegangenen Regenfällen zu sehen. Um das Panorama etwas netzfreundlicher zu machen habe ich es von 55 MegaPixeln auf eine (halbwegs) brauchbare Auflösung runter gerechnet und komprimiert.  In der Originalgröße ist die Abbildungsqualität einiger Bilder nicht sooo toll. Sie weisen trotz einer Blende von 9 eine gewisse Unschärfe auf die ich bei 12mm so nicht erwartet hätte.</p>
<p>Gestiched wurde das Panorama mit AutopanoPro unter Gentoo Linux 64 Bit.<br />
Kleiner gerechnet mit Gimp.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/06/13/atrium-der-stusta-zum-stustaculum-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xilinx Microblaze XDmaCentral DMA Controller</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/06/10/xilinx-microblaze-xdmacentral-dma-controller/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/06/10/xilinx-microblaze-xdmacentral-dma-controller/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 07:25:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diplomarbeit]]></category>
		<category><![CDATA[FPGA]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Xilinx]]></category>
		<category><![CDATA[Central DMA]]></category>
		<category><![CDATA[DDR]]></category>
		<category><![CDATA[EDK]]></category>
		<category><![CDATA[Microblaze]]></category>
		<category><![CDATA[PLB]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[SDRAM]]></category>
		<category><![CDATA[XDmaCentral]]></category>
		<category><![CDATA[Xilinx Software Development Kit]]></category>
		<category><![CDATA[XPS]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=516</guid>
		<description><![CDATA[Dieses einfache Beispiel soll verdeutlichen wie man am einfachsten mit dem XCmaCentral XPS Central DMA Controller umgeht, es ist für ein Anfang bewusst einfach gehalten. Und kopiert Werte von einem Speicherbereich im SD oder DDR RAM in den anderen. Bei dem System ist darauf zu achten dass, Microblaze, DMA Controller (SPLB &#38; MPLB) und Speicher [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses einfache Beispiel soll verdeutlichen wie man am einfachsten mit dem XCmaCentral XPS Central DMA Controller umgeht, es ist für ein Anfang bewusst einfach gehalten. Und kopiert Werte von einem Speicherbereich im SD oder DDR RAM in den anderen. Bei dem System ist darauf zu achten dass, Microblaze, DMA Controller (SPLB &amp; MPLB) und Speicher im Xilinx Platform Studio (XPS) am gleichen Buss hängen. Ist man soweit kann man das Projekt für das Xilinx Software Development Kit (SDK) exportieren.</p>
<p>Beim programmieren des DMA gibt es ein paar kleine Stolperfallen.</p>
<ul>
<li>bei XDmaCentral_SetControl sollte man sehr genau darauf achten Source und Destination nich zu vertauschen</li>
<li>XDmaCentral_Transfer will eine Angabe haben wie viele Byte er zu übertragen hat &#8230; das sind für eine 32 Bit Variable also 4 &#8230;</li>
</ul>
<p>Sonst ist die Konfiguration sehr &#8220;straightforward&#8221;  &#8230;.</p>
<blockquote><p>#include &#8220;xparameters.h&#8221;<br />
#include &#8220;xintc.h&#8221;<br />
#include &#8220;xdmacentral.h&#8221;<br />
#define TEST_BUFFER_SIZE       20//4096</p>
<p>int main () {<br />
static XDmaCentral dma;<br />
Xuint32* Buffer;<br />
Xuint32 *Buffer2;<br />
Buffer = (Xuint32 *)0x8c000A00;<br />
Buffer2 = (Xuint32 *)0x8c000000;<br />
//(XPAR_DDR2_SDRAM_16MX32_MPMC_BASEADDR);</p>
<p>Xuint32 Index;<br />
XStatus Status;</p>
<p>for (Index = 0; Index &lt; TEST_BUFFER_SIZE; Index++)<br />
{<br />
Buffer[Index] = Index+41;<br />
}</p>
<p>for (Index = 0; Index &lt; TEST_BUFFER_SIZE; Index++)<br />
{</p>
<p>xil_printf(&#8220;\n\r %x %d&#8221;,&amp;Buffer[Index], Buffer[Index]);<br />
}</p>
<p>Status = XDmaCentral_Initialize(&amp;dma, XPAR_XPS_CENTRAL_DMA_0_DEVICE_ID);</p>
<p>if (Status != XST_SUCCESS)<br />
{<br />
xil_printf(&#8220;The Central DMA Didn&#8217;t Initialize! \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
XDmaCentral_Reset(&amp;dma);</p>
<p>XDmaCentral_SetControl(&amp;dma,XDMC_DMACR_SOURCE_INCR_MASK<br />
+XDMC_DMACR_DEST_INCR_MASK);<br />
XDmaCentral_Transfer(&amp;dma,(Xuint32 *) Buffer, (Xuint32 *) Buffer2, TEST_BUFFER_SIZE*4);</p>
<p>xil_printf(&#8220;\n\r Speicherzelle in Buffer %x wert an der stelle %d&#8221;,Buffer,*Buffer);<br />
xil_printf(&#8220;\n\r Speicherzelle in Buffer %x wert an der stelle %d&#8221;,Buffer2,*Buffer2);</p>
<p>for (Index = 0; Index &lt; TEST_BUFFER_SIZE; Index=Index+1)<br />
{<br />
xil_printf(&#8220;\n\r %x %d&#8221;,&amp;Buffer2[Index],Buffer2[Index]);<br />
}</p>
<p>xil_printf(&#8220;\r\nDone&#8221;);</p>
<p>return 0;</p>
<p>}</p></blockquote>
<p>Das kleine Programm erzeugt ein Array im RAM welches dann vom DMA Controller in ein anders Umgespeichert wird. Im nächsten Schritt werde ich nun daran Arbeiten Daten mit dem Central DMA an und von meinem Ipif Modul zu übertragen. Der Central DMA kommt deswegen zum Einsatz da für den PLB4.6 kein IpIf Modul mit Integriertem DMA zur Verfügung steht. Siehe <a href="http://www.xilinx.com/support/documentation/sw_manuals/edk10_mg_ug.pdf">hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/06/10/xilinx-microblaze-xdmacentral-dma-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schienen Panorama</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/03/17/schienen-panorama/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/03/17/schienen-panorama/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 20:48:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Abenddämmerung]]></category>
		<category><![CDATA[HBF]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Schienen]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=510</guid>
		<description><![CDATA[Im Herbst entstand das Panorama (unten) der Schienen am Landshuter HBF in der Abenddämmerung. Und lange Lag es nur bei mir am Desktop&#8230;. Das Panorama besteht aus 2 Querformantigen Einzelaufnahmen. Kein HDR oder ähnliches.]]></description>
			<content:encoded><![CDATA[<p>Im Herbst entstand das Panorama (unten) der Schienen am Landshuter HBF in der Abenddämmerung. Und lange Lag es nur bei mir am Desktop&#8230;.<br />
Das Panorama besteht aus 2 Querformantigen Einzelaufnahmen. Kein HDR oder ähnliches.</p>
<div id="attachment_511" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Schienen_Pano.jpg"><img class="size-medium wp-image-511" title="Schienen Panorama vom Landshuter HBF" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Schienen_Pano-300x104.jpg" alt="Schienen Panorama vom Landshuter HBF" width="300" height="104" /></a><p class="wp-caption-text">Schienen Panorama vom Landshuter HBF</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/03/17/schienen-panorama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Landshut Panorama im Winter</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/03/12/landshut-panorama-winte/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/03/12/landshut-panorama-winte/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 11:00:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Hofberg]]></category>
		<category><![CDATA[Jahreszeiten]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[Canon 50D]]></category>
		<category><![CDATA[High Res]]></category>
		<category><![CDATA[Hofgarten]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Winter]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=501</guid>
		<description><![CDATA[Mit einiger Verspätung komme ich heute endlich dazu meine im Winter geschossenen Panoramen meiner Heimatstadt Landshut Online zu stellen. Die Landshut Panoramas wurden vom Aussichtspunkt im Hofgarten aus aufgenommen und zeigen fast das gesamte Stadtgebiet. Da das Ausgangsmaterial nach der Umwandlung in jpg immer noch um die 30 MB hatte habe ich die Bilder auf [...]]]></description>
			<content:encoded><![CDATA[<p>Mit einiger Verspätung komme ich heute endlich dazu meine im Winter geschossenen Panoramen meiner Heimatstadt Landshut Online zu stellen. Die Landshut Panoramas wurden vom Aussichtspunkt im Hofgarten aus aufgenommen und zeigen fast das gesamte Stadtgebiet. Da das Ausgangsmaterial nach der Umwandlung in jpg immer noch um die 30 MB hatte habe ich die Bilder auf 25% runter Skaliert und auf 80% jpg komprimiert.</p>
<div id="attachment_502" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Landshut-Winter-Panorama-smal_25_80.jpg"><img class="size-medium wp-image-502" title="Landshut Winter Panorama 25%" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Landshut-Winter-Panorama-smal_25_80-300x103.jpg" alt="Landshut Winter Panorama 25%" width="300" height="103" /></a><p class="wp-caption-text">Landshut Panorama im Winter </p></div>
<p>Die mit meiner Canon 50D hochkant aufgenommen Bilder habe ich mit ufraw in Tiff umgewandelt bevor der Panorama Sticher Autopano Pro zum Einsatz kam um die Bilder zusammen zu rechnen. Soweit nichts weites vereinbart stehen die Bilder unter folgender Lizenz: <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/de/" target="_blank">http://creativecommons.org/licenses/by-nc-sa/3.0/de/</a></p>
<div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Landshut_Winter_Panorama2.jpg"><img class="size-medium wp-image-507 " title="winterliches Landshut Panorama" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/03/Landshut_Winter_Panorama2-300x123.jpg" alt="winterliches Landshut Panorama" width="300" height="123" /></a><p class="wp-caption-text">winterliches Landshut Panorama</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/03/12/landshut-panorama-winte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Der Heilige Castulus</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/27/der-heilige-kastulus/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/27/der-heilige-kastulus/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 15:01:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[Adolf Hitler]]></category>
		<category><![CDATA[Castulus]]></category>
		<category><![CDATA[Fensterbild]]></category>
		<category><![CDATA[Kirche]]></category>
		<category><![CDATA[Nazi Größen]]></category>
		<category><![CDATA[St. Martin]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=490</guid>
		<description><![CDATA[Wegen meinem kleinen &#8220;Wikipedia Problem&#8221; veröffentliche ich dieses Foto das ich vor etlichen Wochen in der Martinskirche in Landshut geschossen habe nicht auf Wiki Commons sondern hier. Für alle die dieses Bild weiter bearbeiten wollen &#8230; es stehe ihnen frei solange sie sich an die CC-Lizenz By-Nc halten. Das Bild Fensterbild findet sich im Linken [...]]]></description>
			<content:encoded><![CDATA[<p>Wegen meinem kleinen &#8220;<a href="http://backblog.betriebswerk-landshut.de/2010/02/27/wiki-commons-creative-commons-by-nc/" target="_blank">Wikipedia Problem</a>&#8221; veröffentliche ich dieses Foto das ich vor etlichen Wochen in der Martinskirche in Landshut geschossen habe nicht auf Wiki Commons sondern hier. Für alle die dieses Bild weiter bearbeiten wollen &#8230; es stehe ihnen frei solange sie sich an die<a href="http://creativecommons.org/licenses/by-nc/3.0/de/" target="_blank"> CC-Lizenz By-Nc </a>halten. Das Bild Fensterbild findet sich im Linken Seitenschiff der Martinskirche (ich glaube das 2. von vorn) über der Reliquie<a href="http://de.wikipedia.org/wiki/Heiliger_Kastulus" target="_blank"> des Heiligen Castulus</a>.<br />
Das Fensterbild das 3 Nazi Größen (unter ihnen <a href="http://de.wikipedia.org/wiki/Adolf_Hitler" target="_blank">Adolf Hitler</a>) als Folterknechte des Hl. <a href="http://de.wikipedia.org/wiki/Heiliger_Kastulus" target="_blank">Castulus</a> zeigt muss wohl nach dem 2. Weltkrieg ausgetauscht worden sein. Genauere Einzelheiten zu dem Bild sind mir leider nicht bekannt (wer was weiß bitte schnell nen Kommentar und/oder nen Link absetzen).  Damit das Bild hier rein passt habe ich es um 50% verkleinert.</p>
<div id="attachment_491" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/02/hitler_smal.jpg"><img class="size-medium wp-image-491   " title="Fensterbild des heiligen Kastulus" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/02/hitler_smal-300x140.jpg" alt="Fensterbild des Fensterbild des heiligen Kastulus in der St. Martinskirche Landshut" width="300" height="140" /></a><p class="wp-caption-text">Fensterbild des heiligen Kastulus</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/27/der-heilige-kastulus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wiki Commons &amp; Creative Commons By-Nc</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/27/wiki-commons-creative-commons-by-nc/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/27/wiki-commons-creative-commons-by-nc/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 14:25:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[By-Nc]]></category>
		<category><![CDATA[Creative Commons]]></category>
		<category><![CDATA[Kommerziell]]></category>
		<category><![CDATA[nutzung]]></category>
		<category><![CDATA[Wiki Commons]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=485</guid>
		<description><![CDATA[Heute musste ich leider feststellen dass es nicht möglich ist Bilder auf Wikipedia Commons zu veröffentlichen ohne die Kommerzielle Nutzung der Bilder zu ermöglichen. Doch dazu bin ich nicht bereit. Ein Bild und somit eine Arbeit die ich geleistet habe sollte nicht dazu dienen dass dritte damit Geld verdienen. Wenn ich ein Bild veröffentliche kommt [...]]]></description>
			<content:encoded><![CDATA[<p>Heute musste ich leider feststellen dass es nicht möglich ist Bilder auf Wikipedia Commons zu veröffentlichen ohne die Kommerzielle Nutzung der Bilder zu ermöglichen. Doch dazu bin ich nicht bereit. Ein Bild und somit eine Arbeit die ich geleistet habe sollte nicht dazu dienen dass dritte damit Geld verdienen. Wenn ich ein Bild veröffentliche kommt also maximal http://creativecommons.org/licenses/by-nc/3.0/de infrage.  (Wenn ich mich dazu entschließe nicht alle Rechte einfach bis zu einer Anfrage zu behalten <img src='http://backblog.betriebswerk-landshut.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/27/wiki-commons-creative-commons-by-nc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microblaze Xgpio interrupts</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/25/microblaze-xgpio-interrupts/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/25/microblaze-xgpio-interrupts/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:30:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FPGA]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[9600]]></category>
		<category><![CDATA[Base System Builder]]></category>
		<category><![CDATA[BSB]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[EDK 10.1]]></category>
		<category><![CDATA[Hyperterminal]]></category>
		<category><![CDATA[Intc]]></category>
		<category><![CDATA[Interrupts]]></category>
		<category><![CDATA[MHS]]></category>
		<category><![CDATA[Microblaze]]></category>
		<category><![CDATA[MSS]]></category>
		<category><![CDATA[Xgpio]]></category>
		<category><![CDATA[Xilinx]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=475</guid>
		<description><![CDATA[Leider sind die Beispiele betreffend Interrupts am Microblaze Softcore von Xilinx nicht gerade üppig gesät zumal wenn es um Xgpio geht. Dieses C Beispiel hilft hoffentlich ein wenig mit den Interrupts klar zu kommen. Laut der Xilinx Interrupt Dokumentation die schon ein paar Jahre auf dem Buckel hat (4 Jahre)  gibt es 2 Level auf [...]]]></description>
			<content:encoded><![CDATA[<p>Leider sind die Beispiele betreffend Interrupts am Microblaze Softcore von Xilinx nicht gerade üppig gesät zumal wenn es um Xgpio geht. Dieses C Beispiel hilft hoffentlich ein wenig mit den Interrupts klar zu kommen. Laut der<a href="http://www.xilinx.com/support/documentation/application_notes/xapp778.pdf" target="_blank"> Xilinx Interrupt Dokumentation</a> die schon ein paar Jahre auf dem Buckel hat (4 Jahre)  gibt es 2 Level auf denen die Interrupts angelegt werden können. Der unterste Level (LowLevel) ist in den *_l.h header files festgelegt. Dieser Level ist auch halbwegs gut beschrieben (in diesem Dokument und im Anhang B der <a href="http://www.xilinx.com/support/documentation/sw_manuals/edk10_est_rm.pdf" target="_blank">Embedded System Tools Reference Manual</a>) nur über den höher abstrahierten Level gibt es von Xilinx ein einziges Anwendungsbeispiel (und falls doch so habe ich es nicht gefunden) zugegebener maßen ist die API Dokumentation sehr gut &#8230; aber ein greifbares Beispiel wäre schon sehr Praktisch gewesen.<br />
Gut jetzt gibts ja eins &#8230; nämlich meins &#8230; ich hoffe es Hilft.</p>
<p>Ich habe das Projekt mit dem BSB (Base System Builder)  erstellt und die Buttons und den Timer dort hinzugefühgt und als Interrupt Quellen angegeben. (das ist normal nicht Schwer)</p>
<p>Zum abgleichen gebe ich hier meine mit der EDK 10.1 erstellten MHS (Microprocessor Hardware Specification) MSS (Microprocessor Software Specification) files an.</p>
<blockquote><p>MHS:<br />
# #########################################################<br />
# Created by Base System Builder Wizard for Xilinx EDK 10.1.03 Build EDK_K_SP3.6<br />
# Wed Feb 24 10:37:29 2010<br />
# Target Board:  Avnet Avnet V5FXT Evaluation Board Rev B<br />
# Family:    virtex5<br />
# Device:    xc5vfx30t<br />
# Package:   ff665<br />
# Speed Grade:  -1<br />
# Processor: microblaze_0<br />
# System clock frequency: 125.00 MHz<br />
# On Chip Memory :  16 KB<br />
# ########################################################<br />
PARAMETER VERSION = 2.1.0</p>
<p>PORT fpga_0_RS232_USB_RX_pin = fpga_0_RS232_USB_RX, DIR = I<br />
PORT fpga_0_RS232_USB_TX_pin = fpga_0_RS232_USB_TX, DIR = O<br />
PORT fpga_0_RS232_USB_reset_dummy_pin = net_vcc, DIR = O<br />
PORT fpga_0_LEDs_8Bit_GPIO_d_out_pin = fpga_0_LEDs_8Bit_GPIO_d_out, DIR = O, VEC = [0:7]<br />
PORT fpga_0_Push_Buttons_3Bit_GPIO_in_pin = fpga_0_Push_Buttons_3Bit_GPIO_in, DIR = I, VEC = [0:2]<br />
PORT sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000<br />
PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 1, SIGIS = RST</p>
<p>BEGIN microblaze<br />
PARAMETER INSTANCE = microblaze_0<br />
PARAMETER C_INTERCONNECT = 1<br />
PARAMETER HW_VER = 7.10.d<br />
PARAMETER C_DEBUG_ENABLED = 1<br />
BUS_INTERFACE DLMB = dlmb<br />
BUS_INTERFACE ILMB = ilmb<br />
BUS_INTERFACE DPLB = mb_plb<br />
BUS_INTERFACE IPLB = mb_plb<br />
BUS_INTERFACE DEBUG = microblaze_0_dbg<br />
PORT MB_RESET = mb_reset<br />
PORT Interrupt = Interrupt<br />
END</p>
<p>BEGIN plb_v46<br />
PARAMETER INSTANCE = mb_plb<br />
PARAMETER HW_VER = 1.03.a<br />
PORT PLB_Clk = sys_clk_s<br />
PORT SYS_Rst = sys_bus_reset<br />
END</p>
<p>BEGIN lmb_v10<br />
PARAMETER INSTANCE = ilmb<br />
PARAMETER HW_VER = 1.00.a<br />
PORT LMB_Clk = sys_clk_s<br />
PORT SYS_Rst = sys_bus_reset<br />
END</p>
<p>BEGIN lmb_v10<br />
PARAMETER INSTANCE = dlmb<br />
PARAMETER HW_VER = 1.00.a<br />
PORT LMB_Clk = sys_clk_s<br />
PORT SYS_Rst = sys_bus_reset<br />
END</p>
<p>BEGIN lmb_bram_if_cntlr<br />
PARAMETER INSTANCE = dlmb_cntlr<br />
PARAMETER HW_VER = 2.10.a<br />
PARAMETER C_BASEADDR = 0&#215;00000000<br />
PARAMETER C_HIGHADDR = 0x00003fff<br />
BUS_INTERFACE SLMB = dlmb<br />
BUS_INTERFACE BRAM_PORT = dlmb_port<br />
END</p>
<p>BEGIN lmb_bram_if_cntlr<br />
PARAMETER INSTANCE = ilmb_cntlr<br />
PARAMETER HW_VER = 2.10.a<br />
PARAMETER C_BASEADDR = 0&#215;00000000<br />
PARAMETER C_HIGHADDR = 0x00003fff<br />
BUS_INTERFACE SLMB = ilmb<br />
BUS_INTERFACE BRAM_PORT = ilmb_port<br />
END</p>
<p>BEGIN bram_block<br />
PARAMETER INSTANCE = lmb_bram<br />
PARAMETER HW_VER = 1.00.a<br />
BUS_INTERFACE PORTA = ilmb_port<br />
BUS_INTERFACE PORTB = dlmb_port<br />
END</p>
<p>BEGIN xps_uartlite<br />
PARAMETER INSTANCE = RS232_USB<br />
PARAMETER HW_VER = 1.00.a<br />
PARAMETER C_BAUDRATE = 9600<br />
PARAMETER C_DATA_BITS = 8<br />
PARAMETER C_ODD_PARITY = 0<br />
PARAMETER C_USE_PARITY = 0<br />
PARAMETER C_SPLB_CLK_FREQ_HZ = 125000000<br />
PARAMETER C_BASEADDR = 0&#215;84000000<br />
PARAMETER C_HIGHADDR = 0x8400ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
PORT RX = fpga_0_RS232_USB_RX<br />
PORT TX = fpga_0_RS232_USB_TX<br />
END</p>
<p>BEGIN xps_gpio<br />
PARAMETER INSTANCE = LEDs_8Bit<br />
PARAMETER HW_VER = 1.00.a<br />
PARAMETER C_GPIO_WIDTH = 8<br />
PARAMETER C_IS_DUAL = 0<br />
PARAMETER C_IS_BIDIR = 0<br />
PARAMETER C_ALL_INPUTS = 0<br />
PARAMETER C_BASEADDR = 0&#215;81400000<br />
PARAMETER C_HIGHADDR = 0x8140ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
PORT GPIO_d_out = fpga_0_LEDs_8Bit_GPIO_d_out<br />
END</p>
<p>BEGIN xps_gpio<br />
PARAMETER INSTANCE = Push_Buttons_3Bit<br />
PARAMETER HW_VER = 1.00.a<br />
PARAMETER C_INTERRUPT_PRESENT = 1<br />
PARAMETER C_GPIO_WIDTH = 3<br />
PARAMETER C_IS_DUAL = 0<br />
PARAMETER C_IS_BIDIR = 0<br />
PARAMETER C_ALL_INPUTS = 1<br />
PARAMETER C_BASEADDR = 0&#215;81420000<br />
PARAMETER C_HIGHADDR = 0x8142ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
PORT GPIO_in = fpga_0_Push_Buttons_3Bit_GPIO_in<br />
PORT IP2INTC_Irpt = Push_Buttons_3Bit_IP2INTC_Irpt<br />
END</p>
<p>BEGIN xps_timer<br />
PARAMETER INSTANCE = xps_timer_1<br />
PARAMETER HW_VER = 1.00.a<br />
PARAMETER C_COUNT_WIDTH = 32<br />
PARAMETER C_ONE_TIMER_ONLY = 1<br />
PARAMETER C_BASEADDR = 0x83c00000<br />
PARAMETER C_HIGHADDR = 0x83c0ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
PORT Interrupt = xps_timer_1_Interrupt<br />
END</p>
<p>BEGIN clock_generator<br />
PARAMETER INSTANCE = clock_generator_0<br />
PARAMETER HW_VER = 2.01.a<br />
PARAMETER C_EXT_RESET_HIGH = 1<br />
PARAMETER C_CLKIN_FREQ = 100000000<br />
PARAMETER C_CLKOUT0_FREQ = 125000000<br />
PARAMETER C_CLKOUT0_BUF = TRUE<br />
PARAMETER C_CLKOUT0_PHASE = 0<br />
PARAMETER C_CLKOUT0_GROUP = NONE<br />
PORT CLKOUT0 = sys_clk_s<br />
PORT CLKIN = dcm_clk_s<br />
PORT LOCKED = Dcm_all_locked<br />
PORT RST = net_gnd<br />
END</p>
<p>BEGIN mdm<br />
PARAMETER INSTANCE = debug_module<br />
PARAMETER HW_VER = 1.00.d<br />
PARAMETER C_MB_DBG_PORTS = 1<br />
PARAMETER C_USE_UART = 1<br />
PARAMETER C_UART_WIDTH = 8<br />
PARAMETER C_BASEADDR = 0&#215;84400000<br />
PARAMETER C_HIGHADDR = 0x8440ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
BUS_INTERFACE MBDEBUG_0 = microblaze_0_dbg<br />
PORT Debug_SYS_Rst = Debug_SYS_Rst<br />
END</p>
<p>BEGIN proc_sys_reset<br />
PARAMETER INSTANCE = proc_sys_reset_0<br />
PARAMETER HW_VER = 2.00.a<br />
PARAMETER C_EXT_RESET_HIGH = 1<br />
PORT Slowest_sync_clk = sys_clk_s<br />
PORT Dcm_locked = Dcm_all_locked<br />
PORT Ext_Reset_In = sys_rst_s<br />
PORT MB_Reset = mb_reset<br />
PORT Bus_Struct_Reset = sys_bus_reset<br />
PORT MB_Debug_Sys_Rst = Debug_SYS_Rst<br />
PORT Peripheral_Reset = sys_periph_reset<br />
END</p>
<p>BEGIN xps_intc<br />
PARAMETER INSTANCE = xps_intc_0<br />
PARAMETER HW_VER = 1.00.a<br />
PARAMETER C_BASEADDR = 0&#215;81800000<br />
PARAMETER C_HIGHADDR = 0x8180ffff<br />
BUS_INTERFACE SPLB = mb_plb<br />
PORT Irq = Interrupt<br />
PORT Intr = Push_Buttons_3Bit_IP2INTC_Irpt &amp; xps_timer_1_Interrupt<br />
END</p></blockquote>
<blockquote><p>MSS:<br />
PARAMETER VERSION = 2.2.0</p>
<p>BEGIN OS<br />
PARAMETER OS_NAME = standalone<br />
PARAMETER OS_VER = 2.00.a<br />
PARAMETER PROC_INSTANCE = microblaze_0<br />
PARAMETER STDIN = RS232_USB<br />
PARAMETER STDOUT = RS232_USB<br />
END</p>
<p>BEGIN PROCESSOR<br />
PARAMETER DRIVER_NAME = cpu<br />
PARAMETER DRIVER_VER = 1.11.b<br />
PARAMETER HW_INSTANCE = microblaze_0<br />
PARAMETER COMPILER = mb-gcc<br />
PARAMETER ARCHIVER = mb-ar<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = bram<br />
PARAMETER DRIVER_VER = 1.00.a<br />
PARAMETER HW_INSTANCE = dlmb_cntlr<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = bram<br />
PARAMETER DRIVER_VER = 1.00.a<br />
PARAMETER HW_INSTANCE = ilmb_cntlr<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = generic<br />
PARAMETER DRIVER_VER = 1.00.a<br />
PARAMETER HW_INSTANCE = lmb_bram<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = uartlite<br />
PARAMETER DRIVER_VER = 1.13.a<br />
PARAMETER HW_INSTANCE = RS232_USB<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = gpio<br />
PARAMETER DRIVER_VER = 2.12.a<br />
PARAMETER HW_INSTANCE = LEDs_8Bit<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = gpio<br />
PARAMETER DRIVER_VER = 2.12.a<br />
PARAMETER HW_INSTANCE = Push_Buttons_3Bit<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = tmrctr<br />
PARAMETER DRIVER_VER = 1.10.b<br />
PARAMETER HW_INSTANCE = xps_timer_1<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = generic<br />
PARAMETER DRIVER_VER = 1.00.a<br />
PARAMETER HW_INSTANCE = clock_generator_0<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = uartlite<br />
PARAMETER DRIVER_VER = 1.13.a<br />
PARAMETER HW_INSTANCE = debug_module<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = generic<br />
PARAMETER DRIVER_VER = 1.00.a<br />
PARAMETER HW_INSTANCE = proc_sys_reset_0<br />
END</p>
<p>BEGIN DRIVER<br />
PARAMETER DRIVER_NAME = intc<br />
PARAMETER DRIVER_VER = 1.11.a<br />
PARAMETER HW_INSTANCE = xps_intc_0<br />
END</p></blockquote>
<p>Das C Progamme zur verarbeitung der Interrupts:</p>
<blockquote><p>#include &lt;xtmrctr.h&gt;<br />
#include &lt;xintc.h&gt;<br />
#include &lt;xgpio.h&gt;<br />
#include &lt;xparameters.h&gt;</p>
<p>XGpio gpio, buttons;<br />
XIntc intc;<br />
XTmrCtr timer;</p>
<p>void buttons_int_handler(void * baseaddr_p) {<br />
//xil_printf(&#8220;Button!\r\n\n&#8221;);<br />
unsigned int csr;<br />
/* Read Button CSR to see if it raised the interrupt */<br />
csr = XTmrCtr_mGetControlStatusReg (XPAR_PUSH_BUTTONS_3BIT_BASEADDR, 0);<br />
xil_printf(&#8220;csr=%d\r\n&#8221;,csr);</p>
<p>switch(csr) {</p>
<p>case 0&#215;01:<br />
xil_printf(&#8220;SW4\r\n&#8221;);<br />
break;</p>
<p>case 0&#215;02:<br />
xil_printf(&#8220;SW3\r\n&#8221;);<br />
break;</p>
<p>case 0&#215;04:<br />
xil_printf(&#8220;SW2\r\n&#8221;);<br />
break;</p>
<p>default : {<br />
}</p>
<p>}</p>
<p>//Clear the interrupt both in the Gpio instance as well as the interrupt controlle<br />
XGpio_InterruptClear(&amp;buttons, 0&#215;3);<br />
XIntc_Acknowledge (&amp;intc, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR);<br />
xil_printf(&#8220;Interrupt Cleared\r\n&#8221;);</p>
<p>}</p>
<p>void timer_int_handler(void * baseaddr_p) {<br />
unsigned int csr;<br />
/* Read timer 0 CSR to see if it raised the interrupt */<br />
csr = XTmrCtr_mGetControlStatusReg (XPAR_XPS_TIMER_1_BASEADDR, 0);<br />
/* If the interrupt occurred, then increment a counter */<br />
if (csr &amp; XTC_CSR_INT_OCCURED_MASK)<br />
{<br />
count++;<br />
}<br />
print (&#8220;Timer Interrupt\r\n&#8221;);<br />
xil_printf (&#8220;Count Sagt: %d Interrupts \r\n&#8221;,count);</p>
<p>/* Clear the timer interrupt */<br />
XTmrCtr_mSetControlStatusReg (XPAR_XPS_TIMER_1_BASEADDR, 0, csr); //Still Level 0 Macro<br />
}</p>
<p>int main()/*the one and only*/ {</p>
<p>microblaze_enable_interrupts();<br />
xil_printf(&#8220;MB interrupts\t\t Enabled\r\n&#8221;);</p>
<p>Xuint32 status;<br />
//Interr Init<br />
status=XIntc_Initialize (&amp;intc, XPAR_XPS_INTC_0_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init INTC_0\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init INTC_0\t\t OK \r\n&#8221;);</p>
<p>//Button Init Stuff</p>
<p>status=XGpio_Initialize (&amp;buttons, XPAR_PUSH_BUTTONS_3BIT_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init Buttons\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init Buttons\t\t OK \r\n&#8221;);</p>
<p>XGpio_SetDataDirection(&amp;buttons, 1, 0xFFFFFFFF);<br />
xil_printf(&#8220;Buttons Direction\t Set\r\n&#8221;);</p>
<p>//Timer Init Stuff</p>
<p>status=XTmrCtr_Initialize (&amp;timer, XPAR_XPS_TIMER_1_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init Timer\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init Timer\t\t OK \r\n&#8221;);</p>
<p>//buttons<br />
status=XIntc_Connect (&amp;intc, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR,<br />
&amp;buttons_int_handler, (void *)0);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;connect buttons\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;connect buttons\t\t OK \r\n&#8221;);</p>
<p>//Timer Options</p>
<p>XTmrCtr_SetOptions(&amp;timer, 0,        //for timer #0 (there are 2 timers in the led_timer device, we&#8217;re only using one)<br />
XTC_DOWN_COUNT_OPTION |     // Count down to 0<br />
XTC_INT_MODE_OPTION |         // When it hits 0, cause an interrupt<br />
XTC_AUTO_RELOAD_OPTION);    // And reload the &#8220;reset&#8221; value and begin counting again</p>
<p>xil_printf(&#8220;Timer Setting\t\t Set\r\n&#8221;);</p>
<p>//Timer<br />
status=XIntc_Connect (&amp;intc, XPAR_XPS_INTC_0_XPS_TIMER_1_INTERRUPT_INTR, &amp;timer_int_handler, (void*)0);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;connect timer\t\t Error\r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;connect timer\t\t OK\r\n&#8221;);</p>
<p>XIntc_Enable (&amp;intc, XPAR_PUSH_BUTTONS_3BIT_DEVICE_ID);<br />
xil_printf(&#8220;Button interrupt\t Enabled\r\n&#8221;);</p>
<p>XIntc_Enable (&amp;intc, XPAR_XPS_TIMER_1_DEVICE_ID);<br />
xil_printf(&#8220;Timer interrupt\t\t Enabled\r\n&#8221;);</p>
<p>//Enable Xgpio Interrupt Stuff ans so on &#8230;</p>
<p>//XGpio_InterruptClear(buttons, XGPIO_IR_CH1_MASK);<br />
xil_printf(&#8220;Buttons Interrupt\t NOT Cleared YET\r\n&#8221;);</p>
<p>XGpio_InterruptEnable (&amp;buttons, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR);<br />
xil_printf(&#8220;XGpio interrupt\t\t Enabled\r\n&#8221;);<br />
XGpio_InterruptGlobalEnable (&amp;buttons);<br />
xil_printf(&#8220;XGpio Global interrupt\t Enabled\r\n&#8221;);</p>
<p>status=XIntc_Start (&amp;intc ,XIN_REAL_MODE);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;start xintc\t\t Error\r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;start xintc\t\t OK\r\n&#8221;);</p>
<p>//Load Value 4 the Timer<br />
XTmrCtr_SetResetValue(&amp;timer, 0, 1000000000);<br />
//Start the timer<br />
XTmrCtr_Start (&amp;timer,0);</p>
<p>xil_printf(&#8220;&lt;&#8212;Entering WHILE(1);&#8212;&gt;\r\n&#8221;);</p>
<p>while(1);</p>
<p>}</p></blockquote>
<p>Beim erstellen des Codes haben die Beispiele die auch beide schon ein wenig älter sein dürften (ca. 3 Jahre) <a href="http://warp.rice.edu/trac/browser/Documentation/ReferenceDesigns/InterruptRef_xps_8_2/src/interruptTester.c" target="_blank">hier</a> und <a href="http://wiki.secretlab.de/fpga/edk_tutorial_1" target="_blank">hier</a> sehr geholfen.<br />
Ich hoffe ihr könnt mit meinem Code fetzen etwas anfangen über Kommentare würde ich mich sehr freuen.<br />
Die Ausgaben des Progammes erfolgen über stdout (je nach dem wie er konfiguriert ist über Usb (virtueller Com Port) oder direkt über RS232.<br />
Für mein Beispiel ist das Hyperterminal (Windows Zubehör/ Kommunikation) auf 9600 Baud, 8 Datenbits, Ohne Parität, mit einem Stoppbit und ohne Flusssteuerung zu konfigurieren (BSB default iirr). Getestet habe ich es auf einem <a href="http://www.xilinx.com/products/devkits/aes_v5fxt_evl30-avnet.htm" target="_blank">Avnet Virtex5 Board</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 5572px; width: 1px; height: 1px;">#include &lt;xtmrctr.h&gt;<br />
#include &lt;xintc.h&gt;<br />
#include &lt;xgpio.h&gt;<br />
#include &lt;xparameters.h&gt;</p>
<p>XGpio gpio, buttons;<br />
XIntc intc;<br />
XTmrCtr timer;</p>
<p>void buttons_int_handler(void * baseaddr_p) {<br />
//xil_printf(&#8220;Button!\r\n\n&#8221;);<br />
unsigned int csr;<br />
/* Read Button CSR to see if it raised the interrupt */<br />
csr = XTmrCtr_mGetControlStatusReg (XPAR_PUSH_BUTTONS_3BIT_BASEADDR, 0);<br />
xil_printf(&#8220;csr=%d\r\n&#8221;,csr);</p>
<p>switch(csr) {</p>
<p>case 0&#215;01:<br />
xil_printf(&#8220;SW4\r\n&#8221;);<br />
break;</p>
<p>case 0&#215;02:<br />
xil_printf(&#8220;SW3\r\n&#8221;);<br />
break;</p>
<p>case 0&#215;04:<br />
xil_printf(&#8220;SW2\r\n&#8221;);<br />
break;</p>
<p>default : {<br />
}</p>
<p>}</p>
<p>//Clear the interrupt both in the Gpio instance as well as the interrupt controlle<br />
XGpio_InterruptClear(&amp;buttons, 0&#215;3);<br />
XIntc_Acknowledge (&amp;intc, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR);<br />
xil_printf(&#8220;Interrupt Cleared\r\n&#8221;);</p>
<p>}</p>
<p>void timer_int_handler(void * baseaddr_p) {<br />
unsigned int csr;<br />
/* Read timer 0 CSR to see if it raised the interrupt */<br />
csr = XTmrCtr_mGetControlStatusReg (XPAR_XPS_TIMER_1_BASEADDR, 0);<br />
/* If the interrupt occurred, then increment a counter */<br />
if (csr &amp; XTC_CSR_INT_OCCURED_MASK)<br />
{<br />
count++;<br />
}<br />
print (&#8220;Timer Interrupt\r\n&#8221;);<br />
xil_printf (&#8220;Count Sagt: %d Interrupts \r\n&#8221;,count);</p>
<p>/* Clear the timer interrupt */<br />
XTmrCtr_mSetControlStatusReg (XPAR_XPS_TIMER_1_BASEADDR, 0, csr); //Still Level 0 Macro<br />
}</p>
<p>int main()/*the one and only*/ {</p>
<p>microblaze_enable_interrupts();<br />
xil_printf(&#8220;MB interrupts\t\t Enabled\r\n&#8221;);</p>
<p>Xuint32 status;<br />
//Interr Init<br />
status=XIntc_Initialize (&amp;intc, XPAR_XPS_INTC_0_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init INTC_0\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init INTC_0\t\t OK \r\n&#8221;);</p>
<p>//Button Init Stuff</p>
<p>status=XGpio_Initialize (&amp;buttons, XPAR_PUSH_BUTTONS_3BIT_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init Buttons\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init Buttons\t\t OK \r\n&#8221;);</p>
<p>XGpio_SetDataDirection(&amp;buttons, 1, 0xFFFFFFFF);<br />
xil_printf(&#8220;Buttons Direction\t Set\r\n&#8221;);</p>
<p>//Timer Init Stuff</p>
<p>status=XTmrCtr_Initialize (&amp;timer, XPAR_XPS_TIMER_1_DEVICE_ID);<br />
if (status != XST_SUCCESS){<br />
xil_printf(&#8220;init Timer\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;init Timer\t\t OK \r\n&#8221;);</p>
<p>//buttons<br />
status=XIntc_Connect (&amp;intc, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR,<br />
&amp;buttons_int_handler, (void *)0);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;connect buttons\t\t Error \r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;connect buttons\t\t OK \r\n&#8221;);</p>
<p>//Timer Options</p>
<p>XTmrCtr_SetOptions(&amp;timer, 0,        //for timer #0 (there are 2 timers in the led_timer device, we&#8217;re only using one)<br />
XTC_DOWN_COUNT_OPTION |     // Count down to 0<br />
XTC_INT_MODE_OPTION |         // When it hits 0, cause an interrupt<br />
XTC_AUTO_RELOAD_OPTION);    // And reload the &#8220;reset&#8221; value and begin counting again</p>
<p>xil_printf(&#8220;Timer Setting\t\t Set\r\n&#8221;);</p>
<p>//Timer<br />
status=XIntc_Connect (&amp;intc, XPAR_XPS_INTC_0_XPS_TIMER_1_INTERRUPT_INTR, &amp;timer_int_handler, (void*)0);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;connect timer\t\t Error\r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;connect timer\t\t OK\r\n&#8221;);</p>
<p>XIntc_Enable (&amp;intc, XPAR_PUSH_BUTTONS_3BIT_DEVICE_ID);<br />
xil_printf(&#8220;Button interrupt\t Enabled\r\n&#8221;);</p>
<p>XIntc_Enable (&amp;intc, XPAR_XPS_TIMER_1_DEVICE_ID);<br />
xil_printf(&#8220;Timer interrupt\t\t Enabled\r\n&#8221;);</p>
<p>//Enable Xgpio Interrupt Stuff ans so on &#8230;</p>
<p>//XGpio_InterruptClear(buttons, XGPIO_IR_CH1_MASK);<br />
xil_printf(&#8220;Buttons Interrupt\t NOT Cleared YET\r\n&#8221;);</p>
<p>XGpio_InterruptEnable (&amp;buttons, XPAR_XPS_INTC_0_PUSH_BUTTONS_3BIT_IP2INTC_IRPT_INTR);<br />
xil_printf(&#8220;XGpio interrupt\t\t Enabled\r\n&#8221;);<br />
XGpio_InterruptGlobalEnable (&amp;buttons);<br />
xil_printf(&#8220;XGpio Global interrupt\t Enabled\r\n&#8221;);</p>
<p>status=XIntc_Start (&amp;intc ,XIN_REAL_MODE);</p>
<p>if (status != XST_SUCCESS){<br />
xil_printf(&#8220;start xintc\t\t Error\r\n&#8221;);<br />
return XST_FAILURE;<br />
}<br />
else xil_printf(&#8220;start xintc\t\t OK\r\n&#8221;);</p>
<p>//Load Value 4 the Timer<br />
XTmrCtr_SetResetValue(&amp;timer, 0, 1000000000);<br />
//Start the timer<br />
XTmrCtr_Start (&amp;timer,0);</p>
<p>xil_printf(&#8220;&lt;&#8212;Entering WHILE(1);&#8212;&gt;\r\n&#8221;);</p>
<p>while(1);</p>
<p>}</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/25/microblaze-xgpio-interrupts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perl Audio Converter</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/23/perl-audio-converter/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/23/perl-audio-converter/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 07:48:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Converter]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[flac2mp3]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=471</guid>
		<description><![CDATA[Eine auch ganz praktische Lösung wie man von Flacs zu Mp3s kommt soll angeblich http://pacpl.sourceforge.net/ sein. Das ich bis jetzt noch nicht selbst getestet habe. Es scheint jedoch auf jeden fall mal einen Blick wert und eventuell eine gute Ablösung für flac2mp3 zu sein.]]></description>
			<content:encoded><![CDATA[<p>Eine auch ganz praktische Lösung wie man von Flacs zu Mp3s kommt soll angeblich <a href="http://pacpl.sourceforge.net/" target="_self">http://pacpl.sourceforge.net/</a> sein. Das ich bis jetzt noch nicht selbst getestet habe. Es scheint jedoch auf jeden fall mal einen Blick wert und eventuell eine gute Ablösung für <a href="http://backblog.betriebswerk-landshut.de/2010/02/03/flac2mp3-unter-linux/" target="_self">flac2mp3 </a>zu sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/23/perl-audio-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
