| 1 |
584 |
jeremybenn |
==========================================================================
|
| 2 |
|
|
Template Project for MB96348HS Series
|
| 3 |
|
|
==========================================================================
|
| 4 |
|
|
Fujitsu Microelectronics Europe GmbH
|
| 5 |
|
|
|
| 6 |
|
|
The following software is for demonstration purposes only. It is not
|
| 7 |
|
|
fully tested, nor validated in order to fullfill its task under all
|
| 8 |
|
|
circumstances. Therefore, this software or any part of it must only be
|
| 9 |
|
|
used in an evaluation laboratory environment.
|
| 10 |
|
|
This software is subject to the rules of our standard DISCLAIMER, that is
|
| 11 |
|
|
delivered with our SW-tools on the Fujitsu Microcontrollers DVD
|
| 12 |
|
|
(V5.0 or higher "\START.HTM").
|
| 13 |
|
|
==========================================================================
|
| 14 |
|
|
|
| 15 |
|
|
History
|
| 16 |
|
|
Date Ver Author Softune Description
|
| 17 |
|
|
2007-10-29 1.0 MPi V30L33R11 original version
|
| 18 |
|
|
2007-11-02 1.1 MPi V30L33R11 Added the watchdog functionality
|
| 19 |
|
|
Used vTaskStartScheduler() instead
|
| 20 |
|
|
of xPortStartScheduler()
|
| 21 |
|
|
2007-11-12 1.2 MPi V30L33R11 Updated FreeRTOS 4.6.1 and tested
|
| 22 |
|
|
2007-11-23 1.3 MPi V30L33R11 Seperated watchdog functionality in watchdog.c
|
| 23 |
|
|
and watchdog.h
|
| 24 |
|
|
2008-01-03 1.4 MPi V30L33R11 Added portYIELDFromISR() and now all the
|
| 25 |
|
|
demo application functions are working.
|
| 26 |
|
|
2008-01-04 1.5 MPi V30L33R11 Updated FreeRTOS 4.7.0 and tested
|
| 27 |
|
|
2008-01-10 1.6 MPi V30L33R11 Replaced INT9 with INT #122 in macro portYIELD()
|
| 28 |
|
|
2008-01-14 1.7 MPi V30L33R11 Modified the code to work with SK-16FX-100PMC V1.1
|
| 29 |
|
|
2008-01-15 1.8 MPi V30L33R11 Integrated SVN releases 1.5 and 1.6.
|
| 30 |
|
|
==========================================================================
|
| 31 |
|
|
1.0.
|
| 32 |
|
|
This is a project is to test the FreeRTOS port for 16FX and the demo application
|
| 33 |
|
|
which runs on FLASH-CAN-100P-240.
|
| 34 |
|
|
|
| 35 |
|
|
This FreeRTOS port uses the Task Stack pointed by User Stack pointer (USB:USP) for
|
| 36 |
|
|
tasks and the system stack pointed by System Stack pointer (SSB:SSP) for everything
|
| 37 |
|
|
else.
|
| 38 |
|
|
|
| 39 |
|
|
This port is tested with MEDIUM and LARGE memory model and seems to be working fine.
|
| 40 |
|
|
The define MEMMODEL has to be configured in order to use the corresponding memory
|
| 41 |
|
|
model.
|
| 42 |
|
|
|
| 43 |
|
|
This port doesnt use any register banking and always uses bank 0. It also consider that
|
| 44 |
|
|
the parameters to the tasks is passed via stack and not via registers.
|
| 45 |
|
|
|
| 46 |
|
|
In this port the implemetation of portENTER_CRITICAL() and portEXIT_CRITICAL() macros
|
| 47 |
|
|
is changed in order to make them more efficient. Now usCriticalNesting variable is not
|
| 48 |
|
|
used to keep track of global interrupt enable. Rather the current PS is stored on to
|
| 49 |
|
|
the stack and interrupts are disabled for portENTER_CRITICAL(). And for portEXIT_CRITICAL()
|
| 50 |
|
|
simply the PS is restored from stack.
|
| 51 |
|
|
|
| 52 |
|
|
1.1.
|
| 53 |
|
|
In this port, the functionality is added to initialize and clear the watchdog in the
|
| 54 |
|
|
dedicated task, Tick Hook or the Idle Hook. The place exactly where the wtachdog can be
|
| 55 |
|
|
cleared can be configured. Though Idle Hook is not an approproiate place to clear the
|
| 56 |
|
|
watchdog, its done here for demonstration purpose only.
|
| 57 |
|
|
|
| 58 |
|
|
Also from Main function vTaskStartScheduler() function is called instead of xPortStartScheduler().
|
| 59 |
|
|
After doing this change now no more IDLE task is required to be added seperately as
|
| 60 |
|
|
vTaskStartScheduler() adds prvIdleTask() on its own.
|
| 61 |
|
|
|
| 62 |
|
|
1.2.
|
| 63 |
|
|
Updated the FreeRTOS version to 4.6.1 and tested with the same.
|
| 64 |
|
|
|
| 65 |
|
|
1.3.
|
| 66 |
|
|
Moved the watchdog functionality to watchdog.c and watchdog.h.
|
| 67 |
|
|
|
| 68 |
|
|
1.4.
|
| 69 |
|
|
Added portYIELDFromISR() which uses delayed interrupt. This macro needs to be used from the
|
| 70 |
|
|
application ISRs in order to force a context switch from them if required. It should be noted
|
| 71 |
|
|
that the interrupt priority of such application ISRs MUST be always higher than the dealyed
|
| 72 |
|
|
interrupt (currently 23) in order to perform the context switch correctly.
|
| 73 |
|
|
|
| 74 |
|
|
It should be also noted that the RLT0 and Delayed Interrupt priority MUST be always same in order
|
| 75 |
|
|
to assure correct working of this port.
|
| 76 |
|
|
|
| 77 |
|
|
Now portYIELD() used software interrupt INT9 instead of delayed interrupt.
|
| 78 |
|
|
|
| 79 |
|
|
Now all the queue functions works ok.
|
| 80 |
|
|
|
| 81 |
|
|
Tested with the heap_1.c, heap_2.c and heap_3.c.
|
| 82 |
|
|
|
| 83 |
|
|
At one time, either of heap_1.c or heap_2.c or heap_3.c needs to be used. Hence the files those are not
|
| 84 |
|
|
required to be used should be removed from the target of the build.
|
| 85 |
|
|
|
| 86 |
|
|
Added the __STD_LIB_sbrk.c file in order to define the *sbrk() function. This is required while using
|
| 87 |
|
|
heap_3.c file which uses the dynamic memory allocation.
|
| 88 |
|
|
|
| 89 |
|
|
Made changes to the demo application files crhook.c. Please refer the file and grep for "Added by MPi"
|
| 90 |
|
|
to find the changes. It should be noted that if INCLUDE_StartHookCoRoutines is defined as 0 (i.e. if
|
| 91 |
|
|
vStartHookCoRoutines() functionality is NOT required) then crhook.c file should be removed from target
|
| 92 |
|
|
build and uncomment the vApplicationTickHook() function from main.c should be uncommnented.
|
| 93 |
|
|
|
| 94 |
|
|
Added taskutility.c file. This file contains vUART2Task() which calls vTaskList() and vTaskStartTrace()
|
| 95 |
|
|
functions.
|
| 96 |
|
|
|
| 97 |
|
|
If vCreateBlockTimeTasks() is not called then the LED at PDR00_P7 blinks at normal rate (3s).
|
| 98 |
|
|
|
| 99 |
|
|
This port is tested with MEDIUM and LARGE memory model and working fine.
|
| 100 |
|
|
|
| 101 |
|
|
configMINIMAL_STACK_SIZE value changed to 172 from 70 in order to make the port work.
|
| 102 |
|
|
|
| 103 |
|
|
1.5.
|
| 104 |
|
|
Updated the FreeRTOS version to 4.7.0 and tested with the same. Tested for pre-emptive as well as
|
| 105 |
|
|
co-operative approach.
|
| 106 |
|
|
|
| 107 |
|
|
1.6.
|
| 108 |
|
|
portYIELD() macro now uses INT #122 instead of INT9.
|
| 109 |
|
|
|
| 110 |
|
|
Optimized functions vParTestToggleLED() and vParTestSetLED() in main.c.
|
| 111 |
|
|
|
| 112 |
|
|
Now watchdog uses 2^23 as clock prescaler instead of 2^24. Also updated the WTC_CLR_PER in watchdog.h.
|
| 113 |
|
|
|
| 114 |
|
|
1.7.
|
| 115 |
|
|
Modified the code to work with SK-16FX-100PMC V1.1.
|
| 116 |
|
|
|
| 117 |
|
|
Made changes to the demo application files crflash.c. Please refer the file and grep for "Added by MPi"
|
| 118 |
|
|
to find the changes.
|
| 119 |
|
|
|
| 120 |
|
|
Made changes to taskutility.c and vectors.c in order to use UART1 instead of UART2.
|
| 121 |
|
|
|
| 122 |
|
|
Made changes to main.c file in order to handle use the 7-segment display (SEG1) connected to Port09 for tasks
|
| 123 |
|
|
and 7-segment display (SEG2) connected to Port00 for co-routines.
|
| 124 |
|
|
|
| 125 |
|
|
Added config.h and moved the demo application configs there.
|
| 126 |
|
|
|
| 127 |
|
|
1.8.
|
| 128 |
|
|
It should be noted that the readme, appnote and SVN tag version numbers may be different for the same release.
|
| 129 |
|
|
|
| 130 |
|
|
This readme is specific to project FreeRTOS_96348hs_SK16FX100PMC. And this project specifically works
|
| 131 |
|
|
on board SK-16FX-100PMC V1.1 along with EUROScope debugger.
|
| 132 |
|
|
|
| 133 |
|
|
Created 4 different configuration Config_1 to Config_4. Each config includes certain demo application function.
|
| 134 |
|
|
More details specific to each configuration can be found in the appnote.
|
| 135 |
|
|
|
| 136 |
|
|
Used relative path to include files instead of absolute.
|
| 137 |
|
|
|
| 138 |
|
|
Created config, MemMang, serial and utility subdirectories and moved corresponding functionlaity there.
|
| 139 |
|
|
|
| 140 |
|
|
Updated config.h, main.c and start.asm in order to have configuration specific build.
|
| 141 |
|
|
|
| 142 |
|
|
Clock settings:
|
| 143 |
|
|
---------------
|
| 144 |
|
|
Crystal: 4 MHz
|
| 145 |
|
|
CLKB: 56 MHz
|
| 146 |
|
|
CLKP1: 56 MHz
|
| 147 |
|
|
CLKP2: 56 MHz
|