UnitTest.rar

  • laiwd
    了解作者
  • C/C++
    开发工具
  • 12KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-09-16 10:51
    上传日期
驱动测试代码框架,可下载不同模块的测试代码
UnitTest.rar
  • UT_UTEntry.h
    3KB
  • UT_UTEntry.c
    74.8KB
内容介绍
#include "../ROM/ROM_Print.h" #include "../ROM/main.h" #include "../ROM/ROM_UFS.h" #include "../ROM/ROM_ISR.h" #include "../ROM/ROM_CMDHandler.h" #include "../ROM/ROM_CTL.h" #include "../ROM/ROM_ISR.h" #include "../ROM/ROM_Uart.h" #include "../Global/Type.h" #include "../Global/Reg_Unipro.h" #include "../Global/Reg_UFC.h" //#include "../Global/Layout.h" #include "../Global/Reg_Nfi.h" #include "../Global/UPIU.h" #include "../Global/Register.h" #include "../Global/UFS_SCSI_Cmd_Set.h" #include "../Global/Reg_PMU.h" #include "../Global/Reg_Peripheral.h" #include "../Global/Reg_UFC.h" #include "../Global/Reg_LdpcUcc.h" #include "../Global/Reg_CmdQueue.h" #include "../Global/Reg_Bm.h" #include "../UFS/UFS_CMDQ.h" #include "../UFS/UFS_SystemBlock_Tab.h" #include "../UFS/UFS_Systick.h" #include "../UnitTest/UT_UTEntry.h" #include "../UnitTest/UT_DMAC_Acc_UnitTest.h" //#define LOG_SAVE //#include "../UnitTest/UT_Debug.h" #include "../UnitTest/UT_Memory_Bist.h" #define DATAIN_BUF_ADDR (UFS_FE_BUF_START_ADDR) //================================================================ void UFS_UTEntry(void) __attribute__((section("Section_UFS_UTEntry"))); extern LWORD UFS_Entry_SCSI_Random_CDB_Test(LWORD au32_args[4]); extern LWORD DMAC_ACC_UT_Entry(LWORD au32_args[4]); extern void DelayMs(LWORD u32_DelayMs); extern LWORD UFS_Entry_Query_Unit_Test(LWORD au32_args[4]); extern LWORD Memory_Bist_Entry(LWORD au32_args[4]); extern LWORD HMAC_Verify_Entry(LWORD au32_args[4]); extern void ROM_Query_API_Verify(void); extern void ROM_srand(unsigned int seed); extern LWORD UFS_Entry_FE_Test(LWORD *); extern LWORD g32_ROM_MPparam; extern enum LINK_STATE g32_LinkState; void ISP_UFS_PostLink_Initial(void); extern void ROM_memcpy(void *p_dst, void *p_src, LWORD u32_Size); extern void Get_Random_Data(BYTE * u08_Buf, LWORD u32_Len); extern void ROM_UFS_Send_Rsp_UPIU(LWORD u32_Response, LWORD u32_RsdlCnt, LWORD u32_DeviceInfo, BYTE u08_RspFlag, LWORD u32_Slot); extern void ROM_UFS_Polling_LinkStartUp(void); extern void Print_Hex(void *pv_String, void *pv_BufAddr, LWORD u32_Len); extern void UFS_Entry(void); extern void SysBlkMmt_RW_Test(void); extern LWORD UFS_UT_NFI_Entry(LWORD au32_args[4]); extern LWORD UFS_Entry_FE_Unit_Test(LWORD u32_args[4]); extern LWORD ISP_UFS_MP_UpdateValInMP(void); LWORD FE_Debug_Entry(LWORD au32_args[4]); extern LWORD UFS_UT_NFI_DBG_Entry(LWORD u32_args[4]); extern LWORD Systick_Verify_Entry(LWORD au32_args[4]); extern LWORD UT_Systick_SwitchToPLL(void); LWORD UT_SYS_CLK_Init(); //================================================================ #define GPIO_8 (0x00000100) BYTE ga08_UFS_UT_CMD_Prompt[] = ">>> UT, Waiting Host Cmd... <<<\r\n"; BYTE ga08_UFS_UTHelloStr[] = "Hello UFS_UTEntry\n\r"; static LWORD gu32_Systicks = 0; const t_UT_STRU ast_UT_Module_Func_Reg[UT_MODULE_ID_MAX]= { {UT_MODULE_ID_FE, UFS_Entry_FE_Unit_Test, (BYTE *)"FE UT", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_QUERY, UFS_Entry_Query_Unit_Test, (BYTE *)"Query_UT", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_SCSI_CDB, UFS_Entry_SCSI_Random_CDB_Test, (BYTE *)"SCSI_Random_CDB", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_FE_CMD, UFS_Entry_FE_Test, (BYTE *)"FE CMD UT", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_HMAC, HMAC_Verify_Entry, (BYTE *)"HMAC_UT", UT_WAIT_CMD_RETURN,}, {UT_MODULE_ID_DMAC_ACC, DMAC_ACC_UT_Entry, (BYTE *)"DMAC_ACC_UT", UT_WAIT_CMD_RETURN,}, {UT_MODULE_ID_MEMBIST, Memory_Bist_Entry, (BYTE *)"Mem Bist", UT_WAIT_CMD_RETURN,}, {UT_MODULE_ID_NFI, UFS_UT_NFI_Entry, (BYTE *)"NFI UT Test", UT_NO_WAIT_CMD_RETURN,}, // {UT_MODULE_ID_FE_ISP_Test, FE_Debug_Entry, (BYTE *)"FE_ISP_Test", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_CTL_DBG, UFS_UT_NFI_DBG_Entry, (BYTE *)"CTL DBG", UT_NO_WAIT_CMD_RETURN,}, {UT_MODULE_ID_SYSTICK, Systick_Verify_Entry, (BYTE *)"Systick Test", UT_NO_WAIT_CMD_RETURN,}, }; static LWORD gu32_UT_NFI_MicroCodeBaseAddr = 0;// Store base address of NFI_NORMAL.BIN for NFI UT Test void FPGA_Systick_IRQ(void) { gu32_Systicks++; } void ASIC_Systick_IRQ(void) { // DBG_Printf("****ASIC Tick:%d *****\r\n", gu32_Systicks); LWORD u32_Tmp; gu32_Systicks++; u32_Tmp = GET_REG_32(REG_GPIO_LEVEL_CFG_ADDR); if (gu32_Systicks & 0x01) { SET_REG_32(REG_GPIO_LEVEL_CFG_ADDR, u32_Tmp | GPIO_8); } else { SET_REG_32(REG_GPIO_LEVEL_CFG_ADDR, u32_Tmp & (~GPIO_8)); } } LWORD Get_Systicks(void) { return gu32_Systicks; } extern LWORD g32_ROM_SP; #define INTERRUPT_MAX_NUM (16+16)// reference scatter file #define ROM_INT_VECTOR_BASE_ADDR (0) static void Config_VectorTable_BaseAddr(LWORD u32_VTBaseAdr) { LWORD u32_Cnt = 0; __asm volatile ("CPSID I\n");// Disable global interrupt ROM_memcpy4((void*)u32_VTBaseAdr, (void*)ROM_INT_VECTOR_BASE_ADDR, INTERRUPT_MAX_NUM * 4);// copy default int adr to new area __asm volatile ("DSB\n");// SET_REG_32(0xE000ED08, u32_VTBaseAdr);// set VTOR __asm volatile ("CPSIE I\n");// enable global interrupt } static void ISP_CFG_ISREntry(LWORD u32_Entry, ISR_FCT_PTR p_fct) { LWORD *pu32_Ptr = (LWORD *)VECTOR_TABLE_BASE_ADDR; if (u32_Entry < INT_ID_MAX) { pu32_Ptr[u32_Entry] = (LWORD)p_fct; } return; } void UT_Hardfault_Handler_Print(LWORD u32_SP_Val) { LWORD *pu32_Ptr = (LWORD *)u32_SP_Val; DBG_Printf("==>> Hardfault << ==\r\n\tSP:0x%08x\r\n", u32_SP_Val); DBG_Printf(" >> PC:0x%08x <<\r\n", pu32_Ptr[6]); // DBG_Printf("#################################################\r\n"); // DBG_Printf("#### Don't Reset, save current environment #####\r\n"); // DBG_Printf("#### If you don't know how to handle #####\r\n"); // DBG_Printf("#################################################\r\n"); // DBG_Printf("[R0]:0x%08x\r\n", pu32_Ptr[0]); // DBG_Printf("[R1]:0x%08x\r\n", pu32_Ptr[1]); // DBG_Printf("[R2]:0x%08x\r\n", pu32_Ptr[2]); // DBG_Printf("[R3]:0x%08x\r\n", pu32_Ptr[3]); // DBG_Printf("[R12]:0x%08x\r\n", pu32_Ptr[4]); // DBG_Printf("[LR]:0x%08x\r\n", pu32_Ptr[5]); // DBG_Printf("[PC]:0x%08x\r\n", pu32_Ptr[6]); // DBG_Printf("[xPSR]:0x%08x\r\n", pu32_Ptr[7]); while(1); } void UT_Hardfault_Handler(void) __attribute__((naked)); void UT_Hardfault_Handler(void) { __asm("movs r0, #4\n" "mov r1, lr\n" "tst r0, r1\n" "beq Using_MSP\n" "mrs r0,psp\n" "ldr r1, =UT_Hardfault_Handler_Print \n" "bx r1\n" "Using_MSP: \n" "mrs r0, msp\n" "ldr r1, =UT_Hardfault_Handler_Print \n" "bx r1\n" ); } //**************************************************************** //Function name: // UFS_UT_Function_Call // //Description: // Calling Unit test function // //Arguments: // pst_FunsStructPtr: UT Functions base addr // u32_TestCasesNums: UT Numbers // pu08_UTName: UT Name string addr // //Return Values: // // Author Date Version Action //**************************************************************** #if 0 void UFS_UT_Function_Call(const t_UFS_UT_Func *pst_FunsStructPtr, LWORD u32_TestCasesNums, char * pu08_UTName) { LWORD u32_Cnt = 0; LWORD u32_Ret = 0; LWORD u32_SuccCnt =0, u32_FailCnt = 0; LWORD u32_StartTick = 0; LWORD u32_EndTick = 0; LWORD u32_TotalTimeConsume = 0; LWORD u32_Day = 0, Hours = 0, Minutes = 0, Seconds = 0, MilliSeconds = 0; LWORD u32_Temp= 0; DBG_Printf("======= %s Has %d Test cases=======\r\n", pu08_UTN
评论
    相关推荐
    • autoMonkey框架代码
      当前移动互联网已经过了草创时期,各家公司都在抢占市场和用户;那么,就看哪一家做的更精致(交互做的更好,崩溃出现的更少)。...APP测试涉及各个方面,而稳定性和性能测试一般在功能测试完成后开展。
    • python接口自动化测试框架代码
      测试用例写在excel表格里,通过程序实现自动化运行测试用例,将错误日志打印在log里。是根据一个开源项目改了一些代码,正确填好interface测试用例表格之后就能正常运行。
    • 代码:全栈测试PHP框架
      Codeception是用于PHP的现代全栈测试框架。 受BDD的启发,它提供了一种全新的书写验收,功能甚至单元测试的方式。 由PHPUnit提供支持。 建立 网络驱动 会费 在Codeception,我们很高兴收到社区的贡献。 如果您想...
    • WinRunner自动化测试框架代码
      Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级...
    • ssh框架的源代码
      ssh框架的源代码包括一些测试代码、配置文件
    • mybatis框架测试代码
      实现mybatis测试的project文件,可以直接在eclipse的ee版本上直接运行
    • html 后台框架代码
      html 后台框架 html框架 html 后台框架代码
    • SSH基础框架代码
      该资源是简单的SSH基础框架,对于初学摸索SSH框架搭建的朋友们有所帮助。因为我刚开始搭建环境的时候,焦头烂额地弄了两三天才弄出来。希望对大家有所帮助。其中也有struts标签的测试示例
    • amis前端低代码框架 v1.0.18
      为您提供amis前端低代码框架下载,amis 是一个低代码前端框架,它使用 JSON 配置来生成页面,可以节省页面开发工作量,极大提升开发前端页面的效率。目前在百度广泛用于内部平台的前端开发,已有 100+ 部门使用,...
    • JAVA反射机制自定义框架测试代码
      JAVA反射机制自定义框架测试代码,留着以后复习用!