| | |
| | | #include "queue.h" |
| | | #include "f2f.h" |
| | | #include "var_state.h" |
| | | #include "tob.h" |
| | | #include "tg/module_def.h" |
| | | #include "tg/tg_scene.h" |
| | | |
| | | //全局变量 |
| | | #define MAX_INTR 100 |
| | |
| | | GPIO_SetOutPut(GPIOB, GPIO_Pin10, level); |
| | | } |
| | | |
| | | |
| | | /* |
| | | * 128 · |
| | | UpdateInput && UpdateOutput 7.37% |
| | |
| | | * */ |
| | | extern "C" uvoid AudioProcCallBack (u32 iid) |
| | | { |
| | | //ToB* tob = ToB::GetInstance(); |
| | | ToB* tob = ToB::GetInstance(); |
| | | ufloat clock_start,clock_stop; |
| | | VarState& var = VarState::GetInstance(); |
| | | |
| | | //if(tob == NULL) return ; |
| | | if(var.master_intr == iid){ |
| | | var.dsp_status = DSPStatus::dsp_running_ok; |
| | | } |
| | | if(tob == NULL) return ; |
| | | |
| | | if(var.TopoLoading){ |
| | | MuteOutput(); |
| | | } else if(var.master_intr == iid){ |
| | | } |
| | | else if(var.master_intr == iid){ |
| | | clock_start = clock(); |
| | | UpdateInput(iid, DMACount[iid]&0x1); |
| | | //tob->toProc(); |
| | | tob->toProc(); |
| | | |
| | | UpdateOutput(iid, DMACount[iid]&0x1); |
| | | //LP_transmit(); |
| | | ModulesAsynSetInterval(proc_secs); |
| | | fir_acc_startup(); |
| | | // ModulesAsynSetInterval(proc_secs); |
| | | // fir_acc_startup(); |
| | | clock_stop = clock(); |
| | | proc_secs = ((ufloat) (clock_stop - clock_start))/ CLOCKS_PER_SEC; |
| | | } |
| | |
| | | UpdateInput(iid, DMACount[iid]&0x1); |
| | | UpdateOutput(iid, DMACount[iid]&0x1); |
| | | } |
| | | |
| | | DMACount[iid]++; |
| | | } |
| | | |
| | |
| | | |
| | | //通知arm启动完成. |
| | | //dir: pin12, High level DSP can receive data, low level DSP has data to send . |
| | | //busy: pin13, low level DSP is in busy state and cannot receive and send data, high level is free. |
| | | //busy: pin13/PB5, low level DSP is in busy state and cannot receive and send data, high level is free. |
| | | GPIO_SetOutPut(GPIOA, GPIO_Pin12, GPIO_HIGH); |
| | | GPIO_SetOutPut(GPIOA, GPIO_Pin13, GPIO_HIGH); |
| | | GPIO_SetOutPut(GPIOB, GPIO_Pin5, GPIO_HIGH); |
| | | |
| | | u32 ddrspace = sram_free_space(SRAM_DDR, mem_any); |
| | | printf("ddrspace:%d\n", ddrspace); |
| | | |
| | | while(1) { |
| | | asyn_proc_secs = ModulesAsynProcess(); |
| | |
| | | ledCount = DMACount[var.master_intr]; |
| | | |
| | | cpu = cpu_utility()*100; //all modules execute time.; |
| | | mem = (1- space_unused()/total_mem)*10000; |
| | | mem = (1.0f - (float)space_unused()/total_mem)*10000; |
| | | |
| | | spiMsg->DspStatusPush(DSP_MEM_UTILITY, &mem, 1); |
| | | spiMsg->DspStatusPush(DSP_CPU_UTILITY, &cpu, 1); |
| | | spiMsg->DspStatusPush(DSP_CLOCK_STATUS,&var.dsp_status ,1); |
| | | spiMsg->DspStatusPush(DSP_RUNNING_STATUS,&var.dsp_status ,1); |
| | | |
| | | spiMsg->ReportDspStatus(&msg); |
| | | } |
| | |
| | | if(++loop_cnt > 100000000){ |
| | | if(clock_check_count == DMACount[var.master_intr]) { |
| | | var.dsp_status = dsp_no_clock; |
| | | spiMsg->DspStatusPush(DSP_CLOCK_STATUS,&var.dsp_status ,1); |
| | | spiMsg->DspStatusPush(DSP_CLOCK_STATUS, &var.dsp_status ,1); |
| | | spiMsg->ReportDspStatus(&msg); |
| | | } |
| | | loop_cnt =0; |
| | | clock_check_count = DMACount[var.master_intr]; |
| | | printf("clk1 ok\n"); |
| | | } |
| | | |
| | | |
| | |
| | | spiMsg->DspStatusPush(DSP_CLOCK_STATUS, 0, 0); |
| | | request_topo_count = DMACount[var.master_intr] ; |
| | | var.clock_ok = utrue; |
| | | printf("clk2 ok\n"); |
| | | } |
| | | } |
| | | |