ZDBMS/output/sh_iec60730b_8051f_testproc...

382 lines
18 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_TESTPROC
OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_testproc.obj
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c LARGE OPTIMIZE(7
-,SIZE) REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEB
-UG OBJECTEXTEND PRINT(.\output\sh_iec60730b_8051f_testproc.lst) OBJECT(.\output\sh_iec60730b_8051f_testproc.obj)
line level source
1 /*
2 * IEC60730 Class B TEST PROCESS for SINOWEALTH 8051 based ICs.
3 * File: sh_iec60730b_8051f_testproc.h
4 * Version: 1.0
5 * Author: Robin.zhang Chaoming.luo
6 * Date: 04/21/2023
7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S
8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS.
9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH
10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES
11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR
12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN
13 * CONNECTION WITH THEIR PRODUCTS.
14 *
15 */
16 #include "sh_iec60730b_8051f_testproc.h"
*** WARNING C318 IN LINE 16 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: can't open file 'sh_iec60730b_80
-51f_testproc.h'
17 //#include "MAIN.H"
18
19
20 extern SHT_U32 __iec60730b_stack_top;
*** ERROR C129 IN LINE 20 OF CODE_CLASSB\IEC60730_PROC\SH_IEC60730B_8051F_TESTPROC.C: missing ';' before '__iec60730b_st
-ack_top'
21 extern SHT_U32 __iec60730b_stack_bottom;
22
23 SHT_U8 __iec60730b_bist_step;
24 static SHT_U32 __iec60730b_crc_addr;
25
26
27 SHT_RESULT sh_iec60730b_8051f_test_post(void)
28 {
29 SHT_RESULT checkResult = SH_CHK_PASS;
30 /******************************************************/
31 /*Initial global variables*/
32 __iec60730b_bist_step = 0;
33 __iec60730b_crc_addr = 0;
34
35 /******************************************************/
36 /* check watch dog */
37 #if SH_CHK_WDG_EN == 1
*** WARNING C322 IN LINE 37 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_wdg_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
42 /*******************************************************/
43 /* Disable Interrupt */
44 EA = 0;
45
46 /******** CHECK CPU REGISTERS *********/
47 #if SH_CHK_CPU_EN == 1
*** WARNING C322 IN LINE 47 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 2
checkResult = sh_8051f_cpu_register1();
if(checkResult != SH_CHK_PASS)
return checkResult;
checkResult = sh_8051f_cpu_register2();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
56
57 /******** CHECK PROGRAM COUNTER *********/
58 #if SH_CHK_PC_EN == 1
*** WARNING C322 IN LINE 58 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_pc_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
63
64 /******** CHECK RAM ADDRESSING LINE *********/
65 #if SH_CHK_ADDRLINE_TEST_EN == 1
*** WARNING C322 IN LINE 65 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_addrline_address = 0;
checkResult = sh_8051f_addrline_data1();
if(checkResult != SH_CHK_PASS)
return checkResult;
checkResult = sh_8051f_addrline_data2();
if(checkResult != SH_CHK_PASS)
return checkResult;
checkResult = sh_8051f_addrline_xdata_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
79
80 /******** CHECK RAM *********/
81 #if SH_CHK_XDATA_EN == 1
*** WARNING C322 IN LINE 81 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_ram_data_address = 0;
__iec60730b_ram_xdata_address = 0;
checkResult = sh_8051f_ram_data_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
checkResult = sh_8051f_ram_xdata_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
92 CLR_WDT();
93
94 /* Enable Interrupt */
95 EA = 1;
96
97 /******** CHECK BOOT *********/
98 #if SH_CHK_BOOT_EN == 1
*** WARNING C322 IN LINE 98 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_boot_checksum = CWORD[(SH_CHK_BOOT_END_ADDR-2)/2];
if(sh_8051f_crc_code(SH_CHK_BOOT_START_ADDR,SH_CHK_BOOT_END_ADDR,MCU_CRC_FLASH) != __iec60730b_boot_ch
-ecksum)
checkResult = SH_CHK_FAIL_BOOT;
if(checkResult != SH_CHK_PASS)
return checkResult;
C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 3
CLR_WDT();
#endif
107
108 /******** CHECK FLASH *********/
109 #if SH_CHK_FLASH_EN == 1
*** WARNING C322 IN LINE 109 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_flash_addr = SH_CHK_FLASH_START_ADDR;
if(sh_8051f_crc_code(SH_CHK_FLASH_START_ADDR,SH_CHK_FLASH_END_ADDR,MCU_CRC_FLASH) != __iec60730b_flash
-_checksum)
checkResult = SH_CHK_FAIL_FLASH;
if(checkResult != SH_CHK_PASS)
return checkResult;
CLR_WDT();
#endif
118
119 /******** CHECK EEPROM *********/
120 #if SH_CHK_EE_EN == 1
*** WARNING C322 IN LINE 120 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_ee1_addr = SH_CHK_EE1_START_ADDR;
__iec60730b_ee2_addr = SH_CHK_EE2_START_ADDR;
sh_8051f_ee_readchecksum((SH_CHK_EE1_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee1_checksum, 2);
if(sh_8051f_crc_code(SH_CHK_EE1_START_ADDR,SH_CHK_EE1_END_ADDR,MCU_CRC_EE) != __iec60730b_ee1_checksum
-)
checkResult = SH_CHK_FAIL_EE;
if(checkResult != SH_CHK_PASS)
return checkResult;
CLR_WDT();
/******** CHECK EEPROM *********/
sh_8051f_ee_readchecksum((SH_CHK_EE2_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee2_checksum, 2);
if(sh_8051f_crc_code(SH_CHK_EE2_START_ADDR,SH_CHK_EE2_END_ADDR,MCU_CRC_EE) != __iec60730b_ee2_checksum
-)
checkResult = SH_CHK_FAIL_EE;
if(checkResult != SH_CHK_PASS)
return checkResult;
CLR_WDT();
#endif
141
142 /******** STACK CHECK *********/
143 #if SH_CHK_STACK_EN == 1
*** WARNING C322 IN LINE 143 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
sh_8051f_stack_init();
checkResult = sh_8051f_stack_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
149
150 /********* CLOCK CHECK ********/
151 #if SH_CHK_CLOCK_EN == 1
*** WARNING C322 IN LINE 151 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
{
SHT_U16 timeout = 0x8000;
sh_8051f_clk_init();
__iec60730b_clk_limit_high = 0Xff00;
__iec60730b_clk_limit_low = 1;
SH_CHK_CLOCK_TIMER_START();
while(timeout)
{
C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 4
EA = 0;
checkResult = sh_8051f_clk_check();
EA = 1;
if(checkResult != SH_CHK_FAIL_CLK_PROGRESS)
break;
timeout--;
CLR_WDT();
}
//CALCULATE CLOCK TOLERANCE RANGE
if(checkResult == SH_CHK_PASS)
{
SHT_U16 tmp = (__iec60730b_clk_context * SH_CHK_CLK_TOLERANCE) / 100;
__iec60730b_clk_limit_low = __iec60730b_clk_context - tmp;
__iec60730b_clk_limit_high = __iec60730b_clk_context + tmp;
}
}
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
179 CLR_WDT();
180
181 /********** AIO CHECK ****************/
182 #if SH_CHK_AIO_TEST_EN == 1
*** WARNING C322 IN LINE 182 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
__iec60730b_aio_state = SH_CHK_PASS;
checkResult = sh_8051f_aio_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
188
189 /********** DIO CHECK ****************/
190 #if SH_CHK_DIO_TEST_EN == 1
*** WARNING C322 IN LINE 190 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_dio_test();
if(checkResult != SH_CHK_PASS)
return checkResult;
#endif
195
196 return checkResult;
197 }
198
199 SHT_RESULT sh_iec60730b_8051f_test_bist(void)
200 {
201 SHT_RESULT checkResult = SH_CHK_PASS;
202
203 if((__iec60730b_bist_step >> 4) == 0)
204 {/************** 0: CHECK CPU REGISTERS **************/
205 #if SH_CHK_CPU_EN == 1
*** WARNING C322 IN LINE 205 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
EA = 0;
switch(__iec60730b_bist_step&0x0F)
{
case 0:
checkResult = sh_8051f_cpu_register1();
break;
case 1:
checkResult = sh_8051f_cpu_register2();
break;
}
EA = 1;
__iec60730b_bist_step++;
if((__iec60730b_bist_step&0xF) >= 2)
C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 5
{
__iec60730b_bist_step = 0x10;
}
#else
223 __iec60730b_bist_step = 0x10;
224 #endif
225 }
226 else if((__iec60730b_bist_step >> 4) == 1)
227 {/************** 1: CHECK PROGRAM COUNTER **************/
228 #if SH_CHK_PC_EN == 1
*** WARNING C322 IN LINE 228 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
EA = 0;
checkResult = sh_8051f_pc_test();
EA = 1;
#endif
233 __iec60730b_bist_step = 0x20;
234 }
235 else if((__iec60730b_bist_step >> 4) == 2)
236 {/************** 2: CHECK RAM ADDRESSING LINE **************/
237 #if SH_CHK_ADDRLINE_TEST_EN == 1
*** WARNING C322 IN LINE 237 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
EA = 0;
if((__iec60730b_bist_step&0x0F) == 0)
{
checkResult = sh_8051f_addrline_data1();
__iec60730b_bist_step++;
}
else if((__iec60730b_bist_step&0x0F) == 1)
{
checkResult = sh_8051f_addrline_data2();
__iec60730b_bist_step++;
}
else if((__iec60730b_bist_step&0x0F) == 2)
{
checkResult = sh_8051f_addrline_xdata_runtime();
__iec60730b_bist_step++;
}
else
__iec60730b_bist_step = 0x30;
EA = 1;
#else
258 __iec60730b_bist_step = 0x30;
259 #endif
260 }
261 else if((__iec60730b_bist_step >> 4) == 3)
262 {/************** 3: CHECK RAM **************/
263 #if SH_CHK_XDATA_EN == 1
*** WARNING C322 IN LINE 263 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
EA = 0;
if((__iec60730b_bist_step&0x0F) == 0)
{
checkResult = sh_8051f_ram_data_runtime();
__iec60730b_bist_step++;
}
else if((__iec60730b_bist_step&0x0F) == 1)
{
checkResult = sh_8051f_ram_xdata_runtime();
__iec60730b_bist_step++;
}
else
__iec60730b_bist_step = 0x40;
EA = 1;
C51 COMPILER V9.01 SH_IEC60730B_8051F_TESTPROC 10/11/2023 14:22:17 PAGE 6
#else
279 __iec60730b_bist_step = 0x40;
280 #endif
281 }
282
283 else if((__iec60730b_bist_step >> 4) == 4)
284 {/************** 4: CHECK CODE ROM **************/
285 #if SH_CHK_FLASH_EN == 1
*** WARNING C322 IN LINE 285 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_flash_runtime();
#endif
288 __iec60730b_bist_step = 0x50;
289 }
290 else if((__iec60730b_bist_step >> 4) == 5)
291 {/************** 5: CHECK STACK **************/
292 #if SH_CHK_STACK_EN == 1
*** WARNING C322 IN LINE 292 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_stack_test();
#endif
295 __iec60730b_bist_step = 0x60;
296 }
297 else if((__iec60730b_bist_step >> 4) == 6)
298 {/************** 6: CHECK CLOCK **************/
299 #if SH_CHK_CLOCK_EN == 1
*** WARNING C322 IN LINE 299 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
EA = 0;
checkResult = sh_8051f_clk_check();
EA = 1;
#endif
304 __iec60730b_bist_step = 0x70;
305 }
306 else if((__iec60730b_bist_step >> 4) == 7)
307 {/************** 7: CHECK AIO **************/
308 #if SH_CHK_AIO_TEST_EN == 1
*** WARNING C322 IN LINE 308 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_aio_test_runtime();
#endif
311 __iec60730b_bist_step = 0x80;
312 }
313 else if((__iec60730b_bist_step >> 4) == 8)
314 {/************** 8: CHECK EEPROM1 **************/
315 #if SH_CHK_EE_EN == 1
*** WARNING C322 IN LINE 315 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_ee1_runtime();
#endif
318 __iec60730b_bist_step = 0x90;
319 }
320 else if((__iec60730b_bist_step >> 4) == 9)
321 {/************** 8: CHECK EEPROM2 **************/
322 #if SH_CHK_EE_EN == 1
*** WARNING C322 IN LINE 322 OF code_classb\iec60730_proc\sh_iec60730b_8051f_testproc.c: unknown identifier
checkResult = sh_8051f_ee2_runtime();
#endif
325 __iec60730b_bist_step = 0x00;
326 }
327 return checkResult;
328 }
C51 COMPILATION COMPLETE. 23 WARNING(S), 1 ERROR(S)