Compare commits

...

2384 Commits

Author SHA1 Message Date
Richard Barry
f7bc6297ca 2017-12-20 23:37:41 +00:00
Richard Barry
13651934be Roll up the minor changes checked into svn since V10.0.0 into new V10.0.1 ready for release. 2017-12-18 22:54:18 +00:00
Richard Barry
f998c8119a Update license information text files for the CLI, TCP and UDP products to be correct for V10. 2017-12-13 17:00:13 +00:00
Richard Barry
0d903cf2d6 FreeRTOS+TCP: Added ipconfigSOCKET_HAS_USER_WAKE_CALLBACK configuration option so the user can specify a callback to execute when data arrives.
FreeRTOS+TCP: Improve print output when using WinPCap to assist in selecting the correct network interface.
FreeRTOS kernel: Fix extern "C" { in stream_buffer.h.
FreeRTOS kernel: Correct tskKERNEL_VERSION_NUMBER and tskKERNEL_VERSION_MAJOR constants for V10.
Ensure the currently executing task is printed correctly in vTaskList().
2017-12-12 17:47:56 +00:00
Richard Barry
cfc268814a Update to MIT licensed FreeRTOS V10.0.0 - see https://www.freertos.org/History.txt 2017-11-29 16:53:26 +00:00
Richard Barry
e42a701e99 Add missing +TCP code. 2017-08-17 12:26:43 +00:00
Richard Barry
77e95538dc Added +TCP code to main repo. 2017-08-17 12:18:14 +00:00
Richard Barry
037abdddf2 Update TriCore port to work with latest GCC compiler. 2017-08-09 16:57:35 +00:00
Richard Barry
b6f2402f3f Update trace recorder source to fix some compile time warnings. 2017-06-01 14:16:16 +00:00
Richard Barry
2307bc9dfa Add MSVC .vs directory to keep the IDE's windows layout. 2017-06-01 14:15:24 +00:00
Richard Barry
6eea3d8d4b Correct long time mis-spelled portINITIAL_EXEC_RETURN to portINITIAL_EXC_RETURN 2017-05-30 00:36:09 +00:00
Richard Barry
3f74cd483b Update linker script so main stack starts on 8-byte alignment. 2017-05-30 00:17:14 +00:00
Richard Barry
6b8eb1e936 Update IAR project for MSP432 to IAR version 8.11. 2017-05-30 00:03:31 +00:00
Richard Barry
2887612f27 FreeRTOS.h changes to go with the last tasks.c checkin. 2017-05-29 23:08:34 +00:00
Richard Barry
b5d8be2209 Remove obsolete code from prvCheckTasksWaitingTermination(). 2017-05-29 22:55:09 +00:00
Richard Barry
533b533820 Fix typo in comment that got copied into multiple main.c file.s 2017-05-29 22:06:54 +00:00
Richard Barry
504d9c8bab Update the FreeRTOS_Plus_CLI_with_Trace_Windows_Simulator demo to use the latest FreeRTOS+Trace recorder code. 2017-05-29 22:05:25 +00:00
Richard Barry
35f5990e7a Update the MSVC and MingW demos to use the latest FreeRTOS+Trace recorder library. 2017-05-29 21:45:31 +00:00
Richard Barry
f289bfb388 Update to the latest trace recorder library. 2017-05-29 21:43:07 +00:00
Richard Barry
9f84f353d0 Remove configurations other than 'debug' from the Win32 demo. 2017-05-07 18:22:31 +00:00
Richard Barry
2e89c13c1c Cosmetic changes only. 2017-04-26 00:23:57 +00:00
Richard Barry
a99cd32208 Updated name of CORTEX_MPU_CEC_MEC_17xx_Keil_GCC to CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC. 2017-04-20 05:33:05 +00:00
Richard Barry
59925359ed Added traceQUEUE_CREATE_FAILED() trace macros into the queue create functions. 2017-04-10 01:58:58 +00:00
Richard Barry
b080f13543 Add more "memory" clobbers into the MPU ports to make them robust to more aggressive optimisation in newer GCC version. 2017-04-10 01:58:01 +00:00
Richard Barry
0f85ead175 Add more "memory" clobbers into asm code of GCC/ARM_CRx_No_GIC port to make it robust with higher optimisation in newer versions of GCC. 2017-04-10 01:01:11 +00:00
Richard Barry
0a7a0a79d6 Updates to prevent warnings when compiled with LLVM. 2017-04-10 00:26:22 +00:00
Richard Barry
8ca40d80a9 Ensure the PIC32 interrupt stack is 8 byte aligned for all values of configISR_STACK_SIZE. 2017-04-09 20:13:48 +00:00
Richard Barry
96db5a3600 PIC32MZ project using later MPLAB X tools. 2017-04-09 19:35:32 +00:00
Richard Barry
ffb228e448 Change name of the CEC and MEC directory to CORTEX_CEC_MEC_17xx_51xx_Keil_GCC as it is also applicable to the MEC5105 part. 2017-04-04 20:21:40 +00:00
Richard Barry
7fc04bfebe Change name of the CEC and MEC directory to CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC as it is also applicable to the MEC5105 part. 2017-04-04 20:16:37 +00:00
Richard Barry
464c2660ad Updates to the Cortex-M tickless idle code to reduce clock slippage.
Updates to prevent the vTaskSwitchContext() function being removed from GCC builds when link time optimisation is used.
2017-03-28 03:13:48 +00:00
Richard Barry
7ee26c1b5e Enable button interrupts in the MSP432 demos in order to test code paths when an MCU exits low power mode for a reason other than a tick interrupt. 2017-03-28 03:12:20 +00:00
Richard Barry
aa810cb926 Ensure vTaskGetInfo() sets the sate of the currently running task to eRunning - previously it was set to eReady. 2017-03-27 20:31:03 +00:00
Richard Barry
3b2bbcb56a Maintenance on MSP432 demo. 2017-03-09 02:13:40 +00:00
Richard Barry
ad5659e93d Housekeeping check-in, no code changes. 2017-03-08 22:19:14 +00:00
Richard Barry
34b194150e Add CEC and MEC 17xx demo that is completely statically allocated. NOT FULLY TESTED YET. 2017-03-08 18:38:02 +00:00
Richard Barry
b9fe24962e Add additional memory barriers into ARM GCC asm code to ensure no re-ordering across asm code as optimisers get more aggressive. 2017-03-07 04:06:10 +00:00
Richard Barry
c3acc441ac Introduce vTaskInternalSetTimeOutState() which does not have a critical section, and add a critical section to the public version of the same. 2017-02-24 02:16:54 +00:00
Richard Barry
9b213e8c34 Add SimpleLink CC3220SF demo. 2017-02-24 02:12:27 +00:00
Richard Barry
67def3c14b Update Reliance Edge fail safe file system to the latest version. 2017-01-24 00:20:35 +00:00
Richard Barry
8d041c8e21 Update version number in preparation for maintenance release. 2017-01-22 05:28:13 +00:00
Richard Barry
979e41c9da Update UltraScale R5 hardware definition and BSP for 2016.4 SDK tools. 2017-01-21 21:59:25 +00:00
Richard Barry
ff55eb920c Update Zynq MPSoC hardware definition and BSP files to be those shipped with the 2016.4 SDK. 2017-01-19 16:33:13 +00:00
Richard Barry
992a3c8c71 Update BSP source files for UltraScale Cortex-A53 and Cortex-R5 and Microblaze to the 2016.4 versions.
Correct alignment issue in GCC Cortex-R port that was preventing full floating point usage in interrupts (other ports will be updated likewise).
Update the UltraScale R5 demo to test the GCC Cortex-A9 port layer modification mentioned on the line above.
2017-01-19 04:11:21 +00:00
Richard Barry
6ffaa6f018 Correct alignment issue in GCC and RVDS Cortex-A9 port that was preventing full floating point usage in interrupts (other ports will be updated likewise).
Update the Zynq demo to test the GCC Cortex-A9 port layer modification mentioned on the line above.
2017-01-18 18:33:48 +00:00
Richard Barry
d67dcf9c74 Enhanced priority dis-inheritance functionality in the case where a task that caused another task to inherit its priority times out before obtain a mutex.
Added test code to GenQTest to test the new priority dis-inheritance functionality.
Allow the default names given to the Idle and Timer tasks to be overwridden by definitions in FreeRTOSConfig.h.
2017-01-16 03:58:51 +00:00
Richard Barry
883541bc8e Rename the CORTEX_MPU_MEC17xx_KEIL_GCC directory to CORTEX_MPU_CEC_MEC_Keil_GCC as it is also applicable to the CEC17xx parts. 2017-01-09 21:29:42 +00:00
Richard Barry
c882141175 Change how volatile is used in some of the standard demos to remove compiler warnings in the latest GCC versions. 2017-01-04 05:07:12 +00:00
Richard Barry
ca9edf3531 Increase the priority of the Windows threads used by the FreeRTOS Windows port, and, because the threads have high priority and run on the same core, prevent the port running on single core hosts so as to avoid locking up the host. 2017-01-04 04:48:22 +00:00
Richard Barry
f98b675671 Add MPU project for multiple MEC17xx devices. 2016-12-11 22:56:30 +00:00
Richard Barry
225f13bac2 Update TaskNotify.c to test the condition where a direct to task notification is sent to a suspended task.
Introduce configSTACK_DEPTH_TYPE so the application writer change the type used to specify a stack size from uint16_t to whatever they like.  Defaults to uint16_t if not defined.
Introduce configINITIAL_TICK_COUNT to allow users to start the tick count at something other than 0.  Used for testing, but overflows can be better tested by setting configUSE_16_BIT_TICKS to 1.
Split xQueueGenericReceive() into xQueueReceive(), xQueuePeek() and xQueueSemaphoreTake() as the first step in refactoring xQueueGenericReceive().
Add Cortex-M3 port layer for Code Composer Studio - previously there was only a Cortex-M4F port.
Introduce configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING() to allow applications to prevent portSUPPRESS_TICKS_AND_SLEEP() being called.  Previously the portPRE_SLEEP_PROCESSING() macro could only be used to abort entry into sleep time after clocks had been re-programmed for the distant wake time.
2016-11-25 21:07:56 +00:00
Richard Barry
7fcc976248 Update version of Reliance Edge. 2016-11-21 04:30:49 +00:00
Richard Barry
7cce089e40 Add support for statically allocated memory protected tasks - previously only dynamically allocated tasks could be memory protected. 2016-09-20 13:54:28 +00:00
Richard Barry
5c75e5a38a Correct the definition of StaticTask_t and add additional configASSERT() statements to catch future errors. 2016-09-14 08:21:24 +00:00
Richard Barry
40201bc253 Introduce configRECORD_STACK_HIGH_ADDRESS, which when set will result in both limits of the stack being saved in the TCB to allow enhanced debug capabilities.
Introduce configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H, which allows a user provided header file to be included at the bottom of the tasks.c source file, which can add user functions and access file scope data.
Replace global on/off switches used for lint errors with save/restore switches.
2016-09-04 15:46:34 +00:00
Richard Barry
f11912c5de Clean up lint errors. 2016-08-16 13:44:30 +00:00
Richard Barry
75ffac21d7 Changes to core code and port layer:
+ Add configASSERT() into ARM Cortex-M ports to check the number of priority
      bit settings.
    + Clear the 'control' register before starting ARM Cortex-M4F ports in case
      the FPU is used before the scheduler is started.  This just saves a few
      bytes on the main stack as it prevents space being left for a later save
      of FPU registers.
    + Added xSemaphoreGetMutexHolderFromISR().
    + Corrected use of portNVIC_PENDSVSET to portNVIC_PENDSVSET_BIT in MPU ports.
2016-08-16 11:38:58 +00:00
Richard Barry
bdbf347c22 Remove clrex instruction from Cortex-M ports again as it is implicit in interrupt entry. 2016-06-28 10:39:25 +00:00
Richard Barry
c296e2cff8 Improvements to the Cortex-M ports:
- Clear the SysTick current value register before starting the SysTick (only required if something uses SysTick before starting the scheduler).
- Ensure atomic operations are thread safe by executing clrex in the context switch.
2016-06-27 13:13:05 +00:00
Richard Barry
6c975cd46a Final check in before tagging V9.0.0. 2016-05-25 11:47:42 +00:00
Richard Barry
2bd7884ace Prepare for V9.0.0 release:
+ Change version number from V9.0.0rc2 to V9.0.0.
2016-05-20 18:05:46 +00:00
Richard Barry
e23eca901d Preparing for V9.0.0 formal release:
+ Update various projects to use the latest versions of their build tools.
2016-05-20 12:18:59 +00:00
Richard Barry
0063b29cdf Prepare for V9.0.0 release.
+ Set flash wait states on MSP432 demos.
+ Remove use of obsolete IO library in PIC32 demos.
+ Remove obsolete item left on stack of first task to run in the Cortex-M0 ports.
+ Correct IA32 GCC vPortExitCritical() implementation when configMAX_API_CALL_INTERRUPT_PRIORITY == portMAX_PRIORITY.
2016-05-19 13:28:12 +00:00
Richard Barry
e10647f9c0 Increase the test coverage of the GCC MPU demo that runs in the Keil simulator.
Add an MPU demo that uses the Keil simulator that also uses the Keil compiler.
Correct a few version numbers for files recently added to the repository.
2016-05-18 19:51:14 +00:00
Richard Barry
ee9cd40b6d Add GCC ARM Cortex-M4F MPU port.
Add RVDS ARM Cortex-M4F MPU port.
Increase the size of each buffer allocated to pbufs in the Microblaze lwIP demo to prevent pbufs chaining.
Use _start as the top of the stack for each Microblaze task, rather than NULL, as NULL was causing the Xilinx SDK to try and unwind the stack too far.
2016-05-18 10:41:28 +00:00
Richard Barry
fedb98c5f6 Recreated MicroBlaze example using Vivado 2016.1 - the Microblaze project is still a work in progress - not yet fully functional. 2016-05-10 14:05:22 +00:00
Richard Barry
501be60574 Update the Microblaze hardware design and BSP to the latest IP and tool versions. 2016-05-09 15:55:51 +00:00
Richard Barry
324127837c Update some more standard demos for use on 64-bit architectures.
Update the Xilinx Ultrascale+ Cortex-A53 (64-bit) and Cortex-R5 (32-bit) demos to use version 2016.1 of the SDK.
2016-05-06 12:40:27 +00:00
Richard Barry
0cb71ee9ce Update the Xilinx UltraScale+ demo project to use the BSP and hardware platform generated by the 2016.1 version of the SDK. 2016-04-28 12:49:19 +00:00
Richard Barry
11fe9de0f0 Update the Xilinx UltraScale+ 64-bit demo to use the hardware definition and BSP from version 2016.1 of the SDK. 2016-04-28 12:23:52 +00:00
Richard Barry
0721cf102a Completely re-generate the Zynq 7000 demo using the 2016.1 SDK tools.
Introduce configUSE_TASK_FPU_SUPPORT into the GCC Cortex-A9 port to allow tasks to have an FPU context by default.
Add MikroC Cortex-M4F port.
2016-04-25 17:24:54 +00:00
Richard Barry
2ec97696db Remove Zynq 7000 project so it can be re-created using the 2016.1 edition of the SDK. 2016-04-25 13:37:57 +00:00
Richard Barry
0b5906d404 Remove obsolete MPU demos.
Separate the MPU wrappers into their own file so they can be used from future MPU ports.
2016-04-25 12:03:47 +00:00
Richard Barry
afd4b432f6 Improve coverage of the MPU API in the new MPU demo, fixing typos in the MPU port layer as they are found. 2016-04-24 18:33:16 +00:00
Richard Barry
12a0be1e69 Add software timer use to the new MPU demo.
Update CEC1302 demos to demonstrate both aggregated and disaggregated interrupts.
2016-04-24 10:06:20 +00:00
Richard Barry
345819d550 Update the GCC Cortex-A9 port to introduce a version of the IRQ handler that saves the FPU registers. 2016-04-23 10:53:57 +00:00
Richard Barry
ac67c39be9 Update the MPU port so it supports all the public functions found in V9.0.0rc2. 2016-04-20 15:42:34 +00:00
Richard Barry
da6c95edae Update CEC1302 peripheral library version. 2016-04-18 15:52:19 +00:00
Richard Barry
057b38ad23 Updates to support FreeRTOS MPU in FreeRTOS V9.0.0 - including a GCC project that runs in the Keil simulator to allow development and testing. 2016-04-18 10:49:24 +00:00
Richard Barry
255145bde1 xTaskGetTaskHandle() changed to xTaskGetHandle().
Tidy up CEC1302 demo.
Ensure bit 0 of the task address is clear when setting up stack of initial Cortex-M3/4/7 stacks (for strict compliance, although not practically necessary).
vTaskGetTaskInfo() changed to vTaskGetInfo() - with a macro added for backward compatibility.
2016-04-15 11:48:07 +00:00
Richard Barry
ee5386756d Correct selected device in IAR SAMA5D2 project. 2016-04-14 11:18:13 +00:00
Richard Barry
f0f2378961 Add SAMA5D2 Xplained IAR demo. 2016-04-14 11:14:58 +00:00
Richard Barry
5252301cb8 Rename CORTEX_M4F_CEC1302_Keil to CORTEX_M4F_CEC1302_Keil_GCC as it now contains both GCC and Keil projects. 2016-04-07 10:57:36 +00:00
Richard Barry
912445c341 Added GCC project to the CEC1302 demo. 2016-04-07 10:56:04 +00:00
Richard Barry
4b9c4aa757 Correct comment error that was replicated on many different main_full.c files. 2016-04-04 14:53:04 +00:00
Richard Barry
f1725afbe5 Remove compiler warning by ensure prvInitialiseMutex() is not included if configUSE_MUTEXES is 0.
Reduce the number of xTaskCreateStatic() parameters by having the function return the task handle, rather than pass the task handle out using a parameter.  This is also consistent with other objectCreate() functions.
2016-03-31 15:22:10 +00:00
Richard Barry
07ac1399ee Update version number to 9.0.0rc2. 2016-03-30 12:20:36 +00:00
Richard Barry
f9c02d09c3 Update MSP432 projects to use updated driver library files.
Remove references to INCLUDE_pcTaskGetTaskName and INCLUDE_xTimerGetTimerDaemonTaskHandle, which are no longer required.
2016-03-30 11:12:06 +00:00
Richard Barry
b9b64c0889 Make the pcObjectGetName() API function naming consistent - so rename pcTaskGetTaskName() to pcTaskGetName(), rename pcTimerGetTimerName() to pcTimerGetName() and add a #defines in FreeRTOS.h to make the changes backward compatible. 2016-03-29 17:16:34 +00:00
Richard Barry
aeb03e5fa0 Create minor optimisations (just an asm instruction or two) by using consts in a few places where previously a volatile variable that didn't change was used.
Add the simple xTimerGetPeriod() and xTimerGetExpiryTime() functions.
2016-03-29 13:07:27 +00:00
Richard Barry
26d3770fad - Rework the StaticAllocation.c common demo file to reflect the changes to the static allocation object create functions from the previous check-in.
- Correct various typos in comments.
- Add xTimerGetPeriod() function (feature request).
2016-03-29 11:08:42 +00:00
Richard Barry
9dda62372c Update the documentation contained in the header files to be correct for V9.0.0 release candidate 2. 2016-03-26 11:05:42 +00:00
Richard Barry
6568ba6eb0 Notes:
+ The MPU port is not supported in this revision number.
+ The documentation for the static allocation functions in the header files has not yet been updated for this revision.

Kernel updates:
+ Simplify the static allocation of objects implementation.
+ Introduce configSUPPORT_DYNAMIC_ALLOCATION in addition to the existing configSUPPORT_STATIC_ALLOCATION so FreeRTOS can be built without providing a heap at all.

Demo application updates:
+ Update the demos to take into account the new configSUPPORT_DYNAMIC_ALLOCATION constant.
+ Add an MSVC demo that only uses static allocation, and does not include a FreeRTOS heap.
+ Update the MSVC project to use both configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION.
+ Update the MingW project to use only configSUPPORT_DYNAMIC_ALLOCATION.
2016-03-22 16:23:37 +00:00
Richard Barry
283bc18d23 Very minor changes to the EFM32 Giant and Pearl Geckos demos in preparation for pre-release of the projects. 2016-03-18 19:40:03 +00:00
Richard Barry
60537ce7cb Add low power timer library source file for the Pearl Gecko demo.
Fix types in comments.
2016-03-16 17:18:21 +00:00
Richard Barry
9f5095f6bd Rework the low power demo that uses the RTCC clock on the Pearl Gecko, and add attentional test code. 2016-03-16 17:17:07 +00:00
Richard Barry
8ffe75f665 Replace Gecko Simplicity Studio project that had multiple build configurations with one that has a single build configuration and targets the Giant Gecko starter kit. Now there are separate projects for the Giant and Pearl Geckos.
Update the Pearl Gecko project to use the register test tasks that include the FPU registers.
2016-03-02 17:45:55 +00:00
Richard Barry
c0abb762ff Add Pearl Gecko demo.
Fix build error when configSUPPORT_STATIC_ALLOCATION and configNUM_THREAD_LOCAL_STORAGE_POINTERS were greater than zero at the same time.
Allow the pdMS_TO_TICKS macro to be overridden by a definition in FreeRTOSConfig.h.
2016-03-02 16:03:25 +00:00
Richard Barry
780aa7e325 Add files necessary to create a Pearl Gecko build configuration in the new EFM32 SimplicityStudio project. 2016-02-20 15:27:40 +00:00
Richard Barry
f4033581b5 Update FreeRTOS+ version number ready for version 9 release candidate 1. 2016-02-18 19:02:43 +00:00
Richard Barry
d3ba0aa98d Update version number ready for version 9 release candidate 1. 2016-02-18 17:11:14 +00:00
Richard Barry
d7253324cd Prepare for a FreeRTOS V9 release candidate:
- Remove the standard demo files that used the [long since deprecated] alternative API.
- Add standard demo task that tests the new xTaskAbortDelay() function.
- Update the Win32 Visual Studio project to use Visual Studio 2015 Community Edition.
- Rename the xGenericListItem TCB member to xStateListItem as it better describes the member's purpose.
2016-02-18 10:07:42 +00:00
Richard Barry
c7b7b90cc9 Core kernel code changes:
+ Added xTaskAbortDelay() function, which causes a task to exit the Blocked state even before the timeout has expired or the event the task is waiting for has occurred.
+ For efficiency and code size reasons on some architectures, replace many instances of "== pdTRUE" with "!= pdFALSE".
2016-02-14 11:58:11 +00:00
Richard Barry
2acc8f2c99 FreeRTOS source:
- Major refactor to consolidate the multiple places where a task is removed from a ready list and placed in a delay list into a single function, reducing code size, and enabling the easy addition of up-coming functionality.
 - Replace the enum used for task notification states with a uint8_t to reduce the TCB struct size with some compilers, and allow additional members to be added without increasing its size.
 - Rearrange FreeRTOS.h so all INCLUDE_ defaults are grouped together.
2016-02-10 12:58:15 +00:00
Richard Barry
42e73b9b8f Kernel source code:
+ Added xPortIsInsideInterrupt() to RVDS ARM CM4F port - the same will get added to other ports in time.

Demo application code:
+ Added first pass Microchip CEC1302 demo for Keil.
+ Harden the new StaticAllocation.c standard demo tasks against integer promotion rules causing problems on 16-bit architectures.
2016-02-09 16:02:54 +00:00
Richard Barry
732778a971 Test the RTC and BURTC tickless implementations on the Gecko parts, and make correct as appropriate.
Replace some references to the older portTICK_RATE_MS macro with the newer pdMS_TO_TICKS() macro in the standard demo files.
2016-02-03 11:58:30 +00:00
Richard Barry
556de14a1d Update EFM32 demos to include an option to use the RTC as the clock source when using low power tickless mode. 2016-02-01 18:04:50 +00:00
Richard Barry
c4dd17eeb5 Added a build configuration for the Wonder Gecko starter kit to the existing Giant Gecko Simplicity Studio project.
Fix some lint warnings that were generated by some of the new core functionality.
2016-01-31 20:22:00 +00:00
Richard Barry
802af0150c Add vTaskGetTaskInfo() function that allows a TaskStatus_t structure to be returned for an individual task (previously information could only be obtained for all the tasks at once).
Add a member to the TaskStatus_t structure that is used to return the base address of the stack used by the task being queried.
Add xTaskGetTaskHandle() that allows the handle of a task to be looked up from the task's text name.
Continue to document the macros that allow RTOS objects to be created using statically allocated memory.
Introduced vApplicationDaemonTaskStartupHook(), which allows initialisation that that needs to be executed after the scheduler has been started to be executed from the RTOS daemon task.
Call prvResetNextTaskUnblockTime() in xTaskResumeAll() if a task is moved from the pending ready list - this can prevent an unnecessary wake from sleep mode if a task is unblocked by an interrupt while in a low power tickless state.
2016-01-28 16:59:57 +00:00
Richard Barry
b514f4fa4e Baseline the Giant Gecko demo, which now has the first pass at a low power tickless implementation. 2016-01-25 21:17:47 +00:00
Richard Barry
8ef7849199 Ensure the code builds when configSUPPORT_STATIC_ALLOCATION is 0.
Continue to document the new static allocation functions.
2016-01-22 22:09:11 +00:00
Richard Barry
f82953554d Provide the ability to create event groups and software timers using pre statically allocated memory - now all RTOS objects can be created using statically allocated memory.
Rename StaticTCB_t to StaticTask_t.
2016-01-21 14:10:04 +00:00
Richard Barry
68fced741d Continue to add the ability to create RTOS objects using static rather than dynamic memory allocation - now including all the semaphore types.
Update the StaticAllocation.c standard demo file to exercise the new static allocation functions.
2016-01-20 14:04:40 +00:00
Richard Barry
cf0ed4e2ac Implement functionality that allows the memory required to create a queue or semaphore to be allocated statically.
Update the standard demo task that tests statically allocated tasks to also test statically allocated queues.
2016-01-19 13:41:28 +00:00
Richard Barry
eae4815bf3 Rename DummyTCB_t to StaticTCB_t.
Move structures used for static allocation of tasks and queues into FreeRTOS.h from their individual API header files.
Add SAME70 Xplained Atmel Studio project.
Update SAMV71 Atmel Studio project to use Studio 7.
Revert some changes to GenQTest.c standard demo task which only function correctly when a queue registry was used.
2016-01-18 15:57:02 +00:00
Richard Barry
41b5e486dd Remove unused header files from new EFM32 demo.
Prep the code ready to create a tickless implementation.
2016-01-17 16:04:56 +00:00
Richard Barry
53b996077f Add EFM32 Giant Gecko Starter Kit demo - still a work in progress as the low power tick management has not been implemented yet. 2016-01-17 14:34:27 +00:00
Richard Barry
b832d5801f Kernel changes:
Minor change to xQueueGenericReceive() to catch the extreme case of data being placed into a queue between a task timing out and leaving the xQueueGenericReceive() function.
Added xSemaphoreGetCount() macro.


Demo app changes:
Updated countsem.c to test the new xSemaphoreGetCount() macro.
2016-01-12 15:52:44 +00:00
Richard Barry
f81575dcee Correct a comment that had been cut and paste into multiple main.c files. 2016-01-12 10:38:16 +00:00
Richard Barry
5690221c5c Add in the CORTEX_A53_64-bit_UltraScale_MPSoC demo application (a demo has been included in the Xilinx SDK download for some time already).
Update a few demo application files to work with 64-bit data types.
2015-12-22 13:56:20 +00:00
Richard Barry
51560d9a96 FreeRTOS source updates:
+ Add the pre-existing 64-bit Cortex-A53 port layer into the head revision of the main repository.

Demo application updates:
+ Update Zynq demo to use SDK version 2015.4
+ Add task static allocation standard demo to Zynq demo.
+ Make the XScuGic object accessible outside of the vConfigureTickInterrupt(), again in the Zynq demo.
2015-12-21 08:25:41 +00:00
Richard Barry
ea95020ffd Changes to the FreeRTOS code:
+ Introduced xTaskCreateStatic() to allow tasks to be created without any dynamic memory allocation.
+ When a task notification is used to unblock a task from an ISR, but the xHigherPriorityTaskWoken parameter is not used, then pend a context switch to occur during the next tick interrupt.

Demo application changes:
+ Updated TaskNotify.c to test the case where a task is unblocked by an ISR, but does not use its xHigherPriorityTaskWoken parameter.
+ Updated the Win32 MSVC project to test statically allocated tasks being created and deleted.
+ Introduced StaticAllocation.c standard demo task.
2015-12-20 13:44:21 +00:00
Richard Barry
7d6609f8db FreeRTOS source:
+ Previously, if a task was deleted, the memory allocated to the task by the RTOS was freed in the Idle task.  Now if a task deletes another task the memory is freed immediately.  The idle task is however still responsible for freeing the memory when a task deletes itself.
+ Added pcQueueGetQueueName() function to return the name of a queue from its handle, assuming the queue is registers.

Demo application:
+ Update GenQTest to exercise the new pcQueueGetQueueName() function.
+ Delete workspaces from old Eclipse examples, leaving just the projects.
+ Rework comments in the MSVC simply blinky demo.
2015-12-08 20:22:58 +00:00
Richard Barry
94dd3f871b FreeRTOS Source files:
+ Updated all ARM Cortex-M0 ports to include an additional ISB instruction as the scheduler is started.

Demo app files:
+ Fixex build issues in XMC1000 demos.
2015-11-22 22:03:00 +00:00
Richard Barry
fa86d4eece FreeRTOS source changes:
+ heap_1.c and heap_2.c now support configAPPLICATION_ALLOCATED_HEAP (heap_4.c already did) which allows the heap to be placed by the user rather than the linker.

Demo app changes:
+ SAMD20 project has been updated to use Atmel Studio 7.
2015-11-22 21:14:39 +00:00
Richard Barry
e9561c946c Kernel changes:
+ Support tickless idle when configUSE_PREEMPTION is 0 (previously tickless idle was only supported when the pre-emptive scheduler was being used).
+ If a stack was statically allocated, then don't try freeing it if the TCB cannot be allocated.
+ Remove use of INCLUDE_xEventGroupsSetBitsFromISR() pre-processor macro, as it was not tested anyway.

Demo app changes:

+ Updated SAM4L Atmel Studio project to use Atmel Studio 7.
2015-11-20 14:11:11 +00:00
Richard Barry
5e9787978c Final tidy up before tagging V8.2.3. 2015-10-17 17:25:50 +00:00
Richard Barry
825b43a188 Update version number ready for the V8.2.3 release. 2015-10-16 14:57:00 +00:00
Richard Barry
d289525e1b Preparing for maintenance release:
Kernel source changes:
- Added xTaskNotifyStateClear() API function.
- Added the GCC Cortex-R port (existed for a while) into the main download.
- Improved the IAR RL78 port's handling of different memory model combinations.
- Removed some compiler warnings in heap_5.c.

Demo app changes:
- Added example use of xTaskNotifyStateClear() to the TaskNotify standard demo tasks.
2015-10-16 11:29:36 +00:00
Richard Barry
57cc3389a5 Preparing for maintenance release -
Bug fix - issue introduced in V8.2.2 when the current timer list is empty and the overflow timer list is not empty.
Add PIC32MZ EF (floating point) support and update the MZ demo project to test the flop context switching.
Improve efficiency of the stack overflow checking.
Add CLI to RX71M demo.
General tidy up of new RZ and RX projects - including ensuring the UART driver copes with 0 length strings.
Add stack overflow checking to the [old] PIC24 demo.
2015-10-15 20:19:26 +00:00
Richard Barry
38cb08133d Check in RX231 IAR demo. 2015-10-10 20:38:12 +00:00
Richard Barry
c6a4e3191e Add FreeRTOS+CLI examples to the Renesas RZ/T demos.
Fix some compiler warnings.
Correct spellings in comments.
2015-10-10 10:29:29 +00:00
Richard Barry
96ff3925d2 Update FreeRTOS+Trace recorder library to v3.0.2
Add streaming version of the FreeRTOS+Trace recorder, also V3.0.2
2015-10-09 13:30:09 +00:00
Richard Barry
f218cf5680 Demo tasks:
- Complete the demo projects for the RX113 using IAR, GCC and Renesas compilers by including a basic UART CLI.

Standard demo tasks:
- Add some volatile qualifiers to variables in IntQueue.c.
2015-10-05 15:23:09 +00:00
Richard Barry
cd42d2c215 Changes in common files:
Add additional asserts into timers.c.

Trivial changes and changes in demo applications:
RX113 IAR project is not building and running.
Make FreeRTOS_SetupInterrupt() and FreeRTOS_ClearInterrupt() weak symbols in the Zynq SDK repository.
Correct typo in the port layer comments that was cut and paste into multiple files.
2015-10-03 18:48:41 +00:00
Richard Barry
b3f343fdae Update RX231 projects to blink the LED. 2015-09-25 09:33:37 +00:00
Richard Barry
e5c8119b96 Baseline new RX projects before refining and tidying them up. 2015-09-25 08:26:55 +00:00
Richard Barry
87243e4a16 FreeRTOS source:
+ Added Renesas RXv2 port for IAR.

Demo apps:
+ Demo/Rename the CORTEX_R4F_T_GCC_IAR_ARM directory to just Rename the CORTEX_R4F_T_GCC_IAR.
+ Add IAR project for the RX113.
+ Add RX231 e2studio projects for the RX231.
2015-09-23 12:16:10 +00:00
Richard Barry
27ff871a37 Baseline new GCC and Renesas compiler projects for RX71M and RX113 before adding IAR projects. 2015-09-22 08:45:15 +00:00
Richard Barry
b71bb46a5b Modify RZ/T e2studio directory structure to accommodate an IAR project.
Start RZ/T port and demo project.
2015-09-13 21:39:17 +00:00
Richard Barry
aa80622d72 Remove compiler warnings from auto-generated code.
Baseline prior to starting IAR RZ/T project.
2015-09-13 07:30:43 +00:00
Richard Barry
a29dc8d6c6 Add PIC32MEC14xx port and demo application. 2015-09-12 20:47:59 +00:00
Richard Barry
f19497c3d6 Simplify and improve GIC-less Cortex-R4 port.
Add final tests into RZ/T demo.
2015-09-12 12:14:58 +00:00
Richard Barry
b9f235846f Common source code:
- Remove configASSERT() if a queue cannot be created, malloc failed hook will be called anyway.

Demo apps:
- RZ/T blinky demo working, but still lots to do to improve the port.
2015-09-11 13:29:40 +00:00
Richard Barry
28d8a27f8f Initial RZ/T port and demo - work in progress, currently only the tick interrupt can be installed. 2015-09-07 17:29:14 +00:00
Richard Barry
717654471e Update the FreeRTOS+WolfSSL Win32 demo to use the latest WolfSSL libraries. 2015-08-28 13:58:05 +00:00
Richard Barry
02d0847567 Rename the FreeRTOS_Plus_CyaSSL_Windows_Simulator directory to FreeRTOS_Plus_WolfSSL_Windows_Simulator. 2015-08-28 13:49:47 +00:00
Richard Barry
5a6242fbd0 Update WolfSSL library to the latest version. 2015-08-28 13:46:22 +00:00
Richard Barry
8af1ad9bac Rename the CyaSSL directory to WolfSSL 2015-08-28 13:27:31 +00:00
Richard Barry
1b010fbaa7 Final commit before tagging - cosmetic changes only. 2015-08-12 16:45:24 +00:00
Richard Barry
3291f5a08d Final preparation for new release:
FreeRTOS+Trace:
 - Add trace macros for task notifications.
 - Update to the latest trace recorder library.

Demo projects:
 - Only include the CLI command to show run time states if configGENERATE_RUN_TIME_STATS is set to 1.
2015-08-12 10:34:30 +00:00
Richard Barry
99d4f2c454 Update version numbers in preparation for new release. 2015-08-05 12:59:42 +00:00
Richard Barry
b4c3d91aff Add FreeRTOS BSP for Xilinx SDK. 2015-08-05 10:21:59 +00:00
Richard Barry
4c847711bd Common scheduler code:
- Back out changes that allow mutexes to be given from a semaphore after tests showed issues that would not be fast to fix.

Demo projects:

- Update the Microblaze Kintex 7 project and BSP to use version 2015.2 of the Xilinx SDK.
2015-08-04 17:36:55 +00:00
Richard Barry
95eed0c8f3 Preparing for next release...
Zynq ZC702 demo application:
Update the memcpy, memset and memcmp implementations so they don't err with -O3 optimisation.
Update to use the 2015.2 version of the SDK.
2015-08-01 15:00:22 +00:00
Richard Barry
4c3722bd76 Preparing for new release...
Kernel changes:
- Remove an assert that was preventing xQueueSendFromISR() being used to give a mutex from an ISR (mutexes cannot be given using xSemaphoreGiveFromISR()).
- Introduce xTaskNotifyAndQueryFromISR() as the interrupt safe version of xTaskNotifyAndQuery().

Common demo task changes:
- Update IntSemTest.c to prove the theory that it is safe to give a mutex type semaphore from an interrupt using xQueueSendFromISR() instead of xSemaphoreGiveFromISR().
- Update TaskNotify.c to test the new xTaskNotifyAndQuery() from ISR fuction.
2015-08-01 07:03:32 +00:00
Richard Barry
25b911e0bd Add resource filters to the Eclipse project used to build the Galileo demo. 2015-07-30 21:13:03 +00:00
Richard Barry
cff5cfdd4f Preparing for the next release...
New port and demo project:  Intel Galileo.
2015-07-30 11:46:30 +00:00
Richard Barry
8b5c27b679 Preparing for the next release...
PIC32MZ demo application:
- Update to use the latest XC32 compiler.
2015-07-30 11:37:33 +00:00
Richard Barry
672ae6cbb6 Starting to prepare for the next release...
Core FreeRTOS code:
+ Added PRIVILEGED_FUNCTION qualifier to those functions from which it was previously missing.
2015-07-30 11:30:05 +00:00
Richard Barry
d3e053568d MSP430:
Add additional NOPs as required by hardware manual.

Microblaze:
Previously a task inherited the exception enable state from the context from which xTaskCreate() was called.  Now tasks all have exceptions enabled if they are enabled in the hardware.

Windows/GCC:
Improve the implementation of portGET_HIGHEST_PRIORITY.

Common code:
Simplify the pointer use in xQueueGenericCreate()

Demo apps: 
Remove jpg images that were used to create web pages.
Fix capitalisation issues in some demos where some header files are incldued with the wrong case, preventing building on Linux.
Remove the Microblaze demos that are using obsolete tools.
Update main_blinky for the Windows port demo to include a software timer example.
2015-07-26 16:41:12 +00:00
Richard Barry
95b73d40d9 Correct calculation of xHeapStructSize in heap_4 and heap_5.
Convert uint32_t types to size_t types in heap_5.c, as was previously done for heap_4.c.
2015-06-25 12:14:54 +00:00
Richard Barry
4ee2a96861 Add back some files essential for the PIC32MZ build. 2015-06-24 16:49:21 +00:00
Richard Barry
8a1450effc Microblaze: Add a port optimised task selection implementation to the Microblaze port.
Windows port:  Add code to ensure Windows threads are truely suspended before resuming another thread.
Typo correction to the task notification standard demo task.
Correct case of some include file names to fix build issues on Linux.
2015-06-24 15:10:03 +00:00
Richard Barry
cfb8223232 Add SAMV7 (Cortex-M7) demo for Atmel Studio. 2015-06-16 12:38:35 +00:00
Richard Barry
7456c232ce Update library files used in STM32F7 demo to the latest version released by ST. 2015-06-04 15:35:12 +00:00
Richard Barry
267dc24bb3 Kernel changes to improve power saving:
+ The timer task now blocks indefinitely if there are no timers active, allowing eTaskConfirmSleepModeStatus to return eNoTasksWaitingTimeout when configUSE_TIMERS is set to 1.
+ The next unblock time is calculated automatically after a task unblocks when waiting for a notification, allowing deep sleep to be entered earlier.
2015-05-20 15:46:40 +00:00
Richard Barry
067c1573c3 Finalise MSP43FR5969 IAR and CCS demos (hopefully). 2015-04-28 13:53:30 +00:00
Richard Barry
9bb5b40c81 Add CCS project for MSP430FR5969 demo. 2015-04-27 15:23:29 +00:00
Richard Barry
a9d1ff4f5e Change some data types in heap_4.c to allow it to be used on hardware that has 16-bit pointers without generating compiler warnings.
Add a small data model configuration to the MSP43FR5969 IAR demo.
Correct some code comments in the SAMA5D4 demo.
2015-04-27 11:14:11 +00:00
Richard Barry
976a9b44af Rename /Demo/MSP430FR5969_LaunchPad to /Demo/MSP430X_MSP430FR5969_LaunchPad for consistency with other MSP430 demo directory names.
Fixed typos in comments repeated in multiple source files.
2015-04-24 11:42:25 +00:00
Richard Barry
34a7b0431b Complete large memory model MSP430FR5969 demo - including CLI and run-time stats. 2015-04-24 11:34:19 +00:00
Richard Barry
91b249d24b Start of an MSP430FR5969 IAR project - currently running Blinky only. 2015-04-22 15:36:44 +00:00
Richard Barry
d39c0d5926 Update TimerDemo.c to test the new vTimerSetTimerID() function.
Update WinPCap NetworkInterface.c for FreeRTOS+UDP to correctly store a pointer to the network buffer structure at the beginning of the network buffer.
2015-04-13 19:58:51 +00:00
Richard Barry
03213b9e4a Add the errno definitions used by FreeRTOS+TCP and FreeRTOS+FAT into FreeRTOS's projdefs.h.
Remove redundant global definition vPortInstallFreeRTOSVectorTable from the GCC ARM_CA9 portASM.S file.
Ensure correct sequence of start up sequence when the Windows port is used on multi-core Windows machines by starting one thread in the suspended state.
Move initialisation of xNextTaskUnblockTime to the function that starts the scheduler, rather than from where the variable is declared - this fixes a compiler warning in newer IAR compilers.
Fix "elif (SELECTED_PORT == PORT_MICROCHIP_PIC32MX || PORT_MICROCHIP_PIC32MZ)" in the FreeRTOS+Trace trcHardwarePort.h header file.
2015-04-13 18:45:02 +00:00
Richard Barry
8dadb6b87c Final V8.2.1 release ready for tagging:
+ Added MSP432 (ARM Cortex-M4F MSP430!) demos for IAR, Keil and CCS.
+ Renamed directory containing demo for STM32F7 ARM Cortex-M7.
+ Renamed directory containing demo for SAMV71 ARM Cortex-M7.
+ Introduced xTaskNotifyAndQuery().
2015-03-24 15:24:49 +00:00
Richard Barry
693d0520bc Update version number ready for V8.2.1 release. 2015-03-21 21:03:42 +00:00
Richard Barry
63b3c773d5 Kernel changes:
Exclude the entire croutine.c file when configUSE_CO_ROUTINES is 0.

New ports:
Added Cortex-M7 IAR and Keil port layers that include a minor errata workaround r0p1 Cortex-M7 devices.
Added Cortex-M4F port layer for CCS.

New demo applications:
Added demo application for STM32F7.
Added demo application for SAMv71.
2015-03-21 14:01:43 +00:00
Richard Barry
2bf93bf925 Minor updates relating to formatting and comments only. 2015-03-20 15:43:20 +00:00
Richard Barry
a61db8f155 Minor updates to the Microblaze KC702 demo to allow easier connection from a Telnet server. 2015-03-16 11:22:43 +00:00
Richard Barry
18ff880e75 Add networking option to the Microblaze Kintex demo. 2015-03-13 15:05:09 +00:00
Richard Barry
3012d9b94d Work-in-progress check in of MicroBlaze Kintex7 demo. 2015-03-10 15:58:19 +00:00
Richard Barry
96e72413f7 Kernel code:
+ Added mtCOVERAGE_TEST_DELAY() macro to facilitate getting better code coverage during testing.
+ Update prvNotifyQueueSetContainer() so it does not call xTaskRemoveFromEventList() if it is called from an interrupt, and the queue is locked.

Demo apps:
Added QueueSetPolling.c/h demo/test functions.
2015-03-04 17:45:18 +00:00
Richard Barry
7d169cef52 Correct typeo that broke the Win32 port. 2015-02-17 14:28:10 +00:00
Richard Barry
86b09bfeb9 Kernel updates:
+ Added vTimerSetTimerID() to compliment vTimerGetTimerID().  Now the timer ID can be used as timer local storage.
+ Updated comments and added some additional assert() calls.

Win32 port:
+ Some changes to allow easier 64-bit builds

PIC24/dsPIC port:
+ Added NOP after disable interrupt instruction.
2015-02-11 15:41:30 +00:00
Richard Barry
dfdc319518 Kernel updates:
- Add user configurable thread local storage array, with get/set access function.
2015-01-26 17:40:35 +00:00
Richard Barry
51aa373c4c Add run-time stats to the Kintex7 Microblaze demo. 2015-01-19 13:34:26 +00:00
Richard Barry
acfbb7dd14 Add the beginnings of a Microblaze project for the KC705. 2015-01-16 19:16:12 +00:00
Richard Barry
501a531d46 Update version number in preparation for official V8.2.0 release. 2015-01-16 13:20:28 +00:00
Richard Barry
c37b2ca39b Demo app changes:
Add a "query heap" command to the standard sample CLI commands.
Remove casting from configMAX_PRIORITIES setting in Win32 simulator demos as it was preventing a clean build. 

Source code changes.
General tidy up and addition of assert points.
2015-01-15 21:37:32 +00:00
Richard Barry
e4e6328300 Remove casting from configMAX_PRIORITIES setting in FAT SL / CLI demo as it was preventing a clean build. 2015-01-07 07:02:17 +00:00
Richard Barry
271393b7d9 Release candidate - this will be tagged as FreeRTOS V8.2.0rc1 and a zip file provided.
Minor lint changes.
2014-12-24 09:40:58 +00:00
Richard Barry
5dd77c7aeb Rename SAM4E demo directory to include the 'F' in 'M4F' - minor point for the sake of consistency. 2014-12-24 08:55:14 +00:00
Richard Barry
6741592026 Update version numbers in preparation for V8.2.0 release candidate 1. 2014-12-21 19:09:18 +00:00
Richard Barry
fd02010886 Kernel changes:
+ Made xTaskNotifyGiveFromISR() its own function, rather than a macro that calls xTaskNotifyFromISR() (minor performance improvement).
+ GCC and Keil Cortex-M4F ports now use vPortRaiseBASEPRI() in place of ulPortRaiseBASEPRI() where the return value is not required (minor performance improvement).

Demo changes:
Change the [very basic] FreeRTOS+UDP SAM4E driver to use task notifications rather than a semaphore (execution time now 55% what it was in FreeRTOS V8.1.2!).
Robustness improvements to IntQueue.c standard demo task.h.
Added the latest standard demo tasks, reg test tasks and int q  tasks to the SAM4E demo.
2014-12-21 10:26:36 +00:00
Richard Barry
2de32c0141 Kernel changes:
+ Do not attempt to free the stack of a deleted task if the stack was statically allocated.
+ Introduce configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES - which optionally writes known values into the list and list item data structures in order to assist with the detection of memory corruptions.

Microblase port:  
+Change occurrences of #if XPAR_MICROBLAZE_0_USE_FPU == 1 to 	#if XPAR_MICROBLAZE_0_USE_FPU != 0 as the value can also be 2 or 3.

Demo app modifications:
+ Update Zynq project to use the 2014.4 tools and add in tests for the new task notification feature.
+ Update SAM4S project to include tests for the new task notification feature.
2014-12-19 16:27:56 +00:00
Richard Barry
f407b70dcc + Update demos that use FreeRTOS+Trace to work with the latest trace recorder library.
+ Fix a few compiler warnings.
+ Add TickType_t specific critical sections so critical sections are not used when accessing the tick count in cases where the access is atomic (32-bit tick count, 32-bit architecture).
2014-12-18 11:02:15 +00:00
Richard Barry
85fb1cc024 + New feature added: Task notifications.
+ Optimise Cortex-M4F ports by inlining some critical section macros.
+ Original ports used a #define to set the path to portmacro.h - that method has been obsolete for years and now all the old definitions have been moved into a separate header files called deprecated_definitions.h.
+ Cortex-M port now check the active vector bits against 0xff when determining if a function is called from an interrupt - previously only a subset of the bits (0x1f) were checked.
+ Add in new standard demo/test files TaskNotify.c/h and include the files in the simulator demos.
+ Update trace recorder code, and some demos to use the new version (more to do).
+ Introduce uxTaskPriorityGetFromISR().
+ Minor typo corrections.
+ Update MingW simulator demo to match the MSVC simulator demo.
2014-12-15 14:13:03 +00:00
Richard Barry
ca22607d14 Core kernel code:
Allow the stats formatting functions to be built in without stdio.h being included inside tasks.c.

Kernel port code:
- Slight change to the Cortex-A GIC-less port to move all non portable code to the application level.

SAMA5D4 demo project:
- Update the Atmel provided library to V1.1.
- Create a DDR build configuration.
- Ensure interrupts are all edge sensitive.
- Update the regtest code to use all 32 flop registers.
2014-10-15 21:01:31 +00:00
Richard Barry
e3263bb9b3 Demo projects only:
+ Remove some #warnings messages from the Cycle 5 - which were left in the code as reminders of tests that were not yet completed but are now.
2014-10-09 15:42:43 +00:00
Richard Barry
9e66637bec Core kernel files:
+ Change how queues are allocated and deleted so only one pvPortMalloc() or vPortFree() is required in place of the previous 2.
+ Where the TCB is allocated in relation to the stack is now dependent on the stack growth direction.  The stack will not grow into the TCB.
+ Introduce the configAPPLICATION_ALLOCATED_HEAP constant to allow the application to provide the array used by heap_4.c as its heap.  This allows the application writer to use qualifiers on the array to, for example, force the memory into faster RAM.

Demo application:
+ Add demo for SAMA5D4 using IAR.
2014-10-08 20:31:14 +00:00
Richard Barry
ee541a347d MSP430 Demo projects only:
Update project format to new IAR version.
2014-10-05 20:43:12 +00:00
Richard Barry
e0d9a274e2 Demo project only:
Added comprehensive demo including FreeRTOS+CLI to the Cyclone V SoC project.
2014-10-01 17:28:42 +00:00
Richard Barry
d269f2027a Demo project only: Cyclone V SoC now running from external RAM. 2014-10-01 09:30:35 +00:00
Richard Barry
e2f2cfa816 Added project for Altera Cyclone V SoC, currently running from internal RAM. 2014-09-30 15:32:19 +00:00
Richard Barry
3b0854bf96 Core kernel code:
+ Introduce xSemaphoreGenericGiveFromISR() as an optimisation when giving semaphores and mutexes from an interrupt.

Demo applications:
+ Update IntSemTest.c to provide more code coverage in xSemaphoreGenericGiveFromISR().
+ Ensure the MMU is turned on in the RZ IAR demo.  It was already on in the RZ ARM demo.
2014-09-16 14:54:32 +00:00
Richard Barry
b3c040fc27 SAM4L tickless implementation: Bug fix and update the demo project to exercise the fix. 2014-09-16 12:24:14 +00:00
Richard Barry
4f03f7d1bb Demo project only:
Add the new IntSem test/demo code into the MSVC demo project.
2014-09-12 11:32:47 +00:00
Richard Barry
b6e4854f26 Demo tasks only, with the aim of improving test coverage:
+ Split out the code that uses a mutex from an interrupt from GenQTest.c and add to new common demo task IntSemTest.c.
2014-09-11 12:06:27 +00:00
Richard Barry
d55e7e77a2 Update version number to 8.1.2 after moving the defaulting of configUSE_PORT_OPTIMISED_TASK_SELECTION into individual port layers so it does not affect ports that do not support the definition. 2014-09-02 22:39:54 +00:00
Richard Barry
33cc3a292b Demo code only:
Add the IntQ standard test to the SAM4S project.
2014-09-02 16:06:57 +00:00
Richard Barry
99229b597b Correct potential compiler warning when configUSE_MUTEXES is set to 0.
Add comments.
2014-08-30 20:18:18 +00:00
Richard Barry
a60ce58731 Update version number to 8.1.1 for patch release that re-enables mutexes to be given from an interrupt. 2014-08-29 19:14:23 +00:00
Richard Barry
ff5d3512b3 Core kernel code:
- Re-introduce the ability to give a mutex from an ISR.

Common demo code:
- Add additional tests into the GenQTest files for priority inheritance and using a mutex from an ISR.
2014-08-29 13:53:58 +00:00
Richard Barry
6507701fdf Lower the minimum stack size used by the ATSAMA5 demo. 2014-08-26 16:53:40 +00:00
Richard Barry
7d49c2190c Minor edits prior to tagging V8.1.0. 2014-08-26 16:23:09 +00:00
Richard Barry
d33a14b5fb ***IMMINENT RELEASE NOTICE***
Update version numbers ready for FreeRTOS V8.1.0 release in about 10 days.
2014-08-16 20:19:40 +00:00
Richard Barry
e491610725 Remove some irrelevant CyaSSL files. 2014-08-16 15:43:43 +00:00
Richard Barry
52e687086c Demo application related:
+ Update the RZ IAR project so it targets the RZ RSK rather than custom hardware.
+ Update the RZ ARM/DS-5 project so it targets the RZ RSK rather than custom hardware.
+ Updated RX64M demos to use the new iodefine.h naming.

Cortex-A9 port related:
+ Update IAR, ARM and GCC Cortex-A9 port layers to include a 'task exit error' function which is called if a task attempts to incorrectly exit its implementing function.
+ Moved the instruction which switches into system mode out of the restore context macro, as it is only needed when starting the first task.

Core kernel files related:
+ Ensure there are no references to the mutexes held count when mutexes are excluded from the build.
2014-08-16 14:29:39 +00:00
Richard Barry
162448f06b General maintenance - changing comments and correcting spellings only. 2014-08-04 07:57:18 +00:00
Richard Barry
60538c7480 Common demo tasks:
- Add additional tests to GenQTest.c to test the updated priority inheritance mechanism.
- Slightly increase some delays in recmutex.c to prevent it reporting false errors in high load test cases.

SAMA5D3 Xplained IAR demo:
- Remove space being allocated for stacks that are not used.
- Remove explicit enabling of interrupts in ISR handers as this is now done from the central ISR callback before the individual handers are invoked.
- Reduce both the allocated heap size and the stack allocated to each task.
- Enable I cache.
2014-08-04 07:53:20 +00:00
Richard Barry
47f895cb34 Cortex-A5 IAR port:
- Removed SAMA5 specifics from the port layer, and instead call a generic ISR callback as per Cortex-A9 ports.
2014-08-03 19:15:30 +00:00
Richard Barry
b2e739495a Cortex-A5 IAR port baseline prior to removing all SAMA5 specifics to make it generic.:
- Slight improvement to the save context macro.
- Remove some #warning remarks.
- Enable interrupts before calling the ISR handler rather than in the ISR handler.
2014-08-03 18:37:58 +00:00
Richard Barry
3a3d061cc5 Continue working on the GIC-less Cortex-A5 port for IAR:
- Add in the assert when a task attempts to exit its implementing function without deleting itself.
- Remove obsolete code from the context switch asm code (obsoleted by the fact that there is no mask register).
- Attempt to make code more generic by using definitions for additional register addresses.
2014-07-29 21:31:04 +00:00
Richard Barry
e9b5deb34a Carry on working on SAMA5D3 demo:
- Add full interrupt nesting tests.
- Add additional critical section/context switching tests.
- Set interrupt priorities so everything can run at once without any software watchdog errors.
- Re-enable interrupts in each IRQ handler.
- Add in run-time stats.
2014-07-29 21:28:22 +00:00
Richard Barry
146b46df87 SAMA5D3 demo: Add CDC driver code and use CDC to create a simple command console. 2014-07-23 21:07:03 +00:00
Richard Barry
3d007d0b4b Update CyaSSL to latest version. 2014-07-18 18:54:25 +00:00
Richard Barry
5fcd270398 Re-test Zynq demo now it is using the latest tools. 2014-07-14 14:01:07 +00:00
Richard Barry
bd9d37924d Add back Zynq demo - this time using SDK V14.2. 2014-07-14 13:00:18 +00:00
Richard Barry
96ceb9f537 Remove Zynq demo project ready to recreate the project using the 14.2 version of Xilinx's SDK. 2014-07-14 11:46:34 +00:00
Richard Barry
5b96cf6eea Add 'full' demo to the SAMA5 Xplained demo - but so far without interrupt nesting tests or CLI. 2014-07-12 20:40:33 +00:00
Richard Barry
8ad9b75810 Rename ARM_CAx_No_GIC ARM_CA5_No_GIC and add FreeRTOSConfig setting to specify the number of registers in the FPU unit. 2014-07-12 20:39:22 +00:00
Richard Barry
29336e35b5 SAMA5D3 Xplained demo blinky running. 2014-07-12 19:25:18 +00:00
Richard Barry
f4a1a7d577 Add new port layer for Cortex-A devices without the means to mask interrupt priorities. 2014-07-12 19:21:04 +00:00
Richard Barry
5b96c12e92 Start of SAMA5D3 XPlained demo. 2014-07-09 21:19:01 +00:00
Richard Barry
8aa5fa3459 Make the parameters to vPortDefineHeapRegions() const.
Add additional asserts to the Keil CM3 and CM4F ports (other CM3/4 ports already updated).
Add the additional yield necessitated by the mutex held count to the case when configUSE_QUEUE_SETS is 0.
2014-07-04 13:17:21 +00:00
Richard Barry
4fe2abc792 Update the MSVC simulator demo to demonstrate heap_5 allocator and pdTICKS_TO_MS macro being used. 2014-07-03 16:49:29 +00:00
Richard Barry
d96dc2adb0 Simply some of the alignment calculations in heap_4.c to match those used in heap_5.c.
Remove some apparently obsolete code from xTaskPriorityDisinherit() (a task cannot be both blocked and giving bac a mutex at the same time].
Update the new "mutex held count" increment and decrement functions to allow mutexes to be created before the scheduler is started.
2014-07-03 14:44:37 +00:00
Richard Barry
b0ba273489 Check in the portable.h version required to use heap_5.c. 2014-07-02 10:20:35 +00:00
Richard Barry
4b26dc0614 Check in the new memory allocator that allows the heap to span multiple blocks. 2014-07-02 10:19:49 +00:00
Richard Barry
5e47df8c01 Update FreeRTOS+ components and demos to use typedef names introduced in FreeRTOS V8. 2014-06-20 20:15:20 +00:00
Richard Barry
4ce4de750a Update timer demo in PIC32MZ demo to remove multiple extern definition created by adding in the macro that checks non ISR safe functions are not called from ISRs. 2014-06-16 13:07:01 +00:00
Richard Barry
42b1688a30 Implementation of mutex held counting in tasks.c - needs optimisation before release. 2014-06-16 12:55:50 +00:00
Richard Barry
583b144bc3 Default the definition of portASSERT_IF_IN_ISR() to nothing if it is not defined.
Helper updates to allow a count of the number of mutexes held to be added.
Updates to the CCS Cortex-R4 implementation necessitated by a change in compiler semantics.
Update PIC32MX and MZ ports to assert if a non ISR safe function is called from an ISR.
2014-06-16 12:51:35 +00:00
Richard Barry
b4659d8872 Add code to assert() if non ISR safe API function is called from ISR in Tasking CM4F ports - plus fix bug where the max syscall interrupt priority was used incorrectly in the Tasking CM4F port. 2014-06-15 09:24:08 +00:00
Richard Barry
113220628f Add code to assert() if non ISR safe API function is called from ISR in IAR and GCC CM3 and CM4F ports - Keil and tasking to follow. 2014-06-14 13:56:25 +00:00
Richard Barry
4723209074 Simplify the assert that checks if a non-ISR safe function is called from an ISR in the GCC Cortex-A9 port. 2014-06-13 14:08:28 +00:00
Richard Barry
d45f18cc8d Add additional comments to the Zynq lwIP demo. 2014-06-13 14:06:43 +00:00
Richard Barry
8426eba8e7 Added portASSERT_IF_IN_INTERRUPT() macro to the GCC Cortex A9 port layer. 2014-06-12 16:28:56 +00:00
Richard Barry
de7df3cfda Zynq demo: Fix Xilinx network driver by deferring the function that allocated memory from the interrupt into a task. Add DHCP option. 2014-06-12 16:27:35 +00:00
Richard Barry
f1a0534a56 Remove some of the lwip asserts to allow use with 64-bit alignment. 2014-06-10 16:29:32 +00:00
Richard Barry
7fa64efeeb Switch to using the private watchdog as the run time stats timer in the Zynq demo. 2014-06-10 16:25:46 +00:00
Richard Barry
2f6cb8a86c Reorganise Zynq project after spitting lwIP example into a separate configuration. 2014-06-09 20:20:23 +00:00
Richard Barry
e92795bcc8 Move the Zynq's lwIP example from the Full demo into its own configuration as having the lwIP tasks at a high priority made the self checking test tasks report failures, while having the lwIP tasks at a low priority slugged the throughput. 2014-06-09 19:35:08 +00:00
Richard Barry
be8b0ed21d Update lwIP byte alignment to make Zynq pings more reliable. 2014-06-09 12:43:18 +00:00
Richard Barry
16ff69e873 Update RL78 GCC demo application after testing with fixed compiler. 2014-06-05 12:44:38 +00:00
Richard Barry
9efb5c8b2f Check in RL78 GCC port layer now it has been verified with the fixed compiler. 2014-06-05 12:42:49 +00:00
Richard Barry
5cbab67186 Complete RX64M GCC demo. 2014-06-04 09:19:16 +00:00
Richard Barry
1130a53ec8 Reverse order of projdefs.h and FreeRTOSConfig.h includes in FreeRTOS.h to allow addition of pdMS_TO_TICKS() macro.
Update RXv2 GCC port to match RXv2 Renesas port.
2014-06-04 09:17:14 +00:00
Richard Barry
5cd0b1e5ef Add -nomessage command line option to RX64M demo to suppress warning about the yield function being defined when it is not called directly. 2014-05-29 13:56:16 +00:00
Richard Barry
f46070dc79 Ensure demo app files are using FreeRTOS V8 names - a few were missed previously. 2014-05-29 13:54:15 +00:00
Richard Barry
ef254df85f A few additional casts to keep the Renesas RX compiler happy. 2014-05-29 13:39:48 +00:00
Richard Barry
74ffdb0b89 Add lwIP driver into Zynq demo - not yet fully functional. 2014-05-23 16:38:18 +00:00
Richard Barry
09a89763ee Add brackets in lwIP assert statement to prevent compiler warnings. 2014-05-23 16:36:49 +00:00
Richard Barry
b215310e63 Add some missing volatiles to __asm statements in the CA9 GCC port. 2014-05-19 13:14:02 +00:00
Richard Barry
0bb794301a Update version number ready for release. 2014-04-24 14:26:36 +00:00
Richard Barry
911e82a909 Add xQueueGetMutexHolder() to MPU functions. 2014-04-24 12:29:40 +00:00
Richard Barry
f25503977e Event Groups: Convert the 'clear bits from ISR' function into a pended function to fix reentrancy issue.
Event Groups: Ensure the 'wait bits' and 'sync' functions don't return values that still contain some internal control bits.
2014-04-23 15:23:54 +00:00
Richard Barry
fa7222ab4a Update demos that use FreeRTOS+FAT SL to have correct version numbers after the update of FreeRTOS+FAT SL itself. 2014-04-23 14:34:49 +00:00
Richard Barry
03c95b5950 Update IAR XMC4200 project to fix link error that resulted from updating the IAR version to 7.x. 2014-04-23 13:59:56 +00:00
Richard Barry
a46f251d11 Update FreeRTOS+FAT SL to version 1.0.1. 2014-04-23 13:28:21 +00:00
Richard Barry
6af9b013eb Ensure xNewLib_reent is reclaimed when a task is deleted. 2014-04-09 09:07:19 +00:00
Richard Barry
82207ebffa Add test and correct code for the unusual case of a task using an event group to synchronise only with itself.
Add critical sections around call to prvResetNextTaskUnblockTime() that can occur from within a task.
2014-03-31 02:12:17 +00:00
Richard Barry
ef7f3c5320 Add the pcTimerGetTimerName() API function. 2014-03-28 14:41:15 +00:00
Richard Barry
887fcd04f4 Add interrupt nesting test code into RX64M demo. 2014-03-28 13:05:29 +00:00
Richard Barry
42cbd6a778 Add RSK definition and LED flash tasks into RX64M demo. 2014-03-28 11:47:40 +00:00
Richard Barry
29a08b5e24 Update Cortex-A port layers to ensure the ICCRPR and ICCPMR registers are always accessed as 32-bit values. 2014-03-25 17:12:31 +00:00
Richard Barry
d59bf60ff9 Started to create RX64M GCC project - building but not yet converted to new core. 2014-03-20 12:04:49 +00:00
Richard Barry
6fe7e7ef67 Delete old RL78 launch configurations. 2014-03-19 16:45:53 +00:00
Richard Barry
7f7ad3d081 Add RL78/L1C configuration into e2studio demo. 2014-03-19 16:44:58 +00:00
Richard Barry
2283bfb0ae RL78/L1C configuration added to the IAR RL78 demo projects. 2014-03-19 13:29:11 +00:00
Richard Barry
a5f00caf16 Working but incomplete RXv2 demo. 2014-03-07 17:13:05 +00:00
Richard Barry
05a0e4379e First pass at RXv2 port layer. 2014-03-07 17:12:06 +00:00
Richard Barry
3788026636 RXv1 tests running before updating to RXv2. 2014-03-06 12:46:16 +00:00
Richard Barry
b17ab311af Start to create an RX64M demo. 2014-03-03 16:39:41 +00:00
Richard Barry
9bd5e5cf03 Cast away a few unused return types to ensure lint/compilers don't generate warnings when the warning level is high. 2014-02-23 20:01:07 +00:00
Richard Barry
c8953a68cd Add extra #error message as a configuration sanity check. 2014-02-19 13:08:34 +00:00
Richard Barry
ba6d285ea8 Minor updates to ensure all kernel aware debuggers are happy with V8. 2014-02-19 11:58:52 +00:00
Richard Barry
e101e7e437 Update version number to V8.0.0 (without the release candidate number). 2014-02-18 14:01:57 +00:00
Richard Barry
38ae9b76bc Add logic to determine the tick timer source and vector installation into the PIC32MZ port assembly file to allow more efficient interrupt entry. 2014-02-18 10:10:32 +00:00
Richard Barry
c3dd6f6593 Add event group code to the PIC32MZ demo. 2014-02-18 10:08:33 +00:00
Richard Barry
0f6b699eef Linting. 2014-02-17 19:41:29 +00:00
Richard Barry
a2089bbcf6 Add #define INCLUDE_eTaskGetState 1 to the demos that use the int queue test. 2014-02-17 19:32:20 +00:00
Richard Barry
2346014918 Update final demos that use the trace recorder code to use the new version. 2014-02-17 15:11:16 +00:00
Richard Barry
33e11c72c3 Update LPC1830 example to use the latest trace recorder code. 2014-02-17 14:18:00 +00:00
Richard Barry
d6da7b1231 Remove test of trace functions from the Win32/GCC build as it messes up the trace recorder. 2014-02-17 12:56:05 +00:00
Richard Barry
0ccfdd1021 Remove test of trace functions from the Win32 build as it messes up the trace recorder. 2014-02-17 12:48:18 +00:00
Richard Barry
04ae37ef12 Update trace recorder to include heap tracing and new v8 features. 2014-02-17 12:45:56 +00:00
Richard Barry
853696a991 Add event groups demo to SAM4E demo. 2014-02-16 22:03:39 +00:00
Richard Barry
b7eb76904a Add event group tests to IAR LM3S demo. 2014-02-16 21:47:07 +00:00
Richard Barry
e4dbc6b770 Make xEventGroupSetBitsFromISR() a function when configUSE_TRACE_FACILITY is enabled to allow the inclusion of a trace macro. 2014-02-14 11:07:25 +00:00
Richard Barry
b96016e234 Follow instructions on http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx to manually prevent MSVC from incorrectly reporting the MSVC demo project as being out of date. 2014-02-11 15:15:36 +00:00
Richard Barry
5a2a8fc319 Update the demo directory to use the version 8 type naming conventions. 2014-02-11 12:04:59 +00:00
Richard Barry
c6d8892b0d Replace xTaskIsTaskSuspended() call with eTaskGetState() call in IntQueue.c as the former is now a private function. 2014-02-11 11:38:33 +00:00
Richard Barry
4f01401c00 Add a small amount of randomisation into the Zynq demo. 2014-02-11 11:37:42 +00:00
Richard Barry
0cc51d99a7 Add event groups demo to Zynq demo.
Add C implementations of some standard library functions to the Zynq demo to prevent the GCC libraries (which use floating point registers as scratch registers) being linked in.
2014-02-11 09:24:33 +00:00
Richard Barry
3eb212f454 Update IAR RL78 demo regtest tasks to make use of SKZ instructions as the latest IAR linker didn't seem to like the previous version. 2014-02-10 19:13:49 +00:00
Richard Barry
84f4ae9aa0 Make xTaskIsTaskSuspended() a private function as it should only be called from within critical sections.
Fix issue in and simplify the xTaskRemoveFromUnorderedEventList() function.  The function is new to the V8 release candidates so does not effect official released code.
2014-02-10 17:02:37 +00:00
Richard Barry
eea669240b Remove inclusion of now removed header file from the RZ/IAR LowLevelInitialise.c file. 2014-02-10 14:22:19 +00:00
Richard Barry
d4ca65f22f Third attempt: Improve how TimerDemo.c manages differences between the tick count and its own internal tick count, which can temporarily differ when the tick hook is called while the scheduler is suspended. 2014-02-10 14:21:17 +00:00
Richard Barry
660162a5b8 Update the Win32/MingW demo to match the latest Win32/MSVC demo. 2014-02-10 14:16:39 +00:00
Richard Barry
d12ec14160 Add configCLEAR_TICK_INTERRUPT() to the IAR and RVDS Cortex-A9 ports.
Replace LDMFD with POP instructions in IAR and RVDS Cortex-A9 ports.
Replace branch to address with indirect branch and exchange to address in register in the IAR and RVDS Cortex-A9 ports.
2014-02-04 17:02:52 +00:00
Richard Barry
9a8da3ff38 Second attempt: Improve how TimerDemo.c manages differences between the tick count and its own internal tick count, which can temporarily differ when the tick hook is called while the scheduler is suspended. 2014-02-04 15:51:48 +00:00
Richard Barry
03f9bbda52 Improve how TimerDemo.c manages differences between the tick count and its own internal tick count, which can temporarily differ when the tick hook is called while the scheduler is suspended. 2014-02-04 14:55:53 +00:00
Richard Barry
481db56078 Related to Zynq demo: Remove compiler warnings when configASSERT() is not defined and set the type of the assembly functions to allow them to be called when the C code is compiled to THUMB instructions. 2014-02-04 14:53:17 +00:00
Richard Barry
f843888e60 Complete GCC/Cortex-A9 port. 2014-02-04 14:49:48 +00:00
Richard Barry
c83414ccc4 Finish the Zynq demo. 2014-02-03 17:39:45 +00:00
Richard Barry
2fc4e89b98 Add in interrupt nesting test. 2014-01-30 14:45:48 +00:00
Richard Barry
d898d16c44 Check in working IntQueueTimer.c for Zynq before overhauling to ensure it conforms to the FreeRTOS style and coding standard. 2014-01-30 12:09:32 +00:00
Richard Barry
6c72f470ac Update Zynq serial.c to be interrupt driven. 2014-01-29 15:20:34 +00:00
Richard Barry
d310ac4552 Add very basic serial CLI to the Zynq demo - needs a lot of tidy up yet! 2014-01-28 17:41:28 +00:00
Richard Barry
51ea2639a9 vQueueAddToRegistry() now takes a const char * instead of a char *.
tmrCOMMAND_CHANGE_PERIOD_FROM_ISR constant added for the "FromISR" version of the software timer change period API function.
2014-01-28 12:32:03 +00:00
Richard Barry
0bf2e615b2 Uncheck the "Do not search standard system directories for header files" compiler option in two RX600 project to ensure stdint.h can be found correctly. 2014-01-27 10:33:57 +00:00
Richard Barry
6130fec60e Introduce xTimerPendFunctionCall().
Change INCLUDE_xTimerPendFunctionCallFromISR to INCLUDE_xTimerPendFunctionCall
Update event group trace macros to match the new trace recorder code.
Ensure parameter name consistency by renaming any occurrences of xBlockTime and xBlockTimeTicks to xTicksToWait.
Continue work on GCC/RL78 port - still a work in progress.
Adjust how the critical section was used in xQueueAddToSet.
2014-01-25 17:01:41 +00:00
Richard Barry
e4f495012f Fixes to FreeRTOS+UDP trace macro parameters and placements. 2014-01-25 09:50:28 +00:00
Richard Barry
888733ef79 Add main_full.c to Zynq demo. Still a work in progress. 2014-01-24 17:11:22 +00:00
Richard Barry
b352be2e23 Tidy up GCC Cortex-A port layer - still a work in progress. 2014-01-24 17:09:31 +00:00
Richard Barry
14f895478d Continue work on GCC/Cortex-A port layer. 2014-01-24 13:27:56 +00:00
Richard Barry
4c9b5d88ae Continue Zynq demo - ParTest.c now working (with single LED), but still very much a work in progress. 2014-01-24 13:27:01 +00:00
Richard Barry
1e26b1875f Remove #error that attempted to catch stdint.h not being included.
Split the previously overloaded trmCOMMAND_nnn definitions into individual definitions to enable better logging.
2014-01-23 14:51:53 +00:00
Richard Barry
d0323e67ae Continue working on GCC/CA_9 port layer - tick interrupt now working but needs tidy up. 2014-01-23 11:51:57 +00:00
Richard Barry
8cb6a4f032 Continue working on Zynq demo - tick interrupt now working but needs tidy up. 2014-01-23 11:50:48 +00:00
Richard Barry
371f6f359a Carry on working on the Zynq demo - still a work in progress. 2014-01-22 15:43:27 +00:00
Richard Barry
3e430b3801 Carry on working on the Cortex-A/GCC port layer - still a work in progress. 2014-01-22 15:39:58 +00:00
Richard Barry
33351b02c9 Beginnings of a project to build the GCC Cortex-A port targeting a Zynq. 2014-01-20 17:55:16 +00:00
Richard Barry
86023aa5a6 Beginnings of GCC Cortex-A port - not yet completely converted from IAR version. 2014-01-20 17:53:30 +00:00
Richard Barry
d8c135e2dc Add extern 'C' to FreeRTOS.h.
Remove obsolete extern declaration of vTaskSwitchContext() from the MPX430X IAR portmacro.h (other older portmacro.h header files contain the same declaration).
2014-01-17 09:45:02 +00:00
Richard Barry
a1b8079df1 Introduce configENABLE_BACKWARD_COMPATIBILITY to allow the #defines that provide backward compatibility with FreeRTOS version prior to V8 to be optionally omitted. 2014-01-13 20:26:47 +00:00
Richard Barry
f01bf9fdc3 Add additional NOP after EINT instruction in MSP430 ports. 2014-01-10 10:38:02 +00:00
Richard Barry
a20e75082e Remove obsolete OpenOCD driver. 2014-01-05 20:41:34 +00:00
Richard Barry
1aaa80fba6 Map portTICK_RATE_MS to portTICK_PERIOD_MS. 2014-01-05 20:40:55 +00:00
Richard Barry
a56d4b998c Minor tidy ups that don't effect code generation, plus:
When a task is unblocked the need for a context switch is only signalled if the unblocked task has a priority higher than the currently running task, instead of higher than or equal to the priority of the currently running task.
2014-01-05 20:12:20 +00:00
Richard Barry
723682f1dd Minor comment corrections prior to tagging. 2013-12-31 21:30:30 +00:00
Richard Barry
a8836b5c43 Change version numbers ready for V8.0.0 release candidate 1 tag. 2013-12-31 20:10:09 +00:00
Richard Barry
a44a6fbaeb Add link to upgrading information. 2013-12-31 19:15:00 +00:00
Richard Barry
3705435417 Add the event group interrupt tests to the Win32 demo projects. 2013-12-31 19:10:11 +00:00
Richard Barry
8ae3d489fe Comment the event groups standard demo files. 2013-12-31 19:07:31 +00:00
Richard Barry
2aa19f1a14 Add xEventGroupClearBitsFromISR() and xEventGroupGetBitsFromISR() functions.
Move some types defines out of generic kernel headers into feature specific headers.
Convert the function prototype dypedefs to the new _t naming.
2013-12-31 16:45:49 +00:00
Richard Barry
38e7554138 Update FreeRTOS+ more demos that use FreeRTOS+CLI to remove casting to int8_t * from strings. 2013-12-30 19:32:29 +00:00
Richard Barry
31609c7c3e Update FreeRTOS+ demos that use FreeRTOS+CLI to remove casting to int8_t * from strings. 2013-12-30 16:07:34 +00:00
Richard Barry
42a2338f1c Update demos that use FreeRTOS+CLI to remove casting to int8_t * from strings. 2013-12-30 14:06:57 +00:00
Richard Barry
e95b482f56 Minor updates to demo projects to ensure correct building with V8 rc1. 2013-12-30 11:24:34 +00:00
Richard Barry
f9072e7bac Remove casting from definition of configMAX_PRIORITIES to allow its use in pre-processor defined conditional compilation. 2013-12-30 08:02:11 +00:00
Richard Barry
e4965ca03c Minor updates to demo projects to ensure correct building with V8 rc1. 2013-12-30 07:54:46 +00:00
Richard Barry
2b6eb1c5ab Revert some library files back to using standard types as they are not FreeRTOS files. 2013-12-29 14:55:55 +00:00
Richard Barry
b54158d1dc Replace use of legacy portTYPE macros from old demos and standard demo files. 2013-12-29 14:49:03 +00:00
Richard Barry
3e20aa7d60 Replace standard types with stdint.h types.
Replace #define types with typedefs.
Rename all typedefs to have a _t extension.
Add #defines to automatically convert old FreeRTOS specific types to their new names (with the _t).
2013-12-29 14:06:04 +00:00
Richard Barry
f292243dcf Change 'signed char *pcTaskName) to 'char *pcTaskName' in vApplicationStackOverflowHook(). 2013-12-27 16:30:19 +00:00
Richard Barry
3517bbdcce Remove unnecessary 'signed char *' casts from strings that are now just plain char * types in the FreeRTOS-Plus directory. 2013-12-27 16:23:07 +00:00
Richard Barry
653fdb81d5 Continue to remove unnecessary 'signed char *' casts from strings that are now just plain char * types. 2013-12-27 15:49:59 +00:00
Richard Barry
da93f1fc4b Start to remove unnecessary 'signed char *' casts from strings that are now just plain char * types. 2013-12-27 14:43:48 +00:00
Richard Barry
b4116a7c7d Change the type used for strings and single characters from signed char to just char. 2013-12-27 12:10:23 +00:00
Richard Barry
b3aa1e90ad Add additional const qualifiers. 2013-12-24 11:55:38 +00:00
Richard Barry
6179690dc9 Don't free xQueue->ucHead if it is NULL. 2013-12-24 10:47:52 +00:00
Richard Barry
a3c2f45116 Move the event groups single tasks test out of the common demo file (they are now part of the module tests). 2013-12-23 18:13:29 +00:00
Richard Barry
c861e3883d Add coverage test markers. 2013-12-23 18:11:15 +00:00
Richard Barry
64ad1c00b5 In process of module testing event_groups.c.
Introduce xPortRunning variable into Win32 simulator port layer.
Add port optimised task selection macro for the GCC Win32 port layer (the MSVC version has had one for a while).
Ensure the event list item value does not get modified by code in tasks.c (priority inheritance, or priority change) when it is in use by the event group implementation.
2013-12-23 16:02:03 +00:00
Richard Barry
0147415c40 Change some task priorities in the MingW simulator demo. 2013-12-20 11:35:16 +00:00
Richard Barry
39b2d049a6 Update GCC/Eclipse Win32 simulator port to make better use of Eclipse resource filters and match the functionality of the MSVC equivalent. 2013-12-19 13:40:37 +00:00
Richard Barry
4b2f9dad42 Force the SysTick clock bit to be set in Cortex-M3 and Cortex-M4F bits if configSYSTICK_CLOCK_HZ is not defined, otherwise leave the bit as it is found as the SysTick may use a divided clock. 2013-12-15 10:27:37 +00:00
Richard Barry
040a7c02df Change the configCPU_CLOCK_HZ setting in the SAM4E demo to use the SystemCoreClock variable. 2013-12-15 10:17:02 +00:00
Richard Barry
a320d6dffd Update the ucQueueNumber member of the queue structure (used with FreeRTOS+Trace to be an unsigned portBASE_TYPE instead of an unsigned char. 2013-12-14 13:16:05 +00:00
Richard Barry
c17c65fc09 Introduce prvResetNextTaskUnblockTime() to encapsulate functionality from various places in the code into a single function. 2013-12-13 10:35:11 +00:00
Richard Barry
acad916453 Change the way one thread deletes another in the Windows simulator port (the way one thread deleted itself was already changed in a previous check-in).
Reset the expected block time variable when a task is suspended or deleted in case the value held in the variables was associated with the task just suspended or deleted.
2013-12-12 16:07:24 +00:00
Richard Barry
0d1e12522b Update Cortex-M3 and Cortex-M4F ports to allow the SysTick to be clocked at a different speed than the system clock (as is done in the recent STM32L demo. ).
Add additional asserts and isb instructions into the Cortex-M3 and Cortex-M4F ports.
2013-12-12 14:07:20 +00:00
Richard Barry
6b3393b4b6 Add trace macros into the event groups implementation.
Add a task pre-delete hook to allow the insertion of any port specific clean up when a task is deleted.
Increase use of 'const' qualifiers.
Add vPortCloseRunningThread() into the Win32 port layer to attempt to allow Windows threads to be closed more gracefully when a task deletes itself.
2013-12-12 10:19:07 +00:00
Richard Barry
0416289066 Comment typo correction only. 2013-12-11 17:56:07 +00:00
Richard Barry
ed54bc497d Complete STM32L low power demo. 2013-12-11 11:35:03 +00:00
Richard Barry
4b655ac3bb Remove [unused] touch library files from the STM32L discovery demo. 2013-12-11 10:46:17 +00:00
Richard Barry
0028cc48c1 Remove unused files from STM32L discovery board demo directory structure and build. 2013-12-10 17:16:45 +00:00
Richard Barry
751103d848 Tidy up STM32L low power demo and add 'comprehensive demo' option. 2013-12-10 16:20:43 +00:00
Richard Barry
5638fe28a2 Remove duplication of comments at the top of the file. 2013-12-10 11:24:41 +00:00
Richard Barry
3d00d47239 STM32L discovery demo is now demonstrating three low power modes - still needs clean up. 2013-12-10 10:07:53 +00:00
Richard Barry
9001b7b77a Minor change to SAM4L_low_power_tick_management.c to ensure the alarm value cannot be set to zero. 2013-12-08 06:32:38 +00:00
Richard Barry
e682aec507 Spelling corrections in comments only. 2013-11-28 13:24:05 +00:00
Richard Barry
00ad1a0200 Multiple tidy up, documentation corrections and typo corrections highlighted by Tamas Kleiber's diligent review. 2013-11-28 10:48:33 +00:00
Richard Barry
2e42d7690a Continue work on new event groups functionality - fixups required by test results. 2013-11-27 20:29:33 +00:00
Richard Barry
d2c2e3ca68 Add additional asserts() to ensure certain operations are not performed when the scheduler is suspended.
Change the xBlockTime variables in event_groups.c/h to xTicksToWait to match the naming in other core FreeRTOS files.
2013-11-24 10:11:16 +00:00
Richard Barry
5037ecdc5c Checked in header file missed form previous checkin. 2013-11-22 11:05:24 +00:00
Richard Barry
9dc39ee2a7 Add additional event group tests - and update implementation as required by test results. 2013-11-22 10:58:25 +00:00
Richard Barry
a22d5ff5a5 Add event groups test/demo tasks. 2013-11-21 22:08:06 +00:00
Richard Barry
f54f21b8f6 Add event_groups.c and associated functions in other core files.
Added xTimerPendCallbackFromISR() to provide a centralised deferred interrupt handling mechanism.
Add xPortGetLowestEverFreeHeapSize() to heap_4.c.
2013-11-21 21:46:08 +00:00
Richard Barry
faed443e82 Continue work on STM32L demo. 2013-11-21 16:08:11 +00:00
Richard Barry
b89fd7c1e3 Add STM32L Discovery board project as a starting point to adapt to an RTOS demo. 2013-11-20 13:33:30 +00:00
Richard Barry
417c3d1054 Change backslashes to forward slashes for all PIC projects. 2013-11-18 16:00:27 +00:00
Richard Barry
ad67be1577 Tidy up SAM4E NetworkInterface.c. 2013-11-17 22:19:54 +00:00
Richard Barry
c6020ae8b4 Change conf_eth.h to provide additional Rx buffers in SAM4E demo. 2013-11-17 22:15:45 +00:00
Richard Barry
fa002f7fdd Final tidy up before V7.6.0 zip file creation. 2013-11-17 15:46:08 +00:00
Richard Barry
8cd71348be Make SAM4E network driver a little more robust. 2013-11-17 15:42:08 +00:00
Richard Barry
c2bfac68b3 Add link to documentation page inside main_full() of the SAM4E demo. 2013-11-17 15:40:56 +00:00
Richard Barry
0cbd5182a3 Add additional comments to SAM4E demo. 2013-11-17 14:14:22 +00:00
Richard Barry
6be1ffccfb Update version numbers in FreeRTOS-Plus demo files. 2013-11-17 14:12:41 +00:00
Richard Barry
cbb14d30c5 Add basic SAM4E driver.
Add ipconfigETHERNET_DRIVER_ADDS_UDP_CHECKSUM, ipconfigETHERNET_DRIVER_ADDS_IP_CHECKSUM, ipconfigETHERNET_DRIVER_CHECKS_IP_CHECKSUM and ipconfigETHERNET_DRIVER_CHECKS_UDP_CHECKSUM definitions.
2013-11-17 14:09:17 +00:00
Richard Barry
0865907f3f Add graphics to the SAM4E demo. 2013-11-16 22:33:51 +00:00
Richard Barry
9e9f9f30b1 Add UDP related commands to SAM4E demo. 2013-11-16 19:19:18 +00:00
Richard Barry
b690b26861 Add standard demo tasks to SAM4E demo. 2013-11-16 18:06:57 +00:00
Richard Barry
dc2e20bb0a Add SAM4E-EK demo with UDP and CLI. Not yet complete. 2013-11-16 13:27:44 +00:00
Richard Barry
a37b947615 Reorder the license text wording so the exception text is at the top rather than the bottom. 2013-11-12 17:26:08 +00:00
Richard Barry
a2cfaa7cd9 Correct build of helper function for ports where the stack grows up. 2013-11-12 13:06:18 +00:00
Richard Barry
8320dfb885 Update the SAM4L low power demo to use the ASF enable/disable interrupts functions rather than manipulating the PIRMASK directly - and in so doing allow other ASF functions to be called with the interrupt enable bit nesting. 2013-11-11 14:49:36 +00:00
Richard Barry
0cd79ad81d Change version numbers in preparation for V7.6.0 release. 2013-11-08 11:47:35 +00:00
Richard Barry
c44d12dadb Ensure the Win32 demo runs in co-operative mode. 2013-11-08 10:11:46 +00:00
Richard Barry
b1b4b15353 Add configASSERT()s to ensure counting semaphores are not created with a max count of zero or an initial count greater than the max count. 2013-11-07 16:45:30 +00:00
Richard Barry
b181a3af99 Ensure the definition of prvTaskExitError()does not result in a compiler warning in ports where its use can be overridden (GCC Cortex-M ports).
Remove duplicate save/restore of r14 in Cortex-M4F ports.
2013-11-07 16:43:54 +00:00
Richard Barry
20eb03ed7d Change behaviour when configUSE_PREEMPTION is 0 (preemption is turned off). See the change history in the next release for details.
Remove an erroneous const in the prototype of queue receive/peek functions.
2013-11-07 14:58:14 +00:00
Richard Barry
30bc6c01a9 Add ehb instructions back into PIC32 port layer (upon advice).
Add configCLEAR_TICK_TIMER_INTERRUPT into PIC32 port layer to allow the timer configuration to be changed without any edits to the port layer being required.
Add prvTaskExitError() into the PIC32 port layer to trap tasks that attempt to exit from their implementing function.
Provide the ability to trap interrupt stack overflows in the PIC32 port.
Radically improve the timing in the Win32 simulator port layer.
2013-11-07 14:16:32 +00:00
Richard Barry
40d2e74417 Update some standard demo task implementations so they can be used with the cooperative scheduler. 2013-11-07 14:04:05 +00:00
Richard Barry
5aabe4f8fb Update semtest.c to use xSemaphoreCreateBinary() in place of vSemaphoreCreateBinary. 2013-11-07 11:11:18 +00:00
Richard Barry
dcf261a3e6 Add xSemaphoreCreateBinary() so vSemaphoreCreate() can be deprecated. 2013-11-07 10:53:23 +00:00
Richard Barry
ca2191c6ee Ensure PIC32MX MPLAB 8 project builds with XC. 2013-11-07 10:16:15 +00:00
Richard Barry
9a0f2bda55 Update PIC32 MPLAB8 project so it builds with the new partest file names. 2013-11-07 10:11:06 +00:00
Richard Barry
1b7a2e40a3 Update PIC32MX demo:
Change configCHECK_FOR_STACK_OVERFLOW to 3 to also check the interrupt stack.
Add a build configuration to allow use on the PIC32 USBII starter kit.
Increase some delays when talking to the LCD to ensure it always displays correctly.
Rewrite the register test tasks.
2013-11-07 09:54:13 +00:00
Richard Barry
2ee43fbc64 Set the MSVC Win32 demo back to create the simply blinky demo by default.
Set the MingW Wind32 demo back to include the #error to remind people to run the CreateProjectDirectoryStructure batch file.
2013-10-29 12:40:12 +00:00
Richard Barry
73df0ffdff Update the Eclipse/MingW project to account for the new Win32 simulator port layer (which has better timing). 2013-10-29 12:32:04 +00:00
Richard Barry
6642926d43 Update the FreeRTOS+ Win32 MSVC demos to account for the changes to the Win32 port layer (more accurate timing). 2013-10-29 11:43:41 +00:00
Richard Barry
15d10ce094 Update the main Win32 MSVC demo to account for the changes to the Win32 port layer (more accurate timing). 2013-10-29 11:14:54 +00:00
Richard Barry
aa9ec31ba9 Add missing header file to the UDP BufferAllocation_1.c scheme. 2013-10-26 13:34:50 +00:00
Richard Barry
e46fe7c049 Second attempt - Ensure the private port number wrap check is inside the critical section in prvGetPrivatePortNumber() (UDP). 2013-10-23 13:59:51 +00:00
Richard Barry
818abc468d Ensure the private port number wrap check is inside the critical section in prvGetPrivatePortNumber() (UDP).
Add missing default values for some of the trace macros.
2013-10-23 10:28:17 +00:00
Richard Barry
63bd3ebbef Remove the SVC handler from the XMC1000 demo as it is no longer used by the Cortex-M0 port layer. 2013-10-22 11:27:43 +00:00
Richard Barry
dcd261bb8b Update the Keil and IAR CM0 port layers to match the changes made to the GCC version. 2013-10-22 11:26:16 +00:00
Richard Barry
7bcbef721b Remove the SVC handler from the SAMD20 FreeRTOSConfig.h as the GCC Cortex-M0 port no longer uses it. 2013-10-22 10:58:23 +00:00
Richard Barry
41fe693968 Improve how the scheduler is started in the GCC Cortex-M0 port. 2013-10-22 09:50:20 +00:00
Richard Barry
f64acd6a48 Added an additional configASSERT() to test the new eTaskGetState() behaviour (see previous checking comment). 2013-10-22 09:33:49 +00:00
Richard Barry
25bab250b6 Added a little intelligence to eTaskGetState() so it can distinguish between a suspended task and a task that is indefinitely blocked on an event. 2013-10-22 09:30:58 +00:00
Richard Barry
bafda11518 Remove maths library dependency form SAMD20 project. 2013-10-14 20:12:48 +00:00
Richard Barry
a12ea2d212 Update FreeRTOS version number to V7.5.3
Update FreeRTOS+CLI version number to V1.0.2
Update FreeRTOS+UDP version number to V1.0.1
2013-10-14 19:56:47 +00:00
Richard Barry
6280324778 Add a configASSERT() that checks the gateway address is on the same subnet as the device in FreeRTOS+UDP. 2013-10-14 14:35:53 +00:00
Richard Barry
94607d83f9 Add workaround to XMC4000 silicon bug to Tasking Cortex-M4F port layer. 2013-10-14 14:03:05 +00:00
Richard Barry
c1353bb12d Complete XMC4000 Tasking project. 2013-10-14 13:46:47 +00:00
Richard Barry
b887737c34 Fix broken link in Atmel Studio SAMD20 project. 2013-10-12 10:09:10 +00:00
Richard Barry
c09f6e6a9b Increase minimal stack size for the SAMD20 demo. 2013-10-09 18:46:08 +00:00
Richard Barry
dcea05a81c Complete tidy up of SAMD20 demo. 2013-10-09 13:26:34 +00:00
Richard Barry
41a1dc62b7 Complete SAMD20 demo - still needs tidy up.
Add comments to the XMC1000 reg test files.
2013-10-08 15:56:06 +00:00
Richard Barry
0c56f5018d Add some defensive programming in the default tickless mode in case the application supplied post tick hook takes a long time to complete. 2013-10-08 12:33:46 +00:00
Richard Barry
aedf7824cb Introduce the prvTaskExitError() function for all ARM_CMn ports.
Introduce the configTASK_RETURN_ADDRESS macro for the GCC ARM_CMn ports.
Improve time slippage penalty when entering tickless mode is abandoned.
2013-10-08 11:30:40 +00:00
Richard Barry
81e141ad86 Ensure the statically configured gateway address is on the same subnet. 2013-10-08 09:08:29 +00:00
Richard Barry
e2afb24747 Take out nonsensical #if configMAC_INTERRUPT_PRIORITY > configMAC_INTERRUPT_PRIORITY check from the LPC18xx Ethernet driver. 2013-10-07 20:17:28 +00:00
Richard Barry
0c849fa597 Update FreeRTOS_FD_SET() to check there is enough space in the queue before adding the socket to the socket set. 2013-10-07 20:13:02 +00:00
Richard Barry
10fa546e60 Make corrections to the interrupt priority configuration in the LPC1800 UDP demo that resulted from an incorrect NVIC_PRIOR_BITS setting in the LPC18xx.h header file. 2013-10-07 16:49:31 +00:00
Richard Barry
eaacbb099a Clear up a few compiler warnings.
Correct header comments in the UARTCommandConsole.c file used in the SmartFusion2 demo.
Exercise the new xQueueSpacesAvailable() function in the MSVC demo.
Add defaults for the new traceMALLOC and traceFREE trace macros.
Catch tasks trying to exit their functions in the Cortex-M0 ports.
Add additional comments to timers.c in response to a support forum question.
Initialise _impure_ptr prior to the first task being started.
Prior to V7.5.0 a yield pended in the tick hook would have occurred during the same tick interrupt.  Return pdTRUE from xTaskIncrementTick() if a yield is pending to revert to that behaviour.
2013-10-07 12:06:17 +00:00
Richard Barry
be44f8aaa7 Improve DCHP handling by removing the yiaddr field from outgoing DHCP packets and adding the broadcast bit in the flags field.
Correct the check to ensure the application network event hook is not called when the first network down event is sent.
Add in defaults for the Nabto task stack and priority.
2013-10-07 11:49:17 +00:00
Richard Barry
7ec4773131 Add traceMALLOC() and traceFREE() macros. 2013-10-04 20:56:45 +00:00
Richard Barry
23fa077241 Complete CLI demo on SAMD20. 2013-10-03 15:41:33 +00:00
Richard Barry
8ffa1b1736 Get CLI functioning in SAMD20 demo. 2013-10-02 14:24:38 +00:00
Richard Barry
013a3ef944 Starting point for the SAMD20 demo. 2013-10-02 10:41:40 +00:00
Richard Barry
111283a9b2 Finalise XMC4000 GCC demos. 2013-10-01 12:47:27 +00:00
Richard Barry
0185643b39 Finalise XMC4000 IAR demos. 2013-10-01 10:10:15 +00:00
Richard Barry
1e248417bc Finalise XMC4000 Keil demos. 2013-10-01 09:53:12 +00:00
Richard Barry
db1a5f1553 Add the configUSE_STATS_FORMATTING_FUNCTIONS parameter to a couple of FreeRTOSConfig.h header files that got missed out when the parameter was introduced. 2013-09-17 09:48:51 +00:00
Richard Barry
988b0c1678 Remove the math library as a build dependency in the SAM4L demo. 2013-09-17 09:05:31 +00:00
Richard Barry
e3b5f36c3a Move the #error message about running the CreateProjectDirectoryStructure batch file from FreeRTOSConfig.h to main.c so it shows when the batch file has not been executed (XMC4000 Dave and Tasking projects). 2013-09-10 13:58:09 +00:00
Richard Barry
1902d2b64a Add the uxQueueSpacesAvailable() API function.
Move a configASSERT() call in timers.c to prevent a "condition is always true" compiler warning.
2013-09-10 13:19:12 +00:00
Richard Barry
dd3fdfa9ff Make self monitoring in QueueSet.c more robust to prevent false positives. 2013-09-10 13:09:14 +00:00
Richard Barry
c63a81af99 Enable RX62N_RDK project to build with the blink configuration. 2013-09-10 13:05:00 +00:00
Richard Barry
49c602f3df Add #error into Tasking project to remind users that they need to run the CreateProjectDirectoryStructure batch file. 2013-09-10 13:03:35 +00:00
Richard Barry
ae402434f8 Update Keil XMC1000 to later version. 2013-09-10 13:01:48 +00:00
Richard Barry
0e28ee90b6 Finalise XMC1000 GCC demos. 2013-09-10 12:54:15 +00:00
Richard Barry
42c0ae6bc8 Finalise XMC1000 IAR demos. 2013-09-10 12:24:55 +00:00
Richard Barry
a3095b89af Finalise XMC1000 Keil demos. 2013-09-10 11:35:31 +00:00
Richard Barry
8282cc0491 Finalise XMC4000 Dave/GCC demos. 2013-09-09 16:51:19 +00:00
Richard Barry
577ff0741d Finalise XMC4000 Keil demos. 2013-09-09 16:21:46 +00:00
Richard Barry
a0a96e52f2 Finalise XMC4000 IAR demos. 2013-09-09 15:55:14 +00:00
Richard Barry
41f92ced65 Add build configurations for the XMC4400 and XMC4200 to the Tasking demo project. 2013-09-05 12:00:04 +00:00
Richard Barry
77d817ffaa Update XMC4000 tasking project to use latest system files. 2013-09-05 11:37:44 +00:00
Richard Barry
7d92a29d2d Rename directories with XMC4500 in their name that now contain XMC4200 and XMC4000 build configurations to instead say XMC4000. 2013-09-04 16:06:23 +00:00
Richard Barry
117235c08a Rename directories with XMC4500 in their name that now contain XMC4200 and XMC4000 build configurations to instead say XMC4000. 2013-09-04 16:03:31 +00:00
Richard Barry
d8963209c2 Reworked XMC4500 IAR project to use latest system files and include build configurations for the XMC4200 and XMC4400 parts. 2013-09-04 15:44:48 +00:00
Richard Barry
aaf2d32011 Add XMC4200 and XMC4400 build configurations to the XMC4000 Dave project. 2013-09-04 14:22:45 +00:00
Richard Barry
6acac72ff1 Add Dave project for the XMC4500. 2013-09-04 10:43:31 +00:00
Richard Barry
d1d925ab36 Update the Keil XMC4500 demo project to include build configurations for the XMC4200 and XMC4400 application boards. 2013-09-03 15:26:05 +00:00
Richard Barry
18c4f8e622 Make the QueueSet.c standard demo task a little friendlier to lower priority tasks.
Allow the priority of the controlling task in the recmutex.c standard demo tasks to be overridden by a setting in FreeRTOSConfig.h.
2013-09-02 16:37:56 +00:00
Richard Barry
a8c2c6b3b6 Add a build configuration for the XMC1100 boot kit. 2013-09-02 16:35:54 +00:00
Richard Barry
05e0c59da8 Update RX600/Renesas compiler build configurations to use the latest compiler version. 2013-09-02 16:06:07 +00:00
Richard Barry
316b731fe9 Update RX600 blinky build configuration to include missing linker section. 2013-09-02 15:50:44 +00:00
Richard Barry
b79d3de952 Continue work on XMC1000 demos. 2013-09-01 20:06:31 +00:00
Richard Barry
73606369c4 Make Cortex-M0 set/clear interrupt flag from ISR functions nestable.
Don't reset the stack location when starting the scheduler in Cortex-M0 ports as the vector offset register is not implemented and XMC1000 devices have their application vector address somewhere other than 0x00.
2013-09-01 19:53:24 +00:00
Richard Barry
ed399e801e Add additional configASSERTS() to some standard demo tasks.
Use own rand() function in QueueSet.c to prevent library versions being referenced.
2013-09-01 19:45:06 +00:00
Richard Barry
33bd63e287 Rename CORTEX_M)_Infineion_Boot_Kits_IAR_Keil to CORTEX_M0_Infineon_XMC1000_IAR_Keil_GCC as it now contains projects for all three compilers. 2013-08-31 16:03:11 +00:00
Richard Barry
245ff12be8 Add a GCC project to the the XMC1000 demo directory. 2013-08-31 15:57:31 +00:00
Richard Barry
f9e024d7ea Move files common to IAR and Keil projects from compiler specific directories under the XMC demo directory into the XMC demo directory itself. 2013-08-31 14:36:32 +00:00
Richard Barry
9ad0c17281 Continue work on Get clock settings in Keil and IAR XMC1000 demo working. 2013-08-31 12:43:52 +00:00
Richard Barry
710a652daf Continue work on XCM1200 Keil demo. 2013-08-30 18:05:16 +00:00
Richard Barry
f0a2688200 Create full Keil project for XMC boot kit (not yet tested). 2013-08-25 17:07:56 +00:00
Richard Barry
3fe6974bf9 Starting point for XMC1000 Keil demo. 2013-08-25 01:03:56 +00:00
Richard Barry
574f5044a6 Starting point for Keil Cortex-M0 port. 2013-08-25 01:01:18 +00:00
Richard Barry
747a0e15fa Convert double quotes in a command help string to single quotes to allow the string to be processed by Javascript. 2013-08-16 13:34:28 +00:00
Richard Barry
c40370e96a Fix a few typos and remove the "register" keyword. 2013-08-16 13:31:54 +00:00
Richard Barry
63e8044d33 Allow compilation when portALT_GET_RUN_TIME_COUNTER_VALUE() is defined. 2013-08-14 08:35:40 +00:00
Richard Barry
dac40d1677 Update version numbers. 2013-07-24 10:02:19 +00:00
Richard Barry
2f754d9b0c Add additional critical section to the default tickless implementations.
Update version number for maintenance release.
2013-07-24 09:45:17 +00:00
Richard Barry
3cbe0a724d Update version number. 2013-07-23 10:51:45 +00:00
Richard Barry
8ceb665994 Void a few unused return values and make casting more C++ friendly. 2013-07-23 09:53:24 +00:00
Richard Barry
bb2093cf5d Update the header file included in the PIC32 port_asm.S file to use the header for the latest compiler version. 2013-07-23 09:50:06 +00:00
Richard Barry
679a3c670c Update the Cortex-M vPortValidateInterruptPriority() implementation to ensure compatibility with the STM32 standard peripheral library. 2013-07-23 09:44:00 +00:00
Richard Barry
f522d6a2da Remove duplicate definition from FreeRTOSConfig.h. 2013-07-23 09:36:30 +00:00
Richard Barry
9054485f1a Tidy up pre-processor as final act before tagging as V7.5.0 2013-07-19 10:22:47 +00:00
Richard Barry
08057fa77f Changes to comments only. 2013-07-19 09:16:36 +00:00
Richard Barry
203ae64600 Rename xTaskGetSystemState() uxTaskGetSystemState(). 2013-07-18 14:41:15 +00:00
Richard Barry
92fae7d262 For consistency change the name of configINCLUDE_STATS_FORMATTING_FUNCTIONS to configUSE_STATS_FORMATTING_FUNCTIONS. 2013-07-18 11:40:32 +00:00
Richard Barry
7d6758ee1a Minor updates and change version number for V7.5.0 release. 2013-07-17 18:32:57 +00:00
Richard Barry
d04c2fa753 Correct compiler warnings in trace recorder code. 2013-07-16 12:23:25 +00:00
Richard Barry
4578154959 Remove large and unnecessary .docx files. 2013-07-16 12:01:11 +00:00
Richard Barry
0fd81d6d8e Update FreeRTOS+Trace recorder code. 2013-07-16 11:55:14 +00:00
Richard Barry
7d1292ced2 Linting and MISRA checking 2013-07-15 14:27:15 +00:00
Richard Barry
e83b93f5fc Tidy up comments only. 2013-07-14 13:09:18 +00:00
Richard Barry
ce9c3b7413 Variable name change in the PIC32 port layer only. 2013-07-14 13:06:17 +00:00
Richard Barry
14a190e79e Update PIC32 serial.c slightly to add volatile qualifier and update to coding standard. 2013-07-14 08:46:15 +00:00
Richard Barry
1e17924fa8 Update doxygen comments. 2013-07-13 19:58:42 +00:00
Richard Barry
a6db135add Fix compiler warning. 2013-07-13 19:39:07 +00:00
Richard Barry
da0fff63c9 Update Cortex-M MPU version to include new API functions. 2013-07-13 19:37:35 +00:00
Richard Barry
e5d9640863 Update RX ports to only include additional check on the existing IPL (so it is not lowered) if configASSERT() is defined. 2013-07-13 11:31:35 +00:00
Richard Barry
4b964814de Implement portASSERT_IF_INTERRUPT_PRIORITY_INVALID() for PIC32. 2013-07-12 19:25:21 +00:00
Richard Barry
25310a6796 Update compiler version and add configASSERT() to PIC32 MPLAB X project. 2013-07-12 19:21:10 +00:00
Richard Barry
ad8fa53043 Kernel optimisations. 2013-07-12 11:11:19 +00:00
Richard Barry
c9d9bddc3c Add comments to the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() calls in the core queue.c and tasks.c files. 2013-07-11 10:52:43 +00:00
Richard Barry
5d902f2b9c Complete additions of portASSERT_IF_INTERRUPT_PRIORITY_INVALID() for all RX compiler ports. 2013-07-11 10:05:06 +00:00
Richard Barry
18caebf1d1 Remove commented out code. 2013-07-10 13:26:00 +00:00
Richard Barry
65704174c9 Add portASSERT_IF_INTERRUPT_PRIORITY_INVALID() implementation to the RX ports that use the Renesas compiler.
Add portASSERT_IF_INTERRUPT_PRIORITY_INVALID() implementation to the Cortex-A9 ports.
2013-07-09 17:57:59 +00:00
Richard Barry
0f6b0d3a59 Enhance heap_4.c to prevent blocks accidentally being freed twice, or blocks that don't have a valid block link descriptor being freed.
Update the Cortex-A9 port to include asserts if an ISR safe FreeRTOS function is called from an interrupt that has a higher logical priority than configMAX_SYSCALL_INTERRUPT_PRIORITY (or whatever the CA9 equivalent is called), and also assert if the binary point is not set correctly.
2013-07-09 12:49:49 +00:00
Richard Barry
4894955a08 Correct comment only. 2013-07-04 16:05:27 +00:00
Richard Barry
c4eef61d39 Added portASSERT_IF_INTERRUPT_PRIORITY_INVALID() implementation to Cortex-M3 and Cortex-M4F ports. 2013-07-04 11:20:28 +00:00
Richard Barry
b521d70e7e Remove compiler warnings. 2013-07-02 12:39:16 +00:00
Richard Barry
019c6417d7 Remove compiler warnings. 2013-07-02 12:36:24 +00:00
Richard Barry
5ad3b59783 Add the new configINCLUDE_STATS_FORMATTING_FUNCTIONS configuration parameter to FreeRTOS+ demo applications that make use of vTaskStats() or vTaskGetRunTimeStats(). 2013-07-02 12:17:26 +00:00
Richard Barry
2c242cdf78 Add the new configINCLUDE_STATS_FORMATTING_FUNCTIONS configuration parameter to FreeRTOS demo application that make use of vTaskStats() or vTaskGetRunTimeStats(). 2013-07-02 12:14:49 +00:00
Richard Barry
c1b4fc58d2 Add new xTaskGetSystemState() API function to return raw data on each task in the system.
Relegate the vTaskList() and vTaskGetRunTimeStats() functions to "sample" functions demonstrating how to use xTaskGetSystemState() to generate human readable status information.
Introduce and default configINCLUDE_STATS_FORMATTING_FUNCTIONS which must now be defined to use vTaskList() and vTaskGetRunTimeStats().
2013-07-02 12:10:16 +00:00
Richard Barry
877ce218a4 Add additional comment only. 2013-07-01 09:05:15 +00:00
Richard Barry
625b1a7159 Add the queue overwrite demo to the RZ demo. 2013-07-01 08:49:20 +00:00
Richard Barry
0c0b54c175 Refine the default tickless idle implementation in the Cortex-M3 port layers. 2013-06-30 10:38:31 +00:00
Richard Barry
08ca5dead5 Update Win32 MSVC demo to include a simple blinky build option. The demo as it was is now the "full/comprehensive" build option. 2013-06-28 10:46:29 +00:00
Richard Barry
b8a219b30c Update QueueOverwrite.c to include a call to xQueuePeekFromISR().
Default new QueuePeekFromISR() trace macros.
2013-06-28 09:21:39 +00:00
Richard Barry
3b02b4c8f8 Add xQueueOverwriteFromISR() and update the QueueOverwrite.c to demonstrate its use. 2013-06-27 14:25:17 +00:00
Richard Barry
671949ad78 Add xQueueOverwrite() and a common demo task to demonstrate its use.
Update MSVC Win32 demo to include the xQueueOverwrite() common demo tasks.
2013-06-27 09:21:43 +00:00
Richard Barry
59f75a12f6 Add Newlib reent support. 2013-06-26 11:37:08 +00:00
Richard Barry
4444b4ee68 Improve efficiency and behaviour of vListInsertEnd(). 2013-06-26 08:58:01 +00:00
Richard Barry
f11635ed91 Remove reliance on strncpy() function. 2013-06-25 14:03:02 +00:00
Richard Barry
a7c47131fa Remove portALIGNMENT_ASSERT_pxCurrentTCB() macro, which serves no purpose. 2013-06-25 13:39:50 +00:00
Richard Barry
6cbbfd2eb5 Slight correction to coding standard in heap_2.c and heap_4.c. 2013-06-25 13:25:08 +00:00
Richard Barry
fb47260e80 Improve efficiency of memory allocation when the memory block is already aligned correctly. 2013-06-25 12:20:29 +00:00
Richard Barry
87049ac37c Re-implement the LPC18xx and SmartFusion2 run time stats implementation to use the free running Cortex-M cycle counter in place of the systick.
Correct the run-time stats counter implementation in the RZ demo.
Guard against run time counters going backwards in tasks.c.
2013-06-25 10:44:44 +00:00
Richard Barry
cdae14a8cb Replace the #define that maps the uxRecursiveCallCount to the pcReadFrom pointer with a union - although this is against the coding standard it seemed the best way of ensuring complete adherence to the C standard and allow correct builds with LLVM when the optimiser is on. 2013-06-24 12:20:00 +00:00
Richard Barry
00136d4b51 Update trace recorder code in the LPC18xx project. 2013-06-23 21:11:37 +00:00
Richard Barry
d8248c49fc Remove old trace recorder source from LPC18xx project. 2013-06-23 20:38:17 +00:00
Richard Barry
0ca2110982 Split the LPC18xx FreeRTOS+UDP drivers between those that use the LPCOpen library and those that use the older CMSIS library. 2013-06-23 20:33:43 +00:00
Richard Barry
a1145a1b78 Remove DemoIPTrace.h from LPC18xx demo as it should be copied from is standard location. 2013-06-23 19:00:14 +00:00
Richard Barry
34e7cfc2a2 Back out changes to LPC18xx UDP demo. 2013-06-23 08:00:39 +00:00
Richard Barry
e6903dac61 Add extra debug comment into list.c. 2013-06-23 07:27:46 +00:00
Richard Barry
1cfb7b77e5 Add retarget.c to RVDS project to ensure semihosting is not used. 2013-06-20 14:59:11 +00:00
Richard Barry
3a507bdc0c Add missing function prototype. 2013-06-20 14:57:44 +00:00
Richard Barry
c3f9e3c5ff Update RVDS port layer to match IAR port layer. 2013-06-20 14:56:40 +00:00
Richard Barry
018f0f602a RZ RVDS and IAR projects. 2013-06-20 12:49:53 +00:00
Richard Barry
5013baa2cd RVDS ARM Cortex-A port layer. 2013-06-20 12:47:21 +00:00
Richard Barry
04dafed839 IAR ARM Cortex-A port layer. 2013-06-20 12:20:40 +00:00
Richard Barry
2fd431e971 Modify the GCC/AVR port to make use of the xTaskIncrementTick return value.
Add pre-processor directives in the dsPIC and PIC24 port layers that allows both port files to be included in the same project.
2013-06-11 20:15:15 +00:00
Richard Barry
3aad6381e1 Update RX100 project to e2studio V2 format. 2013-06-11 20:11:29 +00:00
Richard Barry
f038fd6a86 Improve the error detection in some of the standard demo tasks. 2013-06-11 18:46:00 +00:00
Richard Barry
3b004f9900 Add the APPLICATION_DEFINED port type to the trcHardwarePort.h template. 2013-06-11 16:11:21 +00:00
Richard Barry
62c0ae0926 Update port layers to make better use of the xTaskIncrementTick() return value. 2013-06-08 18:36:25 +00:00
Richard Barry
c75c01ffdf Check in implementation of xTaskIncrementTick (replaced vTaskIncrementTick()). 2013-06-08 18:30:52 +00:00
Richard Barry
c9b30b9fe7 Add MPLAB X project for PIC24.
Remove PIC24 demo warnings when XC16 is used as the compiler.
2013-06-08 18:19:50 +00:00
Richard Barry
2089f31f18 Update include paths in Rowley MSP430 project file. 2013-06-07 19:24:10 +00:00
Richard Barry
a1ef5d6fa9 Add UV4 project to old RVDS LPC2129 UV2 directory. 2013-06-07 15:23:34 +00:00
Richard Barry
59a834eb86 Update ports that have their tick configuration in an application callback to use xTaskIncrementTick() in place of vTaskIncrementTick(). 2013-06-07 12:39:56 +00:00
Richard Barry
c04b074707 Convert the remaining ports to use xTaskIncrementTick() in place of vTaskIncremenTick(). 2013-06-07 12:16:58 +00:00
Richard Barry
2fc9d033c6 Update the PIC32 port to use xTaskIncrementTick() and change the macro used to detect if XC is being used. 2013-06-07 11:15:43 +00:00
Richard Barry
51d9ee0c1c Add configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS mechanism to the relevant port.c file to allow the user to define functions that will execute in privileged mode. 2013-06-07 09:45:34 +00:00
Richard Barry
29ca4f1b36 Ensure queue functions go into the privileged code section when the MPU version is in use.
Provide a default value for configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS.
Revert prvQueueUnregisterQueue() back to a public function.
2013-06-07 09:41:15 +00:00
Richard Barry
0f3ae55e5d Add configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS mechanism to allow the user to define functions that will execute in privileged mode.
Update the Rowley MPU demo to use a version of debug_printf that runs in privileged mode to get around the problem of the RAM it uses not being under the control of the kernel.
2013-06-07 09:37:18 +00:00
Richard Barry
f904d26957 Convert more ports to use xTaskIncrementTick() in place of vTaskIncrementTick(). 2013-06-06 16:31:15 +00:00
Richard Barry
15ec6c87f7 Convert mpre ports to use xTaskIncrementTick() in place of vTaskIncrementTick(). 2013-06-06 16:06:48 +00:00
Richard Barry
686d190798 Convert some ports to use xTaskIncrementTick() in place of vTaskIncrementTick().
Move DSB instructions to before WFI instructions in line with ARM recommendations.
2013-06-06 15:46:40 +00:00
Richard Barry
4e9374ad90 Add default value for configUSE_TIME_SLICING 2013-06-06 14:56:47 +00:00
Richard Barry
06953169ba Update RM48/TMS570 port to use xTaskIncrementTick in place of vTaskIncrementTick. 2013-06-06 13:06:24 +00:00
Richard Barry
0673f63e8d Ensure RM48 demo compiles in co-operative mode. 2013-06-06 12:54:00 +00:00
Richard Barry
66734268f5 Update SAM4L_low_power_tick_management.c to use xTaskIncrementTick() in place of vTaskIncrementTick(). 2013-06-06 11:26:15 +00:00
Richard Barry
2e5d812022 Tidy up the comments and use of static function prototypes in the SAM4L_low_power_tick_management.c implementation. 2013-06-06 11:19:32 +00:00
Richard Barry
3fbee4f0a8 Place DSB instruction before WFI instruction in EFMG890F128 demo. 2013-06-06 11:15:08 +00:00
Richard Barry
64bd0689c7 Update the standard Win32 demo to use the latest version of the trace recorder code. 2013-06-05 16:26:04 +00:00
Richard Barry
6330e06975 Remove compiler warnings from the trace recorder code. 2013-06-05 15:25:26 +00:00
Richard Barry
6438027bb9 Update the FreeRTOS_Plus_CLI_with_Trace_Windows_Simulator demo to use the latest version of the trace recorder code. 2013-06-05 15:24:12 +00:00
Richard Barry
f928b0e296 Update to latest FreeRTOS+Trace recorder code. 2013-06-05 13:38:56 +00:00
Richard Barry
f9d0a153b4 Update the FreeRTOS+UDP LPC18xx MAC driver to use the LPCOpen drivers. 2013-06-03 20:27:46 +00:00
Richard Barry
54c62d429f Update LPC18xx FreeRTOS+UDP demo to use LPCOpen USB and Ethernet drivers.
Update LPC18xx FreeRTOS+UDP eclipse project to use linked resources rather than a CreateProjectDirectoryStructure.bat batch file.
2013-06-03 20:21:38 +00:00
Richard Barry
0158039f99 Slight modification to license blub text in header comments. 2013-05-21 14:14:03 +00:00
Richard Barry
fda145278e Remove the Chan FATfs code as FreeRTOS now ships with a proprietary file system. 2013-05-19 10:36:04 +00:00
Richard Barry
2c562bd3d7 Ensure a queue or semaphore that is not empty cannot be added to a queue set. 2013-05-19 10:11:10 +00:00
Richard Barry
bb7b711ca9 Update the code that generates the run time stats strings so the pcStatsString[] array is not required. 2013-05-19 09:56:47 +00:00
Richard Barry
a03b171992 Fix compiler warning in psp_test.c when compiled with ARM compiler.
Add portYIELD_FROM_ISR() macros to Cortex-M ports.  The new macro just calls the exiting portEND_SWITCHING_ISR() macro.
Remove code from the MSVC port layer that was left over from a previous implementation and become obsolete.
2013-05-19 09:43:00 +00:00
Richard Barry
9b153b3e06 Ensure the SmartFusion2 interrupt driven UART drivers are not passed a zero length buffer. 2013-05-14 13:22:37 +00:00
Richard Barry
94f178c8d1 Move SmartFusion configuration options into FreeRTOSConfig.h. 2013-05-13 10:51:31 +00:00
Richard Barry
5c5c1c406d Rename the SmartFusion2 demo directory. 2013-05-13 09:26:39 +00:00
Richard Barry
961928b0f9 Combine the SmartFusion2 starter kit and development kits demos into a single directory. 2013-05-13 09:06:50 +00:00
Richard Barry
82995fd4fd Update SmartFustion2 starter kit partest.c. 2013-05-12 20:24:42 +00:00
Richard Barry
4d966adc8b Add SmartFusion2 demo for the SmartFustion2 development kit. 2013-05-12 20:07:49 +00:00
Richard Barry
063c05ccad Convert SmartFusion2 CLI to use the interrupt UART driver functions instead of the polled UART driver functions. 2013-05-12 13:02:16 +00:00
Richard Barry
5ff880fee8 SmartFusion2 CLI working with polled UART, about to convert to interrupt driven UART. 2013-05-10 18:47:43 +00:00
Richard Barry
8732e8efc5 Minor cosmetics to comments. 2013-05-09 10:15:52 +00:00
Richard Barry
fb9662009a Update comments in Atmel Studio CreateProjectDirectoryStructure.bat files to remove references to replace references to Eclipse with references to Atmel Studio.
Update the tickless idle implementations that use up counters for tick interrupt generate to ensure they remain in low power mode for the desired time instead of one tick less than the desired time.
2013-05-09 09:56:04 +00:00
Richard Barry
e08966c7e8 Update flop.c and FreeRTOS.h to include a macro (and a default null implementation of the macro) that enables the flop tasks to register their need for a floating point context with the kernel. 2013-05-09 09:52:34 +00:00
Richard Barry
b4efc0439f Update Win32 simulator so it references the FreeRTOS+Trace code from the updated FreeRTOS+ directory structure. 2013-05-09 09:50:40 +00:00
Richard Barry
410f5d45eb SmartFusion2: Change linker file to run from NVM. Add in FreeRTOS+CLI and FreeRTOS+FAT SL demo. 2013-05-07 08:46:24 +00:00
Richard Barry
e3a868ca58 Blinky and full demos working on SmartFusion2. 2013-05-06 09:18:00 +00:00
Richard Barry
b8d265f57f Starting point for SmartFustion2 starter kit demo. 2013-05-05 13:33:55 +00:00
Richard Barry
39147e83a0 Update version numbers in a couple of files that got left behind. 2013-05-01 09:19:09 +00:00
Richard Barry
96ceae8edd Update version number ready to release the FAT file system demo. 2013-04-30 21:42:41 +00:00
Richard Barry
a4a830c44d Add FAT SL code and demo project. 2013-04-30 20:37:52 +00:00
Richard Barry
bbe48d31a4 Clarify license blurb at the top of the FreeRTOS+UDP and FreeRTOS+CLI source files. 2013-04-30 20:23:06 +00:00
Richard Barry
fbadf8bee7 Add quick start guide. 2013-04-30 19:37:00 +00:00
Richard Barry
f9918345e1 Update version numbers to V7.4.1. 2013-04-18 12:58:17 +00:00
Richard Barry
c60973c34a Change version number in common files within the FreeRTOS-plus directory and check all demos still execute. 2013-04-18 10:08:04 +00:00
Richard Barry
64a3ab321a Add FreeRTOS-Plus directory with new directory structure so it matches the FreeRTOS directory. 2013-04-18 09:17:05 +00:00
Richard Barry
80f7e8cdd4 Remove subdirectories of FreeRTOS-Plus in preparation for changing the directory structure to match the FreeRTOS directory. 2013-04-18 08:39:10 +00:00
Richard Barry
2bd7d0c1f5 Commit 3 RX100 low power demos. 2013-04-17 10:04:38 +00:00
Richard Barry
2b41be4cb9 Update yield code in RX200/Renesas compiler port. 2013-04-17 08:55:16 +00:00
Richard Barry
352949af42 Update RX600 IAR RX62N demo to use latest IAR tools. 2013-04-17 08:47:27 +00:00
Richard Barry
0013028c7a Update yield code in RX600/IAR compiler port. 2013-04-17 08:46:10 +00:00
Richard Barry
4f5f527c73 Update yield code in RX600/Renesas compiler port. 2013-04-17 08:35:20 +00:00
Richard Barry
b7487b8dc2 Update yield code in RX600/GCC port. 2013-04-17 08:23:02 +00:00
Richard Barry
a69933782d Add RX100 Renesas compiler port layer. 2013-04-16 15:59:21 +00:00
Richard Barry
74290b4425 Add RX100 IAR port layer. 2013-04-16 15:58:46 +00:00
Richard Barry
a0056e8fd3 Add RX100 GCC port layer. 2013-04-16 15:58:14 +00:00
Richard Barry
9a15f50b00 Add memory barrier instructions to Tasking CM4F port. 2013-04-16 15:50:17 +00:00
Richard Barry
7132e88685 Add memory barrier instructions to the RVDS CM3 ports. 2013-04-16 15:30:43 +00:00
Richard Barry
895ee2bb3e Add barrier instructions to IAR CM3 ports. 2013-04-16 14:56:49 +00:00
Richard Barry
be7cae575d Ensure XMC demo builds with the latest IAR version. 2013-04-16 14:51:33 +00:00
Richard Barry
d135e45676 Replace the read back of the software interrupt register with barrier instructions (CCS/RM48/TMS570). 2013-04-16 14:17:35 +00:00
Richard Barry
0527099b51 Add barrier instructions to the GCC CM3 ports. 2013-04-16 14:16:30 +00:00
Richard Barry
67cc013ac3 Remove duplicate #error informing people to run the CreateProjectDirectoryStructure.bat. 2013-04-16 12:49:23 +00:00
Richard Barry
af023e8bf1 Remove infinite loop from task delete function. 2013-04-16 10:25:33 +00:00
Richard Barry
01202246da Add volatile keyword to GenQTest loop counter for consistency.
Remove obsolete definition from SAM4L demo.
2013-04-14 19:07:32 +00:00
Richard Barry
6d20e2b5cd Add barrier instructions to GCC CM3/4 code. 2013-04-07 19:43:52 +00:00
Richard Barry
a7fb62cb9c Prepare to package up SAM4L demo. 2013-04-07 19:41:45 +00:00
Richard Barry
af623460a6 Updated the sleep function to ensure it left interrupts disabled when returning. 2013-04-07 19:30:25 +00:00
Richard Barry
2cf9f1ac8c Add SAM4L demo. 2013-04-07 18:49:53 +00:00
Richard Barry
3762630f27 RL78/IAR port - Allow the end user to define their own tick interrupt configuration by defining configSETUP_TIMER_INTERRUPT(). 2013-03-25 17:00:13 +00:00
Richard Barry
a9b8f0ca69 Minor mods common files to fix warnings generated by Renesas compiler.
Correct the header comments in het.c and het.h (RM48/TMS570 demo) which were corrupt.
Correct version numbers in RX63N Renesas compiler demo.
Ensure stacks set up for tasks in the RX200 port layer end on 8 byte boundaries (was 4, which didn't matter but didn't match the definition).
Replaced unqualified (unsigned) in calls to standard functions with (size_t).
2013-03-25 16:30:42 +00:00
Richard Barry
236683d74d Update the GCC RL78 demo to include four separate build configurations, each of which targets different hardware. 2013-03-19 12:24:05 +00:00
Richard Barry
3a1a500950 Rename the Demo/RL78_RL78G13_Promot_Board_IAR directory to RL78_Multiple_IAR as it now targets several different devices. 2013-03-18 16:51:43 +00:00
Richard Barry
c08a0558c8 Add two additional targets to the RL78 IAR project. 2013-03-18 16:43:21 +00:00
Richard Barry
caf1fbc899 Ensure IAR RL port layer works on devices using two different naming conventions for the interval timer registers. 2013-03-18 16:40:47 +00:00
Richard Barry
8c66fdbb8c Updated IAR RL78 port layer. 2013-03-17 16:54:17 +00:00
Richard Barry
b78fa80fbe Update the IAR RL78 demo to include main_blinky.c and main_full.c. 2013-03-17 16:52:39 +00:00
Richard Barry
7fb22e27da Add an example ISR implementation into the RL78 GCC demo. 2013-03-17 15:38:23 +00:00
Richard Barry
c79a5fe50c Complete RL78/G14 demo. 2013-03-17 12:12:20 +00:00
Richard Barry
3b1ff85222 RL78 GCC: Save and restore all register banks. 2013-03-17 09:27:18 +00:00
Richard Barry
3b9d0819c9 RL78/GCC related:
+ Add RL78G14 specific linker script.
+ Move the call to the function that sets up the clocks to before the code that sets up the .data and .bss sections.
2013-03-06 10:56:03 +00:00
Richard Barry
08b959f143 For RL78GCC port/demo:
- Added YRDKRL78G14 build configuration.
- Runs provided the dynamic priority tasks are not started.
- Does not run with the debugger connected.
2013-03-04 20:04:02 +00:00
Richard Barry
fba04057ec All related to RL78 GCC demos (which are still a work in progress):
- Abstract out the IO port handling for the LED output so the same code can be used on multiple eval boards.
- Add in the RESTORE_CONTEXT macros.
- Swap to use heap_1.c instead of heap_4.c.
- Add data model macros to FreeRTOSConfig.h (may be removed if only one data model is supported by the compiler).
- Install interrupt handlers.
2013-03-04 13:23:48 +00:00
Richard Barry
37d302b8ee Abstract the IO port handling to toggle the LED into LED.h so the same code can work with multiple eval boards. 2013-03-04 13:18:19 +00:00
Richard Barry
83fa827935 Add RL78 E2Studio project. Code is building, but has not yet been executed. 2013-03-02 15:50:02 +00:00
Richard Barry
17bba16fa6 Added YRDKRL78G14 build configuration to the IAR RL78 demo. 2013-02-24 19:48:26 +00:00
Richard Barry
a5d0e3f0c1 Prepare for V7.4.0 release. 2013-02-19 18:36:58 +00:00
Richard Barry
902f9e1a58 Update PIC32 demo application to remove reliance on PLIB functions.
Update the default low power implementation in all the Cortex-M port layers to add a small critical section.
2013-02-18 16:41:11 +00:00
Richard Barry
c519ba094d Correct spelling of xSuspendedTaskList in eTaskConfirmSleepModeStatus(). 2013-02-18 11:28:56 +00:00
Richard Barry
dcc90bb6d9 Add default definition for configUSE_QUEUE_SETS.
Add eTaskConfirmSleepModeStatus() (not yet tested).
Only call prvQueueUnregisterQueue() when a queue or semaphore is deleted if configQUEUE_REGISTRY_SIZE > 0.
Back out change that checks the configUSE_PORT_OPTMISED_TASK_SELECTION value before uxPriorityUsedOnEntry is set in vTaskPrioritySet as it generated more warnings (with other compilers) than it fixed.
2013-02-18 11:20:29 +00:00
Richard Barry
2b835ccb48 Commit demos that have been updated for testing purposes before they are updated once more to test new low power features. 2013-02-18 11:15:35 +00:00
Richard Barry
b85c071a79 Update the LPC1768 project to only copy across one heap_x.c file as the addition of heap_4.c without it being excluded from the project was breaking the build. 2013-02-13 12:03:13 +00:00
Richard Barry
a7eae6bed3 Added more files to the Rowley and IAR LM3S demos to test building the newer files and queue sets.
Made queue function prototypes consistent so xQueueHandle parameters are always xQueue, and xQUEUE * parameters pxQueue.
Likewise make the task API using px for pointers to TCBs, and just x for task handles.
Heap_x functions now automatically align the start of the heap without using the portDOUBLE union member.
Queue.c now includes queue.h.
2013-02-12 17:35:43 +00:00
Richard Barry
9b26071eb8 Adjusted the wrap checks in the QueueSet test task.
Added the QueueSet test to the Rowlay Stellaris and SAM4S-EK Studio demos.
Updated the MSVC demo to use heap_4.c.
2013-02-12 14:30:12 +00:00
Richard Barry
0262f4a6cd Reduce RAM used by trace by updating trcConfig.h. 2013-02-12 10:59:58 +00:00
Richard Barry
b671bf368a Improve QueueSet.c test coverage by reading the queue set from an ISR to force paths through the queue locking and unlocking.
Add the FreeRTOS+Trace recorder into the Win32 MSVC demo.
Added more functions, including the queue set functions, to the MPU port.
2013-02-12 10:09:36 +00:00
Richard Barry
26152204a4 Update the FreeRTOS+Trace recorder and Win32 demo app. 2013-02-10 19:33:28 +00:00
Richard Barry
96218c34a1 Fix a few compiler warnings when compiling the QueueSet.c test code with GCC. 2013-02-08 17:05:42 +00:00
Richard Barry
d328ae3bfc Add the queue set test to the SAM4S-EK Atmel Studio code. 2013-02-08 16:10:13 +00:00
Richard Barry
232a5b3433 Continue working on queue set implementation and testing. 2013-02-08 15:50:14 +00:00
Richard Barry
4e5090e061 Next revision of queue set implementation.
Make conditional compilation syntax and commenting consistent.
Add common demo tasks to demonstrate queue sets.
2013-02-07 15:10:25 +00:00
Richard Barry
b5b518571e remove the additional line added to the MPU port.c as the original code was correct. Instead remove the alignment assert by adding #define portALIGNMENT_ASSERT_pxCurrentTCB ( void )
to the portmacor.h file.
2013-01-31 15:27:00 +00:00
Richard Barry
ac78adae4b Added INCLUDE_xSemaphoreGetMutexHolder() default.
Changed eTaskStateGet() to eTaskGetState() and added #define to ensure backward compatibility.
Added configEXPECTED_IDLE_TIME_BEFORE_SLEEP definition - was previously hard coded to 2.
Slight change to the default CM3 tickless sleep function to allow the idle time to be set to zero in the pre-sleep processing macro.
Changed stack alignment for the FreeRTOS-MPU port to ensure it didn't trigger the assert() in the generic create function.
2013-01-31 14:18:03 +00:00
Richard Barry
4e7b460eaf Replace the CLZ function with a CLZ intrinsic in the Cortex-R4 port layer.
Add EDS support in the PIC24 port layer.
Remove unnecessary EHB instructions from PIC32 port.
In the PIC32 port assembly code, replace the &= code with a single ins instruction.
2013-01-23 16:06:45 +00:00
Richard Barry
b5cf299df1 Make changes necessary to allow the latest StateViewer Eclipse plug-in obtain the run time stats information. 2012-12-31 11:09:14 +00:00
Richard Barry
2e24f1b789 Move the call that sets xTimeNow inside the loop that drains the timer queue to ensure higher priority tasks that pre-empt the timer daemon cannot post messages that appear to be in the future to the daemon task. 2012-11-18 09:13:39 +00:00
Richard Barry
0d421482d8 Default configUSE_TICKLESS_IDLE to 0 when it is not defined.
Move location of traceTASK_CREATE() macro call.
Remove obsolete handling of trmCOMMAND_PROCESS_TIMER_OVERFLOW as the command was never used in release versions.
2012-11-17 19:23:30 +00:00
Richard Barry
c4d078c29a Ensure #error messages in FreeRTOSConfig.h files are not commented out. 2012-10-31 13:46:17 +00:00
Richard Barry
96f93690ce Add warning suppression to IAR header. 2012-10-31 13:30:44 +00:00
Richard Barry
5512102f92 Slow configured clock in the RM48 and TMS570 demos to 50MHz. 2012-10-31 10:31:33 +00:00
Richard Barry
0023cb1f8e Make loop counters in flop_hercules.c 32-bit instead of 16-bit. 2012-10-30 14:56:21 +00:00
Richard Barry
01bca41038 Rename CORTEX_R4_RM48_CCS5 directory as it also includes the TMS570 code. 2012-10-29 16:18:20 +00:00
Richard Barry
2a47ddd1f5 Correct cut and paste error in partest.c file. 2012-10-29 16:17:05 +00:00
Richard Barry
ba686260ca Make CM3/4 tick configuration a weak function to allow application writers to use an alternative tick source. 2012-10-29 15:56:26 +00:00
Richard Barry
5e7c99d2aa Allow IAR language extensions so __weak attribute can be used. 2012-10-29 13:57:07 +00:00
Richard Barry
9fe5156b53 Work around compiler bug in CCS5 by replacing the _call_swi() function with a #pragma SWI_ALIAS. 2012-10-29 11:38:19 +00:00
Richard Barry
7fa0d887e8 Complete RM4x and TMS570 demo. 2012-10-29 11:34:41 +00:00
Richard Barry
f5c52bdb1d Re-jig some of the new functions to correctly assign them public or private linkage, and remove some functions that were added in but never used. 2012-10-22 16:40:45 +00:00
Richard Barry
f06a945444 Prepare for V7.3.0 release. 2012-10-16 12:17:47 +00:00
Richard Barry
f446f77fd4 Make the timer used for the PIC32 port layer user configurable. 2012-10-16 09:48:45 +00:00
Richard Barry
dbe0ae2bff Add tickless idle support in Cortex-M ports.
Change CCS R4 directory name.
2012-10-16 07:56:55 +00:00
Richard Barry
e03ab659f3 Add tickless idle support in Cortex-M ports.
Change CCS R4 directory name.
2012-10-16 07:55:40 +00:00
Richard Barry
6ec4c7cecb Set the RM48 directory structure to match the FreeRTOS convention. 2012-10-14 21:33:53 +00:00
Richard Barry
4410dd363e Update FreeRTOS version used in RM48 demo. 2012-10-14 21:11:01 +00:00
Richard Barry
9ff79da901 First pass at adding R4F floating point support. 2012-10-13 16:21:40 +00:00
Richard Barry
fe2163ede4 RM48 port layer without FPU saving completed. 2012-10-11 13:41:07 +00:00
Richard Barry
1112439c58 Get main_full.c working in the RM48 demo. 2012-10-10 13:40:36 +00:00
Richard Barry
05c17e7e6d Remove whitespace only. 2012-10-10 09:53:44 +00:00
Richard Barry
ecdca1311b RM48 simply blinky demo working. 2012-10-09 13:04:17 +00:00
Richard Barry
57fab18305 Added initial RM48 project files. These are not in the correct directory structure yet. 2012-10-04 19:47:41 +00:00
Richard Barry
c403e974ee Update PIC32 port to make use of configUSE_PORT_OPTIMISED_TASK_SELECTION.
Make small modification in GCC CM3 port when configUSE_PORT_OPTIMISED_TASK_SELECTION is set to 1 to remove compiler warning.
2012-09-25 18:18:37 +00:00
Richard Barry
87f663a461 Correct #if( configMAX_PRIORITIES >= 32 ) check performed when configUSE_PORT_OPTIMISED_TASK_SELECTION == 1 to instead be #if( configMAX_PRIORITIES > 32 ). 2012-09-24 12:10:08 +00:00
Richard Barry
42a11edef8 Replace the need for taskCHECK_READY_LIST() by instead making vListRemove() return the number of items that remain in the list once the list item has been removed. 2012-09-24 12:05:35 +00:00
Richard Barry
18a4b00a18 Rename listLIST_ITEM_CONTAINED to listLIST_ITEM_CONTAINER. 2012-09-24 11:23:14 +00:00
Richard Barry
92f1699055 Added Cortex-M optimised code to the IAR, GCC and Keil Cortex-M port layers.
Tested and updated a few Cortex-M projects to use configUSE_PORT_OPTIMISED_TASK_SELECTION set to 1.
2012-09-24 11:01:17 +00:00
Richard Barry
670d172cfc Introduced configUSE_PORT_OPTIMISED_TASK_SELECTION, and updated the MSVC simulator port as the first implementation. 2012-09-23 14:35:12 +00:00
Richard Barry
8ef7f03536 Add eTaskStateGet() to FreeRTOS-MPU. 2012-09-23 09:35:53 +00:00
Richard Barry
eb1f7bc166 Added eTaskStateGet().
Added default value for INCLUDE_eTaskStateGet.
2012-09-22 20:59:27 +00:00
Richard Barry
48a307ff5f Allow mutex type semaphores to be given from an interrupt (not a normal thing to do - use a binary semaphore!).
Allow FreeRTOS+CLI commands to have spaces at the end without it being taken as a parameter.
2012-09-05 14:02:16 +00:00
Richard Barry
c0de8c984c Improve command input string handling in FreeRTOS+CLI to allow allow commands to be sub-strings of each other, and not to count trailing white space as a parameter. 2012-08-31 13:10:20 +00:00
Richard Barry
bf12aba59d Add demo for SAM3S-EK2. 2012-08-29 15:02:56 +00:00
Richard Barry
340b2d7872 Save the SAM4S FreeRTOSConfig.h with the #error about running the CreateProjectDirectoryStructure.bat batch file in the correct state (uncommented). 2012-08-29 09:57:25 +00:00
Richard Barry
6396f6fe9f Add SAM3X-EK demo. 2012-08-15 20:38:50 +00:00
Richard Barry
0c7af1c2d3 Put comments in the code that give a reference to people who think that setting BASE_PRI to zero is the wrong thing to to in an ISR. 2012-08-14 13:04:22 +00:00
Richard Barry
e0bab5981a Prepare for V7.2.0 release. 2012-08-14 12:14:48 +00:00
Richard Barry
73ad4387e2 Remove the remnants of the legacy trace functionality (since replaced with FreeRTOS+Trace).
Replaced the #error that traps configMAX_SYSCALL_INTERRUPT_PRIORITY being set to 0 with a configASSERT() for GCC Cortex-M3/4 ports as the #error does not work if configMAX_SYSCALL_INTERRUPT_PRIORITY includes any casting.  Not a problem for other compilers as they cannot have casting anyway as that would break the assembly code.
2012-08-12 17:05:23 +00:00
Richard Barry
02acfd2723 Add warning in Cortex-M3 and Cortex-M4 FreeRTOSConfig.h header files that configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0. 2012-08-12 16:49:43 +00:00
Richard Barry
7d937f04d7 Add CreateProjectDirectoryStructure.bat to the SAM4 demo. 2012-08-12 04:25:38 +00:00
Richard Barry
99a4783b55 Remove the files from the SAM4S demo that are copied using the CreateProjectDirectoryStructure.bat batch file. 2012-08-12 04:14:58 +00:00
Richard Barry
4dbef6afe9 Add readme files to the various FreeRTOS+ directories. 2012-08-11 22:57:53 +00:00
Richard Barry
f508a5f653 Add FreeRTOS-Plus directory. 2012-08-11 21:34:11 +00:00
Richard Barry
7bd5f21ad5 Start to re-arrange files to include FreeRTOS+ in main download. 2012-08-11 21:06:27 +00:00
Richard Barry
95db6bdce7 Remove test code from heap_4.c. 2012-08-11 20:59:14 +00:00
Richard Barry
054b018d0e Update MPS430X ports so the sleep mode bits are cleared on exit from the tick interrupt.
Update heap_4.c.
2012-08-11 20:57:11 +00:00
Richard Barry
59c9044de1 Add heap_4.c. 2012-08-10 18:45:45 +00:00
Richard Barry
2967657a85 Add vQueueDelete() to the MPU port.
Added volatile key word to the queue xRxLock and xTxLock members.
Ensure the portPRIVILEGED_BIT bit is set when the timer task is being created by the kernel - as it was for the idle task.  Necessary for MPU port.
2012-08-03 15:21:21 +00:00
Richard Barry
e1a83402d6 Renamed the CORTEX_M4_ATSAM4S_AVR_Studio directory to the correct CORTEX_M4_ATSAM4S_Atmel_Studio. 2012-07-08 15:58:54 +00:00
Richard Barry
271b22eccc Remove the unused linker reference to the maths library. 2012-07-08 15:52:01 +00:00
Richard Barry
02c347d45d Complete first release candidate for the SAM4S-EK demo. 2012-07-08 14:11:37 +00:00
Richard Barry
c8c7c80116 In the SAM4S demo, moved FreeRTOS into the ASF/thirdparty directory.
Changed some of the compiler warning configuration.
2012-07-05 09:41:37 +00:00
Richard Barry
d67b0311cb Change the name of the SAM4 FreeRTOS-Source directory to just FreeRTOS in preparation of moving it to the ASF/Thirdparty directory. 2012-07-05 08:35:36 +00:00
Richard Barry
932d8b318e Create project for SAM4S. This is building but has not yet been tested on hardware. 2012-07-03 13:49:34 +00:00
Richard Barry
db44ca0c56 Add in a couple of extra list macros for use with FreeRTOS+UDP.
Allow the ISR safe queue send and receive functions to set the higher priority task woken pointer to NULL.
2012-07-03 11:16:52 +00:00
Richard Barry
c8c4ab298c Add the macro xSemaphoreTakeFromISR().
Add #error strings if configMAX_SYSCALL_INTERRUPT_PRIORITY is set to 0.
Corrected the prototype of vApplicationStackOverflowHook().
Changed the dimensioning of the buffer declared in prvListTaskWithinSingleList() to make use of the configMAX_TASK_NAME_LEN setting.
2012-07-03 09:38:09 +00:00
Richard Barry
26dbc85c7c Added INCLUDE_xQueueGetMutexHolder macro.
Removed the "-rc1" that was accidentally left on the version number of some Win32 port files.
Changed the behaviour of xQueueGenericReset() so queues can be reset when tasks are blocked on them.
2012-05-17 08:22:27 +00:00
Richard Barry
38d09c99eb Prepare for FreeRTOS V7.1.1 tag. 2012-05-08 17:35:44 +00:00
Richard Barry
ac66c45eb4 Prepare for FreeRTOS V7.1.1 tag. 2012-05-08 16:50:26 +00:00
Richard Barry
9f0069690c Prepare for FreeRTOS V7.1.1 tag. 2012-05-08 16:36:52 +00:00
Richard Barry
c5c064b74e Update the RX63N RDK project to use the correct PHY ID. 2012-05-01 12:28:06 +00:00
Richard Barry
bbbdd9c393 Change the Win32 port layer so it doesn't use the traceTASK_DELETE macro, but instead the new portCLEAN_UP_TCB macro. 2012-04-24 13:09:22 +00:00
Richard Barry
8baa0ac171 Update the RX63N RDK demo to use the latest (at the time of writing) Renesas RDK BSP.
Ethernet is still not included.
The configuration is still set for the ES chip.
2012-04-24 12:45:01 +00:00
Richard Barry
84ddb2abd6 Update the RX63N RSK demo to use the latest (at the time of writing) Renesas RSK BSP.
Ethernet is still not included.
The configuration is still set for the ES chip.
2012-04-24 10:00:06 +00:00
Richard Barry
1bd702777d Remove older Renesas BSP files from the RX63N RSK demo in preparation to add in the latest BSP files. 2012-04-23 13:39:14 +00:00
Richard Barry
88bff5d198 RX63N RDK Debug build configuration now building, but not yet tested. 2012-04-18 10:34:05 +00:00
Richard Barry
2f199771d5 Backup point only. YRDK RX63N building but not linking. 2012-04-18 09:40:10 +00:00
Richard Barry
aa85a68636 Update the Renesas provided BSP files in the RDK RX63N project. 2012-04-18 09:08:56 +00:00
Richard Barry
3bc093f562 Starting point for YRDK RX63N demo. 2012-04-18 08:40:34 +00:00
Richard Barry
0cf8643863 Update the TCP/IP update period from 500ms to the expected 50ms. 2012-04-18 08:16:15 +00:00
Richard Barry
d8d68e917c Set the last return address at the bottom of the stack to 0 in the RX600 ports to prevent E2Studio from attempting to dereference the 0xdeadbeef pointer. 2012-04-16 18:33:32 +00:00
Richard Barry
63369b2a97 Change the stack alignment when a task first starts in the CM4F GCC, Tasking and Keil ports. 2012-04-16 18:23:32 +00:00
Richard Barry
68289d136f Remove unused .txt file from the XMC4500 uVision project. 2012-04-16 18:21:11 +00:00
Richard Barry
7a0996f246 Removed unused function from IAR CM4F port.c.
Modified the stack alignment when a task first starts in the IAR CM4F port.
2012-04-16 17:04:42 +00:00
Richard Barry
6360632cca Added the FreeRTOS/WorkingCopy/Demo/CORTEX_M4F_Infineon_XMC4500_IAR/settings directory to ensure the files open up in the IDE in the correct place when the project is first opened. 2012-04-16 17:02:21 +00:00
Richard Barry
eff1636a94 Starting point for XMC4500 IAR demo application. 2012-04-15 21:04:53 +00:00
Richard Barry
4793063ee0 Add #error statements in FreeRTOSConfig.h header files where the CreateProjectDirectoryStructure.bat should be executed prior to the first build.
Added the CreateProjectDirectoryStructure.bat file for the XMC4500 Tasking demo.
2012-04-06 20:20:35 +00:00
Richard Barry
dfa0c20530 Copy Tasking CM4F files from the project directory into their correct location in the FreeRTOS/Source directory. 2012-04-06 20:05:43 +00:00
Richard Barry
248abca109 Update include paths to be workspace relative.
Minimise the amount of heap space allocated.
Reduce the main() stack from 4K to 2K.
2012-04-06 20:02:44 +00:00
Richard Barry
a3b4008eae Created and tested optimised build configuration for the XMC4500 demo. 2012-04-06 19:47:30 +00:00
Richard Barry
6aa07ed919 Tasking XMC4500 demo now running. 2012-04-06 18:33:50 +00:00
Richard Barry
f9a9535ee9 Turn on long branch veneer generation in Tasking XMC4500 project - not sure why it is needed. 2012-04-06 17:45:24 +00:00
Richard Barry
1ccb58d56d Starting point for Tasking XMC4500 demo. Compiling only, not executed yet. 2012-04-06 16:36:52 +00:00
Richard Barry
1312fada7c Added traceMOVED_TASK_TO_READY_STATE and portSETUP_TCB macros.
Changed uxTCBNumber back to uxTaskNumber in tasks.c to fix IAR plug-in.
2012-04-02 20:06:52 +00:00
Richard Barry
c0339c2c86 Checking current RX62N Renesas project which now links with the latest Renesas compiler. 2012-04-02 18:40:56 +00:00
Richard Barry
83d5097ed2 Update the CM3 MPU port so it builds with the changes made to enable the FreeRTOS+Trace tool. 2012-04-02 18:33:46 +00:00
Richard Barry
892d28f2c4 Check in current RX63N session file. 2012-04-02 18:31:13 +00:00
Richard Barry
06d47d4012 Checking current RX600 Renesas project which now links with the latest Renesas compiler. 2012-04-02 18:30:26 +00:00
Richard Barry
82fb90c416 Update Rowley LPC2368 project to remove the multiple defined symbol warnings. 2012-04-02 17:38:58 +00:00
Richard Barry
020ddcbd90 Update Rowley STM32F107 project to remove multiple defined symbol warning. 2012-04-02 17:36:42 +00:00
Richard Barry
73287e108b Update MPU projects to build with V7.1.0 - NOTE - these now build but do not necessarily execute correct from the Rowley IDE. 2012-04-02 17:35:03 +00:00
Richard Barry
7b340a1f9c Update Rowley LPC1768 project to remove the multiple defined symbol warning. 2012-04-02 17:33:04 +00:00
Richard Barry
ea5027da67 Rename Demo/MPS430X_MSP430F5438_CCS4 Demo/MPS430X_MSP430F5438_CCS. 2012-04-02 09:40:00 +00:00
Richard Barry
4d1e3042dd Rename the Source/Portable/CCS4 directory to Source/Portable/CCS. 2012-04-02 09:37:17 +00:00
Richard Barry
2a9b42cbc3 Remove the Demo/Common/Utils directory as the CLI code is currently provided separately. 2012-04-02 09:24:11 +00:00
Richard Barry
bb708957a9 Test the CCS4 demo project to CCS5 and make a minor change to ensure the power supplied is adequate for the CPU speed. 2012-04-02 09:20:45 +00:00
Richard Barry
ab1aa67b08 Remove compiler warning in CCS MSP430X port. 2012-04-01 18:24:08 +00:00
Richard Barry
3b4771e1a9 Update MSP430X IAR port to ensure the power settings are correct for the clock speed. 2012-04-01 17:54:07 +00:00
Richard Barry
f16af5d27e Correct #endif statement in new flash_tiemr.h header file. 2012-03-17 17:22:52 +00:00
Richard Barry
c80818c7d8 Update version number in a couple of files in the RX63N/Renesas demo. 2012-03-17 17:21:49 +00:00
Richard Barry
3fa8beb176 Baseline the RX63N/Renesas demo - the Ethernet part of the demo is currently commented out as the Ethernet port is not configured using the RX63N register set. 2012-03-17 17:18:27 +00:00
Richard Barry
e69bce06de Add the sp_flop standard demo tasks to the RX63N RSK demo. 2012-03-17 15:11:13 +00:00
Richard Barry
eb38217496 Update demos to use timers for the check functionality, and the flash timers. Floating point and Ethernet is not yet included. 2012-03-17 15:02:32 +00:00
Richard Barry
785621ff22 Add the flash_timer standard demo timers (rather than tasks). These behave as the flash tasks, but use timers in place of tasks. 2012-03-17 14:59:46 +00:00
Richard Barry
05bc21e115 Update RX63N start-up to configure the high speed clock prior to initialising the C run time library. 2012-03-15 16:58:31 +00:00
Richard Barry
a3c45eb1da Starting point for RX63N demo added. 2012-03-15 15:56:05 +00:00
Richard Barry
9e926a4459 Update the Rx/Renesas projects to include an extra linker section "L" required by the latest compilers. 2012-03-12 15:29:56 +00:00
Richard Barry
5267ac07a4 Modified header comments only. 2012-03-12 14:37:27 +00:00
Richard Barry
14f2b70797 Convert mov instructions to movs instructions in the GCC Cortex-M0 demo.
Update GCC Cortex-M0 CMSISv2p00_LPC11xx/inc/LPC11xx.h.
2012-03-11 21:31:23 +00:00
Richard Barry
b86d821bc1 Convert mov instructions to movs instructions in the GCC Cortex-M0 port. 2012-03-11 21:28:06 +00:00
Richard Barry
7fa9bf25dc Fix issue in linker script generated by TrueStudio for STM32F0. 2012-03-11 20:22:18 +00:00
Richard Barry
b8be5d1db2 Arrange windows in the XMC4000/Keil demo so they appear neatly when the project is first opened. 2012-03-11 20:21:22 +00:00
Richard Barry
2c7ec3957d Correct linker script for ARM7_AT91SAM7X256_Eclipse demo. 2012-03-11 20:18:07 +00:00
Richard Barry
4c8e9edc8d Add static qualifier to the function that starts the first task in GCC/ARM_CM3/port.c.
Added a _nop() after the _disable_interrupt() in CCS4/MSP430X/portmacro.h.
Added a NOP() after the disabling of interrupts in IAR/MSP430X/portmacro.h.
2012-03-11 20:14:50 +00:00
Richard Barry
1478402899 Update IAR MSP430X project to latest IAR version. 2012-03-11 15:50:19 +00:00
Richard Barry
2658a3b6ef Added xSemaphoreGetMutexHolder() macro and equivalent function. 2012-03-11 15:23:51 +00:00
Richard Barry
6dc8b56cb6 Add batch file that creates the directory structure required by the XMC4500 GCC port. 2012-03-11 14:26:01 +00:00
Richard Barry
9718fbdcd4 Add GCC Cortex-M4F port layer. 2012-03-11 14:09:22 +00:00
Richard Barry
b22ee3c997 Add GCC project for Infineon XMC4500 Hexagon kit CPU board. 2012-03-11 14:07:48 +00:00
Richard Barry
c86abdb67c Arrange the windows in the Keil XMC4500 demo to be positioned correctly when first opened. 2012-03-05 15:23:43 +00:00
Richard Barry
2e07d3d665 Update comments in STM32F0 demo.
Update the Keil XMC4500 demo so there are simple blinky and comprehensive demo options.
2012-03-05 15:22:00 +00:00
Richard Barry
c77dab2c35 Update a comment only. 2012-03-04 20:59:23 +00:00
Richard Barry
45feba47c9 Add STM32F0 demo. 2012-03-04 15:11:54 +00:00
Richard Barry
a5b65b0066 Added IAR port layer for the Cortex-M0. 2012-02-24 12:05:01 +00:00
Richard Barry
0f7f97f3a3 Change FreeRTOSConfig.h for the LPCXpresso CM0 demo as there seem to be two forms of the CMSIS names. 2012-01-25 09:23:55 +00:00
Richard Barry
b3a894ca72 Revert the CM0 port layer exception handler names to the traditional FreeRTOS names as there seem to be two forms of the CMSIS names. 2012-01-25 09:19:58 +00:00
Richard Barry
ec18d06ab1 Remove the ( void ) prvSetupNestedFPUInterruptsTest; line from the LPC4300 M4 main.c file. It should not have been there. 2012-01-23 17:08:37 +00:00
Richard Barry
c820c390c4 Add XMC4500 project. 2012-01-23 12:02:57 +00:00
Richard Barry
f10b6ffdc5 Update comments in main-full.c of CM0 demo. 2012-01-22 21:26:47 +00:00
Richard Barry
ebc8ddd7da Remove duplicate definition of "#define vPortSVCHandler SVC_Handler" from FreeRTOSConfig.h included in CORTEX_STM32F100_Atollic demo. 2012-01-22 10:01:52 +00:00
Richard Barry
b4b4f306c2 In files added a few moments ago:
+ Correct version number in comments at top of file.
+ Correct path in batch file.
2012-01-21 19:01:04 +00:00
Richard Barry
7427c0eff2 Move the CM0 files to their correct location and remove from their temporary demo project home. 2012-01-21 18:46:08 +00:00
Richard Barry
de570548f0 Added batch file to create LPC11xx demo. Tidied up the M0 port layer files.
This is a baseline taken before moving the M0 port files to their proper location.
2012-01-21 18:38:21 +00:00
Richard Barry
7298ffd3f2 Correct one of the descriptions in the MicroBlaze FreeRTOS BSP mld file. 2012-01-21 16:42:03 +00:00
Richard Barry
71f36b8545 Tighten up IntQueue.c testing to have a count of the number of interrupts that post to the queue included in the error checks. 2012-01-21 16:39:14 +00:00
Richard Barry
f8d15bfaf5 Complete LPC11xx demo functionality. The batch file to copy the code over is not written yet. 2012-01-21 15:23:40 +00:00
Richard Barry
b0a6d939f4 Replace "Infinite loop" comment in main() with something sensible. 2012-01-19 22:17:10 +00:00
Richard Barry
8be818e771 Replace "Infinite loop" comment in main() with something sensible. 2012-01-19 22:16:13 +00:00
Richard Barry
e8c5f36b00 IntQ test in and working. Nesting depth not yet checked. Other tasks commented out of main(). 2012-01-17 10:34:00 +00:00
Richard Barry
29c9a63c41 Add a few lines to the RX ports that allow the vector to be installed when the FreeRTOS code is built as a library. 2012-01-13 16:41:42 +00:00
Richard Barry
3d48d67c14 LPC1114 demo added. Kernel source will be moved. 2012-01-12 15:02:01 +00:00
Richard Barry
637045468b Add xQueueReset() function. 2012-01-12 09:32:35 +00:00
Richard Barry
e3276fc282 Change version numbers to V7.1.0. 2011-12-13 16:24:24 +00:00
Richard Barry
8f3b797d29 Remove the incomplete MicroBlaze with full ethernet and tracecon facility ready for V7.1.0 update. 2011-12-13 15:41:55 +00:00
Richard Barry
1ec172e0e0 Add vQueueSetQueueNumber() and ucQueueGetQueueNumber() API functions. 2011-12-13 11:39:58 +00:00
Richard Barry
07c326fad3 Add a few extra standard demo tasks to the Win32 demo.
Make use of the new trace specific function calls from the Win32 demo - just to check the function as expected.
2011-12-13 11:38:58 +00:00
Richard Barry
cc06119b86 The LPC43xx fast start files are now included. 2011-12-13 11:36:38 +00:00
Richard Barry
a0eb27a69e Added fast book files to project - although fast boot is not integrated yet. 2011-12-13 09:22:57 +00:00
Richard Barry
e0a4cbab6f Changes necessary in the Win32/lwiP project to use the updated command console files. 2011-12-11 10:23:01 +00:00
Richard Barry
000b4ba783 Remove all printf() statements from Kinetis demo as they prevent the code running when the debugger is not attached. 2011-12-08 13:16:34 +00:00
Richard Barry
7db04b1820 Add two Cortex-M4F port layers. 2011-12-08 10:49:21 +00:00
Richard Barry
08ddd1d00d Add two Cortex-M4F demo applications. 2011-12-08 10:48:36 +00:00
Richard Barry
e7a1222c5f Command interpreter code updated to pass the command string into command hander functions. 2011-12-08 10:46:16 +00:00
Richard Barry
255dd683d2 Correct comment about mainCREATE_SIMPLE_LED_FLASHER_DEMO_ONLY setting in TriCore main.c. 2011-12-05 17:00:14 +00:00
Richard Barry
93e72e5036 Correct the prototype of the function call vApplicationStackOverflowHook(). 2011-12-02 19:13:33 +00:00
Richard Barry
c92a2fe47e Add proper copyright notice in headers to files where is was mistakenly missing. 2011-12-02 08:05:14 +00:00
Richard Barry
94818b58e4 Add in a separate uxTaskNumber to the TCB structure for use by trace tools, leaving the uxTCBNumber for use by the state viewers. 2011-11-30 09:53:11 +00:00
Richard Barry
4d8e364c62 Add #define constant required to access the queue name get function. 2011-11-29 19:06:39 +00:00
Richard Barry
9b11b0c601 Remove the direct call to xQueueCreateMutex() and replace it with the xSemaphoreCreateMutex() macro. The result is the same, but the xQueue equivalent should not be used directly outside of the core files. 2011-11-29 19:05:21 +00:00
Richard Barry
7daebd9275 Update core files to remove legacy trace and make necessary modifications to facilitate use with other trace tools. 2011-11-29 19:02:58 +00:00
Richard Barry
022bc78961 Remove variable from the UDE perspective expressions window (TriCore demo project). 2011-11-24 11:54:42 +00:00
Richard Barry
7b23ebf63c Update TriCore model files so the .data section is initialised during startup. 2011-11-24 11:27:14 +00:00
Richard Barry
abb476db24 Formatting changes only in TriCore porttrap.c. 2011-11-22 13:35:26 +00:00
Richard Barry
63cab86cc7 Remove debug code from the TriCore port.c file. 2011-11-22 13:27:17 +00:00
Richard Barry
3780e672a8 Commit changes to the TriCore demo UDE project. 2011-11-22 13:25:18 +00:00
Richard Barry
eb8f02358e Fix compiler warning in timers.c/h that are only seen when the file is compiled on 8 bit devices.
Update example source code in timers.h so the parameter names match those in timers.c.
Fix "known issue" bug in xTaskResumeFromISR() (which was missing a critical section).
2011-11-22 13:24:32 +00:00
Richard Barry
562eedc434 All for the TriCore demo:
+ Comment serial.c
+ Improve the interaction between InterruptNetTest.c and main.c so both too short and too long periods are trapped.
+ Remove debug code from FreeRTOSConfig.h.
2011-11-22 13:21:37 +00:00
Richard Barry
5832e409d1 Fix compiler warning in TimerDemo.c that is only seen when the file is compiled on 8 bit devices. 2011-11-22 13:18:54 +00:00
Richard Barry
de4a548c07 Configure release configuration for the Win32 lwIP project. 2011-11-19 22:27:28 +00:00
Richard Barry
9d4616eb55 Wind up the baud rate on the TriCore UART to obtain an extra level of interrupt nesting.
Set the UART into loopback mode so a jumper is not required.
2011-11-18 11:25:19 +00:00
Richard Barry
b89f1a729a Latest TriCore port files - these still contain some debug code, and are not yet fully documented. 2011-11-17 11:16:21 +00:00
Richard Barry
93c4c48f78 Latest TriCore demo files - these still contain some debug code, and are not yet fully documented. 2011-11-17 11:11:15 +00:00
Richard Barry
b8c1195c40 Added: /* This is called from the context switch, so will be called from a
critical section.  xTaskGetTickCountFromISR() contains its own critical
	section, and the ISR safe critical sections are not designed to nest,
	so reset the critical section. */
	portSET_INTERRUPT_MASK_FROM_ISR();

in main.c.
2011-11-13 21:13:26 +00:00
Richard Barry
188128f788 Added the portALIGNMENT_ASSERT_pxCurrentTCB macro.
Updated the TriCore port layer so its compare match setup does not effect any other compare match bits.
2011-10-28 11:50:00 +00:00
Richard Barry
f354d6599e Add in interrupt nesting test - not yet complete. 2011-10-28 11:46:15 +00:00
Richard Barry
8d748af95c Updated TriCore demo application. 2011-10-27 10:45:27 +00:00
Richard Barry
41ef155824 Update TriCore GCC port layer. 2011-10-27 10:44:31 +00:00
Richard Barry
7f8a5ae148 Add timer demo to TriCore port. Add mainCREATE_SIMPLE_LED_FLASHER_DEMO_ONLY into main.c. Finish commenting main.c. 2011-10-25 11:16:59 +00:00
Richard Barry
0997b286bc Add the death.c standard demo files to the TriCode demo. 2011-10-24 12:32:00 +00:00
Richard Barry
70cfbda2e8 Minor changes to the TriCore port made during test/validation. 2011-10-24 12:30:35 +00:00
Richard Barry
dd10b91fc4 TriCore demo: Add comments and modify the reg test tasks to give a better change of error detection. 2011-10-20 10:08:19 +00:00
Richard Barry
45fe448d73 First commit with TriCore port and demo - still a work in progress. 2011-10-17 13:17:58 +00:00
Richard Barry
75dc89826f First commit with TriCore port and demo - still a work in progress. 2011-10-17 13:17:14 +00:00
Richard Barry
0025e1ed9d Remove needs-lock SVN parameter from files in the CORTEX-LM3Sxxxx_IAR_KEIL directory. 2011-10-10 12:10:33 +00:00
Richard Barry
3f3e6ba246 Update RX630 to add in some timer demo code, and remove all mention of Ethernet.
Minor comment corrections in the RX200 demo.
2011-10-07 09:58:16 +00:00
Richard Barry
56eb9ebec3 Create RX630/Renesas project. 2011-10-07 08:30:23 +00:00
Richard Barry
317dc7ffd4 Change version numbers of files that are in SVN, but not included in the release yet. 2011-09-30 10:52:03 +00:00
Richard Barry
3eb4966af3 Add missing header file to the Windows lwIP demo project. 2011-09-30 10:32:50 +00:00
Richard Barry
9c25614cf4 Add an assert in the Win32 lwIP port layer to catch invalid adapter numbers being used. 2011-09-26 14:47:08 +00:00
Richard Barry
0e7c46fbd3 Update the version numbers in the demos that were not released in V7.0.2 to be V7.0.2. 2011-09-26 14:46:18 +00:00
Richard Barry
42fa20daec Add an optional global buffer to the command interpreter that can be used for command interpreter output. This removes the need for multiple output buffers to be allocated when more than one command interpreter is implemented. 2011-09-26 14:27:03 +00:00
Richard Barry
cc61126025 Update headers for the FreeRTOS V7.0.2 release. 2011-09-20 18:22:39 +00:00
Richard Barry
6031a62f72 Second phase of renaming RegisterTestTasks.s to RegisterTestTasks.S. 2011-09-20 16:52:17 +00:00
Richard Barry
d4476b0746 First phase of renaming RegisterTestTasks.s to RegisterTestTasks.S. 2011-09-20 16:51:28 +00:00
Richard Barry
35f7dba909 Update Win32 lwipopts.h for better efficiency. 2011-09-20 13:38:45 +00:00
Richard Barry
2cd1a46001 Minor changes to prepare the RX210 demo for release. 2011-09-20 13:37:35 +00:00
Richard Barry
9f72fe22d5 Remove disabling of nagle algorithm as the updated lwipopts.h in the MicroBlaze port makes it unnecessary. 2011-09-20 13:35:56 +00:00
Richard Barry
d150ed9baf Update Microblaze Ethernet Lite lwipopts.h for better efficiency. 2011-09-20 13:34:49 +00:00
Richard Barry
d28bd0ff46 Complete RX200 demo. 2011-09-18 15:45:52 +00:00
Richard Barry
83f0af8764 Lots of work on the RX200 demo. Blinky and Full/Debug build configurations are now tested, after adding the BussonAndLCD.c/h files. Full/Optimised is yet to be built or tested. 2011-09-17 16:41:46 +00:00
Richard Barry
025abf6f6a Moved some files into the include folder that were previously in the root. 2011-09-16 14:49:18 +00:00
Richard Barry
47455d6d1b Moved some files into the Renesas-Files folder that were previously in the root. 2011-09-16 14:47:36 +00:00
Richard Barry
93940b4717 Continue work on RX200 demo. Still a work in progress. 2011-09-16 14:38:36 +00:00
Richard Barry
5441cb959b Update demo projects for RX210, not yet complete, and not yet actually built. 2011-09-16 08:48:59 +00:00
Richard Barry
4883a72844 Update RL78 EWRL78 project settings so they can be used with the KickStart version of the IAR tools. 2011-09-13 15:12:56 +00:00
Richard Barry
2ae99f32f6 Delete the BasicSocketCommandServer task if the task exits, which can happen if the listening socket cannot be created. 2011-09-12 21:15:09 +00:00
Richard Barry
0d3d91fc51 Update sys_arch.c for Xilinx Ethernet Lite IP. 2011-09-12 21:13:25 +00:00
Richard Barry
03e2338deb Add warnings about mixing untested memory models in the RL78 port. 2011-09-09 20:37:50 +00:00
Richard Barry
d500594b8a Tidy up the RL78 port layer. 2011-09-09 18:52:30 +00:00
Richard Barry
1fe7f40fad Read the RL78 demo for release. 2011-09-09 18:51:09 +00:00
Richard Barry
573497fbe0 Tidy up the RL78 port layer. 2011-09-09 16:18:57 +00:00
Richard Barry
476a87dfdc Ready the RL78 port for release. 2011-09-09 12:37:07 +00:00
Richard Barry
e38ff18256 Read the RL78 demo for release. 2011-09-09 12:36:32 +00:00
Richard Barry
80341af3f5 Complete the RL78 demo. main.c still requires documentation in the comments at the top of the file. 2011-09-09 10:10:01 +00:00
Richard Barry
6ac7b7a9da Complete the RL78 demo. main.c still requires documentation in the comments at the top of the file. 2011-09-09 10:09:10 +00:00
Richard Barry
5e583219d6 Some updates to the fledgling RL78 demo application. Not yet complete. 2011-09-06 16:11:48 +00:00
Richard Barry
9290e3e71f Add use of portPOINTER_SIZE_TYPE to tasks.c to facilitate the removal of warnings when the pointer size is less than 32 bits. 2011-09-06 16:10:30 +00:00
Richard Barry
272cd59c26 Add use of portPOINTER_SIZE_TYPE to tasks.c to facilitate the removal of warnings when the pointer size is less than 32 bits. 2011-09-06 16:09:48 +00:00
Richard Barry
de3807389a Add RL78 port layer. Note yet complete. 2011-09-06 16:08:38 +00:00
Richard Barry
4ec258f31c Add an RX210 demo project. 2011-09-02 19:58:18 +00:00
Richard Barry
5182e65d0d Remove .dep file that should have have been included in the repository. 2011-09-02 18:48:12 +00:00
Richard Barry
11cd605be7 Added RX200 port layer. 2011-09-02 18:31:56 +00:00
Richard Barry
1abff5d5cd Start an RL78 demo project. 2011-09-02 10:49:16 +00:00
Richard Barry
e256bca3f9 MB9A314 Keil projects are now all fully functional. 2011-08-31 13:54:06 +00:00
Richard Barry
99c1322650 Keil MB9A310 project is now building, but not yet tested. 2011-08-31 10:38:44 +00:00
Richard Barry
9bfeb26579 Change Keil startup code to correct FM3 device. 2011-08-31 09:59:25 +00:00
Richard Barry
bcbd6c8a7d Added demo for the MB9A314 - the IAR project is working, the Keil one is not set up for the correct chip yet. 2011-08-30 20:32:41 +00:00
Richard Barry
9c92745440 Hardware and software for the MicroBlaze project that uses the full Ethernet IP is now building - but the MAC driver has not yet been written. 2011-08-28 18:38:32 +00:00
Richard Barry
d14eb96aeb Remove platform studio project as it is about to be replaced. 2011-08-28 16:41:01 +00:00
Richard Barry
1baa62e424 Remove redundant bit being set in the status register of the PIC32. 2011-08-28 13:07:54 +00:00
Richard Barry
3a4d907c64 Modify the stack set up when ARM7/9 tasks are created to ensure the assert() calls in xTaskCreate() don't fail. In this case, the assert that would fail is actually redundant anyway, but should not be removed as it might not be redundant in all ports. 2011-08-28 13:06:11 +00:00
Richard Barry
98860dee6a Remove obsolete comment. 2011-08-27 19:12:45 +00:00
Richard Barry
a7f8a586f4 First version of the MicroBlaze demo with the full Ethernet IP. The Ethernet driver is not yet written. 2011-08-27 14:34:12 +00:00
Richard Barry
3104a7cf38 Remove directory that is not required. 2011-08-27 14:30:48 +00:00
Richard Barry
d6aba020b0 Remove some large files from the repository that don't need to be there. 2011-08-27 14:23:59 +00:00
Richard Barry
731a01f8f4 Remove some large files from the repository that don't need to be there. 2011-08-27 14:22:36 +00:00
Richard Barry
678396f61b 2011-08-27 14:20:58 +00:00
Richard Barry
df4feccb98 Rename the projects used in the Ethernet Lite MicroBlaze demo. 2011-08-27 13:44:31 +00:00
Richard Barry
c87a82bb7b Rename the directories used in the Ethernet Lite MicroBlaze demo. 2011-08-27 13:30:01 +00:00
Richard Barry
a16be7fb4e Update platform studio project for MicroBlaze with full Ethernet. 2011-08-27 11:55:55 +00:00
Richard Barry
dbb0c1d13a First MicroBlaze hardware build with full Ethernet. 2011-08-27 06:45:09 +00:00
Richard Barry
f4ae3c75bb Rename MicroBlaze project that uses the full Ethernet IP. 2011-08-26 17:49:13 +00:00
Richard Barry
ea4f399a88 Remove MicroBlaze with full Ethernet project, so it can be generated again. 2011-08-26 17:42:54 +00:00
Richard Barry
856b801d33 Remove MicroBlaze with full Ethernet project, so it can be generated again. 2011-08-26 17:40:50 +00:00
Richard Barry
940b9ce27e Remove MicroBlaze with full Ethernet project, so it can be generated again. 2011-08-26 17:40:25 +00:00
Richard Barry
471ddd3c39 Mark original MicroBlaze project as deprecated. 2011-08-26 16:46:54 +00:00
Richard Barry
ae4a38f5d8 Remove unused variable warning. 2011-08-26 16:44:02 +00:00
Richard Barry
e1c944ec65 Correct task names in BlockQ.c. 2011-08-26 16:43:16 +00:00
Richard Barry
d681d02acf Update the number of PCB buffers. 2011-08-26 15:40:45 +00:00
Richard Barry
6a561bb2e7 Add queue registry usage to the MicroBlaze demo so it can be used with the state viewer plug in. 2011-08-26 12:37:54 +00:00
Richard Barry
542a01f8bc Minor corrections in the comments punctuation. 2011-08-26 12:36:05 +00:00
Richard Barry
39f8526265 Changed the MicroBlaze demo back to using heap_3.c having updated the linker script generation. 2011-08-24 12:38:38 +00:00
Richard Barry
08d7c89175 Changed the MicroBlaze demo back to using heap_3.c having updated the linker script generation. 2011-08-24 11:59:06 +00:00
Richard Barry
c056029422 Added BSP generation files to MicroBlaze directory. 2011-08-24 11:08:01 +00:00
Richard Barry
0dc4153997 Update the MicroBlaze CreateProjectDirectoryStructure.bat file to also copy files into the BSP directory, and to use path variables for the relative paths. 2011-08-24 10:42:27 +00:00
Richard Barry
667b722bde Update the names of some of the newly introduced API functions so they are more consistent with the names of pre-existing API functions. 2011-08-07 10:37:24 +00:00
Richard Barry
40ce7c8b52 Update the real copy of the Ethernet driver for the MicroBlaze EmacLite IP. 2011-08-07 10:28:13 +00:00
Richard Barry
a6ce07a130 Commit existing xps project for the new MicroBlaze demo. 2011-08-07 10:25:24 +00:00
Richard Barry
3a25b5f33b Update the names of some of the newly introduced API functions so they are more consistent with the names of pre-existing API functions. 2011-08-07 10:22:57 +00:00
Richard Barry
28629a7ea6 Update the names of some of the newly introduced API functions so they are more consistent with the names of pre-existing API functions. 2011-08-07 10:22:20 +00:00
Richard Barry
405a2ca22c Add run time stats gathering to the MicroBlaze demo. 2011-08-07 10:08:04 +00:00
Richard Barry
1b762ec32d Update the pages served by the MicroBlaze web server. 2011-08-07 10:06:34 +00:00
Richard Barry
0d691b2095 Minor tidy up of the lwIP_Apps file and configuration in the new MicroBlaze demo. 2011-08-06 11:11:22 +00:00
Richard Barry
153a9f8ddb Add printf-stdarg.c to the new MicroBlaze demo. 2011-08-06 11:10:17 +00:00
Richard Barry
8c6dba2726 Add in necessary functionality to autonegotiate using the EthernetLite interface to the PHY. 2011-08-06 08:28:25 +00:00
Richard Barry
ff8a7626d0 Change command interpreter semantics. 2011-08-03 09:36:12 +00:00
Richard Barry
49f726cf25 Change command interpreter semantics. 2011-08-03 09:35:21 +00:00
Richard Barry
59fbe1da22 Fix a few compiler warnings in utils when compiled with GCC. 2011-08-02 09:45:12 +00:00
Richard Barry
815bde09b9 Comment the command line interpreter and lwIP sockets based server code. 2011-08-01 16:06:06 +00:00
Richard Barry
5ca1d4194d Comment the command line interpreter and lwIP sockets based server code. 2011-08-01 16:03:49 +00:00
Richard Barry
723bed71bf Move the MSVC/lwIP code into the main line - not yet tested since moved. 2011-08-01 10:58:22 +00:00
Richard Barry
d53ed61cab Move the MSVC/lwIP code into the main line. 2011-08-01 08:57:11 +00:00
Richard Barry
1aa52c2a7a Update a few util functions in the common demo area. 2011-08-01 08:34:05 +00:00
Richard Barry
a548ef34f8 Remove vTaskCleanUpResources() calls. 2011-08-01 08:07:44 +00:00
Richard Barry
31dc786620 A few updates for coding standard reasons. 2011-08-01 08:05:37 +00:00
Richard Barry
254b61871e A few updates for coding standard reasons. 2011-08-01 08:00:17 +00:00
Richard Barry
5063200c86 Remove vTaskCleanUpResources() from core header files. 2011-08-01 07:48:56 +00:00
Richard Barry
6cc59de148 Remove files that are not required from the MicroBlaze demo project directories. 2011-07-27 19:18:45 +00:00
Richard Barry
be7f88c78f Remove files that are not required from the MicroBlaze demo project directories. 2011-07-27 19:17:37 +00:00
Richard Barry
0d56e9a4a5 Delete directories that were added to the repository by mistake (those containing binaries) - woops. 2011-07-27 19:11:29 +00:00
Richard Barry
e9e8365c8f Create project directory structure for the MicroBlaze demo project that uses the full Ethernet IP (rather than the Ethernet Lite IP). 2011-07-27 19:09:17 +00:00
Richard Barry
74eedea5db Check in the MicroBlaze projects before copying them to create the version that uses the full Ethernet. 2011-07-27 16:54:57 +00:00
Richard Barry
f69b2efa66 Delete unused header file in the MicroBlaze Ethernet Lite port directory. 2011-07-27 16:53:32 +00:00
Richard Barry
2981d9f5c1 2011-07-27 16:52:32 +00:00
Richard Barry
eb69ddce43 Fix compiler warning in sockets.c of lwip-1.4.0. 2011-07-27 16:51:11 +00:00
Richard Barry
6e81135a0d Add comtest_strings.c and comtest_strings.h to the proper Demo/Common/Minimal directory. 2011-07-27 16:39:59 +00:00
Richard Barry
6e2aeed966 Remove all workspace local copies of files that should be copied across using the CreateProejctDirectoryStructure.bat batch file. 2011-07-27 16:19:52 +00:00
Richard Barry
42aed81857 Add test/demonstration calls to xTaskGetIdleTaskHandle(), xTimerGetTimerTaskHandle, pcTaskGetTaskName() and vQueueDelete() functions to the Win32 demo project. 2011-07-27 14:16:24 +00:00
Richard Barry
6fa8cd4302 Add in the vSemaphoreDelete() macro. 2011-07-27 14:12:35 +00:00
Richard Barry
fc99c14905 Add in the pcTaskGetTaskName(), xTaskGetIdleTaskHandle() and xTimerGetTimerTaskHandle() API functions. 2011-07-27 14:02:37 +00:00
Richard Barry
a2a309c263 Update the batch file that copies the MicroBlaze code to use the MicroBlaze8 directory in place of the standard MicroBlaze directory in the FreeRTOS Source directory tree. 2011-07-27 13:05:23 +00:00
Richard Barry
4154b31454 Move new MicroBlaze V8 port from the project directory into its correct location in the directory structure. 2011-07-27 13:03:14 +00:00
Richard Barry
fab6050ab8 Regenerate the EthernetLite hardware (MicroBlaze) in an attempt to get Rx working. 2011-07-27 12:08:38 +00:00
Richard Barry
1019db5850 Regenerate the EthernetLite hardware (MicroBlaze) in an attempt to get Rx working. 2011-07-27 12:06:38 +00:00
Richard Barry
a12c133956 Clear off a few compiler warnings generated when pedantic warnings are switched on. 2011-07-27 12:05:56 +00:00
Richard Barry
ff77d82ceb Update lwIP port layer for the Microblaze Ethernet Lite IP. 2011-07-27 12:04:15 +00:00
Richard Barry
5d3a35a1f3 Clear off a few compiler warnings generated when pedantic warnings are switched on. 2011-07-27 12:02:08 +00:00
Richard Barry
87b97f5510 Update PIC32 asm code ready for MPLAB compiler V2. 2011-07-25 15:38:19 +00:00
Richard Barry
fe6284e807 Update PIC32 asm code ready for MPLAB compiler V2. 2011-07-25 15:35:54 +00:00
Richard Barry
6c0fe51bf2 Update the demo directory (temporary) local copy of the MicroBlaze EthernetLite port layer. 2011-07-24 16:21:23 +00:00
Richard Barry
9d1c23f6da Add in starting point for the MicroBlaze EthernetLite lwIP port layer. 2011-07-24 16:19:52 +00:00
Richard Barry
a176b54de5 MicroBlaze demo now building with lwIP included - but will not link until the Ethernetif file is implemented. 2011-07-24 11:14:40 +00:00
Richard Barry
12a722bf36 Remove unnecessary files from the MicroBlaze http server file system creation directory. 2011-07-24 10:31:22 +00:00
Richard Barry
1052e6585f Update CreateProjectDirectoryStructure.bat to add in the lwIP source files, and add the source files themselves. The source files will be removed before release. 2011-07-24 09:53:54 +00:00
Richard Barry
c39170ef64 Add raw httpd web server to the MicroBlaze demo - not build yet - only a file copy exercise so far. 2011-07-23 21:32:32 +00:00
Richard Barry
98309c3f4d Add lwIP_Apps directory structure to the MicroBlaze demo. 2011-07-23 21:20:57 +00:00
Richard Barry
c023af9c39 Add a separate portMINUS_CONTEXT_SIZE definition, in place of the previously used -portCONTEXT_SIZE usage. 2011-07-23 21:14:43 +00:00
Richard Barry
9beca8b1b1 2011-07-23 21:12:53 +00:00
Richard Barry
ad57e919b5 Minor typo in comment corrected in the Kinetis main-full.c. 2011-07-23 21:11:24 +00:00
Richard Barry
adabfbe8b7 Add lwIP V1.4.0 source files. 2011-07-23 20:22:27 +00:00
Richard Barry
a089537b02 Comment K60 demo code, ready for release. 2011-07-11 12:06:57 +00:00
Richard Barry
dcb8df1fce Get web server and run time stats working in the Kinetis K60 demo. 2011-07-10 21:10:11 +00:00
Richard Barry
326b6a2c95 Ethernet working in the Kinetis K60 demo. 2011-07-10 12:16:13 +00:00
Richard Barry
9d181af847 Add Full build configuration to the Kinetis demo. Still a work in progress. 2011-07-08 21:02:03 +00:00
Richard Barry
862f99832d Start creating the K60 demo directory structure. 2011-07-08 09:55:18 +00:00
Richard Barry
d0e8c36aa2 Start creating the K60 demo directory structure. 2011-07-08 08:57:54 +00:00
Richard Barry
248123342b Prepare files for export (MicroBlaze project). 2011-07-05 13:52:52 +00:00
Richard Barry
6e30a6cb75 Comment the exception handling functions in the MicroBlaze portmacro.h file. 2011-07-04 20:18:29 +00:00
Richard Barry
b59d10c893 Change vTickISR() to vPortTickISR() in the new MicroBlaze demo. 2011-07-04 18:15:22 +00:00
Richard Barry
1f5e2a944c Add vSemaphoreDelete(), xTaskGetIdleTaskHandle(), xTimerGetTimerTaskHandle() API functions. Change vTickISR() to vPortTickISR(). Partially comment portmacro.h. All for the new MicroBlaze port. 2011-07-04 18:13:09 +00:00
Richard Barry
3d5656e37e Clean up some of the exception handling code in the new MicroBlaze port. 2011-07-02 18:51:18 +00:00
Richard Barry
f90794f05a Comment the new MicroBlaze port layer files. 2011-06-30 18:26:32 +00:00
Richard Barry
0e12cd0768 Comment the new standard demo files that were introduced for the new MicroBlaze demo project. 2011-06-30 15:14:46 +00:00
Richard Barry
9d6eabdcfb Comment the new standard demo files that were introduced for the new MicroBlaze demo project. 2011-06-30 15:12:42 +00:00
Richard Barry
77df4daee7 Comment the peripheral helper files for the new MicroBlaze demo application. 2011-06-30 14:42:07 +00:00
Richard Barry
07e3174ad7 Complete first pass commenting of the new MicroBlaze demo main-blinky.c and main-full.c files. 2011-06-30 09:30:14 +00:00
Richard Barry
e46b2a304f Continue commenting the new MicroBlaze demo. 2011-06-29 19:03:59 +00:00
Richard Barry
0e02cc56b1 Add the standard demo/test timers task to the MicroBlaze demo. 2011-06-29 19:02:33 +00:00
Richard Barry
5fdee187d4 Comment the new MicroBlaze blinky demo ready for release. The full demo still requires work. 2011-06-29 15:02:10 +00:00
Richard Barry
832bbd38e1 Extend the exception handling functionality in the new MicroBlaze port. 2011-06-29 08:50:13 +00:00
Richard Barry
71b359154b Implementing exception handling in the new MicroBlaze port - still a work in progress. 2011-06-26 20:56:49 +00:00
Richard Barry
8b0ccf1444 New MicroBlaze port: Added a FreeRTOS exception handler, and installed it in each position in the exception table. The handler itself does not do much yet. 2011-06-24 18:50:45 +00:00
Richard Barry
4108061316 Complete the new comtest_strings.c file.
Somewhat optimise the calling of vTaskSwitchContext() from interrupts in the new MicroBlaze port to ensure it does not get called multiple times when more than one peripheral is called from the same interrupt.
2011-06-20 19:40:50 +00:00
Richard Barry
a4de9fa8f6 Add in the comtest test tasks to the MicroBlaze demo. 2011-06-19 21:19:33 +00:00
Richard Barry
7b24b4c30c Add the comtest_strings.c and serial.c files - Tx is workings, but both files are still a work in progress. 2011-06-19 13:15:47 +00:00
Richard Barry
2874006c7b Rebuild MicroBlaze hardware to experiment with UART - then put hardware back to how it was originally. 2011-06-19 13:00:59 +00:00
Richard Barry
56875b34d6 Rebuild MicroBlaze hardware to experiment with UART - then put hardware back to how it was originally. 2011-06-17 21:31:39 +00:00
Richard Barry
0512d10a02 Re-arrange the temporary MicroBlaze directory structure slightly. 2011-06-16 20:05:19 +00:00
Richard Barry
be9b7e82c8 Add the common demo files to the MicroBlaze project - this directory will be removed prior to release. 2011-06-16 19:47:49 +00:00
Richard Barry
53d52c0cd3 Remove the needs-lock SVN attribute. 2011-06-16 14:59:47 +00:00
Richard Barry
5ddcf3d36a Update the Cortex-M3 IAR projects to compile with EWARM 6.20 where necessary. 2011-06-16 14:35:57 +00:00
Richard Barry
d873c2705d Introduce sp_flop.c. This is the same as the flop.c common demo file, but uses single precision numbers and variables in place of the double precision numbers and variables. 2011-06-15 16:44:08 +00:00
Richard Barry
c9b5f43d11 Add optional FPU support to the MicroBlaze code.
Rearrange the order in which registers are saved to the stack in an interrupt to make it more logical, and introduce #defines for the offset from the stack pointer for each variable.
2011-06-15 16:42:04 +00:00
Richard Barry
4d287dd1bf Small tidy up of the new MicroBlaze port layer. 2011-06-15 08:39:45 +00:00
Richard Barry
00bfe2f025 Small tidy up of the main-full.c file for the new MicroBlaze demo. 2011-06-15 08:38:01 +00:00
Richard Barry
587e7f0682 Update register test tasks to include a manual yield. Include the death tasks in main-full.c. Decrease the RAM allocated to the heap in FreeRTOSConfig.h. 2011-06-13 14:41:18 +00:00
Richard Barry
1cb4a1494f Remove the heap used with the new MicroBlaze demo. As heap_2.c is being used, the heap area set up in the linker script is not required. 2011-06-13 14:39:22 +00:00
Richard Barry
8d23799758 First pass changes to new MicroBlaze port layer done. No new functionality has yet been added. 2011-06-13 14:37:32 +00:00
Richard Barry
cdac2c4f82 MicroBlaze demo nearly working - death tasks not yet integrated - still a work in progress. 2011-06-12 15:55:45 +00:00
Richard Barry
57653ee0ea Work on the Full build configuration for the MicroBlaze. Still a work in progress - not all tasks are running yet. 2011-06-11 21:04:17 +00:00
Richard Barry
78953066af Delete again. 2011-06-11 19:26:03 +00:00
Richard Barry
7a6dacf296 2011-06-11 19:12:26 +00:00
Richard Barry
d487077d6e First phase of renaming portasm.s in the MicroBlaze port. 2011-06-11 18:31:04 +00:00
Richard Barry
4c80a9948e Tidy up the MicoBlaze port layer - still a work in progress. 2011-06-11 12:00:52 +00:00
Richard Barry
3e07dd4a03 Add a register test to the new MicroBlaze demo - still a work in progress. 2011-06-10 09:43:12 +00:00
Richard Barry
4cda2df265 MicroBlaze projects: Split build configurations into blinky and full. Implement partest.c. Everything still a work in progress. 2011-06-06 21:01:42 +00:00
Richard Barry
9f0bf057e6 Add LED output to the new MicroBlaze blinky demo - still a work in progress. 2011-06-05 16:39:49 +00:00
Richard Barry
ea5ec656f4 Continue work on MicroBlaze port - still very much a work in progress. 2011-06-03 19:22:17 +00:00
Richard Barry
1e5830a157 Continue work on MicroBlaze port - still very much a work in progress. 2011-06-03 09:01:21 +00:00
Richard Barry
67039f6065 Updating MicroBlaze port - work in progress. 2011-06-01 15:01:08 +00:00
Richard Barry
328a8b586f Updating MicroBlaze port - work in progress. 2011-06-01 11:01:58 +00:00
Richard Barry
f5b2c790a0 Add framework for new MicrobBlaze blinky project. 2011-05-31 20:38:48 +00:00
Richard Barry
ee4659b678 Add autogenerated test source code to the new MicroBlaze project. 2011-05-31 18:14:58 +00:00
Richard Barry
d4670870fb Restart the Microblaze project (again). 2011-05-31 09:08:05 +00:00
Richard Barry
3c5b78631b Remove MicroBlaze directory. 2011-05-31 08:37:52 +00:00
Richard Barry
dbe65c9aaf Remove MicroBlaze directory. 2011-05-31 08:35:12 +00:00
Richard Barry
1438e844d9 Remove MicroBlaze directory. 2011-05-31 08:34:25 +00:00
Richard Barry
659be53a3e Remove MicroBlaze directory. 2011-05-31 08:33:47 +00:00
Richard Barry
52a9e4ecd8 Renamed MicroBlaze directory to MicroBlaze_Spartan-6_EthernetLite. 2011-05-31 08:27:43 +00:00
Richard Barry
04f17c5cee Renamed MicroBlaze directory to MicroBlaze_Spartan-6_EthernetLite. 2011-05-31 08:25:12 +00:00
Richard Barry
f4009da657 Create MicroBlaze hardware - work in progress. 2011-05-31 07:55:45 +00:00
Richard Barry
61f15c5c17 Create MicroBlaze hardware - work in progress. 2011-05-30 20:57:52 +00:00
Richard Barry
3d5b5ce834 Restart the new MicroBlaze hardware project. 2011-05-30 20:37:24 +00:00
Richard Barry
29f7b76be0 Create MicroBlaze hardware - work in progress. 2011-05-30 20:07:13 +00:00
Richard Barry
2aa3a13d32 Start MicroBlaze project for the Spartan-6. 2011-05-30 15:56:32 +00:00
Richard Barry
dedc9d8c46 Change some (xTIMER *) references in the documentation for the timer module to be instead xTimerHandle references (the two are in effect equivalent, but xTIMER is private to the timers source file). 2011-05-15 17:31:53 +00:00
Richard Barry
f5a6b610e1 Update version number to V7.0.1. 2011-05-13 18:31:12 +00:00
Richard Barry
4e39c05bb6 Update all the Rx demos to use timers in their uIP task implementation. 2011-05-13 17:32:30 +00:00
Richard Barry
9ad9969536 The Keil compiler insists on having the IP address structure packed, but doing so causes problems with warnings being generated on other compilers. uip.h was therefore updated to just use the pack attribute when the Keil compiler is used. 2011-05-13 17:28:46 +00:00
Richard Barry
4f08018fa8 Update the RSK and RDK RX600 demos that use the Renesas compiler to include the extra port layer file needed when using V1.0.2.0 of the Renesas tools. 2011-05-13 13:57:04 +00:00
Richard Barry
ef41907cab Update comment in the A2F main-full.c file for the SoftConsole demo. 2011-05-13 13:23:54 +00:00
Richard Barry
dbd0c5ff80 Update comment in the A2F main-full.c file for the IAR and Keil demos. 2011-05-13 13:21:48 +00:00
Richard Barry
1f452ffdc3 Move the ehb instruction in the PIC32/MPLAB port layer. 2011-05-13 10:42:16 +00:00
Richard Barry
f95c8efb63 Complete the Keil full FM3 demo. 2011-05-07 18:29:53 +00:00
Richard Barry
6cb1ea3ae4 Added Keil Blinky build configuration for the MB9B500 FM3. 2011-05-07 12:13:12 +00:00
Richard Barry
a67536618a Complete the IAR FM3 demo. 2011-05-06 19:25:12 +00:00
Richard Barry
b1727357b5 Added the digit counter timer to the FM3/IAR demo. 2011-05-06 11:13:11 +00:00
Richard Barry
f6bf081cdb Added first version of the "full" build configuration to the FM3/IAR demo. 2011-05-06 10:14:29 +00:00
Richard Barry
fdceeeb190 Complete FM3/IAR blinky build configuration. 2011-05-05 18:40:28 +00:00
Richard Barry
8c4c025c30 Add extra files to the MB9BF506N demo project. 2011-05-05 18:14:42 +00:00
Richard Barry
5d31ac594b Rename the Debug build configuration in the FM3 IAR demo to Blinky. 2011-05-04 20:27:39 +00:00
Richard Barry
6be0a39eea Correct the name of a variable in the A2F Blinky demos from xFreeStackSpace to xFreeHeapSpace. 2011-05-04 20:25:18 +00:00
Richard Barry
e8fe7aa08e Change the main_blinky for the FM3 demo to use falling edge interrupts on the button input. 2011-05-04 20:12:40 +00:00
Richard Barry
80db62e711 Add in an FM3/IAR 2011-05-04 19:05:31 +00:00
Richard Barry
4de76dbc82 Fix in tasks.c related to https://sourceforge.net/tracker/?func=detail&aid=3295065&group_id=111543&atid=659633 2011-04-29 19:33:07 +00:00
Richard Barry
6d9cd6ff47 RC 2 of the Microsemi demos. 2011-04-29 13:22:11 +00:00
Richard Barry
a204921cc5 Commit the new files required for the ACE driver in the SmartFusion demo. 2011-04-29 13:02:19 +00:00
Richard Barry
fca97d4834 Put back the #error statement in FreeRTOS config for the Eclipse SmartFusion demo - it should not have been checked in with it out. 2011-04-29 12:00:33 +00:00
Richard Barry
3463753afc RC 1 of the Microsemi demos. 2011-04-29 11:57:38 +00:00
Richard Barry
eadd0048c4 Update the SmartFusion SoftConsole source code to be the same as the IAR and Keil versions. 2011-04-29 10:31:01 +00:00
Richard Barry
2aef3e3cfe Complete Keil SmartFusion demo projects. 2011-04-29 09:28:13 +00:00
Richard Barry
96b1dc773f Update the FreeTCPIP files such that Keil is happy compiling them with the pack struct header file definitions. 2011-04-28 19:38:32 +00:00
Richard Barry
44fc593dfe Add the Keil project to the SmartFusion demo directory, and update the source code so it compiles with both IAR and Keil. 2011-04-28 19:37:30 +00:00
Richard Barry
f155921461 Tidy up the IAR SmartFusion demo reading for release. 2011-04-28 15:13:30 +00:00
Richard Barry
f6879be327 Put some belt and braces checks into the updated SmartFusion MAC driver. 2011-04-28 15:01:40 +00:00
Richard Barry
d23df3d0af Remove ACE files that are not necessary for the SmartFusion demo. 2011-04-28 14:59:31 +00:00
Richard Barry
65ceb00a1f Add in functions required to configure the ACE in the SmartFusion demo. 2011-04-28 14:56:15 +00:00
Richard Barry
5831485bdf Update the A2F SoftConsole project to match the current A2F IAR project. 2011-04-27 16:05:36 +00:00
Richard Barry
9b6bd9e419 Update the IO page served by the A2F web server to use the correct LED for the A2F-EVAL-KIT hardware. 2011-04-27 15:11:42 +00:00
Richard Barry
72400ce72a 2011-04-25 15:00:34 +00:00
Richard Barry
2e2ab0b4dd Continue work on the IAR Microsemi Smartfusion demo. Still a work in progress. 2011-04-25 14:48:15 +00:00
Richard Barry
11254c9da4 Add in the Microsemi timer driver to provide a time base for the run time stats. 2011-04-25 14:44:55 +00:00
Richard Barry
b84c870b54 Update the Microsemi I2C code to be event driver, rather than polling for Tx complete. 2011-04-25 14:43:34 +00:00
Richard Barry
1f2a287b7f Change Demo/Common/Minimal/death.c so it takes into account the timer daemon task in its calculation of the number of tasks that should be running. 2011-04-25 14:41:15 +00:00
Richard Barry
51f445fc67 SmartFusion A2F demo work in progress. 2011-04-24 19:37:10 +00:00
Richard Barry
f11836f206 Update the A2F uIP_Task definition for use with the updated (zero copy) A2F Ethernet driver. 2011-04-24 19:09:12 +00:00
Richard Barry
c1d000b654 Update MAC drivers so they use a uIP specific zero copy mechanism. 2011-04-24 18:45:58 +00:00
Richard Barry
5fbf3ab27e Change the RX62N port layer to allow it to be used with the V1.0.2 of the Renesas compiler. 2011-04-23 15:36:10 +00:00
Richard Barry
4a1716ac67 Add definitions for the different types of event that need processing by the TCP/IP stack. 2011-04-23 15:34:37 +00:00
Richard Barry
4950af89fb Update the RX62N/RDK/Renesas project files for use with V1.0.2 of the Reneasas compiler. 2011-04-23 15:31:17 +00:00
Richard Barry
d390ea696a Update the RX62N/RDK/Renesas project files for use with V1.0.2 of the Reneasas compiler. 2011-04-23 15:30:39 +00:00
Richard Barry
f109e90e15 Update FreeRTOSConfig.h for the RX62N/RDK/Renesas demo to include software timer and configASSERT() functionality. 2011-04-23 15:28:45 +00:00
Richard Barry
753ba20386 Update the uIP_Task.c implementation for the RX62N/RDK/Renesas demo to use FreeRTOS software timers in place of the uIP timers. 2011-04-23 15:27:34 +00:00
Richard Barry
968aa1b199 Change interface between the MAC and uIP task in the RX62N/RDK/Renesas demo to use a queue in place of the binary semaphore. This is so the queue can be used to indicate the type of event that has occurred. 2011-04-23 15:21:59 +00:00
Richard Barry
290e7bd222 Add pack_struct_start and pack_struct_end definitions for ICCARM. 2011-04-22 14:13:51 +00:00
Richard Barry
218c59e058 2011-04-20 20:04:32 +00:00
Richard Barry
d6290b8e48 Change the CMSIS_IAR directory back to just say CMSIS. 2011-04-20 18:37:58 +00:00
Richard Barry
983e91b440 2011-04-20 18:30:43 +00:00
Richard Barry
2d7a71d379 2011-04-20 18:29:28 +00:00
Richard Barry
f53955df4a 2011-04-20 18:24:00 +00:00
Richard Barry
139708e063 Create directory structure to hold the (not yet created) Keil and IAR demo projects for the SmartFusion. 2011-04-20 15:09:58 +00:00
Richard Barry
779e2bf80f 2011-04-20 15:03:42 +00:00
Richard Barry
fb0d9d3c93 Complete the commenting for main-full.c in the A2F demo project, and update the main-full.c and main-blinky.c header comments to be correct for FreeRTOS V7.0.0. 2011-04-20 11:17:06 +00:00
Richard Barry
75e2399319 Complete the commenting for main-blinky.c in the A2F demo project. 2011-04-20 09:09:25 +00:00
Richard Barry
9a76675d1d Update the A2F SoftConsole project files to remove the strange unused/invalid include paths. 2011-04-20 08:23:55 +00:00
Richard Barry
fd20ed4d17 Continue work on the SmartFusion web server demo. 2011-04-18 18:11:03 +00:00
Richard Barry
9ebdc099d1 Removed unused variable from SmartFusion PHY driver. 2011-04-18 08:44:08 +00:00
Richard Barry
9c6a0e4e69 Continue work on the SmartFusion demo web interface. The uIP task has been updated to use software timers, and the mac interface updated to use vTaskDelay() in place of busy waits. 2011-04-17 14:38:50 +00:00
Richard Barry
e659759671 Delete EMAC.c from the A2F demo. 2011-04-17 11:08:07 +00:00
Richard Barry
c0bf3cd7f9 Add in basic uIP files into the A2F demo. Ping is working, but nothing else has been tested yet. This check in includes some modifications to the MAC driver to make the Rx zero copy. 2011-04-17 10:32:09 +00:00
Richard Barry
521d995b9d Corrected a comment in the STM32 FreeRTOSConfig.h file. 2011-04-14 12:49:36 +00:00
Richard Barry
0feaad7183 Corrected a comment in the STM32 FreeRTOSConfig.h file. 2011-04-14 12:46:27 +00:00
Richard Barry
8e3e51e3a2 Add I2S driver to the StmartFusion demo. 2011-04-14 09:37:07 +00:00
Richard Barry
7915c348c3 Add OLED driver to the StmartFusion demo. 2011-04-14 09:31:18 +00:00
Richard Barry
b42d4da7db Continue work on the SmartFusion demo. 2011-04-13 21:07:25 +00:00
Richard Barry
505bee983c Ensure byte alignment is maintained in PIC32 port layer when 8 byte alignment is required (basically, when printing out 8 byte data types). 2011-04-13 15:59:17 +00:00
Richard Barry
3144ef3cc6 Continue work on SmartFusion demo. 2011-04-12 13:49:13 +00:00
Richard Barry
5725c4b305 Alter the default priorities in blocktim.c to prevent asserts being triggered when configMAX_PRIORITIES is set to a low number. 2011-04-12 13:47:09 +00:00
Richard Barry
9481ea480b Continue work on SmartFusion demo. 2011-04-11 19:59:12 +00:00
Richard Barry
ed24f0fdc1 Continue work on the SmartFusion demo. 2011-04-11 16:32:37 +00:00
Richard Barry
a70c881207 Remove shadowed variable name. 2011-04-08 19:40:44 +00:00
Richard Barry
89bf1cf24f Update headers for Version 7.0.0 release. 2011-04-08 18:30:58 +00:00
Richard Barry
7ca26d943a Prepare for V7.0.0 release. 2011-04-08 12:06:33 +00:00
Richard Barry
e5696339e7 Remove unused header files from the STM32 discovery board library configuration file. 2011-04-08 12:00:48 +00:00
Richard Barry
37de268af4 Cosmetic work towards MISRA compliance statement pre release of V7. 2011-04-05 20:19:54 +00:00
Richard Barry
a1842621eb Remove unused library files from the STM32F100 TrueStudio project. 2011-04-05 13:41:35 +00:00
Richard Barry
87b622e0e8 Just change some of the comments in the STM32F100RB TrueStudio main.c file. 2011-04-05 09:46:43 +00:00
Richard Barry
8fc0c27ea5 Ensure that the configMAX_SYSCALL_INTERRUPT_PRIORITY setting works with all possible values. 2011-04-05 09:45:42 +00:00
Richard Barry
9133ceb44d Added STM32 discovery board simple demo project. 2011-04-04 18:54:14 +00:00
Richard Barry
3baaba8800 Rename the SmartFusion Debug build configuration to be the Blinky debug configuration as so far it only includes the basic simple demo. 2011-04-03 20:50:19 +00:00
Richard Barry
19bc9c8a48 Update the SmartFusion SoftConsole directory structure to include the webserver files. 2011-04-03 20:45:09 +00:00
Richard Barry
f74e406997 Add SmartFusion/SoftConsole demo. At the moment only the blinky configuration is included. The full configuration will be added soon. 2011-04-03 19:02:58 +00:00
Richard Barry
0e62058edb Added some trace macros into the timers.c file. 2011-04-01 18:45:44 +00:00
Richard Barry
afe9c0face Minor updates to the PIC32 MPLAB project to prevent it dumping .o files everywhere. 2011-04-01 18:19:34 +00:00
Richard Barry
8bd2d2f682 Add a #if ( configUSE_TIMERS ) conditional compilation constant in to allow the software timers source file to be included in a build that is not configured to use timers without resulting in linker errors. 2011-03-31 14:09:21 +00:00
Richard Barry
876caa2967 Replace portLONG with long, portCHAR with char, and portSHORT with short. 2011-03-27 18:51:55 +00:00
Richard Barry
85096f6159 Replace portLONG with long, portCHAR with char, and portSHORT with short. 2011-03-27 18:50:11 +00:00
Richard Barry
eeeb001d86 Removed the needs-lock SVN attribute from the PIC32 demo project file and workspace file. 2011-03-27 08:13:59 +00:00
Richard Barry
d8bab825bc Add a portNOP() implementation and relax the stack alignment requirements in the IAR MSP430X port layer. 2011-03-26 19:07:38 +00:00
Richard Barry
ce3d65938d Change the priorities used by the RX/RSK/Renesas demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 18:44:42 +00:00
Richard Barry
5421388be5 Change the priorities used by the RX/RSK/GCC demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 15:48:35 +00:00
Richard Barry
fdac74427d Change the priorities used by the RX/RSK/IAR demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 13:41:10 +00:00
Richard Barry
04c5d88e9d Change the priorities used by the RX/RDK/IAR demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 12:19:18 +00:00
Richard Barry
53b611d97a Change the priorities used by the RX/RDK/Renesas demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 11:33:54 +00:00
Richard Barry
89f0b2c0be Change the priorities used by the RX/RDK/GCC demo application to ensure they can be used when configASSERT() is defined. Previously the priorities meant assert would have been called because one of the priorities used was above ( configMAX_PRIORITIES - 1 ). 2011-03-26 10:35:16 +00:00
Richard Barry
ead29065e0 Allow the intqHIGHER_PRIORITY definition to be modified outside of the IntQueue.c file. 2011-03-26 10:00:29 +00:00
Richard Barry
eb16629f11 Update comments only in the MSP430X IAR main.c and serial.c files. 2011-03-24 19:37:18 +00:00
Richard Barry
c85523f870 Finalise MSP430X CCS4 port and demo. 2011-03-14 07:26:50 +00:00
Richard Barry
329c36c6bc Update the MSP430X CCS4 port layer. 2011-03-12 14:59:44 +00:00
Richard Barry
15c46025ab Update TimerDemo.c so it can be used with the CCS4 compiler without generating errors or warnings. 2011-03-12 14:58:09 +00:00
Richard Barry
0ced5cc699 Update the CCS4 MSP430X demo files. 2011-03-12 14:56:14 +00:00
Richard Barry
d53e65ed82 Tidy up timers API documentation comments. 2011-03-10 11:02:31 +00:00
Richard Barry
8a3fa98a2f Continue work on timers module documentation. 2011-03-09 13:49:35 +00:00
Richard Barry
0e133bc0fc Minor comment addition to queue.h. 2011-03-05 17:47:53 +00:00
Richard Barry
553a8389cc Start the documentation of the timer API functions and macros. About 50% done so far. 2011-03-05 17:46:55 +00:00
Richard Barry
a9558864b7 Update PIC24 project for use with the latest Microchip tools. 2011-03-01 15:18:46 +00:00
Richard Barry
605155cbcd Set configUSE_16_BIT_TICKS back to is proper (not test) configuration. 2011-02-28 17:58:09 +00:00
Richard Barry
06899603f3 Add the timer module demo code to the MSVC Win32 simulator demo. 2011-02-28 17:52:14 +00:00
Richard Barry
7b0841b1e9 Check in the timer module test/demo task. 2011-02-28 16:14:49 +00:00
Richard Barry
3f10f92340 Correct the configUSE_16_BIT_TICKS usage in the Win32 simulator port layer. 2011-02-28 16:12:55 +00:00
Richard Barry
95b2901ba6 Correct the configUSE_16_BIT_TICKS usage in the GCC Coldfire port layer. 2011-02-28 16:11:26 +00:00
Richard Barry
cb238fc1fa Finish off timers implementation. 2011-02-28 16:10:08 +00:00
Richard Barry
3c6ae51faf Finish off timers implementation. 2011-02-28 16:09:19 +00:00
Richard Barry
0c95f33e9f Finilise timers testing. 2011-02-27 13:08:44 +00:00
Richard Barry
2c1a85c90c Add some assertion points to timers.c. 2011-02-22 20:43:17 +00:00
Richard Barry
8b5a004be1 Continue testing timers module. Still a work in progress. 2011-02-21 10:52:36 +00:00
Richard Barry
8a9fb9554d Continue testing timers module. Still a work in progress. 2011-02-21 09:38:33 +00:00
Richard Barry
5c98d0eb7c Updates to timers.c related to module testing. 2011-02-20 11:05:54 +00:00
Richard Barry
efc3ba9d73 Updates to timers.c related to module testing. 2011-02-20 10:59:58 +00:00
Richard Barry
50dcd0c682 Move one of the configASSERT() statements in tasks.c to be inside the if() that checks whether the stack should grow up or down. 2011-02-18 17:40:30 +00:00
Richard Barry
7759f7c973 Spell check comments in TimerDemo.c. 2011-02-18 15:59:02 +00:00
Richard Barry
58a700b8f7 WIN32 simulator port: Allow the configTICK_RATE_HZ to be increased without making the sleep time in the simulated timer peripheral too small. 2011-02-14 13:49:50 +00:00
Richard Barry
412c2cc9a7 Add some configASSERT() calls. 2011-02-14 13:47:50 +00:00
Richard Barry
38821bf732 Continue work on the new timer implementation test application. Nearly complete. 2011-02-14 10:54:00 +00:00
Richard Barry
7d76fd568f Continue work on the new timer implementation test application. Nearly complete. 2011-02-14 10:52:52 +00:00
Richard Barry
b4ff4820cb Continue work on the new timer implementation. Nearly complete. 2011-02-14 10:51:18 +00:00
Richard Barry
07a2021676 Add ISR safe timer API. 2011-02-12 13:53:25 +00:00
Richard Barry
3ba433ed39 Continue adding some tick interrupt overflow protection to the timers module. This is not tested yet and still a work in progress. 2011-02-11 16:17:37 +00:00
Richard Barry
7ee534e4c2 Add some tick interrupt overflow protection to the timers module. This is not tested yet and still a work in progress. 2011-02-10 19:09:35 +00:00
Richard Barry
671ca2724e A bit of modularisation performed on the TimerDemo.c file - still a work in progress. 2011-02-10 19:08:14 +00:00
Richard Barry
0552fc86bf Commit before update to include overflow list functionality. 2011-02-10 17:20:36 +00:00
Richard Barry
f9148de3cc Add the timer demo/test task creating to the WIN32-MSVC/main.c file. 2011-02-09 19:30:44 +00:00
Richard Barry
8c9d8bcf0d Add constants to required to use the new timers implementation and the timer demo task/test task to the Win32 MSVC demo FreeRTOSConfig.h file. 2011-02-09 19:29:46 +00:00
Richard Barry
aceb8db846 Start creating a demo task/test task for the new timer implementation. Still a work in progress. 2011-02-09 19:28:21 +00:00
Richard Barry
91f0fc9cdd Minor updates to the core header files required by the new timer implementation. 2011-02-09 19:26:33 +00:00
Richard Barry
559532329d Minor updates to the queue.c and tasks.c core files required to support the new timers implementation. 2011-02-09 19:21:58 +00:00
Richard Barry
9d9b00b669 Correction to the draft timers module. Still a work in progress. 2011-02-09 19:20:12 +00:00
Richard Barry
7b97fe26c7 Remove the needs lock property. 2011-02-09 15:30:23 +00:00
Richard Barry
1cfa8cd9d8 Remove the needs lock property. 2011-02-09 15:27:26 +00:00
Richard Barry
8db5ded4b3 Continue work on the timers module. 2011-02-09 10:47:23 +00:00
Richard Barry
896d8c5d94 Continue work on the timers module. 2011-02-09 10:46:45 +00:00
Richard Barry
4a5f1529d0 Continue work on timers module - work in progress. 2011-02-08 16:21:15 +00:00
Richard Barry
812632fd1c Start an optional timers module implementation. 2011-02-08 15:21:31 +00:00
Richard Barry
4d2adb720b Start an optional timers module implementation. 2011-02-08 15:20:29 +00:00
Richard Barry
f5e7f9957c Change clock_time_t from a fixed unsigned long to portTickType so it works ok when configUSE_16_BIT_TICKS is set to 1. 2011-02-07 11:58:19 +00:00
Richard Barry
a5820e2b2a Make changes required for MISRA 2004 compliance. 2011-02-06 18:47:57 +00:00
Richard Barry
c26b230d28 Some time and code size optimisations. 2011-02-06 15:44:56 +00:00
Richard Barry
1374a17f73 Change occurrences of "Cortex M3" to "Cortex-M3". 2011-02-05 16:49:17 +00:00
Richard Barry
a22c519f5d Change occurrences of "Cortex M3" to "Cortex-M3". 2011-02-05 16:47:27 +00:00
Richard Barry
80a942e964 Change the case of an include file and a file name in the makefile for the SAM7X Eclipse demo to ensure it can be built on Linux. 2011-01-30 17:55:50 +00:00
Richard Barry
46c4d33d28 Add some comments to the PIC32 demos that the IPL setting in an ISR prototype has no effect if the FreeRTOS assembly wrapper is being used. 2011-01-29 15:49:42 +00:00
Richard Barry
14472a9499 Set the software interrupt priority to use configKERNEL_INTERRUPT_PRIORITY rather than being hard coded to 1. 2011-01-29 15:42:51 +00:00
Richard Barry
fc56459b46 Update the dsPIC MPLAB demo for use with the latest 3.25 version of the compiler. 2011-01-25 16:30:24 +00:00
Richard Barry
381785b968 Update the PIC24 MPLAB demo for use with the latest 3.25 version of the compiler. 2011-01-25 16:24:22 +00:00
Richard Barry
27effd446c Update the dsPIC MPLAB demo for use with the latest 3.25 version of the compiler. 2011-01-25 15:56:09 +00:00
Richard Barry
d89c43c7aa Update the PIC32 project to better structure the files in the MPLAB project window, and test that it works with the latest V1.12 C32 compiler. 2011-01-25 15:26:53 +00:00
Richard Barry
0079d00fec Remove unreferenced variables from main.c for the PSoC 5 demos. 2011-01-25 10:16:20 +00:00
Richard Barry
063a1538c7 Remove the memory hole in the linker MSP430X/IAR linker script that was a left over from the TI User Experience demo (which required the hole). 2011-01-19 16:40:55 +00:00
Richard Barry
6bf111e94a Update the MSP430X/IAR demo project to support the medium data model. 2011-01-18 20:34:38 +00:00
Richard Barry
c679af3ba8 Update the MSP430X/IAR port layer to support the medium data model. 2011-01-18 20:33:35 +00:00
Richard Barry
bc87cc4cb7 Tidy up the IAR MSP430X demo serial.c file. 2011-01-18 19:55:13 +00:00
Richard Barry
334e0e2e70 Update to V6.1.1 2011-01-14 20:40:41 +00:00
Richard Barry
139b80f57e Update to V6.1.1 2011-01-14 20:31:45 +00:00
Richard Barry
6fac5cfd4c Update to V6.1.1 2011-01-14 20:25:54 +00:00
Richard Barry
96ab89d253 Update to V6.1.1 2011-01-14 20:22:24 +00:00
Richard Barry
399d8c47c7 Second phase of changing the directory that starts Cortex, with one that starts CORTEX. 2011-01-14 18:45:00 +00:00
Richard Barry
7004e0308a Second phase of changing the directory that starts Cortex, with one that starts CORTEX. 2011-01-14 18:44:23 +00:00
Richard Barry
a7b2373bcc First phase of changing the directory that starts Cortex, with one that starts CORTEX. 2011-01-14 18:42:44 +00:00
Richard Barry
5cc153cfb1 First phase of changing the directory that starts Cortex, with one that starts CORTEX. 2011-01-14 18:40:20 +00:00
Richard Barry
9e00460ce1 Update the RX600 HEW projects to use the new J-Link DLL. 2011-01-14 18:34:29 +00:00
Richard Barry
7a337142ff Increase the stack sizes in the IAR / MSP430X demo. 2011-01-13 19:08:36 +00:00
Richard Barry
fb18eeb96c Make the generation of run time stats percentages more efficient. 2011-01-13 19:04:57 +00:00
Richard Barry
411364dab6 Add the .align, .asmfunc and .endasmfunc directives to the CCS MSP430X port layer. 2011-01-13 10:36:42 +00:00
Richard Barry
749edf57e7 Make the tick ISR entry function use the __raw attribute in the IAR MSP430X port layer. 2011-01-13 10:28:40 +00:00
Richard Barry
6b661d03a5 Remove unnecessary calls to fflush() in MSP430X/IAR demo. 2011-01-13 10:27:06 +00:00
Richard Barry
01f4b87dba Increase the MCLK frequency to 25MHz in the IAR MSP430X demo. 2011-01-12 12:33:38 +00:00
Richard Barry
89669ae861 Increase the MCLK frequency to 25MHz in the CCS MSP430X demo. 2011-01-12 12:32:33 +00:00
Richard Barry
7676ec0b66 Make use of the .align assembler directive in the reg test asm file of the MSP430X/CCS demo. 2011-01-12 12:15:03 +00:00
Richard Barry
4b895698ca Rename the UART ISR in the MSP430X/CCS demo to match the UART actually being used. 2011-01-12 12:13:26 +00:00
Richard Barry
1b04552233 Make use of the EVEN assembler directive in the IAR MSP430X port layer. 2011-01-12 10:00:13 +00:00
Richard Barry
10bc087ef9 Make use of the EVEN assembler directive in the reg test asm file of the MSP430X/IAR demo. 2011-01-12 09:58:51 +00:00
Richard Barry
5a0782e3a8 Set the low power mode entered in the idle hook to 3 in the MSP430X/IAR demo. 2011-01-12 09:58:08 +00:00
Richard Barry
8d33f44809 Rename the UART ISR in the MSP430X/IAR demo to match the UART actually being used. 2011-01-12 09:56:56 +00:00
Richard Barry
dccbf6a271 Ensure the MSp430X IAR project only has main.c open when the workspace is opened. 2011-01-06 11:18:06 +00:00
Richard Barry
6f4805423f Set the STM32L152 compiler options to use the tiny printf formatter. 2011-01-06 11:11:43 +00:00
Richard Barry
e4f2ba1913 Introduce option that permits a smaller printf() library to be used when sizeof( int ) == sizeof( long ) in cases where formatted strings are used to present run time stats information. 2011-01-06 11:10:51 +00:00
Richard Barry
7a71523712 Replace the function that returns the current run time counter value with a macro for easier inlining. 2011-01-06 10:50:31 +00:00
Richard Barry
d493958052 Change the #error text in croutine.h only. 2011-01-06 10:49:20 +00:00
Richard Barry
95080a22f2 Introduce the portALT_GET_RUN_TIME_COUNTER_VALUE macro as an alternative to portGET_RUN_TIME_COUNTER_VALUE to make inlining of the run time stats functions easier. 2011-01-06 10:08:07 +00:00
Richard Barry
f57fa8bf72 Replace the function that returns the current run time counter value with a macro for easier inlining. 2011-01-06 10:06:09 +00:00
Richard Barry
12949b4507 Replace the function that returns the current run time counter value with a macro for easier inlining. 2011-01-06 09:55:05 +00:00
Richard Barry
25bc4acc6a Update the run time stats generation algorithm for the MSP430X IAR port. 2011-01-05 20:20:17 +00:00
Richard Barry
6331341d97 Minor formatting changes to the Keil and RVDS PSoC5 demos. 2011-01-05 14:16:28 +00:00
Richard Barry
ad3207a226 Minor formatting changes to the GCC PSoC demo. 2011-01-05 14:10:14 +00:00
Richard Barry
17e1e7dfd3 A little extra commenting added to the Cortex M3 port layers. 2011-01-05 13:36:35 +00:00
Richard Barry
3ff33205eb Added PSoC5 demo applications. 2011-01-04 17:40:27 +00:00
Richard Barry
b77d801de0 Remove the queue registry from the MSP430X CCS port as the state viewer plug in does not work in CCS. 2011-01-04 14:37:53 +00:00
Richard Barry
50cc4026db Allow the register test asm code in the CCS4 MSP430X demo to use any data model. 2011-01-04 14:36:35 +00:00
Richard Barry
20ddcce965 Allow the MSP430X IAR port layer to skip pre-loading all register values for created tasks. 2011-01-04 14:32:52 +00:00
Richard Barry
9a24d4a37f Convert the CCS4 MSP430X port layer to permit large and small data models, and large and small code models. 2011-01-03 16:48:59 +00:00
Richard Barry
2c894e0f55 Add build configurations for small data model and small code model tests to the MSP430X CCS4 demo project. 2011-01-03 16:41:42 +00:00
Richard Barry
16daa60de7 Tidy up the run time stats generation in the MSP430X IAR port. 2011-01-03 12:06:49 +00:00
Richard Barry
b41417d89b Add a small data model build configuration to the IAR MSP430X demo project. 2011-01-03 11:43:34 +00:00
Richard Barry
d195639bc1 Start to adjust to support both small and large memory models in the MSP430X IAR port layer. 2011-01-03 11:31:41 +00:00
Richard Barry
19fcd2d505 Start to adjust to support both small and large memory models in the MSP430X IAR demo. 2011-01-03 11:30:11 +00:00
Richard Barry
4059be7918 Minor updates to the MSP430X CCS4 and IAR port layers.
Change the sprintf() in prvGenerateRunTimeStatsForTasksInList() to accept unsigned long instead of unsigned int parameters so it works on 16bit devices too.
2011-01-02 18:35:52 +00:00
Richard Barry
1b96233cf1 Minor updates to the MSP430X CCS4 demo application. 2011-01-02 18:31:30 +00:00
Richard Barry
2b92b7a5d9 Minor updates to the MSP430X CCS4 demo application. 2011-01-02 18:19:12 +00:00
Richard Barry
947524522b Minor updates to the MSP430X IAR demo application. 2011-01-02 18:17:22 +00:00
Richard Barry
8d532ab4a7 Ensure that main() is always placed in low memory in the CCS4 MSP430X port. 2011-01-01 20:57:17 +00:00
Richard Barry
811413d95a Ensure that main() is always placed in low memory in the IAR MSP430X port. 2011-01-01 20:56:23 +00:00
Richard Barry
a9b61c4e00 Add warning line into the CCS4/MSP430X project to prompt the use of the CreateProjectDirectoryStructure.bat batch file. 2011-01-01 17:35:20 +00:00
Richard Barry
ab56e7ccbb Formatting only. 2011-01-01 17:24:46 +00:00
Richard Barry
304495350c Remove unnecessary ';' characters from a couple of macro definitions in the IAR MSP430X port layer. 2011-01-01 17:24:03 +00:00
Richard Barry
a6132cbbad Add MSP430X CCS4 port layer. 2011-01-01 17:23:00 +00:00
Richard Barry
2cf5546e11 Add MSP430X CCS4 demo project. 2011-01-01 17:22:05 +00:00
Richard Barry
34f15ddecd Prepare the MSP430X IAR demo for release. 2011-01-01 11:27:48 +00:00
Richard Barry
eb94f856a8 Add the debugger settings to the MSP430X IAR demo directory. 2011-01-01 09:32:55 +00:00
Richard Barry
0249ad47f4 Continue work on the MSP430X demo - still a work in progress. 2011-01-01 09:23:37 +00:00
Richard Barry
7bc73115a5 Add TI library files necessary to build MSP430X demo. Still a work in progress. 2010-12-31 18:56:23 +00:00
Richard Barry
b236356621 Continue development of the MSP430X port layer for IAR. Still a work in progress. 2010-12-31 17:55:52 +00:00
Richard Barry
b54a5232c6 Continue work on the MSP430X demo - still a work in progress. 2010-12-31 17:54:29 +00:00
Richard Barry
ae6380f70b Continue to develop the MSP430X IAR demo project - still a work in progress. 2010-12-31 14:51:15 +00:00
Richard Barry
df4e7ceba0 Continue to develop the MSP430X IAR demo project - still a work in progress. 2010-12-30 14:01:21 +00:00
Richard Barry
38055abf18 Change vTickISR() to vPortTickISR() in the MSP430X IAR port layer. 2010-12-30 14:00:30 +00:00
Richard Barry
98720fb72e Start to write the MSP430X demo. 2010-12-29 22:07:52 +00:00
Richard Barry
96e499775a Create directory to hold the MSP430X demo. 2010-12-29 22:06:46 +00:00
Richard Barry
a109f862a7 Rename a function in the STM32L demo to conform to the coding standard for private functions. 2010-12-29 22:05:28 +00:00
Richard Barry
c7a110a853 Tidy up the port layer for the MSP430X IAR port - still a work in progress. 2010-12-29 18:46:02 +00:00
Richard Barry
0a31276719 Continue development of MSP430X port. 2010-12-29 14:35:40 +00:00
Richard Barry
e7e623f853 Continue development of MSP430X port. 2010-12-28 18:40:12 +00:00
Richard Barry
b20be831b7 Start work on official MSP430X port layer for IAR. 2010-12-28 15:22:17 +00:00
Richard Barry
c83d421388 Finish the STM32L152 demo application. 2010-12-23 19:41:05 +00:00
Richard Barry
f6a1714b46 Added two missing STM32 peripheral drivers from the STM32L152 demo project. 2010-12-23 17:10:24 +00:00
Richard Barry
ecc01bdbe8 Comment and spell check the STM32L152 demo project. 2010-12-23 17:04:34 +00:00
Richard Barry
556fc15e99 Enter sleep mode in the idle task. 2010-12-23 11:24:14 +00:00
Richard Barry
52b4c95301 Complete the STM32L152 demo application functionality - it is still to be 'productionised'. 2010-12-23 11:03:07 +00:00
Richard Barry
7fd1d847fb Modify vTaskGetRunTimeStats() to ensure the current run time total is obtained from within a critical section. This allows greater flexibility in how the run time counter value is maintained. 2010-12-23 10:40:13 +00:00
Richard Barry
a67c624894 Add an cpsie i before the SVC call that starts the scheduler. This is just in case the C start up code leaves interrupts globally disabled. 2010-12-23 10:39:02 +00:00
Richard Barry
6046eea342 Allow RX YRDK demos to work with Rev1 and Rev3 boards, and with any web browser. 2010-12-22 15:18:30 +00:00
Richard Barry
7b9a3e0707 Added a few system files to the repository for the STM32L152 demo. 2010-12-21 16:34:38 +00:00
Richard Barry
9c507b93d7 Continued development on STM32L152 demo. 2010-12-21 16:09:34 +00:00
Richard Barry
7243d65797 Still updating the STM32L demo project - still a work in progress. 2010-12-20 12:14:45 +00:00
Richard Barry
d26c31e518 Still updating the STM32L demo project - still a work in progress. 2010-12-19 23:19:02 +00:00
Richard Barry
c015ea5cfe Developing STM32L152 demo - still a work in progress. 2010-12-19 20:31:41 +00:00
Richard Barry
69d1fc1a13 Starting point for the STM32L152 demo application added. Very much a work in progress. 2010-12-19 19:20:56 +00:00
Richard Barry
ed2a5c4ed0 Updated comments only on Demo/Common/Minimal/recmutex.c 2010-12-10 16:33:14 +00:00
Richard Barry
71fd1adbad Removed the nonsensical parameter from the traceTASK_CREATE_FAILED() macro in tasks.c. 2010-12-08 20:25:24 +00:00
Richard Barry
dc8f964534 Edited the #error message to remove the " marks from the middle of the string.
Used a conditional compilation around the task tag related functions to loosen the strict header file inclusion ordering.
2010-12-08 18:59:30 +00:00
Richard Barry
14dbfbb861 Removed the nonsensical parameter from the traceTASK_CREATE_FAILED() macro in tasks.c. 2010-12-08 18:58:01 +00:00
Richard Barry
5347d4fa8f Change the terminology from 'pseudo' to 'simulated' in the Win32 port layer. 2010-12-08 17:10:25 +00:00
Richard Barry
1677ec5c60 Update the Red Suite LPC1768 project and source to use the latest version of the tools. 2010-11-25 13:21:39 +00:00
Richard Barry
19cdcbd681 Delete the now obsolete syscalls.c file from the Red Suite LPC17xx demo. 2010-11-24 20:53:55 +00:00
Richard Barry
9fa197fa9c Update the CMSIS files included in the Red Suite LPC17xx demo. 2010-11-24 20:53:02 +00:00
Richard Barry
93b74b6f8d Remove the 'death' tasks from the demo as on Win2K and WinXP the behaviour of the TerminateThread() function is such that resources leak and eventually the 'death' tests will fail. 2010-11-22 16:11:16 +00:00
Richard Barry
97ce25072a Remove the 'death' tasks from the demo as on Win2K and WinXP the behaviour of the TerminateThread() function is such that resources leak and eventually the 'death' tests will fail. 2010-11-22 16:10:42 +00:00
Richard Barry
f3dbcaf725 Added in the 'death' tasks to the MingW Win32 demo. 2010-11-22 10:46:54 +00:00
Richard Barry
853250260c Added in the 'death' tasks to the Win32 MSVN demo. 2010-11-22 10:40:43 +00:00
Richard Barry
ab9bf58818 Win32 port:
Separate out the interrupt handlers into separate functions so they can be installed into the array of interrupt handlers.
Reverse the priorities of the pseudo interrupt handler and tick generate threads so the extra hand shaking event can be removed.
2010-11-22 10:38:43 +00:00
Richard Barry
0ecde20ab3 Lowered the thread priorities used by the Win32 port, and added in a method to delete tasks in the Win32 port. 2010-11-22 09:52:36 +00:00
Richard Barry
a3c26cad3d Update to MSVC Win32 demo project file. 2010-11-21 21:00:46 +00:00
Richard Barry
b09733cdfc Added the MingW/Eclipse project for the new Win32 port. 2010-11-21 20:59:57 +00:00
Richard Barry
ba18beae47 Greatly simplified the Win32 port by only allowing threads to run on a single CPU core. 2010-11-21 20:55:04 +00:00
Richard Barry
6b9379ee87 Greatly simplified the Win32 port by only allowing threads to run on a single CPU core. 2010-11-21 20:53:13 +00:00
Richard Barry
d50618f375 Remove unused definitions from the Win32 demo main.c file. 2010-11-21 14:50:43 +00:00
Richard Barry
bbcdcb0ba1 Just changed the comments only for the Win32 port.c file. 2010-11-21 14:36:36 +00:00
Richard Barry
abadea4557 Updated the Win32 MSVC demo files. 2010-11-21 14:35:36 +00:00
Richard Barry
37b6fb5773 Changed vPortCheckCorrectThreadIsRunning() in the Win32 port layer to use the Win32 thread ID rather than its handle. 2010-11-21 14:06:23 +00:00
Richard Barry
60bea08b22 Added the traceTAKE_MUTEX_RECURSIVE_FAILED() macro. 2010-11-21 11:35:48 +00:00
Richard Barry
2fc309624b Added vPortCheckCorrectThreadIsRunning() function to the Win32 port layer to trap when Windows is not running the correct thread and try and catch it. 2010-11-21 11:34:12 +00:00
Richard Barry
1ae93fbb63 Add in a missing initialisation to zero for a variable in recmutex.c. Should not really make any difference as the variable should be cleared to zero by the C start up code anyway. 2010-11-20 14:37:25 +00:00
Richard Barry
e867904a89 Remove the trace lines from the Win32 port.c. 2010-11-20 14:20:09 +00:00
Richard Barry
ab2eb016c1 Work on Win32 port layer - removing the need to store the critical section nesting count as part of the Win32 thread context. 2010-11-19 22:37:02 +00:00
Richard Barry
8133188eee Win32 port.c - working ok in co-operative mode, but pre-emptive thread scheduling still problematic. 2010-11-18 16:41:44 +00:00
Richard Barry
a49f0aa88a Spell check Win32 port.c only. 2010-11-16 10:33:50 +00:00
Richard Barry
0de50e377c Added in more demo apps to the Win32 demo. 2010-11-15 22:30:47 +00:00
Richard Barry
c30b4242bb Replace waitable timer with sleep function in Win32 port layer. 2010-11-15 22:29:28 +00:00
Richard Barry
93b07f3db7 Updated Win32 port layer so that end of interrupt events are only sent to threads that are actually waiting for them. 2010-11-15 20:23:08 +00:00
Richard Barry
9a0b608591 Start of new Win32 emulator project. Currently working but not well tested, and does not include a method for shutting down the generated processes. 2010-11-14 21:01:50 +00:00
Richard Barry
7a623479dd Start of new Win32 emulator project. Currently working but not well tested, and does not include a method for shutting down the generated processes. 2010-11-14 21:00:36 +00:00
Richard Barry
3b6ed5341f Update the IP address copy macro so it never relies on any byte alignment. 2010-11-08 21:59:23 +00:00
Richard Barry
86e6ede04c Update to FreeRTOS V6.1.0 release candidate. 2010-09-23 18:07:41 +00:00
Richard Barry
4778bd45e7 Update to FreeRTOS V6.1.0 release candidate. 2010-09-23 16:36:25 +00:00
Richard Barry
7ce7d21ca8 Allow tasks to be suspended immediately after creation - provided the scheduler is not running.
Add API function that allows the tick count to be queried from an interrupt.
2010-09-23 13:54:37 +00:00
Richard Barry
ad451e8b70 Remove the .dep file from the IAR RX project. The file should not have been included in the first place. 2010-09-23 13:41:47 +00:00
Richard Barry
fd5aeffadd Replace the hard coded interrupt priorities with the configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY definitions in the IAR RX port layer. 2010-09-23 13:39:45 +00:00
Richard Barry
bdef78d6a2 Prepare the RX GNU demo application for release. 2010-09-23 13:14:34 +00:00
Richard Barry
f352dc846b Replace the hard coded interrupt priorities with the configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY definitions in the IAR RX port layer. 2010-09-23 13:13:26 +00:00
Richard Barry
66c1a9b76d Replace asm wrappers to interrupt handlers with functions that use the interrupt attribute. 2010-09-22 22:03:40 +00:00
Richard Barry
c92128869d Replace asm wrappers to interrupt handlers with functions that use the interrupt attribute. 2010-09-22 22:02:54 +00:00
Richard Barry
eea2ab0385 Back only. 2010-09-22 21:31:33 +00:00
Richard Barry
8c8efdcc4e Back only. 2010-09-22 21:29:57 +00:00
Richard Barry
b4d26652b9 Start process of changing project name to include RDK in its title to place of RSK. 2010-09-22 13:00:51 +00:00
Richard Barry
f4aa3f61e1 Start process of changing project name to include RDK in its title to place of RSK. 2010-09-22 12:59:42 +00:00
Richard Barry
45fad778a4 Start to iron out the mods required in switching from the RX RSK hardware to the RDK hardware. 2010-09-22 12:57:57 +00:00
Richard Barry
17add98d2f Starting point for the RX RDK version of the demo app. 2010-09-22 12:48:21 +00:00
Richard Barry
07006b001e Prepare the RSK RX demo for conversion to run on the RDK. 2010-09-22 09:25:13 +00:00
Richard Barry
828d8df74e Start to change the GNURX project name to use RSK in place of MDK. 2010-09-22 09:16:08 +00:00
Richard Barry
270a06fb9a Start to change the GNURX project name to use RSK in place of MDK. 2010-09-22 09:14:55 +00:00
Richard Barry
edfeb212ae Change the RX/GCC memory map to move the stacks further away from the .data section. 2010-09-22 08:32:22 +00:00
Richard Barry
296c1eabfc Formatting only. 2010-09-21 21:11:42 +00:00
Richard Barry
f052e7c00f When creating a task - move where the task handle is assigned to the function parameter from after the critical section. This allows the handle to be assigned to a global variable, and the global variable to be access by the task being created should the task being created execute immediately that the critical section is exited. 2010-09-21 21:10:41 +00:00
Richard Barry
1ec24e1d46 Remove possibility of having multiple definitions of DEBUG in uip_arp.c. 2010-09-21 21:06:16 +00:00
Richard Barry
b2238eb8c0 Update the RX GCC port - optimised build is working, unoptimised not. 2010-09-21 21:04:39 +00:00
Richard Barry
1c56717a0f RX GCC port - Introduce macros that perform the interrupt entry and exit manually, then move the asm code back as naked functions within the port.c file. 2010-09-20 20:02:48 +00:00
Richard Barry
0ef04cd7bd RX GCC port - Introduce macros that perform the interrupt entry and exit manually, then move the asm code back as naked functions within the port.c file. 2010-09-20 20:01:00 +00:00
Richard Barry
c788ecec17 Rename MDK to RSK for the RX ports. 2010-09-20 11:20:51 +00:00
Richard Barry
0615862c9e Temporarily revert the AVR32 port back to the V6.0.5 files. Work will continue on the reverted files following the next release. 2010-09-20 11:16:19 +00:00
Richard Barry
ef35a4aab1 Temporarily revert the AVR32 port back to the V6.0.5 files. Work will continue on the reverted files following the next release. 2010-09-20 11:11:34 +00:00
Richard Barry
18f5af7195 Temporarily revert the AVR32 port back to the V6.0.5 files. Work will continue on the reverted files following the next release. 2010-09-20 11:08:39 +00:00
Richard Barry
8f6f5820aa 2010-09-20 10:44:40 +00:00
Richard Barry
d7d63dbe77 2010-09-20 10:43:23 +00:00
Richard Barry
47354eddcb Update SAM3U project to use new flash loader settings. 2010-09-18 14:05:49 +00:00
Richard Barry
55c6e20370 Update to build with C99. 2010-09-18 13:41:28 +00:00
Richard Barry
feecfc5319 Update the definition of __inline to build with C99. 2010-09-18 13:33:52 +00:00
Richard Barry
25f980aabe Update the definition of __inline to build with C99. 2010-09-18 13:24:26 +00:00
Richard Barry
d27e63a8ca Update the definition of __inline to build with C99. 2010-09-18 13:20:52 +00:00
Richard Barry
59204f7720 Commit the RX IAR projects ready for release. 2010-09-14 15:35:38 +00:00
Richard Barry
e77c5ca723 Commit the RX Renesas/HEW projects ready for release. 2010-09-14 15:35:00 +00:00
Richard Barry
84394bf0a9 Commit the RX IAR projects ready for release. 2010-09-14 13:57:49 +00:00
Richard Barry
2a44b5641d Commit the RX IAR projects ready for release. 2010-09-14 13:48:11 +00:00
Richard Barry
0723a674f2 First version of IAR project for RX RDK added. 2010-09-13 10:39:40 +00:00
Richard Barry
5f95494dff FreeTCPIP - remove compiler warnings. 2010-09-12 21:06:00 +00:00
Richard Barry
f43bd20a6d Tidy up the RDK/Renesas/RX port to get rid of compiler warnings, and correct some of the variable naming. 2010-09-12 21:02:55 +00:00
Richard Barry
2cf67be590 Tidy up the MDK/Renesas/RX port to get rid of compiler warnings, and correct some of the variable naming. 2010-09-12 21:01:29 +00:00
Richard Barry
9c3e8b0228 Add in web server to RX/IAR demo application. 2010-09-12 20:56:04 +00:00
Richard Barry
c7fbe1d601 Some re-formatting of uip.c. 2010-09-10 18:45:22 +00:00
Richard Barry
2641267c85 Some re-formatting of uip.c. 2010-09-10 18:40:31 +00:00
Richard Barry
904e22b667 Include pack struct macros for RX architecture. 2010-09-09 19:47:24 +00:00
Richard Barry
e4c8a7957f Prepare RX RDK project for release. 2010-09-09 19:43:56 +00:00
Richard Barry
3780491aeb Prepare RX MDK project for release. 2010-09-09 18:31:16 +00:00
Richard Barry
23ca0009e3 Update the RX MDK demo to include the web server. Minor tidy up to the RDK version too. 2010-09-09 16:26:42 +00:00
Richard Barry
2fca46e3e4 Changed buffer configuration in Ethernet driver for RX RDK port. 2010-09-09 09:54:18 +00:00
Richard Barry
ccf36aeed4 Removed the critical section that was left in by mistake. Also changed the delay period while waiting for the Ethernet semaphore. Both in the RX RDK demo. 2010-09-09 09:41:52 +00:00
Richard Barry
a91ec6efe7 Updated compiler version for RX RDK demo and completed initial web server demo. Still some tidying up to do. 2010-09-09 08:39:10 +00:00
Richard Barry
a4893aed60 Start to configure the uIP demo for the RX RDK hardware. ping is working, but thus far the web server is not. 2010-09-05 20:06:30 +00:00
Richard Barry
2e0af9b6e6 Add low level Ethernet driver files to the RX RDK project. 2010-09-04 18:29:56 +00:00
Richard Barry
f14011feb3 All relating to the RX600 RDK demo - which is still a work in progress:
Change LED numbers to match silk screen.
Include Ethernet port pin configuration in HardwareSetup().
Convert EMAC.c to be correct for the RX (was based on SH2A file).
Add uIP task creation into main.c.
2010-09-04 18:20:45 +00:00
Richard Barry
817859005a Removed files/directories that were accidentally added to the wrong base directory. 2010-09-02 09:14:39 +00:00
Richard Barry
ee077a6b9a Starting point for the RDK webserver files added. 2010-09-02 09:13:14 +00:00
Richard Barry
659a27800f Starting point for the RDK webserver files added. 2010-09-02 09:06:39 +00:00
Richard Barry
0363b47c66 Correct some of the LED usage in the RX demos - where apparently two wrongs did make a right. 2010-08-31 18:14:37 +00:00
Richard Barry
a47ead46e8 Start of project for the RDK board. Not yet complete. 2010-08-31 18:11:19 +00:00
Richard Barry
bb26ea557f Some changes to the RX/Renesas main-full.c file to tidy up a bit. 2010-08-29 18:05:06 +00:00
Richard Barry
c1dca1a069 Added a critical section around the call to vTaskIncrementTick() in all the RX ports. 2010-08-29 17:57:32 +00:00
Richard Barry
9f83e74cb1 Work on the RX62N IAR demo, which is now functional. 2010-08-29 17:15:14 +00:00
Richard Barry
50b4b6619d Minor tidying up of IntQueue.c to prevent compiler warnings. No functional difference. 2010-08-29 17:13:46 +00:00
Richard Barry
5c75dd907e Update the IAR RX62N port files, which are now functional. 2010-08-29 17:12:12 +00:00
Richard Barry
a418d78163 Start point for RX62N port layer for IAR - not necessarily complete yet. 2010-08-29 14:12:05 +00:00
Richard Barry
7768a4e02c Starting point for an IAR RX62N project - not yet a working project. 2010-08-29 14:10:58 +00:00
Richard Barry
9af437a3a9 Simply tidy up the bracketing of a couple of expressions in tasks.c. 2010-08-29 07:25:09 +00:00
Richard Barry
c4217432f2 Update RX GCC port - including extracting all inline asm into separate asm file. 2010-08-29 07:24:30 +00:00
Richard Barry
23b1023a7a Remove the Renesas RX project that had the old directory name. This has been updated so the board the project uses in the name of the demo directory. 2010-08-29 07:23:06 +00:00
Richard Barry
ddf4f4eb1e Check in the RX/GCC demo for backup purposes - this is not yet a working project. 2010-08-29 07:19:34 +00:00
Richard Barry
0fcac53cf8 Continued work on the RX62N GCC demo - just a work in progress currently. 2010-08-26 16:01:58 +00:00
Richard Barry
314b692440 Create starting point for RX62N GCC port. Just a work in progress at the moment. 2010-08-26 15:59:25 +00:00
Richard Barry
1ee62d835d Create starting point for GNURX RX62N HEW project. 2010-08-25 16:06:53 +00:00
Richard Barry
8c5b77635e Add a -1 to the calculation of the compare match value. 2010-08-23 15:59:07 +00:00
Richard Barry
ac19e40336 Just tidy up the RX port files. 2010-08-22 18:28:48 +00:00
Richard Barry
a33e3b3979 Corrected comment in SH2A demo project main.c. 2010-08-22 11:46:36 +00:00
Richard Barry
4b8e4c7520 Continue development, plus add Blinky build configuration. 2010-08-22 11:45:24 +00:00
Richard Barry
cfc3911721 Changed RX project directory structure and name. 2010-08-22 08:44:51 +00:00
Richard Barry
9391d8a186 Continue development on RX port - work in progress. 2010-08-22 08:32:09 +00:00
Richard Barry
68201d2f99 Added a lot more standard demo tasks to the RX demo. 2010-08-20 19:42:40 +00:00
Richard Barry
cc7c4acf02 Added IntQueue demo/test to the RX demo. 2010-08-20 19:11:56 +00:00
Richard Barry
27683e7360 Implemented portYIELD_FROM_ISR() for RX port. 2010-08-20 19:10:42 +00:00
Richard Barry
4b3cf6221b Continue work on RX600 port - work in progress. 2010-08-18 20:36:44 +00:00
Richard Barry
810f45a61c Continue work on RX600 port - work in progress - add the actual context switch function. 2010-08-18 20:36:00 +00:00
Richard Barry
64fc1907ec Continue work on RX600 port - work in progress. 2010-08-18 13:31:12 +00:00
Richard Barry
df410c7e27 Continue work on RX600 port - work in progress. 2010-08-18 13:29:12 +00:00
Richard Barry
49c5f327fc Add new file to RX demo. 2010-08-16 10:40:33 +00:00
Richard Barry
383f0b0f2f Continue work on RX600 port - work in progress. Added the SET/CLEAR from ISR macros. 2010-08-13 17:49:15 +00:00
Richard Barry
21898cc9d9 Continue work on RX600 port - work in progress. 2010-08-13 17:38:50 +00:00
Richard Barry
6052827afe Continue work on RX600 port - work in progress. 2010-08-13 17:37:36 +00:00
Richard Barry
3e4eb6e7ae Continue work on RX600 port - work in progress. 2010-08-13 10:21:54 +00:00
Richard Barry
fc050c4ab9 Continue work on RX600 port - work in progress. 2010-08-13 07:17:30 +00:00
Richard Barry
c8e98a097e Starting point for new port - a project that will build, but as yet no implementation. 2010-08-12 13:22:25 +00:00
Richard Barry
b2929dc036 Starting point for new port - a project that will build, but as yet no implementation. 2010-08-12 13:19:52 +00:00
Richard Barry
e854ebf1f5 Just tidy up indentation in SuperH port.c. 2010-08-11 17:56:33 +00:00
Richard Barry
8f6e5062d4 Changed how the calculation of xFreeBytesRemaining is performed in the case where a block of RAM is split before being returned to the callee. 2010-07-20 18:46:12 +00:00
Richard Barry
65d501d718 Continue development of STM32 Rowley demo. 2010-07-07 11:48:04 +00:00
Richard Barry
28b5ea32a4 Add in a basic USART driver and echo test task. 2010-07-06 21:12:01 +00:00
Richard Barry
4ab0313273 Continue work on new AVR32 port and demo. 2010-06-21 14:57:05 +00:00
Richard Barry
47cfc16aa0 Add batch file that generates the local directory structure to allow the new AVR32 UC3 demo to be build using an Eclipse managed make project. 2010-06-13 17:34:45 +00:00
Richard Barry
8405dbe3d5 Create an updated AVR32 UC3A project. 2010-06-13 14:10:42 +00:00
Richard Barry
d31b403659 Create an updated AVR32 UC3A project. 2010-06-13 14:05:36 +00:00
Richard Barry
52ceb8de51 Create an updated AVR32 UC3A project. 2010-06-13 14:02:53 +00:00
Richard Barry
025b08cddf Create an updated AVR32 UC3A project. 2010-06-13 14:01:59 +00:00
Richard Barry
7bee13dfdc Removed outdated AVR32 demo. 2010-06-13 13:57:47 +00:00
Richard Barry
357f7fe56a Removed outdated AVR32 demo. 2010-06-13 13:55:37 +00:00
Richard Barry
1b2d31eac4 Removed outdated AVR32 demo. 2010-06-13 13:54:06 +00:00
Richard Barry
d09fcd3abe Removed outdated AVR32 demo. 2010-06-13 13:53:05 +00:00
Richard Barry
61dc1e332a Removed outdated AVR32 demo. 2010-06-13 13:52:31 +00:00
Richard Barry
c63be7c451 Just updated the version string #define. 2010-06-13 13:41:18 +00:00
Richard Barry
e03f239692 Work in progress - checked in for backup only. 2010-06-07 15:24:50 +00:00
Richard Barry
02db572328 Renamed ParTest.c to ParTest_MSBSTM32.c so an alternative ParTest can also be included. 2010-06-07 14:31:13 +00:00
Richard Barry
5472e527b5 Added STM32 Rowley demo. 2010-06-04 14:45:49 +00:00
Richard Barry
fa73924b8d Add Cortus port to produce V6.0.5. 2010-05-17 18:16:17 +00:00
Richard Barry
f89b22f9d1 Add Cortus port to produce V6.0.5. 2010-05-17 18:12:16 +00:00
Richard Barry
6818a478c6 Add Cortus port to produce V6.0.5. 2010-05-17 18:06:11 +00:00
Richard Barry
9a54446449 Add Cortus port to produce V6.0.5. 2010-05-17 18:00:27 +00:00
Richard Barry
c73b3dc304 Add Cortus port to produce V6.0.5. 2010-05-17 15:41:58 +00:00
Richard Barry
4a5ea9e237 Add exit() function just to prevent loads of the standard library from being included in the build. 2010-05-17 14:52:27 +00:00
Richard Barry
18d6c565e6 Corrected mistake in sample code for xCoRoutineCreate(). 2010-05-01 01:35:52 +00:00
Richard Barry
1aca141247 Update comments at head of Cortus demo files to show correct version number. 2010-03-30 13:01:00 +00:00
Richard Barry
a2b1a64ba1 Finish off the Cortus demo application:
+ Add a traceTASK_SWITCHED_OUT macro as part of the RegTest.c.
+ Add task to test the saving and restoring of the interrupt mask.
+ Change the serial port interrupt handlers to use naked functions.
2010-03-29 14:04:11 +00:00
Richard Barry
f4d8802850 Modify Cortus save and restore macros to save and restore the entire context, so as not to rely on anything the compiler is doing. 2010-03-29 14:01:36 +00:00
Richard Barry
1ae4ae2348 Deleted the commented out naked attribute. 2010-03-28 17:48:00 +00:00
Richard Barry
0821d5201e Rename the portRESTORE_CONTEXT_REDUCED macro to portRESTORE_CONTEXT. 2010-03-28 17:46:57 +00:00
Richard Barry
afe2d4fc38 Simplify the Cortus port - removing the interrupt stack and interrupt nesting capability. 2010-03-28 17:44:06 +00:00
Richard Barry
f8b7288033 Continue work on Cortus demo. 2010-03-26 20:28:19 +00:00
Richard Barry
c848059d5f Work in progress on the Cortus port. 2010-03-26 20:27:10 +00:00
Richard Barry
a671be77bf Add the regtest tasks to the Cortus demo. 2010-03-26 12:43:00 +00:00
Richard Barry
b492b7eb89 Minor formatting and name changes only. 2010-03-26 10:03:32 +00:00
Richard Barry
a93c8d6659 Add Cortus demo. 2010-03-24 11:24:21 +00:00
Richard Barry
e65ab7222c Add directory for Cortus demo. 2010-03-24 11:22:36 +00:00
Richard Barry
1aed974822 Change name of constant to match coding standard. 2010-03-24 11:06:33 +00:00
Richard Barry
0d8229a087 The start of an APS3 port. 2010-03-19 14:22:34 +00:00
Richard Barry
2596728679 Initialised xFreeBytesRemaining where it is declared so xPortGetFreeHeapSize() returns a valid value even before the heap has been initialised. 2010-03-19 09:45:12 +00:00
Richard Barry
808bb8e159 Update the V6.0.4. The primary difference being that the unsupported demos have now been removed from the download, and instead placed in their own forums. 2010-03-14 11:55:16 +00:00
Richard Barry
71b23456fd Remove log file which should not have been part of the repository. 2010-03-14 11:33:11 +00:00
Richard Barry
c4a14fc1ef Added back the Unsupported_Demos directory, but this time containing just a .txt file with a link to the page that describes how the demos can be obtained. 2010-03-14 11:27:28 +00:00
Richard Barry
3382b13855 Remove the unsupported demos directory. The files it contains are now available at http://interactive.freertos.org. 2010-03-13 20:39:49 +00:00
Richard Barry
73ee7479e4 Correct spelling in comment. 2010-03-13 20:37:16 +00:00
Richard Barry
c981185506 Very first demo for the Energy Micro EFM32 added. 2010-03-13 19:20:19 +00:00
Richard Barry
8fc041a994 Update to use V2 of the CPU support pack from Rowley. 2010-03-11 13:29:05 +00:00
Richard Barry
85e6e01995 Removed unused files. 2010-02-25 16:36:32 +00:00
Richard Barry
e262d95404 Ready for V6.0.3 release. 2010-02-25 13:41:09 +00:00
Richard Barry
ec0f5ed043 Tidy up SuperH port a bit ready for release. 2010-02-18 13:34:46 +00:00
Richard Barry
450e344455 Tidy up SuperH port a bit ready for release. 2010-02-18 13:23:00 +00:00
Richard Barry
e35180acd9 Tidy up SuperH port a bit ready for release. 2010-02-18 13:21:33 +00:00
Richard Barry
9b27b75715 Continue work on the SH2A port. 2010-02-15 17:16:38 +00:00
Richard Barry
04c48138a8 Change path to included header files so they are now included from the apps directory. 2010-02-15 17:15:10 +00:00
Richard Barry
b25f24cb75 Continue work on SH2A demo. 2010-02-15 17:13:58 +00:00
Richard Barry
0978152144 Add back in the uip_arch.h header file. 2010-02-15 14:47:29 +00:00
Richard Barry
804d39fb69 Another two header files added back having been previously removed. 2010-02-13 22:08:45 +00:00
Richard Barry
d60032cec3 Not much more than a reformatted uIP so far - this will eventually replace the FreeRTOS-uIP files. 2010-02-13 21:15:28 +00:00
Richard Barry
7c54dfea37 Add back in header file that was mistakenly removed prior to previous check in. 2010-02-13 21:01:26 +00:00
Richard Barry
90ec8c2b57 Added file required to build demo. 2010-02-13 21:00:16 +00:00
Richard Barry
92ae2d0724 Update SuperH port to include WEB server. 2010-02-13 18:57:15 +00:00
Richard Barry
bbe10cf550 Add new files to the SuperH project. 2010-02-12 15:27:07 +00:00
Richard Barry
2ce61bafdc Not to be added for the next release, so removed to avoid confusion. 2010-02-01 13:38:03 +00:00
Richard Barry
416fcd3a3d Change case of name for consistency with other lwIP directories. 2010-01-25 19:04:45 +00:00
Richard Barry
073e831bcf Added latest lwIP source. 2010-01-25 12:54:55 +00:00
Richard Barry
06c89adf1e Remove the .bak files that were accidentally added to the repository. 2010-01-24 21:05:15 +00:00
Richard Barry
61dacf99ab 2010-01-24 21:04:32 +00:00
Richard Barry
ef57fa8947 Start of new demo added. Still a long way to go. 2010-01-24 21:00:36 +00:00
Richard Barry
9849c9ccab General tidy up of SH files. 2010-01-17 16:32:43 +00:00
Richard Barry
99cc14b365 General tidy up of SH files. 2010-01-17 16:32:06 +00:00
Richard Barry
73b49130c6 Just updated comments. 2010-01-17 15:45:37 +00:00
Richard Barry
8dd9c7dfd9 Moved the definitions of pvPortMallocAligned() and pvPortFreeAligned() to freertos.h. 2010-01-17 14:22:55 +00:00
Richard Barry
ebffeb7ae4 Added flop support. 2010-01-17 13:14:23 +00:00
Richard Barry
094945625d Add flop support. 2010-01-17 13:12:54 +00:00
Richard Barry
65b947b50f Still a work in progress. Checking in for backup only. 2010-01-16 17:09:39 +00:00
Richard Barry
b75ec97ea9 Still a work in progress. Checking in for backup only. 2010-01-16 17:07:44 +00:00
Richard Barry
b60eba005a Change interrupt mask in yield function. 2010-01-16 11:40:41 +00:00
Richard Barry
559e2a850f Still a work in progress. Need to add flop support. 2010-01-15 17:20:09 +00:00
Richard Barry
188a2c0cc1 Still a work in progress. Need to add flop support. 2010-01-15 17:18:47 +00:00
Richard Barry
1aa471d0ec Work in progress. 2010-01-14 12:24:29 +00:00
Richard Barry
68074c03d6 Work in progress. 2010-01-14 12:23:07 +00:00
Richard Barry
c99f3c55cd Update to V6.0.2. 2010-01-09 14:48:45 +00:00
Richard Barry
4f59d550c6 Update to V6.0.2. 2010-01-09 14:31:39 +00:00
Richard Barry
f902211804 Update resource files for latest IAR releases. 2010-01-09 14:03:33 +00:00
Richard Barry
b016c8bfb5 Update IAR version used. 2010-01-08 19:08:53 +00:00
Richard Barry
bf9b20e6b8 Change "SWI" to "SWI 0". 2010-01-08 14:25:12 +00:00
Richard Barry
ac94fdddf1 Again, just corrected some comments. 2010-01-08 14:21:33 +00:00
Richard Barry
a3cb76d07a Corrected a comment. 2010-01-08 14:20:30 +00:00
Richard Barry
2dc8e16e68 Corrected a couple of comments. 2010-01-08 14:19:35 +00:00
Richard Barry
e170cdef52 Skeleton for new port added. 2009-12-28 15:06:11 +00:00
Richard Barry
bc0e754d87 Work in progress for backup only. 2009-12-27 22:20:42 +00:00
Richard Barry
dbb3361ed9 Start a new demo for a new SH2A port. 2009-12-27 09:55:16 +00:00
Richard Barry
0840882d46 Change PIC32 stack byte alignment from 4 to 8. 2009-12-10 18:17:37 +00:00
Richard Barry
50ab249849 Added yet another type cast to the else if clause in xTaskCheckForTimeOut. This is to ensure it works correctly on ALL 16 bit compilers (hopefully). 2009-11-23 11:18:07 +00:00
Richard Barry
0bcacda16b vTaskList() now works for architectures where the stack grows up from low memory. 2009-11-23 10:43:04 +00:00
Richard Barry
e439365343 Added configQUEUE_REGISTRY_SIZE definition. 2009-11-23 10:24:50 +00:00
Richard Barry
c0fae3b4dd Changes in the comments only. 2009-11-23 10:23:31 +00:00
Richard Barry
d41bc9028e Updated to work with the latest compiler - changed the .mac file and updated the linker script. 2009-11-22 21:38:51 +00:00
Richard Barry
9ec30de7f4 Update Cortex M3 ports to ensure 8 byte alignment. 2009-11-15 21:47:15 +00:00
Richard Barry
db87c0ac06 Correct byte alignment on CM3 port layers. 2009-11-15 15:01:59 +00:00
Richard Barry
a9625ce462 Change the function that sets up the initial stack on CM3 ports to account for the post decrement used by the MCU when it alters the stack on the way into/out of interrupts. 2009-11-14 19:02:12 +00:00
Richard Barry
a06c91fcc1 Fixed typo. 2009-11-13 20:57:51 +00:00
Richard Barry
7c09eb2da7 Correct cut and paste comment error. 2009-10-25 10:33:01 +00:00
Richard Barry
eb89065789 Update the Posix simulator to contain more features. 2009-10-15 11:59:20 +00:00
Richard Barry
a75aec78ed Correct the auto reload value. 2009-10-15 11:57:49 +00:00
Richard Barry
0db3b5c258 Correct the auto reload value. 2009-10-15 11:56:48 +00:00
Richard Barry
26bf0da04e Change to the file headers only. 2009-10-13 11:05:41 +00:00
Richard Barry
aedbbb8a5c Change to the file headers only. 2009-10-13 10:57:25 +00:00
Richard Barry
11ed4d6fba Change to the file headers only. 2009-10-13 10:54:32 +00:00
Richard Barry
7dbf3304b3 Tidy up only. 2009-10-13 09:17:39 +00:00
Richard Barry
e00afda1b1 Correct compiler warnings when a certain configuration is set in FreeRTOSConfig.h. 2009-10-13 09:12:30 +00:00
Richard Barry
8560e094f2 Formatting only. 2009-10-13 09:11:17 +00:00
Richard Barry
8bbd6c243e Place #error string in quotes. 2009-10-11 22:33:58 +00:00
Richard Barry
dc5c2a5371 Add same additional tests and demos as already in the Rowley version. 2009-10-11 22:31:20 +00:00
Richard Barry
d80bf5e055 Remove unused definitions. 2009-10-11 22:25:59 +00:00
Richard Barry
2c761c6626 Add a few more tests and demos. 2009-10-11 11:53:07 +00:00
Richard Barry
448f83eb43 Add a few more tests and demos. 2009-10-11 09:30:12 +00:00
Richard Barry
9557f14233 Add missing cast where one of the static MPU blocks are configured. 2009-10-10 18:45:46 +00:00
Richard Barry
16612fb796 Removed the needs-lock property. 2009-10-10 18:44:47 +00:00
Richard Barry
cacf4036b9 Correct type on comment. 2009-10-10 18:43:18 +00:00
Richard Barry
7c927d69d5 Add the tests performed by prvOldStyleUserModeTask(). 2009-10-10 18:41:14 +00:00
Richard Barry
9c349886af Add clobber lists to inline asm code. 2009-10-06 08:48:34 +00:00
Richard Barry
d3f5c5348c Change where the free heap space variable is initialised. 2009-10-06 08:46:22 +00:00
Richard Barry
205b0dd863 Add clobber list to asm sections to allow use with higher optimisation. 2009-10-05 20:26:11 +00:00
Richard Barry
176aafbe00 Add portBYTE_ALIGNMENT definition to PC demos. 2009-10-05 12:17:50 +00:00
Richard Barry
e90ba3e57f Add xPortGetFreeHeapSize() function. 2009-10-05 11:16:38 +00:00
Richard Barry
9468e36040 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 11:10:48 +00:00
Richard Barry
f625cf929a Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 11:01:09 +00:00
Richard Barry
23a5a73219 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 10:57:40 +00:00
Richard Barry
4322b8d649 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 10:28:54 +00:00
Richard Barry
64c701aff7 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 10:23:06 +00:00
Richard Barry
7f0c4ef656 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 10:08:35 +00:00
Richard Barry
506dd1b7c8 Remove unnecessary use of portLONG, portCHAR and portSHORT.
Change version number in headers.
2009-10-05 09:46:11 +00:00
Richard Barry
26f0258688 Remove unnecessary use of portLONG, portCHAR and portSHORT. 2009-10-04 18:34:36 +00:00
Richard Barry
804d114420 Add PRIVILEGED_FUNCTION qualifiers to port files. 2009-10-04 18:18:32 +00:00
Richard Barry
334bd8b66c Remove files accidentally added to repository. 2009-10-04 18:01:57 +00:00
Richard Barry
ee5608ddc2 Tidy up, starting to get ready for next release. 2009-10-04 17:59:49 +00:00
Richard Barry
a7462db433 Update to fit using later Keil version. 2009-10-04 14:56:54 +00:00
Richard Barry
1b3ceba83f Just remove compiler warning. 2009-10-04 10:59:01 +00:00
Richard Barry
2b2324a7e7 Add R32C contributed port. 2009-10-04 10:08:25 +00:00
Richard Barry
8c5f57a134 Correct spelling mistake only. 2009-10-03 19:57:25 +00:00
Richard Barry
d138104369 Reinstate privileged only RAM region when a task is running that does not otherwise make use of the MPU. 2009-10-03 19:56:09 +00:00
Richard Barry
5eeea3373f First Red Suite project for FreeRTOS MPU. 2009-10-03 18:53:16 +00:00
Richard Barry
c9b5c1332a Formatting only. 2009-09-30 20:18:36 +00:00
Richard Barry
b5f93ce546 Update to latest Rowley version. 2009-09-30 20:17:17 +00:00
Richard Barry
cf717acaae First version that includes the FreeRTOS-MPU implementation. 2009-09-30 20:16:26 +00:00
Richard Barry
291ea26bfe First version that includes the FreeRTOS-MPU implementation. 2009-09-30 20:12:31 +00:00
Richard Barry
6b7397ee92 Prepare for V6. 2009-09-29 20:11:12 +00:00
Richard Barry
b7da8d7a1b Remove the portBYTE_ALIGNMENT_MASK definitions as they are now in the common portable.h file. 2009-09-29 20:07:44 +00:00
Richard Barry
ad441634f0 Allow auto switching between creating tasks in ARM mode and THUMB mode. 2009-09-29 20:03:55 +00:00
Richard Barry
afaa3321ba Allow auto switching between creating tasks in ARM mode and THUMB mode. 2009-09-29 20:03:09 +00:00
Richard Barry
b500ab8be2 Allow auto switching between creating tasks in ARM mode and THUMB mode. 2009-09-29 20:02:16 +00:00
Richard Barry
2cb1578b30 Set ARM byte alignment to 8. 2009-09-29 20:01:17 +00:00
Richard Barry
2d958d3d2c Set ARM byte alignment to 8. 2009-09-29 19:58:05 +00:00
Richard Barry
98ed4f2a20 Update for V6. 2009-09-29 19:49:54 +00:00
Richard Barry
7dacae2ae9 New file added for V6. 2009-09-29 19:40:13 +00:00
Richard Barry
c3473a1e49 Update to latest Rowley version. 2009-09-29 19:37:19 +00:00
Richard Barry
3c09399524 Ensure the user is forced to select an option through the use of a #error directive. 2009-09-29 19:34:04 +00:00
Richard Barry
1f12f80eb7 Ensure compiles using latest Yagarto. 2009-09-29 19:32:27 +00:00
Richard Barry
a961f6daa3 Just checking in a file that was automatically updated by the IDE. 2009-09-29 19:30:14 +00:00
Richard Barry
13f92818a7 Update to latest IAR version. 2009-09-29 18:19:22 +00:00
Richard Barry
bb17e05f63 Update to latest IAR version. 2009-09-29 18:18:47 +00:00
Richard Barry
a9f422ed7c Update to latest IAR version. 2009-09-29 18:14:14 +00:00
Richard Barry
b0f9c55325 Update to latest IAR version. 2009-09-29 18:13:38 +00:00
Richard Barry
87c8d2f87a Update to latest IAR version. 2009-09-29 17:46:10 +00:00
Richard Barry
b7e0d0753a Update to latest IAR version. 2009-09-29 17:29:33 +00:00
Richard Barry
46b1b9f99d Update to latest IAR version. 2009-09-29 04:55:49 +00:00
Richard Barry
c5c32913c9 Inline the asm function in the ISR wrapper. 2009-09-28 18:50:32 +00:00
Richard Barry
e30b39e09f Auto updated file by the IDE. 2009-09-28 18:25:48 +00:00
Richard Barry
00462893c9 Use noinline attribute on C portion of asm functions, increase warning level and fix warnings output by new level. 2009-09-28 18:23:17 +00:00
Richard Barry
75c6804bb1 Test with latest IAR and Keil versions. 2009-09-28 18:15:32 +00:00
Richard Barry
07990a8c0c Added a couple of extra compiler options better for use with the latest Yagarto release. 2009-09-28 18:05:54 +00:00
Richard Barry
d7ca9be54d Added a couple of extra compiler options better for use with the latest Yagarto release. 2009-09-28 18:01:57 +00:00
Richard Barry
8a6518c3b3 Test with latest IAR version. 2009-09-28 17:52:42 +00:00
Richard Barry
b04f886ebd Updated for use with latest Yagarto release. 2009-09-28 17:15:51 +00:00
Richard Barry
5f896f1640 Added CM3 MPU demo. 2009-09-28 14:26:40 +00:00
Richard Barry
4640196beb Add CM3 MPU port. 2009-09-28 14:23:45 +00:00
Richard Barry
531faedf63 Update to use the latest Yagarto and change the C handler part of the interrupt routines to use the noinline attribute. 2009-09-18 20:27:00 +00:00
Richard Barry
7ff79ca26b Update to use the latest Yagarto and change the C handler part of the interrupt routines to use the noinline attribute. 2009-09-18 14:08:36 +00:00
Richard Barry
6bdf14c33f Update to use the latest Yagarto and change the C handler part of the interrupt routines to use the noinline attribute. 2009-09-18 14:04:40 +00:00
Richard Barry
9a76bc39cb Update to use Yagarto compiler and use the noinline attribute on the serial port handler function. 2009-09-18 13:55:43 +00:00
Richard Barry
4b7c5b07c1 Correct unintended duplication and slight wording change. 2009-08-20 13:49:12 +00:00
Richard Barry
b401621a85 Correct the name of the new Cortex M3 demo directory. 2009-08-12 16:17:33 +00:00
Richard Barry
2d4ed1801b Update libdriver for Rowley demos. 2009-08-12 16:12:31 +00:00
Richard Barry
19216099d0 Add LM3Sxxx Rowley demo. 2009-08-12 16:10:55 +00:00
Richard Barry
ed06a0400a Update to V5.4.2. See http://www.freertos.org/History.txt . 2009-08-09 19:10:57 +00:00
Richard Barry
1831418ec8 Prepare for release. 2009-08-09 14:03:25 +00:00
Richard Barry
5a5be9567c Start to prepare for release. 2009-08-09 14:02:07 +00:00
Richard Barry
a4708c9fc8 Increase frequency to 99MHz. 2009-08-09 13:03:17 +00:00
Richard Barry
fb01731f41 Initial IAR LPC1768 demo. Work in progress at this point. 2009-08-09 12:19:17 +00:00
Richard Barry
87bb2c58b2 Formatting only. 2009-08-09 12:11:16 +00:00
Richard Barry
790bacc8f2 Remove compiler warnings. 2009-08-09 12:10:34 +00:00
Richard Barry
e9830a7ee3 Remove unused structure definition. 2009-08-09 12:09:18 +00:00
Richard Barry
27135c4a1c Just remove compiler warning. 2009-08-09 12:07:49 +00:00
Richard Barry
44b4467b26 Add simple USB CDC task. 2009-08-07 15:30:57 +00:00
Richard Barry
df338c84c3 Add simple USB CDC task. 2009-08-07 15:30:18 +00:00
Richard Barry
a83d9d93e8 Add a basic USB CDC example using LPCUSB. 2009-08-07 14:35:24 +00:00
Richard Barry
d2a29ece23 Update new project file. 2009-08-06 20:31:17 +00:00
Richard Barry
3f3a091728 Correct the IF EXIST part of the batch file. 2009-08-06 20:20:22 +00:00
Richard Barry
d2a9f9624b Rename Nios2 to NiosII. 2009-08-06 20:15:39 +00:00
Richard Barry
ddb7c49f3c Add batch file to create the NiosII project directory structure. 2009-08-06 20:08:34 +00:00
Richard Barry
523ffada03 Add new NiosII demo project. 2009-08-06 19:36:48 +00:00
Richard Barry
5d6acacd7a Correct spelling error in comment only. 2009-08-06 19:33:06 +00:00
Richard Barry
6358344ea1 Added new Nios2 port layer. 2009-08-06 18:23:40 +00:00
Richard Barry
3a883a776c Update to V5.4.1 2009-07-25 20:14:06 +00:00
Richard Barry
87eb48c97c Explicit casting added to the 'check for time out' function to ensure integer promotion does not occur. 2009-07-25 18:10:16 +00:00
Richard Barry
af6c245366 Decrease the configMINIMAL_STACK_SIZE setting to 190 to allow the demo to execute without running out of heap space. 2009-07-25 17:52:06 +00:00
Richard Barry
0528691833 Correct interrupt priority assignment. 2009-07-21 19:35:59 +00:00
Richard Barry
276356d9b5 Supply default setting for configUSE_MALLOC_FAILED_HOOK. 2009-07-21 17:33:02 +00:00
Richard Barry
4a1fbbca99 Added a call to vApplicationMallocFailedHook() when pvPortMalloc() returns NULL. 2009-07-21 17:25:55 +00:00
Richard Barry
7a3ac3c503 Suppress warning w6 2009-07-15 09:01:05 +00:00
Richard Barry
f312118bf9 Ensure LPC1768 demos are correct prior to V5.4.0 release. 2009-07-12 19:00:28 +00:00
Richard Barry
42f3130b20 Add #error directive to instruct people to run the batch file so that the project directory structure is configured. 2009-07-12 16:50:08 +00:00
Richard Barry
d4b8c84409 2009-07-12 16:49:14 +00:00
Richard Barry
af4a71e6b5 Move .bat file up one directory. 2009-07-12 16:19:30 +00:00
Richard Barry
f59ba6d86a Add extra files to the new LPC1768 Red Suite demo. 2009-07-12 14:46:25 +00:00
Richard Barry
e6f3fa02dc Old LPC1766 Red Suite demo is being removed as it used pre-production silicon that was a little different to the production silicon. There is now a new LPC1768 Red Suite demo in its place. 2009-07-12 14:26:33 +00:00
Richard Barry
b686daaa40 Add new LPC1768 RedSuite demo. 2009-07-12 14:23:25 +00:00
Richard Barry
09f28cb98c Add new LPC1768 RedSuite demo. 2009-07-12 14:19:52 +00:00
Richard Barry
28482990e0 Commit file deletions. 2009-07-12 14:04:30 +00:00
Richard Barry
9dace4de75 Prepare for release. 2009-07-12 14:02:12 +00:00
Richard Barry
079f9f4ee2 Add header file so it compiles with CrossWorks V2. 2009-07-09 17:55:27 +00:00
Richard Barry
b4eea4fa68 Reluctantly convert to use the CMSIS header files. 2009-07-09 14:47:02 +00:00
Richard Barry
312b19b236 Continue work on Rowley LPC1768 demo. 2009-07-09 14:46:03 +00:00
Richard Barry
ee0ff3a207 Update version number. 2009-07-07 09:58:26 +00:00
Richard Barry
fdcc3676cd Update version number. 2009-07-07 09:41:29 +00:00
Richard Barry
836860067f Update version number. 2009-07-07 09:29:47 +00:00
Richard Barry
32105816be Set to use 32bit tick variables. 2009-07-06 08:16:40 +00:00
Richard Barry
0cc071f88a Tidy up Ethernet driver. 2009-07-05 20:47:10 +00:00
Richard Barry
b92dd21bc5 Update EMAC driver. 2009-07-05 19:50:52 +00:00
Richard Barry
83c2470ead Continue work on emac driver. 2009-07-05 15:00:41 +00:00
Richard Barry
ec5827a601 Update header files to include CMSIS files. 2009-07-05 13:48:46 +00:00
Richard Barry
fe9d735641 Add Rowley LPC1768 demo. 2009-07-05 08:54:12 +00:00
Richard Barry
428dbc9342 Update some header files for use with the production standard silicon. 2009-07-05 08:48:08 +00:00
Richard Barry
f154711652 2009-07-05 08:46:49 +00:00
Richard Barry
f42b1510fa Ready the PPC440 projects for release. 2009-07-05 08:41:27 +00:00
Richard Barry
3634ebb497 Added PPC440 demo that does not use any floating point hardware. 2009-06-30 19:42:21 +00:00
Richard Barry
b49cf69600 Add Virtex5 demo that uses the single precision floating point. 2009-06-30 19:39:09 +00:00
Richard Barry
9815654538 Add Virtex5 demo that uses the double precision floating point. 2009-06-30 19:35:54 +00:00
Richard Barry
e36ece8d42 Add support for double precision floating point. 2009-06-30 19:24:32 +00:00
Richard Barry
09f991277e Add PPC440 port layer code. 2009-06-30 17:38:58 +00:00
Richard Barry
0a9fddb5d4 Add proper 8 byte alignment support. 2009-06-30 16:32:36 +00:00
Richard Barry
0b86cb1e2c New version of the Posix GCC simulator. 2009-06-22 09:15:58 +00:00
Richard Barry
f1d6aa1a06 Prepare for V5.3.1 release. 2009-06-21 19:20:26 +00:00
Richard Barry
fe1295fd25 Prepare for V5.3.1 release. 2009-06-21 19:10:37 +00:00
Richard Barry
7818ed5a97 Prepare for V5.3.1 release. 2009-06-21 19:07:47 +00:00
Richard Barry
c2e02c0488 Update to work with latest RIDE version. 2009-06-21 13:10:28 +00:00
Richard Barry
4fda9b25f3 Add local copy of the library files as the common copy has changed and breaks this build. 2009-06-21 09:39:07 +00:00
Richard Barry
303da1a725 Add new STM32 driver files. 2009-06-21 08:22:46 +00:00
Richard Barry
fb32554dc1 Add new STM32 driver files. 2009-06-21 08:22:07 +00:00
Richard Barry
f525e50307 Add STM32 Ethernet driver files. 2009-06-21 08:21:11 +00:00
Richard Barry
a5060cd1e2 New port layer files. 2009-06-20 19:53:16 +00:00
Richard Barry
e52a6e390e New STM32 demo added. 2009-06-20 18:42:08 +00:00
Richard Barry
90874f8c2e Formatting only. 2009-06-20 16:49:16 +00:00
Richard Barry
1513fb6807 Update SPI driver header to latest version. 2009-06-20 16:46:05 +00:00
Richard Barry
16434894ee New driver files for Connectivity Line. 2009-06-20 16:45:08 +00:00
Richard Barry
1f501bb518 Update SPI driver header to latest version. 2009-06-20 16:43:26 +00:00
Richard Barry
01ffe66a83 Small mod for Connectivity Line demo. 2009-06-20 16:42:28 +00:00
Richard Barry
8f26ec2474 Replaced asm statements with __asm for building with CrossWorks V2. 2009-06-20 16:39:47 +00:00
Richard Barry
c134405914 Added missing header file. 2009-06-20 16:25:14 +00:00
Richard Barry
ae23ad7395 2009-06-03 18:22:58 +00:00
Richard Barry
c0223a28fe Deleted the build files. 2009-06-01 11:48:10 +00:00
Richard Barry
151c72ab7c Add new demo files. 2009-06-01 11:45:26 +00:00
Richard Barry
b5ab3cd823 Final mods prior to release. 2009-06-01 11:41:16 +00:00
Richard Barry
c36f76a062 Add Red Suite project back in minus the workspace. 2009-05-30 19:24:07 +00:00
Richard Barry
756a1bb4ec Remove workspace from repository. 2009-05-30 19:22:23 +00:00
Richard Barry
e739c978b8 Remove the oops. 2009-05-30 16:16:12 +00:00
Richard Barry
5bb9537bef Prepare for V5.3.0 release. 2009-05-30 16:15:29 +00:00
Richard Barry
d79f029d9f Prepare for V5.3.0 release. 2009-05-30 16:14:31 +00:00
Richard Barry
5dcbec38e3 Prepare for V5.3.0 release. 2009-05-30 16:10:29 +00:00
Richard Barry
aad5dce4a1 Prepare for V5.3.0 release. 2009-05-30 15:59:59 +00:00
Richard Barry
c012651a66 Prepare for V5.3.0 release. 2009-05-30 15:56:05 +00:00
Richard Barry
4bf5521db6 Prepare for V5.3.0 release. 2009-05-30 15:51:41 +00:00
Richard Barry
f24533b765 Added xTaskGetApplicationTaskTag() function. 2009-05-30 13:30:40 +00:00
Richard Barry
1ead7d162a Add xTaskGetApplicationTaskTag() prototype. 2009-05-30 13:27:54 +00:00
Richard Barry
cae143cbbf Add portENTER_CRITICAL() macro. Previously it was an inline asm function but it needs to be a macro for portable.h to compile. 2009-05-30 13:26:38 +00:00
Richard Barry
b57e4f4c36 Change structs to unions to save a few bytes. Normally unions are against the coding standard but in this case they are permitted as their use is purely to ensure byte alignment. 2009-05-30 13:25:16 +00:00
Richard Barry
3af07deca2 Add call to xTaskGetApplicationTaskTag(), just as a test as its new and not called anywhere else. 2009-05-30 13:23:16 +00:00
Richard Barry
695eed8eb4 Added several new contributed demos. 2009-05-29 19:33:41 +00:00
Richard Barry
2ebb35d75d Add LED.c to the working set. 2009-05-29 14:39:24 +00:00
Richard Barry
9a1a7cb4d2 Add LED.c to the working set. 2009-05-29 14:35:28 +00:00
Richard Barry
5ae2d11145 Remove compiler warning. 2009-05-29 14:32:38 +00:00
Richard Barry
6003973d5e Work in progress on the LPC1766 port. 2009-05-29 14:30:24 +00:00
Richard Barry
a9a108a751 Correct typeo. 2009-05-29 08:12:46 +00:00
Richard Barry
53efcbb6c9 Updated description of the files in this directory. 2009-05-29 08:11:12 +00:00
Richard Barry
b42009def0 Work in progress. 2009-05-28 20:40:12 +00:00
Richard Barry
25194d5918 Correct page heading. 2009-05-28 20:37:49 +00:00
Richard Barry
3db39eb99d Just remove compiler warnings. 2009-05-28 20:36:59 +00:00
Richard Barry
cd7fb3fda1 Just remove compiler warnings. 2009-05-28 20:35:28 +00:00
Richard Barry
28aa468bd0 Formatting only. 2009-05-28 20:34:32 +00:00
Richard Barry
4965cdb367 Update as Eclipse decided to delete and add files. 2009-05-28 12:20:58 +00:00
Richard Barry
f626f8ce19 Update .project to latest Code Red version. 2009-05-28 12:16:46 +00:00
Richard Barry
9b2035aa90 Update .project to latest Code Red version. 2009-05-28 12:13:21 +00:00
Richard Barry
ef3795d7c0 Remove the .lock file from the repository. 2009-05-28 11:53:17 +00:00
Richard Barry
51404a713e First LPC17xx demo added. 2009-05-28 11:48:32 +00:00
Richard Barry
245bb81bc0 Moved the position of the traceTASK_DELETED() macro. 2009-05-22 15:35:40 +00:00
Richard Barry
25644cbf5d Update workspace for use with Ganymede. 2009-05-21 12:42:59 +00:00
Richard Barry
27934607e5 Updated the served WEB pages to include a page that shows the gathered task run time stats. 2009-05-21 12:29:06 +00:00
Richard Barry
1c1f614404 Added the macros necessary to gather the task run time stats information. 2009-05-21 12:27:21 +00:00
Richard Barry
2293b8ca53 Add variable to keep a count of the high frequency time tick occurrences. This is then used by the run time stats gathering macros. 2009-05-21 12:26:27 +00:00
Richard Barry
c66301ac9e Update the run time stats display function. 2009-05-21 12:23:24 +00:00
Richard Barry
8243645ac8 Corrected version number. 2009-05-21 12:20:31 +00:00
Richard Barry
8b4ef53b69 Added run time stats functions. 2009-05-19 10:38:26 +00:00
Richard Barry
886be58c58 Formatting only. 2009-05-19 10:34:57 +00:00
Richard Barry
4c232cdc4e Formatting only. 2009-05-19 10:34:04 +00:00
Richard Barry
b76158a10d Added vTaskGetRunTimeStats() prototype. 2009-05-19 10:33:12 +00:00
Richard Barry
6ed4d1d3da Add defaults for the new run time counter stats configuration constants. 2009-05-19 10:31:53 +00:00
Richard Barry
a7f134911a Just a formatting change. 2009-05-03 08:28:14 +00:00
Richard Barry
f1e278e193 Added comment to assist debugging. 2009-05-03 08:27:22 +00:00
Richard Barry
794edd476e Put in "catch all" portmacro.h include to allow the path to the correct portmacro.h file to be included as a compiler option. 2009-05-03 07:51:00 +00:00
Richard Barry
6f8158082a Remove .plg file as this is now put into the bin directory. 2009-04-27 09:17:48 +00:00
Richard Barry
515cd42702 Change project so output files go into a bin directory rather than being dumped in the project directory. 2009-04-27 09:15:19 +00:00
Richard Barry
b4eddb4992 Update to latest IAR version format. 2009-04-27 09:10:43 +00:00
Richard Barry
8395c9a633 Add queue registry so the IAR plug-in can be tested. 2009-04-27 09:06:00 +00:00
Richard Barry
da0c104de4 Update the WEB server demo. 2009-03-24 12:08:20 +00:00
Richard Barry
5af3321022 Add missing files. 2009-03-18 16:16:57 +00:00
Richard Barry
2f40ad7393 Ready for V5.2.0 release. 2009-03-14 19:20:12 +00:00
Richard Barry
975f102de9 Updated clean command to remove all object files. 2009-03-14 15:08:41 +00:00
Richard Barry
5f8b420aa5 Changed the use of critical sections to instead use scheduler locking as the BIOS functions exit with interrupts enabled no matter what the state when the BIOS function was called. 2009-03-14 15:07:06 +00:00
Richard Barry
42b60ed69c Increment the uxTaskNumber variable when a task is deleted in addition to when a task is created. This is to assist kernel aware debuggers detecting when the task list needs refreshing. 2009-03-14 15:04:44 +00:00
Richard Barry
fa9a58c9c0 Added OMAP port and demo. 2009-03-12 20:45:59 +00:00
Richard Barry
143c58e032 Minor changes to new queue functions plus add comments. 2009-03-12 11:48:24 +00:00
Richard Barry
55c96044b0 Some optimisations added. 2009-03-11 10:55:41 +00:00
Richard Barry
aaeb4790de Optimisations - being checked in for backup - not yet complete. 2009-03-11 10:53:45 +00:00
Richard Barry
dae13395ed Closed un-terminated comment. 2009-03-10 12:22:30 +00:00
Richard Barry
4f2654fb0b Closed un-terminated comment. 2009-03-10 12:21:30 +00:00
Richard Barry
a25d111613 Closed un-terminated comment. 2009-03-10 12:20:47 +00:00
Richard Barry
eb6a668a8f Bug fix - loop count value was wrong. 2009-03-06 13:13:56 +00:00
Richard Barry
d46a1e9699 Remove the NEC port as there is now a new an supported version. 2009-02-20 15:19:39 +00:00
Richard Barry
52ba0e651e Update to V5.1.2. 2009-02-09 20:21:35 +00:00
Richard Barry
2b388dacd1 Update startup file to workaround bug in IAR provided file. 2009-02-09 20:05:59 +00:00
Richard Barry
cd8c28b070 Add comtest tasks to the AT91SAM9XE demo. 2009-02-09 20:03:16 +00:00
Richard Barry
9323cea425 Continued development on NEC ports. 2009-02-07 18:20:32 +00:00
Richard Barry
fe73d24184 Add MCF52259 demo. 2009-02-07 17:52:41 +00:00
Richard Barry
8981a8539a Add hardware bug workaround for auto-negotiate errata. 2009-02-07 17:48:12 +00:00
Richard Barry
3741d47db2 Update pages served by WEB server. 2009-02-07 17:46:11 +00:00
Richard Barry
8a52afda6e Update pages served by WEB server. 2009-02-07 17:44:49 +00:00
Richard Barry
aac296a7c8 Continued development on NEC ports. 2009-02-07 17:41:36 +00:00
Richard Barry
c4a68ac620 Continued development on NEC ports. 2009-02-07 16:52:24 +00:00
Richard Barry
e31fe0ef80 Remove unnecessary semicolon. 2009-02-06 13:30:39 +00:00
Richard Barry
812e63f87f Add a trap call to test the manual context switch in addition the the pre-emptive context switch. 2009-02-06 13:28:52 +00:00
Richard Barry
223feee46c Add more comments. 2009-02-06 13:27:41 +00:00
Richard Barry
ea209490e1 Continue 78K0R development. 2009-02-06 13:25:05 +00:00
Richard Barry
4a3e471fda Continue 78K0R development. 2009-02-06 13:23:23 +00:00
Richard Barry
8c1495a57d Continue 78K0R development. 2009-02-06 13:21:35 +00:00
Richard Barry
23d63def3b Add code for near memory model. 2009-02-05 21:13:24 +00:00
Richard Barry
2d77a49535 Add code for near memory model. 2009-02-05 21:12:34 +00:00
Richard Barry
035abe8707 Add code for near memory model. 2009-02-05 21:11:24 +00:00
Richard Barry
e4319d7f88 Continue 78K0R development. 2009-02-05 13:02:27 +00:00
Richard Barry
e311bdb650 Continue 78K0R development. 2009-02-05 13:01:37 +00:00
Richard Barry
617ddbb61f Continue 78K0R development. 2009-02-05 10:40:24 +00:00
Richard Barry
c1a2e601a6 Tidy up and comment. 2009-02-04 16:53:52 +00:00
Richard Barry
bfd67da1e7 Continue 78K0R development. 2009-02-04 13:08:12 +00:00
Richard Barry
299557fed2 Continue 78K0R development. 2009-02-04 13:07:16 +00:00
Richard Barry
46425b4099 Continue 78K0R development. 2009-02-03 21:09:16 +00:00
Richard Barry
7acae9e570 Continue 78K0R development. 2009-02-03 21:07:17 +00:00
Richard Barry
eef9900e23 First pass demo for 78K0R. 2009-02-03 19:46:32 +00:00
Richard Barry
d4376e4bcc Add a little more commenting. 2009-02-03 15:21:51 +00:00
Richard Barry
c8b25f8bf2 Tidy up new port file. 2009-02-03 15:20:05 +00:00
Richard Barry
18797cb689 Change name of asm file to be consistent with other ports. 2009-02-02 18:38:48 +00:00
Richard Barry
e602554120 Renamed to remove the Fx3 from the directory name. 2009-02-01 21:03:38 +00:00
Richard Barry
33597ce971 Renamed to remove the Fx3 from the directory name. 2009-02-01 21:01:43 +00:00
Richard Barry
37402a9960 Renamed to remove the Fx3 from the directory name. 2009-02-01 20:29:36 +00:00
Richard Barry
97de395ad0 Add 78KR definition. 2009-01-31 14:48:50 +00:00
Richard Barry
7a83c44856 Tidy up and prepare for release. 2009-01-31 14:47:50 +00:00
Richard Barry
4e1b587af3 Extend FX16 functionality. 2009-01-31 14:11:22 +00:00
Richard Barry
0e91b60a7d Extend FX16 functionality. 2009-01-31 13:42:20 +00:00
Richard Barry
269de4b1e7 Extend FX16 functionality. 2009-01-31 12:56:33 +00:00
Richard Barry
46c3268670 Continue FX16 demo development. 2009-01-31 11:00:54 +00:00
Richard Barry
f88f5afa3b Continue FX16 demo development. 2009-01-31 10:31:21 +00:00
Richard Barry
d71ed5975c Continue FX16 demo development. 2009-01-30 16:28:08 +00:00
Richard Barry
d61373702a Continue FX16 demo development. 2009-01-30 14:06:37 +00:00
Richard Barry
7551ede806 New 78K0R first pass files added. 2009-01-30 10:47:35 +00:00
Richard Barry
d62f5ef24a Continued V850 development. 2009-01-30 09:26:16 +00:00
Richard Barry
667493bed2 Continued V850 development. 2009-01-29 21:27:10 +00:00
Richard Barry
4b4aecf217 Continued V850 development. 2009-01-29 21:26:43 +00:00
Richard Barry
c7ff0f4b53 Continued V850 development. 2009-01-29 21:26:10 +00:00
Richard Barry
38511e8174 Add device specific versions of LowLevelInit.c. 2009-01-29 20:33:15 +00:00
Richard Barry
1e29358197 Combine different part variants into a single port.c file. 2009-01-29 20:00:56 +00:00
Richard Barry
08464adb74 Combine different part variants into a single port.c file. 2009-01-29 19:55:14 +00:00
Richard Barry
99d615a7dd Add device specific versions of portasm.s85. 2009-01-29 19:51:11 +00:00
Richard Barry
adc5c7142b Rename to make file name more generic. 2009-01-29 17:32:19 +00:00
Richard Barry
ccb960ca8b Rename to make file name more generic. 2009-01-29 17:30:54 +00:00
Richard Barry
e2e988191c Rename to make file name more generic. 2009-01-29 17:29:10 +00:00
Richard Barry
5acfec1f7c Rename to make file name more generic. 2009-01-29 17:28:39 +00:00
Richard Barry
f1890708e1 Continued V850 development. 2009-01-29 16:23:52 +00:00
Richard Barry
4d39dfe5a0 Tidy up only. 2009-01-29 16:22:42 +00:00
Richard Barry
34333e3d27 Continued V850 development. 2009-01-29 16:21:56 +00:00
Richard Barry
77fbf587ee Continued V850 development. 2009-01-29 16:20:25 +00:00
Richard Barry
42d07bc94b Split out the processor dependent stuff from main.c. 2009-01-29 15:06:24 +00:00
Richard Barry
f622836e18 Add new port files for V850ES JJ3. 2009-01-29 14:49:47 +00:00
Richard Barry
a256024aaa Add LED output routine for the JJ3 target board. 2009-01-29 14:46:41 +00:00
Richard Barry
87253992aa Rename device specific file. 2009-01-28 17:52:25 +00:00
Richard Barry
b93186e975 Rename device specific file. 2009-01-28 17:50:49 +00:00
Richard Barry
761540892b Tidy up and comment. 2009-01-28 12:37:04 +00:00
Richard Barry
2fd4047164 Add header include. 2009-01-28 12:36:04 +00:00
Richard Barry
f5e095e34f Tidy up and comment. 2009-01-28 12:21:11 +00:00
Richard Barry
dd9ed87596 Add calls to portYIELD_FROM_ISR(). 2009-01-28 11:08:35 +00:00
Richard Barry
0adf3d96c4 Add in the portYIELD_FROM_ISR() function. 2009-01-28 11:08:01 +00:00
Richard Barry
4555f696a8 More work in progress on NEC port and demo. 2009-01-26 17:30:18 +00:00
Richard Barry
cadd182942 More work in progress on NEC port and demo. 2009-01-26 17:29:01 +00:00
Richard Barry
d811a00690 Rename file. 2009-01-23 16:50:43 +00:00
Richard Barry
9025468276 Adjust memory allocation. 2009-01-23 16:48:37 +00:00
Richard Barry
37bee0c18b Minor change so the delay automatically adjusts to the tick frequency. 2009-01-23 16:47:32 +00:00
Richard Barry
f8e9f4071b Continues work on new NEC port/demo. 2009-01-23 16:46:19 +00:00
Richard Barry
baa287be9a Correct some capitalisation issues for Linux users. 2009-01-23 08:53:40 +00:00
Richard Barry
8fa8b7c7a9 Correct some capitalisation issues for Linux users. 2009-01-23 08:51:51 +00:00
Richard Barry
5ebd915502 Formatting only. 2009-01-22 17:26:04 +00:00
Richard Barry
296514e80a Backup NEC project - still a work in progress. 2009-01-22 17:25:06 +00:00
Richard Barry
7164e04294 Add new partest files for the NEC demo. 2009-01-22 14:44:08 +00:00
Richard Barry
19e2d266b6 Renamed file. 2009-01-22 11:08:21 +00:00
Richard Barry
d92156e85a Add in V850 include file. 2009-01-22 11:03:59 +00:00
Richard Barry
f2114d04f2 New port - still a work in progress. 2009-01-22 11:02:09 +00:00
Richard Barry
395aec25ff New NEC port - work in progress. 2009-01-22 10:59:24 +00:00
Richard Barry
c1cb5dac54 Small modification to where header files are included from to make more portable. 2009-01-18 13:05:26 +00:00
Richard Barry
c87cff51c2 Added the 16FX definition. 2009-01-18 13:04:35 +00:00
Richard Barry
c10e20be42 Start of a new Fujitsu demo - still a work in progress. 2009-01-17 21:21:43 +00:00
Richard Barry
06265d2313 Small modification to where header files are included from to make more portable. 2009-01-17 21:19:18 +00:00
Richard Barry
e41454c461 Update to use the latest version of the Ride libraries. 2009-01-17 18:52:26 +00:00
Richard Barry
aee92373cf Still a work in progress. 2009-01-17 17:38:46 +00:00
Richard Barry
8d724f682d Clean up compiler warnings only. 2009-01-17 17:37:50 +00:00
Richard Barry
d94151bca7 Updated threads.js for Rowley Crossworks - thanks Glen B. 2009-01-11 13:04:03 +00:00
Richard Barry
6b8a71ba29 Add flash linker file for SAM9256XE. 2009-01-07 12:27:11 +00:00
Richard Barry
12d86511c9 Work in progress only. 2009-01-07 12:17:19 +00:00
Richard Barry
adad8eab83 Work in progress on new port - correct the configuration of the timer interrupt. 2009-01-07 11:00:48 +00:00
Richard Barry
c82aa9b224 Update to IAR V5.3. 2009-01-07 10:58:10 +00:00
Richard Barry
eefea4b753 Bug fix in port.c. 2009-01-05 09:34:57 +00:00
Richard Barry
6ee8deece7 Corrected comment - thanks Ralf A. 2008-12-23 19:25:33 +00:00
Richard Barry
441a1fec6d Minor updates only. 2008-12-06 15:02:32 +00:00
Richard Barry
a859c59080 Minor updates only. 2008-12-06 13:35:43 +00:00
Richard Barry
ea30213367 Minor updates. 2008-12-06 13:35:12 +00:00
Richard Barry
f374044a1c Update to the latest compiler version. 2008-12-03 15:09:01 +00:00
Richard Barry
5bb82e7660 Update to the latest compiler version. 2008-12-03 15:01:52 +00:00
Richard Barry
68a24a415e Add new demo. 2008-12-01 18:37:07 +00:00
Richard Barry
2f795214d7 Continued work in progress on new demo. 2008-11-28 16:08:59 +00:00
Richard Barry
c5f0933f49 Add SAM9XE definition. 2008-11-28 16:08:21 +00:00
Richard Barry
46d4beaba8 Update IRQ handler code. 2008-11-28 16:07:27 +00:00
Richard Barry
151e000be0 Continued work in progress on new demo. 2008-11-28 16:06:47 +00:00
Richard Barry
e540f0abf4 New demo being added - work in progress. 2008-11-28 15:41:07 +00:00
Richard Barry
efc8243397 Atmel provided hardware specifics. 2008-11-28 15:39:53 +00:00
Richard Barry
5e6d50864c New demo being added - work in progress. 2008-11-28 15:37:37 +00:00
Richard Barry
8471147b5a Remove erroneous comments. 2008-11-22 17:34:51 +00:00
Richard Barry
eb16fc814d Correct comment regarding the configMAX_SYSCALL_INTERRUPT_PRIORITY setting. 2008-11-21 18:37:01 +00:00
Richard Barry
f9e0da0358 Ready for V5.1.1 release. 2008-11-20 16:29:10 +00:00
Richard Barry
aa03bff58d Ready for V5.1.1 release. 2008-11-20 16:27:34 +00:00
Richard Barry
d6728eb2fc Ready for V5.1.1 release. 2008-11-20 16:21:50 +00:00
Richard Barry
e785527326 Ready for V5.1.1 release. 2008-11-20 16:18:57 +00:00
Richard Barry
57e58b25af Ready for V5.1.1 release. 2008-11-20 16:16:31 +00:00
Richard Barry
5e238dd6f4 Ready for V5.1.1 release. 2008-11-20 16:12:56 +00:00
Richard Barry
d28eda8634 Ready for V5.1.1 release. 2008-11-20 16:10:46 +00:00
Richard Barry
a9404cd88a Add in projects and debug launches. 2008-11-20 10:50:53 +00:00
Richard Barry
43bb138290 Add in projects and debug launches. 2008-11-20 10:49:39 +00:00
Richard Barry
6633583d98 Created new workspace, so far it is working but does not yet include debugger setup. 2008-11-20 10:16:22 +00:00
Richard Barry
c5991e5f68 Added back in the Coldfire MCF52233 demo with makefile, not yet including the Eclipse project. 2008-11-20 09:46:04 +00:00
Richard Barry
4e8383be43 Give up attempting to fix workspace - delete and re-create. 2008-11-20 09:23:36 +00:00
Richard Barry
5366162bcd Give up attempting to fix workspace - delete and re-create. 2008-11-20 09:22:53 +00:00
Richard Barry
2f8d10dc34 2008-11-19 22:45:13 +00:00
Richard Barry
b3f0fb2804 Remove .lock file. 2008-11-19 22:44:31 +00:00
Richard Barry
0cd598fc66 Another attempted at the f'in workspace. 2008-11-19 22:31:33 +00:00
Richard Barry
9073424aa9 Another attempted at the f'in workspace. 2008-11-19 22:29:24 +00:00
Richard Barry
ea547e79ba 2008-11-19 22:18:35 +00:00
Richard Barry
bca87dcf54 Still messing around trying to get the workspace to be distributable. 2008-11-19 22:13:03 +00:00
Richard Barry
acbdd47bee Delete MCF52233 files to revert back to older version of the workspace. 2008-11-19 22:09:15 +00:00
Richard Barry
2389e3e25a 2008-11-19 21:36:55 +00:00
Richard Barry
bee2975d02 2008-11-19 21:35:57 +00:00
Richard Barry
a5412bed75 More fiddling with the damned workspace. 2008-11-19 21:35:17 +00:00
Richard Barry
d07b337786 Reconfigure workspace. 2008-11-19 21:00:13 +00:00
Richard Barry
dbf2ff1400 Add recreated workspace. 2008-11-19 20:47:57 +00:00
Richard Barry
a35f4c69d8 Delete workspace so it can be re-created clean. 2008-11-19 20:38:32 +00:00
Richard Barry
3cfee24fe6 Attempting to get minimal .metadata for distribution. 2008-11-19 20:18:04 +00:00
Richard Barry
d5e3e282ec 2008-11-19 19:28:56 +00:00
Richard Barry
f3001b6156 2008-11-16 21:10:06 +00:00
Richard Barry
fbf1f69a10 Prepare demo for release. 2008-11-16 21:08:33 +00:00
Richard Barry
b56d2c8d6b Tidy up an comment. 2008-11-16 20:25:26 +00:00
Richard Barry
b8104d386f Delete unused files. 2008-11-16 19:30:23 +00:00
Richard Barry
89ccc31af1 Continue to develop demo. 2008-11-16 19:23:29 +00:00
Richard Barry
a520f5c7e3 Remove compiler warning. 2008-11-16 19:22:04 +00:00
Richard Barry
4b141c691e Allow the task priorities to be overwritten. 2008-11-16 19:21:25 +00:00
Richard Barry
90ac00641c Removed unwanted white space at the end of a macro continuation. 2008-11-16 17:13:55 +00:00
Richard Barry
aa8a0d04b9 Continue work on MCF52233 demo. 2008-11-16 17:12:21 +00:00
Richard Barry
18f84c805f Continue work on MCF52233 demo. 2008-11-16 17:10:27 +00:00
Richard Barry
31606543da Add faster version code. 2008-11-16 15:13:40 +00:00
Richard Barry
f7a168e184 Added JPG to be served by Coldfire WEB server. 2008-11-16 12:18:52 +00:00
Richard Barry
86ae395879 New files to be served from the ColdFire WEB server. 2008-11-16 11:18:33 +00:00
Richard Barry
5e1da95319 Added modified uIP code. 2008-11-16 10:35:36 +00:00
Richard Barry
b5777916ac Deleted obsolete files. 2008-11-16 10:33:24 +00:00
Richard Barry
59d108028b New Eclipse demo added - working but not yet completed. 2008-11-16 10:32:29 +00:00
Richard Barry
85701eb0b1 Correct version number in header. 2008-10-29 10:53:37 +00:00
Richard Barry
86a84a1477 Correct missing comment start. 2008-10-29 10:15:29 +00:00
Richard Barry
03acab14b2 Fix
https://sourceforge.net/tracker/index.php?func=detail&aid=2194064&group_id=111543&atid=659633
2008-10-29 10:11:22 +00:00
Richard Barry
b6e93f2e42 Update comments only. 2008-10-29 09:59:01 +00:00
Richard Barry
f03b362ee9 Update project to the latest IAR format. 2008-10-27 11:56:12 +00:00
Richard Barry
44b7c8b6ac Add MSP430 IAR definition. 2008-10-26 15:36:43 +00:00
Richard Barry
05167fb0f6 Update so both methods of defining interrupts can be used. 2008-10-26 15:34:32 +00:00
Richard Barry
4d302265c2 Add MSP430/IAR demo project. 2008-10-26 14:57:40 +00:00
Richard Barry
48a34c5fd1 Add IAR MSP430 port layer. 2008-10-26 14:56:06 +00:00
Richard Barry
151882a872 Replace absolute path to the asm files with the correct relative path. 2008-10-25 16:33:11 +00:00
Richard Barry
758b1c7c59 Update ready for V5.1.0 release. 2008-10-24 18:07:39 +00:00
Richard Barry
f147249a11 Remove the stale JC Wren demo as a WEB link to the latest version is now used in its place. 2008-10-24 17:53:16 +00:00
Richard Barry
f93deff134 New contributed port uploaded. 2008-10-24 17:15:03 +00:00
Richard Barry
b2303011c3 New contributed port uploaded. 2008-10-24 15:52:56 +00:00
Richard Barry
842a7244cf New unsupported port added. 2008-10-24 15:48:13 +00:00
Richard Barry
cefe46cdbe Change to use UART1. 2008-10-24 15:21:16 +00:00
Richard Barry
4c8a5cfdad Change to use UART1. 2008-10-24 15:19:35 +00:00
Richard Barry
9157e9cfef Add missing file. 2008-10-24 09:52:56 +00:00
Richard Barry
31d448cbf9 2008-10-24 07:39:06 +00:00
Richard Barry
53b376b6b8 Remove the two separate ports, instead use two demo apps that use a conditional compilation to select the method of interrupt management to use. 2008-10-23 19:16:29 +00:00
Richard Barry
a91c6302e7 Remove the two separate ports, instead use two demo apps that use a conditional compilation to select the method of interrupt management to use. 2008-10-23 19:14:45 +00:00
Richard Barry
eee1043e33 Set up to work in both ARM and THUMB modes. 2008-10-23 15:59:50 +00:00
Richard Barry
cf638edfaf Setup to work with both ARM and THUMB modes. 2008-10-23 15:58:17 +00:00
Richard Barry
8347299546 Remove demo that used the now defunct Keil compiler. 2008-10-23 11:23:13 +00:00
Richard Barry
c59af80374 Add demo for the Keil RVDS compiler. 2008-10-23 11:08:14 +00:00
Richard Barry
6ae55f3d6d Remove files that use the now defunct Keil compiler. 2008-10-23 11:06:20 +00:00
Richard Barry
ce7301b3e3 Change from using the old Keil compiler definition to the new RVDS compiler definition. 2008-10-23 11:04:23 +00:00
Richard Barry
36815b949f First ARM7 port that uses the RVDS compiler. 2008-10-23 11:03:25 +00:00
Richard Barry
cfa31e4205 Fix compiler warning only. 2008-10-21 13:28:53 +00:00
Richard Barry
6bf7776dec Continue Coldfire MCF52221 CodeWarrior demo. 2008-10-21 13:27:58 +00:00
Richard Barry
58f3f932ee First working MCF52221 demo. 2008-10-21 10:18:47 +00:00
Richard Barry
094be62ef0 Continue ColdeFire/CodeWarrior development. 2008-10-20 17:21:22 +00:00
Richard Barry
de519dd34e Update to allow low power mode to be used with the RTOS. 2008-10-19 18:52:04 +00:00
Richard Barry
549dcfa148 Add code to the idle hook to test low power mode operation. 2008-10-19 18:51:16 +00:00
Richard Barry
0463a4814b Add code to the idle hook to test low power mode operation. 2008-10-19 18:11:38 +00:00
Richard Barry
86edfb7dd4 Update ISR functions to be compliant with low power mode operation. 2008-10-19 18:10:52 +00:00
Richard Barry
518d5e538a Update to allow low power mode to be used with the RTOS. 2008-10-19 18:08:53 +00:00
Richard Barry
3c4c58dc6d Update to allow low power mode to be used with the RTOS. 2008-10-19 17:45:21 +00:00
Richard Barry
5bccc20356 Update to allow low power mode to be used with the RTOS. 2008-10-19 17:44:56 +00:00
Richard Barry
f9e47722ce Correct portSTACK_GROWTH value. 2008-10-19 11:06:38 +00:00
Richard Barry
a18e5c0bc5 Add header file back - with corrected case. 2008-10-17 14:18:36 +00:00
Richard Barry
317d2004dd Delete a header file so the case can be changed. 2008-10-17 14:17:52 +00:00
Richard Barry
5c189beb42 Correct the .bss end setting. 2008-10-17 14:16:38 +00:00
Richard Barry
60c87c8364 Removed bin files that were checked in in error. 2008-10-17 14:08:24 +00:00
Richard Barry
709b7ee223 Start of a new ColdFire/CodeWarrior demo. 2008-10-17 14:07:17 +00:00
Richard Barry
8e219f83f0 Remove some compiler warnings generated by CodeWarrior. 2008-10-17 13:23:28 +00:00
Richard Barry
285fa0420a Remove some compiler warnings generated by CodeWarrior. 2008-10-17 13:21:18 +00:00
Richard Barry
de5a4b3fb5 Added include path for V2 ColdFire/CodeWarrior. 2008-10-17 13:19:50 +00:00
Richard Barry
5e89d113be New port files for V2 ColdFire/CodeWarrior added. 2008-10-17 13:18:49 +00:00
Richard Barry
40f4287921 New file to separate out the stack checking macros which are a bit ugly to have in the main tasks.c file. 2008-10-09 00:54:10 +00:00
Richard Barry
4f631de793 Update the stack checking functions so they work for stacks that grow up from high memory (PIC24). 2008-10-09 00:53:02 +00:00
Richard Barry
c873e088bf Added JC Wren demos. 2008-09-26 09:03:58 +00:00
Richard Barry
0773e6b805 Change to use interrupt priority definitions that use shifted values from 0 to 7, rather than the full numeric value. 2008-09-24 13:09:59 +00:00
Richard Barry
e12614df23 Change to use interrupt priority definitions that use shifted values from 0 to 7, rather than the full numeric value. 2008-09-24 13:08:28 +00:00
Richard Barry
b6690dfc9a Switch from post increment to pre increment on values sent to queues. This allows the test to execute on systems where interrupt level critical sections cannot nest. 2008-09-24 13:06:39 +00:00
Richard Barry
603ec6a42b Change the force register from low to heigh. 2008-09-22 18:10:28 +00:00
Richard Barry
799cccac42 Use the low force register. 2008-09-22 18:08:29 +00:00
Richard Barry
130e2f2c0a Prepare for V5.0.4 release. 2008-09-22 15:48:40 +00:00
Richard Barry
1d0cf84e80 Change the default vector used for context switching. 2008-09-22 13:48:45 +00:00
Richard Barry
36471ef3e8 Change init value for a variable that was generating compiler warnings on one of the more pedantic compilers. 2008-09-22 13:44:31 +00:00
Richard Barry
c3a33e5e7c Improve example code for xTaskCreate(). 2008-09-22 13:43:07 +00:00
Richard Barry
10edc1088a Added extra compiler specific structure packing options. 2008-09-22 13:18:08 +00:00
Richard Barry
aa2ffbfde5 Added extra compiler specific structure packing options. 2008-09-22 13:16:59 +00:00
Richard Barry
d6ec78a568 Added extra compiler specific options. 2008-09-22 13:14:05 +00:00
Richard Barry
ed240e58a1 Add assert required for linking. 2008-09-22 13:13:03 +00:00
Richard Barry
9d1ab2c90b Change default vector number to 16. 2008-09-22 13:11:32 +00:00
Richard Barry
aa7485ab0f BUG FIX: Changed
*(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;
to
*(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
2008-09-17 16:04:31 +00:00
Richard Barry
a91d3d8afe Note to users only. 2008-09-17 16:03:42 +00:00
Richard Barry
f8abff1e04 BUG FIX: Changed
*(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;
to
*(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
2008-09-17 16:01:56 +00:00
Richard Barry
3b34009b75 Tidy up. 2008-09-17 15:58:45 +00:00
Richard Barry
223bd9c75f BUG FIX: Changed
*(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;
to
*(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
2008-09-17 15:52:54 +00:00
Richard Barry
8e264c901e Added dummy header files to allow the Cortex uIP demo to compile. 2008-09-01 13:20:52 +00:00
Richard Barry
172114c49f Added a #error line to check that FreeRTOS.h is included before one of the subordinate header files. 2008-09-01 08:18:50 +00:00
Richard Barry
cb12d3a973 Added CodeWarrior definitions. 2008-09-01 08:08:44 +00:00
Richard Barry
0a8889d62b Change comments only. 2008-08-27 07:47:55 +00:00
Richard Barry
a36ef26b0c Add bracket where appropriate. 2008-08-15 15:59:42 +00:00
Richard Barry
8f33ce9c30 Use correct counter in reg test 2 task. 2008-08-14 13:59:59 +00:00
Richard Barry
4c0c3038cc Add cleaned up eclipse workspace. 2008-08-14 13:28:18 +00:00
Richard Barry
049459af87 Add URL to configuration pages on FreeRTOS.org site. 2008-08-14 13:19:20 +00:00
Richard Barry
5d83f61228 Documentation only. 2008-08-14 12:57:30 +00:00
Richard Barry
54dbbc3cdf Documentation only. 2008-08-14 12:55:54 +00:00
Richard Barry
be92c862be Minor mods only. 2008-08-14 11:13:34 +00:00
Richard Barry
9c2512f54e Permit no more than two simultaneous occurrences of interrupts adding everything to queues instead of tasks. 2008-08-14 11:10:46 +00:00
Richard Barry
5116051604 Remove initialisation of xQueueRegistry. 2008-08-14 11:09:26 +00:00
Richard Barry
e5d85bc87e Correct version number. 2008-08-14 11:08:36 +00:00
Richard Barry
aeea09e21e Minor changes only. 2008-08-14 11:07:50 +00:00
Richard Barry
6eec108bdd Ensure a yield cannot be pended simultaneously with a critical section being entered. 2008-08-14 11:04:54 +00:00
Richard Barry
d427489391 Tidy up. 2008-08-13 08:06:49 +00:00
Richard Barry
513b1a25e0 Use internal RAM only. 2008-08-13 08:03:47 +00:00
Richard Barry
a2bdba02ad Tidy up. 2008-08-13 08:01:54 +00:00
Richard Barry
0dffe8d801 Increase stack sizes as we now have interrupts nesting 3 deep. 2008-08-11 14:51:09 +00:00
Richard Barry
cebb479b0a Add lwIP V1.3 files. 2008-08-11 14:49:32 +00:00
Richard Barry
bfdbfce22f Add in interrupt nesting and chache support. 2008-08-10 21:19:57 +00:00
Richard Barry
60da4247dd Add interrupt nesting support, cache setup and reg test tasks. 2008-08-10 21:17:20 +00:00
Richard Barry
a943ccd85a Use internal RAM only for data. 2008-08-10 21:16:35 +00:00
Richard Barry
adf9eb9fb0 Remove white space only. 2008-08-10 21:15:14 +00:00
Richard Barry
f68aab980d Interrupt nesting and cache support added. 2008-08-10 21:14:08 +00:00
Richard Barry
53a8d172df Com test now working. 2008-08-09 10:09:21 +00:00
Richard Barry
3a8161372d Add serial test code (not yet complete). 2008-08-08 15:55:31 +00:00
Richard Barry
3ea597543a Add ColdFire definitions. 2008-08-08 15:54:05 +00:00
Richard Barry
431d1c009d Update to allow interrupt nesting (not yet complete). 2008-08-08 15:52:41 +00:00
Richard Barry
181889d6b1 Basic demo up and running. 2008-08-08 12:50:22 +00:00
Richard Barry
5ff84b9869 Basic demo up and running. 2008-08-08 12:47:06 +00:00
Richard Barry
4953c7d030 First task starting. 2008-08-08 09:41:33 +00:00
Richard Barry
3f2375c020 First task starting - woohoo! 2008-08-08 09:40:41 +00:00
Richard Barry
78d3b371fd Stubs ready for ColdFire V2 demo. 2008-08-07 19:13:15 +00:00
Richard Barry
35be76b9b7 Added function stubs. 2008-08-07 19:10:25 +00:00
Richard Barry
216fcb10c9 2008-08-07 19:03:24 +00:00
Richard Barry
5d60a388e0 2008-08-07 19:02:43 +00:00
Richard Barry
1c3c04f121 Prepare for V2 port. 2008-08-07 18:51:34 +00:00
Richard Barry
a2d86ba1fb Add in the -fno-omit-frame-pointer compiler options as a compiler bug workaround. 2008-07-31 11:01:58 +00:00
Richard Barry
16b6baf10c Update to V5.0.3. 2008-07-30 20:04:29 +00:00
Richard Barry
a1edce40d2 Add unsupported files. 2008-07-30 19:10:10 +00:00
Richard Barry
2ff6ab158f Add in the configMAX_SYSCALL_INTERRUPT_PRIORITY test tasks. 2008-07-30 09:39:03 +00:00
Richard Barry
597fbaacde Improve efficiency even further. Introduce the configMAX_SYSCALL_INTERRUPT_PRIORITY feature. 2008-07-30 09:36:40 +00:00
Richard Barry
56d5f4ac9b Just remove a comment. 2008-07-30 09:35:03 +00:00
Richard Barry
6eed669d06 Ensure statics are handled correctly when portREMOVE_STATIC_QUALIFIER is defined. 2008-07-30 09:34:03 +00:00
Richard Barry
ae6d081ebe Add in the configMAX_SYSCALL_INTERRUPT_PRIORITY test tasks. 2008-07-25 02:43:50 +00:00
Richard Barry
512c86194f Add in the configMAX_SYSCALL_INTERRUPT_PRIORITY test tasks. 2008-07-25 02:42:33 +00:00
Richard Barry
8b02e015ba Improve efficiency even further. Introduce the configMAX_SYSCALL_INTERRUPT_PRIORITY feature. 2008-07-25 02:40:35 +00:00
Richard Barry
7580c6b817 Change ARM7 byte alignment to 8. 2008-07-25 02:35:50 +00:00
Richard Barry
794b6546b2 Improve efficiency even further. Introduce the configMAX_SYSCALL_INTERRUPT_PRIORITY feature. 2008-07-25 02:34:31 +00:00
Richard Barry
32592e1385 Improve efficiency even further. Introduce the configMAX_SYSCALL_INTERRUPT_PRIORITY feature. 2008-07-25 02:33:56 +00:00
Richard Barry
3ab4d1f87f Change projects to split the dsPIC and PIC24 taskYIELD implementations. 2008-07-16 10:08:24 +00:00
Richard Barry
e4c0740eaa Change projects to split the dsPIC and PIC24 taskYIELD implementations. 2008-07-16 10:07:16 +00:00
Richard Barry
5ba1afe8b5 Change projects to split the dsPIC and PIC24 taskYIELD implementations. 2008-07-16 10:06:41 +00:00
Richard Barry
b25bb7e4f5 Update project to latest MPLAB version (8?). 2008-07-16 09:58:15 +00:00
Richard Barry
619cd7a43d Update project to use the new asm file for the port yield function, and remove the "user frame pointer" optimisation option. 2008-07-16 09:55:52 +00:00
Richard Barry
3244fd67dc Change capitalization of include header. 2008-07-16 09:50:44 +00:00
Richard Barry
91805dd051 Add the queue registry config parameter. 2008-07-16 09:49:31 +00:00
Richard Barry
c3acf82f70 asm version of the yield function. Moved from port.c. 2008-07-16 09:26:22 +00:00
Richard Barry
090da3b518 Removed the manual context switch from the C file, this is now in an asm file instead. This is a workaround for a compiler bug but provides a better implementation anyway as less stack is used. 2008-07-16 09:12:54 +00:00
Richard Barry
d091cf740f Allow the static qualifier to be removed and rename a list so it does not then clash with the name used in tasks.c once the static has been removed. 2008-07-16 09:10:01 +00:00
Richard Barry
1d4e319aa7 Ensure the queue registry gets initialised. 2008-07-16 09:08:32 +00:00
Richard Barry
ea07e0b934 Correct case of include file to build on Linux. 2008-07-11 07:36:55 +00:00
Richard Barry
e72748b18f Correct case of include file to build on Linux. 2008-07-11 07:36:17 +00:00
Richard Barry
eea5d82a8f Correct case of include file to build on Linux. 2008-07-11 07:33:08 +00:00
Richard Barry
8a795bd375 Update the bInterfaceProtocol member of the descriptors to allow comms with Linux. 2008-06-25 07:15:35 +00:00
Richard Barry
7d034a24be Correct PLL setting for the defined configCPU_CLOCK_HZ setting. 2008-06-21 17:35:41 +00:00
Richard Barry
1e83961601 Update to V5.0.2 2008-05-30 15:51:35 +00:00
Richard Barry
48eff41955 Update to V5.0.2 2008-05-30 15:49:36 +00:00
Richard Barry
42ebfc5227 Update to V5.0.2 2008-05-30 15:46:57 +00:00
Richard Barry
4fcb98ef1d Update to V5.0.2 2008-05-30 15:44:17 +00:00
Richard Barry
cd38538425 Update to V5.0.2 2008-05-30 15:41:10 +00:00
Richard Barry
90064444af Update to V5.0.2 2008-05-30 15:34:42 +00:00
Richard Barry
6128d1a86e Add new PPC405 demo. 2008-05-25 17:42:25 +00:00
Richard Barry
642a74c5b4 Remove old PPC port. 2008-05-25 17:39:16 +00:00
Richard Barry
ac0630af91 Add -fno-strict-aliasing 2008-05-24 18:57:30 +00:00
Richard Barry
192cc29ebc Add usage of portREMOVE_STATIC_QUALIFIER. 2008-05-24 18:56:04 +00:00
Richard Barry
8ce7a79937 Add usage of portREMOVE_STATIC_QUALIFIER. 2008-05-24 18:52:12 +00:00
Richard Barry
576a25a098 Remove static qualifier from queue registry. 2008-05-24 18:47:38 +00:00
Richard Barry
6391f4160b Tidy up ready for release. 2008-05-24 17:03:23 +00:00
Richard Barry
4154eec4e1 Add queue registry code. 2008-05-23 19:24:05 +00:00
Richard Barry
03a82c5bc8 Add #define configQUEUE_REGISTRY_SIZE 0 2008-05-23 19:22:33 +00:00
Richard Barry
a4d3bf8f5d Add #define configQUEUE_REGISTRY_SIZE 0 2008-05-23 18:52:26 +00:00
Richard Barry
91c26c9868 Fix warnings that the latest GCC version spits out. 2008-05-23 18:51:39 +00:00
Richard Barry
ab37826715 Add in #define configQUEUE_REGISTRY_SIZE 0 2008-05-23 18:50:47 +00:00
Richard Barry
a5f3797949 Add in example vQueueAddToRegistry() calls. 2008-05-23 18:49:59 +00:00
Richard Barry
15881cdf39 Add IntQ tests. 2008-05-23 15:24:23 +00:00
Richard Barry
f689c709ab A little optimisation. 2008-05-23 15:16:25 +00:00
Richard Barry
b6aa1d6ca8 Add STM32 Keil demo. 2008-05-21 17:59:30 +00:00
Richard Barry
a87f9df3d8 ST CM3 drivers. 2008-05-21 17:56:31 +00:00
Richard Barry
bb64640f0a Change compiler optimisation. 2008-05-20 18:31:28 +00:00
Richard Barry
98ebaac850 Change optimisation level. 2008-05-20 18:30:30 +00:00
Richard Barry
b8695fa787 Change optimisation level. 2008-05-20 18:29:10 +00:00
Richard Barry
eb9d172082 Remove compiler warnings. 2008-05-20 18:27:59 +00:00
Richard Barry
0f7c3939e1 Remove compiler warnings. 2008-05-20 18:27:07 +00:00
Richard Barry
9d1b078a8f Remove compiler warnings. 2008-05-20 18:26:09 +00:00
Richard Barry
61a5a25a7f Remove compiler warnings. 2008-05-20 18:25:06 +00:00
Richard Barry
c24a713859 Remove compiler warnings. 2008-05-20 18:24:22 +00:00
Richard Barry
01ce621748 Remove compiler warnings and insert missing return statement. 2008-05-20 18:23:44 +00:00
Richard Barry
b19ede773a Add volatile qualifier to loop counters used to detect stalled tasks. 2008-05-20 05:22:35 +00:00
Richard Barry
bea704342a Ensure emulated flop is not used. 2008-05-20 05:20:25 +00:00
Richard Barry
dd1ef6a777 Remove the critical sections as not all ports can yield from within critical sections. 2008-05-19 19:19:25 +00:00
Richard Barry
2888b15b7e Add signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ); Previously this was a private function. 2008-05-19 19:17:56 +00:00
Richard Barry
5a2790a998 Change the way the critical sections are handled within interrupts so the critical sections can be nested. 2008-05-19 19:16:57 +00:00
Richard Barry
4b9fe1e28a Add signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ); 2008-05-19 19:15:38 +00:00
Richard Barry
fb3b17a37c Update the default macros used for critical sections within ISRs. 2008-05-19 19:12:57 +00:00
Richard Barry
b9b3e521f7 Bug fix - allocate 2 extra words at the bottom of the task stack to account for the back chain and saved LR. 2008-05-19 19:11:08 +00:00
Richard Barry
ecc072e58b Tidy up. 2008-05-18 19:57:01 +00:00
Richard Barry
66fc3b8092 Update to use the kernel critical nesting. 2008-05-18 17:28:30 +00:00
Richard Barry
f3eb5028a3 Add new test file. 2008-05-18 16:25:20 +00:00
Richard Barry
31bda54b75 Add new test file. 2008-05-18 16:23:10 +00:00
Richard Barry
f146124bca Add new test file. 2008-05-18 16:21:59 +00:00
Richard Barry
0965823a67 Update demo to include a test of nesting interrupt accessing queues. 2008-05-18 16:21:12 +00:00
Richard Barry
684b898abc Comment changes only. 2008-05-11 13:44:43 +00:00
Richard Barry
6c275b9ca5 First commit of PPC405 version with floating point included. 2008-05-11 13:43:46 +00:00
Richard Barry
ba90821242 Add in new files for floating point and updates following the installation of the service pack. 2008-05-11 13:28:25 +00:00
Richard Barry
d7e9d4d397 Upgrade hardware version numbers following install of service pack. 2008-05-11 13:25:39 +00:00
Richard Barry
d184cdc09d Added flop files. 2008-05-11 13:24:06 +00:00
Richard Barry
dc897a35dd Added optional inclusion of floating point tasks. 2008-05-11 13:19:05 +00:00
Richard Barry
45fceb4bdd Update to include the option of saving/restoring the floating point context. 2008-05-11 09:15:22 +00:00
Richard Barry
6177c6e4a4 Add in the portSET_INTERRUPT_MASK_FROM_ISR() and portCLEAR_INTERRUPT_MASK_FROM_ISR() default (empty) macros. 2008-05-07 18:02:19 +00:00
Richard Barry
5d27f3ccf7 Add in the portSET_INTERRUPT_MASK_FROM_ISR() and portCLEAR_INTERRUPT_MASK_FROM_ISR() macros. 2008-05-07 18:00:26 +00:00
Richard Barry
676139e920 Raise the priority of the serial interrupt. 2008-05-07 17:59:17 +00:00
Richard Barry
9d0e60493a Move the call to start the high frequency timer to inside a task to ensure it does not trigger before the scheduler has started. 2008-05-07 17:58:20 +00:00
Richard Barry
5a1129c315 Change the timer interrupt to use the kernel interrupt entry/exit macros. 2008-05-07 17:56:45 +00:00
Richard Barry
ad52311deb Remove the syscall calls as this is no longer how a context switch is performed. 2008-05-07 17:55:22 +00:00
Richard Barry
bd44f90e50 Add in the configMAX_SYSCALL_INTERRUPT_PRIORITY constant. 2008-05-07 17:54:21 +00:00
Richard Barry
bafcf8901e Update to allow nesting. 2008-05-06 11:51:13 +00:00
Richard Barry
b7f66b9db6 Add the usual missing -1. 2008-05-05 08:41:25 +00:00
Richard Barry
4304c07ebf Performance improvements. 2008-05-04 20:04:52 +00:00
Richard Barry
0eae0f7549 Add nesting support. 2008-05-04 17:36:23 +00:00
Richard Barry
a9393b891d Remove inline keywords. 2008-05-01 17:16:26 +00:00
Richard Barry
3f620024fc Added code to allow a vTaskPrioritySet() caller to pass in the current TCB as well as NULL to indicate that the priority of the calling task is being changed. 2008-05-01 17:15:36 +00:00
Richard Barry
a918bd9825 Update comments for vTaskSuspendAll() "API functions that have the potential to cause a context switch (for example, vTaskDelayUntil(), xQueueSend(), etc.) must not be called while the scheduler is suspended". 2008-05-01 15:54:04 +00:00
Richard Barry
019ab1b908 Remove inline keyword. 2008-05-01 09:06:26 +00:00
Richard Barry
9c87f922b3 Remove inline keyword. 2008-05-01 08:58:48 +00:00
Richard Barry
0d29807e93 Remove inline keyword. 2008-05-01 08:57:45 +00:00
Richard Barry
b08411ec5a Correct timer calculation. 2008-04-16 16:29:28 +00:00
Richard Barry
d7ca9ad0c3 Correct comments. 2008-04-16 14:26:03 +00:00
Richard Barry
7e529c281f Update to V5.0.0. 2008-04-16 08:00:30 +00:00
Richard Barry
4c8425da01 Update to V5.0.0. 2008-04-16 07:52:16 +00:00
Richard Barry
e939542f32 Update to V5.0.0. 2008-04-16 07:47:02 +00:00
Richard Barry
57a83227d0 Remove incorrect const qualifiers. 2008-04-13 17:03:23 +00:00
Richard Barry
8ffe2b49e8 Minor tidy up. No functional difference. 2008-04-13 16:36:35 +00:00
Richard Barry
98daf5a1b8 Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:35:15 +00:00
Richard Barry
c95cae5a99 Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:34:12 +00:00
Richard Barry
dc307b270b Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:33:30 +00:00
Richard Barry
360d357e15 Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:32:41 +00:00
Richard Barry
09bfc2d862 Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:31:43 +00:00
Richard Barry
9cea94ccce Add variable initialisation. Doesn't really make a difference, just neater. 2008-04-13 16:30:29 +00:00
Richard Barry
c1d5690da6 Remove unused assignment. 2008-04-13 16:29:40 +00:00
Richard Barry
7920c29ad1 Update to use new QueueSendFromISR() semantics. 2008-04-13 16:28:17 +00:00
Richard Barry
49c84f0d41 Update to use new xQueueSendFromISR() and xSemaphoreGiveFromISR() function semantics. 2008-04-12 23:45:58 +00:00
Richard Barry
ac58b5b285 Update to use new xQueueSendFromISR() and xSemaphoreGiveFromISR() function semantics. 2008-04-12 23:41:42 +00:00
Richard Barry
8cf6a70c9e Update to use new xQueueSendFromISR() and xSemaphoreGiveFromISR() function semantics. 2008-04-12 23:34:49 +00:00
Richard Barry
c1e9f859c8 Update to use new xQueueSendFromISR() and xSemaphoreGiveFromISR() function semantics. 2008-04-12 23:34:13 +00:00
Richard Barry
f4dd20dffc Update to use new xQueueSendFromISR() and xSemaphoreGiveFromISR() function semantics. 2008-04-12 23:32:18 +00:00
Richard Barry
7eb7201b46 Casting only. 2008-04-12 23:26:44 +00:00
Richard Barry
b24032d4b0 Efficiency improvement. 2008-04-12 23:26:01 +00:00
Richard Barry
a6053582fc Update the sys tick to be more efficient. 2008-04-12 23:25:17 +00:00
Richard Barry
af939eb0a9 Add in the configUSE_APPLICATION_TASK_HOOK macro. 2008-04-12 09:50:30 +00:00
Richard Barry
a9ed428422 Update prototypes and macros for the new xQueueSendFromISR() function and the task hook feature. 2008-04-12 09:48:40 +00:00
Richard Barry
da6d27b627 Introduce the application task hook feature. 2008-04-12 09:46:19 +00:00
Richard Barry
b73dafb1f4 Change the semantics of the xQueueGenericSendFromISR() function. 2008-04-12 09:45:02 +00:00
Richard Barry
2bc9dfa3f8 Ensure the first task starts with interrupts enabled. 2008-04-06 14:42:35 +00:00
Richard Barry
ed543197e0 Ensure the first task starts with interrupts enabled. 2008-04-06 14:41:04 +00:00
Richard Barry
24cb048892 Ensure the first task starts with interrupts enabled. 2008-04-06 14:38:27 +00:00
Richard Barry
ada4744871 Minor changes to the trace macros. 2008-04-06 09:37:26 +00:00
Richard Barry
06e8e93eb5 Added traceTASK_SWITCHED_OUT macro. 2008-04-06 09:36:48 +00:00
Richard Barry
a3677612d2 Corrected SysTick interval calculation. 2008-04-06 09:26:51 +00:00
Richard Barry
2ca3985a8c Corrected SysTick interval calculation. 2008-04-06 09:25:59 +00:00
Richard Barry
7ed94acdff Corrected SysTick interval calculation. 2008-04-06 09:25:00 +00:00
Richard Barry
cfcad6e78a Corrected prototypes for newly added functions that had the 'signed' qualifier missing. 2008-04-06 09:23:58 +00:00
Richard Barry
5cefef5074 2008-04-05 18:10:28 +00:00
Richard Barry
637619dcb7 2008-04-05 15:09:10 +00:00
Richard Barry
d1b9463e29 Changes required to build with the latest Xilinx tools. 2008-03-30 21:18:54 +00:00
Richard Barry
bc7068a690 Add PPC405 port in V10.1 format. 2008-03-30 21:15:19 +00:00
Richard Barry
c2a6dc193e Remove PPC files that are in the EDK V7 format. 2008-03-30 18:41:43 +00:00
Richard Barry
3fd422ff2f Return the lock counts to their original intended behaviour. 2008-03-29 20:50:38 +00:00
Richard Barry
9596b04eff Small mods, and update file headers. 2008-03-26 13:04:38 +00:00
Richard Barry
527fb6a907 Update version numbers to V4.8.0 2008-03-25 21:22:13 +00:00
Richard Barry
3b4545cdf6 Add extra const qualifiers and casts for linting purposes. 2008-03-25 18:30:09 +00:00
Richard Barry
8704fd145b 2008-03-24 13:01:33 +00:00
Richard Barry
343a6101c2 Correct function prototype. 2008-03-24 13:00:38 +00:00
Richard Barry
a08969154a Update to use new port layer. 2008-03-24 12:59:16 +00:00
Richard Barry
829f5cda65 Update to use new port layer. 2008-03-24 12:51:24 +00:00
Richard Barry
6ec6b4508a Update to use new port layer. 2008-03-24 12:44:23 +00:00
Richard Barry
96b7e685a7 Update to use new port layer. 2008-03-24 12:43:05 +00:00
Richard Barry
7e3a04602d Update to use new port layer. 2008-03-24 12:35:40 +00:00
Richard Barry
c366fa96f9 Update to use the new port layer. 2008-03-24 12:32:38 +00:00
Richard Barry
945ffc1a38 2008-03-24 11:51:42 +00:00
Richard Barry
998e9699f4 Update to use new port layer. 2008-03-24 11:51:09 +00:00
Richard Barry
1ef0e22ca1 Update to use new port layer. 2008-03-24 11:45:23 +00:00
Richard Barry
3d099d43f5 Update to use new port layer. 2008-03-24 11:31:41 +00:00
Richard Barry
6e9d6a2bdf Update to use new port layer. 2008-03-24 10:46:56 +00:00
Richard Barry
5024d47769 2008-03-24 10:18:07 +00:00
Richard Barry
8502ee5b1c Introduce configKERNEL_INTERRUPT_PRIORITY and make some performance optimisations. 2008-03-24 10:17:30 +00:00
Richard Barry
534d26e4ef Remove the stellaris-eabi library as the none-eabi library can be used in its place. 2008-03-23 19:04:57 +00:00
Richard Barry
0ec39d206f 2008-03-23 18:50:13 +00:00
Richard Barry
2e3f4ad506 2008-03-23 17:03:16 +00:00
Richard Barry
b593401cfe 2008-03-23 17:02:24 +00:00
Richard Barry
3686ab1dcb 2008-03-23 17:00:08 +00:00
Richard Barry
85c789dc2a Add SVC handler to startup and recursive mutexes to the list of test tasks. 2008-03-23 16:58:34 +00:00
Richard Barry
62f9bdef17 Add new config options. 2008-03-23 16:11:08 +00:00
Richard Barry
a702fc53a7 Add new config options. 2008-03-23 16:09:16 +00:00
Richard Barry
7596b7f45d Allow test to pass when there are many other tasks in the system. 2008-03-23 16:07:48 +00:00
Richard Barry
87575c5cfe Re-write the queue send and queue receive functions to improve their effect on interrupt responsiveness. 2008-03-23 16:06:45 +00:00
Richard Barry
ed28aa2046 Add critical section around xTaskCheckForTimeout() as the new queue code makes a call while the scheduler is not locked. 2008-03-23 16:00:51 +00:00
Richard Barry
5ebd39bfc9 Add utilities that can be used to query a queue from within an ISR. 2008-03-23 15:58:27 +00:00
Richard Barry
58905b6fb4 Performance optimisation. 2008-03-23 15:54:50 +00:00
Richard Barry
a8d03f24e3 Performance optimisation. 2008-03-23 15:53:37 +00:00
Richard Barry
b53d20dfd2 Remove absolute paths. 2008-03-07 18:46:56 +00:00
Richard Barry
ebfede454f Check in before attempting to remove absolute paths in PPC405 project. 2008-03-07 18:23:27 +00:00
Richard Barry
5cb4e9b5a6 Get preeprocessor working correctly. 2008-03-07 16:29:15 +00:00
Richard Barry
1217e8ce06 Get reg test tasks working correctly. 2008-03-07 16:28:32 +00:00
Richard Barry
1aecde4efd Renaming .s to .S. 2008-03-07 13:43:27 +00:00
Richard Barry
640675e76b Add -Wall option. 2008-03-07 11:14:18 +00:00
Richard Barry
6e4a303cdb Add -Wall option. 2008-03-07 11:13:41 +00:00
Richard Barry
09803ca31e Increase baud rate to 115200. 2008-03-07 11:13:02 +00:00
Richard Barry
2e76895839 Add -Wall option. 2008-03-07 11:12:17 +00:00
Richard Barry
89c922a586 Small optimisation by using constants for register addresses. 2008-03-07 11:11:27 +00:00
Richard Barry
ebe6e14f25 Add extra tests into the regtest tasks. 2008-03-07 11:10:33 +00:00
Richard Barry
ade2da38ed Clear the interrupt prior to servicing the interrupt - previously it was the other way around. 2008-03-07 11:08:10 +00:00
Richard Barry
bf5cd55c55 Comment ready for release. 2008-03-06 20:55:49 +00:00
Richard Barry
f39424feee Update commenting ready for release. 2008-03-06 16:51:57 +00:00
Richard Barry
f73e663411 Rename PPC405 to PPC405_Xilinx. 2008-03-05 12:31:04 +00:00
Richard Barry
643c94a5a8 Rename PPC405 to PPC405_Xilinx. 2008-03-05 12:24:31 +00:00
Richard Barry
7008ebb8c9 PPC405 work in progress. 2008-03-05 12:22:19 +00:00
Richard Barry
39b68e7fc5 PPC405 work in progress. 2008-03-05 12:21:46 +00:00
Richard Barry
ebcac1c4b5 PPC405 work in progress. 2008-03-05 10:13:59 +00:00
Richard Barry
8e856177c9 Modified uxTaskGetStackHighWaterMark() to take a parameter for the task to be checked, rather than just checking the stack of the calling task. 2008-03-05 10:13:18 +00:00
Richard Barry
47a7f0165b Modified uxTaskGetStackHighWaterMark() to take a parameter for the task to be checked, rather than just checking the stack of the calling task. 2008-03-05 10:12:35 +00:00
Richard Barry
6e59817356 Remove system.log from the repository. 2008-03-05 10:11:22 +00:00
Richard Barry
dab366cd77 PPC405 work in progress. 2008-03-05 10:09:38 +00:00
Richard Barry
88548253ec New PPC405 port files. 2008-03-04 08:56:32 +00:00
Richard Barry
60bead5003 Remove warnings generated by new features. 2008-03-03 21:46:29 +00:00
Richard Barry
39f6b0b5de Add stack check macros. 2008-03-03 20:56:55 +00:00
Richard Barry
71ef3153ea Add trace macros. 2008-03-03 16:32:37 +00:00
Richard Barry
b8b70528f4 Add trace macros. 2008-03-03 16:32:05 +00:00
Richard Barry
2b174e556c Add vTaskEnterCritical() and vTaskExitCritical() functions. 2008-02-25 18:54:28 +00:00
Richard Barry
ebf69dab5d More work in progress (PPC). 2008-02-25 18:53:23 +00:00
Richard Barry
9a9cd41098 Basic cooperative reg test tasks working. 2008-02-25 11:18:23 +00:00
Richard Barry
3c2306ed72 Work in progress, for backup purposes only. 2008-02-25 09:56:56 +00:00
Richard Barry
fedf9c7ba0 Add initial PPC405 files - this is a work in progress not a completed port. 2008-02-24 11:42:27 +00:00
Richard Barry
8c0260568e Add PPC definition. 2008-02-24 11:41:26 +00:00
Richard Barry
3e94695fb4 Update to V4.7.2. 2008-02-21 19:45:27 +00:00
Richard Barry
12e207f913 Remove unused project. 2008-02-19 12:44:08 +00:00
Richard Barry
1398ff5f3b Increase stack size. 2008-02-17 21:11:52 +00:00
Richard Barry
30eb33aa89 Change stack size depending on memory model. 2008-02-17 21:00:56 +00:00
Richard Barry
c8de9a1cd8 Turn watchdog on. 2008-02-17 20:27:34 +00:00
Richard Barry
280a78ac5b Still trying to sort out weird symbolic linking between two partest.c files. 2008-02-17 20:07:58 +00:00
Richard Barry
6e9b21812b 2008-02-17 20:06:24 +00:00
Richard Barry
1e95bfc6b6 2008-02-17 20:02:56 +00:00
Richard Barry
cf10f33866 2008-02-17 19:15:18 +00:00
Richard Barry
ad75bb3b77 Change optimisation level. 2008-02-17 18:33:42 +00:00
Richard Barry
4ed46aaef9 2008-02-17 18:26:52 +00:00
Richard Barry
303fb84de3 Automatically adjust trace buffer size using sizeof(). 2008-02-17 18:24:50 +00:00
Richard Barry
6bc6cc282d Tidy up 16bit Fujitsu port ready for release. 2008-02-17 18:24:03 +00:00
Richard Barry
95189f40d2 2008-02-17 18:19:21 +00:00
Richard Barry
babd7f05f7 Remove obsolete code. 2008-02-17 18:08:59 +00:00
Richard Barry
125a9ef81d Correct cut and paste asm code. 2008-02-17 18:08:09 +00:00
Richard Barry
2855dbaa43 2008-02-17 08:56:18 +00:00
Richard Barry
2f75980fca Correct merge. 2008-02-16 21:10:19 +00:00
Richard Barry
7306d9b428 Correct comments. 2008-02-15 20:10:30 +00:00
Richard Barry
c8b4248e5d Get the trace utility and co-routines working. 2008-02-15 20:08:30 +00:00
Richard Barry
91a1b614f8 Remove references to ulCriticalNesting from the register test tasks as the variable is no longer saved as part of the task context. 2008-02-15 13:46:30 +00:00
Richard Barry
79dd981500 Remove casts that were generating warnings (even though the casts were added to remove warnings with some compilers). 2008-02-15 13:44:06 +00:00
Richard Barry
61efe2504c Revert critical section handling back to the original method. 2008-02-15 13:33:44 +00:00
Richard Barry
991624461f Revert to original critical section handling method. 2008-02-15 13:24:05 +00:00
Richard Barry
f44fc2c665 Change to use the configKERNEL_INTERRUPT_PRIORITY setting. 2008-02-13 19:43:30 +00:00
Richard Barry
89d7f37094 Remove unnecessary NOPs. 2008-02-13 19:42:22 +00:00
Richard Barry
226d78fcab 2008-02-13 13:53:24 +00:00
Richard Barry
f315c91f38 Continue to tidy up Fujitsu ports. 2008-02-13 13:34:39 +00:00
Richard Barry
c6965bc253 Continue to tidy up the Fujitsu ports. 2008-02-13 13:32:10 +00:00
Richard Barry
040475fca6 2008-02-13 13:22:44 +00:00
Richard Barry
3f0ee56dbb Delete four separate configurations and replace with a single new configuration. 2008-02-13 11:45:12 +00:00
Richard Barry
bc590036e0 Delete four separate configurations and replace with a single new configuration. 2008-02-13 11:44:42 +00:00
Richard Barry
b2ec747412 Delete four separate configurations and replace with a single new configuration. 2008-02-13 11:44:13 +00:00
Richard Barry
0c6913bfab Delete four separate configurations and replace with a single new configuration. 2008-02-13 11:43:24 +00:00
Richard Barry
0fef4cbaf9 Delete four separate configurations and replace with a single new configuration. 2008-02-13 11:42:28 +00:00
Richard Barry
613c764189 Tidy up - spell check. 2008-02-13 11:15:52 +00:00
Richard Barry
5a418b56fa Tidy up - spell check. 2008-02-13 10:39:07 +00:00
Richard Barry
c3e153145b Add Fujitsu FX definition to portable.h. 2008-02-12 21:53:52 +00:00
Richard Barry
961e402e12 Add Fujitsu FX definition to portable.h. 2008-02-12 21:51:50 +00:00
Richard Barry
97bee57daa Work in progress still. 2008-02-12 21:50:24 +00:00
Richard Barry
0faf33fbca Work in progress. 2008-02-12 17:47:34 +00:00
Richard Barry
bdea62587e Work in progress. 2008-02-12 17:46:50 +00:00
Richard Barry
161e266c97 Renamed MAIN.c to main.c. 2008-02-12 17:39:23 +00:00
Richard Barry
b31c9e18f9 Work in progress. 2008-02-12 17:37:03 +00:00
Richard Barry
1eb00d2045 Extra file used by 16bit Fujitsu port. 2008-02-12 10:37:36 +00:00
Richard Barry
35afa63a47 Add Fujitsu 16bit port files. 2008-02-12 09:29:26 +00:00
Richard Barry
b4ed11bddb Add Fujitsu 16bit demo files. 2008-02-12 09:26:41 +00:00
Richard Barry
7e5450acd1 Change the critical section handling (Fujitsu 32bit port). 2008-02-11 21:02:40 +00:00
Richard Barry
eb64d935dc Update interrupt priorities for Fujitsu port. 2008-02-11 21:01:22 +00:00
Richard Barry
6610911d3e Continue to work on Fujitsu 32bit port. 2008-02-11 18:28:03 +00:00
Richard Barry
7e6a2b0bd5 Update Fujitsu port files - work in progress. 2008-02-10 20:31:19 +00:00
Richard Barry
ba4d636307 Update Fujitsu 32bit port - work in progress. 2008-02-10 20:30:11 +00:00
Richard Barry
778b0d13ef Remove qualifier from cast. 2008-02-10 20:28:55 +00:00
Richard Barry
3b1b99c0d7 2008-02-10 14:48:23 +00:00
Richard Barry
b5d4e08320 2008-02-10 14:45:24 +00:00
Richard Barry
93dd04d5dd Work in progress... 2008-02-10 14:44:30 +00:00
Richard Barry
5afe5250e5 Add softtune required directory structure. 2008-02-06 18:09:27 +00:00
Richard Barry
eed758709c Add MB91460 port and demo files. 2008-02-06 17:27:42 +00:00
Richard Barry
e6e5add7d8 Remove obsolete comment. 2008-02-06 16:49:39 +00:00
Richard Barry
7d0f249fad Correct API call used to create mutex. 2008-02-04 08:42:12 +00:00
Richard Barry
05920be92a Correct sample code for recursive mutexes. 2008-02-04 08:37:01 +00:00
Richard Barry
c86dcf7826 Update to V4.7.1 2008-02-03 19:45:58 +00:00
Richard Barry
e018422743 Update to allow use with the cooperative scheduler. 2008-01-27 20:25:36 +00:00
Richard Barry
2ee98beba2 Add recursive mutexes to PC demo. 2008-01-27 19:27:51 +00:00
Richard Barry
354a57ed5e Update counting semaphore function prototype. 2008-01-27 19:25:11 +00:00
Richard Barry
3ddf9a4210 Correct spelling. 2008-01-27 19:11:49 +00:00
Richard Barry
c4dbab94f3 Set the interrupt priority of the button and UART interrupts. 2008-01-27 18:57:59 +00:00
Richard Barry
008f4cb517 Set the interrupt priority of the button and UART interrupts. 2008-01-27 18:49:53 +00:00
Richard Barry
d7e0337587 Update the release build for use with IAR V5.11. 2008-01-27 18:09:00 +00:00
Richard Barry
625a65e970 IAR V5.11 compatible linker script. 2008-01-27 18:00:13 +00:00
Richard Barry
e6d0609a54 Update release build for IAR 5.11. 2008-01-27 17:41:19 +00:00
Richard Barry
8ac8b20960 Remove incorrect comment. 2008-01-27 17:21:14 +00:00
Richard Barry
0b5d1fb68a Update for 48MHz operation. 2008-01-27 17:02:05 +00:00
Richard Barry
701b090cd1 Header associated with new recursive mutex test file. 2008-01-27 16:04:18 +00:00
Richard Barry
1bf8332ada Update the release build for IAR V5.11. 2008-01-27 15:49:22 +00:00
Richard Barry
ef46e9bc60 Delete old IAR V4 library format. 2008-01-27 14:41:43 +00:00
Richard Barry
79b506472d Documentation updates. 2008-01-24 21:33:00 +00:00
Richard Barry
c4edb21f63 Remove system files not longer required by IAR V5.11. 2008-01-23 19:35:54 +00:00
Richard Barry
474cb76864 UpdUpdate IAR projects to use Embedded Workbench V5.11. 2008-01-23 08:35:47 +00:00
Richard Barry
dfb8e7003b Prepare for V4.7.1 release. 2008-01-22 18:43:03 +00:00
Richard Barry
3c02bc385b Remove .bak files. 2008-01-22 18:26:07 +00:00
Richard Barry
2ac722926e Correct some documentation. 2007-12-18 20:07:21 +00:00
Richard Barry
fb799b7647 Update documentation. 2007-12-06 10:19:28 +00:00
Richard Barry
6e27b6ec86 Update documentation to correct spelling. 2007-12-05 21:50:00 +00:00
Richard Barry
44911a1c48 Update to V4.7.0. 2007-12-05 21:24:47 +00:00
Richard Barry
8603259d40 Add first version of alternative API. 2007-12-02 18:37:43 +00:00
Richard Barry
b6d2b739f3 Ensure warning free compilation under GCC. 2007-12-01 20:56:44 +00:00
Richard Barry
2931f43895 Missing PIC32 files. 2007-12-01 20:29:54 +00:00
Richard Barry
d69d2df8d6 Counting semaphore demo added. 2007-12-01 20:28:04 +00:00
Richard Barry
a8eabeabbb Add PIC32 code. 2007-11-26 15:45:21 +00:00
Richard Barry
48b4870c7e Add STM32 Primer demo. Remove the .lock file from the Eclipse demos. 2007-11-26 15:43:24 +00:00
Richard Barry
e8ddef1d93 Add the SAM7X Eclipse files. 2007-11-21 18:29:41 +00:00
Richard Barry
620d3999ef Update to V4.6.1 - including PIC32MX port. 2007-11-05 16:44:39 +00:00
Richard Barry
0a9c978f18 Changes between V4.5.0 and V4.6.0 released October 28 2007
+ Changed the method used to force a context switch within an ISR for the
	  ARM7/9 GCC ports only.  The portENTER_SWITCHING_ISR() and 
	  portEXIT_SWITCHING_ISR() macros are no longer supported.  This is to 
	  ensure correct behaviour no matter which GCC version is used, with or
	  without the -fomit-frame-pointer option, and at all optimisation levels.
	+ Corrected the prototype for xQueueGenericSend() within queue.h.
2007-10-28 14:42:46 +00:00
Richard Barry
ada7fa862d Changed the way the ARM7/9 GCC ports enter interrupts that can cause a context switch. 2007-10-28 13:55:35 +00:00
Richard Barry
c54ec1c639 Updated GCC/ARM7 ISR functions so they only use static variables. 2007-10-26 10:14:19 +00:00
Richard Barry
a3921adfe1 + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame pointer. Variables declared within ISRs must now be declared static. 2007-10-26 09:52:15 +00:00
Richard Barry
98a9959a44 Update to V4.5.0 files and directory structure. 2007-09-17 10:07:48 +00:00
Richard Barry
1362bebfdc Remove separate LM3Sxxxx directories. These have been replaced by consolidated directories in the V4.5.0 version. 2007-09-17 09:51:42 +00:00
Richard Barry
bd5a0a1ce8 Fixed bugs as listed to date in the tracker for the SourceForge project. 2007-08-24 15:35:09 +00:00
Richard Barry
c77358491a Update the queue peek behaviour and add QPeek test files. 2007-08-23 11:37:41 +00:00
Richard Barry
5f16b0abca Fixed name of xQueueSendToFrontFromISR. 2007-08-23 07:23:53 +00:00
Richard Barry
86f4e8b4a0 Changed a couple of casts to remove compiler warnings. 2007-08-22 16:56:05 +00:00
Richard Barry
60338bd872 Added xQueueSendToBack, xQueueSendToFront, xQueuePeek and xSemaphoreCreateMutex - along with GenQTest.c to demonstrate their usage. 2007-08-21 16:54:48 +00:00
Richard Barry
ac14fdb0b7 Updates prior to release of V4.4.0 due to testing. 2007-07-30 20:48:12 +00:00
Richard Barry
15268bfbeb Update to V4.4.0. 2007-07-29 15:23:39 +00:00
Richard Barry
a06a2e492f Results of testing new prvIsTaskSuspended() function. 2007-07-28 18:41:53 +00:00
Richard Barry
de1094e980 Removed const from xTaskResumeFromISR() and xTaskResume() local variables as it upsets the call to the list function. 2007-07-28 18:35:03 +00:00
Richard Barry
7a8eb507a7 Modifications to correct behaviour when a task is blocked without specifying a wake time, and also introduce the xTaskGetSchedulerState() function. 2007-07-28 16:33:07 +00:00
Richard Barry
94c94d3c0e Updated AVR32 demos and added AVR32 UC3B demo. 2007-07-27 07:59:50 +00:00
Richard Barry
45e7e5ac55 Add in first STM32 demo. 2007-06-11 05:36:39 +00:00
Richard Barry
543ec864c4 Update in preparation for the V4.3.1 release. 2007-06-09 15:13:29 +00:00
Richard Barry
fc1d6ea442 Update in preparation for the V4.3.1 release. 2007-06-09 15:10:24 +00:00
Richard Barry
42b2cbf237 Update in preparation for the V4.3.1 release. 2007-06-09 15:08:43 +00:00
Richard Barry
8235f7a15f Update in preparation for the V4.3.1 release. 2007-06-09 15:05:10 +00:00
Richard Barry
68a1ab1d04 Update in preparation for the V4.3.1 release. 2007-06-09 15:03:03 +00:00
Richard Barry
623aa3675f Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 09:56:16 +00:00
Richard Barry
017740b75a Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 09:53:14 +00:00
Richard Barry
67d0d1ec3b Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 09:44:58 +00:00
Richard Barry
45410fcd3a Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 09:43:26 +00:00
Richard Barry
9af97b86f8 Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 09:36:57 +00:00
Richard Barry
22e434dfaf 2007-06-05 09:35:13 +00:00
Richard Barry
014d7f5b8f Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt 2007-06-05 08:59:26 +00:00
Richard Barry
5a3272cdca Accomodates wizC V14.00B and up with full optimisations.
Thanks Marcel.
2007-04-22 10:50:03 +00:00
Richard Barry
b36ba44e0d Add LPC2368 demo. 2007-04-05 13:47:25 +00:00
Richard Barry
0a6d59a611 V4.2.1 files. 2007-04-01 20:47:49 +00:00
Richard Barry
6118595a07 Add AVR32 port and demo files. 2007-04-01 19:52:27 +00:00
Richard Barry
504382bcb8 Add AVR32 port and demo files. 2007-04-01 19:46:26 +00:00
Richard Barry
45d8ca15b5 Add AVR32 port and demo files. 2007-04-01 19:45:41 +00:00
Richard Barry
06bbaed27a Add AVR32 port and demo files. 2007-04-01 19:44:02 +00:00
Richard Barry
b578c75c4e Get rid of compiler warnings. 2007-04-01 19:40:34 +00:00
Richard Barry
bf2b676eaa Add AVR32 port and demo files. 2007-04-01 19:37:01 +00:00
Richard Barry
b727359f1b Add AVR32 port and demo files. 2007-04-01 19:33:44 +00:00
Richard Barry
4c3a1e29e0 Update include file from lpc2128.h to lpc21xx.h. 2007-03-26 12:04:12 +00:00
Richard Barry
5d413a0078 Moved where LCD_Init() is called from so it cannot call vTaskDelay() before the scheduler is started. 2007-03-08 21:08:52 +00:00
Richard Barry
17228aca47 Add an option for 8 byte alignment. 2007-03-07 17:52:10 +00:00
Richard Barry
8b8a0eeff3 Added -fomit-frame-pointer option. 2007-02-09 21:34:04 +00:00
12806 changed files with 5947214 additions and 229404 deletions

View File

@@ -1,79 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <AT91R40008.h>
#define configFLASH_SPEED_NSEC 100 /* External flash access speed (for ROM builds) */
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 66000000 ) /* = 66.000MHz clk gen */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 25 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,99 +0,0 @@
# FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
#
# This file is part of the FreeRTOS.org distribution.
#
# FreeRTOS.org is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# FreeRTOS.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with FreeRTOS.org; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# A special exception to the GPL can be applied should you wish to distribute
# a combined work that includes FreeRTOS.org, without being obliged to provide
# the source code for any proprietary components. See the licensing section
# of http://www.FreeRTOS.org for full details of how and when the exception
# can be applied.
#
# ***************************************************************************
# See http://www.FreeRTOS.org for documentation, latest information, license
# and contact details. Please ensure to read the configuration and relevant
# port sections of the online documentation.
# ***************************************************************************
CC=arm-elf-gcc
OBJCOPY=arm-elf-objcopy
ARCH=arm-elf-ar
CRT0=boot.s
#
# CFLAGS common to both the THUMB and ARM mode builds
#
CFLAGS=-Wall -D $(RUN_MODE) -D GCC_AT91FR40008 -I. -I../../Source/include \
-I../Common/include $(DEBUG) -mcpu=arm7tdmi -T$(LDSCRIPT) \
-Wcast-align $(OPTIM) -fomit-frame-pointer
ifeq ($(USE_THUMB_MODE),YES)
CFLAGS += -mthumb-interwork -D THUMB_INTERWORK
THUMB_FLAGS=-mthumb
endif
LINKER_FLAGS=-Xlinker -ortosdemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map
#
# Source files that can be built to THUMB mode.
#
THUMB_SRC = \
main.c \
serial/serial.c \
ParTest/ParTest.c \
../Common/Minimal/integer.c \
../Common/Minimal/flash.c \
../Common/Minimal/PollQ.c \
../Common/Minimal/comtest.c \
../Common/Minimal/flop.c \
../Common/Minimal/semtest.c \
../Common/Minimal/dynamic.c \
../Common/Minimal/BlockQ.c \
../../Source/tasks.c \
../../Source/queue.c \
../../Source/list.c \
../../Source/portable/MemMang/heap_2.c \
../../Source/portable/GCC/ARM7_AT91FR40008/port.c
#
# Source files that must be built to ARM mode.
#
ARM_SRC = \
../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c \
serial/serialISR.c
#
# Define all object files.
#
ARM_OBJ = $(ARM_SRC:.c=.o)
THUMB_OBJ = $(THUMB_SRC:.c=.o)
rtosdemo.hex : rtosdemo.elf
$(OBJCOPY) rtosdemo.elf -O ihex rtosdemo.hex
rtosdemo.elf : $(ARM_OBJ) $(THUMB_OBJ) $(CRT0) Makefile
$(CC) $(CFLAGS) $(ARM_OBJ) $(THUMB_OBJ) -nostartfiles $(CRT0) $(LINKER_FLAGS)
$(THUMB_OBJ) : %.o : %.c $(LDSCRIPT) Makefile
$(CC) -c $(THUMB_FLAGS) $(CFLAGS) $< -o $@
$(ARM_OBJ) : %.o : %.c $(LDSCRIPT) Makefile
$(CC) -c $(CFLAGS) $< -o $@
clean :
touch Makefile

View File

@@ -1,120 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "portable.h"
/* Demo app includes. */
#include "partest.h"
/* Hardware specific definitions. */
#include "AT91R40008.h"
#include "pio.h"
#include "aic.h"
#define partstNUM_LEDS ( 8 )
#define partstALL_OUTPUTS_OFF ( ( unsigned portLONG ) ~(0xFFFFFFFF << partstNUM_LEDS) )
static unsigned portLONG ulLEDReg;
/*-----------------------------------------------------------
* Simple parallel port IO routines.
*-----------------------------------------------------------*/
static void SetLeds (unsigned int leds)
{
unsigned portLONG ulPIOSetReg, ulPIOClearReg;
/* LEDs are grouped in different port bits: P3-P6 and P16-P19.
A port bit set to '0' turns an LED on, '1' turns it off. */
ulPIOSetReg = ( (leds & 0xF) << 16 ) | ( (leds & 0xF0) >> 1 );
ulPIOClearReg = (~ulPIOSetReg) & 0x000F0078;
AT91C_BASE_PIO->PIO_SODR = ulPIOSetReg;
AT91C_BASE_PIO->PIO_CODR = ulPIOClearReg;
}
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* This is performed from main() as the io bits are shared with other setup
functions. Ensure the outputs are off to start. */
ulLEDReg = partstALL_OUTPUTS_OFF;
/* Enable clock to PIO... */
AT91C_BASE_PS->PS_PCER = AT91C_PS_PIO;
/* Enable all 8 LEDs and the four switches to be controlled by PIO... */
AT91C_BASE_PIO->PIO_PER = P3 | P4 | P5 | P6 | P16 | P17 | P18 | P19 | P1 | P2 | P9 | P12;
/* Configure all LED PIO lines for output... */
AT91C_BASE_PIO->PIO_OER = P3 | P4 | P5 | P6 | P16 | P17 | P18 | P19;
/* Configure all switch PIO lines for input... */
AT91C_BASE_PIO->PIO_ODR = P1 | P2 | P9 | P12;
/* Set initial state of LEDs. */
SetLeds( ulLEDReg );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
/* Switch an LED on or off as requested. */
if (uxLED < partstNUM_LEDS)
{
if( xValue )
{
ulLEDReg &= ~(1 << uxLED);
}
else
{
ulLEDReg |= (1 << uxLED);
}
SetLeds( ulLEDReg );
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
/* Toggle the state of the requested LED. */
if (uxLED < partstNUM_LEDS)
{
ulLEDReg ^= ( 1 << uxLED );
SetLeds( ulLEDReg );
}
}

View File

@@ -1,469 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
* To check the operation of the memory allocator the check task also
* dynamically creates a task before delaying, and deletes it again when it
* wakes. If memory cannot be allocated for the new task the call to xTaskCreate
* will fail and an error is signalled. The dynamically created task itself
* allocates and frees memory just to give the allocator a bit more exercise.
*
*/
/* Standard includes. */
#include <stdlib.h>
#include <string.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "partest.h"
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "comtest2.h"
#include "semtest.h"
#include "flop.h"
#include "dynamic.h"
#include "BlockQ.h"
#include "serial.h"
/* Hardware specific definitions. */
#include "aic.h"
#include "ebi.h"
/*-----------------------------------------------------------*/
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 5 )
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
/* The rate at which the on board LED will toggle when there is/is not an
error. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainON_BOARD_LED_BIT ( ( unsigned portLONG ) 7 )
/* Constants used by the vMemCheckTask() task. */
#define mainCOUNT_INITIAL_VALUE ( ( unsigned portLONG ) 0 )
#define mainNO_TASK ( 0 )
/* The size of the memory blocks allocated by the vMemCheckTask() task. */
#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
#define MAX_WAIT_STATES 8
static const unsigned portLONG ululCSRWaitValues[ MAX_WAIT_STATES + 1 ] =
{
WaitState1,/* There is no "zero wait state" value, so use one wait state */
WaitState1,
WaitState2,
WaitState3,
WaitState4,
WaitState5,
WaitState6,
WaitState7,
WaitState8
};
/*-----------------------------------------------------------*/
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static portLONG prvCheckOtherTasksAreStillRunning( unsigned portLONG ulMemCheckTaskCount );
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Dynamically created and deleted during each cycle of the vErrorChecks()
* task. This is done to check the operation of the memory allocator.
* See the top of vErrorChecks for more details.
*/
static void vMemCheckTask( void *pvParameters );
/*
* Configure the processor for use with the Olimex demo board. This includes
* setup for the I/O, system clock, and access timings.
*/
static void prvSetupHardware( void );
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
int main( void )
{
/* Setup the hardware for use with the Olimex demo board. */
prvSetupHardware();
/* Start the demo/test application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartMathTasks( tskIDLE_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Now all the tasks have been started - start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* Should never reach here! */
return 0;
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
unsigned portLONG ulMemCheckTaskRunningCount;
xTaskHandle xCreatedTask;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase.
In addition to the standard tests the memory allocator is tested through
the dynamic creation and deletion of a task each cycle. Each time the
task is created memory must be allocated for its stack. When the task is
deleted this memory is returned to the heap. If the task cannot be created
then it is likely that the memory allocation failed. */
for( ;; )
{
/* Reset xCreatedTask. This is modified by the task about to be
created so we can tell if it is executing correctly or not. */
xCreatedTask = mainNO_TASK;
/* Dynamically create a task - passing ulMemCheckTaskRunningCount as a
parameter. */
ulMemCheckTaskRunningCount = mainCOUNT_INITIAL_VALUE;
if( xTaskCreate( vMemCheckTask, ( signed portCHAR * ) "MEM_CHECK", configMINIMAL_STACK_SIZE, ( void * ) &ulMemCheckTaskRunningCount, tskIDLE_PRIORITY, &xCreatedTask ) != pdPASS )
{
/* Could not create the task - we have probably run out of heap. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
/* Delay until it is time to execute again. */
vTaskDelay( xDelayPeriod );
/* Delete the dynamically created task. */
if( xCreatedTask != mainNO_TASK )
{
vTaskDelete( xCreatedTask );
}
/* Check all the standard demo application tasks are executing without
error. ulMemCheckTaskRunningCount is checked to ensure it was
modified by the task just deleted. */
if( prvCheckOtherTasksAreStillRunning( ulMemCheckTaskRunningCount ) != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
/* The toggle rate of the LED depends on how long this task delays for.
An error reduces the delay period and so increases the toggle rate. */
vParTestToggleLED( mainON_BOARD_LED_BIT );
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
portLONG lCount;
#ifdef RUN_FROM_ROM
{
portFLOAT nsecsPerClockTick;
portLONG lNumWaitStates;
unsigned portLONG ulCSRWaitValue;
/* We are compiling to run from ROM (either on-chip or off-chip flash).
Leave the RAM/flash mapped the way they are on reset
(flash @ 0x00000000, RAM @ 0x00300000), and set up the
proper flash wait states (starts out at the maximum number
of wait states on reset, so we should be able to reduce it).
Most of this code will probably get removed by the compiler
if optimization is enabled, since these calculations are
based on constants. But the compiler should still produce
a correct wait state register value. */
nsecsPerClockTick = ( portFLOAT ) 1000000000 / configCPU_CLOCK_HZ;
lNumWaitStates = ( portLONG )( ( configFLASH_SPEED_NSEC / nsecsPerClockTick ) + 0.5 ) - 1;
if( lNumWaitStates < 0 )
{
lNumWaitStates = 0;
}
if( lNumWaitStates > MAX_WAIT_STATES )
{
lNumWaitStates = MAX_WAIT_STATES;
}
ulCSRWaitValue = ululCSRWaitValues[ lNumWaitStates ];
ulCSRWaitValue = WaitState5;
AT91C_BASE_EBI->EBI_CSR[ 0 ] = ulCSRWaitValue | DataBus16 | WaitStateEnable
| PageSize1M | tDF_0cycle
| ByteWriteAccessType | CSEnable
| 0x00000000 /* Base Address */;
}
#else /* else we are compiling to run from on-chip RAM */
{
/* If compiling to run from RAM, we expect the on-chip RAM to already
be mapped at 0x00000000. This is typically done with an initialization
script for the JTAG emulator you are using to download and run the
demo application. So there is nothing to do here in this case. */
}
#endif
/* Disable all interrupts at the AIC level initially... */
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;
/* Set all SVR and SMR entries to default values (start with a clean slate)... */
for( lCount = 0; lCount < 32; lCount++ )
{
AT91C_BASE_AIC->AIC_SVR[ lCount ] = (unsigned long) 0;
AT91C_BASE_AIC->AIC_SMR[ lCount ] = AIC_SRCTYPE_INT_EDGE_TRIGGERED;
}
/* Disable clocks to all peripherals initially... */
AT91C_BASE_PS->PS_PCDR = 0xFFFFFFFF;
/* Clear all interrupts at the AIC level initially... */
AT91C_BASE_AIC->AIC_ICCR = 0xFFFFFFFF;
/* Perform 8 "End Of Interrupt" cmds to make sure AIC will not Lock out
nIRQ */
for( lCount = 0; lCount < 8; lCount++ )
{
AT91C_BASE_AIC->AIC_EOICR = 0;
}
/* Initialise LED outputs. */
vParTestInitialise();
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( unsigned portLONG ulMemCheckTaskCount )
{
portLONG lReturn = ( portLONG ) pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( ulMemCheckTaskCount == mainCOUNT_INITIAL_VALUE )
{
/* The vMemCheckTask did not increment the counter - it must
have failed. */
lReturn = ( portLONG ) pdFAIL;
}
return lReturn;
}
/*-----------------------------------------------------------*/
static void vMemCheckTask( void *pvParameters )
{
unsigned portLONG *pulMemCheckTaskRunningCounter;
void *pvMem1, *pvMem2, *pvMem3;
static portLONG lErrorOccurred = pdFALSE;
/* This task is dynamically created then deleted during each cycle of the
vErrorChecks task to check the operation of the memory allocator. Each time
the task is created memory is allocated for the stack and TCB. Each time
the task is deleted this memory is returned to the heap. This task itself
exercises the allocator by allocating and freeing blocks.
The task executes at the idle priority so does not require a delay.
pulMemCheckTaskRunningCounter is incremented each cycle to indicate to the
vErrorChecks() task that this task is still executing without error. */
pulMemCheckTaskRunningCounter = ( unsigned portLONG * ) pvParameters;
for( ;; )
{
if( lErrorOccurred == pdFALSE )
{
/* We have never seen an error so increment the counter. */
( *pulMemCheckTaskRunningCounter )++;
}
else
{
/* There has been an error so reset the counter so the check task
can tell that an error occurred. */
*pulMemCheckTaskRunningCounter = mainCOUNT_INITIAL_VALUE;
}
/* Allocate some memory - just to give the allocator some extra
exercise. This has to be in a critical section to ensure the
task does not get deleted while it has memory allocated. */
vTaskSuspendAll();
{
pvMem1 = pvPortMalloc( mainMEM_CHECK_SIZE_1 );
if( pvMem1 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem1, 0xaa, mainMEM_CHECK_SIZE_1 );
vPortFree( pvMem1 );
}
}
xTaskResumeAll();
/* Again - with a different size block. */
vTaskSuspendAll();
{
pvMem2 = pvPortMalloc( mainMEM_CHECK_SIZE_2 );
if( pvMem2 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem2, 0xaa, mainMEM_CHECK_SIZE_2 );
vPortFree( pvMem2 );
}
}
xTaskResumeAll();
/* Again - with a different size block. */
vTaskSuspendAll();
{
pvMem3 = pvPortMalloc( mainMEM_CHECK_SIZE_3 );
if( pvMem3 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem3, 0xaa, mainMEM_CHECK_SIZE_3 );
vPortFree( pvMem3 );
}
}
xTaskResumeAll();
}
}

View File

@@ -1,149 +0,0 @@
//*---------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//*---------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*-----------------------------------------------------------------------------
//* File Name : pio.h
//* Object : Parallel I/O Definition File
//* Translator : ARM Software Development Toolkit V2.11a
//*
//* 1.0 20/10/97 JCZ : Creation
//* 2.0 21/10/98 JCZ : Clean up
//*---------------------------------------------------------------------------
#ifndef pio_h
#define pio_h
/*---------------------------------------------*/
/* Parallel I/O Interface Structure Definition */
/*---------------------------------------------*/
typedef struct
{
at91_reg PIO_PER ; /* PIO Enable Register */
at91_reg PIO_PDR ; /* PIO Disable Register */
at91_reg PIO_PSR ; /* PIO Status Register */
at91_reg Reserved0 ;
at91_reg PIO_OER ; /* Output Enable Register */
at91_reg PIO_ODR ; /* Output Disable Register */
at91_reg PIO_OSR ; /* Output Status Register */
at91_reg Reserved1 ;
at91_reg PIO_IFER ; /* Input Filter Enable Register */
at91_reg PIO_IFDR ; /* Input Filter Disable Register */
at91_reg PIO_IFSR ; /* Input Filter Status Register */
at91_reg Reserved2 ;
at91_reg PIO_SODR ; /* Set Output Data Register */
at91_reg PIO_CODR ; /* Clear Output Data Register */
at91_reg PIO_ODSR ; /* Output Data Status Register */
at91_reg PIO_PDSR ; /* Pin Data Status Register */
at91_reg PIO_IER ; /* Interrupt Enable Register */
at91_reg PIO_IDR ; /* Interrupt Disable Register */
at91_reg PIO_IMR ; /* Interrupt Mask Register */
at91_reg PIO_ISR ; /* Interrupt Status Register */
} StructPIO ;
/*-----------------------------*/
/* PIO Handler type definition */
/*-----------------------------*/
//typedef void (*TypePIOHandler) ( StructPIO *pio_pt, u_int pio_mask ) ;
/*--------------------------------*/
/* Device Dependancies Definition */
/*--------------------------------*/
/* Number of PIO Controller */
#define NB_PIO_CTRL 1
/* Base Address */
#define PIO_BASE ((StructPIO *) 0xFFFF0000 )
/* Number of PIO Lines */
#define NB_PIO 32
/* Parallel I/O Bits Definition */
#define P0 (1<<0)
#define P1 (1<<1)
#define P2 (1<<2)
#define P3 (1<<3)
#define P4 (1<<4)
#define P5 (1<<5)
#define P6 (1<<6)
#define P7 (1<<7)
#define P8 (1<<8)
#define P9 (1<<9)
#define P10 (1<<10)
#define P11 (1<<11)
#define P12 (1<<12)
#define P13 (1<<13)
#define P14 (1<<14)
#define P15 (1<<15)
#define P16 (1<<16)
#define P17 (1<<17)
#define P18 (1<<18)
#define P19 (1<<19)
#define P20 (1<<20)
#define P21 (1<<21)
#define P22 (1<<22)
#define P23 (1<<23)
#define P24 (1<<24)
#define P25 (1<<25)
#define P26 (1<<26)
#define P27 (1<<27)
#define P28 (1<<28)
#define P29 (1<<29)
#define P30 (1<<30)
#define P31 (1<<31)
/* PIO Multiplexing Definition */
/* There is only one PIO Controller */
#define PIO_CTRL 0
#define PIO_TC0 PIO_CTRL
#define TCLK0 P0
#define TIOA0 P1
#define TIOB0 P2
#define PIN_TC0 (TIOA0|TIOB0|TCLK0)
#define PIO_TC1 PIO_CTRL
#define TCLK1 P3
#define TIOA1 P4
#define TIOB1 P5
#define PIN_TC1 (TIOA1|TIOB1|TCLK1)
#define PIO_TC2 PIO_CTRL
#define TCLK2 P6
#define TIOA2 P7
#define TIOB2 P8
#define PIN_TC2 (TIOA2|TIOB2|TCLK2)
#define PIO_EXT_IRQ PIO_CTRL
#define PIN_IRQ0 P9
#define PIN_IRQ1 P10
#define PIN_IRQ2 P11
#define PIN_FIQ P12
#define PIO_USART0 PIO_CTRL
#define SCK0 P13
#define TXD0 P14
#define RXD0 P15
#define PIN_USART0 (SCK0|TXD0|RXD0)
#define PIO_USART1 PIO_CTRL
#define SCK1 P20
#define TXD1 P21
#define RXD1 P22
#define PIN_USART1 (SCK1|TXD1|RXD1)
#define MCKO P25
#define CS2 P26
#define CS3 P27
#define CS4 P31
#define CS5 P30
#define CS6 P29
#define CS7 P28
#endif /* pio_h */

View File

@@ -1,228 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR USART0.
This file contains all the serial port components that can be compiled to
either ARM or THUMB mode. Components that must be compiled to ARM mode are
contained in serialISR.c.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
#include "AT91R40008.h"
#include "usart.h"
#include "pio.h"
#include "aic.h"
/*-----------------------------------------------------------*/
/* Constants to setup and access the UART. */
#define portUSART0_AIC_CHANNEL ( ( unsigned portLONG ) 2 )
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serHANDLE ( ( xComPortHandle ) 1 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/*
* The queues are created in serialISR.c as they are used from the ISR.
* Obtain references to the queues and THRE Empty flag.
*/
extern void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx );
/*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
unsigned portLONG ulSpeed;
unsigned portLONG ulCD;
xComPortHandle xReturn = serHANDLE;
extern void ( vUART_ISR )( void );
/* The queues are used in the serial ISR routine, so are created from
serialISR.c (which is always compiled to ARM mode. */
vSerialISRCreateQueues( uxQueueLength, &xRxedChars, &xCharsForTx );
if(
( xRxedChars != serINVALID_QUEUE ) &&
( xCharsForTx != serINVALID_QUEUE ) &&
( ulWantedBaud != ( unsigned portLONG ) 0 )
)
{
portENTER_CRITICAL();
{
/* Enable clock to USART0... */
AT91C_BASE_PS->PS_PCER = AT91C_PS_US0;
/* Disable all USART0 interrupt sources to begin... */
AT91C_BASE_US0->US_IDR = 0xFFFFFFFF;
/* Reset various status bits (just in case)... */
AT91C_BASE_US0->US_CR = US_RSTSTA;
AT91C_BASE_PIO->PIO_PDR = TXD0 | RXD0; /* Enable RXD and TXD pins */
AT91C_BASE_US0->US_CR = US_RSTRX | US_RSTTX | US_RXDIS | US_TXDIS;
/* Clear Transmit and Receive Counters */
AT91C_BASE_US0->US_RCR = 0;
AT91C_BASE_US0->US_TCR = 0;
/* Input clock to baud rate generator is MCK */
ulSpeed = configCPU_CLOCK_HZ * 10;
ulSpeed = ulSpeed / 16;
ulSpeed = ulSpeed / ulWantedBaud;
/* compute the error */
ulCD = ulSpeed / 10;
if ((ulSpeed - (ulCD * 10)) >= 5)
ulCD++;
/* Define the baud rate divisor register */
AT91C_BASE_US0->US_BRGR = ulCD;
/* Define the USART mode */
AT91C_BASE_US0->US_MR = US_CLKS_MCK | US_CHRL_8 | US_PAR_NO | US_NBSTOP_1 | US_CHMODE_NORMAL;
/* Write the Timeguard Register */
AT91C_BASE_US0->US_TTGR = 0;
/* Setup the interrupt for USART0.
Store interrupt handler function address in USART0 vector register... */
AT91C_BASE_AIC->AIC_SVR[ portUSART0_AIC_CHANNEL ] = (unsigned long)vUART_ISR;
/* USART0 interrupt level-sensitive, priority 1... */
AT91C_BASE_AIC->AIC_SMR[ portUSART0_AIC_CHANNEL ] = AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 1;
/* Clear some pending USART0 interrupts (just in case)... */
AT91C_BASE_US0->US_CR = US_RSTSTA;
/* Enable USART0 interrupt sources (but not Tx for now)... */
AT91C_BASE_US0->US_IER = US_RXRDY;
/* Enable USART0 interrupts in the AIC... */
AT91C_BASE_AIC->AIC_IECR = ( 1 << portUSART0_AIC_CHANNEL );
/* Enable receiver and transmitter... */
AT91C_BASE_US0->US_CR = US_RXEN | US_TXEN;
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
/* Place the character in the queue of characters to be transmitted. */
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
return pdFAIL;
}
/* Turn on the Tx interrupt so the ISR will remove the character from the
queue and send it. This does not need to be in a critical section as
if the interrupt has already removed the character the next interrupt
will simply turn off the Tx interrupt again. */
AT91C_BASE_US0->US_IER = US_TXRDY;
return pdPASS;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/

View File

@@ -1,144 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR USART0.
This file contains all the serial port components that must be compiled
to ARM mode. The components that can be compiled to either ARM or THUMB
mode are contained in serial.c.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
#include "AT91R40008.h"
#include "usart.h"
/*-----------------------------------------------------------*/
/* Constant to access the AIC. */
#define serCLEAR_AIC_INTERRUPT ( ( unsigned portLONG ) 0 )
/* Constants to determine the ISR source. */
#define serSOURCE_THRE ( ( unsigned portCHAR ) 0x02 )
#define serSOURCE_RX_TIMEOUT ( ( unsigned portCHAR ) 0x0c )
#define serSOURCE_ERROR ( ( unsigned portCHAR ) 0x06 )
#define serSOURCE_RX ( ( unsigned portCHAR ) 0x04 )
#define serINTERRUPT_SOURCE_MASK ( ( unsigned portLONG ) (US_RXRDY | US_TXRDY | US_RXBRK | US_OVRE | US_FRAME | US_PARE) )
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/* UART0 interrupt service routine. This can cause a context switch so MUST
be declared "naked". */
void vUART_ISR( void ) __attribute__ ((naked));
/*-----------------------------------------------------------*/
void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx )
{
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Pass back a reference to the queues so the serial API file can
post/receive characters. */
*pxRxedChars = xRxedChars;
*pxCharsForTx = xCharsForTx;
}
/*-----------------------------------------------------------*/
void vUART_ISR( void )
{
/* This ISR can cause a context switch, so the first statement must be a
call to the portENTER_SWITCHING_ISR() macro. This must be BEFORE any
variable declarations. */
portENTER_SWITCHING_ISR();
/* Now we can declare the local variables. */
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByRx = pdFALSE;
unsigned portLONG ulStatus;
/* What caused the interrupt? */
ulStatus = AT91C_BASE_US0->US_CSR & AT91C_BASE_US0->US_IMR;
if (ulStatus & US_TXRDY)
{
/* The interrupt was caused by the THR becoming empty. Are there any
more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the
THR now. */
AT91C_BASE_US0->US_THR = cChar;
}
else
{
/* Queue empty, nothing to send so turn off the Tx interrupt. */
AT91C_BASE_US0->US_IDR = US_TXRDY;
}
}
if (ulStatus & US_RXRDY)
{
/* The interrupt was caused by the receiver getting data. */
cChar = AT91C_BASE_US0->US_RHR;
if (xQueueSendFromISR(xRxedChars, &cChar, pdFALSE))
{
xTaskWokenByRx = pdTRUE;
}
}
// Acknowledge the interrupt at AIC level...
AT91C_BASE_AIC->AIC_EOICR = serCLEAR_AIC_INTERRUPT;
/* Exit the ISR. If a task was woken by either a character being received
or transmitted then a context switch will occur. */
portEXIT_SWITCHING_ISR( ( xTaskWokenByTx || xTaskWokenByRx ) );
}
/*-----------------------------------------------------------*/

View File

@@ -1,78 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <intrinsic.h>
#include "Board.h"
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 47923200 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 14200 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,81 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#include "FreeRTOS.h"
#include "partest.h"
#include "board.h"
/*-----------------------------------------------------------
* Simple parallel port IO routines for the LED's.
*-----------------------------------------------------------*/
const unsigned portLONG led_mask[ NB_LED ]= { LED1, LED2, LED3, LED4 };
void vParTestInitialise( void )
{
/* Start with all LED's off. */
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
if( uxLED < ( portBASE_TYPE ) NB_LED )
{
if( xValue )
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, led_mask[ uxLED ] );
}
else
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, led_mask[ uxLED ]);
}
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
if( uxLED < ( portBASE_TYPE ) NB_LED )
{
if( AT91F_PIO_GetInput( AT91C_BASE_PIOA ) & led_mask[ uxLED ] )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, led_mask[ uxLED ]);
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, led_mask[ uxLED ] );
}
}
}

View File

@@ -1,89 +0,0 @@
/*----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support - ROUSSET -
*----------------------------------------------------------------------------
* The software is delivered "AS IS" without warranty or condition of any
* kind, either express, implied or statutory. This includes without
* limitation any warranty or condition with respect to merchantability or
* fitness for any particular purpose, or against the infringements of
* intellectual property rights of others.
*----------------------------------------------------------------------------
* File Name : Board.h
* Object : AT91SAM7S Evaluation Board Features Definition File.
*
* Creation : JPP 16/Jun/2004
*----------------------------------------------------------------------------
*/
#ifndef Board_h
#define Board_h
#include "AT91SAM7S64.h"
#define __inline inline
#include "lib_AT91SAM7S64.h"
#define true -1
#define false 0
/*-------------------------------*/
/* SAM7Board Memories Definition */
/*-------------------------------*/
// The AT91SAM7S64 embeds a 16-Kbyte SRAM bank, and 64 K-Byte Flash
#define INT_SARM 0x00200000
#define INT_SARM_REMAP 0x00000000
#define INT_FLASH 0x00000000
#define INT_FLASH_REMAP 0x01000000
#define FLASH_PAGE_NB 512
#define FLASH_PAGE_SIZE 128
/*-----------------*/
/* Leds Definition */
/*-----------------*/
/* PIO Flash PA PB PIN */
#define LED1 (1<<0) /* PA0 / PGMEN0 & PWM0 TIOA0 48 */
#define LED2 (1<<1) /* PA1 / PGMEN1 & PWM1 TIOB0 47 */
#define LED3 (1<<2) /* PA2 & PWM2 SCK0 44 */
#define LED4 (1<<3) /* PA3 & TWD NPCS3 43 */
#define NB_LED 4
#define LED_MASK (LED1|LED2|LED3|LED4)
/*-------------------------*/
/* Push Buttons Definition */
/*-------------------------*/
/* PIO Flash PA PB PIN */
#define SW1_MASK (1<<19) /* PA19 / PGMD7 & RK FIQ 13 */
#define SW2_MASK (1<<20) /* PA20 / PGMD8 & RF IRQ0 16 */
#define SW3_MASK (1<<15) /* PA15 / PGM3 & TF TIOA1 20 */
#define SW4_MASK (1<<14) /* PA14 / PGMD2 & SPCK PWM3 21 */
#define SW_MASK (SW1_MASK|SW2_MASK|SW3_MASK|SW4_MASK)
#define SW1 (1<<19) // PA19
#define SW2 (1<<20) // PA20
#define SW3 (1<<15) // PA15
#define SW4 (1<<14) // PA14
/*------------------*/
/* USART Definition */
/*------------------*/
/* SUB-D 9 points J3 DBGU*/
#define DBGU_RXD AT91C_PA9_DRXD /* JP11 must be close */
#define DBGU_TXD AT91C_PA10_DTXD /* JP12 must be close */
#define AT91C_DBGU_BAUD 115200 // Baud rate
#define US_RXD_PIN AT91C_PA5_RXD0 /* JP9 must be close */
#define US_TXD_PIN AT91C_PA6_TXD0 /* JP7 must be close */
#define US_RTS_PIN AT91C_PA7_RTS0 /* JP8 must be close */
#define US_CTS_PIN AT91C_PA8_CTS0 /* JP6 must be close */
/*--------------*/
/* Master Clock */
/*--------------*/
#define EXT_OC 18432000 // Exetrnal ocilator MAINCK
#define MCK 47923200 // MCK (PLLRC div by 2)
#define MCKKHz (MCK/1000) //
#endif /* Board_h */

View File

@@ -1,223 +0,0 @@
;------------------------------------------------------------------------------
;- ATMEL Microcontroller Software Support - ROUSSET -
;------------------------------------------------------------------------------
; The software is delivered "AS IS" without warranty or condition of any
; kind, either express, implied or statutory. This includes without
; limitation any warranty or condition with respect to merchantability or
; fitness for any particular purpose, or against the infringements of
; intellectual property rights of others.
;-----------------------------------------------------------------------------
;- File source : Cstartup.s79
;- Object : Generic CStartup for IAR No Use REMAP
;- Compilation flag : None
;-
;- 1.0 15/Jun/04 JPP : Creation
;------------------------------------------------------------------------------
#include "AT91SAM7S64_inc.h"
;------------------------------------------------------------------------------
;- Area Definition
;------------------------------------------------------------------------------
;---------------------------------------------------------------
; ?RESET
; Reset Vector.
; Normally, segment INTVEC is linked at address 0.
; For debugging purposes, INTVEC may be placed at other
; addresses.
; A debugger that honors the entry point will start the
; program in a normal way even if INTVEC is not at address 0.
;-------------------------------------------------------------
PROGRAM ?RESET
RSEG INTRAMSTART_REMAP
RSEG INTRAMEND_REMAP
EXTERN vPortYieldProcessor
RSEG ICODE:CODE:ROOT(2)
CODE32 ; Always ARM mode after reset
org 0
reset
;------------------------------------------------------------------------------
;- Exception vectors
;--------------------
;- These vectors can be read at address 0 or at RAM address
;- They ABSOLUTELY requires to be in relative addresssing mode in order to
;- guarantee a valid jump. For the moment, all are just looping.
;- If an exception occurs before remap, this would result in an infinite loop.
;- To ensure if a exeption occurs before start application to infinite loop.
;------------------------------------------------------------------------------
B InitReset ; 0x00 Reset handler
undefvec:
B undefvec ; 0x04 Undefined Instruction
swivec:
B vPortYieldProcessor ; 0x08 Software Interrupt
pabtvec:
B pabtvec ; 0x0C Prefetch Abort
dabtvec:
B dabtvec ; 0x10 Data Abort
rsvdvec:
B rsvdvec ; 0x14 reserved
irqvec:
LDR PC, [PC, #-0xF20] ; Jump directly to the address given by the AIC
fiqvec: ; 0x1c FIQ
;------------------------------------------------------------------------------
;- Function : FIQ_Handler_Entry
;- Treatments : FIQ Controller Interrupt Handler.
;- Called Functions : AIC_FVR[interrupt]
;------------------------------------------------------------------------------
FIQ_Handler_Entry:
;- Switch in SVC/User Mode to allow User Stack access for C code
; because the FIQ is not yet acknowledged
;- Save and r0 in FIQ_Register
mov r9,r0
ldr r0 , [r8, #AIC_FVR]
msr CPSR_c,#I_BIT | F_BIT | ARM_MODE_SVC
;- Save scratch/used registers and LR in User Stack
stmfd sp!, { r1-r3, r12, lr}
;- Branch to the routine pointed by the AIC_FVR
mov r14, pc
bx r0
;- Restore scratch/used registers and LR from User Stack
ldmia sp!, { r1-r3, r12, lr}
;- Leave Interrupts disabled and switch back in FIQ mode
msr CPSR_c, #I_BIT | F_BIT | ARM_MODE_FIQ
;- Restore the R0 ARM_MODE_SVC register
mov r0,r9
;- Restore the Program Counter using the LR_fiq directly in the PC
subs pc,lr,#4
InitReset:
;------------------------------------------------------------------------------
;- Low level Init (PMC, AIC, ? ....) by C function AT91F_LowLevelInit
;------------------------------------------------------------------------------
EXTERN AT91F_LowLevelInit
#define __iramend SFB(INTRAMEND_REMAP)
;- minumum C initialization
;- call AT91F_LowLevelInit( void)
ldr r13,=__iramend ; temporary stack in internal RAM
;--Call Low level init function in ABSOLUTE through the Interworking
ldr r0,=AT91F_LowLevelInit
mov lr, pc
bx r0
;------------------------------------------------------------------------------
;- Stack Sizes Definition
;------------------------
;- Interrupt Stack requires 2 words x 8 priority level x 4 bytes when using
;- the vectoring. This assume that the IRQ management.
;- The Interrupt Stack must be adjusted depending on the interrupt handlers.
;- Fast Interrupt not requires stack If in your application it required you must
;- be definehere.
;- The System stack size is not defined and is limited by the free internal
;- SRAM.
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;- Top of Stack Definition
;-------------------------
;- Interrupt and Supervisor Stack are located at the top of internal memory in
;- order to speed the exception handling context saving and restoring.
;- ARM_MODE_SVC (Application, C) Stack is located at the top of the external memory.
;------------------------------------------------------------------------------
IRQ_STACK_SIZE EQU 300
ARM_MODE_FIQ EQU 0x11
ARM_MODE_IRQ EQU 0x12
ARM_MODE_SVC EQU 0x13
I_BIT EQU 0x80
F_BIT EQU 0x40
;------------------------------------------------------------------------------
;- Setup the stack for each mode
;-------------------------------
ldr r0, =__iramend
;- Set up Fast Interrupt Mode and set FIQ Mode Stack
msr CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
;- Init the FIQ register
ldr r8, =AT91C_BASE_AIC
;- Set up Interrupt Mode and set IRQ Mode Stack
msr CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
mov r13, r0 ; Init stack IRQ
sub r0, r0, #IRQ_STACK_SIZE
;- Enable interrupt & Set up Supervisor Mode and set Supervisor Mode Stack
msr CPSR_c, #ARM_MODE_SVC
mov r13, r0
;---------------------------------------------------------------
; ?CSTARTUP
;---------------------------------------------------------------
EXTERN __segment_init
EXTERN main
; Initialize segments.
; __segment_init is assumed to use
; instruction set and to be reachable by BL from the ICODE segment
; (it is safest to link them in segment ICODE).
ldr r0,=__segment_init
mov lr, pc
bx r0
PUBLIC __main
?jump_to_main:
ldr lr,=?call_exit
ldr r0,=main
__main:
bx r0
;------------------------------------------------------------------------------
;- Loop for ever
;---------------
;- End of application. Normally, never occur.
;- Could jump on Software Reset ( B 0x0 ).
;------------------------------------------------------------------------------
?call_exit:
End
b End
;---------------------------------------------------------------
; ?EXEPTION_VECTOR
; This module is only linked if needed for closing files.
;---------------------------------------------------------------
PUBLIC AT91F_Default_FIQ_handler
PUBLIC AT91F_Default_IRQ_handler
PUBLIC AT91F_Spurious_handler
CODE32 ; Always ARM mode after exeption
AT91F_Default_FIQ_handler
b AT91F_Default_FIQ_handler
AT91F_Default_IRQ_handler
b AT91F_Default_IRQ_handler
AT91F_Spurious_handler
b AT91F_Spurious_handler
ENDMOD
END

View File

@@ -1,252 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks. The SAM7
* includes a sample USB that emulates a Joystick input to a USB host.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "BlockQ.h"
#include "semtest.h"
#include "dynamic.h"
#include "partest.h"
#include "comtest2.h"
#include "USB/USBSample.h"
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainUSB_PRIORITY ( tskIDLE_PRIORITY + 2 )
/* Constants required by the 'Check' task. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainCHECK_TASK_LED ( 3 )
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 4 ) /* Off the board. */
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Configure the processor for use with the Atmel demo board. Setup is minimal
* as the low level init function (called from the startup asm file) takes care
* of most things.
*/
static void prvSetupHardware( void );
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static portLONG prvCheckOtherTasksAreStillRunning( void );
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
void main( void )
{
/* Setup any hardware that has not already been configured by the low
level init routines. */
prvSetupHardware();
/* Initialise the LED outputs for use by the demo application tasks. */
vParTestInitialise();
/* Start all the standard demo application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartDynamicPriorityTasks();
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
/* Also start the USB demo which is just for the SAM7. */
xTaskCreate( vUSBDemoTask, "USB", configMINIMAL_STACK_SIZE, NULL, mainUSB_PRIORITY, NULL );
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* We should never get here as control is now taken by the scheduler. */
return;
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* When using the JTAG debugger the hardware is not always initialised to
the correct default state. This line just ensures that this does not
cause all interrupts to be masked at the start. */
AT91C_BASE_AIC->AIC_EOICR = 0;
/* Most setup is performed by the low level init function called from the
startup asm file. */
/* Configure the PIO Lines corresponding to LED1 to LED4 to be outputs as
well as the UART Tx line. */
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
/* Enable the peripheral clock. */
AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
/* The parameters are not used in this task. */
( void ) pvParameters;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase. */
for( ;; )
{
/* Delay until it is time to execute again. */
vTaskDelay( xDelayPeriod );
/* Check all the standard demo application tasks are executing without
error. */
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
vParTestToggleLED( mainCHECK_TASK_LED );
}
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( void )
{
portLONG lReturn = ( portLONG ) pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
return lReturn;
}
/*-----------------------------------------------------------*/

View File

@@ -1,135 +0,0 @@
// ---------------------------------------------------------
// ATMEL Microcontroller Software Support - ROUSSET -
// ---------------------------------------------------------
// The software is delivered "AS IS" without warranty or
// condition of any kind, either express, implied or
// statutory. This includes without limitation any warranty
// or condition with respect to merchantability or fitness
// for any particular purpose, or against the infringements of
// intellectual property rights of others.
// ---------------------------------------------------------
// File: at91SAM7S64_16KRAM.xlc
//
// 1.1 16/Jun/04 JPP : Creation for 4.11A
//
// $Revision: 1.1.1.1 $
//
// ---------------------------------------------------------
//*************************************************************************
// XLINK command file template for EWARM/ICCARM
//
// Usage: xlink -f lnkarm <your_object_file(s)>
// -s <program start label> <C/C++ runtime library>
//
// $Revision: 1.1.1.1 $
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
// AT91SAM7S64 Memory mapping
// No remap
// ROMSTART
// Start address 0x0000 0000
// Size 64 Kbo 0x0001 0000
// RAMSTART
// Start address 0x0020 0000
// Size 16 Kbo 0x0000 4000
// Remap done
// RAMSTART
// Start address 0x0000 0000
// Size 16 Kbo 0x0000 4000
// ROMSTART
// Start address 0x0010 0000
// Size 64 Kbo 0x0001 0000
//************************************************
-carm
//*************************************************************************
// Internal Ram segments mapped AFTER REMAP 16 K.
//*************************************************************************
// Use these addresses for the .
-Z(CONST)INTRAMSTART_REMAP=00000000
-Z(CONST)INTRAMEND_REMAP=00003FFF
//*************************************************************************
// Read-only segments mapped to Flash 64 K.
//*************************************************************************
-DROMSTART=00000000
-DROMEND=0000FFFF
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
-DRAMSTART=00000000
-DRAMEND=00003FFF
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//************************************************
-Z(CODE)INTVEC=00-3F
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
-D_CSTACK_SIZE=(100*4)
-D_IRQ_STACK_SIZE=(2*8*4)
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,136 +0,0 @@
// ---------------------------------------------------------
// ATMEL Microcontroller Software Support - ROUSSET -
// ---------------------------------------------------------
// The software is delivered "AS IS" without warranty or
// condition of any kind, either express, implied or
// statutory. This includes without limitation any warranty
// or condition with respect to merchantability or fitness
// for any particular purpose, or against the infringements of
// intellectual property rights of others.
// ---------------------------------------------------------
// File: at91SAM7S64_NoRemap.xlc
//
// 1.1 16/Jun/04 JPP : Creation for 4.11A
//
// $Revision: 1.1.1.1 $
//
// ---------------------------------------------------------
//*************************************************************************
// XLINK command file template for EWARM/ICCARM
//
// Usage: xlink -f lnkarm <your_object_file(s)>
// -s <program start label> <C/C++ runtime library>
//
// $Revision: 1.1.1.1 $
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
// AT91SAM7S64 Memory mapping
// No remap
// ROMSTART
// Start address 0x0000 0000
// Size 64 Kbo 0x0001 0000
// RAMSTART
// Start address 0x0020 0000
// Size 16 Kbo 0x0000 4000
// Remap done
// RAMSTART
// Start address 0x0000 0000
// Size 16 Kbo 0x0000 4000
// ROMSTART
// Start address 0x0010 0000
// Size 64 Kbo 0x0001 0000
//************************************************
-carm
//*************************************************************************
// Internal Ram segments mapped AFTER REMAP 16 K.
//*************************************************************************
// Use these addresses for the .
-Z(CONST)INTRAMSTART_REMAP=00200000
-Z(CONST)INTRAMEND_REMAP=00203FFF
//*************************************************************************
// Read-only segments mapped to Flash 64 K.
//*************************************************************************
-DROMSTART=00000000
-DROMEND=0000FFFF
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
-DRAMSTART=00200000
-DRAMEND=002003FFF
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//************************************************
-Z(CODE)INTVEC=00-3F
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
//-D_CSTACK_SIZE=(100*4)
//-D_IRQ_STACK_SIZE=(2*8*4)
//-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,905 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>1</fileVersion>
<configuration>
<name>Flash Debug</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>13</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>1</state>
</option>
<option>
<name>MacFile</name>
<state>$PROJ_DIR$\resource\SAM7.mac</state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\ioat91sam7s64.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>0</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.10B</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.30A</state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>FlashLoaders</name>
<state>,,,,(default),</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>JLinkSpeed</name>
<state>30</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
<configuration>
<name>Flash Bin</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>13</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>1</state>
</option>
<option>
<name>MacFile</name>
<state>$PROJ_DIR$\resource\SAM7.mac</state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\ioat91sam7s64.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>0</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.10B</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.30A</state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>FlashLoaders</name>
<state>,,,,(default),</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>JLinkSpeed</name>
<state>30</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,246 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Location of the COM0 registers. */
#define serCOM0 ( ( AT91PS_USART ) AT91C_BASE_US0 )
/* Interrupt control macros. */
#define serINTERRUPT_LEVEL ( 5 )
#define vInterruptOn() AT91F_US_EnableIt( serCOM0, AT91C_US_TXRDY | AT91C_US_RXRDY )
#define vInterruptOff() AT91F_US_DisableIt( serCOM0, AT91C_US_TXRDY )
/* Misc constants. */
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serHANDLE ( ( xComPortHandle ) 1 )
#define serNO_BLOCK ( ( portTickType ) 0 )
#define serNO_TIMEGUARD ( ( unsigned portLONG ) 0 )
#define serNO_PERIPHERAL_B_SETUP ( ( unsigned portLONG ) 0 )
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/* Interrupt entry point written in the assembler file serialISR.s79. */
extern void vSerialISREntry( void );
/* The interrupt service routine - called from the assembly entry point. */
__arm void vSerialISR( void );
/*-----------------------------------------------------------*/
/*
* See the serial2.h header file.
*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
xComPortHandle xReturn = serHANDLE;
extern void ( vUART_ISR )( void );
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* If the queues were created correctly then setup the serial port
hardware. */
if( ( xRxedChars != serINVALID_QUEUE ) && ( xCharsForTx != serINVALID_QUEUE ) )
{
portENTER_CRITICAL();
{
/* Enable the USART clock. */
AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, 1 << AT91C_ID_US0 );
AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, ( ( unsigned portLONG ) AT91C_PA5_RXD0 ) | ( ( unsigned portLONG ) AT91C_PA6_TXD0 ), serNO_PERIPHERAL_B_SETUP );
/* Set the required protocol. */
AT91F_US_Configure( serCOM0, configCPU_CLOCK_HZ, AT91C_US_ASYNC_MODE, ulWantedBaud, serNO_TIMEGUARD );
/* Enable Rx and Tx. */
serCOM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
/* Enable the Rx interrupts. The Tx interrupts are not enabled
until there are characters to be transmitted. */
AT91F_US_EnableIt( serCOM0, AT91C_US_RXRDY );
/* Enable the interrupts in the AIC. */
AT91F_AIC_ConfigureIt( AT91C_BASE_AIC, AT91C_ID_US0, serINTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, ( void (*)( void ) ) vSerialISREntry );
AT91F_AIC_EnableIt( AT91C_BASE_AIC, AT91C_ID_US0 );
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
/* This demo file only supports a single port but we have to return
something to comply with the standard demo header file. */
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* A couple of parameters that this port does not use. */
( void ) usStringLength;
( void ) pxPort;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
/* Place the character in the queue of characters to be transmitted. */
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
return pdFAIL;
}
/* Turn on the Tx interrupt so the ISR will remove the character from the
queue and send it. This does not need to be in a critical section as
if the interrupt has already removed the character the next interrupt
will simply turn off the Tx interrupt again. */
vInterruptOn();
return pdPASS;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/
/* Serial port ISR. This can cause a context switch so is not defined as a
standard ISR using the __irq keyword. Instead a wrapper function is defined
within serialISR.s79 which in turn calls this function. See the port
documentation on the FreeRTOS.org website for more information. */
__arm void vSerialISR( void )
{
unsigned portLONG ulStatus;
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByPost = pdFALSE;
/* What caused the interrupt? */
ulStatus = serCOM0->US_CSR &= serCOM0->US_IMR;
if( ulStatus & AT91C_US_TXRDY )
{
/* The interrupt was caused by the THR becoming empty. Are there any
more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the
THR now. */
serCOM0->US_THR = cChar;
}
else
{
/* Queue empty, nothing to send so turn off the Tx interrupt. */
vInterruptOff();
}
}
if( ulStatus & AT91C_US_RXRDY )
{
/* The interrupt was caused by a character being received. Grab the
character from the RHR and place it in the queue or received
characters. */
cChar = serCOM0->US_RHR;
xTaskWokenByPost = xQueueSendFromISR( xRxedChars, &cChar, xTaskWokenByPost );
}
/* If a task was woken by either a character being received or a character
being transmitted then we may need to switch to another task. */
portEND_SWITCHING_ISR( ( xTaskWokenByPost || xTaskWokenByTx ) );
/* End the interrupt in the AIC. */
AT91C_BASE_AIC->AIC_EOICR = 0;
}

View File

@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>191</Column0><Column1>27</Column1><Column2>27</Column2></ColumnWidths>
</Workspace>
<Disassembly>
<PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
<Debug-Log><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Build</Factory></Window></Windows></PreferedWindows></Debug-Log>
<Build><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Debug-Log</Factory></Window></Windows></PreferedWindows></Build>
<Register>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
</Register>
<QWatch><Column0>161</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></QWatch><Memory><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ZoneNumber>0</ZoneNumber><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-22256-14845</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/USBSample.c</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\source\portable\iar\AtmelSAM7S64\lib_AT91SAM7S64.h</Filename><XPos>0</XPos><YPos>615</YPos><SelStart>24806</SelStart><SelEnd>24806</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\USB\USBSample.c</Filename><XPos>0</XPos><YPos>289</YPos><SelStart>10498</SelStart><SelEnd>10498</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\main.c</Filename><XPos>0</XPos><YPos>141</YPos><SelStart>6420</SelStart><SelEnd>6420</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\AtmelSAM7S64\port.c</Filename><XPos>0</XPos><YPos>117</YPos><SelStart>5493</SelStart><SelEnd>5493</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\serial\serial.c</Filename><XPos>0</XPos><YPos>132</YPos><SelStart>5547</SelStart><SelEnd>5547</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\MemMang\heap_1.c</Filename><XPos>0</XPos><YPos>82</YPos><SelStart>3650</SelStart><SelEnd>3650</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\SrcIAR\Cstartup.s79</Filename><XPos>0</XPos><YPos>27</YPos><SelStart>2226</SelStart><SelEnd>2226</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\Common\Minimal\integer.c</Filename><XPos>0</XPos><YPos>77</YPos><SelStart>4024</SelStart><SelEnd>4024</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\tasks.c</Filename><XPos>0</XPos><YPos>823</YPos><SelStart>29289</SelStart><SelEnd>29289</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\AtmelSAM7S64\portasm.s79</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>519</SelStart><SelEnd>519</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\AtmelSAM7S64\portmacro.h</Filename><XPos>0</XPos><YPos>57</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>24</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\Common\Minimal\semtest.c</Filename><XPos>0</XPos><YPos>166</YPos><SelStart>7856</SelStart><SelEnd>7856</SelEnd></Tab><ActiveTab>12</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084f8b0><key>IarIdePM1</key></Toolbar-0084f8b0><Toolbar-0272db18><key>DebuggerGui1</key></Toolbar-0272db18></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>1072</Bottom><Right>265</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>166875</sizeVertCX><sizeVertCY>959785</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes/></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

View File

@@ -1,22 +0,0 @@
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[JLinkDriver]
WatchVectorCatch=_ 0
WatchCond=_ 0
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
[Low Level]
Pipeline mode=1
Initialized=0
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[Disassemble mode]
mode=0
[Breakpoints]
Count=0

View File

@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>rtosdemo/Flash Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>221</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build><ColumnWidth0>18</ColumnWidth0><ColumnWidth1>1155</ColumnWidth1><ColumnWidth2>308</ColumnWidth2><ColumnWidth3>77</ColumnWidth3></Build>
<Debug-Log/>
<TerminalIO/>
<CodeCoveragePlugin/>
<Profiling/>
<Watch>
<Format>
<struct_types/>
<watch_formats/>
</Format>
</Watch>
<Disassembly><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly><Memory><ZoneNumber>0</ZoneNumber><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory></Static>
<Windows>
<Wnd0>
<Tabs>
<Tab>
<Identity>TabID-17425-14382</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/Demo Source</ExpandedNode><ExpandedNode>rtosdemo/Scheduler Source</ExpandedNode><ExpandedNode>rtosdemo/System Files</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<Tabs>
<Tab>
<Identity>TabID-4084-16269</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-25581-16276</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd1></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>18</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\SrcIAR\Board.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>952</SelStart><SelEnd>969</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_AT91SAM7S64_IAR\SrcIAR\Cstartup.s79</Filename><XPos>0</XPos><YPos>142</YPos><SelStart>6503</SelStart><SelEnd>6517</SelEnd></Tab><ActiveTab>2</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084c368><key>iaridepm1</key></Toolbar-0084c368></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>659</Bottom><Right>295</Right><x>-2</x><y>-2</y><xscreen>30</xscreen><yscreen>30</yscreen><sizeHorzCX>18750</sizeHorzCX><sizeHorzCY>26809</sizeHorzCY><sizeVertCX>185625</sizeVertCX><sizeVertCY>590705</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>413</Bottom><Right>1602</Right><x>-2</x><y>-2</y><xscreen>1604</xscreen><yscreen>415</yscreen><sizeHorzCX>1002500</sizeHorzCX><sizeHorzCY>370866</sizeHorzCY><sizeVertCX>18750</sizeVertCX><sizeVertCY>26809</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@@ -1,78 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <lpc210x.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 58982400 ) /* =14.7456MHz xtal multiplied by 4 using the PLL. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 23 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,118 +0,0 @@
# FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
#
# This file is part of the FreeRTOS.org distribution.
#
# FreeRTOS.org is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# FreeRTOS.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with FreeRTOS.org; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# A special exception to the GPL can be applied should you wish to distribute
# a combined work that includes FreeRTOS.org, without being obliged to provide
# the source code for any proprietary components. See the licensing section
# of http://www.FreeRTOS.org for full details of how and when the exception
# can be applied.
#
# ***************************************************************************
# See http://www.FreeRTOS.org for documentation, latest information, license
# and contact details. Please ensure to read the configuration and relevant
# port sections of the online documentation.
# ***************************************************************************
# Changes from V2.4.2
#
# + Replaced source/portable/gcc/arm7/portheap.c with source/portable/memmang/heap_2.c.
CC=arm-elf-gcc
OBJCOPY=arm-elf-objcopy
ARCH=arm-elf-ar
CRT0=boot.s
WARNINGS=-Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare \
-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wunused
#
# CFLAGS common to both the THUMB and ARM mode builds
#
CFLAGS=$(WARNINGS) -D $(RUN_MODE) -D GCC_ARM7 -I. -I../../Source/include \
-I../Common/include $(DEBUG) -mcpu=arm7tdmi -T$(LDSCRIPT) \
$(OPTIM) -fomit-frame-pointer
ifeq ($(USE_THUMB_MODE),YES)
CFLAGS += -mthumb-interwork -D THUMB_INTERWORK
THUMB_FLAGS=-mthumb
endif
LINKER_FLAGS=-Xlinker -ortosdemo.elf -Xlinker -M -Xlinker -Map=rtosdemo.map
RTOS_SOURCE_DIR=../../Source
DEMO_SOURCE_DIR=../Common/Minimal
#
# Source files that can be built to THUMB mode.
#
THUMB_SRC = \
main.c \
serial/serial.c \
ParTest/ParTest.c \
$(DEMO_SOURCE_DIR)/integer.c \
$(DEMO_SOURCE_DIR)/flash.c \
$(DEMO_SOURCE_DIR)/PollQ.c \
$(DEMO_SOURCE_DIR)/comtest.c \
$(DEMO_SOURCE_DIR)/flop.c \
$(DEMO_SOURCE_DIR)/semtest.c \
$(DEMO_SOURCE_DIR)/dynamic.c \
$(DEMO_SOURCE_DIR)/BlockQ.c \
$(RTOS_SOURCE_DIR)/tasks.c \
$(RTOS_SOURCE_DIR)/queue.c \
$(RTOS_SOURCE_DIR)/list.c \
$(RTOS_SOURCE_DIR)/portable/MemMang/heap_2.c \
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC2000/port.c
#
# Source files that must be built to ARM mode.
#
ARM_SRC = \
$(RTOS_SOURCE_DIR)/portable/GCC/ARM7_LPC2000/portISR.c \
serial/serialISR.c
#
# Define all object files.
#
ARM_OBJ = $(ARM_SRC:.c=.o)
THUMB_OBJ = $(THUMB_SRC:.c=.o)
rtosdemo.hex : rtosdemo.elf
$(OBJCOPY) rtosdemo.elf -O ihex rtosdemo.hex
rtosdemo.elf : $(ARM_OBJ) $(THUMB_OBJ) $(CRT0) Makefile
$(CC) $(CFLAGS) $(ARM_OBJ) $(THUMB_OBJ) -nostartfiles $(CRT0) $(LINKER_FLAGS)
$(THUMB_OBJ) : %.o : %.c $(LDSCRIPT) Makefile
$(CC) -c $(THUMB_FLAGS) $(CFLAGS) $< -o $@
$(ARM_OBJ) : %.o : %.c $(LDSCRIPT) Makefile
$(CC) -c $(CFLAGS) $< -o $@
clean :
touch Makefile

View File

@@ -1,106 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
Changes from V2.5.2
+ All LED's are turned off to start.
*/
#include "FreeRTOS.h"
#include "partest.h"
#define partstFIRST_IO ( ( unsigned portLONG ) 0x400 )
#define partstNUM_LEDS ( 4 )
#define partstALL_OUTPUTS_OFF ( ( unsigned portLONG ) 0xffffffff )
/*-----------------------------------------------------------
* Simple parallel port IO routines.
*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* This is performed from main() as the io bits are shared with other setup
functions. */
/* Turn all outputs off. */
GPIO_IOSET = partstALL_OUTPUTS_OFF;
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned portLONG ulLED = partstFIRST_IO;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* Set of clear the output. */
if( xValue )
{
GPIO_IOCLR = ulLED;
}
else
{
GPIO_IOSET = ulLED;
}
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portLONG ulLED = partstFIRST_IO, ulCurrentState;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* If this bit is already set, clear it, and visa versa. */
ulCurrentState = GPIO0_IOPIN;
if( ulCurrentState & ulLED )
{
GPIO_IOCLR = ulLED;
}
else
{
GPIO_IOSET = ulLED;
}
}
}

View File

@@ -1,157 +0,0 @@
/* Sample initialization file */
.extern main
.extern exit
.text
.code 32
.align 0
.extern __bss_beg__
.extern __bss_end__
.extern __stack_end__
.extern __data_beg__
.extern __data_end__
.extern __data+beg_src__
.global start
.global endless_loop
/* Stack Sizes */
.set UND_STACK_SIZE, 0x00000004
.set ABT_STACK_SIZE, 0x00000004
.set FIQ_STACK_SIZE, 0x00000004
.set IRQ_STACK_SIZE, 0X00000400
.set SVC_STACK_SIZE, 0x00000400
/* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */
.set MODE_USR, 0x10 /* User Mode */
.set MODE_FIQ, 0x11 /* FIQ Mode */
.set MODE_IRQ, 0x12 /* IRQ Mode */
.set MODE_SVC, 0x13 /* Supervisor Mode */
.set MODE_ABT, 0x17 /* Abort Mode */
.set MODE_UND, 0x1B /* Undefined Mode */
.set MODE_SYS, 0x1F /* System Mode */
.equ I_BIT, 0x80 /* when I bit is set, IRQ is disabled */
.equ F_BIT, 0x40 /* when F bit is set, FIQ is disabled */
start:
_start:
_mainCRTStartup:
/* Setup a stack for each mode - note that this only sets up a usable stack
for system/user, SWI and IRQ modes. Also each mode is setup with
interrupts initially disabled. */
ldr r0, .LC6
msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode
mov sp, r0
sub r0, r0, #UND_STACK_SIZE
msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */
mov sp, r0
sub r0, r0, #ABT_STACK_SIZE
msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */
mov sp, r0
sub r0, r0, #FIQ_STACK_SIZE
msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */
mov sp, r0
sub r0, r0, #IRQ_STACK_SIZE
msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */
mov sp, r0
sub r0, r0, #SVC_STACK_SIZE
msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* System Mode */
mov sp, r0
/* We want to start in supervisor mode. Operation will switch to system
mode when the first task starts. */
msr CPSR_c, #MODE_SVC|I_BIT|F_BIT
/* Clear BSS. */
mov a2, #0 /* Fill value */
mov fp, a2 /* Null frame pointer */
mov r7, a2 /* Null frame pointer for Thumb */
ldr r1, .LC1 /* Start of memory block */
ldr r3, .LC2 /* End of memory block */
subs r3, r3, r1 /* Length of block */
beq .end_clear_loop
mov r2, #0
.clear_loop:
strb r2, [r1], #1
subs r3, r3, #1
bgt .clear_loop
.end_clear_loop:
/* Initialise data. */
ldr r1, .LC3 /* Start of memory block */
ldr r2, .LC4 /* End of memory block */
ldr r3, .LC5
subs r3, r3, r1 /* Length of block */
beq .end_set_loop
.set_loop:
ldrb r4, [r2], #1
strb r4, [r1], #1
subs r3, r3, #1
bgt .set_loop
.end_set_loop:
mov r0, #0 /* no arguments */
mov r1, #0 /* no argv either */
bl main
endless_loop:
b endless_loop
.align 0
.LC1:
.word __bss_beg__
.LC2:
.word __bss_end__
.LC3:
.word __data_beg__
.LC4:
.word __data_beg_src__
.LC5:
.word __data_end__
.LC6:
.word __stack_end__
/* Setup vector table. Note that undf, pabt, dabt, fiq just execute
a null loop. */
.section .startup,"ax"
.code 32
.align 0
b _start /* reset - _start */
ldr pc, _undf /* undefined - _undf */
ldr pc, _swi /* SWI - _swi */
ldr pc, _pabt /* program abort - _pabt */
ldr pc, _dabt /* data abort - _dabt */
nop /* reserved */
ldr pc, [pc,#-0xFF0] /* IRQ - read the VIC */
ldr pc, _fiq /* FIQ - _fiq */
_undf: .word __undf /* undefined */
_swi: .word vPortYieldProcessor /* SWI */
_pabt: .word __pabt /* program abort */
_dabt: .word __dabt /* data abort */
_fiq: .word __fiq /* FIQ */
__undf: b . /* undefined */
__pabt: b . /* program abort */
__dabt: b . /* data abort */
__fiq: b . /* FIQ */

View File

@@ -1,474 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
* To check the operation of the memory allocator the check task also
* dynamically creates a task before delaying, and deletes it again when it
* wakes. If memory cannot be allocated for the new task the call to xTaskCreate
* will fail and an error is signalled. The dynamically created task itself
* allocates and frees memory just to give the allocator a bit more exercise.
*
*/
/*
Changes from V2.4.2
+ The vErrorChecks() task now dynamically creates then deletes a task each
cycle. This tests the operation of the memory allocator.
Changes from V2.5.2
+ vParTestInitialise() is called during initialisation to ensure all the
LED's start off.
*/
/* Standard includes. */
#include <stdlib.h>
#include <string.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "partest.h"
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "comtest2.h"
#include "semtest.h"
#include "flop.h"
#include "dynamic.h"
#include "BlockQ.h"
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constants to setup I/O. */
#define mainTX_ENABLE ( ( unsigned portLONG ) 0x0001 )
#define mainRX_ENABLE ( ( unsigned portLONG ) 0x0004 )
#define mainP0_14 ( ( unsigned portLONG ) 0x4000 )
#define mainJTAG_PORT ( ( unsigned portLONG ) 0x3E0000UL )
/* Constants to setup the PLL. */
#define mainPLL_MUL_4 ( ( unsigned portCHAR ) 0x0003 )
#define mainPLL_DIV_1 ( ( unsigned portCHAR ) 0x0000 )
#define mainPLL_ENABLE ( ( unsigned portCHAR ) 0x0001 )
#define mainPLL_CONNECT ( ( unsigned portCHAR ) 0x0003 )
#define mainPLL_FEED_BYTE1 ( ( unsigned portCHAR ) 0xaa )
#define mainPLL_FEED_BYTE2 ( ( unsigned portCHAR ) 0x55 )
#define mainPLL_LOCK ( ( unsigned portLONG ) 0x0400 )
/* Constants to setup the MAM. */
#define mainMAM_TIM_3 ( ( unsigned portCHAR ) 0x03 )
#define mainMAM_MODE_FULL ( ( unsigned portCHAR ) 0x02 )
/* Constants to setup the peripheral bus. */
#define mainBUS_CLK_FULL ( ( unsigned portCHAR ) 0x01 )
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 3 )
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
/* The rate at which the on board LED will toggle when there is/is not an
error. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainON_BOARD_LED_BIT ( ( unsigned portLONG ) 0x80 )
/* Constants used by the vMemCheckTask() task. */
#define mainCOUNT_INITIAL_VALUE ( ( unsigned portLONG ) 0 )
#define mainNO_TASK ( 0 )
/* The size of the memory blocks allocated by the vMemCheckTask() task. */
#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
/*-----------------------------------------------------------*/
/*
* The Olimex demo board has a single built in LED. This function simply
* toggles its state.
*/
void prvToggleOnBoardLED( void );
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static portLONG prvCheckOtherTasksAreStillRunning( unsigned portLONG ulMemCheckTaskCount );
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Dynamically created and deleted during each cycle of the vErrorChecks()
* task. This is done to check the operation of the memory allocator.
* See the top of vErrorChecks for more details.
*/
static void vMemCheckTask( void *pvParameters );
/*
* Configure the processor for use with the Olimex demo board. This includes
* setup for the I/O, system clock, and access timings.
*/
static void prvSetupHardware( void );
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
int main( void )
{
/* Setup the hardware for use with the Olimex demo board. */
prvSetupHardware();
/* Start the demo/test application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartMathTasks( tskIDLE_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Now all the tasks have been started - start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* Should never reach here! */
return 0;
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
unsigned portLONG ulMemCheckTaskRunningCount;
xTaskHandle xCreatedTask;
/* The parameters are not used in this function. */
( void ) pvParameters;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase.
In addition to the standard tests the memory allocator is tested through
the dynamic creation and deletion of a task each cycle. Each time the
task is created memory must be allocated for its stack. When the task is
deleted this memory is returned to the heap. If the task cannot be created
then it is likely that the memory allocation failed. */
for( ;; )
{
/* Dynamically create a task - passing ulMemCheckTaskRunningCount as a
parameter. */
ulMemCheckTaskRunningCount = mainCOUNT_INITIAL_VALUE;
xCreatedTask = mainNO_TASK;
if( xTaskCreate( vMemCheckTask, ( signed portCHAR * ) "MEM_CHECK", configMINIMAL_STACK_SIZE, ( void * ) &ulMemCheckTaskRunningCount, tskIDLE_PRIORITY, &xCreatedTask ) != pdPASS )
{
/* Could not create the task - we have probably run out of heap. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
/* Delay until it is time to execute again. */
vTaskDelay( xDelayPeriod );
/* Delete the dynamically created task. */
if( xCreatedTask != mainNO_TASK )
{
vTaskDelete( xCreatedTask );
}
/* Check all the standard demo application tasks are executing without
error. ulMemCheckTaskRunningCount is checked to ensure it was
modified by the task just deleted. */
if( prvCheckOtherTasksAreStillRunning( ulMemCheckTaskRunningCount ) != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
prvToggleOnBoardLED();
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
#ifdef RUN_FROM_RAM
/* Remap the interrupt vectors to RAM if we are are running from RAM. */
SCB_MEMMAP = 2;
#endif
/* Configure the RS2332 pins. All other pins remain at their default of 0. */
PCB_PINSEL0 |= mainTX_ENABLE;
PCB_PINSEL0 |= mainRX_ENABLE;
/* Set all GPIO to output other than the P0.14 (BSL), and the JTAG pins.
The JTAG pins are left as input as I'm not sure what will happen if the
Wiggler is connected after powerup - not that it would be a good idea to
do that anyway. */
GPIO_IODIR = ~( mainP0_14 + mainJTAG_PORT );
/* Setup the PLL to multiply the XTAL input by 4. */
SCB_PLLCFG = ( mainPLL_MUL_4 | mainPLL_DIV_1 );
/* Activate the PLL by turning it on then feeding the correct sequence of
bytes. */
SCB_PLLCON = mainPLL_ENABLE;
SCB_PLLFEED = mainPLL_FEED_BYTE1;
SCB_PLLFEED = mainPLL_FEED_BYTE2;
/* Wait for the PLL to lock... */
while( !( SCB_PLLSTAT & mainPLL_LOCK ) );
/* ...before connecting it using the feed sequence again. */
SCB_PLLCON = mainPLL_CONNECT;
SCB_PLLFEED = mainPLL_FEED_BYTE1;
SCB_PLLFEED = mainPLL_FEED_BYTE2;
/* Setup and turn on the MAM. Three cycle access is used due to the fast
PLL used. It is possible faster overall performance could be obtained by
tuning the MAM and PLL settings. */
MAM_TIM = mainMAM_TIM_3;
MAM_CR = mainMAM_MODE_FULL;
/* Setup the peripheral bus to be the same as the PLL output. */
SCB_VPBDIV = mainBUS_CLK_FULL;
/* Initialise LED outputs. */
vParTestInitialise();
}
/*-----------------------------------------------------------*/
void prvToggleOnBoardLED( void )
{
unsigned portLONG ulState;
ulState = GPIO0_IOPIN;
if( ulState & mainON_BOARD_LED_BIT )
{
GPIO_IOCLR = mainON_BOARD_LED_BIT;
}
else
{
GPIO_IOSET = mainON_BOARD_LED_BIT;
}
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( unsigned portLONG ulMemCheckTaskCount )
{
portLONG lReturn = ( portLONG ) pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( ulMemCheckTaskCount == mainCOUNT_INITIAL_VALUE )
{
/* The vMemCheckTask did not increment the counter - it must
have failed. */
lReturn = ( portLONG ) pdFAIL;
}
return lReturn;
}
/*-----------------------------------------------------------*/
static void vMemCheckTask( void *pvParameters )
{
unsigned portLONG *pulMemCheckTaskRunningCounter;
void *pvMem1, *pvMem2, *pvMem3;
static portLONG lErrorOccurred = pdFALSE;
/* This task is dynamically created then deleted during each cycle of the
vErrorChecks task to check the operation of the memory allocator. Each time
the task is created memory is allocated for the stack and TCB. Each time
the task is deleted this memory is returned to the heap. This task itself
exercises the allocator by allocating and freeing blocks.
The task executes at the idle priority so does not require a delay.
pulMemCheckTaskRunningCounter is incremented each cycle to indicate to the
vErrorChecks() task that this task is still executing without error. */
pulMemCheckTaskRunningCounter = ( unsigned portLONG * ) pvParameters;
for( ;; )
{
if( lErrorOccurred == pdFALSE )
{
/* We have never seen an error so increment the counter. */
( *pulMemCheckTaskRunningCounter )++;
}
/* Allocate some memory - just to give the allocator some extra
exercise. This has to be in a critical section to ensure the
task does not get deleted while it has memory allocated. */
vTaskSuspendAll();
{
pvMem1 = pvPortMalloc( mainMEM_CHECK_SIZE_1 );
if( pvMem1 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem1, 0xaa, mainMEM_CHECK_SIZE_1 );
vPortFree( pvMem1 );
}
}
xTaskResumeAll();
/* Again - with a different size block. */
vTaskSuspendAll();
{
pvMem2 = pvPortMalloc( mainMEM_CHECK_SIZE_2 );
if( pvMem2 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem2, 0xaa, mainMEM_CHECK_SIZE_2 );
vPortFree( pvMem2 );
}
}
xTaskResumeAll();
/* Again - with a different size block. */
vTaskSuspendAll();
{
pvMem3 = pvPortMalloc( mainMEM_CHECK_SIZE_3 );
if( pvMem3 == NULL )
{
lErrorOccurred = pdTRUE;
}
else
{
memset( pvMem3, 0xaa, mainMEM_CHECK_SIZE_3 );
vPortFree( pvMem3 );
}
}
xTaskResumeAll();
}
}

View File

@@ -1,263 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
Changes from V2.4.0
+ Made serial ISR handling more complete and robust.
Changes from V2.4.1
+ Split serial.c into serial.c and serialISR.c. serial.c can be
compiled using ARM or THUMB modes. serialISR.c must always be
compiled in ARM mode.
+ Another small change to cSerialPutChar().
Changed from V2.5.1
+ In cSerialPutChar() an extra check is made to ensure the post to
the queue was successful if then attempting to retrieve the posted
character.
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
This file contains all the serial port components that can be compiled to
either ARM or THUMB mode. Components that must be compiled to ARM mode are
contained in serialISR.c.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constants to setup and access the UART. */
#define serDLAB ( ( unsigned portCHAR ) 0x80 )
#define serENABLE_INTERRUPTS ( ( unsigned portCHAR ) 0x03 )
#define serNO_PARITY ( ( unsigned portCHAR ) 0x00 )
#define ser1_STOP_BIT ( ( unsigned portCHAR ) 0x00 )
#define ser8_BIT_CHARS ( ( unsigned portCHAR ) 0x03 )
#define serFIFO_ON ( ( unsigned portCHAR ) 0x01 )
#define serCLEAR_FIFO ( ( unsigned portCHAR ) 0x06 )
#define serWANTED_CLOCK_SCALING ( ( unsigned portLONG ) 16 )
/* Constants to setup and access the VIC. */
#define serUART0_VIC_CHANNEL ( ( unsigned portLONG ) 0x0006 )
#define serUART0_VIC_CHANNEL_BIT ( ( unsigned portLONG ) 0x0040 )
#define serUART0_VIC_ENABLE ( ( unsigned portLONG ) 0x0020 )
#define serCLEAR_VIC_INTERRUPT ( ( unsigned portLONG ) 0 )
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serHANDLE ( ( xComPortHandle ) 1 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/* Communication flag between the interrupt service routine and serial API. */
static volatile portLONG *plTHREEmpty;
/*
* The queues are created in serialISR.c as they are used from the ISR.
* Obtain references to the queues and THRE Empty flag.
*/
extern void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx, portLONG volatile **pplTHREEmptyFlag );
/*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
unsigned portLONG ulDivisor, ulWantedClock;
xComPortHandle xReturn = serHANDLE;
extern void ( vUART_ISR )( void );
/* The queues are used in the serial ISR routine, so are created from
serialISR.c (which is always compiled to ARM mode. */
vSerialISRCreateQueues( uxQueueLength, &xRxedChars, &xCharsForTx, &plTHREEmpty );
if(
( xRxedChars != serINVALID_QUEUE ) &&
( xCharsForTx != serINVALID_QUEUE ) &&
( ulWantedBaud != ( unsigned portLONG ) 0 )
)
{
portENTER_CRITICAL();
{
/* Setup the baud rate: Calculate the divisor value. */
ulWantedClock = ulWantedBaud * serWANTED_CLOCK_SCALING;
ulDivisor = configCPU_CLOCK_HZ / ulWantedClock;
/* Set the DLAB bit so we can access the divisor. */
UART0_LCR |= serDLAB;
/* Setup the divisor. */
UART0_DLL = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
ulDivisor >>= 8;
UART0_DLM = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
/* Turn on the FIFO's and clear the buffers. */
UART0_FCR = ( serFIFO_ON | serCLEAR_FIFO );
/* Setup transmission format. */
UART0_LCR = serNO_PARITY | ser1_STOP_BIT | ser8_BIT_CHARS;
/* Setup the VIC for the UART. */
VICIntSelect &= ~( serUART0_VIC_CHANNEL_BIT );
VICIntEnable |= serUART0_VIC_CHANNEL_BIT;
VICVectAddr1 = ( portLONG ) vUART_ISR;
VICVectCntl1 = serUART0_VIC_CHANNEL | serUART0_VIC_ENABLE;
/* Enable UART0 interrupts. */
UART0_IER |= serENABLE_INTERRUPTS;
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
( void ) usStringLength;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
signed portBASE_TYPE xReturn;
/* This demo driver only supports one port so the parameter is not used. */
( void ) pxPort;
portENTER_CRITICAL();
{
/* Is there space to write directly to the UART? */
if( *plTHREEmpty == ( portLONG ) pdTRUE )
{
/* We wrote the character directly to the UART, so was
successful. */
*plTHREEmpty = pdFALSE;
UART0_THR = cOutChar;
xReturn = pdPASS;
}
else
{
/* We cannot write directly to the UART, so queue the character.
Block for a maximum of xBlockTime if there is no space in the
queue. */
xReturn = xQueueSend( xCharsForTx, &cOutChar, xBlockTime );
/* Depending on queue sizing and task prioritisation: While we
were blocked waiting to post interrupts were not disabled. It is
possible that the serial ISR has emptied the Tx queue, in which
case we need to start the Tx off again. */
if( ( *plTHREEmpty == ( portLONG ) pdTRUE ) && ( xReturn == pdPASS ) )
{
xQueueReceive( xCharsForTx, &cOutChar, serNO_BLOCK );
*plTHREEmpty = pdFALSE;
UART0_THR = cOutChar;
}
}
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
( void ) xPort;
}
/*-----------------------------------------------------------*/

View File

@@ -1,163 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
This file contains all the serial port components that must be compiled
to ARM mode. The components that can be compiled to either ARM or THUMB
mode are contained in serial.c.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constant to access the VIC. */
#define serCLEAR_VIC_INTERRUPT ( ( unsigned portLONG ) 0 )
/* Constants to determine the ISR source. */
#define serSOURCE_THRE ( ( unsigned portCHAR ) 0x02 )
#define serSOURCE_RX_TIMEOUT ( ( unsigned portCHAR ) 0x0c )
#define serSOURCE_ERROR ( ( unsigned portCHAR ) 0x06 )
#define serSOURCE_RX ( ( unsigned portCHAR ) 0x04 )
#define serINTERRUPT_SOURCE_MASK ( ( unsigned portCHAR ) 0x0f )
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static volatile portLONG lTHREEmpty;
/*-----------------------------------------------------------*/
/*
* The queues are created in serialISR.c as they are used from the ISR.
* Obtain references to the queues and THRE Empty flag.
*/
void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx, portLONG volatile **pplTHREEmptyFlag );
/* UART0 interrupt service routine. This can cause a context switch so MUST
be declared "naked". */
void vUART_ISR( void ) __attribute__ ((naked));
/*-----------------------------------------------------------*/
void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars,
xQueueHandle *pxCharsForTx, portLONG volatile **pplTHREEmptyFlag )
{
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Pass back a reference to the queues so the serial API file can
post/receive characters. */
*pxRxedChars = xRxedChars;
*pxCharsForTx = xCharsForTx;
/* Initialise the THRE empty flag - and pass back a reference. */
lTHREEmpty = ( portLONG ) pdTRUE;
*pplTHREEmptyFlag = &lTHREEmpty;
}
/*-----------------------------------------------------------*/
void vUART_ISR( void )
{
/* This ISR can cause a context switch, so the first statement must be a
call to the portENTER_SWITCHING_ISR() macro. This must be BEFORE any
variable declarations. */
portENTER_SWITCHING_ISR();
/* Now we can declare the local variables. */
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByRx = pdFALSE;
/* What caused the interrupt? */
switch( UART0_IIR & serINTERRUPT_SOURCE_MASK )
{
case serSOURCE_ERROR : /* Not handling this, but clear the interrupt. */
cChar = UART0_LSR;
break;
case serSOURCE_THRE : /* The THRE is empty. If there is another
character in the Tx queue, send it now. */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
UART0_THR = cChar;
}
else
{
/* There are no further characters
queued to send so we can indicate
that the THRE is available. */
lTHREEmpty = pdTRUE;
}
break;
case serSOURCE_RX_TIMEOUT :
case serSOURCE_RX : /* A character was received. Place it in
the queue of received characters. */
cChar = UART0_RBR;
if( xQueueSendFromISR( xRxedChars, &cChar, ( portBASE_TYPE ) pdFALSE ) )
{
xTaskWokenByRx = pdTRUE;
}
break;
default : /* There is nothing to do, leave the ISR. */
break;
}
/* Clear the ISR in the VIC. */
VICVectAddr = serCLEAR_VIC_INTERRUPT;
/* Exit the ISR. If a task was woken by either a character being received
or transmitted then a context switch will occur. */
portEXIT_SWITCHING_ISR( ( xTaskWokenByTx || xTaskWokenByRx ) );
}
/*-----------------------------------------------------------*/

View File

@@ -1,78 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/* Hardware specifics. */
#include <iolpc2129.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 60000000 ) /* =12.0MHz xtal multiplied by 5 using the PLL. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 14200 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,102 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*-----------------------------------------------------------
* Simple parallel port IO routines for the LED's.
*-----------------------------------------------------------*/
/* Scheduler includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
/* Board specific defines. */
#define partstFIRST_IO ( ( unsigned portLONG ) 0x10000 )
#define partstNUM_LEDS ( 8 )
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* The ports are setup within prvInitialiseHardware(), called by main(). */
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned portLONG ulLED = partstFIRST_IO;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 1. Only P16 to P23 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* Set or clear the output. */
if( xValue )
{
IO1SET = ulLED;
}
else
{
IO1CLR = ulLED;
}
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portLONG ulLED = partstFIRST_IO, ulCurrentState;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 1. Only P10 to P13 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* If this bit is already set, clear it, and visa versa. */
ulCurrentState = IO1PIN;
if( ulCurrentState & ulLED )
{
IO1CLR = ulLED;
}
else
{
IO1SET = ulLED;
}
}
}

View File

@@ -1,173 +0,0 @@
;-----------------------------------------------------------------------------
; This file contains the startup code used by the ICCARM C compiler.
;
; The modules in this file are included in the libraries, and may be replaced
; by any user-defined modules that define the PUBLIC symbol _program_start or
; a user defined start symbol.
; To override the cstartup defined in the library, simply add your modified
; version to the workbench project.
;
; All code in the modules (except ?RESET) will be placed in the ICODE segment.
;
; $Revision: 1.56 $
;
;-----------------------------------------------------------------------------
;
; Naming covention of labels in this file:
;
; ?xxx - External labels only accessed from assembler.
; __xxx - External labels accessed from or defined in C.
; xxx - Labels local to one module (note: this file contains
; several modules).
; main - The starting point of the user program.
;
;---------------------------------------------------------------
; Macros and definitions for the whole file
;---------------------------------------------------------------
; Mode, correspords to bits 0-5 in CPSR
MODE_BITS DEFINE 0x1F ; Bit mask for mode bits in CPSR
USR_MODE DEFINE 0x10 ; User mode
FIQ_MODE DEFINE 0x11 ; Fast Interrupt Request mode
IRQ_MODE DEFINE 0x12 ; Interrupt Request mode
SVC_MODE DEFINE 0x13 ; Supervisor mode
ABT_MODE DEFINE 0x17 ; Abort mode
UND_MODE DEFINE 0x1B ; Undefined Instruction mode
SYS_MODE DEFINE 0x1F ; System mode
I_Bit DEFINE 0x80 ; IRQ Disable Bit
F_Bit DEFINE 0x40 ; FIQ Disable Bit
;---------------------------------------------------------------
; ?RESET
; Reset Vector.
; Normally, segment INTVEC is linked at address 0.
; For debugging purposes, INTVEC may be placed at other
; addresses.
; A debugger that honors the entry point will start the
; program in a normal way even if INTVEC is not at address 0.
;---------------------------------------------------------------
MODULE ?RESET
COMMON INTVEC:CODE:NOROOT(2)
PUBLIC __program_start
EXTERN ?cstartup
EXTERN undef_handler, swi_handler, prefetch_handler
EXTERN data_handler, irq_handler, fiq_handler
EXTERN vPortYieldProcessor
CODE32 ; Always ARM mode after reset
__program_start
org 0x00
B InitReset ; 0x00 Reset handler
undefvec:
B undefvec ; 0x04 Undefined Instruction
swivec:
B vPortYieldProcessor ; 0x08 Software Interrupt
pabtvec:
B pabtvec ; 0x0C Prefetch Abort
dabtvec:
B dabtvec ; 0x10 Data Abort
rsvdvec:
B rsvdvec ; 0x14 reserved
irqvec:
LDR PC, [PC, #-0xFF0] ; Jump directly to the address given by the AIC
fiqvec: ; 0x1c FIQ
;---------------------------------------------------------------
; ?CSTARTUP
;---------------------------------------------------------------
RSEG IRQ_STACK:DATA(2)
RSEG SVC_STACK:DATA:NOROOT(2)
RSEG CSTACK:DATA(2)
RSEG ICODE:CODE:NOROOT(2)
EXTERN ?main
; Execution starts here.
; After a reset, the mode is ARM, Supervisor, interrupts disabled.
CODE32
InitReset
; Add initialization needed before setup of stackpointers here
; Initialize the stack pointers.
; The pattern below can be used for any of the exception stacks:
; FIQ, IRQ, SVC, ABT, UND, SYS.
; The USR mode uses the same stack as SYS.
; The stack segments must be defined in the linker command file,
; and be declared above.
mrs r0,cpsr ; Original PSR value
bic r0,r0,#MODE_BITS ; Clear the mode bits
orr r0,r0,#IRQ_MODE ; Set IRQ mode bits
msr cpsr_c,r0 ; Change the mode
ldr sp,=SFE(IRQ_STACK) & 0xFFFFFFF8 ; End of IRQ_STACK
bic r0,r0,#MODE_BITS ; Clear the mode bits
orr r0,r0,#SYS_MODE ; Set System mode bits
msr cpsr_c,r0 ; Change the mode
ldr sp,=SFE(CSTACK) & 0xFFFFFFF8 ; End of CSTACK
bic r0,r0,#MODE_BITS ; Clear the mode bits
orr r0,r0,#SVC_MODE ; Set System mode bits
msr cpsr_c,r0 ; Change the mode
ldr sp,=SFE(SVC_STACK) & 0xFFFFFFF8 ; End of CSTACK
; Must start in supervisor mode.
MSR CPSR_c, #SVC_MODE|I_Bit|F_Bit
; Add more initialization here
; Continue to ?main for more IAR specific system startup
ldr r0,=?main
bx r0
;---------------------------------------------------------------
; ?EXEPTION_VECTOR
; This module is only linked if needed for closing files.
;---------------------------------------------------------------
PUBLIC AT91F_Default_FIQ_handler
PUBLIC AT91F_Default_IRQ_handler
PUBLIC AT91F_Spurious_handler
CODE32 ; Always ARM mode after exeption
AT91F_Default_FIQ_handler
b AT91F_Default_FIQ_handler
AT91F_Default_IRQ_handler
b AT91F_Default_IRQ_handler
AT91F_Spurious_handler
b AT91F_Spurious_handler
ENDMOD
END
ENDMOD
END

View File

@@ -1,284 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "BlockQ.h"
#include "semtest.h"
#include "dynamic.h"
#include "partest.h"
#include "comtest2.h"
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
/* Constants required by the 'Check' task. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainCHECK_TASK_LED ( 7 )
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 4 )
#define mainTX_ENABLE ( ( unsigned portLONG ) 0x0001 )
#define mainRX_ENABLE ( ( unsigned portLONG ) 0x0004 )
/* Constants to setup the PLL. */
#define mainPLL_MUL_4 ( ( unsigned portCHAR ) 0x0003 )
#define mainPLL_DIV_1 ( ( unsigned portCHAR ) 0x0000 )
#define mainPLL_ENABLE ( ( unsigned portCHAR ) 0x0001 )
#define mainPLL_CONNECT ( ( unsigned portCHAR ) 0x0003 )
#define mainPLL_FEED_BYTE1 ( ( unsigned portCHAR ) 0xaa )
#define mainPLL_FEED_BYTE2 ( ( unsigned portCHAR ) 0x55 )
#define mainPLL_LOCK ( ( unsigned portLONG ) 0x0400 )
/* Constants to setup the MAM. */
#define mainMAM_TIM_3 ( ( unsigned portCHAR ) 0x03 )
#define mainMAM_MODE_FULL ( ( unsigned portCHAR ) 0x02 )
/* Constants to setup the peripheral bus. */
#define mainBUS_CLK_FULL ( ( unsigned portCHAR ) 0x01 )
/* And finally, constant to setup the port for the LED's. */
#define mainLED_TO_OUTPUT ( ( unsigned portLONG ) 0xff0000 )
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Configures the processor for use with this demo.
*/
static void prvSetupHardware( void );
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static portLONG prvCheckOtherTasksAreStillRunning( void );
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
void main( void )
{
/* Setup the processor. */
prvSetupHardware();
/* Start all the standard demo application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartDynamicPriorityTasks();
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here.
*/
vTaskStartScheduler();
/* We should never get here as control is now taken by the scheduler. */
return;
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* Setup the PLL to multiply the XTAL input by 4. */
PLLCFG = ( mainPLL_MUL_4 | mainPLL_DIV_1 );
/* Activate the PLL by turning it on then feeding the correct sequence of
bytes. */
PLLCON = mainPLL_ENABLE;
PLLFEED = mainPLL_FEED_BYTE1;
PLLFEED = mainPLL_FEED_BYTE2;
/* Wait for the PLL to lock... */
while( !( PLLSTAT & mainPLL_LOCK ) );
/* ...before connecting it using the feed sequence again. */
PLLCON = mainPLL_CONNECT;
PLLFEED = mainPLL_FEED_BYTE1;
PLLFEED = mainPLL_FEED_BYTE2;
/* Setup and turn on the MAM. Three cycle access is used due to the fast
PLL used. It is possible faster overall performance could be obtained by
tuning the MAM and PLL settings. */
MAMTIM = mainMAM_TIM_3;
MAMCR = mainMAM_MODE_FULL;
/* Setup the peripheral bus to be the same as the PLL output. */
VPBDIV = mainBUS_CLK_FULL;
/* Configure the RS2332 pins. All other pins remain at their default of 0. */
PINSEL0 |= mainTX_ENABLE;
PINSEL0 |= mainRX_ENABLE;
/* LED pins need to be output. */
IO1DIR = mainLED_TO_OUTPUT;
/* Setup the peripheral bus to be the same as the PLL output. */
VPBDIV = mainBUS_CLK_FULL;
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
/* The parameters are not used in this task. */
( void ) pvParameters;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase. */
for( ;; )
{
/* Delay until it is time to execute again. */
vTaskDelay( xDelayPeriod );
/* Check all the standard demo application tasks are executing without
error. */
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
vParTestToggleLED( mainCHECK_TASK_LED );
}
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( void )
{
portLONG lReturn = ( portLONG ) pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
return lReturn;
}
/*-----------------------------------------------------------*/

View File

@@ -1,190 +0,0 @@
//*************************************************************************
// XLINK command file template for EWARM/ICCARM
//
// Usage: xlink -f lnkarm <your_object_file(s)>
// -s <program start label> <C/C++ runtime library>
//
// $Revision: 1.1 $
//*************************************************************************
//*************************************************************************
//
// -------------
// Code segments - may be placed anywhere in memory.
// -------------
//
// INTVEC -- Exception vector table.
// SWITAB -- Software interrupt vector table.
// ICODE -- Startup (cstartup) and exception code.
// DIFUNCT -- Dynamic initialization vectors used by C++.
// CODE -- Compiler generated code.
// CODE_I -- Compiler generated code declared __ramfunc (executes in RAM)
// CODE_ID -- Initializer for CODE_I (ROM).
//
// -------------
// Data segments - may be placed anywhere in memory.
// -------------
//
// CSTACK -- The stack used by C/C++ programs (system and user mode).
// IRQ_STACK -- The stack used by IRQ service routines.
// SVC_STACK -- The stack used in supervisor mode
// (Define other exception stacks as needed for
// FIQ, ABT, UND).
// HEAP -- The heap used by malloc and free in C and new and
// delete in C++.
// INITTAB -- Table containing addresses and sizes of segments that
// need to be initialized at startup (by cstartup).
// CHECKSUM -- The linker places checksum byte(s) in this segment,
// when the -J linker command line option is used.
// DATA_y -- Data objects.
//
// Where _y can be one of:
//
// _AN -- Holds uninitialized located objects, i.e. objects with
// an absolute location given by the @ operator or the
// #pragma location directive. Since these segments
// contain objects which already have a fixed address,
// they should not be mentioned in this linker command
// file.
// _C -- Constants (ROM).
// _I -- Initialized data (RAM).
// _ID -- The original content of _I (copied to _I by cstartup) (ROM).
// _N -- Uninitialized data (RAM).
// _Z -- Zero initialized data (RAM).
//
// Note: Be sure to use end values for the defined address ranges.
// Otherwise, the linker may allocate space outside the
// intended memory range.
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
//************************************************
-carm
//*************************************************************************
// Segment placement - General information
//
// All numbers in the segment placement command lines below are interpreted
// as hexadecimal unless they are immediately preceded by a '.', which
// denotes decimal notation.
//
// When specifying the segment placement using the -P instead of the -Z
// option, the linker is free to split each segment into its segment parts
// and randomly place these parts within the given ranges in order to
// achieve a more efficient memory usage. One disadvantage, however, is
// that it is not possible to find the start or end address (using
// the assembler operators .sfb./.sfe.) of a segment which has been split
// and reformed.
//
// When generating an output file which is to be used for programming
// external ROM/Flash devices, the -M linker option is very useful
// (see xlink.pdf for details).
//*************************************************************************
//*************************************************************************
// Read-only segments mapped to ROM.
//*************************************************************************
-DROMSTART=00000000
-DROMEND=00001ffff
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//************************************************
-Z(CODE)INTVEC=00000000-0000003f
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Original ROM location for __ramfunc code copied
// to and executed from RAM.
//************************************************
-Z(CONST)CODE_ID=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
-DRAMSTART=40000000
-DRAMEND=40003fff
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// CODE_ID segment instead, but to keep symbol and
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
-QCODE_I=CODE_ID
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
-D_CSTACK_SIZE=200
-D_SVC_STACK_SIZE=190
-D_IRQ_STACK_SIZE=190
-D_HEAP_SIZE=4
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE,HEAP+_HEAP_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,913 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>1</fileVersion>
<configuration>
<name>Flash Debug</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>13</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\iolpc2129.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>1</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.10B</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.30A</state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>FlashLoaders</name>
<state>,,,,(default),</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>JLinkSpeed</name>
<state>30</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>1</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Trace\Trace.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
<configuration>
<name>Flash Bin</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>0</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>13</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>0</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\iolpc2129.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>1</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.10B</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.30A</state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
<option>
<name>FlashLoaders</name>
<state>,,,,(default),</state>
</option>
<option>
<name>UseFlashLoader</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>2</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>JLinkSpeed</name>
<state>30</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>1</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state></state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>32</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCScanChainNonARMDevices</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkIRLength</name>
<state>0</state>
</option>
<option>
<name>CCJLinkCommRadio</name>
<state>0</state>
</option>
<option>
<name>CCJLinkTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Trace\Trace.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Orti\Orti.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,288 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constants to setup and access the UART. */
#define serDLAB ( ( unsigned portCHAR ) 0x80 )
#define serENABLE_INTERRUPTS ( ( unsigned portCHAR ) 0x03 )
#define serNO_PARITY ( ( unsigned portCHAR ) 0x00 )
#define ser1_STOP_BIT ( ( unsigned portCHAR ) 0x00 )
#define ser8_BIT_CHARS ( ( unsigned portCHAR ) 0x03 )
#define serFIFO_ON ( ( unsigned portCHAR ) 0x01 )
#define serCLEAR_FIFO ( ( unsigned portCHAR ) 0x06 )
#define serWANTED_CLOCK_SCALING ( ( unsigned portLONG ) 16 )
/* Constants to setup and access the VIC. */
#define serU0VIC_CHANNEL ( ( unsigned portLONG ) 0x0006 )
#define serU0VIC_CHANNEL_BIT ( ( unsigned portLONG ) 0x0040 )
#define serU0VIC_ENABLE ( ( unsigned portLONG ) 0x0020 )
#define serCLEAR_VIC_INTERRUPT ( ( unsigned portLONG ) 0 )
/* Constants to determine the ISR source. */
#define serSOURCE_THRE ( ( unsigned portCHAR ) 0x02 )
#define serSOURCE_RX_TIMEOUT ( ( unsigned portCHAR ) 0x0c )
#define serSOURCE_ERROR ( ( unsigned portCHAR ) 0x06 )
#define serSOURCE_RX ( ( unsigned portCHAR ) 0x04 )
#define serINTERRUPT_SOURCE_MASK ( ( unsigned portCHAR ) 0x0f )
/* Misc. */
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serHANDLE ( ( xComPortHandle ) 1 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static volatile portLONG lTHREEmpty = pdFALSE;
/*-----------------------------------------------------------*/
/* The ISR. Note that this is called by a wrapper written in the file
SerialISR.s79. See the WEB documentation for this port for further
information. */
__arm void vSerialISR( void );
/*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
unsigned portLONG ulDivisor, ulWantedClock;
xComPortHandle xReturn = serHANDLE;
extern void ( vSerialISREntry) ( void );
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Initialise the THRE empty flag. */
lTHREEmpty = pdTRUE;
if(
( xRxedChars != serINVALID_QUEUE ) &&
( xCharsForTx != serINVALID_QUEUE ) &&
( ulWantedBaud != ( unsigned portLONG ) 0 )
)
{
portENTER_CRITICAL();
{
/* Setup the baud rate: Calculate the divisor value. */
ulWantedClock = ulWantedBaud * serWANTED_CLOCK_SCALING;
ulDivisor = configCPU_CLOCK_HZ / ulWantedClock;
/* Set the DLAB bit so we can access the divisor. */
U0LCR |= serDLAB;
/* Setup the divisor. */
U0DLL = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
ulDivisor >>= 8;
U0DLM = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
/* Turn on the FIFO's and clear the buffers. */
U0FCR = ( serFIFO_ON | serCLEAR_FIFO );
/* Setup transmission format. */
U0LCR = serNO_PARITY | ser1_STOP_BIT | ser8_BIT_CHARS;
/* Setup the VIC for the UART. */
VICIntSelect &= ~( serU0VIC_CHANNEL_BIT );
VICIntEnable |= serU0VIC_CHANNEL_BIT;
VICVectAddr1 = ( unsigned portLONG ) vSerialISREntry;
VICVectCntl1 = serU0VIC_CHANNEL | serU0VIC_ENABLE;
/* Enable UART0 interrupts. */
U0IER |= serENABLE_INTERRUPTS;
}
portEXIT_CRITICAL();
xReturn = ( xComPortHandle ) 1;
}
else
{
xReturn = ( xComPortHandle ) 0;
}
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
( void ) usStringLength;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
signed portBASE_TYPE xReturn;
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
portENTER_CRITICAL();
{
/* Is there space to write directly to the UART? */
if( lTHREEmpty == ( portLONG ) pdTRUE )
{
/* We wrote the character directly to the UART, so was
successful. */
lTHREEmpty = pdFALSE;
U0THR = cOutChar;
xReturn = pdPASS;
}
else
{
/* We cannot write directly to the UART, so queue the character.
Block for a maximum of xBlockTime if there is no space in the
queue. It is ok to block within a critical section as each
task has it's own critical section management. */
xReturn = xQueueSend( xCharsForTx, &cOutChar, xBlockTime );
/* Depending on queue sizing and task prioritisation: While we
were blocked waiting to post interrupts were not disabled. It is
possible that the serial ISR has emptied the Tx queue, in which
case we need to start the Tx off again. */
if( lTHREEmpty == ( portLONG ) pdTRUE )
{
xQueueReceive( xCharsForTx, &cOutChar, serNO_BLOCK );
lTHREEmpty = pdFALSE;
U0THR = cOutChar;
}
}
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/
__arm void vSerialISR( void )
{
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByRx = pdFALSE, xTaskWokenByTx = pdFALSE;
/* What caused the interrupt? */
switch( U0IIR & serINTERRUPT_SOURCE_MASK )
{
case serSOURCE_ERROR : /* Not handling this, but clear the interrupt. */
cChar = U0LSR;
break;
case serSOURCE_THRE : /* The THRE is empty. If there is another
character in the Tx queue, send it now. */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
U0THR = cChar;
}
else
{
/* There are no further characters
queued to send so we can indicate
that the THRE is available. */
lTHREEmpty = pdTRUE;
}
break;
case serSOURCE_RX_TIMEOUT :
case serSOURCE_RX : /* A character was received. Place it in
the queue of received characters. */
cChar = U0RBR;
if( xQueueSendFromISR( xRxedChars, &cChar, pdFALSE ) )
{
xTaskWokenByRx = pdTRUE;
}
break;
default : /* There is nothing to do, leave the ISR. */
break;
}
/* Exit the ISR. If a task was woken by either a character being received
or transmitted then a context switch will occur. */
portEND_SWITCHING_ISR( ( xTaskWokenByTx || xTaskWokenByRx ) );
/* Clear the ISR in the VIC. */
VICVectAddr = serCLEAR_VIC_INTERRUPT;
}
/*-----------------------------------------------------------*/

View File

@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>138</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Disassembly>
<PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
<Debug-Log><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Build</Factory></Window></Windows></PreferedWindows></Debug-Log>
<Build><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Debug-Log</Factory></Window></Windows></PreferedWindows></Build>
<Register>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
</Register>
<QWatch><Column0>161</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></QWatch><Memory><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ZoneNumber>0</ZoneNumber><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory><Driver-Trace><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>300</Column0></Driver-Trace><Breakpoints/><Watch><Format><struct_types/><watch_formats/></Format><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>100</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></Watch><QuickWatch><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>100</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></QuickWatch></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-22256-14845</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/Demo Source</ExpandedNode><ExpandedNode>rtosdemo/Scheduler Source</ExpandedNode><ExpandedNode>rtosdemo/System Files</ExpandedNode><ExpandedNode>rtosdemo/USBSample.c</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-32269-5949</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab><Tab><Identity>TabID-30271-4373</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\list.c</Filename><XPos>0</XPos><YPos>159</YPos><SelStart>6486</SelStart><SelEnd>6613</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\include\list.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\tasks.c</Filename><XPos>0</XPos><YPos>172</YPos><SelStart>6942</SelStart><SelEnd>6959</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\include\task.h</Filename><XPos>0</XPos><YPos>50</YPos><SelStart>2282</SelStart><SelEnd>2291</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_LPC2129_IAR\serial\serialISR.s79</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\LPC2000\ISR_Support.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\LPC2000\portmacro.h</Filename><XPos>0</XPos><YPos>52</YPos><SelStart>2522</SelStart><SelEnd>2531</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\queue.c</Filename><XPos>0</XPos><YPos>148</YPos><SelStart>7593</SelStart><SelEnd>7593</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_LPC2129_IAR\main.c</Filename><XPos>0</XPos><YPos>166</YPos><SelStart>7172</SelStart><SelEnd>7172</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\MemMang\heap_1.c</Filename><XPos>0</XPos><YPos>75</YPos><SelStart>2927</SelStart><SelEnd>2938</SelEnd></Tab><ActiveTab>9</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084fb00><key>iaridepm1</key></Toolbar-0084fb00><Toolbar-021f0ee0><key>debuggergui1</key></Toolbar-021f0ee0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>739</Bottom><Right>212</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>133750</sizeVertCX><sizeVertCY>662198</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>333</Bottom><Right>1602</Right><x>-2</x><y>-2</y><xscreen>1604</xscreen><yscreen>335</yscreen><sizeHorzCX>1002500</sizeHorzCX><sizeHorzCY>299374</sizeHorzCY><sizeVertCX>92500</sizeVertCX><sizeVertCY>132260</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

View File

@@ -1,33 +0,0 @@
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[JLinkDriver]
WatchVectorCatch=_ 0
WatchCond=_ 0
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
[Low Level]
Pipeline mode=1
Initialized=0
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[Disassemble mode]
mode=0
[Breakpoints]
Bp0=_ "Code" "{E:\Dev\FreeRTOS\Source\queue.c}.179.3@1" 1 0 0 0 "" 0 ""
Count=1
[Interrupts]
Enabled=1
[MemoryMap]
Enabled=0
TypeVolition=1
UnspecRange=1
ActionState=1
[TraceHelper]
Enabled=0
ShowSource=1

View File

@@ -1,60 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>rtosdemo/Flash Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>229</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build><ColumnWidth0>18</ColumnWidth0><ColumnWidth1>1155</ColumnWidth1><ColumnWidth2>308</ColumnWidth2><ColumnWidth3>77</ColumnWidth3></Build>
<Debug-Log/>
<TerminalIO/>
<CodeCoveragePlugin/>
<Profiling/>
<Watch>
<Format>
<struct_types/>
<watch_formats/>
</Format>
</Watch>
<Disassembly><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly><Memory><ZoneNumber>0</ZoneNumber><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory><Find-in-Files><ColumnWidth0>552</ColumnWidth0><ColumnWidth1>78</ColumnWidth1><ColumnWidth2>946</ColumnWidth2></Find-in-Files><Breakpoints/></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-17425-14382</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>rtosdemo</ExpandedNode><ExpandedNode>rtosdemo/Scheduler Source</ExpandedNode><ExpandedNode>rtosdemo/System Files</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-22109-27077</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-12074-10873</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory><Session/></Tab><Tab><Identity>TabID-18349-15872</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab><Tab><Identity>TabID-30013-18825</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\list.c</Filename><XPos>0</XPos><YPos>159</YPos><SelStart>6486</SelStart><SelEnd>6613</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\include\list.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\tasks.c</Filename><XPos>0</XPos><YPos>172</YPos><SelStart>6942</SelStart><SelEnd>6959</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\include\task.h</Filename><XPos>0</XPos><YPos>50</YPos><SelStart>2282</SelStart><SelEnd>2291</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_LPC2129_IAR\serial\serialISR.s79</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\LPC2000\ISR_Support.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\IAR\LPC2000\portmacro.h</Filename><XPos>0</XPos><YPos>52</YPos><SelStart>2522</SelStart><SelEnd>2531</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\queue.c</Filename><XPos>0</XPos><YPos>148</YPos><SelStart>7593</SelStart><SelEnd>7593</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_LPC2129_IAR\main.c</Filename><XPos>0</XPos><YPos>166</YPos><SelStart>7172</SelStart><SelEnd>7172</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Source\portable\MemMang\heap_1.c</Filename><XPos>0</XPos><YPos>75</YPos><SelStart>2927</SelStart><SelEnd>2938</SelEnd></Tab><ActiveTab>9</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084fb00><key>iaridepm1</key></Toolbar-0084fb00></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>944</Bottom><Right>303</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>190625</sizeVertCX><sizeVertCY>845397</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>128</Bottom><Right>1602</Right><x>-2</x><y>-2</y><xscreen>1604</xscreen><yscreen>130</yscreen><sizeHorzCX>1002500</sizeHorzCX><sizeHorzCY>116175</sizeHorzCY><sizeVertCX>55000</sizeVertCX><sizeVertCY>78641</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@@ -1,78 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <lpc21xx.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 60000000 ) /* =12.0MHz xtal multiplied by 5 using the PLL. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 14250 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,97 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#include "FreeRTOS.h"
#include "portable.h"
#include "partest.h"
#define partstFIRST_IO ( ( unsigned portLONG ) 0x10000 )
#define partstNUM_LEDS ( 8 )
/*-----------------------------------------------------------
* Simple parallel port IO routines.
*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* This is performed from main() as the io bits are shared with other setup
functions. */
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned portLONG ulLED = partstFIRST_IO;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 0. Only P16 to P23 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* Set or clear the output. */
if( xValue )
{
IOSET1 = ulLED;
}
else
{
IOCLR1 = ulLED;
}
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portLONG ulLED = partstFIRST_IO, ulCurrentState;
if( uxLED < partstNUM_LEDS )
{
/* Rotate to the wanted bit of port 0. Only P10 to P13 have an LED
attached. */
ulLED <<= ( unsigned portLONG ) uxLED;
/* If this bit is already set, clear it, and visa versa. */
ulCurrentState = IOPIN1;
if( ulCurrentState & ulLED )
{
IOCLR1 = ulLED;
}
else
{
IOSET1 = ulLED;
}
}
}

View File

@@ -1,379 +0,0 @@
/***********************************************************************/
/* This file is part of the uVision/ARM development tools */
/* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */
/***********************************************************************/
/* */
/* STARTUP.S: Startup file for Philips LPC2000 device series */
/* */
/***********************************************************************/
/*
//*** <<< Use Configuration Wizard in Context Menu >>> ***
*/
// *** Startup Code (executed after Reset) ***
// Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
Mode_SYS EQU 0x1F
I_Bit EQU 0x80 /* when I bit is set, IRQ is disabled */
F_Bit EQU 0x40 /* when F bit is set, FIQ is disabled */
/*
// <h> Stack Configuration (Stack Sizes in Bytes)
// <o0> Undefined Mode <0x0-0xFFFFFFFF>
// <o1> Supervisor Mode <0x0-0xFFFFFFFF>
// <o2> Abort Mode <0x0-0xFFFFFFFF>
// <o3> Fast Interrupt Mode <0x0-0xFFFFFFFF>
// <o4> Interrupt Mode <0x0-0xFFFFFFFF>
// <o5> User/System Mode <0x0-0xFFFFFFFF>
// </h>
*/
UND_Stack_Size EQU 0x00000004
SVC_Stack_Size EQU 0x00000100
ABT_Stack_Size EQU 0x00000004
FIQ_Stack_Size EQU 0x00000004
IRQ_Stack_Size EQU 0x00000300
USR_Stack_Size EQU 0x00000200
AREA STACK, DATA, READWRITE, ALIGN=2
DS (USR_Stack_Size+3)&~3 ; Stack for User/System Mode
DS (IRQ_Stack_Size+3)&~3 ; Stack for Interrupt Mode
DS (FIQ_Stack_Size+3)&~3 ; Stack for Fast Interrupt Mode
DS (ABT_Stack_Size+3)&~3 ; Stack for Abort Mode
DS (SVC_Stack_Size+3)&~3 ; Stack for Supervisor Mode
DS (UND_Stack_Size+3)&~3 ; Stack for Undefined Mode
Top_Stack:
// Phase Locked Loop (PLL) definitions
PLL_BASE EQU 0xE01FC080 /* PLL Base Address */
PLLCON_OFS EQU 0x00 /* PLL Control Offset*/
PLLCFG_OFS EQU 0x04 /* PLL Configuration Offset */
PLLSTAT_OFS EQU 0x08 /* PLL Status Offset */
PLLFEED_OFS EQU 0x0C /* PLL Feed Offset */
PLLCON_PLLE EQU (1<<0) /* PLL Enable */
PLLCON_PLLC EQU (1<<1) /* PLL Connect */
PLLCFG_MSEL EQU (0x1F<<0) /* PLL Multiplier */
PLLCFG_PSEL EQU (0x03<<5) /* PLL Divider */
PLLSTAT_PLOCK EQU (1<<10) /* PLL Lock Status */
/*
// <e> PLL Setup
// <i> Phase Locked Loop
// <o1.0..4> MSEL: PLL Multiplier Selection
// <1-32><#-1>
// <i> M Value
// <o1.5..6> PSEL: PLL Divider Selection
// <0=> 1 <1=> 2 <2=> 4 <3=> 8
// <i> P Value
// </e>
*/
PLL_SETUP EQU 1
PLLCFG_Val EQU 0x00000024
// Memory Accelerator Module (MAM) definitions
MAM_BASE EQU 0xE01FC000 /* MAM Base Address */
MAMCR_OFS EQU 0x00 /* MAM Control Offset*/
MAMTIM_OFS EQU 0x04 /* MAM Timing Offset */
/*
// <e> MAM Setup
// <i> Memory Accelerator Module
// <o1.0..1> MAM Control
// <0=> Disabled
// <1=> Partially Enabled
// <2=> Fully Enabled
// <i> Mode
// <o2.0..2> MAM Timing
// <0=> Reserved <1=> 1 <2=> 2 <3=> 3
// <4=> 4 <5=> 5 <6=> 6 <7=> 7
// <i> Fetch Cycles
// </e>
*/
MAM_SETUP EQU 1
MAMCR_Val EQU 0x00000002
MAMTIM_Val EQU 0x00000003
// External Memory Controller (EMC) definitions
EMC_BASE EQU 0xFFE00000 /* EMC Base Address */
BCFG0_OFS EQU 0x00 /* BCFG0 Offset */
BCFG1_OFS EQU 0x04 /* BCFG1 Offset */
BCFG2_OFS EQU 0x08 /* BCFG2 Offset */
BCFG3_OFS EQU 0x0C /* BCFG3 Offset */
/*
// <e> External Memory Controller (EMC)
*/
EMC_SETUP EQU 0
/*
// <e> Bank Configuration 0 (BCFG0)
// <o1.0..3> IDCY: Idle Cycles <0-15>
// <o1.5..9> WST1: Wait States 1 <0-31>
// <o1.11..15> WST2: Wait States 2 <0-31>
// <o1.10> RBLE: Read Byte Lane Enable
// <o1.26> WP: Write Protect
// <o1.27> BM: Burst ROM
// <o1.28..29> MW: Memory Width <0=> 8-bit <1=> 16-bit
// <2=> 32-bit <3=> Reserved
// </e>
*/
BCFG0_SETUP EQU 0
BCFG0_Val EQU 0x0000FBEF
/*
// <e> Bank Configuration 1 (BCFG1)
// <o1.0..3> IDCY: Idle Cycles <0-15>
// <o1.5..9> WST1: Wait States 1 <0-31>
// <o1.11..15> WST2: Wait States 2 <0-31>
// <o1.10> RBLE: Read Byte Lane Enable
// <o1.26> WP: Write Protect
// <o1.27> BM: Burst ROM
// <o1.28..29> MW: Memory Width <0=> 8-bit <1=> 16-bit
// <2=> 32-bit <3=> Reserved
// </e>
*/
BCFG1_SETUP EQU 0
BCFG1_Val EQU 0x0000FBEF
/*
// <e> Bank Configuration 0 (BCFG2)
// <o1.0..3> IDCY: Idle Cycles <0-15>
// <o1.5..9> WST1: Wait States 1 <0-31>
// <o1.11..15> WST2: Wait States 2 <0-31>
// <o1.10> RBLE: Read Byte Lane Enable
// <o1.26> WP: Write Protect
// <o1.27> BM: Burst ROM
// <o1.28..29> MW: Memory Width <0=> 8-bit <1=> 16-bit
// <2=> 32-bit <3=> Reserved
// </e>
*/
BCFG2_SETUP EQU 0
BCFG2_Val EQU 0x0000FBEF
/*
// <e> Bank Configuration 3 (BCFG3)
// <o1.0..3> IDCY: Idle Cycles <0-15>
// <o1.5..9> WST1: Wait States 1 <0-31>
// <o1.11..15> WST2: Wait States 2 <0-31>
// <o1.10> RBLE: Read Byte Lane Enable
// <o1.26> WP: Write Protect
// <o1.27> BM: Burst ROM
// <o1.28..29> MW: Memory Width <0=> 8-bit <1=> 16-bit
// <2=> 32-bit <3=> Reserved
// </e>
*/
BCFG3_SETUP EQU 0
BCFG3_Val EQU 0x0000FBEF
/*
// </e> End of EMC
*/
// External Memory Pins definitions
PINSEL2 EQU 0xE002C014 /* PINSEL2 Address */
PINSEL2_Val EQU 0x0E6149E4 /* CS0..3, OE, WE, BLS0..3,
D0..31, A2..23, JTAG Pins */
// Starupt Code must be linked first at Address at which it expects to run.
$IF (EXTERNAL_MODE)
CODE_BASE EQU 0x80000000
$ELSE
CODE_BASE EQU 0x00000000
$ENDIF
AREA STARTUPCODE, CODE, AT CODE_BASE // READONLY, ALIGN=4
PUBLIC __startup
EXTERN CODE32 (?C?INIT)
__startup PROC CODE32
// Pre-defined interrupt handlers that may be directly
// overwritten by C interrupt functions
EXTERN CODE32 (Undef_Handler?A)
EXTERN CODE32 (vPortYieldProcessor?A)
EXTERN CODE32 (PAbt_Handler?A)
EXTERN CODE32 (DAbt_Handler?A)
EXTERN CODE32 (IRQ_Handler?A)
EXTERN CODE32 (FIQ_Handler?A)
// Exception Vectors
// Mapped to Address 0.
// Absolute addressing mode must be used.
Vectors: LDR PC,Reset_Addr
LDR PC,Undef_Addr
LDR PC,SWI_Addr
LDR PC,PAbt_Addr
LDR PC,DAbt_Addr
NOP /* Reserved Vector */
; LDR PC,IRQ_Addr
LDR PC,[PC, #-0x0FF0] /* Vector from VicVectAddr */
LDR PC,FIQ_Addr
Reset_Addr: DD Reset_Handler
Undef_Addr: DD Undef_Handler?A
SWI_Addr: DD vPortYieldProcessor?A
PAbt_Addr: DD PAbt_Handler?A
DAbt_Addr: DD DAbt_Handler?A
DD 0 /* Reserved Address */
IRQ_Addr: DD IRQ_Handler?A
FIQ_Addr: DD FIQ_Handler?A
// Reset Handler
Reset_Handler:
$IF (EXTERNAL_MODE)
LDR R0, =PINSEL2
LDR R1, =PINSEL2_Val
STR R1, [R0]
$ENDIF
IF (EMC_SETUP != 0)
LDR R0, =EMC_BASE
IF (BCFG0_SETUP != 0)
LDR R1, =BCFG0_Val
STR R1, [R0, #BCFG0_OFS]
ENDIF
IF (BCFG1_SETUP != 0)
LDR R1, =BCFG1_Val
STR R1, [R0, #BCFG1_OFS]
ENDIF
IF (BCFG2_SETUP != 0)
LDR R1, =BCFG2_Val
STR R1, [R0, #BCFG2_OFS]
ENDIF
IF (BCFG3_SETUP != 0)
LDR R1, =BCFG3_Val
STR R1, [R0, #BCFG3_OFS]
ENDIF
ENDIF
IF (PLL_SETUP != 0)
LDR R0, =PLL_BASE
MOV R1, #0xAA
MOV R2, #0x55
// Configure and Enable PLL
MOV R3, #PLLCFG_Val
STR R3, [R0, #PLLCFG_OFS]
MOV R3, #PLLCON_PLLE
STR R3, [R0, #PLLCON_OFS]
STR R1, [R0, #PLLFEED_OFS]
STR R2, [R0, #PLLFEED_OFS]
// Wait until PLL Locked
PLL_Loop: LDR R3, [R0, #PLLSTAT_OFS]
ANDS R3, R3, #PLLSTAT_PLOCK
BEQ PLL_Loop
// Switch to PLL Clock
MOV R3, #(PLLCON_PLLE | PLLCON_PLLC)
STR R3, [R0, #PLLCON_OFS]
STR R1, [R0, #PLLFEED_OFS]
STR R2, [R0, #PLLFEED_OFS]
ENDIF
IF (MAM_SETUP != 0)
LDR R0, =MAM_BASE
MOV R1, #MAMTIM_Val
STR R1, [R0, #MAMTIM_OFS]
MOV R1, #MAMCR_Val
STR R1, [R0, #MAMCR_OFS]
ENDIF
// Memory Mapping (when Interrupt Vectors are in RAM)
MEMMAP EQU 0xE01FC040 /* Memory Mapping Control */
$IF (RAM_INTVEC)
LDR R0, =MEMMAP
MOV R1, #2
STR R1, [R0]
$ENDIF
// Setup Stack for each mode
LDR R0, =Top_Stack
// Enter Undefined Instruction Mode and set its Stack Pointer
MSR CPSR_c, #Mode_UND|I_Bit|F_Bit
MOV SP, R0
SUB R0, R0, #UND_Stack_Size
// Enter Abort Mode and set its Stack Pointer
MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit
MOV SP, R0
SUB R0, R0, #ABT_Stack_Size
// Enter FIQ Mode and set its Stack Pointer
MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit
MOV SP, R0
SUB R0, R0, #FIQ_Stack_Size
// Enter IRQ Mode and set its Stack Pointer
MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit
MOV SP, R0
SUB R0, R0, #IRQ_Stack_Size
// Enter Supervisor Mode and set its Stack Pointer
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
MOV SP, R0
SUB R0, R0, #SVC_Stack_Size
// Enter S Mode and set its Stack Pointer
MSR CPSR_c, #Mode_SYS
MOV SP, R0
// Start in supervisor mode
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
// Enter the C code
LDR R0,=?C?INIT
TST R0,#1 ; Bit-0 set: INIT is Thumb
LDREQ LR,=exit?A ; ARM Mode
LDRNE LR,=exit?T ; Thumb Mode
BX R0
ENDP
PUBLIC exit?A
exit?A PROC CODE32
B exit?A
ENDP
PUBLIC exit?T
exit?T PROC CODE16
exit: B exit?T
ENDP
END

View File

@@ -1,282 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "partest.h"
#include "flash.h"
#include "integer.h"
#include "comtest2.h"
#include "serial.h"
#ifdef KEIL_THUMB_INTERWORK
/*
THUMB mode allows more tasks to be created without the executable
binary exceeding the limits allowed by the evaluation version of
uVision3.
*/
#include "PollQ.h"
#include "BlockQ.h"
#include "semtest.h"
#include "dynamic.h"
#endif
/*-----------------------------------------------------------*/
/* Constants to setup I/O and processor. */
#define mainTX_ENABLE ( ( unsigned portLONG ) 0x0001 )
#define mainRX_ENABLE ( ( unsigned portLONG ) 0x0004 )
#define mainBUS_CLK_FULL ( ( unsigned portCHAR ) 0x01 )
#define mainLED_TO_OUTPUT ( ( unsigned portLONG ) 0xff0000 )
/* Constants for the ComTest demo application tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 3 )
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
/* Constants used by the "check" task. As described at the head of this file
the check task toggles an LED. The rate at which the LED flashes is used to
indicate whether an error has been detected or not. If the LED toggles every
3 seconds then no errors have been detected. If the rate increases to 500ms
then an error has been detected in at least one of the demo application tasks. */
#define mainCHECK_LED ( 7 )
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
/*-----------------------------------------------------------*/
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file.
*/
static portLONG prvCheckOtherTasksAreStillRunning( void );
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Configure the processor for use with the Keil demo board. This is very
* minimal as most of the setup is managed by the settings in the project
* file.
*/
static void prvSetupHardware( void );
/*-----------------------------------------------------------*/
/*
* Application entry point:
* Starts all the other tasks, then starts the scheduler.
*/
int main( void )
{
/* Setup the hardware for use with the Keil demo board. */
prvSetupHardware();
/* Start the demo/test application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
#ifdef KEIL_THUMB_INTERWORK
/* When using THUMB mode we can start more tasks without the executable
exceeding the size limit imposed by the evaluation version of uVision3. */
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
#endif
/* Start the check task - which is defined in this file. This is the task
that periodically checks to see that all the other tasks are executing
without error. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Now all the tasks have been started - start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* Should never reach here! */
return 0;
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
/* Parameters are not used. */
( void ) pvParameters;
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase.
This task runs at the highest priority. */
for( ;; )
{
/* The period of the delay depends on whether an error has been
detected or not. If an error has been detected then the period
is reduced to increase the LED flash rate. */
vTaskDelay( xDelayPeriod );
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
/* Toggle the LED before going back to wait for the next cycle. */
vParTestToggleLED( mainCHECK_LED );
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* Perform the hardware setup required. This is minimal as most of the
setup is managed by the settings in the project file. */
/* Configure the RS2332 pins. All other pins remain at their default of 0. */
PINSEL0 |= mainTX_ENABLE;
PINSEL0 |= mainRX_ENABLE;
/* LED pins need to be output. */
IODIR1 = mainLED_TO_OUTPUT;
/* Setup the peripheral bus to be the same as the PLL output. */
VPBDIV = mainBUS_CLK_FULL;
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( void )
{
portLONG lReturn = pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdPASS )
{
lReturn = pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdPASS )
{
lReturn = pdFAIL;
}
#ifdef KEIL_THUMB_INTERWORK
/* When using THUMB mode we can start more tasks without the executable
exceeding the size limit imposed by the evaluation version of uVision3. */
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = pdFAIL;
}
#endif
return lReturn;
}
/*-----------------------------------------------------------*/

View File

@@ -1,58 +0,0 @@
### uVision2 Project, (C) Keil Software
### Do not modify !
cExt (*.c)
aExt (*.s*; *.src; *.a*)
oExt (*.obj)
lExt (*.lib)
tExt (*.txt; *.h; *.inc)
pExt (*.plm)
CppX (*.cpp)
DaveTm { 0,0,0,0,0,0,0,0 }
Target (FreeRTOS), 0x0005 // Tools: ''
GRPOPT 1,(ARM_DEMO),1,0,0
OPTFFF 1,1,1,2,0,127,137,0,<.\main.c><main.c> { 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,228,255,255,255,27,0,0,0,27,0,0,0,41,4,0,0,102,2,0,0 }
OPTFFF 1,2,2,0,0,0,0,0,<.\Startup.s><Startup.s>
OPTFFF 1,3,1,0,0,0,0,0,<.\ParTest\ParTest.c><ParTest.c>
OPTFFF 1,4,1,0,0,0,0,0,<.\serial\serial.c><serial.c>
OPTFFF 1,5,1,0,0,0,0,0,<.\serial\serialISR.c><serialISR.c>
OPTFFF 1,6,1,0,0,0,0,0,<..\..\Source\tasks.c><tasks.c>
OPTFFF 1,7,1,0,0,0,0,0,<..\..\Source\queue.c><queue.c>
OPTFFF 1,8,1,0,0,0,0,0,<..\..\Source\list.c><list.c>
OPTFFF 1,9,1,0,0,0,0,0,<..\..\Source\portable\Keil\ARM7\port.c><port.c>
OPTFFF 1,10,1,0,0,0,0,0,<..\..\Source\portable\Keil\ARM7\portISR.c><portISR.c>
OPTFFF 1,11,1,0,0,0,0,0,<..\Common\Minimal\flash.c><flash.c>
OPTFFF 1,12,1,16777216,0,0,0,0,<..\Common\Minimal\comtest.c><comtest.c>
OPTFFF 1,13,1,0,0,0,0,0,<..\Common\Minimal\integer.c><integer.c>
OPTFFF 1,14,1,0,0,0,0,0,<..\..\Source\portable\MemMang\heap_2.c><heap_2.c>
TARGOPT 1, (FreeRTOS)
KACLK=12000000
OPTTT 1,1,1,0
OPTHX 0,65535,0,0,0
OPTLX 120,65,8,<.\>
OPTOX 16
OPTLT 1,1,1,0,1,1,0,1,0,0,0,0
OPTXL 1,1,1,1,1,1,1,0,0
OPTFL 1,0,1
OPTBL 0,(Data Sheet)<DATASHTS\PHILIPS\LPC2119_2129.PDF>
OPTBL 1,(User Manual)<DATASHTS\PHILIPS\UM_LPC21XX_LPC22XX.PDF>
OPTDL (SARM.DLL)(-cLPC2100)(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
OPTDBG 44029,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
OPTKEY 0,(DLGTARM)((134=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
OPTKEY 0,(UL2ARM)(-U174073036 -O7 -S0 -C0 -N00("ARM7TDMI-S Core") -D00(4F1F0F0F) -L00(4) -FO7 -FD40000000 -FC800 -FN1 -FF0LPC_IAP_256 -FS00 -FL03E000)
OPTKEY 0,(DLGDARM)((134=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
OPTKEY 0,(ARMDBGFLAGS)(-T5F)
OPTMM 1,0,(0x40001800)
OPTDF 0x1000080
OPTLE <>
OPTLC <>
OPTLA 0,((Port1 & 0x10000) >> 16)(FF00FF000000000000000000000000000000F0BF010000006400000000E8764817000000506F72743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000020370000)
OPTLA 1,((Port1 & 0x20000) >> 17)(FF0000000000000000000000000000000000F0BF010000006400000000E8764817000000506F72743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000020370000)
OPTLA 2,((Port1 & 0x40000) >> 18)(008000000000000000000000000000000000F0BF010000006400000000E8764817000000506F72743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000020370000)
OPTLA 3,((Port1 & 0x80000) >> 19)(0000FF000000000000000000000000000000F0BF010000006400000000E8764817000000506F72743100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000020370000)
EndOpt

View File

@@ -1,106 +0,0 @@
### uVision2 Project, (C) Keil Software
### Do not modify !
Target (FreeRTOS), 0x0005 // Tools: ''
Group (ARM_DEMO)
File 1,1,<.\main.c><main.c> 0x4162D96A
File 1,2,<.\Startup.s><Startup.s> 0x415AF382
File 1,1,<.\ParTest\ParTest.c><ParTest.c> 0x415AF50E
File 1,1,<.\serial\serial.c><serial.c> 0x4162D488
File 1,1,<.\serial\serialISR.c><serialISR.c> 0x4162D404
File 1,1,<..\..\Source\tasks.c><tasks.c> 0x4162D9E6
File 1,1,<..\..\Source\queue.c><queue.c> 0x411B5F14
File 1,1,<..\..\Source\list.c><list.c> 0x411B5F24
File 1,1,<..\..\Source\portable\Keil\ARM7\port.c><port.c> 0x4162D434
File 1,1,<..\..\Source\portable\Keil\ARM7\portISR.c><portISR.c> 0x415A85E0
File 1,1,<..\Common\Minimal\flash.c><flash.c> 0x411B5F8E
File 1,1,<..\Common\Minimal\comtest.c><comtest.c> 0x413335E6
File 1,1,<..\Common\Minimal\integer.c><integer.c> 0x415FB7EE
File 1,1,<..\..\Source\portable\MemMang\heap_2.c><heap_2.c> 0x0
Options 1,0,0 // Target 'FreeRTOS'
Device (LPC2129)
Vendor (Philips)
Cpu (IRAM(0x40000000-0x40003FFF) IROM(0-0x3FFFF) CLOCK(12000000) CPUTYPE(ARM7TDMI))
FlashUt (LPC210x_ISP.EXE ("#H" ^X $D COM1: 9600 1))
StupF ("STARTUP\Philips\Startup.s" ("Philips LPC2100 Startup Code"))
FlashDR (UL2ARM(-U40296420 -O7 -C0 -FO7 -FD40000000 -FC800 -FN1 -FF0LPC_IAP_256 -FS00 -FL03E000))
Rgf (LPC21xx.H)
Mem ()
C ()
A ()
RL ()
OH ()
DBC_IFX ()
DBC_CMS ()
DBC_AMS ()
DBC_LMS ()
UseEnv=0
EnvBin (D:\DevTools\Keil\arm\ARM\BIN\)
EnvInc ()
EnvLib ()
EnvReg (<28>Philips\)
OrgReg (<28>Philips\)
TgStat=16
OutDir (.\)
OutName (rtosdemo_ARM)
GenApp=1
GenLib=0
GenHex=0
Debug=1
Browse=0
LstDir (.\)
HexSel=0
MG32K=0
TGMORE=0
RunUsr 0 0 <>
RunUsr 1 0 <>
BrunUsr 0 0 <>
BrunUsr 1 0 <>
SVCSID <>
KACPU (ARM7TDMI)
TKAFL { 0,27,183,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KIROM { 1,0,0,0,0,0,0,4,0 }
KIRAM { 0,0,0,0,64,0,64,0,0 }
KXRAM { 0,0,0,0,0,0,0,0,0 }
KAOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KCAFLG { 197,132,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KCAMSC (INTERWORK)
KCADEF (KEIL_ARM7)
KCAUDF ()
KCAINC (..\Common\include\;..\..\Source\include\;..\..\Source\portable\Keil\ARM7\)
KAAFLG { 20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KAAMSC ()
KAASET ()
KAARST ()
KAAINC ()
PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
IncBld=1
AlwaysBuild=0
GenAsm=0
AsmAsm=0
PublicsOnly=0
StopCode=3
CustArgs ()
LibMods ()
KLAFLG { 44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KLAMSC ()
KLADWN (25)
KLACFI ()
KLAASN ()
KLARES ()
KLACCL ()
KLAUCL ()
KLACSC ()
KLAUCS ()
OPTDL (SARM.DLL)(-cLPC2100)(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
OPTDBG 44029,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
FLASH1 { 1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
FLASH2 (BIN\UL2ARM.DLL)
FLASH3 ("LPC210x_ISP.EXE" ("#H" ^X $D COM1: 9600 1))
FLASH4 ()
EndOpt

View File

@@ -1,63 +0,0 @@
### uVision2 Project, (C) Keil Software
### Do not modify !
cExt (*.c)
aExt (*.s*; *.src; *.a*)
oExt (*.obj)
lExt (*.lib)
tExt (*.txt; *.h; *.inc)
pExt (*.plm)
CppX (*.cpp)
DaveTm { 0,0,0,0,0,0,0,0 }
Target (FreeRTOS), 0x0005 // Tools: ''
GRPOPT 1,(THUMB_DEMO),1,0,0
OPTFFF 1,1,1,1,0,121,137,0,<.\main.c><main.c> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,228,255,255,255,0,0,0,0,0,0,0,0,14,4,0,0,75,2,0,0 }
OPTFFF 1,2,2,0,0,0,0,0,<.\Startup.s><Startup.s>
OPTFFF 1,3,1,1040187392,0,0,0,0,<.\ParTest\ParTest.c><ParTest.c>
OPTFFF 1,4,1,0,0,0,0,0,<.\serial\serial.c><serial.c>
OPTFFF 1,5,1,0,0,0,0,0,<.\serial\serialISR.c><serialISR.c>
OPTFFF 1,6,1,0,0,0,0,0,<..\..\Source\tasks.c><tasks.c>
OPTFFF 1,7,1,0,0,0,0,0,<..\..\Source\queue.c><queue.c>
OPTFFF 1,8,1,0,0,0,0,0,<..\..\Source\list.c><list.c>
OPTFFF 1,9,1,553648128,0,0,0,0,<..\..\Source\portable\Keil\ARM7\port.c><port.c>
OPTFFF 1,10,1,0,0,0,0,0,<..\..\Source\portable\Keil\ARM7\portISR.c><portISR.c>
OPTFFF 1,11,1,0,0,0,0,0,<..\Common\Minimal\BlockQ.c><BlockQ.c>
OPTFFF 1,12,1,402653184,0,0,0,0,<..\Common\Minimal\semtest.c><semtest.c>
OPTFFF 1,13,1,0,0,0,0,0,<..\Common\Minimal\PollQ.c><PollQ.c>
OPTFFF 1,14,1,0,0,0,0,0,<..\Common\Minimal\flash.c><flash.c>
OPTFFF 1,15,1,0,0,0,0,0,<..\Common\Minimal\comtest.c><comtest.c>
OPTFFF 1,16,1,0,0,0,0,0,<..\Common\Minimal\integer.c><integer.c>
OPTFFF 1,17,1,0,0,0,0,0,<..\..\Source\portable\MemMang\heap_2.c><heap_2.c>
OPTFFF 1,18,1,0,0,0,0,0,<..\Common\Minimal\dynamic.c><dynamic.c>
ExtF <..\..\SOURCE\PORTABLE\KEIL\ARM7\PORTMACRO.H> 127,127,0,{ 44,0,0,0,2,0,0,0,3,0,0,0,255,255,255,255,255,255,255,255,252,255,255,255,228,255,255,255,27,0,0,0,27,0,0,0,72,4,0,0,33,2,0,0 }
TARGOPT 1, (FreeRTOS)
KACLK=12000000
OPTTT 1,1,1,0
OPTHX 0,65535,0,0,0
OPTLX 120,65,8,<.\>
OPTOX 16
OPTLT 1,1,1,0,1,1,0,1,0,0,0,0
OPTXL 1,1,1,1,1,1,1,0,0
OPTFL 1,0,1
OPTBL 0,(Data Sheet)<DATASHTS\PHILIPS\LPC2119_2129.PDF>
OPTBL 1,(User Manual)<DATASHTS\PHILIPS\UM_LPC21XX_LPC22XX.PDF>
OPTDL (SARM.DLL)(-cLPC2100)(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
OPTDBG 44029,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
OPTKEY 0,(DLGTARM)((134=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
OPTKEY 0,(UL2ARM)(-U170927308 -O7 -S0 -C0 -N00("ARM7TDMI-S Core") -D00(4F1F0F0F) -L00(4) -FO7 -FD40000000 -FC800 -FN1 -FF0LPC_IAP_256 -FS00 -FL03E000)
OPTKEY 0,(DLGDARM)((134=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
OPTKEY 0,(ARMDBGFLAGS)(-T5F)
OPTMM 1,0,(0x40000840)
OPTDF 0x1000086
OPTLE <>
OPTLC <>
OPTLA 0,((Port1 & 0x10000) >> 16)(0000FF000000000000000000000000000000F0BF010000006400000000743BA40B000000506F7274310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000001C030000)
OPTLA 1,((Port1 & 0x20000) >> 17)(0000FF000000000000000000000000000000F0BF010000006400000000743BA40B000000506F7274310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000001C030000)
OPTLA 2,((Port1 & 0x40000) >> 18)(0000FF000000000000000000000000000000F0BF010000006400000000743BA40B000000506F7274310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000001C030000)
OPTLA 3,((Port1 & 0x80000) >> 19)(0000FF000000000000000000000000000000F0BF010000006400000000743BA40B000000506F7274310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000001C030000)
EndOpt

View File

@@ -1,110 +0,0 @@
### uVision2 Project, (C) Keil Software
### Do not modify !
Target (FreeRTOS), 0x0005 // Tools: ''
Group (THUMB_DEMO)
File 1,1,<.\main.c><main.c> 0x4162D96A
File 1,2,<.\Startup.s><Startup.s> 0x415AF382
File 1,1,<.\ParTest\ParTest.c><ParTest.c> 0x415AF50E
File 1,1,<.\serial\serial.c><serial.c> 0x4162D488
File 1,1,<.\serial\serialISR.c><serialISR.c> 0x4162D404
File 1,1,<..\..\Source\tasks.c><tasks.c> 0x4162D9E6
File 1,1,<..\..\Source\queue.c><queue.c> 0x411B5F14
File 1,1,<..\..\Source\list.c><list.c> 0x411B5F24
File 1,1,<..\..\Source\portable\Keil\ARM7\port.c><port.c> 0x4162D434
File 1,1,<..\..\Source\portable\Keil\ARM7\portISR.c><portISR.c> 0x415A85E0
File 1,1,<..\Common\Minimal\BlockQ.c><BlockQ.c> 0x411B5F8C
File 1,1,<..\Common\Minimal\semtest.c><semtest.c> 0x411B5F8C
File 1,1,<..\Common\Minimal\PollQ.c><PollQ.c> 0x411B5F8E
File 1,1,<..\Common\Minimal\flash.c><flash.c> 0x411B5F8E
File 1,1,<..\Common\Minimal\comtest.c><comtest.c> 0x413335E6
File 1,1,<..\Common\Minimal\integer.c><integer.c> 0x415FB7EE
File 1,1,<..\..\Source\portable\MemMang\heap_2.c><heap_2.c> 0x0
File 1,1,<..\Common\Minimal\dynamic.c><dynamic.c> 0x0
Options 1,0,0 // Target 'FreeRTOS'
Device (LPC2129)
Vendor (Philips)
Cpu (IRAM(0x40000000-0x40003FFF) IROM(0-0x3FFFF) CLOCK(12000000) CPUTYPE(ARM7TDMI))
FlashUt (LPC210x_ISP.EXE ("#H" ^X $D COM1: 9600 1))
StupF ("STARTUP\Philips\Startup.s" ("Philips LPC2100 Startup Code"))
FlashDR (UL2ARM(-U40296420 -O7 -C0 -FO7 -FD40000000 -FC800 -FN1 -FF0LPC_IAP_256 -FS00 -FL03E000))
Rgf (LPC21xx.H)
Mem ()
C ()
A ()
RL ()
OH ()
DBC_IFX ()
DBC_CMS ()
DBC_AMS ()
DBC_LMS ()
UseEnv=0
EnvBin (D:\DevTools\Keil\arm\ARM\BIN\)
EnvInc ()
EnvLib ()
EnvReg (<28>Philips\)
OrgReg (<28>Philips\)
TgStat=16
OutDir (.\)
OutName (rtosdemo_THUMB)
GenApp=1
GenLib=0
GenHex=0
Debug=1
Browse=0
LstDir (.\)
HexSel=0
MG32K=0
TGMORE=0
RunUsr 0 0 <>
RunUsr 1 0 <>
BrunUsr 0 0 <>
BrunUsr 1 0 <>
SVCSID <>
KACPU (ARM7TDMI)
TKAFL { 0,27,183,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KIROM { 1,0,0,0,0,0,0,4,0 }
KIRAM { 0,0,0,0,64,0,64,0,0 }
KXRAM { 0,0,0,0,0,0,0,0,0 }
KAOCM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KCAFLG { 197,156,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KCAMSC (INTERWORK)
KCADEF (KEIL_ARM7 KEIL_THUMB_INTERWORK)
KCAUDF ()
KCAINC (..\Common\include\;..\..\Source\include\;..\..\Source\portable\Keil\ARM7\)
KAAFLG { 20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KAAMSC ()
KAASET ()
KAARST ()
KAAINC ()
PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
IncBld=1
AlwaysBuild=0
GenAsm=0
AsmAsm=0
PublicsOnly=0
StopCode=3
CustArgs ()
LibMods ()
KLAFLG { 44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
KLAMSC ()
KLADWN (25)
KLACFI ()
KLAASN ()
KLARES ()
KLACCL ()
KLAUCL ()
KLACSC ()
KLAUCS ()
OPTDL (SARM.DLL)(-cLPC2100)(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
OPTDBG 44029,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
FLASH1 { 1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
FLASH2 (BIN\UL2ARM.DLL)
FLASH3 ("LPC210x_ISP.EXE" ("#H" ^X $D COM1: 9600 1))
FLASH4 ()
EndOpt

View File

@@ -1,247 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
This file contains all the serial port components that can be compiled to
either ARM or THUMB mode. Components that must be compiled to ARM mode are
contained in serialISR.c.
*/
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constants to setup and access the UART. */
#define serDLAB ( ( unsigned portCHAR ) 0x80 )
#define serENABLE_INTERRUPTS ( ( unsigned portCHAR ) 0x03 )
#define serNO_PARITY ( ( unsigned portCHAR ) 0x00 )
#define ser1_STOP_BIT ( ( unsigned portCHAR ) 0x00 )
#define ser8_BIT_CHARS ( ( unsigned portCHAR ) 0x03 )
#define serFIFO_ON ( ( unsigned portCHAR ) 0x01 )
#define serCLEAR_FIFO ( ( unsigned portCHAR ) 0x06 )
#define serWANTED_CLOCK_SCALING ( ( unsigned portLONG ) 16 )
/* Constants to setup and access the VIC. */
#define serU0VIC_CHANNEL ( ( unsigned portLONG ) 0x0006 )
#define serU0VIC_CHANNEL_BIT ( ( unsigned portLONG ) 0x0040 )
#define serU0VIC_ENABLE ( ( unsigned portLONG ) 0x0020 )
/* Misc. */
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serHANDLE ( ( xComPortHandle ) 1 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/* Communication flag between the interrupt service routine and serial API. */
static volatile portLONG *plTHREEmpty;
/*
* The queues are created in serialISR.c as they are used from the ISR.
* Obtain references to the queues and THRE Empty flag.
*/
extern void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx, portLONG volatile **pplTHREEmptyFlag );
/*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
unsigned portLONG ulDivisor, ulWantedClock;
xComPortHandle xReturn = serHANDLE;
/* The queues are used in the serial ISR routine, so are created from
serialISR.c (which is always compiled to ARM mode). */
vSerialISRCreateQueues( uxQueueLength, &xRxedChars, &xCharsForTx, &plTHREEmpty );
if(
( xRxedChars != serINVALID_QUEUE ) &&
( xCharsForTx != serINVALID_QUEUE ) &&
( ulWantedBaud != ( unsigned portLONG ) 0 )
)
{
portENTER_CRITICAL();
{
/* The reference to the ISR function is required to load into the
interrupt controller. The prototype is slightly different
depending on whether in ARM or THUMB mode. */
#ifdef KEIL_THUMB_INTERWORK
extern void ( vUART_ISR )( void ) __arm __task;
#else
extern void ( vUART_ISR )( void ) __task;
#endif
/* Setup the baud rate: Calculate the divisor value. */
ulWantedClock = ulWantedBaud * serWANTED_CLOCK_SCALING;
ulDivisor = configCPU_CLOCK_HZ / ulWantedClock;
/* Set the DLAB bit so we can access the divisor. */
U0LCR |= serDLAB;
/* Setup the divisor. */
U0DLL = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
ulDivisor >>= 8;
U0DLM = ( unsigned portCHAR ) ( ulDivisor & ( unsigned portLONG ) 0xff );
/* Turn on the FIFO's and clear the buffers. */
U0FCR = ( serFIFO_ON | serCLEAR_FIFO );
/* Setup transmission format. */
U0LCR = serNO_PARITY | ser1_STOP_BIT | ser8_BIT_CHARS;
/* Setup the VIC for the UART. */
VICIntSelect &= ~( serU0VIC_CHANNEL_BIT );
VICIntEnable |= serU0VIC_CHANNEL_BIT;
VICVectAddr1 = ( unsigned portLONG ) vUART_ISR;
VICVectCntl1 = serU0VIC_CHANNEL | serU0VIC_ENABLE;
/* Enable UART0 interrupts. */
U0IER |= serENABLE_INTERRUPTS;
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
( void ) usStringLength;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
signed portBASE_TYPE xReturn;
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
portENTER_CRITICAL();
{
/* Is there space to write directly to the UART? */
if( *plTHREEmpty == ( portLONG ) pdTRUE )
{
/* We wrote the character directly to the UART, so was
successful. */
*plTHREEmpty = pdFALSE;
U0THR = cOutChar;
xReturn = pdPASS;
}
else
{
/* We cannot write directly to the UART, so queue the character.
Block for a maximum of xBlockTime if there is no space in the
queue. It is ok to block within a critical section as each
task has it's own critical section management. */
xReturn = xQueueSend( xCharsForTx, &cOutChar, xBlockTime );
/* Depending on queue sizing and task prioritisation: While we
were blocked waiting to post interrupts were not disabled. It is
possible that the serial ISR has emptied the Tx queue, in which
case we need to start the Tx off again. */
if( *plTHREEmpty == ( portLONG ) pdTRUE )
{
xQueueReceive( xCharsForTx, &cOutChar, serNO_BLOCK );
*plTHREEmpty = pdFALSE;
U0THR = cOutChar;
}
}
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/

View File

@@ -1,160 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
This file contains all the serial port components that must be compiled
to ARM mode. The components that can be compiled to either ARM or THUMB
mode are contained in serial.c.
*/
/* This file must always be compiled to ARM mode as it contains ISR
definitions. */
#pragma ARM
/* Standard includes. */
#include <stdlib.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "task.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Constant to access the VIC. */
#define serCLEAR_VIC_INTERRUPT ( ( unsigned portLONG ) 0 )
/* Constants to determine the ISR source. */
#define serSOURCE_THRE ( ( unsigned portCHAR ) 0x02 )
#define serSOURCE_RX_TIMEOUT ( ( unsigned portCHAR ) 0x0c )
#define serSOURCE_ERROR ( ( unsigned portCHAR ) 0x06 )
#define serSOURCE_RX ( ( unsigned portCHAR ) 0x04 )
#define serINTERRUPT_SOURCE_MASK ( ( unsigned portCHAR ) 0x0f )
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static volatile portLONG lTHREEmpty;
/*-----------------------------------------------------------*/
/* UART0 interrupt service routine. This can cause a context switch so MUST
be declared "naked". */
void vUART_ISR( void );
/*-----------------------------------------------------------*/
void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars,
xQueueHandle *pxCharsForTx, portLONG volatile **pplTHREEmptyFlag )
{
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Pass back a reference to the queues so the serial API file can
post/receive characters. */
*pxRxedChars = xRxedChars;
*pxCharsForTx = xCharsForTx;
/* Initialise the THRE empty flag - and pass back a reference. */
lTHREEmpty = pdTRUE;
*pplTHREEmptyFlag = &lTHREEmpty;
}
/*-----------------------------------------------------------*/
void vUART_ISR( void ) __task
{
portENTER_SWITCHING_ISR()
/* Now we can declare the local variables. */
static signed portCHAR cChar;
static portBASE_TYPE xTaskWokenByRx, xTaskWokenByTx;
xTaskWokenByTx = pdFALSE;
xTaskWokenByRx = pdFALSE;
/* What caused the interrupt? */
switch( U0IIR & serINTERRUPT_SOURCE_MASK )
{
case serSOURCE_ERROR : /* Not handling this, but clear the interrupt. */
cChar = U0LSR;
break;
case serSOURCE_THRE : /* The THRE is empty. If there is another
character in the Tx queue, send it now. */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
U0THR = cChar;
}
else
{
/* There are no further characters
queued to send so we can indicate
that the THRE is available. */
lTHREEmpty = pdTRUE;
}
break;
case serSOURCE_RX_TIMEOUT :
case serSOURCE_RX : /* A character was received. Place it in
the queue of received characters. */
cChar = U0RBR;
if( xQueueSendFromISR( xRxedChars, &cChar, pdFALSE ) )
{
xTaskWokenByRx = pdTRUE;
}
break;
default : /* There is nothing to do, leave the ISR. */
break;
}
/* Clear the ISR in the VIC. */
VICVectAddr = serCLEAR_VIC_INTERRUPT;
/* Exit the ISR. If a task was woken by either a character being received
or transmitted then a context switch will occur. */
portEXIT_SWITCHING_ISR( ( xTaskWokenByTx || xTaskWokenByRx ) );
}
/*-----------------------------------------------------------*/

View File

@@ -1,88 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <LPC2138.h>
#define vPortYieldProcessor swi_handler
/* For compatability with the LPC2106 header. */
#define T0_IR T0IR
#define T0_PR T0PR
#define T0_MR0 T0MR0
#define T0_MCR T0MCR
#define T0_TCR T0TCR
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
/* In this case configCPU_CLOCK_HZ is actually set to the pclk frequency, not
the CPU frequency. */
#define configCPU_CLOCK_HZ ( 58982400UL ) /* =14.7456MHz xtal multiplied by 4 using the PLL. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 6 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 18 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 15 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,55 +0,0 @@
<!DOCTYPE CrossStudio_Project_File>
<solution version="1" Name="RTOSDemo" >
<project Name="RTOSDemo" >
<configuration arm_target_loader_parameter="14745600" Target="LPC2138" arm_simulator_memory_simulation_parameter="LPC21;0x80000;0x10000" property_groups_file_path="$(StudioDir)/targets/Philips_LPC210X/propertyGroups.xml" oscillator_frequency="14.7456MHz" linker_memory_map_file="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC2138_MemoryMap.xml" gcc_entry_point="reset_handler" arm_architecture="v4T" linker_additional_files="$(StudioDir)/lib/liblpc2000$(LibExt)$(LIB)" project_directory="" link_include_startup_code="No" project_type="Executable" Name="Common" arm_target_debug_interface_type="ARM7TDI" arm_core_type="ARM7TDMI-S" arm_simulator_memory_simulation_filename="$(StudioDir)/targets/Philips_LPC210X/LPC2000SimulatorMemory.dll" />
<configuration linker_section_placement_file="$(StudioDir)/targets/sram_placement.xml" target_reset_script="SRAMReset()" Name="RAM" Placement="RAM" />
<configuration arm_target_flash_loader_file_path="$(StudioDir)/targets/Philips_LPC210X/Release/Loader.elf" linker_section_placement_file="$(StudioDir)/targets/flash_placement.xml" target_reset_script="FLASHReset()" arm_target_flash_loader_type="Comms Channel Loader" Name="Flash" Placement="Flash" />
<folder Name="Source Files" >
<configuration filter="c;cpp;cxx;cc;h;s;asm;inc" Name="Common" />
<folder Name="RTOS Source" >
<file file_name="../../Source/tasks.c" Name="tasks.c" >
<configuration build_exclude_from_build="No" Name="THUMB Flash Debug" />
</file>
<file file_name="../../Source/list.c" Name="list.c" />
<file file_name="../../Source/queue.c" Name="queue.c" />
<file file_name="../../Source/portable/MemMang/heap_1.c" Name="heap_1.c" />
<file file_name="../../Source/portable/GCC/ARM7_LPC2000/portISR.c" Name="portISR.c" >
<configuration arm_instruction_set="ARM" Name="THUMB" />
</file>
<file file_name="../../Source/portable/GCC/ARM7_LPC2000/port.c" Name="port.c" />
</folder>
<folder Name="Demo Source" >
<file file_name="main.c" Name="main.c" />
<file file_name="../Common/Minimal/PollQ.c" Name="PollQ.c" />
<file file_name="../Common/Minimal/BlockQ.c" Name="BlockQ.c" />
<file file_name="../Common/Minimal/death.c" Name="death.c" />
<file file_name="../Common/Minimal/dynamic.c" Name="dynamic.c" />
<file file_name="../Common/Minimal/integer.c" Name="integer.c" />
<file file_name="../Common/Minimal/semtest.c" Name="semtest.c" />
<file file_name="mainISR.c" Name="mainISR.c" >
<configuration arm_instruction_set="ARM" Name="THUMB" />
</file>
<file file_name="../Common/Minimal/blocktim.c" Name="blocktim.c" />
</folder>
</folder>
<folder Name="System Files" >
<file file_name="$(StudioDir)/source/crt0.s" Name="crt0.s" />
<file file_name="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC210X_Startup.s" Name="Philips_LPC210X_Startup.s" />
<file file_name="$(StudioDir)/targets/Philips_LPC210X/Philips_LPC210X_Target.js" Name="Philips_LPC210X_Target.js" >
<configuration Name="Common" file_type="Reset Script" />
</file>
</folder>
<file file_name="threads.js" Name="threads.js" />
<configuration build_quietly="No" Name="THUMB Flash Debug" />
</project>
<configuration inherited_configurations="ARM;Flash;Debug" Name="ARM Flash Debug" />
<configuration arm_library_instruction_set="ARM" c_preprocessor_definitions="__ARM" arm_instruction_set="ARM" hidden="Yes" Name="ARM" />
<configuration c_preprocessor_definitions="__FLASH_BUILD" hidden="Yes" Name="Flash" />
<configuration c_preprocessor_definitions="DEBUG" link_include_startup_code="No" gcc_optimization_level="None" build_debug_information="Yes" hidden="Yes" Name="Debug" />
<configuration inherited_configurations="ARM;Flash;Release" Name="ARM Flash Release" />
<configuration c_preprocessor_definitions="NDEBUG;STARTUP_FROM_RESET" link_include_startup_code="No" gcc_optimization_level="Level 1" build_debug_information="No" hidden="Yes" Name="Release" />
<configuration inherited_configurations="THUMB;Flash;Debug" Name="THUMB Flash Debug" />
<configuration arm_library_instruction_set="THUMB" c_preprocessor_definitions="__THUMB;THUMB_INTERWORK" arm_instruction_set="THUMB" hidden="Yes" Name="THUMB" />
<configuration inherited_configurations="THUMB;Flash;Release" Name="THUMB Flash Release" />
<configuration c_preprocessor_definitions="GCC_ARM7;SUPERVISOR_START;VECTORED_IRQ_INTERRUPTS" c_user_include_directories=".;..\\..\\Source\\include;..\\..\\Source\\GCC\\ARM7_LPC2000;..\\Common\\Include" c_additional_options="-fomit-frame-pointer" Name="Common" c_system_include_directories="$(StudioDir)/include;$(StudioDir)/include/targets" />
</solution>

View File

@@ -1,74 +0,0 @@
<!DOCTYPE CrossStudio_for_ARM_Session_File>
<session>
<Autos>
<Watches active="0" />
</Autos>
<Bookmarks/>
<Breakpoints>
<BreakpointListItem actiontype="0" chainFrom="" line="144" length="0" triggertype="0" useHWbreakpoint="false" group="Breakpoints" breakdatatype="0" value="0" name="unnamed" counter="0" state="4" mask="0" comparison="0" expression="" filename="C:\E\Dev\_FreeRTOS\Demo\ARM7_LPC2138_Rowley\main.c" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="D_Abort" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="FIQ" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="IRQ" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="P_Abort" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="Reset" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="SWI" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="ARM Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="Undef" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="BusFault" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="ExceptionEntryReturnFault" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="HardFault" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="MemManage" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="3" mask="0" comparison="0" expression="Reset" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_CheckingError" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_Coprocessor" filename="" />
<BreakpointListItem actiontype="0" chainFrom="" line="-1" length="0" triggertype="0" useHWbreakpoint="false" group="Cortex-M3 Exceptions" breakdatatype="5" value="0" name="unnamed" counter="0" state="2" mask="0" comparison="0" expression="UsageFault_StateError" filename="" />
</Breakpoints>
<ExecutionCountWindow/>
<Memory1>
<MemoryWindow autoEvaluate="0" addressText="0x102248" numColumns="8" sizeText="128" dataSize="1" radix="16" addressSpace="" />
</Memory1>
<Memory2>
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
</Memory2>
<Memory3>
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
</Memory3>
<Memory4>
<MemoryWindow autoEvaluate="0" addressText="" numColumns="8" sizeText="" dataSize="1" radix="16" addressSpace="" />
</Memory4>
<Project>
<ProjectSessionItem path="RTOSDemo" name="unnamed" />
<ProjectSessionItem path="RTOSDemo;RTOSDemo" name="unnamed" />
</Project>
<Register1>
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="CPU - Current Mode" visibleGroups="CPU - Current Mode" decimalDisplays="" binaryDisplays="" />
</Register1>
<Register2>
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="" visibleGroups="" decimalDisplays="" binaryDisplays="" />
</Register2>
<Register3>
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="" visibleGroups="" decimalDisplays="" binaryDisplays="" />
</Register3>
<Register4>
<RegisterWindow unsignedDisplays="" asciiDisplays="" octalDisplays="" openGroups="" visibleGroups="" decimalDisplays="" binaryDisplays="" />
</Register4>
<SourceNavigatorWindow/>
<TraceWindow>
<Trace wrap="Yes" type="1" enabled="Yes" />
</TraceWindow>
<Watch1>
<Watches active="1" >
<Watchpoint evalMode="1" linenumber="0" evalType="1" radix="-1" name="pxCurrentTCB" expression="pxCurrentTCB" filename="" />
</Watches>
</Watch1>
<Watch2>
<Watches active="0" />
</Watch2>
<Watch3>
<Watches active="0" />
</Watch3>
<Watch4>
<Watches active="0" />
</Watch4>
<Files/>
<ARMCrossStudioWindow activeProject="RTOSDemo" autoConnectTarget="/USB CrossConnect for ARM" debugSearchFileMap="" fileDialogInitialDirectory="C:\E\Dev\FreeRTOS\Demo\ARM7_LPC2138_Rowley" fileDialogDefaultFilter="*.js" autoConnectCapabilities="1407" debugSearchPath="" buildConfiguration="THUMB Flash Debug" />
</session>

View File

@@ -1,330 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
* This file contains a demo created to execute on the Rowley Associates
* LPC2138 CrossFire development board.
*
* main() creates all the demo application tasks, then starts the scheduler.
* The WEB documentation provides more details of the standard demo application
* tasks.
*
* Main.c also creates a task called "Check". This only executes every few
* seconds but has a high priority so is guaranteed to get processor time.
* Its function is to check that all the other tasks are still operational.
* Each standard demo task maintains a unique count that is incremented each
* time the task successfully completes its function. Should any error occur
* within such a task the count is permanently halted. The check task inspects
* the count of each task to ensure it has changed since the last time the
* check task executed. If all the count variables have changed all the tasks
* are still executing error free, and the check task writes "PASS" to the
* CrossStudio terminal IO window. Should any task contain an error at any time
* the error is latched and "FAIL" written to the terminal IO window.
*
* Finally, main() sets up an interrupt service routine and task to handle
* pushes of the button that is built into the CrossFire board. When the button
* is pushed the ISR wakes the button task - which generates a table of task
* status information which is also displayed on the terminal IO window.
*
* A print task is defined to ensure exclusive and consistent access to the
* terminal IO. This is the only task that is allowed to access the terminal.
* The check and button task therefore do not access the terminal directly but
* instead pass a pointer to the message they wish to display to the print task.
*/
/* Standard includes. */
#include <__cross_studio_io.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "Task.h"
#include "queue.h"
#include "semphr.h"
/* Demo app includes. */
#include "BlockQ.h"
#include "death.h"
#include "dynamic.h"
#include "integer.h"
#include "PollQ.h"
#include "blocktim.h"
/* Hardware configuration definitions. */
#define mainBUS_CLK_FULL ( ( unsigned portCHAR ) 0x01 )
#define mainLED_BIT 0x80000000
#define mainP0_14__EINT_1 ( 2 << 28 )
#define mainEINT_1_EDGE_SENSITIVE 2
#define mainEINT_1_FALLING_EDGE_SENSITIVE 0
#define mainEINT_1_CHANNEL 15
#define mainEINT_1_VIC_CHANNEL_BIT ( 1 << mainEINT_1_CHANNEL )
#define mainEINT_1_ENABLE_BIT ( 1 << 5 )
/* Demo application definitions. */
#define mainQUEUE_SIZE ( 3 )
#define mainLED_DELAY ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainCHECK_DELAY ( ( portTickType ) 5000 / portTICK_RATE_MS )
#define mainLIST_BUFFER_SIZE 2048
/* Task priorities. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainPRINT_TASK_PRIORITY ( tskIDLE_PRIORITY + 0 )
/*-----------------------------------------------------------*/
/* The semaphore used to wake the button task from within the external interrupt
handler. */
xSemaphoreHandle xButtonSemaphore;
/* The queue that is used to send message to vPrintTask for display in the
terminal output window. */
xQueueHandle xPrintQueue;
/*-----------------------------------------------------------*/
/*
* Simply flashes the on board LED every mainLED_DELAY milliseconds.
*/
static void vLEDTask( void *pvParameters );
/*
* Checks the status of all the demo tasks then prints a message to the
* CrossStudio terminal IO windows. The message will be either PASS or FAIL
* depending on the status of the demo applications tasks. A FAIL status will
* be latched.
*
* Messages are not written directly to the terminal, but passed to vPrintTask
* via a queue.
*/
static void vCheckTask( void *pvParameters );
/*
* Controls all terminal output. If a task wants to send a message to the
* terminal IO it posts a pointer to the text to vPrintTask via a queue. This
* ensures serial access to the terminal IO.
*/
static void vPrintTask( void *pvParameter );
/*
* Simply waits for an interrupt to be generated from the built in button, then
* generates a table of tasks states that is then written by vPrintTask to the
* terminal output window within CrossStudio.
*/
static void vButtonHandlerTask( void *pvParameters );
/*-----------------------------------------------------------*/
int main( void )
{
/* Setup the peripheral bus to be the same as the PLL output. */
VPBDIV = mainBUS_CLK_FULL;
/* Create the queue used to pass message to vPrintTask. */
xPrintQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( portCHAR * ) );
/* Create the semaphore used to wake vButtonHandlerTask(). */
vSemaphoreCreateBinary( xButtonSemaphore );
xSemaphoreTake( xButtonSemaphore, 0 );
/* Start the standard demo tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vCreateBlockTimeTasks();
/* Start the tasks defined within this file. */
xTaskCreate( vLEDTask, "LED", configMINIMAL_STACK_SIZE, NULL, mainLED_TASK_PRIORITY, NULL );
xTaskCreate( vCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
xTaskCreate( vPrintTask, "Print", configMINIMAL_STACK_SIZE, NULL, mainPRINT_TASK_PRIORITY, NULL );
xTaskCreate( vButtonHandlerTask, "Button", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the scheduler. */
vTaskStartScheduler();
/* The scheduler should now running, so we will only ever reach here if we
ran out of heap space. */
return 0;
}
/*-----------------------------------------------------------*/
static void vLEDTask( void *pvParameters )
{
/* Configure IO. */
IO0DIR |= mainLED_BIT;
IO0SET = mainLED_BIT;
for( ;; )
{
/* Not very exiting - just delay... */
vTaskDelay( mainLED_DELAY );
/* ...set the IO ... */
IO0CLR = mainLED_BIT;
/* ...delay again... */
vTaskDelay( mainLED_DELAY );
/* ...then clear the IO. */
IO0SET = mainLED_BIT;
}
}
/*-----------------------------------------------------------*/
static void vCheckTask( void *pvParameters )
{
portBASE_TYPE xErrorOccurred = pdFALSE;
portTickType xLastExecutionTime;
const portCHAR * const pcPassMessage = "PASS\n";
const portCHAR * const pcFailMessage = "FAIL\n";
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()
works correctly. */
xLastExecutionTime = xTaskGetTickCount();
for( ;; )
{
/* Perform this check every mainCHECK_DELAY milliseconds. */
vTaskDelayUntil( &xLastExecutionTime, mainCHECK_DELAY );
/* Has an error been found in any task? */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
xErrorOccurred = pdTRUE;
}
/* Send either a pass or fail message. If an error is found it is
never cleared again. */
if( xErrorOccurred == pdTRUE )
{
xQueueSend( xPrintQueue, &pcFailMessage, portMAX_DELAY );
}
else
{
xQueueSend( xPrintQueue, &pcPassMessage, portMAX_DELAY );
}
}
}
/*-----------------------------------------------------------*/
static void vPrintTask( void *pvParameters )
{
portCHAR *pcMessage;
for( ;; )
{
/* Wait for a message to arrive. */
while( xQueueReceive( xPrintQueue, &pcMessage, portMAX_DELAY ) != pdPASS );
/* Write the message to the terminal IO. */
debug_printf( "%s", pcMessage );
}
}
/*-----------------------------------------------------------*/
static void vButtonHandlerTask( void *pvParameters )
{
static portCHAR cListBuffer[ mainLIST_BUFFER_SIZE ];
const portCHAR *pcList = &( cListBuffer[ 0 ] );
const portCHAR * const pcHeader = "\nTask State Priority Stack #\n************************************************";
extern void (vButtonISR) ( void );
/* Configure the interrupt. */
portENTER_CRITICAL();
{
/* Configure P0.14 to generate interrupts. */
PINSEL0 |= mainP0_14__EINT_1;
EXTMODE = mainEINT_1_EDGE_SENSITIVE;
EXTPOLAR = mainEINT_1_FALLING_EDGE_SENSITIVE;
/* Setup the VIC for EINT 1. */
VICIntSelect &= ~mainEINT_1_VIC_CHANNEL_BIT;
VICIntEnable |= mainEINT_1_VIC_CHANNEL_BIT;
VICVectAddr1 = ( portLONG ) vButtonISR;
VICVectCntl1 = mainEINT_1_ENABLE_BIT | mainEINT_1_CHANNEL;
}
portEXIT_CRITICAL();
for( ;; )
{
/* Wait for an interrupt. */
while( xSemaphoreTake( xButtonSemaphore, portMAX_DELAY ) != pdPASS );
/* Send the column headers to the print task for display. */
xQueueSend( xPrintQueue, &pcHeader, portMAX_DELAY );
/* Create the list of task states. */
vTaskList( cListBuffer );
/* Send the task status information to the print task for display. */
xQueueSend( xPrintQueue, &pcList, portMAX_DELAY );
}
}
/*-----------------------------------------------------------*/

View File

@@ -1,54 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#include "FreeRTOS.h"
#include "semphr.h"
#define isrCLEAR_EINT_1 2
/*
* Interrupt routine that simply wakes vButtonHandlerTask on each interrupt
* generated by a push of the built in button.
*/
void vButtonISR( void ) __attribute__ ((naked));
extern xSemaphoreHandle xButtonSemaphore;
void vButtonISR( void )
{
portENTER_SWITCHING_ISR();
xSemaphoreGiveFromISR( xButtonSemaphore, pdFALSE );
EXTINT = isrCLEAR_EINT_1;
VICVectAddr = 0;
portEXIT_SWITCHING_ISR( pdTRUE );
}

View File

@@ -1,118 +0,0 @@
function decode_stack(sp)
{
var i;
var a = new Array();
var current_task;
current_task = Debug.evaluate("pxCurrentTCB");
if( current_task == 0 )
return;
sp += 4; /* skip stored ulCriticalNesting */
a[16] = Debug.evaluate("*(unsigned long*)" + sp);
for (i = 0; i <= 15; i++)
{
sp += 4;
a[i] = Debug.evaluate("*(unsigned long*)" + sp);
}
return a;
}
function add_task(task, state)
{
var tcb, task_name;
var current_task;
current_task = Debug.evaluate("pxCurrentTCB");
if( current_task == 0 )
return;
tcb = Debug.evaluate("*(tskTCB *)" + task);
task_name = Debug.evaluate("(char*)&(*(tskTCB *)" + task + ").pcTaskName[0]");
Threads.add("#" + tcb.uxTCBNumber + " \"" + task_name + "\"", tcb.uxPriority, state, decode_stack(tcb.pxTopOfStack));
}
function add_list(list, state, current_task)
{
var i, index, item, end;
var current_task;
current_task = Debug.evaluate("pxCurrentTCB");
if( current_task == 0 )
return;
if (list.uxNumberOfItems)
{
index = list.pxIndex;
end = list.xListEnd;
for (i = 0; i < list.uxNumberOfItems + 1; i++)
{
item = Debug.evaluate("*(xListItem *)" + index);
if (index != end)
{
task = item.pvOwner;
if (task) add_task(task, (task == current_task) ? "executing" : state);
}
index = item.pxNext;
}
}
}
function update()
{
var i, current_task, list, lists, max_priority;
Threads.clear();
current_task = Debug.evaluate("pxCurrentTCB");
if( current_task == 0 )
return;
Threads.newqueue("Ready");
lists = Debug.evaluate("pxReadyTasksLists");
if (lists)
{
max_priority = Debug.evaluate("uxTopUsedPriority");
max_priority = Debug.evaluate("*(long *)" + max_priority);
for (i = 0; i <= max_priority; i++)
{
list = Debug.evaluate("((xList*)" + lists + ")[" + (max_priority - i) + "]");
add_list(list, "ready", current_task);
}
}
Threads.newqueue("Blocked");
list = Debug.evaluate("pxDelayedTaskList");
if (list)
{
list = Debug.evaluate("**(xList **)" + list);
add_list(list, "blocked");
}
list = Debug.evaluate("pxOverflowDelayedTaskList");
if (list)
{
list = Debug.evaluate("**(xList **)" + list);
add_list(list, "blocked");
}
Threads.newqueue("Suspended");
list = Debug.evaluate("xSuspendedTaskList");
if (list)
{
list = Debug.evaluate("*(xList *)" + list);
add_list(list, "suspended");
}
}

View File

@@ -1,75 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 48000000 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 20480 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,365 +0,0 @@
/******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
* File Name : uart.c
* Author : MCD Application Team
* Date First Issued : 06/08/2003
* Description : This file provides all the UART software functions
********************************************************************************
* History:
* 30/11/2004 : V2.0
* 14/07/2004 : V1.3
* 01/01/2004 : V1.2
*******************************************************************************
THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/
#include "uart.h"
/*******************************************************************************
* Function Name : UART_Init
* Description : This function initializes the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Output : None
* Return : None
*******************************************************************************/
void UART_Init(UART_TypeDef *UARTx)
{
UARTx->IER = 0x00;
UARTx->CR = 0x00;
(void)UARTx->RxBUFR;
UARTx->RxRSTR = 0xFFFF;
UARTx->TxRSTR = 0xFFFF;
}
/*******************************************************************************
* Function Name : UART_BaudRateConfig
* Description : This function configures the baud rate of the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : The baudrate value
* Output : None
* Return : None
*******************************************************************************/
void UART_BaudRateConfig(UART_TypeDef *UARTx, u32 BaudRate)
{
UARTx->BR = (u16)(RCCU_FrequencyValue(RCCU_FCLK)/(16*BaudRate));
}
/*******************************************************************************
* Function Name : UART_Config
* Description : This function configures the baudrate, the mode, the data
* parity and the number of stop bits of the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : The baudrate value
* Input 3 : The parity type
* Input 4 : The number of stop bits
* Input 5 : The UART mode
* Output : None
* Return : None
*******************************************************************************/
void UART_Config(UART_TypeDef *UARTx, u32 BaudRate, UARTParity_TypeDef Parity,
UARTStopBits_TypeDef StopBits, UARTMode_TypeDef Mode)
{
UART_ModeConfig(UARTx, Mode);
UART_BaudRateConfig(UARTx, BaudRate);
UART_ParityConfig(UARTx, Parity);
UART_StopBitsConfig(UARTx, StopBits);
}
/*******************************************************************************
* Function Name : UART_ItConfig
* Description : This function enables or disables the interrupts of the
* selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : The new interrupt flag
* Input 3 : ENABLE or DISABLE
* Output : None
* Return : None
*******************************************************************************/
void UART_ItConfig(UART_TypeDef *UARTx, u16 UART_Flag, FunctionalState NewState)
{
if (NewState==ENABLE) UARTx->IER|=UART_Flag; else UARTx->IER&=~UART_Flag;
}
/*******************************************************************************
* Function Name : UART_FifoConfig
* Description : This function enables or disables the Rx and Tx FIFOs of
* the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : ENABLE or DISABLE
* Output : None
* Return : None
*******************************************************************************/
void UART_FifoConfig(UART_TypeDef *UARTx, FunctionalState NewState)
{
if (NewState==ENABLE) UARTx->CR|=0x0400; else UARTx->CR&=~0x0400;
}
/*******************************************************************************
* Function Name : UART_FifoReset
* Description : This function resets the Rx and the Tx FIFOs of the
* selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : UART_RxFIFO or UART_TxFIFO
* Output : None
* Return : None
*******************************************************************************/
void UART_FifoReset(UART_TypeDef *UARTx, UARTFIFO_TypeDef FIFO)
{
if (FIFO==UART_RxFIFO) UARTx->RxRSTR=0xFFFF; else UARTx->TxRSTR=0xFFFF;
}
/*******************************************************************************
* Function Name : UART_LoopBackConfig
* Description : This function enables or disables the loop back mode of
* the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : ENABLE or DISABLE
* Output : None
* Return : None
*******************************************************************************/
void UART_LoopBackConfig(UART_TypeDef *UARTx, FunctionalState NewState)
{
if (NewState==ENABLE) UARTx->CR|=0x0040; else UARTx->CR&=~0x0040;
}
/*******************************************************************************
* Function Name : UART_RxConfig
* Description : This function enables or disables the UART data reception.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : ENABLE or DISABLE
* Output : None
* Return : None
*******************************************************************************/
void UART_RxConfig(UART_TypeDef *UARTx, FunctionalState NewState)
{
if (NewState==ENABLE) UARTx->CR|=0x0100; else UARTx->CR&=~0x0100;
}
/*******************************************************************************
* Function Name : UART_OnOffConfig
* Description : This function sets On/Off the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : ENABLE or DISABLE
* Output : None
* Return : None
*******************************************************************************/
void UART_OnOffConfig(UART_TypeDef *UARTx, FunctionalState NewState)
{
if (NewState==ENABLE) UARTx->CR|=0x0080; else UARTx->CR&=~0x0080;
}
/*******************************************************************************
* Function Name : UART_ByteSend
* Description : This function sends a data byte to the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the data byte to send
* Output : None
* Return : None
*******************************************************************************/
void UART_ByteSend(UART_TypeDef *UARTx, u8 *Data)
{
if (UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
else // if FIFO DISABLED
while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
UARTx->TxBUFR = *Data;
}
/*******************************************************************************
* Function Name : UART_9BitByteSend
* Description : This function sends a 9 bits data byte to the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the data to send
* Output : None
* Return : None
*******************************************************************************/
void UART_9BitByteSend(UART_TypeDef *UARTx, u16 *Data)
{
if(UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
else // if FIFO DISABLED
while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
UARTx->TxBUFR = *Data;
}
/*******************************************************************************
* Function Name : UART_DataSend
* Description : This function sends several data bytes to the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the data to send
* Input 3 : The data length in bytes
* Output : None
* Return : None
*******************************************************************************/
void UART_DataSend(UART_TypeDef *UARTx, u8 *Data, u8 DataLength)
{
while(DataLength--)
{
UART_ByteSend(UARTx,Data);
Data++;
}
}
/*******************************************************************************
* Function Name : UART_9BitDataSend
* Description : This function sends several 9 bits data bytes to the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the data to send
* Input 3 : The data length
* Output : None
* Return : None
*******************************************************************************/
void UART_9BitDataSend(UART_TypeDef *UARTx, u16 *Data, u8 DataLength)
{
while(DataLength--)
{
UART_9BitByteSend(UARTx,Data);
Data++;
}
}
/*******************************************************************************
* Function Name : UART_StringSend
* Description : This function sends a string to the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the string to send
* Output : None
* Return : None
*******************************************************************************/
void UART_StringSend(UART_TypeDef *UARTx, u8 *String)
{
u8 *Data=String;
while(*Data != '\0')
UART_ByteSend(UARTx, Data++);
*Data='\0';
UART_ByteSend(UARTx, Data);
}
/*******************************************************************************
* Function Name : UART_ByteReceive
* Description : This function gets a data byte from the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the buffer where the data will be stored
* Input 3 : The time-out period
* Output : The received data
* Return : The UARTx.SR register contents
*******************************************************************************/
u16 UART_ByteReceive(UART_TypeDef *UARTx, u8 *Data, u8 TimeOut)
{
u16 wStatus;
UARTx->TOR=TimeOut;// reload the Timeout counter
while (!((wStatus=UARTx->SR) & (UART_TimeOutIdle|UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
*Data = (u8)UARTx->RxBUFR; // then read the Receive Buffer Register
return wStatus;
}
/*******************************************************************************
* Function Name : UART_9BitByteReceive
* Description : This function gets a 9 bits data byte from the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the buffer where the data will be stored
* Input 3 : The time-out period value
* Output : The received data
* Return : The UARTx.SR register contents
*******************************************************************************/
u16 UART_9BitByteReceive(UART_TypeDef *UARTx, u16 *Data, u8 TimeOut)
{
u16 wStatus;
UARTx->TOR=TimeOut;// reload the Timeout counter
while (!((wStatus=UARTx->SR) & (UART_TimeOutIdle|UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
*Data = (u16)UARTx->RxBUFR; // then read the RxBUFR
return wStatus;
}
/*******************************************************************************
* Function Name : UART_DataReceive
* Description : This function gets 8 bits data bytes from the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the buffer where the data will be stored
* Input 3 : The data length
* Input 4 : The time-out period value
* Output : The received data
* Return : The UARTx.SR register contents
*******************************************************************************/
u16 UART_DataReceive(UART_TypeDef *UARTx, u8 *Data, u8 DataLength, u8 TimeOut)
{
u16 wStatus;
while(DataLength--)
wStatus=UART_ByteReceive(UARTx,Data++,TimeOut);
return wStatus;
}
/*******************************************************************************
* Function Name : UART_9BitDataReceive
* Description : This function gets 9 bits data bytes from the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the buffer where the data will be stored
* Input 3 : The data length
* Input 4 : The time-out value
* Output : The received data
* Return : The UARTx.SR register contents
*******************************************************************************/
u16 UART_9BitDataReceive(UART_TypeDef *UARTx, u16 *Data, u8 DataLength, u8 TimeOut)
{
u16 wStatus;
while(DataLength--)
wStatus=UART_9BitByteReceive(UARTx,Data++,TimeOut);
return wStatus;
}
/*******************************************************************************
* Function Name : UART_StringReceive
* Description : This function gets 8 bits data bytes from the selected UART.
* Input 1 : UARTx (x can be 0,1, 2 or 3) the desired UART
* Input 2 : A pointer to the buffer where the string will be stored
* Output : The received string
* Return : The UARTx.SR register contents
*******************************************************************************/
u16 UART_StringReceive(UART_TypeDef *UARTx, u8 *Data)
{
u8 *pSTRING=Data;
u16 wStatus;
do
{
while (!((wStatus=UARTx->SR) & (UART_RxHalfFull|UART_RxBufFull)));// while the UART_RxFIFO is empty and no Timeoutidle
*(pSTRING++) = (u8)UARTx->RxBUFR; // then read the RxBUFR
} while((*(pSTRING - 1)!=0x0D)&(*(pSTRING - 1)!='\0'));
*(pSTRING - 1)='\0';
return wStatus;
}
#ifdef USE_SERIAL_PORT
/*******************************************************************************
* Function Name : sendchar
* Description : This function sends a character to the selected UART.
* Input 1 : A pointer to the character to send.
* Output : None
* Return : None
*******************************************************************************/
void sendchar( char *ch )
{
#ifdef USE_UART0
#define UARTx UART0
#endif /* Use_UART0 */
#ifdef USE_UART1
#define UARTx UART1
#endif /* Use_UART1 */
#ifdef USE_UART2
#define UARTx UART2
#endif /* Use_UART2 */
#ifdef USE_UART3
#define UARTx UART3
#endif /* Use_UART3 */
UART_ByteSend(UARTx,(u8 *)ch);
}
#endif /* USE_SERIAL_PORT */
/******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/

View File

@@ -1,107 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Library includes. */
#include "GPIO.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
/*-----------------------------------------------------------
* Simple parallel port IO routines for the LED's - which are
* connected to the second nibble of GPIO port 1.
*-----------------------------------------------------------*/
#define partstLED_3 0x0080
#define partstLED_2 0x0040
#define partstLED_1 0x0020
#define partstLED_0 0x0010
#define partstON_BOARD 0x0100 /* The LED built onto the KickStart board. */
#define partstALL_LEDs ( partstLED_0 | partstLED_1 | partstLED_2 | partstLED_3 | partstON_BOARD )
#define partstFIRST_LED_BIT 4
/* This demo application uses files that are common to all port demo
applications. These files assume 6 LED's are available, whereas I have
only 5 (including the LED built onto the development board). To prevent
two tasks trying to use the same LED a bit of remapping is performed.
The ComTest tasks will try and use LED's 6 and 7. LED 6 is ignored and
has no effect, LED 7 is mapped to LED3. The LED usage is described in
the port documentation available from the FreeRTOS.org WEB site. */
#define partstCOM_TEST_LED 7
#define partstRX_CHAR_LED 3
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
/* Configure the bits used to flash LED's on port 1 as output. */
GPIO_Config(GPIO1, partstALL_LEDs, GPIO_OUT_OD);
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
if( uxLED == partstCOM_TEST_LED )
{
/* Remap as described above. */
uxLED = partstRX_CHAR_LED;
}
/* Adjust the LED value to map to the port pins actually being used,
then write the required value to the port. */
uxLED += partstFIRST_LED_BIT;
GPIO_BitWrite( GPIO1, uxLED, !xValue );
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
if( uxLED == partstCOM_TEST_LED )
{
/* Remap as described above. */
uxLED = partstRX_CHAR_LED;
}
/* Adjust the LED value to map to the port pins actually being used,
then write the opposite value to the current state to the port pin. */
uxLED += partstFIRST_LED_BIT;
GPIO_BitWrite(GPIO1, uxLED, ~GPIO_BitRead( GPIO1, uxLED ) );
}

View File

@@ -1,866 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>2</fileVersion>
<configuration>
<name>Debug</name>
<outputs>
<file>$PROJ_DIR$\..\Common\Minimal\comtest.c</file>
<file>$PROJ_DIR$\Debug\Obj\tasks.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\serial.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\71x_lib.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\wdg.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\semtest.r79</file>
<file>$TOOLKIT_DIR$\inc\string.h</file>
<file>$TOOLKIT_DIR$\inc\ysizet.h</file>
<file>$PROJ_DIR$\..\Common\include\comtest.h</file>
<file>$PROJ_DIR$\Debug\Obj\BlockQ.pbi</file>
<file>$PROJ_DIR$\..\Common\include\dynamic.h</file>
<file>$PROJ_DIR$\Library\include\71x_map.h</file>
<file>$PROJ_DIR$\Debug\Obj\list.r79</file>
<file>$PROJ_DIR$\Library\include\eic.h</file>
<file>$TOOLKIT_DIR$\inc\xencoding_limits.h</file>
<file>$PROJ_DIR$\Debug\Obj\list.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\ParTest.r79</file>
<file>$PROJ_DIR$\Debug\Obj\BlockQ.r79</file>
<file>$TOOLKIT_DIR$\inc\yvals.h</file>
<file>$PROJ_DIR$\Debug\Obj\main.r79</file>
<file>$PROJ_DIR$\..\Common\include\partest.h</file>
<file>$PROJ_DIR$\Library\include\rccu.h</file>
<file>$PROJ_DIR$\Debug\Obj\portasm.r79</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\ISR_Support.h</file>
<file>$PROJ_DIR$\..\Common\include\PollQ.h</file>
<file>$PROJ_DIR$\Debug\Obj\cstartup.r79</file>
<file>$TOOLKIT_DIR$\inc\DLib_Threads.h</file>
<file>$PROJ_DIR$\FreeRTOSConfig.h</file>
<file>$PROJ_DIR$\Debug\Obj\dynamic.pbi</file>
<file>$PROJ_DIR$\..\..\Source\include\FreeRTOS.h</file>
<file>$PROJ_DIR$\Debug\Obj\heap_2.r79</file>
<file>$PROJ_DIR$\Debug\Obj\queue.r79</file>
<file>$PROJ_DIR$\..\..\Source\include\queue.h</file>
<file>$TOOLKIT_DIR$\inc\stdlib.h</file>
<file>$PROJ_DIR$\Library\include\wdg.h</file>
<file>$PROJ_DIR$\Debug\Obj\serialISR.r79</file>
<file>$TOOLKIT_DIR$\lib\dl4tptinl8n.h</file>
<file>$PROJ_DIR$\Debug\Obj\heap_2.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\integer.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\rccu.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\uart.r79</file>
<file>$PROJ_DIR$\Debug\Obj\port.pbi</file>
<file>$PROJ_DIR$\..\..\Source\include\croutine.h</file>
<file>$PROJ_DIR$\Debug\Obj\queue.pbi</file>
<file>$TOOLKIT_DIR$\inc\DLib_Defaults.h</file>
<file>$PROJ_DIR$\Debug\Obj\port.r79</file>
<file>$TOOLKIT_DIR$\inc\stddef.h</file>
<file>$PROJ_DIR$\..\Common\include\comtest2.h</file>
<file>$PROJ_DIR$\Library\include\71x_conf.h</file>
<file>$TOOLKIT_DIR$\inc\stdio.h</file>
<file>$PROJ_DIR$\Debug\Obj\serial.r79</file>
<file>$PROJ_DIR$\..\Common\include\BlockQ.h</file>
<file>$PROJ_DIR$\..\Common\include\integer.h</file>
<file>$PROJ_DIR$\Debug\Obj\comtest.r79</file>
<file>$PROJ_DIR$\Debug\Obj\71x_lib.r79</file>
<file>$PROJ_DIR$\Debug\Obj\main.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\dynamic.r79</file>
<file>$PROJ_DIR$\Library\include\gpio.h</file>
<file>$TOOLKIT_DIR$\inc\DLib_Product.h</file>
<file>$PROJ_DIR$\Debug\Obj\tasks.r79</file>
<file>$PROJ_DIR$\..\..\Source\include\semphr.h</file>
<file>$TOOLKIT_DIR$\inc\intrinsic.h</file>
<file>$PROJ_DIR$\Library\include\uart.h</file>
<file>$PROJ_DIR$\Debug\Exe\RTOSDemo.sim</file>
<file>$PROJ_DIR$\Debug\Obj\flash.r79</file>
<file>$PROJ_DIR$\Debug\Obj\integer.r79</file>
<file>$PROJ_DIR$\Debug\Obj\PollQ.r79</file>
<file>$PROJ_DIR$\Debug\Exe\RTOSDemo.d79</file>
<file>$TOOLKIT_DIR$\lib\dl4tptinl8n.r79</file>
<file>$PROJ_DIR$\..\..\Source\include\task.h</file>
<file>$PROJ_DIR$\Debug\Obj\uart.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\gpio.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\flash.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\vect.r79</file>
<file>$PROJ_DIR$\..\Common\include\serial.h</file>
<file>$PROJ_DIR$\..\Common\include\flash.h</file>
<file>$PROJ_DIR$\Debug\Obj\rccu.r79</file>
<file>$PROJ_DIR$\Debug\Obj\ParTest.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\PollQ.pbi</file>
<file>$PROJ_DIR$\Debug\Obj\semtest.pbi</file>
<file>$PROJ_DIR$\..\..\Source\include\projdefs.h</file>
<file>$PROJ_DIR$\..\..\Source\include\list.h</file>
<file>$PROJ_DIR$\Debug\Obj\comtest.pbi</file>
<file>$PROJ_DIR$\Library\include\71x_type.h</file>
<file>$PROJ_DIR$\Debug\Obj\gpio.r79</file>
<file>$PROJ_DIR$\..\..\Source\include\portable.h</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\portmacro.h</file>
<file>$PROJ_DIR$\Debug\Obj\wdg.r79</file>
<file>$PROJ_DIR$\..\Common\include\semtest.h</file>
<file>$PROJ_DIR$\cstartup.s79</file>
<file>$PROJ_DIR$\lnkarm.xcl</file>
<file>$PROJ_DIR$\vect.s79</file>
<file>$PROJ_DIR$\..\Common\Minimal\BlockQ.c</file>
<file>$PROJ_DIR$\serial\serialISR.s79</file>
<file>$PROJ_DIR$\Library\rccu.c</file>
<file>$PROJ_DIR$\Library\uart.c</file>
<file>$PROJ_DIR$\Library\wdg.c</file>
<file>$PROJ_DIR$\..\..\Source\list.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\port.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\portasm.s79</file>
<file>$PROJ_DIR$\..\..\Source\queue.c</file>
<file>$PROJ_DIR$\..\..\Source\tasks.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\flash.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\dynamic.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\integer.c</file>
<file>$PROJ_DIR$\main.c</file>
<file>$PROJ_DIR$\ParTest\ParTest.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\PollQ.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\semtest.c</file>
<file>$PROJ_DIR$\serial\serial.c</file>
<file>$PROJ_DIR$\Library\gpio.c</file>
<file>$PROJ_DIR$\Library\71x_lib.c</file>
</outputs>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\comtest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 53</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 82</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 74 8 20</file>
</tool>
</inputs>
</file>
<file>
<name>[ROOT_NODE]</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 67 63</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Debug\Exe\RTOSDemo.d79</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 63</file>
</tool>
</outputs>
<inputs>
<tool>
<name>XLINK</name>
<file> 90 54 17 16 66 53 25 56 64 84 30 65 12 19 45 22 31 76 5 50 35 59 40 73 87 68</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\cstartup.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 25</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\vect.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 73</file>
</tool>
</outputs>
<inputs>
<tool>
<name>AARM</name>
<file> 27</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\BlockQ.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 17</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 9</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 32 51</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\serial\serialISR.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 35</file>
</tool>
</outputs>
<inputs>
<tool>
<name>AARM</name>
<file> 23</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Library\rccu.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 76</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 39</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 21 11 48 83</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Library\uart.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 40</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 70</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 62 11 48 83 21</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Library\wdg.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 87</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 4</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 34 11 48 83 21</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\list.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 12</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 15</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 81</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\port.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 45</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 41</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 34 11 48 83 21 13 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\portasm.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 22</file>
</tool>
</outputs>
<inputs>
<tool>
<name>AARM</name>
<file> 23</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 31</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 43</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 6 29 46 80 27 85 86 61 69 81 42</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 59</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 1</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 49 18 44 36 58 14 26 7 33 6 29 46 80 27 85 86 61 69 81</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\flash.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 64</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 72</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 20 75</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 30</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 37</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\dynamic.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 56</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 28</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 60 32 10</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\integer.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 65</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 38</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 52</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\main.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 19</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 55</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 21 11 48 83 34 29 46 18 44 36 58 14 26 7 80 27 85 86 61 69 81 75 52 24 51 88 10 20 47</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\ParTest\ParTest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 16</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 77</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 57 11 48 83 29 46 18 44 36 58 14 26 7 80 27 85 86 61 20</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\PollQ.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 66</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 78</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 32 24</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\semtest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 5</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 79</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 33 18 44 36 58 14 26 7 29 46 80 27 85 86 61 69 81 60 32 88</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\serial\serial.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 50</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 2</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 62 11 48 83 21 57 13 29 46 18 44 36 58 14 26 7 80 27 85 86 61 32 74</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Library\gpio.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 84</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 71</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 57 11 48 83</file>
</tool>
</inputs>
</file>
<file>
<name>$PROJ_DIR$\Library\71x_lib.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 54</file>
</tool>
<tool>
<name>BICOMP</name>
<file> 3</file>
</tool>
</outputs>
<inputs>
<tool>
<name>ICCARM</name>
<file> 11 48 83</file>
</tool>
</inputs>
</file>
</configuration>
<configuration>
<name>Release</name>
<outputs>
<file>$PROJ_DIR$\Release\Obj\dynamic.r79</file>
<file>$PROJ_DIR$\Release\Obj\list.r79</file>
<file>$PROJ_DIR$\Release\Obj\wdg.r79</file>
<file>$PROJ_DIR$\Release\Obj\ParTest.r79</file>
<file>$PROJ_DIR$\Release\Obj\71x_lib.r79</file>
<file>$PROJ_DIR$\..\Common\Minimal\comtest.c</file>
<file>$PROJ_DIR$\Release\Obj\cstartup.r79</file>
<file>$PROJ_DIR$\Release\Obj\uart.r79</file>
<file>$PROJ_DIR$\Release\Obj\vect.r79</file>
<file>$PROJ_DIR$\Release\Obj\portasm.r79</file>
<file>$PROJ_DIR$\Release\Obj\heap_2.r79</file>
<file>$PROJ_DIR$\Release\Obj\tasks.r79</file>
<file>$PROJ_DIR$\Release\Obj\BlockQ.r79</file>
<file>$PROJ_DIR$\Release\Obj\integer.r79</file>
<file>$PROJ_DIR$\Release\Obj\rccu.r79</file>
<file>$PROJ_DIR$\Release\Obj\PollQ.r79</file>
<file>$PROJ_DIR$\Release\Obj\flash.r79</file>
<file>$PROJ_DIR$\Release\Obj\main.r79</file>
<file>$PROJ_DIR$\Release\Obj\gpio.r79</file>
<file>$PROJ_DIR$\Release\Obj\semtest.r79</file>
<file>$PROJ_DIR$\Release\Exe\RTOSDemo.d79</file>
<file>$PROJ_DIR$\Release\Obj\serialISR.r79</file>
<file>$PROJ_DIR$\Release\Obj\port.r79</file>
<file>$PROJ_DIR$\Release\Obj\comtest.r79</file>
<file>$PROJ_DIR$\Release\Obj\serial.r79</file>
<file>$PROJ_DIR$\Release\Obj\queue.r79</file>
<file>$PROJ_DIR$\cstartup.s79</file>
<file>$PROJ_DIR$\vect.s79</file>
<file>$PROJ_DIR$\..\Common\Minimal\BlockQ.c</file>
<file>$PROJ_DIR$\serial\serialISR.s79</file>
<file>$PROJ_DIR$\Library\rccu.c</file>
<file>$PROJ_DIR$\Library\uart.c</file>
<file>$PROJ_DIR$\Library\wdg.c</file>
<file>$PROJ_DIR$\..\..\Source\list.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\port.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\portasm.s79</file>
<file>$PROJ_DIR$\..\..\Source\queue.c</file>
<file>$PROJ_DIR$\..\..\Source\tasks.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\flash.c</file>
<file>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\dynamic.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\integer.c</file>
<file>$PROJ_DIR$\main.c</file>
<file>$PROJ_DIR$\ParTest\ParTest.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\PollQ.c</file>
<file>$PROJ_DIR$\..\Common\Minimal\semtest.c</file>
<file>$PROJ_DIR$\serial\serial.c</file>
<file>$PROJ_DIR$\Library\gpio.c</file>
<file>$PROJ_DIR$\Library\71x_lib.c</file>
</outputs>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\comtest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 23</file>
</tool>
</outputs>
</file>
<file>
<name>[ROOT_NODE]</name>
<outputs>
<tool>
<name>XLINK</name>
<file> 20</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\cstartup.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 6</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\vect.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 8</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\BlockQ.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 12</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\serial\serialISR.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 21</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Library\rccu.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 14</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Library\uart.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 7</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Library\wdg.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 2</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\list.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 1</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\port.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 22</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\IAR\STR71x\portasm.s79</name>
<outputs>
<tool>
<name>AARM</name>
<file> 9</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\queue.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 25</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\tasks.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 11</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\flash.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 16</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\..\Source\portable\MemMang\heap_2.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 10</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\dynamic.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 0</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\integer.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 13</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\main.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 17</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\ParTest\ParTest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 3</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\PollQ.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 15</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\..\Common\Minimal\semtest.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 19</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\serial\serial.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 24</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Library\gpio.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 18</file>
</tool>
</outputs>
</file>
<file>
<name>$PROJ_DIR$\Library\71x_lib.c</name>
<outputs>
<tool>
<name>ICCARM</name>
<file> 4</file>
</tool>
</outputs>
</file>
<forcedrebuild>
<name>[MULTI_TOOL]</name>
<tool>XLINK</tool>
</forcedrebuild>
</configuration>
</project>

View File

@@ -1,913 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<project>
<fileVersion>1</fileVersion>
<configuration>
<name>Debug</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>1</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>12</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>1</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\iostr712.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>1</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>0</state>
</option>
<option>
<name>OCDownloadFlashDownload</name>
<state>1</state>
</option>
<option>
<name>OCDownloadFlashOverride</name>
<state>1</state>
</option>
<option>
<name>OCDownloadFlashLoader</name>
<state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTR71xF.d79</state>
</option>
<option>
<name>OCDownloadFlashLoaderSlave</name>
<state></state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.20A</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.20A</state>
</option>
<option>
<name>OCDownloadFlashLoaderArgs</name>
<state></state>
</option>
<option>
<name>OCDownloadFlashBaseAddrOverride</name>
<state>0</state>
</option>
<option>
<name>OCDownloadFlashBaseAddr</name>
<state></state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>JLinkSpeed</name>
<state>32</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>1</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state>0</state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>4000</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>1</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Trace\Trace.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
<configuration>
<name>Release</name>
<toolchain>
<name>ARM</name>
</toolchain>
<debug>0</debug>
<settings>
<name>C-SPY</name>
<archiveVersion>2</archiveVersion>
<data>
<version>12</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CInput</name>
<state>1</state>
</option>
<option>
<name>CEndian</name>
<state>1</state>
</option>
<option>
<name>CProcessor</name>
<state>1</state>
</option>
<option>
<name>OCVariant</name>
<state>0</state>
</option>
<option>
<name>MacOverride</name>
<state>0</state>
</option>
<option>
<name>MacFile</name>
<state></state>
</option>
<option>
<name>MemOverride</name>
<state>1</state>
</option>
<option>
<name>MemFile</name>
<state>$TOOLKIT_DIR$\CONFIG\iostr712.ddf</state>
</option>
<option>
<name>RunToEnable</name>
<state>0</state>
</option>
<option>
<name>RunToName</name>
<state>main</state>
</option>
<option>
<name>CExtraOptionsCheck</name>
<state>0</state>
</option>
<option>
<name>CExtraOptions</name>
<state></state>
</option>
<option>
<name>CFpuProcessor</name>
<state>1</state>
</option>
<option>
<name>OCDDFArgumentProducer</name>
<state></state>
</option>
<option>
<name>OCDownloadSuppressDownload</name>
<state>0</state>
</option>
<option>
<name>OCDownloadVerifyAll</name>
<state>1</state>
</option>
<option>
<name>OCDownloadFlashDownload</name>
<state>1</state>
</option>
<option>
<name>OCDownloadFlashOverride</name>
<state>1</state>
</option>
<option>
<name>OCDownloadFlashLoader</name>
<state>$TOOLKIT_DIR$\config\flashloader\ST\FlashSTR71xF.d79</state>
</option>
<option>
<name>OCDownloadFlashLoaderSlave</name>
<state></state>
</option>
<option>
<name>OCProductVersion</name>
<state>4.20A</state>
</option>
<option>
<name>OCDynDriverList</name>
<state>JLINK_ID</state>
</option>
<option>
<name>OCLastSavedByProductVersion</name>
<state>4.20A</state>
</option>
<option>
<name>OCDownloadFlashLoaderArgs</name>
<state></state>
</option>
<option>
<name>OCDownloadFlashBaseAddrOverride</name>
<state>0</state>
</option>
<option>
<name>OCDownloadFlashBaseAddr</name>
<state></state>
</option>
<option>
<name>OCDownloadAttachToProgram</name>
<state>0</state>
</option>
</data>
</settings>
<settings>
<name>ARMSIM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>OCSimDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>ANGEL_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CCAngelHeartbeat</name>
<state>1</state>
</option>
<option>
<name>CAngelCommunication</name>
<state>1</state>
</option>
<option>
<name>CAngelCommBaud</name>
<version>0</version>
<state>3</state>
</option>
<option>
<name>CAngelCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>ANGELTCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoAngelLogfile</name>
<state>0</state>
</option>
<option>
<name>AngelLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>IARROM_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRomLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRomLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CRomCommunication</name>
<state>0</state>
</option>
<option>
<name>CRomCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>CRomCommBaud</name>
<version>0</version>
<state>7</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>JLINK_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>JLinkSpeed</name>
<state>32</state>
</option>
<option>
<name>CCJLinkHWReset</name>
<state>1</state>
</option>
<option>
<name>CCJLinkTRSTReset</name>
<state>0</state>
</option>
<option>
<name>CCDoJlinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkMultiTarget</name>
<state>0</state>
</option>
<option>
<name>CCJLinkDoLogfile</name>
<state>0</state>
</option>
<option>
<name>CCJLinkLogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCJLinkHWResetDelay</name>
<state>0</state>
</option>
<option>
<name>CCJLinkSpeedRadio</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>JLinkInitialSpeed</name>
<state>4000</state>
</option>
</data>
</settings>
<settings>
<name>MACRAIGOR_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>jtag</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>EmuSpeed</name>
<state>1</state>
</option>
<option>
<name>TCPIP</name>
<state>aaa.bbb.ccc.ddd</state>
</option>
<option>
<name>DoLogfile</name>
<state>0</state>
</option>
<option>
<name>LogFile</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>DoEmuMultiTarget</name>
<state>0</state>
</option>
<option>
<name>EmuMultiTarget</name>
<state>0@ARM7TDMI</state>
</option>
<option>
<name>EmuHWReset</name>
<state>0</state>
</option>
<option>
<name>CEmuCommBaud</name>
<version>0</version>
<state>4</state>
</option>
<option>
<name>CEmuCommPort</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>jtago</name>
<version>0</version>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
<option>
<name>UnusedAddr</name>
<state>0x00800000</state>
</option>
<option>
<name>CCMacraigorHWResetDelay</name>
<state></state>
</option>
</data>
</settings>
<settings>
<name>RDI_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>1</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CRDIDriverDll</name>
<state>Browse to your RDI driver</state>
</option>
<option>
<name>CRDILogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CRDILogFileEdit</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>CCRDIHWReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchReset</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchUndef</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchSWI</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchData</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchPrefetch</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchIRQ</name>
<state>0</state>
</option>
<option>
<name>CCRDICatchFIQ</name>
<state>0</state>
</option>
<option>
<name>CCRDIUseETM</name>
<state>0</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<settings>
<name>THIRDPARTY_ID</name>
<archiveVersion>2</archiveVersion>
<data>
<version>0</version>
<wantNonLocal>1</wantNonLocal>
<debug>0</debug>
<option>
<name>CThirdPartyDriverDll</name>
<state>Browse to your third-party driver</state>
</option>
<option>
<name>CThirdPartyLogFileCheck</name>
<state>0</state>
</option>
<option>
<name>CThirdPartyLogFileEditB</name>
<state>$TOOLKIT_DIR$\cspycomm.log</state>
</option>
<option>
<name>OCDriverInfo</name>
<state>1</state>
</option>
</data>
</settings>
<debuggerPlugins>
<plugin>
<file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Profiling\Profiling.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$EW_DIR$\common\plugins\Trace\Trace.ewplugin</file>
<loadFlag>1</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\CMX\CMXTinyArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
<plugin>
<file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
<loadFlag>0</loadFlag>
</plugin>
</debuggerPlugins>
</configuration>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,212 +0,0 @@
;-----------------------------------------------------------------------------
; This file contains the startup code used by the ICCARM C compiler.
;
; The modules in this file are included in the libraries, and may be replaced
; by any user-defined modules that define the PUBLIC symbol _program_start or
; a user defined start symbol.
; To override the cstartup defined in the library, simply add your modified
; version to the workbench project.
;
; All code in the modules (except ?RESET) will be placed in the ICODE segment.
;
; $Revision: 1.1 $
;
;-----------------------------------------------------------------------------
;
; Naming covention of labels in this file:
;
; ?xxx - External labels only accessed from assembler.
; __xxx - External labels accessed from or defined in C.
; xxx - Labels local to one module (note: this file contains
; several modules).
; main - The starting point of the user program.
;
;---------------------------------------------------------------
; Macros and definitions for the whole file
;---------------------------------------------------------------
; --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs
Mode_USR DEFINE 0x10
Mode_FIQ DEFINE 0x11
Mode_IRQ DEFINE 0x12
Mode_SVC DEFINE 0x13
Mode_ABT DEFINE 0x17
Mode_UNDEF DEFINE 0x1B
Mode_SYS DEFINE 0x1F ; available on ARM Arch 4 and later
I_Bit DEFINE 0x80 ; when I bit is set, IRQ is disabled
F_Bit DEFINE 0x40 ; when F bit is set, FIQ is disabled
; --- System memory locations
RAM_Base DEFINE 0x20000000
RAM_Limit DEFINE 0x20010000
SRAM_Base DEFINE 0x60000000
SVC_Stack DEFINE RAM_Limit ; 512 byte SVC stack at
; top of memory - used by kernel.
IRQ_Stack DEFINE SVC_Stack-512 ; followed by IRQ stack
USR_Stack DEFINE IRQ_Stack-512 ; followed by USR stack. Tasks run in
; system mode but task stacks are allocated
; when the task is created.
FIQ_Stack DEFINE USR_Stack-8 ; followed by FIQ stack
ABT_Stack DEFINE FIQ_Stack-8 ; followed by ABT stack
UNDEF_Stack DEFINE ABT_Stack-8 ; followed by UNDEF stack
EIC_Base_addr DEFINE 0xFFFFF800 ; EIC base address
ICR_off_addr DEFINE 0x00 ; Interrupt Control register offset
CIPR_off_addr DEFINE 0x08 ; Current Interrupt Priority Register offset
IVR_off_addr DEFINE 0x18 ; Interrupt Vector Register offset
FIR_off_addr DEFINE 0x1C ; Fast Interrupt Register offset
IER_off_addr DEFINE 0x20 ; Interrupt Enable Register offset
IPR_off_addr DEFINE 0x40 ; Interrupt Pending Bit Register offset
SIR0_off_addr DEFINE 0x60 ; Source Interrupt Register 0
EMI_Base_addr DEFINE 0x6C000000 ; EMI base address
BCON0_off_addr DEFINE 0x00 ; Bank 0 configuration register offset
BCON1_off_addr DEFINE 0x04 ; Bank 1 configuration register offset
BCON2_off_addr DEFINE 0x08 ; Bank 2 configuration register offset
BCON3_off_addr DEFINE 0x0C ; Bank 3 configuration register offset
GPIO2_Base_addr DEFINE 0xE0005000 ; GPIO2 base address
PC0_off_addr DEFINE 0x00 ; Port Configuration Register 0 offset
PC1_off_addr DEFINE 0x04 ; Port Configuration Register 1 offset
PC2_off_addr DEFINE 0x08 ; Port Configuration Register 2 offset
PD_off_addr DEFINE 0x0C ; Port Data Register offset
CPM_Base_addr DEFINE 0xA0000040 ; CPM Base Address
BOOTCONF_off_addr DEFINE 0x10 ; CPM - Boot Configuration Register
FLASH_mask DEFINE 0x0000 ; to remap FLASH at 0x0
RAM_mask DEFINE 0x0002 ; to remap RAM at 0x0
EXTMEM_mask DEFINE 0x0003 ; to remap EXTMEM at 0x0
;---------------------------------------------------------------
; ?RESET
; Reset Vector.
; Normally, segment INTVEC is linked at address 0.
; For debugging purposes, INTVEC may be placed at other
; addresses.
; A debugger that honors the entry point will start the
; program in a normal way even if INTVEC is not at address 0.
;---------------------------------------------------------------
MODULE ?RESET
COMMON INTVEC:CODE:NOROOT(2)
PUBLIC __program_start
EXTERN ?cstartup
CODE32 ; Always ARM mode after reset
__program_start
ldr pc,=?cstartup ; Absolute jump can reach 4 GByte
b ?cstartup ; Relative branch allows remap, limited to 32 MByte
LTORG
ENDMOD
;---------------------------------------------------------------
; ?CSTARTUP
;---------------------------------------------------------------
MODULE ?CSTARTUP
; RSEG IRQ_STACK:DATA(2)
; RSEG SVC_STACK:DATA:NOROOT(2)
; RSEG CSTACK:DATA(2)
RSEG ICODE:CODE:NOROOT(2)
PUBLIC ?cstartup
EXTERN ?main
CODE32
?cstartup
NOP ; Wait for OSC stabilization
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
/* Setup a stack for each mode - note that this only sets up a usable stack
for system/user, SWI and IRQ modes. Also each mode is setup with
interrupts initially disabled. */
msr CPSR_c, #Mode_UNDEF|I_Bit|F_Bit /* Undefined Instruction Mode */
LDR SP, =UNDEF_Stack
msr CPSR_c, #Mode_ABT|I_Bit|F_Bit /* Abort Mode */
LDR SP, =ABT_Stack
msr CPSR_c, #Mode_FIQ|I_Bit|F_Bit /* FIQ Mode */
LDR SP, =FIQ_Stack
msr CPSR_c, #Mode_IRQ|I_Bit|F_Bit /* IRQ Mode */
LDR SP, =IRQ_Stack
msr CPSR_c, #Mode_SVC|I_Bit|F_Bit /* Supervisor Mode */
LDR SP, =SVC_Stack
msr CPSR_c, #Mode_SYS|I_Bit|F_Bit /* System Mode */
LDR SP, =USR_Stack
/* We want to start in supervisor mode. Operation will switch to system
mode when the first task starts. */
msr CPSR_c, #Mode_SVC|I_Bit|F_Bit
IMPORT T0TIMI_Addr
EIC_INIT
LDR r3, =EIC_Base_addr
LDR r4, =0x00000000
STR r4, [r3, #ICR_off_addr] ; Disable FIQ and IRQ
STR r4, [r3, #IER_off_addr] ; Disable all channels interrupts
LDR r4, =0xFFFFFFFF
STR r4, [r3, #IPR_off_addr] ; Clear all IRQ pending bits
LDR r4, =0x0C
STR r4, [r3, #FIR_off_addr] ; Disable FIQ channels and clear FIQ pending bits
LDR r4, =0x00000000
STR r4, [r3, #CIPR_off_addr] ; Reset the current priority register
LDR r4, =0xE59F0000
STR r4, [r3, #IVR_off_addr] ; Write the LDR pc,pc,#offset instruction code in IVR[31:16]
LDR r2, =32 ; 32 Channel to initialize
LDR r0, =T0TIMI_Addr ; Read the address of the IRQs address table
LDR r1, =0x00000FFF
AND r0,r0,r1
LDR r5, =SIR0_off_addr ; Read SIR0 address
SUB r4,r0,#8 ; subtract 8 for prefetch
LDR r1, =0xF7E8 ; add the offset to the 0x00000000 address(IVR address + 7E8 = 0x00000000)
; 0xF7E8 used to complete the LDR pc,pc,#offset opcode
ADD r1,r4,r1 ; compute the jump offset
EIC_INI MOV r4, r1, LSL #16 ; Left shift the result
STR r4, [r3, r5] ; Store the result in SIRx register
ADD r1, r1, #4 ; Next IRQ address
ADD r5, r5, #4 ; Next SIR
SUBS r2, r2, #1 ; Decrement the number of SIR registers to initialize
BNE EIC_INI ; If more then continue
ldr r0,=?main
bx r0
LTORG
ENDMOD
END

View File

@@ -1,201 +0,0 @@
//*************************************************************************
// XLINK command file template for EWARM/ICCARM
//
// Usage: xlink -f lnkarm <your_object_file(s)>
// -s <program start label> <C/C++ runtime library>
//
// $Revision: 1.1 $
//*************************************************************************
// Code memory in flash
-DROMSTART=0x00000000
-DROMEND=0x0003FFFF
-DVECSTART=ROMSTART
// Data memory
-DRAMSTART=0x20000000
-DRAMEND=0x2000FFFF
//*************************************************************************
// In this file it is assumed that the system has the following
// memory layout:
//
// Exception vectors [0x000000--0x00001F] RAM or ROM
// ROMSTART--ROMEND [0x008000--0x0FFFFF] ROM (or other non-volatile memory)
// RAMSTART--RAMEND [0x100000--0x7FFFFF] RAM (or other read/write memory)
//
// -------------
// Code segments - may be placed anywhere in memory.
// -------------
//
// INTVEC -- Exception vector table.
// SWITAB -- Software interrupt vector table.
// ICODE -- Startup (cstartup) and exception code.
// DIFUNCT -- Dynamic initialization vectors used by C++.
// CODE -- Compiler generated code.
// CODE_I -- Compiler generated code declared __ramfunc (executes in RAM)
// CODE_ID -- Initializer for CODE_I (ROM).
//
// -------------
// Data segments - may be placed anywhere in memory.
// -------------
//
// CSTACK -- The stack used by C/C++ programs (system and user mode).
// IRQ_STACK -- The stack used by IRQ service routines.
// SVC_STACK -- The stack used in supervisor mode
// (Define other exception stacks as needed for
// FIQ, ABT, UND).
// HEAP -- The heap used by malloc and free in C and new and
// delete in C++.
// INITTAB -- Table containing addresses and sizes of segments that
// need to be initialized at startup (by cstartup).
// CHECKSUM -- The linker places checksum byte(s) in this segment,
// when the -J linker command line option is used.
// DATA_y -- Data objects.
//
// Where _y can be one of:
//
// _AN -- Holds uninitialized located objects, i.e. objects with
// an absolute location given by the @ operator or the
// #pragma location directive. Since these segments
// contain objects which already have a fixed address,
// they should not be mentioned in this linker command
// file.
// _C -- Constants (ROM).
// _I -- Initialized data (RAM).
// _ID -- The original content of _I (copied to _I by cstartup) (ROM).
// _N -- Uninitialized data (RAM).
// _Z -- Zero initialized data (RAM).
//
// Note: Be sure to use end values for the defined address ranges.
// Otherwise, the linker may allocate space outside the
// intended memory range.
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
//************************************************
-carm
//*************************************************************************
// Segment placement - General information
//
// All numbers in the segment placement command lines below are interpreted
// as hexadecimal unless they are immediately preceded by a '.', which
// denotes decimal notation.
//
// When specifying the segment placement using the -P instead of the -Z
// option, the linker is free to split each segment into its segment parts
// and randomly place these parts within the given ranges in order to
// achieve a more efficient memory usage. One disadvantage, however, is
// that it is not possible to find the start or end address (using
// the assembler operators .sfb./.sfe.) of a segment which has been split
// and reformed.
//
// When generating an output file which is to be used for programming
// external ROM/Flash devices, the -M linker option is very useful
// (see xlink.pdf for details).
//*************************************************************************
//*************************************************************************
// Read-only segments mapped to ROM.
//*************************************************************************
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//************************************************
-Z(CODE)INTVEC=VECSTART:+0x940
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Original ROM location for __ramfunc code copied
// to and executed from RAM.
//************************************************
-Z(CONST)CODE_ID=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// CODE_ID segment instead, but to keep symbol and
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
-QCODE_I=CODE_ID
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
//-D_CSTACK_SIZE=400
// -D_SVC_STACK_SIZE=10
//-D_IRQ_STACK_SIZE=500
//-D_HEAP_SIZE=4
//-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE,HEAP+_HEAP_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,246 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* Main.c also creates a task called "Check". This only executes every three
* seconds but has the highest priority so is guaranteed to get processor time.
* Its main function is to check that all the other tasks are still operational.
* Each task (other than the "flash" tasks) maintains a unique count that is
* incremented each time the task successfully completes its function. Should
* any error occur within such a task the count is permanently halted. The
* check task inspects the count of each task to ensure it has changed since
* the last time the check task executed. If all the count variables have
* changed all the tasks are still executing error free, and the check task
* toggles the onboard LED. Should any task contain an error at any time
* the LED toggle rate will change from 3 seconds to 500ms.
*
*/
/* Library includes. */
#include "RCCU.h"
#include "wdg.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
/* Demo application includes. */
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "BlockQ.h"
#include "semtest.h"
#include "dynamic.h"
#include "partest.h"
#include "comtest2.h"
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
/* Constants required by the 'Check' task. */
#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
#define mainCHECK_TASK_LED ( 4 )
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 6 ) /* The LED built onto the kickstart board. */
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Configure the processor for use with the IAR STR71x demo board. This
* just sets the PLL for the required frequency.
*/
static void prvSetupHardware( void );
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file. Called by vErrorChecks().
*/
static portLONG prvCheckOtherTasksAreStillRunning( void );
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
void main( void )
{
/* Setup any hardware that has not already been configured by the low
level init routines. */
prvSetupHardware();
/* Initialise the LED outputs for use by the demo application tasks. */
vParTestInitialise();
/* Start all the standard demo application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartDynamicPriorityTasks();
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
/* Start the check task - which is defined in this file. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
/* Start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* We should never get here as control is now taken by the scheduler. */
return;
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* Setup the PLL to generate a 48MHz clock from the 4MHz CLK. */
/* Turn of the div by two. */
RCCU_Div2Config( DISABLE );
/* 48MHz = ( 4MHz * 12 ) / 1 */
RCCU_PLL1Config( RCCU_PLL1_Mul_12, RCCU_Div_1 );
RCCU_RCLKSourceConfig( RCCU_PLL1_Output );
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
portTickType xLastWakeTime;
/* The parameters are not used in this task. */
( void ) pvParameters;
/* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil()
functions correctly. */
xLastWakeTime = xTaskGetTickCount();
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. If an error is detected then the delay period
is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
the on board LED flash rate will increase. */
for( ;; )
{
/* Delay until it is time to execute again. The delay period is
shorter following an error so the LED flashes faster. */
vTaskDelayUntil( &xLastWakeTime, xDelayPeriod );
/* Check all the standard demo application tasks are executing without
error. */
if( prvCheckOtherTasksAreStillRunning() != pdPASS )
{
/* An error has been detected in one of the tasks - flash faster. */
xDelayPeriod = mainERROR_FLASH_PERIOD;
}
vParTestToggleLED( mainCHECK_TASK_LED );
}
}
/*-----------------------------------------------------------*/
static portLONG prvCheckOtherTasksAreStillRunning( void )
{
portLONG lReturn = ( portLONG ) pdPASS;
/* Check all the demo tasks (other than the flash tasks) to ensure
that they are all still running, and that none of them have detected
an error. */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
lReturn = ( portLONG ) pdFAIL;
}
return lReturn;
}
/*-----------------------------------------------------------*/

View File

@@ -1,242 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
*/
/* Library includes. */
#include "uart.h"
#include "gpio.h"
#include "eic.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
/* Demo application includes. */
#include "serial.h"
#define UART0_Rx_Pin ( 0x0001<< 8 )
#define UART0_Tx_Pin ( 0x0001<< 9 )
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/* Macros to turn on and off the Tx empty interrupt. */
#define serINTERRUPT_ON() UART0->IER |= UART_TxHalfEmpty
#define serINTERRUPT_OFF() UART0->IER &= ~UART_TxHalfEmpty
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
/*-----------------------------------------------------------*/
/* Interrupt entry point written in the assembler file serialISR.s79. */
extern void vSerialISREntry( void );
/* The interrupt service routine - called from the assembly entry point. */
__arm void vSerialISR( void );
/*-----------------------------------------------------------*/
/*
* See the serial2.h header file.
*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
xComPortHandle xReturn;
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* If the queues were created correctly then setup the serial port
hardware. */
if( ( xRxedChars != serINVALID_QUEUE ) && ( xCharsForTx != serINVALID_QUEUE ) )
{
portENTER_CRITICAL();
{
/* Setup the UART port pins. */
GPIO_Config( GPIO0, UART0_Tx_Pin, GPIO_AF_PP );
GPIO_Config( GPIO0, UART0_Rx_Pin, GPIO_IN_TRI_CMOS );
/* Configure the UART. */
UART_OnOffConfig( UART0, ENABLE );
UART_FifoConfig( UART0, DISABLE );
UART_FifoReset( UART0, UART_RxFIFO );
UART_FifoReset( UART0, UART_TxFIFO );
UART_LoopBackConfig(UART0, DISABLE );
UART_Config( UART0, ulWantedBaud, UART_NO_PARITY, UART_1_StopBits, UARTM_8D );
UART_RxConfig( UART0, ENABLE );
/* Configure the IEC for the UART interrupts. */
EIC_IRQChannelPriorityConfig( UART0_IRQChannel, 1 );
EIC_IRQChannelConfig( UART0_IRQChannel, ENABLE );
EIC_IRQConfig( ENABLE );
UART_ItConfig( UART0, UART_RxBufFull, ENABLE );
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
/* This demo file only supports a single port but we have to return
something to comply with the standard demo header file. */
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* A couple of parameters that this port does not use. */
( void ) usStringLength;
( void ) pxPort;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
/* Place the character in the queue of characters to be transmitted. */
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
return pdFAIL;
}
/* Turn on the Tx interrupt so the ISR will remove the character from the
queue and send it. This does not need to be in a critical section as
if the interrupt has already removed the character the next interrupt
will simply turn off the Tx interrupt again. */
serINTERRUPT_ON();
return pdPASS;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/
/* Serial port ISR. This can cause a context switch so is not defined as a
standard ISR using the __irq keyword. Instead a wrapper function is defined
within serialISR.s79 which in turn calls this function. See the port
documentation on the FreeRTOS.org website for more information. */
__arm void vSerialISR( void )
{
unsigned portSHORT usStatus;
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByPost = pdFALSE;
/* What caused the interrupt? */
usStatus = UART_FlagStatus( UART0 );
if( usStatus & UART_TxHalfEmpty )
{
/* The interrupt was caused by the THR becoming empty. Are there any
more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the
THR now. */
UART0->TxBUFR = cChar;
}
else
{
/* Queue empty, nothing to send so turn off the Tx interrupt. */
serINTERRUPT_OFF();
}
}
if( usStatus & UART_RxBufFull )
{
/* The interrupt was caused by a character being received. Grab the
character from the RHR and place it in the queue of received
characters. */
cChar = UART0->RxBUFR;
xTaskWokenByPost = xQueueSendFromISR( xRxedChars, &cChar, xTaskWokenByPost );
}
/* If a task was woken by either a character being received or a character
being transmitted then we may need to switch to another task. */
portEND_SWITCHING_ISR( ( xTaskWokenByPost || xTaskWokenByTx ) );
/* End the interrupt in the EIC. */
portCLEAR_EIC();
}

View File

@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>129</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Disassembly>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
<MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
<Debug-Log/>
<Build>
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1153</ColumnWidth1><ColumnWidth2>307</ColumnWidth2><ColumnWidth3>76</ColumnWidth3></Build>
<Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register><Breakpoints/></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-24393-22702</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/RTOS Source</ExpandedNode><ExpandedNode>RTOSDemo/System Files</ExpandedNode><ExpandedNode>RTOSDemo/System Files/vect.s79</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-13122-22708</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-23870-22711</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab><Identity>TabID-19116-28152</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd3><Wnd0><Tabs><Tab><Identity>TabID-10243-6871</Identity><TabName>Register</TabName><Factory>Register</Factory><Session><REG1>0</REG1><REG2>0</REG2><Group>0</Group><States>1</States><State0>CPSR</State0></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd0></Windows>
<Editor>
<Pane/><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084c368><key>iaridepm1</key></Toolbar-0084c368><Toolbar-011f0628><key>debuggergui1</key></Toolbar-011f0628></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>853</Bottom><Right>203</Right><x>-2</x><y>-2</y><xscreen>125</xscreen><yscreen>125</yscreen><sizeHorzCX>78125</sizeHorzCX><sizeHorzCY>111706</sizeHorzCY><sizeVertCX>128124</sizeVertCX><sizeVertCY>764075</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>853</Bottom><Right>447</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>125000</sizeHorzCX><sizeHorzCY>178731</sizeHorzCY><sizeVertCX>280625</sizeVertCX><sizeVertCY>764075</sizeVertCY></Rect></Wnd0></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>219</Bottom><Right>1602</Right><x>-2</x><y>-2</y><xscreen>1604</xscreen><yscreen>221</yscreen><sizeHorzCX>1002500</sizeHorzCX><sizeHorzCY>197497</sizeHorzCY><sizeVertCX>78125</sizeVertCX><sizeVertCY>111706</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

View File

@@ -1,23 +0,0 @@
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[JLinkDriver]
WatchVectorCatch=_ 0
WatchCond=_ 0
Watch0=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
Watch1=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
[Low Level]
Pipeline mode=0
Initialized=0
[Disassemble mode]
mode=0
[Breakpoints]
Bp0=_ "Code" "{E:\Dev\FreeRTOS\Source\portable\IAR\STR71x\port.c}.240.4@1" 1 0 0 0 "" 0 ""
Count=1
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>227</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build>
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1153</ColumnWidth1><ColumnWidth2>307</ColumnWidth2><ColumnWidth3>76</ColumnWidth3></Build>
<TerminalIO/>
<Profiling/>
<Debug-Log/>
<CodeCoveragePlugin/><Breakpoints/></Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-14962-21036</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/source</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-24623-22493</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-13645-22698</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab><Identity>TabID-25855-25419</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>E:\Dev\FreeRTOS\Demo\ARM7_STR71x_IAR\main.c</Filename><XPos>0</XPos><YPos>98</YPos><SelStart>4693</SelStart><SelEnd>4693</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-0084c368><key>iaridepm1</key></Toolbar-0084c368></Sizes></Row0><Row1><Sizes><Toolbar-011f0628><key>debuggergui1</key></Toolbar-011f0628></Sizes></Row1></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>675</Bottom><Right>301</Right><x>-2</x><y>-2</y><xscreen>21</xscreen><yscreen>21</yscreen><sizeHorzCX>13125</sizeHorzCX><sizeHorzCY>18766</sizeHorzCY><sizeVertCX>189375</sizeVertCX><sizeVertCY>605004</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>397</Bottom><Right>1602</Right><x>-2</x><y>-2</y><xscreen>1604</xscreen><yscreen>399</yscreen><sizeHorzCX>1002500</sizeHorzCX><sizeHorzCY>356568</sizeHorzCY><sizeVertCX>13125</sizeVertCX><sizeVertCY>18766</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@@ -1,127 +0,0 @@
#include "FreeRTOSConfig.h"
IVR_ADDR DEFINE 0xFFFFF818
;*******************************************************************************
; Import the Reset_Handler address from 71x_init.s
;*******************************************************************************
IMPORT __program_start
;*******************************************************************************
; Import exception handlers
;*******************************************************************************
IMPORT vPortYieldProcessor ; FreeRTOS SWI handler
;*******************************************************************************
; Import IRQ handlers from 71x_it.c
;*******************************************************************************
IMPORT vPortNonPreemptiveTick ; Cooperative FreeRTOS tick handler
IMPORT vPortPreemptiveTickISR ; Preemptive FreeRTOS tick handler
IMPORT vSerialISREntry ; Demo serial port handler
;*******************************************************************************
; Export Peripherals IRQ handlers table address
;*******************************************************************************
CODE32
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SWI_Addr
LDR PC, Prefetch_Addr
LDR PC, Abort_Addr
NOP ; Reserved vector
LDR PC, =IVR_ADDR
LDR PC, FIQ_Addr
;*******************************************************************************
; Exception handlers address table
;*******************************************************************************
Reset_Addr DCD __program_start
Undefined_Addr DCD UndefinedHandler
SWI_Addr DCD vPortYieldProcessor
Prefetch_Addr DCD PrefetchAbortHandler
Abort_Addr DCD DataAbortHandler
DCD 0 ; Reserved vector
IRQ_Addr DCD IRQHandler
FIQ_Addr DCD FIQHandler
;*******************************************************************************
; Peripherals IRQ handlers address table
;*******************************************************************************
EXPORT T0TIMI_Addr
T0TIMI_Addr DCD DefaultISR
FLASH_Addr DCD DefaultISR
RCCU_Addr DCD DefaultISR
RTC_Addr DCD DefaultISR
#if configUSE_PREEMPTION == 0
WDG_Addr DCD vPortNonPreemptiveTick ; Tick ISR if the cooperative scheduler is used.
#else
WDG_Addr DCD vPortPreemptiveTickISR ; Tick ISR if the preemptive scheduler is used.
#endif
XTI_Addr DCD DefaultISR
USBHP_Addr DCD DefaultISR
I2C0ITERR_Addr DCD DefaultISR
I2C1ITERR_ADDR DCD DefaultISR
UART0_Addr DCD vSerialISREntry
UART1_Addr DCD DefaultISR
UART2_ADDR DCD DefaultISR
UART3_ADDR DCD DefaultISR
BSPI0_ADDR DCD DefaultISR
BSPI1_Addr DCD DefaultISR
I2C0_Addr DCD DefaultISR
I2C1_Addr DCD DefaultISR
CAN_Addr DCD DefaultISR
ADC12_Addr DCD DefaultISR
T1TIMI_Addr DCD DefaultISR
T2TIMI_Addr DCD DefaultISR
T3TIMI_Addr DCD DefaultISR
DCD 0 ; reserved
DCD 0 ; reserved
DCD 0 ; reserved
HDLC_Addr DCD DefaultISR
USBLP_Addr DCD DefaultISR
DCD 0 ; reserved
DCD 0 ; reserved
T0TOI_Addr DCD DefaultISR
T0OC1_Addr DCD DefaultISR
T0OC2_Addr DCD DefaultISR
;*******************************************************************************
; Exception Handlers
;*******************************************************************************
UndefinedHandler
b UndefinedHandler
PrefetchAbortHandler
b PrefetchAbortHandler
DataAbortHandler
b DataAbortHandler
IRQHandler
b DefaultISR
FIQHandler
b FIQHandler
DefaultISR
b DefaultISR
LTORG
END

View File

@@ -1,77 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <75x_lib.h>
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 60000000 ) /* Timer clock. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 12800 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 0
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,137 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Library includes. */
#include "75x_GPIO.h"
#include "75x_map.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
/*-----------------------------------------------------------
* Simple parallel port IO routines for the LED's
*-----------------------------------------------------------*/
#define partstNUM_LEDS 4
typedef struct GPIOMAP
{
GPIO_TypeDef *pxPort;
unsigned portLONG ulPin;
unsigned portLONG ulValue;
} GPIO_MAP;
static GPIO_MAP xLEDMap[ partstNUM_LEDS ] =
{
{ ( GPIO_TypeDef * )GPIO1_BASE, GPIO_Pin_1, 0UL },
{ ( GPIO_TypeDef * )GPIO0_BASE, GPIO_Pin_16, 0UL },
{ ( GPIO_TypeDef * )GPIO2_BASE, GPIO_Pin_18, 0UL },
{ ( GPIO_TypeDef * )GPIO2_BASE, GPIO_Pin_19, 0UL }
};
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
GPIO_InitTypeDef GPIO_InitStructure ;
/* Configure the bits used to flash LED's on port 1 as output. */
/* Configure LED3 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_16;
GPIO_Init(GPIO0,&GPIO_InitStructure);
/* Configure LED2 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIO1, &GPIO_InitStructure);
/* Configure LED4 and LED5 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_18 | GPIO_Pin_19;
GPIO_Init(GPIO2, &GPIO_InitStructure);
vParTestSetLED( 0, 0 );
vParTestSetLED( 1, 0 );
vParTestSetLED( 2, 0 );
vParTestSetLED( 3, 0 );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
if( uxLED < partstNUM_LEDS )
{
portENTER_CRITICAL();
{
if( xValue )
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_RESET );
xLEDMap[ uxLED ].ulValue = 0;
}
else
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_SET );
xLEDMap[ uxLED ].ulValue = 1;
}
}
portEXIT_CRITICAL();
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
if( uxLED < partstNUM_LEDS )
{
portENTER_CRITICAL();
{
if( xLEDMap[ uxLED ].ulValue == 1 )
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_RESET );
xLEDMap[ uxLED ].ulValue = 0;
}
else
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_SET );
xLEDMap[ uxLED ].ulValue = 1;
}
}
portEXIT_CRITICAL();
}
}

View File

@@ -1,318 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* In addition to the standard demo tasks there are two tasks defined within
* this file:
*
* 1 - The check task
* The 'check' task is responsible for ensuring that all the standard demo
* tasks are executing as expected. It only executes every three seconds, but
* has the highest priority within the system so is guaranteed to get execution
* time. Any errors discovered by the check task are latched until the
* processor is reset. At the end of each cycle the check task sends either
* a pass or fail message to the 'print' task for display on the LCD.
*
* 2 - The print task
* The print task is the LCD 'gatekeeper'. That is, it is the only task that
* should access the LCD directly so is always guaranteed exclusive (and
* therefore consistent) access. The print task simply blocks on a queue
* to wait for messages from other tasks wishing to display text on the LCD.
* When a message arrives it displays its contents on the LCD then blocks to
* wait again.
*/
/* ST includes. */
#include "lcd.h"
/* Kernel includes. */
#include "FreeRTOS.h"
#include "Task.h"
#include "Queue.h"
/* Demo application includes. */
#include "ParTest.h"
#include "flash.h"
#include "integer.h"
#include "blocktim.h"
#include "BlockQ.h"
#include "comtest2.h"
#include "dynamic.h"
/* Demo application task priorities. */
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* How often should we check the other tasks? */
#define mainCHECK_TASK_CYCLE_TIME ( 3000 )
/* The maximum offset into the pass and fail strings sent to the LCD. An
offset is used a simple method of using a different column each time a message
is written to the LCD. */
#define mainMAX_WRITE_COLUMN ( 14 )
/* Baud rate used by the comtest tasks. */
#define mainCOM_TEST_BAUD_RATE ( 19200 )
/* The LED used by the comtest tasks. See the comtest.c file for more
information. */
#define mainCOM_TEST_LED ( 3 )
/* The number of messages that can be queued for display on the LCD at any one
time. */
#define mainLCD_QUEUE_LENGTH ( 2 )
/* The time to wait when sending to mainLCD_QUEUE_LENGTH. */
#define mainNO_DELAY ( 0 )
/*-----------------------------------------------------------*/
/* The type that is posted to the LCD queue. */
typedef struct LCD_MESSAGE
{
unsigned portCHAR *pucString; /* Points to the string to be displayed. */
unsigned portCHAR ucLine; /* The line of the LCD that should be used. */
} LCDMessage;
/*-----------------------------------------------------------*/
/*
* The task that executes at the highest priority and checks the operation of
* all the other tasks in the system. See the description at the top of the
* file.
*/
static void vCheckTask( void *pvParameters );
/*
* ST provided routine to configure the processor.
*/
static void prvSetupHardware(void);
/*
* The only task that should access the LCD. Other tasks wanting to write
* to the LCD should send a message of type LCDMessage containing the
* information to display to the print task. The print task simply blocks
* waiting for the arrival of such messages, displays the message, then blocks
* again.
*/
static void vPrintTask( void *pvParameters );
/*-----------------------------------------------------------*/
/* The queue used to communicate with the LCD print task. */
static xQueueHandle xLCDQueue;
/*-----------------------------------------------------------*/
/* Create all the demo application tasks, then start the scheduler. */
int main( void )
{
/* Perform any hardware setup necessary. */
prvSetupHardware();
vParTestInitialise();
/* Create the queue used to communicate with the LCD print task. */
xLCDQueue = xQueueCreate( mainLCD_QUEUE_LENGTH, sizeof( LCDMessage ) );
/* Create the standard demo application tasks. See the WEB documentation
for more information on these tasks. */
vCreateBlockTimeTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartDynamicPriorityTasks();
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartIntegerMathTasks( tskIDLE_PRIORITY );
/* Create the tasks defined within this file. */
xTaskCreate( vPrintTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE, NULL, mainLCD_TASK_PRIORITY, NULL );
xTaskCreate( vCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
vTaskStartScheduler();
/* Execution will only reach here if there was insufficient heap to
start the scheduler. */
return 0;
}
/*-----------------------------------------------------------*/
static void vCheckTask( void *pvParameters )
{
static unsigned portLONG ulErrorDetected = pdFALSE;
portTickType xLastExecutionTime;
unsigned portCHAR *ucErrorMessage = ( unsigned portCHAR * )" FAIL";
unsigned portCHAR *ucSuccessMessage = ( unsigned portCHAR * )" PASS";
unsigned portBASE_TYPE uxColumn = mainMAX_WRITE_COLUMN;
LCDMessage xMessage;
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()
works correctly. */
xLastExecutionTime = xTaskGetTickCount();
for( ;; )
{
/* Wait until it is time for the next cycle. */
vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_CYCLE_TIME );
/* Has an error been found in any of the standard demo tasks? */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
/* Calculate the LCD line on which we would like the message to
be displayed. The column variable is used for convenience as
it is incremented each cycle anyway. */
xMessage.ucLine = ( unsigned portCHAR ) ( uxColumn & 0x01 );
/* The message displayed depends on whether an error was found or
not. Any discovered error is latched. Here the column variable
is used as an index into the text string as a simple way of moving
the text from column to column. */
if( ulErrorDetected == pdFALSE )
{
xMessage.pucString = ucSuccessMessage + uxColumn;
}
else
{
xMessage.pucString = ucErrorMessage + uxColumn;
}
/* Send the message to the print task for display. */
xQueueSend( xLCDQueue, ( void * ) &xMessage, mainNO_DELAY );
/* Make sure the message is printed in a different column the next
time around. */
uxColumn--;
if( uxColumn == 0 )
{
uxColumn = mainMAX_WRITE_COLUMN;
}
}
}
/*-----------------------------------------------------------*/
static void vPrintTask( void *pvParameters )
{
LCDMessage xMessage;
for( ;; )
{
/* Wait until a message arrives. */
while( xQueueReceive( xLCDQueue, ( void * ) &xMessage, portMAX_DELAY ) != pdPASS );
/* The message contains the text to display, and the line on which the
text should be displayed. */
LCD_Clear();
LCD_DisplayString( xMessage.ucLine, xMessage.pucString, BlackText );
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware(void)
{
ErrorStatus OSC4MStartUpStatus01;
/* ST provided routine. */
/* MRCC system reset */
MRCC_DeInit();
/* Wait for OSC4M start-up */
OSC4MStartUpStatus01 = MRCC_WaitForOSC4MStartUp();
if(OSC4MStartUpStatus01 == SUCCESS)
{
/* Set HCLK to 60MHz */
MRCC_HCLKConfig(MRCC_CKSYS_Div1);
/* Set CKTIM to 60MHz */
MRCC_CKTIMConfig(MRCC_HCLK_Div1);
/* Set PCLK to 30MHz */
MRCC_PCLKConfig(MRCC_CKTIM_Div2);
/* Enable Flash Burst mode */
CFG_FLASHBurstConfig(CFG_FLASHBurst_Enable);
/* Set CK_SYS to 60 MHz */
MRCC_CKSYSConfig(MRCC_CKSYS_OSC4MPLL, MRCC_PLL_Mul_15);
}
/* GPIO pins optimized for 3V3 operation */
MRCC_IOVoltageRangeConfig(MRCC_IOVoltageRange_3V3);
/* GPIO clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_GPIO, ENABLE);
/* EXTIT clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_EXTIT, ENABLE);
/* TB clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_TB, ENABLE);
/* Initialize the demonstration menu */
LCD_Init();
LCD_DisplayString(Line1, ( unsigned portCHAR * ) "www.FreeRTOS.org", BlackText);
LCD_DisplayString(Line2, ( unsigned portCHAR * ) " STR750 Demo ", BlackText);
EIC_IRQCmd(ENABLE);
}
/*-----------------------------------------------------------*/

View File

@@ -1,235 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
*/
/*-----------------------------------------------------------
* Components that can be compiled to either ARM or THUMB mode are
* contained in this file.c The ISR routines, which can only be compiled
* to ARM mode, are contained in serialISR.c.
*----------------------------------------------------------*/
/* Library includes. */
#include "75x_uart.h"
#include "75x_gpio.h"
#include "75x_eic.h"
#include "75x_mrcc.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
/* Demo application includes. */
#include "serial.h"
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static volatile portBASE_TYPE xQueueEmpty = pdTRUE;
/*-----------------------------------------------------------*/
/* The interrupt service routine - called from the assembly entry point. */
void vSerialISR( void );
void vConfigureQueues( xQueueHandle xQForRx, xQueueHandle xQForTx, volatile portBASE_TYPE *pxEmptyFlag );
/*-----------------------------------------------------------*/
/*
* See the serial2.h header file.
*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
xComPortHandle xReturn;
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
EIC_IRQInitTypeDef EIC_IRQInitStructure;
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* If the queues were created correctly then setup the serial port
hardware. */
if( ( xRxedChars != serINVALID_QUEUE ) && ( xCharsForTx != serINVALID_QUEUE ) )
{
vConfigureQueues( xRxedChars, xCharsForTx, &xQueueEmpty );
portENTER_CRITICAL();
{
/* Enable the UART0 Clock. */
MRCC_PeripheralClockConfig( MRCC_Peripheral_UART0, ENABLE );
/* Configure the UART0_Tx as alternate function */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_Init(GPIO0, &GPIO_InitStructure);
/* Configure the UART0_Rx as input floating */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Init(GPIO0, &GPIO_InitStructure);
/* Configure UART0. */
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No;
UART_InitStructure.UART_BaudRate = ulWantedBaud;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_TxFIFOLevel = UART_FIFOLevel_1_2; /* FIFO size 16 bytes, FIFO level 8 bytes */
UART_InitStructure.UART_RxFIFOLevel = UART_FIFOLevel_1_2; /* FIFO size 16 bytes, FIFO level 8 bytes */
UART_Init(UART0, &UART_InitStructure);
/* Enable the UART0 */
UART_Cmd(UART0, ENABLE);
/* Configure the IEC for the UART interrupts. */
EIC_IRQInitStructure.EIC_IRQChannelCmd = ENABLE;
EIC_IRQInitStructure.EIC_IRQChannel = UART0_IRQChannel;
EIC_IRQInitStructure.EIC_IRQChannelPriority = 1;
EIC_IRQInit(&EIC_IRQInitStructure);
xQueueEmpty = pdTRUE;
UART_ITConfig( UART0, UART_IT_Transmit | UART_IT_Receive, ENABLE );
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
/* This demo file only supports a single port but we have to return
something to comply with the standard demo header file. */
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* A couple of parameters that this port does not use. */
( void ) usStringLength;
( void ) pxPort;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
portBASE_TYPE xReturn;
/* Place the character in the queue of characters to be transmitted. */
portENTER_CRITICAL();
{
if( xQueueEmpty == pdTRUE )
{
UART0->DR = cOutChar;
xReturn = pdPASS;
}
else
{
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
xReturn = pdFAIL;
}
else
{
xReturn = pdPASS;
}
}
xQueueEmpty = pdFALSE;
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/

View File

@@ -1,101 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*-----------------------------------------------------------
* Components that can be compiled to either ARM or THUMB mode are
* contained in serial.c The ISR routines, which can only be compiled
* to ARM mode, are contained in this file.
*----------------------------------------------------------*/
/* Library includes. */
#include "75x_uart.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static portBASE_TYPE volatile *pxQueueEmpty;
void vConfigureQueues( xQueueHandle xQForRx, xQueueHandle xQForTx, portBASE_TYPE volatile *pxEmptyFlag )
{
xRxedChars = xQForRx;
xCharsForTx = xQForTx;
pxQueueEmpty = pxEmptyFlag;
}
/*-----------------------------------------------------------*/
void vSerialISR( void )
{
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByPost = pdFALSE;
do
{
if( UART0->MIS & UART_IT_Transmit )
{
/* The interrupt was caused by the THR becoming empty. Are there any
more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the
THR now. */
UART0->DR = cChar;
}
else
{
*pxQueueEmpty = pdTRUE;
}
UART_ClearITPendingBit( UART0, UART_IT_Transmit );
}
if( UART0->MIS & UART_IT_Receive )
{
/* The interrupt was caused by a character being received. Grab the
character from the RHR and place it in the queue of received
characters. */
cChar = UART0->DR;
xTaskWokenByPost = xQueueSendFromISR( xRxedChars, &cChar, xTaskWokenByPost );
UART_ClearITPendingBit( UART0, UART_IT_Receive );
}
} while( UART0->MIS );
/* If a task was woken by either a character being received or a character
being transmitted then we may need to switch to another task. */
portEND_SWITCHING_ISR( ( xTaskWokenByPost || xTaskWokenByTx ) );
}

View File

@@ -1,75 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 60000000 ) /* Timer clock. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 100 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 12800 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 0
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 0
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,137 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Library includes. */
#include "75x_GPIO.h"
#include "75x_map.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
/*-----------------------------------------------------------
* Simple parallel port IO routines for the LED's
*-----------------------------------------------------------*/
#define partstNUM_LEDS 4
typedef struct GPIOMAP
{
GPIO_TypeDef *pxPort;
unsigned portLONG ulPin;
unsigned portLONG ulValue;
} GPIO_MAP;
static GPIO_MAP xLEDMap[ partstNUM_LEDS ] =
{
{ ( GPIO_TypeDef * )GPIO1_BASE, GPIO_Pin_1, 0UL },
{ ( GPIO_TypeDef * )GPIO0_BASE, GPIO_Pin_16, 0UL },
{ ( GPIO_TypeDef * )GPIO2_BASE, GPIO_Pin_18, 0UL },
{ ( GPIO_TypeDef * )GPIO2_BASE, GPIO_Pin_19, 0UL }
};
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
GPIO_InitTypeDef GPIO_InitStructure ;
/* Configure the bits used to flash LED's on port 1 as output. */
/* Configure LED3 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_16;
GPIO_Init(GPIO0,&GPIO_InitStructure);
/* Configure LED2 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIO1, &GPIO_InitStructure);
/* Configure LED4 and LED5 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_18 | GPIO_Pin_19;
GPIO_Init(GPIO2, &GPIO_InitStructure);
vParTestSetLED( 0, 0 );
vParTestSetLED( 1, 0 );
vParTestSetLED( 2, 0 );
vParTestSetLED( 3, 0 );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
if( uxLED < partstNUM_LEDS )
{
portENTER_CRITICAL();
{
if( xValue )
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_RESET );
xLEDMap[ uxLED ].ulValue = 0;
}
else
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_SET );
xLEDMap[ uxLED ].ulValue = 1;
}
}
portEXIT_CRITICAL();
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
if( uxLED < partstNUM_LEDS )
{
portENTER_CRITICAL();
{
if( xLEDMap[ uxLED ].ulValue == 1 )
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_RESET );
xLEDMap[ uxLED ].ulValue = 0;
}
else
{
GPIO_WriteBit( xLEDMap[ uxLED ].pxPort, xLEDMap[ uxLED ].ulPin, Bit_SET );
xLEDMap[ uxLED ].ulValue = 1;
}
}
portEXIT_CRITICAL();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,215 +0,0 @@
/*;******************** (C) COPYRIGHT 2005 STMicroelectronics ******************
;* File Name : lnkarm_flash.xcl
;* Author : MCD Application Team
;* Date First Issued : 03/10/2006
;* Description : XLINK command file for EWARM/ICCARM
;* : Usage: xlink -f lnkarm <your_object_file(s)>
;* : -s <program start label> <C/C++ runtime library>
;*******************************************************************************
; History:
; 07/17/2006 : V1.0
; 03/10/2006 : V0.1
;*******************************************************************************
; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
; INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
; CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
; INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;******************************************************************************/
// Embedded Flash (256/128/64Kbytes)
// The user has to change the flash memory length depending STR75xFxx devices
// Code memory in flash
-DROMSTART=0x20000000
-DROMEND=0x2003FFFF //0x2001FFFF;0x200FFFF
// Data memory
-DRAMSTART=0x40000000
-DRAMEND=0x40003FFF
//*************************************************************************
// -------------
// Code segments - may be placed anywhere in memory.
// -------------
//
// INTVEC -- Exception vector table.
// SWITAB -- Software interrupt vector table.
// ICODE -- Startup (cstartup) and exception code.
// DIFUNCT -- Dynamic initialization vectors used by C++.
// CODE -- Compiler generated code.
// CODE_I -- Compiler generated code declared __ramfunc (executes in RAM)
// CODE_ID -- Initializer for CODE_I (ROM).
//
// -------------
// Data segments - may be placed anywhere in memory.
// -------------
//
// CSTACK -- The stack used by C/C++ programs (system and user mode).
// IRQ_STACK -- The stack used by IRQ service routines.
// SVC_STACK -- The stack used in supervisor mode
// UND_STACK -- The stack used in Und mode
// ABT_STACK -- The stack used in Abort mode
// FIQ_STACK -- The stack used by FIQ service routines
// HEAP -- The heap used by malloc and free in C and new and
// delete in C++.
// INITTAB -- Table containing addresses and sizes of segments that
// need to be initialized at startup (by cstartup).
// CHECKSUM -- The linker places checksum byte(s) in this segment,
// when the -J linker command line option is used.
// DATA_y -- Data objects.
//
// Where _y can be one of:
//
// _AN -- Holds uninitialized located objects, i.e. objects with
// an absolute location given by the @ operator or the
// #pragma location directive. Since these segments
// contain objects which already have a fixed address,
// they should not be mentioned in this linker command
// file.
// _C -- Constants (ROM).
// _I -- Initialized data (RAM).
// _ID -- The original content of _I (copied to _I by cstartup) (ROM).
// _N -- Uninitialized data (RAM).
// _Z -- Zero initialized data (RAM).
//
// Note: Be sure to use end values for the defined address ranges.
// Otherwise, the linker may allocate space outside the
// intended memory range.
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
//************************************************
-carm
//*************************************************************************
// Segment placement - General information
//
// All numbers in the segment placement command lines below are interpreted
// as hexadecimal unless they are immediately preceded by a '.', which
// denotes decimal notation.
//
// When specifying the segment placement using the -P instead of the -Z
// option, the linker is free to split each segment into its segment parts
// and randomly place these parts within the given ranges in order to
// achieve a more efficient memory usage. One disadvantage, however, is
// that it is not possible to find the start or end address (using
// the assembler operators .sfb./.sfe.) of a segment which has been split
// and reformed.
//
// When generating an output file which is to be used for programming
// external ROM/Flash devices, the -M linker option is very useful
// (see xlink.pdf for details).
//*************************************************************************
//*************************************************************************
// Read-only segments mapped to ROM.
//*************************************************************************
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
//************************************************
-Z(CODE)INTVEC=ROMSTART-ROMEND
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Original ROM location for __ramfunc code copied
// to and executed from RAM.
//************************************************
-Z(CONST)CODE_ID=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// CODE_ID segment instead, but to keep symbol and
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
-QCODE_I=CODE_ID
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
// Add size >0 for ABT_Stack, UND_Stack if you need them.
// size must be 8 byte aligned.
-D_CSTACK_SIZE=0x100
-D_SVC_STACK_SIZE=0x400
-D_IRQ_STACK_SIZE=0x400
-D_FIQ_STACK_SIZE=0x40
-D_ABT_STACK_SIZE=0x0
-D_UND_STACK_SIZE=0x0
-D_HEAP_SIZE=0x10
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)FIQ_STACK+_FIQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,315 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* In addition to the standard demo tasks there are two tasks defined within
* this file:
*
* 1 - The check task
* The 'check' task is responsible for ensuring that all the standard demo
* tasks are executing as expected. It only executes every three seconds, but
* has the highest priority within the system so is guaranteed to get execution
* time. Any errors discovered by the check task are latched until the
* processor is reset. At the end of each cycle the check task sends either
* a pass or fail message to the 'print' task for display on the LCD.
*
* 2 - The print task
* The print task is the LCD 'gatekeeper'. That is, it is the only task that
* should access the LCD directly so is always guaranteed exclusive (and
* therefore consistent) access. The print task simply blocks on a queue
* to wait for messages from other tasks wishing to display text on the LCD.
* When a message arrives it displays its contents on the LCD then blocks to
* wait again.
*/
/* ST includes. */
#include "lcd.h"
/* Kernel includes. */
#include "FreeRTOS.h"
#include "Task.h"
#include "Queue.h"
/* Demo application includes. */
#include "ParTest.h"
#include "flash.h"
#include "integer.h"
#include "blocktim.h"
#include "BlockQ.h"
#include "comtest2.h"
#include "dynamic.h"
/* Demo application task priorities. */
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* How often should we check the other tasks? */
#define mainCHECK_TASK_CYCLE_TIME ( 3000 )
/* The maximum offset into the pass and fail strings sent to the LCD. An
offset is used a simple method of using a different column each time a message
is written to the LCD. */
#define mainMAX_WRITE_COLUMN ( 14 )
/* Baud rate used by the comtest tasks. */
#define mainCOM_TEST_BAUD_RATE ( 19200 )
/* The LED used by the comtest tasks. See the comtest.c file for more
information. */
#define mainCOM_TEST_LED ( 3 )
/* The number of messages that can be queued for display on the LCD at any one
time. */
#define mainLCD_QUEUE_LENGTH ( 2 )
/* The time to wait when sending to mainLCD_QUEUE_LENGTH. */
#define mainNO_DELAY ( 0 )
/*-----------------------------------------------------------*/
/* The type that is posted to the LCD queue. */
typedef struct LCD_MESSAGE
{
unsigned portCHAR *pucString; /* Points to the string to be displayed. */
unsigned portCHAR ucLine; /* The line of the LCD that should be used. */
} LCDMessage;
/*-----------------------------------------------------------*/
/*
* The task that executes at the highest priority and checks the operation of
* all the other tasks in the system. See the description at the top of the
* file.
*/
static void vCheckTask( void *pvParameters );
/*
* ST provided routine to configure the processor.
*/
static void prvSetupHardware(void);
/*
* The only task that should access the LCD. Other tasks wanting to write
* to the LCD should send a message of type LCDMessage containing the
* information to display to the print task. The print task simply blocks
* waiting for the arrival of such messages, displays the message, then blocks
* again.
*/
static void vPrintTask( void *pvParameters );
/*-----------------------------------------------------------*/
/* The queue used to communicate with the LCD print task. */
static xQueueHandle xLCDQueue;
/*-----------------------------------------------------------*/
/* Create all the demo application tasks, then start the scheduler. */
void main( void )
{
/* Perform any hardware setup necessary. */
prvSetupHardware();
vParTestInitialise();
/* Create the queue used to communicate with the LCD print task. */
xLCDQueue = xQueueCreate( mainLCD_QUEUE_LENGTH, sizeof( LCDMessage ) );
/* Create the standard demo application tasks. See the WEB documentation
for more information on these tasks. */
vCreateBlockTimeTasks();
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartDynamicPriorityTasks();
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartIntegerMathTasks( tskIDLE_PRIORITY );
/* Create the tasks defined within this file. */
xTaskCreate( vPrintTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE, NULL, mainLCD_TASK_PRIORITY, NULL );
xTaskCreate( vCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
vTaskStartScheduler();
/* Execution will only reach here if there was insufficient heap to
start the scheduler. */
}
/*-----------------------------------------------------------*/
static void vCheckTask( void *pvParameters )
{
static unsigned portLONG ulErrorDetected = pdFALSE;
portTickType xLastExecutionTime;
unsigned portCHAR *cErrorMessage = " FAIL";
unsigned portCHAR *cSuccessMessage = " PASS";
unsigned portBASE_TYPE uxColumn = mainMAX_WRITE_COLUMN;
LCDMessage xMessage;
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()
works correctly. */
xLastExecutionTime = xTaskGetTickCount();
for( ;; )
{
/* Wait until it is time for the next cycle. */
vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_CYCLE_TIME );
/* Has an error been found in any of the standard demo tasks? */
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
ulErrorDetected = pdTRUE;
}
/* Calculate the LCD line on which we would like the message to
be displayed. The column variable is used for convenience as
it is incremented each cycle anyway. */
xMessage.ucLine = ( unsigned portCHAR ) ( uxColumn & 0x01 );
/* The message displayed depends on whether an error was found or
not. Any discovered error is latched. Here the column variable
is used as an index into the text string as a simple way of moving
the text from column to column. */
if( ulErrorDetected == pdFALSE )
{
xMessage.pucString = cSuccessMessage + uxColumn;
}
else
{
xMessage.pucString = cErrorMessage + uxColumn;
}
/* Send the message to the print task for display. */
xQueueSend( xLCDQueue, ( void * ) &xMessage, mainNO_DELAY );
/* Make sure the message is printed in a different column the next
time around. */
uxColumn--;
if( uxColumn == 0 )
{
uxColumn = mainMAX_WRITE_COLUMN;
}
}
}
/*-----------------------------------------------------------*/
static void vPrintTask( void *pvParameters )
{
LCDMessage xMessage;
for( ;; )
{
/* Wait until a message arrives. */
while( xQueueReceive( xLCDQueue, ( void * ) &xMessage, portMAX_DELAY ) != pdPASS );
/* The message contains the text to display, and the line on which the
text should be displayed. */
LCD_Clear();
LCD_DisplayString( xMessage.ucLine, xMessage.pucString, BlackText );
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware(void)
{
ErrorStatus OSC4MStartUpStatus01;
/* ST provided routine. */
/* MRCC system reset */
MRCC_DeInit();
/* Wait for OSC4M start-up */
OSC4MStartUpStatus01 = MRCC_WaitForOSC4MStartUp();
if(OSC4MStartUpStatus01 == SUCCESS)
{
/* Set HCLK to 60MHz */
MRCC_HCLKConfig(MRCC_CKSYS_Div1);
/* Set CKTIM to 60MHz */
MRCC_CKTIMConfig(MRCC_HCLK_Div1);
/* Set PCLK to 30MHz */
MRCC_PCLKConfig(MRCC_CKTIM_Div2);
/* Enable Flash Burst mode */
CFG_FLASHBurstConfig(CFG_FLASHBurst_Enable);
/* Set CK_SYS to 60 MHz */
MRCC_CKSYSConfig(MRCC_CKSYS_OSC4MPLL, MRCC_PLL_Mul_15);
}
/* GPIO pins optimized for 3V3 operation */
MRCC_IOVoltageRangeConfig(MRCC_IOVoltageRange_3V3);
/* GPIO clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_GPIO, ENABLE);
/* EXTIT clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_EXTIT, ENABLE);
/* TB clock source enable */
MRCC_PeripheralClockConfig(MRCC_Peripheral_TB, ENABLE);
/* Initialize the demonstration menu */
LCD_Init();
LCD_DisplayString(Line1, "www.FreeRTOS.org", BlackText);
LCD_DisplayString(Line2, " STR750 Demo ", BlackText);
EIC_IRQCmd(ENABLE);
}
/*-----------------------------------------------------------*/

View File

@@ -1,263 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
*/
/* Library includes. */
#include "75x_uart.h"
#include "75x_gpio.h"
#include "75x_eic.h"
#include "75x_mrcc.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
/* Demo application includes. */
#include "serial.h"
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serNO_BLOCK ( ( portTickType ) 0 )
/*-----------------------------------------------------------*/
/* Queues used to hold received characters, and characters waiting to be
transmitted. */
static xQueueHandle xRxedChars;
static xQueueHandle xCharsForTx;
static volatile portBASE_TYPE xQueueEmpty = pdTRUE;
/*-----------------------------------------------------------*/
/* The interrupt service routine - called from the assembly entry point. */
__arm void vSerialISR( void );
/*-----------------------------------------------------------*/
/*
* See the serial2.h header file.
*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
xComPortHandle xReturn;
UART_InitTypeDef UART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
EIC_IRQInitTypeDef EIC_IRQInitStructure;
/* Create the queues used to hold Rx and Tx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* If the queues were created correctly then setup the serial port
hardware. */
if( ( xRxedChars != serINVALID_QUEUE ) && ( xCharsForTx != serINVALID_QUEUE ) )
{
portENTER_CRITICAL();
{
/* Enable the UART0 Clock. */
MRCC_PeripheralClockConfig( MRCC_Peripheral_UART0, ENABLE );
/* Configure the UART0_Tx as alternate function */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_Init(GPIO0, &GPIO_InitStructure);
/* Configure the UART0_Rx as input floating */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Init(GPIO0, &GPIO_InitStructure);
/* Configure UART0. */
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No;
UART_InitStructure.UART_BaudRate = ulWantedBaud;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_TxFIFOLevel = UART_FIFOLevel_1_2; /* FIFO size 16 bytes, FIFO level 8 bytes */
UART_InitStructure.UART_RxFIFOLevel = UART_FIFOLevel_1_2; /* FIFO size 16 bytes, FIFO level 8 bytes */
UART_Init(UART0, &UART_InitStructure);
/* Enable the UART0 */
UART_Cmd(UART0, ENABLE);
/* Configure the IEC for the UART interrupts. */
EIC_IRQInitStructure.EIC_IRQChannelCmd = ENABLE;
EIC_IRQInitStructure.EIC_IRQChannel = UART0_IRQChannel;
EIC_IRQInitStructure.EIC_IRQChannelPriority = 1;
EIC_IRQInit(&EIC_IRQInitStructure);
xQueueEmpty = pdTRUE;
UART_ITConfig( UART0, UART_IT_Transmit | UART_IT_Receive, ENABLE );
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
/* This demo file only supports a single port but we have to return
something to comply with the standard demo header file. */
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* A couple of parameters that this port does not use. */
( void ) usStringLength;
( void ) pxPort;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART0. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
portBASE_TYPE xReturn;
/* Place the character in the queue of characters to be transmitted. */
portENTER_CRITICAL();
{
if( xQueueEmpty == pdTRUE )
{
UART0->DR = cOutChar;
xReturn = pdPASS;
}
else
{
if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
{
xReturn = pdFAIL;
}
else
{
xReturn = pdPASS;
}
}
xQueueEmpty = pdFALSE;
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/
__arm void vSerialISR( void )
{
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByPost = pdFALSE;
do
{
if( UART0->MIS & UART_IT_Transmit )
{
/* The interrupt was caused by the THR becoming empty. Are there any
more characters to transmit? */
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xTaskWokenByTx ) == pdTRUE )
{
/* A character was retrieved from the queue so can be sent to the
THR now. */
UART0->DR = cChar;
}
else
{
xQueueEmpty = pdTRUE;
}
UART_ClearITPendingBit( UART0, UART_IT_Transmit );
}
if( UART0->MIS & UART_IT_Receive )
{
/* The interrupt was caused by a character being received. Grab the
character from the RHR and place it in the queue of received
characters. */
cChar = UART0->DR;
xTaskWokenByPost = xQueueSendFromISR( xRxedChars, &cChar, xTaskWokenByPost );
UART_ClearITPendingBit( UART0, UART_IT_Receive );
}
} while( UART0->MIS );
/* If a task was woken by either a character being received or a character
being transmitted then we may need to switch to another task. */
portEND_SWITCHING_ISR( ( xTaskWokenByPost || xTaskWokenByTx ) );
}

View File

@@ -1,88 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Debug-Log/>
<Workspace>
<ColumnWidths>
<Column0>158</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Disassembly>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
<MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
<Build>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1004</ColumnWidth1>
<ColumnWidth2>267</ColumnWidth2>
<ColumnWidth3>66</ColumnWidth3>
</Build>
<Breakpoints/>
<Watch><Format><struct_types/><watch_formats><Fmt><Key>{W}Watch-0:TB->CR</Key><Value>4</Value></Fmt></watch_formats></Format><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>143</Column0><Column1>100</Column1><Column2>100</Column2><Column3>100</Column3></Watch><Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register></Static>
<Windows>
<Wnd0>
<Tabs>
<Tab>
<Identity>TabID-22366-21915</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-21843-21924</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-21385-32577</Identity>
<TabName>Breakpoints</TabName>
<Factory>Breakpoints</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<Tabs>
<Tab>
<Identity>TabID-346-21918</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd1></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM7_STR75x_IAR\main.c</Filename><XPos>0</XPos><YPos>119</YPos><SelStart>5333</SelStart><SelEnd>5333</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00a0bb80><key>iaridepm1</key></Toolbar-00a0bb80><Toolbar-02d66a60><key>debuggergui1</key></Toolbar-02d66a60></Sizes></Row0></Top><Left><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>796</Bottom><Right>232</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>167143</sizeVertCX><sizeVertCY>820988</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>130</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>132</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>135802</sizeHorzCY><sizeVertCX>0</sizeVertCX><sizeVertCY>0</sizeVertCY></Rect></Wnd0></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

View File

@@ -1,40 +0,0 @@
[JLinkDriver]
WatchCond=_ 0
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[StackPlugin]
Enabled=1
OverflowWarningsEnabled=1
WarningThreshold=90
SpWarningsEnabled=1
WarnHow=0
UseTrigger=1
TriggerName=main
LimitSize=0
ByteLimit=50
[Interrupts]
Enabled=1
[MemoryMap]
Enabled=0
Base=0
UseAuto=0
TypeViolation=1
UnspecRange=1
ActionState=1
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[Disassemble mode]
mode=0
[Breakpoints]
Count=0
[TraceHelper]
Enabled=0
ShowSource=1

View File

@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/Debug</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>224</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build>
<PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Find-in-Files</Factory></Window><Window><Factory>Debug-Log</Factory></Window><Window><Factory>Breakpoints</Factory></Window></Windows></PreferedWindows><ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1004</ColumnWidth1><ColumnWidth2>267</ColumnWidth2><ColumnWidth3>66</ColumnWidth3></Build>
<Find-in-Files>
<ColumnWidth0>482</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Build</Factory></Window><Window><Factory>Debug-Log</Factory></Window><Window><Factory>Breakpoints</Factory></Window></Windows></PreferedWindows></Find-in-Files>
<Debug-Log><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Build</Factory></Window><Window><Factory>Find-in-Files</Factory></Window><Window><Factory>Breakpoints</Factory></Window></Windows></PreferedWindows></Debug-Log>
<TerminalIO/>
<Profiling/>
<Disassembly><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly><Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Build</Factory></Window><Window><Factory>Find-in-Files</Factory></Window><Window><Factory>Debug-Log</Factory></Window></Windows></PreferedWindows></Breakpoints></Static>
<Windows>
<Wnd0>
<Tabs>
<Tab>
<Identity>TabID-5322-15070</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/source</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1><Tabs><Tab><Identity>TabID-10308-14988</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-11884-28246</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory><Session/></Tab><Tab><Identity>TabID-30248-21129</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd1></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM7_STR75x_IAR\main.c</Filename><XPos>0</XPos><YPos>119</YPos><SelStart>5333</SelStart><SelEnd>5333</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\temp\rc\2\V4.1.2rc1\Demo\ARM7_STR75x_IAR\STLibrary\inc\75x_map.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>1345</SelStart><SelEnd>1345</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\temp\rc\2\V4.1.2rc1\Demo\ARM7_STR75x_IAR\STLibrary\src\75x_it.c</Filename><XPos>0</XPos><YPos>21</YPos><SelStart>1939</SelStart><SelEnd>1939</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\temp\rc\2\V4.1.2rc1\Demo\ARM7_STR75x_IAR\STLibrary\src\lcd.c</Filename><XPos>0</XPos><YPos>212</YPos><SelStart>16221</SelStart><SelEnd>16239</SelEnd></Tab><ActiveTab>3</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00a0bb80><key>iaridepm1</key></Toolbar-00a0bb80></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>705</Bottom><Right>298</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>214286</sizeVertCX><sizeVertCY>727366</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>221</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>223</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>229424</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>205761</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@@ -1,76 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 96000000 )
#define configCPU_PERIPH_HZ ( ( unsigned portLONG ) 48000000 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 180 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) 50000 )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,108 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Library includes. */
#include "91x_lib.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
#define partstMAX_LEDs 4
#define partstLED_PORT *( ( unsigned portSHORT * ) 0x5800f3fc )
/*-----------------------------------------------------------*/
static GPIO_InitTypeDef GPIO9_InitStruct;
void vParTestInitialise( void )
{
/* Configure the bits used to flash LED's on port 9 as output. */
GPIO_StructInit( &GPIO9_InitStruct );
GPIO9_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO9_InitStruct.GPIO_Direction = GPIO_PinOutput;
GPIO_Init( GPIO9, &GPIO9_InitStruct );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned portSHORT usLED = 0x0001;
if( uxLED < partstMAX_LEDs )
{
usLED <<= uxLED;
portENTER_CRITICAL();
{
if( xValue )
{
partstLED_PORT &= ~usLED;
}
else
{
partstLED_PORT |= usLED;
}
}
portEXIT_CRITICAL();
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portSHORT usLED = 0x0001;
if( uxLED < partstMAX_LEDs )
{
usLED <<= uxLED;
portENTER_CRITICAL();
{
if( partstLED_PORT & usLED )
{
partstLED_PORT &= ~usLED;
}
else
{
partstLED_PORT |= usLED;
}
}
portEXIT_CRITICAL();
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,218 +0,0 @@
/*;******************** (C) COPYRIGHT 2005 STMicroelectronics **************************
;* File Name : lnkarm_ram.xcl
;* Author : MCD Application Team
;* Date First Issued : 09/27/2005 : V1.0
;* Description : XLINK command file for EWARM/ICCARM
;* : Usage: xlink -f lnkarm <your_object_file(s)>
;* : -s <program start label> <C/C++ runtime library>
;*************************************************************************************
;* History:
;* 09/27/2005 : V1.0
;*************************************************************************************
; THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
; WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
; AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
; OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
; OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
; CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
;*************************************************************************************/
// Code memory in flash
-DROMSTART=0x00000000
-DROMEND=0x00080000
-DVECSTART=ROMSTART
// Data memory
-DRAMSTART=0x4000000
-DRAMEND=0x04018000
//*************************************************************************
// In this file it is assumed that the system has the following
// memory layout:
//
// Exception vectors [0x000000--0x00001F] RAM or ROM
// ROMSTART--ROMEND [0x008000--0x0FFFFF] ROM (or other non-volatile memory)
// RAMSTART--RAMEND [0x100000--0x7FFFFF] RAM (or other read/write memory)
//
// -------------
// Code segments - may be placed anywhere in memory.
// -------------
//
// INTVEC -- Exception vector table.
// SWITAB -- Software interrupt vector table.
// ICODE -- Startup (cstartup) and exception code.
// DIFUNCT -- Dynamic initialization vectors used by C++.
// CODE -- Compiler generated code.
// CODE_I -- Compiler generated code declared __ramfunc (executes in RAM)
// CODE_ID -- Initializer for CODE_I (ROM).
//
// -------------
// Data segments - may be placed anywhere in memory.
// -------------
//
// CSTACK -- The stack used by C/C++ programs (system and user mode).
// IRQ_STACK -- The stack used by IRQ service routines.
// SVC_STACK -- The stack used in supervisor mode
// (Define other exception stacks as needed for
// FIQ, ABT, UND).
// HEAP -- The heap used by malloc and free in C and new and
// delete in C++.
// INITTAB -- Table containing addresses and sizes of segments that
// need to be initialized at startup (by cstartup).
// CHECKSUM -- The linker places checksum byte(s) in this segment,
// when the -J linker command line option is used.
// DATA_y -- Data objects.
//
// Where _y can be one of:
//
// _AN -- Holds uninitialized located objects, i.e. objects with
// an absolute location given by the @ operator or the
// #pragma location directive. Since these segments
// contain objects which already have a fixed address,
// they should not be mentioned in this linker command
// file.
// _C -- Constants (ROM).
// _I -- Initialized data (RAM).
// _ID -- The original content of _I (copied to _I by cstartup) (ROM).
// _N -- Uninitialized data (RAM).
// _Z -- Zero initialized data (RAM).
//
// Note: Be sure to use end values for the defined address ranges.
// Otherwise, the linker may allocate space outside the
// intended memory range.
//*************************************************************************
//************************************************
// Inform the linker about the CPU family used.
//************************************************
-carm
//*************************************************************************
// Segment placement - General information
//
// All numbers in the segment placement command lines below are interpreted
// as hexadecimal unless they are immediately preceded by a '.', which
// denotes decimal notation.
//
// When specifying the segment placement using the -P instead of the -Z
// option, the linker is free to split each segment into its segment parts
// and randomly place these parts within the given ranges in order to
// achieve a more efficient memory usage. One disadvantage, however, is
// that it is not possible to find the start or end address (using
// the assembler operators .sfb./.sfe.) of a segment which has been split
// and reformed.
//
// When generating an output file which is to be used for programming
// external ROM/Flash devices, the -M linker option is very useful
// (see xlink.pdf for details).
//*************************************************************************
//*************************************************************************
// Read-only segments mapped to ROM.
//*************************************************************************
//************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//************************************************
-Z(CODE)INTVEC=ROMSTART-ROMEND
//************************************************
// Startup code and exception routines (ICODE).
//************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND
//************************************************
// Code segments may be placed anywhere.
//************************************************
-Z(CODE)CODE=ROMSTART-ROMEND
//************************************************
// Original ROM location for __ramfunc code copied
// to and executed from RAM.
//************************************************
-Z(CONST)CODE_ID=ROMSTART-ROMEND
//************************************************
// Various constants and initializers.
//************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND
//*************************************************************************
// Read/write segments mapped to RAM.
//*************************************************************************
//************************************************
// Data segments.
//************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
//************************************************
// __ramfunc code copied to and executed from RAM.
//************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
//************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// CODE_ID segment instead, but to keep symbol and
// debug information associated with the CODE_I
// segment, where the code will execute.
//************************************************
-QCODE_I=CODE_ID
//*************************************************************************
// Stack and heap segments.
//*************************************************************************
//-D_CSTACK_SIZE=0x1000
//-D_SVC_STACK_SIZE=0x100
//-D_IRQ_STACK_SIZE=0x400
//-D_FIQ_STACK_SIZE=0x40
//-D_ABT_STACK_SIZE=0x40
//-D_UND_STACK_SIZE=0x40
//-D_HEAP_SIZE=0x400
//-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)UND_STACK+_UND_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)FIQ_STACK+_FIQ_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
//-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND
//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
// "-yn": Suppress DWARF debug output
// "-yp": Multiple ELF program sections
// "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************
// -Felf

View File

@@ -1,417 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used.
*/
/*
* Creates all the demo application tasks, then starts the scheduler. The WEB
* documentation provides more details of the demo application tasks.
*
* A few tasks are created that are not part of the standard demo. These are
* the 'LCD' task, the 'LCD Message' task, a WEB server task and the 'Check'
* task.
*
* The LCD task is the only task that accesses the LCD directly, so mutual
* exclusion is ensured. Any task wishing to display text sends the LCD task
* a message containing a pointer to the string that should be displayed.
* The LCD task itself just blocks on a queue waiting for such a message to
* arrive - processing each in turn.
*
* The LCD Message task does nothing other than periodically send messages to
* the LCD task. The messages originating from the LCD Message task are
* displayed on the top row of the LCD.
*
* The Check task only executes every three seconds but has the highest
* priority so is guaranteed to get processor time. Its main function is to
* check that all the other tasks are still operational. Most tasks maintain
* a unique count that is incremented each time the task successfully completes
* a cycle of its function. Should any error occur within such a task the
* count is permanently halted. The check task sets a bit in an error status
* flag should it find any counter variable at a value that indicates an
* error has occurred. The error flag value is converted to a string and sent
* to the LCD task for display on the bottom row on the LCD.
*/
/* Standard includes. */
#include <stdio.h>
/* Library includes. */
#include "91x_lib.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
/* Demo application includes. */
#include "lcd.h"
#include "flash.h"
#include "integer.h"
#include "PollQ.h"
#include "BlockQ.h"
#include "semtest.h"
#include "dynamic.h"
#include "partest.h"
#include "flop.h"
#include "comtest2.h"
#include "serial.h"
/* Priorities for the demo application tasks. */
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainMSG_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* Delays used by the various tasks defined in this file. */
#define mainCHECK_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
#define mainSTRING_WRITE_DELAY ( 500 / portTICK_RATE_MS )
#define mainLCD_DELAY ( 20 / portTICK_RATE_MS )
/* Constants for the ComTest tasks. */
#define mainCOM_TEST_BAUD_RATE ( ( unsigned portLONG ) 115200 )
#define mainCOM_TEST_LED ( 3 )
/* The maximum number of messages that can be pending to be written to the LCD. */
#define mainLCD_QUEUE_LEN ( 6 )
/* Dimension the buffer used to write the error flag string. */
#define mainMAX_FLAG_STRING_LEN ( 32 )
/* The structure that is passed on the LCD message queue. */
typedef struct
{
portCHAR **ppcMessageToDisplay; /*<< Points to a char* pointing to the message to display. */
portBASE_TYPE xRow; /*<< The row on which the message should be displayed. */
} xLCDMessage;
/*-----------------------------------------------------------*/
/*
* The task that executes at the highest priority and calls
* prvCheckOtherTasksAreStillRunning(). See the description at the top
* of the file.
*/
static void vErrorChecks( void *pvParameters );
/*
* Configure the processor clock and ports.
*/
static void prvSetupHardware( void );
/*
* Checks that all the demo application tasks are still executing without error
* - as described at the top of the file. Called by vErrorChecks().
*/
static void prvCheckOtherTasksAreStillRunning( void );
/*
* The WEB server task prototype. The task is created in this file but defined
* elsewhere.
*/
extern void vuIP_Task(void *pvParameters);
/*
* The task that displays text on the LCD.
*/
static void prvLCDTask( void * pvParameters );
/*
* The task that sends messages to be displayed on the top row of the LCD.
*/
static void prvLCDMessageTask( void * pvParameters );
/*-----------------------------------------------------------*/
/* The queue used to pass messages to the LCD task. */
static xQueueHandle xLCDQueue;
/* Error status flag. */
static unsigned portLONG ulErrorFlags = 0;
/*-----------------------------------------------------------*/
/*
* Starts all the other tasks, then starts the scheduler.
*/
void main( void )
{
#ifdef DEBUG
debug();
#endif
/* Setup any hardware that has not already been configured by the low
level init routines. */
prvSetupHardware();
/* Create the queue used to send data to the LCD task. */
xLCDQueue = xQueueCreate( mainLCD_QUEUE_LEN, sizeof( xLCDMessage ) );
/* Start all the standard demo application tasks. */
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartDynamicPriorityTasks();
vStartMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
/* Start the tasks which are defined in this file. */
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainLCD_TASK_PRIORITY, NULL );
xTaskCreate( prvLCDMessageTask, "MSG", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainMSG_TASK_PRIORITY, NULL );
/* Finally, create the WEB server task. */
xTaskCreate( vuIP_Task, "uIP", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
/* Start the scheduler.
NOTE : Tasks run in system mode and the scheduler runs in Supervisor mode.
The processor MUST be in supervisor mode when vTaskStartScheduler is
called. The demo applications included in the FreeRTOS.org download switch
to supervisor mode prior to main being called. If you are not using one of
these demo application projects then ensure Supervisor mode is used here. */
vTaskStartScheduler();
/* We should never get here as control is now taken by the scheduler. */
for( ;; );
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
/* Configuration taken from the ST code.
Set Flash banks size & address */
FMI_BankRemapConfig( 4, 2, 0, 0x80000 );
/* FMI Waite States */
FMI_Config( FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, FMI_LVD_ENABLE, FMI_FREQ_HIGH );
/* Configure the FPLL = 96MHz, and APB to 48MHz. */
SCU_PCLKDivisorConfig( SCU_PCLK_Div2 );
SCU_PLLFactorsConfig( 192, 25, 2 );
SCU_PLLCmd( ENABLE );
SCU_MCLKSourceConfig( SCU_MCLK_PLL );
WDG_Cmd( DISABLE );
VIC_DeInit();
/* GPIO8 clock source enable, used by the LCD. */
SCU_APBPeriphClockConfig(__GPIO8, ENABLE);
GPIO_DeInit(GPIO8);
/* GPIO 9 clock source enable, used by the LCD. */
SCU_APBPeriphClockConfig(__GPIO9, ENABLE);
GPIO_DeInit(GPIO9);
/* Enable VIC clock */
SCU_AHBPeriphClockConfig(__VIC, ENABLE);
SCU_AHBPeriphReset(__VIC, DISABLE);
/* Peripheral initialisation. */
LCD_Init();
vParTestInitialise();
}
/*-----------------------------------------------------------*/
static void vErrorChecks( void *pvParameters )
{
static portCHAR cCheckVal[ mainMAX_FLAG_STRING_LEN ];
portCHAR *pcFlagString;
xLCDMessage xMessageToSend;
portTickType xLastWakeTime;
portCHAR *pcStringsToDisplay[] = {
"Check status flag"
};
/* The parameters are not used in this task. */
( void ) pvParameters;
pcFlagString = &cCheckVal[ 0 ];
/* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil()
functions correctly. */
xLastWakeTime = xTaskGetTickCount();
/* Cycle for ever, delaying then checking all the other tasks are still
operating without error. */
for( ;; )
{
/* Delay until it is time to execute again. */
vTaskDelayUntil( &xLastWakeTime, mainCHECK_PERIOD );
/* Check all the other tasks to see if the error flag needs updating. */
prvCheckOtherTasksAreStillRunning();
/* Create a string indicating the error flag status. */
sprintf( cCheckVal, "equals 0x%x ", ulErrorFlags );
xMessageToSend.xRow = Line2;
/* Send the first part of the message to the LCD task. */
xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ 0 ];
xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 );
vTaskDelay( mainSTRING_WRITE_DELAY );
/* Send the second part of the message to the LCD task. */
xMessageToSend.ppcMessageToDisplay = &pcFlagString;
xQueueSend( xLCDQueue, ( void * ) &xMessageToSend, 0 );
}
}
/*-----------------------------------------------------------*/
static void prvCheckOtherTasksAreStillRunning( void )
{
if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x01;
}
if( xArePollingQueuesStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x02;
}
if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x04;
}
if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x08;
}
if( xAreComTestTasksStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x10;
}
if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x20;
}
if( xAreMathsTaskStillRunning() != pdTRUE )
{
ulErrorFlags |= 0x40;
}
}
/*-----------------------------------------------------------*/
static void prvLCDMessageTask( void * pvParameters )
{
xQueueHandle *pxLCDQueue;
xLCDMessage xMessageToSend;
portBASE_TYPE xIndex = 0;
/* The strings that are written to the LCD. */
portCHAR *pcStringsToDisplay[] = {
"IAR ",
"STR912 ",
"Demo ",
"www.FreeRTOS.org",
""
};
/* To test the parameter passing mechanism, the queue on which messages are
posted is passed in as a parameter even though it is available as a file
scope variable anyway. */
pxLCDQueue = ( xQueueHandle * ) pvParameters;
for( ;; )
{
/* Wait until it is time to move onto the next string. */
vTaskDelay( mainSTRING_WRITE_DELAY );
/* Configure the message object to send to the LCD task. */
xMessageToSend.ppcMessageToDisplay = &pcStringsToDisplay[ xIndex ];
xMessageToSend.xRow = Line1;
/* Post the message to be displayed. */
xQueueSend( *pxLCDQueue, ( void * ) &xMessageToSend, 0 );
/* Move onto the next message, wrapping when necessary. */
xIndex++;
if( *( pcStringsToDisplay[ xIndex ] ) == 0x00 )
{
xIndex = 0;
/* Delay longer before going back to the start of the messages. */
vTaskDelay( mainSTRING_WRITE_DELAY * 2 );
}
}
}
/*-----------------------------------------------------------*/
void prvLCDTask( void * pvParameters )
{
xQueueHandle *pxLCDQueue;
xLCDMessage xReceivedMessage;
portCHAR *pcString;
/* To test the parameter passing mechanism, the queue on which messages are
received is passed in as a parameter even though it is available as a file
scope variable anyway. */
pxLCDQueue = ( xQueueHandle * ) pvParameters;
for( ;; )
{
/* Wait for a message to arrive. */
if( xQueueReceive( *pxLCDQueue, &xReceivedMessage, portMAX_DELAY ) )
{
/* Where is the string we are going to display? */
pcString = *xReceivedMessage.ppcMessageToDisplay;
LCD_DisplayString(xReceivedMessage.xRow, pcString, BlackText);
/* The delay here is just to ensure the LCD task does not starve
out lower priority tasks as writhing to the LCD can take a long
time. */
vTaskDelay( mainLCD_DELAY );
}
}
}
/*-----------------------------------------------------------*/

View File

@@ -1,289 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART1.
*/
/* Library includes. */
#include "91x_lib.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "semphr.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Misc defines. */
#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
#define serNO_BLOCK ( ( portTickType ) 0 )
#define serTX_BLOCK_TIME ( 40 / portTICK_RATE_MS )
/* Interrupt and status bit definitions. */
#define mainTXRIS 0x20
#define mainRXRIS 0x50
#define serTX_FIFO_FULL 0x20
#define serCLEAR_ALL_INTERRUPTS 0x3ff
/*-----------------------------------------------------------*/
/* The queue used to hold received characters. */
static xQueueHandle xRxedChars;
/* The semaphore used to wake a task waiting for space to become available
in the FIFO. */
static xSemaphoreHandle xTxFIFOSemaphore;
/*-----------------------------------------------------------*/
/* UART interrupt handler. */
void UART1_IRQHandler( void );
/* The interrupt service routine - called from the assembly entry point. */
__arm void UART1_IRQHandler( void );
/*-----------------------------------------------------------*/
/* Flag to indicate whether or not a task is blocked waiting for space on
the FIFO. */
static portLONG lTaskWaiting = pdFALSE;
/*
* See the serial2.h header file.
*/
xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
xComPortHandle xReturn;
UART_InitTypeDef xUART1_Init;
GPIO_InitTypeDef GPIO_InitStructure;
/* Create the queues used to hold Rx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
/* Create the semaphore used to wake a task waiting for space to become
available in the FIFO. */
vSemaphoreCreateBinary( xTxFIFOSemaphore );
/* If the queue/semaphore was created correctly then setup the serial port
hardware. */
if( ( xRxedChars != serINVALID_QUEUE ) && ( xTxFIFOSemaphore != serINVALID_QUEUE ) )
{
/* Pre take the semaphore so a task will block if it tries to access
it. */
xSemaphoreTake( xTxFIFOSemaphore, 0 );
/* Configure the UART. */
xUART1_Init.UART_WordLength = UART_WordLength_8D;
xUART1_Init.UART_StopBits = UART_StopBits_1;
xUART1_Init.UART_Parity = UART_Parity_No;
xUART1_Init.UART_BaudRate = ulWantedBaud;
xUART1_Init.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
xUART1_Init.UART_Mode = UART_Mode_Tx_Rx;
xUART1_Init.UART_FIFO = UART_FIFO_Enable;
/* Enable the UART1 Clock */
SCU_APBPeriphClockConfig( __UART1, ENABLE );
/* Enable the GPIO3 Clock */
SCU_APBPeriphClockConfig( __GPIO3, ENABLE );
/* Configure UART1_Rx pin GPIO3.2 */
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
GPIO_Init( GPIO3, &GPIO_InitStructure );
/* Configure UART1_Tx pin GPIO3.3 */
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ;
GPIO_Init( GPIO3, &GPIO_InitStructure );
portENTER_CRITICAL();
{
/* Configure the UART itself. */
UART_DeInit( UART1 );
UART_Init( UART1, &xUART1_Init );
UART_ITConfig( UART1, UART_IT_Receive | UART_IT_Transmit, ENABLE );
UART1->ICR = serCLEAR_ALL_INTERRUPTS;
UART_LoopBackConfig( UART1, DISABLE );
UART_IrDACmd( IrDA1, DISABLE );
/* Configure the VIC for the UART interrupts. */
VIC_Config( UART1_ITLine, VIC_IRQ, 9 );
VIC_ITCmd( UART1_ITLine, ENABLE );
UART_Cmd( UART1, ENABLE );
lTaskWaiting = pdFALSE;
}
portEXIT_CRITICAL();
}
else
{
xReturn = ( xComPortHandle ) 0;
}
/* This demo file only supports a single port but we have to return
something to comply with the standard demo header file. */
return xReturn;
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
{
signed portCHAR *pxNext;
/* A couple of parameters that this port does not use. */
( void ) usStringLength;
( void ) pxPort;
/* NOTE: This implementation does not handle the queue being full as no
block time is used! */
/* The port handle is not required as this driver only supports UART1. */
( void ) pxPort;
/* Send each character in the string, one at a time. */
pxNext = ( signed portCHAR * ) pcString;
while( *pxNext )
{
xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
pxNext++;
}
}
/*-----------------------------------------------------------*/
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
{
portBASE_TYPE xReturn;
portENTER_CRITICAL();
{
/* Can we write to the FIFO? */
if( UART1->FR & serTX_FIFO_FULL )
{
/* Wait for the interrupt letting us know there is space on the
FIFO. It is ok to block in a critical section, interrupts will be
enabled for other tasks once we force a switch. */
lTaskWaiting = pdTRUE;
/* Just to be a bit different this driver uses a semaphore to
block the sending task when the FIFO is full. The standard COMTest
task assumes a queue of adequate length exists so does not use
a block time. For this demo the block time is therefore hard
coded. */
xReturn = xSemaphoreTake( xTxFIFOSemaphore, serTX_BLOCK_TIME );
if( xReturn )
{
UART1->DR = cOutChar;
}
}
else
{
UART1->DR = cOutChar;
xReturn = pdPASS;
}
}
portEXIT_CRITICAL();
return xReturn;
}
/*-----------------------------------------------------------*/
void vSerialClose( xComPortHandle xPort )
{
/* Not supported as not required by the demo application. */
}
/*-----------------------------------------------------------*/
void UART1_IRQHandler( void )
{
signed portCHAR cChar;
portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByPost = pdFALSE;
while( UART1->RIS & mainRXRIS )
{
/* The interrupt was caused by a character being received. Grab the
character from the DR and place it in the queue of received
characters. */
cChar = UART1->DR;
xTaskWokenByPost = xQueueSendFromISR( xRxedChars, &cChar, xTaskWokenByPost );
}
if( UART1->RIS & mainTXRIS )
{
if( lTaskWaiting == pdTRUE )
{
/* This interrupt was caused by space becoming available on the Tx
FIFO, wake any task that is waiting to post (if any). */
xTaskWokenByTx = xSemaphoreGiveFromISR( xTxFIFOSemaphore, xTaskWokenByTx );
lTaskWaiting = pdFALSE;
}
UART1->ICR = mainTXRIS;
}
/* If a task was woken by either a character being received or a character
being transmitted then we may need to switch to another task. */
portEND_SWITCHING_ISR( ( xTaskWokenByPost || xTaskWokenByTx ) );
}

View File

@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project>
<Desktop>
<Static>
<Debug-Log><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Debug-Log>
<Workspace>
<ColumnWidths>
<Column0>186</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
<PreferedWindows>
<Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
</Workspace>
<Disassembly>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
<MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
<Build>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1004</ColumnWidth1>
<ColumnWidth2>267</ColumnWidth2>
<ColumnWidth3>66</ColumnWidth3>
<PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Debug-Log</Factory></Window><Window><Factory>Breakpoints</Factory></Window></Windows></PreferedWindows></Build>
<Register>
<PreferedWindows>
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
</Register>
<Watch>
<Format>
<struct_types><Fmt><Key>ENET_DMADSCRBase-dmaPackStatus</Key><Value>4</Value></Fmt><Fmt><Key>GPIO_TypeDef-DDR</Key><Value>4</Value></Fmt></struct_types>
<watch_formats><Fmt><Key>{W}Watch-0:ENET_DMA->ISR</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ENET_DMA->ISR</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ulLinkAbilityReg</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ulStatusReg</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-2: ulHigh</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-2:ulLow</Key><Value>4</Value></Fmt></watch_formats>
</Format>
<PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>145</Column0><Column1>102</Column1><Column2>133</Column2><Column3>100</Column3></Watch>
<Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Breakpoints><Find-in-Files><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ColumnWidth0>482</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2></Find-in-Files><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ViewArgs>1</ViewArgs></CallStack><Memory><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory><QuickWatch><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>100</Column0><Column1>116</Column1><Column2>100</Column2><Column3>100</Column3></QuickWatch></Static>
<Windows>
<Wnd2><Tabs><Tab><Identity>TabID-14723-2909</Identity><TabName>Workspace</TabName><Factory>Workspace</Factory><Session><NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/RTOS Source</ExpandedNode><ExpandedNode>RTOSDemo/System Files</ExpandedNode><ExpandedNode>RTOSDemo/uIP</ExpandedNode></NodeDict></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-596-3113</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\port.c</Filename><XPos>0</XPos><YPos>262</YPos><SelStart>8272</SelStart><SelEnd>8272</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect_IAR.s</Filename><XPos>0</XPos><YPos>99</YPos><SelStart>4979</SelStart><SelEnd>4979</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\queue.c</Filename><XPos>0</XPos><YPos>420</YPos><SelStart>17603</SelStart><SelEnd>17603</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\portasm.s79</Filename><XPos>0</XPos><YPos>21</YPos><SelStart>2470</SelStart><SelEnd>2470</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\tasks.c</Filename><XPos>0</XPos><YPos>1018</YPos><SelStart>34281</SelStart><SelEnd>34281</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>9</YPos><SelStart>1968</SelStart><SelEnd>1968</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init_IAR.s</Filename><XPos>0</XPos><YPos>70</YPos><SelStart>3703</SelStart><SelEnd>3703</SelEnd></Tab><ActiveTab>6</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\source\91x_enet.c</Filename><XPos>1</XPos><YPos>409</YPos><SelStart>13997</SelStart><SelEnd>13997</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c</Filename><XPos>0</XPos><YPos>256</YPos><SelStart>7317</SelStart><SelEnd>7317</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\include\91x_enet.h</Filename><XPos>0</XPos><YPos>126</YPos><SelStart>5481</SelStart><SelEnd>5481</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00a0baa0><key>iaridepm1</key></Toolbar-00a0baa0><Toolbar-01af6ce0><key>debuggergui1</key></Toolbar-01af6ce0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>728</Bottom><Right>279</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>194</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>199588</sizeHorzCY><sizeVertCX>200714</sizeVertCX><sizeVertCY>751029</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>200</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>205761</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Project>

View File

@@ -1,21 +0,0 @@
[DisAssemblyWindow]
NumStates=_ 1
State 1=_ 1
[JLinkDriver]
WatchCond=_ 0
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
[Log file]
LoggingEnabled=_ 0
LogFile=_ ""
Category=_ 0
[TermIOLog]
LoggingEnabled=_ 0
LogFile=_ ""
[Disassemble mode]
mode=2
[Breakpoints]
Count=0
[TraceHelper]
Enabled=0
ShowSource=1

View File

@@ -1,66 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Workspace>
<ConfigDictionary>
<CurrentConfigs><Project>RTOSDemo/THUMB</Project></CurrentConfigs></ConfigDictionary>
<Desktop>
<Static>
<Workspace>
<ColumnWidths>
<Column0>236</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
</Workspace>
<Build>
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1004</ColumnWidth1><ColumnWidth2>267</ColumnWidth2><ColumnWidth3>66</ColumnWidth3></Build>
</Static>
<Windows>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-5518-19908</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode></NodeDict></Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-22895-20401</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>1913</SelStart><SelEnd>1925</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c</Filename><XPos>0</XPos><YPos>27</YPos><SelStart>2708</SelStart><SelEnd>3382</SelEnd></Tab><ActiveTab>1</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-00a0baa0><key>iaridepm1</key></Toolbar-00a0baa0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>363</Bottom><Right>310</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>222857</sizeVertCX><sizeVertCY>751029</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>200</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>205761</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

View File

@@ -1,233 +0,0 @@
/**
* \addtogroup httpd
* @{
*/
/**
* \file
* Web server script interface
* \author
* Adam Dunkels <adam@sics.se>
*
*/
/*
* Copyright (c) 2001-2006, Adam Dunkels.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This file is part of the uIP TCP/IP stack.
*
* $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
*
*/
#include "uip.h"
#include "psock.h"
#include "httpd.h"
#include "httpd-cgi.h"
#include "httpd-fs.h"
#include <stdio.h>
#include <string.h>
HTTPD_CGI_CALL(file, "file-stats", file_stats);
HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
HTTPD_CGI_CALL(net, "net-stats", net_stats);
HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats );
static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, NULL };
/*---------------------------------------------------------------------------*/
static
PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
{
PSOCK_BEGIN(&s->sout);
PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
httpd_cgifunction
httpd_cgi(char *name)
{
const struct httpd_cgi_call **f;
/* Find the matching name in the table, return the function. */
for(f = calls; *f != NULL; ++f) {
if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
return (*f)->function;
}
}
return nullfunction;
}
/*---------------------------------------------------------------------------*/
static unsigned short
generate_file_stats(void *arg)
{
char *f = (char *)arg;
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
}
/*---------------------------------------------------------------------------*/
static
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
{
PSOCK_BEGIN(&s->sout);
PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
static const char closed[] = /* "CLOSED",*/
{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
static const char syn_rcvd[] = /* "SYN-RCVD",*/
{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
0x44, 0};
static const char syn_sent[] = /* "SYN-SENT",*/
{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
0x54, 0};
static const char established[] = /* "ESTABLISHED",*/
{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
0x45, 0x44, 0};
static const char fin_wait_1[] = /* "FIN-WAIT-1",*/
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
0x54, 0x2d, 0x31, 0};
static const char fin_wait_2[] = /* "FIN-WAIT-2",*/
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
0x54, 0x2d, 0x32, 0};
static const char closing[] = /* "CLOSING",*/
{0x43, 0x4c, 0x4f, 0x53, 0x49,
0x4e, 0x47, 0};
static const char time_wait[] = /* "TIME-WAIT,"*/
{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
0x49, 0x54, 0};
static const char last_ack[] = /* "LAST-ACK"*/
{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
0x4b, 0};
static const char *states[] = {
closed,
syn_rcvd,
syn_sent,
established,
fin_wait_1,
fin_wait_2,
closing,
time_wait,
last_ack};
static unsigned short
generate_tcp_stats(void *arg)
{
struct uip_conn *conn;
struct httpd_state *s = (struct httpd_state *)arg;
conn = &uip_conns[s->count];
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
"<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
htons(conn->lport),
htons(conn->ripaddr[0]) >> 8,
htons(conn->ripaddr[0]) & 0xff,
htons(conn->ripaddr[1]) >> 8,
htons(conn->ripaddr[1]) & 0xff,
htons(conn->rport),
states[conn->tcpstateflags & UIP_TS_MASK],
conn->nrtx,
conn->timer,
(uip_outstanding(conn))? '*':' ',
(uip_stopped(conn))? '!':' ');
}
/*---------------------------------------------------------------------------*/
static
PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
{
PSOCK_BEGIN(&s->sout);
for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
}
}
PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
static unsigned short
generate_net_stats(void *arg)
{
struct httpd_state *s = (struct httpd_state *)arg;
return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
"%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
}
static
PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
{
PSOCK_BEGIN(&s->sout);
#if UIP_STATISTICS
for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
++s->count) {
PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
}
#endif /* UIP_STATISTICS */
PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
extern void vTaskList( signed char *pcWriteBuffer );
static char cCountBuf[ 32 ];
long lRefreshCount = 0;
static unsigned short
generate_rtos_stats(void *arg)
{
lRefreshCount++;
sprintf( cCountBuf, "<p><br>Refresh count = %d", lRefreshCount );
vTaskList( uip_appdata );
strcat( uip_appdata, cCountBuf );
return strlen( uip_appdata );
}
/*---------------------------------------------------------------------------*/
static
PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr))
{
PSOCK_BEGIN(&s->sout);
// for( s->count = 0; s->count < 4; ++s->count )
// {
PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL);
// }
PSOCK_END(&s->sout);
}
/** @} */

View File

@@ -1,299 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/* Standard includes. */
#include <string.h>
/* Library includes. */
#include "91x_lib.h"
#include "91x_enet.h"
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* uip includes. */
#include "uip.h"
#include "uip_arp.h"
#include "httpd.h"
#include "timer.h"
#include "clock-arch.h"
/*-----------------------------------------------------------*/
/* MAC address configuration. */
#define uipMAC_ADDR0 0x00
#define uipMAC_ADDR1 0x12
#define uipMAC_ADDR2 0x13
#define uipMAC_ADDR3 0x14
#define uipMAC_ADDR4 0x15
#define uipMAC_ADDR5 0x16
/* IP address configuration. */
#define uipIP_ADDR0 172
#define uipIP_ADDR1 25
#define uipIP_ADDR2 218
#define uipIP_ADDR3 26
/* Shortcut to the header within the Rx buffer. */
#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])
/* uIP update frequencies. */
#define uipMAX_BLOCK_TIME (configTICK_RATE_HZ / 4)
/* Interrupt status bit definition. */
#define uipDMI_RX_CURRENT_DONE 0x8000
/* If no buffers are available, then wait this long before looking again. */
#define uipBUFFER_WAIT_DELAY ( 10 / portTICK_RATE_MS )
#define uipBUFFER_WAIT_ATTEMPTS ( 10 )
/* Standard constant. */
#define uipTOTAL_FRAME_HEADER_SIZE 54
/*-----------------------------------------------------------*/
/*
* Send the uIP buffer to the MAC.
*/
static void prvENET_Send(void);
/*
* Setup the MAC address in the MAC itself, and in the uIP stack.
*/
static void prvSetMACAddress( void );
/*
* Used to return a pointer to the next buffer to be used.
*/
extern unsigned portCHAR *pcGetNextBuffer( void );
/*
* Port functions required by the uIP stack.
*/
void clock_init( void );
clock_time_t clock_time( void );
/*-----------------------------------------------------------*/
/* The semaphore used by the ISR to wake the uIP task. */
xSemaphoreHandle xSemaphore = NULL;
/*-----------------------------------------------------------*/
void clock_init(void)
{
/* This is done when the scheduler starts. */
}
/*-----------------------------------------------------------*/
clock_time_t clock_time( void )
{
return xTaskGetTickCount();
}
/*-----------------------------------------------------------*/
void vuIP_Task( void *pvParameters )
{
portBASE_TYPE i;
uip_ipaddr_t xIPAddr;
struct timer periodic_timer, arp_timer;
/* Create the semaphore used by the ISR to wake this task. */
vSemaphoreCreateBinary( xSemaphore );
/* Initialise the uIP stack. */
timer_set( &periodic_timer, configTICK_RATE_HZ / 2 );
timer_set( &arp_timer, configTICK_RATE_HZ * 10 );
uip_init();
uip_ipaddr( xIPAddr, uipIP_ADDR0, uipIP_ADDR1, uipIP_ADDR2, uipIP_ADDR3 );
uip_sethostaddr( xIPAddr );
httpd_init();
/* Initialise the MAC. */
ENET_InitClocksGPIO();
ENET_Init();
portENTER_CRITICAL();
{
ENET_Start();
prvSetMACAddress();
VIC_Config( ENET_ITLine, VIC_IRQ, 1 );
VIC_ITCmd( ENET_ITLine, ENABLE );
ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE;
ENET_DMA->IER = uipDMI_RX_CURRENT_DONE;
}
portEXIT_CRITICAL();
while(1)
{
/* Is there received data ready to be processed? */
uip_len = ENET_HandleRxPkt( uip_buf );
if( uip_len > 0 )
{
/* Standard uIP loop taken from the uIP manual. */
if( xHeader->type == htons( UIP_ETHTYPE_IP ) )
{
uip_arp_ipin();
uip_input();
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
uip_arp_out();
prvENET_Send();
}
}
else if( xHeader->type == htons( UIP_ETHTYPE_ARP ) )
{
uip_arp_arpin();
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
prvENET_Send();
}
}
}
else
{
if( timer_expired( &periodic_timer ) )
{
timer_reset( &periodic_timer );
for( i = 0; i < UIP_CONNS; i++ )
{
uip_periodic( i );
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
uip_len is set to a value > 0. */
if( uip_len > 0 )
{
uip_arp_out();
prvENET_Send();
}
}
/* Call the ARP timer function every 10 seconds. */
if( timer_expired( &arp_timer ) )
{
timer_reset( &arp_timer );
uip_arp_timer();
}
}
else
{
/* We did not receive a packet, and there was no periodic
processing to perform. Block for a fixed period. If a packet
is received during this period we will be woken by the ISR
giving us the Semaphore. */
xSemaphoreTake( xSemaphore, configTICK_RATE_HZ / 2 );
}
}
}
}
/*-----------------------------------------------------------*/
static void prvENET_Send(void)
{
portBASE_TYPE i;
static unsigned portCHAR *pcTxData;
/* Get a DMA buffer into which we can write the data to send. */
for( i = 0; i < uipBUFFER_WAIT_ATTEMPTS; i++ )
{
pcTxData = pcGetNextBuffer();
if( pcTxData )
{
break;
}
else
{
vTaskDelay( uipBUFFER_WAIT_DELAY );
}
}
if( pcTxData )
{
/* Copy the header into the Tx buffer. */
memcpy( ( void * ) pcTxData, ( void * ) uip_buf, uipTOTAL_FRAME_HEADER_SIZE );
/* If there is room, also copy in the application data if any. */
if( ( uip_len > uipTOTAL_FRAME_HEADER_SIZE ) && ( uip_len <= ( ENET_BUFFER_SIZE - uipTOTAL_FRAME_HEADER_SIZE ) ) )
{
memcpy( ( void * ) &( pcTxData[ uipTOTAL_FRAME_HEADER_SIZE ] ), ( void * ) uip_appdata, ( uip_len - uipTOTAL_FRAME_HEADER_SIZE ) );
}
ENET_TxPkt( &pcTxData, uip_len );
}
}
/*-----------------------------------------------------------*/
void ENET_IRQHandler(void)
{
portBASE_TYPE xSwitchRequired;
/* Give the semaphore in case the uIP task needs waking. */
xSwitchRequired = xSemaphoreGiveFromISR( xSemaphore, pdFALSE );
/* Clear the interrupt. */
ENET_DMA->ISR = uipDMI_RX_CURRENT_DONE;
/* Switch tasks if necessary. */
portEND_SWITCHING_ISR( xSwitchRequired );
}
/*-----------------------------------------------------------*/
static void prvSetMACAddress( void )
{
struct uip_eth_addr xAddr;
/* Configure the MAC address in the uIP stack. */
xAddr.addr[ 0 ] = uipMAC_ADDR0;
xAddr.addr[ 1 ] = uipMAC_ADDR1;
xAddr.addr[ 2 ] = uipMAC_ADDR2;
xAddr.addr[ 3 ] = uipMAC_ADDR3;
xAddr.addr[ 4 ] = uipMAC_ADDR4;
xAddr.addr[ 5 ] = uipMAC_ADDR5;
uip_setethaddr( xAddr );
/* Write the MAC address to the MAC. */
ENET_MAC->MAL = ( uipMAC_ADDR3 << 24 ) | ( uipMAC_ADDR2 << 16 ) | ( uipMAC_ADDR1 << 8 ) | ( uipMAC_ADDR0 );
ENET_MAC->MAH = ( uipMAC_ADDR5 << 8 ) | ( uipMAC_ADDR4 );
}

View File

@@ -1,157 +0,0 @@
/**
* \addtogroup uipopt
* @{
*/
/**
* \name Project-specific configuration options
* @{
*
* uIP has a number of configuration options that can be overridden
* for each project. These are kept in a project-specific uip-conf.h
* file and all configuration names have the prefix UIP_CONF.
*/
/*
* Copyright (c) 2006, Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* This file is part of the uIP TCP/IP stack
*
* $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
*/
/**
* \file
* An example uIP configuration file
* \author
* Adam Dunkels <adam@sics.se>
*/
#ifndef __UIP_CONF_H__
#define __UIP_CONF_H__
#include <inttypes.h>
/**
* 8 bit datatype
*
* This typedef defines the 8-bit type used throughout uIP.
*
* \hideinitializer
*/
typedef uint8_t u8_t;
/**
* 16 bit datatype
*
* This typedef defines the 16-bit type used throughout uIP.
*
* \hideinitializer
*/
typedef uint16_t u16_t;
/**
* Statistics datatype
*
* This typedef defines the dataype used for keeping statistics in
* uIP.
*
* \hideinitializer
*/
typedef unsigned short uip_stats_t;
/**
* Maximum number of TCP connections.
*
* \hideinitializer
*/
#define UIP_CONF_MAX_CONNECTIONS 40
/**
* Maximum number of listening TCP ports.
*
* \hideinitializer
*/
#define UIP_CONF_MAX_LISTENPORTS 40
/**
* uIP buffer size.
*
* \hideinitializer
*/
#define UIP_CONF_BUFFER_SIZE 1500
/**
* CPU byte order.
*
* \hideinitializer
*/
#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN
/**
* Logging on or off
*
* \hideinitializer
*/
#define UIP_CONF_LOGGING 0
/**
* UDP support on or off
*
* \hideinitializer
*/
#define UIP_CONF_UDP 0
/**
* UDP checksums on or off
*
* \hideinitializer
*/
#define UIP_CONF_UDP_CHECKSUMS 1
/**
* uIP statistics on or off
*
* \hideinitializer
*/
#define UIP_CONF_STATISTICS 1
/* Here we include the header file for the application(s) we use in
our project. */
/*#include "smtp.h"*/
/*#include "hello-world.h"*/
/*#include "telnetd.h"*/
#include "webserver.h"
/*#include "dhcpc.h"*/
/*#include "resolv.h"*/
/*#include "webclient.h"*/
#endif /* __UIP_CONF_H__ */
/** @} */
/** @} */

View File

@@ -1,79 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include <iom323.h>
#define configCALL_STACK_SIZE 20
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 8000000 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 85 )
#define configTOTAL_HEAP_SIZE ( (size_t ) ( 1500 ) )
#define configMAX_TASK_NAME_LEN ( 8 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 1
#define configIDLE_SHOULD_YIELD 1
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 1
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet 0
#define INCLUDE_uxTaskPriorityGet 0
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 0
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#endif /* FREERTOS_CONFIG_H */

View File

@@ -1,123 +0,0 @@
/*
FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
***************************************************************************
See http://www.FreeRTOS.org for documentation, latest information, license
and contact details. Please ensure to read the configuration and relevant
port sections of the online documentation.
***************************************************************************
*/
/*
Changes from V2.0.0
+ Use scheduler suspends in place of critical sections.
Changes from V2.6.0
+ Replaced the inb() and outb() functions with direct memory
access. This allows the port to be built with the 20050414 build of
WinAVR.
*/
#include "FreeRTOS.h"
#include "task.h"
#include "partest.h"
/*-----------------------------------------------------------
* Simple parallel port IO routines.
*-----------------------------------------------------------*/
#define partstALL_BITS_OUTPUT ( ( unsigned portCHAR ) 0xff )
#define partstALL_OUTPUTS_OFF ( ( unsigned portCHAR ) 0xff )
#define partstMAX_OUTPUT_LED ( ( unsigned portCHAR ) 7 )
static volatile unsigned portCHAR ucCurrentOutputValue = partstALL_OUTPUTS_OFF; /*lint !e956 File scope parameters okay here. */
/*-----------------------------------------------------------*/
void vParTestInitialise( void )
{
ucCurrentOutputValue = partstALL_OUTPUTS_OFF;
/* Set port B direction to outputs. Start with all output off. */
DDRB = partstALL_BITS_OUTPUT;
PORTB = ucCurrentOutputValue;
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned portCHAR ucBit = ( unsigned portCHAR ) 1;
if( uxLED <= partstMAX_OUTPUT_LED )
{
ucBit <<= uxLED;
}
vTaskSuspendAll();
{
if( xValue == pdTRUE )
{
ucBit ^= ( unsigned portCHAR ) 0xff;
ucCurrentOutputValue &= ucBit;
}
else
{
ucCurrentOutputValue |= ucBit;
}
PORTB = ucCurrentOutputValue;
}
xTaskResumeAll();
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned portCHAR ucBit;
if( uxLED <= partstMAX_OUTPUT_LED )
{
ucBit = ( ( unsigned portCHAR ) 1 ) << uxLED;
vTaskSuspendAll();
{
if( ucCurrentOutputValue & ucBit )
{
ucCurrentOutputValue &= ~ucBit;
}
else
{
ucCurrentOutputValue |= ucBit;
}
PORTB = ucCurrentOutputValue;
}
xTaskResumeAll();
}
}

Some files were not shown because too many files have changed in this diff Show More