From 6c9db56c250f29fa2b975f3251e48d90b46567c7 Mon Sep 17 00:00:00 2001 From: HUOHUO Date: Fri, 6 Jun 2025 22:52:10 -0700 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=9B=9E=E9=80=80=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E7=A9=BA=E9=97=B4=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Receiver_sync/src/receiver_Sync_Proc.s.c | 22 ++++++++++-------- Common/inc/mem_def.h | 21 +++++++++-------- Lib/OspLib/libape_spu.a | Bin 343330 -> 343330 bytes Lib/OspLib/libecs_rfm_spu0.a | Bin 177484 -> 177452 bytes Platform/build/ecs_rfm_spu0.out | Bin 143112 -> 143112 bytes Platform/build/ecs_rfm_spu1.out | Bin 935616 -> 935616 bytes Platform/build/libape_spu.a | Bin 343330 -> 343330 bytes Platform/build/libecs_rfm_spu0.a | Bin 177484 -> 177452 bytes Platform/build/libpet_rfm_spu1.a | Bin 159768 -> 159736 bytes 9 files changed, 23 insertions(+), 20 deletions(-) diff --git a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c index 205cdfe..ffac9af 100644 --- a/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c +++ b/APELib/Receiver_sync/src/receiver_Sync_Proc.s.c @@ -234,7 +234,7 @@ void Receiver_Sync_Proc( (uint64_t)DM_TO_CSU_ADDR(cur_in_addr_data), (30720)<<2, DMA_TAG_G2L, - 0); + 1); } @@ -249,10 +249,10 @@ void Receiver_Sync_Proc( MPU_ADDR(data_out_addr), 30720, 16); - if(0 == loop_idx) //流水第一次数据搬入完成后再开始第一次调用 - { + // if(0 == loop_idx) //流水第一次数据搬入完成后再开始第一次调用 + // { ape_csu_task_lookup(DMA_TAG_G2L,1); - } + // } ape_csu_task_lookup(DMA_TAG_L2G,1); if(loop_idx < 3) { @@ -260,7 +260,7 @@ void Receiver_Sync_Proc( (uint64_t)DM_TO_CSU_ADDR(nxt_in_addr+16*4), (30720)<<2, DMA_TAG_G2L, - 0); + 1); } SVRReg[0] = MPU_ADDR(cfg_addr); Decimation_LTEAsm(SVRReg); @@ -272,7 +272,7 @@ void Receiver_Sync_Proc( (uint64_t)(dec_base_out_addr + loop_idx*(30720*2)), (30720)<<1, DMA_TAG_L2G, - 0); + 1); } //最后一次数据需要保证搬移完成 ape_csu_task_lookup(DMA_TAG_L2G, 1); @@ -623,14 +623,15 @@ 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\n", proc_head, data_send2symb_task[task_idx].data_section0_ptr, frame_head_offset); + 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) { ape_csu_task_lookup(DMA_TAG_G2G,1); ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(data_send2symb_task[task_idx].data_section1_ptr), - (uint64_t)(data_send2symb_task[task_idx].data_section0_ptr + data_send2symb_task[task_idx].data_section0_length), + (uint64_t)(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)<<2, DMA_TAG_G2G, 1); @@ -691,13 +692,14 @@ void Receiver_Fine_Sync_Proc(uint32_t sfn, uint32_t slot, uint32_t proc_type) data_send2symb_task[task_idx].transform_para_imag[2] = transform_get_thita3_imag(); data_send2symb_task[task_idx].transform_para_imag[3] = transform_get_thita4_imag(); g_proc_id++; - LOG_ERROR_S("data2 %d 0x%08x %d\n", proc_head, data_send2symb_task[task_idx].data_section0_ptr, frame_head_offset); + LOG_ERROR_S("data2 %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) { ape_csu_task_lookup(DMA_TAG_G2G,1); ape_csu_dma_1D_G2L_ch0ch1_transfer((uint64_t)(data_send2symb_task[task_idx].data_section1_ptr), - (uint64_t)(data_send2symb_task[task_idx].data_section0_ptr + data_send2symb_task[task_idx].data_section0_length), + (uint64_t)(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)<<2, DMA_TAG_G2G, 1); diff --git a/Common/inc/mem_def.h b/Common/inc/mem_def.h index 7b3fb6d..502fb4b 100644 --- a/Common/inc/mem_def.h +++ b/Common/inc/mem_def.h @@ -79,7 +79,7 @@ /************************************SM4--1.5M***********************************************/ - +/* #define RECEIVER_BASE (0x71000000) //4k对齐 #define RECEIVER_SYNC2SYMB_BUFFER0_ADDR (RECEIVER_BASE) //0x0a200000 #define RECEIVER_SYNC2SYMB_BUFFER1_ADDR (RECEIVER_SYNC2SYMB_BUFFER0_ADDR + TIME_DATA_SLOT_LEN)//0x0a23c0000 @@ -89,9 +89,9 @@ #define RECEIVER_SYNC2SYMB_BUFFER5_ADDR (RECEIVER_SYNC2SYMB_BUFFER4_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR (RECEIVER_SYNC2SYMB_BUFFER5_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t) +*/ -/* #define RECEIVER_BASE (SM4_BASE) //4k对齐 #define RECEIVER_SYNC2SYMB_BUFFER0_ADDR (RECEIVER_BASE) //0x0a200000 #define RECEIVER_SYNC2SYMB_BUFFER1_ADDR (RECEIVER_SYNC2SYMB_BUFFER0_ADDR + TIME_DATA_SLOT_LEN)//0x0a23c0000 @@ -100,11 +100,11 @@ #define RECEIVER_SYNC2SYMB_BUFFER4_ADDR (RECEIVER_SYNC2SYMB_BUFFER3_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYMB_BUFFER5_ADDR (RECEIVER_SYNC2SYMB_BUFFER4_ADDR + TIME_DATA_SLOT_LEN) #define RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR (RECEIVER_SYNC2SYMB_BUFFER5_ADDR + TIME_DATA_SLOT_LEN) -#define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t) -*/ + + /************************************SM5--1.5M***********************************************/ -#define RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR (SM5_BASE) -//#define RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR (RECEIVER_SYNC2SYNC_FIRST_INF_ADDR + 0x1000) //LEN: sizeof(receiver_sync_status_t) +//#define RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR (SM5_BASE) +#define RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR (RECEIVER_SYNC2SYMB_BUFFER_REV_ADDR + TIME_DATA_SLOT_LEN) //LEN: sizeof(receiver_sync_status_t) #ifdef CORE_ODD #define RECEIVER_SYMB2BIT_BUFFER0_ADDR (RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR + 0*SM5_SYMB2_BIT_LEN) #define RECEIVER_SYMB2BIT_BUFFER1_ADDR (RECEIVER_SYMB2BIT_BUFFER_BASE_ADDR + 1*SM5_SYMB2_BIT_LEN) @@ -120,10 +120,10 @@ //接收端数据来源选择 //---------------TX RX JESD地址接口--------------------------------------------------------- -//#define JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR (0x60F00000) //0x1E0000 -//#define JESD_NRFDD_TX_SLOT_ODD_DATA_ADDR (0x610E0000) //0x1E0000 -#define JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR (SM4_BASE) //0x1E0000 -#define JESD_NRFDD_TX_SLOT_ODD_DATA_ADDR (SM4_BASE+0x78000) //0x1E0000 +#define JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR (0x60F00000) //0x1E0000 +#define JESD_NRFDD_TX_SLOT_ODD_DATA_ADDR (0x610E0000) //0x1E0000 +// #define JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR (SM4_BASE) //0x1E0000 +// #define JESD_NRFDD_TX_SLOT_ODD_DATA_ADDR (SM4_BASE+0x78000) //0x1E0000 #ifdef TX_RX_LOOP #define JESD_NRFDD_RX_SLOT_EVEN_DATA_ADDR (JESD_NRFDD_TX_SLOT_EVEN_DATA_ADDR) @@ -141,6 +141,7 @@ #define JESD_NRFDD_RX_SLOT_SRC1_DATA_ADDR (0x6BFFC000) // 2048*4 用于暂存数据供first_sync处理 //---------------APE4 RECV START FIRSTSYNC FLAG--------------------------------------------- #define RECV_FIRST_SYNC_START_FLAG (0x82000000) //通过手动输入来开始接收端第一次同步 devmem 0x82000000 0xa5a55a5a 32 +#define RECEIVER_SYNC2SYNC_FIRST_INF_ADDR (0x82001000) //LEN: sizeof(receiver_sync_status_t) //---------------APE7 PCIE TO APE4 sync_proc #define TRANSFORM_REF_PARA_PCIE2SYNC_ADDR (0x83000000) diff --git a/Lib/OspLib/libape_spu.a b/Lib/OspLib/libape_spu.a index 05fff2a5dad8c8a3f55861f3dafcbc2f17ce20c5..47816bd0be5b953f721cc2f4fbb8ebb06f4e843b 100644 GIT binary patch delta 104 zcmZ4VOJvb6k%lddvGR_VmZpi8hAD}uiAJer7Usr=$rh%Dsg{;zCTZr$mKH|I=EkPR zX{p8xexW`-3`Pb+?1^`~p B9QObK delta 104 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 diff --git a/Platform/build/ecs_rfm_spu0.out b/Platform/build/ecs_rfm_spu0.out index c8c9b78055d0088760deddf957e69c2bf1c65aa1..6e86b3bcbb982283c6148fa3c8ff9d7c4200c682 100644 GIT binary patch delta 1135 zcmaKpT}V@57{}k|-CA>oX_2iJ>DII_Gu`}JMTJF>*(tNSXnmmDBC@ytgxxRveR_cWyONJL3yN+0=WOZwuLI{}JvF?WLh>JSlA9`f!$^ zKg#BlQM&NyJ9=jl3Fz{gl)exmHda+N3pO zT|gh6lZJn0>Zz^$dJ>EoX=PA0B|s&mIW2N^A`IxMCn%OALx65PFF#L)zL}=VAREuX z!978_Eel#sq`bTZgphRgrKCe#6ooX{FRzcnx&&)0mjC<8H}1jkgn2GkeuXR7Tj8s4 z_zH>&ow=T({9K>QRgky4(Bmp{cnY2Q&fPwz*!2iLi+ztl5Y12E)l^50BY#m&f$}(V zmgE&JaTLm5oVeG*t@od6LR4 z7#rg1r;yJ?foSgKc!7(uZx~j9wHtls$N6NUZbF>T8}Z(IU@VAsMm0T4N612yX>3QX z!uoWzo`pOad7{dB$mMb0FGHRiS6_|%0LReurN}GLe~SA3W*yl?22hZ!CbpxX4h0%} zk=Uq8WO=n*qU uAT75TJ8G9v7D+`;Q9G={iOSH?qO!7Bl~_9hm!V3`7zGBca(EOxEB^w$sVKAn delta 1135 zcmaKpNla5w6o&7)Em*3-q5*0(N)Zea(Dqpr#Wq;@qtQH>?!nmT7#ylz=)(*l}v2@?*8-oA`{C_vBA(eCYJd4 zbC0O+-p$+^?}o;-Eqqe_EUIbXO2sf zH*gGSfj`*ybAp!A#`bs^&{4Zr*2jU9Qo~-kd?@s2X}(t~Fo1_XX_KEC;M!=t-OC2k zvGIJbd^igl4kdiN4TO*s;p-5v=bqHFP1a1Ktszi69y^Ve9qp}|$4^y}S z?a`=s6Y|y$AgX#HZlF#s?St81K7js-Q98e|PE3@JR=WQV7(0$~I>kLkLkPuZDyJbc zj3+DcEadUXLlm|lua9~^6FDy`?m%wAvTFVUKEn~|R(tNU1i^R7Zx_f>^)qm=jo?yx5)tGXj=?Lk)89GSBddAL$GPfN(lDA~x| zdTc{26Pf!9=Ep1fk-67mT-Doy{!mms{3fX|3}!eZRfqAX?edW@tf8<;`t}JXLyeUF u8OB+cV?}i{kwG$%6O;=1*ii;nFew}v%q~@bhKpdA())oytL*Ow*POpTk1CA- diff --git a/Platform/build/ecs_rfm_spu1.out b/Platform/build/ecs_rfm_spu1.out index f85ed7d9fde6e191235fb3b99bbf55e493d039f6..41313bbf4ec5bb658e4c859fda99037b83b7fd3c 100644 GIT binary patch delta 13846 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 G>i+?Mve(7{ delta 13609 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 diff --git a/Platform/build/libape_spu.a b/Platform/build/libape_spu.a index 05fff2a5dad8c8a3f55861f3dafcbc2f17ce20c5..47816bd0be5b953f721cc2f4fbb8ebb06f4e843b 100644 GIT binary patch delta 104 zcmZ4VOJvb6k%lddvGR_VmZpi8hAD}uiAJer7Usr=$rh%Dsg{;zCTZr$mKH|I=EkPR zX{p8xexW`-3`Pb+?1^`~p B9QObK delta 104 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 diff --git a/Platform/build/libpet_rfm_spu1.a b/Platform/build/libpet_rfm_spu1.a index 82efd22464c970ca3bde7f32ce7bfa84a9c05497..85e31aad8ec563abd7e02c4249d99ed37309477c 100644 GIT binary patch delta 2262 zcmchYdu&s66vxl+uHCbPTUJV2+pdfPopD>+bzO@CDGY5w83P8)3Dnw$9jCm=fpX6iHMh5rmN3&pqdS z&pF@Uy~#~(_h3fiyNvjuSbinIofJj^l333Co5c!%he!&VQ614*qfY>ApT1vcgcPa{ z_W;}-dXC8HS40=PECIL|ZcYK*0ZIJ;ZZT5?B#F%R7s_rR_dx8{kXZrbQ4o0^$luw1 zF$QG&#eeeZIUq@n#Q&RX_|^|Z>;VjJ8i4#Z@V{YZ8-R%=Zx0jwTfp20vAYg0xeCmq zL4Wsyya0^<%AeHs@H5hFgq}@Xtys6B%DvpR(!KoYXWT1Rtp}gK&hxUnrHMAARnQ{w zY+B>e@JqxNhH5f*XSH}E?nt7ev5Uo-mzNe|T4``mR+FVK%<@A1FN zcM=VXoQ?RK-Hm~e zyD8FQa)&)3x?i>I^rqGs{FMy`G2gniJe6;)*p!~;iTK^#rWUS4MDlsjW6@&%=+3${ zeqhG{!=H<=*}SCPDdl~=9uZ@=(b(1kzUttxmjB|+HWfcG)SD+NGFdH@Z7&eoo+G`I z6l1BCo~kgA9?l;mJ>&*0bZGPTPP+Y%Lw8dKB>I)0UAk{LnA`o+ma#b_0~-I&i&#B8IT*qnz$ zArw}j@&5ekfFv(5eGF>{>SB!Sgw{VFpSZ-*$BrASufH}lt`4Bdw|GDyzUAxr)z?o{ zI^xH$CX?E+nYhz2p&h%l#u1-FU0>;7+fX0IK7&3RQCol-WC09)`FreZ<>0u6PQ0V1 zI$as(dx;b|?Di6m-Q@H5J!ZevR$6TG+Dc4*yWMIDlzQzpv$wRkq&VO&hKltr7nqIa zk^-YOd6|uiEVf1FQo81S%5~HcyHpGS1Vr#A#?6R~nz|Ntg@{vH#Q@9#2K1=rq+yqP zHbkBzo4EravX1QIz7LV&WfuHClFe!yvfa*;HkFvmZtGRI^Q7L6rjk^EI7SHhL*58C zA!g)Ub3M5#p2CMYOV4-baKSK(6 zWK<&hX}6p+MhMGHiMcn1iJYs(Lai174B#PnIHV(30*e%xY-XOl9M2TmMWkGuD)$nja4JHMD}~cXNaJEbr(^VLL4S>$6bpSBOtoAnFJqc#3Z1K& dr7Gd=F{0NC{lnx6BlNChuBHeVYnk%YKLC&|f!+WB delta 2285 zcmc(gYfO_@7{|}^mKI7&X|);U}(;$)#Zyr#>HuLar^Mof}mTb#wR^v$KT$Z?uOiWm031)>_(hr)TeyOu@dn%et=i=r}_TiW3 zfBw(qJReSS;=f79y+odiV6xF@ z{ND&N6;a;AWY+^a984I=x37UbaFu!eM_=Xkc*w5UA=S-yTo0? zE_rYzbW^ zAEi4KJ~}63N(d_~3}qBM>31qUU7>o1DpZSUST(5dH?}meP3?7rt?y{&1bKD=LyOdB zgq^cK1mTK$7x4W7rjV}IoTuKLV^pQn(t9}?TBMUvk4{Y;Iy2p+(gM=hP^K&XOvLkl3!w5EgWf zFv10{DOHf~uT}}y2PX}T)k>|0i-omEH>L>R4{g7on27N_01K>hh;>IXKi95 z7$fMrK^ad(&_~bh5)a%-`Yu!4Eh3!>dw$$~(-=>T7~}4&{CEN)0loJ@PMdIJZXbFr z7{A1to=705pTNUQ8P0~oXk5&#R!TFR*Q@l^$}x;Rkyvg%HiuB}Meh#A0LG8yn41jf zPh+n};k;h6%GK918O!yeJ{XSWGV?uCl{o9u`5yld`SIc1D_zP4TxhD$Gqo4}0_=C9 z_l7YTcV8;<_|r`B#Jp8538N-igSk&?UCO;U9FmJ+4KoqT zZ7=dn9SjEs0T-CS!SZnI#A)pDq88z0O_=Y&KDcFwidMS%OsJV@L$qfiFlZ{o1Hu2{ z^6$aRIpLTdDzudcZskQYCt?N}#@=usFJn3{dWiNc&7*RA8ttx3p?!05d1X3SHaqKH zcGTOgzS7bN?9M{xX@9k)8ZDF}4Z->9N zt(jeCFR`(9tKGqF_4zj2%N}TJIhLbYR%|UVww4v!Z40gC3(M?u;`4r9Ed!^@f(rvl zA;&T9L)6rEq=4TogK8B%6Ecf11b;{}I~CLXH5t4L`}iC=tcKluvm8oavEmy`COueG zfm;1gyC3?=nSqCXQg`D}xrC7Y{4a92Csw2UhURad&ELoXHQeAq0dvK2F(GOE6*0`_ zD-@s<8%2a1=T~A1zUFOvAe-++8!Grg1r#u93Ev_C4L?5P-Bf^<|9LxDLeqQTgB