<?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>Sun, 28 Feb 2010 16:55:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 = 0&#215;00003fff<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 = 0&#215;00003fff<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 = 0&#215;8400ffff<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 = 0&#215;8140ffff<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 = 0&#215;8142ffff<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 = 0&#215;83c00000<br />
PARAMETER C_HIGHADDR = 0&#215;83c0ffff<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 = 0&#215;8440ffff<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 = 0&#215;8180ffff<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>0</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>
		<item>
		<title>N95 Wandlung</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/21/n95-wandlung/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/21/n95-wandlung/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:24:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Garantie]]></category>
		<category><![CDATA[N900]]></category>
		<category><![CDATA[N95]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Reparatur]]></category>
		<category><![CDATA[Wandlung]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=466</guid>
		<description><![CDATA[So nach guten 3 Monaten habe ich Anfang der Woche mein N95 aus der Reparatur zurück bekommen bzw. ein Tauschgerät von Nokia weil anscheinend keine Ersatzteile mehr verfügbar waren. Die Gute Nachricht Nokia hat die Reparatur auf Garantie übernommen (das hätten sie besser lassen *G*). Noch im Laden wollte ich das Gerät testen. Aber es [...]]]></description>
			<content:encoded><![CDATA[<p>So nach guten 3 Monaten habe ich Anfang der Woche mein N95 aus der Reparatur zurück bekommen bzw. ein Tauschgerät von Nokia weil anscheinend keine Ersatzteile mehr verfügbar waren. Die Gute Nachricht Nokia hat die Reparatur auf Garantie übernommen (das hätten sie besser lassen *G*). Noch im Laden wollte ich das Gerät testen. Aber es lies sich einfach nicht einschalten &#8230; Auch das Firmwareupdate das ein Haustechniker gleich noch versuchte aufzuspielen half nichts&#8230; das gerät blieb tot. Natürlich hab ich es dann gleich da gelassen und meine 2. Wandlung beantragt. Je nachdem wie viel ich zuzahlen muss überlege ich über die Anschaffung eines N900 wobei ich gehört habe dass da die Displays zum Suizid neigen und Nokia den User das in die Schuhe schiebt. Ich hoffe dass sich die Schadensfälle mit einem Neugerät mindern &#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/21/n95-wandlung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hofgarten im Winterweiß</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/03/hofgarten-im-winterweis/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/03/hofgarten-im-winterweis/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:59:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[Hofberg]]></category>
		<category><![CDATA[Jahreszeiten]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[qtpfsgui]]></category>
		<category><![CDATA[Autopano Pro]]></category>
		<category><![CDATA[Hofgarten]]></category>
		<category><![CDATA[Keypoints]]></category>
		<category><![CDATA[Nodalpunktadapter]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Panoramakopf]]></category>
		<category><![CDATA[Schnee]]></category>
		<category><![CDATA[Winter]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=451</guid>
		<description><![CDATA[Das Winterpanorama im Landshuter Hofgarten zeigt die gleiche Wiese welche ich schon im Herbst fotografiert hatte. Jedoch aus einem anderen Blickwinkel und jetzt mit Reichlich Schnee.
Gestiched habe ich das HDR mit Autopano Pro. Da ich leider keinen Nodalpunktadapter (Panoramakopf) besitze musste ich ein wenig improvisieren. Zugunsten der der Schärfe in den Baumreihen und zu ungunsten [...]]]></description>
			<content:encoded><![CDATA[<p>Das Winterpanorama im Landshuter Hofgarten zeigt die gleiche <a href="http://backblog.betriebswerk-landshut.de/2009/11/06/herbst/">Wiese</a> welche ich schon im Herbst fotografiert hatte. Jedoch aus einem anderen Blickwinkel und jetzt mit Reichlich Schnee.</p>
<div id="attachment_455" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/02/Hofgarten_Landshut_winter1.jpg"><img class="size-medium wp-image-455" title="Hofgarten Landshut im Winter (HDR)" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/02/Hofgarten_Landshut_winter1-300x124.jpg" alt="Hofgarten Landshut im Winter (HDR)" width="300" height="124" /></a><p class="wp-caption-text">Hofgarten Landshut im Winter (HDR)</p></div>
<p>Gestiched habe ich das HDR mit Autopano Pro. Da ich leider keinen Nodalpunktadapter (Panoramakopf) besitze musste ich ein wenig improvisieren. Zugunsten der der Schärfe in den Baumreihen und zu ungunsten der Schärfe des Baumes im Vordergrund habe ich mich dazu entschlossen die Keypoints mit welchen man die einzelnen Bilder in Autopano Pro verbindet auf die weiter entfernen Objekte zu legen.<br />
En ähnliches vorgehen war auch bei der Erstellung <a href="http://backblog.betriebswerk-landshut.de/2010/01/31/hof-der-hochschule-landshut/">dieses</a> Panoramas zweckmäßig.</p>
<p>Das Tonemapping erfolge unter Linux mittels Qtpfsgui (Fattal).</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/03/hofgarten-im-winterweis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flac2mp3 unter Linux</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/02/03/flac2mp3-unter-linux/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/02/03/flac2mp3-unter-linux/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 12:28:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[flac2mp3]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[skript]]></category>
		<category><![CDATA[Tag]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=457</guid>
		<description><![CDATA[Vor ein paar Wochen stand ich vor der Aufgabe die flacs die ich durch extrahieren meiner CDs gewonnen habe in mp3s überzuführen um sie auch auf dem Mp3 Player abspielen zu können. Um das ganze halbwegs komfortabel auf der Bash erledigen zu können habe ich mir ein bisschen was zusammen gescriptet und kopiert. Die ursprüngliche [...]]]></description>
			<content:encoded><![CDATA[<p>Vor ein paar Wochen stand ich vor der Aufgabe die flacs die ich durch extrahieren meiner CDs gewonnen habe in mp3s überzuführen um sie auch auf dem Mp3 Player abspielen zu können. Um das ganze halbwegs komfortabel auf der Bash erledigen zu können habe ich mir ein bisschen was zusammen gescriptet und kopiert. Die ursprüngliche Idee für das skript fand ich in dem <a href="http://www.linuxtutorialblog.com/post/solution-converting-flac-to-mp3" target="_self">Linux Tutorial Blog</a>. Das dort gegebene Skript war leider etwas zu rudimentär, auch das übernehmen von der Artist/Album/Track tags war nicht möglich. Eine schon etwas bessere Version fand sich dann auf dem Blog von <a href="http://www.sklav.com/node/4" target="_self">Sklav</a>. Dieses konnte schon die Tags übernehmen. Doch wollte ich eigentlich nicht jedes Album einzeln in mp3s umwandeln. Folglich musste das Skript Batch fähig werden. Meine Version des Skriptes sieht nun so aus.</p>
<blockquote><p>#!/bin/bash<br />
#########################################################<br />
# Flac to Mp3 Conversion Software #</p>
<p># Script Created by Nick Sklavenitis #<br />
# Date: September 18 2007 #<br />
# Modified by Tobias Hobmeier#<br />
# Januar 2010#<br />
#########################################################</p>
<p># modify the lame options to your preference example change -b 320 to -b</p>
<p>#128 or -b 192 or -b 256<br />
lame_opts=&#8221; &#8211;vbr-new -V 2 -b 192 &#8221;</p>
<p># Creates the loop that allows more than 1 file to be specified, Can use<br />
#single file name or example *.flac<br />
time {</p>
<p>for x in &#8220;${@}&#8221;<br />
do<br />
FLAC=${x}<br />
MP3=&#8221;${FLAC%.flac}.mp3&#8243;<br />
[ -r "$FLAC" ] || { echo can not read file \&#8221;$FLAC\&#8221; &gt;&amp;1 ; exit 1 ; } ;</p>
<p>#This section pulls the Tag info from flac and stores it as a variable.</p>
<p>TITLE=&#8221;`metaflac &#8211;show-tag=TITLE &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2) }&#8217;`&#8221;<br />
ALBUM=&#8221;`metaflac &#8211;show-tag=ALBUM &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2) }&#8217;`&#8221;<br />
ARTIST=&#8221;`metaflac &#8211;show-tag=ARTIST &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2)<br />
}&#8217;`&#8221;<br />
TRACKNUMBER=&#8221;`metaflac &#8211;show-tag=TRACKNUMBER &#8220;$FLAC&#8221; | awk -F = &#8216;{<br />
printf($2) }&#8217;`&#8221;<br />
GENRE=&#8221;`metaflac &#8211;show-tag=GENRE &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2) }&#8217;`&#8221;<br />
COMMENT=&#8221;`metaflac &#8211;show-tag=COMMENT &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2)<br />
}&#8217;`&#8221;<br />
DATE=&#8221;`metaflac &#8211;show-tag=DATE &#8220;$FLAC&#8221; | awk -F = &#8216;{ printf($2) }&#8217;`&#8221;</p>
<p>#This section handles the conversion of the Flac file to MP3</p>
<p>flac -dc &#8220;$FLAC&#8221; | lame${lame_opts} \<br />
&#8211;tt &#8220;$TITLE&#8221; \<br />
&#8211;tn &#8220;$TRACKNUMBER&#8221; \<br />
&#8211;tg &#8220;$GENRE&#8221; \<br />
&#8211;ty &#8220;$DATE&#8221; \<br />
&#8211;ta &#8220;$ARTIST&#8221; \<br />
&#8211;tl &#8220;$ALBUM&#8221; \<br />
&#8211;add-id3v2 \<br />
- &#8220;$MP3&#8243;</p>
<p>rm &#8220;$FLAC&#8221;</p>
<p>done<br />
}</p></blockquote>
<p>zur besseren Ausführbarkeit habe ich das Skript unter /usr/bin abgelegt und ausführbar gemacht.<br />
Um nun einen Schwung Flacs in Mp3s mitstammt der Ordnerstruktur umzuwandeln ging ich folgendermaßen vor.</p>
<ol>
<li>Kopieren aller flacs in ein neues Verzeichnis</li>
<li>Wechseln in das neue Verzeichnis</li>
<li>Finden und ersetzten aller flacs im neuen Verzeichnis<br />
mit dem Befehl:</li>
</ol>
<blockquote><p>time find . -type f -name &#8220;*flac&#8221; -exec mp32flac {} \;</p></blockquote>
<p>Jetzt muss man nur noch warten bis alle flacs konvertiert sind. Ein nachträgliches mp3gain würde eventuell nicht schaden.</p>
<blockquote><p>find . -type f -name &#8220;*.mp3&#8243; -exec mp3gain -r -k {} \</p></blockquote>
<p>Ich hoffe das flac2mp3 Skript hilft allen suchenden weiter.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/02/03/flac2mp3-unter-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hof der Hochschule-Landshut</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/01/31/hof-der-hochschule-landshut/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/01/31/hof-der-hochschule-landshut/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 16:58:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Autopano]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[Hochschule Landshut]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[qtpfsgui]]></category>
		<category><![CDATA[Autopano Pro]]></category>
		<category><![CDATA[Hochschule]]></category>
		<category><![CDATA[Hof]]></category>
		<category><![CDATA[Nodalpunkt]]></category>
		<category><![CDATA[Panoramakopf]]></category>
		<category><![CDATA[Tonemapping]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=440</guid>
		<description><![CDATA[Gestern entstand dieses winterliche Panorama vom Hof der Hochschule Landshut. Für das Panorama habe ich mehrere vertikale Aufnahmen nebeneinander geschossen. Um einen höheren Dynamikumfang zu erhalten habe ich jede dieser (wie bei HDR üblich) Aufnahmen mit 3 verschiedenen Belichtungszeiten ausgeführt. Die Verrechnung zu einem HDR Panorama habe ich mit Autopano Pro unter Linux vorgenommen. Da [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern entstand dieses winterliche Panorama vom Hof der Hochschule Landshut. Für das Panorama habe ich mehrere vertikale Aufnahmen nebeneinander geschossen. Um einen höheren Dynamikumfang zu erhalten habe ich jede dieser (wie bei <a href="http://de.wikipedia.org/wiki/High_Dynamic_Range_Imaging" target="_blank">HDR</a> üblich) Aufnahmen mit 3 verschiedenen Belichtungszeiten ausgeführt. Die Verrechnung zu einem <a href="http://de.wikipedia.org/wiki/High_Dynamic_Range_Imaging" target="_blank">HDR</a> Panorama habe ich mit <a href="http://www.autopano.net/en/" target="_blank">Autopano Pro</a> unter Linux vorgenommen. Da ich keinen Nodalpunktadapter oder Panoramakopf besitze war es wichtig beim zusammensetzen des Panoramas darauf zu achten dass die Keypoints die die einzelnen Bilder verbinden in einiger Entfernung liegen und auf dem Schnee im Vordergrund. Das Tonemapping überließ ich dem Opensource Programm <a href="http://qtpfsgui.sourceforge.net/" target="_blank">Qtpfsgui</a>.</p>
<div id="attachment_442" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/Winter_Hof_Hochschule_Landshut.png"><img class="size-medium wp-image-442" title="winterlicher Hof der Hochschule Landshut" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/Winter_Hof_Hochschule_Landshut-300x96.png" alt="" width="300" height="96" /></a><p class="wp-caption-text">winterlicher Hof der Hochschule Landshut</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/01/31/hof-der-hochschule-landshut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Himmelspanorama über Gstaudach</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/01/14/himmelspanorama-ueber-gstaudach/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/01/14/himmelspanorama-ueber-gstaudach/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 16:24:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Altdorf]]></category>
		<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[Gstaudach]]></category>
		<category><![CDATA[Landshut]]></category>
		<category><![CDATA[Natur]]></category>
		<category><![CDATA[450D]]></category>
		<category><![CDATA[Himmel]]></category>
		<category><![CDATA[Panorama]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Stichen]]></category>
		<category><![CDATA[Wolken]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=431</guid>
		<description><![CDATA[Vor einiger Zeit habe ich an einem sonnigen aber regenreichen Tag ein Panorama vom Himmel über Gstaudach angefertigt. Das Bild viel mir beim durchsehen meiner Fotos in die Hände und ich dachte eigentlich könnte ich es ja veröffentlichen. Gstaudach befindet sich nicht weit von Altdorf. Das Lokal dort ist somit ein guter Zielort im Sommer [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit habe ich an einem sonnigen aber regenreichen Tag ein Panorama vom Himmel über Gstaudach angefertigt. Das Bild viel mir beim durchsehen meiner Fotos in die Hände und ich dachte eigentlich könnte ich es ja veröffentlichen. Gstaudach befindet sich nicht weit von Altdorf. Das Lokal dort ist somit ein guter Zielort im Sommer für eine Brotzeit oder im Winter für ein wärmendes Getränk.</p>
<p>Die Szene, der Himmel und die Wolken die sich mir im Sommer dort boten waren einfach überwältigend. Aber seht selbst&#8230;<br />
Leider hatte ich leichte Probleme mit dem Rauschen. Das nächste mal bin ich wenn sich mir sowas bietet mit meiner 50D ein wenig besser ausgestattet als ich das noch mit der 450D war. Auch würde ich wohl diesmal versuchen die Szene als HDR zu erfassen woran bei der Aufnahme in Mangelung eines Stativs nicht zu denken war. Auch wäre das zusammenbauen des Bildes dadurch zusätzlich kompliziert geworden. Ich denke darüber nach solchen Gegebenheiten in Zukuft mit Autopano Pro unter Linux zu begegnen. Die doch nicht ganz billige Softwarelösung vermag es HDR Bilder zu stichen. Das Tonemapping würde ich wohl qtpfsgui überlassen. Bei dem Bild nutzte ich noch Photoshop was aufgrund der geringen Komplexität des Panoramas auch nicht weiter ein Problem darstellte.</p>
<div id="attachment_432" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/Himmel.jpg"><img class="size-medium wp-image-432" title="Himmel über Gstaudach" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/Himmel-300x69.jpg" alt="Himmelspanorama über Gstaudach" width="300" height="69" /></a><p class="wp-caption-text">Panorama Gestaudach</p></div>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/01/14/himmelspanorama-ueber-gstaudach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux HDR &#8211; Das Auge</title>
		<link>http://backblog.betriebswerk-landshut.de/2010/01/11/linux-hdr-das-auge/</link>
		<comments>http://backblog.betriebswerk-landshut.de/2010/01/11/linux-hdr-das-auge/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 17:30:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Fotografie]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Menschen]]></category>
		<category><![CDATA[qtpfsgui]]></category>

		<guid isPermaLink="false">http://backblog.betriebswerk-landshut.de/?p=428</guid>
		<description><![CDATA[Ich hab mich die Tage mit ein wenig mit dem erstellen von HDR Bildern unter Linux beschäftigt &#8230;
Raus gekommen ist dabei eine HDR Version meines Auges.
Um Abweichungen zwischen den 3 Bildern entgegen zu wirken wählte ich eine relativ kurze Belichtungszeit.
Verrechnet und gemapped wurden die Bilder unter Linux mit qtpfsgui für die RAW Entwicklung kam UFRaw [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hab mich die Tage mit ein wenig mit dem erstellen von HDR Bildern unter Linux beschäftigt &#8230;<br />
Raus gekommen ist dabei eine HDR Version meines Auges.</p>
<div id="attachment_429" class="wp-caption aligncenter" style="width: 310px"><a href="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/HDR_Auge.jpg"><img class="size-medium wp-image-429" title="HDR_Auge" src="http://backblog.betriebswerk-landshut.de/wp-content/uploads/2010/01/HDR_Auge-300x134.jpg" alt="HDR Auge" width="300" height="134" /></a><p class="wp-caption-text">Mein Auge in HDR</p></div>
<p>Um Abweichungen zwischen den 3 Bildern entgegen zu wirken wählte ich eine relativ kurze Belichtungszeit.<br />
Verrechnet und gemapped wurden die Bilder unter Linux mit qtpfsgui für die RAW Entwicklung kam UFRaw ink. Lensfun zum Einsatz.<br />
Im Moment bin ich noch ein wenig am probieren. Mit einigen Bildern hatte ich erhebliche Rauschprobleme.</p>
]]></content:encoded>
			<wfw:commentRss>http://backblog.betriebswerk-landshut.de/2010/01/11/linux-hdr-das-auge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
