From 49b3a79afedbf86a94d54de827f329c61eb19708 Mon Sep 17 00:00:00 2001 From: HUOHUO Date: Fri, 13 Jun 2025 07:56:15 -0700 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9TX=E4=BB=BB=E5=8A=A1=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=AE=9A=E6=97=B6=E5=81=8F=E7=A7=BB50->200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APE0/ApeTask/src/Fucp_Ape0_Init.s.c | 2 +- APELib/Receiver_bit/src/receiver_Bit_Proc.s.c | 1 - .../Receiver_sync/src/receiver_Sync_Proc.s.c | 4 ++-- .../Receiver_sync/src/receiver_Sync_Task.s.c | 14 +++++++++++++- .../src/receiver_Sync_First_Proc.s.c | 7 ++++++- Lib/OspLib/libape_spu.a | Bin 359532 -> 342692 bytes Platform/build/libape_spu.a | Bin 359532 -> 342692 bytes 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/APE0/ApeTask/src/Fucp_Ape0_Init.s.c b/APE0/ApeTask/src/Fucp_Ape0_Init.s.c index d7d6855..e4f73b1 100644 --- a/APE0/ApeTask/src/Fucp_Ape0_Init.s.c +++ b/APE0/ApeTask/src/Fucp_Ape0_Init.s.c @@ -35,7 +35,7 @@ void ape0_event_task(uint32_t addr, uint32_t size) osp_task_info_ex mgr_task1 = {PHY_TASK_SLOT_IND, "Slot_ind", PHY_TASK_PRI_SLOT_IND, 2048, OSP_TIMER_TYPE, 0x000, 0x3FF, 0, NULLPTR, (OSP_TASKENTRY_FUNC)Slot_ind_Task}; osp_task_info_ex mgr_task2 = - {PHY_TASK_TRANSIMITTER, "Transmitter", PHY_TASK_PRI_TRANSMITTER, 4096, OSP_TIMER_TYPE, 0x000, 0x3FF, 50, (OSP_TASKINIT_FUNC)Transmitter_Init, (OSP_TASKENTRY_FUNC)Transmitter_Task}; + {PHY_TASK_TRANSIMITTER, "Transmitter", PHY_TASK_PRI_TRANSMITTER, 4096, OSP_TIMER_TYPE, 0x000, 0x3FF, 200, (OSP_TASKINIT_FUNC)Transmitter_Init, (OSP_TASKENTRY_FUNC)Transmitter_Task}; osp_task_info_ex mgr_task3 = {PHY_TASK_TEST, "Test_Task", PHY_TASK_PRI_TEST, 4096, OSP_TIMER_TYPE, 0x000, 0x3FF, 50, NULL, (OSP_TASKENTRY_FUNC)Test_Task}; diff --git a/APELib/Receiver_bit/src/receiver_Bit_Proc.s.c b/APELib/Receiver_bit/src/receiver_Bit_Proc.s.c index 622a716..a7ac9f8 100644 --- a/APELib/Receiver_bit/src/receiver_Bit_Proc.s.c +++ b/APELib/Receiver_bit/src/receiver_Bit_Proc.s.c @@ -162,7 +162,6 @@ void Receiver_Bit_Proc( counter = 0; else counter = counter + 1; - LOG_ERROR_S("CNT%d\n",counter); STORE_EX_W(res_counter_ptr, counter); diff --git a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c index bde4342..d0cf2cb 100644 --- a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c +++ b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c @@ -625,8 +625,8 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot, uint32_t proc_type) data_send2symb_task[task_idx].transform_para_imag[3] = transform_get_thita4_imag(); g_proc_id++; - LOG_ERROR_S("data1 %d 0x%08x %d 0x%08x %d\n", proc_head, data_send2symb_task[task_idx].data_section0_ptr, frame_head_offset, - (data_send2symb_task[task_idx].data_section0_ptr + (data_send2symb_task[task_idx].data_section0_length<<2)), data_send2symb_task[task_idx].data_section1_length); + //LOG_ERROR_S("data1 %d 0x%08x %d 0x%08x %d\n", proc_head, data_send2symb_task[task_idx].data_section0_ptr, frame_head_offset, + // (data_send2symb_task[task_idx].data_section0_ptr + (data_send2symb_task[task_idx].data_section0_length<<2)), data_send2symb_task[task_idx].data_section1_length); //为了适配SYMB接口,如果数据是两段,搬移成一块 if(2 == data_send2symb_task[task_idx].num_data_section) diff --git a/APELib/Receiver_sync/src/receiver_Sync_Task.s.c b/APELib/Receiver_sync/src/receiver_Sync_Task.s.c index a5d18e1..ba5b8dd 100644 --- a/APELib/Receiver_sync/src/receiver_Sync_Task.s.c +++ b/APELib/Receiver_sync/src/receiver_Sync_Task.s.c @@ -26,7 +26,19 @@ void Receiver_Sync_Task() uint16_t end_us; RUN_CNT(TRACE_RECEIVER_SYNC_ADDR, 0); - + // volatile uint32_t temp = LOAD_EX_W(JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR); + // volatile uint32_t temp1; + // while(1) + // { + // temp1 = LOAD_EX_W(JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR); + // if(temp != temp1) + // { + // uint32_t a = get_tx_nr_slot_cycle(); + // uint32_t b = get_tx_nr_slot(); + // LOG_ERROR_S("%d %d\n", b, a); + // temp = temp1; + // } + // } //6. 计算流程 Receiver_Sync_Proc(); diff --git a/APELib/Receiver_sync_first/src/receiver_Sync_First_Proc.s.c b/APELib/Receiver_sync_first/src/receiver_Sync_First_Proc.s.c index ca28e75..a89d08a 100644 --- a/APELib/Receiver_sync_first/src/receiver_Sync_First_Proc.s.c +++ b/APELib/Receiver_sync_first/src/receiver_Sync_First_Proc.s.c @@ -208,7 +208,12 @@ void Receiver_First_Sync_Proc(receiver_sync2first_sync_t* msg_ptr, uint32_t msg_ (uint64_t)JESD_NRFDD_RX_SLOT_SRC0_DATA_ADDR,//第一次固定搬移到dm0 (61440)<<2, DMA_TAG_G2G, - 1); + 1); + volatile uint32_t wait_time = Time_offset(0); + while(wait_time < 500000) + { + wait_time = Time_offset(0); + } ape_csu_dma_1D_G2L_ch2ch3_transfer((uint64_t)(src_addr1), (uint64_t)JESD_NRFDD_RX_SLOT_SRC1_DATA_ADDR,//第一次固定搬移到dm0 (2048)<<2, diff --git a/Lib/OspLib/libape_spu.a b/Lib/OspLib/libape_spu.a index a1724a5a6a51ef63b04be963cdc3eb75e5e59bc2..b3359c0b9a03ad6d7292378da32f0b133c744865 100644 GIT binary patch delta 3196 zcmcK6e@s}Es**~BpxF>ZDpy}kOHM2v$f1};%!u!dV;Hk760z8@Hoqz);-z^dhwJ^qlArKx! zpAUp-$>WlKkU$ts{q%(YlYF}vg!>>k2S`x&M8-iNvp~MvBzYB(l;N3k761vHJd>hX ztdaj+wc7+_w(Y$R#M?PhtNNDjko`eN^Yo56fK2867$7qwlhX&`fnB-?WM*=*6>5mQMvcZs+NG~#w<1kg(eFcXLV0aHT_0tn_Ne8`qZG|m$|$laLGK|G zdp0T=)8C9%ddzf_UWr}GO!MuC6`AKFdVAiJw0)k7eHd*(bVu|m79OWX?0iflQtF;3 z2HKafh^<__1<{y=8-q7jZ>w=HElplcgOje(+o>Ng&%y*u z|46D)^lQZgnxASFUFGhrb+j?{g`lma)!V>kqkT53M*SDfu&2`-wlZ2RMbY(=iONza zZI>+cMae+FljhM+)${COq*ldQ6AYGyE--wnOM3 z@7|9bI$m`GML782Yp7nspT34P3wV`AXwmQk3D|?VuT$twobfN?s+nBG p#Fmkk_0KyT+#q&_D3_iRec`7qe~u)_ZgPZzX{3zsBaPxY@;4uYpMC%U delta 15935 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⋙_N#iD?D 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 diff --git a/Platform/build/libape_spu.a b/Platform/build/libape_spu.a index a1724a5a6a51ef63b04be963cdc3eb75e5e59bc2..b3359c0b9a03ad6d7292378da32f0b133c744865 100644 GIT binary patch delta 3196 zcmcK6e@s}Es**~BpxF>ZDpy}kOHM2v$f1};%!u!dV;Hk760z8@Hoqz);-z^dhwJ^qlArKx! zpAUp-$>WlKkU$ts{q%(YlYF}vg!>>k2S`x&M8-iNvp~MvBzYB(l;N3k761vHJd>hX ztdaj+wc7+_w(Y$R#M?PhtNNDjko`eN^Yo56fK2867$7qwlhX&`fnB-?WM*=*6>5mQMvcZs+NG~#w<1kg(eFcXLV0aHT_0tn_Ne8`qZG|m$|$laLGK|G zdp0T=)8C9%ddzf_UWr}GO!MuC6`AKFdVAiJw0)k7eHd*(bVu|m79OWX?0iflQtF;3 z2HKafh^<__1<{y=8-q7jZ>w=HElplcgOje(+o>Ng&%y*u z|46D)^lQZgnxASFUFGhrb+j?{g`lma)!V>kqkT53M*SDfu&2`-wlZ2RMbY(=iONza zZI>+cMae+FljhM+)${COq*ldQ6AYGyE--wnOM3 z@7|9bI$m`GML782Yp7nspT34P3wV`AXwmQk3D|?VuT$twobfN?s+nBG p#Fmkk_0KyT+#q&_D3_iRec`7qe~u)_ZgPZzX{3zsBaPxY@;4uYpMC%U delta 15935 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⋙_N#iD?D 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