From 8b079bc394e7b205d72210ce9e052404d782938f Mon Sep 17 00:00:00 2001 From: Yuhui Zheng <10982575+yuhui-zheng@users.noreply.github.com> Date: Wed, 27 May 2020 10:44:03 -0700 Subject: [PATCH] ATmega328PB Xplained Mini -- demo project for ATmega port. (#70) * Bootstrap a demo from START. No driver is added in this commit. * Add FreeRTOS source code to project. Remove unnecessary folder nesting. Heap_4 is used here. * Copy over main.c, FreeRTOSConfig.h, and regtest.{c, h}. This commit compiles, but will need some work on timer used. * This port has 2KB RAM. We are using 1KB for heap. Further decreasing minimum stack size, and also use stack overflow check 1 to save some stack space. * Preserve EEPROM set to false. * End of the line. * Reduce register test stack size. 32 8-bit register + 10 bytes for stack frame cost. Round up to 50. * Adding Queue test in Integer test. - g3 to easy debugging. - mainCHECK_PERIOD is set to 1000 ticks. Note that this port for now use WDT as tick timer, and period is set to 15ms. - vErrorChecks, is of highest priority. So if this task gets run before other tasks, the very first check will fail. * Avoid false alarm. Since we don't know in which order the tasks are scheduled, clearing any error for the first entry of vErrorChecks. Signed-off-by: Yuhui Zheng <10982575+yuhui-zheng@users.noreply.github.com> * ParTest.c to init, set, toggle onboard user LED at PB5. * Added a task to blink onboard user LED. Need a magic number for stack size. Signed-off-by: Yuhui Zheng <10982575+yuhui-zheng@users.noreply.github.com> * Explicitly setting timing slicing to 0. This is to avoid unecessary context switch when multiple tasks are of the same priority. Signed-off-by: Yuhui Zheng <10982575+yuhui-zheng@users.noreply.github.com> * Add taskYIELD() at the end of the loop in each register test task. This is to give other tasks of the same priority a chance to run, regardless of scheduling algorithm. Signed-off-by: Yuhui Zheng <10982575+yuhui-zheng@users.noreply.github.com> * minor, update comment in main.c. --- .../AVR_ATmega328PB_Xplained_mini_GCC.atsln | 22 + .../RTOSDemo/.atmelstart/AtmelStart.env_conf | 35 + .../RTOSDemo/.atmelstart/AtmelStart.gpdsc | 73 + .../.atmelstart/atmel_start_config.atstart | 69 + .../RTOSDemo/Config/RTE_Components.h | 54 + .../RTOSDemo/Config/clock_config.h | 13 + .../RTOSDemo/Default.xml | 435 +++ .../RTOSDemo/FreeRTOSConfig.h | 91 + .../RTOSDemo/ParTest.c | 110 + .../RTOSDemo/RTOSDemo.componentinfo.xml | 86 + .../RTOSDemo/RTOSDemo.cproj | 436 +++ .../RTOSDemo/atmel_start.c | 9 + .../RTOSDemo/atmel_start.h | 19 + .../doxygen/generator/DoxygenLayout.xml | 188 ++ .../doxygen/generator/doxyfile.doxygen | 2442 +++++++++++++++++ .../RTOSDemo/doxygen/mainpage.dox | 197 ++ .../RTOSDemo/doxygen/system.dox | 18 + .../RTOSDemo/driver_isr.c | 37 + .../RTOSDemo/include/atmel_start_pins.h | 13 + .../RTOSDemo/include/driver_init.h | 56 + .../RTOSDemo/include/port.h | 805 ++++++ .../RTOSDemo/include/protected_io.h | 83 + .../RTOSDemo/include/sysctrl.h | 111 + .../RTOSDemo/include/system.h | 74 + .../RTOSDemo/main.c | 208 ++ .../RTOSDemo/regtest.c | 421 +++ .../RTOSDemo/regtest.h | 34 + .../RTOSDemo/src/driver_init.c | 47 + .../RTOSDemo/src/protected_io.S | 111 + .../RTOSDemo/utils/assembler.h | 61 + .../RTOSDemo/utils/assembler/gas.h | 127 + .../RTOSDemo/utils/assembler/iar.h | 116 + .../RTOSDemo/utils/atomic.h | 125 + .../RTOSDemo/utils/compiler.h | 85 + .../RTOSDemo/utils/interrupt_avr8.h | 111 + .../RTOSDemo/utils/utils.h | 73 + .../RTOSDemo/utils/utils_assert.h | 84 + 37 files changed, 7079 insertions(+) create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/AVR_ATmega328PB_Xplained_mini_GCC.atsln create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.env_conf create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.gpdsc create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/atmel_start_config.atstart create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/Config/RTE_Components.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/Config/clock_config.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/Default.xml create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/FreeRTOSConfig.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/ParTest.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/RTOSDemo.componentinfo.xml create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/RTOSDemo.cproj create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/atmel_start.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/atmel_start.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/generator/DoxygenLayout.xml create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/generator/doxyfile.doxygen create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/system.dox create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/driver_isr.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/atmel_start_pins.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/driver_init.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/port.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/protected_io.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/sysctrl.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/include/system.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/main.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/regtest.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/regtest.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/src/driver_init.c create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/src/protected_io.S create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/assembler.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/assembler/gas.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/assembler/iar.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/atomic.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/compiler.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/interrupt_avr8.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/utils.h create mode 100644 FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/utils/utils_assert.h diff --git a/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/AVR_ATmega328PB_Xplained_mini_GCC.atsln b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/AVR_ATmega328PB_Xplained_mini_GCC.atsln new file mode 100644 index 000000000..061d2750e --- /dev/null +++ b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/AVR_ATmega328PB_Xplained_mini_GCC.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "RTOSDemo", "RTOSDemo\RTOSDemo.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.env_conf b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.env_conf new file mode 100644 index 000000000..1ea6355a1 --- /dev/null +++ b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.env_conf @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.gpdsc b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.gpdsc new file mode 100644 index 000000000..ecbc1c814 --- /dev/null +++ b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/.atmelstart/AtmelStart.gpdsc @@ -0,0 +1,73 @@ + + Atmel + My Project + Project generated by Atmel Start + http://start.atmel.com/ + + Initial version + + + Configuration Files generated by Atmel Start + + + + Atmel Start +