From c618a1b9187a5e5ae21d8c3e2fc4ed1d269651b4 Mon Sep 17 00:00:00 2001 From: chenyf <1343619937@qq.com> Date: Sun, 24 Nov 2024 21:51:09 +0800 Subject: [PATCH] =?UTF-8?q?git(port=5Fself):=20=E4=BF=AE=E6=94=B9=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=88=86=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/crc16.o | Bin 4996 -> 4996 bytes build/erpc_core.o | Bin 19779 -> 19751 bytes build/port_self.o | Bin 37278 -> 37593 bytes erpc_core.c | 18 +++++++++++++++--- erpc_core.h | 1 + port_self.c | 18 +++++++++++++++--- port_self.exe | Bin 112028 -> 113101 bytes 7 files changed, 31 insertions(+), 6 deletions(-) diff --git a/build/crc16.o b/build/crc16.o index 6e7fb7a399090d529e20d3dc31a6a4b7e692abd5..2af0e3998ea7227363d28c563952953fe52023eb 100644 GIT binary patch delta 19 acmZosZ&BY6#l=`WIhsp@v2t+>7bgHceFd`s delta 19 acmZosZ&BY6#l=`OIhsp@v0`xx7bgHcZ3VFa diff --git a/build/erpc_core.o b/build/erpc_core.o index 4ef1d04771f41b83e9a89d921b3f8e0f79613e95..bd19ae274fc13c73b2271f2afaafa66ceea44313 100644 GIT binary patch delta 5148 zcmZ8l32;-#8Qy)mo@Ck9Wm~o^TefV=7QP4pjJbS?$_~cHCgun;va!Y3!C-33fixlF z3Q$}MVw;3gNRze+X^tt0IwWmKpfmx7Nq~0RBrOC;Lo!1N4V~rylGOeGw@<6W&gku@ z??3kc_wD|>(jWKI1AD2lZ%Z1%))h0lth?-lG)aWi%uqPui%niZ{}OxJr+X`tkT+xR z<{R5V^4lyzGGkxn8xLdjiUXC&vdFzWHZ`1pyy4IKJvb#ScJG8VYOo=nZo+}~x3C9KLY$!r)k zo(O!VN0kaiMP@O>0NuvEF;vnx^UG6d0b3@w(UkZra-2%;TkKmy3EN>Z&>(xv6r_4~ z!Sot6uqRTwG=@kK>q&F7qk64I9$m(cq)ub4<^pPr51ET8h)WYJ;LrQ;iDWo183s{0<>uVf@uuxi#DIpyVgFokP zt1eBWs?>qX_*wR}EsLE`_t>UhwcRGT@_V*A)wSDdV7Zp1*)YFkOe+QV1b1X04$`yZ zmx4P|vsldHke>UF#jN=z?Uk!2+L7u;mabsCtOZPOwMrMi0eOM$VGwy0(K!%#3@KOZ zfblCXj@|^7YC6b{SsNtlcWi!!on_m~3ore9d_4HW!1ds!b=S!#OdpJJC&TL2jQbMWZ~jD4F-$RJ?s?=upz7BKd;CPFp?#$HMxWEWuU7n=#$ z2N?T;R9MM?vHu_)mOX3^1(aI|ISK;osg;m-0At?^pAP_IzX7(=WxylhRehewz{>E@ zXrz23(h~{SvLji=*~h@)e%N}K;L{11!Dj+|e#tVN%jkyqTIbKT)Ww|cj?~UTM^~UD z)D);&S!@Z&2p5A^iy*J}UF!e+;6WV>fTUzcz9@-7_>Nv`f%E< z___QtT0UY)h25Z)?eKKw!6O6ZM5maH42Hw2Ly-Z@{6YIIR$btsd2D{c?C57ykBb~z z9+WR^bYBDPrCbI6i>BZgDc0{EQ`JsF=-Bf5*AV(8bp#c8yZdof{>oKcQb!%Slj` zVtx5&l8duIEs~x4T$I<_ys|IU7hXDw=FScd8gLGa8d!EkuWIBba8k~SiQ_}eu(qRV+ z-O*E2htr330oz}B2fkXNv=m_Gr>F~Gq7);AxKrS}7Z?8iZWJY_2!6@i5h6vBHK05gXli5XR@ZyqV19rmE)U zTKv_#jk!GIEsSE-!}h9pzs+Vfi3eyg4~n=eRIR5}EevX{2+AE&#oY-pZg9GdX7RVy zo!2|u8yXIej1EQ!-A+w>ZbC3Dn^Tlug;f|E=7^2%JCleZO#NyMg*Y!XOlQqwKPg%q z#VU?%p}L^xzP%8HGWl(^{5G35TF2v%-8R)~Mq(L49`loV+^>q?P@`R`&6wjxiUeA?xe$=%<4mj ze%~xRp0C&jJP%p;P zup(cr3_g_6l_?Eu{{)=JHzrJ^ceBqYWYY#_EJvoS{BD2Dq1x4#sPC>ssgw27dEt|} zn?`W6wY;Kw5?s}lVO$B%joI=IV^{86>i*C9gwg`c#*qS+h}Re6dRB(U=x7&y-Snm^DwS zOl$DyG(^(U7M)3RjIhm9YUFC23_c94@#9mzmI@Ltv_8$UMQTjdYc5I0%?6ni@u6CDpzdSO!n2m0uC1aH`!9$Wo7tJ#%Cb8vrttsD z?fyStk4*RZ?>riet%9D1{V-iY*8p*gn*!~ICCUB04DXer%TO+7C>HCX0C9gm;wTEk?GYqiUuP;(8kew^eW-1L9#FfkMthHN*bqT%$m3fLxqhCCDCFL7ZC||I^GK zX;KZugF95Kq`*;~;F<&q3N)96>o!DlVM;22OCi$)S}4$fK*t0+EzoADaoqL|ftEsD z#=t0fK%mC~Db<6#1W2{uToe>P6yk3I`ITTOydSPu42W|hfVi9OLb_LQ?+f&ukh@SfC#R;0a_0&R`I-ZUa9{~S=_A^ZTwn;G6ak__Iv z@V1gJq|PB=@TVDPDkI^w5l92>)8#=~hkr`=*tFnpXgj+S^wI+? ZwRtDaVf&lkXIolqEYf0&?`e5K`XAU&KSTfk delta 5300 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 Y8{Y5hr#b42tRf|-PpA0NU7v~n0T(zfy#N3J delta 4199 zcmZXX3viUx701v0cC*=#CwUM;Lb4Dc4`NGdVxve1)`p~LcqAYS8kXH1h=j20E;O{E z8$>WPBxHMy!<49us07;%*k!7=l%jT~r4tr&luj>MLlpE7 zS^G_>RX!jJt;0LzV`9GRR5wvWpL|*rPy3C7=qj3Ree#@`YrWJXuZj6$txU1XTu<*o z*M0I%t9bfK%=9HRxAd9risAw5xE1##ofYC!dD-O?%jMGKViA@blYb`0#fn6Atk9d}gLV41&$(nG*)919hit4lefJk0A z;*A8zwZzqdT*@uR$<-ix%4RQI>Nt%AmsPvIzUi?_?) zi5{Bdg|bD_X2&fQ<*VIVm+NZD^0<+*J%s!fW`w-X?LKd3dk4%)ZA9L;Lmg@gtK2n6 zcIV=1kZbj{YZx{wFC6Idx9{vi(N=P`YB@766!5kCyuK|cYRkJDMV=y^=kqSsa*dXi z(`N5hU9Htsb-6|U00vI<^`N#5xkXq^duK;DLauf4e0g2&Lyk>YqazRs`r5;tfk2R4 zA(>WDF1q8j75f{LN0Qz~uYUQ)_9D+nhGHv5<=)WdT_i?ktxi&HcSR@=A#qIJ+MXXh znO3z@$%e|$)fVHp*hW;@h)iyrv>R7cXNGCQ&n_+a^u~}jX!cjz85Ts?#<}N^Kle+s5&kP^H+@g9Sd7fgO=D^asV0FiK;j4 ztY_@3if!S|B>FN`t|K-SHCuBq{S!PEj@WCe9qioQ-Wlj3F_5nADMxHDdb_$2#bDYk zR5@qGMx(B(nfC52G^0~R2Z@+GxT98Dq2jcrRf(zWES6QFD$y$+3f*CyUnK`a1;Ub} zp-M4LUJ5md)v_qun9;Wy8*tH{W3~*2=VzW(>L<3k-X>oRmu380xqX~Aj+6@ zmKiCt##&`vN8_*ga;&@9DYbkoCQ8aa1nrT_XJQ z$=-R<0xZQzbvQ59bU)6VYB>z5)^vgsf5mQ$^KOC~blw77@H|a*Op8HFwex|#u4xbGUQI)wZ-Ams z8V25{vJHp&cA?6*Z*S5!hQ2iT~Puu6}N%RIv0RUMJ-b+$W&|snTpMzdiA~F zq!U1O37qsM$P|w;K~tlSW`ay{F31d516rn|Eld&6UD`bkG8IpP%#sE{W(?`X_)R+T zc}_e5GF|_c-P`Qm2dT%+NuPl3)+F$@FjqE}X%@%~Tmmu!H-JpV{UCjbqqH`G6abl$ z$3Uj!IB1a`1EJ8I`8M2uzn}~j^#KLUg?yBkD!@M z@UhL8f>V zq^_=@SJ<5csRv8Y2kbrqeN8(D{{K`@K5lA|S{&ZLyKEG+k7HSq0 z-xN=~W<7z;rLqEIkG96($#qrbVtEdRtb!Sqk2|1f>dl(Qx=t$Zfj=rjkPRLa8H zOlt zM|N!nXTD_{2)p+36mvtaA1sm24$hdDV!Bbuc6QMe^HurbU~TSF_8vR)0ZV={IJY@8 oC2(Mh8JS{EO);;_fy1TpJBPEg#yO@Yb={H|5C1nlG4v1dKUmcUi2wiq diff --git a/erpc_core.c b/erpc_core.c index 4a708ab..b2e0a95 100644 --- a/erpc_core.c +++ b/erpc_core.c @@ -131,7 +131,7 @@ u32 erpc_send_base(erpc_hw_cfg_t *hw_cfg, u8 dest_id, u16 port, u8 package_type, { if (hw_cfg->send_cache[i].state == ERPC_CMD_NO_ERROR) { - ERPC_DEBUG("find send cache %d\n", i); + // ERPC_DEBUG("find send cache %d\n", i); cache_ord = i; break; } @@ -377,7 +377,18 @@ u32 erpc_rev_package(erpc_hw_cfg_t *hw) { if (hw->rec_cache[i].state == ERPC_CMD_WAIT_SERVER_DEAL) { - ERPC_DEBUG("find cmd wait server deal %d\n", i); + hw->deal_lock(); + if (hw->rec_cache[i].state == ERPC_CMD_WAIT_SERVER_DEAL) + { + hw->rec_cache[i].state = ERPC_CMD_SERVER_DEAL; + } + else + { + hw->deal_unlock(); + continue; + } + hw->deal_unlock(); + // ERPC_DEBUG("find cmd wait server deal %d\n", i); erpc_cmd_def_t *cmd = (erpc_cmd_def_t *)&hw->rec_cache[i].data[0]; // 检查crc u8 crc_result = cmd_check_crc16(cmd); @@ -403,6 +414,7 @@ u32 erpc_rev_package(erpc_hw_cfg_t *hw) break; case PACKAGE_TYPE_CMD_REQ_ACK: ERPC_DEBUG("{ACK}\n"); + erpc_rev_ack_package(hw, cmd); hw->rec_cache[i].state = ERPC_CMD_NO_ERROR; break; @@ -451,7 +463,7 @@ u32 erpc_set_rev_cahce(u8 hw, u8 *data, u16 len) { if (hw_cfg->rec_cache[i].state == ERPC_CMD_NO_ERROR) { - ERPC_DEBUG("set rev cache %d\r\n", i); + // ERPC_DEBUG("set rev cache %d\r\n", i); memcpy(hw_cfg->rec_cache[i].data, data, len); hw_cfg->rec_cache[i].state = ERPC_CMD_WAIT_SERVER_DEAL; return ERPC_NO_ERROR; diff --git a/erpc_core.h b/erpc_core.h index 07e1fc5..a8560b1 100644 --- a/erpc_core.h +++ b/erpc_core.h @@ -49,6 +49,7 @@ typedef enum erpc_status { ERPC_CMD_NO_ERROR, // 发送cache,接收cache空闲 ERPC_CMD_DATA_DEAL, // 发送cache数据组织中 ERPC_CMD_WAIT_SERVER_DEAL, // 等待服务线程处理接受cache + ERPC_CMD_SERVER_DEAL, // 服务线程处理接受cache ERPC_CMD_WAIT_TASK_DEAL, // 等待任务线程处理指令 ERPC_CMD_WAIT_TASK_DEAL_FINISH, // 等待任务线程处理指令完成 ERPC_CMD_WAIT_SEND, // 等待服务线程处理发送cache diff --git a/port_self.c b/port_self.c index cc3b1bc..5c752d1 100644 --- a/port_self.c +++ b/port_self.c @@ -114,7 +114,19 @@ DWORD WINAPI send_task(LPVOID lpParam) erpc_send_deal_core(); } } -DWORD WINAPI rev_task(LPVOID lpParam) +DWORD WINAPI rev_package_task(LPVOID lpParam) +{ + UNUSED(lpParam); + + while (1) + { + // ERPC_DEBUG("rev_task\n"); + erpc_rev_package_core(); + erpc_rev_deal_core(); + } +} + +DWORD WINAPI rev_deal_task(LPVOID lpParam) { UNUSED(lpParam); @@ -180,8 +192,8 @@ int main(int argc, char *argv[]) return 1; } threadHandle[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)send_task, NULL, 0, NULL); - threadHandle[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)rev_task, NULL, 0, NULL); - threadHandle[3] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)rev_task, NULL, 0, NULL); + threadHandle[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)rev_package_task, NULL, 0, NULL); + threadHandle[3] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)rev_deal_task, NULL, 0, NULL); threadHandle[4] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test_task, NULL, 0, NULL); WaitForSingleObject(threadHandle[0], INFINITE); diff --git a/port_self.exe b/port_self.exe index 3e587f76062876978a1706af0864d6dc5c6c265f..d6c9988ee1bd156f85e8cd869b1cf622c8a90bb6 100644 GIT binary patch delta 17725 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 AuK)l5 delta 17756 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 U*pL(3?_)n1P8|FL8#nm>0Fi{Pa{vGU