00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #include "config.h"
00047 #include "conf_usb.h"
00048
00049 #ifndef PROD_TEST
00050 # define PROD_TEST DISABLE
00051 #endif
00052
00053
00054 #if (PROD_TEST==ENABLE)
00055
00056 # ifndef __ICCAVR__
00057 # error PROD_TEST feature run only under IAR
00058 # endif
00059
00060 # if TARGET_BOARD != USBKEY
00061 # error PROD_TEST feature run only under USBKEY
00062 # endif
00063
00064 #include "modules/file_system/navigation.h"
00065 #include "modules/control_access/ctrl_access.h"
00066 #include "lib_mcu/flash/flash_lib.h"
00067 #include "lib_system\memory\memory.h"
00068
00069
00070
00071
00072 #define TEST_FLAG_ADDR 0x500
00073
00074
00075
00076
00077
00078
00079 code char g_prd_test At(TEST_FLAG_ADDR);
00080
00081 static void launch_test( void );
00082
00085 void prod_test( void )
00086 {
00087 if( 0x00 != g_prd_test )
00088 return;
00089
00090 launch_test();
00091 while(1);
00092 }
00093
00094 static void launch_test( void )
00095 {
00096 volatile U16 u16_tmp;
00097 U8 flag, save_int;
00098 char name_first_file[] = "USBKEY.tmp";
00099
00100
00101 Joy_init();
00102 Leds_init();
00103 Hwb_button_init();
00104
00105
00106 while( !Is_btn_middle() );
00107 while( !Is_joy_right() );
00108 while( !Is_joy_left() );
00109 while( !Is_joy_up() );
00110 while( !Is_joy_down() );
00111
00112
00113 nav_reset();
00114 if( !nav_drive_set( 0 ) )
00115 return;
00116
00117
00118 memset( fs_g_sector , 0x55 , FS_CACHE_SIZE );
00119 if (CTRL_GOOD != ram_2_memory( 0 , 16+0 , fs_g_sector ))
00120 return;
00121 if (CTRL_GOOD != ram_2_memory( 0 , 16+2 , fs_g_sector ))
00122 return;
00123 memset( fs_g_sector , 0xAA , FS_CACHE_SIZE );
00124 if (CTRL_GOOD != ram_2_memory( 0 , 16+1 , fs_g_sector ))
00125 return;
00126 if (CTRL_GOOD != ram_2_memory( 0 , 16+3 , fs_g_sector ))
00127 return;
00128
00129
00130 if (CTRL_GOOD != memory_2_ram( 0 , 16+0 , fs_g_sector ))
00131 return;
00132 for( u16_tmp=0; u16_tmp<FS_CACHE_SIZE; u16_tmp++) {
00133 if( fs_g_sector[u16_tmp] != 0x55 )
00134 return;
00135 }
00136 if (CTRL_GOOD != memory_2_ram( 0 , 16+2 , fs_g_sector ))
00137 return;
00138 for( u16_tmp=0; u16_tmp<FS_CACHE_SIZE; u16_tmp++) {
00139 if( fs_g_sector[u16_tmp] != 0x55 )
00140 return;
00141 }
00142 if (CTRL_GOOD != memory_2_ram( 0 , 16+1 , fs_g_sector ))
00143 return;
00144 for( u16_tmp=0; u16_tmp<FS_CACHE_SIZE; u16_tmp++) {
00145 if( fs_g_sector[u16_tmp] != 0xAA )
00146 return;
00147 }
00148 if (CTRL_GOOD != memory_2_ram( 0 , 16+3 , fs_g_sector ))
00149 return;
00150 for( u16_tmp=0; u16_tmp<FS_CACHE_SIZE; u16_tmp++) {
00151 if( fs_g_sector[u16_tmp] != 0xAA )
00152 return;
00153 }
00154
00155 if( !nav_drive_format( FS_FORMAT_DEFAULT ) )
00156 return;
00157
00158
00159 if( !nav_file_create(name_first_file ))
00160 return;
00161
00162
00163 if( !flash_lib_check() )
00164 return;
00165 save_int=Get_interrupt_state();
00166 Disable_interrupt();
00167 flag = TRUE;
00168 flash_wr_block( &flag, TEST_FLAG_ADDR, 1 );
00169
00170 if(save_int) { Enable_interrupt(); }
00171
00172
00173 while( 1 )
00174 {
00175
00176 Led1_toggle();
00177 Led2_toggle();
00178 for( u16_tmp=0; u16_tmp<0xFFFF; u16_tmp++ );
00179 }
00180 }
00181
00182 #endif // (PROD_TEST==ENABLE)
00183