diff --git a/bsp_z7/coraZ7-10/xparameters.h b/bsp_z7/coraZ7-10/xparameters.h index 5d4b817..ba6bcab 100644 --- a/bsp_z7/coraZ7-10/xparameters.h +++ b/bsp_z7/coraZ7-10/xparameters.h @@ -412,6 +412,9 @@ /******************************************************************/ +/* Canonical definitions for peripheral UARTLITE */ + +#define XUARTLITE_BASEADDRESS 0x42c00000 /* Definitions for driver UARTPS */ #define XPAR_XUARTPS_NUM_INSTANCES 1 diff --git a/mission/uart_rust_helper.c b/mission/uart_rust_helper.c index 240d12b..c78b794 100644 --- a/mission/uart_rust_helper.c +++ b/mission/uart_rust_helper.c @@ -1,4 +1,230 @@ /************************************************************/ /* UART SETUP AND USAGE */ -/************************************************************/ \ No newline at end of file +/************************************************************/ + +/****************************************************************************** +* Copyright (C) 2002 - 2021 Xilinx, Inc. All rights reserved. +* Copyright (c) 2022 - 2023 Advanced Micro Devices, Inc. All Rights Reserved. +* SPDX-License-Identifier: MIT +******************************************************************************/ + +/******************************************************************************/ +/** +* +* @file xuartlite_polled_example.c +* +* This file contains a design example using the UartLite driver (XUartLite) and +* hardware device using the polled mode. +* +* @note +* +* The user must provide a physical loopback such that data which is +* transmitted will be received. +* +* MODIFICATION HISTORY: +*
+* Ver Who Date Changes +* ----- ---- -------- ----------------------------------------------- +* 1.00a jhl 02/13/02 First release +* 1.00a sv 06/13/05 Minor changes to comply to Doxygen and coding guidelines +* 2.00a ktn 10/20/09 Updated this example to wait for valid data in receive +* fifo instead of Tx fifo empty to update receive buffer +* and minor changes as per coding guidelines. +* 3.2 ms 01/23/17 Added xil_printf statement in main function to +* ensure that "Successfully ran" and "Failed" strings +* are available in all examples. This is a fix for +* CR-965028. +* 3.9 gm 07/08/23 Added SDT support +*+******************************************************************************/ + +/***************************** Include Files *********************************/ + +#include "xparameters.h" +#include "xstatus.h" +#include "xuartlite.h" +#include "xil_printf.h" + +/************************** Constant Definitions *****************************/ + +/* + * The following constants map to the XPAR parameters created in the + * xparameters.h file. They are defined here such that a user can easily + * change all the needed parameters in one place. + */ +#ifndef SDT +#define UARTLITE_DEVICE_ID XPAR_UARTLITE_0_DEVICE_ID +#else +#define XUARTLITE_BASEADDRESS XPAR_XUARTLITE_0_BASEADDR +#endif + +/* + * The following constant controls the length of the buffers to be sent + * and received with the UartLite, this constant must be 16 bytes or less since + * this is a single threaded non-interrupt driven example such that the + * entire buffer will fit into the transmit and receive FIFOs of the UartLite. + */ +#define TEST_BUFFER_SIZE 16 + +/**************************** Type Definitions *******************************/ + + +/***************** Macros (Inline Functions) Definitions *********************/ + + +/************************** Function Prototypes ******************************/ +#ifndef SDT +int UartLitePolledExample(u16 DeviceId); +#else +int UartLitePolledExample(UINTPTR BaseAddress); +#endif + +/************************** Variable Definitions *****************************/ + +XUartLite UartLite; /* Instance of the UartLite Device */ + +/* + * The following buffers are used in this example to send and receive data + * with the UartLite. + */ +u8 SendBuffer[TEST_BUFFER_SIZE]; /* Buffer for Transmitting Data */ +u8 RecvBuffer[TEST_BUFFER_SIZE]; /* Buffer for Receiving Data */ + +/*****************************************************************************/ +/** +* +* Main function to call the Uartlite polled example. +* +* +* @return XST_SUCCESS if successful, otherwise XST_FAILURE. +* +* @note None. +* +******************************************************************************/ +int uart_polled_test(void) +{ + int Status; + + /* + * Run the UartLite polled example, specify the Device ID that is + * generated in xparameters.h + */ +#ifndef SDT + Status = UartLitePolledExample(UARTLITE_DEVICE_ID); +#else + Status = UartLitePolledExample(XUARTLITE_BASEADDRESS); +#endif + if (Status != XST_SUCCESS) { + xil_printf("Uartlite polled Example Failed\r\n"); + return XST_FAILURE; + } + + xil_printf("Successfully ran Uartlite polled Example\r\n"); + return XST_SUCCESS; + +} + + +/****************************************************************************/ +/** +* This function does a minimal test on the UartLite device and driver as a +* design example. The purpose of this function is to illustrate +* how to use the XUartLite component. +* +* This function sends data and expects to receive the data through the UartLite +* such that a physical loopback must be done with the transmit and receive +* signals of the UartLite. +* +* This function polls the UartLite and does not require the use of interrupts. +* +* @param DeviceId is the Device ID of the UartLite and is the +* XPAR_