382 lines
18 KiB
Plaintext
382 lines
18 KiB
Plaintext
|
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)
|