From 63e84bd4ec47a024a6f9652a3ab7b5a1bf3c3603 Mon Sep 17 00:00:00 2001 From: Schrom01 Date: Fri, 30 Sep 2022 08:35:44 +0200 Subject: [PATCH] solved Task 3.1 --- .../CT-Lab2-Project.uvguix.roman | 1878 +++++++++ CT-Lab2-TestProject/CT-Lab2-Project.uvoptx | 213 + CT-Lab2-TestProject/CT-Lab2-Project.uvprojx | 497 +++ .../.datainit_ctboard.s@4.0.1 | 100 + .../CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 | 439 ++ .../CT_Board_HS14_M0/.system_ctboard.c@4.0.1 | 290 ++ .../CT_Board_HS14_M0/datainit_ctboard.s | 100 + .../Device/CT_Board_HS14_M0/startup_ctboard.s | 439 ++ .../Device/CT_Board_HS14_M0/system_ctboard.c | 290 ++ .../RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 | 143 + .../HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 | 412 ++ .../RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 | 132 + .../RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 | 347 ++ .../RTE/HAL/CT_Board_HS14_M0/hal_fmc.c | 143 + .../RTE/HAL/CT_Board_HS14_M0/hal_gpio.c | 412 ++ .../RTE/HAL/CT_Board_HS14_M0/hal_pwr.c | 132 + .../RTE/HAL/CT_Board_HS14_M0/hal_rcc.c | 347 ++ .../RTE/_Target_1/RTE_Components.h | 15 + CT-Lab2-TestProject/main.c | 0 bit_manipulations/EventRecorderStub.scvd | 9 + .../.datainit_ctboard.s@4.0.1 | 100 + .../CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 | 439 ++ .../CT_Board_HS14_M0/.system_ctboard.c@4.0.1 | 290 ++ .../CT_Board_HS14_M0/datainit_ctboard.s | 100 + .../Device/CT_Board_HS14_M0/startup_ctboard.s | 439 ++ .../Device/CT_Board_HS14_M0/system_ctboard.c | 290 ++ .../RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 | 143 + .../HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 | 412 ++ .../RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 | 132 + .../RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 | 347 ++ .../RTE/HAL/CT_Board_HS14_M0/hal_fmc.c | 143 + .../RTE/HAL/CT_Board_HS14_M0/hal_gpio.c | 412 ++ .../RTE/HAL/CT_Board_HS14_M0/hal_pwr.c | 132 + .../RTE/HAL/CT_Board_HS14_M0/hal_rcc.c | 347 ++ .../RTE/_Target_1/RTE_Components.h | 15 + bit_manipulations/app/main.c | 6 +- .../bitmanipulation.uvguix.roman | 3637 +++++++++++++++++ bit_manipulations/bitmanipulation.uvoptx | 24 +- bit_manipulations/build/ExtDll.iex | 2 + bit_manipulations/build/bitmanipulation.axf | Bin 0 -> 48148 bytes .../build/bitmanipulation.build_log.htm | 98 + bit_manipulations/build/bitmanipulation.htm | 630 +++ bit_manipulations/build/bitmanipulation.lnp | 14 + bit_manipulations/build/bitmanipulation.map | 383 ++ bit_manipulations/build/bitmanipulation.sct | 16 + .../build/bitmanipulation_Target 1.dep | 41 + bit_manipulations/build/datainit_ctboard.d | 1 + bit_manipulations/build/datainit_ctboard.lst | 372 ++ bit_manipulations/build/datainit_ctboard.o | Bin 0 -> 2748 bytes bit_manipulations/build/hal_fmc.d | 5 + bit_manipulations/build/hal_fmc.o | Bin 0 -> 6556 bytes bit_manipulations/build/hal_gpio.d | 5 + bit_manipulations/build/hal_gpio.o | Bin 0 -> 19728 bytes bit_manipulations/build/hal_pwr.d | 5 + bit_manipulations/build/hal_pwr.o | Bin 0 -> 4904 bytes bit_manipulations/build/hal_rcc.d | 5 + bit_manipulations/build/hal_rcc.o | Bin 0 -> 10084 bytes bit_manipulations/build/main.d | 2 + bit_manipulations/build/main.o | Bin 0 -> 2364 bytes bit_manipulations/build/startup_ctboard.d | 1 + bit_manipulations/build/startup_ctboard.lst | 2074 ++++++++++ bit_manipulations/build/startup_ctboard.o | Bin 0 -> 8196 bytes bit_manipulations/build/system_ctboard.d | 11 + bit_manipulations/build/system_ctboard.o | Bin 0 -> 11608 bytes bit_manipulations/build/utils_ctboard.d | 2 + bit_manipulations/build/utils_ctboard.o | Bin 0 -> 4032 bytes 66 files changed, 17409 insertions(+), 4 deletions(-) create mode 100644 CT-Lab2-TestProject/CT-Lab2-Project.uvguix.roman create mode 100644 CT-Lab2-TestProject/CT-Lab2-Project.uvoptx create mode 100644 CT-Lab2-TestProject/CT-Lab2-Project.uvprojx create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s create mode 100644 CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/system_ctboard.c create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c create mode 100644 CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c create mode 100644 CT-Lab2-TestProject/RTE/_Target_1/RTE_Components.h create mode 100644 CT-Lab2-TestProject/main.c create mode 100644 bit_manipulations/EventRecorderStub.scvd create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s create mode 100644 bit_manipulations/RTE/Device/CT_Board_HS14_M0/system_ctboard.c create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c create mode 100644 bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c create mode 100644 bit_manipulations/RTE/_Target_1/RTE_Components.h create mode 100644 bit_manipulations/bitmanipulation.uvguix.roman create mode 100644 bit_manipulations/build/ExtDll.iex create mode 100644 bit_manipulations/build/bitmanipulation.axf create mode 100644 bit_manipulations/build/bitmanipulation.build_log.htm create mode 100644 bit_manipulations/build/bitmanipulation.htm create mode 100644 bit_manipulations/build/bitmanipulation.lnp create mode 100644 bit_manipulations/build/bitmanipulation.map create mode 100644 bit_manipulations/build/bitmanipulation.sct create mode 100644 bit_manipulations/build/bitmanipulation_Target 1.dep create mode 100644 bit_manipulations/build/datainit_ctboard.d create mode 100644 bit_manipulations/build/datainit_ctboard.lst create mode 100644 bit_manipulations/build/datainit_ctboard.o create mode 100644 bit_manipulations/build/hal_fmc.d create mode 100644 bit_manipulations/build/hal_fmc.o create mode 100644 bit_manipulations/build/hal_gpio.d create mode 100644 bit_manipulations/build/hal_gpio.o create mode 100644 bit_manipulations/build/hal_pwr.d create mode 100644 bit_manipulations/build/hal_pwr.o create mode 100644 bit_manipulations/build/hal_rcc.d create mode 100644 bit_manipulations/build/hal_rcc.o create mode 100644 bit_manipulations/build/main.d create mode 100644 bit_manipulations/build/main.o create mode 100644 bit_manipulations/build/startup_ctboard.d create mode 100644 bit_manipulations/build/startup_ctboard.lst create mode 100644 bit_manipulations/build/startup_ctboard.o create mode 100644 bit_manipulations/build/system_ctboard.d create mode 100644 bit_manipulations/build/system_ctboard.o create mode 100644 bit_manipulations/build/utils_ctboard.d create mode 100644 bit_manipulations/build/utils_ctboard.o diff --git a/CT-Lab2-TestProject/CT-Lab2-Project.uvguix.roman b/CT-Lab2-TestProject/CT-Lab2-Project.uvguix.roman new file mode 100644 index 0000000..4b29c63 --- /dev/null +++ b/CT-Lab2-TestProject/CT-Lab2-Project.uvguix.roman @@ -0,0 +1,1878 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + C:\Users\roman\Documents\Lab_2_BitManipulations\CT-Lab2-Project + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 52 + 52 + 1492 + 811 + + + + 0 + + 266 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000046433A5C55736572735C726F6D616E5C446F63756D656E74735C4C61625F325F4269744D616E6970756C6174696F6E735C43542D4C6162322D50726F6A6563745C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000069030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000001201000004010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000006A03000080070000E6030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 22000000390000001201000004010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000052030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000520300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + .\main.c + 0 + 1 + 1 + 1 + + 0 + + + + +
diff --git a/CT-Lab2-TestProject/CT-Lab2-Project.uvoptx b/CT-Lab2-TestProject/CT-Lab2-Project.uvoptx new file mode 100644 index 0000000..17440e8 --- /dev/null +++ b/CT-Lab2-TestProject/CT-Lab2-Project.uvoptx @@ -0,0 +1,213 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp; *.cc; *.cxx + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U48FF68066765565148400667 -O206 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048.FLM -FS08000000 -FL0200000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048 -FS08000000 -FL0200000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM)) + + + + + 0 + + + 0 + 1 + 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 + + + + + + + + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + .\main.c + main.c + 0 + 0 + + + + + ::Device + 0 + 0 + 0 + 1 + + + + ::HAL + 0 + 0 + 0 + 1 + + +
diff --git a/CT-Lab2-TestProject/CT-Lab2-Project.uvprojx b/CT-Lab2-TestProject/CT-Lab2-Project.uvprojx new file mode 100644 index 0000000..8b3b7d8 --- /dev/null +++ b/CT-Lab2-TestProject/CT-Lab2-Project.uvprojx @@ -0,0 +1,497 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 1 + + + CT_Board_HS14_M0 + STMicroelectronics + InES.CTBoard14_DFP.4.0.2 + https://ennis.zhaw.ch/pack/ + IRAM(0x20000000,0x30000) IRAM2(0x10000000,0x10000) IROM(0x08000000,0x200000) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_2048 -FS08000000 -FL0200000 -FP0($$Device:CT_Board_HS14_M0$Flash\STM32F4xx_2048.FLM)) + 0 + + + + + + + + + + + $$Device:CT_Board_HS14_M0$SVD\STM32F429x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + CT-Lab2-Project + 1 + 0 + 0 + 1 + 1 + .\build\ + 1 + 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 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP-MPU + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + -MPU + TARMCM1.DLL + -pCM0 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + -1 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x200000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x200000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + --diag_suppress 6314 + + + + + + + + Source Group 1 + + + main.c + 1 + .\main.c + + + + + ::Device + + + ::HAL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RTE\Device\CT_Board_HS14_M0\datainit_ctboard.s + + + + + + + + RTE\Device\CT_Board_HS14_M0\startup_ctboard.s + + + + + + + + RTE\Device\CT_Board_HS14_M0\system_ctboard.c + + + + + + + + RTE\HAL\CT_Board_HS14_M0\hal_fmc.c + + + + + + + + RTE\HAL\CT_Board_HS14_M0\hal_gpio.c + + + + + + + + RTE\HAL\CT_Board_HS14_M0\hal_pwr.c + + + + + + + + RTE\HAL\CT_Board_HS14_M0\hal_rcc.c + + + + + + + + + +
diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 new file mode 100644 index 0000000..d891d1a --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 @@ -0,0 +1,100 @@ +;* ------------------------------------------------------------------ +;* -- _____ ______ _____ - +;* -- |_ _| | ____|/ ____| - +;* -- | | _ __ | |__ | (___ Institute of Embedded Systems - +;* -- | | | '_ \| __| \___ \ Zurich University of - +;* -- _| |_| | | | |____ ____) | Applied Sciences - +;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - +;* ------------------------------------------------------------------ +;* -- +;* -- Project : CT Board - Cortex M4 +;* -- Description : Data Segment initialisation. +;* -- +;* -- $Id$ +;* ------------------------------------------------------------------ + + +; ------------------------------------------------------------------- +; -- __Main +; ------------------------------------------------------------------- + + AREA |.text|, CODE, READONLY + + IMPORT main + + EXPORT __main + +__main PROC + + ; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args... + IMPORT |Image$$RO$$Limit| [WEAK] + IMPORT |Image$$RW$$Base| [WEAK] + IMPORT |Image$$ZI$$Base| [WEAK] + IMPORT |Image$$ZI$$Limit| [WEAK] + ; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314 + IMPORT |Image$$ER_IROM1$$Limit| [WEAK] + IMPORT |Image$$RW_IRAM1$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK] + ; import stack parameter + IMPORT Stack_Size [WEAK] + IMPORT Stack_Mem [WEAK] + + ; switch between command line generated regions and auto scatter file generated regions + LDR R1, =|Image$$RO$$Limit| + CMP R1,#0 + BEQ ScatterFileSymbols +CommandLineSymbols + LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop +ScatterFileSymbols + LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data + LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop + + ; init non-zero data +LoopRWCopy LDR R4, [R1] + STR R4, [R2] + ADDS R1, R1, #4 + ADDS R2, R2, #4 +CondRWLoop CMP R2, R3 + BNE LoopRWCopy + + ; init zero-initialized data + MOV R2, R5 + MOV R3, R6 + MOVS R4, #0 + B CondZILoop +LoopZICopy STR R4, [R2] + ADDS R2, R2, #4 +CondZILoop CMP R2, R3 + BNE LoopZICopy + + ; fingerprint stack section + LDR R0, =Stack_Mem + LDR R1, =Stack_Size + LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!) +LoopStack STR R2, [R0] + ADDS R0, R0, #4 + SUBS R1, #4 + BNE LoopStack + + ; go to the user main function + LDR R0, =main + BX R0 + ENDP + + +; ------------------------------------------------------------------- +; -- End of file +; ------------------------------------------------------------------- + + ALIGN + + END diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 new file mode 100644 index 0000000..fd8a0f9 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 @@ -0,0 +1,439 @@ +;******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** +;* File Name : startup_stm32f429_439xx.s +;* Author : MCD Application Team +;* Version : V1.3.0 +;* Date : 08-November-2013 +;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the system clock and the external SRAM/SDRAM mounted +;* on STM324x9I-EVAL boards to be used as data memory +;* (optional, to be enabled by user) +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00002000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 + EXPORT Stack_Size + EXPORT Stack_Mem + +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000800 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD CRYP_IRQHandler ; CRYP crypto + DCD HASH_RNG_IRQHandler ; Hash and Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __system + IMPORT __main + ENTRY + + LDR R0, =__system + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT CRYP_IRQHandler [WEAK] + EXPORT HASH_RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +CRYP_IRQHandler +HASH_RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler + B . + + ENDP + + ALIGN + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 new file mode 100644 index 0000000..58c804c --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 @@ -0,0 +1,290 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Interface of module system_ctboard. + * Description : Basic system configuration. + * * initialize system clock + * * initialize FMC (SRAM & GPIO) + * + * GPIO FMC pin assignment: + * + * PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10 + * PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11 + * PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12 + * PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13 + * PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14 + * PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15 + * PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2 + * PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3 + * PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4 + * PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24 + * PD11 > FMC_A16 | PE10 > FMC_D7 | | + * PD12 > FMC_A17 | PE11 > FMC_D8 | | + * PD13 > FMC_A18 | PE12 > FMC_D9 | | + * PD14 > FMC_D0 | PE13 > FMC_D10 | | + * PD15 > FMC_D1 | PE14 > FMC_D11 | | + * | PE15 > FMC_D12 | | + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* Standard includes */ +#include + + +/* User includes */ +#include "system_ctboard.h" +#include "reg_stm32f4xx.h" +#include "reg_ctboard.h" + + +/* -- Macros (LCD) + * ------------------------------------------------------------------------- */ + +#define LCD_WAIT 0x1fff + + +/* -- Macros (FMC) + * ------------------------------------------------------------------------- */ + +#define FMC_PORTD_PINMASK 0xfffb +#define FMC_PORTE_PINMASK 0xffff +#define FMC_PORTF_PINMASK 0xf03f +#define FMC_PORTG_PINMASK 0x363f + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static void init_SystemClock(void); +static void init_FPU(void); +static void init_FMC_SRAM(void); +static void init_LCD(void); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Entry point used in startup. + */ +void __system(void) +{ + system_enter_run(); +} + + +/* + * See header files + */ +void system_enter_run(void) +{ + /* Initialize RCC / system clock */ + init_SystemClock(); + + /* Iitialize FPU */ + init_FPU(); + + /* Initialize SRAM interface */ + init_FMC_SRAM(); + + /* Initialize LCD on CT-Board */ + init_LCD(); +} + + +/* + * See header file + */ +void system_enter_sleep(hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_standby(void) +{ + /** \note Implement this function if needed. */ +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Configures the System clock source, PLL Multiplier and Divider + * factors, AHB/APBx prescalers and Flash settings. + */ +static void init_SystemClock(void) +{ + hal_rcc_pll_init_t pll_init; + hal_rcc_clk_init_t clk_init; + + /* Enable used periphery */ + PWR_ENABLE(); + + /* Reset */ + hal_rcc_reset(); + PWR_RESET(); + + /* Enable HSE oscillator and proceed if ok */ + if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) { + /* Select regulator voltage output Scale 1 mode */ + RCC->APB1ENR |= 0x00000000; + PWR->CR |= 0x0000c000; + + /* Configure PLL */ + pll_init.source = HAL_RCC_OSC_HSE; + pll_init.m_divider = 4u; + pll_init.n_factor = 168u; + pll_init.p_divider = 2u; + pll_init.q_divider = 7u; + hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init); + + /* Enable PLL */ + hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE); + + /* Enable overdrive to allow system clock >= 168 MHz */ + hal_pwr_set_overdrive(ENABLE); + + /* Configure Flash prefetch, Instruction cache, Data cache + * and wait state */ + FLASH->ACR = 0x00000705; + + /* Setup system clock */ + clk_init.osc = HAL_RCC_OSC_PLL; + clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz + clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz + clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz + hal_rcc_setup_clock(clk_init); + + } else { + /* If HSE fails to start-up, the application will have wrong clock con- + figuration. User can add here some code to deal with this error */ + } +} + + +/** + * \brief Initialize the floating point unit in M4 mode. + */ +static void init_FPU(void) +{ +#ifdef PLATFORM_M4 + /* No documentation about this, even the registers... */ + + /* set CP10 and CP11 Full Access */ + FPU->CPACR |= ((3u << 20u)|(3u << 22u)); +#endif +} + + +/** + * \brief Setup the flexible memory controller. This function configures the SRAM + * interface for accessing the periphery on the CT Board. + */ +static void init_FMC_SRAM(void) +{ +#ifndef NO_FMC + + hal_gpio_output_t gpio_init; + hal_fmc_sram_init_t sram_init; + hal_fmc_sram_timing_t sram_timing; + + /* Enable used peripherals */ + GPIOD_ENABLE(); + GPIOE_ENABLE(); + GPIOF_ENABLE(); + GPIOG_ENABLE(); + FMC_ENABLE(); + + /* Configure the involved GPIO pins to AF12 (FMC) */ + gpio_init.pupd = HAL_GPIO_PUPD_NOPULL; + gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ; + gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP; + + /* GPIOD configuration (pins: 0,1,3-15) */ + gpio_init.pins = FMC_PORTD_PINMASK; + hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOE configuration (pins: 0-15) */ + gpio_init.pins = FMC_PORTE_PINMASK; + hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOF configuration (pins: 0-5,12-15) */ + gpio_init.pins = FMC_PORTF_PINMASK; + hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */ + gpio_init.pins = FMC_PORTG_PINMASK; + hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init); + + + /* Initialize the synchronous PSRAM on bank 1 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_PSRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = ENABLE; + sram_init.write_enable = ENABLE; + sram_init.write_burst = ENABLE; + sram_init.continous_clock = ENABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.clk_divider = 15u; + sram_timing.data_latency = 2u; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing); + + + /* Initialize the asynchronous SRAM on bank 2 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_SRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = DISABLE; + sram_init.write_enable = DISABLE; + sram_init.write_burst = DISABLE; + sram_init.continous_clock = DISABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.address_setup = 11u; + sram_timing.address_hold = 5u; + sram_timing.data_setup = 11u; + sram_timing.mode = HAL_FMC_ACCESS_MODE_A; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing); + +#endif +} + + +/** + * \brief Wait for the LCD controller on the CT Board to be initialized. + * \TODO Possibly adjust LCD controller on CPLD to set status bit + * and wait for it in this function. + */ +static void init_LCD(void) +{ +#ifndef NO_FMC + uint32_t wait_for_lcd = LCD_WAIT; + for(; wait_for_lcd > 0; wait_for_lcd--); +#endif +} + diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s new file mode 100644 index 0000000..d891d1a --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s @@ -0,0 +1,100 @@ +;* ------------------------------------------------------------------ +;* -- _____ ______ _____ - +;* -- |_ _| | ____|/ ____| - +;* -- | | _ __ | |__ | (___ Institute of Embedded Systems - +;* -- | | | '_ \| __| \___ \ Zurich University of - +;* -- _| |_| | | | |____ ____) | Applied Sciences - +;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - +;* ------------------------------------------------------------------ +;* -- +;* -- Project : CT Board - Cortex M4 +;* -- Description : Data Segment initialisation. +;* -- +;* -- $Id$ +;* ------------------------------------------------------------------ + + +; ------------------------------------------------------------------- +; -- __Main +; ------------------------------------------------------------------- + + AREA |.text|, CODE, READONLY + + IMPORT main + + EXPORT __main + +__main PROC + + ; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args... + IMPORT |Image$$RO$$Limit| [WEAK] + IMPORT |Image$$RW$$Base| [WEAK] + IMPORT |Image$$ZI$$Base| [WEAK] + IMPORT |Image$$ZI$$Limit| [WEAK] + ; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314 + IMPORT |Image$$ER_IROM1$$Limit| [WEAK] + IMPORT |Image$$RW_IRAM1$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK] + ; import stack parameter + IMPORT Stack_Size [WEAK] + IMPORT Stack_Mem [WEAK] + + ; switch between command line generated regions and auto scatter file generated regions + LDR R1, =|Image$$RO$$Limit| + CMP R1,#0 + BEQ ScatterFileSymbols +CommandLineSymbols + LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop +ScatterFileSymbols + LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data + LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop + + ; init non-zero data +LoopRWCopy LDR R4, [R1] + STR R4, [R2] + ADDS R1, R1, #4 + ADDS R2, R2, #4 +CondRWLoop CMP R2, R3 + BNE LoopRWCopy + + ; init zero-initialized data + MOV R2, R5 + MOV R3, R6 + MOVS R4, #0 + B CondZILoop +LoopZICopy STR R4, [R2] + ADDS R2, R2, #4 +CondZILoop CMP R2, R3 + BNE LoopZICopy + + ; fingerprint stack section + LDR R0, =Stack_Mem + LDR R1, =Stack_Size + LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!) +LoopStack STR R2, [R0] + ADDS R0, R0, #4 + SUBS R1, #4 + BNE LoopStack + + ; go to the user main function + LDR R0, =main + BX R0 + ENDP + + +; ------------------------------------------------------------------- +; -- End of file +; ------------------------------------------------------------------- + + ALIGN + + END diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s new file mode 100644 index 0000000..fd8a0f9 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s @@ -0,0 +1,439 @@ +;******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** +;* File Name : startup_stm32f429_439xx.s +;* Author : MCD Application Team +;* Version : V1.3.0 +;* Date : 08-November-2013 +;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the system clock and the external SRAM/SDRAM mounted +;* on STM324x9I-EVAL boards to be used as data memory +;* (optional, to be enabled by user) +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00002000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 + EXPORT Stack_Size + EXPORT Stack_Mem + +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000800 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD CRYP_IRQHandler ; CRYP crypto + DCD HASH_RNG_IRQHandler ; Hash and Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __system + IMPORT __main + ENTRY + + LDR R0, =__system + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT CRYP_IRQHandler [WEAK] + EXPORT HASH_RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +CRYP_IRQHandler +HASH_RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler + B . + + ENDP + + ALIGN + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/system_ctboard.c b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/system_ctboard.c new file mode 100644 index 0000000..58c804c --- /dev/null +++ b/CT-Lab2-TestProject/RTE/Device/CT_Board_HS14_M0/system_ctboard.c @@ -0,0 +1,290 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Interface of module system_ctboard. + * Description : Basic system configuration. + * * initialize system clock + * * initialize FMC (SRAM & GPIO) + * + * GPIO FMC pin assignment: + * + * PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10 + * PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11 + * PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12 + * PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13 + * PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14 + * PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15 + * PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2 + * PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3 + * PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4 + * PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24 + * PD11 > FMC_A16 | PE10 > FMC_D7 | | + * PD12 > FMC_A17 | PE11 > FMC_D8 | | + * PD13 > FMC_A18 | PE12 > FMC_D9 | | + * PD14 > FMC_D0 | PE13 > FMC_D10 | | + * PD15 > FMC_D1 | PE14 > FMC_D11 | | + * | PE15 > FMC_D12 | | + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* Standard includes */ +#include + + +/* User includes */ +#include "system_ctboard.h" +#include "reg_stm32f4xx.h" +#include "reg_ctboard.h" + + +/* -- Macros (LCD) + * ------------------------------------------------------------------------- */ + +#define LCD_WAIT 0x1fff + + +/* -- Macros (FMC) + * ------------------------------------------------------------------------- */ + +#define FMC_PORTD_PINMASK 0xfffb +#define FMC_PORTE_PINMASK 0xffff +#define FMC_PORTF_PINMASK 0xf03f +#define FMC_PORTG_PINMASK 0x363f + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static void init_SystemClock(void); +static void init_FPU(void); +static void init_FMC_SRAM(void); +static void init_LCD(void); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Entry point used in startup. + */ +void __system(void) +{ + system_enter_run(); +} + + +/* + * See header files + */ +void system_enter_run(void) +{ + /* Initialize RCC / system clock */ + init_SystemClock(); + + /* Iitialize FPU */ + init_FPU(); + + /* Initialize SRAM interface */ + init_FMC_SRAM(); + + /* Initialize LCD on CT-Board */ + init_LCD(); +} + + +/* + * See header file + */ +void system_enter_sleep(hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_standby(void) +{ + /** \note Implement this function if needed. */ +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Configures the System clock source, PLL Multiplier and Divider + * factors, AHB/APBx prescalers and Flash settings. + */ +static void init_SystemClock(void) +{ + hal_rcc_pll_init_t pll_init; + hal_rcc_clk_init_t clk_init; + + /* Enable used periphery */ + PWR_ENABLE(); + + /* Reset */ + hal_rcc_reset(); + PWR_RESET(); + + /* Enable HSE oscillator and proceed if ok */ + if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) { + /* Select regulator voltage output Scale 1 mode */ + RCC->APB1ENR |= 0x00000000; + PWR->CR |= 0x0000c000; + + /* Configure PLL */ + pll_init.source = HAL_RCC_OSC_HSE; + pll_init.m_divider = 4u; + pll_init.n_factor = 168u; + pll_init.p_divider = 2u; + pll_init.q_divider = 7u; + hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init); + + /* Enable PLL */ + hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE); + + /* Enable overdrive to allow system clock >= 168 MHz */ + hal_pwr_set_overdrive(ENABLE); + + /* Configure Flash prefetch, Instruction cache, Data cache + * and wait state */ + FLASH->ACR = 0x00000705; + + /* Setup system clock */ + clk_init.osc = HAL_RCC_OSC_PLL; + clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz + clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz + clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz + hal_rcc_setup_clock(clk_init); + + } else { + /* If HSE fails to start-up, the application will have wrong clock con- + figuration. User can add here some code to deal with this error */ + } +} + + +/** + * \brief Initialize the floating point unit in M4 mode. + */ +static void init_FPU(void) +{ +#ifdef PLATFORM_M4 + /* No documentation about this, even the registers... */ + + /* set CP10 and CP11 Full Access */ + FPU->CPACR |= ((3u << 20u)|(3u << 22u)); +#endif +} + + +/** + * \brief Setup the flexible memory controller. This function configures the SRAM + * interface for accessing the periphery on the CT Board. + */ +static void init_FMC_SRAM(void) +{ +#ifndef NO_FMC + + hal_gpio_output_t gpio_init; + hal_fmc_sram_init_t sram_init; + hal_fmc_sram_timing_t sram_timing; + + /* Enable used peripherals */ + GPIOD_ENABLE(); + GPIOE_ENABLE(); + GPIOF_ENABLE(); + GPIOG_ENABLE(); + FMC_ENABLE(); + + /* Configure the involved GPIO pins to AF12 (FMC) */ + gpio_init.pupd = HAL_GPIO_PUPD_NOPULL; + gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ; + gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP; + + /* GPIOD configuration (pins: 0,1,3-15) */ + gpio_init.pins = FMC_PORTD_PINMASK; + hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOE configuration (pins: 0-15) */ + gpio_init.pins = FMC_PORTE_PINMASK; + hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOF configuration (pins: 0-5,12-15) */ + gpio_init.pins = FMC_PORTF_PINMASK; + hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */ + gpio_init.pins = FMC_PORTG_PINMASK; + hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init); + + + /* Initialize the synchronous PSRAM on bank 1 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_PSRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = ENABLE; + sram_init.write_enable = ENABLE; + sram_init.write_burst = ENABLE; + sram_init.continous_clock = ENABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.clk_divider = 15u; + sram_timing.data_latency = 2u; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing); + + + /* Initialize the asynchronous SRAM on bank 2 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_SRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = DISABLE; + sram_init.write_enable = DISABLE; + sram_init.write_burst = DISABLE; + sram_init.continous_clock = DISABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.address_setup = 11u; + sram_timing.address_hold = 5u; + sram_timing.data_setup = 11u; + sram_timing.mode = HAL_FMC_ACCESS_MODE_A; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing); + +#endif +} + + +/** + * \brief Wait for the LCD controller on the CT Board to be initialized. + * \TODO Possibly adjust LCD controller on CPLD to set status bit + * and wait for it in this function. + */ +static void init_LCD(void) +{ +#ifndef NO_FMC + uint32_t wait_for_lcd = LCD_WAIT; + for(; wait_for_lcd > 0; wait_for_lcd--); +#endif +} + diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 new file mode 100644 index 0000000..e454145 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_fmc. + * + * The hardware abstraction layer for the memory controller. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_fmc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define MASK_PERIPH_FMC (0x00000001) +#define MASK_SRAM_ENABLE (0x00000001) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_fmc_reset(hal_fmc_bank_t bank) +{ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = 0x000030db; + FMC->SRAM.BTR1 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = 0x000030d2; + FMC->SRAM.BTR2 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = 0x000030d2; + FMC->SRAM.BTR3 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = 0x000030d2; + FMC->SRAM.BTR4 = 0x0fffffff; + break; + } +} + + +/* + * See header file + */ +void hal_fmc_init_sram(hal_fmc_bank_t bank, + hal_fmc_sram_init_t init, + hal_fmc_sram_timing_t timing) +{ + uint32_t reg_cr = 0, reg_tr = 0; + + /* Input check */ + timing.address_setup &= 0xf; + timing.address_hold &= 0xf; + if (timing.address_hold < 1u) timing.address_hold = 1u; + timing.data_setup &= 0xff; + if (timing.data_setup < 1u) timing.data_setup = 1u; + timing.bus_turnaround &= 0xf; + + /* Input check clock divider (2..16) */ + if (timing.clk_divider > 16u) timing.clk_divider = 16u; + if (timing.clk_divider < 2u) timing.clk_divider = 2u; + timing.clk_divider -= 1u; // 0b0001 -> clk / 2 + + /* Input check data latency (2..17) */ + if (timing.data_latency > 17u) timing.data_latency = 17u; + if (timing.data_latency < 2u) timing.data_latency = 2u; + timing.data_latency -= 2u; // 0b0000 -> latency = 2 + + /* Process boolean parameter */ + if (init.address_mux == ENABLE) reg_cr |= (1u << 1u); + if (init.read_burst == ENABLE) reg_cr |= (1u << 8u); + if (init.write_enable == ENABLE) reg_cr |= (1u << 12u); + if (init.write_burst == ENABLE) reg_cr |= (1u << 19u); + if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u); + + /* Process non boolean parameter */ + reg_cr |= (init.type << 2u); + reg_cr |= (init.width << 4u); + + /* Process timing for async. SRAM */ + if (init.type == HAL_FMC_TYPE_SRAM) { + reg_tr |= (timing.address_setup << 0u); + reg_tr |= (timing.address_hold << 4u); + reg_tr |= (timing.data_setup << 8u); + reg_tr |= (timing.mode << 28u); + } + /* Process timing for sync. PSRAM */ + else if (init.type == HAL_FMC_TYPE_PSRAM) { + reg_tr |= (timing.clk_divider << 20u); + reg_tr |= (timing.data_latency << 24u); + } + /* Process bus turnaround time */ + reg_tr |= (timing.bus_turnaround << 16u); + + /* Write register */ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = reg_cr; + FMC->SRAM.BTR1 = reg_tr; + FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = reg_cr; + FMC->SRAM.BTR2 = reg_tr; + FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = reg_cr; + FMC->SRAM.BTR3 = reg_tr; + FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = reg_cr; + FMC->SRAM.BTR4 = reg_tr; + FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE; + break; + } +} + diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 new file mode 100644 index 0000000..59e0e4c --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 @@ -0,0 +1,412 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_gpio. + * + * The hardware abstraction layer for the GPIO periphery. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_gpio.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define NVIC_OFFSET_1_4 ( 6u) +#define NVIC_OFFSET_5_9 (23u) +#define NVIC_OFFSET_10_15 ( 8u) + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width); +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins); +static uint8_t get_syscfg_mask(reg_gpio_t *port); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_gpio_reset(reg_gpio_t *port) +{ + if(port == GPIOA) { + /* Reset GPIOA specific values */ + port->MODER = 0xa8000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x64000000; + } + else if (port == GPIOB) { + /* Reset GPIOB specific values */ + port->MODER = 0x00000280; + port->OSPEEDR = 0x000000c0; + port->PUPDR = 0x00000100; + } else { + /* Reset other GPIO */ + port->MODER = 0x00000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x00000000; + } + + port->OTYPER = 0x00000000; + port->AFRL = 0x00000000; + port->AFRH = 0x00000000; + port->ODR = 0x00000000; +} + +/* + * See header file + */ +void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* treat like input */ + hal_gpio_init_input(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); + + /* process port speed */ + port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u); + + /* process output typ */ + port->OTYPER &= ~init.pins; + if(init.out_type == HAL_GPIO_OUT_TYPE_OD){ + port->OTYPER |= init.pins; + } +} + + +/* + * See header file + */ +void hal_gpio_init_alternate(reg_gpio_t *port, + hal_gpio_af_t af_mode, + hal_gpio_output_t init) +{ + /* treat like output */ + hal_gpio_init_output(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u); + + /* process af type */ + port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u); + port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u); + port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u); + port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u); +} + + +/* + * See header file + */ +uint16_t hal_gpio_input_read(reg_gpio_t *port) +{ + return (uint16_t) port->IDR; +} + + +/* + * See header file + */ +uint16_t hal_gpio_output_read(reg_gpio_t *port) +{ + return (uint16_t) port->ODR; +} + + +/* + * See header file + */ +void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value) +{ + /* prevent overwrite false reg entry */ + port_value = intercept_overwrite_register(port, port_value); + port->ODR = port_value; +} + + +/* + * See header file + */ +void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = pins; + } +} + + +/* + * See header file + */ +void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = (pins << 16); + } +} + + +/* + * See header file + */ +void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins) +{ + uint16_t pattern; + + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + /* get actual value and invert */ + pattern = hal_gpio_output_read(port); + pattern = ~pattern; + + /* mask pins */ + pattern &= pins; + + port->ODR = pattern; + } +} + + +/* + * See header file + */ +void hal_gpio_irq_set(reg_gpio_t *port, + uint16_t pins, + hal_gpio_trg_t edge, + hal_bool_t status) +{ + uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line; + uint32_t exticr_mask; + + for (exti_line = 0u; exti_line < 16u; exti_line++) { + if (pins & (0x1 << exti_line)) { + syscfg_bank = exti_line / 4u; + syscfg_shift = exti_line % 4u; + nvic_bank = (exti_line < 10u) ? 0u : 1u; + + if (status == ENABLE) { + /* Trigger (rising/falling/both) */ + if (edge & HAL_GPIO_TRG_POS) { + EXTI->RTSR |= (0x1 << exti_line); + } + if (edge & HAL_GPIO_TRG_NEG) { + EXTI->FTSR |= (0x1 << exti_line); + } + /* Set EXTI line to corresponding GPIO port */ + exticr_mask = get_syscfg_mask(port); + if (syscfg_bank == 0u) { + SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 1u) { + SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 2u) { + SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 3u) { + SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift); + } + + /* Unmask interrupt */ + EXTI->IMR |= (0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + + } else { + /* Mask interrupt */ + EXTI->IMR &= ~(0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + } + } + } + +} + + +/* + * See header file + */ +hal_bool_t hal_gpio_irq_status(uint16_t pin) +{ + hal_bool_t status = DISABLED; + + if ((EXTI->IMR && pin) && + (EXTI->PR && pin)) { + status = ENABLED; + } + + return status; +} + + +/* + * See header file + */ +void hal_gpio_irq_clear(uint16_t pin) +{ + EXTI->PR |= pin; +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Creates a pattern based on specified pins. + * + * example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide) + * ==> pattern = 0x0000'0288 + * + * 0b0..0'0001'1010 / 0b10 (2 bit wide) + * ^ ^ ^ + * ==> 0b0..0'00010'1000'1000 + * ^^ ^^ ^^ + * + * pattern_bit_width must be 2 or 4 + */ +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width) +{ + const uint8_t mask_bit_width = 32u; + const uint16_t pin1_mask = 1u; + + uint8_t pos, end; + uint32_t mask = 0u; + + if (pattern_bit_width == 2u || pattern_bit_width == 4u) { + /* create pattern mask */ + end = mask_bit_width / pattern_bit_width; + for (pos = 0; pos < end; pos++) { + if (pins & pin1_mask) { + mask |= pattern << (pos * pattern_bit_width); + } + pins >>= 1; + } + } else { + /* exit if pattern_bit_width not as needed */ + mask = 0u; + } + + return mask; +} + + +/** + * \brief This function ensures that these sensitive pins are not reconfigured. + * + * On GPIOA and GPIOB only pins 11 down to 0 are available to the user. + * Pins 15 down to 12 are used for system functions of the discovery board, + * e.g. connection of the debugger. + * These pins must not be reconfigured. Otherwise the debugger cannot be used any more. + */ +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){ + if (port == GPIOA || port == GPIOB){ + pins &= 0x0FFF; + } + return pins; +} + + +/** + * \brief Returns mask for configuration of SYSCFG_EXTICR register. + * \param port : Port of which the mask should be generated. + * \return Mask for specified port. + */ +static uint8_t get_syscfg_mask(reg_gpio_t *port) +{ + return ((port == GPIOA) ? 0u : + (port == GPIOB) ? 1u : + (port == GPIOC) ? 2u : + (port == GPIOD) ? 3u : + (port == GPIOE) ? 4u : + (port == GPIOF) ? 5u : + (port == GPIOG) ? 6u : + (port == GPIOH) ? 7u : + (port == GPIOI) ? 8u : + (port == GPIOJ) ? 9u : 10u); +} diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 new file mode 100644 index 0000000..a244dd6 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_pwr. + * + * The hardware abstraction layer for the power control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_pwr.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x1000 +#define MASK_PERIPH_PWR (1u << 28u) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_pwr_reset(void) +{ + /* Reset peripheral */ + PWR->CR = 0x0000c000; + PWR->CSR = 0x00000000; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status) +{ + uint16_t count = 0; + uint32_t reg = 0; + + if (status == DISABLE) { + /* Disable backup domain / regulator */ + PWR->CSR &= ~(1u << 9u); + return DISABLED; + } + + /* Enable backup domain / regulator */ + PWR->CSR |= (1u << 9u); + + /* Wait till regulator is ready and if time out is reached exit */ + reg = PWR->CSR & (1u << 3u); + while ((reg == 0) && (count != TIME_OUT)) { + reg = PWR->CSR & (1u << 3u); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_pwr_set_backup_access(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 8u); + } else { + PWR->CR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_wakeup_pin(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CSR &= ~(1u << 8u); + } else { + PWR->CSR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_flash_powerdown(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 9u); + } else { + PWR->CR |= (1u << 9u); + } +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_overdrive(hal_bool_t status) +{ + /* Is this realy nedded ? + Extend clock to 180 MHz if HSI/HSE is used, but pll ? */ + return DISABLED; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_underdrive(hal_bool_t status) +{ + /* Is this realy nedded ? */ + return DISABLED; +} diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 new file mode 100644 index 0000000..fdd4d3a --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 @@ -0,0 +1,347 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_rcc. + * + * The hardware abstraction layer for the reset and clock control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_rcc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x5000 + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_rcc_reset(void) +{ + /* Set RCC->CR to default values */ + RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running + RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S, + // PLLSAI bits (STM32F42xx/43xx) + RCC->CR &= 0xfffbffff; // Reset HSEBYP bit + + /* Reset RCC->CFGR to default values */ + RCC->CFGR = 0u; + + /* Reset RCC->PLLxCFGR to default values */ + RCC->PLLCFGR = 0x24003010; + RCC->PLLI2SCFGR = 0x20003000; + RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx) + + /* Disable all interrupts */ + RCC->CIR = 0u; + + /* Disable all peripherals */ + RCC->AHB1RSTR = 0u; + RCC->AHB2RSTR = 0u; + RCC->AHB3RSTR = 0u; + RCC->APB1RSTR = 0u; + RCC->APB2RSTR = 0u; + RCC->AHB1ENR = 0x00100000; + RCC->AHB2ENR = 0u; + RCC->AHB3ENR = 0u; + RCC->APB1ENR = 0u; + RCC->APB2ENR = 0u; + RCC->AHB1LPENR = 0x7e6791ff; + RCC->AHB2LPENR = 0x000000f1; + RCC->AHB3LPENR = 0x00000001; + RCC->APB1LPENR = 0x36fec9ff; + RCC->APB2LPENR = 0x00075f33; + + /* Reset forgotten registers */ + RCC->BDCR = 0u; + RCC->CSR = 0x0e000000; + RCC->SSCGR = 0u; + RCC->DCKCFGR = 0u; +} + + +/* + * See header file + */ +void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status) +{ + volatile uint32_t *reg; + uint32_t bit_pos; + + /* Select correct enable register */ + switch (peripheral) { + /* AHB1 */ + case PER_GPIOA: + bit_pos = 0u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOB: + bit_pos = 1u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOC: + bit_pos = 2u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOD: + bit_pos = 3u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOE: + bit_pos = 4u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOF: + bit_pos = 5u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOG: + bit_pos = 6u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOH: + bit_pos = 7u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOI: + bit_pos = 8u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOJ: + bit_pos = 9u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOK: + bit_pos = 10u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA1: + bit_pos = 21u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA2: + bit_pos = 22u; + reg = &RCC->AHB1ENR; + break; + + /* AHB3 */ + case PER_FMC: + bit_pos = 0u; + reg = &RCC->AHB3ENR; + break; + + /* APB1 */ + case PER_DAC: + bit_pos = 29u; + reg = &RCC->APB1ENR; + break; + case PER_PWR: + bit_pos = 28u; + reg = &RCC->APB1ENR; + break; + case PER_TIM2: + bit_pos = 0u; + reg = &RCC->APB1ENR; + break; + case PER_TIM3: + bit_pos = 1u; + reg = &RCC->APB1ENR; + break; + case PER_TIM4: + bit_pos = 2u; + reg = &RCC->APB1ENR; + break; + case PER_TIM5: + bit_pos = 3u; + reg = &RCC->APB1ENR; + break; + + + /* APB2 */ + case PER_ADC1: + bit_pos = 8u; + reg = &RCC->APB2ENR; + break; + case PER_ADC2: + bit_pos = 9u; + reg = &RCC->APB2ENR; + break; + case PER_ADC3: + bit_pos = 10u; + reg = &RCC->APB2ENR; + break; + + default: + return; + } + + if (status == DISABLE) { + *reg &= ~(1u << bit_pos); + } else { + *reg |= (1u << bit_pos); + } +} + + +/* + * See header file + */ +hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status) +{ + uint32_t reg = 0; + uint32_t count = 0; + + /* Disable source */ + if (status == DISABLE) { + RCC->CR &= ~(1u << source); + return DISABLED; + } + + /* If pll, check if source is ok */ + if (source == HAL_RCC_OSC_PLL || + source == HAL_RCC_OSC_PLLI2S || + source == HAL_RCC_OSC_PLLSAI) + { + reg = RCC->CR; + /* HSE */ + if (RCC->PLLCFGR & ~(1u << 22u)) { + reg &= (1u << (HAL_RCC_OSC_HSE + 1u)); + } + /* HSI */ + else { + reg &= (1u << (HAL_RCC_OSC_HSI + 1u)); + } + /* Return if source is not ok */ + if (!reg) { + return DISABLED; + } + } + + /* Enable source */ + RCC->CR |= (1u << source); + + /* Wait till source is ready and if time out is reached exit */ + reg = RCC->CR & (1u << (source + 1u)); + while ((reg == 0) && (count != TIME_OUT)) { + reg = RCC->CR & (1u << (source + 1u)); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init) +{ + /* Input check */ + if (init.m_divider < 2u) init.m_divider = 2u; + + if (init.n_factor < 2u) init.n_factor = 2u; + if (init.n_factor > 432u) init.n_factor = 432u; + + if (init.p_divider > 8u) init.p_divider = 8u; + + if (init.q_divider < 2u) init.q_divider = 2u; + + init.r_divider &= 0x07; + + /* Set source or return if invalid */ + if (init.source == HAL_RCC_OSC_HSI) { + RCC->PLLCFGR &= ~(1u << 22u); + } else if (init.source == HAL_RCC_OSC_HSE) { + RCC->PLLCFGR |= (1u << 22u); + } else { + return; + } + + /* Set pll preescaler */ + RCC->PLLCFGR &= ~(0x3f); + RCC->PLLCFGR |= init.m_divider; + + /* Configure pll */ + switch (pll) { + case HAL_RCC_OSC_PLL: + RCC->PLLCFGR &= ~0x0f037fc0; + RCC->PLLCFGR |= (init.n_factor << 6u); + RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u); + RCC->PLLCFGR |= (init.q_divider << 24u); + break; + + case HAL_RCC_OSC_PLLI2S: + RCC->PLLI2SCFGR &= ~0x7f007fc0; + RCC->PLLI2SCFGR |= (init.n_factor << 6u); + RCC->PLLI2SCFGR |= (init.q_divider << 24u); + RCC->PLLI2SCFGR |= (init.r_divider << 28u); + break; + +/* case HAL_RCC_OSC_PLLSAI: + RCC->PLLSAICFGR &= ~0x7f007fc0; + RCC->PLLSAICFGR |= (init.n_factor << 6u); + RCC->PLLSAICFGR |= (init.q_divider << 24u); + RCC->PLLSAICFGR |= (init.r_divider << 28u); + break; +*/ + default: + break; + } +} + + +/* + * See header file + */ +void hal_rcc_setup_clock(hal_rcc_clk_init_t init) +{ + uint32_t reg = 0; + + /* Configure clock divider */ + RCC->CFGR &= ~0x0000fcf0; + RCC->CFGR |= (init.hpre << 4u); + RCC->CFGR |= (init.ppre1 << 10u); + RCC->CFGR |= (init.ppre2 << 13u); + + /* Select system clock source */ + RCC->CFGR &= ~0x00000003; + switch (init.osc) { + default: + case HAL_RCC_OSC_HSI: + reg = 0u; + break; + + case HAL_RCC_OSC_HSE: + reg = 1u; + break; + + case HAL_RCC_OSC_PLL: + reg = 2u; + break; + } + RCC->CFGR |= reg; + +#ifndef TESTING + /* Wait till system clock is selected */ + while ((RCC->CFGR & 0x0000000c) != (reg << 2u)); +#endif +} diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c new file mode 100644 index 0000000..e454145 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_fmc. + * + * The hardware abstraction layer for the memory controller. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_fmc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define MASK_PERIPH_FMC (0x00000001) +#define MASK_SRAM_ENABLE (0x00000001) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_fmc_reset(hal_fmc_bank_t bank) +{ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = 0x000030db; + FMC->SRAM.BTR1 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = 0x000030d2; + FMC->SRAM.BTR2 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = 0x000030d2; + FMC->SRAM.BTR3 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = 0x000030d2; + FMC->SRAM.BTR4 = 0x0fffffff; + break; + } +} + + +/* + * See header file + */ +void hal_fmc_init_sram(hal_fmc_bank_t bank, + hal_fmc_sram_init_t init, + hal_fmc_sram_timing_t timing) +{ + uint32_t reg_cr = 0, reg_tr = 0; + + /* Input check */ + timing.address_setup &= 0xf; + timing.address_hold &= 0xf; + if (timing.address_hold < 1u) timing.address_hold = 1u; + timing.data_setup &= 0xff; + if (timing.data_setup < 1u) timing.data_setup = 1u; + timing.bus_turnaround &= 0xf; + + /* Input check clock divider (2..16) */ + if (timing.clk_divider > 16u) timing.clk_divider = 16u; + if (timing.clk_divider < 2u) timing.clk_divider = 2u; + timing.clk_divider -= 1u; // 0b0001 -> clk / 2 + + /* Input check data latency (2..17) */ + if (timing.data_latency > 17u) timing.data_latency = 17u; + if (timing.data_latency < 2u) timing.data_latency = 2u; + timing.data_latency -= 2u; // 0b0000 -> latency = 2 + + /* Process boolean parameter */ + if (init.address_mux == ENABLE) reg_cr |= (1u << 1u); + if (init.read_burst == ENABLE) reg_cr |= (1u << 8u); + if (init.write_enable == ENABLE) reg_cr |= (1u << 12u); + if (init.write_burst == ENABLE) reg_cr |= (1u << 19u); + if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u); + + /* Process non boolean parameter */ + reg_cr |= (init.type << 2u); + reg_cr |= (init.width << 4u); + + /* Process timing for async. SRAM */ + if (init.type == HAL_FMC_TYPE_SRAM) { + reg_tr |= (timing.address_setup << 0u); + reg_tr |= (timing.address_hold << 4u); + reg_tr |= (timing.data_setup << 8u); + reg_tr |= (timing.mode << 28u); + } + /* Process timing for sync. PSRAM */ + else if (init.type == HAL_FMC_TYPE_PSRAM) { + reg_tr |= (timing.clk_divider << 20u); + reg_tr |= (timing.data_latency << 24u); + } + /* Process bus turnaround time */ + reg_tr |= (timing.bus_turnaround << 16u); + + /* Write register */ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = reg_cr; + FMC->SRAM.BTR1 = reg_tr; + FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = reg_cr; + FMC->SRAM.BTR2 = reg_tr; + FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = reg_cr; + FMC->SRAM.BTR3 = reg_tr; + FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = reg_cr; + FMC->SRAM.BTR4 = reg_tr; + FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE; + break; + } +} + diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c new file mode 100644 index 0000000..59e0e4c --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c @@ -0,0 +1,412 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_gpio. + * + * The hardware abstraction layer for the GPIO periphery. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_gpio.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define NVIC_OFFSET_1_4 ( 6u) +#define NVIC_OFFSET_5_9 (23u) +#define NVIC_OFFSET_10_15 ( 8u) + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width); +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins); +static uint8_t get_syscfg_mask(reg_gpio_t *port); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_gpio_reset(reg_gpio_t *port) +{ + if(port == GPIOA) { + /* Reset GPIOA specific values */ + port->MODER = 0xa8000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x64000000; + } + else if (port == GPIOB) { + /* Reset GPIOB specific values */ + port->MODER = 0x00000280; + port->OSPEEDR = 0x000000c0; + port->PUPDR = 0x00000100; + } else { + /* Reset other GPIO */ + port->MODER = 0x00000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x00000000; + } + + port->OTYPER = 0x00000000; + port->AFRL = 0x00000000; + port->AFRH = 0x00000000; + port->ODR = 0x00000000; +} + +/* + * See header file + */ +void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* treat like input */ + hal_gpio_init_input(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); + + /* process port speed */ + port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u); + + /* process output typ */ + port->OTYPER &= ~init.pins; + if(init.out_type == HAL_GPIO_OUT_TYPE_OD){ + port->OTYPER |= init.pins; + } +} + + +/* + * See header file + */ +void hal_gpio_init_alternate(reg_gpio_t *port, + hal_gpio_af_t af_mode, + hal_gpio_output_t init) +{ + /* treat like output */ + hal_gpio_init_output(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u); + + /* process af type */ + port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u); + port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u); + port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u); + port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u); +} + + +/* + * See header file + */ +uint16_t hal_gpio_input_read(reg_gpio_t *port) +{ + return (uint16_t) port->IDR; +} + + +/* + * See header file + */ +uint16_t hal_gpio_output_read(reg_gpio_t *port) +{ + return (uint16_t) port->ODR; +} + + +/* + * See header file + */ +void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value) +{ + /* prevent overwrite false reg entry */ + port_value = intercept_overwrite_register(port, port_value); + port->ODR = port_value; +} + + +/* + * See header file + */ +void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = pins; + } +} + + +/* + * See header file + */ +void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = (pins << 16); + } +} + + +/* + * See header file + */ +void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins) +{ + uint16_t pattern; + + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + /* get actual value and invert */ + pattern = hal_gpio_output_read(port); + pattern = ~pattern; + + /* mask pins */ + pattern &= pins; + + port->ODR = pattern; + } +} + + +/* + * See header file + */ +void hal_gpio_irq_set(reg_gpio_t *port, + uint16_t pins, + hal_gpio_trg_t edge, + hal_bool_t status) +{ + uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line; + uint32_t exticr_mask; + + for (exti_line = 0u; exti_line < 16u; exti_line++) { + if (pins & (0x1 << exti_line)) { + syscfg_bank = exti_line / 4u; + syscfg_shift = exti_line % 4u; + nvic_bank = (exti_line < 10u) ? 0u : 1u; + + if (status == ENABLE) { + /* Trigger (rising/falling/both) */ + if (edge & HAL_GPIO_TRG_POS) { + EXTI->RTSR |= (0x1 << exti_line); + } + if (edge & HAL_GPIO_TRG_NEG) { + EXTI->FTSR |= (0x1 << exti_line); + } + /* Set EXTI line to corresponding GPIO port */ + exticr_mask = get_syscfg_mask(port); + if (syscfg_bank == 0u) { + SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 1u) { + SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 2u) { + SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 3u) { + SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift); + } + + /* Unmask interrupt */ + EXTI->IMR |= (0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + + } else { + /* Mask interrupt */ + EXTI->IMR &= ~(0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + } + } + } + +} + + +/* + * See header file + */ +hal_bool_t hal_gpio_irq_status(uint16_t pin) +{ + hal_bool_t status = DISABLED; + + if ((EXTI->IMR && pin) && + (EXTI->PR && pin)) { + status = ENABLED; + } + + return status; +} + + +/* + * See header file + */ +void hal_gpio_irq_clear(uint16_t pin) +{ + EXTI->PR |= pin; +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Creates a pattern based on specified pins. + * + * example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide) + * ==> pattern = 0x0000'0288 + * + * 0b0..0'0001'1010 / 0b10 (2 bit wide) + * ^ ^ ^ + * ==> 0b0..0'00010'1000'1000 + * ^^ ^^ ^^ + * + * pattern_bit_width must be 2 or 4 + */ +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width) +{ + const uint8_t mask_bit_width = 32u; + const uint16_t pin1_mask = 1u; + + uint8_t pos, end; + uint32_t mask = 0u; + + if (pattern_bit_width == 2u || pattern_bit_width == 4u) { + /* create pattern mask */ + end = mask_bit_width / pattern_bit_width; + for (pos = 0; pos < end; pos++) { + if (pins & pin1_mask) { + mask |= pattern << (pos * pattern_bit_width); + } + pins >>= 1; + } + } else { + /* exit if pattern_bit_width not as needed */ + mask = 0u; + } + + return mask; +} + + +/** + * \brief This function ensures that these sensitive pins are not reconfigured. + * + * On GPIOA and GPIOB only pins 11 down to 0 are available to the user. + * Pins 15 down to 12 are used for system functions of the discovery board, + * e.g. connection of the debugger. + * These pins must not be reconfigured. Otherwise the debugger cannot be used any more. + */ +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){ + if (port == GPIOA || port == GPIOB){ + pins &= 0x0FFF; + } + return pins; +} + + +/** + * \brief Returns mask for configuration of SYSCFG_EXTICR register. + * \param port : Port of which the mask should be generated. + * \return Mask for specified port. + */ +static uint8_t get_syscfg_mask(reg_gpio_t *port) +{ + return ((port == GPIOA) ? 0u : + (port == GPIOB) ? 1u : + (port == GPIOC) ? 2u : + (port == GPIOD) ? 3u : + (port == GPIOE) ? 4u : + (port == GPIOF) ? 5u : + (port == GPIOG) ? 6u : + (port == GPIOH) ? 7u : + (port == GPIOI) ? 8u : + (port == GPIOJ) ? 9u : 10u); +} diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c new file mode 100644 index 0000000..a244dd6 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_pwr. + * + * The hardware abstraction layer for the power control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_pwr.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x1000 +#define MASK_PERIPH_PWR (1u << 28u) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_pwr_reset(void) +{ + /* Reset peripheral */ + PWR->CR = 0x0000c000; + PWR->CSR = 0x00000000; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status) +{ + uint16_t count = 0; + uint32_t reg = 0; + + if (status == DISABLE) { + /* Disable backup domain / regulator */ + PWR->CSR &= ~(1u << 9u); + return DISABLED; + } + + /* Enable backup domain / regulator */ + PWR->CSR |= (1u << 9u); + + /* Wait till regulator is ready and if time out is reached exit */ + reg = PWR->CSR & (1u << 3u); + while ((reg == 0) && (count != TIME_OUT)) { + reg = PWR->CSR & (1u << 3u); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_pwr_set_backup_access(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 8u); + } else { + PWR->CR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_wakeup_pin(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CSR &= ~(1u << 8u); + } else { + PWR->CSR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_flash_powerdown(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 9u); + } else { + PWR->CR |= (1u << 9u); + } +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_overdrive(hal_bool_t status) +{ + /* Is this realy nedded ? + Extend clock to 180 MHz if HSI/HSE is used, but pll ? */ + return DISABLED; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_underdrive(hal_bool_t status) +{ + /* Is this realy nedded ? */ + return DISABLED; +} diff --git a/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c new file mode 100644 index 0000000..fdd4d3a --- /dev/null +++ b/CT-Lab2-TestProject/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c @@ -0,0 +1,347 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_rcc. + * + * The hardware abstraction layer for the reset and clock control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_rcc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x5000 + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_rcc_reset(void) +{ + /* Set RCC->CR to default values */ + RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running + RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S, + // PLLSAI bits (STM32F42xx/43xx) + RCC->CR &= 0xfffbffff; // Reset HSEBYP bit + + /* Reset RCC->CFGR to default values */ + RCC->CFGR = 0u; + + /* Reset RCC->PLLxCFGR to default values */ + RCC->PLLCFGR = 0x24003010; + RCC->PLLI2SCFGR = 0x20003000; + RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx) + + /* Disable all interrupts */ + RCC->CIR = 0u; + + /* Disable all peripherals */ + RCC->AHB1RSTR = 0u; + RCC->AHB2RSTR = 0u; + RCC->AHB3RSTR = 0u; + RCC->APB1RSTR = 0u; + RCC->APB2RSTR = 0u; + RCC->AHB1ENR = 0x00100000; + RCC->AHB2ENR = 0u; + RCC->AHB3ENR = 0u; + RCC->APB1ENR = 0u; + RCC->APB2ENR = 0u; + RCC->AHB1LPENR = 0x7e6791ff; + RCC->AHB2LPENR = 0x000000f1; + RCC->AHB3LPENR = 0x00000001; + RCC->APB1LPENR = 0x36fec9ff; + RCC->APB2LPENR = 0x00075f33; + + /* Reset forgotten registers */ + RCC->BDCR = 0u; + RCC->CSR = 0x0e000000; + RCC->SSCGR = 0u; + RCC->DCKCFGR = 0u; +} + + +/* + * See header file + */ +void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status) +{ + volatile uint32_t *reg; + uint32_t bit_pos; + + /* Select correct enable register */ + switch (peripheral) { + /* AHB1 */ + case PER_GPIOA: + bit_pos = 0u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOB: + bit_pos = 1u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOC: + bit_pos = 2u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOD: + bit_pos = 3u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOE: + bit_pos = 4u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOF: + bit_pos = 5u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOG: + bit_pos = 6u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOH: + bit_pos = 7u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOI: + bit_pos = 8u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOJ: + bit_pos = 9u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOK: + bit_pos = 10u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA1: + bit_pos = 21u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA2: + bit_pos = 22u; + reg = &RCC->AHB1ENR; + break; + + /* AHB3 */ + case PER_FMC: + bit_pos = 0u; + reg = &RCC->AHB3ENR; + break; + + /* APB1 */ + case PER_DAC: + bit_pos = 29u; + reg = &RCC->APB1ENR; + break; + case PER_PWR: + bit_pos = 28u; + reg = &RCC->APB1ENR; + break; + case PER_TIM2: + bit_pos = 0u; + reg = &RCC->APB1ENR; + break; + case PER_TIM3: + bit_pos = 1u; + reg = &RCC->APB1ENR; + break; + case PER_TIM4: + bit_pos = 2u; + reg = &RCC->APB1ENR; + break; + case PER_TIM5: + bit_pos = 3u; + reg = &RCC->APB1ENR; + break; + + + /* APB2 */ + case PER_ADC1: + bit_pos = 8u; + reg = &RCC->APB2ENR; + break; + case PER_ADC2: + bit_pos = 9u; + reg = &RCC->APB2ENR; + break; + case PER_ADC3: + bit_pos = 10u; + reg = &RCC->APB2ENR; + break; + + default: + return; + } + + if (status == DISABLE) { + *reg &= ~(1u << bit_pos); + } else { + *reg |= (1u << bit_pos); + } +} + + +/* + * See header file + */ +hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status) +{ + uint32_t reg = 0; + uint32_t count = 0; + + /* Disable source */ + if (status == DISABLE) { + RCC->CR &= ~(1u << source); + return DISABLED; + } + + /* If pll, check if source is ok */ + if (source == HAL_RCC_OSC_PLL || + source == HAL_RCC_OSC_PLLI2S || + source == HAL_RCC_OSC_PLLSAI) + { + reg = RCC->CR; + /* HSE */ + if (RCC->PLLCFGR & ~(1u << 22u)) { + reg &= (1u << (HAL_RCC_OSC_HSE + 1u)); + } + /* HSI */ + else { + reg &= (1u << (HAL_RCC_OSC_HSI + 1u)); + } + /* Return if source is not ok */ + if (!reg) { + return DISABLED; + } + } + + /* Enable source */ + RCC->CR |= (1u << source); + + /* Wait till source is ready and if time out is reached exit */ + reg = RCC->CR & (1u << (source + 1u)); + while ((reg == 0) && (count != TIME_OUT)) { + reg = RCC->CR & (1u << (source + 1u)); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init) +{ + /* Input check */ + if (init.m_divider < 2u) init.m_divider = 2u; + + if (init.n_factor < 2u) init.n_factor = 2u; + if (init.n_factor > 432u) init.n_factor = 432u; + + if (init.p_divider > 8u) init.p_divider = 8u; + + if (init.q_divider < 2u) init.q_divider = 2u; + + init.r_divider &= 0x07; + + /* Set source or return if invalid */ + if (init.source == HAL_RCC_OSC_HSI) { + RCC->PLLCFGR &= ~(1u << 22u); + } else if (init.source == HAL_RCC_OSC_HSE) { + RCC->PLLCFGR |= (1u << 22u); + } else { + return; + } + + /* Set pll preescaler */ + RCC->PLLCFGR &= ~(0x3f); + RCC->PLLCFGR |= init.m_divider; + + /* Configure pll */ + switch (pll) { + case HAL_RCC_OSC_PLL: + RCC->PLLCFGR &= ~0x0f037fc0; + RCC->PLLCFGR |= (init.n_factor << 6u); + RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u); + RCC->PLLCFGR |= (init.q_divider << 24u); + break; + + case HAL_RCC_OSC_PLLI2S: + RCC->PLLI2SCFGR &= ~0x7f007fc0; + RCC->PLLI2SCFGR |= (init.n_factor << 6u); + RCC->PLLI2SCFGR |= (init.q_divider << 24u); + RCC->PLLI2SCFGR |= (init.r_divider << 28u); + break; + +/* case HAL_RCC_OSC_PLLSAI: + RCC->PLLSAICFGR &= ~0x7f007fc0; + RCC->PLLSAICFGR |= (init.n_factor << 6u); + RCC->PLLSAICFGR |= (init.q_divider << 24u); + RCC->PLLSAICFGR |= (init.r_divider << 28u); + break; +*/ + default: + break; + } +} + + +/* + * See header file + */ +void hal_rcc_setup_clock(hal_rcc_clk_init_t init) +{ + uint32_t reg = 0; + + /* Configure clock divider */ + RCC->CFGR &= ~0x0000fcf0; + RCC->CFGR |= (init.hpre << 4u); + RCC->CFGR |= (init.ppre1 << 10u); + RCC->CFGR |= (init.ppre2 << 13u); + + /* Select system clock source */ + RCC->CFGR &= ~0x00000003; + switch (init.osc) { + default: + case HAL_RCC_OSC_HSI: + reg = 0u; + break; + + case HAL_RCC_OSC_HSE: + reg = 1u; + break; + + case HAL_RCC_OSC_PLL: + reg = 2u; + break; + } + RCC->CFGR |= reg; + +#ifndef TESTING + /* Wait till system clock is selected */ + while ((RCC->CFGR & 0x0000000c) != (reg << 2u)); +#endif +} diff --git a/CT-Lab2-TestProject/RTE/_Target_1/RTE_Components.h b/CT-Lab2-TestProject/RTE/_Target_1/RTE_Components.h new file mode 100644 index 0000000..01217b8 --- /dev/null +++ b/CT-Lab2-TestProject/RTE/_Target_1/RTE_Components.h @@ -0,0 +1,15 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'CT-Lab2-Project' + * Target: 'Target 1' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/CT-Lab2-TestProject/main.c b/CT-Lab2-TestProject/main.c new file mode 100644 index 0000000..e69de29 diff --git a/bit_manipulations/EventRecorderStub.scvd b/bit_manipulations/EventRecorderStub.scvd new file mode 100644 index 0000000..2956b29 --- /dev/null +++ b/bit_manipulations/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 new file mode 100644 index 0000000..d891d1a --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.datainit_ctboard.s@4.0.1 @@ -0,0 +1,100 @@ +;* ------------------------------------------------------------------ +;* -- _____ ______ _____ - +;* -- |_ _| | ____|/ ____| - +;* -- | | _ __ | |__ | (___ Institute of Embedded Systems - +;* -- | | | '_ \| __| \___ \ Zurich University of - +;* -- _| |_| | | | |____ ____) | Applied Sciences - +;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - +;* ------------------------------------------------------------------ +;* -- +;* -- Project : CT Board - Cortex M4 +;* -- Description : Data Segment initialisation. +;* -- +;* -- $Id$ +;* ------------------------------------------------------------------ + + +; ------------------------------------------------------------------- +; -- __Main +; ------------------------------------------------------------------- + + AREA |.text|, CODE, READONLY + + IMPORT main + + EXPORT __main + +__main PROC + + ; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args... + IMPORT |Image$$RO$$Limit| [WEAK] + IMPORT |Image$$RW$$Base| [WEAK] + IMPORT |Image$$ZI$$Base| [WEAK] + IMPORT |Image$$ZI$$Limit| [WEAK] + ; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314 + IMPORT |Image$$ER_IROM1$$Limit| [WEAK] + IMPORT |Image$$RW_IRAM1$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK] + ; import stack parameter + IMPORT Stack_Size [WEAK] + IMPORT Stack_Mem [WEAK] + + ; switch between command line generated regions and auto scatter file generated regions + LDR R1, =|Image$$RO$$Limit| + CMP R1,#0 + BEQ ScatterFileSymbols +CommandLineSymbols + LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop +ScatterFileSymbols + LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data + LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop + + ; init non-zero data +LoopRWCopy LDR R4, [R1] + STR R4, [R2] + ADDS R1, R1, #4 + ADDS R2, R2, #4 +CondRWLoop CMP R2, R3 + BNE LoopRWCopy + + ; init zero-initialized data + MOV R2, R5 + MOV R3, R6 + MOVS R4, #0 + B CondZILoop +LoopZICopy STR R4, [R2] + ADDS R2, R2, #4 +CondZILoop CMP R2, R3 + BNE LoopZICopy + + ; fingerprint stack section + LDR R0, =Stack_Mem + LDR R1, =Stack_Size + LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!) +LoopStack STR R2, [R0] + ADDS R0, R0, #4 + SUBS R1, #4 + BNE LoopStack + + ; go to the user main function + LDR R0, =main + BX R0 + ENDP + + +; ------------------------------------------------------------------- +; -- End of file +; ------------------------------------------------------------------- + + ALIGN + + END diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 new file mode 100644 index 0000000..fd8a0f9 --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.startup_ctboard.s@4.0.1 @@ -0,0 +1,439 @@ +;******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** +;* File Name : startup_stm32f429_439xx.s +;* Author : MCD Application Team +;* Version : V1.3.0 +;* Date : 08-November-2013 +;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the system clock and the external SRAM/SDRAM mounted +;* on STM324x9I-EVAL boards to be used as data memory +;* (optional, to be enabled by user) +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00002000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 + EXPORT Stack_Size + EXPORT Stack_Mem + +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000800 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD CRYP_IRQHandler ; CRYP crypto + DCD HASH_RNG_IRQHandler ; Hash and Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __system + IMPORT __main + ENTRY + + LDR R0, =__system + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT CRYP_IRQHandler [WEAK] + EXPORT HASH_RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +CRYP_IRQHandler +HASH_RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler + B . + + ENDP + + ALIGN + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 new file mode 100644 index 0000000..58c804c --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/.system_ctboard.c@4.0.1 @@ -0,0 +1,290 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Interface of module system_ctboard. + * Description : Basic system configuration. + * * initialize system clock + * * initialize FMC (SRAM & GPIO) + * + * GPIO FMC pin assignment: + * + * PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10 + * PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11 + * PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12 + * PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13 + * PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14 + * PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15 + * PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2 + * PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3 + * PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4 + * PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24 + * PD11 > FMC_A16 | PE10 > FMC_D7 | | + * PD12 > FMC_A17 | PE11 > FMC_D8 | | + * PD13 > FMC_A18 | PE12 > FMC_D9 | | + * PD14 > FMC_D0 | PE13 > FMC_D10 | | + * PD15 > FMC_D1 | PE14 > FMC_D11 | | + * | PE15 > FMC_D12 | | + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* Standard includes */ +#include + + +/* User includes */ +#include "system_ctboard.h" +#include "reg_stm32f4xx.h" +#include "reg_ctboard.h" + + +/* -- Macros (LCD) + * ------------------------------------------------------------------------- */ + +#define LCD_WAIT 0x1fff + + +/* -- Macros (FMC) + * ------------------------------------------------------------------------- */ + +#define FMC_PORTD_PINMASK 0xfffb +#define FMC_PORTE_PINMASK 0xffff +#define FMC_PORTF_PINMASK 0xf03f +#define FMC_PORTG_PINMASK 0x363f + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static void init_SystemClock(void); +static void init_FPU(void); +static void init_FMC_SRAM(void); +static void init_LCD(void); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Entry point used in startup. + */ +void __system(void) +{ + system_enter_run(); +} + + +/* + * See header files + */ +void system_enter_run(void) +{ + /* Initialize RCC / system clock */ + init_SystemClock(); + + /* Iitialize FPU */ + init_FPU(); + + /* Initialize SRAM interface */ + init_FMC_SRAM(); + + /* Initialize LCD on CT-Board */ + init_LCD(); +} + + +/* + * See header file + */ +void system_enter_sleep(hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_standby(void) +{ + /** \note Implement this function if needed. */ +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Configures the System clock source, PLL Multiplier and Divider + * factors, AHB/APBx prescalers and Flash settings. + */ +static void init_SystemClock(void) +{ + hal_rcc_pll_init_t pll_init; + hal_rcc_clk_init_t clk_init; + + /* Enable used periphery */ + PWR_ENABLE(); + + /* Reset */ + hal_rcc_reset(); + PWR_RESET(); + + /* Enable HSE oscillator and proceed if ok */ + if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) { + /* Select regulator voltage output Scale 1 mode */ + RCC->APB1ENR |= 0x00000000; + PWR->CR |= 0x0000c000; + + /* Configure PLL */ + pll_init.source = HAL_RCC_OSC_HSE; + pll_init.m_divider = 4u; + pll_init.n_factor = 168u; + pll_init.p_divider = 2u; + pll_init.q_divider = 7u; + hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init); + + /* Enable PLL */ + hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE); + + /* Enable overdrive to allow system clock >= 168 MHz */ + hal_pwr_set_overdrive(ENABLE); + + /* Configure Flash prefetch, Instruction cache, Data cache + * and wait state */ + FLASH->ACR = 0x00000705; + + /* Setup system clock */ + clk_init.osc = HAL_RCC_OSC_PLL; + clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz + clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz + clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz + hal_rcc_setup_clock(clk_init); + + } else { + /* If HSE fails to start-up, the application will have wrong clock con- + figuration. User can add here some code to deal with this error */ + } +} + + +/** + * \brief Initialize the floating point unit in M4 mode. + */ +static void init_FPU(void) +{ +#ifdef PLATFORM_M4 + /* No documentation about this, even the registers... */ + + /* set CP10 and CP11 Full Access */ + FPU->CPACR |= ((3u << 20u)|(3u << 22u)); +#endif +} + + +/** + * \brief Setup the flexible memory controller. This function configures the SRAM + * interface for accessing the periphery on the CT Board. + */ +static void init_FMC_SRAM(void) +{ +#ifndef NO_FMC + + hal_gpio_output_t gpio_init; + hal_fmc_sram_init_t sram_init; + hal_fmc_sram_timing_t sram_timing; + + /* Enable used peripherals */ + GPIOD_ENABLE(); + GPIOE_ENABLE(); + GPIOF_ENABLE(); + GPIOG_ENABLE(); + FMC_ENABLE(); + + /* Configure the involved GPIO pins to AF12 (FMC) */ + gpio_init.pupd = HAL_GPIO_PUPD_NOPULL; + gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ; + gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP; + + /* GPIOD configuration (pins: 0,1,3-15) */ + gpio_init.pins = FMC_PORTD_PINMASK; + hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOE configuration (pins: 0-15) */ + gpio_init.pins = FMC_PORTE_PINMASK; + hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOF configuration (pins: 0-5,12-15) */ + gpio_init.pins = FMC_PORTF_PINMASK; + hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */ + gpio_init.pins = FMC_PORTG_PINMASK; + hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init); + + + /* Initialize the synchronous PSRAM on bank 1 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_PSRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = ENABLE; + sram_init.write_enable = ENABLE; + sram_init.write_burst = ENABLE; + sram_init.continous_clock = ENABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.clk_divider = 15u; + sram_timing.data_latency = 2u; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing); + + + /* Initialize the asynchronous SRAM on bank 2 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_SRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = DISABLE; + sram_init.write_enable = DISABLE; + sram_init.write_burst = DISABLE; + sram_init.continous_clock = DISABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.address_setup = 11u; + sram_timing.address_hold = 5u; + sram_timing.data_setup = 11u; + sram_timing.mode = HAL_FMC_ACCESS_MODE_A; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing); + +#endif +} + + +/** + * \brief Wait for the LCD controller on the CT Board to be initialized. + * \TODO Possibly adjust LCD controller on CPLD to set status bit + * and wait for it in this function. + */ +static void init_LCD(void) +{ +#ifndef NO_FMC + uint32_t wait_for_lcd = LCD_WAIT; + for(; wait_for_lcd > 0; wait_for_lcd--); +#endif +} + diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s new file mode 100644 index 0000000..d891d1a --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s @@ -0,0 +1,100 @@ +;* ------------------------------------------------------------------ +;* -- _____ ______ _____ - +;* -- |_ _| | ____|/ ____| - +;* -- | | _ __ | |__ | (___ Institute of Embedded Systems - +;* -- | | | '_ \| __| \___ \ Zurich University of - +;* -- _| |_| | | | |____ ____) | Applied Sciences - +;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - +;* ------------------------------------------------------------------ +;* -- +;* -- Project : CT Board - Cortex M4 +;* -- Description : Data Segment initialisation. +;* -- +;* -- $Id$ +;* ------------------------------------------------------------------ + + +; ------------------------------------------------------------------- +; -- __Main +; ------------------------------------------------------------------- + + AREA |.text|, CODE, READONLY + + IMPORT main + + EXPORT __main + +__main PROC + + ; initialize RW and ZI data - this includes heap and stack for the -ro=... -rw=... -entry=... linking cmd args... + IMPORT |Image$$RO$$Limit| [WEAK] + IMPORT |Image$$RW$$Base| [WEAK] + IMPORT |Image$$ZI$$Base| [WEAK] + IMPORT |Image$$ZI$$Limit| [WEAK] + ; ...or from auto generated scatter file. Needs linker option: --diag_suppress 6314 + IMPORT |Image$$ER_IROM1$$Limit| [WEAK] + IMPORT |Image$$RW_IRAM1$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Base| [WEAK] + IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [WEAK] + ; import stack parameter + IMPORT Stack_Size [WEAK] + IMPORT Stack_Mem [WEAK] + + ; switch between command line generated regions and auto scatter file generated regions + LDR R1, =|Image$$RO$$Limit| + CMP R1,#0 + BEQ ScatterFileSymbols +CommandLineSymbols + LDR R2, =|Image$$RW$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop +ScatterFileSymbols + LDR R1, =|Image$$ER_IROM1$$Limit| ; start of flashed initial RW data + LDR R2, =|Image$$RW_IRAM1$$Base| ; start of the RW data in RAM + LDR R3, =|Image$$RW_IRAM1$$ZI$$Base| ; end of the RW data in RAM + MOV R5, R3 ; start of zero initialized data + LDR R6, =|Image$$RW_IRAM1$$ZI$$Limit| ; end of zero initialized data + B CondRWLoop + + ; init non-zero data +LoopRWCopy LDR R4, [R1] + STR R4, [R2] + ADDS R1, R1, #4 + ADDS R2, R2, #4 +CondRWLoop CMP R2, R3 + BNE LoopRWCopy + + ; init zero-initialized data + MOV R2, R5 + MOV R3, R6 + MOVS R4, #0 + B CondZILoop +LoopZICopy STR R4, [R2] + ADDS R2, R2, #4 +CondZILoop CMP R2, R3 + BNE LoopZICopy + + ; fingerprint stack section + LDR R0, =Stack_Mem + LDR R1, =Stack_Size + LDR R2, =0xEFBEADDE ; stack fingerprint (little endian!) +LoopStack STR R2, [R0] + ADDS R0, R0, #4 + SUBS R1, #4 + BNE LoopStack + + ; go to the user main function + LDR R0, =main + BX R0 + ENDP + + +; ------------------------------------------------------------------- +; -- End of file +; ------------------------------------------------------------------- + + ALIGN + + END diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s new file mode 100644 index 0000000..fd8a0f9 --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/startup_ctboard.s @@ -0,0 +1,439 @@ +;******************** (C) COPYRIGHT 2013 STMicroelectronics ******************** +;* File Name : startup_stm32f429_439xx.s +;* Author : MCD Application Team +;* Version : V1.3.0 +;* Date : 08-November-2013 +;* Description : STM32F429xx/439xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the system clock and the external SRAM/SDRAM mounted +;* on STM324x9I-EVAL boards to be used as data memory +;* (optional, to be enabled by user) +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM4 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;* <<< Use Configuration Wizard in Context Menu >>> +;******************************************************************************* +; +; Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); +; You may not use this file except in compliance with the License. +; You may obtain a copy of the License at: +; +; http://www.st.com/software_license_agreement_liberty_v2 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +; +;******************************************************************************* + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00002000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 + EXPORT Stack_Size + EXPORT Stack_Mem + +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000800 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDIO_IRQHandler ; SDIO + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD CRYP_IRQHandler ; CRYP crypto + DCD HASH_RNG_IRQHandler ; Hash and Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __system + IMPORT __main + ENTRY + + LDR R0, =__system + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDIO_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT CRYP_IRQHandler [WEAK] + EXPORT HASH_RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDIO_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +CRYP_IRQHandler +HASH_RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler + B . + + ENDP + + ALIGN + + END + +;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE***** diff --git a/bit_manipulations/RTE/Device/CT_Board_HS14_M0/system_ctboard.c b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/system_ctboard.c new file mode 100644 index 0000000..58c804c --- /dev/null +++ b/bit_manipulations/RTE/Device/CT_Board_HS14_M0/system_ctboard.c @@ -0,0 +1,290 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Interface of module system_ctboard. + * Description : Basic system configuration. + * * initialize system clock + * * initialize FMC (SRAM & GPIO) + * + * GPIO FMC pin assignment: + * + * PD0 > FMC_D2 | PE0 > FMC_NBL0 | PF0 > FMC_A0 | PG0 > FMC_A10 + * PD1 > FMC_D3 | PE1 > FMC_NBL1 | PF1 > FMC_A1 | PG1 > FMC_A11 + * PD3 > FMC_CLK | PE2 > FMC_A23 | PF2 > FMC_A2 | PG2 > FMC_A12 + * PD4 > FMC_NOE | PE3 > FMC_A19 | PF3 > FMC_A3 | PG3 > FMC_A13 + * PD5 > FMC_NWE | PE4 > FMC_A20 | PF4 > FMC_A4 | PG4 > FMC_A14 + * PD6 > FMC_WAIT | PE5 > FMC_A21 | PF5 > FMC_A5 | PG5 > FMC_A15 + * PD7 > FMC_NE1 | PE6 > FMC_A22 | PF12 > FMC_A6 | PG9 > FMC_NE2 + * PD8 > FMC_D13 | PE7 > FMC_D4 | PF13 > FMC_A7 | PG10 > FMC_NE3 + * PD9 > FMC_D14 | PE8 > FMC_D5 | PF14 > FMC_A8 | PG12 > FMC_NE4 + * PD10 > FMC_A15 | PE9 > FMC_D6 | PF15 > FMC_A9 | PG13 > FMC_A24 + * PD11 > FMC_A16 | PE10 > FMC_D7 | | + * PD12 > FMC_A17 | PE11 > FMC_D8 | | + * PD13 > FMC_A18 | PE12 > FMC_D9 | | + * PD14 > FMC_D0 | PE13 > FMC_D10 | | + * PD15 > FMC_D1 | PE14 > FMC_D11 | | + * | PE15 > FMC_D12 | | + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* Standard includes */ +#include + + +/* User includes */ +#include "system_ctboard.h" +#include "reg_stm32f4xx.h" +#include "reg_ctboard.h" + + +/* -- Macros (LCD) + * ------------------------------------------------------------------------- */ + +#define LCD_WAIT 0x1fff + + +/* -- Macros (FMC) + * ------------------------------------------------------------------------- */ + +#define FMC_PORTD_PINMASK 0xfffb +#define FMC_PORTE_PINMASK 0xffff +#define FMC_PORTF_PINMASK 0xf03f +#define FMC_PORTG_PINMASK 0x363f + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static void init_SystemClock(void); +static void init_FPU(void); +static void init_FMC_SRAM(void); +static void init_LCD(void); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Entry point used in startup. + */ +void __system(void) +{ + system_enter_run(); +} + + +/* + * See header files + */ +void system_enter_run(void) +{ + /* Initialize RCC / system clock */ + init_SystemClock(); + + /* Iitialize FPU */ + init_FPU(); + + /* Initialize SRAM interface */ + init_FMC_SRAM(); + + /* Initialize LCD on CT-Board */ + init_LCD(); +} + + +/* + * See header file + */ +void system_enter_sleep(hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_stop(hal_pwr_regulator_t regulator, hal_pwr_lp_entry_t entry) +{ + /** \note Implement this function if needed. */ +} + + +/* + * See header file + */ +void system_enter_standby(void) +{ + /** \note Implement this function if needed. */ +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Configures the System clock source, PLL Multiplier and Divider + * factors, AHB/APBx prescalers and Flash settings. + */ +static void init_SystemClock(void) +{ + hal_rcc_pll_init_t pll_init; + hal_rcc_clk_init_t clk_init; + + /* Enable used periphery */ + PWR_ENABLE(); + + /* Reset */ + hal_rcc_reset(); + PWR_RESET(); + + /* Enable HSE oscillator and proceed if ok */ + if (hal_rcc_set_osc(HAL_RCC_OSC_HSE, ENABLE)) { + /* Select regulator voltage output Scale 1 mode */ + RCC->APB1ENR |= 0x00000000; + PWR->CR |= 0x0000c000; + + /* Configure PLL */ + pll_init.source = HAL_RCC_OSC_HSE; + pll_init.m_divider = 4u; + pll_init.n_factor = 168u; + pll_init.p_divider = 2u; + pll_init.q_divider = 7u; + hal_rcc_setup_pll(HAL_RCC_OSC_PLL, pll_init); + + /* Enable PLL */ + hal_rcc_set_osc(HAL_RCC_OSC_PLL, ENABLE); + + /* Enable overdrive to allow system clock >= 168 MHz */ + hal_pwr_set_overdrive(ENABLE); + + /* Configure Flash prefetch, Instruction cache, Data cache + * and wait state */ + FLASH->ACR = 0x00000705; + + /* Setup system clock */ + clk_init.osc = HAL_RCC_OSC_PLL; + clk_init.hpre = HAL_RCC_HPRE_2; // -> AHB clock : 84 MHz + clk_init.ppre1 = HAL_RCC_PPRE_2; // -> APB1 clock : 48 MHz + clk_init.ppre2 = HAL_RCC_PPRE_2; // -> APB2 clock : 48 MHz + hal_rcc_setup_clock(clk_init); + + } else { + /* If HSE fails to start-up, the application will have wrong clock con- + figuration. User can add here some code to deal with this error */ + } +} + + +/** + * \brief Initialize the floating point unit in M4 mode. + */ +static void init_FPU(void) +{ +#ifdef PLATFORM_M4 + /* No documentation about this, even the registers... */ + + /* set CP10 and CP11 Full Access */ + FPU->CPACR |= ((3u << 20u)|(3u << 22u)); +#endif +} + + +/** + * \brief Setup the flexible memory controller. This function configures the SRAM + * interface for accessing the periphery on the CT Board. + */ +static void init_FMC_SRAM(void) +{ +#ifndef NO_FMC + + hal_gpio_output_t gpio_init; + hal_fmc_sram_init_t sram_init; + hal_fmc_sram_timing_t sram_timing; + + /* Enable used peripherals */ + GPIOD_ENABLE(); + GPIOE_ENABLE(); + GPIOF_ENABLE(); + GPIOG_ENABLE(); + FMC_ENABLE(); + + /* Configure the involved GPIO pins to AF12 (FMC) */ + gpio_init.pupd = HAL_GPIO_PUPD_NOPULL; + gpio_init.out_speed = HAL_GPIO_OUT_SPEED_50MHZ; + gpio_init.out_type = HAL_GPIO_OUT_TYPE_PP; + + /* GPIOD configuration (pins: 0,1,3-15) */ + gpio_init.pins = FMC_PORTD_PINMASK; + hal_gpio_init_alternate(GPIOD, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOE configuration (pins: 0-15) */ + gpio_init.pins = FMC_PORTE_PINMASK; + hal_gpio_init_alternate(GPIOE, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOF configuration (pins: 0-5,12-15) */ + gpio_init.pins = FMC_PORTF_PINMASK; + hal_gpio_init_alternate(GPIOF, HAL_GPIO_AF_FMC, gpio_init); + + /* GPIOG configuration (pins: 1-5, 9, 10, 12, 13) */ + gpio_init.pins = FMC_PORTG_PINMASK; + hal_gpio_init_alternate(GPIOG, HAL_GPIO_AF_FMC, gpio_init); + + + /* Initialize the synchronous PSRAM on bank 1 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_PSRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = ENABLE; + sram_init.write_enable = ENABLE; + sram_init.write_burst = ENABLE; + sram_init.continous_clock = ENABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.clk_divider = 15u; + sram_timing.data_latency = 2u; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK1, sram_init, sram_timing); + + + /* Initialize the asynchronous SRAM on bank 2 */ + sram_init.address_mux = DISABLE; + sram_init.type = HAL_FMC_TYPE_SRAM; + sram_init.width = HAL_FMC_WIDTH_16B; + sram_init.read_burst = DISABLE; + sram_init.write_enable = DISABLE; + sram_init.write_burst = DISABLE; + sram_init.continous_clock = DISABLE; + + sram_timing.bus_turnaround = 1u; + sram_timing.address_setup = 11u; + sram_timing.address_hold = 5u; + sram_timing.data_setup = 11u; + sram_timing.mode = HAL_FMC_ACCESS_MODE_A; + + hal_fmc_init_sram(HAL_FMC_SRAM_BANK2, sram_init, sram_timing); + +#endif +} + + +/** + * \brief Wait for the LCD controller on the CT Board to be initialized. + * \TODO Possibly adjust LCD controller on CPLD to set status bit + * and wait for it in this function. + */ +static void init_LCD(void) +{ +#ifndef NO_FMC + uint32_t wait_for_lcd = LCD_WAIT; + for(; wait_for_lcd > 0; wait_for_lcd--); +#endif +} + diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 new file mode 100644 index 0000000..e454145 --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_fmc.c@3.0.1 @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_fmc. + * + * The hardware abstraction layer for the memory controller. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_fmc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define MASK_PERIPH_FMC (0x00000001) +#define MASK_SRAM_ENABLE (0x00000001) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_fmc_reset(hal_fmc_bank_t bank) +{ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = 0x000030db; + FMC->SRAM.BTR1 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = 0x000030d2; + FMC->SRAM.BTR2 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = 0x000030d2; + FMC->SRAM.BTR3 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = 0x000030d2; + FMC->SRAM.BTR4 = 0x0fffffff; + break; + } +} + + +/* + * See header file + */ +void hal_fmc_init_sram(hal_fmc_bank_t bank, + hal_fmc_sram_init_t init, + hal_fmc_sram_timing_t timing) +{ + uint32_t reg_cr = 0, reg_tr = 0; + + /* Input check */ + timing.address_setup &= 0xf; + timing.address_hold &= 0xf; + if (timing.address_hold < 1u) timing.address_hold = 1u; + timing.data_setup &= 0xff; + if (timing.data_setup < 1u) timing.data_setup = 1u; + timing.bus_turnaround &= 0xf; + + /* Input check clock divider (2..16) */ + if (timing.clk_divider > 16u) timing.clk_divider = 16u; + if (timing.clk_divider < 2u) timing.clk_divider = 2u; + timing.clk_divider -= 1u; // 0b0001 -> clk / 2 + + /* Input check data latency (2..17) */ + if (timing.data_latency > 17u) timing.data_latency = 17u; + if (timing.data_latency < 2u) timing.data_latency = 2u; + timing.data_latency -= 2u; // 0b0000 -> latency = 2 + + /* Process boolean parameter */ + if (init.address_mux == ENABLE) reg_cr |= (1u << 1u); + if (init.read_burst == ENABLE) reg_cr |= (1u << 8u); + if (init.write_enable == ENABLE) reg_cr |= (1u << 12u); + if (init.write_burst == ENABLE) reg_cr |= (1u << 19u); + if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u); + + /* Process non boolean parameter */ + reg_cr |= (init.type << 2u); + reg_cr |= (init.width << 4u); + + /* Process timing for async. SRAM */ + if (init.type == HAL_FMC_TYPE_SRAM) { + reg_tr |= (timing.address_setup << 0u); + reg_tr |= (timing.address_hold << 4u); + reg_tr |= (timing.data_setup << 8u); + reg_tr |= (timing.mode << 28u); + } + /* Process timing for sync. PSRAM */ + else if (init.type == HAL_FMC_TYPE_PSRAM) { + reg_tr |= (timing.clk_divider << 20u); + reg_tr |= (timing.data_latency << 24u); + } + /* Process bus turnaround time */ + reg_tr |= (timing.bus_turnaround << 16u); + + /* Write register */ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = reg_cr; + FMC->SRAM.BTR1 = reg_tr; + FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = reg_cr; + FMC->SRAM.BTR2 = reg_tr; + FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = reg_cr; + FMC->SRAM.BTR3 = reg_tr; + FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = reg_cr; + FMC->SRAM.BTR4 = reg_tr; + FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE; + break; + } +} + diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 new file mode 100644 index 0000000..59e0e4c --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_gpio.c@4.0.1 @@ -0,0 +1,412 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_gpio. + * + * The hardware abstraction layer for the GPIO periphery. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_gpio.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define NVIC_OFFSET_1_4 ( 6u) +#define NVIC_OFFSET_5_9 (23u) +#define NVIC_OFFSET_10_15 ( 8u) + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width); +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins); +static uint8_t get_syscfg_mask(reg_gpio_t *port); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_gpio_reset(reg_gpio_t *port) +{ + if(port == GPIOA) { + /* Reset GPIOA specific values */ + port->MODER = 0xa8000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x64000000; + } + else if (port == GPIOB) { + /* Reset GPIOB specific values */ + port->MODER = 0x00000280; + port->OSPEEDR = 0x000000c0; + port->PUPDR = 0x00000100; + } else { + /* Reset other GPIO */ + port->MODER = 0x00000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x00000000; + } + + port->OTYPER = 0x00000000; + port->AFRL = 0x00000000; + port->AFRH = 0x00000000; + port->ODR = 0x00000000; +} + +/* + * See header file + */ +void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* treat like input */ + hal_gpio_init_input(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); + + /* process port speed */ + port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u); + + /* process output typ */ + port->OTYPER &= ~init.pins; + if(init.out_type == HAL_GPIO_OUT_TYPE_OD){ + port->OTYPER |= init.pins; + } +} + + +/* + * See header file + */ +void hal_gpio_init_alternate(reg_gpio_t *port, + hal_gpio_af_t af_mode, + hal_gpio_output_t init) +{ + /* treat like output */ + hal_gpio_init_output(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u); + + /* process af type */ + port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u); + port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u); + port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u); + port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u); +} + + +/* + * See header file + */ +uint16_t hal_gpio_input_read(reg_gpio_t *port) +{ + return (uint16_t) port->IDR; +} + + +/* + * See header file + */ +uint16_t hal_gpio_output_read(reg_gpio_t *port) +{ + return (uint16_t) port->ODR; +} + + +/* + * See header file + */ +void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value) +{ + /* prevent overwrite false reg entry */ + port_value = intercept_overwrite_register(port, port_value); + port->ODR = port_value; +} + + +/* + * See header file + */ +void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = pins; + } +} + + +/* + * See header file + */ +void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = (pins << 16); + } +} + + +/* + * See header file + */ +void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins) +{ + uint16_t pattern; + + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + /* get actual value and invert */ + pattern = hal_gpio_output_read(port); + pattern = ~pattern; + + /* mask pins */ + pattern &= pins; + + port->ODR = pattern; + } +} + + +/* + * See header file + */ +void hal_gpio_irq_set(reg_gpio_t *port, + uint16_t pins, + hal_gpio_trg_t edge, + hal_bool_t status) +{ + uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line; + uint32_t exticr_mask; + + for (exti_line = 0u; exti_line < 16u; exti_line++) { + if (pins & (0x1 << exti_line)) { + syscfg_bank = exti_line / 4u; + syscfg_shift = exti_line % 4u; + nvic_bank = (exti_line < 10u) ? 0u : 1u; + + if (status == ENABLE) { + /* Trigger (rising/falling/both) */ + if (edge & HAL_GPIO_TRG_POS) { + EXTI->RTSR |= (0x1 << exti_line); + } + if (edge & HAL_GPIO_TRG_NEG) { + EXTI->FTSR |= (0x1 << exti_line); + } + /* Set EXTI line to corresponding GPIO port */ + exticr_mask = get_syscfg_mask(port); + if (syscfg_bank == 0u) { + SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 1u) { + SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 2u) { + SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 3u) { + SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift); + } + + /* Unmask interrupt */ + EXTI->IMR |= (0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + + } else { + /* Mask interrupt */ + EXTI->IMR &= ~(0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + } + } + } + +} + + +/* + * See header file + */ +hal_bool_t hal_gpio_irq_status(uint16_t pin) +{ + hal_bool_t status = DISABLED; + + if ((EXTI->IMR && pin) && + (EXTI->PR && pin)) { + status = ENABLED; + } + + return status; +} + + +/* + * See header file + */ +void hal_gpio_irq_clear(uint16_t pin) +{ + EXTI->PR |= pin; +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Creates a pattern based on specified pins. + * + * example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide) + * ==> pattern = 0x0000'0288 + * + * 0b0..0'0001'1010 / 0b10 (2 bit wide) + * ^ ^ ^ + * ==> 0b0..0'00010'1000'1000 + * ^^ ^^ ^^ + * + * pattern_bit_width must be 2 or 4 + */ +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width) +{ + const uint8_t mask_bit_width = 32u; + const uint16_t pin1_mask = 1u; + + uint8_t pos, end; + uint32_t mask = 0u; + + if (pattern_bit_width == 2u || pattern_bit_width == 4u) { + /* create pattern mask */ + end = mask_bit_width / pattern_bit_width; + for (pos = 0; pos < end; pos++) { + if (pins & pin1_mask) { + mask |= pattern << (pos * pattern_bit_width); + } + pins >>= 1; + } + } else { + /* exit if pattern_bit_width not as needed */ + mask = 0u; + } + + return mask; +} + + +/** + * \brief This function ensures that these sensitive pins are not reconfigured. + * + * On GPIOA and GPIOB only pins 11 down to 0 are available to the user. + * Pins 15 down to 12 are used for system functions of the discovery board, + * e.g. connection of the debugger. + * These pins must not be reconfigured. Otherwise the debugger cannot be used any more. + */ +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){ + if (port == GPIOA || port == GPIOB){ + pins &= 0x0FFF; + } + return pins; +} + + +/** + * \brief Returns mask for configuration of SYSCFG_EXTICR register. + * \param port : Port of which the mask should be generated. + * \return Mask for specified port. + */ +static uint8_t get_syscfg_mask(reg_gpio_t *port) +{ + return ((port == GPIOA) ? 0u : + (port == GPIOB) ? 1u : + (port == GPIOC) ? 2u : + (port == GPIOD) ? 3u : + (port == GPIOE) ? 4u : + (port == GPIOF) ? 5u : + (port == GPIOG) ? 6u : + (port == GPIOH) ? 7u : + (port == GPIOI) ? 8u : + (port == GPIOJ) ? 9u : 10u); +} diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 new file mode 100644 index 0000000..a244dd6 --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_pwr.c@2.2.0 @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_pwr. + * + * The hardware abstraction layer for the power control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_pwr.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x1000 +#define MASK_PERIPH_PWR (1u << 28u) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_pwr_reset(void) +{ + /* Reset peripheral */ + PWR->CR = 0x0000c000; + PWR->CSR = 0x00000000; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status) +{ + uint16_t count = 0; + uint32_t reg = 0; + + if (status == DISABLE) { + /* Disable backup domain / regulator */ + PWR->CSR &= ~(1u << 9u); + return DISABLED; + } + + /* Enable backup domain / regulator */ + PWR->CSR |= (1u << 9u); + + /* Wait till regulator is ready and if time out is reached exit */ + reg = PWR->CSR & (1u << 3u); + while ((reg == 0) && (count != TIME_OUT)) { + reg = PWR->CSR & (1u << 3u); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_pwr_set_backup_access(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 8u); + } else { + PWR->CR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_wakeup_pin(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CSR &= ~(1u << 8u); + } else { + PWR->CSR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_flash_powerdown(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 9u); + } else { + PWR->CR |= (1u << 9u); + } +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_overdrive(hal_bool_t status) +{ + /* Is this realy nedded ? + Extend clock to 180 MHz if HSI/HSE is used, but pll ? */ + return DISABLED; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_underdrive(hal_bool_t status) +{ + /* Is this realy nedded ? */ + return DISABLED; +} diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 new file mode 100644 index 0000000..fdd4d3a --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/.hal_rcc.c@4.0.1 @@ -0,0 +1,347 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_rcc. + * + * The hardware abstraction layer for the reset and clock control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_rcc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x5000 + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_rcc_reset(void) +{ + /* Set RCC->CR to default values */ + RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running + RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S, + // PLLSAI bits (STM32F42xx/43xx) + RCC->CR &= 0xfffbffff; // Reset HSEBYP bit + + /* Reset RCC->CFGR to default values */ + RCC->CFGR = 0u; + + /* Reset RCC->PLLxCFGR to default values */ + RCC->PLLCFGR = 0x24003010; + RCC->PLLI2SCFGR = 0x20003000; + RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx) + + /* Disable all interrupts */ + RCC->CIR = 0u; + + /* Disable all peripherals */ + RCC->AHB1RSTR = 0u; + RCC->AHB2RSTR = 0u; + RCC->AHB3RSTR = 0u; + RCC->APB1RSTR = 0u; + RCC->APB2RSTR = 0u; + RCC->AHB1ENR = 0x00100000; + RCC->AHB2ENR = 0u; + RCC->AHB3ENR = 0u; + RCC->APB1ENR = 0u; + RCC->APB2ENR = 0u; + RCC->AHB1LPENR = 0x7e6791ff; + RCC->AHB2LPENR = 0x000000f1; + RCC->AHB3LPENR = 0x00000001; + RCC->APB1LPENR = 0x36fec9ff; + RCC->APB2LPENR = 0x00075f33; + + /* Reset forgotten registers */ + RCC->BDCR = 0u; + RCC->CSR = 0x0e000000; + RCC->SSCGR = 0u; + RCC->DCKCFGR = 0u; +} + + +/* + * See header file + */ +void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status) +{ + volatile uint32_t *reg; + uint32_t bit_pos; + + /* Select correct enable register */ + switch (peripheral) { + /* AHB1 */ + case PER_GPIOA: + bit_pos = 0u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOB: + bit_pos = 1u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOC: + bit_pos = 2u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOD: + bit_pos = 3u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOE: + bit_pos = 4u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOF: + bit_pos = 5u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOG: + bit_pos = 6u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOH: + bit_pos = 7u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOI: + bit_pos = 8u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOJ: + bit_pos = 9u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOK: + bit_pos = 10u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA1: + bit_pos = 21u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA2: + bit_pos = 22u; + reg = &RCC->AHB1ENR; + break; + + /* AHB3 */ + case PER_FMC: + bit_pos = 0u; + reg = &RCC->AHB3ENR; + break; + + /* APB1 */ + case PER_DAC: + bit_pos = 29u; + reg = &RCC->APB1ENR; + break; + case PER_PWR: + bit_pos = 28u; + reg = &RCC->APB1ENR; + break; + case PER_TIM2: + bit_pos = 0u; + reg = &RCC->APB1ENR; + break; + case PER_TIM3: + bit_pos = 1u; + reg = &RCC->APB1ENR; + break; + case PER_TIM4: + bit_pos = 2u; + reg = &RCC->APB1ENR; + break; + case PER_TIM5: + bit_pos = 3u; + reg = &RCC->APB1ENR; + break; + + + /* APB2 */ + case PER_ADC1: + bit_pos = 8u; + reg = &RCC->APB2ENR; + break; + case PER_ADC2: + bit_pos = 9u; + reg = &RCC->APB2ENR; + break; + case PER_ADC3: + bit_pos = 10u; + reg = &RCC->APB2ENR; + break; + + default: + return; + } + + if (status == DISABLE) { + *reg &= ~(1u << bit_pos); + } else { + *reg |= (1u << bit_pos); + } +} + + +/* + * See header file + */ +hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status) +{ + uint32_t reg = 0; + uint32_t count = 0; + + /* Disable source */ + if (status == DISABLE) { + RCC->CR &= ~(1u << source); + return DISABLED; + } + + /* If pll, check if source is ok */ + if (source == HAL_RCC_OSC_PLL || + source == HAL_RCC_OSC_PLLI2S || + source == HAL_RCC_OSC_PLLSAI) + { + reg = RCC->CR; + /* HSE */ + if (RCC->PLLCFGR & ~(1u << 22u)) { + reg &= (1u << (HAL_RCC_OSC_HSE + 1u)); + } + /* HSI */ + else { + reg &= (1u << (HAL_RCC_OSC_HSI + 1u)); + } + /* Return if source is not ok */ + if (!reg) { + return DISABLED; + } + } + + /* Enable source */ + RCC->CR |= (1u << source); + + /* Wait till source is ready and if time out is reached exit */ + reg = RCC->CR & (1u << (source + 1u)); + while ((reg == 0) && (count != TIME_OUT)) { + reg = RCC->CR & (1u << (source + 1u)); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init) +{ + /* Input check */ + if (init.m_divider < 2u) init.m_divider = 2u; + + if (init.n_factor < 2u) init.n_factor = 2u; + if (init.n_factor > 432u) init.n_factor = 432u; + + if (init.p_divider > 8u) init.p_divider = 8u; + + if (init.q_divider < 2u) init.q_divider = 2u; + + init.r_divider &= 0x07; + + /* Set source or return if invalid */ + if (init.source == HAL_RCC_OSC_HSI) { + RCC->PLLCFGR &= ~(1u << 22u); + } else if (init.source == HAL_RCC_OSC_HSE) { + RCC->PLLCFGR |= (1u << 22u); + } else { + return; + } + + /* Set pll preescaler */ + RCC->PLLCFGR &= ~(0x3f); + RCC->PLLCFGR |= init.m_divider; + + /* Configure pll */ + switch (pll) { + case HAL_RCC_OSC_PLL: + RCC->PLLCFGR &= ~0x0f037fc0; + RCC->PLLCFGR |= (init.n_factor << 6u); + RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u); + RCC->PLLCFGR |= (init.q_divider << 24u); + break; + + case HAL_RCC_OSC_PLLI2S: + RCC->PLLI2SCFGR &= ~0x7f007fc0; + RCC->PLLI2SCFGR |= (init.n_factor << 6u); + RCC->PLLI2SCFGR |= (init.q_divider << 24u); + RCC->PLLI2SCFGR |= (init.r_divider << 28u); + break; + +/* case HAL_RCC_OSC_PLLSAI: + RCC->PLLSAICFGR &= ~0x7f007fc0; + RCC->PLLSAICFGR |= (init.n_factor << 6u); + RCC->PLLSAICFGR |= (init.q_divider << 24u); + RCC->PLLSAICFGR |= (init.r_divider << 28u); + break; +*/ + default: + break; + } +} + + +/* + * See header file + */ +void hal_rcc_setup_clock(hal_rcc_clk_init_t init) +{ + uint32_t reg = 0; + + /* Configure clock divider */ + RCC->CFGR &= ~0x0000fcf0; + RCC->CFGR |= (init.hpre << 4u); + RCC->CFGR |= (init.ppre1 << 10u); + RCC->CFGR |= (init.ppre2 << 13u); + + /* Select system clock source */ + RCC->CFGR &= ~0x00000003; + switch (init.osc) { + default: + case HAL_RCC_OSC_HSI: + reg = 0u; + break; + + case HAL_RCC_OSC_HSE: + reg = 1u; + break; + + case HAL_RCC_OSC_PLL: + reg = 2u; + break; + } + RCC->CFGR |= reg; + +#ifndef TESTING + /* Wait till system clock is selected */ + while ((RCC->CFGR & 0x0000000c) != (reg << 2u)); +#endif +} diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c new file mode 100644 index 0000000..e454145 --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_fmc.c @@ -0,0 +1,143 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_fmc. + * + * The hardware abstraction layer for the memory controller. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_fmc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define MASK_PERIPH_FMC (0x00000001) +#define MASK_SRAM_ENABLE (0x00000001) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_fmc_reset(hal_fmc_bank_t bank) +{ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = 0x000030db; + FMC->SRAM.BTR1 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = 0x000030d2; + FMC->SRAM.BTR2 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = 0x000030d2; + FMC->SRAM.BTR3 = 0x0fffffff; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = 0x000030d2; + FMC->SRAM.BTR4 = 0x0fffffff; + break; + } +} + + +/* + * See header file + */ +void hal_fmc_init_sram(hal_fmc_bank_t bank, + hal_fmc_sram_init_t init, + hal_fmc_sram_timing_t timing) +{ + uint32_t reg_cr = 0, reg_tr = 0; + + /* Input check */ + timing.address_setup &= 0xf; + timing.address_hold &= 0xf; + if (timing.address_hold < 1u) timing.address_hold = 1u; + timing.data_setup &= 0xff; + if (timing.data_setup < 1u) timing.data_setup = 1u; + timing.bus_turnaround &= 0xf; + + /* Input check clock divider (2..16) */ + if (timing.clk_divider > 16u) timing.clk_divider = 16u; + if (timing.clk_divider < 2u) timing.clk_divider = 2u; + timing.clk_divider -= 1u; // 0b0001 -> clk / 2 + + /* Input check data latency (2..17) */ + if (timing.data_latency > 17u) timing.data_latency = 17u; + if (timing.data_latency < 2u) timing.data_latency = 2u; + timing.data_latency -= 2u; // 0b0000 -> latency = 2 + + /* Process boolean parameter */ + if (init.address_mux == ENABLE) reg_cr |= (1u << 1u); + if (init.read_burst == ENABLE) reg_cr |= (1u << 8u); + if (init.write_enable == ENABLE) reg_cr |= (1u << 12u); + if (init.write_burst == ENABLE) reg_cr |= (1u << 19u); + if (init.continous_clock == ENABLE) reg_cr |= (1u << 20u); + + /* Process non boolean parameter */ + reg_cr |= (init.type << 2u); + reg_cr |= (init.width << 4u); + + /* Process timing for async. SRAM */ + if (init.type == HAL_FMC_TYPE_SRAM) { + reg_tr |= (timing.address_setup << 0u); + reg_tr |= (timing.address_hold << 4u); + reg_tr |= (timing.data_setup << 8u); + reg_tr |= (timing.mode << 28u); + } + /* Process timing for sync. PSRAM */ + else if (init.type == HAL_FMC_TYPE_PSRAM) { + reg_tr |= (timing.clk_divider << 20u); + reg_tr |= (timing.data_latency << 24u); + } + /* Process bus turnaround time */ + reg_tr |= (timing.bus_turnaround << 16u); + + /* Write register */ + switch (bank) { + default: + case HAL_FMC_SRAM_BANK1: + FMC->SRAM.BCR1 = reg_cr; + FMC->SRAM.BTR1 = reg_tr; + FMC->SRAM.BCR1 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK2: + FMC->SRAM.BCR2 = reg_cr; + FMC->SRAM.BTR2 = reg_tr; + FMC->SRAM.BCR2 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK3: + FMC->SRAM.BCR3 = reg_cr; + FMC->SRAM.BTR3 = reg_tr; + FMC->SRAM.BCR3 |= MASK_SRAM_ENABLE; + break; + + case HAL_FMC_SRAM_BANK4: + FMC->SRAM.BCR4 = reg_cr; + FMC->SRAM.BTR4 = reg_tr; + FMC->SRAM.BCR4 |= MASK_SRAM_ENABLE; + break; + } +} + diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c new file mode 100644 index 0000000..59e0e4c --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_gpio.c @@ -0,0 +1,412 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_gpio. + * + * The hardware abstraction layer for the GPIO periphery. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_gpio.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define NVIC_OFFSET_1_4 ( 6u) +#define NVIC_OFFSET_5_9 (23u) +#define NVIC_OFFSET_10_15 ( 8u) + + +/* -- Local function declarations + * ------------------------------------------------------------------------- */ + +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width); +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins); +static uint8_t get_syscfg_mask(reg_gpio_t *port); + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_gpio_reset(reg_gpio_t *port) +{ + if(port == GPIOA) { + /* Reset GPIOA specific values */ + port->MODER = 0xa8000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x64000000; + } + else if (port == GPIOB) { + /* Reset GPIOB specific values */ + port->MODER = 0x00000280; + port->OSPEEDR = 0x000000c0; + port->PUPDR = 0x00000100; + } else { + /* Reset other GPIO */ + port->MODER = 0x00000000; + port->OSPEEDR = 0x00000000; + port->PUPDR = 0x00000000; + } + + port->OTYPER = 0x00000000; + port->AFRL = 0x00000000; + port->AFRH = 0x00000000; + port->ODR = 0x00000000; +} + +/* + * See header file + */ +void hal_gpio_init_input(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_IN, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_analog(reg_gpio_t *port, hal_gpio_input_t init) +{ + /* treat like input */ + hal_gpio_init_input(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AN, 2u); +} + + +/* + * See header file + */ +void hal_gpio_init_output(reg_gpio_t *port, hal_gpio_output_t init) +{ + /* prevent overwrite false reg entry */ + init.pins = intercept_overwrite_register(port, init.pins); + + /* process mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_OUT, 2u); + + /* process pull up/down resitors */ + port->PUPDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->PUPDR |= create_pattern_mask(init.pins, init.pupd, 2u); + + /* process port speed */ + port->OSPEEDR &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->OSPEEDR |= create_pattern_mask(init.pins, init.out_speed, 2u); + + /* process output typ */ + port->OTYPER &= ~init.pins; + if(init.out_type == HAL_GPIO_OUT_TYPE_OD){ + port->OTYPER |= init.pins; + } +} + + +/* + * See header file + */ +void hal_gpio_init_alternate(reg_gpio_t *port, + hal_gpio_af_t af_mode, + hal_gpio_output_t init) +{ + /* treat like output */ + hal_gpio_init_output(port, init); + + /* change mode */ + port->MODER &= ~create_pattern_mask(init.pins, 0x3, 2u); + port->MODER |= create_pattern_mask(init.pins, HAL_GPIO_MODE_AF, 2u); + + /* process af type */ + port->AFRL &= ~create_pattern_mask(init.pins, 0xf, 4u); + port->AFRL |= create_pattern_mask(init.pins, af_mode, 4u); + port->AFRH &= ~create_pattern_mask((init.pins >> 8), 0xf, 4u); + port->AFRH |= create_pattern_mask((init.pins >> 8), af_mode, 4u); +} + + +/* + * See header file + */ +uint16_t hal_gpio_input_read(reg_gpio_t *port) +{ + return (uint16_t) port->IDR; +} + + +/* + * See header file + */ +uint16_t hal_gpio_output_read(reg_gpio_t *port) +{ + return (uint16_t) port->ODR; +} + + +/* + * See header file + */ +void hal_gpio_output_write(reg_gpio_t *port, uint16_t port_value) +{ + /* prevent overwrite false reg entry */ + port_value = intercept_overwrite_register(port, port_value); + port->ODR = port_value; +} + + +/* + * See header file + */ +void hal_gpio_bit_set(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = pins; + } +} + + +/* + * See header file + */ +void hal_gpio_bit_reset(reg_gpio_t *port, uint16_t pins) +{ + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + port->BSRR = (pins << 16); + } +} + + +/* + * See header file + */ +void hal_gpio_bit_toggle(reg_gpio_t *port, uint16_t pins) +{ + uint16_t pattern; + + /* prevent overwrite false reg entry */ + pins = intercept_overwrite_register(port, pins); + + /* exit if no pins to be configured */ + if (pins != 0) { + /* get actual value and invert */ + pattern = hal_gpio_output_read(port); + pattern = ~pattern; + + /* mask pins */ + pattern &= pins; + + port->ODR = pattern; + } +} + + +/* + * See header file + */ +void hal_gpio_irq_set(reg_gpio_t *port, + uint16_t pins, + hal_gpio_trg_t edge, + hal_bool_t status) +{ + uint8_t syscfg_bank, nvic_bank, syscfg_shift, exti_line; + uint32_t exticr_mask; + + for (exti_line = 0u; exti_line < 16u; exti_line++) { + if (pins & (0x1 << exti_line)) { + syscfg_bank = exti_line / 4u; + syscfg_shift = exti_line % 4u; + nvic_bank = (exti_line < 10u) ? 0u : 1u; + + if (status == ENABLE) { + /* Trigger (rising/falling/both) */ + if (edge & HAL_GPIO_TRG_POS) { + EXTI->RTSR |= (0x1 << exti_line); + } + if (edge & HAL_GPIO_TRG_NEG) { + EXTI->FTSR |= (0x1 << exti_line); + } + /* Set EXTI line to corresponding GPIO port */ + exticr_mask = get_syscfg_mask(port); + if (syscfg_bank == 0u) { + SYSCFG->EXTICR1 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR1 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 1u) { + SYSCFG->EXTICR2 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR2 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 2u) { + SYSCFG->EXTICR3 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR3 |= (exticr_mask << syscfg_shift); + } else if (syscfg_bank == 3u) { + SYSCFG->EXTICR4 &= ~(0xf << syscfg_shift); + SYSCFG->EXTICR4 |= (exticr_mask << syscfg_shift); + } + + /* Unmask interrupt */ + EXTI->IMR |= (0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ISER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ISER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ISER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + + } else { + /* Mask interrupt */ + EXTI->IMR &= ~(0x1 << exti_line); + if (nvic_bank == 0u) { + NVIC->ICER0 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 1u) { + NVIC->ICER1 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } else if (nvic_bank == 2u) { + NVIC->ICER2 |= ((exti_line < 5u) ? (0x1 << (exti_line + NVIC_OFFSET_1_4)) : + (exti_line < 10u) ? NVIC_OFFSET_5_9 : NVIC_OFFSET_10_15); + } + } + } + } + +} + + +/* + * See header file + */ +hal_bool_t hal_gpio_irq_status(uint16_t pin) +{ + hal_bool_t status = DISABLED; + + if ((EXTI->IMR && pin) && + (EXTI->PR && pin)) { + status = ENABLED; + } + + return status; +} + + +/* + * See header file + */ +void hal_gpio_irq_clear(uint16_t pin) +{ + EXTI->PR |= pin; +} + + +/* -- Local function definitions + * ------------------------------------------------------------------------- */ + +/** + * \brief Creates a pattern based on specified pins. + * + * example: pins = 1,3,4 (0x001a) / pattern = 0x2 (2 bit wide) + * ==> pattern = 0x0000'0288 + * + * 0b0..0'0001'1010 / 0b10 (2 bit wide) + * ^ ^ ^ + * ==> 0b0..0'00010'1000'1000 + * ^^ ^^ ^^ + * + * pattern_bit_width must be 2 or 4 + */ +static uint32_t create_pattern_mask(uint16_t pins, + uint8_t pattern, + uint8_t pattern_bit_width) +{ + const uint8_t mask_bit_width = 32u; + const uint16_t pin1_mask = 1u; + + uint8_t pos, end; + uint32_t mask = 0u; + + if (pattern_bit_width == 2u || pattern_bit_width == 4u) { + /* create pattern mask */ + end = mask_bit_width / pattern_bit_width; + for (pos = 0; pos < end; pos++) { + if (pins & pin1_mask) { + mask |= pattern << (pos * pattern_bit_width); + } + pins >>= 1; + } + } else { + /* exit if pattern_bit_width not as needed */ + mask = 0u; + } + + return mask; +} + + +/** + * \brief This function ensures that these sensitive pins are not reconfigured. + * + * On GPIOA and GPIOB only pins 11 down to 0 are available to the user. + * Pins 15 down to 12 are used for system functions of the discovery board, + * e.g. connection of the debugger. + * These pins must not be reconfigured. Otherwise the debugger cannot be used any more. + */ +static uint16_t intercept_overwrite_register(reg_gpio_t *port, uint16_t pins){ + if (port == GPIOA || port == GPIOB){ + pins &= 0x0FFF; + } + return pins; +} + + +/** + * \brief Returns mask for configuration of SYSCFG_EXTICR register. + * \param port : Port of which the mask should be generated. + * \return Mask for specified port. + */ +static uint8_t get_syscfg_mask(reg_gpio_t *port) +{ + return ((port == GPIOA) ? 0u : + (port == GPIOB) ? 1u : + (port == GPIOC) ? 2u : + (port == GPIOD) ? 3u : + (port == GPIOE) ? 4u : + (port == GPIOF) ? 5u : + (port == GPIOG) ? 6u : + (port == GPIOH) ? 7u : + (port == GPIOI) ? 8u : + (port == GPIOJ) ? 9u : 10u); +} diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c new file mode 100644 index 0000000..a244dd6 --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_pwr.c @@ -0,0 +1,132 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_pwr. + * + * The hardware abstraction layer for the power control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_pwr.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x1000 +#define MASK_PERIPH_PWR (1u << 28u) + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_pwr_reset(void) +{ + /* Reset peripheral */ + PWR->CR = 0x0000c000; + PWR->CSR = 0x00000000; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_backup_domain(hal_bool_t status) +{ + uint16_t count = 0; + uint32_t reg = 0; + + if (status == DISABLE) { + /* Disable backup domain / regulator */ + PWR->CSR &= ~(1u << 9u); + return DISABLED; + } + + /* Enable backup domain / regulator */ + PWR->CSR |= (1u << 9u); + + /* Wait till regulator is ready and if time out is reached exit */ + reg = PWR->CSR & (1u << 3u); + while ((reg == 0) && (count != TIME_OUT)) { + reg = PWR->CSR & (1u << 3u); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_pwr_set_backup_access(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 8u); + } else { + PWR->CR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_wakeup_pin(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CSR &= ~(1u << 8u); + } else { + PWR->CSR |= (1u << 8u); + } +} + + +/* + * See header file + */ +void hal_pwr_set_flash_powerdown(hal_bool_t status) +{ + if (status == DISABLE) { + PWR->CR &= ~(1u << 9u); + } else { + PWR->CR |= (1u << 9u); + } +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_overdrive(hal_bool_t status) +{ + /* Is this realy nedded ? + Extend clock to 180 MHz if HSI/HSE is used, but pll ? */ + return DISABLED; +} + + +/* + * See header file + */ +hal_bool_t hal_pwr_set_underdrive(hal_bool_t status) +{ + /* Is this realy nedded ? */ + return DISABLED; +} diff --git a/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c new file mode 100644 index 0000000..fdd4d3a --- /dev/null +++ b/bit_manipulations/RTE/HAL/CT_Board_HS14_M0/hal_rcc.c @@ -0,0 +1,347 @@ +/* ---------------------------------------------------------------------------- + * -- _____ ______ _____ - + * -- |_ _| | ____|/ ____| - + * -- | | _ __ | |__ | (___ Institute of Embedded Systems - + * -- | | | '_ \| __| \___ \ Zurich University of - + * -- _| |_| | | | |____ ____) | Applied Sciences - + * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland - + * ------------------------------------------------------------------------- */ +/** + * \brief Implementation of module hal_rcc. + * + * The hardware abstraction layer for the reset and clock control unit. + * + * $Id$ + * ------------------------------------------------------------------------- */ + +/* User includes */ +#include "hal_rcc.h" +#include "reg_stm32f4xx.h" + + +/* -- Macros + * ------------------------------------------------------------------------- */ + +#define TIME_OUT 0x5000 + + +/* -- Public function definitions + * ------------------------------------------------------------------------- */ + +/* + * See header file + */ +void hal_rcc_reset(void) +{ + /* Set RCC->CR to default values */ + RCC->CR |= 0x00000001; // Set HSION bit first -> keep cpu running + RCC->CR &= 0xeaf6ffff; // Reset HSEON, CSSON, PLLON, PLLI2S, + // PLLSAI bits (STM32F42xx/43xx) + RCC->CR &= 0xfffbffff; // Reset HSEBYP bit + + /* Reset RCC->CFGR to default values */ + RCC->CFGR = 0u; + + /* Reset RCC->PLLxCFGR to default values */ + RCC->PLLCFGR = 0x24003010; + RCC->PLLI2SCFGR = 0x20003000; + RCC->PLLSAICFGR = 0x24003000; // only STM32F42xx/43xx) + + /* Disable all interrupts */ + RCC->CIR = 0u; + + /* Disable all peripherals */ + RCC->AHB1RSTR = 0u; + RCC->AHB2RSTR = 0u; + RCC->AHB3RSTR = 0u; + RCC->APB1RSTR = 0u; + RCC->APB2RSTR = 0u; + RCC->AHB1ENR = 0x00100000; + RCC->AHB2ENR = 0u; + RCC->AHB3ENR = 0u; + RCC->APB1ENR = 0u; + RCC->APB2ENR = 0u; + RCC->AHB1LPENR = 0x7e6791ff; + RCC->AHB2LPENR = 0x000000f1; + RCC->AHB3LPENR = 0x00000001; + RCC->APB1LPENR = 0x36fec9ff; + RCC->APB2LPENR = 0x00075f33; + + /* Reset forgotten registers */ + RCC->BDCR = 0u; + RCC->CSR = 0x0e000000; + RCC->SSCGR = 0u; + RCC->DCKCFGR = 0u; +} + + +/* + * See header file + */ +void hal_rcc_set_peripheral(hal_peripheral_t peripheral, hal_bool_t status) +{ + volatile uint32_t *reg; + uint32_t bit_pos; + + /* Select correct enable register */ + switch (peripheral) { + /* AHB1 */ + case PER_GPIOA: + bit_pos = 0u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOB: + bit_pos = 1u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOC: + bit_pos = 2u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOD: + bit_pos = 3u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOE: + bit_pos = 4u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOF: + bit_pos = 5u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOG: + bit_pos = 6u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOH: + bit_pos = 7u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOI: + bit_pos = 8u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOJ: + bit_pos = 9u; + reg = &RCC->AHB1ENR; + break; + case PER_GPIOK: + bit_pos = 10u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA1: + bit_pos = 21u; + reg = &RCC->AHB1ENR; + break; + case PER_DMA2: + bit_pos = 22u; + reg = &RCC->AHB1ENR; + break; + + /* AHB3 */ + case PER_FMC: + bit_pos = 0u; + reg = &RCC->AHB3ENR; + break; + + /* APB1 */ + case PER_DAC: + bit_pos = 29u; + reg = &RCC->APB1ENR; + break; + case PER_PWR: + bit_pos = 28u; + reg = &RCC->APB1ENR; + break; + case PER_TIM2: + bit_pos = 0u; + reg = &RCC->APB1ENR; + break; + case PER_TIM3: + bit_pos = 1u; + reg = &RCC->APB1ENR; + break; + case PER_TIM4: + bit_pos = 2u; + reg = &RCC->APB1ENR; + break; + case PER_TIM5: + bit_pos = 3u; + reg = &RCC->APB1ENR; + break; + + + /* APB2 */ + case PER_ADC1: + bit_pos = 8u; + reg = &RCC->APB2ENR; + break; + case PER_ADC2: + bit_pos = 9u; + reg = &RCC->APB2ENR; + break; + case PER_ADC3: + bit_pos = 10u; + reg = &RCC->APB2ENR; + break; + + default: + return; + } + + if (status == DISABLE) { + *reg &= ~(1u << bit_pos); + } else { + *reg |= (1u << bit_pos); + } +} + + +/* + * See header file + */ +hal_bool_t hal_rcc_set_osc(hal_rcc_osc_t source, hal_bool_t status) +{ + uint32_t reg = 0; + uint32_t count = 0; + + /* Disable source */ + if (status == DISABLE) { + RCC->CR &= ~(1u << source); + return DISABLED; + } + + /* If pll, check if source is ok */ + if (source == HAL_RCC_OSC_PLL || + source == HAL_RCC_OSC_PLLI2S || + source == HAL_RCC_OSC_PLLSAI) + { + reg = RCC->CR; + /* HSE */ + if (RCC->PLLCFGR & ~(1u << 22u)) { + reg &= (1u << (HAL_RCC_OSC_HSE + 1u)); + } + /* HSI */ + else { + reg &= (1u << (HAL_RCC_OSC_HSI + 1u)); + } + /* Return if source is not ok */ + if (!reg) { + return DISABLED; + } + } + + /* Enable source */ + RCC->CR |= (1u << source); + + /* Wait till source is ready and if time out is reached exit */ + reg = RCC->CR & (1u << (source + 1u)); + while ((reg == 0) && (count != TIME_OUT)) { + reg = RCC->CR & (1u << (source + 1u)); + count++; + } + + /* Return */ + if (reg != 0) { + return ENABLED; + } + return DISABLED; +} + + +/* + * See header file + */ +void hal_rcc_setup_pll(hal_rcc_osc_t pll, hal_rcc_pll_init_t init) +{ + /* Input check */ + if (init.m_divider < 2u) init.m_divider = 2u; + + if (init.n_factor < 2u) init.n_factor = 2u; + if (init.n_factor > 432u) init.n_factor = 432u; + + if (init.p_divider > 8u) init.p_divider = 8u; + + if (init.q_divider < 2u) init.q_divider = 2u; + + init.r_divider &= 0x07; + + /* Set source or return if invalid */ + if (init.source == HAL_RCC_OSC_HSI) { + RCC->PLLCFGR &= ~(1u << 22u); + } else if (init.source == HAL_RCC_OSC_HSE) { + RCC->PLLCFGR |= (1u << 22u); + } else { + return; + } + + /* Set pll preescaler */ + RCC->PLLCFGR &= ~(0x3f); + RCC->PLLCFGR |= init.m_divider; + + /* Configure pll */ + switch (pll) { + case HAL_RCC_OSC_PLL: + RCC->PLLCFGR &= ~0x0f037fc0; + RCC->PLLCFGR |= (init.n_factor << 6u); + RCC->PLLCFGR |= (((init.p_divider - 1) >> 1u) << 16u); + RCC->PLLCFGR |= (init.q_divider << 24u); + break; + + case HAL_RCC_OSC_PLLI2S: + RCC->PLLI2SCFGR &= ~0x7f007fc0; + RCC->PLLI2SCFGR |= (init.n_factor << 6u); + RCC->PLLI2SCFGR |= (init.q_divider << 24u); + RCC->PLLI2SCFGR |= (init.r_divider << 28u); + break; + +/* case HAL_RCC_OSC_PLLSAI: + RCC->PLLSAICFGR &= ~0x7f007fc0; + RCC->PLLSAICFGR |= (init.n_factor << 6u); + RCC->PLLSAICFGR |= (init.q_divider << 24u); + RCC->PLLSAICFGR |= (init.r_divider << 28u); + break; +*/ + default: + break; + } +} + + +/* + * See header file + */ +void hal_rcc_setup_clock(hal_rcc_clk_init_t init) +{ + uint32_t reg = 0; + + /* Configure clock divider */ + RCC->CFGR &= ~0x0000fcf0; + RCC->CFGR |= (init.hpre << 4u); + RCC->CFGR |= (init.ppre1 << 10u); + RCC->CFGR |= (init.ppre2 << 13u); + + /* Select system clock source */ + RCC->CFGR &= ~0x00000003; + switch (init.osc) { + default: + case HAL_RCC_OSC_HSI: + reg = 0u; + break; + + case HAL_RCC_OSC_HSE: + reg = 1u; + break; + + case HAL_RCC_OSC_PLL: + reg = 2u; + break; + } + RCC->CFGR |= reg; + +#ifndef TESTING + /* Wait till system clock is selected */ + while ((RCC->CFGR & 0x0000000c) != (reg << 2u)); +#endif +} diff --git a/bit_manipulations/RTE/_Target_1/RTE_Components.h b/bit_manipulations/RTE/_Target_1/RTE_Components.h new file mode 100644 index 0000000..0e431be --- /dev/null +++ b/bit_manipulations/RTE/_Target_1/RTE_Components.h @@ -0,0 +1,15 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'bitmanipulation' + * Target: 'Target 1' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/bit_manipulations/app/main.c b/bit_manipulations/app/main.c index 5e9f264..f93ceb4 100644 --- a/bit_manipulations/app/main.c +++ b/bit_manipulations/app/main.c @@ -27,7 +27,8 @@ // define your own macros for bitmasks below (#define) /// STUDENTS: To be programmed - +#define BRIGHT_MASK 0xC0 +#define DARK_MASK 0xCF @@ -50,7 +51,8 @@ int main(void) led_value = read_byte(ADDR_DIP_SWITCH_7_0); /// STUDENTS: To be programmed - + led_value = (led_value | BRIGHT_MASK); + led_value = (led_value & DARK_MASK); diff --git a/bit_manipulations/bitmanipulation.uvguix.roman b/bit_manipulations/bitmanipulation.uvguix.roman new file mode 100644 index 0000000..9865694 --- /dev/null +++ b/bit_manipulations/bitmanipulation.uvguix.roman @@ -0,0 +1,3637 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 100 + + + 346 + Code Coverage + 1010 656 + + + 204 + Performance Analyzer + 352 175 175 964 + + + + + + 35141 + Event Statistics + + 250 50 874 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 52 + 52 + 1492 + 811 + + + + 0 + + 536 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000300000000000000010000004C433A5C55736572735C726F6D616E5C446F63756D656E74735C4C61625F325F4269744D616E6970756C6174696F6E735C6269745F6D616E6970756C6174696F6E735C6170705C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF6F433A5C55736572735C726F6D616E5C446F63756D656E74735C4C61625F325F4269744D616E6970756C6174696F6E735C6269745F6D616E6970756C6174696F6E735C5254455C4465766963655C43545F426F6172645F485331345F4D305C737461727475705F6374626F6172642E730000000011737461727475705F6374626F6172642E7300000000FFDC7800FFFFFFFF55433A5C55736572735C726F6D616E5C446F63756D656E74735C4C61625F325F4269744D616E6970756C6174696F6E735C6269745F6D616E6970756C6174696F6E735C6170705C7574696C735F6374626F6172642E63000000000F7574696C735F6374626F6172642E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000069030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000001201000004010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000006A03000080070000E6030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 22000000390000001201000004010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 22000000390000003E01000079020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 22000000390000001201000004010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000052030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000520300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000080070000DF000000 + + + 16 + F40000006600000080070000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000EA020000 + + + 16 + 22000000390000001201000004010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000EA020000 + + + 16 + 22000000390000003E01000079020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000EA020000 + + + 16 + 22000000390000003E01000079020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000EA020000 + + + 16 + 22000000390000003E01000079020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0000000007030000C0030000E6030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000080070000DF000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 22000000390000001201000004010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000EA020000 + + + 16 + 22000000390000003E01000079020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 437 + 437 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 440 + 440 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 22000000390000003E01000079020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C6000000 + + + 16 + 2200000039000000EA020000C9000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 22000000390000001201000004010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300001E0300007D070000CD030000 + + + 16 + 22000000390000001201000004010000 + + + + 3312 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F40000006600000080070000F6000000F40000004F00000080070000DF0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000003030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F00000001A030000000000004F000000F0000000030300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000003030000800700000703000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000C40300001E03000080070000FD030000C40300000703000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7301000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727301000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC003000007030000C4030000E603000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000520300008007000056030000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2537 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000004001D000000000000000000000000000000000100000001000000018030800000000004001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000004006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000004002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000004000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000004002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000400230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000004005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + .\app\main.c + 42 + 17 + 55 + 1 + + 0 + + + RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + 0 + 182 + 196 + 1 + + 0 + + + .\app\utils_ctboard.c + 21 + 1 + 30 + 1 + + 0 + + + + +
diff --git a/bit_manipulations/bitmanipulation.uvoptx b/bit_manipulations/bitmanipulation.uvoptx index 1f951a5..854b4ba 100644 --- a/bit_manipulations/bitmanipulation.uvoptx +++ b/bit_manipulations/bitmanipulation.uvoptx @@ -117,6 +117,26 @@ STLink\ST-LINKIII-KEIL_SWO.dll + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + 0 ST-LINKIII-KEIL_SWO @@ -135,12 +155,12 @@ 0 0 - 0 + 1 0 0 0 0 - 0 + 1 0 0 0 diff --git a/bit_manipulations/build/ExtDll.iex b/bit_manipulations/build/ExtDll.iex new file mode 100644 index 0000000..6c0896e --- /dev/null +++ b/bit_manipulations/build/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/bit_manipulations/build/bitmanipulation.axf b/bit_manipulations/build/bitmanipulation.axf new file mode 100644 index 0000000000000000000000000000000000000000..560a73c1e5d6bc5ea5bd0c5fdf24169e91c2404a GIT binary patch literal 48148 zcmeHw34B$>+4r0?_ne$0H_6Qcgb?6n0fIvIKtP0>+~ksk1VR!PHS}hM8x2X!f@ozC zT&P+_!5xiN+gfW|%BL3B($==r+BV>Z7H!(v)>>O}r*3@zXU?6Qb5DY`Z?#{)_t%@> z%sl_+dFGk*%*>f{CTB}|wNFtLCVwi+Vua3Bneq68jJ*t}s!S_nZt$~MEQ>K!-ONoo z=fiywZWG)VxQpPVEg5bH?~)+@GK61(yW+p@-&O~DbwrKZ$BxAuKaj3^f0Y*R$pUg6 zfBR1dd`x9cXxJvUv1c*c0T<|5tOiN~E?>`Lr3Y>+TvN|t=YgKZ36*T7V<@32Vaa4) z!qUj$gv!LKM9_&#`LHvP)D$^6Ve-wTe?N4JufWGLmEoi&!XF%RR>V}sRH;pDvSS`0 zwpjLzk#JU==r?X~(6jJohU}$pJ@)#y6lUlZTNmqy`SG7d|6PZ^^bT~k-p`IH$G1Lu z?EcI4Dw)$FyvvF^vb@F3?AX^nEcUsImB37|(xe2w0pB$(%a?{)SpE^qnle<}QQXYk zTX}J1R6zAcHQlKuPj{siRpmnCf{${A=7Nu?4mW+6SCLn#G#P1*^ju#eI4^%x95B)p z@4Tks08)eR4kC{T_XphG{Y`9|I)mMyT$fSdoSspY=Q|ZKFL|FhX%%Tfyh-4x6;p$F zK;X$0lY@Bu`}%d0mTK2eTIRTc?^bs!yV>q6-%MY+F9X(A9%t7n*QwX>>l`;|*X!50 zAvr}zDvw9(J@)7UUv9DLVLi-qH&Y|n0@b5Mpq8Dg=YtanU8?5s zr!uBQYtcQ6=?`?4F{EZi5Am$nL(vt^%97^f+}PpBipa{6CL=d;Sg(kv{6Ui|*D>s< zP^LPnBJ-n~IO?ls@d2NMvD**lGIrv`iMV6;U%Z#^te8?#T2fNY6t|{E-lWWAhuS7a zAyf`2ye&CeP(N_AB|A-?=Jdwi_QpQfOm(MnopOX-uME4~Z09v>lCou5K+W~UPs>sF zm$D;8QPJL*+muuEA$CgAp4=>s)?mv-ZU}&TK$P8=dhN3Scz&n0FIKLpgz&Whgq7^bWzg}npj#%lhRVs zQqqi;ai|`Q)ShGaZ{N$VRWkM<_YUuu_NCX{TdEvNuTJx*yV&$1Uz|_9k!Pg(?(eIV7HJ;C?ZA!Uy{aJSdp+`}TS+G$ueZBB(jT_x2&>mLt$S z(!_3jd>@;3ich`G?YrBv#K`khmMWeo@3&IjvnP_?O$P%m@4+T6`XA--L>yz(_LRpI zpP9=m_RX!lvUH+PIW(toqKC~`=!^03Yk7K-?-5VHPaA~x zobHu575XmUeov>N?&f=@L01duzIjN!R@pNg*y|leZhx|m&6w}wx8_2-+L#&4Em=*o zabFodPZQU*T6M>ijOqTFbX_pm2yvtD0j55WT4zeu#LmYy$gLe z<5pGk?%3z4{4(0cQ)zh6_pf0yPWSPhijQYb_dVvRFeV~*d7c?zDbnJ!+E z4CPfl7s&DERz260>-nBBX=qW#R8L&ScF!qQYEI^mk~90zs=%OkRTIBuyQemg?5%B@ zHC&AAp|~kB`=>{=?AWI!xYKJ2hT~>j=9yfT754ALrQwB%DvI(p-bWeMD<@98`zp(2nOkY?lFQsD zu35MF#LqsSQ{azauKUMltv|vt=2UHE%3bc&m-!C(-f=SH12`py84++XaPe^C;OgNf z!cB%-4wnWu4Q?jfY`8qQA~+5=4{i~h7p@X+8C+7nk#Xv9QhsDc7W}A;X~VAk$r$l0`$k;F>QH<@@hZddfs4HHO|D02&9?XclqxoJ+E8j%>=7j`+PB>^E;Ccl zD2*6O3^W9iYG##A8LD(lgl|fd0;%4lCQs@`9?i`;%RFmJTZt=Rc$7nI)_bzQq+R53 z1$N-tpdO>9O)MQgM3hBe{)_gGbEui?ozs16XuR+KeX}Dc%~qb8G%Z_M5zB^> zVzX;pGudveux8dDQqr#0W(FSg@?n#j=iM@6i#pXavuS2vQRY{?Gn-frADZf$81=J# z%J5X5nl>xo#PySsl`@o^RdDEpTXDpDW(880&G6(j-KS+bvjfw;*-c93%Z{&3-n1sw=bFE~ba_c~7CWS-xiO!)n|83YfHOVHv#s>~Lp@k;8%QILpE#k!E7M{V zH6H7lFex@(Nzk!Sb10RG(b4mxPm5-ZXE7d|ib36x31VS%Gpp5z-!Cz|$VOk6aPvDj?n zZVY~$#?%R>BAIj*hQatTVpS%Ry#%{NGt)^7+0)2gQplcw?B7>KC#i>Md%mM*Of*a6 z4COqUavl@Pxqv6Dzkg$iLR~~d(+9fvXw*ew%)SvT`$pVI-*6$4hOUH27%GGP zN-G9T5ZWLT$EY4^?j%%B@<=xsm#qkZMz2hCBh~R5?2&1zx(S6AkUU*<*@+gzdC*Cr z+9qPsWF;?=y5{QWGon|)R4OG!lF1sQV2Z|4R9&ZpQWO<(YRHIyv&M)= zv1U`rN2>9&=~`%18c%}lJ~Ez&&Jr2k4Wi89B|6m8PytS}KgG!Y6g$$N;_T%R)sI0W zRC-ZO@uAWSm@qQBC5Dn0quXawVC4C88bHndKST73IBQ36oune-?R`6es)D*O4U?AZ ziAv6mX~rZ2JyUVf#F5Ro08ISG8aK_EgIgQRIC@NF&OKj&K^W=)C+=C5HX`k>$VAUeOz=kih;mtO@)rPm(@WnQKsSWS2;md=V z@;E{gJ|4Zm%}$AK%L zC+&M2%y5pjpDFEEYs{#&=-&u@7qBfqZfS3U&Wz)u<(X1m7{QFxG18OrS_2!`qvcsL zKPw|4hkc0~ZMY4XY)Sc6V7CR|4s7kWj|Z_#{}tc`qtg%7M`m=meGf2QTQa>`U~1E3 zIQq2#FF;rt>!S9%gkS6k>E3R$^@t50vEjFYt=HJ`AeL!;2)x6Vmh4{_;|A{)Aw&N{ zXO(d}ag)|>izDk|7_zs8EUfP(%eYU+GGn!jd#PDAS^`lX;iDF*UdkxIZyg-vFpFbI zeh|Q+%;yh~gnu8N!Vkh%`5|KP=ixi}@8E0vFYtB#7W@eQ5qyJ3z;q;!habf!!H?$C z;5&H^{1`qDek}LGkK;A)U3?Y%c-{;@fp@@9DsKT0~=Vf;v`84U46-25biLO~ZK8wsFe z$!1}yF-h`^+(xFP=VThQK~E%|xmm^%$uG_|>Lop|&^Sxd^NWpE(8A_v3yk%WzrbS* zNc!|LV-sj$b76&XndC33HLj7gr@^>I(j}{nuYwjfOB;>vNWQnpcu>-1ZN`s43!CKu z;}??e>oE>XdU3z;tkkL4Xbek!K7AES|3IP7unP0^&YNapEqA(wzc+f#8dP!lID6CLpiE#4m-#8o>Re z{40VifkuR*!XjlyV@l%9(0I(G$zI~qz&|u`2LhHrgG8-}(nRdjltjw0P&rNc1IVPm zz!Pbnu836h15l^DDl_!yAh!^?TBA;={}uQiU^PppYMGAFMs0|2s?`RSiE^OUFyp5P ze?at7hw%!+r-)vr8wS(`T^nH}NP4+p;6BOZ*GDq_NhtpYjxTZyA&5}*mk^+^j4yP& z3DQvXV+cCIQJW%M>RHA-kRt6yW}FUs8j038jO7UNJdCMdFpRa5_B)xLgjz2p!92Yl zem1-wV18$W!EZO3Kwd^BzJhKd={p=O@=8*sR9eARJyDc0&2h?_3&3z> zMAM{JEEqe8kxk>HGYWZ}fybjJj41=mCYXCCq%ju&Rujx4>nxV$KAK0AHQyo=OPx2% z=u5?D8%vX+sqj-$ILrC4R5;62pxMz>c!?AO&ZANxAQYnIbg8U)pA-f}EZ?aFddCj3zn1ZhQAx> z>_g&)Bm7yfg?e^vM&!#B7K z_nrn%7k-iO7YqLk_>uf<;eS#1Ul#tL@V^T`ia##==io>4Kf!nM_kT=jv4cB|yfn77Dusy+_b@3i@86u>py}PfvmOHn8It z5m}BO8ux*`0W8OlnDHY?KkhJ|ko1oY5cyy`($wf=M~dp4 z03b3v2@};M2~t&ubE*WBRl}Jn!4%c$#Nz-n&Q#Uq%#pyYCNV7o!&g)eyeq(VoTWr( zI_ebX=~4&7pR-JY2E~CFUxKDqD2B6Ef|ZKXxmto%ip$v~!D=PR834EyNjT0>lAV`G z$(f3q#ZWE8egiU<#hnX@5ux2rIr;&-mAIdEXsXMIb-boHZi{BemsPDUEE1kn`BStQMvI!zHph>Ll31_C^QBDPTBX4C{~IV^Y+X&5a- zUsl%SVojvYPEu+&BZ@XV3hm3rH50vE`8t3yUI?};BpJVbM8L-FAmCRhe~Kybizwsw zkf2GS)W_dNbhDr*JV5kXlYYoTKSuOAVQ9jSh;CCRV2q#e3!+<QcR>l!nN|~@iYNLz!J51W9-H(H_>Vz4o}{(oQvQT! z4}dp?|B!t3m++@P0_F=K+%8%xq$w-jB%pjuzB>v+)6Of>PQ$nq%EKr-Gz)$TJJ?q< z^Rpr;w?aa13#kHH)Z&G-lG|E6g{N`OImU3`G)+l*A-zh$=*( zX3_i_)wpPq=fDp&2`SLJXY3|vgEWPtXp(kVA61p}!L(N8%25>|ns%qOgC==sEIU_! zIy;ZSj_4w2k~qxHB0px6ylk^DMw5uF{85@{8JAKlO;~$bGnm#QjW#6g7}(?yS!qp5 zxpFK!_y0pXERlAKXq~LAX`mK8J98M3M2ns+TJ!{ODKX)WGKE~2f{&bg>*tSp2b#d0yeY_qd!?3TYv+UXyc(kks( ztGgIXYkp2*=LudsG1r6bas-kdnX$H{P8Kc z&$0HwLO^R-M(2bj%FRDzO$RmkrI|YrNi_MTqRD>_*pDkxyKD;lOj`Pg9* zrJd^%Q#e}5l9MAg3-zPAJ)0)?ZaXk}nGMml3hnks9l$*NBnrfI#seyPk z2$o2@yVNYon(HX`x8*Y6+Y~QJS$;Wnj&GAqF&+eIYvoj{u;9DsP5mG zNf+jafZrha=A)oyq=4K@@NHTS&6o%Bp%Lf@`4fWg(84V1a7dDMG(@tQnW4M=w_#G7 zr;z1Su7Jj$No$^1$el`wiiA%SayH9@Xw(CgHHoBFsmxYtMTANbf$6mWMU%WbLw^bu zTRrmxCzn8>emTgcL@v|^L0(AY zPW^{S>t-VFW0zxH>tMCmMsg^B160Q>UH#l_dYY zkRR5KLy-R(rF1-nWyfzMcv^QDFH7(Y_U!&F!Lz#4_?raJ=`Q0f36AJV#&HRr*OQHp zBzQqjHB_Yf7fR>Xx;xShAQC;QJCw-jK*J<@Q8$#xTq%1=cPf!{r0h4kONsPI*)TTm zB7IW!TRmBctd+9g>3FmiMFyj(MV>`2u*E<)<~?}xSgaGOMnoJn@B(NkYr4VEGF%7I z2d)<6g>)sxdGJ`yKon)oCgPU33elQEp@bA%mw@ZTNT`(>=t-_~Aia|my_Z26zZT>o zl9p52@ib)qE(BThbfmBwD$0!LYoR_9A|;UERKAdS54e8;OYyVBUrD-INqkY#Eo$Pc zl5XXR??}4ck*L6oh`Uxxj0OD>*;!|>=yyT<6pFabdk}%4M1K<*NTgINq7#w*UlO?r zL-ex5B_KP&QfgUZ3+VHRUhYWT1bQ3Mbw=XNQm5XT_*F?axDxkCdPP#=W0GE(%%Ybf zxm94OGorr;avew|FM21)?L;nMSy)OsSP2Fvhw^8zoNV?u+`M5tI1?c~nr%Tns;41_ zLphay15CyrgO3f?JqU0GnzD5Ml#snDWF`}jhcuda`8fD4J`H{{FM^-KE8yetkcg}1 z@Us9JKO4Tm&xaq$cfgP0H^7hPUx)AH--92+55kY-&%?*=l^NZ`Uj=mVzr)wKF#(qx zp8!81sKBT48Gww>hOh8^LC+U-iJ+^94k|m!d7WUc6AByQV;~R-Idb?FLUgAPJwhV> z418>snF^=z*M))uldCj{w}B_pT+2_jGK={_!CXd6-V9%+qIr3r5PeCA21&&4haXC% zmj7HR{6_e%3tz>{6&U7(p9x>#MZ)*NSNSU82ZVn1)mhit1-@%83|6Ad| z318zJcX}F668<#d&k_D&_&Q%L{0{gL{6gVhE&Mx#{{Vc09~Axz!vCxAPY6GL5;b(X z@C$@rF8o!(?|>i0FBJaO@T2)4d?){o@P91)XW_^2Kf#aX$KlH^p{4T}S~GBZIIr*m z_$v3o$B<3eq^{tC+CCYX#uLMcS;iRm`jRhP{%;6T=OX#uLLW zlExFm9g@Zq!)riaK{oNk@Mg)!6T>?tjVFfpg1(+~@Wk*5$;T7J!;;1m!xtotCx*WR zEo|b6;cJqQCx&lJ8cz&A1TAdhiJ^`nigMwJp-a+uVwfUnJTc4!Eo|b6VYcLZn~Y*f z%09e?&{5GjP2=B{?7=h;wDgd`G?46+}DY`Vmob%=@IaE0|%cYx;~&M_6?5XbIT+y){K(=J_{;s$x>DUeK$h2I8|1FK)hkBwN6RCEVczlosf znU@2r-z?BeiN@-8G3YahrqypWX2@hP9F_WXkoiOw>We|v61haH@+w7c8BpJNw3w6Abe&)5?(fhsz=2`}LhL+&RYU2;! zC433QF%T^Nc~puM>%%)p#jhoN6O!M8moOiTir0wP2I4&sSWd{-zi{j6hI&V$Qv0qT z#$idrT=H!&WzDaM+Y51A8WC=Y6P4vcw^!)K$T!85HNPd@FN&w0AA(e}^-_krazs?7 zv7;ysXY|zBq0}{$=ajW?=xA-v@izENyPJF4{1x?ih5nk{oWB0%-u{6ee`|jW@w5Aw zw|jk0cUOB?|9p2z?|L`Ej?VU8_uB4Wclr93_O`b6Hus$Dykd7lcX#J}H{MEY?pyCZ ztEj!OwWU2bcMbE-Z(PyW-rLvM+r7TItFf%RbznX0^)*&ExA^n@r5*h>&0QTm1D(zN z9o=1hjV&GhekhJ`#A|_gtHzj#1+!Y$-q+smuW0USLpFp+yd}7_rZU7N#szR{1@3lLXQN9y*}3r3 zaI1C+!XZS@L=C8?QZ>wh_YAnoLdQ=L7>Y_40h6NRs0Cad3Hy_fVBJl@wqYjWc=7ZK8+8WR+L8=QK6$o(C@8^^Vy~U^~$_IF4j{pGoQcUsA&k-YFju-)R zN_u+Aa2@7Ucegfo=3rFKscmjOr!S|ntGpgVvKWyu9GCfOa|*L_v-5K*N~$4j?Hp)p zr_mJdU$Yk+{iR8o5GV=zY`|Ecxzpd;y?%XnS9X9(Lb$iJ)dWl0J39RviW*DmYRGx3 zOO`HfEbZuO%+7A?Fmv13*WcFB)en7@vEKG|{=WY81^H_WH*N$A6(;SqqUun68q-vI zyN;(TT1-^+_S?0%OSFU{OjrsU}S z{w>)WZtf1FgKJt;fzH3NrAmv``41HJNk!3OYuZTs*ybut(fLm>OY(;{ix|I9pcl1F z%c#})-4G|~{HXG*mXNE(=vDlV%~d-8BdOnP%3f2lNuXuw9oj@an_mMf6Lfw|SxfeJ zLP-Ot(&E=rLQ#l)DKsYP{3%3?*RzQ`W1Gp1v6u$?eM*M3Vdx@t8*;T&=O1jkjbEZ> z>nP&;o7QT{I=@_{f@Sk}H$nYs6)C*2={9XV5-0lDrnNf1mZ-mNs?rj4ej_Z6+phCJ z5#%?i4{4g-q4SqFZPQY8ew(^ho3$NOm3EpwsPkc@FU$0t1#1Rj46n z4{mx0T>cDFO1Ko2i7F&Z)yT%CDqK&q(TN;v*8lEH>@&Kmdd}<34qjEbr&Q@>K%BhA zRTa=;mxv2xbrrQt4m!wk>PJz$0NtpjN{iL`d?E6!MGxT%(Tb(ne4(``@5eQU9#w>E zh$li$7`A@J=nBI7COY4{1>KepG4Mf)YwZ~Z``-i&@zD{@JB8+pLi0{j^LM0qo2mKd z5zXs`=Bq;UdQ5KpRG!A>Ajnl!bQtl9Av^7VUx!)O)6qRLB3no3!| z1T3R6y~)F8E1D67@n?Az&&j4`Y8!Ll z$!hx;()>vIgywhy3Lk!w!rOEOU%3T&_$v+jCrjuZ*f~Cy9W4>jH>2tKJIWZ9L*g$( zoY0{e+qLoQG$o+(t>%F7C1o2%iX%FIXESO}$wqja*}ul9L=xPw8Drg>n`K_}Y+aC4 z?j)5rOchMC_Tp$RoqtW__ScHx9xdn8i=nd%3x}+ADAe=H7m6O#!3|$8m z1+(&UZE{p1hI1OH>nwB^U2xARm;^q&a9glTYjONrSbWf8>KEoBQ6QpUf+&v_yVdc7aIZ z1~ZAb6fB#*yxCZ-6=K$UPf<@%M9C&%bwVq$czv19x5GTfq7x{;8`ttyR65``^f9+s zqQYx*XFg~5C^S@)w5`@`HwN#%rZM#;qPManM7@mxk6TlLkzktOPI_wUtrAStU zbqqrO-X>(}DlpABScst;T!ST55dRI$I!Wi(gA+9L3JhVX_kUDlHL4i^b@33bl3YWvC_I5RR%{f;OqA$8u_U@pEQ$UX-gT^9AH2)3--3Kb6CByM z%y0B)m)1vG6b6j59-_W57Z*h(nsIiO7K0_|a?wHZO@N6G8d>NGtG7`zo(A1=(T0z+ zhp-0X<1t8lZ42bTW-#&9Es$f)qw~9ndXaco>*)L?qV6DS2voLMHeuEM40{uE+FDvI z>HH6*a|_l!Sy;Q1jhirA;)do~qVEA8_Y}`zXwTvkklwYX@DL5F-@!nS`-H;~Chp%?DS}Gs+ z5N2)V5>VY$Im?LVk=uaIu9_{@eLJ9x`nZZN(Kk1*#TqO|^w4wue_ex}WTVu)b)`l2 z==)-Ok0l(wU<-Bb&!98+o!{5rzCN^{7wppp*8KEHh5v$4r$#%Wd5S>sxwmyJ(ISlu zeH(5StF?IC>%D@(5gqDwWn0H37~+6%?|To8$j@TLh2*=Kjx?URZTq_IxJ~;y&2hg| zs*KEc-{sh>PB0Fl8$7ky*s1ed&9%j=OkJR8N)-NUMv)~Di*m8O#>#1HL}7YppM>xy z?MyQ^dT$z?3cE2Xof_vqQk0aG6do~g3VxHPOrFdiQ6{RYuIor=EA%+?!T%@I9Am#U zm?&*o@>7xKBqVEkDXByT{ZN>if?OcopCfe#^NT!;-XLmZ%{{1@f2u|b(mhpVdmFZ;U`d{8Lt$@Svh8Ls3^2g#b_fJ z!z?oTPZf+xfilpB9L@-999|O%Y+8o${D7z^)td@eC z;T-HOrFQT*sI!p+69I@HsgsVvmXksg6hKnY7SvrnNYq+WK!G%}d{9_`M=?K!Q(5sK zg$`(`Y~CP+x}fI|Mj>G)7X_GC}qgZri zki>ft?t_bFeJpaC!AgRg8qVIO^s%`q zkP|_QDk-JHO<~sPqxFQ&r!hDMN((-PLDE?Wmo|37=Q89nm`748{S+oir|gsT&NItQ zI=yh?#!i|<)F{p{F>&rbc_b1&HY$>A!XuFUQAlfdIYdJ_>UTMaa||w;flJj-OkyNq zQ``_t0~|ur;WW0(2`Fv807W{~Po0dy6gUiCQk(=L9S+@!0uP*d{Sj3P2LT1uaN&a@ zo^{|qpPPpB5f;NKtbv00f~@x-pm^5)ZH+aSycYWO9EbWpg0*nr$##N6s{$xcux*qA z4c0W@K!JkWMk(9{&eu!@3ho}IK%9F_1q$vRrBDsdYEyxNm*G^lDOBY&&tX2p#kb3` z365wgNF=T@b(cykf@fP)h<-d=g& z;1srsG%gin9R*ZL;KCQbJ@Bch(xxo-7&b}uE;z)dirFj31`76>T=?Qg`9BP&vjLG$ zqMwF~G_f_Gr1~Tr`Xy-`5oA3DFPL2T;&%)_&7Ejl3e3TCq~eLEV&s!mMzjkqlGV$K zCrAUfr7Z~3Bq3wLi1<!O5qnwwlqq`+6pI)61@#>45Ora0UYX| zG%gin0|h%wuCz(jbce~h2La7`xa29=YjUlMG@r}HCz@i6(fCxwkHcZ2eGP@xiZN@z*0C_T|}3`jZs~sN)s(?l17CfS5i=Aa;44HfNSBTO`-#EW7s6sCOFt6 zjZQ(Xq@c^>N}HPjuY{8}iM|SM44b5SDI9E)#I3R5FBih#!*48q~Il!D{VS38N0-UTuZ@K zf^4ARJ~;Fc7ln@tcHI*QUVsaq56J}mPZgv^0ljr%?OC)cNQXnGRyUaI8iMp6nxber z3i1ed!O`MTCE{i{hv>*Mucv^M52vt|^ARi*AK`y6Yhsl*TNpUNjnDiW& zNI_E!G3hxbS@U@_*mql0iN5FLs&_zy#8{vYtk8M38k9ykK&z ziig3H`6QZRjFHb*zHmFD5v0KlPi;tLXUF7 zVJxM<1sC1}iIZR|P%wU!LNYj6LLs#5YydnvoV5{fXE=-Cwc)HifcpfimVyI#pE5i* zr0^4=P)C7Os0%HMNa3(hs6U3_T|v@XQ~YiZN@>kXS`;6>Q;Lao6i&lpD}UPHs~{hN zMi5FZ7g+RP(r_U<@i3I(EfPU@BD^n1OWh;DbUGB(OTlY`4Am2{{su?cp^)Amg{F*5 zA)T58ivn6)o3%kyvMHdz4QC37N{2%X3QmDD1w_p<1r*Q{KD=Tpz@cL{h)F>@&7mkC zt#FEi^n8TXK^iLJw+;S{aIu&TSJEA2aKs@VttI2Y$4ogQkZVzlSb9)bE=O^zrL72A zpylU&xQS?sMRd2iffY{^1d$bVe@o)W;9OFL20S4l?!ixvOyVct+%ocL`@58Z%}9o{ zhTx`rl4k8Lg>;^U`-B{m_{b-l8rXs)Nrx84sV7eo36jR|;65Qi62A#Ix{8SVHrzOw zM5yw_%_)hNqOnIugh2dO!ruyqafRB7l&!adjo`Jx(G4qZc8NUOgf74?ko_i10^A64 zvk8*{w}QM8&M?<%xZfr82pp`@>W$j>$r1Px$d^YTDDk6g9fhN8QAlc7SyS*zkPR%h z=fKuMrot(#j(WYhh_9ng?=!iGB7RlyDZ|OkGq}s)x?8~xNPm z#VWuphARv@sj&ydKDboo`hfnsEB(mcE;SdLu(X<-Z# zq%j5MNMf$-z6d@Qjd&D$ir}9HP7xf1Qp3!!X~pc76ekrm zzsmtzV>)To)RLMMTAj2>p$dl)iUO+S@F5HgsX!$CNJ)o7910AI3FMj`nH~L#Uo4eMT@AS7e(>whqdu6n7 zbsp6|KC5vk- zmz4+|qDn*5h_o!kD-Th=5Vbf&RfMR@5LFeTmI$hLRhwsR)9wEQre(UeWc}dA+P)i zk`XHvwRPqGypV=~`QflI92SSeygA``j!iu;-xeXi$QGk0ZzRE5%8m_=7!=YGa{?lL zZyg&zUn$7?XMBM7yV66NQRbW!m zLZPq_l)^^1w1}0Kq0rv?ktFA^`g$+Qjq;<#Md?AJr3G2$T_Qqy7aK2fqn?5ntiP9z z)r1fovFT~=?dS=#_cnKivAg?P1#ZD{A4`11z`3EG&M;*s{Y^-St($P?;>>XfLFzD9`pS_=+9ptH2$ zgcy$gke;P`*_4`FTig5kLdGcidCljvQ|}ALl@ZoC zI+-9ZceF%|*tM1dQ38Uw%$!<9DNB6*x(07it~Dp%)p(bUqz3DeFjoDlsxaJ8 zSK>A2WN8=^zd65J80HLTVHAWLp|wJ&p(x?Xnj$;HoChs7=Gis!az}B(b5fa)g_SiO zFv7D2MtIihYb(Q}fDs-AjPT5Z5uSN4%q4)#JQ%iAN^GgDs4uB&2v1nB!jl%Pa7&mB z3)(mKhm~>#Y=vi$IN^B|rowYcN^?gU3U3B)$JFnh;h83#@C+_%SnT)J zhb2y|if~qWLq(Vht%0r0YeumfsxPYy@8)IR8gqdt+o!srEZk7}%JQWRVOM-Z-C}?3 zGD~)dv9x^gNczMmU4|U~6LSg;HI~KQGP-c<*fKG2V6B4@td3Q}ErTnqud8F#-X&O; z`Rc04s}OS#4WpQZPBxTR*3_|bxVi?+Sw8aWS5+dBT5|?N-|0Z?8mQFNvRYJV`RayB zZ(Uw6%nybI!LTs22pn_e=&h;6JV{d{Uf^q8yAGx+u?Wo-exC62Ll%I&LI&TYM`ZcX ztrhWVNd|gER)Bay2A|?tWreJ=q?F>phYbEmJbVSIcBG!d7EN+pIwzF5xvahc%WEo1 z7Y>!9AXs0uWBJz8@25%jyxxxfc1-!}I`E<*4s6pJ4HI=AYwc}shNP#tAN(#H`t8Fy z(F8K|)1vUaj<)^);`K2cnZ_$+q}I`uXGS1s(V~@uXlJox>*(qkpzL6^*fY@6CYB6B zN(dRXXhYG;=pN`N4svLTHL`3ONdia6JG<9eEg{EdY#Xz=lZuHFTlu3C38pM+ZA6pm z0SldQhAls&)8D;rU8gmL-gCp_br8c`aNAZ{W|<&v?QF*?8Ts({^|ZHJ${%8(riku8 zzsHi4~S5zME!@;W=Z+F9^Y zX=&~{hY`26*X#tM-wAF|qc700R`jyZe{p8MNd7sj%`j&B>+4Et{G}yJmzZ-&7|WbH z!dT|y5ymR~XGU3?A}F?47E#(_&<=5G!&s{-%Ni>D#ibz~laV*a&MC+r;gop2<@NP` zv2rX4#k6wA)-`7x%86CCjENkT(kL9d@h@!v0xO?^g6FL(APSzhu8^pak$LQ!`qEWo zK@N1V06a1_!VYjjNDh<0g<||eU-0+!Hm^tDrQwjEdC3wraF-$I(Y21X4D|W?2QX;#;?}qABqMTjTN_OG(Pci+!z2oHceXKldpXFb8&G*WEZF#O z8|_`K=d;jdNy(eHR^n2%Qwpt zy`R~&f08o*jiX+@{~SgE>?8WCYyDVd)t%vAVNOs<^CSJ#V6ml(=|`m_P@H)v~K+V_wmc8d;CI672166 zXCP*c?^?l!mdc^Kh5xYiyPr12aH^GV_~~#f{##%>o*E5wg){m(+uM6=tp4s%9Q>!i zmh-W9)Zcr)XcxNNI(x_{-Ima0MgMvb4-%=-NEqTk`dK{O!Ewk&`$5gm@Kzygf9_lO5vr|w0JmrY2XE6T zib;mzn9!nRi52Yq*bEZ;hT^96GpqLC0n~rJw#9Qvs=Lniw&0dksPe)ZK)z)oL%a}0 zKYD)%KLsZY%zrs2ATYf;bPxw!B_=seN`&wPU>r3F;S}J7^4}sNKFND5nB;ihKBQ0f z@G5->Q+oH|za1dJPhpecf^J8;}qO%R~PiNMeeQZ+3(* z*{4rwNjb$Y#HRx!o&kbB110e+5VP=M8;SEk&_{(No&%x+-&K*A{_`?@fkt8vh>iFP zhQ#F{wpuX#SHBxAnBL31-Gb==)gu;6|LKpu_mW{nZGuC5LaT#AAKNKV#?o* z7EJlWhZjR~${)TA7{Zi4`Xnv_{LK6vv0%#IumyX7AHmma5#XnYe>6Z}vz3_IKQnFw z2d_`JDOcH-O+xq%_Qr|bpy>LfH|@yYSK#A_QV4%r@J)~O=`B_HBm7qYx_&Q2$Pxc7 zDMU!}G&2Kk<|etyW)K#LQd7lwZg7ly!Ke6SkFIxmb&xQ#yN&i{40SETJTN4IO7nKe+_uZg8vUNjxvPg2Y_(`B7}bdeAI&J zvmV11{Ab{oEto#RfrAa9_?n70>Mb}CSpKN|)Lt}x$?|^%xY&Z}JKhT{nCgqhGpT>d z81`s9lX9|$&%}l>#i#L1%BjAKEw~8wXgrg0If%`3ZGw?7y z`_BVsS@0i$<Fz~2H+g?<9? zcYqHC$6Lbm8HHyo_@}_nTks)Zd>%^tJ7m)TE$|;K^4EYd#)$Mu{sHh`Em+5KoHs0Z z0x-V$YR~}y(w_o+F2-NVa60fT;PZh|?E=#wp)Xo6{;dkzWWkNVTP%1z@I@B96&Tla z$ljH}mss$v!1!EHNPaKymn@jhE?ohP?1=pQ+=hQ+!*AIzeOSR7KgEW#ZMf8iSK4rg z4WDnrU$Wt^*zkike8`6XY{N=Kc>X8aaGniU+VGh++-t*^+wdJW{E!VFw&7Q8SVc>P z)wd1LwBgfjc&QE3x5usa=quz_e2EQTZ^K`=VfwhKHU7_S_yrrLub5l)KeAzb(J)M& zVZ(E5xYC9jZMfTpx7qNuHhh;2KWxKK+wk9Pn2w29%QwM>r`vFm4OiLl7i_r8hUpXR z*7UBj;oEHZ+cx}|4gb=HU$Wu1Z8#=6JbldFVfk5T!>ep~oeiI7!`1B#w5@1w=kb8lb z1G|ElK6Bm$#VMn7)X;9_zKvAWi}PE%4DGrmv_zgY{Nz5PN{ZqwXNqPpg3ObCXBwsr5E|nZ(eD zS5-spJfiRpF~~fM znT_{Wi59W&ek#!-9**D;En?=0sCgo8zKENjC;uOu-;b}v_*;9jbN#t^J2C|D7LV=! z*?rP~1RUdk^JVwbE54r;3GbBIK5$dtP~u&JT+jo84(tH;^@w+S8sx^Z{8CEmNKW&t z+0MhMsZbg6aAwH@3ap^e3W}^?jup(cf?_L}X9Z{vOG0QDD+?-#IzK;i z_5A9*yv%w~mF4B-d6|`~GB?Ams4uTyIVW>-eZvy(k}?y{&0OWJD5)#R&n#cMqNZ|b z1H={8nal7>dU(o*xqtd`nL0*p$DtZV4Tin>R`jUR0q=N0PkD zYDhmXEWbjEYl6bCJ`YA%L4d;w0vuKl;IM)K&++4*7T9tZc7Z~tSQaDCo?5YgR5^i`ffghrAIzD6Y8qZr|SUZ;X=M}dOt zUrUw9ch(F;!7gVmt zCqFYY#U!$&bDD5$b8-KhK zfG_F+nZN(ROGr2`bx!afw%|1M8iub7RugOX>^|HiwDyB&ZSL$`*W26^0NvS*SA6JA z92}_XLC0R(4JJs^KYx8ocV{1{jlJz_5wvwQ3sw1*Ejc`--mmSzFDT<-`(Hb**9yTYoM>aZPteNu6BHkHi}i!#q37aijUFG5B{_I zZrc__w|yI+Tl6EkeKsk&R)Qq@evm@90)-C>|MMTu9rdqv#0yd4?M1m00n7gb!?v&T zqC=G6JH2R5`a~_lleR8o_J(b1@4;EjP zeSM9L$AkkW!XKR;$E=Ng=)0@F4c-dI8F%+?Ej4%DoEeQL2 zMcCDi_Xo3E&Fd2EKv00o30uJ8f084hVbY+z)7%_<@fDBIgX1RH|M*9C$kCoPeqwK! zY{?&u!}PqY_?jMh5{W39&EZahp z-sDNR;%5?N{-g~IT4DB@%1{xMncz?A`G6%&qG7z`b_%^X82m{Yy$dI45=C|6Ur=WR zl`Jy!2)vmz@(WyxcmD9=AJx~@a8xAPe{X}cydJ=g--T!WRENQzOpEr$E!D;Dy3hQl mWm1pq(XSUy#v%L&^tMW&MMm$~S<_wcp!x67DGvRljsFXvw<{R{ literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/bitmanipulation.build_log.htm b/bit_manipulations/build/bitmanipulation.build_log.htm new file mode 100644 index 0000000..d6725d8 --- /dev/null +++ b/bit_manipulations/build/bitmanipulation.build_log.htm @@ -0,0 +1,98 @@ + + +
+

