mbed code for Farrari board
Dependencies: DDRO_Farrari mbed
Fork of DDRO_Farrari by
board_test.cpp
00001 #include "board_test.h" 00002 00003 00004 void mem_test(JTAG &jtag) 00005 { 00006 00007 jtag.PowerupDAP(); 00008 unsigned int base = 0x10000000; 00009 unsigned int size = 2000; 00010 unsigned int* data; 00011 data = new unsigned int[size]; 00012 00013 for(unsigned int i=0; i<size; i++){ 00014 data[i] = i; 00015 } 00016 00017 pc.printf("Performing memWrite\r\n"); 00018 jtag.memWrite(base, data, size); 00019 00020 pc.printf("Checking memWrite\r\n"); 00021 for(unsigned int i=0; i<size; i++){ 00022 unsigned int d = jtag.readMemory(base + i*4); 00023 //pc.printf("MEM[%X] = %X\r\n", i, d); 00024 if(d != i){ 00025 pc.printf("MEMERROR: MEM[%X] = %X\r\n", i, d); 00026 } 00027 } 00028 00029 jtag.writeMemory(base + 4*20, 0xdeadbeef); 00030 00031 pc.printf("Performing memRead\r\n"); 00032 jtag.memRead(base, data, size, true, true); 00033 00034 pc.printf("Mem test done\r\n"); 00035 delete data; 00036 00037 } 00038 00039 void lcd_test() 00040 { 00041 00042 lcd_default(); 00043 wait(1); 00044 00045 lcd_printf("Initial Power On"); 00046 wait(1); 00047 lcd_clear( ); 00048 wait(1); 00049 00050 lcd_goto( LINE4_BEGIN ); 00051 lcd_printf("Line 4"); 00052 wait(1); 00053 lcd_goto( LINE2_BEGIN ); 00054 lcd_printf("Line 2"); 00055 wait(1); 00056 00057 lcd_clear_line( 4); 00058 lcd_home(); 00059 lcd_printf("Line 1"); 00060 lcd_clear(); 00061 wait(1); 00062 00063 lcd_printf("ABCDEF"); 00064 wait(1); 00065 lcd_backspace(); lcd_backspace(); lcd_backspace(); 00066 wait(1); 00067 lcd_cursor_left(); lcd_cursor_left(); lcd_cursor_left(); 00068 lcd_printf("def"); 00069 wait(1); 00070 lcd_cursor_right(); lcd_cursor_right(); lcd_cursor_right(); 00071 lcd_printf("abc"); 00072 wait(1); 00073 lcd_clear(); 00074 wait(1); 00075 00076 lcd_goto( LINE1_BEGIN ); lcd_printf("LINE1"); 00077 lcd_goto( LINE2_BEGIN ); lcd_printf("LINE2"); 00078 lcd_goto( LINE3_BEGIN ); lcd_printf("LINE3"); 00079 lcd_goto( LINE4_BEGIN ); lcd_printf("LINE4"); 00080 wait(1); 00081 00082 int i=0; 00083 while(1) { 00084 lcd_set_contrast( (5*i)%50 ); 00085 lcd_backlight_level( i%8 ); 00086 00087 lcd_shift_right(); wait_ms(50); 00088 lcd_shift_right(); wait_ms(50); 00089 lcd_shift_right(); wait_ms(50); 00090 lcd_shift_right(); wait_ms(50); 00091 lcd_shift_right(); wait_ms(50); 00092 lcd_shift_right(); wait_ms(50); 00093 lcd_shift_right(); wait_ms(50); 00094 00095 lcd_shift_left(); wait_ms(50); 00096 lcd_shift_left(); wait_ms(50); 00097 lcd_shift_left(); wait_ms(50); 00098 lcd_shift_left(); wait_ms(50); 00099 lcd_shift_left(); wait_ms(50); 00100 lcd_shift_left(); wait_ms(50); 00101 lcd_shift_left(); wait_ms(50); 00102 00103 i++; 00104 wait_ms(100); 00105 } 00106 } 00107 00108 00109 void i2ctest(){ 00110 00111 char data[4] = "abc"; 00112 int A = 0; 00113 for (A = 0; A<=0xFF; A++) { 00114 if (lcd.write(A,data,3,false)==0) { 00115 pc.printf (" GOT LCD %X\r\n", A); 00116 } 00117 } 00118 00119 } 00120 00121 void analog_test() 00122 { 00123 00124 power_chan(ADVDD, 0.10); 00125 wait(POWER_UP_TIME); 00126 power_chan(PADVDD, 0.15); 00127 wait(POWER_UP_TIME); 00128 power_chan(DVDD, 0.20); 00129 wait(POWER_UP_TIME); 00130 power_chan(ADVDD2, 0.25); 00131 wait(POWER_UP_TIME); 00132 power_chan(COREVDD, 0.30); 00133 wait(POWER_UP_TIME); 00134 power_chan(DVDD2, 0.35); 00135 wait(POWER_UP_TIME); 00136 power_chan(SENSORVDD, 0.40); 00137 wait(POWER_UP_TIME); 00138 power_chan(SENSORLOWVDD, 0.45); 00139 wait(POWER_UP_TIME); 00140 power_chan(SENSORSTRESSVDD, 0.50); 00141 wait(POWER_UP_TIME); 00142 power_chan(CLOCKVDD, 0.55); 00143 wait(POWER_UP_TIME); 00144 power_chan(MEM1VDD, 0.60); 00145 wait(POWER_UP_TIME); 00146 power_chan(MEM2VDD, 0.65); 00147 wait(POWER_UP_TIME); 00148 power_chan(PLLAVDD, 0.70); 00149 wait(POWER_UP_TIME); 00150 power_chan(RING_OSC_NBIAS, 0.75); 00151 power_indicator = 1; 00152 } 00153 00154 void scan_set_test() 00155 { 00156 00157 rotate_chain(); 00158 rotate_chain(); 00159 int g = get_scan_bits("PLL_LFTUNE"); 00160 pc.printf("initially %d\r\n", g); // should be 0 00161 00162 set_scan_bits("PLL_LFTUNE", 27); 00163 rotate_chain(); 00164 load_chip(); 00165 00166 //load_chain(); 00167 rotate_chain(); 00168 00169 00170 g = get_scan_bits("PLL_LFTUNE"); 00171 pc.printf("then %d\r\n", g); // should be 27 00172 00173 pc.printf("The 13th line of range is %d\r\n", get_binline_by_num("/local/Prange.txt", 13)); 00174 00175 } 00176 00177 void jtag_test() 00178 { 00179 JTAG jtag; 00180 for(char ii=0x0; ii<=0xf; ii++){ 00181 jtag.setIR(ii); 00182 00183 //jtag.leaveState(); 00184 jtag.setState('d'); 00185 00186 int rett = jtag.shiftBits(0xdeadbeef >> 1, 32); 00187 jtag.leaveState(); 00188 pc.printf("ii %x, rett %x\r\n", ii, rett); 00189 00190 } 00191 00192 } 00193 void pll_test() 00194 { 00195 scan_pll(1, 1, 126, 1, 12, 32); 00196 unsigned long long freq = calc_pll_freqs(1, 1, 126, 1, 12, 32); 00197 freq = freq / 1000000; // in MHz 00198 int fMHz = freq; 00199 00200 pc.printf("pll freq: %d MHz", fMHz); 00201 00202 set_scan_bits("use_scan", 1); 00203 set_scan_bits("PLL_RESET", 1); 00204 set_scan_bits("intclk_source", 2); 00205 set_scan_bits("extclk_source", 1); 00206 set_scan_bits("ext_div_by", 10); 00207 rotate_chain(); 00208 load_chip(); 00209 00210 set_scan_bits("PLL_RESET", 0); 00211 rotate_chain(); 00212 load_chip(); 00213 00214 PORESETn = 1; 00215 CORERESETn = 1; 00216 set_scan_bits("RESET_scan", 1); 00217 set_scan_bits("CORERESET_scan", 1); 00218 00219 }
Generated on Wed Jul 27 2022 00:15:18 by
1.7.2
