From 950c28c0d3bb6716f09fea3fe5f7c722e8c1d703 Mon Sep 17 00:00:00 2001 From: luojects Date: Tue, 20 Sep 2022 15:34:35 +0800 Subject: [PATCH] mcs: demo tweak * bug: pts_name are always the same, fix it * using reentrant ptsname_r instead of ptsname * add latency_demo, measure latency of zephyr * do cleanup before program exit when catching ctrl+c signal * zephyr uart_rpmsg uses line buffer, update zephyr.bin Signed-off-by: luojects --- mcs/CMakeLists.txt | 1 + mcs/latency_demo/rpmsg_main.c | 86 +++++++++++++++++++++++++++++ mcs/latency_demo/zephyr_rpi.bin | Bin 0 -> 173992 bytes mcs/openamp_demo/rpmsg_main.c | 8 +++ mcs/openamp_demo/zephyr_rpi.bin | Bin 136736 -> 136792 bytes mcs/rpmsg_pty_demo/rpmsg_main.c | 10 ++++ mcs/rpmsg_pty_demo/rpmsg_pty.c | 13 ++++- mcs/rpmsg_pty_demo/zephyr_qemu.bin | Bin 163296 -> 163320 bytes mcs/rpmsg_pty_demo/zephyr_rpi.bin | Bin 179672 -> 179728 bytes 9 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 mcs/latency_demo/rpmsg_main.c create mode 100644 mcs/latency_demo/zephyr_rpi.bin diff --git a/mcs/CMakeLists.txt b/mcs/CMakeLists.txt index bce56863..3f80ebb9 100644 --- a/mcs/CMakeLists.txt +++ b/mcs/CMakeLists.txt @@ -29,6 +29,7 @@ set(SRC_FILE ) if(DEMO_TARGET MATCHES "openamp_demo") +elseif(DEMO_TARGET MATCHES "latency_demo") elseif(DEMO_TARGET MATCHES "rpmsg_pty_demo") list(APPEND SRC_FILE "./${DEMO_TARGET}/rpmsg_pty.c") else() diff --git a/mcs/latency_demo/rpmsg_main.c b/mcs/latency_demo/rpmsg_main.c new file mode 100644 index 00000000..44c3ad81 --- /dev/null +++ b/mcs/latency_demo/rpmsg_main.c @@ -0,0 +1,86 @@ +#include +#include +#include "openamp_module.h" + +char *cpu_id; +char *target_binfile; +char *target_binaddr; + +static void cleanup(int sig) +{ + openamp_deinit(); +} + +int rpmsg_app_master(void) +{ + int ret; + char buf[2048] = {0}; + int len; + int i; + + printf("start latency measure demo...\n"); + + /* linux send messsage to clientos first */ + ret = send_message("latency_demo\n", sizeof("latency_demo\n")); + if (ret < 0) { + printf("send_message failed with status %d\n", ret); + return ret; + } + + while (1) { + ret = receive_message(buf, sizeof(buf), &len); + if (ret < 0) { + printf("receive_message failed with status %d\n", ret); + return ret; + } + + /* show message */ + for (i = 0; i < len; i++) + printf("%c", buf[i]); + } + + return 0; +} + +int main(int argc, char **argv) +{ + int ret; + int opt; + + /* ctrl+c signal, do cleanup before program exit */ + signal(SIGINT, cleanup); + + while ((opt = getopt(argc, argv, "c:t:a:")) != -1) { + switch (opt) { + case 'c': + cpu_id = optarg; + break; + case 't': + target_binfile = optarg; + break; + case 'a': + target_binaddr = optarg; + break; + default: + break; + } + } + + ret = openamp_init(); + if (ret) { + printf("openamp init failed: %d\n", ret); + openamp_deinit(); + return ret; + } + + ret = rpmsg_app_master(); + if (ret) { + printf("rpmsg app master failed: %d\n", ret); + openamp_deinit(); + return ret; + } + + openamp_deinit(); + + return 0; +} diff --git a/mcs/latency_demo/zephyr_rpi.bin b/mcs/latency_demo/zephyr_rpi.bin new file mode 100644 index 0000000000000000000000000000000000000000..d665b60013137677d86358ebb1c8abfa1babbbf4 GIT binary patch literal 173992 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 GpZ*_K6*l(( literal 0 HcmV?d00001 diff --git a/mcs/openamp_demo/rpmsg_main.c b/mcs/openamp_demo/rpmsg_main.c index 44389404..2087650d 100644 --- a/mcs/openamp_demo/rpmsg_main.c +++ b/mcs/openamp_demo/rpmsg_main.c @@ -6,6 +6,11 @@ char *cpu_id; char *target_binfile; char *target_binaddr; +static void cleanup(int sig) +{ + openamp_deinit(); +} + int rpmsg_app_master(void) { int ret; @@ -40,6 +45,9 @@ int main(int argc, char **argv) int ret; int opt; + /* ctrl+c signal, do cleanup before program exit */ + signal(SIGINT, cleanup); + while ((opt = getopt(argc, argv, "c:t:a:")) != -1) { switch (opt) { case 'c': diff --git a/mcs/openamp_demo/zephyr_rpi.bin b/mcs/openamp_demo/zephyr_rpi.bin index 5240ed73c05a25fdb5c07a30c220c7ac3748e8f6..68f8fda8483ece2f6fcd8c8846740fd745679858 100644 GIT binary patch delta 5257 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 Yt}cY#lBF>OaUcj#tuAi> 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 TUZ_jC&IM$qXe5}br-uIkG1|ef diff --git a/mcs/rpmsg_pty_demo/rpmsg_main.c b/mcs/rpmsg_pty_demo/rpmsg_main.c index 0e63e859..abd1a7c1 100644 --- a/mcs/rpmsg_pty_demo/rpmsg_main.c +++ b/mcs/rpmsg_pty_demo/rpmsg_main.c @@ -8,12 +8,19 @@ char *cpu_id; char *target_binfile; char *target_binaddr; +static void cleanup(int sig) +{ + openamp_deinit(); + pthread_mutex_destroy(&mutex); +} + int rpmsg_app_master(void) { pthread_t tida, tidb, tidc; printf("Multi-thread processing user requests...\n"); + /* init mutex as thread lock */ pthread_mutex_init(&mutex, NULL); /* userA, zephyr shell, open with screen */ @@ -40,6 +47,9 @@ int main(int argc, char **argv) int ret; int opt; + /* ctrl+c signal, do cleanup before program exit */ + signal(SIGINT, cleanup); + while ((opt = getopt(argc, argv, "c:t:a:")) != -1) { switch (opt) { case 'c': diff --git a/mcs/rpmsg_pty_demo/rpmsg_pty.c b/mcs/rpmsg_pty_demo/rpmsg_pty.c index c7a21c58..2d06c762 100644 --- a/mcs/rpmsg_pty_demo/rpmsg_pty.c +++ b/mcs/rpmsg_pty_demo/rpmsg_pty.c @@ -11,6 +11,7 @@ /* define the keys according to your terminfo */ #define KEY_CTRL_D 4 #define FILE_MODE 0644 +#define PTSNAME_LEN 20 pthread_mutex_t mutex; @@ -18,6 +19,7 @@ void open_pty(int *pfdm, int *pfds, const char *pty_name) { int ret; int fdm, fds; + char pts_name[PTSNAME_LEN] = {0}; /* Open the master side of the PTY */ fdm = posix_openpt(O_RDWR | O_NOCTTY); @@ -33,8 +35,15 @@ void open_pty(int *pfdm, int *pfds, const char *pty_name) printf("Error %d on unlockpt()\n", errno); /* Open the slave side of the PTY */ - fds = open(ptsname(fdm), O_RDWR | O_NOCTTY); - printf("open a new terminal, zephyr %s: screen %s\n", pty_name, ptsname(fdm)); + ret = ptsname_r(fdm, pts_name, sizeof(pts_name)); + if (ret != 0) + printf("Error %d on ptsname_r()\n", errno); + + fds = open(pts_name, O_RDWR | O_NOCTTY); + if (ret != 0) + printf("Error %d on open()\n", errno); + + printf("open a new terminal, zephyr %s: screen %s\n", pty_name, pts_name); *pfdm = fdm; *pfds = fds; diff --git a/mcs/rpmsg_pty_demo/zephyr_qemu.bin b/mcs/rpmsg_pty_demo/zephyr_qemu.bin index 3d3f85216423e18b262099e489f35b5fc8ea9969..6d566c0d5ca6202e6b8710761ae16aea691b8fca 100644 GIT binary patch delta 10979 zcmeG?X;@T8wpF(qZBP=xW>H$Z8&nJ+I_$fb#@#H6jwYB1jhe~s264mKEzTG-NgS@H z6O0&bV`dayo*}jiIFSK0F&Z^O0%j7UfIeel76Pa=iv3RATb%*Eyu2^p%zXR_-^V>w zbxxhV&Z&E$@s?-DEl=MOYN93GemdUqP0@JR^~5#$;>Ztby>5AkIMO<5y_XAv&+CXSC_`88O;DguYCY*# zvx)fV>d!&0Pav&>l|B*l6#T_UKl&@ABrccFz@fy}sM_98$L7RdXI)`!C8Dn0Oo)#G zA;Y!64?cmO;v8WWv!MuleaF!Mh78|Kx()v5JI4Q7B(XL1&*%^d*>?{41P>+JMmXWC z^QxZUY*EoNBIx0kZ>`7GC}JDqsP#)6C{&Md4A3uB2`wWW1tC!awK~d%zb#O^BRgyt zrR5Ico-nmn`#sV;Ldvrn?{UP8epy3vpe9a7N5O@-k$#K9h%J*^>nOEmAyJX(B?yR* zN;^E5*eC}J2QdBWQGF;Qs-V!N&) zW#5h;M^bfQMG#731?(a0Pry~SuR5t;TT(lM z97*>K;JNJrqIq*Qfej1-95{b5g1@aVc2>E?V@X#%F3(9c@e z6ec>CqYrMbkC8euspPK~N`AC&H{3{?9U6+HdL3DcE-ae=bPSrREt~ICyyeH3U5|2&r)#ak9AN9U;<0-1fQ471&j9s8rUIz+aQYr~qe@!-bBa(3zY`gCIR+jQ_0I zAA`BQKM!y|6sClA#}v6SXQM#A4zPN^(<(E%6>Fx z1-y|OBYYYU=Tg(@A0QwtlSV>zT8i*N0u-lZXJ_XpT^~f8?HK6mnDItR_6g|fwwW1< z2|CM@(FfBbwFy})- zda_`Sg@frMA8MUec?4Z*njR}I|nDv3eh}pQ zVVCJ;It1b}-xONzc6^@s9;L;wV}hQpgPIAGe0SlYZA=j>?Wh{_=?)k?@zWr6nw0A$ zI@<<_PNPVqu7V@GYrKfo2%eLI)sK!KS};7Sh15yYhgBGfjm3w6tu1BpWRX$*3kcapzrg z=J+o*NUsDD8?)YUnL2YrMCYwQST(1Big07jBHdD*bi?IpY4A&sWG04zQZ71MAl6OC zVC{pEG}f`_!Q+$`!Ln?9+6F;7=W-Rh>!)n1S}oP}UYq41op!Hb4$5@zLS6QDI^D5! z?m@MuAyq<;78wl?ZBFs4PLnKzUPEhV$*X9f#T@QuP?qQabJ_7X^DH*Rj95aSyyQ#9#b$5KO)eAE+u*?R}Ju%+jrjb_OaRt_pQSn48I%Ne3G(0hvRyd-c z3={%T9pfk>HFUX(FRA>?(AaVlO3isX9AogOr}OASxbt)Yi)+C%$&_wz99VcaWqKW7 z^gbQ$*tqy}>Sgkj9>je?7d4Q#v`XmEKuq5KG#U!?!l(ht@?xk4F68N{7VhMINGHR| z{4rSdJM+iUjgb6op7$|N*(zCf5FC0oc<`xcDP*&$Qg+ZjPbr63T4ii1eD`b$atL3h z$LG{#DW15O@7uVHVNNcahAs?Po=k_rjOFKXC2EBpTipFC3ZZ?44!&8Tp+_KhWhmYO zYH|M1%1}=tV6QWKNxS6rZEW4KW2Ie<*>74?cGn&sqQw(gL=2hEZ#l!5uGHWbIB;3ROiMM64!|R3vOHDjFWZJ-hu28shpyQ?4ugd ziK$W-surD1cs7h8WLZbj39!;Sh9*I&b(E3(MyeJ>C&d~o`Vc&No9jffr&UxF=jCCU z&IJZ&wPps1I>{P9oP{C8xfj!GreO6eM|dyXxAuVv?E@4|ttt{{WyJ+g9X%hL#Ku~~ zU`ZIB=`>*z`C~uP*$+MNKJk#S6#6w`id|Bv!>uMFoq(pbLE7F3L6EAzyKp!?57C83 zFlDY6rl8)xS(oB*6YrtNVad8!oprR-r6Q8~Y;e5^ZD+0KZh_dY;i+Bes9BdP;EBKU z$6#6wL)I5#@b|9&kQO@DJdc^{6AORdFq?rdH^d9Ru@3zUg37b}fyx+EJ#QX_zZ4@J zNr#-5zQd|_|I1~9(4}#7{<)CSt&ZoUw*?SwHEOGm6z}kO?8tW&RF%ppaaJ**Z6+;cU3U;t8(5EM zNtK#0mF_`qR+zG7lrD-oElY(;cUfml7;A!^pcP)&GO9l!KgNWBq8crn+A>fG?}X2` zL`U9*99Ty(U;#2mXE+=2dTYk8&%<$Ue1=mb;~LCMO_gSsD-O&_S_@MpR!97pDrPUS zveT(BsAdeJGMxI=)+AvB>ddHVcP-gkEk@^C%o?i3XbI%S zT%_3^PL^mJHA&T7u37DfW6?vaz)|7{_mzZEfM-j>y!YVF?+{BcYnN1=kxc zrPLE5?ls`ptg>dEhMKLBSOLD<8jMe`*Qeog_Ui@stb2WKzugm@T5&YQY)hl}!;)>2 zJvL8p`d35Mwh*j)P1|z9y|AF#@3>@_Q}o2gn43gJV%MSQTx+CcZYEM8j!o6@h{ur%-CH4T_S&YAA z?nj(>{>~EQK0ic|(8zKl>bTRMo?I9y7o=;*!-{NWQVgR#WI!cuDJRvakU&f2F&T|x zK^cpq9l<*`QLIt$_8Z9oh7hSqZ%u0swWb+Ym^%z?E4BjH8%BB+j5|~4NyqPY9#_+Y zFk*KJJqk6uR}Y*VC5smDePW?wN@;NaxdSl@AsBRXGnJZDLim#^Vq2EQ3K5n;k}Bmd zB~BPZoUaZME6ua9ykZ$6VuWPQ=3@i4`$zb=JW(>w<74|6_N(nq?@pn7Y>tLG@BH4oIzoE0pEWB44KW$uE;hufdX$7p>_q?GoHc3SLp2Cn%@xs!K}_D2Z_T>GceLYR6W z6R%7g4@7vGeWe{NsStJa!0+grU_3Y$Yi-uSIanvl4$c`^F~MmT)L4Y9b%(*b;z6&Y z!=+^8nSC@A7F9e$ufP`-I^!&ZWD|m3Y*q!8oxkBKZs=b_CLeL^IM2eILm zF3_c-wOs|Yv@4UyUTI@YO$kyvWan)Q;VT|-DGHbZvnEiLWDpoj#)$GF7 zm<-2{lnuQzt#T&5-)uq?^8_-0#exNFkQL9(9oTp@0)2bvXgXe!oJYsvIQ&>JvYmJ= z8mq#}V~MQw9EM_K;aVn2txX@vzBhZMcr`gr&$ipch!!eXCb|I5vIbP+F%c)5l_JxoS%a9I;Qp` zbvKQ|SgAu5Q1*&2u(BRG?VlGfT^7X3Hr1eTJJ!jgU&FGGBRmi*T!X)U97Df`&pysX zj>A6Lg=zKvCt?2fc*%JC-j7ZAd$ZP6%uZtU6%guECLo5rD<7(L1+unyeXa@L%Z|zx zVRX*sn#V{XSnBmyRq!2pzxf*vrva~E=-{)4_6bgcEfZg93+p3%ui)D`zLm4j7v~Ur z^9`t~j~aoDWpU;!u}M4niM8y;Xe0qIvde$ssr*e$txWK3SWcgS7aDTtNAOj{1N2o$ zI%n`l*+*C|5hCeP?gHfchpUc-=Srye(R<`K;K8_*w9^srk5CmxDfzs`voT(>V=&28 zICB0P^XeBlf|vkzUkHd36C}Eu$Z5<1qc#&sT|`SKonc==s!G{ijU_W)Q_iwO{0Tx^ zGh|;_g~6!5@HmZy^oxP4TFtpwDowXp-ui;9BHez>uk@VH+N{j2jSBpxq$l2fq33-1 zYs$Qw(~n=<6aTQO$J|2v`cqkfikk}J12=q*e?_cN@PGYI!B6D$Zk<~={V7gw=k#_? z@1}cvT@S%TnOodw!WaJax!Y6u+;eV@KdC@B`TsTrepa9xiI6GOU4CCEVCj*3yrch(pC)ny^_(}h2yUCQNjLxJ+{n7CJYckJMEfnTgYXjSMm z2XYhw_k}y2GazR>*JotkGM{x!QzP^~l#1;j=na`_X#`nwdZzCtZ*V8rd z)%Rie^lb?nUf8M7t>%J9-&W?a98O0$l2L0J&*#%Pbn7`bQK5IwvpGJu7v1iJo^%Bq zzpfV@{>if2r5OKArQp-Z_FjZn<9ZVA;rIi+=-xy+DI->A<_?+MrR;lvLjyVx4Sd@D zvh4m`;D(L-^MM<#;`?$qbQ?Y@rKdh?IevXFI(w3=&y?Lffc87ezFi#Jc|c=Rd-7}I z_$wT`<;KFw)&x2o-f0cARP*fG%;Dg}O7aZj#4Daqc$V`o5?49hicDqwtqcXWa9F`V zk&Np3sf0`t6uurDa`qPTaJIq#KLE-S`PU#>3Fs$-FlAS*o)4m7u{!EV3S*L zyTa$eWef%rLb>GaoY7x6)Id{Ppe2Zt7jdY$u57n*c$UM>H)DS15S5 znX5Q{Z7;e{deXs$R`ldET=zx&6y|QGx|KbdI(Q;K--}L!ruKvkHzuyGjRM!4t-dFr0Jt3SMY@@4&Cn2a+TaZ|Aym#=tXzAo9aV}eT`yBIfutMJcUro z81C7^=fUvAO+Ef+%nSI8fzq4$@s~F%JNt75_VM{{4(%M?%i(4Y2lCI7tG6%-y79;O zXUGZ;$KpC;so`@ihdK`3_NqA_1FmCznvu%!xA}gN&lm8okjpvz6Nj&JSkB>54jVZ9 z3Tiv_Q`}Y04FfewsE2Ymg2N~dV>nFXaMLZtnu+U@oClMfG_0`Ls-a_x%>{x++rmrP zZVp8(H|P>ik=rO1?YgCj+vfbYd1n>ofmpU>tpnxEVf;R1%lVBN~%vf(WduMh7(RUfruiG%`jrxBB~fvcfrga_%|V<hGiDM^F2Yo<4)L#E(4mXaCqI)x+%_J+V%ONgla$1Dx`3x@F-!kk8#h zanuNtymF}qPI)=q>Vk>2kk8%T!4a;((FPp(!fCG`-Lh~LXgl3&jnwy&j#z^-bxpkp zD)b)NL^@vHPP}zZ=U}dPAZ>zm-cj@$c+XoO{Ws(!PN#RD0mN$8>}hV|b5h(Oua$2R zldj1^h_?YDr?tcP-hrNm>C%hbhh5;~Gn7_9rcV}qAAaXE)ZaUrSX&;+>@X2>@Epns z9zgus;0qsJK>27#n}(JVN#AUwq~1{O=BU=pftx<3-Moep>m=JT-=v-r39~tamujTg zFx#?_7>QQfb`RVyQM+wI_y?4>*?x!!*LuZAvU!A*&oo5Z!lSo&41C2%tZpN-&uD); z@r-7D&=gAL$#%`7Wyn-uUL48XJc$*?n{`k=LhH-Ii8YJL4V+0~I0;?}G4v8-Ciz8p zM6s(L#H!#oMlmjg^R*zZ1;^-e0h!p3MZv0sp=0J4i1m(!l=TTC);x(^pN}@pMGnga zJqz6z#pV-v=PE)f@K;cAD2jcj@h`iAQtTQ(MXI8u8m=Yi{o10~VMPa3bV^#eAqxg1 z1{sTouzj3xnJ9$5=;>t*i8N6XuPnb0(-Ko@Ic!gi)8*@!VxZl~8Zm2Hl{Kh}wYY>nWNuS}K(syB6Qi|_!bU{X0T&9q>Hz|xZ!xu>d=|Q-Wq^I|xcXFzBMjZPb zo=6@^m%x_fxM<&ac6Yv}^eId?$z5(}2{$>`pqF=#$FYtq%KWub5%*FN`B%7>JZq1)^{kQ$ZISg#OxWw!M7r( zmaxSr=e*My_#pR_QboK8cBX_=Gt{O;O8tW2MoJc)0mD;=`dj0F-oHI4SYbX0t5d@t zrWCj+ZEzqpJm8@{3R_oWkwP+5_$5SM@^0gxpgIX+=-u=kjeAT#U)D^^q(U%Dw**x z{I5H)8j#;|E)Fu%V~Zj6de~D9<0@-09_IQumU+UEM6|@m($J&Qf_S|L zSuxk0OqC>gG9_|DHS!VUo8*Uyi9CE=CdqUd{76zJp^h4y8yd$|av6q3h|GxcY#vvs z1n6%tJ3~L{LQe8!N=9(L5N)Qzf>gaXS+S3jskndfAzF$!*qgC`SbdMmw+U%$pF&I9 zHBuQ*is?ANJ1vDdp3{~-h2!M;DeN8|6a9s_Iq4OBJ(yH2!pfUl?>jtZ?cY2+@IG+ z>!}PCqaXA6Vh~ocR8wU!8q1?x2ffCe4H}ik=6abN?LABmqlvHwxwR!VUc@g89*pTv zH$mUW76qTf^VL2jvy{{HA;j-Cm3`YW+cMD<<3`y1*d>XiLtggtl5POp$X-Ji!NSKA zC6WPq9v|*GF@xd$wwbfx+~dpWdKf!)4m}BFV~gl0+n8~Ml-l9qc$?RFqOt|WL(vmU zB}0U*$Ase=dL9}kg-b#4wjU>bLg{be(3B0-1SwP3gphP*^ds!)`_4iOIzV=qE2~LF zf+fJ@K*P$7XwsRfv$HAj3CcQ4dMt1+FCJ> zunF+-w23qpr0LWBiw*2>5V7(o8Lm*r+z^vvKoBgQo{Mq4Hhr0Hua5oTbhb5{6PY5~ z(38zYaVU2CRaiA+2wiF0JL7Xo>*3j%`m_@g`;*gI=qjR0XhvySLsy*Djh%AgFnblg z`*3{b9xB@w&N{61w2WlvXMxcIVU|>1j7A=z*Ee8>C|Gnm#}eslNmJ1C|Bklpx2)Fq znbO&}xP#bhnw4N}jA4I<(?XkgBR<3wy#ytxYI8$$)O*?ttGiU2bMjbLg@)x+0s6g z+x6+P<8-4ffBAXpmG8-B;JP5aCoFoQN=ovC@SF+s1z4REPA#xIC(fAd$sTA3YwtlE z?Rf4^VIkxFg71S8fvIpS=PRsaRV#;LOSrKzgMJM$t8#j2y%c{Ht7gDQtNQot8OK5} z*_2hcJ=q+RcT1tJht^f8C?R;Y9-rx}Q$2C5SeL(=Q>s>v!{By( z@zW`l#;-TAQl3@SsZ0@I31Zuj$BzBWj4c;K7ip5n2trYK^)QA-R>5Iq8qtcWp~y1n zm!oiCrr2eTHc~bdb{(%k7PLG+#ia74{{vo0Vs_-^o?z4> zu^2+1`~WORVfnQ*0sbdH7409iA=T|ZUSv^-m+-DF`|`8jf{nva;Lh)y&0w(BVC!SUY~NWIX-p4tt4d$tWWJL`qc~&8)?%X| zjzid!c|XF~O??z&o8ud*WY2e)$ULhiUvw5ivAN%bs#1LfS)rUer5BP&yhGR55HeLB zJIX;lOpXw($?-O}c@xQKei(=CEt2CzxRu@m**jjNd!cDZXuxy#oP`f^Yf9`GsYUmk zfyCS7&}T#MHxrX|)FBzD;u7~kiJ>7@J^X0IZ9M#sA~*U~Ph!(pE86RDU=M+p-i!zu zD^HbSzwZGfeu?0lqtj$6vxVJO&1gfh9Q8VaL0@MKU?&;dpLH zrh^-A8EdYzIGrPSbLGtwJc{D645Sr>_d13-a08Q>?}P&!J9Q?EE4QoVzezF{g33P# z`Gm{IIpP`SMZ+P)tMckfxQUop4g2_6fE7id={v-#xfo);stD(;8vn=^?DrPT_@3XP zr~lAeXef&5eHfRR?5R!4=C6m|yMpP55WQ;%w(gm``r~u;u5tLR-Ia^a^tWcY?-=dy zs~!S--b$lG;M=#d-8PSQ_?sYdcL<*2Cw9+~{(2ui+TDLN8Nw{Bgym!4%_bb@Yf3F4 zlnv~Oo6(av=55!O%7i#91n*TrWQ8X>9*Wsfhk>1kfi?0&z7cxwndb8e@A*GD4^F|K zQpI4^o<(uHIM(SrXz?{w>a}ErhtoL~ccq*Z$1{sNaiDO_& zLzLwG0+-9EM`6X#6-zxTl_lI(iE`V@iOk26I<6jK+f=-rO2zTee{V{FC4{x;<+RpN zInB7%(qZ82*rcA@Yoy0v+ul@KV*6t6=UVzYun&r`fJc|C@3}cfQ7z${&3IcyN&iRm z*E*bq{P!X=HRE*2xp{{&kFYg%kuDd)r1no9kAmQVzUbPx_XO>jz zkAbf+!>b>^gRM03KyELS#3*hQK|HC30|#%rum>PmxOf)|=q&d@V0G1<UEhspM3_#_Y(tzdi z_EA2c7f9g4+{ zSaoPR*3W>$(|eYTc331Wo_V>U2-Y2*;iVbGQc&wm%|JMR_<4M5dHjg3r`5o$Qqa~` zO;FhY4r@(dx3QLRqwk=| z3Y_Oj{@35ZG;YV!hc&m{I&UCM`NV{Gi|9fad-MYg)~%z@(FHL3kDKs$ z^^a@#xN4SXehhm9g*7j<)mGsZvc$Hf`U5J}kA%3|GI|j%)&{y+FikJQz1k==Dy%M@ zj)$k~Vh2dk%HG}9(8x@@uCKfO3urs z?er|n{%jNCuYNWK%}P0@?{##vQcab$1Qs4k^dT`n*VC1_&MLu2$F_Rn*3HA2nSl8? zcwQK%Y9ny*coa(Y`aI7EIgFOR!|4K&jIT^>^9k(y{5-n4`b1G*+#6oe^+a>s9=NBU zj$bH|hm=6%7dLs3`+qqc4Vv)fvWFBM|MC*L{r*>rkkb2P4yOn+x15YZCk~y|I_I?n4Z+E!2O<3L~EuNO&B!@)~S^Y9}z2E8nZpdS*hLqFG zXf>3b)+5K4r|%l`hq4Y$K-uf9Jt~_}V1<;xu1KcJcI2CLq1Wwe862{T-Q8;wyu3s)xJ!B0~BrS(rpy=#WZrkFuH zglx;g_~f_UO{e)~&qxBc@_T;L$(7r=4MupWX$^f0?ljGze}LaKKS@`@d(8%a)LpCO z1z~#By8xwbTx>hnTts_mB9%AdzKBY`Y|B3zs=?^Le?HGsPGH5D_+&A}T)0jbL%(n5 zJYi2@*Dxzuu!9r)R^`BP4K6eyo|X_LNBPcZEre+cXz8G@`3I4zQrGq44D#mSscb}O z&4=UPzKECU%!`Zrtu!jzcO{E34Yp$mKMkSW0$xVyE|%t*E|M3?Lx1w?o#%!()p>zk zh4QY>^!Q7i=enKhyjt*2e5EsevANSck1W~I2|+?0p^8B#?yC5+0+zp|et_I@M5Q0P zq0*-b{-1s5Q1J%^e~I8P7yK^1l^Zx;o@+{oium>CuE?20BwZR5eGlpXry0;mp=*MW z8}P9H?l2&)Q}X@N7F_6(e80s1%k(@oSzJ;1R?`1#J_l+ z*BwdsP|jig|BF5DtdF0+?leF-|J`VST7SCF09AkYZGq6=Z3ejXcb5S_>+dE5{;t1! z40uR?w;1rS{_Zf~|JVP2{W|gQ{@=Y9kbn38fA{}iF#fsb1F?=c@0H zNe9$-$FpKCk!9+|`0Oo}(c_TH;JPl45duiDiZ=wRf@ZV}!QZPeNvw|*cv-;gHkDo? z=Jk+ya}EBlwDP8&{uliDW;i}+Tlm23_f)?1LUG!Cbv{Z!3+lmt2>Qb- z^1J5G3i^sJdy`=Vay&k@vpr1E-{``(FIlnY@grgb%YRbW z9Tu=$Y^Z5uXL;WX`VRuS^qSzATZ#DD>+M^CdBq~T)(Yr2swPjcVBYwQDzjRAkvJjv zHfE{#Bbh3^FW_h5lSzE%PbXx$q{{UdP>9bXi)X3=sKA`psEjQFx{TJY?#%awpzrR& zr(4yT@0w8fy@1}gRr&%&UVlQU(7ay=st_;;PPYf|BUJ|zFxvRomLL=677Fs6~xv&f0csPAKG1Da_ zx(ikN52P&V!nd4DG29g4x!Wb~@2*sBffcug`jS+wYUx-3JFu1n`rH#U>T()G9F!y` z0|fLCk+!-vQtVHxpeG1u;QPZSMr5B5h_3~7MaLj4a%I+iL8o2(YJ14?0c79Hsvk!M ztQYVsLY6tu^S+oz!BcnjG!fR}GYj6ls~=S^zL`BD43NcqrGQHW3=(jGfTN0pMuaR= zH|jOGCZx`^d0=oP?DCGPN@mQWFd5CrU1iq)3uM{64Hwm~?z&{9BE#Mge zuL|gZnhyQruA=9H;U4NvM+-PYz;pq#1bjlky+5knPTMfpad@zUhUXW`xsrz;5nbnq zC}svMG#Cv}lW@;aSd%LyYCBZ4*06|^2NWi+m!?ziLbhJg)1bnS*Gs?G4Y8^k`U$&T q@zL$(@f|f-79U$(ka!TnwOsjB^`uzPiwkRBk^-rr@Xs$v`u_vC5V2hV diff --git a/mcs/rpmsg_pty_demo/zephyr_rpi.bin b/mcs/rpmsg_pty_demo/zephyr_rpi.bin index 981f9b4fe71377a2c6d642b181fd40da449a40b7..af94a220f6e547f4b27b068c3436856c4c19f03b 100644 GIT binary patch delta 9123 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 HNYMW`>^ldk delta 9018 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