µVision Build Log

+

Tool Versions:

+IDE-Version: µVision V5.37.0.0 +Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: Roman Schenk, ZHAW, LIC=---- + +Tool Versions: +Toolchain: MDK-Lite Version: 5.37.0.0 +Toolchain Path: C:\Keil_v5\ARM\ARMCLANG\Bin +C Compiler: ArmClang.exe V6.18 +Assembler: Armasm.exe V6.18 +Linker/Locator: ArmLink.exe V6.18 +Library Manager: ArmAr.exe V6.18 +Hex Converter: FromElf.exe V6.18 +CPU DLL: SARMCM3.DLL V5.37.0.0 +Dialog DLL: DARMCM1.DLL V1.19.6.0 +Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.9.0 +Dialog DLL: TARMCM1.DLL V1.14.6.0 + +

Project:

+C:\Users\roman\Documents\Lab_2_BitManipulations\bit_manipulations\bitmanipulation.uvprojx +Project File Date: 09/30/2022 + +

Output:

+*** Using Compiler 'V6.18', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin' +Rebuild target 'Target 1' +assembling startup_ctboard.s... +assembling datainit_ctboard.s... +compiling utils_ctboard.c... +compiling main.c... +compiling system_ctboard.c... +compiling hal_fmc.c... +compiling hal_pwr.c... +compiling hal_gpio.c... +compiling hal_rcc.c... +linking... +Program Size: Code=3456 RO-data=428 RW-data=0 ZI-data=8192 +".\build\bitmanipulation.axf" - 0 Error(s), 0 Warning(s). + +

Software Packages used:

+ +Package Vendor: InES + https://ennis.zhaw.ch/pack/InES.CTBoard14_DFP.4.0.2.pack + InES.CTBoard14_DFP.4.0.2 + CT Board 14 (STM32F429ZI) Device Support + * Component: Startup Version: 4.0.1 + * Component: FMC Version: 3.0.1 + * Component: GPIO Version: 4.0.1 + * Component: PWR Version: 2.2.0 + * Component: RCC Version: 4.0.1 + +

Collection of Component include folders:

+ ./RTE/_Target_1 + C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include + C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 + C:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include + +

Collection of Component Files used:

+ + * Component: InES::Device:Startup:4.0.1 + Include file: Device/Include/m0/platform_ctboard.h + Include file: Device/Include/reg_stm32f4xx.h + Include file: Device/Include/reg_ctboard.h + Source file: Device/Source/system_ctboard.c + Source file: Device/Source/startup_ctboard.s + Source file: Device/Source/datainit_ctboard.s + Include file: Device/Include/system_ctboard.h + + * Component: InES::HAL:FMC:3.0.1 + Include file: HAL/Include/hal_common.h + Source file: HAL/Source/hal_fmc.c + Include file: HAL/Include/hal_fmc.h + Include file: Device/Include/reg_stm32f4xx.h + + * Component: InES::HAL:GPIO:4.0.1 + Include file: HAL/Include/hal_common.h + Include file: HAL/Include/hal_gpio.h + Source file: HAL/Source/hal_gpio.c + Include file: Device/Include/reg_stm32f4xx.h + + * Component: InES::HAL:PWR:2.2.0 + Include file: HAL/Include/hal_common.h + Source file: HAL/Source/hal_pwr.c + Include file: HAL/Include/hal_pwr.h + Include file: Device/Include/reg_stm32f4xx.h + + * Component: InES::HAL:RCC:4.0.1 + Include file: HAL/Include/hal_common.h + Include file: Device/Include/reg_stm32f4xx.h + Include file: HAL/Include/hal_rcc.h + Source file: HAL/Source/hal_rcc.c +Build Time Elapsed: 00:00:01 +
+ + diff --git a/bit_manipulations/build/bitmanipulation.htm b/bit_manipulations/build/bitmanipulation.htm new file mode 100644 index 0000000..202a599 --- /dev/null +++ b/bit_manipulations/build/bitmanipulation.htm @@ -0,0 +1,630 @@ + + +Static Call Graph - [.\build\bitmanipulation.axf] +
+

Static Call Graph for image .\build\bitmanipulation.axf


+

#<CALLGRAPH># ARM Linker, 6180002: Last Updated: Fri Sep 30 08:34:36 2022 +

+

Maximum Stack Usage = 132 bytes + Unknown(Cycles, Untraceable Function Pointers)

+Call chain for Maximum Stack Depth:

+__system ⇒ system_enter_run ⇒ hal_gpio_init_alternate ⇒ hal_gpio_init_output +

+

+Mutually Recursive functions +

  • NMI_Handler   ⇒   NMI_Handler
    +
  • HardFault_Handler   ⇒   HardFault_Handler
    +
  • MemManage_Handler   ⇒   MemManage_Handler
    +
  • BusFault_Handler   ⇒   BusFault_Handler
    +
  • UsageFault_Handler   ⇒   UsageFault_Handler
    +
  • SVC_Handler   ⇒   SVC_Handler
    +
  • DebugMon_Handler   ⇒   DebugMon_Handler
    +
  • PendSV_Handler   ⇒   PendSV_Handler
    +
  • SysTick_Handler   ⇒   SysTick_Handler
    +
  • ADC_IRQHandler   ⇒   ADC_IRQHandler
    + +

    +

    +Function Pointers +

      +
    • ADC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • BusFault_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN1_RX0_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN1_RX1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN1_SCE_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN1_TX_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN2_RX0_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN2_RX1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN2_SCE_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CAN2_TX_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • CRYP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DCMI_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream0_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream6_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA1_Stream7_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2D_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream0_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream6_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DMA2_Stream7_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • DebugMon_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • ETH_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • ETH_WKUP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI0_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI15_10_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • EXTI9_5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • FLASH_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • FMC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • FPU_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • HASH_RNG_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • HardFault_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C1_ER_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C1_EV_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C2_ER_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C2_EV_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C3_ER_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • I2C3_EV_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • LTDC_ER_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • LTDC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • MemManage_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • NMI_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_FS_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_FS_WKUP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_HS_EP1_IN_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_HS_EP1_OUT_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_HS_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • OTG_HS_WKUP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • PVD_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • PendSV_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • RCC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • RTC_Alarm_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • RTC_WKUP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • Reset_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SAI1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SDIO_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SPI6_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SVC_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • SysTick_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TAMP_STAMP_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM1_BRK_TIM9_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM1_CC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM1_TRG_COM_TIM11_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM1_UP_TIM10_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM6_DAC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM7_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM8_BRK_TIM12_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM8_CC_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM8_TRG_COM_TIM14_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • TIM8_UP_TIM13_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • UART4_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • UART5_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • UART7_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • UART8_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • USART1_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • USART2_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • USART3_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • USART6_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • UsageFault_Handler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • WWDG_IRQHandler from startup_ctboard.o(.text) referenced from startup_ctboard.o(RESET) +
    • __main from datainit_ctboard.o(.text) referenced from startup_ctboard.o(.text) +
    • __system from system_ctboard.o(.text) referenced from startup_ctboard.o(.text) +
    • main from main.o(.text) referenced from datainit_ctboard.o(.text) +
    +

    +

    +Global Symbols +

    +

    main (Thumb, 28 bytes, Stack size 0 bytes, main.o(.text)) +

    [Calls]

    • >>   write_byte +
    • >>   read_byte +
    +
    [Address Reference Count : 1]
    • datainit_ctboard.o(.text) +
    +

    read_byte (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text)) +

    [Called By]

    • >>   main +
    + +

    read_halfword (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    read_word (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    read_doubleword (Thumb, 8 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    write_byte (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text)) +

    [Called By]

    • >>   main +
    + +

    write_halfword (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    write_word (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    write_doubleword (Thumb, 4 bytes, Stack size 0 bytes, utils_ctboard.o(.text), UNUSED) + +

    __main (Thumb, 74 bytes, Stack size 0 bytes, datainit_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(.text) +
    +

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   NMI_Handler +
    +
    [Called By]
    • >>   NMI_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   HardFault_Handler +
    +
    [Called By]
    • >>   HardFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   MemManage_Handler +
    +
    [Called By]
    • >>   MemManage_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   BusFault_Handler +
    +
    [Called By]
    • >>   BusFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   UsageFault_Handler +
    +
    [Called By]
    • >>   UsageFault_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   SVC_Handler +
    +
    [Called By]
    • >>   SVC_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   DebugMon_Handler +
    +
    [Called By]
    • >>   DebugMon_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   PendSV_Handler +
    +
    [Called By]
    • >>   PendSV_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   SysTick_Handler +
    +
    [Called By]
    • >>   SysTick_Handler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    ADC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +

    [Calls]

    • >>   ADC_IRQHandler +
    +
    [Called By]
    • >>   ADC_IRQHandler +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(RESET) +
    +

    CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN2_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN2_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN2_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CAN2_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    CRYP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DCMI_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA1_Stream7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2D_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    DMA2_Stream7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    ETH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    ETH_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    FMC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    FPU_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    HASH_RNG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C3_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    I2C3_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    LTDC_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    LTDC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_FS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_FS_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_HS_EP1_IN_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_HS_EP1_OUT_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_HS_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    OTG_HS_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    RTC_WKUP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SAI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SDIO_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    SPI6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TAMP_STAMP_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM1_BRK_TIM9_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM1_TRG_COM_TIM11_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM1_UP_TIM10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM6_DAC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM8_BRK_TIM12_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM8_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM8_TRG_COM_TIM14_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    TIM8_UP_TIM13_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    UART4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    UART5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    UART7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    UART8_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    USART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    USART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    USART6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_ctboard.o(.text)) +
    [Address Reference Count : 1]

    • startup_ctboard.o(RESET) +
    +

    __system (Thumb, 8 bytes, Stack size 8 bytes, system_ctboard.o(.text)) +

    [Stack]

    • Max Depth = 132
    • Call Chain = __system ⇒ system_enter_run ⇒ hal_gpio_init_alternate ⇒ hal_gpio_init_output +
    +
    [Calls]
    • >>   system_enter_run +
    +
    [Address Reference Count : 1]
    • startup_ctboard.o(.text) +
    +

    system_enter_run (Thumb, 280 bytes, Stack size 48 bytes, system_ctboard.o(.text)) +

    [Stack]

    • Max Depth = 124
    • Call Chain = system_enter_run ⇒ hal_gpio_init_alternate ⇒ hal_gpio_init_output +
    +
    [Calls]
    • >>   hal_fmc_init_sram +
    • >>   hal_gpio_init_alternate +
    • >>   hal_rcc_setup_clock +
    • >>   hal_pwr_set_overdrive +
    • >>   hal_rcc_setup_pll +
    • >>   hal_rcc_set_osc +
    • >>   hal_rcc_reset +
    +
    [Called By]
    • >>   __system +
    + +

    system_enter_sleep (Thumb, 2 bytes, Stack size 0 bytes, system_ctboard.o(.text), UNUSED) + +

    system_enter_stop (Thumb, 2 bytes, Stack size 0 bytes, system_ctboard.o(.text), UNUSED) + +

    system_enter_standby (Thumb, 2 bytes, Stack size 0 bytes, system_ctboard.o(.text), UNUSED) + +

    hal_fmc_reset (Thumb, 60 bytes, Stack size 0 bytes, hal_fmc.o(.text), UNUSED) + +

    hal_fmc_init_sram (Thumb, 264 bytes, Stack size 36 bytes, hal_fmc.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = hal_fmc_init_sram +
    +
    [Called By]
    • >>   system_enter_run +
    + +

    hal_gpio_reset (Thumb, 68 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_init_input (Thumb, 156 bytes, Stack size 32 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_init_analog (Thumb, 240 bytes, Stack size 36 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_init_output (Thumb, 276 bytes, Stack size 36 bytes, hal_gpio.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = hal_gpio_init_output +
    +
    [Called By]
    • >>   hal_gpio_init_alternate +
    + +

    hal_gpio_init_alternate (Thumb, 262 bytes, Stack size 40 bytes, hal_gpio.o(.text)) +

    [Stack]

    • Max Depth = 76
    • Call Chain = hal_gpio_init_alternate ⇒ hal_gpio_init_output +
    +
    [Calls]
    • >>   hal_gpio_init_output +
    +
    [Called By]
    • >>   system_enter_run +
    + +

    hal_gpio_input_read (Thumb, 6 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_output_read (Thumb, 6 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_output_write (Thumb, 20 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_bit_set (Thumb, 24 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_bit_reset (Thumb, 28 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_bit_toggle (Thumb, 28 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_irq_set (Thumb, 292 bytes, Stack size 36 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_irq_status (Thumb, 24 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_gpio_irq_clear (Thumb, 12 bytes, Stack size 0 bytes, hal_gpio.o(.text), UNUSED) + +

    hal_pwr_reset (Thumb, 16 bytes, Stack size 0 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_pwr_set_backup_domain (Thumb, 56 bytes, Stack size 16 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_pwr_set_backup_access (Thumb, 24 bytes, Stack size 0 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_pwr_set_wakeup_pin (Thumb, 24 bytes, Stack size 0 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_pwr_set_flash_powerdown (Thumb, 24 bytes, Stack size 0 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_pwr_set_overdrive (Thumb, 4 bytes, Stack size 0 bytes, hal_pwr.o(.text)) +

    [Called By]

    • >>   system_enter_run +
    + +

    hal_pwr_set_underdrive (Thumb, 4 bytes, Stack size 0 bytes, hal_pwr.o(.text), UNUSED) + +

    hal_rcc_reset (Thumb, 104 bytes, Stack size 16 bytes, hal_rcc.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_rcc_reset +
    +
    [Called By]
    • >>   system_enter_run +
    + +

    hal_rcc_set_peripheral (Thumb, 228 bytes, Stack size 8 bytes, hal_rcc.o(.text), UNUSED) + +

    hal_rcc_set_osc (Thumb, 108 bytes, Stack size 16 bytes, hal_rcc.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_rcc_set_osc +
    +
    [Called By]
    • >>   system_enter_run +
    + +

    hal_rcc_setup_pll (Thumb, 220 bytes, Stack size 24 bytes, hal_rcc.o(.text)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_rcc_setup_pll +
    +
    [Called By]
    • >>   system_enter_run +
    + +

    hal_rcc_setup_clock (Thumb, 80 bytes, Stack size 16 bytes, hal_rcc.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_rcc_setup_clock +
    +
    [Called By]
    • >>   system_enter_run +
    +

    +

    +Local Symbols +

    +

    +Undefined Global Symbols +


    diff --git a/bit_manipulations/build/bitmanipulation.lnp b/bit_manipulations/build/bitmanipulation.lnp new file mode 100644 index 0000000..b742a81 --- /dev/null +++ b/bit_manipulations/build/bitmanipulation.lnp @@ -0,0 +1,14 @@ +--cpu Cortex-M0 +".\build\main.o" +".\build\utils_ctboard.o" +".\build\datainit_ctboard.o" +".\build\startup_ctboard.o" +".\build\system_ctboard.o" +".\build\hal_fmc.o" +".\build\hal_gpio.o" +".\build\hal_pwr.o" +".\build\hal_rcc.o" +--strict --scatter ".\build\bitmanipulation.sct" +--diag_suppress 6314 --summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers +--list ".\build\bitmanipulation.map" -o .\build\bitmanipulation.axf \ No newline at end of file diff --git a/bit_manipulations/build/bitmanipulation.map b/bit_manipulations/build/bitmanipulation.map new file mode 100644 index 0000000..9b68d3c --- /dev/null +++ b/bit_manipulations/build/bitmanipulation.map @@ -0,0 +1,383 @@ +Component: Arm Compiler for Embedded 6.18 Tool: armlink [5e4cc100] + +============================================================================== + +Section Cross References + + main.o(.text) refers to utils_ctboard.o(.text) for read_byte + main.o(.ARM.exidx) refers to main.o(.text) for [Anonymous Symbol] + utils_ctboard.o(.ARM.exidx) refers to utils_ctboard.o(.text) for [Anonymous Symbol] + datainit_ctboard.o(.text) refers (Weak) to startup_ctboard.o(STACK) for Stack_Mem + datainit_ctboard.o(.text) refers to main.o(.text) for main + startup_ctboard.o(RESET) refers to startup_ctboard.o(STACK) for __initial_sp + startup_ctboard.o(RESET) refers to startup_ctboard.o(.text) for Reset_Handler + startup_ctboard.o(.text) refers to system_ctboard.o(.text) for __system + startup_ctboard.o(.text) refers to datainit_ctboard.o(.text) for __main + system_ctboard.o(.text) refers to hal_rcc.o(.text) for hal_rcc_reset + system_ctboard.o(.text) refers to hal_pwr.o(.text) for hal_pwr_set_overdrive + system_ctboard.o(.text) refers to hal_gpio.o(.text) for hal_gpio_init_alternate + system_ctboard.o(.text) refers to hal_fmc.o(.text) for hal_fmc_init_sram + system_ctboard.o(.ARM.exidx) refers to system_ctboard.o(.text) for [Anonymous Symbol] + hal_fmc.o(.ARM.exidx) refers to hal_fmc.o(.text) for [Anonymous Symbol] + hal_gpio.o(.ARM.exidx) refers to hal_gpio.o(.text) for [Anonymous Symbol] + hal_pwr.o(.ARM.exidx) refers to hal_pwr.o(.text) for [Anonymous Symbol] + hal_rcc.o(.ARM.exidx) refers to hal_rcc.o(.text) for [Anonymous Symbol] + + +============================================================================== + +Removing Unused input sections from the image. + + Removing main.o(.ARM.exidx), (8 bytes). + Removing main.o(.ARM.use_no_argv), (4 bytes). + Removing utils_ctboard.o(.ARM.exidx), (64 bytes). + Removing startup_ctboard.o(HEAP), (2048 bytes). + Removing system_ctboard.o(.ARM.exidx), (40 bytes). + Removing hal_fmc.o(.ARM.exidx), (16 bytes). + Removing hal_gpio.o(.ARM.exidx), (112 bytes). + Removing hal_pwr.o(.ARM.exidx), (56 bytes). + Removing hal_rcc.o(.ARM.exidx), (40 bytes). + +9 unused section(s) (total 2388 bytes) removed from the image. + +============================================================================== + +Image Symbol Table + + Local Symbols + + Symbol Name Value Ov Type Size Object(Section) + + RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s 0x00000000 Number 0 datainit_ctboard.o ABSOLUTE + RTE/Device/CT_Board_HS14_M0/startup_ctboard.s 0x00000000 Number 0 startup_ctboard.o ABSOLUTE + hal_fmc.c 0x00000000 Number 0 hal_fmc.o ABSOLUTE + hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE + hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE + hal_rcc.c 0x00000000 Number 0 hal_rcc.o ABSOLUTE + main.c 0x00000000 Number 0 main.o ABSOLUTE + system_ctboard.c 0x00000000 Number 0 system_ctboard.o ABSOLUTE + utils_ctboard.c 0x00000000 Number 0 utils_ctboard.o ABSOLUTE + RESET 0x08000000 Section 428 startup_ctboard.o(RESET) + [Anonymous Symbol] 0x080001ac Section 0 main.o(.text) + __arm_cp.0_0 0x080001c8 Number 4 main.o(.text) + __arm_cp.0_1 0x080001cc Number 4 main.o(.text) + [Anonymous Symbol] 0x080001d0 Section 0 utils_ctboard.o(.text) + .text 0x080001f4 Section 124 datainit_ctboard.o(.text) + .text 0x08000270 Section 36 startup_ctboard.o(.text) + [Anonymous Symbol] 0x08000294 Section 0 system_ctboard.o(.text) + __arm_cp.1_0 0x080003b4 Number 4 system_ctboard.o(.text) + __arm_cp.1_1 0x080003b8 Number 4 system_ctboard.o(.text) + __arm_cp.1_2 0x080003bc Number 4 system_ctboard.o(.text) + __arm_cp.1_3 0x080003c0 Number 4 system_ctboard.o(.text) + __arm_cp.1_4 0x080003c4 Number 4 system_ctboard.o(.text) + __arm_cp.1_5 0x080003c8 Number 4 system_ctboard.o(.text) + __arm_cp.1_6 0x080003cc Number 4 system_ctboard.o(.text) + __arm_cp.1_7 0x080003d0 Number 4 system_ctboard.o(.text) + __arm_cp.1_8 0x080003d4 Number 4 system_ctboard.o(.text) + __arm_cp.1_9 0x080003d8 Number 4 system_ctboard.o(.text) + __arm_cp.1_10 0x080003dc Number 4 system_ctboard.o(.text) + __arm_cp.1_11 0x080003e0 Number 4 system_ctboard.o(.text) + __arm_cp.1_12 0x080003e4 Number 4 system_ctboard.o(.text) + __arm_cp.1_13 0x080003e8 Number 4 system_ctboard.o(.text) + __arm_cp.1_14 0x080003ec Number 4 system_ctboard.o(.text) + [Anonymous Symbol] 0x080003f8 Section 0 hal_fmc.o(.text) + __arm_cp.0_0 0x08000434 Number 4 hal_fmc.o(.text) + __arm_cp.0_1 0x08000438 Number 4 hal_fmc.o(.text) + __arm_cp.0_2 0x0800043c Number 4 hal_fmc.o(.text) + __arm_cp.1_0 0x08000548 Number 4 hal_fmc.o(.text) + [Anonymous Symbol] 0x0800054c Section 0 hal_gpio.o(.text) + __arm_cp.0_0 0x08000590 Number 4 hal_gpio.o(.text) + __arm_cp.0_1 0x08000594 Number 4 hal_gpio.o(.text) + __arm_cp.1_0 0x08000634 Number 4 hal_gpio.o(.text) + __arm_cp.1_1 0x08000638 Number 4 hal_gpio.o(.text) + __arm_cp.2_0 0x0800072c Number 4 hal_gpio.o(.text) + __arm_cp.2_1 0x08000730 Number 4 hal_gpio.o(.text) + __arm_cp.3_0 0x08000848 Number 4 hal_gpio.o(.text) + __arm_cp.3_1 0x0800084c Number 4 hal_gpio.o(.text) + __arm_cp.7_0 0x08000978 Number 4 hal_gpio.o(.text) + __arm_cp.7_1 0x0800097c Number 4 hal_gpio.o(.text) + __arm_cp.8_0 0x08000998 Number 4 hal_gpio.o(.text) + __arm_cp.8_1 0x0800099c Number 4 hal_gpio.o(.text) + __arm_cp.9_0 0x080009bc Number 4 hal_gpio.o(.text) + __arm_cp.9_1 0x080009c0 Number 4 hal_gpio.o(.text) + __arm_cp.10_0 0x080009e0 Number 4 hal_gpio.o(.text) + __arm_cp.10_1 0x080009e4 Number 4 hal_gpio.o(.text) + __arm_cp.11_0 0x08000b0c Number 4 hal_gpio.o(.text) + __arm_cp.11_1 0x08000b10 Number 4 hal_gpio.o(.text) + __arm_cp.11_2 0x08000b14 Number 4 hal_gpio.o(.text) + __arm_cp.11_3 0x08000b18 Number 4 hal_gpio.o(.text) + __arm_cp.11_4 0x08000b1c Number 4 hal_gpio.o(.text) + __arm_cp.11_5 0x08000b20 Number 4 hal_gpio.o(.text) + __arm_cp.12_0 0x08000b3c Number 4 hal_gpio.o(.text) + __arm_cp.13_0 0x08000b4c Number 4 hal_gpio.o(.text) + [Anonymous Symbol] 0x08000b50 Section 0 hal_pwr.o(.text) + __arm_cp.0_0 0x08000b60 Number 4 hal_pwr.o(.text) + __arm_cp.1_0 0x08000b9c Number 4 hal_pwr.o(.text) + __arm_cp.2_0 0x08000bb8 Number 4 hal_pwr.o(.text) + __arm_cp.3_0 0x08000bd4 Number 4 hal_pwr.o(.text) + __arm_cp.4_0 0x08000bf0 Number 4 hal_pwr.o(.text) + [Anonymous Symbol] 0x08000bfc Section 0 hal_rcc.o(.text) + __arm_cp.0_0 0x08000c64 Number 4 hal_rcc.o(.text) + __arm_cp.0_1 0x08000c68 Number 4 hal_rcc.o(.text) + __arm_cp.0_2 0x08000c6c Number 4 hal_rcc.o(.text) + __arm_cp.0_3 0x08000c70 Number 4 hal_rcc.o(.text) + __arm_cp.0_4 0x08000c74 Number 4 hal_rcc.o(.text) + __arm_cp.0_5 0x08000c78 Number 4 hal_rcc.o(.text) + __arm_cp.0_6 0x08000c7c Number 4 hal_rcc.o(.text) + __arm_cp.0_7 0x08000c80 Number 4 hal_rcc.o(.text) + __arm_cp.1_0 0x08000d68 Number 4 hal_rcc.o(.text) + __arm_cp.2_0 0x08000dd8 Number 4 hal_rcc.o(.text) + __arm_cp.2_1 0x08000ddc Number 4 hal_rcc.o(.text) + __arm_cp.3_0 0x08000ebc Number 4 hal_rcc.o(.text) + __arm_cp.3_1 0x08000ec0 Number 4 hal_rcc.o(.text) + __arm_cp.3_2 0x08000ec4 Number 4 hal_rcc.o(.text) + __arm_cp.3_3 0x08000ec8 Number 4 hal_rcc.o(.text) + __arm_cp.3_4 0x08000ecc Number 4 hal_rcc.o(.text) + __arm_cp.3_5 0x08000ed0 Number 4 hal_rcc.o(.text) + __arm_cp.4_0 0x08000f24 Number 4 hal_rcc.o(.text) + __arm_cp.4_1 0x08000f28 Number 4 hal_rcc.o(.text) + STACK 0x20000000 Section 8192 startup_ctboard.o(STACK) + __initial_sp 0x20002000 Data 0 startup_ctboard.o(STACK) + + Global Symbols + + Symbol Name Value Ov Type Size Object(Section) + + BuildAttributes$$THM_ISAv3M$S$PE$A:L22$X:L11$S22$IEEE1$IW$~IW$USESV6$~STKCKD$USESV7$WCHAR32$ENUMINT$~SHL$OTIME$EBA8$STANDARDLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE + Image$$RO$$Limit - Undefined Weak Reference + Image$$RW$$Base - Undefined Weak Reference + Image$$ZI$$Base - Undefined Weak Reference + Image$$ZI$$Limit - Undefined Weak Reference + __Vectors_Size 0x000001ac Number 0 startup_ctboard.o ABSOLUTE + Stack_Size 0x00002000 Number 0 startup_ctboard.o ABSOLUTE + __Vectors 0x08000000 Data 4 startup_ctboard.o(RESET) + __Vectors_End 0x080001ac Data 0 startup_ctboard.o(RESET) + main 0x080001ad Thumb Code 28 main.o(.text) + read_byte 0x080001d1 Thumb Code 4 utils_ctboard.o(.text) + read_halfword 0x080001d5 Thumb Code 4 utils_ctboard.o(.text) + read_word 0x080001d9 Thumb Code 4 utils_ctboard.o(.text) + read_doubleword 0x080001dd Thumb Code 8 utils_ctboard.o(.text) + write_byte 0x080001e5 Thumb Code 4 utils_ctboard.o(.text) + write_halfword 0x080001e9 Thumb Code 4 utils_ctboard.o(.text) + write_word 0x080001ed Thumb Code 4 utils_ctboard.o(.text) + write_doubleword 0x080001f1 Thumb Code 4 utils_ctboard.o(.text) + __main 0x080001f5 Thumb Code 74 datainit_ctboard.o(.text) + Reset_Handler 0x08000271 Thumb Code 8 startup_ctboard.o(.text) + NMI_Handler 0x08000279 Thumb Code 2 startup_ctboard.o(.text) + HardFault_Handler 0x0800027b Thumb Code 2 startup_ctboard.o(.text) + MemManage_Handler 0x0800027d Thumb Code 2 startup_ctboard.o(.text) + BusFault_Handler 0x0800027f Thumb Code 2 startup_ctboard.o(.text) + UsageFault_Handler 0x08000281 Thumb Code 2 startup_ctboard.o(.text) + SVC_Handler 0x08000283 Thumb Code 2 startup_ctboard.o(.text) + DebugMon_Handler 0x08000285 Thumb Code 2 startup_ctboard.o(.text) + PendSV_Handler 0x08000287 Thumb Code 2 startup_ctboard.o(.text) + SysTick_Handler 0x08000289 Thumb Code 2 startup_ctboard.o(.text) + ADC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN1_RX0_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN1_RX1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN1_SCE_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN1_TX_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN2_RX0_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN2_RX1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN2_SCE_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CAN2_TX_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + CRYP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DCMI_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream0_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream6_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA1_Stream7_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2D_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream0_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream6_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + DMA2_Stream7_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + ETH_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + ETH_WKUP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI0_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI15_10_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + EXTI9_5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + FLASH_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + FMC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + FPU_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + HASH_RNG_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C1_ER_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C1_EV_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C2_ER_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C2_EV_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C3_ER_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + I2C3_EV_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + LTDC_ER_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + LTDC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_FS_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_FS_WKUP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_HS_EP1_IN_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_HS_EP1_OUT_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_HS_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + OTG_HS_WKUP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + PVD_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + RCC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + RTC_Alarm_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + RTC_WKUP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SAI1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SDIO_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + SPI6_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TAMP_STAMP_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM1_BRK_TIM9_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM1_CC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM1_TRG_COM_TIM11_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM1_UP_TIM10_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM6_DAC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM7_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM8_BRK_TIM12_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM8_CC_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM8_TRG_COM_TIM14_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + TIM8_UP_TIM13_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + UART4_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + UART5_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + UART7_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + UART8_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + USART1_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + USART2_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + USART3_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + USART6_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + WWDG_IRQHandler 0x0800028b Thumb Code 0 startup_ctboard.o(.text) + __system 0x08000295 Thumb Code 8 system_ctboard.o(.text) + system_enter_run 0x0800029d Thumb Code 280 system_ctboard.o(.text) + system_enter_sleep 0x080003f1 Thumb Code 2 system_ctboard.o(.text) + system_enter_stop 0x080003f3 Thumb Code 2 system_ctboard.o(.text) + system_enter_standby 0x080003f5 Thumb Code 2 system_ctboard.o(.text) + hal_fmc_reset 0x080003f9 Thumb Code 60 hal_fmc.o(.text) + hal_fmc_init_sram 0x08000441 Thumb Code 264 hal_fmc.o(.text) + hal_gpio_reset 0x0800054d Thumb Code 68 hal_gpio.o(.text) + hal_gpio_init_input 0x08000599 Thumb Code 156 hal_gpio.o(.text) + hal_gpio_init_analog 0x0800063d Thumb Code 240 hal_gpio.o(.text) + hal_gpio_init_output 0x08000735 Thumb Code 276 hal_gpio.o(.text) + hal_gpio_init_alternate 0x08000851 Thumb Code 262 hal_gpio.o(.text) + hal_gpio_input_read 0x08000957 Thumb Code 6 hal_gpio.o(.text) + hal_gpio_output_read 0x0800095d Thumb Code 6 hal_gpio.o(.text) + hal_gpio_output_write 0x08000965 Thumb Code 20 hal_gpio.o(.text) + hal_gpio_bit_set 0x08000981 Thumb Code 24 hal_gpio.o(.text) + hal_gpio_bit_reset 0x080009a1 Thumb Code 28 hal_gpio.o(.text) + hal_gpio_bit_toggle 0x080009c5 Thumb Code 28 hal_gpio.o(.text) + hal_gpio_irq_set 0x080009e9 Thumb Code 292 hal_gpio.o(.text) + hal_gpio_irq_status 0x08000b25 Thumb Code 24 hal_gpio.o(.text) + hal_gpio_irq_clear 0x08000b41 Thumb Code 12 hal_gpio.o(.text) + hal_pwr_reset 0x08000b51 Thumb Code 16 hal_pwr.o(.text) + hal_pwr_set_backup_domain 0x08000b65 Thumb Code 56 hal_pwr.o(.text) + hal_pwr_set_backup_access 0x08000ba1 Thumb Code 24 hal_pwr.o(.text) + hal_pwr_set_wakeup_pin 0x08000bbd Thumb Code 24 hal_pwr.o(.text) + hal_pwr_set_flash_powerdown 0x08000bd9 Thumb Code 24 hal_pwr.o(.text) + hal_pwr_set_overdrive 0x08000bf5 Thumb Code 4 hal_pwr.o(.text) + hal_pwr_set_underdrive 0x08000bf9 Thumb Code 4 hal_pwr.o(.text) + hal_rcc_reset 0x08000bfd Thumb Code 104 hal_rcc.o(.text) + hal_rcc_set_peripheral 0x08000c85 Thumb Code 228 hal_rcc.o(.text) + hal_rcc_set_osc 0x08000d6d Thumb Code 108 hal_rcc.o(.text) + hal_rcc_setup_pll 0x08000de1 Thumb Code 220 hal_rcc.o(.text) + hal_rcc_setup_clock 0x08000ed5 Thumb Code 80 hal_rcc.o(.text) + Image$$ER_IROM1$$Limit 0x08000f2c Number 0 anon$$obj.o ABSOLUTE + Image$$RW_IRAM1$$Base 0x20000000 Number 0 anon$$obj.o ABSOLUTE + Image$$RW_IRAM1$$ZI$$Base 0x20000000 Number 0 anon$$obj.o ABSOLUTE + Stack_Mem 0x20000000 Data 8192 startup_ctboard.o(STACK) + Image$$RW_IRAM1$$ZI$$Limit 0x20002000 Number 0 anon$$obj.o ABSOLUTE + + + +============================================================================== + +Memory Map of the image + + Image Entry point : 0x08000271 + + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000f2c, Max: 0x00200000, ABSOLUTE) + + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00000f2c, Max: 0x00200000, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x08000000 0x08000000 0x000001ac Data RO 26 RESET startup_ctboard.o + 0x080001ac 0x080001ac 0x00000024 Code RO 1 .text main.o + 0x080001d0 0x080001d0 0x00000024 Code RO 10 .text utils_ctboard.o + 0x080001f4 0x080001f4 0x0000007c Code RO 18 .text datainit_ctboard.o + 0x08000270 0x08000270 0x00000024 Code RO 27 * .text startup_ctboard.o + 0x08000294 0x08000294 0x00000162 Code RO 31 .text system_ctboard.o + 0x080003f6 0x080003f6 0x00000002 PAD + 0x080003f8 0x080003f8 0x00000154 Code RO 39 .text hal_fmc.o + 0x0800054c 0x0800054c 0x00000604 Code RO 47 .text hal_gpio.o + 0x08000b50 0x08000b50 0x000000ac Code RO 55 .text hal_pwr.o + 0x08000bfc 0x08000bfc 0x00000330 Code RO 63 .text hal_rcc.o + + + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08000f2c, Size: 0x00002000, Max: 0x00030000, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x20000000 - 0x00002000 Zero RW 24 STACK startup_ctboard.o + + +============================================================================== + +Image component sizes + + + Code (inc. data) RO Data RW Data ZI Data Debug Object Name + + 124 50 0 0 0 456 datainit_ctboard.o + 340 16 0 0 0 3832 hal_fmc.o + 1540 96 0 0 0 11996 hal_gpio.o + 172 20 0 0 0 2127 hal_pwr.o + 816 168 0 0 0 5355 hal_rcc.o + 36 8 0 0 0 608 main.o + 36 8 428 0 8192 824 startup_ctboard.o + 354 60 0 0 0 6766 system_ctboard.o + 36 0 0 0 0 1748 utils_ctboard.o + + ---------------------------------------------------------------------- + 3456 426 428 0 8192 33712 Object Totals + 0 0 0 0 0 0 (incl. Generated) + 2 0 0 0 0 0 (incl. Padding) + + ---------------------------------------------------------------------- + 0 0 0 0 0 0 Library Totals + 0 0 0 0 0 0 (incl. Padding) + + ---------------------------------------------------------------------- + +============================================================================== + + + Code (inc. data) RO Data RW Data ZI Data Debug + + 3456 426 428 0 8192 33540 Grand Totals + 3456 426 428 0 8192 33540 ELF Image Totals + 3456 426 428 0 0 0 ROM Totals + +============================================================================== + + Total RO Size (Code + RO Data) 3884 ( 3.79kB) + Total RW Size (RW Data + ZI Data) 8192 ( 8.00kB) + Total ROM Size (Code + RO Data + RW Data) 3884 ( 3.79kB) + +============================================================================== + diff --git a/bit_manipulations/build/bitmanipulation.sct b/bit_manipulations/build/bitmanipulation.sct new file mode 100644 index 0000000..5394321 --- /dev/null +++ b/bit_manipulations/build/bitmanipulation.sct @@ -0,0 +1,16 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00200000 { ; load region size_region + ER_IROM1 0x08000000 0x00200000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x20000000 0x00030000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bit_manipulations/build/bitmanipulation_Target 1.dep b/bit_manipulations/build/bitmanipulation_Target 1.dep new file mode 100644 index 0000000..1060213 --- /dev/null +++ b/bit_manipulations/build/bitmanipulation_Target 1.dep @@ -0,0 +1,41 @@ +Dependencies for Project 'bitmanipulation', Target 'Target 1': (DO NOT MODIFY !) +CompilerVersion: 6180000::V6.18::ARMCLANG +F (.\app\main.c)(0x63368DF5)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/main.o -MD) +I (app\utils_ctboard.h)(0x633681EA) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +F (.\app\utils_ctboard.c)(0x633681EA)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/utils_ctboard.o -MD) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (app\utils_ctboard.h)(0x633681EA) +F (RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s)(0x5C517478)(--cpu Cortex-M0 --pd "__EVAL SETA 1" -g -I.\RTE\_Target_1 -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0 -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include --pd "__UVISION_VERSION SETA 537" --pd "_RTE_ SETA 1" --pd "_RTE_ SETA 1" --list .\build\datainit_ctboard.lst --xref -o .\build\datainit_ctboard.o --depend .\build\datainit_ctboard.d) +F (RTE/Device/CT_Board_HS14_M0/startup_ctboard.s)(0x5C517478)(--cpu Cortex-M0 --pd "__EVAL SETA 1" -g -I.\RTE\_Target_1 -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0 -IC:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include --pd "__UVISION_VERSION SETA 537" --pd "_RTE_ SETA 1" --pd "_RTE_ SETA 1" --list .\build\startup_ctboard.lst --xref -o .\build\startup_ctboard.o --depend .\build\startup_ctboard.d) +F (RTE/Device/CT_Board_HS14_M0/system_ctboard.c)(0x5C597514)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/system_ctboard.o -MD) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\system_ctboard.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0\platform_ctboard.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_ctboard.h)(0x5C6AA868) +F (RTE/HAL/CT_Board_HS14_M0/hal_fmc.c)(0x5C517478)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_fmc.o -MD) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514) +F (RTE/HAL/CT_Board_HS14_M0/hal_gpio.c)(0x5C5ACEB0)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_gpio.o -MD) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478) +F (RTE/HAL/CT_Board_HS14_M0/hal_pwr.c)(0x5C517478)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_pwr.o -MD) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514) +F (RTE/HAL/CT_Board_HS14_M0/hal_rcc.c)(0x5C597514)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__EVAL -gdwarf-4 -O1 -fno-function-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -Wno-reserved-identifier -I./RTE/_Target_1 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/Device/Include/m0 -IC:/Users/roman/AppData/Local/Arm/Packs/InES/CTBoard14_DFP/4.0.2/HAL/Include -D__UVISION_VERSION="537" -D_RTE_ -D_RTE_ -o ./build/hal_rcc.o -MD) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h)(0x5C517478) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h)(0x5C517478) +I (C:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x6252B538) +I (C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h)(0x5C597514) diff --git a/bit_manipulations/build/datainit_ctboard.d b/bit_manipulations/build/datainit_ctboard.d new file mode 100644 index 0000000..9edaee9 --- /dev/null +++ b/bit_manipulations/build/datainit_ctboard.d @@ -0,0 +1 @@ +.\build\datainit_ctboard.o: RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s diff --git a/bit_manipulations/build/datainit_ctboard.lst b/bit_manipulations/build/datainit_ctboard.lst new file mode 100644 index 0000000..653a32c --- /dev/null +++ b/bit_manipulations/build/datainit_ctboard.lst @@ -0,0 +1,372 @@ + + + +ARM Macro Assembler Page 1 + + + 1 00000000 ;* ----------------------------------------------------- + ------------- + 2 00000000 ;* -- _____ ______ _____ + - + 3 00000000 ;* -- |_ _| | ____|/ ____| + - + 4 00000000 ;* -- | | _ __ | |__ | (___ Institute of Embedded + Systems - + 5 00000000 ;* -- | | | '_ \| __| \___ \ Zurich University of + - + 6 00000000 ;* -- _| |_| | | | |____ ____) | Applied Sciences + - + 7 00000000 ;* -- |_____|_| |_|______|_____/ 8401 Winterthur, Swit + zerland - + 8 00000000 ;* ----------------------------------------------------- + ------------- + 9 00000000 ;* -- + 10 00000000 ;* -- Project : CT Board - Cortex M4 + 11 00000000 ;* -- Description : Data Segment initialisation. + 12 00000000 ;* -- + 13 00000000 ;* -- $Id$ + 14 00000000 ;* ----------------------------------------------------- + ------------- + 15 00000000 + 16 00000000 + 17 00000000 ; ------------------------------------------------------ + ------------- + 18 00000000 ; -- __Main + 19 00000000 ; ------------------------------------------------------ + ------------- + 20 00000000 + 21 00000000 AREA |.text|, CODE, READONLY + 22 00000000 + 23 00000000 IMPORT main + 24 00000000 + 25 00000000 EXPORT __main + 26 00000000 + 27 00000000 __main PROC + 28 00000000 + 29 00000000 ; initialize RW and ZI data - this includes heap and sta + ck for the -ro=... -rw=... -entry=... linking cmd args.. + . + 30 00000000 IMPORT |Image$$RO$$Limit| [WEAK] + 31 00000000 IMPORT |Image$$RW$$Base| [WEAK] + 32 00000000 IMPORT |Image$$ZI$$Base| [WEAK] + 33 00000000 IMPORT |Image$$ZI$$Limit| [WEAK] + 34 00000000 ; ...or from auto generated scatter file. Needs linker o + ption: --diag_suppress 6314 + 35 00000000 IMPORT |Image$$ER_IROM1$$Limit| [W +EAK] + 36 00000000 IMPORT |Image$$RW_IRAM1$$Base| [W +EAK] + 37 00000000 IMPORT |Image$$RW_IRAM1$$ZI$$Base| [W +EAK] + 38 00000000 IMPORT |Image$$RW_IRAM1$$ZI$$Limit| [W +EAK] + 39 00000000 ; import stack parameter + 40 00000000 IMPORT Stack_Size [WEAK] + 41 00000000 IMPORT Stack_Mem [WEAK] + + + +ARM Macro Assembler Page 2 + + + 42 00000000 + 43 00000000 ; switch between command line generated regions and auto + scatter file generated regions + 44 00000000 4912 LDR R1, =|Image$$RO$$Limit| + 45 00000002 2900 CMP R1,#0 + 46 00000004 D004 BEQ ScatterFileSymbols + 47 00000006 CommandLineSymbols + 48 00000006 4A12 LDR R2, =|Image$$RW$$Base| ; start + of the RW data in R + AM + 49 00000008 4B12 LDR R3, =|Image$$ZI$$Base| ; end of + the RW data in RAM + + 50 0000000A 461D MOV R5, R3 ; start of zero ini + tialized data + 51 0000000C 4E12 LDR R6, =|Image$$ZI$$Limit| ; end o + f zero initialized + data + 52 0000000E E009 B CondRWLoop + 53 00000010 ScatterFileSymbols + 54 00000010 4912 LDR R1, =|Image$$ER_IROM1$$Limit| ; + start of flashed i + nitial RW data + 55 00000012 4A13 LDR R2, =|Image$$RW_IRAM1$$Base| ; + start of the RW dat + a in RAM + 56 00000014 4B13 LDR R3, =|Image$$RW_IRAM1$$ZI$$Base +| + ; end of the RW dat + a in RAM + 57 00000016 461D MOV R5, R3 ; start of zero ini + tialized data + 58 00000018 4E13 LDR R6, =|Image$$RW_IRAM1$$ZI$$Limi +t| + ; end of zero initi + alized data + 59 0000001A E003 B CondRWLoop + 60 0000001C + 61 0000001C ; init non-zero data + 62 0000001C 680C LoopRWCopy + LDR R4, [R1] + 63 0000001E 6014 STR R4, [R2] + 64 00000020 1D09 ADDS R1, R1, #4 + 65 00000022 1D12 ADDS R2, R2, #4 + 66 00000024 429A CondRWLoop + CMP R2, R3 + 67 00000026 D1F9 BNE LoopRWCopy + 68 00000028 + 69 00000028 ; init zero-initialized data + 70 00000028 462A MOV R2, R5 + 71 0000002A 4633 MOV R3, R6 + 72 0000002C 2400 MOVS R4, #0 + 73 0000002E E001 B CondZILoop + 74 00000030 6014 LoopZICopy + STR R4, [R2] + 75 00000032 1D12 ADDS R2, R2, #4 + 76 00000034 429A CondZILoop + CMP R2, R3 + 77 00000036 D1FB BNE LoopZICopy + + + +ARM Macro Assembler Page 3 + + + 78 00000038 + 79 00000038 ; fingerprint stack section + 80 00000038 480C LDR R0, =Stack_Mem + 81 0000003A 490D LDR R1, =Stack_Size + 82 0000003C 4A0D LDR R2, =0xEFBEADDE ; stack fingerp + rint (little endian + !) + 83 0000003E 6002 LoopStack + STR R2, [R0] + 84 00000040 1D00 ADDS R0, R0, #4 + 85 00000042 3904 SUBS R1, #4 + 86 00000044 D1FB BNE LoopStack + 87 00000046 + 88 00000046 ; go to the user main function + 89 00000046 480C LDR R0, =main + 90 00000048 4700 BX R0 + 91 0000004A ENDP + 92 0000004A + 93 0000004A + 94 0000004A ; ------------------------------------------------------ + ------------- + 95 0000004A ; -- End of file + 96 0000004A ; ------------------------------------------------------ + ------------- + 97 0000004A + 98 0000004A 00 00 ALIGN + 99 0000004C + 100 0000004C END + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + 00000000 + EFBEADDE + 00000000 +Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M0 --depend=.\bu +ild\datainit_ctboard.d -o.\build\datainit_ctboard.o -I.\RTE\_Target_1 -IC:\User +s\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include -IC:\Us +ers\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0 -I +C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include --p +redefine="__EVAL SETA 1" --predefine="__UVISION_VERSION SETA 537" --predefine=" +_RTE_ SETA 1" --predefine="_RTE_ SETA 1" --list=.\build\datainit_ctboard.lst RT +E/Device/CT_Board_HS14_M0/datainit_ctboard.s + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +.text 00000000 + +Symbol: .text + Definitions + At line 21 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + None +Comment: .text unused +CommandLineSymbols 00000006 + +Symbol: CommandLineSymbols + Definitions + At line 47 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + None +Comment: CommandLineSymbols unused +CondRWLoop 00000024 + +Symbol: CondRWLoop + Definitions + At line 66 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 52 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + At line 59 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + +CondZILoop 00000034 + +Symbol: CondZILoop + Definitions + At line 76 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 73 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: CondZILoop used once +LoopRWCopy 0000001C + +Symbol: LoopRWCopy + Definitions + At line 62 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 67 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: LoopRWCopy used once +LoopStack 0000003E + +Symbol: LoopStack + Definitions + At line 83 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 86 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: LoopStack used once +LoopZICopy 00000030 + +Symbol: LoopZICopy + Definitions + At line 74 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 77 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: LoopZICopy used once +ScatterFileSymbols 00000010 + + + + +ARM Macro Assembler Page 2 Alphabetic symbol ordering +Relocatable symbols + +Symbol: ScatterFileSymbols + Definitions + At line 53 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 46 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: ScatterFileSymbols used once +__main 00000000 + +Symbol: __main + Definitions + At line 27 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 25 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: __main used once +9 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +External symbols + +Image$$ER_IROM1$$Limit 00000000 + +Symbol: Image$$ER_IROM1$$Limit + Definitions + At line 35 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 54 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$ER_IROM1$$Limit used once +Image$$RO$$Limit 00000000 + +Symbol: Image$$RO$$Limit + Definitions + At line 30 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 44 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$RO$$Limit used once +Image$$RW$$Base 00000000 + +Symbol: Image$$RW$$Base + Definitions + At line 31 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 48 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$RW$$Base used once +Image$$RW_IRAM1$$Base 00000000 + +Symbol: Image$$RW_IRAM1$$Base + Definitions + At line 36 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 55 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$RW_IRAM1$$Base used once +Image$$RW_IRAM1$$ZI$$Base 00000000 + +Symbol: Image$$RW_IRAM1$$ZI$$Base + Definitions + At line 37 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 56 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$RW_IRAM1$$ZI$$Base used once +Image$$RW_IRAM1$$ZI$$Limit 00000000 + +Symbol: Image$$RW_IRAM1$$ZI$$Limit + Definitions + At line 38 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 58 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$RW_IRAM1$$ZI$$Limit used once +Image$$ZI$$Base 00000000 + +Symbol: Image$$ZI$$Base + Definitions + At line 32 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 49 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$ZI$$Base used once +Image$$ZI$$Limit 00000000 + +Symbol: Image$$ZI$$Limit + + + +ARM Macro Assembler Page 2 Alphabetic symbol ordering +External symbols + + Definitions + At line 33 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 51 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Image$$ZI$$Limit used once +Stack_Mem 00000000 + +Symbol: Stack_Mem + Definitions + At line 41 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 80 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Stack_Mem used once +Stack_Size 00000000 + +Symbol: Stack_Size + Definitions + At line 40 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 81 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: Stack_Size used once +main 00000000 + +Symbol: main + Definitions + At line 23 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s + Uses + At line 89 in file RTE/Device/CT_Board_HS14_M0/datainit_ctboard.s +Comment: main used once +11 symbols +355 symbols in table diff --git a/bit_manipulations/build/datainit_ctboard.o b/bit_manipulations/build/datainit_ctboard.o new file mode 100644 index 0000000000000000000000000000000000000000..b8275385507273fb34c3e7abe2649fa05ecb298b GIT binary patch literal 2748 zcmcgu&2QXP5FdLtS#OiH$tHZI4f4T=LW#SZhBl4pVLu$=bhnAtTUvpU<6S$c#d^K6 zy-`6`RiPd^APxv|1#yBK2ZSmR;=q*(BqW4T{sZUGwS~m*IRxN+pv18loc(K)rn`BTUCvgS8k$8jC`tXf!+8$r-smF>{CBVT^wWp}yNbo2Q)p}cBdj@&RZ!@##Y zW+iC#e2f>FRl8{|StT#7*&VOjYum9GbRx5f>!agP!!}N-ArdV#dL1Tjun~uGG8_T; zmNYa0cn07nj(_3&7V;FV;fO^tK80hySpG9TnD7S^#Oi8{ss~c1g!%d7^GIx% zKS3fN2mHjmD30Tb22P;8(tN5rVMa(v&q>Fn86hW3fuy|6@EGVk{tbo&_?3(Ux_6(6-z5qx zb7_O!QutcHT4z(I;ZC9&O!@?5CbJLn0ar6X`ggekkB<^*h-ADu%!SEyQVpV>lMg@w z&!dXFql82NZyQlR3}#+t3RLw4+_Dkdt+y=0d&lKs&GkX|?Oj(iJ$gswml! z+sE}QmR>K`3J-BTXnOdhgIYy7fHx1Vt<`a@Oe7;Ob+uY3C!W2;!!6s=TTQMT%uv7%_jlD@YDYV2N*L2*Ed;eT&v z*awT);uaTK4v=3D-5r9Sy=z6iZZ~wJ=)(E)X9}onb$b`eL5TZZtmWC9uG?`gsAiKg zWEWF zgLQmt_m#CRb6L%+OJ?#KpuN@ZIqu^IEUH-Fwre*%5EK;02B(Da$t-rWIq@ms8R6Nq zEMm<7zG6UJm_Q*d9K|LFYIH4%!`Nbj-lsGsG~6*t(u@J0v5m0dXQo&Yp~4*` z$UaSC8YTvZP5!x|l0Pcb%vU6Mq)VB7i7D`aC+QhX%v^Q5Z$fAE1SP>A5##wlDfzC< rB)~fH;~Wf~PLPK0fEn>UW>n(&a4^w4WMcU+vBPKmrG^Wlg+l!c)1}FO literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/hal_fmc.d b/bit_manipulations/build/hal_fmc.d new file mode 100644 index 0000000..7361834 --- /dev/null +++ b/bit_manipulations/build/hal_fmc.d @@ -0,0 +1,5 @@ +./build/hal_fmc.o: RTE\HAL\CT_Board_HS14_M0\hal_fmc.c \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \ + C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h diff --git a/bit_manipulations/build/hal_fmc.o b/bit_manipulations/build/hal_fmc.o new file mode 100644 index 0000000000000000000000000000000000000000..eee9371a933d43969acd43bbee3bc9a49853ba9d GIT binary patch literal 6556 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 literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/hal_rcc.d b/bit_manipulations/build/hal_rcc.d new file mode 100644 index 0000000..184a1d5 --- /dev/null +++ b/bit_manipulations/build/hal_rcc.d @@ -0,0 +1,5 @@ +./build/hal_rcc.o: RTE\HAL\CT_Board_HS14_M0\hal_rcc.c \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \ + C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h diff --git a/bit_manipulations/build/hal_rcc.o b/bit_manipulations/build/hal_rcc.o new file mode 100644 index 0000000000000000000000000000000000000000..c998b30c6bc48c88859b614adaf1e1ca672580a0 GIT binary patch literal 10084 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 YO=ep0<~RXKp;aTMnjXYRDvp!>2dL4G_W%F@ literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/main.d b/bit_manipulations/build/main.d new file mode 100644 index 0000000..26ece2b --- /dev/null +++ b/bit_manipulations/build/main.d @@ -0,0 +1,2 @@ +./build/main.o: app\main.c app\utils_ctboard.h \ + C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h diff --git a/bit_manipulations/build/main.o b/bit_manipulations/build/main.o new file mode 100644 index 0000000000000000000000000000000000000000..6f38ce765866b6a26a0e69dafd5ddd0ba352b0c7 GIT binary patch literal 2364 zcmb_dPiP!v6o23R*>1AQcGILyQcIbJtt~=_O-*Z!S~pGqkS1xRw0dyU$?VJ|9o(G> zv$Hh?K`0)3P!I(#x%A>e5N`@X&tAOf&7K~S0YIHF@EsWImyIZYGLYS@>7yDPh^*45o-&v&29Xp29e7;B!E+|xgv zT!qm(OxM|s@{la41-pI2Wg9HPj)j9Cw5pk1r&4(s{}D7PFBZFy;_@msX8VO zAtlX*@KC8a_2s2$y*gicqjG9`Y5eVJB7KguNhMkuCo<}!S1(p76(aKpEsZM;!n#0C z2CK|%gf2^t=w?Qbf%2ykZ^YVXyq;XfssrgOW>3i+jW4h_4Ra0TJD_&acnne&v>11{ z;wXsHd21o*TFi!>Ah9;$#JbXL2fiQp)_HsOf^|ENJM)&CbiIxnZCdZ23+6n}Z8X-% z-P&q(-7vB}TAXj)=>8cxrTm6okhH=zuwZqhb z;huyz5QR}noxpeQyPbYO{iqjiM##gv=O)yL@`97n|C0Jb6J>A%w;hr=kL}`FyYV`i zUYw-C_L**jN+SnW%QPgagl-xW+F_a$Q({^i)sBl9dRZKV)55J)5(luUai3~H9u@=5 z6CYJaM!}B&bEsqU2x!o|STWiER7aVxFHoSGTtH9&em-;A-eNPR9DaS%TDa^ye`snqNzPe!^E9tM@hf4ZewrT3= z!;*gUIu6It`{36CXV71}1s1cVQDvWpM$ciuGpNQ@qd&2?3jE*LvtEJBEoTsqOScEQ zytzdlH=_VLZe$U38bfdu^AOR;NH5QhTd|Yb^8WLIUyV~$4+pV7paKa;shCPLjK)oX zALjcGcm+!K(D1NuKeZtuoG0lKrbzQ>#vf-2`%@X6&E#(~#pgCNekG&tW%O=F`FYXs z0CCMYj+arglb~Z`1ngit^tZ`zuy^{sz=>kVO*Ze7RPGb_LA$@{xb1clK+XOb?UZaU z?()@C9&VZ@VY{COJ+hTUFHMxSV#8=7R(I2m;xw?Y-MDk6m%82u^kEXFfzy7F29yM@ zuXger<=F|NpcrW*ak~&?%Gk^2+{THi+a|mBpv%<32X!59%WgQcRQK)KqNG9f)NY_E z{{=+h9tw0>0S|^wzh&GNHNxP;U_LUHB6T9}B7iM10}`6(lbTz@hhPCXZedZtzoHBT zx=DQYI?#BC1;3ZUAI+do@{k7M-=Lt$#NZ&t3>FJ`4=5jb&=)}dEG|I!)1D%~5Ja7U zFq7RG2(nFX`zl|f$GKKY`5IF%7Zqs$Mw-ZiAUjUpprM$J%1vI4N4&lOXrVe!khn`e z{UG&9q)fTVvS^ZB&dil=N*Z3tV?fB&9Y7w2|9XVVGQ7hksCdDL3%PciMf*Xz*K=7h zvcbY1iN2M}yieu9!_*{t3KeQm`<{OT`#{jAMgEs>6qkJ?f_>> + 19 00000000 ;******************************************************* + ************************ + 20 00000000 ; + 21 00000000 ; Licensed under MCD-ST Liberty SW License Agreement V2, + (the "License"); + 22 00000000 ; You may not use this file except in compliance with th + e License. + 23 00000000 ; You may obtain a copy of the License at: + 24 00000000 ; + 25 00000000 ; http://www.st.com/software_license_agreement_li + berty_v2 + 26 00000000 ; + 27 00000000 ; Unless required by applicable law or agreed to in writ + ing, software + 28 00000000 ; distributed under the License is distributed on an "AS + IS" BASIS, + 29 00000000 ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either e + xpress or implied. + 30 00000000 ; See the License for the specific language governing pe + rmissions and + 31 00000000 ; limitations under the License. + 32 00000000 ; + 33 00000000 ;******************************************************* + ************************ + 34 00000000 + 35 00000000 ; Amount of memory (in bytes) allocated for Stack + 36 00000000 ; Tailor this value to your application needs + 37 00000000 ; Stack Configuration + 38 00000000 ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> + 39 00000000 ; + 40 00000000 + + + +ARM Macro Assembler Page 2 + + + 41 00000000 00002000 + Stack_Size + EQU 0x00002000 + 42 00000000 + 43 00000000 AREA STACK, NOINIT, READWRITE, ALIGN +=3 + 44 00000000 EXPORT Stack_Size + 45 00000000 EXPORT Stack_Mem + 46 00000000 + 47 00000000 Stack_Mem + SPACE Stack_Size + 48 00002000 __initial_sp + 49 00002000 + 50 00002000 + 51 00002000 ; Heap Configuration + 52 00002000 ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> + 53 00002000 ; + 54 00002000 + 55 00002000 00000800 + Heap_Size + EQU 0x00000800 + 56 00002000 + 57 00002000 AREA HEAP, NOINIT, READWRITE, ALIGN= +3 + 58 00000000 __heap_base + 59 00000000 Heap_Mem + SPACE Heap_Size + 60 00000800 __heap_limit + 61 00000800 + 62 00000800 PRESERVE8 + 63 00000800 THUMB + 64 00000800 + 65 00000800 + 66 00000800 ; Vector Table Mapped to Address 0 at Reset + 67 00000800 AREA RESET, DATA, READONLY + 68 00000000 EXPORT __Vectors + 69 00000000 EXPORT __Vectors_End + 70 00000000 EXPORT __Vectors_Size + 71 00000000 + 72 00000000 + 73 00000000 00000000 + __Vectors + DCD __initial_sp ; Top of Stack + 74 00000004 00000000 DCD Reset_Handler ; Reset Handler + 75 00000008 00000000 DCD NMI_Handler ; NMI Handler + 76 0000000C 00000000 DCD HardFault_Handler ; Hard Fault + Handler + 77 00000010 00000000 DCD MemManage_Handler + ; MPU Fault Handler + + 78 00000014 00000000 DCD BusFault_Handler + ; Bus Fault Handler + + 79 00000018 00000000 DCD UsageFault_Handler ; Usage Faul + t Handler + 80 0000001C 00000000 DCD 0 ; Reserved + 81 00000020 00000000 DCD 0 ; Reserved + 82 00000024 00000000 DCD 0 ; Reserved + 83 00000028 00000000 DCD 0 ; Reserved + + + +ARM Macro Assembler Page 3 + + + 84 0000002C 00000000 DCD SVC_Handler ; SVCall Handler + 85 00000030 00000000 DCD DebugMon_Handler ; Debug Monito + r Handler + 86 00000034 00000000 DCD 0 ; Reserved + 87 00000038 00000000 DCD PendSV_Handler ; PendSV Handler + + 88 0000003C 00000000 DCD SysTick_Handler + ; SysTick Handler + 89 00000040 + 90 00000040 ; External Interrupts + 91 00000040 00000000 DCD WWDG_IRQHandler ; Window WatchD + og + + + 92 00000044 00000000 DCD PVD_IRQHandler ; PVD through EX + TI Line detection + + + 93 00000048 00000000 DCD TAMP_STAMP_IRQHandler ; Tamper + and TimeStamps thro + ugh the EXTI line + + 94 0000004C 00000000 DCD RTC_WKUP_IRQHandler ; RTC Wakeu + p through the EXTI + line + + 95 00000050 00000000 DCD FLASH_IRQHandler ; FLASH + + + 96 00000054 00000000 DCD RCC_IRQHandler ; RCC + + + 97 00000058 00000000 DCD EXTI0_IRQHandler ; EXTI Line0 + + + + 98 0000005C 00000000 DCD EXTI1_IRQHandler ; EXTI Line1 + + + + 99 00000060 00000000 DCD EXTI2_IRQHandler ; EXTI Line2 + + + + 100 00000064 00000000 DCD EXTI3_IRQHandler ; EXTI Line3 + + + + 101 00000068 00000000 DCD EXTI4_IRQHandler ; EXTI Line4 + + + + 102 0000006C 00000000 DCD DMA1_Stream0_IRQHandler ; DMA1 + Stream 0 + + + 103 00000070 00000000 DCD DMA1_Stream1_IRQHandler ; DMA1 + Stream 1 + + + + +ARM Macro Assembler Page 4 + + + + 104 00000074 00000000 DCD DMA1_Stream2_IRQHandler ; DMA1 + Stream 2 + + + 105 00000078 00000000 DCD DMA1_Stream3_IRQHandler ; DMA1 + Stream 3 + + + 106 0000007C 00000000 DCD DMA1_Stream4_IRQHandler ; DMA1 + Stream 4 + + + 107 00000080 00000000 DCD DMA1_Stream5_IRQHandler ; DMA1 + Stream 5 + + + 108 00000084 00000000 DCD DMA1_Stream6_IRQHandler ; DMA1 + Stream 6 + + + 109 00000088 00000000 DCD ADC_IRQHandler ; ADC1, ADC2 and + ADC3s + + 110 0000008C 00000000 DCD CAN1_TX_IRQHandler ; CAN1 TX + + + + 111 00000090 00000000 DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + + + + 112 00000094 00000000 DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + + + + 113 00000098 00000000 DCD CAN1_SCE_IRQHandler ; CAN1 SCE + + + + 114 0000009C 00000000 DCD EXTI9_5_IRQHandler ; External L + ine[9:5]s + + + 115 000000A0 00000000 DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 + Break and TIM9 + + 116 000000A4 00000000 DCD TIM1_UP_TIM10_IRQHandler ; TIM1 + Update and TIM10 + + 117 000000A8 00000000 DCD TIM1_TRG_COM_TIM11_IRQHandler ; + TIM1 Trigger and C + ommutation and TIM1 + 1 + 118 000000AC 00000000 DCD TIM1_CC_IRQHandler ; TIM1 Captu + re Compare + + + 119 000000B0 00000000 DCD TIM2_IRQHandler ; TIM2 + + + +ARM Macro Assembler Page 5 + + + + + 120 000000B4 00000000 DCD TIM3_IRQHandler ; TIM3 + + + 121 000000B8 00000000 DCD TIM4_IRQHandler ; TIM4 + + + 122 000000BC 00000000 DCD I2C1_EV_IRQHandler ; I2C1 Event + + + + 123 000000C0 00000000 DCD I2C1_ER_IRQHandler ; I2C1 Error + + + + 124 000000C4 00000000 DCD I2C2_EV_IRQHandler ; I2C2 Event + + + + 125 000000C8 00000000 DCD I2C2_ER_IRQHandler ; I2C2 Error + + + + 126 000000CC 00000000 DCD SPI1_IRQHandler ; SPI1 + + + 127 000000D0 00000000 DCD SPI2_IRQHandler ; SPI2 + + + 128 000000D4 00000000 DCD USART1_IRQHandler ; USART1 + + + 129 000000D8 00000000 DCD USART2_IRQHandler ; USART2 + + + 130 000000DC 00000000 DCD USART3_IRQHandler ; USART3 + + + 131 000000E0 00000000 DCD EXTI15_10_IRQHandler ; External + Line[15:10]s + + + 132 000000E4 00000000 DCD RTC_Alarm_IRQHandler ; RTC Alar + m (A and B) through + EXTI Line + + 133 000000E8 00000000 DCD OTG_FS_WKUP_IRQHandler ; USB OT + G FS Wakeup through + EXTI line + + 134 000000EC 00000000 DCD TIM8_BRK_TIM12_IRQHandler ; TIM + 8 Break and TIM12 + + 135 000000F0 00000000 DCD TIM8_UP_TIM13_IRQHandler ; TIM8 + Update and TIM13 + + 136 000000F4 00000000 DCD TIM8_TRG_COM_TIM14_IRQHandler ; + TIM8 Trigger and C + + + +ARM Macro Assembler Page 6 + + + ommutation and TIM1 + 4 + 137 000000F8 00000000 DCD TIM8_CC_IRQHandler ; TIM8 Captu + re Compare + + + 138 000000FC 00000000 DCD DMA1_Stream7_IRQHandler ; DMA1 + Stream7 + + + 139 00000100 00000000 DCD FMC_IRQHandler ; FMC + + + 140 00000104 00000000 DCD SDIO_IRQHandler ; SDIO + + + 141 00000108 00000000 DCD TIM5_IRQHandler ; TIM5 + + + 142 0000010C 00000000 DCD SPI3_IRQHandler ; SPI3 + + + 143 00000110 00000000 DCD UART4_IRQHandler ; UART4 + + + 144 00000114 00000000 DCD UART5_IRQHandler ; UART5 + + + 145 00000118 00000000 DCD TIM6_DAC_IRQHandler ; TIM6 and + DAC1&2 underrun err + ors + + 146 0000011C 00000000 DCD TIM7_IRQHandler ; TIM7 + + 147 00000120 00000000 DCD DMA2_Stream0_IRQHandler ; DMA2 + Stream 0 + + + 148 00000124 00000000 DCD DMA2_Stream1_IRQHandler ; DMA2 + Stream 1 + + + 149 00000128 00000000 DCD DMA2_Stream2_IRQHandler ; DMA2 + Stream 2 + + + 150 0000012C 00000000 DCD DMA2_Stream3_IRQHandler ; DMA2 + Stream 3 + + + 151 00000130 00000000 DCD DMA2_Stream4_IRQHandler ; DMA2 + Stream 4 + + + 152 00000134 00000000 DCD ETH_IRQHandler ; Ethernet + + + 153 00000138 00000000 DCD ETH_WKUP_IRQHandler ; Ethernet + Wakeup through EXTI + + + +ARM Macro Assembler Page 7 + + + line + + 154 0000013C 00000000 DCD CAN2_TX_IRQHandler ; CAN2 TX + + + + 155 00000140 00000000 DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + + + + 156 00000144 00000000 DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + + + + 157 00000148 00000000 DCD CAN2_SCE_IRQHandler ; CAN2 SCE + + + + 158 0000014C 00000000 DCD OTG_FS_IRQHandler ; USB OTG FS + + + 159 00000150 00000000 DCD DMA2_Stream5_IRQHandler ; DMA2 + Stream 5 + + + 160 00000154 00000000 DCD DMA2_Stream6_IRQHandler ; DMA2 + Stream 6 + + + 161 00000158 00000000 DCD DMA2_Stream7_IRQHandler ; DMA2 + Stream 7 + + + 162 0000015C 00000000 DCD USART6_IRQHandler ; USART6 + + + + 163 00000160 00000000 DCD I2C3_EV_IRQHandler ; I2C3 event + + + + 164 00000164 00000000 DCD I2C3_ER_IRQHandler ; I2C3 error + + + + 165 00000168 00000000 DCD OTG_HS_EP1_OUT_IRQHandler ; USB + OTG HS End Point 1 + Out + + 166 0000016C 00000000 DCD OTG_HS_EP1_IN_IRQHandler ; USB + OTG HS End Point 1 + In + + 167 00000170 00000000 DCD OTG_HS_WKUP_IRQHandler ; USB OT + G HS Wakeup through + EXTI + + 168 00000174 00000000 DCD OTG_HS_IRQHandler ; USB OTG HS + + + + +ARM Macro Assembler Page 8 + + + + 169 00000178 00000000 DCD DCMI_IRQHandler ; DCMI + + + 170 0000017C 00000000 DCD CRYP_IRQHandler ; CRYP crypto + + + 171 00000180 00000000 DCD HASH_RNG_IRQHandler + ; Hash and Rng + 172 00000184 00000000 DCD FPU_IRQHandler ; FPU + 173 00000188 00000000 DCD UART7_IRQHandler ; UART7 + 174 0000018C 00000000 DCD UART8_IRQHandler ; UART8 + 175 00000190 00000000 DCD SPI4_IRQHandler ; SPI4 + 176 00000194 00000000 DCD SPI5_IRQHandler ; SPI5 + 177 00000198 00000000 DCD SPI6_IRQHandler ; SPI6 + 178 0000019C 00000000 DCD SAI1_IRQHandler ; SAI1 + 179 000001A0 00000000 DCD LTDC_IRQHandler ; LTDC + 180 000001A4 00000000 DCD LTDC_ER_IRQHandler ; LTDC error + + 181 000001A8 00000000 DCD DMA2D_IRQHandler ; DMA2D + 182 000001AC + 183 000001AC __Vectors_End + 184 000001AC + 185 000001AC 000001AC + __Vectors_Size + EQU __Vectors_End - __Vectors + 186 000001AC + 187 000001AC AREA |.text|, CODE, READONLY + 188 00000000 + 189 00000000 ; Reset handler + 190 00000000 Reset_Handler + PROC + 191 00000000 EXPORT Reset_Handler [WEAK +] + 192 00000000 IMPORT __system + 193 00000000 IMPORT __main + 194 00000000 ENTRY + 195 00000000 + 196 00000000 4806 LDR R0, =__system + 197 00000002 4780 BLX R0 + 198 00000004 4806 LDR R0, =__main + 199 00000006 4700 BX R0 + 200 00000008 ENDP + 201 00000008 + 202 00000008 ; Dummy Exception Handlers (infinite loops which can be + modified) + 203 00000008 + 204 00000008 NMI_Handler + PROC + 205 00000008 EXPORT NMI_Handler [WEA +K] + 206 00000008 E7FE B . + 207 0000000A ENDP + 209 0000000A HardFault_Handler + PROC + 210 0000000A EXPORT HardFault_Handler [WEA +K] + 211 0000000A E7FE B . + 212 0000000C ENDP + + + +ARM Macro Assembler Page 9 + + + 214 0000000C MemManage_Handler + PROC + 215 0000000C EXPORT MemManage_Handler [WEA +K] + 216 0000000C E7FE B . + 217 0000000E ENDP + 219 0000000E BusFault_Handler + PROC + 220 0000000E EXPORT BusFault_Handler [WEA +K] + 221 0000000E E7FE B . + 222 00000010 ENDP + 224 00000010 UsageFault_Handler + PROC + 225 00000010 EXPORT UsageFault_Handler [WEA +K] + 226 00000010 E7FE B . + 227 00000012 ENDP + 228 00000012 SVC_Handler + PROC + 229 00000012 EXPORT SVC_Handler [WEA +K] + 230 00000012 E7FE B . + 231 00000014 ENDP + 233 00000014 DebugMon_Handler + PROC + 234 00000014 EXPORT DebugMon_Handler [WEA +K] + 235 00000014 E7FE B . + 236 00000016 ENDP + 237 00000016 PendSV_Handler + PROC + 238 00000016 EXPORT PendSV_Handler [WEA +K] + 239 00000016 E7FE B . + 240 00000018 ENDP + 241 00000018 SysTick_Handler + PROC + 242 00000018 EXPORT SysTick_Handler [WEA +K] + 243 00000018 E7FE B . + 244 0000001A ENDP + 245 0000001A + 246 0000001A Default_Handler + PROC + 247 0000001A + 248 0000001A EXPORT WWDG_IRQHandler + [WEAK] + 249 0000001A EXPORT PVD_IRQHandler + [WEAK] + 250 0000001A EXPORT TAMP_STAMP_IRQHandler + [WEAK] + 251 0000001A EXPORT RTC_WKUP_IRQHandler + [WEAK] + 252 0000001A EXPORT FLASH_IRQHandler + [WEAK] + 253 0000001A EXPORT RCC_IRQHandler + [WEAK] + 254 0000001A EXPORT EXTI0_IRQHandler + + + +ARM Macro Assembler Page 10 + + + [WEAK] + 255 0000001A EXPORT EXTI1_IRQHandler + [WEAK] + 256 0000001A EXPORT EXTI2_IRQHandler + [WEAK] + 257 0000001A EXPORT EXTI3_IRQHandler + [WEAK] + 258 0000001A EXPORT EXTI4_IRQHandler + [WEAK] + 259 0000001A EXPORT DMA1_Stream0_IRQHandler + [WEAK] + 260 0000001A EXPORT DMA1_Stream1_IRQHandler + [WEAK] + 261 0000001A EXPORT DMA1_Stream2_IRQHandler + [WEAK] + 262 0000001A EXPORT DMA1_Stream3_IRQHandler + [WEAK] + 263 0000001A EXPORT DMA1_Stream4_IRQHandler + [WEAK] + 264 0000001A EXPORT DMA1_Stream5_IRQHandler + [WEAK] + 265 0000001A EXPORT DMA1_Stream6_IRQHandler + [WEAK] + 266 0000001A EXPORT ADC_IRQHandler + [WEAK] + 267 0000001A EXPORT CAN1_TX_IRQHandler + [WEAK] + 268 0000001A EXPORT CAN1_RX0_IRQHandler + [WEAK] + 269 0000001A EXPORT CAN1_RX1_IRQHandler + [WEAK] + 270 0000001A EXPORT CAN1_SCE_IRQHandler + [WEAK] + 271 0000001A EXPORT EXTI9_5_IRQHandler + [WEAK] + 272 0000001A EXPORT TIM1_BRK_TIM9_IRQHandler + [WEAK] + 273 0000001A EXPORT TIM1_UP_TIM10_IRQHandler + [WEAK] + 274 0000001A EXPORT TIM1_TRG_COM_TIM11_IRQHandler + [WEAK] + 275 0000001A EXPORT TIM1_CC_IRQHandler + [WEAK] + 276 0000001A EXPORT TIM2_IRQHandler + [WEAK] + 277 0000001A EXPORT TIM3_IRQHandler + [WEAK] + 278 0000001A EXPORT TIM4_IRQHandler + [WEAK] + 279 0000001A EXPORT I2C1_EV_IRQHandler + [WEAK] + 280 0000001A EXPORT I2C1_ER_IRQHandler + [WEAK] + 281 0000001A EXPORT I2C2_EV_IRQHandler + [WEAK] + 282 0000001A EXPORT I2C2_ER_IRQHandler + [WEAK] + 283 0000001A EXPORT SPI1_IRQHandler + [WEAK] + + + +ARM Macro Assembler Page 11 + + + 284 0000001A EXPORT SPI2_IRQHandler + [WEAK] + 285 0000001A EXPORT USART1_IRQHandler + [WEAK] + 286 0000001A EXPORT USART2_IRQHandler + [WEAK] + 287 0000001A EXPORT USART3_IRQHandler + [WEAK] + 288 0000001A EXPORT EXTI15_10_IRQHandler + [WEAK] + 289 0000001A EXPORT RTC_Alarm_IRQHandler + [WEAK] + 290 0000001A EXPORT OTG_FS_WKUP_IRQHandler + [WEAK] + 291 0000001A EXPORT TIM8_BRK_TIM12_IRQHandler + [WEAK] + 292 0000001A EXPORT TIM8_UP_TIM13_IRQHandler + [WEAK] + 293 0000001A EXPORT TIM8_TRG_COM_TIM14_IRQHandler + [WEAK] + 294 0000001A EXPORT TIM8_CC_IRQHandler + [WEAK] + 295 0000001A EXPORT DMA1_Stream7_IRQHandler + [WEAK] + 296 0000001A EXPORT FMC_IRQHandler + [WEAK] + 297 0000001A EXPORT SDIO_IRQHandler + [WEAK] + 298 0000001A EXPORT TIM5_IRQHandler + [WEAK] + 299 0000001A EXPORT SPI3_IRQHandler + [WEAK] + 300 0000001A EXPORT UART4_IRQHandler + [WEAK] + 301 0000001A EXPORT UART5_IRQHandler + [WEAK] + 302 0000001A EXPORT TIM6_DAC_IRQHandler + [WEAK] + 303 0000001A EXPORT TIM7_IRQHandler + [WEAK] + 304 0000001A EXPORT DMA2_Stream0_IRQHandler + [WEAK] + 305 0000001A EXPORT DMA2_Stream1_IRQHandler + [WEAK] + 306 0000001A EXPORT DMA2_Stream2_IRQHandler + [WEAK] + 307 0000001A EXPORT DMA2_Stream3_IRQHandler + [WEAK] + 308 0000001A EXPORT DMA2_Stream4_IRQHandler + [WEAK] + 309 0000001A EXPORT ETH_IRQHandler + [WEAK] + 310 0000001A EXPORT ETH_WKUP_IRQHandler + [WEAK] + 311 0000001A EXPORT CAN2_TX_IRQHandler + [WEAK] + 312 0000001A EXPORT CAN2_RX0_IRQHandler + [WEAK] + 313 0000001A EXPORT CAN2_RX1_IRQHandler + + + +ARM Macro Assembler Page 12 + + + [WEAK] + 314 0000001A EXPORT CAN2_SCE_IRQHandler + [WEAK] + 315 0000001A EXPORT OTG_FS_IRQHandler + [WEAK] + 316 0000001A EXPORT DMA2_Stream5_IRQHandler + [WEAK] + 317 0000001A EXPORT DMA2_Stream6_IRQHandler + [WEAK] + 318 0000001A EXPORT DMA2_Stream7_IRQHandler + [WEAK] + 319 0000001A EXPORT USART6_IRQHandler + [WEAK] + 320 0000001A EXPORT I2C3_EV_IRQHandler + [WEAK] + 321 0000001A EXPORT I2C3_ER_IRQHandler + [WEAK] + 322 0000001A EXPORT OTG_HS_EP1_OUT_IRQHandler + [WEAK] + 323 0000001A EXPORT OTG_HS_EP1_IN_IRQHandler + [WEAK] + 324 0000001A EXPORT OTG_HS_WKUP_IRQHandler + [WEAK] + 325 0000001A EXPORT OTG_HS_IRQHandler + [WEAK] + 326 0000001A EXPORT DCMI_IRQHandler + [WEAK] + 327 0000001A EXPORT CRYP_IRQHandler + [WEAK] + 328 0000001A EXPORT HASH_RNG_IRQHandler + [WEAK] + 329 0000001A EXPORT FPU_IRQHandler + [WEAK] + 330 0000001A EXPORT UART7_IRQHandler + [WEAK] + 331 0000001A EXPORT UART8_IRQHandler + [WEAK] + 332 0000001A EXPORT SPI4_IRQHandler + [WEAK] + 333 0000001A EXPORT SPI5_IRQHandler + [WEAK] + 334 0000001A EXPORT SPI6_IRQHandler + [WEAK] + 335 0000001A EXPORT SAI1_IRQHandler + [WEAK] + 336 0000001A EXPORT LTDC_IRQHandler + [WEAK] + 337 0000001A EXPORT LTDC_ER_IRQHandler + [WEAK] + 338 0000001A EXPORT DMA2D_IRQHandler + [WEAK] + 339 0000001A + 340 0000001A WWDG_IRQHandler + 341 0000001A PVD_IRQHandler + 342 0000001A TAMP_STAMP_IRQHandler + 343 0000001A RTC_WKUP_IRQHandler + 344 0000001A FLASH_IRQHandler + 345 0000001A RCC_IRQHandler + 346 0000001A EXTI0_IRQHandler + + + +ARM Macro Assembler Page 13 + + + 347 0000001A EXTI1_IRQHandler + 348 0000001A EXTI2_IRQHandler + 349 0000001A EXTI3_IRQHandler + 350 0000001A EXTI4_IRQHandler + 351 0000001A DMA1_Stream0_IRQHandler + 352 0000001A DMA1_Stream1_IRQHandler + 353 0000001A DMA1_Stream2_IRQHandler + 354 0000001A DMA1_Stream3_IRQHandler + 355 0000001A DMA1_Stream4_IRQHandler + 356 0000001A DMA1_Stream5_IRQHandler + 357 0000001A DMA1_Stream6_IRQHandler + 358 0000001A ADC_IRQHandler + 359 0000001A CAN1_TX_IRQHandler + 360 0000001A CAN1_RX0_IRQHandler + 361 0000001A CAN1_RX1_IRQHandler + 362 0000001A CAN1_SCE_IRQHandler + 363 0000001A EXTI9_5_IRQHandler + 364 0000001A TIM1_BRK_TIM9_IRQHandler + 365 0000001A TIM1_UP_TIM10_IRQHandler + 366 0000001A TIM1_TRG_COM_TIM11_IRQHandler + 367 0000001A TIM1_CC_IRQHandler + 368 0000001A TIM2_IRQHandler + 369 0000001A TIM3_IRQHandler + 370 0000001A TIM4_IRQHandler + 371 0000001A I2C1_EV_IRQHandler + 372 0000001A I2C1_ER_IRQHandler + 373 0000001A I2C2_EV_IRQHandler + 374 0000001A I2C2_ER_IRQHandler + 375 0000001A SPI1_IRQHandler + 376 0000001A SPI2_IRQHandler + 377 0000001A USART1_IRQHandler + 378 0000001A USART2_IRQHandler + 379 0000001A USART3_IRQHandler + 380 0000001A EXTI15_10_IRQHandler + 381 0000001A RTC_Alarm_IRQHandler + 382 0000001A OTG_FS_WKUP_IRQHandler + 383 0000001A TIM8_BRK_TIM12_IRQHandler + 384 0000001A TIM8_UP_TIM13_IRQHandler + 385 0000001A TIM8_TRG_COM_TIM14_IRQHandler + 386 0000001A TIM8_CC_IRQHandler + 387 0000001A DMA1_Stream7_IRQHandler + 388 0000001A FMC_IRQHandler + 389 0000001A SDIO_IRQHandler + 390 0000001A TIM5_IRQHandler + 391 0000001A SPI3_IRQHandler + 392 0000001A UART4_IRQHandler + 393 0000001A UART5_IRQHandler + 394 0000001A TIM6_DAC_IRQHandler + 395 0000001A TIM7_IRQHandler + 396 0000001A DMA2_Stream0_IRQHandler + 397 0000001A DMA2_Stream1_IRQHandler + 398 0000001A DMA2_Stream2_IRQHandler + 399 0000001A DMA2_Stream3_IRQHandler + 400 0000001A DMA2_Stream4_IRQHandler + 401 0000001A ETH_IRQHandler + 402 0000001A ETH_WKUP_IRQHandler + 403 0000001A CAN2_TX_IRQHandler + 404 0000001A CAN2_RX0_IRQHandler + 405 0000001A CAN2_RX1_IRQHandler + + + +ARM Macro Assembler Page 14 + + + 406 0000001A CAN2_SCE_IRQHandler + 407 0000001A OTG_FS_IRQHandler + 408 0000001A DMA2_Stream5_IRQHandler + 409 0000001A DMA2_Stream6_IRQHandler + 410 0000001A DMA2_Stream7_IRQHandler + 411 0000001A USART6_IRQHandler + 412 0000001A I2C3_EV_IRQHandler + 413 0000001A I2C3_ER_IRQHandler + 414 0000001A OTG_HS_EP1_OUT_IRQHandler + 415 0000001A OTG_HS_EP1_IN_IRQHandler + 416 0000001A OTG_HS_WKUP_IRQHandler + 417 0000001A OTG_HS_IRQHandler + 418 0000001A DCMI_IRQHandler + 419 0000001A CRYP_IRQHandler + 420 0000001A HASH_RNG_IRQHandler + 421 0000001A FPU_IRQHandler + 422 0000001A UART7_IRQHandler + 423 0000001A UART8_IRQHandler + 424 0000001A SPI4_IRQHandler + 425 0000001A SPI5_IRQHandler + 426 0000001A SPI6_IRQHandler + 427 0000001A SAI1_IRQHandler + 428 0000001A LTDC_IRQHandler + 429 0000001A LTDC_ER_IRQHandler + 430 0000001A DMA2D_IRQHandler + 431 0000001A E7FE B . + 432 0000001C + 433 0000001C ENDP + 434 0000001C + 435 0000001C ALIGN + 436 0000001C + 437 0000001C END + 00000000 + 00000000 +Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M0 --depend=.\bu +ild\startup_ctboard.d -o.\build\startup_ctboard.o -I.\RTE\_Target_1 -IC:\Users\ +roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include -IC:\User +s\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0 -IC: +\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include --pre +define="__EVAL SETA 1" --predefine="__UVISION_VERSION SETA 537" --predefine="_R +TE_ SETA 1" --predefine="_RTE_ SETA 1" --list=.\build\startup_ctboard.lst RTE/D +evice/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +STACK 00000000 + +Symbol: STACK + Definitions + At line 43 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: STACK unused +Stack_Mem 00000000 + +Symbol: Stack_Mem + Definitions + At line 47 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 45 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: Stack_Mem used once +__initial_sp 00002000 + +Symbol: __initial_sp + Definitions + At line 48 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 73 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: __initial_sp used once +3 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +HEAP 00000000 + +Symbol: HEAP + Definitions + At line 57 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: HEAP unused +Heap_Mem 00000000 + +Symbol: Heap_Mem + Definitions + At line 59 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: Heap_Mem unused +__heap_base 00000000 + +Symbol: __heap_base + Definitions + At line 58 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: __heap_base unused +__heap_limit 00000800 + +Symbol: __heap_limit + Definitions + At line 60 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: __heap_limit unused +4 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +RESET 00000000 + +Symbol: RESET + Definitions + At line 67 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: RESET unused +__Vectors 00000000 + +Symbol: __Vectors + Definitions + At line 73 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 68 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 185 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +__Vectors_End 000001AC + +Symbol: __Vectors_End + Definitions + At line 183 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 69 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 185 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +3 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +.text 00000000 + +Symbol: .text + Definitions + At line 187 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: .text unused +ADC_IRQHandler 0000001A + +Symbol: ADC_IRQHandler + Definitions + At line 358 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 109 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 266 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +BusFault_Handler 0000000E + +Symbol: BusFault_Handler + Definitions + At line 219 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 78 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 220 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN1_RX0_IRQHandler 0000001A + +Symbol: CAN1_RX0_IRQHandler + Definitions + At line 360 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 111 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 268 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN1_RX1_IRQHandler 0000001A + +Symbol: CAN1_RX1_IRQHandler + Definitions + At line 361 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 112 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 269 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN1_SCE_IRQHandler 0000001A + +Symbol: CAN1_SCE_IRQHandler + Definitions + At line 362 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 113 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 270 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN1_TX_IRQHandler 0000001A + +Symbol: CAN1_TX_IRQHandler + Definitions + At line 359 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + + + +ARM Macro Assembler Page 2 Alphabetic symbol ordering +Relocatable symbols + + At line 110 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 267 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN2_RX0_IRQHandler 0000001A + +Symbol: CAN2_RX0_IRQHandler + Definitions + At line 404 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 155 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 312 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN2_RX1_IRQHandler 0000001A + +Symbol: CAN2_RX1_IRQHandler + Definitions + At line 405 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 156 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 313 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN2_SCE_IRQHandler 0000001A + +Symbol: CAN2_SCE_IRQHandler + Definitions + At line 406 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 157 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 314 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CAN2_TX_IRQHandler 0000001A + +Symbol: CAN2_TX_IRQHandler + Definitions + At line 403 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 154 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 311 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +CRYP_IRQHandler 0000001A + +Symbol: CRYP_IRQHandler + Definitions + At line 419 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 170 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 327 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DCMI_IRQHandler 0000001A + +Symbol: DCMI_IRQHandler + Definitions + At line 418 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 169 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 326 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream0_IRQHandler 0000001A + + + + +ARM Macro Assembler Page 3 Alphabetic symbol ordering +Relocatable symbols + +Symbol: DMA1_Stream0_IRQHandler + Definitions + At line 351 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 102 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 259 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream1_IRQHandler 0000001A + +Symbol: DMA1_Stream1_IRQHandler + Definitions + At line 352 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 103 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 260 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream2_IRQHandler 0000001A + +Symbol: DMA1_Stream2_IRQHandler + Definitions + At line 353 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 104 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 261 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream3_IRQHandler 0000001A + +Symbol: DMA1_Stream3_IRQHandler + Definitions + At line 354 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 105 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 262 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream4_IRQHandler 0000001A + +Symbol: DMA1_Stream4_IRQHandler + Definitions + At line 355 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 106 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 263 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream5_IRQHandler 0000001A + +Symbol: DMA1_Stream5_IRQHandler + Definitions + At line 356 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 107 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 264 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream6_IRQHandler 0000001A + +Symbol: DMA1_Stream6_IRQHandler + Definitions + At line 357 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 108 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 4 Alphabetic symbol ordering +Relocatable symbols + + At line 265 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA1_Stream7_IRQHandler 0000001A + +Symbol: DMA1_Stream7_IRQHandler + Definitions + At line 387 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 138 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 295 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2D_IRQHandler 0000001A + +Symbol: DMA2D_IRQHandler + Definitions + At line 430 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 181 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 338 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream0_IRQHandler 0000001A + +Symbol: DMA2_Stream0_IRQHandler + Definitions + At line 396 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 147 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 304 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream1_IRQHandler 0000001A + +Symbol: DMA2_Stream1_IRQHandler + Definitions + At line 397 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 148 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 305 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream2_IRQHandler 0000001A + +Symbol: DMA2_Stream2_IRQHandler + Definitions + At line 398 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 149 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 306 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream3_IRQHandler 0000001A + +Symbol: DMA2_Stream3_IRQHandler + Definitions + At line 399 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 150 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 307 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream4_IRQHandler 0000001A + +Symbol: DMA2_Stream4_IRQHandler + + + +ARM Macro Assembler Page 5 Alphabetic symbol ordering +Relocatable symbols + + Definitions + At line 400 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 151 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 308 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream5_IRQHandler 0000001A + +Symbol: DMA2_Stream5_IRQHandler + Definitions + At line 408 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 159 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 316 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream6_IRQHandler 0000001A + +Symbol: DMA2_Stream6_IRQHandler + Definitions + At line 409 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 160 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 317 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DMA2_Stream7_IRQHandler 0000001A + +Symbol: DMA2_Stream7_IRQHandler + Definitions + At line 410 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 161 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 318 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +DebugMon_Handler 00000014 + +Symbol: DebugMon_Handler + Definitions + At line 233 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 85 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 234 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +Default_Handler 0000001A + +Symbol: Default_Handler + Definitions + At line 246 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + None +Comment: Default_Handler unused +ETH_IRQHandler 0000001A + +Symbol: ETH_IRQHandler + Definitions + At line 401 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 152 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 309 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + + +ARM Macro Assembler Page 6 Alphabetic symbol ordering +Relocatable symbols + +ETH_WKUP_IRQHandler 0000001A + +Symbol: ETH_WKUP_IRQHandler + Definitions + At line 402 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 153 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 310 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI0_IRQHandler 0000001A + +Symbol: EXTI0_IRQHandler + Definitions + At line 346 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 97 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 254 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI15_10_IRQHandler 0000001A + +Symbol: EXTI15_10_IRQHandler + Definitions + At line 380 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 131 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 288 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI1_IRQHandler 0000001A + +Symbol: EXTI1_IRQHandler + Definitions + At line 347 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 98 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 255 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI2_IRQHandler 0000001A + +Symbol: EXTI2_IRQHandler + Definitions + At line 348 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 99 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 256 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI3_IRQHandler 0000001A + +Symbol: EXTI3_IRQHandler + Definitions + At line 349 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 100 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 257 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI4_IRQHandler 0000001A + +Symbol: EXTI4_IRQHandler + Definitions + At line 350 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 7 Alphabetic symbol ordering +Relocatable symbols + + Uses + At line 101 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 258 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +EXTI9_5_IRQHandler 0000001A + +Symbol: EXTI9_5_IRQHandler + Definitions + At line 363 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 114 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 271 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +FLASH_IRQHandler 0000001A + +Symbol: FLASH_IRQHandler + Definitions + At line 344 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 95 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 252 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +FMC_IRQHandler 0000001A + +Symbol: FMC_IRQHandler + Definitions + At line 388 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 139 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 296 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +FPU_IRQHandler 0000001A + +Symbol: FPU_IRQHandler + Definitions + At line 421 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 172 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 329 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +HASH_RNG_IRQHandler 0000001A + +Symbol: HASH_RNG_IRQHandler + Definitions + At line 420 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 171 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 328 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +HardFault_Handler 0000000A + +Symbol: HardFault_Handler + Definitions + At line 209 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 76 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 210 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C1_ER_IRQHandler 0000001A + + + +ARM Macro Assembler Page 8 Alphabetic symbol ordering +Relocatable symbols + + +Symbol: I2C1_ER_IRQHandler + Definitions + At line 372 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 123 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 280 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C1_EV_IRQHandler 0000001A + +Symbol: I2C1_EV_IRQHandler + Definitions + At line 371 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 122 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 279 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C2_ER_IRQHandler 0000001A + +Symbol: I2C2_ER_IRQHandler + Definitions + At line 374 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 125 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 282 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C2_EV_IRQHandler 0000001A + +Symbol: I2C2_EV_IRQHandler + Definitions + At line 373 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 124 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 281 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C3_ER_IRQHandler 0000001A + +Symbol: I2C3_ER_IRQHandler + Definitions + At line 413 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 164 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 321 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +I2C3_EV_IRQHandler 0000001A + +Symbol: I2C3_EV_IRQHandler + Definitions + At line 412 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 163 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 320 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +LTDC_ER_IRQHandler 0000001A + +Symbol: LTDC_ER_IRQHandler + Definitions + At line 429 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + + + +ARM Macro Assembler Page 9 Alphabetic symbol ordering +Relocatable symbols + + At line 180 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 337 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +LTDC_IRQHandler 0000001A + +Symbol: LTDC_IRQHandler + Definitions + At line 428 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 179 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 336 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +MemManage_Handler 0000000C + +Symbol: MemManage_Handler + Definitions + At line 214 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 77 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 215 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +NMI_Handler 00000008 + +Symbol: NMI_Handler + Definitions + At line 204 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 75 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 205 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_FS_IRQHandler 0000001A + +Symbol: OTG_FS_IRQHandler + Definitions + At line 407 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 158 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 315 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_FS_WKUP_IRQHandler 0000001A + +Symbol: OTG_FS_WKUP_IRQHandler + Definitions + At line 382 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 133 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 290 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_HS_EP1_IN_IRQHandler 0000001A + +Symbol: OTG_HS_EP1_IN_IRQHandler + Definitions + At line 415 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 166 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 323 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_HS_EP1_OUT_IRQHandler 0000001A + + + + +ARM Macro Assembler Page 10 Alphabetic symbol ordering +Relocatable symbols + +Symbol: OTG_HS_EP1_OUT_IRQHandler + Definitions + At line 414 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 165 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 322 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_HS_IRQHandler 0000001A + +Symbol: OTG_HS_IRQHandler + Definitions + At line 417 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 168 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 325 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +OTG_HS_WKUP_IRQHandler 0000001A + +Symbol: OTG_HS_WKUP_IRQHandler + Definitions + At line 416 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 167 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 324 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +PVD_IRQHandler 0000001A + +Symbol: PVD_IRQHandler + Definitions + At line 341 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 92 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 249 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +PendSV_Handler 00000016 + +Symbol: PendSV_Handler + Definitions + At line 237 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 87 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 238 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +RCC_IRQHandler 0000001A + +Symbol: RCC_IRQHandler + Definitions + At line 345 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 96 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 253 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +RTC_Alarm_IRQHandler 0000001A + +Symbol: RTC_Alarm_IRQHandler + Definitions + At line 381 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 132 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 11 Alphabetic symbol ordering +Relocatable symbols + + At line 289 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +RTC_WKUP_IRQHandler 0000001A + +Symbol: RTC_WKUP_IRQHandler + Definitions + At line 343 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 94 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 251 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +Reset_Handler 00000000 + +Symbol: Reset_Handler + Definitions + At line 190 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 74 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 191 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SAI1_IRQHandler 0000001A + +Symbol: SAI1_IRQHandler + Definitions + At line 427 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 178 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 335 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SDIO_IRQHandler 0000001A + +Symbol: SDIO_IRQHandler + Definitions + At line 389 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 140 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 297 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI1_IRQHandler 0000001A + +Symbol: SPI1_IRQHandler + Definitions + At line 375 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 126 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 283 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI2_IRQHandler 0000001A + +Symbol: SPI2_IRQHandler + Definitions + At line 376 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 127 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 284 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI3_IRQHandler 0000001A + +Symbol: SPI3_IRQHandler + + + +ARM Macro Assembler Page 12 Alphabetic symbol ordering +Relocatable symbols + + Definitions + At line 391 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 142 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 299 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI4_IRQHandler 0000001A + +Symbol: SPI4_IRQHandler + Definitions + At line 424 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 175 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 332 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI5_IRQHandler 0000001A + +Symbol: SPI5_IRQHandler + Definitions + At line 425 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 176 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 333 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SPI6_IRQHandler 0000001A + +Symbol: SPI6_IRQHandler + Definitions + At line 426 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 177 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 334 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SVC_Handler 00000012 + +Symbol: SVC_Handler + Definitions + At line 228 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 84 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 229 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +SysTick_Handler 00000018 + +Symbol: SysTick_Handler + Definitions + At line 241 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 88 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 242 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TAMP_STAMP_IRQHandler 0000001A + +Symbol: TAMP_STAMP_IRQHandler + Definitions + At line 342 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 93 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 250 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 13 Alphabetic symbol ordering +Relocatable symbols + + +TIM1_BRK_TIM9_IRQHandler 0000001A + +Symbol: TIM1_BRK_TIM9_IRQHandler + Definitions + At line 364 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 115 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 272 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM1_CC_IRQHandler 0000001A + +Symbol: TIM1_CC_IRQHandler + Definitions + At line 367 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 118 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 275 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM1_TRG_COM_TIM11_IRQHandler 0000001A + +Symbol: TIM1_TRG_COM_TIM11_IRQHandler + Definitions + At line 366 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 117 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 274 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM1_UP_TIM10_IRQHandler 0000001A + +Symbol: TIM1_UP_TIM10_IRQHandler + Definitions + At line 365 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 116 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 273 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM2_IRQHandler 0000001A + +Symbol: TIM2_IRQHandler + Definitions + At line 368 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 119 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 276 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM3_IRQHandler 0000001A + +Symbol: TIM3_IRQHandler + Definitions + At line 369 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 120 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 277 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM4_IRQHandler 0000001A + +Symbol: TIM4_IRQHandler + Definitions + + + +ARM Macro Assembler Page 14 Alphabetic symbol ordering +Relocatable symbols + + At line 370 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 121 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 278 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM5_IRQHandler 0000001A + +Symbol: TIM5_IRQHandler + Definitions + At line 390 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 141 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 298 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM6_DAC_IRQHandler 0000001A + +Symbol: TIM6_DAC_IRQHandler + Definitions + At line 394 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 145 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 302 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM7_IRQHandler 0000001A + +Symbol: TIM7_IRQHandler + Definitions + At line 395 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 146 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 303 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM8_BRK_TIM12_IRQHandler 0000001A + +Symbol: TIM8_BRK_TIM12_IRQHandler + Definitions + At line 383 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 134 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 291 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM8_CC_IRQHandler 0000001A + +Symbol: TIM8_CC_IRQHandler + Definitions + At line 386 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 137 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 294 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +TIM8_TRG_COM_TIM14_IRQHandler 0000001A + +Symbol: TIM8_TRG_COM_TIM14_IRQHandler + Definitions + At line 385 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 136 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 293 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + + +ARM Macro Assembler Page 15 Alphabetic symbol ordering +Relocatable symbols + +TIM8_UP_TIM13_IRQHandler 0000001A + +Symbol: TIM8_UP_TIM13_IRQHandler + Definitions + At line 384 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 135 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 292 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +UART4_IRQHandler 0000001A + +Symbol: UART4_IRQHandler + Definitions + At line 392 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 143 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 300 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +UART5_IRQHandler 0000001A + +Symbol: UART5_IRQHandler + Definitions + At line 393 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 144 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 301 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +UART7_IRQHandler 0000001A + +Symbol: UART7_IRQHandler + Definitions + At line 422 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 173 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 330 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +UART8_IRQHandler 0000001A + +Symbol: UART8_IRQHandler + Definitions + At line 423 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 174 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 331 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +USART1_IRQHandler 0000001A + +Symbol: USART1_IRQHandler + Definitions + At line 377 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 128 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 285 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +USART2_IRQHandler 0000001A + +Symbol: USART2_IRQHandler + Definitions + At line 378 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + + + +ARM Macro Assembler Page 16 Alphabetic symbol ordering +Relocatable symbols + + Uses + At line 129 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 286 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +USART3_IRQHandler 0000001A + +Symbol: USART3_IRQHandler + Definitions + At line 379 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 130 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 287 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +USART6_IRQHandler 0000001A + +Symbol: USART6_IRQHandler + Definitions + At line 411 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 162 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 319 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +UsageFault_Handler 00000010 + +Symbol: UsageFault_Handler + Definitions + At line 224 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 79 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 225 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +WWDG_IRQHandler 0000001A + +Symbol: WWDG_IRQHandler + Definitions + At line 340 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 91 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 248 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +103 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Absolute symbols + +Heap_Size 00000800 + +Symbol: Heap_Size + Definitions + At line 55 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 59 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: Heap_Size used once +Stack_Size 00002000 + +Symbol: Stack_Size + Definitions + At line 41 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 44 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + At line 47 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + +__Vectors_Size 000001AC + +Symbol: __Vectors_Size + Definitions + At line 185 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 70 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: __Vectors_Size used once +3 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +External symbols + +__main 00000000 + +Symbol: __main + Definitions + At line 193 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 198 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: __main used once +__system 00000000 + +Symbol: __system + Definitions + At line 192 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s + Uses + At line 196 in file RTE/Device/CT_Board_HS14_M0/startup_ctboard.s +Comment: __system used once +2 symbols +453 symbols in table diff --git a/bit_manipulations/build/startup_ctboard.o b/bit_manipulations/build/startup_ctboard.o new file mode 100644 index 0000000000000000000000000000000000000000..8f32180a0a21d577c0f82cdec2f54234e4583646 GIT binary patch literal 8196 zcmeHMe{5UT6+Z7dj$LR=!jD1gws;T2I-qWxrX}rKhU2)kY1|mwX$u%$o#eF`65F$# zu4NVUk8WdvO-P#%Ox?uT(2!O!{@5nODmHD?#3nRN18Gcx2~Cw?KZMo^ZTn-Q`@Z|G zo%d{*_-oRn-6ZdO=R4<~d(J)A_VdXPU6)f zw-E0anIs+%$q?s6rigclP7pVXoFpQ+Q^bVGL&T`aBgB}k-gMBXJfME*&vi~Nf?iVI$-=5ExLSVmom z_o1#t8+9c%QCDIMbtNu{tRpUpM2TY}G2&K{jl^xJJMkveoj5KsM%;<|6L+Eh#Eqyw z@mkcMcpd6b{21y_ybbjyZb$uzJ5Yb(Cs2Rlanzr<5A`SJP=8_x^(Pilf8u`BpE!g1 z6R$`8i62M(i5b+NxCiwowo!lL66#Mpg!&UJs6TNQ^(Wqm`V;f0KXDrMCvFiL%$(da zn2|m2z19DNT~}iruI3dYQR3yODdq;0X22+v(wirpqt!WQbE;%d)GN(-J5x-I*}0L; zt#+l^UTWBL?OF2imZa*7je5VngZ9BU)Re%_gnZi^?zqosO% zVMnymT&%Pfqjzp~#^z?7k&(M3wWB=Ka+p9A?33Ic+;rsm&t{MTJT4%VoPHiHk^Pki+iE(!#Pm z>6KLFoJA~KIpTC@kzP&J#8S&YiR=(HGc8Q;>&Rb9U2%V^>xu++9WP^NcIim2Uh8Ve z;yn(9b!zj){av2iRpg7uTczsUeO(1fyy?-^VP7UBJDVbdv_L2?5|RE-H2$0z68W8$ z-_ZDu#=mJ?!Lx;Vt2D+mZq#_Q#tDsgXuMlvU1Lk*7c_oR<2N)ut?>noFKT>6<8L)K z5LZC(<}7#s7+i&G=Rx2<9$%6E0}PKML6g_OPYq-3+O>hunhhB1H>_VDIBTpi&B4Jz ztWbaj_ka_47K~vd5WY4X2@e~W8bjD&ytxOI042r<{w`nyaOCIaZV=PuHiNJ2)) z3O^|< z>M(j_bp$=KI(i;iojAyNdlfUNKT{E8M$1z~$OpAt*77}CUeNL}EuYZxLt1`B%a3dM zw3eUI@)<2ZujR8^eo4zOYxy-TzpiC~Z=4PUQ1Kn!4 zpMe3vLy8`6;*bPT>&|H7CLk;1QSCpb}guM`=^EuN_YAx_{J=9>YghlcS8 zp*{?-y9Ufmc@~=JayIJC?%P;_Q%Qdve?vTA#-o;^@OoN~)I{QNYX#+0P)vTLUkoD* z3v(?w#1$m8iU)}fA?TGk3ByY9vIQpEITpl31{_hhSdNyK z`$4T2Vr=qfT0+THg4*3HNXkOuDo9*^s2+-GqH=|wZ@TLSA9l9~Hc*no(^kZCZ{2;I z1xbqQ-^zGc3^gDGtx+u~nlXUI2(G2Q+HmC+^V|Sk18d+vp>V5gzO5EfNsIgnJO_+XAl#V2vzijM@uoZtRxNEJ zROQ=zjPBfEE#T)l9}G4?uiZ4=9aUz~k-ppF!s_L)kF(VT)4Ew@MIs_`Tp0<>)l9Nt zVg3d+kxKWWjTvK!_bf4je0_Qb=Bj87Q{Dk>8o}Qyt>O^?oM3{1??+&a@2bfWy*E5J zr(ppN*HRB552$T`1f6@%9A#lJm>ETKhcSu4aTsEysWc;|p*(F>8q3wX+iV1_Yax>x z=5i*>#O`{d4*4+m>G-WGzPP)cj!JUT%h9RqElnc6qIY!VugmU1( zs=$!$z!A^tc2~&!?%T4 zCSmvGk+5|h+kKvrxx8I0@#-mNF`xC760$E5$i74%`x1fdO9Zkn!s29h+P7ZPuP>BR z_JO^qpeH7B$pt*J`$&J9`Tdh#?R04mz99E`(zM67X43hDJv~!;9~abQ_w_1vzrSzL z9^X@?N#CJRa=PF($&RMB*y;WKRIk-&zZIxnt3pscQ8nd_ImLh4O%3&+6muzC+R0jnZB~7!Fl4F%q2(d zV!P>77JV;N5AQqU9^RLfhxg^?;e9E3cweR--j}e4_oYbQcbY*YJ|LkE-Tij8J7@mpnr*j^ zx7yC4*l5UAYf@}i(3yfy5c{3EcD>oM)3y0!33tgt&PD?;KF`jVU74M2I!EIPJ+)Z9 z-&wY{wOFlH+ttc~-D=3hQgvZI*={$hvrBEK6^oTJIXhcS9^I0Q6=V5yEV*N9bToEw z$5bK_E8;GjPNx&G2eJoZGsSdq|F+lz#nRr?-bq)y31Vg{HeJjoQ|VZGA~_z*7t+P? zSUNe8Jvu7*#7gZIFzJ$H(#gEU+s?7J#O5W|mj8C26z$a{I;Wd9sjUMZYdVK1Rx3yB z)>5OH!F*d_|ESKAM5z? zyoG8F)0X9G?Qq?d)tREkbI{zAhnPR?c-m{&=@5X6vJsr_3ECOHOb(#=qrQ96h6O__!}W~+aIj6q zzBa#-a0wkL@DdWJ?oO!K48&L=1FpR*;wyrV?W88;O?5NHYbR{g?IICUi{8jv1cVXh z8Ye>P-u>d{-r@?fq5e(PW!xKf@s^`Ukl}`6!YlYszfR7sdnnL48|dW9ZjT$iS{D+` zkEz+b7*Sk2->BU1=`k&Gk}B0|mGC)rFSDXUKLZeT?xQ=~ffTu13*Xjw*F zYF~y{a}w2K_`_E*c9}6^F6azZ->}1+6XTcN^0Fz65pl!m29m9zO!t_Vj8Lo3#)MtFY<3KRw)hu literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/system_ctboard.d b/bit_manipulations/build/system_ctboard.d new file mode 100644 index 0000000..556de8b --- /dev/null +++ b/bit_manipulations/build/system_ctboard.d @@ -0,0 +1,11 @@ +./build/system_ctboard.o: RTE\Device\CT_Board_HS14_M0\system_ctboard.c \ + C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\system_ctboard.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\m0\platform_ctboard.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_gpio.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_stm32f4xx.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_common.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_fmc.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_pwr.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\HAL\Include\hal_rcc.h \ + C:\Users\roman\AppData\Local\Arm\Packs\InES\CTBoard14_DFP\4.0.2\Device\Include\reg_ctboard.h diff --git a/bit_manipulations/build/system_ctboard.o b/bit_manipulations/build/system_ctboard.o new file mode 100644 index 0000000000000000000000000000000000000000..d8773c6f35b137c2461079fc42eacdc6dc0ab503 GIT binary patch literal 11608 zcmb_i3zS?{mA$WCeQtl!siXrmAwU!IX+f*2e@W+K($!Vf=}!7nR8`f5cJK*g#X5JArCXJadL3-D=4O}ol9?^E*)4iGA zgxPx3To|gKaRlop?{u`R^Iov9)2|}@9NDU@g~5d(V^Ut=TO^(lN{rZxD$q*&`%FK#uCFAO%WTiDq#aIsytV*Y&FeSBfmb<4t-^H%d_$IZsg z;^wx2cMPl^xX{ja+&JzyZXS2u>bk{!ycM2{*yH)~sc(H}z~AfW6M4~hw{UpGR!5)9 zgF$O_^u4(N^g8+$2v<1zwx0sF05=G+6oYFtxEk_1=pT3-bUkRi2`3;3_c2Z~?gV!b zXN%}Nam?wx+cH|bCTm3JH@wO{G%x-;yiR;~IegwT0b32Huaz3r*9+EF@^u=>Gf8_6~eg&%C?3EaIU3ds96a2nE=A5XKz0nDUa8OmcLDzW#<|l&E&bPVNb(ulv>^`9A|Z)M6*jcS}F-dTOB&3hQWzzfCh;W z56YE{Q{Ww2U^tD7&F>It{xgIjoL>caoa|d|{!01iC4_g2D&SacuA;2wJ0ZR1R>&4} z7;>d)L9Wta?PdX{Fh2+>&6^(59v02kRA>&&o{Th6lMt0Fo%?WiPA4qdV+Kgc81N2B9Ewmzl3yXSG#$Kay_VA z&yvf01=7?3TTHh}6`cdA6S{n+Uy=RQWUo1{$Y~Za^0p}_mj(f0Zc=im zk`qd1l{^YrZyrrB`!rt0o)OPYo_ESTTpvcCJ?|3ou-1J}d9BvlrTmE2{f+Vlt#^3k zEn4qfAx~(%t3}=o{bQ7~dzJi(=6hP@gIeFPMm_@l7K+)}CV#5=UcdYgt#9g^4^&KTSt78Ta$^)7oIw}uqedo3EI<4=zUjCKVhd(ar zr~z(zXB5#xcV9i(4R=5|MB|g7q{nqHg?t0z^C;-K(<42%Rj%9ZqS6)=bNz&ZUxxSx z3eI>|c@pwoUE!3F_h~)plwa3+O3H6*J>6JIKJAqcYkvOdKh^r9PWel%e^<&=T7RrjzN+=_dF2~gKeC)S817(e?9WA8Wc&X*%i=fW$mHrqKYW)%^Z`XRPPPlg?`8E)aHurl` zE(O)S-8l~MINXQ9e2AEB&Z_{@aNh{#4XBPukJs@Y`8}wr852VO0Qw_T^v~D#D_YqY0GziBg_qU+_oYZjBl6oY6!dQ9^;nOB=qNO*G`b>({78;;`d={#3 zH$lE1F6ZMOuk*WdEmZ2d^D!YWf*yq1`8}uH4tNv7L_ajQRwSR@<{ zS)C(;msdh7e24#!IC}n=qr-o?C%z{Vwjxz+p$Zf^W_M#?Bxu{QXkbLOqs&BVsNF-M z_@LF>UyiYfjtz^MuFeV*2nNHkm^CsM3R{74$!hlPV}oxSTQ%^30V^60_V}yE4%|p^ zOqEn)3_BheiSW&@so3tFwIR_!(7ye3M0{w(zLl#8`(~;lx@waQjo9~BRYcF?2>X_+ zirBO`qQie0Q`?fE&fsZ8ZPO4@+q76@sI~}*+9Duo8xNwk@gVG{O*bCIqFMrrY8j6O zqVd{_6;)fcqG~hYP1BV=SgIL_apbCPA~CgXRH8my(l@xhu9JbN{^U1V{hSZJvBHV*|y?02!gKEv@)ZKCj{ z_(j39ud>qj_fYZM zsMJt!m%>7Nzg0*kF;1lAuPQ(bAk(h!o~Rg$#1$edRIo~RsL<)zL~#be^ah24-rNB7 z%Yi!a>k}12ILC1I$D&a&9NdNB8Hf&(7*r|t=QBBE$Yk;H5mR3jYHdoekWx5e4ket23ZVwtDX7Ytfi^!lF0UhOLlEq|anbbMpQ2o_6tWblXdYjK= ziy}XtPpLwRCkrKV^Chd8Pp7LqWs2RULwUPdsvLQVfs^{9xjfOLSV+uSrOaF=yI)Mr z7p>BKA)6@V=Cdi0NTmwtV$mw5OY`}%HIti7iBzJLV4nJ-hgi}0icDvdhs0biWjA7a zE@>r_NlHZ=H-p%!%5_sz=XK3<^9NOvr|=z&fO5B}>|A;-S2(0Qc2y=-no+S;K1HHj zA)QEBQ}cylNnBOPl+so@o0ytSvtc`uxojzu&0z$R>b9eiDmPJGq!ONW`_o$R7dF13 z(*>(ApRFZ|v*~nx5mm~a#w4<-sY3!e3Wrp~>2aIQqirBmqxaJXIc{xg3OVsi+6=t^ zFO!HsA0{PJ|YO&71O120@M}&cyqVQt&;|0?Cz7vbV#^I($T1r@fQy(;&>u-`b8rM0nY-=CH z#Zk7uX$A2gHb3ON*45uclO=WN37WR`j7-~l*0luFG^e-%nXrTPX44V^7+63RMsRbx zngO+|8Blv5pAX>l*!dxme5NYrB`F)-3nDW4x zoSnxljoB2=|64wuy6KdEVm2rA<@e1{PxysYF_O8txm>nl)6-qCa0lDQu5@PBI?ywL zt3_vUI54_nqCb*}2DK6nrm);Uj`R$^I9IHhpW z^jMfr3d7~9Z+98HT%re>x$$$EU9LKLq5EprneJiNvJ-Cemq(^ub#C)EsixyEgN@yN8>e971;*Sz|w>HVF#T%L3p=CeoS zO>XnEADDItH#Q3#TMd^{zk({QfWv{SPt96%^Gp(v!?yD3vyYN9Yj3!*FGHLLfG{DX3_u+>7LnTReOf*1 zRVC2ADobto;iW_GsjA~4t#jxH={heLdj(pCy%Y-0VZ{hKmh%#Df}-}p0XLNTbL?sw zFsRhzdeqTLcrM;)zy_>IMF`QHIPvFUOxZt0c)q=u)qvrfp*V~MUhty66>HRFW1;D8 zLJa4<#9tu9{bXZ}=>bB#2&ogqKSnlQx+e)S+)pw8L$dL<{t+QMO3Q8(|L%XQew~rVkJ|qP<1>sjZp8nB z@i&bB&G>spdZAF93*$$)f^j7yJzK=LGxjiUVGJq-|j0 z3yen?X(yQYTNv+PyqEDo#>W_+VSJwPSB$h(OnDr5*AX@`u4G)t*vYt!aVO)Yj8lwi zLm7GA$2M&$Q{FonzsmR!+PG2>Ro9gI;%+MuTE zN1M}BKFjv|2+t7W8pcmB|5>*0V*ESC2igB9A@V%Q_+#dO#`Y_Wzh`vOo+IjCN{DhR z8P_t>@2&#^pBO66&vrN4^qoO|`p%#{lWeEh&a+M57vxvJBS8IeZ_j9pC3|k_E2L+A zm@W9y2Q#UI!k0=<&F{AoQ&WZX0im3jCzgbd<{&7kCnuPwV#z?Ll8I8OkeQkM<>yQ|vh zsIfY0T%BS~$yZC&_&da!l#fGdAeKw%!BSpv7W^1B=A{52Y!8K2tP=| zCO2Z^UAq-)3;Lim@S`Ba6bU>&0-xFRVNb`4qD%Pcqn0B2h^aZ+$hys@=ug7L)%d&3 z%HcHVbJi>9y8?1Z;cP9pTsP6~NSgfY19S2!>KPx~3Aw+7Yhk{@z6!jv zqS}+WO+=_-pES^pI?;;1k|0hE7`j?Moak|{xS1M=#?lInI#k(^wrup{gC6tfRQgMp z#_Cq7Kq21E#qf2nk1#3h)|_~iwErY=_99navE-?BM2Ny0%oOF^^nJm{VTF|v2D&q- zoj~-d={A)@-99Q%_K6VP0!~^K!2fTm_+CtWa7*Bz>$&(S*VqluDdklIMw(H#zRwH9 Zu+ju^k~kqgqOx(hRfc$)Le#PHe*vXdMoRzy literal 0 HcmV?d00001 diff --git a/bit_manipulations/build/utils_ctboard.d b/bit_manipulations/build/utils_ctboard.d new file mode 100644 index 0000000..44fca61 --- /dev/null +++ b/bit_manipulations/build/utils_ctboard.d @@ -0,0 +1,2 @@ +./build/utils_ctboard.o: app\utils_ctboard.c \ + C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h app\utils_ctboard.h diff --git a/bit_manipulations/build/utils_ctboard.o b/bit_manipulations/build/utils_ctboard.o new file mode 100644 index 0000000000000000000000000000000000000000..b5866a90fc5e3a0a6764a1e646ae29e09454c2d6 GIT binary patch literal 4032 zcmb_fU5p!76+ScmS#NgZ{Y#o`lLj|R+5*jV6EEXJG>+#;&DvhQOtaYBB-vnN~r67#B2z zBe+I26}1-S@^kq|p5s(atDsk*H6X`~bF@5H$d#w}9VpK@vskPs3!p}G{85ag z!1AEZ**r+i87`stB08fvWA5_BWwu88`6~&bYJN2O144Rcw z-tp6wN292Hw&KT~M%(XRt2}lxSZp->g@sM=d%fx)3ETZzBdJGz-1Hiwwz2!-!=P=Ib+l8E>0X8^71W_-}0w{ z$E1Rh4|*1Uc^%1I#I*L>j8wa`^YRjqIT>VZbi22S{1P^l7H#HC{~p}8bNoJ-n3l*I zB(gq;6~((07Zgt`a>bahsY@4x9|^=;h)8;?@zb7L8&&pY@%x_Lf%yUZl91;9I zM8v;W`J(zyD_>E*ru-2i;y0CVDfSg_Dn3I*+?SQVtoTjE?<)S7h`2YD|6K7mihor6 zI}vduT%7k55$l>$en|OY<;RpCSI&BHu~8k=--q=;ez$Vg1Nk}SA5wl%`BmjrAJR!zSYe+hKECyk<}zT&wx@dK^3{9=6^@yhhaFaVI9uPm(yS z50apt2KSTLrm@_B(;9b`B<^ z++j9l=4>+V49}cn#$`@4U0^$E{L{ASVIhfM7q9F)$J zUJ_w>n}(EdT({|%KYPa5r}2U@+y6n_|8y1)Y6e14W-`ovyo-Fy*fOi&ON6#@OkK#8 z6T#2@?gwMzhW!^gv{SW4EBKNjuPj;HD&QtAuG=iOBoi3gw)18#kC=LxQ9k4B$z+;jjQ!s|&1f`Wp0oJ}q-58o literal 0 HcmV?d00001