📄 my_led_selftest.c
字号:
//////////////////////////////////////////////////////////////////////////////
// Filename: C:\XUP\Markets\Embedded\Workshops\courses\v81Embedded\xupv2pro\solutions\lab3/drivers/my_led_v1_00_a/src/my_led_selftest.c
// Version: 1.00.a
// Description: Contains a diagnostic self-test function for the my_led driver
// Date: Wed Feb 08 15:59:38 2006 (by Create and Import Peripheral Wizard)
//////////////////////////////////////////////////////////////////////////////
/***************************** Include Files *******************************/
#include "my_led.h"
/************************** Constant Definitions ***************************/
/************************** Variable Definitions ****************************/
/************************** Function Definitions ***************************/
/**
*
* Run a self-test on the driver/device. Note this may be a destructive test if
* resets of the device are performed.
*
* If the hardware system is not built correctly, this function may never
* return to the caller.
*
* @param baseaddr_p is the base address of the MY_LED instance to be worked on.
*
* @return
*
* - XST_SUCCESS if all self-test code passed
* - XST_FAILURE if any self-test code failed
*
* @note Caching must be turned off for this function to work.
* @note Self test may fail if data memory and device are not on the same bus.
*
*/
XStatus MY_LED_SelfTest(void * baseaddr_p)
{
int Index;
Xuint32 baseaddr;
Xuint8 Reg8Value;
Xuint16 Reg16Value;
Xuint32 Reg32Value;
Xuint64 Reg64Value;
/*
* Assert the argument
*/
XASSERT_NONVOID(baseaddr_p != XNULL);
baseaddr = (Xuint32) baseaddr_p;
xil_printf("******************************\n\r");
xil_printf("* User Peripheral Self Test\n\r");
xil_printf("******************************\n\n\r");
/*
* Reset the device to get it back to its default state and get module identification value
*/
xil_printf("RST/MIR test...\n\r");
MY_LED_mReset(baseaddr);
xil_printf(" - write 0x%08x to software reset register \n\r", IPIF_RESET);
Reg32Value = MY_LED_mReadMIR(baseaddr);
if ( Reg32Value == 0x30220301 )
{
xil_printf(" - read 0x%08x (expected) from module identification register \n\r", Reg32Value);
xil_printf(" - RST/MIR write/read passed\n\n\r");
}
else
{
xil_printf(" - read 0x%08x (unexpected) from module identification register, expect 0x30220301 \n\r", Reg32Value);
xil_printf(" - RST/MIR write/read failed\n\n\r");
return XST_FAILURE;
}
/*
* Write to user logic slave module register(s) and read back
*/
xil_printf("User logic slave module test...\n\r");
xil_printf(" - write 1 to slave register 0\n\r");
MY_LED_mWriteSlaveReg0(baseaddr, 1);
Reg32Value = MY_LED_mReadSlaveReg0(baseaddr);
xil_printf(" - read %d from register 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 1 )
{
xil_printf(" - slave register 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - slave register write/read passed\n\n\r");
return XST_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -