chenlh
2025-09-18 8445c54f01777513912d4c6d36c28e92a0ff33a0
src/main.cpp
@@ -76,9 +76,15 @@
      tob->toProc();
      UpdateOutput(iid, DMACount[iid]&0x1);
<<<<<<< HEAD
//      LP_transmit();
      ModulesAsynSetInterval(proc_secs);
      fir_acc_startup();
=======
      //LP_transmit();
//      ModulesAsynSetInterval(proc_secs);
//      fir_acc_startup();
>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
      clock_stop = clock();
      proc_secs = ((ufloat) (clock_stop - clock_start))/ CLOCKS_PER_SEC;
   }
@@ -87,7 +93,11 @@
      UpdateOutput(iid, DMACount[iid]&0x1);
   }
<<<<<<< HEAD
   ++DMACount[iid];
=======
   DMACount[iid]++;
>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
}
int main(int argc, char *argv[])
@@ -119,22 +129,27 @@
   memset(DMACount, 0, sizeof(DMACount));
   Message* spiMsg = new Message(8);
   //第一次启动上报特别是仿真的时候需要arm'重新发送消息.
   spiMsg->DspStatusPush(DSP_EMULATE_DEBUG, 0, 0);
   spiMsg->ReportDspStatus(&msg);
   SPI2_Init();
   fir_acc_init();
   //通知arm启动完成.
   //dir: pin12, High level DSP can receive data, low level DSP has data to send .
   //dir: pin12, High level DSP can receive data, low level DSP has data toz send .
   //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(GPIOB, GPIO_Pin5, GPIO_HIGH);
   u32 ddrspace = sram_free_space(SRAM_DDR, mem_any);
   printf("ddrspace:%d\n", ddrspace);
<<<<<<< HEAD
   //第一次启动上报特别是仿真的时候需要arm'重新发握手.
   spiMsg->DspStatusPush(DSP_EMULATE_DEBUG, 0, 0);
   spiMsg->ReportDspStatus(&msg);
   printf("free sram %d, L2 %d\n", sram_free_space(SRAM_DDR, mem_any), sram_free_space(SRAM_L2, mem_any));
=======
//   u32 ddrspace = sram_free_space(SRAM_DDR, mem_any);
//   printf("ddrspace:%d\n", ddrspace);
>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
   while(1) {
      asyn_proc_secs = ModulesAsynProcess();
@@ -170,25 +185,36 @@
      //clock state will change after running,it need check always.
      //about 1s
      if(++loop_cnt > 100000000){
         if(clock_check_count == DMACount[var.master_intr]) {
      if(++loop_cnt > 5e+6){
         if (var.clock_ok && clock_check_count == DMACount[var.master_intr]) {
            var.dsp_status = dsp_no_clock;
<<<<<<< HEAD
            spiMsg->DspStatusPush(DSP_RUNNING_STATUS, &var.dsp_status ,1);
=======
            spiMsg->DspStatusPush(DSP_CLOCK_STATUS, &var.dsp_status ,1);
>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
            spiMsg->ReportDspStatus(&msg);
            printf("clk0 ok\n");
         }
         loop_cnt =0;
         clock_check_count = DMACount[var.master_intr];
         printf("clk1 ok\n");
//         printf("clk1 ok\n");
      }
      if(!var.clock_ok && var.dsp_status == DSPStatus::dsp_running_ok && var.HandShakeSuccesful) {
         //notify arm to work normaly.
         spiMsg->DspStatusPush(DSP_CLOCK_STATUS, 0, 0);
         spiMsg->DspStatusPush(DSP_CLOCK_STATUS, &var.dsp_status, 1);
         request_topo_count = DMACount[var.master_intr] ;
         var.clock_ok = utrue;
<<<<<<< HEAD
         spiMsg->ReportDspStatus(&msg);
         printf("clk2 ok\n");
=======
//         printf("clk2 ok\n");
>>>>>>> 0d5b7df96a2ee186b7b085dca9cf9a33f791c430
      }
   }
}