1 #include <system_def.h>
11 #include <hal_machperiph.h>
16 #include <ul_logreg.h>
18 #include "appl_defs.h"
20 int cmd_do_test_memusage(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
27 snprintf(str,sizeof(str),"memusage maxaddr 0x%08lx\n",(unsigned long)maxaddr);
28 cmd_io_write(cmd_io,str,strlen(str));
33 int cmd_do_test_adc(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
35 printf("ADC: %ld %ld %ld %ld %ld\n",(LPC_ADC->DR[0] & 0xFFF0)>>4,
36 (LPC_ADC->DR[1] & 0xFFF0)>>4,
37 (LPC_ADC->DR[2] & 0xFFF0)>>4,
38 (LPC_ADC->DR[3] & 0xFFF0)>>4,
39 (LPC_ADC->DR[7] & 0xFFF0)>>4);
43 #ifdef APPL_WITH_DISTORE_EEPROM_USER
44 int cmd_do_test_distore(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
46 appl_distore_user_set_check4change();
50 int cmd_do_test_diload(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
52 appl_distore_user_restore();
55 #endif /*APPL_WITH_DISTORE_EEPROM_USER*/
57 int cmd_do_test_loglevel_cb(ul_log_domain_t *domain, void *context)
60 cmd_io_t *cmd_io = (cmd_io_t *)context;
63 snprintf(s,sizeof(s)-1,"%s (%d)\n\r",domain->name, domain->level);
64 cmd_io_puts(cmd_io, s);
68 int cmd_do_test_loglevel(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
74 if(!line||(si_skspace(&line),!*line)) {
75 ul_logreg_for_each_domain(cmd_do_test_loglevel_cb, cmd_io);
77 res=ul_log_domain_arg2levels(line);
80 return res>=0?0:CMDERR_BADPAR;
83 int cmd_do_spimst_blocking(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
88 int spi_chan = (int)(intptr_t)des->info[0];
89 uint8_t *tx_buff = NULL;
90 uint8_t *rx_buff = NULL;
95 if((opchar=cmd_opchar_check(cmd_io,des,param))<0) return opchar;
97 return -CMDERR_OPCHAR;
100 spi_chan=*param[1]-'0';
102 spi_drv = spi_find_drv(NULL, spi_chan);
104 return -CMDERR_BADSUF;
109 if(isdigit((int)*p)){
110 if(si_long(&p,&addr,16)<0) return -CMDERR_BADPAR;
112 if(si_fndsep(&p,"({")<0) return -CMDERR_BADSEP;
114 if((res=si_add_to_arr(&p, (void**)&tx_buff, &len, 16, 1, "})"))<0)
115 return -CMDERR_BADPAR;
121 res = spi_transfer(spi_drv, addr, len, tx_buff, rx_buff);
124 printf("SPI! %02lX ERROR\n",addr);
127 printf("SPI! %02lX ",addr);
129 for(i=0;i<len;i++) printf("%s%02X",i?",":"",tx_buff[i]);
131 for(i=0;i<len;i++) printf("%s%02X",i?",":"",rx_buff[i]);
146 int sdram_access_test(void)
149 unsigned int pattern;
150 size_t ramsz = SDRAM_SIZE;
158 pattern = 0x12abcdef;
159 for (cnt = ramsz/sizeof(*ptr), ptr = (typeof(ptr))SDRAM_BASE; cnt--;) {
161 pattern = pattern + 0x87654321;
165 printf("SDRAM write %d ms\n", (int)(lt_msdiff_t)(actual_msec - tic));
170 pattern = 0x12abcdef;
171 for (cnt = ramsz/sizeof(*ptr), ptr = (typeof(ptr))SDRAM_BASE; cnt--;) {
172 if(*ptr != pattern) {
173 printf("SDRAM error modify at %p (%08x)\n", ptr, *ptr ^ pattern);
177 pattern = pattern + 0x87654321;
181 printf("SDRAM modify %d ms\n", (int)(lt_msdiff_t)(actual_msec - tic));
186 pattern = 0x12abcdef;
187 for (cnt = ramsz/sizeof(*ptr), ptr = (typeof(ptr))SDRAM_BASE; cnt--;) {
188 if(*(ptr++) != ~pattern) {
189 printf("SDRAM error read at %p (%08x)\n", ptr, *ptr ^ pattern);
192 pattern = pattern + 0x87654321;
196 printf("SDRAM read %d ms\n", (int)(lt_msdiff_t)(actual_msec - tic));
202 for (cnt = ramsz/sizeof(*ptr), ptr = (typeof(ptr))SDRAM_BASE; cnt--;) {
207 printf("SDRAM sum %d ms res 0x%08x\n", (int)(lt_msdiff_t)(actual_msec - tic), pattern);
209 for (blksz=1; blksz < 256 ; blksz *= 2) {
214 for (cnt = ramsz/sizeof(*ptr); cnt; cnt -= blksz) {
215 ptr = (typeof(ptr))SDRAM_BASE;
216 //ptr = (typeof(ptr))cmd_do_test_memusage;
217 //ptr = (typeof(ptr))&ptr;
218 for (i = blksz; i--; )
222 printf("SDRAM sum %d blksz %d ms res 0x%08x\n", (int)(lt_msdiff_t)(actual_msec - tic), (int)blksz, pattern);
228 int cmd_do_testsdram(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
233 #endif /*SDRAM_BASE*/
235 cmd_des_t const cmd_des_test_memusage={0, 0,
236 "memusage","report memory usage",cmd_do_test_memusage,
240 cmd_des_t const cmd_des_test_adc={0, 0,
241 "testadc","adc test",cmd_do_test_adc,
245 #ifdef APPL_WITH_DISTORE_EEPROM_USER
246 cmd_des_t const cmd_des_test_distore={0, 0,
247 "testdistore","test DINFO store",cmd_do_test_distore,
251 cmd_des_t const cmd_des_test_diload={0, 0,
252 "testdiload","test DINFO load",cmd_do_test_diload,
255 #endif /*APPL_WITH_DISTORE_EEPROM_USER*/
257 cmd_des_t const cmd_des_test_loglevel={0, 0,
258 "loglevel","select logging level",
259 cmd_do_test_loglevel,{}};
261 cmd_des_t const cmd_des_spimst={0, CDESM_OPCHR|CDESM_WR,
262 "SPIMST","SPI master communication request",
263 cmd_do_spimst_blocking,{(void*)0}};
265 cmd_des_t const cmd_des_spimstx={0, CDESM_OPCHR|CDESM_WR,
266 "SPIMST#","SPI# master communication request",
267 cmd_do_spimst_blocking,{(void*)-1}};
270 cmd_des_t const cmd_des_testsdram={0, 0,
271 "testsdram","test SDRAM",
272 cmd_do_testsdram,{(void*)0}};
273 #endif /*SDRAM_BASE*/
275 cmd_des_t const *const cmd_appl_tests[]={
276 &cmd_des_test_memusage,
278 #ifdef APPL_WITH_DISTORE_EEPROM_USER
279 &cmd_des_test_distore,
280 &cmd_des_test_diload,
281 #endif /*APPL_WITH_DISTORE_EEPROM_USER*/
282 &cmd_des_test_loglevel,
287 #endif /*SDRAM_BASE*/