From 532c4ceb7384a0db7a852ebcbd9a11a8bb12168d Mon Sep 17 00:00:00 2001 From: richardbarry Date: Tue, 21 Oct 2008 10:18:47 +0000 Subject: [PATCH] First working MCF52221 demo. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@508 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../RTOSDemo.mcp | Bin 53386 -> 59520 bytes .../RTOSDemo_Data/CWSettingsWindows.stg | Bin 4698 -> 4659 bytes .../INTERNAL_FLASH/TargetDataWindows.tdt | Bin 609082 -> 657195 bytes .../lcf/MCF52221_CONSOLE_INTERNAL_RAM.lcf | 133 ----------- .../lcf/MCF52221_INTERNAL_FLASH.lcf | 4 +- .../lcf/MCF52221_INTERNAL_RAM.lcf | 133 ----------- .../sources/FreeRTOSConfig.h | 8 +- .../sources/FreeRTOS_Tick_Setup.c | 5 +- .../sources/main.c | 216 ++---------------- 9 files changed, 21 insertions(+), 478 deletions(-) delete mode 100644 Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_CONSOLE_INTERNAL_RAM.lcf delete mode 100644 Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_RAM.lcf diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo.mcp b/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo.mcp index 28b292be25cd1959734489f4caa5b0f3d318ccba..8375979944682e0340d399706b9fd9962eeeae50 100644 GIT binary patch delta 1818 zcmZvdeQXp(6u{r!-QKnIE?y5C@q_m0VW@nxD8zsWb$hg>q-VG1fDK04V|%sN9=&z% zuHRCKiG2CdbqFbF2(1#5Les!RLll&R5K9Rk^$!h-5tV3SVlaU}L=*JQ?o>!%lDGTz zH*ep2^Jez#u3_iaDQ6&=N@-32D3JiVe+D@C%dx<-xxQ{hEhw*{^sq>7pOoK=>QTM${e~af4f|TS~c|rG)jB{`fi}jRK4u4 zfL8RdX0#+@>DE#WG$WPGBs$`y8dLHbB(!p~3rqIO`9qj;4?5su1a(Zkj-6S4+DVVB zRB32c2}`d!;kI(>p?@w9$x+O%mt9*OStPmWoJ9q+Ea_!+M$+ecG1U<_l_zp|(uNv| zn2J{NLS=U*Zgj+w!HR4m*&M7*bhO6}E1G>-fVWyzrHXH+sn)ynq^=8H*4y8%3!@X+ zpH3%jrNwAlYmtgt%fIZes#SR)*}ppcvZd(Z=u1%~9-TB)l2Xl7R?+g#r|4k1$W((| zb!Z4zTCgc|7wR;YDKyn0KH+SRx0p&}j^FYT@3yBZJoa;|?Q_1Aq4jSx&9GrxtTSdR zD_m=>dy#l`bGxZDxor#E$sD&DOKY*DsmvBOdW_buUwIeP{asJ;RR1+Xxr0^$y4Fg~ zG$vPgFVwT9@;nC~+seSSoY6S$U{H8AaG_1pdK{xPVZrLc4W`oU3hIdsyl`sOw35|Q z&7A0(kw#ydOW%}i#h2pFO<7#&`UEZSNw_pTQTVVi*UvYwv^j+_8tHevDSE6AGYord zo-&n~FiCA{vubJC_a;Owy?!-}ry*k<399rLNO?4vo`-aig~O@MdLkJ&=$Gk+`{8?; z2f!P~bM)zK;r-T)*#}scbuQz_#7-Btu8=nN)X-~~;IY1oSpWOolyxp;pAS^bkbvFU zSs>9Lx4YS?18%3O?qOYrie;w*Bz9xF*Fn|1+x!!wTMFj0bE7$ush)OQ-*P_l?>;<} zUHr7zMZFXKxaOS`^XQ2Q|D!?tt}1J5s*1%uBJTC{r-_^N>bVNZLyIOC$lNB%swXvx z-kChgM#dL=-ajhSQ{%VUwKWb04VBMA<(8989ocVv=a@t;>m8FFBBML(@<5KvM$dmJ zNkLkDq3cyL7du+q(2wsU5a+vuV_+}9Tx?~W-zq0o$K(8?0{~00rEz}!9b$Ds&PT=p z{MbJ@@2@7%${~(^`uN4Nfvs5O$MA{I-W(y&Zp{H4{{&!<&*rnr2qXpHkM>vy%YN4m z0-FW@b{N1bqJOcCK!@P_MzQY-J`1x=34Rj&cmXz8j?P2~=wf2@JitPa9pL0E1YQ?> zcnn|}?i5e7b_IdyR#kNdJFd&-%a#yG3wxc0E|m@J2;kz8@V99-yb9nFtNHB^fh}Ts&ktA@u~~0^Kwv=dNsK>T_Km~D`ls=!mahPYXyfGt F{{cAA0H6Q> delta 951 zcmXX_Ye-Z<6h3$F-u1N?-7B&xx;{g}Y%MF4Sj5U_EA5XFgs2ps(3Y!`T8fYQp=43Z zh-8Miq7{~p9I~j0Ldq8y{-{Wch|;ZoL{UE?Av&|pfph2F@0&B{yXVa9SdlMyWX)My zTP_1YvIKB$5nycTuC_NosY0ll6$i9PZim0A8Q(h4uNv^-576w+Hmd~~m!k7*2UUWS z3?EA@&zD14T=HLux->maQ;qW15(~>x&*m`sRYF8s^$C`n5YZdH|Rvts;p5x4=suH69>}7hd;?6H+ zvzbq2B?>F#(NbH3f~U)cbjo%}!SiK1{gIi#Hf;|KEG0*miigIfhEc22$PU*#Ro33O zKTxlOlVvQ{rAcgfawL?!@fc-;4zM>m_VeC^%$i2y73LYwkl4oCYuKA$c6m+FxgA`b zBAM9DrF1`5IBU_fzV|wrt-dnqkqM?#<8jk7?-W`!*CwfSeJ*JySD9lk$c+}OMXX#i z$799HmGk#_x@Z2E!lNR(Z6QZ8&=U(OY;d7eVnd&ywF diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo_Data/CWSettingsWindows.stg b/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo_Data/CWSettingsWindows.stg index 9c3ff743ce64f10c477ac5089554181983116de4..75b25711d9bb5ce0fc8ffe43b44a98bcb6bc11be 100644 GIT binary patch delta 236 zcmcbmvROqiCqF-#nSp^pgOP!uo1cMU^F~2s4hJTNeGKOqT$zlRfkF%}sY#{j>8V8u zA&EulsU@sHArJuSVBiK~kajj8W@S)iY+|Zq;$pe5xq;&l`@{eqZY~A}GX^DwQf5uo z$-V+{95Fym=1dF>lWz$eFbw2iV2}W6OiL{)xak|h02BuU6QH;(RQw}M5XjG*d|FW7 oa1Kzmg$1JPT2&~}S_n|!Wnd5iss@?1Xi_NHNgx@M$=X8t0DjLZg8%>k delta 284 zcmdn2a!W-pCqF-#nSp^pgOPz@6F&pPt&M`p96mq+1_maEeGKOqT$zlRg@8O~eP?ZL zg@B^ef};H7)Z*g&A~vup1_q!`22LR624av=AaPa(RmLW!S|%=*OPfnL4zY7{F)&y# zurMeye`cBND-fq20Mw<;glvfoAu zBRLotWPqyDQi}?1`i1}<2mzY~7#P%{;vZpxKz`}uC4%~fD}cIMSRlHtRfPhb1_3&} Y3=ASb)gaRrO$r4&8zkc}nMFt+00|d0)&Kwi diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo_Data/INTERNAL_FLASH/TargetDataWindows.tdt b/Demo/ColdFire_MCF52221_CodeWarrior/RTOSDemo_Data/INTERNAL_FLASH/TargetDataWindows.tdt index 608dcf48a8c69ef7e533086ae23267477dd11262..1b913d221aa79c823c08bc00083c7b82b7f10e5c 100644 GIT binary patch delta 80143 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 `C?PYBnw-dE>=rGeQXLnYst}q0(VOAicf3wjo#p zr=FQNll!NuQ2opL3+@EF65AFFrmF{BJp;SNhYO~Rw)Tp~CYwR%EpM)CY_4nFWOC2C zI)u$LvQ=TGCMdVd(tgeXuN^Z-rx?*S8!TmtcY4ji7e z`F{ldG;n$z2ET?I3VXwe*K&dX!G(_m{-J{hwJ9L{6@)ob!TEHX1y17}QiwahS_)jQ z$!M1Y$3vxMfOakL<-pq||9!xJ2b?BhNd9@?e{%7^1ss`>@rkNU@B)IBpxy^K-IErY3Fw8utANwI2l3AZ-U?iLR9^{vs|#-cemQV@9MCXe*AYDQ zh-(R;I6N2!+4yb1Z*}1h0l&+IKLh+h7Y_G(Tt%dR2%L(@(*G6k7lBWO0YO-7Aa_~> z2-3wyHgM|1q=11OY6Dz&8E|TzR{VV6qg;43@Chz_1MqWQ_;%oPOdS4)0sBBex!VeF z2Y!JIe;9bJ3qJ~cy$gR6c$*9V2>2x~{2Sm`IJlPqze?cnJq+;1sx$q6ZUvS~ufxkw0kO6`L`|$I77sKtqKXBm>1OKxNKMMRy z7yc&j?_Bstz<+Y#-B!5%PdX0v`>AXy7*hhk?FXfa%%{ z+zY%0@s9$h(K^Xr2Dly}Amx97c&en+q&#_JGXm8yl7A2J$WTyhorD7Mz=*+yrNEDy zmHq|rN>hP<2H>j@#k;ie71|7I$PT#t@vF>opp z7!Zj*!}~Yj3#9x($YUU8Wgrs0pdUsnhot=1kVjDNHszz@p+7hd1X`Sh2ckwn!A{`P zg;5ZWpgK@xDu~*Ijsy1wvB?((MBNMpmB8hhr>K`84KbX97zRXN00plC4*-V;qT%9*6k&{t9~iD|1CHOAY?Qz6OAv;b3SwZ9N&@oKR?HeGpfX%36`+=j zj)V*%1;0ePDTrS#<$EAcMJNr3K@*N7gG;6Sw~&7hxb#45EXv=H0hCn)u@F|vfy*L@ zoe4MR0YBeV5W5NrK6WYC26?(y$Rdcn6Y}tym4VpTAb$yP*@|M(_v=t)84wrj0|kdb zkaZxg5DKU%Ndw~MLIE`$s^xHDTrCs?fXf`jbwHl(@6v!c6p4BSxb$Eg42UiOEudx|H7uc~=o8Jb)SZk%+%m%AMENJ6OvIiE8bU>* zheS}a5NNrGaB?4-rf@Og)TS4>@XG-=B3S%)1HQr)|0ZC{V4BqTFTm&>1s;ULq<%o& zLdY-~lFkK8M&(Gn70n8rg&5-z|24pKfM?41r+}9Nr#e9Ke+7m! zlji|174h&t5=cf4X$iv?xB+mv3-1BE#D$|4D^(7jg3d;~#z!WYk`KJe6~7R0y9=i# z-$8i2nZp#gl$J6q15&67QLZh8l*8*CJe6{Iz=dZ6rb;ULQ_BD!bm6stpWyRH=!xB{ z9@gGwm5PT-kgg*Mcy>meEih5j^T5eT;))ahJ?kWT4E(5$VoXbs+hA$dNDtx8-5To!Z}9sc_%zst4l`rvSM^E zD@KR!izyjx?~5^09^K25(Y-7gUBYjDLYovU89g@KfHA!c8dKOSzL#NRdKosRmtkXi z88#-&uwZ`4m|m8RDe0A9F9S<@8CcTGz>;1Dmh>{P#BE@(Hov5#mxU!^79zfvfhD~R zEa_$7*j@&X?PcItmw}70=c#0DFAK-IEu{Ef29E7z;MiUUjxFg99M;nPJnyg;t($wi z0#9mvil>-u%ifmdY9yA=#oiyevrI}J*81pTUl>35q?S5iioHjyw;rqY$^A!Rs$?98 zVbCVFoqhN;TH%N%H6zEg%W9{+)e7dqXS5`rWf#wSO3PBGETD#*D}Vb$VE>uS5NA(o z*^-{jpLt%3;14~g8Qn9V(>`SmZkXv}f035vmAT^cp3~B$fd`+*kvtN#RmHrBo&GCd z&?7qoPu{rG~G6KA_kX0!XFJ=l`2#y(G* zi%PmZztKV(U;nBWu>bkG_q?WU_wlcfX%PX;FVM{$%epJAT#{czXL=>mbw25s)+gKI z66B_hGg@ocS2UWtiHJ!V#ZNcu$=Xh)d-?mvw9H(6#u;j@QY0M^njtjzwHT%5$!%-a z)HaKFm(p26=^*{uGnBgfVX639p*UzUOU1oRmYPJQb4RddZtFKKZd_N3F@v)=2@BA@ z{UkGFRWF&mtk`g*kYQ97Zh6XA{TwRqz?gqlZ)Oa=@p>k);++I#nXh)vljG6F|BXW??L)+ zSjhc~31dv7Blm+WI-V5hSxgxEZ&z+GUZTfdLI1miXJZ`P-yCKW-587wB9ez*^+69L zg1*#(k$+>3qWsQ^m@nZ4pkJmagDpD7QS>|}gfXhLJY?J^>F|VsoY@H+cfl`WSdz4 zt27BA^kdLx85;ENQIrp?h)xNE=6%*#H20#CuC{po=qw|9Pe?i%k@uhGB!fucM@g^5 z;1PyfiTO}8LQe?v@gg%pVG%v?+f3-D1k)ifA=;+5;DJIK;k(#`8C>hT(^=m2-HV;( z77vEIwB?;H-%&}2F}}APFZ#Z6C-ALgf*bu9e2WVZ$*Gn@W9m(84gbb+WkjTPXwBMP#}1giJ0OXijF{T8ZD+}E@31n=vm-L zuC2-#(WodNTl^>{0mEw%$bfYMI^rSo>6S7OanzO#DiJ50-YNoR^CwFYawcF@nuz~8 z$EPDbcnhlJiOh6lBk_npPbzdpCQJBcz>}Th){*C#Q*D9=eZV+udlFaVN*RHiMQ(K5 z7>QhNA*B_dquJ2YDP56hA(0l0RwG~}6#2AshCA{(xYy$Oy>p&B@?A-%w1Q|hw$jf~ zo|XW5HvyxfL?Jg5B|Qpdd6@-|b_|Ug0zQkLFX3VMU2GoIAfuyD8LzZ>8cbP{|ES$A zMWFoEVnPonU>FefxH;n_6g_FqTnP9zmn<@1RlukdC^k#a#}Y2U4Jg8S-#~OM>i=HJ z6rJq|M^ALYMT+vN#e*CRI30@6%qCm(^*ADK!N`DRL^R6ZhEYs3>q%GiwGuu8=IFy% z>$4)B!Ag|{ziBRK2!XdH9d3?B(O5M<`X7>x`VoViS&7A6wc1h14ID z16Wj$V_=$vg+eQ$9Iwl^;8o^yHyIIw+ozyIVa#U7h!|u-(8-AXuEcJVbTR_PXB%;^ zqI@a!2V)+T$VxE1hqoMC37^FI7z_TpITIy}z(7OLVMHu)X(^3Ol5`jmTjrvp^ExH< z#A0kA;BDZk6Vv7}9ak)B<1Z|x4)cv%f_{ahQ(|a-vn-xlB%Km_!bwaYL1SKwAMQdx z#T4)txYeS*5KNQz#wH0r5BPJWPZ2b!?u8J12}5V(qZ0lUEhx%_Y3?;@j)a4k0J&cx@1t@d+mry!Z$_g?1bj8% zgC(RDq$~!5_am*Mf z%oqToyoePpSb`tQ8(0aXYasvVdNq-i^DQ^&>A{OYX>wGqa#UXA&KbBQr=@YSqmek> z8Izop?<9mZjthv>?P`TTxY*+j{ucE?l(i;@^)~{?fJV@%c+qSHj8;KsA_WW(6~ct6 zo(yrp`4T2QXwHJ4Dg_#Yt*2DNVn{PpBBTgSR4^3*Ms5W>9xysH0S^PbPQqxmw4f&* z2`I1VCj{I8_$tL5?i2q$2~P%my@WFX-%K!78#FQH7cwFO@ZA!o96u;wfb`Bn@eDyq zpOr)ZQot`tcpBi>Bur(3)+QbmCIWs(!T^=`C0q(P_=QBMXug*4Ie^h~TF)8Ej}8wl z0E*`W6b<&>3Yb*^M$uT$4Gf0cJSZ9gqX-y^hG4;uq9K^_uP~I2&4lLz0Yf1}$72hi zXat@3Q8YHsg%U=h^q?Z>;AOav2>5%z7n?A>QH)j~#UsRKz`KyXKrRJ>auV=lz}HE* z88FI8&?(0UBwP#_#U$ut(0vjnrB6zj^gJWs6@XDpf}cF`iiC@ie};0h75!eqB>ZO= z{5J`21RcdB_{l@xN|+2nG1+=fOBi}o6qBGsR!x*J3{~N=55z4U!gM}GFp&WI5=)Uf zSi&TXViI)XpWxz03$hcKE@4Uly{vc$g6C+53c>6!;8l_i&jslvX*LrQ5ine&LV+!? z-4Rf6m$i9NOag`{)Eive;3 zIve$E30DCAK=ND)_#+7)0gR#%Pf(~g>bDXmPoQW7{T#q38UbH~B?ANHFA%uMgSIbV zv~N$mgkhCDH(R znS|j|&q@iCqFM=)qB;qa>?Rivh6lEBmrIy*?vyZPfXhcZAK;r%{vV-I(4KbB9nP~J zZSE0tVtQP{l(WMUCjQ^ZM>h>HdOh(N7X|n&=kd<-j*I70`GiI~zmRZW3>Q5Aa3144 z==J{8o$#gh3pPMJOF%j17R~1h7@#8o>v=L3DAxx zn+Hx6BYSiSI;xm}k#`+V6)$+w2gQ~!n;6+vjrVA{V5m!Q5O%oE5Sqj=&t@I?qMYGiF{mG1Q^~Hj}B0% zeUv;UR#7{UriLMxKO8xJ1Ip zxiMbC=!J12%2Z1H=ec;$Ux~zsAN`epiT@(`)G-ingM?8uMw>xxp2)t6s&vo&N;~Bb>ME?o zK0F)=yCQ-Pq5TO*z$$fZgICuJy;sjI^v>1QLhn3pmPxPjUX8VfDPG;!2SPyC0+0!K z=i#$2;itq%<8Ry=%g&}Th@?u9gkC9*yX8M5mGAw(m0uf4=3@71f~wOIxF&3N-6zh> z={Q7ZKm+R^er%3RIw+)$Lp_qM_6GAG3KQ|*jhJeGI{sEC&d+(0R1d=uIH^d{FP7t2 zI8E=CV^@MvC#zp*qmZGAp|` z{aXvE{GCVDsH7w2xw&(%)OTw*Uw8gXzkRigAA3|yN;(!EQ)$PrQLGNIN3DfTEMXE9LJtakSBVbR|-%s|EyIH6YJb1K@P42GC9%YkaMgIyHbc;8=|Z z&-(V%H$913jYp{xH2{e!e8)m9=DNrALF}*BozPPXt$9b~fK%?YCB`auS}?Q9U3miK z{@6eDi&^2TvfU}y;OWtVcer3Q-G6z@smZu~|Vn zj#q8}K~Lew5fN>T(doJVc=tJ)ei>uG=TGZ;O4{32il~A%jEudF%_;hbi~b;^*<3u@ zTC7`LFdCE9q0npc|7h_SD9XDQ|4bK*PUk&~KFkFV5nlB{E)7YðOvQzU6@?p?C3nh|uM;j9L)^D{Qxx8BzRRy? z1g(rx&+?(A2Zj1`nU1pbyEDDZmC+kru-gIOx-t!Z>5N3I6xoQFgnFNuFL#|4pFABlVlpKe23{rYJUyVa}gr zQoEz{1?ne^@B16xtNM>9eb@Pau_W3R#fF<)IYSB97A$f~gC?4+l2InRGA67%9({)4 z=`s51UU}ISqYn?#nOmH={dD?QsU6s#igULE8DLHsQKKwY0j_r=%#kw9JT$>D) z{quL)$r#&ytin4XECm7YY+;`3U@c1jGs|~q<30;6Rg}*y7;W5cI`^YMEqc8Rt^$nB zi{^zMz-B@ZaDpE@jN_%nuj_HapLNd6`<0S4mRtJ&j9a!^IcZX=nk?Au7SghICY)3H z=KV?(exu+dtyUXcp+qf2TyR7^I#?h6N5SvAO-F5G5Q`Jei~Ij}-h(d3!HIS?J;&v^ z9+w~12pH9ku4S%>xh@zrP&(`7Kj~>ftB`9k60I@|nyQOcjjmktDGcww_Tyfqe!Pj% z0qXoL*J)xDgI&%=u5uRUmI~s(54{ z&^C2~Hd)e6^5uf|HE36xw9Os-KB8?t3ED7|wk3}L2%5U3fN$uBd$LGyOF0;jG4k$~ z4#26r`nLoh0Gv*AY1x(@5RM4On5`XvaqCd12OB94D;k#oRF0X7E;$Cco5Q4V&+<3^#Dxp2g(A>bHDij`IkIA!2* zgyGOf_{)I*gh0EkG|XJ6pCAz*2m#6PBXB4d`wSr9i32_j_%JixGZHv?tw7@FNZ1{~ zDaXW*X&9PaxAE(N|J{Xm!-#a?gNPqbq8?0PiCoaVkQDqGI36{XhfJK#1*+czkCAvb zcnsi@U&Bm>2g3*J9h_PjaLj0kdnoj23xH2@@vj1o*$iwa;&M0Y45r zP9}(Zu;*i!f+N5`bK$Q7ryN=ay$}4~F8m9mfzq>&XJQUVqq>8eyf}QQqmF6;M?i=B zH7WwBP%i;q;KHW^2hBRLs>68g3g9&MM27T6{Ooh_!^_$Yz!%E+n}EY87(_7;cme^q zo#4yBeJ=bR;HU?7{HMTEUHJFF0}gILmNH@S8{pMl8K5~r%9MThkR}TCQkTGV;0U&Y zCBVypN1Hh?E(D$hd>(K=rbBiBo{B(~6w_kHoru2x_!E-@w^-a~u?@Zd;O zf!7112_er^;2j1gYVUN?4Ic7hx}MexmHDOu??x!N9XM?TfdO8MyB?uGa2Vi4Go}ec z>(rC?6TsAzGfjCPWN5lJDE5j0@u9Pzw**-Ve6yh>8u-N!fB`<_Se*SUlnQnt0nEc$ z?^X5P1NbC@JoV)J4dgEee!i4PVr)EcX@DOYHfZ(DI(X(sj+Or)P(Oei_!mLJAA#4I z3jCX)fLckSX@DPXp7t<`O^?Wc|24$-b;%CQeTK$m=B!;5Dr&Xge$+R}|Lmu)P^E7Imv*W*~g|9&^^nJ=E;pBL->!{1mTQ&~{E zzLDNmi`P(!@1o(&684KF$O>f0O$xIV&Z{Sz7S^`TD4*@<2!By7y&dGdS~!f?FVlTh zu472n7t)Z%*ghqa^BIoM0l4Tu#B- z$0)+f+a|k<-66XCXY1sH$LX2VY*hHwk~p)l!lKXc0N*xFPd-0PmvuabGJWP7L0YVn zDdziui^C7wtZr3s(gWxuXK)!j~=fV zj4bMP-m7R-_-UM?QQ@a?ibjn#RkZzsCGZPQcoK4Yo%$*o6@Fl-2#3Gu1evF3bb&Yp z7AzWV`9Qt}x!38hqF$%Jih7;?D(ZFmtEkuMucBV3zluhOSrp7K>U9dNsMjg5BIgvC z`O;zMD1_`L%=%DCZ$8FbnSUnwXCe}s*O)I}cEtEcll4AMi$CMUUwCrPR||iJ5$|-i ztI5x>$X7qR*>b~Qnl00`-?}V19Nur7o)Tx}+v*nei1H(v`nDnBn%An`Wh(DtOiVii(UGs>N?J|wz z@F=fGjQrV7x3Z~iRRd~vi(8MV`Mm1SYEqhQVeiVttN*Mf4!5Iwd+%&&$-E5Sxm@?h zpJ5NDS6TZkb-eTiEj8J3zB_S#aG8#`l7>~mCzt6Fu@*_z6XHvbvozL91I1gk`J5Gc z#9%whU1pWl&D9NS!`(r4C-G}^&riI}XJo3r!{TI{>piL0dZzJ?N~>m3?fNDKX?zn#?X8*(GNb9;`F26sUG-UP#zVS06*P?&(;xhX zW<4^Gohze-Cw}JE)}o~DE9-0EGp^^!st|DH*6LH}xUX%J=wYY%L=nkJh2pOxel;DB!<2FpF`)$P>*=(#2+D zYTAO^@#Js8m}x1q;A1YH?;ThTU}j~qWKySKYS@C;<7Ji>yvLkwqQq1v&9mswI!37P zxZuy7GnVwucS|R2Eum>Ax@fkRW_D?2N$~`n!?U#K#LAhc%whshlZ%d7v>}!vcy6c# zKWI*@ky_7Db1GTDZ#hPLFu!DFfOdE0iG9r^@U1Jc|2VLg<5;a>^2^GNR^+%*!yJ)i zv{vIBb<{3)jyGyoy7)13YZ(#LFgaxlV=AXa=0l0@Qp~HX6OZSn{z5m|Fz>49kZg-hzHi|zjM)1=>#2y>7P00WoaL& zpl`#}ALffkNc~2xQ>+Fizcvt^@^55FBs2_7!1?-{L7ZE2hZ5Z>qVfBa}{;a03#+ z^u3+%W+!JpG^dG{qN~hTh6&kUIOk$%rhO&xz!<#~_X)tXRA6AjT)^lpjlbc2M1;^3 zzIUM+LDTVGG(SQABaA?^A(&>#eP~hweoB19gCEQ^wBTX$>{blY+U6YNx>s=>dPCH` z2;fBO;^-YX38afSqfAiZf^#vDWCU;$NEdO&nV|UJAOG*kHjkr8{VQD25rD@-n$N#c zPYIHJ_&mME5YsDFi`gZQP7z^pb;7Ye3;&6!`mhz}c_%LA9Q9-Ayp^gd| zB}8tsdSp70V#^M3!TAy;S(I?r8N@WD-v~Fc9LXT_1$c}(XQKf{b+*V7N z47y0d0F?#_Q)Un+WT_z0NeY-=pP__YOsL>?0yoQ^IsyU*Bus9-TfzX9`&>LvN|-$K zjD*p6=qQ}%{)zt;7tgx{BYp9)}^Gz$dq(=jpa!Ab-;s7SnvdgO9Z*3#W2wU;+K_5coksuyn>FJ#AZntE~K@u zC~EdTz$+y@4Dfo{t&q+Q5{BDZyM!S^tN!hf9Y(ol$Q>aHF`@quFceys@ke@|)%$eM z|4Q4d@m&**i}AIW#*osacb8)MCM0||p4)5g7M%^ zRC#aJJtMr^N<9N1NIT~*gsK*AP}ggkbOSllns7WoMV``_w-Ra_z_S8cy%Q<_K+>>t zAK$6*%thqi{ zdTV<71tDLK1n@l__4Rq)hK3CdFvF{Ay&U;R!FieYgty@dPm3B!R7t#W%~BtF%~>V`;o%FMhhRD70+04_9@gD6pJHMHck#=eX!}{7 zZsd+CT0G?aXY1IT^*KI+5IljMTcywG-XiKD#f8C`xE?Wo#M(K5J4{?GZ4=la_PVFp z&(f(bF9qNwesHdqGFFZ{#e%g}N0d^>DYUg+^faUrFC0$B7klWzaTk5vCk@~9>3mVo zjou00Md}kHDQ36$%n#;}Tpt87DB>y{ny^0+Bq$+wdpkW z;vzxUUR+`jhq|qXq}%~_Q`bz_esdl{z#S-Di;kLU!|1jfE&2i*o*-TWZ5LR+Ya%3o zc@#@PXqH<+z4P~C@3Ig3n4|dZuj(rjkpJZ7)Bpwz*c7*YM5&_jd4JLS@mm+FMzF@2 z22n1@r&TPC7rEea7d+FMLZQ1(i^Y#yoNeV27d+7g4{^ciCR`vaAMMQJ&`vpPPRA_Z z5#n=5Rf^I>|t(t1>R<*VjgQi(D?0_A15JP1Q>qhf^ z$Mu|?nF3qXGoxo}$IOm3%IW4RUv3X^R6R?3Tk|UU-i2zP;7(Tw;;tKQWfdiBmm1t> z!?>&4?wIC+uXbjj=9lVSN32SaU$@I7d=$r2+yz-E^s|t^C_ng-*F(^k#O8IqdkG z`eWP2Zr^vhe7sG-Xg73S?{a3d3;xzs*FSZ^<6ZE(uIjf6F#mq57AQOBOeoT}9&2)u z_5|7RNoN9*o}R49NGj?!^YBA({$8^*Wmghsx^V59g|ZxT#*+C>Nwcwwa>@?`&wSXY ztbHd?`sQzPE>yJaIz>~oDW597L!Tx+AaIy=Iaos)9KgZE`xsv&|PxKt7^4mYr z^Y}-f=(*ItSW~W)T%uLU(MQlGOmU&uXp5@2&~WTVagK{W-^GKQJ8fkXSE&mwcEJG? zo-CNqqRiH7c9FDKK7eB$GdrzLVC~fKCgSc?c-Kez;E9H)&ON;^Ns9I6yncwS5g3(Mfzt`0VV!o&CJ@Ng%#!z9Z*b}b~ zDBV|v5kNY&Xb&ib#BJ7=cw^v6=-z35s%vl)#vUI~l-LtrP>ysf%suf12O%}y-VtPACwY)f4#v2*!*ejqM0jnkoFLEF;|*brSG3=4NlfG`a(Xn-Pd9&14!A z0Q`uHY0OCwE=M4y43nv(320vz(^#ZWZ-@{~{Y<8F4g%ldVj5QpLWN|?GMUC50N&(c z8XpG&v8T~wJ zpA`P)LDok{RGbMCS3HkdY9y;_0*`MoQexHGh{~2$d^)tP36ZHh5b&oZXCzd&HrC~> zrlq66>INtKX+dqtr4a{Q^0fQAKx@mahu*FU&qf1h4E5N2a92y}KlkZwh| zckEfQ_w$}bMjzgk>mR6IH<@qf!I#hO&-IUB&HVjb|70AN&Fb$To_gbOC^_@1;P@=_ zRwJd4+HrRt#fN<_T107T$2|f5QKu)B_Z{f>vjx1Vzdu`Dn!^iqEuHUOZ}?Po3BUbP zBWZxzaZNvH`MGsH%F9F5yl}3b#y{=vpUJv-$7M#ENA0+l&l}(`WUYMr0DpnHaSq>G zj-4KF4Dc7LJd2;$iw{SO#PMyv1|v&VmveTJk?T?CXY+5?8)?#tWjtb#KV4m!#pjX4 zgh4QO9zSo8e-dlqR}S)Ls<)Q%NyT~}eq;~|@Bsg8kUtk+r;Ew+k7WJ%mJ5trL(Lu7 z(%Q`D5BBGH2CGAOXP!S3-%fid59L_GudX(7Rdp2qny4dr>|p?C;Nt_<_OxAq?*@7aEHB*Mt2-@x8XbLl8NJmkse};j?YkL;Q*At^(c} z>qnl3_|w$uNAv0zaj2$e2z=f!fettK+dtHw%^G=Z&`3k!T$#%cJPT(n8|sh9yde$S zL9i{;`ob5sXXep%0BS-w4Hq}u(}!O_)SsU*EqP;EQ&WB2>T24RFasYPpWfKG4h0n5 zkAL-snn8_q0xw%^jOP7@`E%G*UOLPlSTtp<^XS<7$uci&m%*?AywbM1HPAkL#=;6p zzvI3nN7#Dqq$=?suO8-4N|~O3==BxCe%t8tGI_^yxXCxJGkiFPk55k~_>=hVwMJ~3 zIurWDsdCD3i!Cynv*B=16+f}T7_6$*yrY>K?`pn%xPKH|#k+?iKQ)}y7^$i{k(bpN zeN=T4kIeTEV5Ph;-=9-ZmMFI5p4(7k+1X5n-jO89t+mZl@BuY=ub$|?;79ZQ$-{pc zFQTV4*Vfv`blhgDT3T0IUt@mRU8uT~UwyGL$fGt5;`>xIt>Lvs>`--b|FeEhH{7#G z@UDTJU4t5a+X#Ogo68T5@DEZeuvK%tkwgWzn6D`C4@kS9&&Gvqb*t-Ys_V%^woSA6 z8(WNYRo%k73;bi)X8v`7zfbC>#Erz&JI|N#%tC((+s)^qx}~cfI}-%k9CW0$H6mB! zfqkXCX%^bmwnG1K^(q{CUV<~)J9ZecXxq2&4Lgkf0B+_hw;KPiz3%{zqU!$Mot?dz zh4kLp&^w_j0-6vK2qq+?ARrJz2mwh*NP$pyDMAJU2?=lkX;DN$nl*O8*MbU&`da?J z%8UA{*ujQazu&ntvpXRA_2>D%=V2bg-t)WXoZIi*nK}2Ku2IqwEhTbZUuLQ)H@~SL z=70u1x1S@@x}2}+=SZ}w{P1EH79lMS63OP)R8_zZH@Q^Q`$}HnW?|4=zqvogN+&0u zE8F7fmXjLKr}nqSc1JKh;p&cvOG|TV=FEYsJ<9*S4*az(wgeK*ZO>bt#c>`8j&t&5 zK5{%&=_H;tmnFnX1zFygBwFXwsi0giY-_x}D~PX7CKj;?m3b0miE z8f%N{42_v#wZg=jZhx2cvX&&{XaRm~fTJs)x0nU`O6~`|@T@_OK4CqDF^?En52bh{ zo~dR%c%LHHmOJ}7eA?Wf?1?EI=;+7eYMBq}>p@;Iz|k{eMu;9OMv*v)0U0ad&(yFS zNx}xUYL;)4Zp))X7b5xmfsSF)?0!5ON8R&N106Ba%)xY~LKMYB@q+oJy5@R1ULlg- zGzdd*K2M&^v#nS`|rRz|?0B0bb*^2oa1rmm z)!LaK`okU_CAU>SP(M^ZQvaiVtbU??s-9CnQ$JU~U_3G17USn*?GI0dHua49Z}qI$ z;_%${?>>QLV8iMB39LW~!$TRa zXx`Y)5zT*^zeLV{XEZVwFVuRrIb?PLRVs-L8lUOWkdOhB9v_yUsuGs%Ii0E(Qflf zSA1Z?bt8YTh_$zs^1JB17-zkSx0}v}Vi-)Cj_f7#J@hl2e>t7yD=By%hbx?0ZMZQP z6tiAf9jq&6qm@*8hQW7mF%9$Iidi3P8t*lOm03sfJ7%DYM)6bhlg_OrEZb*vreNn; z!HzIqR)UC|`R)=FGK2qD30feN2hL=paeq5IljSN|T5CsWYrC9TtT)afT{a8#KbF5X zi;c&^wEJx=&zj3!x3Q_#Jbv~zHde_uGAmXQS+kMZaeT>au;0QRWh}{OJl+K0+H}kj z!)KSVzSaqRM;R(?BLBRMWm|9ML*}4llZ=wl{ea&$2PK=#H&&npr|=IeQ1=BqVJ;G% z%ID2xBdmq|iMebn)*615>=tVgFRlbNowru9WNR_MRLKTdXYk%tNT!4@s$w@NGpCAN zL~4`kn^i1XnN_JnV(J`J&2p``@ioH8>Yz`g}y4SKwtc`cnBCeXBuVoXhHT>oU zh?~csSir{n%r6x>`28`M;s-25fou7Sg{NyG!}H#ppyX{>oy=xp~wQHpIG&=P$u{TF!SZLC;;mKVE`5S;@OBMPI$07cT|N zD&Ddb6|mZ9xr2bnJnIIYv>f?u;_l^0u$e!(oN;BNk>Iiw*!MDb z1ybC^cduZRt(*DpE07}R<5#lVty}n+m28Hxb)u-67;X7oayuJr-NsvPM_0WgTf{_( zn;8#V#ri7SVMT!pTjeL?wl{4Rn0N5)t5DxN`NdTz)Gj_~HG1D}K65oIwYKm#S0jIS z@~}GO?=C*J4%M@VHxP9RQP<-p@vJS({sK^>8`ZB?f&LXfOs?HK8W{# zxIzq7CQD$UWbgEYbyt7SpvfP?n`vCZ^Ss9N#_CkaA3S;g!mB>V2{HF!yq?4rgXI6} zEr3vS|1%He{r#(go3#8KnIRO$dD~Rm*hoHWJl57iB1(0p<}>g3mK{TO#ZvV4h$*lmwFl*lRG8X#$CC7Df)XK*@*BI%HC) z6$TaEtf}Dskc=*BVFh8gWs||ea?OMS2b_9Sd`5_`L;{cvAldF#I(gA_Ii27@S{)Q^O(Pej4*U! z71a~7uDGhbS)>nGo^PN}dM$ck)gY=4UFBB{$O%`y*+7|e?CR4uUuCxi@ow#;#fMd5bjV&1uRTUQQdP$}k5rf8B3mL+4sa1_3?z;psMC z-ib*uSWFZq!G5mlbz4X78Y8t)Zr8u%^YRFLxG;?oUub;#F#1M=kNHZ4@}#>+TC7ya z^x?X~YJAr3aGdfwx~^ovQp?ovJ|kf|PQ*ryGLM4A~ z@fAmHJqAU(aYE&kfcU+mByVa(#UENh|M=-ID`cA}McQBT z85MGe;EUHPq@;~rX4lTCzP<4|TQ77Y3LR)V|B4Dt*JiJMJFHl}1;5Q}W^Ng73Qsqc zb*L#Ulu_5vz7LO?B8{oxJx8$U4cU0-8ih|TPsTEZmyEE*+TEDJ`)HpJ70hyYIPd$M z)ZXSeZQ()B;1OJ$sO5ValfnS)M6CdvOl1pejz7hCLB8b60s@iTcF!lo08*l8pAZ9& z;uGRX{S#uKHIN5%uytk;Nf0=#e?26$fY3-n@kL;q)Lx2g6dw;+Q}9Is@t6V9DbbZoyZxOQZ1FE|w}}uZID^ zQ2?XpfG(XQjyU|i9Npub0FVulg=qZJMcMMhuYy0^-RX);q+*74gpr`^-s`@{eXo0; z%+w#$AJvQMPwFN0XC@840WY7d>i4bn2iY6ZQvEx;@HpNB)ql87;%koMHMQ@$F8m=t zw!Z7&$nZGp+%|t*McwXBA_ac_J0;vftBHtp3)gMrJzru@+s<_l@vN6vPkG(b>&|f3 zORSr`?%aCD54^;>+5*@2RSIKH$annbi?twNBXzh!-xFB z2^K4F___(>!b#qJy$?(z9~X^Ck$b8yy=*@l~&)o8)aQY2EiKJLJ>4Y>WJY zwRPqNxfXryn$hqzqhZl|t{DxZ8lE$mJ)OH|G z;N#x!zR!KYeb9Z#eb{|OmegO=Us>BBLxdXm0&ki4ZR&qzyAR?BYK|+_rDSKX~kB*0JrUO_A!@E*j&BpOr|Bv8jDiJ}=$O zI@=1Gn)oI#+O{{HyytoC7 z$tu8O_L#gh5w(2i^3iG`FW`}>IY|nNZ9h8%dbuTWRC7mUFbIG`&#Cp9-EIU_i=U|e#B zmPWYxMDN6cGlHCV@;j9njhbe4p7I>ZAaaz z+-C=io47{rTm_lA83iNK#}(uijG`R6FlL`n*XnPFL~Q2pf|UFmykQzo3`Z}M zzcNm|yo_&%Xt+*&fIo95>zME$eKW$_W)i*m`#s*cALV|ZKe-<{JHy}Ij~@JQ{_}p;-+Gq!z7G~@ zAMm34kkW^IHT`_V@4F9j|KTU@L)Jd#Ul8>P_dS3-eaibBfUfLwQMZNoGtbKIt$Ld!+_8`joH6L*h3cukM2U(1y zp64wpO!w6b{DjJSNb0xzlFFQt`W=s1!#cRs@AWR1lB3;Lu?WzntRda`7TG<>CAOc4Dph#18U zoLF4Od+fCh7aM)mpY+k<;YlAeB2~8o%#C=O@-#hpctQX57EdFh#AnpnGG@P@JKFHXu%x+M^&L#B^O&r46vC_u;6X2<%5 zt_?S;ziOS0>~CPL&34Z?3Rdiw;eXVz-PfK1algIx z6nO0^@UNZ%`GD;#2nO_c^6LfzdOY=Yhs_(F_3*Khq;&A4y!`ex0zZ^!y)HRHZv4HGou zzM=-VX56=?;V#{{?_k48-MH`VhV!~{-_MQVnsJ}A@p{d;Z+K&gX53fRxLGsq+uisN z-MH^$E%KfMlnOn1#5h%SkNYXH*a!?2Q9Q|C@xfkR=!xW0 z5mv&r_bDMfL6JlFNqt7aPD(*!TkH^y4^$GcLpUi=>FA8n z-st#x4qVJj8BQ-vIyJuC_!}MXvocWWfZf9P(oZ};K|k&IdHg6&?e$9(|9yZx%2xCAqeH~$d3dm9ep}!<>wy+ICQQ} ze{7zF^YHoaK`3_@9utg2yYicYm5$h8JROwM-6+?w!S+y1HDAU*!a?}_a4>4PCx10q ziN}`XuY*z6-aIe_R3F|a1aXNxD+HSQ^6C(!y{n)0j##P9t1K+SHZ)O=9Rqhv$KDI4 zD1d)WZFXhxyjkTnRdi^C#!#|jo5eCfXQ(J5e8T_SV#1OS{-f zFk{`Sb-&>td+j>{tIg$Mp-MpHb=o%^xfUl<2)4!>8YjTEn-2|DI=BXFuK?TDihYls z_gZV4Lz@TSpmV+Z)OdG|2|g`Lq-||;Wiza>hiGpC!>;P^h4|{%EM4;)j%d~u8V+Q< zo8xGAp0Kv9U-RW!7-=)ZRGC)C&fwhrSYS$l6A?CI?ut%7NNr}gO; z>+oJeV~pW!$fX_VD_$xZXU%BrH?LRWR#YE<-s<Or|D@A&E@>g?-*vhl=n8za+zPq@e{|%#4Ehkl2l40B zXcv1P#7X>h)fxVS@DKQ-bKyw`yh;SN%1CMr_qAqKyV{I4fGa(Al8%5-Z4{tqL@`@u2wkLGLuhqXuoqytD%~NM1aIJo!a-U@Dej@Km9X=-3{9=wh2qG|J6( zf_CX8Xxj*2uZf`r^dS@d0O&_d^glp9ZKD4P`UMmHG3Zk!`bW@jd1+ttH+BZ;8#(li z1n`N8p&RJ0O*E>PL5YX|X3)QzXx#ICn29a}?Qf!&f(|#)n3R0tk-p(v+ZQGFnGFVC zt<8KN0X^R&@FHliTXOYybTFUSLF;YohoFzC0Dc%|KBfZrwFgZF&^w`Df0V^W3iV;) zhhD0fa_Bb&bUfnqCh{vsu(OGFgYIpjH-H{wqVEKKBj^!YhW#D|y&SZW9-2&XZ88a< z%@mrcj0BNebYks*Jynevs1-VK`W6?%sK??>=A6a6eE8@q{q1GJxs{tw#U5oQ9Q%n|3M1JI!y zolJBD=w2ooD-*{+6FnI8FcUo*bgGHI6?CSFE=Bu0@=d@J(34H{deFt7^-dG83v?xD zeWIcbfsVx{{$rq5nrL)T2c~DEh62!O9UD!w>w5s(y+9zU%drQvo?sw4q?kI%OCDy( zz&?l@fj`<5+7@&=U{t%ctJcW^Df4vQ2^#$+um;1l40Mt%j{;e$@kjiScLm;y!u%J2 z+jIp_B8;9Z9M6yf^ip;Zbe^u@0>YGGT|rO)^rV13rO5|%LHOVJn+_WCL5TA~(D0ug zgeIVUBI54a7VRH|-1r6oSgR{ojna@pTEUQlo%l%tP4{=yK+sbNpTnP#f%hR#8Jerh zV{W&i)P{U;802SwrqjD2AB=Ht4FpXaxZ9%rgL6>ZegK})6a-@uvfcxF9cW}AxDG$> zfF7bNKopj1 z67tmMbOZ`&Aml5^quHqjU8Eq?ALkIa0nn@|2<-+17`v8i(8xgOC@44pdXT0dbQTnx z22E>3l3xq?9iVU48B+X1j6Ew0mUm2 zhTCl*W;;u7ErGCHuyq7YRZjevnkAw|n}WuW3rqvOUFW|GORiwhS)fs%u%{tb2fCw6 zSMWX*WCNf!L5aeCg90i6o%@0+4adY|D+En*Hxz^qgaWD&Y64^+d;;Vvyz=3gIfJ@^ z&e!EpJ2q+pL;fhls0Lj*x`MZ%pb>!Hslva30w}@h*dhZF__3`9JqiJ2AOaa`(;l=w zDk9L~B-~&O`3Q9CpzlD_vH2)K#BGp&6*PHWBKcL2N3*(&5=7hy1!uvaw`s&P=(*EC zkJS~t1%Xn~X`oT!2;7|Lpar87Mj}JO4}xBx@kjPUy6EYazFLBjV|J zi=RoLsQ{3VLZ4}y3_2Aw7763`>+C`b#MI7Bso(0v>}QYeTIV8HniydGvJQFAg<8=g0X5fYv){45nV&Ina@i zM<zj~xN|uArTukznjBj1(FrrJ$iWwhrxYzXU)Z7P0q1!A8(}CyPabGOE$YKpcaD z_dx3zi0h4;ldo4kZX)F01+5n#4kJjW1oaw@L+wQ5gD%!G5ce$FpS1&^PnB^WV=hNd zjk{GmW=44nXnkUdNB@X;9J86MDTqf0W9ZqU$xs9FD&@@VrV7mk0 z{}r@e(4|!TY=vD4SC$uB}l+b zW}gb$sVPW6n?`R1U8X5WSO^8Bp!Ft8*oiQjNt`K<2`Ax6gsDjb!A~@0u8)bv#AUe& zfArko=fZmd%v=^s4&o?&2(+gWKr>&srl9>eglq8^rqdK&hrb}5-i$D1f_x2O(mdL zFciNX^ar46A|m<)(7%J$YoH?%l&Ds9x>GRdM9_K-cA}dV3W-jO`iFu}1ptZwP@5B7 z4|;`Q&}dYr)B@U2_&#V1Loq7A-2H=Q^ zVGqJoYC|El|4|eD6~f28bhmJXPn+l=2)|>Zry_jTL{oa_=>D%K&}|2R^CkvL@Fx?E ziGvDh@OO^~t(a&UHGw92F6c-TeFtc#iH3e_*PbTeKL8TFbPr4_*6U4l|JKYtc9-ND z225O(8YZi1@q_<#TD^jP^a}dzE9eieplQt@E=?b!$<0I$C)cmy>WpzU9rurZI^7TS z4A5CR?F4-rX#9!mUeKkW-K|Ud*+<*Mu68i4g}bxt3Hx-LFH@eJ$4eH#gg7`#oSFyDZiRT5Fr_BSVJ?^)hn%F4R+eEW%J?B+EY5!^HE0 z9!7s)aMX8*|9X#oh)bmHi`xaVBf`<*-eVOR0ISc9$N;I{jc}?S2I+(E2p*mZrtoAF ze<`v`vZSX%52K>-%1XmArY$~;OiXJ{;RdgOf4|oE@3lL9+sL*qaK?x8+>%=5hwY(K zYfP&>)#@6gO~XjZ;#;E4`6A4;M=qXir{%v zuNx44?|JLM-%raT?-0qxwkAGiKVn16fAFN;-=;MU_~mn6opv+>Eqds(cl7GCkMQcW z&xFp_o=5FplCG%d?7v$*x~xvGE^Ak>E{sU6?VuNm`i*dRJRf^p_WU+%pMj6JSUuqk zQy6*i-~&uyC&I0der$i++G)R`BimxV&j=%(14cL;;ns&fwRf;u5At`;;TOI5oP7m; z+@IOA{5%SRE!O?5?|o*km+&!k)|WULyaL}IZlzZpQCwhg%&8)DE{g;6y&M!6^>6I#|J!q*{Z=UH^)0wjPRn-w8o{N2Nhv=3CSS0(CufmZ8u5ge5%(mCB=VCag6cv7 za|!nS4)75k_Z{FQz*G4#f+qpC?*^U06TU;Eo<}f}2fczQviS#8_MtsYF_i5z z-uEK9xP{v?$;AH8IcweJQPEI@YRD8iB0!iyF`S3e_rrxSspb5dST@8-jP0o!Rn!CK9oKF`+y@*`*z{-{o- z@t|K(Cr<9EGwJngZvPdM*@*7PKllY6CL0l?)elL`&?Js{CH!AMYl@%At-sl0>_E`2 z3BRFTocsqv-@SY;Ar_wc8&YtC2WQSvcHgw{O@MIp`cvAE7|psP0(|Edqx&x$5{TZe z`8D_-^I#C0goJDHXI!}5=+w#QGI0m~zw36v6H@5c5Y8eG-JFl$H(f97kYK6nI zzfxAW1k;|wtc=ux^sIv1{OoM(`IFV@zTVBx1*2s3MZe2-Z^`QSA*o}MheIkKJMlbn z?nAcJEPf_h365^?O&y<3F)1mjxw*2sUfXypt4mwk#3*0W1b-=3iNhAZh&UzQztlnd zl#zUDj;zk+DRHnGSr?RzrA z$_gj<*S2ipJiDB%T&n3a4zam0C5?z%`Q-PN&e&eQ@_i+3kjqaiz=-tRZ0yOD)k6Qv zfPS(%?Q*2QtQPSPzV(UXQD>Au%wgTnD5)6d6=#%CoSA?78D%(5RiC;OZdqh?BW==+ zh-ePJY%8zW`zos&TK)g66kDxTy!xz?5~TVHrj*<~Y+)ZMtIzV|XO-#JHLblqP`G4W z+xq-R%B$AkYCpl2n>QjkXCxJ5Pr)S%0MYpb0;B5VSN7=%3&!`^GqSZ zb=igSERBLnbaqET4~Yj zxwQSC_WKp&rskmwZ4MBq)=IPuSXMVVib{(MD+|hs%i!Pc($`9C@E*US^0Kt_9Bf%0 zJ|Pc0ck&&(S+q-5@AgFuHX|Alci{lTGGpJZtnT&)i4KLt#O^^^-G%LfWjW(bI|^mB zMaO98q{b|(cTke%Y;BDJke8K*U4|G$nd!N?>HO$7if`C0>TSaA#}Kc_q?jUDewCJLO$##uXbFW%ZZ9qRNyk{d5EzlrSRIrw=T(#m-Dw zJz*C+ab@+TfTBumQ)ffLAUzWSuD2njcRQfGvOhd!wrE1f=TUO}}_$JY0LQqEiB{`zPQS)IUfvd3g8 zHjEd1Zw>1rMKcVoqOuBUhzL|HkOunzDJ!2>EDa^7s<>LZftUQE3>m%Jzv42}MK-{% zqKFJ3i-*_Dm;p~7eF86|VV=nP244mVhYT!{fBB0t#p>UB_E(rzCaC9Q=vv8JnFu{jQ9_7M_glEGkM?SDMdy(2shM)fGHp4GWEs)$amHTW<2WR1B6ed8y-Z zzxbA)c#S#vr@t#ZMkY9fuR-#kD8(}oo*}i@0<$Ei7O0Zi{oPJsS^bqC_(O@3K7%`q z0rqgX|Jr;t#{%$B$j|G(Iu2iRuqLZtv;|D|rR0M^R=Wr`q$sRPDZMI6u!_ZoiNhmCVNpa!co^IC zW%Y?*PlO45JV>B8p~eJ08Y;ld)Dh|VnQ^9w$NWTucWQiupSC$dyFUD<6Dwr3HDGQ{ zaZT|Ej5qD(CaeGAnfq8ooUFbPF5>9$3)~g+$7E)WNKZ>o#f|87o+LZsa00^=8UD=v zi`U3#t#|oW+0hM$Jp4m;^ay^_PYCCa(Zpr-HGa_U$Vi9^t{PKZTP=Koj4Q01RXDA* zm_;j9MPEFGK0u*ZA>WJS@lU#rVynw*Y^73f zp5t(=z>yViIUMt?XIsa#aU8aVeiTq$H5(;P%|oT9j7rAs{bL^FkDC2}5Albu*8lLC z{*Jhwp9X_ZD`{GKMuxto`Y?#l{M>9T5Ipjq@caE88EMxC)s&8`DXg4cJl#|Cfqpfm z8Rg{_DdjbD-~y8QUqOfYUl!jFr-!EmI0nO0(UJg1Z@(>$n%d#03oM&(lsZiNBjGyC zKhTjF(&Gwyde%Q&xc#(Ab2RTwgQW7drZYce_3h9ajFY08%BorOic>JwMV@5!9i)*{ zOPQ=ky^`y4%F$YV9`H)?*ZY6`OE2JQz~t6_*)`v+%BzV0lG8Tu2($T08K6xh#Z$H}C>}piX2$)Axlh?zIgm+AEL6j&Jw$)>*iYu$7B7YNw zg@QCqi`HD&NYlgkVK|{1E8Q48FT1dkrgf9boBRzhx40U8MoNNzQH?9FyriU*`jM2Z z`5c9Aqga*jQ_9Oj9AVerrN_b7i{Y(Qa_@0?oRmuLT^fhkIjQ8nn?D)i=oDQMHc#B1 z^5;|*m!Po4m4cM(zTh#TjselbukLsX&PjQ8D10A};f1f+aI4MZ0c9*~wscFV<~ziD z7o!RN(2v!Wz0?jMv<)vRiuE4@NtaS)Z zYA1Lt4HSgQYbkt|!e=skmSR+_<1Jz6OFK00T<~JNU1K-;ChA{Wq9v^Pm6Y6WUcQWl zVJ*-Q!k6XSL&iw%{WL*%Keb7@PT~7hlE(4f5e}y`DW0D%mg57Zf;P3ov7EpPV9sox0g?Q$ zVvBV7bpDg4Ey=w<%)9BswC9GUnRvBjnosY)cj|~dFSwXUd( zZ>{F&YdXzX%s1TFrsEm&)C>Bup;wRS$A$$N62>y8FN^yV){n)D-AL>@|Ju~b$^qq- zBhU$ps*9&HKY^HlQ1i|tHdx#3#0F{`+9Fs`Q0=H$B{Pi*B;3r=Ybwn`k6RxHg3(*0ctQmiyS-Cu86Rx{TXm9XoK$VN0yTY3r;%Ajv&H>baSC}J7eEpl)zmT2R_QTNP5~EVIg7&#D9=)G4ix$1k7ge$&eJaKa@`v zOyYWUG%TV!YIw}@e2aK_ju_u^eDlF4Vd76akWXJ5#g#Z82}3F2y=wDeEeFd7x~4Bg z!g>Poqxr%i3gOjmVJ;;EhQ5?fwq4??B^)(GiaM^$x3tmm#mn&N24TW?p2{cFD{*ZG zz7Zxegg^6PzHr1s5#3!4FhxRuBC?P$c*KisT164#oA9k$$1Bh0lhus4 zrfvd1LZoLfYA8_0OM&^DB3HYv}s-@-1OH?hBkULHylc%(swX3SF_l(J}&`cP8IuG0Z4B zBEqOThCV@`P3XGOr0AQS`4;pWag8BdFIoND`9hW=roav>LvNaG?tBZ`0MWI7KjL(p z|1+Nq8E|DFHwR$TjUeST@nF6sPDH>u4Y<+9N6zL8&sY?dau8Lm_mw-3?9a3RuoV7fC%h_S#=%R63v=+xuVY5R*Q@}pI%rz(=5<^ywy_M9{6q3$|V@3 z8gX~Rs<97 z2Tqe5^t*~Cn zK>X8Z)F%)@LyrV7op=P^0#5r22%l!cFR50`yE=c734ddaRanUqKf1d|&$rm9lBn|+ zoACCodaDH`6$#8RMYw^F((w`#ejIp(j$?Ru61W~4Px_<#Q^K=M`0NI&Le6Nn9ATEz0 z%SP|GoNE&337m|RD5I4oJQF7OWV}jvl?k7@*=l)2PXK+uqdy)t{!4WJ8V`>4zhjFx zr}I1!7RzVAF%O9ZFswX^E&$hiZxJRE4}KB&K%IZS3GcZT1<>(sCOi|kllmW(0M^bP zMP-QSq~pC!c#{dojOXER1#V<$kO_avgby>}|1jaMBvZsoh%ic=X2M@H3EXVL-!|bR zP5ApJe7Fh!$b_eBxHkSiGewLx348-QGDMs6Q9@6NeGYo3YBTN++^7kMi9Zy$1$9sN z4iwO%C-g1Y@){F@Il}pt7soxpBhVALQA4mS@ZbZ0XCq}w05hrwU-_OlLzuuk_!{8j z(T3Aq5I_bz5g)ddD5IiJnDMs0l0`wvlz^X!KO|HViyrDjX1p`--TgIw+;lwpUl=Kg z#SQTjuFroK%X^40s&0Wv;6oFR3B#l49B_XZ(OxJ&31FG#5$F_V6U#YDz>JRvZq(2c6aN(8#!YCc310*peL*CQWIXzB2YxRm z1WGsB9MS7Ko2TtD)p`WR0Uw|%>TAN+05>u;*n~F%KiW}C05>&{p2?;Kh=Ggt&z@wn z9KoWJa)gq21S}hE7N?%D8FvCd0u96;Z{i<@k{S01GyeNwZ$?v0{PGd>zq5KTMM9p0 zPeZ_%GR^pZKC)SAF*Q=cxJh~VCplzK6PWP@z>jy(`0?Z6zX1K1AJ8LPPQ%ud;| zrA`w-4SEEUd&!n$y(Y}~dpl%L6Sz(MADZxGCj1<5qq8q3T+}}lpGSnzOIMf#egW>( z6JBY;e`1Pd_c<-2s1Q#^mm{N4EIOSTAGX@=>5N#2c=%m%Z`o3T6sSrwOcB*%WKR>A z@ptaATi!tth+j4FZvuavu4j!2k1O{!jTyfI_@fCZKPg&k68N@J77s5p{LFZd@9dtc z9%ABuu(RFrQ;L?MdJ`VFLH685&G?w>nB_T?e|AwJtv^s#`V~BcS=M5*uPQ7pGBEl* za>Q<#f*X6$oSGSC{J=bB*$SYnW=^pg-!Yt7E}$3Ui&7bNGUMut0=&{q!>JF5i_*6~ z$1J~LZX^Mu@40^ef?2LZZzG(>xp57|gJe%#k=+3CTR7Oq@@Q9$UpC=U(|jz+x_(c? zBYvWaHwqaYGy%yZu=jwEB}-4(YQldw?PK}Wsqvd&%X=4mEHZLfHK+Wtnj45Fn2Rcy zRauCImG{cQ9*n)nd2z*pVOXMhuPxswmM`!WTV1vQw-E1j-)(lwX3Q*vn=|y^0JWy0 AoB#j- delta 59373 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 diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_CONSOLE_INTERNAL_RAM.lcf b/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_CONSOLE_INTERNAL_RAM.lcf deleted file mode 100644 index b6ecc52fa..000000000 --- a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_CONSOLE_INTERNAL_RAM.lcf +++ /dev/null @@ -1,133 +0,0 @@ -# Sample Linker Command File for CodeWarrior for ColdFire - -KEEP_SECTION {.vectortable} - -# Memory ranges - -MEMORY { - vectorram (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000500 - code (RX) : ORIGIN = 0x20000500, LENGTH = 0x00002B00 - userram (RWX) : ORIGIN = 0x20003000, LENGTH = 0x00001000 -} - -SECTIONS { - -# Heap and Stack sizes definition - ___heap_size = 0x400; - ___stack_size = 0x400; - - - -# MCF52221 Derivative Memory map definitions from linker command files: -# __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker -# symbols must be defined in the linker command file. - -# Memory Mapped Registers (IPSBAR= 0x40000000) - ___IPSBAR = 0x40000000; - -# 16 Kbytes Internal SRAM - ___RAMBAR = 0x20000000; - ___RAMBAR_SIZE = 0x00004000; - -# 128 KByte Internal Flash Memory - ___FLASHBAR = 0x00000000; - ___FLASHBAR_SIZE = 0x00020000; - - ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4; - - .userram : {} > userram - .code : {} > code - .vectorram : {} > vectorram - - .vectors : - { - exceptions.c(.vectortable) - . = ALIGN (0x4); - } >> code - - - .text : - { - *(.text) - . = ALIGN (0x4); - *(.rodata) - . = ALIGN (0x4); - ___ROM_AT = .; - ___DATA_ROM = .; - } >> code - - .data : AT(___ROM_AT) - { - ___DATA_RAM = .; - . = ALIGN(0x4); - *(.exception) - . = ALIGN(0x4); - __exception_table_start__ = .; - EXCEPTION - __exception_table_end__ = .; - - ___sinit__ = .; - STATICINIT - __START_DATA = .; - - *(.data) - . = ALIGN (0x4); - __END_DATA = .; - - __START_SDATA = .; - *(.sdata) - . = ALIGN (0x4); - __END_SDATA = .; - - ___DATA_END = .; - __SDA_BASE = .; - . = ALIGN (0x4); - } >> userram - - .bss : - { - ___BSS_START = .; - __START_SBSS = .; - *(.sbss) - . = ALIGN (0x4); - *(SCOMMON) - __END_SBSS = .; - - __START_BSS = .; - *(.bss) - . = ALIGN (0x4); - *(COMMON) - __END_BSS = .; - ___BSS_END = .; - - . = ALIGN(0x4); - } >> userram - - .custom : - { - ___HEAP_START = .; - ___heap_addr = ___HEAP_START; - ___HEAP_END = ___HEAP_START + ___heap_size; - ___SP_END = ___HEAP_END; - ___SP_INIT = ___SP_END + ___stack_size; - - . = ALIGN (0x4); - } >> userram - - ___VECTOR_RAM = ADDR(.vectorram); - - __SP_INIT = ___SP_INIT; - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - WRITEW(___ROM_AT); - WRITEW(ADDR(.data)); - WRITEW(SIZEOF(.data)); - WRITEW(0); - WRITEW(0); - WRITEW(0); - } - -} \ No newline at end of file diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_FLASH.lcf b/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_FLASH.lcf index 6cf788e78..72d2c1e8e 100644 --- a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_FLASH.lcf +++ b/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_FLASH.lcf @@ -8,14 +8,14 @@ MEMORY { vectorrom (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400 cfmprotrom (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000020 code (RX) : ORIGIN = 0x00000500, LENGTH = 0x0001FB00 - userram (RWX) : ORIGIN = 0x20000400, LENGTH = 0x00003C00 + userram (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00003C00 } SECTIONS { # Heap and Stack sizes definition ___heap_size = 0x4; - ___stack_size = 0x200; + ___stack_size = 0x100; diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_RAM.lcf b/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_RAM.lcf deleted file mode 100644 index b6ecc52fa..000000000 --- a/Demo/ColdFire_MCF52221_CodeWarrior/lcf/MCF52221_INTERNAL_RAM.lcf +++ /dev/null @@ -1,133 +0,0 @@ -# Sample Linker Command File for CodeWarrior for ColdFire - -KEEP_SECTION {.vectortable} - -# Memory ranges - -MEMORY { - vectorram (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000500 - code (RX) : ORIGIN = 0x20000500, LENGTH = 0x00002B00 - userram (RWX) : ORIGIN = 0x20003000, LENGTH = 0x00001000 -} - -SECTIONS { - -# Heap and Stack sizes definition - ___heap_size = 0x400; - ___stack_size = 0x400; - - - -# MCF52221 Derivative Memory map definitions from linker command files: -# __IPSBAR, __RAMBAR, __RAMBAR_SIZE, __FLASHBAR, __FLASHBAR_SIZE linker -# symbols must be defined in the linker command file. - -# Memory Mapped Registers (IPSBAR= 0x40000000) - ___IPSBAR = 0x40000000; - -# 16 Kbytes Internal SRAM - ___RAMBAR = 0x20000000; - ___RAMBAR_SIZE = 0x00004000; - -# 128 KByte Internal Flash Memory - ___FLASHBAR = 0x00000000; - ___FLASHBAR_SIZE = 0x00020000; - - ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4; - - .userram : {} > userram - .code : {} > code - .vectorram : {} > vectorram - - .vectors : - { - exceptions.c(.vectortable) - . = ALIGN (0x4); - } >> code - - - .text : - { - *(.text) - . = ALIGN (0x4); - *(.rodata) - . = ALIGN (0x4); - ___ROM_AT = .; - ___DATA_ROM = .; - } >> code - - .data : AT(___ROM_AT) - { - ___DATA_RAM = .; - . = ALIGN(0x4); - *(.exception) - . = ALIGN(0x4); - __exception_table_start__ = .; - EXCEPTION - __exception_table_end__ = .; - - ___sinit__ = .; - STATICINIT - __START_DATA = .; - - *(.data) - . = ALIGN (0x4); - __END_DATA = .; - - __START_SDATA = .; - *(.sdata) - . = ALIGN (0x4); - __END_SDATA = .; - - ___DATA_END = .; - __SDA_BASE = .; - . = ALIGN (0x4); - } >> userram - - .bss : - { - ___BSS_START = .; - __START_SBSS = .; - *(.sbss) - . = ALIGN (0x4); - *(SCOMMON) - __END_SBSS = .; - - __START_BSS = .; - *(.bss) - . = ALIGN (0x4); - *(COMMON) - __END_BSS = .; - ___BSS_END = .; - - . = ALIGN(0x4); - } >> userram - - .custom : - { - ___HEAP_START = .; - ___heap_addr = ___HEAP_START; - ___HEAP_END = ___HEAP_START + ___heap_size; - ___SP_END = ___HEAP_END; - ___SP_INIT = ___SP_END + ___stack_size; - - . = ALIGN (0x4); - } >> userram - - ___VECTOR_RAM = ADDR(.vectorram); - - __SP_INIT = ___SP_INIT; - - _romp_at = ___ROM_AT + SIZEOF(.data); - .romp : AT(_romp_at) - { - __S_romp = _romp_at; - WRITEW(___ROM_AT); - WRITEW(ADDR(.data)); - WRITEW(SIZEOF(.data)); - WRITEW(0); - WRITEW(0); - WRITEW(0); - } - -} \ No newline at end of file diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOSConfig.h b/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOSConfig.h index 2cca51ac5..4480d1f14 100644 --- a/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOSConfig.h +++ b/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOSConfig.h @@ -65,17 +65,17 @@ *----------------------------------------------------------*/ #define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 0 +#define configUSE_IDLE_HOOK 1 #define configUSE_TICK_HOOK 0 #define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 80000000 ) #define configTICK_RATE_HZ ( ( portTickType ) 100 ) -#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 160 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) ) /* The heap size is worked out from the linker script, so this constant is not used. */ +#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 140 ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 14 * 1024 ) ) #define configMAX_TASK_NAME_LEN ( 12 ) #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0 #define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 0 +#define configUSE_CO_ROUTINES 1 #define configUSE_MUTEXES 1 #define configCHECK_FOR_STACK_OVERFLOW 2 #define configUSE_RECURSIVE_MUTEXES 1 diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOS_Tick_Setup.c b/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOS_Tick_Setup.c index b9eb5eb76..e32d4cf4a 100644 --- a/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOS_Tick_Setup.c +++ b/Demo/ColdFire_MCF52221_CodeWarrior/sources/FreeRTOS_Tick_Setup.c @@ -51,7 +51,6 @@ #include "task.h" __declspec(interrupt:0) void vPIT0InterruptHandler( void ); -extern unsigned portLONG __VECTOR_RAM[]; /* Constants used to configure the interrupts. */ #define portPRESCALE_VALUE 64 @@ -62,7 +61,7 @@ extern unsigned portLONG __VECTOR_RAM[]; /* * FreeRTOS.org requires two interrupts - a tick interrupt generated from a * timer source, and a spare interrupt vector used for context switching. - * The configuration below uses PIT0 for the former, and vector 63 for the + * The configuration below uses PIT0 for the former, and vector 16 for the * latter. **IF YOUR APPLICATION HAS BOTH OF THESE INTERRUPTS FREE THEN YOU DO * NOT NEED TO CHANGE ANY OF THIS CODE** - otherwise instructions are provided * here for using alternative interrupt sources. @@ -92,7 +91,7 @@ extern unsigned portLONG __VECTOR_RAM[]; * * 3) Change the name of the function __cs3_isr_interrupt_127() within portasm.S * to be correct for whichever vector number is being used. By default interrupt - * controller 0 number 63 is used, which corresponds to vector number 127. + * controller 0 number 16 is used, which corresponds to vector number 127. */ void vApplicationSetupInterrupts( void ) { diff --git a/Demo/ColdFire_MCF52221_CodeWarrior/sources/main.c b/Demo/ColdFire_MCF52221_CodeWarrior/sources/main.c index 0dba35c71..0b4502ceb 100644 --- a/Demo/ColdFire_MCF52221_CodeWarrior/sources/main.c +++ b/Demo/ColdFire_MCF52221_CodeWarrior/sources/main.c @@ -81,7 +81,7 @@ /* Demo app includes. */ #include "BlockQ.h" #include "death.h" -#include "flash.h" +#include "crflash.h" #include "partest.h" #include "semtest.h" #include "PollQ.h" @@ -117,6 +117,9 @@ error have been detected. */ #define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainWEB_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 ) +/* Co-routines are used to flash the LEDs. */ +#define mainNUM_FLASH_CO_ROUTINES ( 3 ) + /* * Configure the hardware for the demo. */ @@ -128,12 +131,6 @@ static void prvSetupHardware( void ); */ static void prvCheckTask( void *pvParameters ); -/* - * Implement the 'Reg test' functionality as described at the top of this file. - */ -static void vRegTest1Task( void *pvParameters ); -static void vRegTest2Task( void *pvParameters ); - /*-----------------------------------------------------------*/ /* Counters used to detect errors within the reg test tasks. */ @@ -147,26 +144,17 @@ int main( void ) prvSetupHardware(); /* Start the standard demo tasks. */ - vStartLEDFlashTasks( tskIDLE_PRIORITY ); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); - vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); vStartQueuePeekTasks(); - vStartRecursiveMutexTasks(); vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); - /* Start the reg test tasks - defined in this file. */ - xTaskCreate( vRegTest1Task, ( signed portCHAR * ) "Reg1", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest1Counter, tskIDLE_PRIORITY, NULL ); - xTaskCreate( vRegTest2Task, ( signed portCHAR * ) "Reg2", configMINIMAL_STACK_SIZE, ( void * ) &ulRegTest2Counter, tskIDLE_PRIORITY, NULL ); + /* For demo purposes use some co-routines to flash the LEDs. */ + vStartFlashCoRoutines( mainNUM_FLASH_CO_ROUTINES ); /* Create the check task. */ xTaskCreate( prvCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); - /* The suicide tasks must be created last as they need to know how many - tasks were running prior to their creation in order to ascertain whether - or not the correct/expected number of tasks are running at any given time. */ - vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY ); - /* Start the scheduler. */ vTaskStartScheduler(); @@ -215,36 +203,8 @@ portTickType xLastExecutionTime; ulError |= 0x20UL; } - if( xArePollingQueuesStillRunning() != pdTRUE ) - { - ulError |= 0x40UL; - } - - if( xIsCreateTaskStillRunning() != pdTRUE ) - { - ulError |= 0x80UL; - } - - if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) - { - ulError |= 0x200UL; - } - - if( ulLastRegTest1Count == ulRegTest1Counter ) - { - ulError |= 0x1000UL; - } - - if( ulLastRegTest2Count == ulRegTest2Counter ) - { - ulError |= 0x1000UL; - } - - ulLastRegTest1Count = ulRegTest1Counter; - ulLastRegTest2Count = ulRegTest2Counter; - /* If an error has been found then increase our cycle rate, and in so - going increase the rate at which the check task LED toggles. */ + doing increase the rate at which the check task LED toggles. */ if( ulError != 0 ) { ulTicksToWait = mainERROR_PERIOD; @@ -281,169 +241,19 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTask } /*-----------------------------------------------------------*/ -static void vRegTest1Task( void *pvParameters ) -{ - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest1Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ) - { - } - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_1_start: \n\t" - " moveq #1, d0 \n\t" - " moveq #2, d1 \n\t" - " moveq #3, d2 \n\t" - " moveq #4, d3 \n\t" - " moveq #5, d4 \n\t" - " moveq #6, d5 \n\t" - " moveq #7, d6 \n\t" - " moveq #8, d7 \n\t" - " move #9, a0 \n\t" - " move #10, a1 \n\t" - " move #11, a2 \n\t" - " move #12, a3 \n\t" - " move #13, a4 \n\t" - " move #14, a5 \n\t" - " move #15, a6 \n\t" - " \n\t" - " cmpi.l #1, d0 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #2, d1 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #3, d2 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #4, d3 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #5, d4 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #6, d5 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #7, d6 \n\t" - " bne reg_test_1_error \n\t" - " cmpi.l #8, d7 \n\t" - " bne reg_test_1_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #9, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #11, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #12, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #13, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a5, d0 \n\t" - " cmpi.l #14, d0 \n\t" - " bne reg_test_1_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #15, d0 \n\t" - " bne reg_test_1_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest1Counter \n\t" - " bra reg_test_1_start \n\t" - "reg_test_1_error: \n\t" - " bra reg_test_1_error \n\t" - ); -} -/*-----------------------------------------------------------*/ - -static void vRegTest2Task( void *pvParameters ) +void vApplicationIdleHook( void ); +void vApplicationIdleHook( void ) { - /* Sanity check - did we receive the parameter expected? */ - if( pvParameters != &ulRegTest2Counter ) - { - /* Change here so the check task can detect that an error occurred. */ - for( ;; ) - { - } - } - - /* Set all the registers to known values, then check that each retains its - expected value - as described at the top of this file. If an error is - found then the loop counter will no longer be incremented allowing the check - task to recognise the error. */ - asm volatile ( "reg_test_2_start: \n\t" - " moveq #10, d0 \n\t" - " moveq #20, d1 \n\t" - " moveq #30, d2 \n\t" - " moveq #40, d3 \n\t" - " moveq #50, d4 \n\t" - " moveq #60, d5 \n\t" - " moveq #70, d6 \n\t" - " moveq #80, d7 \n\t" - " move #90, a0 \n\t" - " move #100, a1 \n\t" - " move #110, a2 \n\t" - " move #120, a3 \n\t" - " move #130, a4 \n\t" - " move #140, a5 \n\t" - " move #150, a6 \n\t" - " \n\t" - " cmpi.l #10, d0 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #20, d1 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #30, d2 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #40, d3 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #50, d4 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #60, d5 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #70, d6 \n\t" - " bne reg_test_2_error \n\t" - " cmpi.l #80, d7 \n\t" - " bne reg_test_2_error \n\t" - " move a0, d0 \n\t" - " cmpi.l #90, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a1, d0 \n\t" - " cmpi.l #100, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a2, d0 \n\t" - " cmpi.l #110, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a3, d0 \n\t" - " cmpi.l #120, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a4, d0 \n\t" - " cmpi.l #130, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a5, d0 \n\t" - " cmpi.l #140, d0 \n\t" - " bne reg_test_2_error \n\t" - " move a6, d0 \n\t" - " cmpi.l #150, d0 \n\t" - " bne reg_test_2_error \n\t" - " move ulRegTest1Counter, d0 \n\t" - " addq #1, d0 \n\t" - " move d0, ulRegTest2Counter \n\t" - " bra reg_test_2_start \n\t" - "reg_test_2_error: \n\t" - " bra reg_test_2_error \n\t" - ); + /* The co-routines run in the idle task. */ + vCoRoutineSchedule(); } /*-----------------------------------------------------------*/ -/* To keep the linker happy. */ void exit( int n ) { + /* To keep the linker happy only as the libraries have been removed from + the build. */ ( void ) n; for( ;; ) {} } - -- 2.39.5