/** * * This function does a selftest on the Device Configuration device and * XDevCfg driver as an example. The purpose of this function is to illustrate * the usage of the XDevCfg driver. * * * @param DeviceId is the XPAR_<XDCFG_instance>_DEVICE_ID value from * xparameters.h * * @return * - XST_SUCCESS if successful * - XST_FAILURE if unsuccessful * * @note None * ****************************************************************************/ int DcfgSelfTestExample(u16 DeviceId) { int Status; XDcfg_Config *ConfigPtr; /* * Initialize the Device Configuration Interface driver. */ ConfigPtr = XDcfg_LookupConfig(DeviceId); /* * This is where the virtual address would be used, this example * uses physical address. */ Status = XDcfg_CfgInitialize(&DcfgInstance, ConfigPtr, ConfigPtr->BaseAddr); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Run the Self Test. */ Status = XDcfg_SelfTest(&DcfgInstance); if (Status != XST_SUCCESS) { return XST_FAILURE; } return XST_SUCCESS; }
XDcfg *XDcfg_Initialize(u16 DeviceId) { XDcfg *Instance = malloc(sizeof *Instance); XDcfg_Config *Config = XDcfg_LookupConfig(DeviceId); XDcfg_CfgInitialize(Instance, Config, Config->BaseAddr); return Instance; }
static XDcfg *XDcfg_Initialize(u16 DeviceId) { u32 CtrlReg; u32 Status; XDcfg *Instance = malloc(sizeof *Instance); XDcfg_Config *Config = XDcfg_LookupConfig(DeviceId); Status = XDcfg_CfgInitialize(Instance, Config, Config->BaseAddr); if(Status != XST_SUCCESS){ print("Device configuration initialisation failed\n\r"); exit(0); } // Disable PCAP interface for partial reconfiguration XDcfg_DisablePCAP(Instance); CtrlReg = XDcfg_ReadReg(Instance->Config.BaseAddr,XDCFG_CTRL_OFFSET); XDcfg_WriteReg(Instance->Config.BaseAddr, XDCFG_CTRL_OFFSET,(CtrlReg & XDCFG_CTRL_ICAP_PR_MASK)); return Instance; }
/** * * This function Initializes the PCAP driver. * * @param none * * @return * - XST_SUCCESS if the pcap driver initialization is successful * - XST_FAILURE if the pcap driver initialization fails * * @note none * ****************************************************************************/ int InitPcap(void) { XDcfg_Config *ConfigPtr; int Status = XST_SUCCESS; DcfgInstPtr = &DcfgInstance; /* * Initialize the Device Configuration Interface driver. */ ConfigPtr = XDcfg_LookupConfig(DCFG_DEVICE_ID); Status = XDcfg_CfgInitialize(DcfgInstPtr, ConfigPtr, ConfigPtr->BaseAddr); if (Status != XST_SUCCESS) { fsbl_printf(DEBUG_INFO, "XDcfg_CfgInitialize failed \n\r"); return XST_FAILURE; } return XST_SUCCESS; }
void remove_pcap(void) { int Status; XDcfg_Config *ConfigPtr0; ConfigPtr0 = XDcfg_LookupConfig(DCFG_DEVICE_ID); Status = XDcfg_CfgInitialize(&DcfgInstance, ConfigPtr0, ConfigPtr0->BaseAddr); if (Status != XST_SUCCESS) { print("DevConfig - Fail !\n\r"); } /* * Run the Self Test. */ Status = XDcfg_SelfTest(&DcfgInstance); if (Status != XST_SUCCESS) { print("SelftTest - Fail !\n\r"); } XDcfg_SelectIcapInterface(&DcfgInstance); }
int main (void) { XGpio sw, led; int i, pshb_check, sw_check; XGpioPs_Config*GpioConfigPtr; int xStatus; int iPinNumberEMIO = 54; u32 uPinDirectionEMIO = 0x0; u32 uPinDirection = 0x1; xil_printf("-- Start of the Program --\r\n"); // AXI GPIO switches Intialization XGpio_Initialize(&sw, XPAR_SWITCHES_DEVICE_ID); // AXI GPIO leds Intialization XGpio_Initialize(&led, XPAR_LEDS_DEVICE_ID); // PS GPIO Intialization GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID); if(GpioConfigPtr == NULL) return XST_FAILURE; xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr, GpioConfigPtr, GpioConfigPtr->BaseAddr); if(XST_SUCCESS != xStatus) print(" PS GPIO INIT FAILED \n\r"); //PS GPIO pin setting to Output XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1); //EMIO PIN Setting to Input port XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberEMIO,uPinDirectionEMIO); XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberEMIO,0); xil_printf("-- Press BTNR (Zedboard) or BTN3 (Zybo) to see the LED light --\r\n"); xil_printf("-- Change slide switches to see corresponding output on LEDs --\r\n"); xil_printf("-- Set slide switches to 0x0F to exit the program --\r\n"); while (1) { sw_check = XGpio_DiscreteRead(&sw, 1); XGpio_DiscreteWrite(&led, 1, sw_check); pshb_check = XGpioPs_ReadPin(&psGpioInstancePtr,iPinNumberEMIO); XGpioPs_WritePin(&psGpioInstancePtr,iPinNumber,pshb_check); if((sw_check & 0x0f)==0x0F) break; for (i=0; i<9999999; i++); // delay loop } xil_printf("-- End of Program --\r\n"); #ifdef MULTIBOOT // Driver Instantiations XDcfg XDcfg_0; u32 MultiBootReg = 0; #define PS_RST_CTRL_REG (XPS_SYS_CTRL_BASEADDR + 0x200) #define PS_RST_MASK 0x1 /* PS software reset */ #define SLCR_UNLOCK_OFFSET 0x08 // Initialize Device Configuration Interface XDcfg_Config *Config = XDcfg_LookupConfig(XPAR_XDCFG_0_DEVICE_ID); XDcfg_CfgInitialize(&XDcfg_0, Config, Config->BaseAddr); MultiBootReg = 0; // Once done, boot the master image stored at 0xfc00_0000 Xil_Out32(0xF8000000 + SLCR_UNLOCK_OFFSET, 0xDF0DDF0D); // unlock SLCR XDcfg_WriteReg(XDcfg_0.Config.BaseAddr, XDCFG_MULTIBOOT_ADDR_OFFSET, MultiBootReg); // write to multiboot reg // synchronize __asm__( "dsb\n\t" "isb" ); Xil_Out32(PS_RST_CTRL_REG, PS_RST_MASK); #endif return 0; }