diff --git a/build/release/bin/l502-BFfirmware0.elf b/build/release/bin/l502-BFfirmware0.elf index 7849c11..781540e 100755 Binary files a/build/release/bin/l502-BFfirmware0.elf and b/build/release/bin/l502-BFfirmware0.elf differ diff --git a/build/release/bin/l502-BFfirmware0.ldr b/build/release/bin/l502-BFfirmware0.ldr index a48c73a..884e623 100644 Binary files a/build/release/bin/l502-BFfirmware0.ldr and b/build/release/bin/l502-BFfirmware0.ldr differ diff --git a/build/release/lst/l502_user_process.lst b/build/release/lst/l502_user_process.lst index 384d3bc..21def1e 100644 --- a/build/release/lst/l502_user_process.lst +++ b/build/release/lst/l502_user_process.lst @@ -1,4 +1,4 @@ -BFIN GAS /tmp/ccG6eBVz.s page 1 +BFIN GAS /tmp/ccBtsGqv.s page 1 1 .file "src/l502_user_process.c"; @@ -8,7 +8,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 5 .Ldebug_info0: 6 .section .debug_line,"",@progbits 7 .Ldebug_line0: - 8 0000 53020000 .text; + 8 0000 5F020000 .text; 8 02000001 8 00000101 8 FB0E0D00 @@ -58,7 +58,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 36:src/l502_user_process.c **** //#define TX_BUFF_SIZE 1024*1024 37:src/l502_user_process.c **** //#define TX_BUFF_SIZE 1000 38:src/l502_user_process.c **** - BFIN GAS /tmp/ccG6eBVz.s page 2 + BFIN GAS /tmp/ccBtsGqv.s page 2 39:src/l502_user_process.c **** #define LFSM_BUFF_SIZE 1000 @@ -118,7 +118,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 93:src/l502_user_process.c **** volatile uint32_t TX_marker[10] = {0xFE00000F,0xFE0000F0, 0xFE000F00, 0xFE00F000, 0xFE0F0000,0xFEF0 94:src/l502_user_process.c **** 95:src/l502_user_process.c **** volatile struct dataprocessor_dypedef{ - BFIN GAS /tmp/ccG6eBVz.s page 3 + BFIN GAS /tmp/ccBtsGqv.s page 3 96:src/l502_user_process.c **** uint8_t mode; @@ -178,7 +178,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 150:src/l502_user_process.c **** 151:src/l502_user_process.c **** В текущей реализации просто запускается передача д 152:src/l502_user_process.c **** - BFIN GAS /tmp/ccG6eBVz.s page 4 + BFIN GAS /tmp/ccBtsGqv.s page 4 153:src/l502_user_process.c **** @param[in] data Указатель на массив с принятыми данными @@ -238,7 +238,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 207:src/l502_user_process.c **** //TX_buff_I = TX_BUFF_SIZE; 208:src/l502_user_process.c **** 209:src/l502_user_process.c **** if (Proc_state.mode == AVG){ - BFIN GAS /tmp/ccG6eBVz.s page 5 + BFIN GAS /tmp/ccBtsGqv.s page 5 210:src/l502_user_process.c **** while(++data_I < size ){ @@ -247,7 +247,7 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 213:src/l502_user_process.c **** uint8_t header = (uint8_t)(word >> 24); 214:src/l502_user_process.c **** if (header == 0x00){ //digital_channel. switches LFSM state machine 215:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; - 216:src/l502_user_process.c **** if (word & 0b1 << 17){ + 216:src/l502_user_process.c **** if (word & (0b1 << 17)){ 217:src/l502_user_process.c **** DY_SYN_2_value = 1; 218:src/l502_user_process.c **** }else{ 219:src/l502_user_process.c **** DY_SYN_2_value = 0; @@ -258,489 +258,489 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 224:src/l502_user_process.c **** Proc_state.average_N ++; 225:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; 226:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_STARTED; - 227:src/l502_user_process.c **** //if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended - 228:src/l502_user_process.c **** if (1){ - 229:src/l502_user_process.c **** Proc_state.AVG_state = FULLY_COMPLETED; - 230:src/l502_user_process.c **** //averaging completed => copy average results to TX_buff and start avg again - 231:src/l502_user_process.c **** TX_buff_I = 0; - 232:src/l502_user_process.c **** for (uint32_t i = 0; ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)); i++){ - 233:src/l502_user_process.c **** // uint32_t i = 0; - 234:src/l502_user_process.c **** // while ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){ - 235:src/l502_user_process.c **** TX_buff[TX_buff_I++] = AVG_buff[i]; - 236:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xB0000000 + Proc_state.average_N; - 237:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xC1000000; - 238:src/l502_user_process.c **** } - 239:src/l502_user_process.c **** - 240:src/l502_user_process.c **** //clear AVG_buff: - 241:src/l502_user_process.c **** for (uint32_t i = 0; i < AVG_BUFF_SIZE; i++ ){ - 242:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; - 243:src/l502_user_process.c **** } - 244:src/l502_user_process.c **** - 245:src/l502_user_process.c **** TX_buff_state = TODO_TX; - 246:src/l502_user_process.c **** - 247:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 248:src/l502_user_process.c **** TX_buff_shadow[i] = TX_buff[i]; - 249:src/l502_user_process.c **** } - 250:src/l502_user_process.c **** hdma_send_req_start(TX_buff_shadow, TX_buff_I, 0); - 251:src/l502_user_process.c **** hdma_send_req_start(TX_marker, 10, 0); - 252:src/l502_user_process.c **** + 227:src/l502_user_process.c **** if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended + 228:src/l502_user_process.c **** Proc_state.average_N = 0; + 229:src/l502_user_process.c **** //if (1){ + 230:src/l502_user_process.c **** Proc_state.AVG_state = FULLY_COMPLETED; + 231:src/l502_user_process.c **** //averaging completed => copy average results to TX_buff and start avg again + 232:src/l502_user_process.c **** TX_buff_I = 0; + 233:src/l502_user_process.c **** for (uint32_t i = 0; ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)); i++){ + 234:src/l502_user_process.c **** // uint32_t i = 0; + 235:src/l502_user_process.c **** // while ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)){ + 236:src/l502_user_process.c **** TX_buff[TX_buff_I++] = AVG_buff[i]; + 237:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xB0000000 + Proc_state.average_N; + 238:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xC1000000; + 239:src/l502_user_process.c **** } + 240:src/l502_user_process.c **** + 241:src/l502_user_process.c **** //clear AVG_buff: + 242:src/l502_user_process.c **** for (uint32_t i = 0; i < AVG_BUFF_SIZE; i++ ){ + 243:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; + 244:src/l502_user_process.c **** } + 245:src/l502_user_process.c **** + 246:src/l502_user_process.c **** TX_buff_state = TODO_TX; + 247:src/l502_user_process.c **** /* + 248:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 249:src/l502_user_process.c **** TX_buff_shadow[i] = TX_buff[i]; + 250:src/l502_user_process.c **** } + 251:src/l502_user_process.c **** hdma_send_req_start(TX_buff_shadow, TX_buff_I, 0); + 252:src/l502_user_process.c **** hdma_send_req_start(TX_marker, 10, 0); 253:src/l502_user_process.c **** - 254:src/l502_user_process.c **** // hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); - 255:src/l502_user_process.c **** //TX_buff_state = TRANSMITTING; - 256:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 257:src/l502_user_process.c **** - 258:src/l502_user_process.c **** - 259:src/l502_user_process.c **** }else{ // - 260:src/l502_user_process.c **** Proc_state.AVG_state = STEP_RUNNING; - 261:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 262:src/l502_user_process.c **** - 263:src/l502_user_process.c **** } - 264:src/l502_user_process.c **** } - 265:src/l502_user_process.c **** - 266:src/l502_user_process.c **** }else if(header == 0xD0){ //first phy channel - BFIN GAS /tmp/ccG6eBVz.s page 6 + 254:src/l502_user_process.c **** + 255:src/l502_user_process.c **** // hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); + 256:src/l502_user_process.c **** //TX_buff_state = TRANSMITTING; + 257:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 258:src/l502_user_process.c **** */ + 259:src/l502_user_process.c **** + 260:src/l502_user_process.c **** }else{ // + 261:src/l502_user_process.c **** Proc_state.AVG_state = STEP_RUNNING; + 262:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 263:src/l502_user_process.c **** + 264:src/l502_user_process.c **** } + 265:src/l502_user_process.c **** } + 266:src/l502_user_process.c **** + BFIN GAS /tmp/ccBtsGqv.s page 6 - 267:src/l502_user_process.c **** // if (Proc_state.AVG_state == STEP_RUNNING){ - 268:src/l502_user_process.c **** // if (Proc_state.LFSM_state == CYCLE_STARTED){ - 269:src/l502_user_process.c **** if (1){ - 270:src/l502_user_process.c **** if (1){ - 271:src/l502_user_process.c **** // AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | (0x00FFFFFF & (AVG_buff[Proc_state.AVG - 272:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | val; - 273:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000; - 274:src/l502_user_process.c **** if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){ - 275:src/l502_user_process.c **** Proc_state.AVG_state = STEP_COMPLETED; - 276:src/l502_user_process.c **** } - 277:src/l502_user_process.c **** } - 278:src/l502_user_process.c **** } - 279:src/l502_user_process.c **** } - 280:src/l502_user_process.c **** } - 281:src/l502_user_process.c **** } - 282:src/l502_user_process.c **** - 283:src/l502_user_process.c **** + 267:src/l502_user_process.c **** }else if(header == 0xD0){ //first phy channel + 268:src/l502_user_process.c **** // if (Proc_state.AVG_state == STEP_RUNNING){ + 269:src/l502_user_process.c **** // if (Proc_state.LFSM_state == CYCLE_STARTED){ + 270:src/l502_user_process.c **** if (1){ + 271:src/l502_user_process.c **** if (1){ + 272:src/l502_user_process.c **** // AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | (0x00FFFFFF & (AVG_buff[Proc_state.AVG + 273:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0x + 274:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000; + 275:src/l502_user_process.c **** Proc_state.AVG_buff_I++; + 276:src/l502_user_process.c **** if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){ + 277:src/l502_user_process.c **** Proc_state.AVG_state = STEP_COMPLETED; + 278:src/l502_user_process.c **** } + 279:src/l502_user_process.c **** } + 280:src/l502_user_process.c **** } + 281:src/l502_user_process.c **** } + 282:src/l502_user_process.c **** } + 283:src/l502_user_process.c **** } 284:src/l502_user_process.c **** 285:src/l502_user_process.c **** - 286:src/l502_user_process.c **** /* - 287:src/l502_user_process.c **** if (Proc_state.mode == AVG){ - 288:src/l502_user_process.c **** data_I = 0; - 289:src/l502_user_process.c **** //TX_buff_I = 0; - 290:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 291:src/l502_user_process.c **** if (Proc_state.AVG_buff_active == A){ - 292:src/l502_user_process.c **** while((data_I < size )&& (Proc_state.AVG_buff_I < (AVG_BUFF_SIZE - 10))){ - 293:src/l502_user_process.c **** uint32_t word = data[data_I]; - 294:src/l502_user_process.c **** //uint32_t avg_word = AVG_buff_A[Proc_state.AVG_buff_I++]; - 295:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = (avg_word & 0x007FFFFF) + (word & 0x007FFFFF); - 296:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (word & 0x00FFFFFF); - 297:src/l502_user_process.c **** AVG_buff_A[Proc_state.AVG_buff_I] = word; - 298:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I++] = data[data_I++]; - 299:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = data[data_I]; - 300:src/l502_user_process.c **** //uint32_t word = data[data_I]; - 301:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = word; - 302:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); - 303:src/l502_user_process.c **** - 304:src/l502_user_process.c **** Proc_state.AVG_buff_I++; - 305:src/l502_user_process.c **** data_I++; - 306:src/l502_user_process.c **** } - 307:src/l502_user_process.c **** //Proc_state.AVG_buff_I++; - 308:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); - 309:src/l502_user_process.c **** //data_I++; - 310:src/l502_user_process.c **** //Proc_state.AVG_buff_I = 0; - 311:src/l502_user_process.c **** }else{ - 312:src/l502_user_process.c **** while((data_I < size )&& (Proc_state.AVG_buff_I < (AVG_BUFF_SIZE - 10))){ - 313:src/l502_user_process.c **** //uint32_t word = data[data_I]; - 314:src/l502_user_process.c **** AVG_buff_B[Proc_state.AVG_buff_I] = 0xDE000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); - 315:src/l502_user_process.c **** Proc_state.AVG_buff_I++; - 316:src/l502_user_process.c **** data_I++; - 317:src/l502_user_process.c **** } - 318:src/l502_user_process.c **** // Proc_state.AVG_buff_I++; - 319:src/l502_user_process.c **** // AVG_buff_B[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); - 320:src/l502_user_process.c **** - 321:src/l502_user_process.c **** } + 286:src/l502_user_process.c **** + 287:src/l502_user_process.c **** + 288:src/l502_user_process.c **** /* + 289:src/l502_user_process.c **** if (Proc_state.mode == AVG){ + 290:src/l502_user_process.c **** data_I = 0; + 291:src/l502_user_process.c **** //TX_buff_I = 0; + 292:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 293:src/l502_user_process.c **** if (Proc_state.AVG_buff_active == A){ + 294:src/l502_user_process.c **** while((data_I < size )&& (Proc_state.AVG_buff_I < (AVG_BUFF_SIZE - 10))){ + 295:src/l502_user_process.c **** uint32_t word = data[data_I]; + 296:src/l502_user_process.c **** //uint32_t avg_word = AVG_buff_A[Proc_state.AVG_buff_I++]; + 297:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = (avg_word & 0x007FFFFF) + (word & 0x007FFFFF); + 298:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (word & 0x00FFFFFF); + 299:src/l502_user_process.c **** AVG_buff_A[Proc_state.AVG_buff_I] = word; + 300:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I++] = data[data_I++]; + 301:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = data[data_I]; + 302:src/l502_user_process.c **** //uint32_t word = data[data_I]; + 303:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = word; + 304:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); + 305:src/l502_user_process.c **** + 306:src/l502_user_process.c **** Proc_state.AVG_buff_I++; + 307:src/l502_user_process.c **** data_I++; + 308:src/l502_user_process.c **** } + 309:src/l502_user_process.c **** //Proc_state.AVG_buff_I++; + 310:src/l502_user_process.c **** //AVG_buff_A[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); + 311:src/l502_user_process.c **** //data_I++; + 312:src/l502_user_process.c **** //Proc_state.AVG_buff_I = 0; + 313:src/l502_user_process.c **** }else{ + 314:src/l502_user_process.c **** while((data_I < size )&& (Proc_state.AVG_buff_I < (AVG_BUFF_SIZE - 10))){ + 315:src/l502_user_process.c **** //uint32_t word = data[data_I]; + 316:src/l502_user_process.c **** AVG_buff_B[Proc_state.AVG_buff_I] = 0xDE000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); + 317:src/l502_user_process.c **** Proc_state.AVG_buff_I++; + 318:src/l502_user_process.c **** data_I++; + 319:src/l502_user_process.c **** } + 320:src/l502_user_process.c **** // Proc_state.AVG_buff_I++; + 321:src/l502_user_process.c **** // AVG_buff_B[Proc_state.AVG_buff_I] = 0xDD000000 | (Proc_state.AVG_buff_I & 0x00FFFFFF); 322:src/l502_user_process.c **** - 323:src/l502_user_process.c **** - BFIN GAS /tmp/ccG6eBVz.s page 7 + 323:src/l502_user_process.c **** } + BFIN GAS /tmp/ccBtsGqv.s page 7 - 324:src/l502_user_process.c **** } - 325:src/l502_user_process.c **** */ - 326:src/l502_user_process.c **** - 327:src/l502_user_process.c **** /*/ + 324:src/l502_user_process.c **** + 325:src/l502_user_process.c **** + 326:src/l502_user_process.c **** } + 327:src/l502_user_process.c **** */ 328:src/l502_user_process.c **** - 329:src/l502_user_process.c **** if (Proc_state.mode == AVG){ - 330:src/l502_user_process.c **** uint32_t data_I = 0; - 331:src/l502_user_process.c **** while((data_I < size )&& (TX_buff_I < (TX_BUFF_SIZE - 1))){ - 332:src/l502_user_process.c **** // TX_buff[TX_buff_I++] = data[data_I++]; - 333:src/l502_user_process.c **** uint32_t word = data[data_I++]; - 334:src/l502_user_process.c **** TX_buff[TX_buff_I++] = (word & 0x00FFFFFF);// | 0xDE000000; - 335:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((word & 0x00FFFFFF) | 0xDE000000); - 336:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xADEFDEED; - 337:src/l502_user_process.c **** } - 338:src/l502_user_process.c **** } - 339:src/l502_user_process.c **** //*/ - 340:src/l502_user_process.c **** - 341:src/l502_user_process.c **** //* + 329:src/l502_user_process.c **** /*/ + 330:src/l502_user_process.c **** + 331:src/l502_user_process.c **** if (Proc_state.mode == AVG){ + 332:src/l502_user_process.c **** uint32_t data_I = 0; + 333:src/l502_user_process.c **** while((data_I < size )&& (TX_buff_I < (TX_BUFF_SIZE - 1))){ + 334:src/l502_user_process.c **** // TX_buff[TX_buff_I++] = data[data_I++]; + 335:src/l502_user_process.c **** uint32_t word = data[data_I++]; + 336:src/l502_user_process.c **** TX_buff[TX_buff_I++] = (word & 0x00FFFFFF);// | 0xDE000000; + 337:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((word & 0x00FFFFFF) | 0xDE000000); + 338:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xADEFDEED; + 339:src/l502_user_process.c **** } + 340:src/l502_user_process.c **** } + 341:src/l502_user_process.c **** //*/ 342:src/l502_user_process.c **** - 343:src/l502_user_process.c **** - 344:src/l502_user_process.c **** // if (Proc_state.mode == AVG){ - 345:src/l502_user_process.c **** //TX_buff_I = 10; - 346:src/l502_user_process.c **** /* - 347:src/l502_user_process.c **** uint32_t data_I = 0; - 348:src/l502_user_process.c **** uint8_t new_cycle_started = 0; - 349:src/l502_user_process.c **** uint8_t cycle_cont = 1; - 350:src/l502_user_process.c **** while ((data_I < size) && (Proc_state.AVG_buff_I < AVG_BUFF_SIZE) && cycle_cont ){ - 351:src/l502_user_process.c **** uint32_t word = data[data_I]; - 352:src/l502_user_process.c **** uint32_t val = word & 0x00FFFFFF; - 353:src/l502_user_process.c **** uint8_t header = (uint8_t)(word >> 24); - 354:src/l502_user_process.c **** */ - 355:src/l502_user_process.c **** /* - 356:src/l502_user_process.c **** if (header == 0x00){ - 357:src/l502_user_process.c **** Proc_state.digital_word_prev = Proc_state.digital_word_curr; - 358:src/l502_user_process.c **** Proc_state.digital_word_curr = word; - 359:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; - 360:src/l502_user_process.c **** if (word & 0b1 << 17){ - 361:src/l502_user_process.c **** DY_SYN_2_value = 1; - 362:src/l502_user_process.c **** }else{ - 363:src/l502_user_process.c **** DY_SYN_2_value = 0; - 364:src/l502_user_process.c **** } - 365:src/l502_user_process.c **** - 366:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started - 367:src/l502_user_process.c **** new_cycle_started = 1; - 368:src/l502_user_process.c **** } - 369:src/l502_user_process.c **** } - 370:src/l502_user_process.c **** //*/ - 371:src/l502_user_process.c **** /* - 372:src/l502_user_process.c **** if (header == 0xD0){ //it`s first channel - 373:src/l502_user_process.c **** if (new_cycle_started){ - 374:src/l502_user_process.c **** new_cycle_started = 0; - 375:src/l502_user_process.c **** ++Proc_state.average_N; - 376:src/l502_user_process.c **** if (Proc_state.average_N >= Proc_state.average_N_max){ - 377:src/l502_user_process.c **** Proc_state.mode == AVG_DONE; - 378:src/l502_user_process.c **** cycle_cont = 0; //break averaging cycle - 379:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 380:src/l502_user_process.c **** } - BFIN GAS /tmp/ccG6eBVz.s page 8 + 343:src/l502_user_process.c **** //* + 344:src/l502_user_process.c **** + 345:src/l502_user_process.c **** + 346:src/l502_user_process.c **** // if (Proc_state.mode == AVG){ + 347:src/l502_user_process.c **** //TX_buff_I = 10; + 348:src/l502_user_process.c **** /* + 349:src/l502_user_process.c **** uint32_t data_I = 0; + 350:src/l502_user_process.c **** uint8_t new_cycle_started = 0; + 351:src/l502_user_process.c **** uint8_t cycle_cont = 1; + 352:src/l502_user_process.c **** while ((data_I < size) && (Proc_state.AVG_buff_I < AVG_BUFF_SIZE) && cycle_cont ){ + 353:src/l502_user_process.c **** uint32_t word = data[data_I]; + 354:src/l502_user_process.c **** uint32_t val = word & 0x00FFFFFF; + 355:src/l502_user_process.c **** uint8_t header = (uint8_t)(word >> 24); + 356:src/l502_user_process.c **** */ + 357:src/l502_user_process.c **** /* + 358:src/l502_user_process.c **** if (header == 0x00){ + 359:src/l502_user_process.c **** Proc_state.digital_word_prev = Proc_state.digital_word_curr; + 360:src/l502_user_process.c **** Proc_state.digital_word_curr = word; + 361:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; + 362:src/l502_user_process.c **** if (word & 0b1 << 17){ + 363:src/l502_user_process.c **** DY_SYN_2_value = 1; + 364:src/l502_user_process.c **** }else{ + 365:src/l502_user_process.c **** DY_SYN_2_value = 0; + 366:src/l502_user_process.c **** } + 367:src/l502_user_process.c **** + 368:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started + 369:src/l502_user_process.c **** new_cycle_started = 1; + 370:src/l502_user_process.c **** } + 371:src/l502_user_process.c **** } + 372:src/l502_user_process.c **** //*/ + 373:src/l502_user_process.c **** /* + 374:src/l502_user_process.c **** if (header == 0xD0){ //it`s first channel + 375:src/l502_user_process.c **** if (new_cycle_started){ + 376:src/l502_user_process.c **** new_cycle_started = 0; + 377:src/l502_user_process.c **** ++Proc_state.average_N; + 378:src/l502_user_process.c **** if (Proc_state.average_N >= Proc_state.average_N_max){ + 379:src/l502_user_process.c **** Proc_state.mode == AVG_DONE; + 380:src/l502_user_process.c **** cycle_cont = 0; //break averaging cycle + BFIN GAS /tmp/ccBtsGqv.s page 8 - 381:src/l502_user_process.c **** }else{ - 382:src/l502_user_process.c **** if (Proc_state.AVG_buff_I < AVG_BUFF_SIZE){ - 383:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] =(word & 0x00FFFFFF);// | 0xDE000000; - 384:src/l502_user_process.c **** //uint32_t tmp = AVG_buff[Proc_state.AVG_buff_I]; - 385:src/l502_user_process.c **** //tmp += val; - 386:src/l502_user_process.c **** //tmp &= 0x0FFFFFFF; - 387:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = tmp | (0x40000000 & 0xF0000000); //set header (first 4 bit - 388:src/l502_user_process.c **** - 389:src/l502_user_process.c **** Proc_state.AVG_buff_I++; - 390:src/l502_user_process.c **** } - 391:src/l502_user_process.c **** } - 392:src/l502_user_process.c **** } - 393:src/l502_user_process.c **** data_I++; - 394:src/l502_user_process.c **** //*/ - 395:src/l502_user_process.c **** - 396:src/l502_user_process.c **** // AVG_buff[Proc_state.AVG_buff_I] = 0xDDDDDDDD; + 381:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 382:src/l502_user_process.c **** } + 383:src/l502_user_process.c **** }else{ + 384:src/l502_user_process.c **** if (Proc_state.AVG_buff_I < AVG_BUFF_SIZE){ + 385:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] =(word & 0x00FFFFFF);// | 0xDE000000; + 386:src/l502_user_process.c **** //uint32_t tmp = AVG_buff[Proc_state.AVG_buff_I]; + 387:src/l502_user_process.c **** //tmp += val; + 388:src/l502_user_process.c **** //tmp &= 0x0FFFFFFF; + 389:src/l502_user_process.c **** //AVG_buff[Proc_state.AVG_buff_I] = tmp | (0x40000000 & 0xF0000000); //set header (first 4 bit + 390:src/l502_user_process.c **** + 391:src/l502_user_process.c **** Proc_state.AVG_buff_I++; + 392:src/l502_user_process.c **** } + 393:src/l502_user_process.c **** } + 394:src/l502_user_process.c **** } + 395:src/l502_user_process.c **** data_I++; + 396:src/l502_user_process.c **** //*/ 397:src/l502_user_process.c **** - 398:src/l502_user_process.c **** + 398:src/l502_user_process.c **** // AVG_buff[Proc_state.AVG_buff_I] = 0xDDDDDDDD; 399:src/l502_user_process.c **** - 400:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = data[data_I]; - 401:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xEEEEEEEE; - 402:src/l502_user_process.c **** // data_I++; - 403:src/l502_user_process.c **** // Proc_state.AVG_buff_I++; - 404:src/l502_user_process.c **** - 405:src/l502_user_process.c **** //} + 400:src/l502_user_process.c **** + 401:src/l502_user_process.c **** + 402:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = data[data_I]; + 403:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xEEEEEEEE; + 404:src/l502_user_process.c **** // data_I++; + 405:src/l502_user_process.c **** // Proc_state.AVG_buff_I++; 406:src/l502_user_process.c **** - 407:src/l502_user_process.c **** - 408:src/l502_user_process.c **** // if (Proc_state.AVG_buff_I == AVG_BUFF_SIZE){ - 409:src/l502_user_process.c **** /* if (Proc_state.AVG_buff_I >= 10){ - 410:src/l502_user_process.c **** Proc_state.AVG_buff_I = 10; - 411:src/l502_user_process.c **** Proc_state.mode == AVG_DONE; - 412:src/l502_user_process.c **** } - 413:src/l502_user_process.c **** */ - 414:src/l502_user_process.c **** // } - 415:src/l502_user_process.c **** /* - 416:src/l502_user_process.c **** if(Proc_state.mode == AVG_DONE){ //TODO: - 417:src/l502_user_process.c **** if (Proc_state.TX_buff_state == 0){ - 418:src/l502_user_process.c **** Proc_state.TX_buff_state = 1; //0 --ready, 1 -- filling, 2 -- ready to send - 419:src/l502_user_process.c **** // Proc_state.AVG_buff_state = 1; //0 -- ready, 1 -- blocked, - 420:src/l502_user_process.c **** uint32_t max_I = TX_BUFF_SIZE; - 421:src/l502_user_process.c **** if (max_I > AVG_BUFF_SIZE){ - 422:src/l502_user_process.c **** max_I = AVG_BUFF_SIZE; - 423:src/l502_user_process.c **** } - 424:src/l502_user_process.c **** for (uint32_t I = 0; I < max_I; ++I){ - 425:src/l502_user_process.c **** if (TX_buff_I < TX_BUFF_SIZE){ - 426:src/l502_user_process.c **** ++TX_buff_I; - 427:src/l502_user_process.c **** } - 428:src/l502_user_process.c **** TX_buff[TX_buff_I] = AVG_buff[I]; - 429:src/l502_user_process.c **** AVG_buff[I] = 0; - 430:src/l502_user_process.c **** } - 431:src/l502_user_process.c **** Proc_state.TX_buff_state = 2; //0 --ready, 1 -- filling, 2 -- ready to send - 432:src/l502_user_process.c **** } - 433:src/l502_user_process.c **** Proc_state.mode = Proc_state.mode_next; - 434:src/l502_user_process.c **** } - 435:src/l502_user_process.c **** //*/ - 436:src/l502_user_process.c **** - 437:src/l502_user_process.c **** - BFIN GAS /tmp/ccG6eBVz.s page 9 + 407:src/l502_user_process.c **** //} + 408:src/l502_user_process.c **** + 409:src/l502_user_process.c **** + 410:src/l502_user_process.c **** // if (Proc_state.AVG_buff_I == AVG_BUFF_SIZE){ + 411:src/l502_user_process.c **** /* if (Proc_state.AVG_buff_I >= 10){ + 412:src/l502_user_process.c **** Proc_state.AVG_buff_I = 10; + 413:src/l502_user_process.c **** Proc_state.mode == AVG_DONE; + 414:src/l502_user_process.c **** } + 415:src/l502_user_process.c **** */ + 416:src/l502_user_process.c **** // } + 417:src/l502_user_process.c **** /* + 418:src/l502_user_process.c **** if(Proc_state.mode == AVG_DONE){ //TODO: + 419:src/l502_user_process.c **** if (Proc_state.TX_buff_state == 0){ + 420:src/l502_user_process.c **** Proc_state.TX_buff_state = 1; //0 --ready, 1 -- filling, 2 -- ready to send + 421:src/l502_user_process.c **** // Proc_state.AVG_buff_state = 1; //0 -- ready, 1 -- blocked, + 422:src/l502_user_process.c **** uint32_t max_I = TX_BUFF_SIZE; + 423:src/l502_user_process.c **** if (max_I > AVG_BUFF_SIZE){ + 424:src/l502_user_process.c **** max_I = AVG_BUFF_SIZE; + 425:src/l502_user_process.c **** } + 426:src/l502_user_process.c **** for (uint32_t I = 0; I < max_I; ++I){ + 427:src/l502_user_process.c **** if (TX_buff_I < TX_BUFF_SIZE){ + 428:src/l502_user_process.c **** ++TX_buff_I; + 429:src/l502_user_process.c **** } + 430:src/l502_user_process.c **** TX_buff[TX_buff_I] = AVG_buff[I]; + 431:src/l502_user_process.c **** AVG_buff[I] = 0; + 432:src/l502_user_process.c **** } + 433:src/l502_user_process.c **** Proc_state.TX_buff_state = 2; //0 --ready, 1 -- filling, 2 -- ready to send + 434:src/l502_user_process.c **** } + 435:src/l502_user_process.c **** Proc_state.mode = Proc_state.mode_next; + 436:src/l502_user_process.c **** } + 437:src/l502_user_process.c **** //*/ + BFIN GAS /tmp/ccBtsGqv.s page 9 438:src/l502_user_process.c **** 439:src/l502_user_process.c **** 440:src/l502_user_process.c **** - 441:src/l502_user_process.c **** /* - 442:src/l502_user_process.c **** uint32_t radar_word_I = 0; - 443:src/l502_user_process.c **** - 444:src/l502_user_process.c **** //uint32_t TX_buff_I = 0; - 445:src/l502_user_process.c **** uint32_t word_prev = 0; - 446:src/l502_user_process.c **** uint32_t digital_word_prev = 0; - 447:src/l502_user_process.c **** - 448:src/l502_user_process.c **** + 441:src/l502_user_process.c **** + 442:src/l502_user_process.c **** + 443:src/l502_user_process.c **** /* + 444:src/l502_user_process.c **** uint32_t radar_word_I = 0; + 445:src/l502_user_process.c **** + 446:src/l502_user_process.c **** //uint32_t TX_buff_I = 0; + 447:src/l502_user_process.c **** uint32_t word_prev = 0; + 448:src/l502_user_process.c **** uint32_t digital_word_prev = 0; 449:src/l502_user_process.c **** 450:src/l502_user_process.c **** - 451:src/l502_user_process.c **** for (int data_I = 0; (data_I < size) && (TX_buff_I < TX_BUFF_SIZE); ++data_I){ - 452:src/l502_user_process.c **** uint32_t word = data[data_I]; - 453:src/l502_user_process.c **** uint32_t val = word & 0x00FFFFFF; - 454:src/l502_user_process.c **** uint8_t header = (uint8_t)(word >> 24); - 455:src/l502_user_process.c **** //11010000 - 456:src/l502_user_process.c **** if (((header & 0b10000000) == 0b10000000)){ //it`s ADC word - 457:src/l502_user_process.c **** if (header == 0XD0){ //phy channel № 1 in common mode - 458:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_ON) << 24) & val; - 459:src/l502_user_process.c **** TX_buff[TX_buff_I++] = 0xD0ADEFEA; - 460:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = word; - 461:src/l502_user_process.c **** - 462:src/l502_user_process.c **** }else if (header == 0xD1){//phy channel № 2 in common mode - 463:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; - 464:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_OFF) << 24) & val; - 465:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xD0ADEFEB; - 466:src/l502_user_process.c **** }else{ - 467:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = word; - 468:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; - 469:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xD0AAAAAA; - 470:src/l502_user_process.c **** } - 471:src/l502_user_process.c **** - 472:src/l502_user_process.c **** - 473:src/l502_user_process.c **** } else if ( header == 0b00000000){ //it`s digital - 474:src/l502_user_process.c **** //if ((word & 0x2200) == 0x2200){ - 475:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; - 476:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xAD000000; - 477:src/l502_user_process.c **** - 478:src/l502_user_process.c **** + 451:src/l502_user_process.c **** + 452:src/l502_user_process.c **** + 453:src/l502_user_process.c **** for (int data_I = 0; (data_I < size) && (TX_buff_I < TX_BUFF_SIZE); ++data_I){ + 454:src/l502_user_process.c **** uint32_t word = data[data_I]; + 455:src/l502_user_process.c **** uint32_t val = word & 0x00FFFFFF; + 456:src/l502_user_process.c **** uint8_t header = (uint8_t)(word >> 24); + 457:src/l502_user_process.c **** //11010000 + 458:src/l502_user_process.c **** if (((header & 0b10000000) == 0b10000000)){ //it`s ADC word + 459:src/l502_user_process.c **** if (header == 0XD0){ //phy channel № 1 in common mode + 460:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_ON) << 24) & val; + 461:src/l502_user_process.c **** TX_buff[TX_buff_I++] = 0xD0ADEFEA; + 462:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = word; + 463:src/l502_user_process.c **** + 464:src/l502_user_process.c **** }else if (header == 0xD1){//phy channel № 2 in common mode + 465:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; + 466:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = ((0b01100000 & LFSM_val_OFF) << 24) & val; + 467:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xD0ADEFEB; + 468:src/l502_user_process.c **** }else{ + 469:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = word; + 470:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; + 471:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xD0AAAAAA; + 472:src/l502_user_process.c **** } + 473:src/l502_user_process.c **** + 474:src/l502_user_process.c **** + 475:src/l502_user_process.c **** } else if ( header == 0b00000000){ //it`s digital + 476:src/l502_user_process.c **** //if ((word & 0x2200) == 0x2200){ + 477:src/l502_user_process.c **** TX_buff[TX_buff_I++] = word; + 478:src/l502_user_process.c **** //TX_buff[TX_buff_I++] = 0xAD000000; 479:src/l502_user_process.c **** - 480:src/l502_user_process.c **** //detect rise on DI_SYN2 -- start of chirp - 481:src/l502_user_process.c **** if (word & 0b1 << 17){ - 482:src/l502_user_process.c **** DY_SYN_2_value = 1; - 483:src/l502_user_process.c **** }else{ - 484:src/l502_user_process.c **** DY_SYN_2_value = 0; - 485:src/l502_user_process.c **** } - 486:src/l502_user_process.c **** - 487:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ - 488:src/l502_user_process.c **** TX_buff[TX_buff_I++] = 0xAD000000; - 489:src/l502_user_process.c **** } - 490:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; - 491:src/l502_user_process.c **** - 492:src/l502_user_process.c **** digital_word_prev = word; - 493:src/l502_user_process.c **** } else{ - 494:src/l502_user_process.c **** // TX_buff[TX_buff_I++] = word; - BFIN GAS /tmp/ccG6eBVz.s page 10 + 480:src/l502_user_process.c **** + 481:src/l502_user_process.c **** + 482:src/l502_user_process.c **** //detect rise on DI_SYN2 -- start of chirp + 483:src/l502_user_process.c **** if (word & 0b1 << 17){ + 484:src/l502_user_process.c **** DY_SYN_2_value = 1; + 485:src/l502_user_process.c **** }else{ + 486:src/l502_user_process.c **** DY_SYN_2_value = 0; + 487:src/l502_user_process.c **** } + 488:src/l502_user_process.c **** + 489:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ + 490:src/l502_user_process.c **** TX_buff[TX_buff_I++] = 0xAD000000; + 491:src/l502_user_process.c **** } + 492:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; + 493:src/l502_user_process.c **** + 494:src/l502_user_process.c **** digital_word_prev = word; + BFIN GAS /tmp/ccBtsGqv.s page 10 - 495:src/l502_user_process.c **** } - 496:src/l502_user_process.c **** word_prev = word; - 497:src/l502_user_process.c **** - 498:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ - 499:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ + 495:src/l502_user_process.c **** } else{ + 496:src/l502_user_process.c **** // TX_buff[TX_buff_I++] = word; + 497:src/l502_user_process.c **** } + 498:src/l502_user_process.c **** word_prev = word; + 499:src/l502_user_process.c **** 500:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ 501:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ 502:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ - 503:src/l502_user_process.c **** - 504:src/l502_user_process.c **** } - 505:src/l502_user_process.c **** */ - 506:src/l502_user_process.c **** - 507:src/l502_user_process.c **** //stream_in_buf_free(size); + 503:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ + 504:src/l502_user_process.c **** // }else if ((header & 0b00000000) == ){ + 505:src/l502_user_process.c **** + 506:src/l502_user_process.c **** } + 507:src/l502_user_process.c **** */ 508:src/l502_user_process.c **** - 509:src/l502_user_process.c **** /* + 509:src/l502_user_process.c **** //stream_in_buf_free(size); 510:src/l502_user_process.c **** - 511:src/l502_user_process.c **** //int i = 0; - 512:src/l502_user_process.c **** //uint8_t - 513:src/l502_user_process.c **** //while - 514:src/l502_user_process.c **** - 515:src/l502_user_process.c **** for (int i = 0; i < LFSM_DATALEN; ++i){ - 516:src/l502_user_process.c **** uint32_t msg; - 517:src/l502_user_process.c **** if (i % 2){ - 518:src/l502_user_process.c **** msg = (LFSM_val_ON << 24) + data[i]; - 519:src/l502_user_process.c **** }else{ - 520:src/l502_user_process.c **** msg = (LFSM_val_OFF << 24) + data[i]; - 521:src/l502_user_process.c **** } - 522:src/l502_user_process.c **** LFSM_data[i] = msg; - 523:src/l502_user_process.c **** } - 524:src/l502_user_process.c **** - 525:src/l502_user_process.c **** */ - 526:src/l502_user_process.c **** if (hdma_send_req_rdy()) { - 527:src/l502_user_process.c **** - 528:src/l502_user_process.c **** //streams_cnt[0] - 529:src/l502_user_process.c **** /* - 530:src/l502_user_process.c **** if (Proc_state.TX_buff_state == 2){ - 531:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); - 532:src/l502_user_process.c **** }else if(0){ - 533:src/l502_user_process.c **** - 534:src/l502_user_process.c **** }else{ - 535:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_buff_I, 0); - 536:src/l502_user_process.c **** TX_buff_I = 0; - 537:src/l502_user_process.c **** //hdma_send_req_start(data, size, 0); - 538:src/l502_user_process.c **** } - 539:src/l502_user_process.c **** */ - 540:src/l502_user_process.c **** - 541:src/l502_user_process.c **** /* - 542:src/l502_user_process.c **** if (Proc_state.mode == AVG_DONE){ - 543:src/l502_user_process.c **** - 544:src/l502_user_process.c **** uint32_t send_size = Proc_state.AVG_buff_I; - 545:src/l502_user_process.c **** // uint32_t send_size = AVG_BUFF_SIZE; - 546:src/l502_user_process.c **** hdma_send_req_start(AVG_buff, send_size, 0); - 547:src/l502_user_process.c **** Proc_state.mode = AVG; - 548:src/l502_user_process.c **** return send_size; - 549:src/l502_user_process.c **** } - 550:src/l502_user_process.c **** //*/ - 551:src/l502_user_process.c **** /* - BFIN GAS /tmp/ccG6eBVz.s page 11 + 511:src/l502_user_process.c **** /* + 512:src/l502_user_process.c **** + 513:src/l502_user_process.c **** //int i = 0; + 514:src/l502_user_process.c **** //uint8_t + 515:src/l502_user_process.c **** //while + 516:src/l502_user_process.c **** + 517:src/l502_user_process.c **** for (int i = 0; i < LFSM_DATALEN; ++i){ + 518:src/l502_user_process.c **** uint32_t msg; + 519:src/l502_user_process.c **** if (i % 2){ + 520:src/l502_user_process.c **** msg = (LFSM_val_ON << 24) + data[i]; + 521:src/l502_user_process.c **** }else{ + 522:src/l502_user_process.c **** msg = (LFSM_val_OFF << 24) + data[i]; + 523:src/l502_user_process.c **** } + 524:src/l502_user_process.c **** LFSM_data[i] = msg; + 525:src/l502_user_process.c **** } + 526:src/l502_user_process.c **** + 527:src/l502_user_process.c **** */ + 528:src/l502_user_process.c **** if (hdma_send_req_rdy()) { + 529:src/l502_user_process.c **** + 530:src/l502_user_process.c **** //streams_cnt[0] + 531:src/l502_user_process.c **** /* + 532:src/l502_user_process.c **** if (Proc_state.TX_buff_state == 2){ + 533:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); + 534:src/l502_user_process.c **** }else if(0){ + 535:src/l502_user_process.c **** + 536:src/l502_user_process.c **** }else{ + 537:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_buff_I, 0); + 538:src/l502_user_process.c **** TX_buff_I = 0; + 539:src/l502_user_process.c **** //hdma_send_req_start(data, size, 0); + 540:src/l502_user_process.c **** } + 541:src/l502_user_process.c **** */ + 542:src/l502_user_process.c **** + 543:src/l502_user_process.c **** /* + 544:src/l502_user_process.c **** if (Proc_state.mode == AVG_DONE){ + 545:src/l502_user_process.c **** + 546:src/l502_user_process.c **** uint32_t send_size = Proc_state.AVG_buff_I; + 547:src/l502_user_process.c **** // uint32_t send_size = AVG_BUFF_SIZE; + 548:src/l502_user_process.c **** hdma_send_req_start(AVG_buff, send_size, 0); + 549:src/l502_user_process.c **** Proc_state.mode = AVG; + 550:src/l502_user_process.c **** return send_size; + 551:src/l502_user_process.c **** } + BFIN GAS /tmp/ccBtsGqv.s page 11 - 552:src/l502_user_process.c **** if (Proc_state.mode == AVG){ - 553:src/l502_user_process.c **** send_size = Proc_state.AVG_buff_I; - 554:src/l502_user_process.c **** //send_size = TX_buff_I; - 555:src/l502_user_process.c **** //send_size = AVG_BUFF_SIZE - 500; - 556:src/l502_user_process.c **** dbg_receive_value = send_size; - 557:src/l502_user_process.c **** if (Proc_state.AVG_buff_active == A){ - 558:src/l502_user_process.c **** hdma_send_req_start(AVG_buff_A, send_size, 0); - 559:src/l502_user_process.c **** Proc_state.AVG_buff_active == B; - 560:src/l502_user_process.c **** }else{ - 561:src/l502_user_process.c **** hdma_send_req_start(AVG_buff_B, send_size, 0); - 562:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; - 563:src/l502_user_process.c **** } - 564:src/l502_user_process.c **** return send_size; - 565:src/l502_user_process.c **** }else{ - 566:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_buff_I, 0); - 567:src/l502_user_process.c **** TX_buff_I_shadow = TX_buff_I; - 568:src/l502_user_process.c **** dbg_receive_value = TX_buff_I; - 569:src/l502_user_process.c **** TX_buff_I = 0; - 570:src/l502_user_process.c **** return TX_buff_I_shadow; - 571:src/l502_user_process.c **** } - 572:src/l502_user_process.c **** */ - 573:src/l502_user_process.c **** - 574:src/l502_user_process.c **** if (TX_buff_state == TODO_TX){ - 575:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 576:src/l502_user_process.c **** TX_buff_shadow[i] = TX_buff[i]; - 577:src/l502_user_process.c **** } - 578:src/l502_user_process.c **** hdma_send_req_start(TX_buff_shadow, TX_buff_I, 0); - 579:src/l502_user_process.c **** hdma_send_req_start(TX_marker, 10, 0); - 580:src/l502_user_process.c **** - 581:src/l502_user_process.c **** - 582:src/l502_user_process.c **** // hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); - 583:src/l502_user_process.c **** //TX_buff_state = TRANSMITTING; - 584:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 585:src/l502_user_process.c **** //}else{ - 586:src/l502_user_process.c **** // hdma_send_req_start(data, size, 0); - 587:src/l502_user_process.c **** } - 588:src/l502_user_process.c **** - 589:src/l502_user_process.c **** //hdma_send_req_start(data, size, 0); - 590:src/l502_user_process.c **** //streams_cnt[0] = hdma_send_req_start(LFSM_data, LFSM_DATALEN, 0); - 591:src/l502_user_process.c **** return size; - 592:src/l502_user_process.c **** //return data_I; //number of really processed words - 593:src/l502_user_process.c **** } - 594:src/l502_user_process.c **** //return data_I; //number of really processed words - 595:src/l502_user_process.c **** - 596:src/l502_user_process.c **** return 0; - 597:src/l502_user_process.c **** } - 598:src/l502_user_process.c **** - 599:src/l502_user_process.c **** + 552:src/l502_user_process.c **** //*/ + 553:src/l502_user_process.c **** /* + 554:src/l502_user_process.c **** if (Proc_state.mode == AVG){ + 555:src/l502_user_process.c **** send_size = Proc_state.AVG_buff_I; + 556:src/l502_user_process.c **** //send_size = TX_buff_I; + 557:src/l502_user_process.c **** //send_size = AVG_BUFF_SIZE - 500; + 558:src/l502_user_process.c **** dbg_receive_value = send_size; + 559:src/l502_user_process.c **** if (Proc_state.AVG_buff_active == A){ + 560:src/l502_user_process.c **** hdma_send_req_start(AVG_buff_A, send_size, 0); + 561:src/l502_user_process.c **** Proc_state.AVG_buff_active == B; + 562:src/l502_user_process.c **** }else{ + 563:src/l502_user_process.c **** hdma_send_req_start(AVG_buff_B, send_size, 0); + 564:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; + 565:src/l502_user_process.c **** } + 566:src/l502_user_process.c **** return send_size; + 567:src/l502_user_process.c **** }else{ + 568:src/l502_user_process.c **** hdma_send_req_start(TX_buff, TX_buff_I, 0); + 569:src/l502_user_process.c **** TX_buff_I_shadow = TX_buff_I; + 570:src/l502_user_process.c **** dbg_receive_value = TX_buff_I; + 571:src/l502_user_process.c **** TX_buff_I = 0; + 572:src/l502_user_process.c **** return TX_buff_I_shadow; + 573:src/l502_user_process.c **** } + 574:src/l502_user_process.c **** */ + 575:src/l502_user_process.c **** + 576:src/l502_user_process.c **** if (TX_buff_state == TODO_TX){ + 577:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 578:src/l502_user_process.c **** TX_buff_shadow[i] = TX_buff[i]; + 579:src/l502_user_process.c **** } + 580:src/l502_user_process.c **** hdma_send_req_start(TX_buff_shadow, TX_buff_I, 0); + 581:src/l502_user_process.c **** hdma_send_req_start(TX_marker, 10, 0); + 582:src/l502_user_process.c **** + 583:src/l502_user_process.c **** + 584:src/l502_user_process.c **** // hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); + 585:src/l502_user_process.c **** //TX_buff_state = TRANSMITTING; + 586:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 587:src/l502_user_process.c **** //}else{ + 588:src/l502_user_process.c **** // hdma_send_req_start(data, size, 0); + 589:src/l502_user_process.c **** } + 590:src/l502_user_process.c **** + 591:src/l502_user_process.c **** //hdma_send_req_start(data, size, 0); + 592:src/l502_user_process.c **** //streams_cnt[0] = hdma_send_req_start(LFSM_data, LFSM_DATALEN, 0); + 593:src/l502_user_process.c **** return size; + 594:src/l502_user_process.c **** //return data_I; //number of really processed words + 595:src/l502_user_process.c **** } + 596:src/l502_user_process.c **** //return data_I; //number of really processed words + 597:src/l502_user_process.c **** + 598:src/l502_user_process.c **** return 0; + 599:src/l502_user_process.c **** } 600:src/l502_user_process.c **** - 601:src/l502_user_process.c **** /***************************************************************************//** - 602:src/l502_user_process.c **** @brief Обработка принятого массива с данными ЦАП/DOUT - 603:src/l502_user_process.c **** - 604:src/l502_user_process.c **** Функция вызывается каждый раз, когда обнаружены нов - 605:src/l502_user_process.c **** ПК по HDMA. - 606:src/l502_user_process.c **** Функция должна обработать данные и вернуть количес - 607:src/l502_user_process.c **** однако эти данные все еще считаются использованным - 608:src/l502_user_process.c **** новыми пришедшими данными) до тех пор пока не будет - BFIN GAS /tmp/ccG6eBVz.s page 12 + 601:src/l502_user_process.c **** + 602:src/l502_user_process.c **** + 603:src/l502_user_process.c **** /***************************************************************************//** + 604:src/l502_user_process.c **** @brief Обработка принятого массива с данными ЦАП/DOUT + 605:src/l502_user_process.c **** + 606:src/l502_user_process.c **** Функция вызывается каждый раз, когда обнаружены нов + 607:src/l502_user_process.c **** ПК по HDMA. + 608:src/l502_user_process.c **** Функция должна обработать данные и вернуть количес + BFIN GAS /tmp/ccBtsGqv.s page 12 - 609:src/l502_user_process.c **** stream_out_buf_free()). - 610:src/l502_user_process.c **** - 611:src/l502_user_process.c **** Если функция вернет значение меньше чем size, то функц - 612:src/l502_user_process.c **** вызвана после еще раз с указателем на необработанны - 613:src/l502_user_process.c **** - 614:src/l502_user_process.c **** В текущей реализации просто запускается передача д - 615:src/l502_user_process.c **** для вывода на ЦАП/цифровые выходы. - 616:src/l502_user_process.c **** - 617:src/l502_user_process.c **** @param[in] data Указатель на массив с принятыми данными - 618:src/l502_user_process.c **** @param[in] size Количество принятых данных в 32-битных сло - 619:src/l502_user_process.c **** @return Функция возвращает количество обработанн - 620:src/l502_user_process.c **** На эти данные не будет вызываться повторн - 621:src/l502_user_process.c **** но они считаются еще используемыми - 622:src/l502_user_process.c **** ******************************************************************************/ - 623:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { - 624:src/l502_user_process.c **** - 625:src/l502_user_process.c **** /* если есть свободные дескрипторы на передачу по HDMA - 626:src/l502_user_process.c **** передачу. Иначе возвращаем 0, чтобы на обработку эт - 627:src/l502_user_process.c **** вызвали бы позже */ - 628:src/l502_user_process.c **** ++streams_cnt[2]; - 629:src/l502_user_process.c **** - 630:src/l502_user_process.c **** if (sport_tx_req_rdy()) { + 609:src/l502_user_process.c **** однако эти данные все еще считаются использованным + 610:src/l502_user_process.c **** новыми пришедшими данными) до тех пор пока не будет + 611:src/l502_user_process.c **** stream_out_buf_free()). + 612:src/l502_user_process.c **** + 613:src/l502_user_process.c **** Если функция вернет значение меньше чем size, то функц + 614:src/l502_user_process.c **** вызвана после еще раз с указателем на необработанны + 615:src/l502_user_process.c **** + 616:src/l502_user_process.c **** В текущей реализации просто запускается передача д + 617:src/l502_user_process.c **** для вывода на ЦАП/цифровые выходы. + 618:src/l502_user_process.c **** + 619:src/l502_user_process.c **** @param[in] data Указатель на массив с принятыми данными + 620:src/l502_user_process.c **** @param[in] size Количество принятых данных в 32-битных сло + 621:src/l502_user_process.c **** @return Функция возвращает количество обработанн + 622:src/l502_user_process.c **** На эти данные не будет вызываться повторн + 623:src/l502_user_process.c **** но они считаются еще используемыми + 624:src/l502_user_process.c **** ******************************************************************************/ + 625:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { + 626:src/l502_user_process.c **** + 627:src/l502_user_process.c **** /* если есть свободные дескрипторы на передачу по HDMA + 628:src/l502_user_process.c **** передачу. Иначе возвращаем 0, чтобы на обработку эт + 629:src/l502_user_process.c **** вызвали бы позже */ + 630:src/l502_user_process.c **** ++streams_cnt[2]; 631:src/l502_user_process.c **** - 632:src/l502_user_process.c **** /* за один раз можем передать в SPORT не более - 633:src/l502_user_process.c **** SPORT_TX_REQ_SIZE_MAX слов */ - 634:src/l502_user_process.c **** if (size > SPORT_TX_REQ_SIZE_MAX) - 635:src/l502_user_process.c **** size = SPORT_TX_REQ_SIZE_MAX; - 636:src/l502_user_process.c **** - 637:src/l502_user_process.c **** sport_tx_start_req(data, size); + 632:src/l502_user_process.c **** if (sport_tx_req_rdy()) { + 633:src/l502_user_process.c **** + 634:src/l502_user_process.c **** /* за один раз можем передать в SPORT не более + 635:src/l502_user_process.c **** SPORT_TX_REQ_SIZE_MAX слов */ + 636:src/l502_user_process.c **** if (size > SPORT_TX_REQ_SIZE_MAX) + 637:src/l502_user_process.c **** size = SPORT_TX_REQ_SIZE_MAX; 638:src/l502_user_process.c **** - 639:src/l502_user_process.c **** return size; - 640:src/l502_user_process.c **** } - 641:src/l502_user_process.c **** return 0; - 642:src/l502_user_process.c **** } - 643:src/l502_user_process.c **** - 644:src/l502_user_process.c **** + 639:src/l502_user_process.c **** sport_tx_start_req(data, size); + 640:src/l502_user_process.c **** + 641:src/l502_user_process.c **** return size; + 642:src/l502_user_process.c **** } + 643:src/l502_user_process.c **** return 0; + 644:src/l502_user_process.c **** } 645:src/l502_user_process.c **** 646:src/l502_user_process.c **** 647:src/l502_user_process.c **** 648:src/l502_user_process.c **** - 649:src/l502_user_process.c **** /****************************************************************************//** - 650:src/l502_user_process.c **** @brief Обработка завершения передачи по HostDMA - 651:src/l502_user_process.c **** - 652:src/l502_user_process.c **** Функция вызывается из обработчика прерывания, когд - 653:src/l502_user_process.c **** блока данных по HDMA в ПК, поставленного до этого на пе - 654:src/l502_user_process.c **** помощью hdma_send_req_start(). - 655:src/l502_user_process.c **** - 656:src/l502_user_process.c **** @param[in] addr Адрес слова, сразу за последним переданны - 657:src/l502_user_process.c **** @param[in] size Размер переданных данных в 32-битных слова - 658:src/l502_user_process.c **** ****************************************************************************/ - 659:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { - 660:src/l502_user_process.c **** - 661:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 662:src/l502_user_process.c **** ++streams_cnt[3]; - 663:src/l502_user_process.c **** - 664:src/l502_user_process.c **** stream_in_buf_free(size); - 665:src/l502_user_process.c **** } - BFIN GAS /tmp/ccG6eBVz.s page 13 + 649:src/l502_user_process.c **** + 650:src/l502_user_process.c **** + 651:src/l502_user_process.c **** /****************************************************************************//** + 652:src/l502_user_process.c **** @brief Обработка завершения передачи по HostDMA + 653:src/l502_user_process.c **** + 654:src/l502_user_process.c **** Функция вызывается из обработчика прерывания, когд + 655:src/l502_user_process.c **** блока данных по HDMA в ПК, поставленного до этого на пе + 656:src/l502_user_process.c **** помощью hdma_send_req_start(). + 657:src/l502_user_process.c **** + 658:src/l502_user_process.c **** @param[in] addr Адрес слова, сразу за последним переданны + 659:src/l502_user_process.c **** @param[in] size Размер переданных данных в 32-битных слова + 660:src/l502_user_process.c **** ****************************************************************************/ + 661:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { + 662:src/l502_user_process.c **** + 663:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 664:src/l502_user_process.c **** ++streams_cnt[3]; + 665:src/l502_user_process.c **** + BFIN GAS /tmp/ccBtsGqv.s page 13 - 666:src/l502_user_process.c **** - 667:src/l502_user_process.c **** + 666:src/l502_user_process.c **** stream_in_buf_free(size); + 667:src/l502_user_process.c **** } 668:src/l502_user_process.c **** - 669:src/l502_user_process.c **** /***************************************************************************//** - 670:src/l502_user_process.c **** @brief Обработка завершения передачи по SPORT - 671:src/l502_user_process.c **** - 672:src/l502_user_process.c **** Функция вызывается из обработчика прерывания при з - 673:src/l502_user_process.c **** по SPORT'у на цифровые выходы/ЦАП, поставленного до это - 674:src/l502_user_process.c **** помощью sport_tx_start_req(). - 675:src/l502_user_process.c **** - 676:src/l502_user_process.c **** - 677:src/l502_user_process.c **** @param[in] addr Адрес слова, сразу за последним переданны - 678:src/l502_user_process.c **** @param[in] size Размер переданных данных в 32-битных слова - 679:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { - 680:src/l502_user_process.c **** ++streams_cnt[1]; - 681:src/l502_user_process.c **** - 682:src/l502_user_process.c **** stream_out_buf_free(size); - 683:src/l502_user_process.c **** } - 684:src/l502_user_process.c **** - 685:src/l502_user_process.c **** + 669:src/l502_user_process.c **** + 670:src/l502_user_process.c **** + 671:src/l502_user_process.c **** /***************************************************************************//** + 672:src/l502_user_process.c **** @brief Обработка завершения передачи по SPORT + 673:src/l502_user_process.c **** + 674:src/l502_user_process.c **** Функция вызывается из обработчика прерывания при з + 675:src/l502_user_process.c **** по SPORT'у на цифровые выходы/ЦАП, поставленного до это + 676:src/l502_user_process.c **** помощью sport_tx_start_req(). + 677:src/l502_user_process.c **** + 678:src/l502_user_process.c **** + 679:src/l502_user_process.c **** @param[in] addr Адрес слова, сразу за последним переданны + 680:src/l502_user_process.c **** @param[in] size Размер переданных данных в 32-битных слова + 681:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { + 682:src/l502_user_process.c **** ++streams_cnt[1]; + 683:src/l502_user_process.c **** + 684:src/l502_user_process.c **** stream_out_buf_free(size); + 685:src/l502_user_process.c **** } 686:src/l502_user_process.c **** 687:src/l502_user_process.c **** 688:src/l502_user_process.c **** @@ -748,22 +748,24 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 690:src/l502_user_process.c **** 691:src/l502_user_process.c **** 692:src/l502_user_process.c **** - 693:src/l502_user_process.c **** /****************************************************************************//** - 694:src/l502_user_process.c **** @brief Обработка пользовательских команд. - 695:src/l502_user_process.c **** - 696:src/l502_user_process.c **** Функция вызывается при приеме команды от ПК с кодом - 697:src/l502_user_process.c **** #L502_BF_CMD_CODE_USER. - 698:src/l502_user_process.c **** - 699:src/l502_user_process.c **** По завершению обработки необходимо обязательно выз - 700:src/l502_user_process.c **** l502_cmd_done(), указав код завершения команды и - 701:src/l502_user_process.c **** при необходимости передать данные с результатом - 702:src/l502_user_process.c **** - 703:src/l502_user_process.c **** @param[in] cmd Структура с описанием принятой команды - 704:src/l502_user_process.c **** ******************************************************************************/ - 705:src/l502_user_process.c **** - 706:src/l502_user_process.c **** - 707:src/l502_user_process.c **** void usr_cmd_process(t_l502_bf_cmd *cmd) { - 16 .loc 1 707 0 + 693:src/l502_user_process.c **** + 694:src/l502_user_process.c **** + 695:src/l502_user_process.c **** /****************************************************************************//** + 696:src/l502_user_process.c **** @brief Обработка пользовательских команд. + 697:src/l502_user_process.c **** + 698:src/l502_user_process.c **** Функция вызывается при приеме команды от ПК с кодом + 699:src/l502_user_process.c **** #L502_BF_CMD_CODE_USER. + 700:src/l502_user_process.c **** + 701:src/l502_user_process.c **** По завершению обработки необходимо обязательно выз + 702:src/l502_user_process.c **** l502_cmd_done(), указав код завершения команды и + 703:src/l502_user_process.c **** при необходимости передать данные с результатом + 704:src/l502_user_process.c **** + 705:src/l502_user_process.c **** @param[in] cmd Структура с описанием принятой команды + 706:src/l502_user_process.c **** ******************************************************************************/ + 707:src/l502_user_process.c **** + 708:src/l502_user_process.c **** + 709:src/l502_user_process.c **** void usr_cmd_process(t_l502_bf_cmd *cmd) { + 16 .loc 1 709 0 17 .LVL0: 18 0000 0032 P0 = R0; 19 0002 F405 [--sp] = ( r7:6, p5:4 ); @@ -771,265 +773,265 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 21 .LCFI0: 22 0004 00E81A00 LINK 104; 23 .LCFI1: - 708:src/l502_user_process.c **** switch (cmd->code){ - 24 .loc 1 708 0 + 710:src/l502_user_process.c **** switch (cmd->code){ + 24 .loc 1 710 0 25 0008 21E1FF7F R1 = 32767 (X); - 709:src/l502_user_process.c **** - 710:src/l502_user_process.c **** - 711:src/l502_user_process.c **** /* - 712:src/l502_user_process.c **** Command template - BFIN GAS /tmp/ccG6eBVz.s page 14 + 711:src/l502_user_process.c **** + 712:src/l502_user_process.c **** + BFIN GAS /tmp/ccBtsGqv.s page 14 - 713:src/l502_user_process.c **** case 0x800?:{ - 714:src/l502_user_process.c **** - 715:src/l502_user_process.c **** l502_cmd_done(rcv_code, rcv_data, rcv_data_length); //void l502_cmd_done (int32_t result, uint32_ - 716:src/l502_user_process.c **** break; - 717:src/l502_user_process.c **** } - 718:src/l502_user_process.c **** */ - 719:src/l502_user_process.c **** // typedef struct { - 720:src/l502_user_process.c **** // uint16_t code; /**< Код команды из #t_l502_bf_cmd_code */ - 721:src/l502_user_process.c **** // uint16_t status; /**< Статус выполнения - в обработчике не и - 722:src/l502_user_process.c **** // uint32_t param; /**< Параметр команды */ - 723:src/l502_user_process.c **** // int32_t result; /**< Код результата выполнения команды */ - 724:src/l502_user_process.c **** // uint32_t data_size; /**< Количество данных, переданных с кома - 725:src/l502_user_process.c **** // uint32_t data[L502_BF_CMD_DATA_SIZE_MAX]; /**< Данные, передаваемые с к - 726:src/l502_user_process.c **** // } t_l502_bf_cmd; - 727:src/l502_user_process.c **** - 728:src/l502_user_process.c **** + 713:src/l502_user_process.c **** /* + 714:src/l502_user_process.c **** Command template + 715:src/l502_user_process.c **** case 0x800?:{ + 716:src/l502_user_process.c **** + 717:src/l502_user_process.c **** l502_cmd_done(rcv_code, rcv_data, rcv_data_length); //void l502_cmd_done (int32_t result, uint32_ + 718:src/l502_user_process.c **** break; + 719:src/l502_user_process.c **** } + 720:src/l502_user_process.c **** */ + 721:src/l502_user_process.c **** // typedef struct { + 722:src/l502_user_process.c **** // uint16_t code; /**< Код команды из #t_l502_bf_cmd_code */ + 723:src/l502_user_process.c **** // uint16_t status; /**< Статус выполнения - в обработчике не и + 724:src/l502_user_process.c **** // uint32_t param; /**< Параметр команды */ + 725:src/l502_user_process.c **** // int32_t result; /**< Код результата выполнения команды */ + 726:src/l502_user_process.c **** // uint32_t data_size; /**< Количество данных, переданных с кома + 727:src/l502_user_process.c **** // uint32_t data[L502_BF_CMD_DATA_SIZE_MAX]; /**< Данные, передаваемые с к + 728:src/l502_user_process.c **** // } t_l502_bf_cmd; 729:src/l502_user_process.c **** 730:src/l502_user_process.c **** - 731:src/l502_user_process.c **** case 0x8001:{ //L502_BF_USR_CMD_CODE_ECHO - 732:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 733:src/l502_user_process.c **** break; - 734:src/l502_user_process.c **** } - 735:src/l502_user_process.c **** - 736:src/l502_user_process.c **** case 0x8002:{ //L502_BF_USR_CMD_CODE_DATA_ECHO - 737:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; - 738:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ - 739:src/l502_user_process.c **** //rcv_data[I] = (cmd-> data)[I]; - 740:src/l502_user_process.c **** rcv_data[I] = I; - 741:src/l502_user_process.c **** } - 742:src/l502_user_process.c **** l502_cmd_done(cmd-> param, rcv_data, cmd->data_size); - 743:src/l502_user_process.c **** break; - 744:src/l502_user_process.c **** } - 745:src/l502_user_process.c **** case 0x8003:{ //configure ADC - 746:src/l502_user_process.c **** uint32_t err_codes[15] = {0,}; - 747:src/l502_user_process.c **** err_codes[0] = params_set_lch_cnt(1); - 748:src/l502_user_process.c **** //err_codes[1] = params_set_lch(1, 1, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index - 749:src/l502_user_process.c **** err_codes[1] = params_set_lch(0, 0, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, - 750:src/l502_user_process.c **** err_codes[2] = params_set_adc_freq_div(1); - 751:src/l502_user_process.c **** err_codes[3] = params_set_ref_freq(2000000); - 752:src/l502_user_process.c **** err_codes[4] = params_set_adc_interframe_delay(0); - 753:src/l502_user_process.c **** err_codes[5] = params_set_sync_mode (L502_SYNC_INTERNAL); - 754:src/l502_user_process.c **** err_codes[6] = params_set_sync_start_mode (L502_SYNC_INTERNAL); - 755:src/l502_user_process.c **** //err_codes[7] = params_set_din_freq_div; - 756:src/l502_user_process.c **** //err_codes[8] = params_set_dac_freq_div; - 757:src/l502_user_process.c **** - 758:src/l502_user_process.c **** err_codes[9] = sport_in_set_step_size(1024); + 731:src/l502_user_process.c **** + 732:src/l502_user_process.c **** + 733:src/l502_user_process.c **** case 0x8001:{ //L502_BF_USR_CMD_CODE_ECHO + 734:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 735:src/l502_user_process.c **** break; + 736:src/l502_user_process.c **** } + 737:src/l502_user_process.c **** + 738:src/l502_user_process.c **** case 0x8002:{ //L502_BF_USR_CMD_CODE_DATA_ECHO + 739:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; + 740:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ + 741:src/l502_user_process.c **** //rcv_data[I] = (cmd-> data)[I]; + 742:src/l502_user_process.c **** rcv_data[I] = I; + 743:src/l502_user_process.c **** } + 744:src/l502_user_process.c **** l502_cmd_done(cmd-> param, rcv_data, cmd->data_size); + 745:src/l502_user_process.c **** break; + 746:src/l502_user_process.c **** } + 747:src/l502_user_process.c **** case 0x8003:{ //configure ADC + 748:src/l502_user_process.c **** uint32_t err_codes[15] = {0,}; + 749:src/l502_user_process.c **** err_codes[0] = params_set_lch_cnt(1); + 750:src/l502_user_process.c **** //err_codes[1] = params_set_lch(1, 1, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index + 751:src/l502_user_process.c **** err_codes[1] = params_set_lch(0, 0, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, + 752:src/l502_user_process.c **** err_codes[2] = params_set_adc_freq_div(1); + 753:src/l502_user_process.c **** err_codes[3] = params_set_ref_freq(2000000); + 754:src/l502_user_process.c **** err_codes[4] = params_set_adc_interframe_delay(0); + 755:src/l502_user_process.c **** err_codes[5] = params_set_sync_mode (L502_SYNC_INTERNAL); + 756:src/l502_user_process.c **** err_codes[6] = params_set_sync_start_mode (L502_SYNC_INTERNAL); + 757:src/l502_user_process.c **** //err_codes[7] = params_set_din_freq_div; + 758:src/l502_user_process.c **** //err_codes[8] = params_set_dac_freq_div; 759:src/l502_user_process.c **** - 760:src/l502_user_process.c **** //L502_BF_PARAM_ADC_COEF - 761:src/l502_user_process.c **** //err_codes[10] = fpga_reg_write(f_regaddr_k[range], ??); - 762:src/l502_user_process.c **** //err_codes[11] = fpga_reg_write(f_regaddr_offs[range], ??); - 763:src/l502_user_process.c **** err_codes[12] = configure(); - 764:src/l502_user_process.c **** - 765:src/l502_user_process.c **** + 760:src/l502_user_process.c **** err_codes[9] = sport_in_set_step_size(1024); + 761:src/l502_user_process.c **** + 762:src/l502_user_process.c **** //L502_BF_PARAM_ADC_COEF + 763:src/l502_user_process.c **** //err_codes[10] = fpga_reg_write(f_regaddr_k[range], ??); + 764:src/l502_user_process.c **** //err_codes[11] = fpga_reg_write(f_regaddr_offs[range], ??); + 765:src/l502_user_process.c **** err_codes[12] = configure(); 766:src/l502_user_process.c **** 767:src/l502_user_process.c **** - 768:src/l502_user_process.c **** uint32_t err_codes_sum = 0; - 769:src/l502_user_process.c **** for (int i = 0; i < 15; ++i){ - BFIN GAS /tmp/ccG6eBVz.s page 15 + 768:src/l502_user_process.c **** + 769:src/l502_user_process.c **** + BFIN GAS /tmp/ccBtsGqv.s page 15 - 770:src/l502_user_process.c **** err_codes_sum += err_codes[i]; - 771:src/l502_user_process.c **** } - 772:src/l502_user_process.c **** l502_cmd_done(err_codes_sum, err_codes, 15); - 773:src/l502_user_process.c **** break; - 774:src/l502_user_process.c **** } - 775:src/l502_user_process.c **** case 0x8004:{ //start streams - 776:src/l502_user_process.c **** uint32_t err_codes[5] = {0,}; - 777:src/l502_user_process.c **** l502_stream_init(); - 778:src/l502_user_process.c **** err_codes[0] = stream_enable(L502_STREAM_ADC | L502_STREAM_DIN); //bitmask - 779:src/l502_user_process.c **** err_codes[1] = stream_out_preload(); - 780:src/l502_user_process.c **** err_codes[2] = streams_start(); - 781:src/l502_user_process.c **** //hdma_send_start(); - 782:src/l502_user_process.c **** l502_cmd_done(0, err_codes, 5); - 783:src/l502_user_process.c **** break; - 784:src/l502_user_process.c **** } - 785:src/l502_user_process.c **** case 0x8005:{ //get some data from adc buff. Or simple flag, raised inside usr_in_proc_data() - 786:src/l502_user_process.c **** - 787:src/l502_user_process.c **** uint32_t streams_sum = streams_cnt[0] + streams_cnt[1] + streams_cnt[2] + streams_cnt[3]; - 788:src/l502_user_process.c **** l502_cmd_done(streams_sum, streams_cnt, 4); - 789:src/l502_user_process.c **** break; - 790:src/l502_user_process.c **** } - 791:src/l502_user_process.c **** - 792:src/l502_user_process.c **** case 0x8006:{ //get data from SPORT_RX copied arr - 793:src/l502_user_process.c **** uint32_t sport_rx_nonzero_sum = 0; - 794:src/l502_user_process.c **** - 795:src/l502_user_process.c **** for (int i = 0; i < dbg_sport_rx_copy_size; ++i){ - 796:src/l502_user_process.c **** if (dbg_sport_rx_copy[i]){ - 797:src/l502_user_process.c **** ++sport_rx_nonzero_sum; - 798:src/l502_user_process.c **** } - 799:src/l502_user_process.c **** } - 800:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); - 801:src/l502_user_process.c **** break; - 802:src/l502_user_process.c **** } - 803:src/l502_user_process.c **** - 804:src/l502_user_process.c **** + 770:src/l502_user_process.c **** uint32_t err_codes_sum = 0; + 771:src/l502_user_process.c **** for (int i = 0; i < 15; ++i){ + 772:src/l502_user_process.c **** err_codes_sum += err_codes[i]; + 773:src/l502_user_process.c **** } + 774:src/l502_user_process.c **** l502_cmd_done(err_codes_sum, err_codes, 15); + 775:src/l502_user_process.c **** break; + 776:src/l502_user_process.c **** } + 777:src/l502_user_process.c **** case 0x8004:{ //start streams + 778:src/l502_user_process.c **** uint32_t err_codes[5] = {0,}; + 779:src/l502_user_process.c **** l502_stream_init(); + 780:src/l502_user_process.c **** err_codes[0] = stream_enable(L502_STREAM_ADC | L502_STREAM_DIN); //bitmask + 781:src/l502_user_process.c **** err_codes[1] = stream_out_preload(); + 782:src/l502_user_process.c **** err_codes[2] = streams_start(); + 783:src/l502_user_process.c **** //hdma_send_start(); + 784:src/l502_user_process.c **** l502_cmd_done(0, err_codes, 5); + 785:src/l502_user_process.c **** break; + 786:src/l502_user_process.c **** } + 787:src/l502_user_process.c **** case 0x8005:{ //get some data from adc buff. Or simple flag, raised inside usr_in_proc_data() + 788:src/l502_user_process.c **** + 789:src/l502_user_process.c **** uint32_t streams_sum = streams_cnt[0] + streams_cnt[1] + streams_cnt[2] + streams_cnt[3]; + 790:src/l502_user_process.c **** l502_cmd_done(streams_sum, streams_cnt, 4); + 791:src/l502_user_process.c **** break; + 792:src/l502_user_process.c **** } + 793:src/l502_user_process.c **** + 794:src/l502_user_process.c **** case 0x8006:{ //get data from SPORT_RX copied arr + 795:src/l502_user_process.c **** uint32_t sport_rx_nonzero_sum = 0; + 796:src/l502_user_process.c **** + 797:src/l502_user_process.c **** for (int i = 0; i < dbg_sport_rx_copy_size; ++i){ + 798:src/l502_user_process.c **** if (dbg_sport_rx_copy[i]){ + 799:src/l502_user_process.c **** ++sport_rx_nonzero_sum; + 800:src/l502_user_process.c **** } + 801:src/l502_user_process.c **** } + 802:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); + 803:src/l502_user_process.c **** break; + 804:src/l502_user_process.c **** } 805:src/l502_user_process.c **** - 806:src/l502_user_process.c **** case 0x8007:{ //start data processing: No dataprocessing. Just copy data to output buffer - 807:src/l502_user_process.c **** TX_buff_I = 0; - 808:src/l502_user_process.c **** - 809:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; - 810:src/l502_user_process.c **** Proc_state.mode_next = TRANSPARENT; - 811:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; - 812:src/l502_user_process.c **** Proc_state.average_N_max = 10; - 813:src/l502_user_process.c **** // Proc_state.average_N_max = cmd->param; - 814:src/l502_user_process.c **** Proc_state.average_N = 1; - 815:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; - 816:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; - 817:src/l502_user_process.c **** Proc_state.AVG_state = 0; - 818:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 819:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; - 820:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; - 821:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; - 822:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; - 823:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; - 824:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; - 825:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 826:src/l502_user_process.c **** - BFIN GAS /tmp/ccG6eBVz.s page 16 + 806:src/l502_user_process.c **** + 807:src/l502_user_process.c **** + 808:src/l502_user_process.c **** case 0x8007:{ //start data processing: No dataprocessing. Just copy data to output buffer + 809:src/l502_user_process.c **** TX_buff_I = 0; + 810:src/l502_user_process.c **** + 811:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; + 812:src/l502_user_process.c **** Proc_state.mode_next = TRANSPARENT; + 813:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; + 814:src/l502_user_process.c **** Proc_state.average_N_max = 10; + 815:src/l502_user_process.c **** // Proc_state.average_N_max = cmd->param; + 816:src/l502_user_process.c **** Proc_state.average_N = 1; + 817:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; + 818:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; + 819:src/l502_user_process.c **** Proc_state.AVG_state = 0; + 820:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 821:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; + 822:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; + 823:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; + 824:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; + 825:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; + 826:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; + BFIN GAS /tmp/ccBtsGqv.s page 16 - 827:src/l502_user_process.c **** - 828:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 829:src/l502_user_process.c **** TX_buff[i] = 0; - 830:src/l502_user_process.c **** } - 831:src/l502_user_process.c **** - 832:src/l502_user_process.c **** // l502_cmd_done(cmd-> param, NULL, 0); - 833:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); - 834:src/l502_user_process.c **** break; - 835:src/l502_user_process.c **** } - 836:src/l502_user_process.c **** case 0x8008:{ //AVG mode - 837:src/l502_user_process.c **** TX_buff_I = 0; - 838:src/l502_user_process.c **** - 839:src/l502_user_process.c **** Proc_state.mode = AVG; - 840:src/l502_user_process.c **** Proc_state.mode_next = AVG; - 841:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; - 842:src/l502_user_process.c **** Proc_state.average_N_max = 3; - 843:src/l502_user_process.c **** // Proc_state.average_N_max = cmd->param; - 844:src/l502_user_process.c **** Proc_state.average_N = 0; - 845:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; - 846:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; - 847:src/l502_user_process.c **** Proc_state.AVG_state = 0; - 848:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 849:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; - 850:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; - 851:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; - 852:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; - 853:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; - 854:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; - 855:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 856:src/l502_user_process.c **** - 857:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 858:src/l502_user_process.c **** TX_buff[i] = 0; - 859:src/l502_user_process.c **** } - 860:src/l502_user_process.c **** - 861:src/l502_user_process.c **** // l502_cmd_done(cmd-> param, NULL, 0); - 862:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); - 863:src/l502_user_process.c **** - 864:src/l502_user_process.c **** break; - 865:src/l502_user_process.c **** } - 866:src/l502_user_process.c **** case 0x8009:{ //request TX_buff_I_shadow value (last size of TX_buff transferred to pc ) - 867:src/l502_user_process.c **** l502_cmd_done(TX_buff_I_shadow, NULL, 0); - 868:src/l502_user_process.c **** break; - 869:src/l502_user_process.c **** } - 870:src/l502_user_process.c **** case 0x800A:{ //return uint32_t value stored in dbg_receive_value - 871:src/l502_user_process.c **** l502_cmd_done(dbg_receive_value, NULL, 0); - 872:src/l502_user_process.c **** break; - 873:src/l502_user_process.c **** } - 874:src/l502_user_process.c **** - 875:src/l502_user_process.c **** + 827:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 828:src/l502_user_process.c **** + 829:src/l502_user_process.c **** + 830:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 831:src/l502_user_process.c **** TX_buff[i] = 0; + 832:src/l502_user_process.c **** } + 833:src/l502_user_process.c **** + 834:src/l502_user_process.c **** // l502_cmd_done(cmd-> param, NULL, 0); + 835:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); + 836:src/l502_user_process.c **** break; + 837:src/l502_user_process.c **** } + 838:src/l502_user_process.c **** case 0x8008:{ //AVG mode + 839:src/l502_user_process.c **** TX_buff_I = 0; + 840:src/l502_user_process.c **** + 841:src/l502_user_process.c **** Proc_state.mode = AVG; + 842:src/l502_user_process.c **** Proc_state.mode_next = AVG; + 843:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; + 844:src/l502_user_process.c **** Proc_state.average_N_max = 30; + 845:src/l502_user_process.c **** // Proc_state.average_N_max = cmd->param; + 846:src/l502_user_process.c **** Proc_state.average_N = 0; + 847:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; + 848:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; + 849:src/l502_user_process.c **** Proc_state.AVG_state = 0; + 850:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 851:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; + 852:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; + 853:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; + 854:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; + 855:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; + 856:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; + 857:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 858:src/l502_user_process.c **** + 859:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 860:src/l502_user_process.c **** TX_buff[i] = 0; + 861:src/l502_user_process.c **** } + 862:src/l502_user_process.c **** + 863:src/l502_user_process.c **** // l502_cmd_done(cmd-> param, NULL, 0); + 864:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); + 865:src/l502_user_process.c **** + 866:src/l502_user_process.c **** break; + 867:src/l502_user_process.c **** } + 868:src/l502_user_process.c **** case 0x8009:{ //request TX_buff_I_shadow value (last size of TX_buff transferred to pc ) + 869:src/l502_user_process.c **** l502_cmd_done(TX_buff_I_shadow, NULL, 0); + 870:src/l502_user_process.c **** break; + 871:src/l502_user_process.c **** } + 872:src/l502_user_process.c **** case 0x800A:{ //return uint32_t value stored in dbg_receive_value + 873:src/l502_user_process.c **** l502_cmd_done(dbg_receive_value, NULL, 0); + 874:src/l502_user_process.c **** break; + 875:src/l502_user_process.c **** } 876:src/l502_user_process.c **** 877:src/l502_user_process.c **** 878:src/l502_user_process.c **** - 879:src/l502_user_process.c **** case 0x8010:{ //flush HDMA TX buffer - 880:src/l502_user_process.c **** int number_of_free_tx_descriptors = hdma_send_req_rdy(); - 881:src/l502_user_process.c **** hdma_send_stop(); - 882:src/l502_user_process.c **** hdma_send_start(); - 883:src/l502_user_process.c **** l502_cmd_done(number_of_free_tx_descriptors, NULL, 0); - BFIN GAS /tmp/ccG6eBVz.s page 17 + 879:src/l502_user_process.c **** + 880:src/l502_user_process.c **** + 881:src/l502_user_process.c **** case 0x8010:{ //flush HDMA TX buffer + 882:src/l502_user_process.c **** int number_of_free_tx_descriptors = hdma_send_req_rdy(); + 883:src/l502_user_process.c **** hdma_send_stop(); + BFIN GAS /tmp/ccBtsGqv.s page 17 - 884:src/l502_user_process.c **** break; - 885:src/l502_user_process.c **** } - 886:src/l502_user_process.c **** case 0x8011:{ //L502_BF_USR_CMD_CODE_ECHO - 887:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 888:src/l502_user_process.c **** break; - 889:src/l502_user_process.c **** } - 890:src/l502_user_process.c **** case 0x8012:{ //L502_BF_USR_CMD_CODE_ECHO - 891:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 892:src/l502_user_process.c **** break; - 893:src/l502_user_process.c **** } - 894:src/l502_user_process.c **** case 0x8013:{ //L502_BF_USR_CMD_CODE_ECHO - 895:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 896:src/l502_user_process.c **** break; - 897:src/l502_user_process.c **** } - 898:src/l502_user_process.c **** case 0x8014:{ //L502_BF_USR_CMD_CODE_ECHO - 899:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 900:src/l502_user_process.c **** break; - 901:src/l502_user_process.c **** } - 902:src/l502_user_process.c **** case 0x8015:{ //L502_BF_USR_CMD_CODE_ECHO - 903:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 904:src/l502_user_process.c **** break; - 905:src/l502_user_process.c **** } - 906:src/l502_user_process.c **** - 907:src/l502_user_process.c **** + 884:src/l502_user_process.c **** hdma_send_start(); + 885:src/l502_user_process.c **** l502_cmd_done(number_of_free_tx_descriptors, NULL, 0); + 886:src/l502_user_process.c **** break; + 887:src/l502_user_process.c **** } + 888:src/l502_user_process.c **** case 0x8011:{ //L502_BF_USR_CMD_CODE_ECHO + 889:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 890:src/l502_user_process.c **** break; + 891:src/l502_user_process.c **** } + 892:src/l502_user_process.c **** case 0x8012:{ //L502_BF_USR_CMD_CODE_ECHO + 893:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 894:src/l502_user_process.c **** break; + 895:src/l502_user_process.c **** } + 896:src/l502_user_process.c **** case 0x8013:{ //L502_BF_USR_CMD_CODE_ECHO + 897:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 898:src/l502_user_process.c **** break; + 899:src/l502_user_process.c **** } + 900:src/l502_user_process.c **** case 0x8014:{ //L502_BF_USR_CMD_CODE_ECHO + 901:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 902:src/l502_user_process.c **** break; + 903:src/l502_user_process.c **** } + 904:src/l502_user_process.c **** case 0x8015:{ //L502_BF_USR_CMD_CODE_ECHO + 905:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 906:src/l502_user_process.c **** break; + 907:src/l502_user_process.c **** } 908:src/l502_user_process.c **** - 909:src/l502_user_process.c **** /* - 910:src/l502_user_process.c **** case 0x8002:{ - 911:src/l502_user_process.c **** cmd-> result = cmd->param * 2; - 912:src/l502_user_process.c **** uint32_t data[] = {0,1,2,3,4,5,6,5,4,3,2,1,0}; - 913:src/l502_user_process.c **** l502_cmd_done(cmd-> param*3, data, 13); - 914:src/l502_user_process.c **** break;} - 915:src/l502_user_process.c **** case 0x8001:{ - 916:src/l502_user_process.c **** //cmd-> result = cmd->param * 2; - 917:src/l502_user_process.c **** uint32_t data[] = {6,5,4,3,2,1,0,1,2,3,4,5,6}; - 918:src/l502_user_process.c **** l502_cmd_done(cmd-> param*75, data, 13); - 919:src/l502_user_process.c **** break;} - 920:src/l502_user_process.c **** */ - 921:src/l502_user_process.c **** - 922:src/l502_user_process.c **** default: { - 923:src/l502_user_process.c **** l502_cmd_done(1, NULL, 0); - 924:src/l502_user_process.c **** } - 925:src/l502_user_process.c **** } - 926:src/l502_user_process.c **** //l502_cmd_done(1, 1, 1); - 927:src/l502_user_process.c **** //l502_cmd_done(L502_BF_ERR_UNSUP_CMD, NULL, 0); - 928:src/l502_user_process.c **** } - 26 .loc 1 928 0 + 909:src/l502_user_process.c **** + 910:src/l502_user_process.c **** + 911:src/l502_user_process.c **** /* + 912:src/l502_user_process.c **** case 0x8002:{ + 913:src/l502_user_process.c **** cmd-> result = cmd->param * 2; + 914:src/l502_user_process.c **** uint32_t data[] = {0,1,2,3,4,5,6,5,4,3,2,1,0}; + 915:src/l502_user_process.c **** l502_cmd_done(cmd-> param*3, data, 13); + 916:src/l502_user_process.c **** break;} + 917:src/l502_user_process.c **** case 0x8001:{ + 918:src/l502_user_process.c **** //cmd-> result = cmd->param * 2; + 919:src/l502_user_process.c **** uint32_t data[] = {6,5,4,3,2,1,0,1,2,3,4,5,6}; + 920:src/l502_user_process.c **** l502_cmd_done(cmd-> param*75, data, 13); + 921:src/l502_user_process.c **** break;} + 922:src/l502_user_process.c **** */ + 923:src/l502_user_process.c **** + 924:src/l502_user_process.c **** default: { + 925:src/l502_user_process.c **** l502_cmd_done(1, NULL, 0); + 926:src/l502_user_process.c **** } + 927:src/l502_user_process.c **** } + 928:src/l502_user_process.c **** //l502_cmd_done(1, 1, 1); + 929:src/l502_user_process.c **** //l502_cmd_done(L502_BF_ERR_UNSUP_CMD, NULL, 0); + 930:src/l502_user_process.c **** } + 26 .loc 1 930 0 27 000c 7630 R6 = SP; - 708:src/l502_user_process.c **** switch (cmd->code){ - 28 .loc 1 708 0 + 710:src/l502_user_process.c **** switch (cmd->code){ + 28 .loc 1 710 0 29 000e 0095 R0 = W [P0] (Z); 30 .LVL1: 31 0010 0850 R0 = R0 + R1; 32 0012 C042 R0 = R0.L (Z); 33 0014 A160 R1 = 20 (X); 34 0016 080A cc =R0<=R1 (iu); + BFIN GAS /tmp/ccBtsGqv.s page 18 + + 35 0018 0B1C if cc jump .L51 (bp); 36 .L2: - BFIN GAS /tmp/ccG6eBVz.s page 18 - - - 923:src/l502_user_process.c **** l502_cmd_done(1, NULL, 0); - 37 .loc 1 923 0 + 925:src/l502_user_process.c **** l502_cmd_done(1, NULL, 0); + 37 .loc 1 925 0 38 001a 0860 R0 = 1 (X); 39 001c 0160 R1 = 0 (X); 40 001e 0260 R2 = 0 (X); 41 0020 FFE3F0FF call _l502_cmd_done; 42 .LVL2: 43 .L45: - 44 .loc 1 928 0 + 44 .loc 1 930 0 45 0024 3632 SP = R6; 46 0026 01E80000 UNLINK; 47 002a B405 ( r7:6, p5:4 ) = [sp++]; @@ -1039,8 +1041,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 51 002c 1000 rts; 52 .LVL4: 53 .L51: - 708:src/l502_user_process.c **** switch (cmd->code){ - 54 .loc 1 708 0 + 710:src/l502_user_process.c **** switch (cmd->code){ + 54 .loc 1 710 0 55 002e 0832 P1 = R0; 56 0030 4AE10000 P2.H = .L19; 57 0034 0AE10000 P2.L = .L19; @@ -1074,17 +1076,17 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 85 0050 3E000000 .dd .L18; 86 .text; 87 .L18: - 903:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); - 88 .loc 1 903 0 + 905:src/l502_user_process.c **** l502_cmd_done(cmd-> param, NULL, 0); + 88 .loc 1 905 0 + BFIN GAS /tmp/ccBtsGqv.s page 19 + + 89 003e 40A0 R0 = [P0+4]; 90 0040 0160 R1 = 0 (X); - BFIN GAS /tmp/ccG6eBVz.s page 19 - - 91 0042 0260 R2 = 0 (X); 92 0044 FFE3DEFF call _l502_cmd_done; 93 .LVL5: - 94 .loc 1 928 0 + 94 .loc 1 930 0 95 0048 3632 SP = R6; 96 004a 01E80000 UNLINK; 97 004e B405 ( r7:6, p5:4 ) = [sp++]; @@ -1094,20 +1096,20 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 101 .LVL6: 102 .L13: 103 .LBB2: - 880:src/l502_user_process.c **** int number_of_free_tx_descriptors = hdma_send_req_rdy(); - 104 .loc 1 880 0 + 882:src/l502_user_process.c **** int number_of_free_tx_descriptors = hdma_send_req_rdy(); + 104 .loc 1 882 0 105 0052 FFE3D7FF call _hdma_send_req_rdy; 106 .LVL7: 107 0056 3830 R7 = R0; 108 .LVL8: - 881:src/l502_user_process.c **** hdma_send_stop(); - 109 .loc 1 881 0 + 883:src/l502_user_process.c **** hdma_send_stop(); + 109 .loc 1 883 0 110 0058 FFE3D4FF call _hdma_send_stop; - 882:src/l502_user_process.c **** hdma_send_start(); - 111 .loc 1 882 0 + 884:src/l502_user_process.c **** hdma_send_start(); + 111 .loc 1 884 0 112 005c FFE3D2FF call _hdma_send_start; - 883:src/l502_user_process.c **** l502_cmd_done(number_of_free_tx_descriptors, NULL, 0); - 113 .loc 1 883 0 + 885:src/l502_user_process.c **** l502_cmd_done(number_of_free_tx_descriptors, NULL, 0); + 113 .loc 1 885 0 114 0060 0730 R0 = R7; 115 0062 0160 R1 = 0 (X); 116 0064 0260 R2 = 0 (X); @@ -1117,53 +1119,53 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 120 .L4: 121 .LBE2: 122 .LBB3: - 737:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; - 123 .loc 1 737 0 + 739:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; + 123 .loc 1 739 0 124 006c C1AC P1 = [P0+12]; 125 .LBE3: - 733:src/l502_user_process.c **** break; - 126 .loc 1 733 0 + 735:src/l502_user_process.c **** break; + 126 .loc 1 735 0 127 006e 7E30 R7 = SP; 128 .LBB6: - 737:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; - 129 .loc 1 737 0 + 739:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; + 129 .loc 1 739 0 130 0070 4A44 P2 = P1 << 2; 131 0072 226C P2 += 4; 132 0074 1644 SP -= P2; 133 0076 4E30 R1 = SP; 134 .LBB4: - 738:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ - 135 .loc 1 738 0 + 740:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ + 135 .loc 1 740 0 136 0078 5130 R2 = P1; 137 .LBE4: - 737:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; - 138 .loc 1 737 0 - BFIN GAS /tmp/ccG6eBVz.s page 20 + BFIN GAS /tmp/ccBtsGqv.s page 20 + 739:src/l502_user_process.c **** uint32_t rcv_data[cmd->data_size]; + 138 .loc 1 739 0 139 007a C164 R1 += 24; 140 .LBB5: - 738:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ - 141 .loc 1 738 0 + 740:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ + 141 .loc 1 740 0 142 007c 020C cc =R2==0; 143 007e 0818 if cc jump .L21; 144 0080 1132 P2 = R1; 145 0082 0060 R0 = 0 (X); 146 .LVL10: 147 .L22: - 740:src/l502_user_process.c **** rcv_data[I] = I; - 148 .loc 1 740 0 + 742:src/l502_user_process.c **** rcv_data[I] = I; + 148 .loc 1 742 0 149 0084 1092 [P2++] = R0; - 738:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ - 150 .loc 1 738 0 + 740:src/l502_user_process.c **** for (uint32_t I = 0; I < (cmd -> data_size); ++I){ + 150 .loc 1 740 0 151 0086 0864 R0 += 1; 152 0088 C2A0 R2 = [P0+12]; 153 008a 020A cc =R2<=R0 (iu); 154 008c FC17 if !cc jump .L22 (bp); 155 .L21: 156 .LBE5: - 742:src/l502_user_process.c **** l502_cmd_done(cmd-> param, rcv_data, cmd->data_size); - 157 .loc 1 742 0 + 744:src/l502_user_process.c **** l502_cmd_done(cmd-> param, rcv_data, cmd->data_size); + 157 .loc 1 744 0 158 008e 40A0 R0 = [P0+4]; 159 .LVL11: 160 0090 FFE3B8FF call _l502_cmd_done; @@ -1174,8 +1176,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 165 .L5: 166 .LBE6: 167 .LBB7: - 746:src/l502_user_process.c **** uint32_t err_codes[15] = {0,}; - 168 .loc 1 746 0 + 748:src/l502_user_process.c **** uint32_t err_codes[15] = {0,}; + 168 .loc 1 748 0 169 0098 2AE1B0FF P2 = -80 (X); 170 009c 575B P5 = FP + P2; 171 009e 0160 R1 = 0 (X); @@ -1183,64 +1185,64 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 173 00a2 4530 R0 = P5; 174 00a4 FFE3AEFF call _memset; 175 .LVL14: - 747:src/l502_user_process.c **** err_codes[0] = params_set_lch_cnt(1); - 176 .loc 1 747 0 + 749:src/l502_user_process.c **** err_codes[0] = params_set_lch_cnt(1); + 176 .loc 1 749 0 177 00a8 0860 R0 = 1 (X); 178 00aa FFE3ABFF call _params_set_lch_cnt; 179 00ae C0BA [FP+-80] = R0; - 749:src/l502_user_process.c **** err_codes[1] = params_set_lch(0, 0, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, - 180 .loc 1 749 0 + 751:src/l502_user_process.c **** err_codes[1] = params_set_lch(0, 0, L502_LCH_MODE_COMM, L502_ADC_RANGE_5, 1, 0);// chan index 1, + 180 .loc 1 751 0 181 00b0 0860 R0 = 1 (X); 182 00b2 F0B0 [SP+12] = R0; 183 00b4 30B1 [SP+16] = R0; 184 00b6 0060 R0 = 0 (X); 185 00b8 00CC09C2 R1 = R1 -|- R1 || 185 70B10000 + BFIN GAS /tmp/ccBtsGqv.s page 21 + + 186 [SP+20] = R0 || 187 nop; - BFIN GAS /tmp/ccG6eBVz.s page 21 - - 188 00c0 0260 R2 = 0 (X); 189 00c2 FFE39FFF call _params_set_lch; 190 00c6 D0BA [FP+-76] = R0; - 750:src/l502_user_process.c **** err_codes[2] = params_set_adc_freq_div(1); - 191 .loc 1 750 0 + 752:src/l502_user_process.c **** err_codes[2] = params_set_adc_freq_div(1); + 191 .loc 1 752 0 192 00c8 0860 R0 = 1 (X); 193 00ca FFE39BFF call _params_set_adc_freq_div; 194 00ce E0BA [FP+-72] = R0; - 751:src/l502_user_process.c **** err_codes[3] = params_set_ref_freq(2000000); - 195 .loc 1 751 0 + 753:src/l502_user_process.c **** err_codes[3] = params_set_ref_freq(2000000); + 195 .loc 1 753 0 196 00d0 20E1093D R0 = 15625 (X); 197 00d4 384F R0 <<= 7; 198 00d6 FFE395FF call _params_set_ref_freq; 199 00da F0BA [FP+-68] = R0; - 752:src/l502_user_process.c **** err_codes[4] = params_set_adc_interframe_delay(0); - 200 .loc 1 752 0 + 754:src/l502_user_process.c **** err_codes[4] = params_set_adc_interframe_delay(0); + 200 .loc 1 754 0 201 00dc 0060 R0 = 0 (X); 202 00de FFE391FF call _params_set_adc_interframe_delay; 203 00e2 00BB [FP+-64] = R0; - 753:src/l502_user_process.c **** err_codes[5] = params_set_sync_mode (L502_SYNC_INTERNAL); - 204 .loc 1 753 0 + 755:src/l502_user_process.c **** err_codes[5] = params_set_sync_mode (L502_SYNC_INTERNAL); + 204 .loc 1 755 0 205 00e4 0060 R0 = 0 (X); 206 00e6 FFE38DFF call _params_set_sync_mode; 207 00ea 10BB [FP+-60] = R0; - 754:src/l502_user_process.c **** err_codes[6] = params_set_sync_start_mode (L502_SYNC_INTERNAL); - 208 .loc 1 754 0 + 756:src/l502_user_process.c **** err_codes[6] = params_set_sync_start_mode (L502_SYNC_INTERNAL); + 208 .loc 1 756 0 209 00ec 0060 R0 = 0 (X); 210 00ee FFE389FF call _params_set_sync_start_mode; 211 00f2 20BB [FP+-56] = R0; - 758:src/l502_user_process.c **** err_codes[9] = sport_in_set_step_size(1024); - 212 .loc 1 758 0 + 760:src/l502_user_process.c **** err_codes[9] = sport_in_set_step_size(1024); + 212 .loc 1 760 0 213 00f4 20E10004 R0 = 1024 (X); 214 00f8 FFE384FF call _sport_in_set_step_size; 215 00fc 50BB [FP+-44] = R0; - 763:src/l502_user_process.c **** err_codes[12] = configure(); - 216 .loc 1 763 0 + 765:src/l502_user_process.c **** err_codes[12] = configure(); + 216 .loc 1 765 0 217 00fe FFE381FF call _configure; 218 .LBB8: - 770:src/l502_user_process.c **** err_codes_sum += err_codes[i]; - 219 .loc 1 770 0 + 772:src/l502_user_process.c **** err_codes_sum += err_codes[i]; + 219 .loc 1 772 0 220 0102 D2B8 R2 = [FP+-76]; 221 0104 C1B8 R1 = [FP+-80]; 222 0106 04CC0A02 R1 = R1 + R2 (NS) || @@ -1256,11 +1258,11 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 231 .LVL17: 232 0116 02B9 R2 = [FP+-64]; 233 0118 5150 R1 = R1 + R2; + BFIN GAS /tmp/ccBtsGqv.s page 22 + + 234 .LVL18: 235 011a 12B9 R2 = [FP+-60]; - BFIN GAS /tmp/ccG6eBVz.s page 22 - - 236 011c 5150 R1 = R1 + R2; 237 .LVL19: 238 011e 22B9 R2 = [FP+-56]; @@ -1287,8 +1289,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 259 013a 0850 R0 = R0 + R1; 260 .LVL27: 261 .LBE8: - 772:src/l502_user_process.c **** l502_cmd_done(err_codes_sum, err_codes, 15); - 262 .loc 1 772 0 + 774:src/l502_user_process.c **** l502_cmd_done(err_codes_sum, err_codes, 15); + 262 .loc 1 774 0 263 013c A1B9 R1 = [FP+-24]; 264 013e 0850 R0 = R0 + R1; 265 .LVL28: @@ -1300,36 +1302,36 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 271 .L6: 272 .LBE7: 273 .LBB9: - 776:src/l502_user_process.c **** uint32_t err_codes[5] = {0,}; - 274 .loc 1 776 0 + 778:src/l502_user_process.c **** uint32_t err_codes[5] = {0,}; + 274 .loc 1 778 0 275 014a 0060 R0 = 0 (X); 276 014c B0BB [FP+-20] = R0; 277 014e C0BB [FP+-16] = R0; 278 0150 D0BB [FP+-12] = R0; 279 0152 E0BB [FP+-8] = R0; 280 0154 F0BB [FP+-4] = R0; - 777:src/l502_user_process.c **** l502_stream_init(); - 281 .loc 1 777 0 + 779:src/l502_user_process.c **** l502_stream_init(); + 281 .loc 1 779 0 282 0156 FFE355FF call _l502_stream_init; 283 .LVL30: - 778:src/l502_user_process.c **** err_codes[0] = stream_enable(L502_STREAM_ADC | L502_STREAM_DIN); //bitmask - 284 .loc 1 778 0 + 780:src/l502_user_process.c **** err_codes[0] = stream_enable(L502_STREAM_ADC | L502_STREAM_DIN); //bitmask + 284 .loc 1 780 0 285 015a 1860 R0 = 3 (X); 286 015c FFE352FF call _stream_enable; + BFIN GAS /tmp/ccBtsGqv.s page 23 + + 287 0160 B0BB [FP+-20] = R0; - 779:src/l502_user_process.c **** err_codes[1] = stream_out_preload(); - BFIN GAS /tmp/ccG6eBVz.s page 23 - - - 288 .loc 1 779 0 + 781:src/l502_user_process.c **** err_codes[1] = stream_out_preload(); + 288 .loc 1 781 0 289 0162 FFE34FFF call _stream_out_preload; 290 0166 C0BB [FP+-16] = R0; - 780:src/l502_user_process.c **** err_codes[2] = streams_start(); - 291 .loc 1 780 0 + 782:src/l502_user_process.c **** err_codes[2] = streams_start(); + 291 .loc 1 782 0 292 0168 FFE34CFF call _streams_start; 293 016c D0BB [FP+-12] = R0; - 782:src/l502_user_process.c **** l502_cmd_done(0, err_codes, 5); - 294 .loc 1 782 0 + 784:src/l502_user_process.c **** l502_cmd_done(0, err_codes, 5); + 294 .loc 1 784 0 295 016e 4F30 R1 = FP; 296 0170 0060 R0 = 0 (X); 297 0172 6167 R1 += -20; @@ -1340,8 +1342,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 302 .L7: 303 .LBE9: 304 .LBB10: - 788:src/l502_user_process.c **** l502_cmd_done(streams_sum, streams_cnt, 4); - 305 .loc 1 788 0 + 790:src/l502_user_process.c **** l502_cmd_done(streams_sum, streams_cnt, 4); + 305 .loc 1 790 0 306 017c 4AE10000 P2.H = _streams_cnt; 307 0180 0AE10000 P2.L = _streams_cnt; 308 0184 1191 R1 = [P2]; @@ -1358,8 +1360,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 319 019a 452F jump.s .L45; 320 .LVL33: 321 .L8: - 789:src/l502_user_process.c **** break; - 322 .loc 1 789 0 + 791:src/l502_user_process.c **** break; + 322 .loc 1 791 0 323 019c 4AE10000 P2.H = _dbg_sport_rx_copy; 324 01a0 0AE12800 P2.L = _dbg_sport_rx_copy; 325 01a4 1091 R0 = [P2]; @@ -1368,19 +1370,19 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 328 .LBE10: 329 .LBB11: 330 .LBB12: - 797:src/l502_user_process.c **** ++sport_rx_nonzero_sum; - 331 .loc 1 797 0 + 799:src/l502_user_process.c **** ++sport_rx_nonzero_sum; + 331 .loc 1 799 0 332 01aa 51A0 R1 = [P2+4]; 333 01ac 1030 R2 = R0; 334 .LVL34: 335 01ae 010C cc =R1==0; 336 01b0 0A64 R2 += 1; 337 01b2 0206 if !cc R0 = R2; + BFIN GAS /tmp/ccBtsGqv.s page 24 + + 338 .LVL35: 339 01b4 91A0 R1 = [P2+8]; - BFIN GAS /tmp/ccG6eBVz.s page 24 - - 340 01b6 1030 R2 = R0; 341 01b8 010C cc =R1==0; 342 01ba 0A64 R2 += 1; @@ -1430,28 +1432,28 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 386 01f8 0206 if !cc R0 = R2; 387 .LVL49: 388 .LBE12: - 800:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); - 389 .loc 1 800 0 + 802:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); + 389 .loc 1 802 0 390 01fa 51A2 R1 = [P2+36]; 391 .LBB13: - 797:src/l502_user_process.c **** ++sport_rx_nonzero_sum; - 392 .loc 1 797 0 + 799:src/l502_user_process.c **** ++sport_rx_nonzero_sum; + 392 .loc 1 799 0 + BFIN GAS /tmp/ccBtsGqv.s page 25 + + 393 01fc 1030 R2 = R0; 394 .LBE13: - BFIN GAS /tmp/ccG6eBVz.s page 25 - - - 800:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); - 395 .loc 1 800 0 + 802:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); + 395 .loc 1 802 0 396 01fe 010C cc =R1==0; 397 .LBB14: - 797:src/l502_user_process.c **** ++sport_rx_nonzero_sum; - 398 .loc 1 797 0 + 799:src/l502_user_process.c **** ++sport_rx_nonzero_sum; + 398 .loc 1 799 0 399 0200 0A64 R2 += 1; 400 .LVL50: 401 .LBE14: - 800:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); - 402 .loc 1 800 0 + 802:src/l502_user_process.c **** l502_cmd_done(sport_rx_nonzero_sum, dbg_sport_rx_copy, 1024); + 402 .loc 1 802 0 403 0202 0206 if !cc R0 = R2; 404 .LVL51: 405 0204 4A30 R1 = P2; @@ -1462,72 +1464,72 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 410 .LVL53: 411 .L9: 412 .LBE11: - 807:src/l502_user_process.c **** TX_buff_I = 0; - 413 .loc 1 807 0 + 809:src/l502_user_process.c **** TX_buff_I = 0; + 413 .loc 1 809 0 414 0210 4CE10000 P4.H = _TX_buff_I; 415 0214 0260 R2 = 0 (X); 416 0216 0CE11400 P4.L = _TX_buff_I; - 809:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; - 417 .loc 1 809 0 + 811:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; + 417 .loc 1 811 0 418 021a 4AE10000 P2.H = _Proc_state; - 807:src/l502_user_process.c **** TX_buff_I = 0; - 419 .loc 1 807 0 + 809:src/l502_user_process.c **** TX_buff_I = 0; + 419 .loc 1 809 0 420 021e 2293 [P4] = R2; - 809:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; - 421 .loc 1 809 0 + 811:src/l502_user_process.c **** Proc_state.mode = TRANSPARENT; + 421 .loc 1 811 0 422 0220 0AE12C00 P2.L = _Proc_state; 423 0224 0860 R0 = 1 (X); 424 0226 109B B [P2] = R0; - 810:src/l502_user_process.c **** Proc_state.mode_next = TRANSPARENT; - 425 .loc 1 810 0 + 812:src/l502_user_process.c **** Proc_state.mode_next = TRANSPARENT; + 425 .loc 1 812 0 426 0228 90E60100 B [P2+1] = R0; - 811:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; - 427 .loc 1 811 0 + 813:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; + 427 .loc 1 813 0 428 022c 0160 R1 = 0 (X); 429 022e 91E60300 B [P2+3] = R1; - 812:src/l502_user_process.c **** Proc_state.average_N_max = 10; - 430 .loc 1 812 0 + 814:src/l502_user_process.c **** Proc_state.average_N_max = 10; + 430 .loc 1 814 0 431 0232 5060 R0 = 10 (X); 432 0234 90B4 W [P2+4] = R0; - 814:src/l502_user_process.c **** Proc_state.average_N = 1; - 433 .loc 1 814 0 + 816:src/l502_user_process.c **** Proc_state.average_N = 1; + 433 .loc 1 816 0 434 0236 0860 R0 = 1 (X); 435 0238 D0B4 W [P2+6] = R0; - 815:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; - 436 .loc 1 815 0 + 817:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; + 436 .loc 1 817 0 437 023a 92B0 [P2+8] = R2; - 816:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; - 438 .loc 1 816 0 - BFIN GAS /tmp/ccG6eBVz.s page 26 + BFIN GAS /tmp/ccBtsGqv.s page 26 + 818:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; + 438 .loc 1 818 0 439 023c 91E60C00 B [P2+12] = R1; - 817:src/l502_user_process.c **** Proc_state.AVG_state = 0; - 440 .loc 1 817 0 + 819:src/l502_user_process.c **** Proc_state.AVG_state = 0; + 440 .loc 1 819 0 441 0240 91E61400 B [P2+20] = R1; - 818:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 442 .loc 1 818 0 + 820:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 442 .loc 1 820 0 443 0244 12B1 [P2+16] = R2; - 819:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; - 444 .loc 1 819 0 + 821:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; + 444 .loc 1 821 0 445 0246 91E61500 B [P2+21] = R1; - 820:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; - 446 .loc 1 820 0 + 822:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; + 446 .loc 1 822 0 447 024a 92B1 [P2+24] = R2; - 821:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; - 448 .loc 1 821 0 + 823:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; + 448 .loc 1 823 0 449 024c 91E61C00 B [P2+28] = R1; - 822:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; - 450 .loc 1 822 0 + 824:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; + 450 .loc 1 824 0 451 0250 12B2 [P2+32] = R2; - 823:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; - 452 .loc 1 823 0 + 825:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; + 452 .loc 1 825 0 453 0252 52B2 [P2+36] = R2; - 824:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; - 454 .loc 1 824 0 + 826:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; + 454 .loc 1 826 0 455 0254 91E61600 B [P2+22] = R1; - 825:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 456 .loc 1 825 0 + 827:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 456 .loc 1 827 0 457 0258 4AE10000 P2.H = _TX_buff_state; 458 025c 1860 R0 = 3 (X); 459 025e 0AE13000 P2.L = _TX_buff_state; @@ -1537,8 +1539,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 463 .LVL54: 464 026a 0DE10000 P5.L = _TX_buff; 465 .LBB15: - 829:src/l502_user_process.c **** TX_buff[i] = 0; - 466 .loc 1 829 0 + 831:src/l502_user_process.c **** TX_buff[i] = 0; + 466 .loc 1 831 0 467 026e 0060 R0 = 0 (X); 468 0270 29E11027 P1 = 10000 (X); 469 0274 B2E00410 LSETUP (.L43, .L53) LC1 = P1; @@ -1546,23 +1548,23 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 471 0278 855E P2 = P5 + (P0 << 2); 472 027a 1093 [P2] = R0; 473 .L53: - 828:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 474 .loc 1 828 0 + 830:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 474 .loc 1 830 0 475 027c 086C P0 += 1; 476 .LVL55: 477 .L49: 478 .LBE15: - 862:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); - 479 .loc 1 862 0 + 864:src/l502_user_process.c **** l502_cmd_done(TX_buff_I, NULL, 0); + 479 .loc 1 864 0 480 027e 2091 R0 = [P4]; 481 0280 0160 R1 = 0 (X); + BFIN GAS /tmp/ccBtsGqv.s page 27 + + 482 0282 0260 R2 = 0 (X); 483 0284 FFE3BEFE call _l502_cmd_done; - BFIN GAS /tmp/ccG6eBVz.s page 27 - - 484 .LVL56: - 485 .loc 1 928 0 + 485 .loc 1 930 0 486 0288 3632 SP = R6; 487 028a 01E80000 UNLINK; 488 028e B405 ( r7:6, p5:4 ) = [sp++]; @@ -1571,72 +1573,72 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 491 0290 1000 rts; 492 .LVL57: 493 .L10: - 837:src/l502_user_process.c **** TX_buff_I = 0; - 494 .loc 1 837 0 + 839:src/l502_user_process.c **** TX_buff_I = 0; + 494 .loc 1 839 0 495 0292 4CE10000 P4.H = _TX_buff_I; 496 0296 0260 R2 = 0 (X); 497 0298 0CE11400 P4.L = _TX_buff_I; - 839:src/l502_user_process.c **** Proc_state.mode = AVG; - 498 .loc 1 839 0 + 841:src/l502_user_process.c **** Proc_state.mode = AVG; + 498 .loc 1 841 0 499 029c 4AE10000 P2.H = _Proc_state; - 837:src/l502_user_process.c **** TX_buff_I = 0; - 500 .loc 1 837 0 + 839:src/l502_user_process.c **** TX_buff_I = 0; + 500 .loc 1 839 0 501 02a0 2293 [P4] = R2; - 839:src/l502_user_process.c **** Proc_state.mode = AVG; - 502 .loc 1 839 0 + 841:src/l502_user_process.c **** Proc_state.mode = AVG; + 502 .loc 1 841 0 503 02a2 0AE12C00 P2.L = _Proc_state; 504 02a6 1060 R0 = 2 (X); 505 02a8 109B B [P2] = R0; - 840:src/l502_user_process.c **** Proc_state.mode_next = AVG; - 506 .loc 1 840 0 + 842:src/l502_user_process.c **** Proc_state.mode_next = AVG; + 506 .loc 1 842 0 507 02aa 90E60100 B [P2+1] = R0; - 841:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; - 508 .loc 1 841 0 + 843:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_UNKNOWN; + 508 .loc 1 843 0 509 02ae 0160 R1 = 0 (X); 510 02b0 91E60300 B [P2+3] = R1; - 842:src/l502_user_process.c **** Proc_state.average_N_max = 3; - 511 .loc 1 842 0 - 512 02b4 1860 R0 = 3 (X); + 844:src/l502_user_process.c **** Proc_state.average_N_max = 30; + 511 .loc 1 844 0 + 512 02b4 F060 R0 = 30 (X); 513 02b6 90B4 W [P2+4] = R0; - 844:src/l502_user_process.c **** Proc_state.average_N = 0; - 514 .loc 1 844 0 + 846:src/l502_user_process.c **** Proc_state.average_N = 0; + 514 .loc 1 846 0 515 02b8 0060 R0 = 0 (X); 516 02ba D0B4 W [P2+6] = R0; - 845:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; - 517 .loc 1 845 0 + 847:src/l502_user_process.c **** Proc_state.TX_buff_I = 0; + 517 .loc 1 847 0 518 02bc 92B0 [P2+8] = R2; - 846:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; - 519 .loc 1 846 0 + 848:src/l502_user_process.c **** Proc_state.TX_buff_state = 0; + 519 .loc 1 848 0 520 02be 91E60C00 B [P2+12] = R1; - 847:src/l502_user_process.c **** Proc_state.AVG_state = 0; - 521 .loc 1 847 0 + 849:src/l502_user_process.c **** Proc_state.AVG_state = 0; + 521 .loc 1 849 0 522 02c2 91E61400 B [P2+20] = R1; - 848:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 523 .loc 1 848 0 + 850:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; + 523 .loc 1 850 0 524 02c6 12B1 [P2+16] = R2; - 849:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; - 525 .loc 1 849 0 + 851:src/l502_user_process.c **** Proc_state.AVG_buff_state = 0; + 525 .loc 1 851 0 + BFIN GAS /tmp/ccBtsGqv.s page 28 + + 526 02c8 91E61500 B [P2+21] = R1; - 850:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; - BFIN GAS /tmp/ccG6eBVz.s page 28 - - - 527 .loc 1 850 0 + 852:src/l502_user_process.c **** Proc_state.FFT_buff_I = 0; + 527 .loc 1 852 0 528 02cc 92B1 [P2+24] = R2; - 851:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; - 529 .loc 1 851 0 + 853:src/l502_user_process.c **** Proc_state.FFT_buff_state = 0; + 529 .loc 1 853 0 530 02ce 91E61C00 B [P2+28] = R1; - 852:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; - 531 .loc 1 852 0 + 854:src/l502_user_process.c **** Proc_state.digital_word_prev = 0; + 531 .loc 1 854 0 532 02d2 12B2 [P2+32] = R2; - 853:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; - 533 .loc 1 853 0 + 855:src/l502_user_process.c **** Proc_state.digital_word_curr = 0; + 533 .loc 1 855 0 534 02d4 52B2 [P2+36] = R2; - 854:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; - 535 .loc 1 854 0 + 856:src/l502_user_process.c **** Proc_state.AVG_buff_active = A; + 535 .loc 1 856 0 536 02d6 91E61600 B [P2+22] = R1; - 855:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 537 .loc 1 855 0 + 857:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 537 .loc 1 857 0 538 02da 4AE10000 P2.H = _TX_buff_state; 539 02de 1860 R0 = 3 (X); 540 02e0 0AE13000 P2.L = _TX_buff_state; @@ -1646,8 +1648,8 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 544 .LVL58: 545 02ec 0DE10000 P5.L = _TX_buff; 546 .LBB16: - 858:src/l502_user_process.c **** TX_buff[i] = 0; - 547 .loc 1 858 0 + 860:src/l502_user_process.c **** TX_buff[i] = 0; + 547 .loc 1 860 0 548 02f0 0060 R0 = 0 (X); 549 02f2 29E11027 P1 = 10000 (X); 550 02f6 B2E00410 LSETUP (.L44, .L52) LC1 = P1; @@ -1655,15 +1657,15 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 552 02fa 855E P2 = P5 + (P0 << 2); 553 02fc 1093 [P2] = R0; 554 .L52: - 857:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ - 555 .loc 1 857 0 + 859:src/l502_user_process.c **** for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ + 555 .loc 1 859 0 556 02fe 086C P0 += 1; 557 0300 BF2F jump.s .L49; 558 .LVL59: 559 .L11: 560 .LBE16: - 867:src/l502_user_process.c **** l502_cmd_done(TX_buff_I_shadow, NULL, 0); - 561 .loc 1 867 0 + 869:src/l502_user_process.c **** l502_cmd_done(TX_buff_I_shadow, NULL, 0); + 561 .loc 1 869 0 562 0302 4AE10000 P2.H = _TX_buff_I_shadow; 563 0306 0AE12C00 P2.L = _TX_buff_I_shadow; 564 030a 1091 R0 = [P2]; @@ -1674,13 +1676,13 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 569 0314 882E jump.s .L45; 570 .LVL61: 571 .L12: - 871:src/l502_user_process.c **** l502_cmd_done(dbg_receive_value, NULL, 0); - 572 .loc 1 871 0 + 873:src/l502_user_process.c **** l502_cmd_done(dbg_receive_value, NULL, 0); + 572 .loc 1 873 0 + BFIN GAS /tmp/ccBtsGqv.s page 29 + + 573 0316 4AE10000 P2.H = _dbg_receive_value; 574 031a 0AE10000 P2.L = _dbg_receive_value; - BFIN GAS /tmp/ccG6eBVz.s page 29 - - 575 031e 1091 R0 = [P2]; 576 0320 0160 R1 = 0 (X); 577 0322 0260 R2 = 0 (X); @@ -1694,31 +1696,31 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 585 .type _sport_tx_done, STT_FUNC; 586 _sport_tx_done: 587 .LFB5: - 679:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { - 588 .loc 1 679 0 + 681:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { + 588 .loc 1 681 0 589 .LVL63: - 680:src/l502_user_process.c **** ++streams_cnt[1]; - 590 .loc 1 680 0 + 682:src/l502_user_process.c **** ++streams_cnt[1]; + 590 .loc 1 682 0 591 032c 4AE10000 P2.H = _streams_cnt; - 679:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { - 592 .loc 1 679 0 + 681:src/l502_user_process.c **** void sport_tx_done(uint32_t* addr, uint32_t size) { + 592 .loc 1 681 0 593 0330 00E80000 LINK 0; 594 .LCFI5: - 680:src/l502_user_process.c **** ++streams_cnt[1]; - 595 .loc 1 680 0 + 682:src/l502_user_process.c **** ++streams_cnt[1]; + 595 .loc 1 682 0 596 0334 0AE10000 P2.L = _streams_cnt; 597 0338 50A0 R0 = [P2+4]; 598 .LVL64: 599 033a 0864 R0 += 1; 600 033c 50B0 [P2+4] = R0; - 682:src/l502_user_process.c **** stream_out_buf_free(size); - 601 .loc 1 682 0 + 684:src/l502_user_process.c **** stream_out_buf_free(size); + 601 .loc 1 684 0 602 033e 0130 R0 = R1; - 683:src/l502_user_process.c **** } - 603 .loc 1 683 0 + 685:src/l502_user_process.c **** } + 603 .loc 1 685 0 604 0340 01E80000 UNLINK; - 682:src/l502_user_process.c **** stream_out_buf_free(size); - 605 .loc 1 682 0 + 684:src/l502_user_process.c **** stream_out_buf_free(size); + 605 .loc 1 684 0 606 0344 FFE25EFE jump.l _stream_out_buf_free; 607 .LVL65: 608 .LFE5: @@ -1728,40 +1730,40 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 612 .type _hdma_send_done, STT_FUNC; 613 _hdma_send_done: 614 .LFB4: - 659:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { - 615 .loc 1 659 0 + 661:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { + 615 .loc 1 661 0 616 .LVL66: - 661:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 617 .loc 1 661 0 + 663:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 617 .loc 1 663 0 618 0348 4AE10000 P2.H = _TX_buff_state; - 659:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { - 619 .loc 1 659 0 + 661:src/l502_user_process.c **** void hdma_send_done(uint32_t* addr, uint32_t size) { + 619 .loc 1 661 0 + BFIN GAS /tmp/ccBtsGqv.s page 30 + + 620 034c 00E80000 LINK 0; 621 .LCFI6: - BFIN GAS /tmp/ccG6eBVz.s page 30 - - - 661:src/l502_user_process.c **** TX_buff_state = TX_DONE; - 622 .loc 1 661 0 + 663:src/l502_user_process.c **** TX_buff_state = TX_DONE; + 622 .loc 1 663 0 623 0350 1860 R0 = 3 (X); 624 .LVL67: 625 0352 0AE13000 P2.L = _TX_buff_state; 626 0356 109B B [P2] = R0; - 662:src/l502_user_process.c **** ++streams_cnt[3]; - 627 .loc 1 662 0 + 664:src/l502_user_process.c **** ++streams_cnt[3]; + 627 .loc 1 664 0 628 0358 4AE10000 P2.H = _streams_cnt; 629 035c 0AE10000 P2.L = _streams_cnt; 630 0360 D0A0 R0 = [P2+12]; 631 0362 0864 R0 += 1; 632 0364 D0B0 [P2+12] = R0; - 664:src/l502_user_process.c **** stream_in_buf_free(size); - 633 .loc 1 664 0 + 666:src/l502_user_process.c **** stream_in_buf_free(size); + 633 .loc 1 666 0 634 0366 0130 R0 = R1; - 665:src/l502_user_process.c **** } - 635 .loc 1 665 0 + 667:src/l502_user_process.c **** } + 635 .loc 1 667 0 636 0368 01E80000 UNLINK; - 664:src/l502_user_process.c **** stream_in_buf_free(size); - 637 .loc 1 664 0 + 666:src/l502_user_process.c **** stream_in_buf_free(size); + 637 .loc 1 666 0 638 036c FFE24AFE jump.l _stream_in_buf_free; 639 .LVL68: 640 .LFE4: @@ -1771,42 +1773,42 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 644 .type _usr_out_proc_data, STT_FUNC; 645 _usr_out_proc_data: 646 .LFB3: - 623:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { - 647 .loc 1 623 0 + 625:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { + 647 .loc 1 625 0 648 .LVL69: 649 0370 7005 [--sp] = ( r7:6 ); 650 651 .LCFI7: - 628:src/l502_user_process.c **** ++streams_cnt[2]; - 652 .loc 1 628 0 + 630:src/l502_user_process.c **** ++streams_cnt[2]; + 652 .loc 1 630 0 653 0372 4AE10000 P2.H = _streams_cnt; - 623:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { - 654 .loc 1 623 0 + 625:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { + 654 .loc 1 625 0 655 0376 00E80300 LINK 12; 656 .LCFI8: - 628:src/l502_user_process.c **** ++streams_cnt[2]; - 657 .loc 1 628 0 + 630:src/l502_user_process.c **** ++streams_cnt[2]; + 657 .loc 1 630 0 658 037a 0AE10000 P2.L = _streams_cnt; - 623:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { - 659 .loc 1 623 0 + 625:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { + 659 .loc 1 625 0 660 037e 3030 R6 = R0; - 628:src/l502_user_process.c **** ++streams_cnt[2]; - 661 .loc 1 628 0 + 630:src/l502_user_process.c **** ++streams_cnt[2]; + 661 .loc 1 630 0 662 0380 90A0 R0 = [P2+8]; 663 .LVL70: 664 0382 0864 R0 += 1; - 623:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { - 665 .loc 1 623 0 + 625:src/l502_user_process.c **** uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) { + BFIN GAS /tmp/ccBtsGqv.s page 31 + + + 665 .loc 1 625 0 666 0384 82CE01CE R7 = ROT R1 BY 0 || - BFIN GAS /tmp/ccG6eBVz.s page 31 - - 666 90B00000 667 [P2+8] = R0 || 668 nop; 669 .LVL71: - 630:src/l502_user_process.c **** if (sport_tx_req_rdy()) { - 670 .loc 1 630 0 + 632:src/l502_user_process.c **** if (sport_tx_req_rdy()) { + 670 .loc 1 632 0 671 038c FFE33AFE call _sport_tx_req_rdy; 672 0390 000C cc =R0==0; 673 0392 0E18 if cc jump .L62; @@ -1814,13 +1816,13 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 675 0398 070A cc =R7<=R0 (iu); 676 039a 3806 if !cc R7 = R0; 677 .LVL72: - 637:src/l502_user_process.c **** sport_tx_start_req(data, size); - 678 .loc 1 637 0 + 639:src/l502_user_process.c **** sport_tx_start_req(data, size); + 678 .loc 1 639 0 679 039c 0630 R0 = R6; 680 039e 0F30 R1 = R7; 681 03a0 FFE330FE call _sport_tx_start_req; - 642:src/l502_user_process.c **** } - 682 .loc 1 642 0 + 644:src/l502_user_process.c **** } + 682 .loc 1 644 0 683 03a4 0730 R0 = R7; 684 03a6 01E80000 UNLINK; 685 03aa 3005 ( r7:6 ) = [sp++]; @@ -1830,12 +1832,12 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 689 03ac 1000 rts; 690 .LVL74: 691 .L62: - 630:src/l502_user_process.c **** if (sport_tx_req_rdy()) { - 692 .loc 1 630 0 + 632:src/l502_user_process.c **** if (sport_tx_req_rdy()) { + 692 .loc 1 632 0 693 03ae 0760 R7 = 0 (X); 694 .LVL75: - 642:src/l502_user_process.c **** } - 695 .loc 1 642 0 + 644:src/l502_user_process.c **** } + 695 .loc 1 644 0 696 03b0 0730 R0 = R7; 697 03b2 01E80000 UNLINK; 698 03b6 3005 ( r7:6 ) = [sp++]; @@ -1856,3712 +1858,3672 @@ BFIN GAS /tmp/ccG6eBVz.s page 1 712 03bc E305 [--sp] = ( r7:4, p5:3 ); 713 714 .LCFI11: - 715 03be 00E80400 LINK 16; - 716 .LCFI12: - BFIN GAS /tmp/ccG6eBVz.s page 32 + BFIN GAS /tmp/ccBtsGqv.s page 32 + 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ + 715 .loc 1 168 0 + 716 03be 45E10000 R5.H = _TX_buff_state; + 717 03c2 05E13000 R5.L = _TX_buff_state; 163:src/l502_user_process.c **** ++streams_cnt[0]; - 717 .loc 1 163 0 - 718 03c2 4AE10000 P2.H = _streams_cnt; - 719 03c6 0AE10000 P2.L = _streams_cnt; + 718 .loc 1 163 0 + 719 03c6 4AE10000 P2.H = _streams_cnt; + 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ + 720 .loc 1 168 0 + 721 03ca 0532 P0 = R5; 159:src/l502_user_process.c **** uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { - 720 .loc 1 159 0 - 721 03ca 78B2 [FP+36] = R0; + 722 .loc 1 159 0 + 723 03cc 00E80300 LINK 12; + 724 .LCFI12: 163:src/l502_user_process.c **** ++streams_cnt[0]; - 722 .loc 1 163 0 - 723 03cc 1091 R0 = [P2]; - 724 .LVL78: - 725 03ce 0864 R0 += 1; - 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ - 726 .loc 1 168 0 - 727 03d0 48E10000 P0.H = _TX_buff_state; - 163:src/l502_user_process.c **** ++streams_cnt[0]; - 728 .loc 1 163 0 - 729 03d4 1093 [P2] = R0; - 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ - 730 .loc 1 168 0 - 731 03d6 08E13000 P0.L = _TX_buff_state; - 732 03da 4099 R0 = B [P0] (X); - 733 03dc 4043 R0 = R0.B (Z); + 725 .loc 1 163 0 + 726 03d0 0AE10000 P2.L = _streams_cnt; 159:src/l502_user_process.c **** uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { - 734 .loc 1 159 0 - 735 03de 1930 R3 = R1; + 727 .loc 1 159 0 + 728 03d4 1834 I3 = R0; + 163:src/l502_user_process.c **** ++streams_cnt[0]; + 729 .loc 1 163 0 + 730 03d6 1091 R0 = [P2]; + 731 .LVL78: + 732 03d8 0864 R0 += 1; + 733 03da 1093 [P2] = R0; 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ - 736 .loc 1 168 0 - 737 03e0 180C cc =R0==3; - 738 03e2 3919 if cc jump .L95; - 739 .LVL79: - 740 .L64: + 734 .loc 1 168 0 + 735 03dc 4099 R0 = B [P0] (X); + 736 03de 4043 R0 = R0.B (Z); + 159:src/l502_user_process.c **** uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { + 737 .loc 1 159 0 + 738 03e0 3930 R7 = R1; + 168:src/l502_user_process.c **** if (TX_buff_state == TX_DONE){ + 739 .loc 1 168 0 + 740 03e2 180C cc =R0==3; + 741 03e4 0219 if cc jump .L94; + 742 .LVL79: + 743 .L64: 190:src/l502_user_process.c **** if (Proc_state.mode == TRANSPARENT){ - 741 .loc 1 190 0 - 742 03e4 4AE10000 P2.H = _Proc_state; - 743 03e8 0AE12C00 P2.L = _Proc_state; - 744 03ec 5099 R0 = B [P2] (X); - 745 03ee 4043 R0 = R0.B (Z); - 746 03f0 080C cc =R0==1; - 747 03f2 EC18 if cc jump .L96; - 748 .L66: + 744 .loc 1 190 0 + 745 03e6 50E10000 I0.H = _Proc_state; + 746 03ea 10E12C00 I0.L = _Proc_state; + 747 03ee 9032 P2 = I0; + 748 03f0 5099 R0 = B [P2] (X); + 749 03f2 4043 R0 = R0.B (Z); + 750 03f4 080C cc =R0==1; + 751 03f6 BC18 if cc jump .L95; + 752 .L66: 209:src/l502_user_process.c **** if (Proc_state.mode == AVG){ - 749 .loc 1 209 0 - 750 03f4 49E10000 P1.H = _Proc_state; - 751 03f8 09E12C00 P1.L = _Proc_state; - 752 03fc 4899 R0 = B [P1] (X); - 753 03fe 4043 R0 = R0.B (Z); - 754 0400 100C cc =R0==2; - 755 0402 1A18 if cc jump .L97; - 756 .LVL80: - 757 .L70: - 526:src/l502_user_process.c **** if (hdma_send_req_rdy()) { - 758 .loc 1 526 0 - 759 0404 F3BB [FP+-4] = R3; - 760 .LVL81: - 761 0406 FFE3FDFD call _hdma_send_req_rdy; - 762 .LVL82: - BFIN GAS /tmp/ccG6eBVz.s page 33 + 753 .loc 1 209 0 + 754 03f8 8832 P1 = I0; + 755 03fa 4899 R0 = B [P1] (X); + 756 03fc 4043 R0 = R0.B (Z); + 757 03fe 100C cc =R0==2; + 758 0400 1518 if cc jump .L96; + 759 .LVL80: + BFIN GAS /tmp/ccBtsGqv.s page 33 - 763 040a 000C cc =R0==0; - 764 040c F3B9 R3 = [FP+-4]; - 765 040e 0E18 if cc jump .L98; - 574:src/l502_user_process.c **** if (TX_buff_state == TODO_TX){ - 766 .loc 1 574 0 - 767 0410 49E10000 P1.H = _TX_buff_state; - 768 0414 09E13000 P1.L = _TX_buff_state; - 769 0418 4899 R0 = B [P1] (X); - 770 041a 4043 R0 = R0.B (Z); - 771 041c 080C cc =R0==1; - 772 041e 3819 if cc jump .L99; - 597:src/l502_user_process.c **** } - 773 .loc 1 597 0 - 774 0420 01E80000 UNLINK; - 775 0424 0330 R0 = R3; - 776 .LVL83: - 777 0426 A305 ( r7:4, p5:3 ) = [sp++]; - 778 - 779 .LCFI13: - 780 .LVL84: - 781 0428 1000 rts; - 782 .LVL85: - 783 .L98: - 526:src/l502_user_process.c **** if (hdma_send_req_rdy()) { - 784 .loc 1 526 0 - 785 042a 0360 R3 = 0 (X); - 786 .LVL86: - 597:src/l502_user_process.c **** } - 787 .loc 1 597 0 - 788 042c 01E80000 UNLINK; - 789 0430 0330 R0 = R3; - 790 0432 A305 ( r7:4, p5:3 ) = [sp++]; - 791 - 792 .LCFI14: - 793 .LVL87: - 794 0434 1000 rts; - 795 .LVL88: - 796 .L97: - 797 0436 47E10000 R7.H = _data_I; - 798 .LBB17: - 231:src/l502_user_process.c **** TX_buff_I = 0; - 799 .loc 1 231 0 - 800 043a 46E10000 R6.H = _TX_buff_I; - 801 .LBB19: - 242:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; - 802 .loc 1 242 0 - 803 043e 45E132C2 R5.H = 49714; - 804 0442 44E10000 R4.H = _TX_buff_shadow; - 805 0446 07E11800 R7.L = _data_I; - 806 .LBE19: - 231:src/l502_user_process.c **** TX_buff_I = 0; - 807 .loc 1 231 0 - 808 044a 06E11400 R6.L = _TX_buff_I; - 809 .LBB18: - 242:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; - 810 .loc 1 242 0 - 811 044e 05E12311 R5.L = 4387; - BFIN GAS /tmp/ccG6eBVz.s page 34 - - - 812 0452 04E10000 R4.L = _TX_buff_shadow; - 813 .LVL89: - 814 .L93: - 815 .LBE18: - 816 .LBE17: - 210:src/l502_user_process.c **** while(++data_I < size ){ - 817 .loc 1 210 0 - 818 0456 0732 P0 = R7; - 819 .LVL90: - 820 0458 0091 R0 = [P0]; - 821 .LVL91: - 822 045a 0864 R0 += 1; - 823 045c 0093 [P0] = R0; - 824 045e 0091 R0 = [P0]; - 825 0460 030A cc =R3<=R0 (iu); - 826 0462 D11B if cc jump .L70; - 827 .LBB23: - 211:src/l502_user_process.c **** uint32_t word = data[data_I]; - 828 .loc 1 211 0 - 829 0464 4BE10000 P3.H = _data_I; - 830 0468 0BE11800 P3.L = _data_I; - 831 046c 78AE P0 = [FP+36]; - 832 046e 5A91 P2 = [P3]; - 833 0470 905E P2 = P0 + (P2 << 2); - 834 0472 1191 R1 = [P2]; - 214:src/l502_user_process.c **** if (header == 0x00){ //digital_channel. switches LFSM state machine - 835 .loc 1 214 0 - 836 0474 82C64181 R0 = R1 >> 24; - 837 .LVL92: - 838 0478 000C cc =R0==0; - 839 047a 8014 if !cc jump .L71 (bp); + 760 .L70: + 528:src/l502_user_process.c **** if (hdma_send_req_rdy()) { + 761 .loc 1 528 0 + 762 0402 FFE3FFFD call _hdma_send_req_rdy; + 763 .LVL81: + 764 0406 000C cc =R0==0; + 765 0408 0B18 if cc jump .L97; + 576:src/l502_user_process.c **** if (TX_buff_state == TODO_TX){ + 766 .loc 1 576 0 + 767 040a 0D32 P1 = R5; + 768 040c 4899 R0 = B [P1] (X); + 769 040e 4043 R0 = R0.B (Z); + 770 0410 080C cc =R0==1; + 771 0412 0519 if cc jump .L98; + 599:src/l502_user_process.c **** } + 772 .loc 1 599 0 + 773 0414 0730 R0 = R7; + 774 0416 01E80000 UNLINK; + 775 041a A305 ( r7:4, p5:3 ) = [sp++]; + 776 + 777 .LCFI13: + 778 .LVL82: + 779 041c 1000 rts; + 780 .LVL83: + 781 .L97: + 528:src/l502_user_process.c **** if (hdma_send_req_rdy()) { + 782 .loc 1 528 0 + 783 041e 0760 R7 = 0 (X); + 599:src/l502_user_process.c **** } + 784 .loc 1 599 0 + 785 0420 0730 R0 = R7; + 786 0422 01E80000 UNLINK; + 787 0426 A305 ( r7:4, p5:3 ) = [sp++]; + 788 + 789 .LCFI14: + 790 .LVL84: + 791 0428 1000 rts; + 792 .LVL85: + 793 .L96: + 794 042a 4BE10000 P3.H = _data_I; + 795 042e 0BE11800 P3.L = _data_I; + 796 .LBB17: + 273:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0x + 797 .loc 1 273 0 + 798 0432 5BE10000 B3.H = _Proc_state; + 799 0436 51E10000 I1.H = _AVG_buff; + 800 043a FC63 R4 = -1 (X); 215:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; - 840 .loc 1 215 0 - 841 047c 49E10000 P1.H = _DY_SYN_2_value; - 842 0480 09E12500 P1.L = _DY_SYN_2_value; - 843 0484 4AE10000 P2.H = _DY_SYN_2_value_prev; - 844 0488 4899 R0 = B [P1] (X); - 845 .LVL93: - 846 048a 0AE12600 P2.L = _DY_SYN_2_value_prev; - 847 048e 109B B [P2] = R0; - 216:src/l502_user_process.c **** if (word & 0b1 << 17){ - 848 .loc 1 216 0 - 849 0490 8948 cc = !BITTST (R1,17); - 850 0492 951C if cc jump .L72 (bp); - 217:src/l502_user_process.c **** DY_SYN_2_value = 1; - 851 .loc 1 217 0 - 852 0494 0A60 R2 = 1 (X); - 222:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started - 853 .loc 1 222 0 - 854 0496 4043 R0 = R0.B (Z); - 217:src/l502_user_process.c **** DY_SYN_2_value = 1; - 855 .loc 1 217 0 - 856 0498 0A9B B [P1] = R2; - 222:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started - 857 .loc 1 222 0 - 858 049a 000C cc =R0==0; - 859 049c DD17 if !cc jump .L93 (bp); - BFIN GAS /tmp/ccG6eBVz.s page 35 + 801 .loc 1 215 0 + 802 043c 52E10000 I2.H = _DY_SYN_2_value; + 803 0440 59E10000 B1.H = _DY_SYN_2_value_prev; + 232:src/l502_user_process.c **** TX_buff_I = 0; + 804 .loc 1 232 0 + 805 0444 43E10000 R3.H = _TX_buff_I; + 806 .LBB20: + 243:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; + 807 .loc 1 243 0 + BFIN GAS /tmp/ccBtsGqv.s page 34 + 808 0448 46E132C2 R6.H = 49714; + 809 044c 5AE10000 B2.H = _TX_buff; + 810 .LBE20: + 811 .LBE17: + 210:src/l502_user_process.c **** while(++data_I < size ){ + 812 .loc 1 210 0 + 813 0450 4336 B0 = P3; + 814 .LBB22: + 273:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0x + 815 .loc 1 273 0 + 816 0452 1BE12C00 B3.L = _Proc_state; + 817 0456 11E10000 I1.L = _AVG_buff; + 818 045a 44E1FF00 R4.H = 255; + 215:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; + 819 .loc 1 215 0 + 820 045e 12E12500 I2.L = _DY_SYN_2_value; + 821 0462 19E12600 B1.L = _DY_SYN_2_value_prev; + 232:src/l502_user_process.c **** TX_buff_I = 0; + 822 .loc 1 232 0 + 823 0466 03E11400 R3.L = _TX_buff_I; + 824 .LBB21: + 243:src/l502_user_process.c **** AVG_buff[i] = 0xC2321123; + 825 .loc 1 243 0 + 826 046a 06E12311 R6.L = 4387; + 827 046e 1AE10000 B2.L = _TX_buff; + 828 .LVL86: + 829 .L92: + 830 .LBE21: + 831 .LBE22: + 210:src/l502_user_process.c **** while(++data_I < size ){ + 832 .loc 1 210 0 + 833 0472 1891 R0 = [P3]; + 834 .LVL87: + 835 0474 0864 R0 += 1; + 836 0476 1893 [P3] = R0; + 837 0478 1891 R0 = [P3]; + 838 047a 070A cc =R7<=R0 (iu); + 839 047c C31B if cc jump .L70; + 840 .LBB23: + 211:src/l502_user_process.c **** uint32_t word = data[data_I]; + 841 .loc 1 211 0 + 842 047e E832 P5 = B0; + 843 .LVL88: + 844 0480 8332 P0 = I3; + 845 .LVL89: + 846 0482 6A91 P2 = [P5]; + 847 0484 905E P2 = P0 + (P2 << 2); + 848 0486 1091 R0 = [P2]; + 849 .LVL90: + 214:src/l502_user_process.c **** if (header == 0x00){ //digital_channel. switches LFSM state machine + 850 .loc 1 214 0 + 851 0488 82C64083 R1 = R0 >> 24; + 852 048c 010C cc =R1==0; + 853 048e 4D14 if !cc jump .L71 (bp); + 215:src/l502_user_process.c **** DY_SYN_2_value_prev = DY_SYN_2_value; + 854 .loc 1 215 0 + 855 0490 8A32 P1 = I2; + BFIN GAS /tmp/ccBtsGqv.s page 35 + + + 856 0492 4999 R1 = B [P1] (X); + 857 .LVL91: + 858 0494 D132 P2 = B1; + 859 0496 119B B [P2] = R1; + 216:src/l502_user_process.c **** if (word & (0b1 << 17)){ + 860 .loc 1 216 0 + 861 0498 8848 cc = !BITTST (R0,17); + 862 049a 661C if cc jump .L72 (bp); + 217:src/l502_user_process.c **** DY_SYN_2_value = 1; + 863 .loc 1 217 0 + 864 049c 0A60 R2 = 1 (X); + 222:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started + 865 .loc 1 222 0 + 866 049e 4843 R0 = R1.B (Z); + 867 .LVL92: + 217:src/l502_user_process.c **** DY_SYN_2_value = 1; + 868 .loc 1 217 0 + 869 04a0 0A9B B [P1] = R2; + 222:src/l502_user_process.c **** if ((DY_SYN_2_value == 1)&& (DY_SYN_2_value_prev == 0)){ //new cycle started + 870 .loc 1 222 0 + 871 04a2 000C cc =R0==0; + 872 04a4 E717 if !cc jump .L92 (bp); 224:src/l502_user_process.c **** Proc_state.average_N ++; - 860 .loc 1 224 0 - 861 049e 48E10000 P0.H = _Proc_state; - 862 04a2 08E12C00 P0.L = _Proc_state; - 863 04a6 C0A8 R0 = W [P0+6] (X); - 864 04a8 0864 R0 += 1; - 231:src/l502_user_process.c **** TX_buff_I = 0; - 865 .loc 1 231 0 - 866 04aa 0E32 P1 = R6; - 224:src/l502_user_process.c **** Proc_state.average_N ++; - 867 .loc 1 224 0 - 868 04ac C0B4 W [P0+6] = R0; + 873 .loc 1 224 0 + 874 04a6 8032 P0 = I0; + 875 04a8 C0A8 R0 = W [P0+6] (X); + 876 04aa 0864 R0 += 1; + 877 04ac C0B4 W [P0+6] = R0; 225:src/l502_user_process.c **** Proc_state.AVG_buff_I = 0; - 869 .loc 1 225 0 - 870 04ae 0160 R1 = 0 (X); - 871 .LVL94: - 872 04b0 01B1 [P0+16] = R1; + 878 .loc 1 225 0 + 879 04ae 0268 P2 = 0 (X); + 880 04b0 02BD [P0+16] = P2; 226:src/l502_user_process.c **** Proc_state.LFSM_state = CYCLE_STARTED; - 873 .loc 1 226 0 - 874 04b2 82E60300 B [P0+3] = R2; - 229:src/l502_user_process.c **** Proc_state.AVG_state = FULLY_COMPLETED; - 875 .loc 1 229 0 - 876 04b6 1860 R0 = 3 (X); - 877 04b8 80E61400 B [P0+20] = R0; - 231:src/l502_user_process.c **** TX_buff_I = 0; - 878 .loc 1 231 0 - 879 04bc 0993 [P1] = R1; - 880 .LBB20: - 232:src/l502_user_process.c **** for (uint32_t i = 0; ((TX_buff_I < TX_BUFF_SIZE) && (i < AVG_BUFF_SIZE)); i++){ - 881 .loc 1 232 0 - 882 04be 0891 R0 = [P1]; - 883 04c0 21E10F27 R1 = 9999 (X); - 884 04c4 080A cc =R0<=R1 (iu); - 885 04c6 1911 if !cc jump .L100; - 886 04c8 4DE10000 P5.H = _TX_buff; - 887 04cc 4BE10000 P3.H = _AVG_buff; - 888 04d0 0468 P4 = 0 (X); - 889 04d2 0DE10000 P5.L = _TX_buff; - 890 04d6 0BE10000 P3.L = _AVG_buff; - 891 04da 28E1E803 P0 = 1000 (X); - 892 04de 21E10F27 R1 = 9999 (X); - 893 04e2 B2E01600 LSETUP (.L75, .L106) LC1 = P0; - 894 .L75: - 235:src/l502_user_process.c **** TX_buff[TX_buff_I++] = AVG_buff[i]; - 895 .loc 1 235 0 - 896 04e6 1632 P2 = R6; - 897 04e8 5191 P1 = [P2]; - 898 04ea 4AE10000 P2.H = _AVG_buff; - 899 04ee 0AE10000 P2.L = _AVG_buff; - 900 04f2 A25E P2 = P2 + (P4 << 2); - 901 04f4 1091 R0 = [P2]; - 902 04f6 4AE10000 P2.H = _TX_buff; - 903 04fa 0AE10000 P2.L = _TX_buff; - 904 04fe 8A5E P2 = P2 + (P1 << 2); - 905 0500 1093 [P2] = R0; - 906 0502 1632 P2 = R6; - 907 0504 096C P1 += 1; - BFIN GAS /tmp/ccG6eBVz.s page 36 + 881 .loc 1 226 0 + 882 04b2 82E60300 B [P0+3] = R2; + 227:src/l502_user_process.c **** if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended + 883 .loc 1 227 0 + 884 04b6 C1A8 R1 = W [P0+6] (X); + 885 04b8 80A8 R0 = W [P0+4] (X); + 886 04ba C942 R1 = R1.L (Z); + 887 04bc C042 R0 = R0.L (Z); + 888 04be 8109 cc =R1= AVG_BUFF_SIZE){ - 1002 .loc 1 274 0 - 1003 05aa 00A1 R0 = [P0+16]; - 1004 05ac 21E1E703 R1 = 999 (X); - 1005 05b0 080A cc =R0<=R1 (iu); - 1006 05b2 521F if cc jump .L93 (bp); - 275:src/l502_user_process.c **** Proc_state.AVG_state = STEP_COMPLETED; - 1007 .loc 1 275 0 - BFIN GAS /tmp/ccG6eBVz.s page 38 - - - 1008 05b4 1060 R0 = 2 (X); - 1009 05b6 80E61400 B [P0+20] = R0; - 1010 05ba 4E2F jump.s .L93; - 1011 .LVL103: - 1012 .L72: + 951 0522 0860 R0 = 1 (X); + 952 0524 009B B [P0] = R0; + 953 0526 A62F jump.s .L92; + 954 .LVL96: + 955 .L71: + 267:src/l502_user_process.c **** }else if(header == 0xD0){ //first phy channel + 956 .loc 1 267 0 + 957 0528 22E1D000 R2 = 208 (X); + 958 052c 1108 cc =R1==R2; + 959 052e A217 if !cc jump .L92 (bp); + 273:src/l502_user_process.c **** AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0x + 960 .loc 1 273 0 + 961 0530 8032 P0 = I0; + 962 0532 01AD P1 = [P0+16]; + 963 0534 02AD P2 = [P0+16]; + 964 0536 A932 P5 = I1; + 965 0538 2054 R0 = R0 & R4; + 966 .LVL97: + 967 053a 4D5E P1 = P5 + (P1 << 2); + 968 053c 955E P2 = P5 + (P2 << 2); + 969 053e 1191 R1 = [P2]; + 970 .LVL98: + 971 0540 0850 R0 = R0 + R1; + 972 0542 F963 R1 = -1 (X); + 973 0544 F14F R1 <<= 30; + 974 0546 2054 R0 = R0 & R4; + 975 0548 0856 R0 = R0 | R1; + 976 054a 0893 [P1] = R0; + 275:src/l502_user_process.c **** Proc_state.AVG_buff_I++; + 977 .loc 1 275 0 + 978 054c 00A1 R0 = [P0+16]; + 979 054e 0864 R0 += 1; + 980 0550 00B1 [P0+16] = R0; + 276:src/l502_user_process.c **** if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){ + 981 .loc 1 276 0 + 982 0552 00A1 R0 = [P0+16]; + 983 0554 21E1E703 R1 = 999 (X); + 984 0558 080A cc =R0<=R1 (iu); + 985 055a 8C1F if cc jump .L92 (bp); + 277:src/l502_user_process.c **** Proc_state.AVG_state = STEP_COMPLETED; + 986 .loc 1 277 0 + 987 055c 1060 R0 = 2 (X); + 988 055e C332 P0 = B3; + 989 0560 80E61400 B [P0+20] = R0; + 990 0564 872F jump.s .L92; + 991 .LVL99: + 992 .L72: 219:src/l502_user_process.c **** DY_SYN_2_value = 0; - 1013 .loc 1 219 0 - 1014 05bc 4BE10000 P3.H = _DY_SYN_2_value; - 1015 05c0 0060 R0 = 0 (X); - 1016 05c2 0BE12500 P3.L = _DY_SYN_2_value; - 1017 05c6 189B B [P3] = R0; - 1018 05c8 472F jump.s .L93; - 1019 .LVL104: - 1020 .L96: - 1021 .LBE23: + 993 .loc 1 219 0 + 994 0566 0060 R0 = 0 (X); + 995 .LVL100: + 996 0568 AA32 P5 = I2; + 997 056a 289B B [P5] = R0; + 998 056c 832F jump.s .L92; + 999 .LVL101: + 1000 .L95: + 1001 .LBE23: + BFIN GAS /tmp/ccBtsGqv.s page 38 + + 193:src/l502_user_process.c **** if (TX_buff_state == FILLING){ - 1022 .loc 1 193 0 - 1023 05ca 4BE10000 P3.H = _TX_buff_state; - 1024 05ce 0BE13000 P3.L = _TX_buff_state; - 1025 05d2 5899 R0 = B [P3] (X); - 1026 05d4 4043 R0 = R0.B (Z); - 1027 05d6 000C cc =R0==0; - 1028 05d8 0E17 if !cc jump .L66 (bp); - 194:src/l502_user_process.c **** data_I = 0; - 1029 .loc 1 194 0 - 1030 05da 47E10000 R7.H = _data_I; - 1031 05de 07E11800 R7.L = _data_I; - 1032 05e2 0732 P0 = R7; - 1033 .LVL105: + 1002 .loc 1 193 0 + 1003 056e 2D32 P5 = R5; + 1004 0570 6899 R0 = B [P5] (X); + 1005 0572 4043 R0 = R0.B (Z); + 1006 0574 000C cc =R0==0; + 1007 0576 4117 if !cc jump .L66 (bp); 195:src/l502_user_process.c **** TX_buff_I = 0; - 1034 .loc 1 195 0 - 1035 05e4 4CE10000 P4.H = _TX_buff_I; - 1036 05e8 0CE11400 P4.L = _TX_buff_I; + 1008 .loc 1 195 0 + 1009 0578 42E10000 R2.H = _TX_buff_I; + 1010 057c 02E11400 R2.L = _TX_buff_I; + 1011 0580 0232 P0 = R2; + 1012 .LVL102: 194:src/l502_user_process.c **** data_I = 0; - 1037 .loc 1 194 0 - 1038 05ec 0093 [P0] = R0; + 1013 .loc 1 194 0 + 1014 0582 4BE10000 P3.H = _data_I; + 1015 0586 0BE11800 P3.L = _data_I; + 1016 058a 1893 [P3] = R0; 195:src/l502_user_process.c **** TX_buff_I = 0; - 1039 .loc 1 195 0 - 1040 05ee 2093 [P4] = R0; + 1017 .loc 1 195 0 + 1018 058c 0093 [P0] = R0; 196:src/l502_user_process.c **** while((++data_I < size )&& (++TX_buff_I < TX_BUFF_SIZE)){ - 1041 .loc 1 196 0 - 1042 05f0 0091 R0 = [P0]; - 1043 05f2 0864 R0 += 1; - 1044 05f4 0093 [P0] = R0; - 1045 05f6 0091 R0 = [P0]; - 1046 05f8 030A cc =R3<=R0 (iu); - 1047 05fa 2618 if cc jump .L67; - 1048 05fc 21E10F27 R1 = 9999 (X); - 1049 0600 2091 R0 = [P4]; - 1050 0602 0864 R0 += 1; - 1051 0604 2093 [P4] = R0; - 1052 0606 2091 R0 = [P4]; - 1053 0608 080A cc =R0<=R1 (iu); - 1054 060a 1E10 if !cc jump .L67; - 1055 060c 4DE10000 P5.H = _TX_buff; - 1056 0610 0DE10000 P5.L = _TX_buff; + 1019 .loc 1 196 0 + 1020 058e 1891 R0 = [P3]; + 1021 0590 0864 R0 += 1; + 1022 0592 1893 [P3] = R0; + 1023 0594 1891 R0 = [P3]; + 1024 0596 070A cc =R7<=R0 (iu); + 1025 0598 2418 if cc jump .L67; + 1026 059a 21E10F27 R1 = 9999 (X); + 1027 059e 0091 R0 = [P0]; + 1028 05a0 0864 R0 += 1; + 1029 05a2 0093 [P0] = R0; + 1030 05a4 0091 R0 = [P0]; + 1031 05a6 080A cc =R0<=R1 (iu); + 1032 05a8 1C10 if !cc jump .L67; + 1033 05aa 4CE10000 P4.H = _TX_buff; + 1034 05ae 0CE10000 P4.L = _TX_buff; + 1035 05b2 21E10F27 R1 = 9999 (X); + 1036 05b6 0720 jump.s .L68; + 1037 .L100: + 1038 05b8 0091 R0 = [P0]; + 1039 05ba 0864 R0 += 1; + 1040 05bc 0093 [P0] = R0; + 1041 05be 0091 R0 = [P0]; + 1042 05c0 080A cc =R0<=R1 (iu); + 1043 05c2 0F10 if !cc jump .L67; + 1044 .L68: 198:src/l502_user_process.c **** TX_buff[TX_buff_I] = data[data_I]; - BFIN GAS /tmp/ccG6eBVz.s page 39 + 1045 .loc 1 198 0 + 1046 05c4 1232 P2 = R2; + 1047 05c6 AB32 P5 = I3; + 1048 05c8 5191 P1 = [P2]; + 1049 05ca 5A91 P2 = [P3]; + 1050 05cc 4C5E P1 = P4 + (P1 << 2); + 1051 05ce 955E P2 = P5 + (P2 << 2); + 1052 05d0 1091 R0 = [P2]; + BFIN GAS /tmp/ccBtsGqv.s page 39 - 1057 .loc 1 198 0 - 1058 0614 4432 P0 = P4; - 1059 0616 21E10F27 R1 = 9999 (X); - 1060 061a 0720 jump.s .L68; - 1061 .L101: + 1053 05d2 0893 [P1] = R0; 196:src/l502_user_process.c **** while((++data_I < size )&& (++TX_buff_I < TX_BUFF_SIZE)){ - 1062 .loc 1 196 0 - 1063 061c 0091 R0 = [P0]; - 1064 061e 0864 R0 += 1; - 1065 0620 0093 [P0] = R0; - 1066 0622 0091 R0 = [P0]; - 1067 0624 080A cc =R0<=R1 (iu); - 1068 0626 1010 if !cc jump .L67; - 1069 .L68: - 198:src/l502_user_process.c **** TX_buff[TX_buff_I] = data[data_I]; - 1070 .loc 1 198 0 - 1071 0628 1F32 P3 = R7; - 1072 062a 6191 P1 = [P4]; - 1073 062c 5A91 P2 = [P3]; - 1074 062e 7BAE P3 = [FP+36]; - 1075 0630 4D5E P1 = P5 + (P1 << 2); - 1076 0632 935E P2 = P3 + (P2 << 2); - 1077 0634 1091 R0 = [P2]; - 1078 0636 0893 [P1] = R0; - 196:src/l502_user_process.c **** while((++data_I < size )&& (++TX_buff_I < TX_BUFF_SIZE)){ - 1079 .loc 1 196 0 - 1080 0638 0F32 P1 = R7; - 1081 063a 0891 R0 = [P1]; - 1082 063c 0864 R0 += 1; - 1083 063e 0893 [P1] = R0; - 1084 0640 0891 R0 = [P1]; - 1085 0642 9809 cc =R0 MEM_SDRAM + /* Read-only sections, merged into text segment: */ + PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0)); . = SEGMENT_START("text-segment", 0x0); + .interp : { *(.interp) } + .note.gnu.build-id : { *(.note.gnu.build-id) } + .hash : { *(.hash) } + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } + .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } + .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } + .rel.data.rel.ro : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) } + .rela.data.rel.ro : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) } + .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } + .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } + .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } + .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } + .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } + .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) } + .rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) } + .rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) } + .rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) } + .rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) } + .rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) } + .rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) } + .rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } + .rel.iplt : + { + PROVIDE_HIDDEN (___rel_iplt_start = .); + *(.rel.iplt) + PROVIDE_HIDDEN (___rel_iplt_end = .); + } + .rela.iplt : + { + PROVIDE_HIDDEN (___rela_iplt_start = .); + *(.rela.iplt) + PROVIDE_HIDDEN (___rela_iplt_end = .); + } + .rel.plt : + { + *(.rel.plt) + } + .rela.plt : + { + *(.rela.plt) + } + .init : + { + KEEP (*(.init)) + KEEP (*basiccrt*(.text .text.*)) + } >MEM_L1_CODE =0 + .plt : { *(.plt) } + .iplt : { *(.iplt) } + .text : + { + *(.text.unlikely .text.*_unlikely) + *(.text.exit .text.exit.*) + *(.text.startup .text.startup.*) + *(.text.hot .text.hot.*) + *(.text .stub .text.* .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + + . = ALIGN( 64 ); + } >MEM_L1_CODE + .fini : + { + KEEP (*(.fini)) + } >MEM_L1_CODE + + . = ALIGN( 64 ); + + PROVIDE (___etext = .); + PROVIDE (__etext = .); + PROVIDE (_etext = .); + + .board_state : + { + _startfix_sect = .; + KEEP(*(board_state .board_state .board_state.*)) + . = _startfix_sect + 8196; + } >MEM_L1_DATA_A + + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } > MEM_L1_DATA_A + .rodata1 : { *(.rodata1) } + .sdata2 : + { + *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) + } + .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) } > MEM_L1_DATA_A + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } > MEM_L1_DATA_A + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); + /* Exception handling */ + .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } + /* Thread Local Storage sections */ + .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } + .preinit_array : + { + PROVIDE_HIDDEN (___preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (___preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (___init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE_HIDDEN (___init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (___fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) + PROVIDE_HIDDEN (___fini_array_end = .); + } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } > MEM_L1_DATA_A + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } > MEM_L1_DATA_A + .jcr : { KEEP (*(.jcr)) } > MEM_L1_DATA_A + .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } + .dynamic : { *(.dynamic) } + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + . = ALIGN( 64 ); + } > MEM_L1_DATA_A + .data1 : { *(.data1) } + .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata .sdata.* .gnu.linkonce.s.*) + } + __edata = .; PROVIDE (_edata = .); + ___bss_start = .; + .sbss : + { + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + } + .bss : + { + __bss_start = .; + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. + FIXME: Why do we need it? When there is no .bss section, we don't + pad the .data section. */ + . = ALIGN( 64 ); + __bss_end = .; + } > MEM_L1_DATA_A + . = ALIGN( 64 ); + + __end = .; PROVIDE (_end = .); + + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo .zdebug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames .zdebug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges .zdebug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames .zdebug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.* .zdebug_info) } + .debug_abbrev 0 : { *(.debug_abbrev .zdebug_abbrev) } + .debug_line 0 : { *(.debug_line .zdebug_line) } + .debug_frame 0 : { *(.debug_frame .zdebug_frame) } + .debug_str 0 : { *(.debug_str .zdebug_str) } + .debug_loc 0 : { *(.debug_loc .zdebug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo .zdebug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames .zdebug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames .zdebug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames .zdebug_typenames) } + .debug_varnames 0 : { *(.debug_varnames .zdebug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes .zdebug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges .zdebug_ranges) } + .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } + + __end = .; PROVIDE (_end = .); + __stack_start = ORIGIN(MEM_L1_SCRATCH); + __stack_end = ORIGIN(MEM_L1_SCRATCH) + 0x1000; +} diff --git a/src/complex.c b/src/complex.c new file mode 100644 index 0000000..d0f9a3f --- /dev/null +++ b/src/complex.c @@ -0,0 +1,23 @@ +#include "complex.h" +#include + +complex conv_from_polar(double r, double radians) { + complex result; + result.re = r * cos(radians); + result.im = r * sin(radians); + return result; +} + +complex add(complex left, complex right) { + complex result; + result.re = left.re + right.re; + result.im = left.im + right.im; + return result; +} + +complex multiply(complex left, complex right) { + complex result; + result.re = left.re*right.re - left.im*right.im; + result.im = left.re*right.im + left.im*right.re; + return result; +} \ No newline at end of file diff --git a/src/complex.h b/src/complex.h new file mode 100644 index 0000000..189661f --- /dev/null +++ b/src/complex.h @@ -0,0 +1,9 @@ + +typedef struct complex_t { + double re; + double im; +} complex; + +complex conv_from_polar(double r, double radians); +complex add(complex left, complex right); +complex multiply(complex left, complex right); \ No newline at end of file diff --git a/src/complex.o b/src/complex.o new file mode 100644 index 0000000..7ca904c Binary files /dev/null and b/src/complex.o differ diff --git a/src/fft.c b/src/fft.c new file mode 100644 index 0000000..5255b44 --- /dev/null +++ b/src/fft.c @@ -0,0 +1,147 @@ +#include "fft.h" +#include + +#define PI 3.1415926535897932384626434 + +complex* DFT_naive(complex* x, int N) { + complex* X = (complex*) malloc(sizeof(struct complex_t) * N); + int k, n; + for(k = 0; k < N; k++) { + X[k].re = 0.0; + X[k].im = 0.0; + for(n = 0; n < N; n++) { + X[k] = add(X[k], multiply(x[n], conv_from_polar(1, -2*PI*n*k/N))); + } + } + + return X; +} + +/** Implements the Good-Thomas FFT algorithm. + * + * @expects: N1 and N2 must be relatively prime + * @expects: N1*N2 = N + */ +complex* FFT_GoodThomas(complex* input, int N, int N1, int N2) { + int k1, k2, z; + + /* Allocate columnwise matrix */ + complex** columns = (complex**) malloc(sizeof(struct complex_t*) * N1); + for(k1 = 0; k1 < N1; k1++) { + columns[k1] = (complex*) malloc(sizeof(struct complex_t) * N2); + } + + /* Allocate rowwise matrix */ + complex** rows = (complex**) malloc(sizeof(struct complex_t*) * N2); + for(k2 = 0; k2 < N2; k2++) { + rows[k2] = (complex*) malloc(sizeof(struct complex_t) * N1); + } + + /* Reshape input into N1 columns (Using Good-Thomas Indexing) */ + for(z = 0; z < 30; z++) { + k1 = z % N1; + k2 = z % N2; + columns[k1][k2] = input[z]; + } + + /* Compute N1 DFTs of length N2 using naive method */ + for (k1 = 0; k1 < N1; k1++) { + columns[k1] = DFT_naive(columns[k1], N2); + } + + /* Transpose */ + for(k1 = 0; k1 < N1; k1++) { + for (k2 = 0; k2 < N2; k2++) { + rows[k2][k1] = columns[k1][k2]; + } + } + + /* Compute N2 DFTs of length N1 using naive method */ + for (k2 = 0; k2 < N2; k2++) { + rows[k2] = DFT_naive(rows[k2], N1); + } + + /* Flatten into single output (Using chinese remainder theorem) */ + complex* output = (complex*) malloc(sizeof(struct complex_t) * N); + + for(k1 = 0; k1 < N1; k1++) { + for (k2 = 0; k2 < N2; k2++) { + z = N1*k2 + N2*k1; + output[z%N] = rows[k2][k1]; + } + } + + /* Free all alocated memory except output and input arrays */ + for(k1 = 0; k1 < N1; k1++) { + free(columns[k1]); + } + for(k2 = 0; k2 < N2; k2++) { + free(rows[k2]); + } + free(columns); + free(rows); + return output; +} + +/** Implements the Cooley-Tukey FFT algorithm. + * + * @expects: N1*N2 = N + */ +complex* FFT_CooleyTukey(complex* input, int N, int N1, int N2) { + int k1, k2; + + /* Allocate columnwise matrix */ + complex** columns = (complex**) malloc(sizeof(struct complex_t*) * N1); + for(k1 = 0; k1 < N1; k1++) { + columns[k1] = (complex*) malloc(sizeof(struct complex_t) * N2); + } + + /* Allocate rowwise matrix */ + complex** rows = (complex**) malloc(sizeof(struct complex_t*) * N2); + for(k2 = 0; k2 < N2; k2++) { + rows[k2] = (complex*) malloc(sizeof(struct complex_t) * N1); + } + + /* Reshape input into N1 columns */ + for (k1 = 0; k1 < N1; k1++) { + for(k2 = 0; k2 < N2; k2++) { + columns[k1][k2] = input[N1*k2 + k1]; + } + } + + /* Compute N1 DFTs of length N2 using naive method */ + for (k1 = 0; k1 < N1; k1++) { + columns[k1] = DFT_naive(columns[k1], N2); + } + + /* Multiply by the twiddle factors ( e^(-2*pi*j/N * k1*k2)) and transpose */ + for(k1 = 0; k1 < N1; k1++) { + for (k2 = 0; k2 < N2; k2++) { + rows[k2][k1] = multiply(conv_from_polar(1, -2.0*PI*k1*k2/N), columns[k1][k2]); + } + } + + /* Compute N2 DFTs of length N1 using naive method */ + for (k2 = 0; k2 < N2; k2++) { + rows[k2] = DFT_naive(rows[k2], N1); + } + + /* Flatten into single output */ + complex* output = (complex*) malloc(sizeof(struct complex_t) * N); + for(k1 = 0; k1 < N1; k1++) { + for (k2 = 0; k2 < N2; k2++) { + output[N2*k1 + k2] = rows[k2][k1]; + } + } + + /* Free all alocated memory except output and input arrays */ + for(k1 = 0; k1 < N1; k1++) { + free(columns[k1]); + } + for(k2 = 0; k2 < N2; k2++) { + free(rows[k2]); + } + free(columns); + free(rows); + return output; +} \ No newline at end of file diff --git a/src/fft.h b/src/fft.h new file mode 100644 index 0000000..ee61c9f --- /dev/null +++ b/src/fft.h @@ -0,0 +1,5 @@ +#include "complex.h" + +complex* FFT_CooleyTukey(complex* x, int N, int N1, int N2); +complex* FFT_GoodThomas(complex* x, int N, int N1, int N2); +complex* DFT_naive(complex* x, int N); \ No newline at end of file diff --git a/src/fft.o b/src/fft.o new file mode 100644 index 0000000..680abeb Binary files /dev/null and b/src/fft.o differ diff --git a/src/l502_user_process.c b/src/l502_user_process.c index 525941d..03de4e1 100644 --- a/src/l502_user_process.c +++ b/src/l502_user_process.c @@ -213,7 +213,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { uint8_t header = (uint8_t)(word >> 24); if (header == 0x00){ //digital_channel. switches LFSM state machine DY_SYN_2_value_prev = DY_SYN_2_value; - if (word & 0b1 << 17){ + if (word & (0b1 << 17)){ DY_SYN_2_value = 1; }else{ DY_SYN_2_value = 0; @@ -224,8 +224,9 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { Proc_state.average_N ++; Proc_state.AVG_buff_I = 0; Proc_state.LFSM_state = CYCLE_STARTED; - //if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended - if (1){ + if (Proc_state.average_N >= Proc_state.average_N_max){ //whole average ended + Proc_state.average_N = 0; + //if (1){ Proc_state.AVG_state = FULLY_COMPLETED; //averaging completed => copy average results to TX_buff and start avg again TX_buff_I = 0; @@ -243,7 +244,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { } TX_buff_state = TODO_TX; - +/* for (uint32_t i = 0; i < TX_BUFF_SIZE; ++i){ TX_buff_shadow[i] = TX_buff[i]; } @@ -254,7 +255,7 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { // hdma_send_req_start(TX_buff, TX_BUFF_SIZE, 0); //TX_buff_state = TRANSMITTING; TX_buff_state = TX_DONE; - +*/ }else{ // Proc_state.AVG_state = STEP_RUNNING; @@ -269,8 +270,9 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) { if (1){ if (1){ // AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | (0x00FFFFFF & (AVG_buff[Proc_state.AVG_buff_I] + val)); - AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000 | val; + AVG_buff[Proc_state.AVG_buff_I] = 0xC0000000 | ((val + AVG_buff[Proc_state.AVG_buff_I]) & 0xFFFFFF); //AVG_buff[Proc_state.AVG_buff_I++] = 0xC0000000; + Proc_state.AVG_buff_I++; if (Proc_state.AVG_buff_I >= AVG_BUFF_SIZE){ Proc_state.AVG_state = STEP_COMPLETED; } @@ -839,7 +841,7 @@ void usr_cmd_process(t_l502_bf_cmd *cmd) { Proc_state.mode = AVG; Proc_state.mode_next = AVG; Proc_state.LFSM_state = CYCLE_UNKNOWN; - Proc_state.average_N_max = 3; + Proc_state.average_N_max = 30; // Proc_state.average_N_max = cmd->param; Proc_state.average_N = 0; Proc_state.TX_buff_I = 0; diff --git a/vdsp/bkp_l502_sdram_noinit.h b/vdsp/bkp_l502_sdram_noinit.h new file mode 100644 index 0000000..1a99b83 --- /dev/null +++ b/vdsp/bkp_l502_sdram_noinit.h @@ -0,0 +1 @@ +#pragma section("sdram_noinit", NO_INIT)