Abschnitt zum Bare-metal Programm
This commit is contained in:
Binary file not shown.
+21
-16
@@ -459,11 +459,28 @@ Zusätzlich wurden dabei verschiedene Konfigurationen des IPs getetest, um auch
|
||||
\label{fig:CRC_DMA_IP_SimulationWave}
|
||||
\end{figure}
|
||||
|
||||
Abbildung~\ref{fig:CRC_DMA_IP_SimulationWave} zeigt exemplarisch das Wave-Diagramm der Simulation.
|
||||
Dort ist zu sehen, dass das IP keine Schreibbursts über die 4kB-Grenze hinaus ausführt, sondern die Burstlänge entsprechend anpasst.
|
||||
\subsection{Verifikation des Gesamtsystems} \label{sec:VerifikationGesamtsystem}
|
||||
|
||||
\subsubsection{Testprogramm} \label{sec:Testprogramm}
|
||||
\subsubsection{Bare-Metal-Programm} \label{sec:BareMetalTestprogramm}
|
||||
|
||||
Die Verifikation des Gesamtsystems erfolgt auf der Hardware.
|
||||
Zum Testen des Gesamtsystems wurde zunächst das Programm \textbf{axi\_crc\_dma\_bare\_metal.c} erstellt, das auf dem Mikroprozessor ohne Betriebssystem, also bare-metal, ausgeführt wird.
|
||||
In diesem Testprogramm wird ein einfacher Anwedungsfall für das CRC-DMA-IP durchgeführt.
|
||||
Das beinhaltet das anlegen von Datenpaketen im Speicher, das Konfigurieren des CRC-DMA-IPs und das Starten des Vorgangs.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\textwidth]{ILA_wave_write_4k_boundry_crossing_ausschnitt.png}
|
||||
\caption{ILA-Messung der Full-AXI-Master Schnittstelle}
|
||||
\label{fig:ILA_Messung}
|
||||
\end{figure}
|
||||
|
||||
Dieses Programm wurde vor allem dafür verwendet, mithilfe von ILA-Messungen die Funktionalität der Full-AXI-Master Schnittstelle zu überprüfen.
|
||||
Eine Beispielmessung ist in Abbildung~\ref{fig:ILA_Messung} dargestellt.
|
||||
So konnte final die korrekte Kommunikation des IPs mit dem Restsystem festgestellt werden.
|
||||
|
||||
\subsubsection{Testprogramm} \label{sec:Testprogramm}
|
||||
|
||||
Für die finale Verifikation des CRC-DMA-IPs bzw. des Gesamtsystems wurde das Testprogramm \texttt{CRC\_DMA.cpp} erstellt, das im Kontext eines Linux Betriebssystems ausgeführt wird.
|
||||
Das Testprogramm ist in mehrere Testläufe unterteilt.
|
||||
@@ -498,19 +515,6 @@ Alle Daten wurden korrekt in den Speicher geschrieben.
|
||||
|
||||
Dabei ist anzumerken, dass nur bis zu einer Paketanzahl von 100 und einer Paketgröße von 10000 getestet wurde, auch wenn technisch gesehen sowohl Paketgröße als auch Paketanzahl auf einen Wert bis zu 65535 konfiguriert werden können.
|
||||
|
||||
\subsubsection{ILA-Messung}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=1.0\textwidth]{ILA_wave_write_4k_boundry_crossing_ausschnitt.png}
|
||||
\caption{ILA-Messung der Full-AXI-Master Schnittstelle}
|
||||
\label{fig:ILA_Messung}
|
||||
\end{figure}
|
||||
|
||||
Parallel zur Entwicklung des Testprogramms wurde mithilfe von ILA-Messungen die Funktionalität der Full-AXI-Master Schnittstelle überprüft.
|
||||
Eine Beispielmessung ist in Abbildung~\ref{fig:ILA_Messung} dargestellt.
|
||||
So konnte final die korrekte Kommunikation des IPs mit dem Restsystem festgestellt werden.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\section{Fazit und Ausblick}
|
||||
@@ -556,9 +560,10 @@ Dazu beinhaltet das Vivadoprojekt folgende Block-Designs:
|
||||
|
||||
Folgende Programme bzw. Software-Quelldateien wurden erstellt:
|
||||
\begin{itemize}
|
||||
\item \textbf{crc.c}: Referenzprogramm zur Berechnung von CRC-Prüfsummen in Software siehe Abschnitt~\ref{sec:Referenzprogramm}
|
||||
\item \textbf{axi\_crc\_dma.h}: Headerdatei für das CRC-DMA-IP siehe Abschnitt~\ref{sec:Software_Treiberfunktion}
|
||||
\item \textbf{axi\_crc\_dma.cpp}: Treiberfunktion für das CRC-DMA-IP siehe Abschnitt~\ref{sec:Software_Treiberfunktion}
|
||||
\item \textbf{crc.c}: Referenzprogramm zur Berechnung von CRC-Prüfsummen in Software siehe Abschnitt~\ref{sec:Referenzprogramm}
|
||||
\item \textbf{axi\_crc\_dma\_bare\_metal.c}: Testprogramm für das CRC-DMA-IP siehe Abschnitt~\ref{sec:BareMetalTestprogramm}
|
||||
\item \textbf{CRC\_DMA.cpp}: Testprogramm zur Verifikation des Gesamtsystems siehe Abschnitt~\ref{sec:Testprogramm}
|
||||
\end{itemize}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
\newpage
|
||||
|
||||
% Literatur auflisten ohne es konrekt zu referenzieren
|
||||
\printbibliography[heading=bibnumbered, title=Literatur und Dokumentation]
|
||||
\printbibliography[heading=bibnumbered, title=Quellen]
|
||||
\newpage
|
||||
|
||||
% Selbstständigkeitserklärung
|
||||
|
||||
@@ -39,7 +39,7 @@ int main()
|
||||
};
|
||||
|
||||
for (uint32_t i = 0; i < PACKET_SIZE*PACKET_NUMBER*4; i++) {
|
||||
((uint8_t*) data)[i] = (uint8_t) i;
|
||||
((uint8_t*) data)[i] = (uint8_t) i;
|
||||
}
|
||||
|
||||
// axi_crc_dam Komponete parametrieren
|
||||
@@ -62,24 +62,24 @@ int main()
|
||||
CRC->Control = 1;
|
||||
|
||||
while (1) {
|
||||
// Status abfragen
|
||||
if ((CRC->Control & (1<<0)) == 0) {
|
||||
break;
|
||||
}
|
||||
// Status abfragen
|
||||
if ((CRC->Control & (1<<0)) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Interrupt zuruecksetzen
|
||||
CRC->InterruptStatus = 0;
|
||||
CRC->InterruptStatus = 0;
|
||||
|
||||
// Hardwareergebnis und Softwareergebnisse ablegen
|
||||
for (int i = 0; i < PACKET_NUMBER; i++) {
|
||||
uint8_t* pData = (uint8_t*) (CRC->ReadAddress + 4*i*PACKET_SIZE);
|
||||
uint32_t* pCRC = (uint32_t*) (CRC->WriteAddress + 4*PACKET_SIZE + 4*i*(PACKET_SIZE+1));
|
||||
crc_sw[i] = calcCRC32(pData, PACKET_SIZE*4, CRC32_AXIM.Polynomial, CRC32_AXIM.InitalValue, CRC32_AXIM.FinalXOR, CRC32_AXIM.InputReflected ? 1 : 0, CRC32_AXIM.OutputReflected ? 1 : 0);
|
||||
crc_hw[i] = *pCRC;
|
||||
uint8_t* pData = (uint8_t*) (CRC->ReadAddress + 4*i*PACKET_SIZE);
|
||||
uint32_t* pCRC = (uint32_t*) (CRC->WriteAddress + 4*PACKET_SIZE + 4*i*(PACKET_SIZE+1));
|
||||
crc_sw[i] = calcCRC32(pData, PACKET_SIZE*4, CRC32_AXIM.Polynomial, CRC32_AXIM.InitalValue, CRC32_AXIM.FinalXOR, CRC32_AXIM.InputReflected ? 1 : 0, CRC32_AXIM.OutputReflected ? 1 : 0);
|
||||
crc_hw[i] = *pCRC;
|
||||
}
|
||||
|
||||
CRC->Polynomial = 0x0;
|
||||
CRC->Polynomial = 0x0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user