From f3e3f97c9326604a6bb1b2bd4a8661a54f1f1461 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 20 Nov 2015 10:07:31 +0000 Subject: [PATCH] CW builder added to SPC560D demo. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8514 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/SPC5/RT-SPC560D-EVB-CW/chconf.h | 499 ------------------ demos/SPC5/RT-SPC560D-EVB-CW/cw/ch/ch.mcp | Bin 45755 -> 0 bytes demos/SPC5/RT-SPC560D-EVB-CW/main.c | 3 - .../cw/ch/ch.lcf | 29 +- demos/SPC5/RT-SPC560D-EVB/cw/ch/ch.mcp | Bin 0 -> 61981 bytes 5 files changed, 24 insertions(+), 507 deletions(-) delete mode 100644 demos/SPC5/RT-SPC560D-EVB-CW/chconf.h delete mode 100644 demos/SPC5/RT-SPC560D-EVB-CW/cw/ch/ch.mcp delete mode 100644 demos/SPC5/RT-SPC560D-EVB-CW/main.c rename demos/SPC5/{RT-SPC560D-EVB-CW => RT-SPC560D-EVB}/cw/ch/ch.lcf (80%) create mode 100644 demos/SPC5/RT-SPC560D-EVB/cw/ch/ch.mcp diff --git a/demos/SPC5/RT-SPC560D-EVB-CW/chconf.h b/demos/SPC5/RT-SPC560D-EVB-CW/chconf.h deleted file mode 100644 index f6244ad4b..000000000 --- a/demos/SPC5/RT-SPC560D-EVB-CW/chconf.h +++ /dev/null @@ -1,499 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef _CHCONF_H_ -#define _CHCONF_H_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#define CH_CFG_ST_RESOLUTION 32 - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#define CH_CFG_ST_FREQUENCY 1000 - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#define CH_CFG_ST_TIMEDELTA 0 - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#define CH_CFG_TIME_QUANTUM 0 - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#define CH_CFG_MEMCORE_SIZE 0 - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#define CH_CFG_NO_IDLE_THREAD FALSE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#define CH_CFG_OPTIMIZE_SPEED TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_TM FALSE - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_REGISTRY TRUE - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_WAITEXIT TRUE - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_SEMAPHORES TRUE - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MUTEXES TRUE - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#define CH_CFG_USE_CONDVARS TRUE - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_EVENTS TRUE - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MESSAGES TRUE - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#define CH_CFG_USE_MESSAGES_PRIORITY FALSE - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#define CH_CFG_USE_MAILBOXES TRUE - -/** - * @brief I/O Queues APIs. - * @details If enabled then the I/O queues APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_QUEUES TRUE - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMCORE TRUE - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#define CH_CFG_USE_HEAP TRUE - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#define CH_CFG_USE_MEMPOOLS TRUE - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#define CH_CFG_USE_DYNAMIC TRUE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_STATISTICS FALSE - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_SYSTEM_STATE_CHECK FALSE - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_CHECKS FALSE - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_ASSERTS FALSE - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the context switch circular trace buffer is - * activated. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_ENABLE_TRACE FALSE - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#define CH_DBG_ENABLE_STACK_CHECK FALSE - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#define CH_DBG_FILL_THREADS FALSE - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#define CH_DBG_THREADS_PROFILING FALSE - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p chThdInit() API. - * - * @note It is invoked from within @p chThdInit() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - * - * @note It is inserted into lock zone. - * @note It is also invoked when the threads simply return in order to - * terminate. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* _CHCONF_H_ */ - -/** @} */ diff --git a/demos/SPC5/RT-SPC560D-EVB-CW/cw/ch/ch.mcp b/demos/SPC5/RT-SPC560D-EVB-CW/cw/ch/ch.mcp deleted file mode 100644 index 8e5821d29616b6399614bd6288a205f0737121d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45755 zcmeHQS&SS<8SdUB<6L$&iE|R5eIz(eJT@k$IbwUfYdcz7K3ksC$*&Z*pTa_ocWv?HUQ44xf^-iW18+)W~w-q9pkotDhe^npVgBvwR*RF{+l3Og% za#LPBTD^QEhVpqki4ZB$IR1`FY$0d-WO@r06*2b!Uqm6&ES8)=hB1$PmBf!DzgXgr zBfmuAZz8``;vXQtOyXZ7zg*&fAYU!)~ zkOTToKk1+Hi)~15l|O)86YIc48>;Er) zCh=k5+a)doZ;?0v&P%)qyj9}Uz}qB#68Oy$e*$>B#GeCZ++cbd_>L4BUj@EX;_m>n z-!Od_`0f-MKLox<;-3QFEAcOZcS!tu;I~TrH{iEP{7>MwOFV`S{0@m%1K%g{4Zu4k zz6E%f#ChP|65j<}ka!pH9*G|So{;!3@TA0Zz1;F%N}zX6_=_z%DjO8j@=ha~d<@n^dzdvs?}Kk{+refV?M zU)Fx<1b>j=2L356m8(6{@>TRw(q_)>&87 zEPJppZcSie%$mfq7Yk$7J}exMj9F-B5wFn3Vw^Evq1{EFK$D2$3Xc`+f8>p0j$?=Y zNA}?h&u%T5~?H zAh)eXi>wi$r>WCA6yAl4xX5#w8;Kf4<}j)_viLVm$l1qadie|wM5i%=es|_Z>^4^p zf@IFFR3cnRDy3JLH*H}@Q?&H#^t1~4=@2bGc!<4Sc)lu5>?o;+q+?=g|0IU7$sFq< z#}F`;K8N~PlrV}?g;9?=BOh}{Kjw^p%ozolGZHdqG-S?*$lQ|oI+s@0%Y zVnB*Z?)GilN)`8*hg*iFnPTD2ySD9FTpVo*SETo^$XsC8pFS0aNLcGg*iTao|~zM>=LDeGgDmV3hCeUM0CFnA}hG>sD6R-i=7$z z1?CipE>qIIVg+{!xTg9Ao)+xn{jG^=*{xLEip5zaaze?bB3@(Y zq!~~QT!iPi4+OQY*OoknM8$)ASi9V5XU9a$vyM=B=3`71i@TP)A}Bxf!*D2ej(&K$ zFa&?bks_YcFL-BUy9ljD<9#bNaQ@jZpZ!>|(;4$U;54=-Osg|iP&%;x*N zqba6acdz4kYUegQ-aY@6-A;cFWw#TazcbkL71-&^P-Z)rXVI5Ky?0LgfxFn3KfTQu zshvL0BQx{1kW~E)mFhz!_2*IhnB7Mq_xIjCwNpLXhm}mbrgj3aD{U>mJ;_w)5=!3} zai`DTRCGYt7b>Ff&H7@K_g8oiOdsne2?D$@}w`yM+sXswqWn|e|+9^Mp zMY#{1)XqsS?4yhM zw}Z3OeX8ET?DV*%7=WGh*gm9lT>Wfp1PH- z{Z&4w7Z2h15i{(#+HSpl4R#tod0)z%>@lOg+|D)F5k)O!gSy%6 zbie8toSp75aBz0IhCpM0cDfoGoSp8mc3^gT#M%MaNn>q~tK7la>3%F6oSkKFpOiPu zdF+eo^@4Z(bC1yE25GzRyDhZ#}N32j)+Y z>*>MS>Bbs<={=}^9WH-AxP(8BH3a_v% z1uf2@4&-b`|f9<>7 z=D}m>n{oL{)l+%g;BVVFA}f!nx8Een|Bwx&Nd$rnpV7< zjd+m0O*$^sV>e1pgl;@KM~DUoI6qkN4Xz#33}^;41DXNNfM!55pc&8%Xa+O`9Sm4o zLTi2Ng;C?i>3VC+LdPa?KM`_g3AqD#+#zq?cf!U18#`{uKss%$-=2Rn-aV|7W4bT&cbE63SOSz(%2wVY8jcsWlW#mA$?r=$6Y-13iv=UHZRw^!2A z^h7P91W}u2S)+(rTbkeYWb1&Wvxh*7gdCFh3#d*?DQKj@e0f|Jm#On8^CIV;tFhpN zQQ}ke_&^Xpek~T>N#aWb`H?Z|(22EJ=*Tr#sLO54`H6d$#g7ZItn1`DJ{B(4@v(4x zQQa``v2c89!Z7f$aIqi1s?PoR;xv|Z85Y{T91F{$>>@iK)VutM%7P9T6Sciql!lew zy9uS0{D-_Ejc={T(N?@@WUF7v$3e&a^HfLw)eH=c0mcLi%YWEG5e&G#RALGy|`G2Ji~oNiT{MYsQ_gx;5MZ5TB^rmqc#*IRv$>?)eo9AD4{q8Kpu!PJ*g+z&&w1h$=B``L1=) z4nwat9~uX1be&~Uodg2WglfVq$#VN>&mK~ctI_0Zk4acGOD&$!i<9VtkjF5b0=Jsxi7oBnr8Pp5EJUtdkvLU4mWVA4(|E6m zvrqc(x2k+43)JAM%+-5ZoCW1KHzcWN@SAJGZy}a1brH?GU|_ z-t@!s2-Cv$UV6CIXs*kkhx?J{`V4w_reSW#poeE3=Ee+qcqU@roIwxIOw3y{=;4`) z`KAnd;Mm-hLGO*wyETKJ1-;D~^w1V2zt-EU-Ov{1?HTmY7Uq@=dT0wXpFt08VQ$T! zhqf@cWza)gnEdfVFMrV%=JpJFXbbZ#8T8N=<{cUI&=%&M8T9Ul-fRZF1JHXggWeSM z9?GDHuVR~rGw5Y4@BgKj#xgh~q8c1Rx)4u2S0kVQcKnN59-&01QDlJ6*7-Fv=9gn( zf4I2}pp#~xgMm#9Bsi&wlJ<|YZNh`o)7a*B$e+PPjnmi#*U)Vrb9?r)5MrVS%Xx_% zPo_J_IV3&vIJj&pvG!zoLGaR9Q8Zp24J!$FUN3$Ty)J3vxeh*WZYa z&oSV2=-&ak4|(9X>;D*X&Qm$!M&Z8uFb4*h=~_%!`70L6zjbA<@yn<&9N5=_3(8G5 zrzYkY*Wv)Uc3moe@5Y<~S47%8Wf&V_fco#=o)hy~xZ&rp%lRynAGtRt=Ce@#01l4t z$H@rgJ79?OX_$U~9Ag^%QvRpKoTxM9zdeciOSyl2PRx0s{KuFua}S)M{+dEg%!i@; z#Z%x7m7{!dJSXPNQ2ytZ`m8yT6Y+!c3*QeuQ3>ilR?3Ov4CQM-Xc$wn{Qt%|F+YcL zlF#!z>c99<&bUGd4ddC51HcC56+b81h?{PO{to1nf7#9%S5k;{A=-B>a>_s8 ram } diff --git a/demos/SPC5/RT-SPC560D-EVB/cw/ch/ch.mcp b/demos/SPC5/RT-SPC560D-EVB/cw/ch/ch.mcp new file mode 100644 index 0000000000000000000000000000000000000000..b01513018c44a83861d7f03214e2f44ce6370be1 GIT binary patch literal 61981 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 Bu;c&$ literal 0 HcmV?d00001