Jun 10 2010

Xilinx Microblaze XDmaCentral DMA Controller

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 & 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.

Beim programmieren des DMA gibt es ein paar kleine Stolperfallen.

  • bei XDmaCentral_SetControl sollte man sehr genau darauf achten Source und Destination nich zu vertauschen
  • XDmaCentral_Transfer will eine Angabe haben wie viele Byte er zu übertragen hat … das sind für eine 32 Bit Variable also 4 …

Sonst ist die Konfiguration sehr “straightforward”  ….

#include “xparameters.h”
#include “xintc.h”
#include “xdmacentral.h”
#define TEST_BUFFER_SIZE       20//4096

int main () {
static XDmaCentral dma;
Xuint32* Buffer;
Xuint32 *Buffer2;
Buffer = (Xuint32 *)0x8c000A00;
Buffer2 = (Xuint32 *)0x8c000000;
//(XPAR_DDR2_SDRAM_16MX32_MPMC_BASEADDR);

Xuint32 Index;
XStatus Status;

for (Index = 0; Index < TEST_BUFFER_SIZE; Index++)
{
Buffer[Index] = Index+41;
}

for (Index = 0; Index < TEST_BUFFER_SIZE; Index++)
{

xil_printf(“\n\r %x %d”,&Buffer[Index], Buffer[Index]);
}

Status = XDmaCentral_Initialize(&dma, XPAR_XPS_CENTRAL_DMA_0_DEVICE_ID);

if (Status != XST_SUCCESS)
{
xil_printf(“The Central DMA Didn’t Initialize! \r\n”);
return XST_FAILURE;
}
XDmaCentral_Reset(&dma);

XDmaCentral_SetControl(&dma,XDMC_DMACR_SOURCE_INCR_MASK
+XDMC_DMACR_DEST_INCR_MASK);
XDmaCentral_Transfer(&dma,(Xuint32 *) Buffer, (Xuint32 *) Buffer2, TEST_BUFFER_SIZE*4);

xil_printf(“\n\r Speicherzelle in Buffer %x wert an der stelle %d”,Buffer,*Buffer);
xil_printf(“\n\r Speicherzelle in Buffer %x wert an der stelle %d”,Buffer2,*Buffer2);

for (Index = 0; Index < TEST_BUFFER_SIZE; Index=Index+1)
{
xil_printf(“\n\r %x %d”,&Buffer2[Index],Buffer2[Index]);
}

xil_printf(“\r\nDone”);

return 0;

}

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 hier.


Sep 3 2009

S51 Kickstarter

Leider ließ sich kein konkreter Fehler ausmachen warum der Kickstarter gehackelt hat. Nach dem Zusammenbau ging aber alles tadellos. Ich habe dann noch den Kettenschutz gesäubert und Benzinstand im Vergaser über den Schwimmeranschlag ein wenig nach oben korrigiert nun springt das Gefährt um einiges besser an und benötigt weniger gas um nicht abzusterben. Da ich immer noch leichte Probleme habe mit dem Standgas spiele ich mit dem Gedanken den Schwimmerstand nochmal an zu heben. Im FAQ des Simson Forums konnte ich nachlesen dass das Maß zwischen Schwimmeroberkannte und Vergasergehäuse im auf den rücken gedrehten zustand des Vergasers 28mm +- ,5mm betragen sollte. Leider ist dieses Maß nicht ganz so leicht zu messen also heißt es ein wenig experimentieren :-)

Sonst zieht das Ding wie die Pest und man kommt sich trotz 50ccm im Stadtverkehr nicht wie eine Totale Behinderung vor.


Aug 25 2009

Simson S51B kickstarter

Seit 2,5 Wochen bin ich stolzer Besitzer einer Simson S51B 50ccm “Maschine” das Mofa erstand ich für gute 400€ als nicht fahrbereit bei Ebay.

meine Simson S51B1-3

meine Simson S51B1-3

Das Fahrzeug wurde 1980 in der DDR gebaut und macht dafür einen guten Eindruck. Nach dem reinigen des Vergasers und der Zündkerze war es mir dann doch relativ schnell möglich das Gefährt gangbar zu machen.
Leider ist das fahrzeug durch einen Defekt am Kickstarter, letzte Woche, nicht mehr fahrtauglich und ich werde mich in kürze mit dem Gedanken anfreunden müssen den Getriebeblock zu demontieren und einen Blick in das innere werfen zu können und dort eventuell defekte Teile auszutauschen.

Simson S51B1-3

Simson S51B1-3

Bei der Gelegenheit werde ich auch gleich die Antriebskette welche sonst relativ gut geschützt unter einer Abdeckung verläuft herraus holen und säubern. Ich hoffe dass ich die Reparaturen schnell abschließen kann und das Gefährt in dieser Saison noch ein wenig auf die Straße bekomme. :-)