diff --git a/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c b/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c index b2e55608..70189783 100644 --- a/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c +++ b/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c @@ -16,7 +16,7 @@ *---------------------------------------------------------------------------*/ #include "tos.h" -#include "core_cm0plus.h" +#include "core_armv8mbl.h" __PORT__ void port_cpu_reset(void) { diff --git a/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator new file mode 100644 index 00000000..c25867c1 --- /dev/null +++ b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator @@ -0,0 +1,1837 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 115 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 0 + 1 + + -1 + -1 + + + -1 + -1 + + + 70 + 240 + 1671 + 1005 + + + + 0 + + 383 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000057433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C54656E63656E744F532D74696E795C617263685C61726D5C61726D2D76376D5C636F727465782D6D345C61726D63635C706F72745F732E530000000008706F72745F732E5300000000FFDC7800FFFFFFFF46433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C54656E63656E744F532D74696E795C6F73616C5C636D7369735F6F735C636D7369735F6F732E63000000000A636D7369735F6F732E6300000000BECEA100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000EC010000B30000007F0600003E030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + 53000000690000004301000034010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + 53000000690000006F010000AB020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002F02000090050000BF020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000001010000 + + + 16 + 53000000690000004301000034010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000320200008D050000A6020000 + + + 16 + 53000000690000004301000034010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000004301000034010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000004301000034010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + 53000000690000006F010000AB020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + 53000000690000006F010000AB020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000F2020000870500006E030000 + + + 16 + 53000000690000001B030000F9000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001B02000090050000BF020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + 53000000690000001B030000F9000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 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 + A004000063000000900500002B020000 + + + 16 + 53000000690000004301000034010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002F02000090050000AB020000 + + + 16 + 53000000690000001B030000F9000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 53000000690000001B030000F9000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A6020000 + + + 16 + 53000000690000006F010000AB020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F2020000900500006E030000 + + + 16 + 53000000690000001B030000F9000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + 53000000690000006F010000AB020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000004301000034010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000004301000034010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + 53000000690000006F010000AB020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + 53000000690000006F010000AB020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + 53000000690000004301000034010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000006E0300008705000081030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + 53000000690000004301000034010000 + + + + 3236 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000000000053000000690000001B030000F9000000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A00400002B020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000053000000690000004301000034010000A00400004F000000900500002B02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000DA020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000053000000690000004301000034010000000000004F000000F0000000DA0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000017020000900500001B02000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000053000000690000004301000034010000000000001B02000090050000BF02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC80200001B020000CC020000BF02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000DA02000087050000DE020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000053000000690000001B030000F900000000000000DE020000870500006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2391 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000015706F72745F736C6565705F6D6F64655F656E7465729600000000000000140015706F72745F736C6565705F6D6F64655F656E746572046F6C656409554152545F4F70656E0C746F735F73656D5F70656E6408706F72745F636C7A106B5F726479712E7072696F5F6D61736B14726561647971756575655F7072696F5F6D61726B16726561647971756575655F7072696F5F696E73657274097072696F5F6D61736B10706F72745F73636865645F73746172740F6370755F73636865645F73746172740E50656E6453565F48616E646C65720B6B5F6E6578745F7461736B0F746F735F7461736B5F63726561746515753867325F666F6E745F7538676C69625F345F7466104F4C45445F4949435F53746F7028293B10753878385F627974655F73775F693263034556360D48534D5F455649445F4261636B0748616C665F45760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 698 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001254656E63656E744F535F74696E795F4B3634960000000000000001001254656E63656E744F535F74696E795F4B3634000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 1 + + ..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S + 0 + 144 + 1 + 1 + + 0 + + + ..\..\..\..\osal\cmsis_os\cmsis_os.c + 0 + 1 + 1 + 1 + + 0 + + + + +
diff --git a/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvoptx b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvoptx index b3b425ec..59aa8162 100644 --- a/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvoptx +++ b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvoptx @@ -101,9 +101,7 @@ 0 0 1 - 0 - 0 - 4 + 3 @@ -560,7 +558,7 @@ tos/arch - 0 + 1 0 0 0 @@ -604,7 +602,7 @@ tos/kernel - 0 + 1 0 0 0 diff --git a/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvprojx b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvprojx index eb8f6cb8..4ed614e3 100644 --- a/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvprojx +++ b/board/NXP_Kinetis_K64/KEIL/hello_world/TencentOS_tiny.uvprojx @@ -184,7 +184,6 @@ 0 0 2 - 0 1 0 8 @@ -325,7 +324,6 @@ 0 0 1 - 1 0 1 1 diff --git a/board/NXP_LPC824Lite/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h b/board/NXP_LPC824Lite/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h new file mode 100644 index 00000000..152b308c --- /dev/null +++ b/board/NXP_LPC824Lite/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h @@ -0,0 +1,14 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'TencentOS_tiny' + * Target: 'TencentOS_tiny' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +#endif /* RTE_COMPONENTS_H */ diff --git a/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator new file mode 100644 index 00000000..b5162e1b --- /dev/null +++ b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator @@ -0,0 +1,1810 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 115 + + + 346 + Code Coverage + 770 160 + + + 204 + Performance Analyzer + 930 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 0 + 1 + + -32000 + -32000 + + + -1 + -1 + + + 93 + 395 + 1826 + 1028 + + + + 0 + + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F000000A0040000CA000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000006F010000D6020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000006F010000D6020000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000DB010000A004000056020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + B3030000660000009D04000001010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F400000063000000A0040000CA000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000DE0100009D0400003D020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000006F010000D6020000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000006F010000D6020000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0000000007030000870500006E030000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000C7010000A004000056020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000000A0300009D04000055030000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F400000063000000A0040000CA000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000009D040000B1000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 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 + B003000063000000A0040000D7010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000DB010000A004000042020000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000009D040000B1000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000009D040000B1000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000009D040000B1000000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000003D020000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0000000007030000A00400006E030000 + + + 16 + E1F9FFFF3700000031FCFFFFB2000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000000A0300009D04000055030000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000000A0300009D04000055030000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000000A0300009D04000055030000 + + + 16 + E1F9FFFF37000000CDFAFFFF25020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + B3030000660000009D0400003F010000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000006E0300008705000081030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000DE0100009D04000029020000 + + + 16 + E1F9FFFF37000000D1FAFFFF02010000 + + + + 3236 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000CA000000A0040000CE000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000E1F9FFFF3700000031FCFFFFB2000000F40000004F000000A0040000CA0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000D7010000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000E1F9FFFF37000000D1FAFFFF02010000B00300004F000000A0040000D701000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF720100004F00000076010000EF0200000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000E1F9FFFF37000000D1FAFFFF02010000000000004F00000072010000EF0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000C3010000A0040000C701000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000E1F9FFFF37000000D1FAFFFF0201000000000000C7010000A00400005602000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF50020000C7010000540200005602000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000EF02000087050000F3020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000E1F9FFFF3700000031FCFFFFB200000000000000F3020000870500006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2391 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000004000000000000000000000000000000000000010000000100000096000000020020500000000015706F72745F736C6565705F6D6F64655F656E7465729600000000000000140015706F72745F736C6565705F6D6F64655F656E746572046F6C656409554152545F4F70656E0C746F735F73656D5F70656E6408706F72745F636C7A106B5F726479712E7072696F5F6D61736B14726561647971756575655F7072696F5F6D61726B16726561647971756575655F7072696F5F696E73657274097072696F5F6D61736B10706F72745F73636865645F73746172740F6370755F73636865645F73746172740E50656E6453565F48616E646C65720B6B5F6E6578745F7461736B0F746F735F7461736B5F63726561746515753867325F666F6E745F7538676C69625F345F7466104F4C45445F4949435F53746F7028293B10753878385F627974655F73775F693263034556360D48534D5F455649445F4261636B0748616C665F45760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 690 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E54656E63656E744F535F74696E79960000000000000001000E54656E63656E744F535F74696E79000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + +
diff --git a/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvoptx b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvoptx index 3ff71778..7db2f626 100644 --- a/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvoptx +++ b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvoptx @@ -101,9 +101,7 @@ 0 0 1 - 0 - 0 - 3 + 2 diff --git a/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvprojx b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvprojx index 0a89a9a5..3325a818 100644 --- a/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvprojx +++ b/board/NXP_LPC824Lite/KEIL/hello_world/TencentOS_tiny.uvprojx @@ -184,7 +184,6 @@ 0 0 0 - 0 0 0 8 @@ -325,7 +324,6 @@ 0 0 1 - 0 0 1 1 diff --git a/board/Nordic_NRF52832/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h b/board/Nordic_NRF52832/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h index 62ca151f..152b308c 100644 --- a/board/Nordic_NRF52832/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h +++ b/board/Nordic_NRF52832/KEIL/hello_world/RTE/_TencentOS_tiny/RTE_Components.h @@ -11,10 +11,4 @@ #define RTE_COMPONENTS_H -/* - * Define the Device Header File: - */ -#define CMSIS_device_header "nrf.h" - - #endif /* RTE_COMPONENTS_H */ diff --git a/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator new file mode 100644 index 00000000..f8fb4b30 --- /dev/null +++ b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvguix.Administrator @@ -0,0 +1,1828 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 115 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser - *** Not Enabled *** + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 0 + 1 + + -32000 + -32000 + + + -1 + -1 + + + 48 + 199 + 1630 + 983 + + + + 0 + + 293 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000005B433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C54656E63656E744F532D74696E795C626F6172645C4E6F726469635F4E524635323833325C544F535F434F4E4649475C746F735F636F6E6669672E68000000000C746F735F636F6E6669672E6800000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000C30100009D0000005606000028030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + D0000000E60000009803000076010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002F02000090050000BF020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000001010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + D0000000E60000009803000076010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000320200008D050000A6020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E60000009803000076010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000C1020000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000F2020000870500006E030000 + + + 16 + D0000000E60000009803000076010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001B02000090050000BF020000 + + + 16 + D0000000E60000009803000076010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + D0000000E60000009803000076010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + D0000000E60000009803000076010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D0000000E60000009803000076010000 + + + + 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 + A004000063000000900500002B020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002F02000090050000AB020000 + + + 16 + D0000000E60000009803000076010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D0000000E60000009803000076010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D0000000E60000009803000076010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D0000000E60000009803000076010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A6020000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F2020000900500006E030000 + + + 16 + D0000000E60000009803000076010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000F50200008D05000055030000 + + + 16 + D0000000E6000000EC01000028030000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007E010000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000006E0300008705000081030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000320200008D05000092020000 + + + 16 + D0000000E6000000C0010000B1010000 + + + + 3258 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000D0000000E60000009803000076010000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A00400002B020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000D0000000E6000000C0010000B1010000A00400004F000000900500002B02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000DA020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D0000000E6000000C0010000B1010000000000004F000000F0000000DA0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000017020000900500001B02000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000D0000000E6000000C0010000B1010000000000001B02000090050000BF02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC80200001B020000CC020000BF02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000DA02000087050000DE020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000D0000000E6000000980300007601000000000000DE020000870500006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2391 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000015706F72745F736C6565705F6D6F64655F656E7465729600000000000000140015706F72745F736C6565705F6D6F64655F656E746572046F6C656409554152545F4F70656E0C746F735F73656D5F70656E6408706F72745F636C7A106B5F726479712E7072696F5F6D61736B14726561647971756575655F7072696F5F6D61726B16726561647971756575655F7072696F5F696E73657274097072696F5F6D61736B10706F72745F73636865645F73746172740F6370755F73636865645F73746172740E50656E6453565F48616E646C65720B6B5F6E6578745F7461736B0F746F735F7461736B5F63726561746515753867325F666F6E745F7538676C69625F345F7466104F4C45445F4949435F53746F7028293B10753878385F627974655F73775F693263034556360D48534D5F455649445F4261636B0748616C665F45760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 690 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E54656E63656E744F535F74696E79960000000000000001000E54656E63656E744F535F74696E79000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + ..\..\TOS_CONFIG\tos_config.h + 40 + 1 + 20 + 1 + + 0 + + + + +
diff --git a/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvoptx b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvoptx index ab365b7b..3a63f807 100644 --- a/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvoptx +++ b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvoptx @@ -101,9 +101,7 @@ 0 0 1 - 0 - 0 - 6 + 5 @@ -616,7 +614,7 @@ CONFIG - 0 + 1 0 0 0 diff --git a/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvprojx b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvprojx index a60c400a..04308f31 100644 --- a/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvprojx +++ b/board/Nordic_NRF52832/KEIL/hello_world/TencentOS_tiny.uvprojx @@ -184,7 +184,6 @@ 0 0 2 - 0 0 0 8 @@ -325,7 +324,6 @@ 0 0 1 - 0 0 1 1 diff --git a/board/Nuvoton_M251/STARTUP/Include/M251.h b/board/Nuvoton_M251/BSP/Inc/M251.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/M251.h rename to board/Nuvoton_M251/BSP/Inc/M251.h diff --git a/board/Nuvoton_M251/STARTUP/Include/NuMicro.h b/board/Nuvoton_M251/BSP/Inc/NuMicro.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/NuMicro.h rename to board/Nuvoton_M251/BSP/Inc/NuMicro.h diff --git a/board/Nuvoton_M251/STARTUP/Include/acmp_reg.h b/board/Nuvoton_M251/BSP/Inc/acmp_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/acmp_reg.h rename to board/Nuvoton_M251/BSP/Inc/acmp_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/bpwm_reg.h b/board/Nuvoton_M251/BSP/Inc/bpwm_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/bpwm_reg.h rename to board/Nuvoton_M251/BSP/Inc/bpwm_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/clk_reg.h b/board/Nuvoton_M251/BSP/Inc/clk_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/clk_reg.h rename to board/Nuvoton_M251/BSP/Inc/clk_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/crc_reg.h b/board/Nuvoton_M251/BSP/Inc/crc_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/crc_reg.h rename to board/Nuvoton_M251/BSP/Inc/crc_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/crypto_reg.h b/board/Nuvoton_M251/BSP/Inc/crypto_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/crypto_reg.h rename to board/Nuvoton_M251/BSP/Inc/crypto_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/dac_reg.h b/board/Nuvoton_M251/BSP/Inc/dac_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/dac_reg.h rename to board/Nuvoton_M251/BSP/Inc/dac_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/eadc_reg.h b/board/Nuvoton_M251/BSP/Inc/eadc_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/eadc_reg.h rename to board/Nuvoton_M251/BSP/Inc/eadc_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/ebi_reg.h b/board/Nuvoton_M251/BSP/Inc/ebi_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/ebi_reg.h rename to board/Nuvoton_M251/BSP/Inc/ebi_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/fmc_reg.h b/board/Nuvoton_M251/BSP/Inc/fmc_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/fmc_reg.h rename to board/Nuvoton_M251/BSP/Inc/fmc_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/gpio_reg.h b/board/Nuvoton_M251/BSP/Inc/gpio_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/gpio_reg.h rename to board/Nuvoton_M251/BSP/Inc/gpio_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/i2c_reg.h b/board/Nuvoton_M251/BSP/Inc/i2c_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/i2c_reg.h rename to board/Nuvoton_M251/BSP/Inc/i2c_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/opa_reg.h b/board/Nuvoton_M251/BSP/Inc/opa_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/opa_reg.h rename to board/Nuvoton_M251/BSP/Inc/opa_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/pdma_reg.h b/board/Nuvoton_M251/BSP/Inc/pdma_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/pdma_reg.h rename to board/Nuvoton_M251/BSP/Inc/pdma_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/psio_reg.h b/board/Nuvoton_M251/BSP/Inc/psio_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/psio_reg.h rename to board/Nuvoton_M251/BSP/Inc/psio_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/pwm_reg.h b/board/Nuvoton_M251/BSP/Inc/pwm_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/pwm_reg.h rename to board/Nuvoton_M251/BSP/Inc/pwm_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/qspi_reg.h b/board/Nuvoton_M251/BSP/Inc/qspi_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/qspi_reg.h rename to board/Nuvoton_M251/BSP/Inc/qspi_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/rtc_reg.h b/board/Nuvoton_M251/BSP/Inc/rtc_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/rtc_reg.h rename to board/Nuvoton_M251/BSP/Inc/rtc_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/sc_reg.h b/board/Nuvoton_M251/BSP/Inc/sc_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/sc_reg.h rename to board/Nuvoton_M251/BSP/Inc/sc_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/spi_reg.h b/board/Nuvoton_M251/BSP/Inc/spi_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/spi_reg.h rename to board/Nuvoton_M251/BSP/Inc/spi_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/sys_reg.h b/board/Nuvoton_M251/BSP/Inc/sys_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/sys_reg.h rename to board/Nuvoton_M251/BSP/Inc/sys_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/system_M251.h b/board/Nuvoton_M251/BSP/Inc/system_M251.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/system_M251.h rename to board/Nuvoton_M251/BSP/Inc/system_M251.h diff --git a/board/Nuvoton_M251/STARTUP/Include/timer_reg.h b/board/Nuvoton_M251/BSP/Inc/timer_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/timer_reg.h rename to board/Nuvoton_M251/BSP/Inc/timer_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/uart_reg.h b/board/Nuvoton_M251/BSP/Inc/uart_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/uart_reg.h rename to board/Nuvoton_M251/BSP/Inc/uart_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/ui2c_reg.h b/board/Nuvoton_M251/BSP/Inc/ui2c_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/ui2c_reg.h rename to board/Nuvoton_M251/BSP/Inc/ui2c_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/usbd_reg.h b/board/Nuvoton_M251/BSP/Inc/usbd_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/usbd_reg.h rename to board/Nuvoton_M251/BSP/Inc/usbd_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/uspi_reg.h b/board/Nuvoton_M251/BSP/Inc/uspi_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/uspi_reg.h rename to board/Nuvoton_M251/BSP/Inc/uspi_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/uuart_reg.h b/board/Nuvoton_M251/BSP/Inc/uuart_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/uuart_reg.h rename to board/Nuvoton_M251/BSP/Inc/uuart_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/wdt_reg.h b/board/Nuvoton_M251/BSP/Inc/wdt_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/wdt_reg.h rename to board/Nuvoton_M251/BSP/Inc/wdt_reg.h diff --git a/board/Nuvoton_M251/STARTUP/Include/wwdt_reg.h b/board/Nuvoton_M251/BSP/Inc/wwdt_reg.h similarity index 100% rename from board/Nuvoton_M251/STARTUP/Include/wwdt_reg.h rename to board/Nuvoton_M251/BSP/Inc/wwdt_reg.h diff --git a/board/Nuvoton_M251/Project/main.c b/board/Nuvoton_M251/BSP/Src/main.c similarity index 99% rename from board/Nuvoton_M251/Project/main.c rename to board/Nuvoton_M251/BSP/Src/main.c index 6131a942..a3ff2469 100644 --- a/board/Nuvoton_M251/Project/main.c +++ b/board/Nuvoton_M251/BSP/Src/main.c @@ -69,7 +69,6 @@ void task1_fun(void *Parameter) } -//task2 function void task2_task(void *Parameter) { diff --git a/board/Nuvoton_M251/STARTUP/system_M251.c b/board/Nuvoton_M251/BSP/Src/system_M251.c similarity index 95% rename from board/Nuvoton_M251/STARTUP/system_M251.c rename to board/Nuvoton_M251/BSP/Src/system_M251.c index 47377129..95efa0d5 100644 --- a/board/Nuvoton_M251/STARTUP/system_M251.c +++ b/board/Nuvoton_M251/BSP/Src/system_M251.c @@ -140,9 +140,6 @@ void Uart0DefaultMPF(void) { /* Set GPB multi-function pins for UART0 RXD and TXD */ - // SYS->GPB_MFPH = (SYS->GPB_MFPH & ~SYS_GPB_MFPH_PB12MFP_Msk) | SYS_GPB_MFPH_PB12MFP_UART0_RXD; - // SYS->GPB_MFPH = (SYS->GPB_MFPH & ~SYS_GPB_MFPH_PB13MFP_Msk) | SYS_GPB_MFPH_PB13MFP_UART0_TXD; - SYS->GPA_MFPL = (SYS->GPA_MFPL & ~SYS_GPA_MFPL_PA0MFP_Msk) | SYS_GPA_MFPL_PA0MFP_UART0_RXD; SYS->GPA_MFPL = (SYS->GPA_MFPL & ~SYS_GPA_MFPL_PA1MFP_Msk) | SYS_GPA_MFPL_PA1MFP_UART0_TXD; diff --git a/board/Nuvoton_M251/CMSIS/cmsis_version.h b/board/Nuvoton_M251/CMSIS/cmsis_version.h deleted file mode 100644 index d458a6c8..00000000 --- a/board/Nuvoton_M251/CMSIS/cmsis_version.h +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************//** - * @file cmsis_version.h - * @brief CMSIS Core(M) Version definitions - * @version V5.0.2 - * @date 19. April 2017 - ******************************************************************************/ -/* - * Copyright (c) 2009-2017 ARM Limited. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CMSIS_VERSION_H -#define __CMSIS_VERSION_H - -/* CMSIS Version definitions */ -#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ -#define __CM_CMSIS_VERSION_SUB ( 0U) /*!< [15:0] CMSIS Core(M) sub version */ -#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ - __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ -#endif diff --git a/board/Nuvoton_M251/CMSIS/core_armv8mbl.h b/board/Nuvoton_M251/CMSIS/core_armv8mbl.h deleted file mode 100644 index 13003e1c..00000000 --- a/board/Nuvoton_M251/CMSIS/core_armv8mbl.h +++ /dev/null @@ -1,1878 +0,0 @@ -/**************************************************************************//** - * @file core_armv8mbl.h - * @brief CMSIS ARMv8MBL Core Peripheral Access Layer Header File - * @version V5.0.2 - * @date 19. April 2017 - ******************************************************************************/ -/* - * Copyright (c) 2009-2017 ARM Limited. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_ARMV8MBL_H_GENERIC -#define __CORE_ARMV8MBL_H_GENERIC - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -/** - \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** - \ingroup Cortex_ARMv8MBL - @{ - */ - -#include "cmsis_version.h" - -/* CMSIS definitions */ -#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ -#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ -#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ - __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ - -#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ - -/** __FPU_USED indicates whether an FPU is used or not. - This core does not support an FPU at all -*/ -#define __FPU_USED 0U - -#if defined ( __CC_ARM ) - #if defined __TARGET_FPU_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __GNUC__ ) - #if defined (__VFP_FP__) && !defined(__SOFTFP__) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __ICCARM__ ) - #if defined __ARMVFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TI_ARM__ ) - #if defined __TI_VFP_SUPPORT__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TASKING__ ) - #if defined __FPU_VFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __CSMC__ ) - #if ( __CSMC__ & 0x400U) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#endif - -#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_ARMV8MBL_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_ARMV8MBL_H_DEPENDANT -#define __CORE_ARMV8MBL_H_DEPENDANT - -#ifdef __cplusplus - extern "C" { -#endif - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __ARMv8MBL_REV - #define __ARMv8MBL_REV 0x0000U - #warning "__ARMv8MBL_REV not defined in device header file; using default!" - #endif - - #ifndef __FPU_PRESENT - #define __FPU_PRESENT 0U - #warning "__FPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MPU_PRESENT - #define __MPU_PRESENT 0U - #warning "__MPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __SAUREGION_PRESENT - #define __SAUREGION_PRESENT 0U - #warning "__SAUREGION_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __VTOR_PRESENT - #define __VTOR_PRESENT 0U - #warning "__VTOR_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 2U - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0U - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif - - #ifndef __ETM_PRESENT - #define __ETM_PRESENT 0U - #warning "__ETM_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MTB_PRESENT - #define __MTB_PRESENT 0U - #warning "__MTB_PRESENT not defined in device header file; using default!" - #endif - -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/* following defines should be used for structure members */ -#define __IM volatile const /*! Defines 'read only' structure member permissions */ -#define __OM volatile /*! Defines 'write only' structure member permissions */ -#define __IOM volatile /*! Defines 'read / write' structure member permissions */ - -/*@} end of group ARMv8MBL */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - - Core Debug Register - - Core MPU Register - - Core SAU Register - ******************************************************************************/ -/** - \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** - \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { - uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - -/* APSR Register Definitions */ -#define APSR_N_Pos 31U /*!< APSR: N Position */ -#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ - -#define APSR_Z_Pos 30U /*!< APSR: Z Position */ -#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ - -#define APSR_C_Pos 29U /*!< APSR: C Position */ -#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ - -#define APSR_V_Pos 28U /*!< APSR: V Position */ -#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ - - -/** - \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - -/* IPSR Register Definitions */ -#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ -#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ - - -/** - \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - -/* xPSR Register Definitions */ -#define xPSR_N_Pos 31U /*!< xPSR: N Position */ -#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ - -#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ -#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ - -#define xPSR_C_Pos 29U /*!< xPSR: C Position */ -#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ - -#define xPSR_V_Pos 28U /*!< xPSR: V Position */ -#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ - -#define xPSR_T_Pos 24U /*!< xPSR: T Position */ -#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ - -#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ -#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ - - -/** - \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ - uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ - uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/* CONTROL Register Definitions */ -#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ -#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ - -#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ -#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ - -/*@} end of group CMSIS_CORE */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** - \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[16U]; - __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[16U]; - __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[16U]; - __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[16U]; - __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ - uint32_t RESERVED4[16U]; - __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ - uint32_t RESERVED5[16U]; - __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ -} NVIC_Type; - -/*@} end of group CMSIS_NVIC */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** - \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ -#else - uint32_t RESERVED0; -#endif - __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - uint32_t RESERVED1; - __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ - __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ -#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ - -#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ -#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ -#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ - -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) -/* SCB Vector Table Offset Register Definitions */ -#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ -#endif - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ -#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ - -#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ -#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ - -#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ -#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ -#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ -#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ - -#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ -#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ - -#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ -#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ - -#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ -#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ -#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ -#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ - -#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ -#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** - \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) - \brief Type definitions for the Data Watchpoint and Trace (DWT) - @{ - */ - -/** - \brief Structure type to access the Data Watchpoint and Trace Register (DWT). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ - uint32_t RESERVED0[6U]; - __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ - __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ - uint32_t RESERVED1[1U]; - __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ - uint32_t RESERVED2[1U]; - __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ - uint32_t RESERVED3[1U]; - __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ - uint32_t RESERVED4[1U]; - __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ - uint32_t RESERVED5[1U]; - __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ - uint32_t RESERVED6[1U]; - __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ - uint32_t RESERVED7[1U]; - __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ - uint32_t RESERVED8[1U]; - __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ - uint32_t RESERVED9[1U]; - __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ - uint32_t RESERVED10[1U]; - __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ - uint32_t RESERVED11[1U]; - __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ - uint32_t RESERVED12[1U]; - __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ - uint32_t RESERVED13[1U]; - __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ - uint32_t RESERVED14[1U]; - __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ - uint32_t RESERVED15[1U]; - __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ - uint32_t RESERVED16[1U]; - __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ - uint32_t RESERVED17[1U]; - __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ - uint32_t RESERVED18[1U]; - __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ - uint32_t RESERVED19[1U]; - __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ - uint32_t RESERVED20[1U]; - __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ - uint32_t RESERVED21[1U]; - __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ - uint32_t RESERVED22[1U]; - __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ - uint32_t RESERVED23[1U]; - __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ - uint32_t RESERVED24[1U]; - __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ - uint32_t RESERVED25[1U]; - __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ - uint32_t RESERVED26[1U]; - __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ - uint32_t RESERVED27[1U]; - __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ - uint32_t RESERVED28[1U]; - __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ - uint32_t RESERVED29[1U]; - __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ - uint32_t RESERVED30[1U]; - __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ - uint32_t RESERVED31[1U]; - __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ -} DWT_Type; - -/* DWT Control Register Definitions */ -#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ -#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ - -#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ -#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ - -#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ -#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ - -#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ -#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ - -#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ -#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ - -/* DWT Comparator Function Register Definitions */ -#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ -#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ - -#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ -#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ - -#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ -#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ - -#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ -#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ - -#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ -#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ - -/*@}*/ /* end of group CMSIS_DWT */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_TPI Trace Port Interface (TPI) - \brief Type definitions for the Trace Port Interface (TPI) - @{ - */ - -/** - \brief Structure type to access the Trace Port Interface Register (TPI). - */ -typedef struct -{ - __IOM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ - __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ - uint32_t RESERVED0[2U]; - __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ - uint32_t RESERVED1[55U]; - __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ - uint32_t RESERVED2[131U]; - __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ - __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ - __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ - uint32_t RESERVED3[759U]; - __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ - __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ - __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ - uint32_t RESERVED4[1U]; - __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ - __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ - __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ - uint32_t RESERVED5[39U]; - __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ - __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ - uint32_t RESERVED7[8U]; - __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ - __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ -} TPI_Type; - -/* TPI Asynchronous Clock Prescaler Register Definitions */ -#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ -#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ - -/* TPI Selected Pin Protocol Register Definitions */ -#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ -#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ - -/* TPI Formatter and Flush Status Register Definitions */ -#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ -#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ - -#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ -#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ - -#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ -#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ - -#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ -#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ - -/* TPI Formatter and Flush Control Register Definitions */ -#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ -#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ - -#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ -#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ - -/* TPI TRIGGER Register Definitions */ -#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ -#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ - -/* TPI Integration ETM Data Register Definitions (FIFO0) */ -#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ -#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ - -#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ -#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ - -#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ -#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ - -#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ -#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ - -#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ -#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ - -#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ -#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ - -#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ -#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ - -/* TPI ITATBCTR2 Register Definitions */ -#define TPI_ITATBCTR2_ATREADY_Pos 0U /*!< TPI ITATBCTR2: ATREADY Position */ -#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/) /*!< TPI ITATBCTR2: ATREADY Mask */ - -/* TPI Integration ITM Data Register Definitions (FIFO1) */ -#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ -#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ - -#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ -#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ - -#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ -#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ - -#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ -#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ - -#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ -#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ - -#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ -#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ - -#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ -#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ - -/* TPI ITATBCTR0 Register Definitions */ -#define TPI_ITATBCTR0_ATREADY_Pos 0U /*!< TPI ITATBCTR0: ATREADY Position */ -#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/) /*!< TPI ITATBCTR0: ATREADY Mask */ - -/* TPI Integration Mode Control Register Definitions */ -#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ -#define TPI_ITCTRL_Mode_Msk (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ - -/* TPI DEVID Register Definitions */ -#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ -#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ - -#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ -#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ - -#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ -#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ - -#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ -#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ - -#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ -#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ - -#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ -#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ - -/* TPI DEVTYPE Register Definitions */ -#define TPI_DEVTYPE_MajorType_Pos 4U /*!< TPI DEVTYPE: MajorType Position */ -#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ - -#define TPI_DEVTYPE_SubType_Pos 0U /*!< TPI DEVTYPE: SubType Position */ -#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ - -/*@}*/ /* end of group CMSIS_TPI */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_MPU Memory Protection Unit (MPU) - \brief Type definitions for the Memory Protection Unit (MPU) - @{ - */ - -/** - \brief Structure type to access the Memory Protection Unit (MPU). - */ -typedef struct -{ - __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ - __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ - __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ - __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ - __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ - uint32_t RESERVED0[7U]; - __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ - __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ -} MPU_Type; - -/* MPU Type Register Definitions */ -#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register Definitions */ -#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register Definitions */ -#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register Definitions */ -#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ -#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ - -#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ -#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ - -#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ -#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ - -#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ -#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ - -/* MPU Region Limit Address Register Definitions */ -#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ -#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ - -#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ -#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ - -#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ -#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ - -/* MPU Memory Attribute Indirection Register 0 Definitions */ -#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ -#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ - -#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ -#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ - -#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ -#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ - -#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ -#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ - -/* MPU Memory Attribute Indirection Register 1 Definitions */ -#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ -#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ - -#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ -#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ - -#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ -#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ - -#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ -#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ - -/*@} end of group CMSIS_MPU */ -#endif - - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SAU Security Attribution Unit (SAU) - \brief Type definitions for the Security Attribution Unit (SAU) - @{ - */ - -/** - \brief Structure type to access the Security Attribution Unit (SAU). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ - __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ -#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) - __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ - __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ - __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ -#endif -} SAU_Type; - -/* SAU Control Register Definitions */ -#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ -#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ - -#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ -#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ - -/* SAU Type Register Definitions */ -#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ -#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ - -#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) -/* SAU Region Number Register Definitions */ -#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ -#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ - -/* SAU Region Base Address Register Definitions */ -#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ -#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ - -/* SAU Region Limit Address Register Definitions */ -#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ -#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ - -#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ -#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ - -#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ -#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ - -#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ - -/*@} end of group CMSIS_SAU */ -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Type definitions for the Core Debug Registers - @{ - */ - -/** - \brief Structure type to access the Core Debug Register (CoreDebug). - */ -typedef struct -{ - __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ - __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ - __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ - __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ - uint32_t RESERVED4[1U]; - __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ - __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register Definitions */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ -#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register Definitions */ -#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ -#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ - -/* Debug Authentication Control Register Definitions */ -#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ -#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ - -#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ -#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ - -#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ -#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ - -#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ -#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ - -/* Debug Security Control and Status Register Definitions */ -#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ -#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ - -#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ -#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ - -#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ -#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ - -/*@} end of group CMSIS_CoreDebug */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_bitfield Core register bit field macros - \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). - @{ - */ - -/** - \brief Mask and shift a bit field value for use in a register bit range. - \param[in] field Name of the register bit field. - \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. - \return Masked and shifted value. -*/ -#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) - -/** - \brief Mask and shift a register value to extract a bit filed value. - \param[in] field Name of the register bit field. - \param[in] value Value of register. This parameter is interpreted as an uint32_t type. - \return Masked and shifted bit field value. -*/ -#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) - -/*@} end of group CMSIS_core_bitfield */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Core Hardware */ - #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ - #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ - #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ - #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ - #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ - #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ - #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - - - #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ - #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ - #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ - #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ - #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ - #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ - - #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) - #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ - #endif - - #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ - #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ - #endif - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ - #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ - #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ - #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ - #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ - - #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ - #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ - #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ - #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ - - #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) - #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ - #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ - #endif - -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Register Access Functions - ******************************************************************************/ -/** - \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ - -#ifdef CMSIS_NVIC_VIRTUAL - #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE - #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" - #endif - #include CMSIS_NVIC_VIRTUAL_HEADER_FILE -#else -/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for ARMv8-M Baseline */ -/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for ARMv8-M Baseline */ - #define NVIC_EnableIRQ __NVIC_EnableIRQ - #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ - #define NVIC_DisableIRQ __NVIC_DisableIRQ - #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ - #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ - #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ - #define NVIC_GetActive __NVIC_GetActive - #define NVIC_SetPriority __NVIC_SetPriority - #define NVIC_GetPriority __NVIC_GetPriority - #define NVIC_SystemReset __NVIC_SystemReset -#endif /* CMSIS_NVIC_VIRTUAL */ - -#ifdef CMSIS_VECTAB_VIRTUAL - #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE - #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" - #endif - #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE -#else - #define NVIC_SetVector __NVIC_SetVector - #define NVIC_GetVector __NVIC_GetVector -#endif /* (CMSIS_VECTAB_VIRTUAL) */ - -#define NVIC_USER_IRQ_OFFSET 16 - - -/* Interrupt Priorities are WORD accessible only under ARMv6M */ -/* The following MACROS handle generation of the register offset and byte masks */ -#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) -#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) -#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) - - -/** - \brief Enable Interrupt - \details Enables a device specific interrupt in the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Interrupt Enable status - \details Returns a device specific interrupt enable status from the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt is not enabled. - \return 1 Interrupt is enabled. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Disable Interrupt - \details Disables a device specific interrupt in the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - __DSB(); - __ISB(); - } -} - - -/** - \brief Get Pending Interrupt - \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Pending Interrupt - \details Sets the pending bit of a device specific interrupt in the NVIC pending register. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Clear Pending Interrupt - \details Clears the pending bit of a device specific interrupt in the NVIC pending register. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Active Interrupt - \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Interrupt Target State - \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - \return 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Interrupt Target State - \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))); - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Clear Interrupt Target State - \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))); - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - - -/** - \brief Set Interrupt Priority - \details Sets the priority of a device specific interrupt or a processor exception. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - \note The priority cannot be set for every processor exception. - */ -__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } - else - { - SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - - -/** - \brief Get Interrupt Priority - \details Reads the priority of a device specific interrupt or a processor exception. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Interrupt Priority. - Value is aligned automatically to the implemented priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) -{ - - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } - else - { - return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } -} - - -/** - \brief Set Interrupt Vector - \details Sets an interrupt vector in SRAM based interrupt vector table. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - VTOR must been relocated to SRAM before. - If VTOR is not present address 0 must be mapped to SRAM. - \param [in] IRQn Interrupt number - \param [in] vector Address of interrupt handler function - */ -__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) -{ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - uint32_t *vectors = (uint32_t *)SCB->VTOR; -#else - uint32_t *vectors = (uint32_t *)0x0U; -#endif - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \brief Get Interrupt Vector - \details Reads an interrupt vector from interrupt vector table. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Address of interrupt handler function - */ -__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) -{ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - uint32_t *vectors = (uint32_t *)SCB->VTOR; -#else - uint32_t *vectors = (uint32_t *)0x0U; -#endif - return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; -} - - -/** - \brief System Reset - \details Initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void __NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - SCB_AIRCR_SYSRESETREQ_Msk); - __DSB(); /* Ensure completion of memory access */ - - for(;;) /* wait until reset */ - { - __NOP(); - } -} - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief Enable Interrupt (non-secure) - \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Interrupt Enable status (non-secure) - \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt is not enabled. - \return 1 Interrupt is enabled. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Disable Interrupt (non-secure) - \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Pending Interrupt (non-secure) - \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } -} - - -/** - \brief Set Pending Interrupt (non-secure) - \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Clear Pending Interrupt (non-secure) - \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Active Interrupt (non-secure) - \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Interrupt Priority (non-secure) - \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - \note The priority cannot be set for every non-secure processor exception. - */ -__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } - else - { - SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - - -/** - \brief Get Interrupt Priority (non-secure) - \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) -{ - - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } - else - { - return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } -} -#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ - -/*@} end of CMSIS_Core_NVICFunctions */ - - -/* ########################## FPU functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_FpuFunctions FPU Functions - \brief Function that provides FPU type. - @{ - */ - -/** - \brief get FPU type - \details returns the FPU type - \returns - - \b 0: No FPU - - \b 1: Single precision FPU - - \b 2: Double + Single precision FPU - */ -__STATIC_INLINE uint32_t SCB_GetFPUType(void) -{ - return 0U; /* No FPU */ -} - - -/*@} end of CMSIS_Core_FpuFunctions */ - - - -/* ########################## SAU functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SAUFunctions SAU Functions - \brief Functions that configure the SAU. - @{ - */ - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - -/** - \brief Enable SAU - \details Enables the Security Attribution Unit (SAU). - */ -__STATIC_INLINE void TZ_SAU_Enable(void) -{ - SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); -} - - - -/** - \brief Disable SAU - \details Disables the Security Attribution Unit (SAU). - */ -__STATIC_INLINE void TZ_SAU_Disable(void) -{ - SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); -} - -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - -/*@} end of CMSIS_Core_SAUFunctions */ - - - - -/* ################################## SysTick function ############################################ */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) - -/** - \brief System Tick Configuration - \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - \param [in] ticks Number of ticks between two interrupts. - \return 0 Function succeeded. - \return 1 Function failed. - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - { - return (1UL); /* Reload value impossible */ - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ -} - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief System Tick Configuration (non-secure) - \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - \param [in] ticks Number of ticks between two interrupts. - \return 0 Function succeeded. - \return 1 Function failed. - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function TZ_SysTick_Config_NS is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - - */ -__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) -{ - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - { - return (1UL); /* Reload value impossible */ - } - - SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ - SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ -} -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - -#endif - -/*@} end of CMSIS_Core_SysTickFunctions */ - - - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ diff --git a/board/Nuvoton_M251/CMSIS/core_cm23.h b/board/Nuvoton_M251/CMSIS/core_cm23.h deleted file mode 100644 index b97fa9dd..00000000 --- a/board/Nuvoton_M251/CMSIS/core_cm23.h +++ /dev/null @@ -1,1878 +0,0 @@ -/**************************************************************************//** - * @file core_cm23.h - * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File - * @version V5.0.2 - * @date 19. April 2017 - ******************************************************************************/ -/* - * Copyright (c) 2009-2017 ARM Limited. All rights reserved. - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CM23_H_GENERIC -#define __CORE_CM23_H_GENERIC - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -/** - \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions - CMSIS violates the following MISRA-C:2004 rules: - - \li Required Rule 8.5, object/function definition in header file.
- Function definitions in header files are used to allow 'inlining'. - - \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
- Unions are used for effective representation of core registers. - - \li Advisory Rule 19.7, Function-like macro defined.
- Function-like macros are used to allow more efficient code. - */ - - -/******************************************************************************* - * CMSIS definitions - ******************************************************************************/ -/** - \ingroup Cortex_M23 - @{ - */ - -#include "cmsis_version.h" - -/* CMSIS definitions */ -#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ -#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ -#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ - __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ - -#define __CORTEX_M (23U) /*!< Cortex-M Core */ - -/** __FPU_USED indicates whether an FPU is used or not. - This core does not support an FPU at all -*/ -#define __FPU_USED 0U - -#if defined ( __CC_ARM ) - #if defined __TARGET_FPU_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #if defined __ARM_PCS_VFP - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __GNUC__ ) - #if defined (__VFP_FP__) && !defined(__SOFTFP__) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __ICCARM__ ) - #if defined __ARMVFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TI_ARM__ ) - #if defined __TI_VFP_SUPPORT__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __TASKING__ ) - #if defined __FPU_VFP__ - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#elif defined ( __CSMC__ ) - #if ( __CSMC__ & 0x400U) - #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" - #endif - -#endif - -#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_CM23_H_GENERIC */ - -#ifndef __CMSIS_GENERIC - -#ifndef __CORE_CM23_H_DEPENDANT -#define __CORE_CM23_H_DEPENDANT - -#ifdef __cplusplus - extern "C" { -#endif - -/* check device defines and use defaults */ -#if defined __CHECK_DEVICE_DEFINES - #ifndef __CM23_REV - #define __CM23_REV 0x0000U - #warning "__CM23_REV not defined in device header file; using default!" - #endif - - #ifndef __FPU_PRESENT - #define __FPU_PRESENT 0U - #warning "__FPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MPU_PRESENT - #define __MPU_PRESENT 0U - #warning "__MPU_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __SAUREGION_PRESENT - #define __SAUREGION_PRESENT 0U - #warning "__SAUREGION_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __VTOR_PRESENT - #define __VTOR_PRESENT 0U - #warning "__VTOR_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __NVIC_PRIO_BITS - #define __NVIC_PRIO_BITS 2U - #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" - #endif - - #ifndef __Vendor_SysTickConfig - #define __Vendor_SysTickConfig 0U - #warning "__Vendor_SysTickConfig not defined in device header file; using default!" - #endif - - #ifndef __ETM_PRESENT - #define __ETM_PRESENT 0U - #warning "__ETM_PRESENT not defined in device header file; using default!" - #endif - - #ifndef __MTB_PRESENT - #define __MTB_PRESENT 0U - #warning "__MTB_PRESENT not defined in device header file; using default!" - #endif - -#endif - -/* IO definitions (access restrictions to peripheral registers) */ -/** - \defgroup CMSIS_glob_defs CMSIS Global Defines - - IO Type Qualifiers are used - \li to specify the access to peripheral variables. - \li for automatic generation of peripheral register debug information. -*/ -#ifdef __cplusplus - #define __I volatile /*!< Defines 'read only' permissions */ -#else - #define __I volatile const /*!< Defines 'read only' permissions */ -#endif -#define __O volatile /*!< Defines 'write only' permissions */ -#define __IO volatile /*!< Defines 'read / write' permissions */ - -/* following defines should be used for structure members */ -#define __IM volatile const /*! Defines 'read only' structure member permissions */ -#define __OM volatile /*! Defines 'write only' structure member permissions */ -#define __IOM volatile /*! Defines 'read / write' structure member permissions */ - -/*@} end of group Cortex_M23 */ - - - -/******************************************************************************* - * Register Abstraction - Core Register contain: - - Core Register - - Core NVIC Register - - Core SCB Register - - Core SysTick Register - - Core Debug Register - - Core MPU Register - - Core SAU Register - ******************************************************************************/ -/** - \defgroup CMSIS_core_register Defines and Type Definitions - \brief Type definitions and defines for Cortex-M processor based devices. -*/ - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CORE Status and Control Registers - \brief Core Register type definitions. - @{ - */ - -/** - \brief Union type to access the Application Program Status Register (APSR). - */ -typedef union -{ - struct - { - uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} APSR_Type; - -/* APSR Register Definitions */ -#define APSR_N_Pos 31U /*!< APSR: N Position */ -#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ - -#define APSR_Z_Pos 30U /*!< APSR: Z Position */ -#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ - -#define APSR_C_Pos 29U /*!< APSR: C Position */ -#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ - -#define APSR_V_Pos 28U /*!< APSR: V Position */ -#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ - - -/** - \brief Union type to access the Interrupt Program Status Register (IPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} IPSR_Type; - -/* IPSR Register Definitions */ -#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ -#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ - - -/** - \brief Union type to access the Special-Purpose Program Status Registers (xPSR). - */ -typedef union -{ - struct - { - uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ - uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ - uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ - uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ - uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ - uint32_t C:1; /*!< bit: 29 Carry condition code flag */ - uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ - uint32_t N:1; /*!< bit: 31 Negative condition code flag */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} xPSR_Type; - -/* xPSR Register Definitions */ -#define xPSR_N_Pos 31U /*!< xPSR: N Position */ -#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ - -#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ -#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ - -#define xPSR_C_Pos 29U /*!< xPSR: C Position */ -#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ - -#define xPSR_V_Pos 28U /*!< xPSR: V Position */ -#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ - -#define xPSR_T_Pos 24U /*!< xPSR: T Position */ -#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ - -#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ -#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ - - -/** - \brief Union type to access the Control Registers (CONTROL). - */ -typedef union -{ - struct - { - uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ - uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ - uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ - } b; /*!< Structure used for bit access */ - uint32_t w; /*!< Type used for word access */ -} CONTROL_Type; - -/* CONTROL Register Definitions */ -#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ -#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ - -#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ -#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ - -/*@} end of group CMSIS_CORE */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) - \brief Type definitions for the NVIC Registers - @{ - */ - -/** - \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). - */ -typedef struct -{ - __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ - uint32_t RESERVED0[16U]; - __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ - uint32_t RSERVED1[16U]; - __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ - uint32_t RESERVED2[16U]; - __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ - uint32_t RESERVED3[16U]; - __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ - uint32_t RESERVED4[16U]; - __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ - uint32_t RESERVED5[16U]; - __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ -} NVIC_Type; - -/*@} end of group CMSIS_NVIC */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SCB System Control Block (SCB) - \brief Type definitions for the System Control Block Registers - @{ - */ - -/** - \brief Structure type to access the System Control Block (SCB). - */ -typedef struct -{ - __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ - __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ -#else - uint32_t RESERVED0; -#endif - __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ - __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ - __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ - uint32_t RESERVED1; - __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ - __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ -} SCB_Type; - -/* SCB CPUID Register Definitions */ -#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ -#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ - -#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ -#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ - -#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ -#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ - -#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ -#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ - -#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ -#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ - -/* SCB Interrupt Control State Register Definitions */ -#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ -#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ - -#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ -#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ - -#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ -#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ - -#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ -#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ - -#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ -#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ - -#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ -#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ - -#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ -#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ - -#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ -#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ - -#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ -#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ - -#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ -#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ - -#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ -#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ - -#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ -#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ - -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) -/* SCB Vector Table Offset Register Definitions */ -#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ -#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ -#endif - -/* SCB Application Interrupt and Reset Control Register Definitions */ -#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ -#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ - -#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ -#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ - -#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ -#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ - -#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ -#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ - -#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ -#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ - -#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ -#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ - -#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ -#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ - -#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ -#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ - -/* SCB System Control Register Definitions */ -#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ -#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ - -#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ -#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ - -#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ -#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ - -#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ -#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ - -/* SCB Configuration Control Register Definitions */ -#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ -#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ - -#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ -#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ - -#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ -#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ - -#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ -#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ - -#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ -#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ - -#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ -#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ - -#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ -#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ - -#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ -#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ - -/* SCB System Handler Control and State Register Definitions */ -#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ -#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ - -#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ -#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ - -#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ -#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ - -#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ -#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ - -#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ -#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ - -#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ -#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ - -#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ -#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ - -/*@} end of group CMSIS_SCB */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SysTick System Tick Timer (SysTick) - \brief Type definitions for the System Timer Registers. - @{ - */ - -/** - \brief Structure type to access the System Timer (SysTick). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ - __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ - __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ - __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ -} SysTick_Type; - -/* SysTick Control / Status Register Definitions */ -#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ -#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ - -#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ -#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ - -#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ -#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ - -#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ -#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ - -/* SysTick Reload Register Definitions */ -#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ -#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ - -/* SysTick Current Register Definitions */ -#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ -#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ - -/* SysTick Calibration Register Definitions */ -#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ -#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ - -#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ -#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ - -#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ -#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ - -/*@} end of group CMSIS_SysTick */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) - \brief Type definitions for the Data Watchpoint and Trace (DWT) - @{ - */ - -/** - \brief Structure type to access the Data Watchpoint and Trace Register (DWT). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ - uint32_t RESERVED0[6U]; - __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ - __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ - uint32_t RESERVED1[1U]; - __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ - uint32_t RESERVED2[1U]; - __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ - uint32_t RESERVED3[1U]; - __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ - uint32_t RESERVED4[1U]; - __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ - uint32_t RESERVED5[1U]; - __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ - uint32_t RESERVED6[1U]; - __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ - uint32_t RESERVED7[1U]; - __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ - uint32_t RESERVED8[1U]; - __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ - uint32_t RESERVED9[1U]; - __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ - uint32_t RESERVED10[1U]; - __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ - uint32_t RESERVED11[1U]; - __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ - uint32_t RESERVED12[1U]; - __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ - uint32_t RESERVED13[1U]; - __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ - uint32_t RESERVED14[1U]; - __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ - uint32_t RESERVED15[1U]; - __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ - uint32_t RESERVED16[1U]; - __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ - uint32_t RESERVED17[1U]; - __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ - uint32_t RESERVED18[1U]; - __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ - uint32_t RESERVED19[1U]; - __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ - uint32_t RESERVED20[1U]; - __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ - uint32_t RESERVED21[1U]; - __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ - uint32_t RESERVED22[1U]; - __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ - uint32_t RESERVED23[1U]; - __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ - uint32_t RESERVED24[1U]; - __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ - uint32_t RESERVED25[1U]; - __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ - uint32_t RESERVED26[1U]; - __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ - uint32_t RESERVED27[1U]; - __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ - uint32_t RESERVED28[1U]; - __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ - uint32_t RESERVED29[1U]; - __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ - uint32_t RESERVED30[1U]; - __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ - uint32_t RESERVED31[1U]; - __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ -} DWT_Type; - -/* DWT Control Register Definitions */ -#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ -#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ - -#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ -#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ - -#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ -#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ - -#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ -#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ - -#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ -#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ - -/* DWT Comparator Function Register Definitions */ -#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ -#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ - -#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ -#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ - -#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ -#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ - -#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ -#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ - -#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ -#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ - -/*@}*/ /* end of group CMSIS_DWT */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_TPI Trace Port Interface (TPI) - \brief Type definitions for the Trace Port Interface (TPI) - @{ - */ - -/** - \brief Structure type to access the Trace Port Interface Register (TPI). - */ -typedef struct -{ - __IOM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ - __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ - uint32_t RESERVED0[2U]; - __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ - uint32_t RESERVED1[55U]; - __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ - uint32_t RESERVED2[131U]; - __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ - __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ - __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ - uint32_t RESERVED3[759U]; - __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER */ - __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ - __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ - uint32_t RESERVED4[1U]; - __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ - __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ - __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ - uint32_t RESERVED5[39U]; - __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ - __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ - uint32_t RESERVED7[8U]; - __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ - __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ -} TPI_Type; - -/* TPI Asynchronous Clock Prescaler Register Definitions */ -#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ -#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ - -/* TPI Selected Pin Protocol Register Definitions */ -#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ -#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ - -/* TPI Formatter and Flush Status Register Definitions */ -#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ -#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ - -#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ -#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ - -#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ -#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ - -#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ -#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ - -/* TPI Formatter and Flush Control Register Definitions */ -#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ -#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ - -#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ -#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ - -/* TPI TRIGGER Register Definitions */ -#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ -#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ - -/* TPI Integration ETM Data Register Definitions (FIFO0) */ -#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ -#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ - -#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ -#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ - -#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ -#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ - -#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ -#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ - -#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ -#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ - -#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ -#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ - -#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ -#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ - -/* TPI ITATBCTR2 Register Definitions */ -#define TPI_ITATBCTR2_ATREADY_Pos 0U /*!< TPI ITATBCTR2: ATREADY Position */ -#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/) /*!< TPI ITATBCTR2: ATREADY Mask */ - -/* TPI Integration ITM Data Register Definitions (FIFO1) */ -#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ -#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ - -#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ -#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ - -#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ -#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ - -#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ -#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ - -#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ -#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ - -#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ -#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ - -#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ -#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ - -/* TPI ITATBCTR0 Register Definitions */ -#define TPI_ITATBCTR0_ATREADY_Pos 0U /*!< TPI ITATBCTR0: ATREADY Position */ -#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/) /*!< TPI ITATBCTR0: ATREADY Mask */ - -/* TPI Integration Mode Control Register Definitions */ -#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ -#define TPI_ITCTRL_Mode_Msk (0x1UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ - -/* TPI DEVID Register Definitions */ -#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ -#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ - -#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ -#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ - -#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ -#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ - -#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ -#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ - -#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ -#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ - -#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ -#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ - -/* TPI DEVTYPE Register Definitions */ -#define TPI_DEVTYPE_MajorType_Pos 4U /*!< TPI DEVTYPE: MajorType Position */ -#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ - -#define TPI_DEVTYPE_SubType_Pos 0U /*!< TPI DEVTYPE: SubType Position */ -#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ - -/*@}*/ /* end of group CMSIS_TPI */ - - -#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_MPU Memory Protection Unit (MPU) - \brief Type definitions for the Memory Protection Unit (MPU) - @{ - */ - -/** - \brief Structure type to access the Memory Protection Unit (MPU). - */ -typedef struct -{ - __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ - __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ - __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ - __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ - __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ - uint32_t RESERVED0[7U]; - __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ - __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ -} MPU_Type; - -/* MPU Type Register Definitions */ -#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ -#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ - -#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ -#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ - -#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ -#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ - -/* MPU Control Register Definitions */ -#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ -#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ - -#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ -#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ - -#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ -#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ - -/* MPU Region Number Register Definitions */ -#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ -#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ - -/* MPU Region Base Address Register Definitions */ -#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ -#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ - -#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ -#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ - -#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ -#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ - -#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ -#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ - -/* MPU Region Limit Address Register Definitions */ -#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ -#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ - -#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ -#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ - -#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ -#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ - -/* MPU Memory Attribute Indirection Register 0 Definitions */ -#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ -#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ - -#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ -#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ - -#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ -#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ - -#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ -#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ - -/* MPU Memory Attribute Indirection Register 1 Definitions */ -#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ -#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ - -#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ -#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ - -#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ -#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ - -#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ -#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ - -/*@} end of group CMSIS_MPU */ -#endif - - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_SAU Security Attribution Unit (SAU) - \brief Type definitions for the Security Attribution Unit (SAU) - @{ - */ - -/** - \brief Structure type to access the Security Attribution Unit (SAU). - */ -typedef struct -{ - __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ - __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ -#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) - __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ - __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ - __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ -#endif -} SAU_Type; - -/* SAU Control Register Definitions */ -#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ -#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ - -#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ -#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ - -/* SAU Type Register Definitions */ -#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ -#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ - -#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) -/* SAU Region Number Register Definitions */ -#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ -#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ - -/* SAU Region Base Address Register Definitions */ -#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ -#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ - -/* SAU Region Limit Address Register Definitions */ -#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ -#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ - -#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ -#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ - -#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ -#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ - -#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ - -/*@} end of group CMSIS_SAU */ -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) - \brief Type definitions for the Core Debug Registers - @{ - */ - -/** - \brief Structure type to access the Core Debug Register (CoreDebug). - */ -typedef struct -{ - __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ - __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ - __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ - __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ - uint32_t RESERVED4[1U]; - __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ - __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ -} CoreDebug_Type; - -/* Debug Halting Control and Status Register Definitions */ -#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ -#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ - -#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ -#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ - -#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ -#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ - -#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ -#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ - -#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ -#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ - -#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ -#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ - -#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ -#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ - -#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ -#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ - -#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ -#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ - -#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ -#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ - -#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ -#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ - -#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ -#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ - -/* Debug Core Register Selector Register Definitions */ -#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ -#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ - -#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ -#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ - -/* Debug Exception and Monitor Control Register */ -#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ -#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ - -#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ -#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ - -#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ -#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ - -/* Debug Authentication Control Register Definitions */ -#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ -#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ - -#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ -#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ - -#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ -#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ - -#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ -#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ - -/* Debug Security Control and Status Register Definitions */ -#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ -#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ - -#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ -#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ - -#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ -#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ - -/*@} end of group CMSIS_CoreDebug */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_bitfield Core register bit field macros - \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). - @{ - */ - -/** - \brief Mask and shift a bit field value for use in a register bit range. - \param[in] field Name of the register bit field. - \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. - \return Masked and shifted value. -*/ -#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) - -/** - \brief Mask and shift a register value to extract a bit filed value. - \param[in] field Name of the register bit field. - \param[in] value Value of register. This parameter is interpreted as an uint32_t type. - \return Masked and shifted bit field value. -*/ -#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) - -/*@} end of group CMSIS_core_bitfield */ - - -/** - \ingroup CMSIS_core_register - \defgroup CMSIS_core_base Core Definitions - \brief Definitions for base addresses, unions, and structures. - @{ - */ - -/* Memory mapping of Core Hardware */ - #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ - #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ - #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ - #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ - #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ - #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ - #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ - - - #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ - #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ - #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ - #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ - #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ - #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ - - #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) - #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ - #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ - #endif - - #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ - #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ - #endif - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ - #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ - #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ - #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ - #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ - - #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ - #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ - #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ - #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ - - #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) - #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ - #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ - #endif - -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ -/*@} */ - - - -/******************************************************************************* - * Hardware Abstraction Layer - Core Function Interface contains: - - Core NVIC Functions - - Core SysTick Functions - - Core Register Access Functions - ******************************************************************************/ -/** - \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference -*/ - - - -/* ########################## NVIC functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_NVICFunctions NVIC Functions - \brief Functions that manage interrupts and exceptions via the NVIC. - @{ - */ - -#ifdef CMSIS_NVIC_VIRTUAL - #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE - #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" - #endif - #include CMSIS_NVIC_VIRTUAL_HEADER_FILE -#else -/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ -/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ - #define NVIC_EnableIRQ __NVIC_EnableIRQ - #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ - #define NVIC_DisableIRQ __NVIC_DisableIRQ - #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ - #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ - #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ - #define NVIC_GetActive __NVIC_GetActive - #define NVIC_SetPriority __NVIC_SetPriority - #define NVIC_GetPriority __NVIC_GetPriority - #define NVIC_SystemReset __NVIC_SystemReset -#endif /* CMSIS_NVIC_VIRTUAL */ - -#ifdef CMSIS_VECTAB_VIRTUAL - #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE - #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" - #endif - #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE -#else - #define NVIC_SetVector __NVIC_SetVector - #define NVIC_GetVector __NVIC_GetVector -#endif /* (CMSIS_VECTAB_VIRTUAL) */ - -#define NVIC_USER_IRQ_OFFSET 16 - - -/* Interrupt Priorities are WORD accessible only under ARMv6M */ -/* The following MACROS handle generation of the register offset and byte masks */ -#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) -#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) -#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) - - -/** - \brief Enable Interrupt - \details Enables a device specific interrupt in the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Interrupt Enable status - \details Returns a device specific interrupt enable status from the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt is not enabled. - \return 1 Interrupt is enabled. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Disable Interrupt - \details Disables a device specific interrupt in the NVIC interrupt controller. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - __DSB(); - __ISB(); - } -} - - -/** - \brief Get Pending Interrupt - \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Pending Interrupt - \details Sets the pending bit of a device specific interrupt in the NVIC pending register. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Clear Pending Interrupt - \details Clears the pending bit of a device specific interrupt in the NVIC pending register. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Active Interrupt - \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Interrupt Target State - \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - \return 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Interrupt Target State - \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))); - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Clear Interrupt Target State - \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 if interrupt is assigned to Secure - 1 if interrupt is assigned to Non Secure - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))); - return((uint32_t)(((NVIC->ITNS[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - - -/** - \brief Set Interrupt Priority - \details Sets the priority of a device specific interrupt or a processor exception. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - \note The priority cannot be set for every processor exception. - */ -__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } - else - { - SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - - -/** - \brief Get Interrupt Priority - \details Reads the priority of a device specific interrupt or a processor exception. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Interrupt Priority. - Value is aligned automatically to the implemented priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) -{ - - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } - else - { - return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } -} - - -/** - \brief Set Interrupt Vector - \details Sets an interrupt vector in SRAM based interrupt vector table. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - VTOR must been relocated to SRAM before. - If VTOR is not present address 0 must be mapped to SRAM. - \param [in] IRQn Interrupt number - \param [in] vector Address of interrupt handler function - */ -__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) -{ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - uint32_t *vectors = (uint32_t *)SCB->VTOR; -#else - uint32_t *vectors = (uint32_t *)0x0U; -#endif - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \brief Get Interrupt Vector - \details Reads an interrupt vector from interrupt vector table. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Address of interrupt handler function - */ -__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) -{ -#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) - uint32_t *vectors = (uint32_t *)SCB->VTOR; -#else - uint32_t *vectors = (uint32_t *)0x0U; -#endif - return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; -} - - -/** - \brief System Reset - \details Initiates a system reset request to reset the MCU. - */ -__STATIC_INLINE void __NVIC_SystemReset(void) -{ - __DSB(); /* Ensure all outstanding memory accesses included - buffered write are completed before reset */ - SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - SCB_AIRCR_SYSRESETREQ_Msk); - __DSB(); /* Ensure completion of memory access */ - - for(;;) /* wait until reset */ - { - __NOP(); - } -} - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief Enable Interrupt (non-secure) - \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Interrupt Enable status (non-secure) - \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt is not enabled. - \return 1 Interrupt is enabled. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Disable Interrupt (non-secure) - \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ICER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Pending Interrupt (non-secure) - \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not pending. - \return 1 Interrupt status is pending. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } -} - - -/** - \brief Set Pending Interrupt (non-secure) - \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ISPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Clear Pending Interrupt (non-secure) - \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. - \param [in] IRQn Device specific interrupt number. - \note IRQn must not be negative. - */ -__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->ICPR[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); - } -} - - -/** - \brief Get Active Interrupt (non-secure) - \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. - \param [in] IRQn Device specific interrupt number. - \return 0 Interrupt status is not active. - \return 1 Interrupt status is active. - \note IRQn must not be negative. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) -{ - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)(int32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); - } - else - { - return(0U); - } -} - - -/** - \brief Set Interrupt Priority (non-secure) - \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \param [in] priority Priority to set. - \note The priority cannot be set for every non-secure processor exception. - */ -__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) -{ - if ((int32_t)(IRQn) >= 0) - { - NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } - else - { - SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - } -} - - -/** - \brief Get Interrupt Priority (non-secure) - \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. - The interrupt number can be positive to specify a device specific interrupt, - or negative to specify a processor exception. - \param [in] IRQn Interrupt number. - \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. - */ -__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) -{ - - if ((int32_t)(IRQn) >= 0) - { - return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } - else - { - return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); - } -} -#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ - -/*@} end of CMSIS_Core_NVICFunctions */ - - -/* ########################## FPU functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_FpuFunctions FPU Functions - \brief Function that provides FPU type. - @{ - */ - -/** - \brief get FPU type - \details returns the FPU type - \returns - - \b 0: No FPU - - \b 1: Single precision FPU - - \b 2: Double + Single precision FPU - */ -__STATIC_INLINE uint32_t SCB_GetFPUType(void) -{ - return 0U; /* No FPU */ -} - - -/*@} end of CMSIS_Core_FpuFunctions */ - - - -/* ########################## SAU functions #################################### */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SAUFunctions SAU Functions - \brief Functions that configure the SAU. - @{ - */ - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) - -/** - \brief Enable SAU - \details Enables the Security Attribution Unit (SAU). - */ -__STATIC_INLINE void TZ_SAU_Enable(void) -{ - SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); -} - - - -/** - \brief Disable SAU - \details Disables the Security Attribution Unit (SAU). - */ -__STATIC_INLINE void TZ_SAU_Disable(void) -{ - SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); -} - -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - -/*@} end of CMSIS_Core_SAUFunctions */ - - - - -/* ################################## SysTick function ############################################ */ -/** - \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_SysTickFunctions SysTick Functions - \brief Functions that configure the System. - @{ - */ - -#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) - -/** - \brief System Tick Configuration - \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - \param [in] ticks Number of ticks between two interrupts. - \return 0 Function succeeded. - \return 1 Function failed. - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - { - return (1UL); /* Reload value impossible */ - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ -} - -#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) -/** - \brief System Tick Configuration (non-secure) - \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. - Counter is in free running mode to generate periodic interrupts. - \param [in] ticks Number of ticks between two interrupts. - \return 0 Function succeeded. - \return 1 Function failed. - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function TZ_SysTick_Config_NS is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - - */ -__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) -{ - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - { - return (1UL); /* Reload value impossible */ - } - - SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ - SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ -} -#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ - -#endif - -/*@} end of CMSIS_Core_SysTickFunctions */ - - - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_CM23_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ diff --git a/board/Nuvoton_M251/TencentOS/TOS_CONFIG/tos_config.h b/board/Nuvoton_M251/TOS_CONFIG/tos_config.h similarity index 93% rename from board/Nuvoton_M251/TencentOS/TOS_CONFIG/tos_config.h rename to board/Nuvoton_M251/TOS_CONFIG/tos_config.h index faa25daa..87fef541 100644 --- a/board/Nuvoton_M251/TencentOS/TOS_CONFIG/tos_config.h +++ b/board/Nuvoton_M251/TOS_CONFIG/tos_config.h @@ -1,7 +1,6 @@ #ifndef _TOS_CONFIG_H_ #define _TOS_CONFIG_H_ -//#include "stm32f10x.h" #include "M251.h" //change your mcu #include @@ -17,7 +16,7 @@ #define TOS_CFG_MMHEAP_EN 1u -#define TOS_CFG_MMHEAP_POOL_SIZE 0x100 +#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x100 #define TOS_CFG_MUTEX_EN 1u diff --git a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu.h b/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu.h deleted file mode 100644 index 955789bb..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef _TOS_CPU_H_ -#define _TOS_CPU_H_ - -typedef struct cpu_context_st { - cpu_data_t _R4; - cpu_data_t _R5; - cpu_data_t _R6; - cpu_data_t _R7; - cpu_data_t _R8; - cpu_data_t _R9; - cpu_data_t _R10; - cpu_data_t _R11; -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - cpu_data_t EXC_RETURN; -#endif - cpu_data_t _R0; - cpu_data_t _R1; - cpu_data_t _R2; - cpu_data_t _R3; - cpu_data_t _R12; - cpu_data_t _R14; - cpu_data_t _PC; - cpu_data_t _xPSR; -} cpu_context_t; - -__API__ uint32_t tos_cpu_clz(uint32_t val); - -__API__ void tos_cpu_int_disable(void); - -__API__ void tos_cpu_int_enable(void); - -__API__ cpu_cpsr_t tos_cpu_cpsr_save(void); - -__API__ void tos_cpu_cpsr_restore(cpu_cpsr_t cpsr); - -#if (TOS_CFG_CPU_HRTIMER_EN > 0u) - -__API__ void tos_cpu_hrtimer_init(void); - -__API__ cpu_hrtimer_t tos_cpu_hrtimer_read(void); - -#endif - -__KERNEL__ void cpu_init(void); - -__KERNEL__ void cpu_reset(void); - -__KERNEL__ void cpu_systick_init(k_cycle_t cycle_per_tick); - -__KERNEL__ void cpu_sched_start(void); - -__KERNEL__ void cpu_context_switch(void); - -__KERNEL__ void cpu_irq_context_switch(void); - -#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u - -__KERNEL__ k_err_t cpu_task_stack_draught_depth(k_stack_t *stk_base, size_t stk_size, int *depth); - -#endif - -__KERNEL__ k_stack_t *cpu_task_stk_init(void *entry, - void *arg, - void *exit, - k_stack_t *stk_base, - size_t stk_size); - -#if TOS_CFG_TICKLESS_EN > 0u - -__KERNEL__ void cpu_systick_resume(void); - -__KERNEL__ void cpu_systick_suspend(void); - -__KERNEL__ void cpu_systick_reload_reset(void); - -__KERNEL__ void cpu_systick_pending_reset(void); - -__KERNEL__ k_time_t cpu_systick_max_delay_millisecond(void); - -__KERNEL__ void cpu_systick_expires_set(k_time_t millisecond); - -__KERNEL__ void cpu_systick_reset(void); - -#endif - -#if TOS_CFG_PWR_MGR_EN > 0u - -__KERNEL__ void cpu_sleep_mode_enter(void); - -__KERNEL__ void cpu_stop_mode_enter(void); - -__KERNEL__ void cpu_standby_mode_enter(void); - -#endif - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - -__KERNEL__ void cpu_flush_fpu(void); - -#endif /* TOS_CFG_CPU_ARM_FPU_EN */ - -__KERNEL__ void cpu_fault_diagnosis(void); - -#endif - -/* Allocates CPU status register word. */ -#define TOS_CPU_CPSR_ALLOC() cpu_cpsr_t cpu_cpsr = (cpu_cpsr_t)0u - -/* Save CPU status word & disable interrupts.*/ -#define TOS_CPU_INT_DISABLE() \ - do { \ - cpu_cpsr = tos_cpu_cpsr_save(); \ - } while (0) - -/* Restore CPU status word. */ -#define TOS_CPU_INT_ENABLE() \ - do { \ - tos_cpu_cpsr_restore(cpu_cpsr); \ - } while (0) - -#endif /* _TOS_CPU_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_def.h b/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_def.h deleted file mode 100644 index cde7ce52..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_def.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _TOS_CPU_DEF_H_ -#define _TOS_CPU_DEF_H_ - -enum CPU_WORD_SIZE { - CPU_WORD_SIZE_08, - CPU_WORD_SIZE_16, - CPU_WORD_SIZE_32, - CPU_WORD_SIZE_64, -}; - -enum CPU_STK_GROWTH { - CPU_STK_GROWTH_ASCENDING, - CPU_STK_GROWTH_DESCENDING, -}; - -#endif /* _TOS_CPU_DEF_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_types.h b/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_types.h deleted file mode 100644 index 6027a354..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/include/tos_cpu_types.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef _TOS_CPU_TYPES_H_ -#define _TOS_CPU_TYPES_H_ - -/* CPU address type based on address bus size. */ -#if (TOS_CFG_CPU_ADDR_SIZE == CPU_WORD_SIZE_32) -typedef uint32_t cpu_addr_t; -#elif (TOS_CFG_CPU_ADDR_SIZE == CPU_WORD_SIZE_16) -typedef uint16_t cpu_addr_t; -#else -typedef uint8_t cpu_addr_t; -#endif - -/* CPU data type based on data bus size. */ -#if (TOS_CFG_CPU_DATA_SIZE == CPU_WORD_SIZE_32) -typedef uint32_t cpu_data_t; -#elif (TOS_CFG_CPU_DATA_SIZE == CPU_WORD_SIZE_16) -typedef uint16_t cpu_data_t; -#else -typedef uint8_t cpu_data_t; -#endif - -#if (TOS_CFG_CPU_HRTIMER_EN > 0) -#if (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_08) -typedef uint8_t cpu_hrtimer_t; -#elif (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_16) -typedef uint16_t cpu_hrtimer_t; -#elif (TOS_CFG_CPU_HRTIMER_SIZE == CPU_WORD_SIZE_64) -typedef uint64_t cpu_hrtimer_t; -#else -typedef uint32_t cpu_hrtimer_t; -#endif -#else -typedef uint32_t cpu_hrtimer_t; -#endif - -//typedef cpu_addr_t size_t; -typedef cpu_addr_t cpu_cpsr_t; - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/arch/include/tos_fault.h b/board/Nuvoton_M251/TencentOS/arch/include/tos_fault.h deleted file mode 100644 index f2e17269..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/include/tos_fault.h +++ /dev/null @@ -1,219 +0,0 @@ -#ifndef _TOS_FAULT_H_ -#define _TOS_FAULT_H_ - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u - -typedef int (*k_fault_log_writer_t)(const char *format, ...); - -#define K_FAULT_STACK_DUMP_DEPTH 10u - -#define K_FAULT_CALL_STACK_BACKTRACE_DEPTH 5u - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) -typedef struct fault_fpu_frame_st { - cpu_data_t s0; - cpu_data_t s1; - cpu_data_t s2; - cpu_data_t s3; - cpu_data_t s4; - cpu_data_t s5; - cpu_data_t s6; - cpu_data_t s7; - cpu_data_t s8; - cpu_data_t s9; - cpu_data_t s10; - cpu_data_t s11; - cpu_data_t s12; - cpu_data_t s13; - cpu_data_t s14; - cpu_data_t s15; - cpu_data_t fpscr; -} fault_fpu_frame_t; -#endif - -typedef struct fault_cpu_frame_st { - cpu_data_t r0; - cpu_data_t r1; - cpu_data_t r2; - cpu_data_t r3; - cpu_data_t r12; - cpu_data_t lr; - cpu_data_t pc; - cpu_data_t spsr; -} fault_cpu_frame_t; - -typedef struct fault_exc_frame_st { - fault_cpu_frame_t cpu_frame; - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - fault_fpu_frame_t fpu_frame; -#endif -} fault_exc_frame_t; - -/** - * information we need to do fault backtrace - */ -typedef struct fault_information_st { - int is_thumb : 1; /**< whether it is thumb we use when we fall into fault? */ - int is_on_task : 1; /**< whether we are on a task when fall into fault? */ - int is_stk_ovrf : 1; /**< whether we get a stack overflow */ - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - int is_ext_stk_frm : 1; /**< whether it is a extended stack frame?(whether the cpu has pushed fpu registers onto the stack) */ -#endif - - cpu_addr_t pc; /**< just where fault happens */ - - cpu_addr_t sp_before_fault; /**< original sp just before the cpu push the fault exception frame */ - - /** - * we need main_stack_start & main_stack_limit to do call stack backtrace - * when we fall into fault during a task, we should do the call stack backtrace on the task's stack - * but if not, which means we are in kernel, we should do the call stack backtrace on the main stack - * in arm v7-m, this should be the MSP's start and limit - * in arm v7-a, call stack backtrace is another story(much more elegant because we have FP). - */ - cpu_addr_t stack_start; /**< current sp start address we use. if on task, it'll be the task's stack, otherwise it'll be the msp */ - cpu_addr_t stack_limit; /**< current sp limit address */ - cpu_addr_t code_start; /**< current code start address */ - cpu_addr_t code_limit; /**< current code limit address */ -} fault_info_t; - -#if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) - -#define DEFAULT_CODE_SECTION_NAME ER_IROM1 -#define DEFAULT_CSTACK_SECTION_NAME STACK - -#define SECTION_START(_name_) _name_##$$Base -#define SECTION_END(_name_) _name_##$$Limit -#define IMAGE_SECTION_START(_name_) Image$$##_name_##$$Base -#define IMAGE_SECTION_END(_name_) Image$$##_name_##$$Limit -#define CSTACK_BLOCK_START(_name_) SECTION_START(_name_) -#define CSTACK_BLOCK_END(_name_) SECTION_END(_name_) -#define CODE_SECTION_START(_name_) IMAGE_SECTION_START(_name_) -#define CODE_SECTION_END(_name_) IMAGE_SECTION_END(_name_) - -extern const int CSTACK_BLOCK_START(DEFAULT_CSTACK_SECTION_NAME); -extern const int CSTACK_BLOCK_END(DEFAULT_CSTACK_SECTION_NAME); -extern const int CODE_SECTION_START(DEFAULT_CODE_SECTION_NAME); -extern const int CODE_SECTION_END(DEFAULT_CODE_SECTION_NAME); - -__STATIC_INLINE__ cpu_addr_t fault_code_start(void) -{ - return (cpu_addr_t)&CODE_SECTION_START(DEFAULT_CODE_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) -{ - return (cpu_addr_t)&CODE_SECTION_END(DEFAULT_CODE_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) -{ - return (cpu_addr_t)&CSTACK_BLOCK_START(DEFAULT_CSTACK_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) -{ - return (cpu_addr_t)&CSTACK_BLOCK_END(DEFAULT_CSTACK_SECTION_NAME); -} - -#elif defined(__ICCARM__) - -#define DEFAULT_CODE_SECTION_NAME ".text" -#define DEFAULT_CSTACK_SECTION_NAME "CSTACK" - -#pragma section=DEFAULT_CSTACK_SECTION_NAME -#pragma section=DEFAULT_CODE_SECTION_NAME - -__STATIC_INLINE__ cpu_addr_t fault_code_start(void) -{ - return (cpu_addr_t)__section_begin(DEFAULT_CODE_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) -{ - return (cpu_addr_t)__section_end(DEFAULT_CODE_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) -{ - return (cpu_addr_t)__section_begin(DEFAULT_CSTACK_SECTION_NAME); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) -{ - return (cpu_addr_t)__section_end(DEFAULT_CSTACK_SECTION_NAME); -} - -#elif defined(__GNUC__) - -/** - * if we are using keil(armcc) or mdk(iccarm), we probably use the defult link script supplied by the IDE. - * the way to locate the text/stack section start and limit is to find them in default link script. - * but if we build our project by makefile(or something like scons, cmake, etc), we probably need to write - * our own link scrpit, if so, we should do like this(just a demo): - * - _stext = .; - .text : { - *(.text.startup) - *(.text) - *(.text.*) - } - _etext = .; - - __bss_start = .; - .bss : { - *(.bss) - *(.bss.*) - *(COMMON) - _sstack = .; - *(.cstack) - _estack = .; - } - __bss_end = .; - * by this, we can locate text/stack section start and limit by _stext/_etext and _sstack/_estack - */ -#define DEFAULT_CODE_SECTION_START _stext -#define DEFAULT_CODE_SECTION_END _etext -#define DEFAULT_CSTACK_SECTION_START _sstack -#define DEFAULT_CSTACK_SECTION_END _estack - -extern const int DEFAULT_CODE_SECTION_START; -extern const int DEFAULT_CODE_SECTION_END; - -extern const int DEFAULT_CSTACK_SECTION_START; -extern const int DEFAULT_CSTACK_SECTION_END; - -__STATIC_INLINE__ cpu_addr_t fault_code_start(void) -{ - return (cpu_addr_t)(&(DEFAULT_CODE_SECTION_START)); -} - -__STATIC_INLINE__ cpu_addr_t fault_code_limit(void) -{ - return (cpu_addr_t)(&(DEFAULT_CODE_SECTION_END)); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_start(void) -{ - return (cpu_addr_t)(&(DEFAULT_CSTACK_SECTION_START)); -} - -__STATIC_INLINE__ cpu_addr_t fault_msp_limit(void) -{ - return (cpu_addr_t)(&(DEFAULT_CSTACK_SECTION_END)); -} - -#endif - -__API__ void tos_fault_log_writer_set(k_fault_log_writer_t log_writer); - -__KERNEL__ int fault_default_log_writer(const char *format, ...); - -__KERNEL__ void fault_backtrace(cpu_addr_t lr, fault_exc_frame_t *frame); - -#endif - -#endif /* _TOS_FAULT_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/port.h b/board/Nuvoton_M251/TencentOS/arch/port.h deleted file mode 100644 index 10a6c89b..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/port.h +++ /dev/null @@ -1,73 +0,0 @@ -/*---------------------------------------------------------------------------- - * Tencent is pleased to support the open source community by making TencentOS - * available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * If you have downloaded a copy of the TencentOS binary from Tencent, please - * note that the TencentOS binary is licensed under the BSD 3-Clause License. - * - * If you have downloaded a copy of the TencentOS source code from Tencent, - * please note that TencentOS source code is licensed under the BSD 3-Clause - * License, except for the third-party components listed below which are - * subject to different license terms. Your integration of TencentOS into your - * own projects may require compliance with the BSD 3-Clause License, as well - * as the other licenses applicable to the third-party components included - * within TencentOS. - *---------------------------------------------------------------------------*/ - -#ifndef _PORT_H_ -#define _PORT_H_ - -__PORT__ void port_int_disable(void); - -__PORT__ void port_int_enable(void); - -__PORT__ cpu_cpsr_t port_cpsr_save(void); - -__PORT__ void port_cpsr_restore(cpu_cpsr_t cpsr); - -__PORT__ void port_cpu_reset(void); - -__PORT__ void port_sched_start(void) __NO_RETURN__; - -__PORT__ void port_context_switch(void); - -__PORT__ void port_irq_context_switch(void); - -__PORT__ void port_systick_config(uint32_t cycle_per_tick); - -__PORT__ void port_systick_priority_set(uint32_t prio); - -#if TOS_CFG_TICKLESS_EN > 0u - -__PORT__ void port_systick_resume(void); - -__PORT__ void port_systick_suspend(void); - -__PORT__ void port_systick_reload(uint32_t cycle_per_tick); - -__PORT__ void port_systick_pending_reset(void); - -__PORT__ k_time_t port_systick_max_delay_millisecond(void); - -#endif - -#if TOS_CFG_PWR_MGR_EN > 0u - -__PORT__ void port_sleep_mode_enter(void); - -__PORT__ void port_stop_mode_enter(void); - -__PORT__ void port_standby_mode_enter(void); - -#endif - - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u -__PORT__ void HardFault_Handler(void); - -__PORT__ void port_fault_diagnosis(void); -#endif - -#endif /* _PORT_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/port_c.c b/board/Nuvoton_M251/TencentOS/arch/port_c.c deleted file mode 100644 index 3c4c903a..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/port_c.c +++ /dev/null @@ -1,129 +0,0 @@ -#include "tos.h" -//#include "core_cm0plus.h" -#include "core_armv8mbl.h" //change core - -__PORT__ void port_cpu_reset(void) -{ - NVIC_SystemReset(); -} - -__PORT__ void port_systick_config(uint32_t cycle_per_tick) -{ - (void)SysTick_Config(cycle_per_tick); -} - -__PORT__ void port_systick_priority_set(uint32_t prio) -{ - NVIC_SetPriority(SysTick_IRQn, prio); -} - -#if TOS_CFG_TICKLESS_EN > 0u - -__PORT__ k_time_t port_systick_max_delay_millisecond(void) -{ - k_time_t max_millisecond; - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - max_millisecond = (k_time_t)((uint64_t)max_cycle * K_TIME_MILLISEC_PER_SEC / TOS_CFG_CPU_CLOCK); // CLOCK: cycle per second - return max_millisecond; -} - -__PORT__ void port_systick_resume(void) -{ - SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; - SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; -} - -__PORT__ void port_systick_suspend(void) -{ - SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; - SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; -} - -__PORT__ void port_systick_reload(uint32_t cycle_per_tick) -{ - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; -} - -__PORT__ void port_systick_pending_reset(void) -{ - SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; -} - -#endif - -#if TOS_CFG_PWR_MGR_EN > 0u - -__PORT__ void port_sleep_mode_enter(void) -{ -#if 1 - HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI); -#else - HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); -#endif -} - -__PORT__ void port_stop_mode_enter(void) -{ - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); -} - -__PORT__ void port_standby_mode_enter(void) -{ - HAL_PWR_EnterSTANDBYMode(); -} - -#endif - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u -__PORT__ void port_fault_diagnosis(void) -{ - k_fault_log_writer("fault diagnosis does not supported in CORTEX M0\n"); -} - -/*------------------ RealView Compiler -----------------*/ -/* V5 */ -#if defined(__CC_ARM) - -__PORT__ __ASM__ void HardFault_Handler(void) -{ - IMPORT fault_backtrace - - MOV r0, lr - TST lr, #0x04 - ITE EQ - MRSEQ r1, MSP - MRSNE r1, PSP - BL fault_backtrace -} - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - -__PORT__ void __NAKED__ HardFault_Handler(void) -{ - __ASM__ __VOLATILE__ ( - "MOV r0, lr\n\t" - "TST lr, #0x04\n\t" - "ITE EQ\n\t" - "MRSEQ r1, MSP\n\t" - "MRSNE r1, PSP\n\t" - "BL fault_backtrace\n\t" - ); -} - -#endif /* ARMCC VERSION */ - -#endif /* TOS_CFG_FAULT_BACKTRACE_EN */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/port_config.h b/board/Nuvoton_M251/TencentOS/arch/port_config.h deleted file mode 100644 index b0300236..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/port_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/*---------------------------------------------------------------------------- - * Tencent is pleased to support the open source community by making TencentOS - * available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * If you have downloaded a copy of the TencentOS binary from Tencent, please - * note that the TencentOS binary is licensed under the BSD 3-Clause License. - * - * If you have downloaded a copy of the TencentOS source code from Tencent, - * please note that TencentOS source code is licensed under the BSD 3-Clause - * License, except for the third-party components listed below which are - * subject to different license terms. Your integration of TencentOS into your - * own projects may require compliance with the BSD 3-Clause License, as well - * as the other licenses applicable to the third-party components included - * within TencentOS. - *---------------------------------------------------------------------------*/ - -#ifndef _PORT_CONFIG_H_ -#define _PORT_CONFIG_H_ - -#define TOS_CFG_CPU_ADDR_SIZE CPU_WORD_SIZE_32 -#define TOS_CFG_CPU_DATA_SIZE CPU_WORD_SIZE_32 -#define TOS_CFG_CPU_STK_GROWTH CPU_STK_GROWTH_DESCENDING -// #define TOS_CFG_CPU_HRTIMER_SIZE CPU_WORD_SIZE_32 -#define TOS_CFG_CPU_HRTIMER_EN 0u -#define TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT 0u - -#endif /* _PORT_CONFIG_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/port_s.S b/board/Nuvoton_M251/TencentOS/arch/port_s.S deleted file mode 100644 index 114a99cf..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/port_s.S +++ /dev/null @@ -1,137 +0,0 @@ - EXPORT port_int_disable - EXPORT port_int_enable - - EXPORT port_cpsr_save - EXPORT port_cpsr_restore - - EXPORT port_sched_start - EXPORT port_context_switch - EXPORT port_irq_context_switch - - EXPORT PendSV_Handler - - IMPORT k_curr_task - IMPORT k_next_task - - -NVIC_INT_CTRL EQU 0xE000ED04 ; Interrupt control state register. -NVIC_SYSPRI14 EQU 0xE000ED20 ; System priority register (priority 14). -NVIC_PENDSV_PRI EQU 0x00FF0000 ; PendSV priority value (lowest). -NVIC_PENDSVSET EQU 0x10000000 ; Value to trigger PendSV exception. - - - AREA |.text|, CODE, READONLY, ALIGN=2 - THUMB - REQUIRE8 - PRESERVE8 - - GLOBAL port_int_disable -port_int_disable - CPSID I - BX LR - - - GLOBAL port_int_enable -port_int_enable - CPSIE I - BX LR - - - GLOBAL port_cpsr_save -port_cpsr_save - MRS R0, PRIMASK - CPSID I - BX LR - - - GLOBAL port_cpsr_restore -port_cpsr_restore - MSR PRIMASK, R0 - BX LR - - - GLOBAL port_sched_start -port_sched_start - LDR R0, =NVIC_SYSPRI14 - LDR R1, =NVIC_PENDSV_PRI - STR R1, [R0] - - MOVS R0, #0 - MSR PSP, R0 - - LDR R0, =NVIC_INT_CTRL - LDR R1, =NVIC_PENDSVSET - STR R1, [R0] - - CPSIE I - -__unreachable - B __unreachable - - - GLOBAL port_context_switch -port_context_switch - LDR R0, =NVIC_INT_CTRL - LDR R1, =NVIC_PENDSVSET - STR R1, [R0] - BX LR - - - GLOBAL port_irq_context_switch -port_irq_context_switch - LDR R0, =NVIC_INT_CTRL - LDR R1, =NVIC_PENDSVSET - STR R1, [R0] - BX LR - - - GLOBAL PendSV_Handler -PendSV_Handler - CPSID I - MRS R0, PSP - CMP R0, #0 - BEQ PendSVHandler_nosave - - SUBS R0, R0, #0x20 - STMIA R0!, {R4 - R7} - MOV R4, R8 - MOV R5, R9 - MOV R6, R10 - MOV R7, R11 - STMIA R0!, {R4-R7} - SUBS R0, R0, #0x20 - - LDR R1, =k_curr_task - LDR R1, [R1] - STR R0, [R1] - -PendSVHandler_nosave - LDR R0, =k_curr_task - LDR R1, =k_next_task - LDR R2, [R1] - STR R2, [R0] - - LDR R0, [R2] - - LDMIA R0!, {R4 - R7} - LDMIA R0!, {R2 - R3} - MOV R8, R2 - MOV R9, R3 - LDMIA R0!, {R2 - R3} - MOV R10, R2 - MOV R11, R3 - MSR PSP, R0 - - MOV R0, R14 - MOVS R1, #0x04 - ORRS R0, R1 - MOV R14, R0 - - CPSIE I - - BX LR - - ALIGN - - END - diff --git a/board/Nuvoton_M251/TencentOS/arch/tos_cpu.c b/board/Nuvoton_M251/TencentOS/arch/tos_cpu.c deleted file mode 100644 index 49d355f5..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/tos_cpu.c +++ /dev/null @@ -1,276 +0,0 @@ -#include - -__API__ uint32_t tos_cpu_clz(uint32_t val) -{ -#if defined(TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT) && (TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT == 0u) - uint32_t nbr_lead_zeros = 0; - - if (!(val & 0XFFFF0000)) { - val <<= 16; - nbr_lead_zeros += 16; - } - - if (!(val & 0XFF000000)) { - val <<= 8; - nbr_lead_zeros += 8; - } - - if (!(val & 0XF0000000)) { - val <<= 4; - nbr_lead_zeros += 4; - } - - if (!(val & 0XC0000000)) { - val <<= 2; - nbr_lead_zeros += 2; - } - - if (!(val & 0X80000000)) { - nbr_lead_zeros += 1; - } - - if (!val) { - nbr_lead_zeros += 1; - } - - return (nbr_lead_zeros); -#else - return port_clz(val); -#endif -} - -__API__ void tos_cpu_int_disable(void) -{ - port_int_disable(); -} - -__API__ void tos_cpu_int_enable(void) -{ - port_int_enable(); -} - -__API__ cpu_cpsr_t tos_cpu_cpsr_save(void) -{ - return port_cpsr_save(); -} - -__API__ void tos_cpu_cpsr_restore(cpu_cpsr_t cpsr) -{ - port_cpsr_restore(cpsr); -} - -__KERNEL__ void cpu_init(void) -{ - k_cpu_cycle_per_tick = TOS_CFG_CPU_CLOCK / k_cpu_tick_per_second; - cpu_systick_init(k_cpu_cycle_per_tick); - -#if (TOS_CFG_CPU_HRTIMER_EN > 0) - tos_cpu_hrtimer_init(); -#endif -} - -__KERNEL__ void cpu_reset(void) -{ - port_cpu_reset(); -} - -__KERNEL__ void cpu_sched_start(void) -{ - port_sched_start(); -} - -__KERNEL__ void cpu_context_switch(void) -{ - port_context_switch(); -} - -__KERNEL__ void cpu_irq_context_switch(void) -{ - port_irq_context_switch(); -} - -__KERNEL__ void cpu_systick_init(k_cycle_t cycle_per_tick) -{ - port_systick_priority_set(TOS_CFG_CPU_SYSTICK_PRIO); - port_systick_config(cycle_per_tick); -} - -#if TOS_CFG_TICKLESS_EN > 0u - -/** - * @brief Set value to systick reload value register - * - * @param cycles The value set to register - * - * @return None - */ -__STATIC_INLINE__ void cpu_systick_reload(k_cycle_t cycle_per_tick) -{ - port_systick_reload(cycle_per_tick); -} - -/** - * @brief Enable systick interrupt - * - * @return None - */ -__KERNEL__ void cpu_systick_resume(void) -{ - port_systick_resume(); -} - -/** - * @brief Disable systick interrupt - * - * @return None - */ -__KERNEL__ void cpu_systick_suspend(void) -{ - port_systick_suspend(); -} - -__KERNEL__ k_time_t cpu_systick_max_delay_millisecond(void) -{ - return port_systick_max_delay_millisecond(); -} - -__KERNEL__ void cpu_systick_expires_set(k_time_t millisecond) -{ - k_cycle_t cycles; - - cycles = (k_cycle_t)((uint64_t)millisecond * TOS_CFG_CPU_CLOCK / K_TIME_MILLISEC_PER_SEC); /* CLOCK means cycle per second */ - - cpu_systick_reload(cycles - 12); /* interrupt delay */ -} - -__KERNEL__ void cpu_systick_pending_reset(void) -{ - port_systick_pending_reset(); -} - -__KERNEL__ void cpu_systick_reset(void) -{ - cpu_systick_reload(k_cpu_cycle_per_tick); -} - -#endif /* TOS_CFG_TICKLESS_EN */ - -#if TOS_CFG_PWR_MGR_EN > 0u - -__KERNEL__ void cpu_sleep_mode_enter(void) -{ - port_sleep_mode_enter(); -} - -__KERNEL__ void cpu_stop_mode_enter(void) -{ - port_stop_mode_enter(); -} - -__KERNEL__ void cpu_standby_mode_enter(void) -{ - port_standby_mode_enter(); -} - -#endif /* TOS_CFG_PWR_MGR_EN */ - -__KERNEL__ k_stack_t *cpu_task_stk_init(void *entry, - void *arg, - void *exit, - k_stack_t *stk_base, - size_t stk_size) -{ - cpu_data_t *sp; - - sp = (cpu_data_t *)&stk_base[stk_size]; - sp = (cpu_data_t *)((cpu_addr_t)sp & 0xFFFFFFF8); - -#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u - uint8_t *slot = (uint8_t *)&stk_base[0]; - for (; slot < (uint8_t *)sp; ++slot) { - *slot = 0xCC; - } -#endif - - /* auto-saved on exception(pendSV) by hardware */ - *--sp = (cpu_data_t)0x01000000u; /* xPSR */ - *--sp = (cpu_data_t)entry; /* entry */ - *--sp = (cpu_data_t)exit; /* R14 (LR) */ - *--sp = (cpu_data_t)0x12121212u; /* R12 */ - *--sp = (cpu_data_t)0x03030303u; /* R3 */ - *--sp = (cpu_data_t)0x02020202u; /* R2 */ - *--sp = (cpu_data_t)0x01010101u; /* R1 */ - *--sp = (cpu_data_t)arg; /* R0: arg */ - - /* Remaining registers saved on process stack */ - /* EXC_RETURN = 0xFFFFFFFDL - Initial state: Thread mode + non-floating-point state + PSP - 31 - 28 : EXC_RETURN flag, 0xF - 27 - 5 : reserved, 0xFFFFFE - 4 : 1, basic stack frame; 0, extended stack frame - 3 : 1, return to Thread mode; 0, return to Handler mode - 2 : 1, return to PSP; 0, return to MSP - 1 : reserved, 0 - 0 : reserved, 1 - */ -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - *--sp = (cpu_data_t)0xFFFFFFFDL; -#endif - - *--sp = (cpu_data_t)0x11111111u; /* R11 */ - *--sp = (cpu_data_t)0x10101010u; /* R10 */ - *--sp = (cpu_data_t)0x09090909u; /* R9 */ - *--sp = (cpu_data_t)0x08080808u; /* R8 */ - *--sp = (cpu_data_t)0x07070707u; /* R7 */ - *--sp = (cpu_data_t)0x06060606u; /* R6 */ - *--sp = (cpu_data_t)0x05050505u; /* R5 */ - *--sp = (cpu_data_t)0x04040404u; /* R4 */ - - return (k_stack_t *)sp; -} - -#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u - -__KERNEL__ k_err_t cpu_task_stack_draught_depth(k_stack_t *stk_base, size_t stk_size, int *depth) -{ - uint8_t *slot; - uint8_t *sp, *bp; - int the_depth = 0; - - bp = (uint8_t *)&stk_base[0]; - - sp = &stk_base[stk_size]; - sp = (uint8_t *)((cpu_addr_t)sp & 0xFFFFFFF8); - - for (slot = sp - 1; slot >= bp; --slot) { - if (*slot != 0xCC) { - the_depth = sp - slot; - } - } - - *depth = the_depth; - if (the_depth == stk_size) { - return K_ERR_TASK_STK_OVERFLOW; - } - - return K_ERR_NONE; -} - -#endif - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) -__KERNEL__ void cpu_flush_fpu(void) -{ - (void)__get_FPSCR(); -} -#endif - -__KERNEL__ void cpu_fault_diagnosis(void) -{ - port_fault_diagnosis(); -} - -#endif /* TOS_CFG_FAULT_BACKTRACE_EN */ - diff --git a/board/Nuvoton_M251/TencentOS/arch/tos_fault.c b/board/Nuvoton_M251/TencentOS/arch/tos_fault.c deleted file mode 100644 index e55e6e56..00000000 --- a/board/Nuvoton_M251/TencentOS/arch/tos_fault.c +++ /dev/null @@ -1,251 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u - -__STATIC_INLINE__ void fault_spin(void) -{ - tos_knl_sched_lock(); - tos_cpu_int_disable(); - while (K_TRUE) { - ; - } -} - -/* EXC_RETURN: - 31 - 28 : EXC_RETURN flag - 27 - 5 : reserved - 4 : 1, basic stack frame; 0, extended stack frame - 3 : 1, return to Thread mode; 0, return to Handler mode - 2 : 1, return to PSP; 0, return to MSP - 1 : reserved, 0 - 0 : reserved, 1 - */ -__STATIC_INLINE__ int fault_is_on_task(cpu_data_t lr) -{ - return (lr & (1u << 2)) != 0; -} - -__STATIC_INLINE__ int fault_is_thumb(cpu_data_t psr) -{ - return (psr & (1u << 24)) != 0; -} - -__STATIC_INLINE__ int fault_is_code(fault_info_t *info, cpu_data_t value) -{ - return value >= info->code_start && value <= info->code_limit; -} - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) -__STATIC_INLINE__ int fault_is_extended_stack_frame(cpu_data_t lr) -{ - return (lr & (1u << 4)) == 0; -} - -__STATIC__ void fault_dump_fpu_frame(fault_fpu_frame_t *fpu_frame) -{ - /* - * As known, v7-m has a feature named "LAZY PUSH", for the reason we do not do any float - * operation in fault_backtrace, cpu will not do the real fpu register push to the stack. - * that means the value we dump in fault_dump_fpu_frame will not be the correct value of - * each FPU register. - * We define a function here which access to FPSCR, if this function involved, cpu will do - * the real FPU register push so we will get the correct dump. - * I know it's ugly, but it works. If you know a better way, please tell me. - */ - cpu_flush_fpu(); - - k_fault_log_writer("\n\n====================== FPU Registers =======================\n"); - k_fault_log_writer(" %s: %08x\n", "FPSCR", fpu_frame->fpscr); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "S0 ", fpu_frame->s0, - "S1 ", fpu_frame->s1, - "S2 ", fpu_frame->s2, - "S3 ", fpu_frame->s3); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "S4 ", fpu_frame->s4, - "S5 ", fpu_frame->s5, - "S6 ", fpu_frame->s6, - "S7 ", fpu_frame->s7); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "S8 ", fpu_frame->s8, - "S9 ", fpu_frame->s9, - "S10", fpu_frame->s10, - "S11", fpu_frame->s11); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "S12", fpu_frame->s12, - "S13", fpu_frame->s13, - "S14", fpu_frame->s14, - "S15", fpu_frame->s15); -} - -#endif - -__STATIC__ void fault_dump_cpu_frame(fault_cpu_frame_t *cpu_frame) -{ - k_fault_log_writer("\n\n====================== CPU Registers =======================\n"); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "R0 ", cpu_frame->r0, - "R1 ", cpu_frame->r1, - "R2 ", cpu_frame->r2, - "R3 ", cpu_frame->r3); - k_fault_log_writer(" %s: %08x %s: %08x %s: %08x %s: %08x\n", - "R12", cpu_frame->r12, - "LR ", cpu_frame->lr, - "PC ", cpu_frame->pc, - "PSR", cpu_frame->spsr); -} - -__STATIC__ void fault_dump_stack(fault_info_t *info, size_t depth) -{ - cpu_addr_t sp = info->sp_before_fault;; - - k_fault_log_writer("\nTASK STACK DUMP:\n"); - while (sp <= info->stack_limit && depth--) { - k_fault_log_writer(" addr: %08x data: %08x\n", sp, (cpu_data_t)*(cpu_data_t *)sp); - sp += sizeof(cpu_addr_t); - } -} - -__STATIC__ void fault_call_stack_backtrace(fault_info_t *info, size_t depth) -{ - cpu_data_t value; - cpu_addr_t sp = info->sp_before_fault; - - if (info->is_stk_ovrf) { - return; - } - - k_fault_log_writer("\n\n====================== Dump Call Stack =====================\n"); - - k_fault_log_writer(" %x\n", info->pc); - - /* walk through the stack, check every content on stack whether is a instruction(code) */ - for (; sp < info->stack_limit && depth; sp += sizeof(cpu_addr_t)) { - value = *((cpu_addr_t *)sp) - sizeof(cpu_addr_t); - - /* if thumb, a instruction's first bit must be 1 */ - if (info->is_thumb && !(value & 1)) { - continue; - } - - if (fault_is_code(info, value)) { - k_fault_log_writer(" %x\n", value); - --depth; - } - } -} - -__STATIC__ void fault_dump_task(fault_info_t *info) -{ - k_task_t *task; - - if (!info->is_on_task) { - return; - } - - task = k_curr_task; - k_fault_log_writer("\n\n====================== Fault on task =======================\n"); - k_fault_log_writer(" TASK NAME: %s\n", task->name); - k_fault_log_writer(" STK BASE: %x\n", info->stack_start); - k_fault_log_writer(" STK SIZE: %x\n", task->stk_size * sizeof(k_stack_t)); - k_fault_log_writer(" STK LIMIT: %x\n", info->stack_limit); - - if (!info->is_stk_ovrf) { - fault_dump_stack(info, K_FAULT_STACK_DUMP_DEPTH); - } -} - -__STATIC__ void fault_dump_information(fault_info_t *info) -{ - k_fault_log_writer("\n\n================== Dump Fault Information ==================\n"); - k_fault_log_writer(" THUMB: %s\n", info->is_thumb ? "TRUE" : "FALSE"); - k_fault_log_writer(" ON TASK: %s\n", info->is_on_task? "TRUE" : "FALSE"); - k_fault_log_writer(" STK OVRF: %s\n", info->is_stk_ovrf? "TRUE" : "FALSE"); - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - k_fault_log_writer(" EXT STK: %s\n", info->is_ext_stk_frm? "TRUE" : "FALSE"); -#endif - - k_fault_log_writer(" PC: %08x\n", info->pc); - k_fault_log_writer(" SP: %08x\n", info->sp_before_fault); - k_fault_log_writer(" STK START: %08x\n", info->stack_start); - k_fault_log_writer(" STK LIMIT: %08x\n", info->stack_limit); - k_fault_log_writer(" COD START: %08x\n", info->code_start); - k_fault_log_writer(" COD LIMIT: %08x\n", info->code_limit); -} - -__STATIC__ void fault_gather_information(cpu_data_t lr, fault_exc_frame_t *frame, fault_info_t *info) -{ - info->is_thumb = fault_is_thumb(frame->cpu_frame.spsr); - info->is_on_task = fault_is_on_task(lr); - - info->pc = frame->cpu_frame.pc; - - info->sp_before_fault = (cpu_addr_t)frame + sizeof(fault_cpu_frame_t); - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - info->is_ext_stk_frm = fault_is_extended_stack_frame(lr); - - if (info->is_ext_stk_frm) { - info->sp_before_fault += sizeof(fault_fpu_frame_t); - } -#endif - - info->code_start = fault_code_start(); - info->code_limit = fault_code_limit(); - - if (info->is_on_task) { - info->stack_start = (cpu_addr_t)k_curr_task->stk_base; - info->stack_limit = info->stack_start + k_curr_task->stk_size * sizeof(k_task_t); - } else { - info->stack_start = fault_msp_start(); - info->stack_limit = fault_msp_limit(); - } - - info->is_stk_ovrf = (info->sp_before_fault < info->stack_start || info->sp_before_fault > info->stack_limit); -} - -__KERNEL__ int fault_default_log_writer(const char *format, ...) -{ - int len; - va_list ap; - - va_start(ap, format); - len = vprintf(format, ap); - va_end(ap); - - return len; -} - -__API__ void tos_fault_log_writer_set(k_fault_log_writer_t log_writer) -{ - k_fault_log_writer = log_writer; -} - -__KERNEL__ void fault_backtrace(cpu_addr_t lr, fault_exc_frame_t *frame) -{ - fault_info_t info; - - fault_gather_information(lr, frame, &info); - - fault_dump_information(&info); - - fault_dump_task(&info); - - fault_dump_cpu_frame(&frame->cpu_frame); - -#if defined (TOS_CFG_CPU_ARM_FPU_EN) && (TOS_CFG_CPU_ARM_FPU_EN == 1U) - if (info.is_ext_stk_frm) { - fault_dump_fpu_frame(&frame->fpu_frame); - } -#endif - - fault_call_stack_backtrace(&info, K_FAULT_CALL_STACK_BACKTRACE_DEPTH); - - cpu_fault_diagnosis(); - - fault_spin(); -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos.h deleted file mode 100644 index 10f58204..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef _TOS_H_ -#define _TOS_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif /* _TOS_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_compiler.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_compiler.h deleted file mode 100644 index 88a36c45..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_compiler.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef _TOS_COMPILER_H_ -#define _TOS_COMPILER_H_ - -// function with __API__ prefix, api for user -#define __API__ - -// function with __KERNEL__ prefix, only for kernel -#define __KERNEL__ - -// function with __HOOK__ prefix, should be implemented by user -#define __HOOK__ - -// function with __DEBUG__ prefix, only for debug -#define __DEBUG__ - -// function with __PORT__ is architecture depended -#define __PORT__ - -/*------------------ RealView Compiler -----------------*/ -#if defined(__CC_ARM) - -#define __ASM__ __asm -#define __VOLATILE__ volatile - -#define __INLINE__ inline -#define __STATIC__ static - -#if (__ARMCC_VERSION < 5060750) // how to know the exact number? -#define __STATIC_INLINE__ static -#else -#define __STATIC_INLINE__ static inline -#endif - -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#define __UNUSED__ __attribute__((__unused__)) -#define __USED__ __attribute__((__used__)) -#define __PACKED__ __attribute__((packed)) -#define __ALIGNED__(x) __attribute__((aligned(x))) -#define __PURE__ __attribute__((__pure__)) -#define __CONST__ __attribute__((__const__)) -#define __NO_RETURN__ __attribute__((__noreturn__)) - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - -#define __ASM__ __asm -#define __VOLATILE__ volatile - -#define __INLINE__ inline -#define __STATIC__ static -#define __STATIC_INLINE__ static inline - -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#define __UNUSED__ __attribute__((__unused__)) -#define __USED__ __attribute__((__used__)) -#define __PACKED__ __attribute__((packed)) -#define __ALIGNED__(x) __attribute__((aligned(x))) -#define __PURE__ __attribute__((__pure__)) -#define __CONST__ __attribute__((__const__)) -#define __NO_RETURN__ __attribute__((__noreturn__)) -#define __NAKED__ __attribute__((naked)) - -/*------------------ ICC Compiler ----------------------*/ -#elif defined(__ICCARM__) - -#define __ASM__ __asm -#define __VOLATILE__ volatile - -#define __INLINE__ inline -#define __STATIC__ static -#define __STATIC_INLINE__ static inline - -#define likely(x) (x) -#define unlikely(x) (x) -#define __UNUSED__ -#define __USED__ -#define __PACKED__ -#define __ALIGNED__(x) -#define __PURE__ -#define __CONST__ -#define __NO_RETURN__ -#define __NAKED__ - -/*------------------ GNU Compiler ----------------------*/ -#elif defined(__GNUC__) - -#define __ASM__ __asm -#define __VOLATILE__ volatile - -#define __INLINE__ inline -#define __STATIC__ static -#define __STATIC_INLINE__ static inline - -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#define __UNUSED__ __attribute__((__unused__)) -#define __USED__ __attribute__((__used__)) -#define __PACKED__ __attribute__((packed)) -#define __ALIGNED__(x) __attribute__((aligned(x))) -#define __PURE__ __attribute__((__pure__)) -#define __CONST__ __attribute__((__const__)) -#define __NO_RETURN__ __attribute__((__noreturn__)) -#define __NAKED__ __attribute__((naked)) - -#endif - -#endif /* _TOS_COMPILER_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_check.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_check.h deleted file mode 100644 index 0d369a68..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_check.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef _TOS_CONFIG_CHECK_H_ -#define _TOS_CONFIG_CHECK_H_ - -#if TOS_CFG_TASK_PRIO_MAX < 8u -#error "INVALID config, TOS_CFG_TASK_PRIO_MAX must be >= 8" -#endif - -#if (TOS_CFG_QUEUE_EN > 0u) && (TOS_CFG_MSG_EN == 0u) -#error "INVALID config, must enable tos_msg to use tos_queue" -#endif - -#if ((TOS_CFG_TIMER_EN > 0u) && !defined(TOS_CFG_TIMER_AS_PROC)) -#error "UNDECLARED config, TOS_CFG_TIMER_AS_PROC" -#endif - -#if (TOS_CFG_VFS_EN > 0u) && (TOS_CFG_MMHEAP_EN == 0u) -#error "INVALID config, must enable tos_mmheap to use tos_vfs" -#endif - -#ifndef TOS_CFG_CPU_HRTIMER_EN -#error "UNDECLARED config, TOS_CFG_CPU_HRTIMER_EN should be declared in 'port.h'" -#elif (TOS_CFG_CPU_HRTIMER_EN > 0u) && !defined(TOS_CFG_CPU_HRTIMER_SIZE) -#error "UNDECLARED config, TOS_CFG_CPU_HRTIMER_SIZE should be declared in 'port.h'" -#elif ((TOS_CFG_CPU_HRTIMER_SIZE != CPU_WORD_SIZE_08) && \ - (TOS_CFG_CPU_HRTIMER_SIZE != CPU_WORD_SIZE_16) && \ - (TOS_CFG_CPU_HRTIMER_SIZE != CPU_WORD_SIZE_32) && \ - (TOS_CFG_CPU_HRTIMER_SIZE != CPU_WORD_SIZE_64)) -#error "INVALID config, TOS_CFG_CPU_HRTIMER_SIZE" -#endif - -#ifndef TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT -#error "UNDECLARED config, TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT, should be declared in 'port.h'" -#endif - -#ifndef TOS_CFG_CPU_STK_GROWTH -#error "UNDECLARED config, TOS_CFG_CPU_STK_GROWTH, should be declared in 'port.h'" -#elif ((TOS_CFG_CPU_STK_GROWTH != CPU_STK_GROWTH_ASCENDING) && \ - (TOS_CFG_CPU_STK_GROWTH != CPU_STK_GROWTH_DESCENDING)) -#error "INVALID config, TOS_CFG_CPU_STK_GROWTH" -#endif - -#ifndef TOS_CFG_CPU_ADDR_SIZE -#error "UNDECLARED config, TOS_CFG_CPU_ADDR_SIZE, should be declared in 'port.h'" -#elif ((TOS_CFG_CPU_ADDR_SIZE != CPU_WORD_SIZE_08) && \ - (TOS_CFG_CPU_ADDR_SIZE != CPU_WORD_SIZE_16) && \ - (TOS_CFG_CPU_ADDR_SIZE != CPU_WORD_SIZE_32) && \ - (TOS_CFG_CPU_ADDR_SIZE != CPU_WORD_SIZE_64)) -#error "INVALID config, TOS_CFG_CPU_ADDR_SIZE" -#endif - -#ifndef TOS_CFG_CPU_DATA_SIZE -#error "UNDECLARED config, TOS_CFG_CPU_DATA_SIZE, should be declared in 'port.h'" -#elif ((TOS_CFG_CPU_DATA_SIZE != CPU_WORD_SIZE_08) && \ - (TOS_CFG_CPU_DATA_SIZE != CPU_WORD_SIZE_16) && \ - (TOS_CFG_CPU_DATA_SIZE != CPU_WORD_SIZE_32) && \ - (TOS_CFG_CPU_DATA_SIZE != CPU_WORD_SIZE_64)) -#error "INVALID config, TOS_CFG_CPU_DATA_SIZE" -#endif - -#endif /* _TOS_CHECK_CONFIG_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_default.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_default.h deleted file mode 100644 index 3087ee4f..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_config_default.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef _TOS_CONFIG_DEFAULT_H_ -#define _TOS_CONFIG_DEFAULT_H_ - -#ifndef TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN -#define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN 0u -#endif - -#ifndef TOS_CFG_ROUND_ROBIN_EN -#define TOS_CFG_ROUND_ROBIN_EN 0u -#endif - -#ifndef TOS_CFG_EVENT_EN -#define TOS_CFG_EVENT_EN 0u -#endif - -#ifndef TOS_CFG_MMHEAP_EN -#define TOS_CFG_MMHEAP_EN 0u -#endif - -#ifndef TOS_CFG_MUTEX_EN -#define TOS_CFG_MUTEX_EN 0u -#endif - -#ifndef TOS_CFG_QUEUE_EN -#define TOS_CFG_QUEUE_EN 0u -#endif - -#ifndef TOS_CFG_SEM_EN -#define TOS_CFG_SEM_EN 0u -#endif - -#if (TOS_CFG_QUEUE_EN > 0u) && !defined(TOS_CFG_MSG_EN) -#define TOS_CFG_MSG_EN 1u -#elif (TOS_CFG_QUEUE_EN == 0u) && !defined(TOS_CFG_MSG_EN) -#define TOS_CFG_MSG_EN 0u -#endif - -#ifndef TOS_CFG_TIMER_EN -#define TOS_CFG_TIMER_EN 0u -#endif - -#if (TOS_CFG_TIMER_EN > 0u) && !defined(TOS_CFG_TIMER_AS_PROC) -#define TOS_CFG_TIMER_AS_PROC 0u -#endif - -#ifndef TOS_CFG_MSG_POOL_SIZE -#define TOS_CFG_MSG_POOL_SIZE 100u -#endif - -#ifndef TOS_CFG_IDLE_TASK_STK_SIZE -#define TOS_CFG_IDLE_TASK_STK_SIZE 128u -#endif - -#ifndef TOS_CFG_OBJECT_VERIFY_EN -#define TOS_CFG_OBJECT_VERIFY_EN 0u -#endif - -#if (TOS_CFG_TIMER_AS_PROC == 0u) && !defined(TOS_CFG_TIMER_TASK_PRIO) -#define TOS_CFG_TIMER_TASK_PRIO (k_prio_t)(K_TASK_PRIO_IDLE - (k_prio_t)1u) -#endif - -#if (TOS_CFG_TIMER_AS_PROC == 0u) && !defined(TOS_CFG_TIMER_TASK_STK_SIZE) -#define TOS_CFG_TIMER_TASK_STK_SIZE 128u -#endif - -#ifndef TOS_CFG_CPU_SYSTICK_PRIO -#define TOS_CFG_CPU_SYSTICK_PRIO 0u -#endif - -#ifndef TOS_CFG_CPU_TICK_PER_SECOND -#define TOS_CFG_CPU_TICK_PER_SECOND 1000u -#endif - -#ifndef TOS_CFG_CPU_CLOCK -#define TOS_CFG_CPU_CLOCK 16000000u -#endif - -#ifndef TOS_CFG_TASK_PRIO_MAX -#define TOS_CFG_TASK_PRIO_MAX 10u -#endif - -#ifndef TOS_CFG_MMBLK_EN -#define TOS_CFG_MMBLK_EN 0u -#endif - -#ifndef TOS_CFG_MMHEAP_EN -#define TOS_CFG_MMHEAP_EN 0u -#endif - -#if (TOS_CFG_MMHEAP_EN > 0u) && !defined(TOS_CFG_MMHEAP_POOL_SIZE) -#define TOS_CFG_MMHEAP_POOL_SIZE 0x1000 -#endif - -#ifndef TOS_CFG_PWR_MGR_EN -#define TOS_CFG_PWR_MGR_EN 0u -#endif - -#ifndef TOS_CFG_TICKLESS_EN -#define TOS_CFG_TICKLESS_EN 0u -#endif - -#if (TOS_CFG_PWR_MGR_EN > 0u) || (TOS_CFG_TICKLESS_EN > 0u) -#if TOS_CFG_IDLE_TASK_STK_SIZE < 256 -#undef TOS_CFG_IDLE_TASK_STK_SIZE -#define TOS_CFG_IDLE_TASK_STK_SIZE 256u -#endif -#endif - -#ifndef TOS_CFG_FAULT_BACKTRACE_EN -#define TOS_CFG_FAULT_BACKTRACE_EN 0u -#endif - -#endif /* _TOS_CONFIG_DEFAULT_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_err.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_err.h deleted file mode 100644 index c1806952..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_err.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef _TOS_ERR_H_ -#define _TOS_ERR_H_ - -typedef enum k_err_en { - K_ERR_NONE = 0u, - - K_ERR_DELAY_ZERO = 100u, - K_ERR_DELAY_FOREVER, - - K_ERR_EVENT_PEND_OPT_INVALID = 200u, - - K_ERR_FIFO_FULL = 300u, - K_ERR_FIFO_EMPTY, - - K_ERR_IN_IRQ = 400u, - - K_ERR_KNL_NOT_RUNNING = 500u, - K_ERR_KNL_RUNNING, - - K_ERR_LOCK_NESTING_OVERFLOW = 600u, - - K_ERR_MMBLK_POOL_FULL = 700u, - K_ERR_MMBLK_POOL_EMPTY, - K_ERR_MMBLK_INVALID_BLK_SIZE, - K_ERR_MMBLK_INVALID_POOL_ADDR, - - K_ERR_MMHEAP_INVALID_POOL_ADDR = 800u, - K_ERR_MMHEAP_INVALID_POOL_SIZE, - - K_ERR_MSG_QUEUE_FULL = 900u, - K_ERR_MSG_QUEUE_EMPTY, - - K_ERR_MUTEX_NOT_OWNER = 1000u, - K_ERR_MUTEX_NESTING, - K_ERR_MUTEX_NESTING_OVERFLOW, - - K_ERR_OBJ_PTR_NULL = 1100u, - K_ERR_OBJ_INVALID, - - K_ERR_PM_DEVICE_ALREADY_REG = 1200u, - K_ERR_PM_DEVICE_OVERFLOW = 1300u, - K_ERR_PM_WKUP_SOURCE_NOT_INSTALL = 1400u, - - K_ERR_QUEUE_EMPTY = 1500u, - K_ERR_QUEUE_FULL, - - K_ERR_PEND_NOWAIT = 1600u, - K_ERR_PEND_SCHED_LOCKED, - K_ERR_PEND_ABNORMAL, - K_ERR_PEND_TIMEOUT, - K_ERR_PEND_DESTROY, - K_ERR_PEND_OWNER_DIE, - - K_ERR_SCHED_LOCKED = 1700u, - K_ERR_SCHED_NOT_LOCKED, - - K_ERR_SEM_OVERFLOW = 1800u, - - K_ERR_TASK_DESTROY_IDLE = 1900u, - K_ERR_TASK_NOT_DELAY, - K_ERR_TASK_PRIO_INVALID, - K_ERR_TASK_RESUME_SELF, - K_ERR_TASK_SUSPENDED, - K_ERR_TASK_SUSPEND_IDLE, - K_ERR_TASK_STK_OVERFLOW, - K_ERR_TASK_STK_SIZE_INVALID, - - K_ERR_TICKLESS_WKUP_ALARM_NOT_INSTALLED = 2000u, - K_ERR_TICKLESS_WKUP_ALARM_NO_INIT, - K_ERR_TICKLESS_WKUP_ALARM_INIT_FAILED, - - K_ERR_TIMER_INACTIVE = 2100u, - K_ERR_TIMER_DELAY_FOREVER, - K_ERR_TIMER_PERIOD_FOREVER, - K_ERR_TIMER_INVALID_DELAY, - K_ERR_TIMER_INVALID_PERIOD, - K_ERR_TIMER_INVALID_STATE, - K_ERR_TIMER_INVALID_OPT, - K_ERR_TIMER_STOPPED, -} k_err_t; - -#endif /* _TOS_ERR_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_event.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_event.h deleted file mode 100644 index f7d02e2f..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_event.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef _TOS_EVENT_H_ -#define _TOS_EVENT_H_ - -#if TOS_CFG_EVENT_EN > 0 - -// if we are pending an event, for any flag we expect is set is ok, this flag should be passed to tos_event_pend -#define TOS_OPT_EVENT_PEND_ANY (k_opt_t)0x0001 - -// if we are pending an event, must all the flag we expect is set is ok, this flag should be passed to tos_event_pend -#define TOS_OPT_EVENT_PEND_ALL (k_opt_t)0x0002 - -// if we are pending an event, and we wanna clear the event's flag after we read, this flag should be passed to tos_event_pend -/* ATTENTION: - we can pass both TOS_OPT_EVENT_PEND_CLR and TOS_OPT_EVENT_PEND_ANY, or TOS_OPT_EVENT_PEND_CLR and TOS_OPT_EVENT_PEND_ALL - to tos_event_pend, if we wanna do this, a (TOS_OPT_EVENT_PEND_CLR | TOS_OPT_EVENT_PEND_ANY) or - (TOS_OPT_EVENT_PEND_CLR | TOS_OPT_EVENT_PEND_ALL) should be passed. - but, (TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_ALL) is invalid, we cannot both wanna any and all flag is set. - */ -#define TOS_OPT_EVENT_PEND_CLR (k_opt_t)0x0004 - -typedef enum opt_event_post_en { - OPT_EVENT_POST_KEP, - OPT_EVENT_POST_CLR, -} opt_event_post_t; - -typedef struct k_event_st { - pend_obj_t pend_obj; - k_event_flag_t flag; -} k_event_t; - -/** - * @brief Create an event. - * create an event. - * - * @attention None - * - * @param[in] event pointer to the handler of the event. - * @param[in] init_flag initial flag of the event. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_event_create(k_event_t *event, k_event_flag_t init_flag); - -/** - * @brief Destroy an event. - * destroy an event. - * - * @attention None - * - * @param[in] event pointer to the handler of the event. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_event_destroy(k_event_t *event); - -/** - * @brief Pend an event. - * pend an event. - * - * @attention if opt is TOS_OPT_EVENT_PEND_ANY, any of the flag_expect is set is ok; - * if opt is TOS_OPT_EVENT_PEND_ALL£¬ must all the flag_expect is set is ok. - * - * @param[in] event pointer to the handler of the event. - * @param[in] flag_expect the flag we expect from the event. - * @param[OUT] flag_match if we get the flag we expect, what exactly they are? - * @param[in] timeout how much time(in k_tick_t) we would like to wait. - * @param[in] opt option for pend. - * - * @return errcode - * @retval #K_ERR_EVENT_PEND_OPT_INVALID opt is invalid - * @retval #K_ERR_PEND_NOWAIT we get nothing, and we don't wanna wait. - * @retval #K_ERR_PEND_SCHED_LOCKED we can wait, but scheduler is locked. - * @retval #K_ERR_PEND_TIMEOUT the time we wait is up, we get nothing. - * @retval #K_ERR_PEND_DESTROY the event we are pending is destroyed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_event_pend(k_event_t *event, k_event_flag_t flag_expect, k_event_flag_t *flag_match, k_tick_t timeout, k_opt_t opt); - -/** - * @brief Post an event. - * post an event. - * - * @attention if you are posting an event in tos_event_post, event's own flag will be overwrited by the flag we post. - * eg. if an event's own flag is 0x0001, and we are posting a flag 0x0030, after the post, the event's flag - * will be overwrited to 0x0030. - * - * @param[in] event pointer to the handler of the event. - * @param[in] flag the flag we post. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_event_post(k_event_t *event, k_event_flag_t flag); - -/** - * @brief Post an event. - * post an event, and keep the original own flag of the event. - * - * @attention the original own flag of the event will be keeped. - * eg.if an event's own flag is 0x0001, and we are posting a flag 0x0030, after the post, the event's flag - * will be changed to 0x0031(0x0030 | 0x0001), which means the event's original flag is keeped. - * - * @param[in] event pointer to the handler of the event. - * @param[in] flag the flag we post. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_event_post_keep(k_event_t *event, k_event_flag_t flag); - -#endif - -#endif /* _TOS_EVENT_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_fifo.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_fifo.h deleted file mode 100644 index 8affcb85..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_fifo.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef _TOS_FIFO_H_ -#define _TOS_FIFO_H_ - -typedef struct k_fifo_st { -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_obj_t knl_obj; -#endif - - int beg; - int end; - size_t cnt; - uint8_t *buf; - size_t siz; -} k_fifo_t; - -/** - * @brief Create a fifo. - * Create a fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * @param[in] buffer memory buffer provided to be as the inner buffer. - * @param[in] size size of the memory buffer. - * - * @return errno - * @retval #K_ERR_OBJ_PTR_NULL fifo is a NULL pointer. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_fifo_create(k_fifo_t *fifo, uint8_t *buffer, size_t size); - -/** - * @brief Destroy a fifo. - * Destroy a fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * - * @return errno - * @retval #K_ERR_OBJ_PTR_NULL fifo is a NULL pointer. - * @retval #K_ERR_OBJ_INVALID not a valid pointer to a fifo. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_fifo_destroy(k_fifo_t *fifo); - -/** - * @brief Push data into fifo. - * Push one single data into the fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * @param[in] data data to push into the fifo. - * - * @return errno - * @retval #K_ERR_FIFO_FULL the fifo is full. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_fifo_push(k_fifo_t *fifo, uint8_t data); - -/** - * @brief Push stream into fifo. - * Push a stream data into the fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * @param[IN] stream stream to be pushed into the fifo. - * @param[OUT] size size of the stream. - * - * @return the actual number of the data pushed into the fifo. - */ -__API__ int tos_fifo_push_stream(k_fifo_t *fifo, uint8_t *stream, size_t size); - -/** - * @brief Pop data from fifo. - * Pop one single data from the fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * @param[OUT] out one signle buffer to hold the data poped from the fifo. - * - * @return errno - * @retval #K_ERR_FIFO_EMPTY the fifo is empty. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_fifo_pop(k_fifo_t *fifo, uint8_t *out); - -/** - * @brief Pop stream from fifo. - * Pop a stream data from the fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * @param[OUT] buffer pointer to the buffer to receive the stream poped. - * @param[OUT] size size of the buffer. - * - * @return the actual number of the data poped from the fifo. - */ -__API__ int tos_fifo_pop_stream(k_fifo_t *fifo, uint8_t *buffer, size_t size); - -/** - * @brief Flush fifo. - * Flush/reset the fifo. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * - * @return None. - */ -__API__ void tos_fifo_flush(k_fifo_t *fifo); - -/** - * @brief Whether the fifo is empty. - * Whether the fifo is empty. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * - * @return whether the fifo is emtpy. - * @retval #0 the fifo is not empty. - * @retval #Not 0 the fifo is empty. - */ -__API__ int tos_fifo_is_empty(k_fifo_t *fifo); - -/** - * @brief Whether the fifo is full. - * Whether the fifo is full. - * - * @attention None - * - * @param[in] fifo pointer to the handler of the fifo. - * - * @return whether the fifo is full. - * @retval #0 the fifo is not full. - * @retval #Not 0 the fifo is full. - */ -__API__ int tos_fifo_is_full(k_fifo_t *fifo); - -#endif // _TOS_FIFO_H_ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_global.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_global.h deleted file mode 100644 index 9193d51c..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_global.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef _TOS_GLOBAL_H_ -#define _TOS_GLOBAL_H_ - -/* interrupt nesting count */ -extern k_nesting_t k_irq_nest_cnt; - -/* schedule lock nesting count */ -extern k_nesting_t k_sched_lock_nest_cnt; - -/* kernel running state */ -extern knl_state_t k_knl_state; - -/* ready queue of tasks */ -extern readyqueue_t k_rdyq; - -/* ticks since boot up */ -extern k_tick_t k_tick_count; - -/* current task */ -extern k_task_t *k_curr_task; -/* next task to run */ -extern k_task_t *k_next_task; - -/* idle task related stuff */ -extern k_task_t k_idle_task; -extern k_stack_t k_idle_task_stk[]; -extern k_stack_t *const k_idle_task_stk_addr; -extern size_t const k_idle_task_stk_size; - -/* list to hold all the task delayed or pend for timeout */ -extern k_list_t k_tick_list; - -/* how many ticks will be triggered in a second */ -extern k_tick_t k_cpu_tick_per_second; - -/* how many cycle per tick */ -extern k_cycle_t k_cpu_cycle_per_tick; - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u - -extern k_fault_log_writer_t k_fault_log_writer; - -#endif - -#if TOS_CFG_MMHEAP_EN > 0u -extern uint8_t k_mmheap_pool[] __ALIGNED__(4); -extern k_mmheap_ctl_t k_mmheap_ctl; -#endif - -#if TOS_CFG_ROUND_ROBIN_EN > 0u -extern k_timeslice_t k_robin_default_timeslice; -extern k_robin_state_t k_robin_state; -#endif - -#if TOS_CFG_TIMER_EN > 0u -/* list holding all the timer */ -extern timer_ctl_t k_timer_ctl; -#if TOS_CFG_TIMER_AS_PROC == 0u -extern k_task_t k_timer_task; -extern k_stack_t k_timer_task_stk[]; -extern k_prio_t const k_timer_task_prio; -extern k_stack_t *const k_timer_task_stk_addr; -extern size_t const k_timer_task_stk_size; -#endif -#endif - -#if (TOS_CFG_MSG_EN > 0u) -extern k_list_t k_msg_freelist; -extern k_msg_t k_msg_pool[]; -#endif - -#if TOS_CFG_PWR_MGR_EN > 0u -extern pm_device_ctl_t k_pm_device_ctl; - -extern idle_pwrmgr_mode_t k_idle_pwr_mgr_mode; - -extern k_cpu_lpwr_mode_t k_cpu_lpwr_mode; -#endif - -#if TOS_CFG_TICKLESS_EN > 0u -extern k_tickless_wkup_alarm_t *k_tickless_wkup_alarm[__LOW_POWER_MODE_DUMMY]; -#endif - -#endif /* _TOS_GLOBAL_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_klib.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_klib.h deleted file mode 100644 index 957c4c0c..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_klib.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _TOS_KLIB_H_ -#define _TOS_KLIB_H_ - -#include -#include -#include -#include -#include - -#define TOS_OFFSET_OF_FIELD(type, field) \ - ((uint32_t)&(((type *)0)->field)) - -#define TOS_CONTAINER_OF_FIELD(ptr, type, field) \ - ((type *)((uint8_t *)(ptr) - TOS_OFFSET_OF_FIELD(type, field))) - -#define TOS_PTR_SANITY_CHECK(ptr) \ - do { \ - if (unlikely((ptr) == K_NULL)) { \ - return K_ERR_OBJ_PTR_NULL; \ - } \ - } while(0) - -#define TOS_IN_IRQ_CHECK() \ - do { \ - if (unlikely(knl_is_inirq())) { \ - return K_ERR_IN_IRQ; \ - } \ - } while(0) - -// currently we use default microlib supplied by mdk -#define tos_kprintf(...) printf(__VA_ARGS__); - -#define tos_kprintln(...) \ - printf(__VA_ARGS__); \ - printf("\n"); - -#endif /* _TOS_KLIB_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_ktypes.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_ktypes.h deleted file mode 100644 index 7d5f9f57..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_ktypes.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _TOS_KTYPES_H_ -#define _TOS_KTYPES_H_ - -#include - -typedef uint8_t k_prio_t; -typedef uint8_t k_stack_t; -typedef uint8_t k_task_state_t; - -typedef uint8_t k_nesting_t; - -typedef uint16_t k_opt_t; -typedef uint16_t k_sem_cnt_t; -typedef uint32_t k_event_flag_t; - -typedef uint32_t k_time_t; -typedef uint32_t k_timeslice_t; - -typedef uint32_t k_cycle_t; -typedef uint64_t k_tick_t; - -#define K_TRUE (1u) -#define K_FALSE (0u) - -#ifndef K_NULL -#define K_NULL 0 -#endif - -#endif /* _TOS_KTYPES_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_list.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_list.h deleted file mode 100644 index 9abd889e..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_list.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef _TOS_LIST_H_ -#define _TOS_LIST_H_ - -typedef struct k_list_node_st { - struct k_list_node_st *next; - struct k_list_node_st *prev; -} k_list_t; - -#define TOS_LIST_NODE(node) \ - { &(node), &(node) } - -#define TOS_LIST_DEFINE(list) \ - k_list_t list = { &(list), &(list) } - -#define TOS_LIST_ENTRY(list, type, field) \ - TOS_CONTAINER_OF_FIELD(list, type, field) - -#define TOS_LIST_FIRST_ENTRY(list, type, field) \ - TOS_LIST_ENTRY((list)->next, type, field) - -#define TOS_LIST_FIRST_ENTRY_OR_NULL(list, type, field) \ - (tos_list_empty(list) ? K_NULL : TOS_LIST_FIRST_ENTRY(list, type, field)) - -#define TOS_LIST_FOR_EACH(curr, list) \ - for (curr = (list)->next; curr != (list); curr = curr->next) - -#define TOS_LIST_FOR_EACH_PREV(curr, list) \ - for (curr = (list)->prev; curr != (list); curr = curr->prev) - -#define TOS_LIST_FOR_EACH_SAFE(curr, next, list) \ - for (curr = (list)->next, next = curr->next; curr != (list); \ - curr = next, next = curr->next) - -#define TOS_LIST_FOR_EACH_PREV_SAFE(curr, next, list) \ - for (curr = (list)->prev, next = curr->prev; \ - curr != (list); \ - curr = next, next = curr->prev) - -__STATIC_INLINE__ void _list_add(k_list_t *node, k_list_t *prev, k_list_t *next) -{ - next->prev = node; - node->next = next; - node->prev = prev; - prev->next = node; -} - -__STATIC_INLINE__ void _list_del(k_list_t *prev, k_list_t *next) -{ - next->prev = prev; - prev->next = next; -} - -__STATIC_INLINE__ void _list_del_entry(k_list_t *entry) -{ - _list_del(entry->prev, entry->next); -} - -__API__ __STATIC_INLINE__ void tos_list_init(k_list_t *list) -{ - list->next = list; - list->prev = list; -} - -__API__ __STATIC_INLINE__ void tos_list_add(k_list_t *node, k_list_t *list) -{ - _list_add(node, list, list->next); -} - -__API__ __STATIC_INLINE__ void tos_list_add_tail(k_list_t *node, k_list_t *list) -{ - _list_add(node, list->prev, list); -} - -__API__ __STATIC_INLINE__ void tos_list_del(k_list_t *entry) -{ - _list_del(entry->prev, entry->next); -} - -__API__ __STATIC_INLINE__ void tos_list_del_init(k_list_t *entry) -{ - _list_del_entry(entry); - tos_list_init(entry); -} - -__API__ __STATIC_INLINE__ void tos_list_move(k_list_t *node, k_list_t *list) -{ - _list_del_entry(node); - tos_list_add(node, list); -} - -__API__ __STATIC_INLINE__ void tos_list_move_tail(k_list_t *node, k_list_t *list) -{ - _list_del_entry(node); - tos_list_add_tail(node, list); -} - -__API__ __STATIC_INLINE__ int tos_list_empty(const k_list_t *list) -{ - return list->next == list; -} - -#endif /* _TOS_LIST_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmblk.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmblk.h deleted file mode 100644 index 2f4a666e..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmblk.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef _TOS_MMBLK_H_ -#define _TOS_MMBLK_H_ - -#if TOS_CFG_MMBLK_EN > 0u - -#define K_MMBLK_NEXT_BLK(blk_curr, blk_size) ((void *)((cpu_addr_t)blk_curr + blk_size)) -#define K_MMBLK_ALIGN_MASK (sizeof(void *) - 1u) - -typedef struct k_mmblk_pool_st { -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_obj_t knl_obj; -#endif - - void *pool_start; - void *free_list; - size_t blk_size; - size_t blk_max; - size_t blk_free; -} k_mmblk_pool_t; - -/** - * @brief Create a memory manage block pool. - * Create a memory manage block pool. - * - * @attention None - * - * @param[in] mbp pointer to the memory block pool handler. - * @param[in] pool_start start address of the pool. - * @param[in] blk_num number of the blocks in the pool. - * @param[in] blk_size size of each block in the pool. - * - * @return errcode - * @retval #K_ERR_MMBLK_INVALID_POOL_ADDR start address of the pool is invalid. - * @retval #K_ERR_MMBLK_INVALID_BLK_SIZE size of the block is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mmblk_pool_create(k_mmblk_pool_t *mbp, void *pool_start, size_t blk_num, size_t blk_size); - -/** - * @brief Destroy a memory manage block pool. - * Destroy a memory manage block pool. - * - * @attention None - * - * @param[in] mbp pointer to the memory block pool handler. - * - * @return errcode - * @retval #K_ERR_OBJ_INVALID mbp is not a valid memory block pool handler. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mmblk_pool_destroy(k_mmblk_pool_t *mbp); - -/** - * @brief Create a memory manage block pool. - * Create a memory manage block pool. - * - * @attention None - * - * @param[in] mbp pointer to the memory block pool handler. - * @param[in] pool_start start address of the pool. - * @param[in] blk_num number of the blocks in the pool. - * @param[in] blk_size size of each block in the pool. - * - * @return errcode - * @retval #K_ERR_MMBLK_POOL_EMPTY the pool is empty. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mmblk_alloc(k_mmblk_pool_t *mbp, void **blk); - -/** - * @brief Create a memory manage block pool. - * Create a memory manage block pool. - * - * @attention None - * - * @param[in] mbp pointer to the memory block pool handler. - * @param[in] pool_start start address of the pool. - * @param[in] blk_num number of the blocks in the pool. - * @param[in] blk_size size of each block in the pool. - * - * @return errcode - * @retval #K_ERR_MMBLK_POOL_FULL the pool is full. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mmblk_free(k_mmblk_pool_t *mbp, void *blk); - -#endif - -#endif /* _TOS_MMBLK_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmheap.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmheap.h deleted file mode 100644 index e14e7e36..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mmheap.h +++ /dev/null @@ -1,207 +0,0 @@ -/* -** Two Level Segregated Fit memory allocator, version 3.1. -** Written by Matthew Conte -** http://tlsf.baisoku.org -** -** Based on the original documentation by Miguel Masmano: -** http://www.gii.upv.es/tlsf/main/docs -** -** This implementation was written to the specification -** of the document, therefore no GPL restrictions apply. -** -** Copyright (c) 2006-2016, Matthew Conte -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in the -** documentation and/or other materials provided with the distribution. -** * Neither the name of the copyright holder nor the -** names of its contributors may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -** DISCLAIMED. IN NO EVENT SHALL MATTHEW CONTE BE LIABLE FOR ANY -** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef _TOS_MMHEAP_H_ -#define _TOS_MMHEAP_H_ - -#if TOS_CFG_MMHEAP_EN > 0u - -/** - * log2 of number of linear subdivisions of block sizes. Larger - * values require more memory in the control structure. Values of - * 4 or 5 are typical. - */ -#define K_MMHEAP_SL_INDEX_COUNT_LOG2 5 - -/* All allocation sizes and addresses are aligned to 4 bytes. */ -#define K_MMHEAP_ALIGN_SIZE_LOG2 2 -#define K_MMHEAP_ALIGN_SIZE (1 << K_MMHEAP_ALIGN_SIZE_LOG2) - -/* - * We support allocations of sizes up to (1 << K_MMHEAP_FL_INDEX_MAX) bits. - * However, because we linearly subdivide the second-level lists, and - * our minimum size granularity is 4 bytes, it doesn't make sense to - * create first-level lists for sizes smaller than K_MMHEAP_SL_INDEX_COUNT * 4, - * or (1 << (K_MMHEAP_SL_INDEX_COUNT_LOG2 + 2)) bytes, as there we will be - * trying to split size ranges into more slots than we have available. - * Instead, we calculate the minimum threshold size, and place all - * blocks below that size into the 0th first-level list. - */ -#define K_MMHEAP_FL_INDEX_MAX 30 -#define K_MMHEAP_SL_INDEX_COUNT (1 << K_MMHEAP_SL_INDEX_COUNT_LOG2) -#define K_MMHEAP_FL_INDEX_SHIFT (K_MMHEAP_SL_INDEX_COUNT_LOG2 + K_MMHEAP_ALIGN_SIZE_LOG2) -#define K_MMHEAP_FL_INDEX_COUNT (K_MMHEAP_FL_INDEX_MAX - K_MMHEAP_FL_INDEX_SHIFT + 1) - -#define K_MMHEAP_SMALL_BLOCK_SIZE (1 << K_MMHEAP_FL_INDEX_SHIFT) - -#define K_MMHEAP_BLOCK_CURR_FREE (1 << 0) -#define K_MMHEAP_BLOCK_PREV_FREE (1 << 1) -#define K_MMHEAP_BLOCK_SIZE_MASK ~(K_MMHEAP_BLOCK_CURR_FREE | K_MMHEAP_BLOCK_PREV_FREE) -#define K_MMHEAP_BLOCK_STATE_MASK (K_MMHEAP_BLOCK_CURR_FREE | K_MMHEAP_BLOCK_PREV_FREE) - -/** - * Block structure. - * - * There are several implementation subtleties involved: - * - The prev_phys_block field is only valid if the previous block is free. - * - The prev_phys_block field is actually stored at the end of the - * previous block. It appears at the beginning of this structure only to - * simplify the implementation. - * - The next_free / prev_free fields are only valid if the block is free. - */ -typedef struct mmheap_blk_st { - struct mmheap_blk_st *prev_phys_blk; - - size_t size; - - struct mmheap_blk_st *next_free; - struct mmheap_blk_st *prev_free; -} mmheap_blk_t; - -/** - * A free block must be large enough to store its header minus the size of - * the prev_phys_block field, and no larger than the number of addressable - * bits for FL_INDEX. - */ -#define K_MMHEAP_BLK_SIZE_MIN (sizeof(mmheap_blk_t) - sizeof(mmheap_blk_t *)) -#define K_MMHEAP_BLK_SIZE_MAX (1 << K_MMHEAP_FL_INDEX_MAX) - -#define K_MMHEAP_BLK_HEADER_OVERHEAD (sizeof(size_t)) -#define K_MMHEAP_BLK_START_OFFSET (TOS_OFFSET_OF_FIELD(mmheap_blk_t, size) + sizeof(size_t)) - -/** - * memory heap control - */ -typedef struct k_mmheap_control_st { - mmheap_blk_t block_null; /**< Empty lists point at this block to indicate they are free. */ - - uint32_t fl_bitmap; /**< Bitmaps for free lists. */ - uint32_t sl_bitmap[K_MMHEAP_FL_INDEX_COUNT]; - - mmheap_blk_t *blocks[K_MMHEAP_FL_INDEX_COUNT][K_MMHEAP_SL_INDEX_COUNT]; /**< Head of free lists. */ -} k_mmheap_ctl_t; - -/** - * @brief Add a pool. - * Add addtional pool to the heap. - * - * @attention None - * - * @param[in] pool_start start address of the pool. - * @param[in] pool_size size of the pool. - * - * @return errcode - * @retval #K_ERR_MMHEAP_INVALID_POOL_ADDR start address of the pool is invalid. - * @retval #K_ERR_MMHEAP_INVALID_POOL_SIZE size of the pool is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mmheap_pool_add(void *pool_start, size_t pool_size); - -/** - * @brief Remove a pool. - * Remove a pool from the heap. - * - * @attention None - * - * @param[in] pool_start start address of the pool. - * - * @return None - */ -__API__ void tos_mmheap_pool_rmv(void *pool_start); - -/** - * @brief Alloc memory. - * Allocate size bytes and returns a pointer to the allocated memory. - * - * @attention size should no bigger than K_MMHEAP_BLK_SIZE_MAX. - * - * @param[in] size size of the memory. - * - * @return the pointer to the allocated memory. - */ -__API__ void *tos_mmheap_alloc(size_t size); - -__API__ void *tos_mmheap_calloc(size_t num, size_t size); - -/** - * @brief Alloc start address aligned memory from the heap. - * Alloc aligned address and specified size memory from the heap. - * - * @attention - * - * @param[in] size size of the memory. - * @param[in] align address align mask of the memory. - * - * @return the pointer to the allocated memory. - */ -__API__ void *tos_mmheap_aligned_alloc(size_t size, size_t align); - -/** - * @brief Realloc memory from the heap. - * Change the size of the memory block pointed to by ptr to size bytes. - * - * @attention - *
    - *
  • if ptr is K_NULL, then the call is equivalent to tos_mmheap_alloc(size), for all values of size. - *
  • if ptr is if size is equal to zero, and ptr is not K_NULL, then the call is equivalent to tos_mmheap_free(ptr). - *
- * - * @param[in] ptr old pointer to the memory space. - * @param[in] size new size of the memory space. - * - * @return the new pointer to the allocated memory. - */ -__API__ void *tos_mmheap_realloc(void *ptr, size_t size); - -/** - * @brief Free the memory. - * Free the memory space pointed to by ptr, which must have been returned by a previous call to tos_mmheap_alloc(), tos_mmheap_aligned_alloc(), or tos_mmheap_realloc(). - * - * @attention - * - * @param[in] ptr pointer to the memory. - * - * @return None. - */ -__API__ void tos_mmheap_free(void *ptr); - -__KERNEL__ k_err_t mmheap_init(void *pool_start, size_t pool_size); - -#endif - -#endif /* _TOS_MMHEAP_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_msg.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_msg.h deleted file mode 100644 index 1e6d5a4b..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_msg.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef _TOS_MSG_H_ -#define _TOS_MSG_H_ - -#define TOS_OPT_MSG_PUT_LIFO (k_opt_t)0x0001 -#define TOS_OPT_MSG_PUT_FIFO (k_opt_t)0x0002 - -typedef struct k_message_st { - k_list_t list; - void *msg_addr; - size_t msg_size; -} k_msg_t; - -typedef struct k_msg_queue_st { -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_obj_t knl_obj; -#endif - - k_list_t queue_head; -} k_msg_queue_t; - -/** - * @brief Create a message queue. - * Initialize a message queue. - * - * @attention None - * - * @param[IN] msg_queue the pointer to the handler of the message queue. - * - * @return errcode. - * @retval #K_ERR_OBJ_PTR_NULL msg_queue is a null pointer - * @retval #K_ERR_NONE return successfully - */ -__API__ k_err_t tos_msg_queue_create(k_msg_queue_t *msg_queue); - -/** - * @brief Destroy a message queue. - * - * @attention None - * - * @param[IN] msg_queue the pointer to the handler of the message queue. - * - * @return errcode. - * @retval #K_ERR_OBJ_PTR_NULL msg_queue is a null pointer - * @retval #K_ERR_OBJ_INVALID msg_queue is not a valid pointer to a message queue - * @retval #K_ERR_NONE return successfully - */ -__API__ k_err_t tos_msg_queue_destroy(k_msg_queue_t *msg_queue); - -/** - * @brief Get a message. - * Get a message from the queue. - * - * @attention None - * - * @param[IN] msg_queue the pointer to the handler of the message queue. - * @param[OUT] msg_body the pointer to the body of the message. - * @param[OUT] msg_size the pointer to the size of the message. - * - * @return errcode. - * @retval #K_ERR_QUEUE_EMPTY the queue is empty. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_msg_queue_get(k_msg_queue_t *msg_queue, void **msg_addr, size_t *msg_size); - -/** - * @brief Put a message. - * Put a message to the queue. - * - * @attention None - * - * @param[IN] msg_queue the pointer to the handler of the message queue. - * @param[IN] msg_body the pointer to the body of the message. - * @param[IN] msg_size the pointer to the size of the message. - * @param[IN] opt option for the function call. - * - * @return errcode. - * @retval #K_ERR_QUEUE_FULL the queue is full. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_msg_queue_put(k_msg_queue_t *msg_queue, void *msg_addr, size_t msg_size, k_opt_t opt); - -/** - * @brief Flush all of the messages. - * Flush all of the messages in the queue. - * - * @attention None - * - * @param[IN] msg_queue the pointer to the handler of the message queue. - * - * @return None. - */ -__API__ void tos_msg_queue_flush(k_msg_queue_t *msg_queue); - -__KERNEL__ void msgpool_init(void); - -#endif /* _TOS_MSG_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mutex.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mutex.h deleted file mode 100644 index d87abec7..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_mutex.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef _TOS_MUTEX_H_ -#define _TOS_MUTEX_H_ - -#if TOS_CFG_MUTEX_EN > 0u - -typedef struct k_mutex_st { - pend_obj_t pend_obj; - k_nesting_t pend_nesting; - k_task_t *owner; - k_prio_t owner_orig_prio; - k_list_t owner_list; -} k_mutex_t; - -/** - * @brief Create a mutex. - * create a mutex. - * - * @attention None - * - * @param[in] mutex pointer to the handler of the mutex. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mutex_create(k_mutex_t *mutex); - -/** - * @brief Destroy a mutex. - * destroy a mutex. - * - * @attention None - * - * @param[in] mutex pointer to the handler of the mutex. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mutex_destroy(k_mutex_t *mutex); - -/** - * @brief Pend a mutex. - * pend a mutex. - * - * @attention The task will keep blocked until the mutex is obtained or a timeout comes. - * - * @param[in] mutex pointer to the handler of the mutex. - * @param[in] timeout how much time(in k_tick_t) we would like to wait. - * - * @return errcode - * @retval #K_ERR_MUTEX_NESTING_OVERFLOW we are the owner of the mutex, and we are nesting pend too much on this mutex. - * @retval #K_ERR_MUTEX_NESTING we are the owner of the mutex, and we are nesting pend on it. - * @retval #K_ERR_PEND_NOWAIT we get nothing, and we don't wanna wait. - * @retval #K_ERR_PEND_SCHED_LOCKED we can wait, but scheduler is locked. - * @retval #K_ERR_PEND_TIMEOUT the time we wait is up, we get nothing. - * @retval #K_ERR_PEND_DESTROY the mutex we are pending is destroyed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mutex_pend_timed(k_mutex_t *mutex, k_tick_t timeout); - -/** - * @brief Pend a mutex. - * pend a mutex. - * - * @attention The task will keep blocked until the mutex is obtained. - * - * @param[in] mutex pointer to the handler of the mutex. - * - * @return errcode - * @retval #K_ERR_MUTEX_NESTING_OVERFLOW we are the owner of the mutex, and we are nesting pend too much on this mutex. - * @retval #K_ERR_MUTEX_NESTING we are the owner of the mutex, and we are nesting pend on it. - * @retval #K_ERR_PEND_SCHED_LOCKED we can wait, but scheduler is locked. - * @retval #K_ERR_PEND_DESTROY the mutex we are pending is destroyed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mutex_pend(k_mutex_t *mutex); - -/** - * @brief Post a mutex. - * post a mutex. - * - * @attention None - * - * @param[in] mutex pointer to the handler of the mutex. - * - * @return errcode - * @retval #K_ERR_MUTEX_NOT_OWNER we are posting a mutex of which the owner is not us. - * @retval #K_ERR_MUTEX_NESTING we are posting a mutex owned by us, and we are still in a nesting. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_mutex_post(k_mutex_t *mutex); - -__KERNEL__ void mutex_release(k_mutex_t *mutex); - -#endif - -#endif /* _TOS_MUTEX_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_pend.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_pend.h deleted file mode 100644 index b1130b7a..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_pend.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef _TOS_PEND_H_ -#define _TOS_PEND_H_ - -typedef struct k_task_st k_task_t; - -/** - * The reason why we wakeup from a pend. - * when we wakeup, we need to know why. - */ -typedef enum pend_state_en { - PEND_STATE_NONE, /**< nothing. */ - PEND_STATE_POST, /**< someone has post, we get what we want. */ - PEND_STATE_TIMEOUT, /**< a post has never came until time is out. */ - PEND_STATE_DESTROY, /**< someone has destroyed what we are pending for. */ - PEND_STATE_OWNER_DIE, /**< the pend object owner task is destroyed. */ -} pend_state_t; - -// what we are pending -/* actually, it's some kind of magic number, mainly for identifing whether the pend - is initialized, or whether user pass the correct parameter. - */ -typedef enum pend_type_en { - PEND_TYPE_NONE = 0x0000, - PEND_TYPE_SEM = 0x1BEE, - PEND_TYPE_MUTEX = 0x2BEE, - PEND_TYPE_EVENT = 0x3BEE, - PEND_TYPE_QUEUE = 0x4BEE, -} pend_type_t; - -typedef enum opt_post_en { - OPT_POST_ONE, - OPT_POST_ALL, -} opt_post_t; - -typedef struct pend_object_st { - pend_type_t type; - k_list_t list; -} pend_obj_t; - -__KERNEL__ void pend_object_init(pend_obj_t *object, pend_type_t type); - -__KERNEL__ void pend_object_deinit(pend_obj_t *object); - -__KERNEL__ int pend_object_verify(pend_obj_t *object, pend_type_t type); - -__KERNEL__ int pend_is_nopending(pend_obj_t *object); - -__KERNEL__ k_prio_t pend_highest_prio_get(pend_obj_t *object); - -__KERNEL__ void pend_list_remove(k_task_t *task); - -__KERNEL__ void pend_list_adjust(k_task_t *task); - -__KERNEL__ k_err_t pend_state2errno(pend_state_t state); - -__KERNEL__ void pend_task_wakeup(k_task_t *task, pend_state_t state); - -__KERNEL__ void pend_task_block(k_task_t *task, pend_obj_t *object, k_tick_t timeout); - -__KERNEL__ void pend_wakeup_one(pend_obj_t *object, pend_state_t state); - -__KERNEL__ void pend_wakeup_all(pend_obj_t *object, pend_state_t state); - -__KERNEL__ void pend_wakeup(pend_obj_t *object, pend_state_t state, opt_post_t opt); - -#endif /* _TOS_PEND_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_queue.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_queue.h deleted file mode 100644 index 01d49b31..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_queue.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef _TOS_QUEUE_H_ -#define _TOS_QUEUE_H_ - -#if TOS_CFG_QUEUE_EN > 0u - -typedef struct k_queue_st { - pend_obj_t pend_obj; - k_msg_queue_t msg_queue; -} k_queue_t; - -/** - * @brief Create a queue. - * create a queue. - * - * @attention None - * - * @param[in] queue pointer to the handler of the queue. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_create(k_queue_t *queue); - -/** - * @brief Destroy a queue. - * destroy a queue. - * - * @attention None - * - * @param[in] queue pointer to the handler of the queue. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_destroy(k_queue_t *queue); - -/** - * @brief Flush a queue. - * flush a queue, clear all the msg in the queue. - * - * @attention None - * - * @param[in] queue pointer to the handler of the queue. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_flush(k_queue_t *queue); - -/** - * @brief Pend a queue. - * pend a queue. - * - * @attention we DONNOT perform a memcpy when msg_addr returned, we just let the *msg_addr point to an inner memory block. - * that means you DONNOT need to alloc memory for msg_addr, msg_addr can just be a pointer. - * - * @param[in] queue pointer to the handler of the queue. - * @param[OUT] msg_addr a pointer point to the message we wanna recive. - * @param[OUT] msg_size pointer to the message size returned. - * @param[in] timeout how much time(in k_tick_t) we would like to wait. - * - * @return errcode - * @retval #K_ERR_PEND_NOWAIT we get nothing, and we don't wanna wait. - * @retval #K_ERR_PEND_SCHED_LOCKED we can wait, but scheduler is locked. - * @retval #K_ERR_PEND_TIMEOUT the time we wait is up, we get nothing. - * @retval #K_ERR_PEND_DESTROY the queue we are pending is destroyed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_pend(k_queue_t *queue, void **msg_addr, size_t *msg_size, k_tick_t timeout); - -/** - * @brief Post a queue. - * post a queue and wakeup one pending task. - * - * @attention when tos_queue_post return successfully, only one task who are waitting for the queue will be woken up. - * - * @param[in] queue pointer to the handler of the queue. - * - * @return errcode - * @retval #K_ERR_QUEUE_FULL the message pool is full. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_post(k_queue_t *queue, void *msg_addr, size_t msg_size); - -/** - * @brief Post a queue. - * post a queue and wakeup all the pending task. - * - * @attention when tos_queue_post_all return successfully, all of the tasks who are waitting for the queue will be woken up. - * - * @param[in] queue pointer to the handler of the queue. - * - * @return errcode - * @retval #K_ERR_QUEUE_FULL the message pool is full. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_queue_post_all(k_queue_t *queue, void *msg_addr, size_t msg_size); - -#endif - -#endif /* _TOS_QUEUE_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_robin.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_robin.h deleted file mode 100644 index f6678b67..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_robin.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef _TOS_ROBIN_H_ -#define _TOS_ROBIN_H_ - -#if TOS_CFG_ROUND_ROBIN_EN > 0u - -typedef enum k_robin_state_en { - TOS_ROBIN_STATE_ENABLED, - TOS_ROBIN_STATE_DISABLED, -} k_robin_state_t; - -/** - * @brief Set time slice. - * Set time slice of a task. - * - * @attention None - * - * @param[in] task pointer to the handler of the task. - * @param[in] timeslice time slice of the task - * - * @return None - */ -__API__ void tos_robin_timeslice_set(k_task_t *task, k_timeslice_t timeslice); - -/** - * @brief Configure round robin. - * Set the round robin state and the default time slice of the task. - * - * @attention None - * - * @param[in] robin_state state of the round robin. - * @param[in] default_timeslice default time slice of the task. - * - * @return None - */ -__API__ void tos_robin_config(k_robin_state_t robin_state, k_timeslice_t default_timeslice); - -__KERNEL__ void robin_sched(k_prio_t prio); - -#endif - -#endif /* _TOS_ROBIN_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sched.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sched.h deleted file mode 100644 index b1634f84..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sched.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _TOS_SCHED_H_ -#define _TOS_SCHED_H_ - -#define K_PRIO_TBL_SIZE ((TOS_CFG_TASK_PRIO_MAX + 31) / 32) -#define K_PRIO_TBL_SLOT_SIZE (32u) - -#define K_PRIO_NDX(prio) ((prio) >> 5u) /* prio / 32u */ -#define K_PRIO_BIT(prio) (1u << (K_PRIO_TBL_SLOT_SIZE - 1u - ((prio) & (K_PRIO_TBL_SLOT_SIZE - 1u)))) - -typedef struct readyqueue_st { - k_list_t task_list_head[TOS_CFG_TASK_PRIO_MAX]; - uint32_t prio_mask[K_PRIO_TBL_SIZE]; - k_prio_t highest_prio; -} readyqueue_t; - -__KERNEL__ void readyqueue_init(void); - -__KERNEL__ int readyqueue_is_prio_onlyone(k_prio_t prio); - -__KERNEL__ k_task_t *readyqueue_first_task_get(k_prio_t prio); - -__KERNEL__ k_task_t *readyqueue_highest_ready_task_get(void); - -__KERNEL__ void readyqueue_add_head(k_task_t *task); - -__KERNEL__ void readyqueue_add_tail(k_task_t *task); - -__KERNEL__ void readyqueue_add(k_task_t *task); - -__KERNEL__ void readyqueue_remove(k_task_t *task); - -__KERNEL__ void readyqueue_move_head_to_tail(k_prio_t prio); - -#endif /* _TOS_SCHED_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sem.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sem.h deleted file mode 100644 index 8997be70..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sem.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef _TOS_SEM_H_ -#define _TOS_SEM_H_ - -#if TOS_CFG_SEM_EN > 0u - -typedef struct k_sem_st { - pend_obj_t pend_obj; - k_sem_cnt_t count; -} k_sem_t; - -/** - * @brief Create a semaphore. - * create a semaphore. - * - * @attention None - * - * @param[in] sem pointer to the handler of the semaphore. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sem_create(k_sem_t *sem, k_sem_cnt_t init_count); - -/** - * @brief Destroy a semaphore. - * destroy a semaphore. - * - * @attention None - * - * @param[in] semaphore pointer to the handler of the semaphore. - * - * @return errcode - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sem_destroy(k_sem_t *sem); - -/** - * @brief Pend a semaphore. - * pend a semaphore. - * - * @attention None - * - * @param[in] sem pointer to the handler of the semaphore. - * @param[in] timeout how much time(in k_tick_t) we would like to wait. - * - * @return errcode - * @retval #K_ERR_PEND_NOWAIT we get nothing, and we don't wanna wait. - * @retval #K_ERR_PEND_SCHED_LOCKED we can wait, but scheduler is locked. - * @retval #K_ERR_PEND_TIMEOUT the time we wait is up, we get nothing. - * @retval #K_ERR_PEND_DESTROY the semaphore we are pending is destroyed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sem_pend(k_sem_t *sem, k_tick_t timeout); - -/** - * @brief Post a semaphore. - * post a semaphore and wakeup one pending task. - * - * @attention when tos_sem_post return successfully, only one task who are waitting for the semaphore will be woken up. - * - * @param[in] sem pointer to the handler of the semaphore. - * - * @return errcode - * @retval #K_ERR_SEM_OVERFLOW we are nesting post a semaphore too much. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sem_post(k_sem_t *sem); - -/** - * @brief Post a semaphore. - * post a semaphore and wakeup all the pending task. - * - * @attention when tos_sem_post_all return successfully, all of the tasks who are waitting for the semaphore will be woken up. - * - * @param[in] sem pointer to the handler of the semaphore. - * - * @return errcode - * @retval #K_ERR_SEM_OVERFLOW we are nesting post a semaphore too much. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sem_post_all(k_sem_t *sem); - -#endif - -#endif /* _TOS_SEM_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sys.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sys.h deleted file mode 100644 index 11ef6aa1..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_sys.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef _TOS_SYS_H_ -#define _TOS_SYS_H_ - -#define K_NESTING_LIMIT_IRQ (k_nesting_t)250u -#define K_NESTING_LIMIT_SCHED_LOCK (k_nesting_t)250u - -typedef enum knl_state_en { - KNL_STATE_STOPPED, - KNL_STATE_RUNNING, -} knl_state_t; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u -// some kind of magic number, mainly for identifing whether the object is initialized, or whether user pass the correct parameter. -typedef enum knl_obj_type_en { - KNL_OBJ_TYPE_NONE = 0x0000, - KNL_OBJ_TYPE_TASK = 0xDAD1, - KNL_OBJ_TYPE_TIMER = 0xDAD2, - KNL_OBJ_TYPE_MSG_QUEUE = 0xDAD4, - KNL_OBJ_TYPE_MMBLK_POOL = 0xDAD8, - KNL_OBJ_TYPE_FIFO = 0xDAE1, -} knl_obj_type_t; - -typedef struct knl_object_st { - knl_obj_type_t type; -} knl_obj_t; -#endif - -/** - * @brief Initialize the kernel. - * initialize the tos tiny kernel. - * - * @attention None - * - * @param None - * - * @return errcode - * @retval Non-#K_ERR_NONE return failed. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_knl_init(void); - -/** - * @brief Start the kernel. - * get the kernel start to run, which means start the multitask scheduling. - * - * @attention None - * - * @param None - * - * @return errcode - * @retval #K_ERR_KNL_RUNNING the kernel is already running. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_knl_start(void); - -/** - * @brief Get the kernel state. - * whether the kernel is running. - * - * @attention None - * - * @param None - * - * @return whether the kernel is running. - * @retval Non-0 the kernel is running. - * @retval 0 the kernel is not running. - */ -__API__ int tos_knl_is_running(void); - -/** - * @brief Kernel enter the interrupt. - * this function should be called in the entrance of a interrupt handler. - * - * @attention None - * - * @param None - * - * @return None - */ -__API__ void tos_knl_irq_enter(void); - -/** - * @brief Kernel exit the interrupt. - * this function should be called in the exit of a interrupt handler. - * - * @attention None - * - * @param None - * - * @return None - */ -__API__ void tos_knl_irq_leave(void); - -/** - * @brief Lock the scheduler. - * prevent the kernel from performing task schedule. - * - * @attention None - * - * @param None - * - * @return errcode - * @retval K_ERR_KNL_NOT_RUNNING the kernel is not running. - * @retval K_ERR_LOCK_NESTING_OVERFLOW the schedule lock nesting is overflow. - * @retval K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_knl_sched_lock(void); - -/** - * @brief Unlock the scheduler. - * re-enable the task schedule. - * - * @attention None - * - * @param None - * - * @return errcode - * @retval K_ERR_KNL_NOT_RUNNING the kernel is not running. - * @retval K_ERR_SCHED_NOT_LOCKED the scheduler is not locked. - * @retval K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_knl_sched_unlock(void); - -#if TOS_CFG_TICKLESS_EN > 0u -__KERNEL__ k_tick_t knl_next_expires_get(void); -#endif - -__KERNEL__ void knl_sched(void); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u -__KERNEL__ int knl_object_verify(knl_obj_t *object, knl_obj_type_t type); -__KERNEL__ int knl_object_init(knl_obj_t *object, knl_obj_type_t type); -__KERNEL__ int knl_object_deinit(knl_obj_t *object); -#endif - -__KERNEL__ int knl_is_sched_locked(void); -__KERNEL__ int knl_is_inirq(void); -__KERNEL__ int knl_is_idle(k_task_t *task); -__KERNEL__ int knl_is_self(k_task_t *task); -__KERNEL__ k_err_t knl_idle_init(void); - -#endif /* _TOS_SYS_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_task.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_task.h deleted file mode 100644 index 49e11ad1..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_task.h +++ /dev/null @@ -1,311 +0,0 @@ -#ifndef _TOS_TASK_H_ -#define _TOS_TASK_H_ - -// task state is just a flag, indicating which manager list we are in. - -// ready to schedule -// a task's pend_list is in readyqueue -#define K_TASK_STATE_READY (k_task_state_t)0x0000 - -// delayed, or pend for a timeout -// a task's tick_list is in k_tick_list -#define K_TASK_STATE_SLEEP (k_task_state_t)0x0001 - -// pend for something -// a task's pend_list is in some pend object's list -#define K_TASK_STATE_PEND (k_task_state_t)0x0002 - -// suspended -#define K_TASK_STATE_SUSPENDED (k_task_state_t)0x0004 - -// deleted -#define K_TASK_STATE_DELETED (k_task_state_t)0x0008 - -// actually we don't really need those TASK_STATE below, if you understand the task state deeply, the code can be much more elegant. - -// we are pending, also we are waitting for a timeout(eg. tos_sem_pend with a valid timeout, not TOS_TIME_FOREVER) -// both a task's tick_list and pend_list is not empty -#define K_TASK_STATE_PENDTIMEOUT (k_task_state_t)(K_TASK_STATE_PEND | K_TASK_STATE_SLEEP) - -// suspended when sleeping -#define K_TASK_STATE_SLEEP_SUSPENDED (k_task_state_t)(K_TASK_STATE_SLEEP | K_TASK_STATE_SUSPENDED) - -// suspened when pending -#define K_TASK_STATE_PEND_SUSPENDED (k_task_state_t)(K_TASK_STATE_PEND | K_TASK_STATE_SUSPENDED) - -// suspended when pendtimeout -#define K_TASK_STATE_PENDTIMEOUT_SUSPENDED (k_task_state_t)(K_TASK_STATE_PENDTIMEOUT | K_TASK_STATE_SUSPENDED) - - -// if you configure TOS_CFG_TASK_PRIO_MAX as 10, means the priority for kernel is (0 ... 9] -// the priority 9(TOS_CFG_TASK_PRIO_MAX - 1) is only for idle, so avaliable priority for you is (0 ... 8] -#define K_TASK_PRIO_IDLE (k_prio_t)(TOS_CFG_TASK_PRIO_MAX - (k_prio_t)1u) -#define K_TASK_PRIO_INVALID (k_prio_t)(TOS_CFG_TASK_PRIO_MAX) - -typedef void (*k_task_entry_t)(void *arg); - -/** - * task control block - */ -typedef struct k_task_st { - k_stack_t *sp; /**< task stack pointer. This lady always comes first, we use her in port_s.S for context switch. */ - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_obj_t knl_obj; /**< just for verification, test whether current object is really a task. */ -#endif - - char *name; /**< task name */ - k_task_entry_t entry; /**< task entry */ - void *arg; /**< argument for task entry */ - k_task_state_t state; /**< just state */ - k_prio_t prio; /**< just priority */ - - k_stack_t *stk_base; /**< task stack base address */ - size_t stk_size; /**< stack size of the task */ - - k_tick_t tick_expires; /**< if we are in k_tick_list, how much time will we wait for? */ - - k_list_t tick_list; /**< list for hooking us to the k_tick_list */ - k_list_t pend_list; /**< when we are ready, our pend_list is in readyqueue; when pend, in a certain pend object's list. */ - -#if TOS_CFG_MUTEX_EN > 0u - k_list_t mutex_own_list; /**< the list hold all the mutex we own. - When we die(tos_task_destroy), we have an obligation to wakeup all the task pending for those mutexs we own; - if not, those pending tasks may never get a change to wakeup. */ - k_prio_t prio_pending; /*< when tos_task_prio_change called, we may be just the owner of a mutex. - to avoid PRIORITY INVERSION, must make sure our priority is higher than any one who is pending for - the mutex we hold. So, if the prio_new of tos_task_prio_change is not appropriate - (may against the principle of PRIORITY INVERSION), we just mark the prio_new here, do the real priority - change in the right time(mutex_old_owner_release) later. */ -#endif - - pend_obj_t *pending_obj; /**< if we are pending, which pend object's list we are in? */ - pend_state_t pend_state; /**< why we wakeup from a pend */ - -#if TOS_CFG_ROUND_ROBIN_EN > 0u - k_timeslice_t timeslice_reload; /**< if current time slice is used up, use time_slice_reload to reload our time slice */ - k_timeslice_t timeslice; /**< how much time slice left for us? */ -#endif - -#if TOS_CFG_MSG_EN > 0u - void *msg_addr; /**< if we pend a queue successfully, our msg_addr and msg_size will be set by the queue poster */ - size_t msg_size; -#endif - -#if TOS_CFG_EVENT_EN > 0u - k_opt_t opt_event_pend; /**< if we are pending an event, what's the option for the pending(TOS_OPT_EVENT_PEND_*)? */ - k_event_flag_t flag_expect; /**< if we are pending an event, what event flag are we pending for ? */ - k_event_flag_t *flag_match; /**< if we pend an event successfully, flag_match will be set by the event poster, and will be returned - by tos_event_pend to the caller */ -#endif -} k_task_t; - -/** - * @brief Create a task. - * create a task. - * - * @attention None - * - * @param[in] task pointer to the handler of the task. - * @param[in] name name of the task. - * @param[in] entry running entry of the task. - * @param[in] arg argument for the entry of the task. - * @param[in] prio priority of the task. - * @param[in] stk_base stack base address of the task. - * @param[in] stk_size stack size of the task. - * @param[in] timeslice time slice of the task. - * @param[in] opt option for the function call. - * - * @return errcode - * @retval #K_ERR_TASK_STK_SIZE_INVALID stack size is invalid. - * @retval #K_ERR_TASK_PRIO_INVALID priority is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_create(k_task_t *task, - char *name, - k_task_entry_t entry, - void *arg, - k_prio_t prio, - k_stack_t *stk_base, - size_t stk_size, - k_timeslice_t timeslice); - -/** - * @brief Destroy a task. - * delete a task. - * - * @attention None - * - * @param[in] task pointer to the handler of the task to be deleted. - * - * @return errcode - * @retval #K_ERR_TASK_DESTROY_IDLE attempt to destroy idle task. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_destroy(k_task_t *task); - -/** - * @brief Delay current task for ticks. - * Delay for a specified amount of ticks. - * - * @attention None - * - * @param[in] delay amount of ticks to delay. - * - * @return errcode - * @retval #K_ERR_DELAY_ZERO delay is zero. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_delay(k_tick_t delay); - -/** - * @brief Resume task from delay. - * Resume a delayed task from delay. - * - * @attention None - * - * @param[in] task the pointer to the handler of the task. - * - * @return errcode - * @retval #K_ERR_TASK_NOT_DELAY task is not delayed. - * @retval #K_ERR_TASK_SUSPENDED task is suspended. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_delay_abort(k_task_t *task); - -/** - * @brief Suspend a task. - * Bring a task to sleep. - * - * @attention None - * - * @param[in] task pointer to the handler of the task to be resume. - * - * @return errcode - * @retval #K_ERR_TASK_SUSPEND_IDLE attempt to suspend idle task. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_suspend(k_task_t *task); - -/** - * @brief Resume a task. - * Bring a task to run. - * - * @attention None - * - * @param[in] task pointer to the handler of the task to be resume. - * - * @return errcode - * @retval #K_ERR_TASK_RESUME_SELF attempt to resume self-task. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_resume(k_task_t *task); - -/** - * @brief Change task priority. - * Change a priority of the task. - * - * @attention None - * - * @param[in] task pointer to the handler of the task to be resume. - * @param[in] prio_new new priority. - * - * @return errcode - * @retval #K_ERR_TASK_PRIO_INVALID new priority is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_task_prio_change(k_task_t *task, k_prio_t prio_new); - -/** - * @brief Quit schedule this time. - * Quit the cpu this time. - * - * @attention None - * - * @param None - * - * @return None - */ -__API__ void tos_task_yield(void); - - -#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u - -/** - * @brief Get the maximum stack draught depth of a task. - * - * @attention None - * - * @param[in] task pointer to the handler of the task. - * @param[out] depth task stack draught depth. - * - * @return errcode - * @retval #K_ERR_NONE get depth successfully. - * @retval #K_ERR_TASK_STK_OVERFLOW task stack is overflow. - */ -__API__ k_err_t tos_task_stack_draught_depth(k_task_t *task, int *depth); - -#endif - -__KERNEL__ __STATIC_INLINE__ int task_state_is_ready(k_task_t *task) -{ - return task->state == K_TASK_STATE_READY; -} - -__KERNEL__ __STATIC_INLINE__ int task_state_is_sleeping(k_task_t *task) -{ - return task->state & K_TASK_STATE_SLEEP; -} - -__KERNEL__ __STATIC_INLINE__ int task_state_is_pending(k_task_t *task) -{ - return task->state & K_TASK_STATE_PEND; -} - -__KERNEL__ __STATIC_INLINE__ int task_state_is_suspended(k_task_t *task) -{ - return task->state & K_TASK_STATE_SUSPENDED; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_reset_pending(k_task_t *task) -{ - task->state &= ~K_TASK_STATE_PEND; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_reset_sleeping(k_task_t *task) -{ - task->state &= ~K_TASK_STATE_SLEEP; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_reset_suspended(k_task_t *task) -{ - task->state &= ~K_TASK_STATE_SUSPENDED; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_set_suspended(k_task_t *task) -{ - task->state |= K_TASK_STATE_SUSPENDED; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_set_pend(k_task_t *task) -{ - task->state |= K_TASK_STATE_PEND; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_set_ready(k_task_t *task) -{ - task->state = K_TASK_STATE_READY; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_set_deleted(k_task_t *task) -{ - task->state = K_TASK_STATE_DELETED; -} - -__KERNEL__ __STATIC_INLINE__ void task_state_set_sleeping(k_task_t *task) -{ - task->state |= K_TASK_STATE_SLEEP; -} - -#endif /* _TOS_TASK_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_tick.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_tick.h deleted file mode 100644 index 1874f1a9..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_tick.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _TOS_TICK_H_ -#define _TOS_TICK_H_ - -/** - * @brief Systick interrupt handler. - * systick interrupt handler. - * - * @attention called from the systick interrupt entrance. - * - * @param None - * - * @return None - */ -__API__ void tos_tick_handler(void); - -__KERNEL__ void tick_update(k_tick_t tick); - -__KERNEL__ k_err_t tick_list_add(k_task_t *task, k_tick_t timeout); - -__KERNEL__ void tick_list_remove(k_task_t *task); - -#if TOS_CFG_TICKLESS_EN > 0u -__KERNEL__ k_tick_t tick_next_expires_get(void); -#endif - -#endif /* _TOS_TICK_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_time.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_time.h deleted file mode 100644 index 8374d3ef..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_time.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef _TOS_TIME_H_ -#define _TOS_TIME_H_ - -// if you wanna pend for something forever, use TOS_TIME_FOREVER -#define TOS_TIME_FOREVER (k_tick_t)(-1) -// if you don't wanna wait when you pend nothing, use TOS_TIME_NOWAIT -#define TOS_TIME_NOWAIT (k_tick_t)0u - -// those two are not for you, for kernel only. -#define K_TIME_MILLISEC_PER_SEC 1000u -#define K_TIME_MAX (k_tick_t)(TOS_TIME_FOREVER - 1) - -/** - * @brief Get system tick. - * Get the number of ticks since boot. - * - * @attention None - * - * @param None - * - * @return tick count since boot - */ -__API__ k_tick_t tos_systick_get(void); - -/** - * @brief Set system tick. - * Set the number of ticks. - * - * @attention None - * - * @param tick systick count to set - * - * @return tick count since boot - */ -__API__ void tos_systick_set(k_tick_t tick); - -/** - * @brief Convert ticks to milliseconds. - * Convert tick to millisecond. - * - * @attention None - * - * @param[in] tick tick to convert. - * - * @return milliseconds equals to the ticks. - */ -__API__ k_time_t tos_tick2millisec(k_tick_t tick); - -/** - * @brief Convert milliseconds to ticks. - * Convert milliseconds to ticks. - * - * @attention None - * - * @param[in] millisec millisecond to convert. - * - * @return ticks equals to the millisecond. - */ -__API__ k_tick_t tos_millisec2tick(k_time_t millisec); - -/** - * @brief Sleep current task. - * Sleep for a specified amount of milliseconds. - * - * @attention None - * - * @param[in] millisec amount of milliseconds to delay. - * - * @return errcode - * @retval #K_ERR_DELAY_ZERO millisec is zero. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sleep_ms(k_time_t millisec); - -/** - * @brief Sleep current task. - * Sleep for a specified amount of time. - * - * @attention None - * - * @param[in] hour amount of hours. - * @param[in] minute amount of minutes. - * @param[in] second amount of seconds. - * @param[in] millisec amount of milliseconds. - * - * @return errcode - * @retval #K_ERR_DELAY_ZERO time is zero. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_sleep_hmsm(k_time_t hour, k_time_t minute, k_time_t second, k_time_t millisec); - -#endif /* _TOS_TIME_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_timer.h b/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_timer.h deleted file mode 100644 index 179e1096..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/include/tos_timer.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef _TOS_TIMER_H_ -#define _TOS_TIMER_H_ - -#if TOS_CFG_TIMER_EN > 0u - -// if we just want the timer to run only once, this option should be passed to tos_timer_create. -#define TOS_OPT_TIMER_ONESHOT (k_opt_t)(0x0001u) - -// if we want the timer run periodically, this option should be passed to tos_timer_create. -#define TOS_OPT_TIMER_PERIODIC (k_opt_t)(0x0002u) - -/** - * state for timer - */ -typedef enum timer_state_en { - TIMER_STATE_UNUSED, /**< the timer has been destroyed */ - TIMER_STATE_STOPPED, /**< the timer has been created but not been started, or just be stopped(tos_timer_stop) */ - TIMER_STATE_RUNNING, /**< the timer has been created and been started */ - TIMER_STATE_COMPLETED /**< the timer has finished its expires, it can only happen when the timer's opt is TOS_OPT_TIMER_ONESHOT */ -} timer_state_t; - -// callback function type for a timer -typedef void (*k_timer_callback_t)(void *arg); - -/** - * timer control block - */ -typedef struct k_timer_st { -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_obj_t knl_obj; /**< just for verification, test whether current object is really a timer */ -#endif - - k_timer_callback_t cb; /**< callback when time is up */ - void *cb_arg; /**< argument for callback */ - k_list_t list; /**< list for hooking us to the k_tick_list */ - k_tick_t expires; /**< how much time left until time expires */ - k_tick_t delay; /**< how much time from now to begin the first run of the timer */ - k_tick_t period; /**< if the time expires, how much time after should we begin the next round */ - k_opt_t opt; /**< option for the timer, see TOS_OPT_TIMER_* */ - timer_state_t state; /**< state for the timer, see TIMER_STATE_* */ -} k_timer_t; - -typedef struct timer_control_st { - k_tick_t next_expires; - k_list_t list; -} timer_ctl_t; - -/** - * @brief Create a timer. - * Create a timer. - * - * @attention I dont't think a timer need a name. If you do, help yourself. - * - * @param[in] tmr pointer to the handler of the timer. - * @param[in] delay time interval for a timer to run. - * @param[in] period period for a timer to restart to run. - * @param[in] callback callback function called when the timer expires. - * @param[in] cb_arg argument for the callback. - * @param[in] opt option for the function call. - * - * @return errcode - * @retval #K_ERR_TIMER_INVALID_PERIOD period is invalid. - * @retval #K_ERR_TIMER_INVALID_DELAY delay is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_timer_create(k_timer_t *tmr, k_tick_t delay, k_tick_t period, - k_timer_callback_t callback, void *cb_arg, k_opt_t opt); - -/** - * @brief Delete a timer. - * Delete the timer. - * - * @attention None - * - * @param[in] tmr pointer to the handler of the timer. - * - * @return errcode - * @retval #K_ERR_TIMER_INACTIVE the timer is not active yet. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_timer_destroy(k_timer_t *tmr); - -/** - * @brief Start a timer. - * Start the timer to run. - * - * @attention None - * - * @param[in] tmr pointer to the handler of the timer. - * - * @return errcode - * @retval #K_ERR_TIMER_INACTIVE the timer is not active yet. - * @retval #K_ERR_TIMER_INVALID_STATE state of the timer is invalid. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_timer_start(k_timer_t *tmr); - -/** - * @brief Stop a timer. - * Stop the timer from running. - * - * @attention None - * - * @param[in] tmr pointer to the handler of the timer. - * - * @return errcode - * @retval #K_ERR_TIMER_INACTIVE the timer is not active yet. - * @retval #K_ERR_TIMER_STOPPED the timer is already stoppped. - * @retval #K_ERR_NONE return successfully. - */ -__API__ k_err_t tos_timer_stop(k_timer_t *tmr); - -#if TOS_CFG_TIMER_AS_PROC > 0u - -/** - * @brief Timer update function. - * When enable timer as a process function not a task, this will be the function entry. - * - * @attention None - * - * @param None - * - * @return None - */ -__KERNEL__ void timer_update(void); - -#endif - -__KERNEL__ k_err_t timer_init(void); - -__KERNEL__ k_tick_t timer_next_expires_get(void); - -#endif - -#endif /* _TOS_TIMER_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_event.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_event.c deleted file mode 100644 index 5aa776dc..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_event.c +++ /dev/null @@ -1,168 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_EVENT_EN > 0 - -__API__ k_err_t tos_event_create(k_event_t *event, k_event_flag_t init_flag) -{ - TOS_PTR_SANITY_CHECK(event); - - pend_object_init(&event->pend_obj, PEND_TYPE_EVENT); - event->flag = init_flag; - return K_ERR_NONE; -} - -__API__ k_err_t tos_event_destroy(k_event_t *event) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(event); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&event->pend_obj, PEND_TYPE_EVENT)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (!pend_is_nopending(&event->pend_obj)) { - pend_wakeup_all(&event->pend_obj, PEND_STATE_DESTROY); - } - - pend_object_deinit(&event->pend_obj); - event->flag = (k_event_flag_t)0u; - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__STATIC__ int event_is_match(k_event_flag_t event, k_event_flag_t flag_expect, k_event_flag_t *flag_match, k_opt_t opt_pend) -{ - if (opt_pend & TOS_OPT_EVENT_PEND_ALL) { - if ((event & flag_expect) == flag_expect) { - *flag_match = flag_expect; - return K_TRUE; - } - } else if (opt_pend & TOS_OPT_EVENT_PEND_ANY) { - if (event & flag_expect) { - *flag_match = event & flag_expect; - return K_TRUE; - } - } - return K_FALSE; -} - -__API__ k_err_t tos_event_pend(k_event_t *event, k_event_flag_t flag_expect, k_event_flag_t *flag_match, k_tick_t timeout, k_opt_t opt_pend) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(event); - TOS_PTR_SANITY_CHECK(flag_match); - TOS_IN_IRQ_CHECK(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&event->pend_obj, PEND_TYPE_EVENT)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (!(opt_pend & TOS_OPT_EVENT_PEND_ALL) && !(opt_pend & TOS_OPT_EVENT_PEND_ANY)) { - return K_ERR_EVENT_PEND_OPT_INVALID; - } - - if ((opt_pend & TOS_OPT_EVENT_PEND_ALL) && (opt_pend & TOS_OPT_EVENT_PEND_ANY)) { - return K_ERR_EVENT_PEND_OPT_INVALID; - } - - TOS_CPU_INT_DISABLE(); - - if (event_is_match(event->flag, flag_expect, flag_match, opt_pend)) { - if (opt_pend & TOS_OPT_EVENT_PEND_CLR) { // destroy the bridge after get across the river - event->flag = (k_event_flag_t)0u; - } - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - if (timeout == TOS_TIME_NOWAIT) { - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_NOWAIT; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_SCHED_LOCKED; - } - - k_curr_task->flag_expect = flag_expect; - k_curr_task->flag_match = flag_match; - k_curr_task->opt_event_pend = opt_pend; - - pend_task_block(k_curr_task, &event->pend_obj, timeout); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - k_curr_task->flag_expect = (k_event_flag_t)0u; - k_curr_task->flag_match = (k_event_flag_t *)K_NULL; - k_curr_task->opt_event_pend = (k_opt_t)0u; - - return pend_state2errno(k_curr_task->pend_state); -} - -__STATIC__ k_err_t event_do_post(k_event_t *event, k_event_flag_t flag, opt_event_post_t opt_post) -{ - TOS_CPU_CPSR_ALLOC(); - k_task_t *task; - k_list_t *curr, *next; - - TOS_PTR_SANITY_CHECK(event); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&event->pend_obj, PEND_TYPE_EVENT)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (opt_post == OPT_EVENT_POST_KEP) { - event->flag |= flag; - } else { - event->flag = flag; - } - - TOS_CPU_INT_DISABLE(); - - TOS_LIST_FOR_EACH_SAFE(curr, next, &event->pend_obj.list) { - task = TOS_LIST_ENTRY(curr, k_task_t, pend_list); - - if (event_is_match(event->flag, task->flag_expect, task->flag_match, task->opt_event_pend)) { - pend_task_wakeup(TOS_LIST_ENTRY(curr, k_task_t, pend_list), PEND_STATE_POST); - - // if anyone pending the event has set the TOS_OPT_EVENT_PEND_CLR, then no wakeup for the others pendig for the event. - if (task->opt_event_pend & TOS_OPT_EVENT_PEND_CLR) { - event->flag = (k_event_flag_t)0u; - break; - } - } - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_event_post(k_event_t *event, k_event_flag_t flag) -{ - return event_do_post(event, flag, OPT_EVENT_POST_CLR); -} - -__API__ k_err_t tos_event_post_keep(k_event_t *event, k_event_flag_t flag) -{ - return event_do_post(event, flag, OPT_EVENT_POST_KEP); -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_fifo.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_fifo.c deleted file mode 100644 index 01e7a4c9..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_fifo.c +++ /dev/null @@ -1,196 +0,0 @@ -#include "tos.h" - -__STATIC_INLINE__ int fifo_next(k_fifo_t *fifo, int index) -{ - return (index + 1) % fifo->siz; -} - -__API__ k_err_t tos_fifo_create(k_fifo_t *fifo, uint8_t *buffer, size_t size) -{ - TOS_PTR_SANITY_CHECK(fifo); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_init(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO); -#endif - - fifo->beg = 0; - fifo->end = 0; - fifo->cnt = 0; - fifo->buf = buffer; - fifo->siz = size; - - return K_ERR_NONE; -} - -__API__ k_err_t tos_fifo_destroy(k_fifo_t *fifo) -{ - TOS_PTR_SANITY_CHECK(fifo); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - fifo->beg = 0; - fifo->end = 0; - fifo->cnt = 0; - fifo->buf = K_NULL; - fifo->siz = 0; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_deinit(&fifo->knl_obj); -#endif - - return K_ERR_NONE; -} - -__API__ k_err_t tos_fifo_push(k_fifo_t *fifo, uint8_t data) -{ - TOS_CPU_CPSR_ALLOC(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (tos_fifo_is_full(fifo)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_FIFO_FULL; - } - - fifo->buf[fifo->end] = data; - fifo->end = fifo_next(fifo, fifo->end); - ++fifo->cnt; - - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; -} - -__API__ int tos_fifo_push_stream(k_fifo_t *fifo, uint8_t *stream, size_t size) -{ - TOS_CPU_CPSR_ALLOC(); - int i = 0; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - while (!tos_fifo_is_full(fifo) && i < size) { - if (tos_fifo_push(fifo, stream[i]) != K_ERR_NONE) { - TOS_CPU_INT_ENABLE(); - return i; - } - ++i; - } - TOS_CPU_INT_ENABLE(); - return i; -} - -__API__ k_err_t tos_fifo_pop(k_fifo_t *fifo, uint8_t *out) -{ - TOS_CPU_CPSR_ALLOC(); - uint8_t data; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (tos_fifo_is_empty(fifo)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_FIFO_EMPTY; - } - - data = fifo->buf[fifo->beg]; - fifo->beg = fifo_next(fifo, fifo->beg); - --fifo->cnt; - - TOS_CPU_INT_ENABLE(); - - *out = data; - return K_ERR_NONE; -} - -__API__ int tos_fifo_pop_stream(k_fifo_t *fifo, uint8_t *buffer, size_t size) -{ - TOS_CPU_CPSR_ALLOC(); - int i = 0; - uint8_t data; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - while (!tos_fifo_is_empty(fifo) && i < size) { - if (tos_fifo_pop(fifo, &data) != K_ERR_NONE) { - TOS_CPU_INT_ENABLE(); - return i; - } - buffer[i++] = data; - } - TOS_CPU_INT_ENABLE(); - return i; -} - -__API__ void tos_fifo_flush(k_fifo_t *fifo) -{ -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return; - } -#endif - - fifo->beg = 0; - fifo->end = 0; - fifo->cnt = 0; -} - -__API__ int tos_fifo_is_empty(k_fifo_t *fifo) -{ - TOS_CPU_CPSR_ALLOC(); - int is_empty = 0; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - is_empty = (fifo->cnt == 0); - TOS_CPU_INT_ENABLE(); - - return is_empty; -} - -__API__ int tos_fifo_is_full(k_fifo_t *fifo) -{ - TOS_CPU_CPSR_ALLOC(); - int is_full = 0; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&fifo->knl_obj, KNL_OBJ_TYPE_FIFO)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - is_full = (fifo->cnt == fifo->siz); - TOS_CPU_INT_ENABLE(); - - return is_full; -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_global.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_global.c deleted file mode 100644 index e0b8f53a..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_global.c +++ /dev/null @@ -1,69 +0,0 @@ -#include - -k_nesting_t k_irq_nest_cnt = (k_nesting_t)0; -k_nesting_t k_sched_lock_nest_cnt = (k_nesting_t)0; -knl_state_t k_knl_state = KNL_STATE_STOPPED; - -readyqueue_t k_rdyq; - -k_tick_t k_tick_count = (k_tick_t)0u; -k_task_t *k_curr_task = K_NULL; -k_task_t *k_next_task = K_NULL; - -k_task_t k_idle_task; -k_stack_t k_idle_task_stk[TOS_CFG_IDLE_TASK_STK_SIZE]; -k_stack_t *const k_idle_task_stk_addr = &k_idle_task_stk[0]; -size_t const k_idle_task_stk_size = TOS_CFG_IDLE_TASK_STK_SIZE; - -k_tick_t k_cpu_tick_per_second = TOS_CFG_CPU_TICK_PER_SECOND; - -k_cycle_t k_cpu_cycle_per_tick = (k_cycle_t)0u; - -TOS_LIST_DEFINE(k_tick_list); - -#if TOS_CFG_FAULT_BACKTRACE_EN > 0u -k_fault_log_writer_t k_fault_log_writer = fault_default_log_writer; -#endif - -#if TOS_CFG_MMHEAP_EN > 0u -uint8_t k_mmheap_pool[TOS_CFG_MMHEAP_POOL_SIZE] __ALIGNED__(4); -k_mmheap_ctl_t k_mmheap_ctl; -#endif - -#if TOS_CFG_ROUND_ROBIN_EN > 0u -k_timeslice_t k_robin_default_timeslice = TOS_CFG_CPU_TICK_PER_SECOND / 10; -k_robin_state_t k_robin_state = TOS_ROBIN_STATE_DISABLED; -#endif - -#if TOS_CFG_TIMER_EN > 0u -timer_ctl_t k_timer_ctl = { TOS_TIME_FOREVER, TOS_LIST_NODE(k_timer_ctl.list) }; - -#if TOS_CFG_TIMER_AS_PROC == 0u -k_task_t k_timer_task; -k_stack_t k_timer_task_stk[TOS_CFG_TIMER_TASK_STK_SIZE]; -k_prio_t const k_timer_task_prio = TOS_CFG_TIMER_TASK_PRIO; -k_stack_t *const k_timer_task_stk_addr = &k_timer_task_stk[0]; -size_t const k_timer_task_stk_size = TOS_CFG_TIMER_TASK_STK_SIZE; -#endif /* TOS_CFG_TIMER_AS_PROC == 0u */ - -#endif - -#if TOS_CFG_MSG_EN > 0u -TOS_LIST_DEFINE(k_msg_freelist); -k_msg_t k_msg_pool[TOS_CFG_MSG_POOL_SIZE]; -#endif - -#if TOS_CFG_PWR_MGR_EN > 0u -pm_device_ctl_t k_pm_device_ctl = { 0u }; - -/* default idle power manager mode is SLEEP */ -idle_pwrmgr_mode_t k_idle_pwr_mgr_mode = IDLE_POWER_MANAGER_MODE_SLEEP; - -/* default low power mode is SLEEP */ -k_cpu_lpwr_mode_t k_cpu_lpwr_mode = TOS_LOW_POWER_MODE_SLEEP; -#endif - -#if TOS_CFG_TICKLESS_EN > 0u -k_tickless_wkup_alarm_t *k_tickless_wkup_alarm[__LOW_POWER_MODE_DUMMY] = { K_NULL }; -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmblk.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmblk.c deleted file mode 100644 index f86ff99e..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmblk.c +++ /dev/null @@ -1,118 +0,0 @@ -#include - -#if TOS_CFG_MMBLK_EN > 0u - -__API__ k_err_t tos_mmblk_pool_create(k_mmblk_pool_t *mbp, void *pool_start, size_t blk_num, size_t blk_size) -{ - uint32_t i; - void *blk_curr; - void *blk_next; - - TOS_IN_IRQ_CHECK(); - TOS_PTR_SANITY_CHECK(pool_start); - - if (((cpu_addr_t)pool_start & K_MMBLK_ALIGN_MASK) != 0u) { - return K_ERR_MMBLK_INVALID_POOL_ADDR; - } - - if ((blk_size & K_MMBLK_ALIGN_MASK) != 0u) { - return K_ERR_MMBLK_INVALID_BLK_SIZE; - } - - blk_curr = pool_start; - blk_next = K_MMBLK_NEXT_BLK(blk_curr, blk_size); - - for (i = 0; i < blk_num - 1u; ++i) { - *(void **)blk_curr = blk_next; - blk_curr = blk_next; - blk_next = K_MMBLK_NEXT_BLK(blk_next, blk_size); - } - *(void **)blk_next = K_NULL; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_init(&mbp->knl_obj, KNL_OBJ_TYPE_MMBLK_POOL); -#endif - - mbp->pool_start = pool_start; - mbp->free_list = pool_start; - mbp->blk_free = blk_num; - mbp->blk_max = blk_num; - mbp->blk_size = blk_size; - return K_ERR_NONE; -} - -__API__ k_err_t tos_mmblk_pool_destroy(k_mmblk_pool_t *mbp) -{ - TOS_PTR_SANITY_CHECK(mbp); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&mbp->knl_obj, KNL_OBJ_TYPE_MMBLK_POOL)) { - return K_ERR_OBJ_INVALID; - } -#endif - - mbp->pool_start = K_NULL; - mbp->free_list = K_NULL; - mbp->blk_free = 0; - mbp->blk_max = 0; - mbp->blk_size = 0; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_deinit(&mbp->knl_obj); -#endif - - return K_ERR_NONE; -} - -__API__ k_err_t tos_mmblk_alloc(k_mmblk_pool_t *mbp, void **blk) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(mbp); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&mbp->knl_obj, KNL_OBJ_TYPE_MMBLK_POOL)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - if (mbp->blk_free == 0) { - TOS_CPU_INT_ENABLE(); - *blk = K_NULL; - return K_ERR_MMBLK_POOL_EMPTY; - } - *blk = mbp->free_list; - mbp->free_list = *(void **)mbp->free_list; - --mbp->blk_free; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; -} - -__API__ k_err_t tos_mmblk_free(k_mmblk_pool_t *mbp, void *blk) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(mbp); - TOS_PTR_SANITY_CHECK(blk); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&mbp->knl_obj, KNL_OBJ_TYPE_MMBLK_POOL)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - if (mbp->blk_free >= mbp->blk_max) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MMBLK_POOL_FULL; - } - *(void **)blk = mbp->free_list; - mbp->free_list = blk; - ++mbp->blk_free; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmheap.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmheap.c deleted file mode 100644 index 1967f460..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mmheap.c +++ /dev/null @@ -1,685 +0,0 @@ -/* -** Two Level Segregated Fit memory allocator, version 3.1. -** Written by Matthew Conte -** http://tlsf.baisoku.org -** -** Based on the original documentation by Miguel Masmano: -** http://www.gii.upv.es/tlsf/main/docs -** -** This implementation was written to the specification -** of the document, therefore no GPL restrictions apply. -** -** Copyright (c) 2006-2016, Matthew Conte -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in the -** documentation and/or other materials provided with the distribution. -** * Neither the name of the copyright holder nor the -** names of its contributors may be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -** DISCLAIMED. IN NO EVENT SHALL MATTHEW CONTE BE LIABLE FOR ANY -** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include - -#if TOS_CFG_MMHEAP_EN > 0u - -#if defined(TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT) && (TOS_CFG_CPU_LEAD_ZEROS_ASM_PRESENT == 0u) -__STATIC__ int generic_fls(uint32_t x) -{ - int r = 32; - if (!x) - return 0; - - if (!(x & 0xffff0000u)) { - x <<= 16; - r -= 16; - } - if (!(x & 0xff000000u)) { - x <<= 8; - r -= 8; - } - if (!(x & 0xf0000000u)) { - x <<= 4; - r -= 4; - } - if (!(x & 0xc0000000u)) { - x <<= 2; - r -= 2; - } - if (!(x & 0x80000000u)) { - x <<= 1; - r -= 1; - } - return r; -} -#else -__STATIC__ int generic_fls(uint32_t x) -{ - return 32 - tos_cpu_clz(x); -} -#endif - -__STATIC__ int __ffs(uint32_t word) -{ - return generic_fls(word & (~word + 1)) - 1; -} - -__STATIC__ int __fls(uint32_t word) -{ - return generic_fls(word) - 1; -} - -/* -** TLSF utility functions. In most cases, these are direct translations of -** the documentation found in the white paper. -*/ -__STATIC__ void mapping_insert(size_t size, int *fli, int *sli) -{ - int fl, sl; - - if (size < K_MMHEAP_SMALL_BLOCK_SIZE) { - /* Store small blocks in first list. */ - fl = 0; - sl = (int)size / (K_MMHEAP_SMALL_BLOCK_SIZE / K_MMHEAP_SL_INDEX_COUNT); - } else { - fl = __fls(size); - sl = ((int)size >> (fl - K_MMHEAP_SL_INDEX_COUNT_LOG2)) ^ (1 << K_MMHEAP_SL_INDEX_COUNT_LOG2); - fl -= (K_MMHEAP_FL_INDEX_SHIFT - 1); - } - *fli = fl; - *sli = sl; -} - -/* This version rounds up to the next block size (for allocations) */ -__STATIC__ void mapping_search(size_t size, int *fli, int *sli) -{ - size_t round; - - if (size >= K_MMHEAP_SMALL_BLOCK_SIZE) { - round = (1 << (__fls(size) - K_MMHEAP_SL_INDEX_COUNT_LOG2)) - 1; - size += round; - } - mapping_insert(size, fli, sli); -} - -__STATIC__ size_t blk_size(const mmheap_blk_t *blk) -{ - return blk->size & K_MMHEAP_BLOCK_SIZE_MASK; -} - -__STATIC__ void blk_set_size(mmheap_blk_t *blk, size_t size) -{ - blk->size = size | (blk->size & K_MMHEAP_BLOCK_STATE_MASK); -} - -__STATIC__ int blk_is_free(const mmheap_blk_t *blk) -{ - return blk->size & K_MMHEAP_BLOCK_CURR_FREE; -} - -__STATIC__ void blk_set_free(mmheap_blk_t *blk) -{ - blk->size |= K_MMHEAP_BLOCK_CURR_FREE; -} - -__STATIC__ void blk_set_used(mmheap_blk_t *blk) -{ - blk->size &= ~K_MMHEAP_BLOCK_CURR_FREE; -} - -__STATIC__ int blk_is_prev_free(const mmheap_blk_t *blk) -{ - return blk->size & K_MMHEAP_BLOCK_PREV_FREE; -} - -__STATIC__ void blk_set_prev_free(mmheap_blk_t *blk) -{ - blk->size |= K_MMHEAP_BLOCK_PREV_FREE; -} - -__STATIC__ void blk_set_prev_used(mmheap_blk_t *blk) -{ - blk->size &= ~K_MMHEAP_BLOCK_PREV_FREE; -} - -__STATIC__ mmheap_blk_t *blk_from_ptr(const void *ptr) -{ - return (mmheap_blk_t *)((cpu_addr_t)ptr - K_MMHEAP_BLK_START_OFFSET); -} - -__STATIC__ void *blk_to_ptr(const mmheap_blk_t *blk) -{ - return (void *)((cpu_addr_t)blk + K_MMHEAP_BLK_START_OFFSET); -} - -/* Return location of next block after block of given size. */ -__STATIC__ mmheap_blk_t *offset_to_block(const void *ptr, int diff) -{ - return (mmheap_blk_t *)((cpu_addr_t)ptr + diff); -} - -/* Return location of previous block. */ -__STATIC__ mmheap_blk_t *blk_prev(const mmheap_blk_t *blk) -{ - return blk->prev_phys_blk; -} - -/* Return location of next existing block. */ -__STATIC__ mmheap_blk_t *blk_next(const mmheap_blk_t *blk) -{ - mmheap_blk_t *next_blk; - - next_blk = offset_to_block(blk_to_ptr(blk), blk_size(blk) - K_MMHEAP_BLK_HEADER_OVERHEAD); - return next_blk; -} - -/* Link a new block with its physical neighbor, return the neighbor. */ -__STATIC__ mmheap_blk_t *blk_link_next(mmheap_blk_t *blk) -{ - mmheap_blk_t *next_blk; - - next_blk = blk_next(blk); - next_blk->prev_phys_blk = blk; - return next_blk; -} - -__STATIC__ void blk_mark_as_free(mmheap_blk_t *blk) -{ - mmheap_blk_t *next_blk; - - /* Link the block to the next block, first. */ - next_blk = blk_link_next(blk); - blk_set_prev_free(next_blk); - blk_set_free(blk); -} - -__STATIC__ void blk_mark_as_used(mmheap_blk_t *blk) -{ - mmheap_blk_t *next_blk; - - next_blk = blk_next(blk); - blk_set_prev_used(next_blk); - blk_set_used(blk); -} - -__STATIC__ size_t align_up(size_t x, size_t align) -{ - return (x + (align - 1)) & ~(align - 1); -} - -__STATIC__ size_t align_down(size_t x, size_t align) -{ - return x - (x & (align - 1)); -} - -__STATIC__ void *align_ptr(const void *ptr, size_t align) -{ - return (void *)(((cpu_addr_t)ptr + (align -1)) & ~(align -1)); -} - -/* Insert a free block into the free block list. */ -__STATIC__ void insert_free_block(mmheap_blk_t *blk, int fl, int sl) -{ - mmheap_blk_t *curr; - - curr = k_mmheap_ctl.blocks[fl][sl]; - blk->next_free = curr; - blk->prev_free = &k_mmheap_ctl.block_null; - curr->prev_free = blk; - - /* - ** Insert the new block at the head of the list, and mark the first- - ** and second-level bitmaps appropriately. - */ - k_mmheap_ctl.blocks[fl][sl] = blk; - k_mmheap_ctl.fl_bitmap |= (1 << fl); - k_mmheap_ctl.sl_bitmap[fl] |= (1 << sl); -} - -/* Remove a free block from the free list.*/ -__STATIC__ void remove_free_block(mmheap_blk_t *blk, int fl, int sl) -{ - mmheap_blk_t *prev_blk; - mmheap_blk_t *next_blk; - - prev_blk = blk->prev_free; - next_blk = blk->next_free; - next_blk->prev_free = prev_blk; - prev_blk->next_free = next_blk; - - /* If this block is the head of the free list, set new head. */ - if (k_mmheap_ctl.blocks[fl][sl] == blk) { - k_mmheap_ctl.blocks[fl][sl] = next_blk; - - /* If the new head is null, clear the bitmap. */ - if (next_blk == &k_mmheap_ctl.block_null) { - k_mmheap_ctl.sl_bitmap[fl] &= ~(1 << sl); - - /* If the second bitmap is now empty, clear the fl bitmap. */ - if (!k_mmheap_ctl.sl_bitmap[fl]) { - k_mmheap_ctl.fl_bitmap &= ~(1 << fl); - } - } - } -} - -/* Remove a given block from the free list. */ -__STATIC__ void blk_remove(mmheap_blk_t *blk) -{ - int fl, sl; - - mapping_insert(blk_size(blk), &fl, &sl); - remove_free_block(blk, fl, sl); -} - -/* Insert a given block into the free list. */ -__STATIC__ void blk_insert(mmheap_blk_t *blk) -{ - int fl, sl; - - mapping_insert(blk_size(blk), &fl, &sl); - insert_free_block(blk, fl, sl); -} - -__STATIC__ int blk_can_split(mmheap_blk_t *blk, size_t size) -{ - return blk_size(blk) >= sizeof(mmheap_blk_t) + size; -} - -/* Split a block into two, the second of which is free. */ -__STATIC__ mmheap_blk_t *blk_split(mmheap_blk_t *blk, size_t size) -{ - mmheap_blk_t *remaining; - size_t remain_size; - - /* Calculate the amount of space left in the remaining block. */ - remaining = offset_to_block(blk_to_ptr(blk), size - K_MMHEAP_BLK_HEADER_OVERHEAD); - remain_size = blk_size(blk) - (size + K_MMHEAP_BLK_HEADER_OVERHEAD); - - blk_set_size(remaining, remain_size); - - blk_set_size(blk, size); - blk_mark_as_free(remaining); - - return remaining; -} - -/* Absorb a free block's storage into an adjacent previous free block. */ -__STATIC__ mmheap_blk_t *blk_absorb(mmheap_blk_t *prev_blk, mmheap_blk_t *blk) -{ - prev_blk->size += blk_size(blk) + K_MMHEAP_BLK_HEADER_OVERHEAD; - blk_link_next(prev_blk); - return prev_blk; -} - -/* Merge a just-freed block with an adjacent previous free block. */ -__STATIC__ mmheap_blk_t *blk_merge_prev(mmheap_blk_t *blk) -{ - mmheap_blk_t *prev_blk; - - if (blk_is_prev_free(blk)) { - prev_blk = blk_prev(blk); - blk_remove(prev_blk); - blk = blk_absorb(prev_blk, blk); - } - - return blk; -} - -/* Merge a just-freed block with an adjacent free block. */ -__STATIC__ mmheap_blk_t *blk_merge_next(mmheap_blk_t *blk) -{ - mmheap_blk_t *next_blk; - - next_blk = blk_next(blk); - if (blk_is_free(next_blk)) { - blk_remove(next_blk); - blk = blk_absorb(blk, next_blk); - } - - return blk; -} - -/* Trim any trailing block space off the end of a block, return to pool. */ -__STATIC__ void blk_trim_free(mmheap_blk_t *blk, size_t size) -{ - mmheap_blk_t *remaining_blk; - - if (blk_can_split(blk, size)) { - remaining_blk = blk_split(blk, size); - blk_link_next(blk); - blk_set_prev_free(remaining_blk); - blk_insert(remaining_blk); - } -} - -/* Trim any trailing block space off the end of a used block, return to pool. */ -__STATIC__ void blk_trim_used(mmheap_blk_t *blk, size_t size) -{ - mmheap_blk_t *remaining_blk; - - if (blk_can_split(blk, size)) { - /* If the next block is free, we must coalesce. */ - remaining_blk = blk_split(blk, size); - blk_set_prev_used(remaining_blk); - - remaining_blk = blk_merge_next(remaining_blk); - blk_insert(remaining_blk); - } -} - -__STATIC__ mmheap_blk_t *blk_trim_free_leading(mmheap_blk_t *blk, size_t size) -{ - mmheap_blk_t *remaining_blk; - - remaining_blk = blk; - if (blk_can_split(blk, size)) { - /* We want the 2nd block. */ - remaining_blk = blk_split(blk, size - K_MMHEAP_BLK_HEADER_OVERHEAD); - blk_set_prev_free(remaining_blk); - - blk_link_next(blk); - blk_insert(blk); - } - - return remaining_blk; -} - -__STATIC__ mmheap_blk_t *blk_search_suitable(int *fli, int *sli) -{ - int fl, sl; - uint32_t sl_map, fl_map; - - fl = *fli; - sl = *sli; - - /* - ** First, search for a block in the list associated with the given - ** fl/sl index. - */ - sl_map = k_mmheap_ctl.sl_bitmap[fl] & (~0U << sl); - if (!sl_map) { - /* No block exists. Search in the next largest first-level list. */ - fl_map = k_mmheap_ctl.fl_bitmap & (~0U << (fl + 1)); - if (!fl_map) { - /* No free blocks available, memory has been exhausted. */ - return 0; - } - - fl = __ffs(fl_map); - *fli = fl; - sl_map = k_mmheap_ctl.sl_bitmap[fl]; - } - sl = __ffs(sl_map); - *sli = sl; - - /* Return the first block in the free list. */ - return k_mmheap_ctl.blocks[fl][sl]; -} - -__STATIC__ mmheap_blk_t *blk_locate_free(size_t size) -{ - int fl = 0, sl = 0; - mmheap_blk_t *blk = K_NULL; - - if (!size) { - return K_NULL; - } - - mapping_search(size, &fl, &sl); - - /* - ** mapping_search can futz with the size, so for excessively large sizes it can sometimes wind up - ** with indices that are off the end of the block array. - ** So, we protect against that here, since this is the only callsite of mapping_search. - ** Note that we don't need to check sl, since it comes from a modulo operation that guarantees it's always in range. - */ - if (fl < K_MMHEAP_FL_INDEX_COUNT) { - blk = blk_search_suitable(&fl, &sl); - } - - if (blk) { - remove_free_block(blk, fl, sl); - } - - return blk; -} - -/* -** Adjust an allocation size to be aligned to word size, and no smaller -** than internal minimum. -*/ -__STATIC__ size_t adjust_request_size(size_t size, size_t align) -{ - size_t adjust_size = 0; - - if (!size) { - return 0; - } - - adjust_size = align_up(size, align); - if (adjust_size > K_MMHEAP_BLK_SIZE_MAX) { - return 0; - } - - /* aligned sized must not exceed block_size_max or we'll go out of bounds on sl_bitmap */ - return adjust_size > K_MMHEAP_BLK_SIZE_MIN ? adjust_size : K_MMHEAP_BLK_SIZE_MIN; -} - -__STATIC__ void *blk_prepare_used(mmheap_blk_t *blk, size_t size) -{ - if (!blk) { - return K_NULL; - } - blk_trim_free(blk, size); - blk_mark_as_used(blk); - return blk_to_ptr(blk); -} - -__STATIC__ void mmheap_ctl_init(void) -{ - int i, j; - - k_mmheap_ctl.block_null.next_free = &k_mmheap_ctl.block_null; - k_mmheap_ctl.block_null.prev_free = &k_mmheap_ctl.block_null; - - k_mmheap_ctl.fl_bitmap = 0; - for (i = 0; i < K_MMHEAP_FL_INDEX_COUNT; ++i) { - k_mmheap_ctl.sl_bitmap[i] = 0; - for (j = 0; j < K_MMHEAP_SL_INDEX_COUNT; ++j) { - k_mmheap_ctl.blocks[i][j] = &k_mmheap_ctl.block_null; - } - } -} - -__KERNEL__ k_err_t mmheap_init(void *pool_start, size_t pool_size) -{ - mmheap_ctl_init(); - - return tos_mmheap_pool_add(pool_start, pool_size); -} - -__API__ void *tos_mmheap_alloc(size_t size) -{ - size_t adjust_size; - mmheap_blk_t *blk; - - adjust_size = adjust_request_size(size, K_MMHEAP_ALIGN_SIZE); - blk = blk_locate_free(adjust_size); - if (!blk) { - return K_NULL; - } - - return blk_prepare_used(blk, adjust_size); -} - -__API__ void *tos_mmheap_calloc(size_t num, size_t size) -{ - void *ptr; - - ptr = tos_mmheap_alloc(num * size); - if (ptr) { - memset(ptr, 0, num * size); - } - - return ptr; -} - -__API__ void *tos_mmheap_aligned_alloc(size_t size, size_t align) -{ - mmheap_blk_t *blk; - void *ptr, *aligned, *next_aligned; - size_t adjust_size, aligned_size; - size_t gap_minimum, size_with_gap, gap, gap_remain, offset; - - adjust_size = adjust_request_size(size, K_MMHEAP_ALIGN_SIZE); - gap_minimum = sizeof(mmheap_blk_t); - size_with_gap = adjust_request_size(adjust_size + align + gap_minimum, align); - aligned_size = (adjust_size && align > K_MMHEAP_ALIGN_SIZE) ? size_with_gap : adjust_size; - - blk = blk_locate_free(aligned_size); - if (!blk) { - return K_NULL; - } - - ptr = blk_to_ptr(blk); - aligned = align_ptr(ptr, align); - gap = (size_t)((cpu_addr_t)aligned - (cpu_addr_t)ptr); - - if (gap && gap < gap_minimum) { - gap_remain = gap_minimum - gap; - offset = gap_remain > align ? gap_remain : align; - next_aligned = (void *)((cpu_data_t)aligned + offset); - - aligned = align_ptr(next_aligned, align); - gap = (size_t)((cpu_addr_t)aligned - (cpu_addr_t)ptr); - } - - if (gap) { - blk = blk_trim_free_leading(blk, gap); - } - - return blk_prepare_used(blk, adjust_size); -} - -__API__ void tos_mmheap_free(void *ptr) -{ - mmheap_blk_t *blk; - - if (!ptr) { - return; - } - - blk = blk_from_ptr(ptr); - blk_mark_as_free(blk); - blk = blk_merge_prev(blk); - blk = blk_merge_next(blk); - blk_insert(blk); -} - -__API__ void *tos_mmheap_realloc(void *ptr, size_t size) -{ - void *p = 0; - mmheap_blk_t *curr_blk, *next_blk; - size_t curr_size, combined_size, adjust_size, min_size; - - if (ptr && size == 0) { - tos_mmheap_free(ptr); - return K_NULL; - } - - if (!ptr) { - return tos_mmheap_alloc(size); - } - - curr_blk = blk_from_ptr(ptr); - next_blk = blk_next(curr_blk); - - curr_size = blk_size(curr_blk); - combined_size = curr_size + blk_size(next_blk) + K_MMHEAP_BLK_HEADER_OVERHEAD; - adjust_size = adjust_request_size(size, K_MMHEAP_ALIGN_SIZE); - - if (adjust_size > curr_size && (!blk_is_free(next_blk) || adjust_size > combined_size)) { - p = tos_mmheap_alloc(size); - if (p) { - min_size = curr_size < size ? curr_size : size; - memcpy(p, ptr, min_size); - tos_mmheap_free(ptr); - } - } else { - if (adjust_size > curr_size) { - blk_merge_next(curr_blk); - blk_mark_as_used(curr_blk); - } - - blk_trim_used(curr_blk, adjust_size); - p = ptr; - } - - return p; -} - -__API__ k_err_t tos_mmheap_pool_add(void *pool_start, size_t pool_size) -{ - mmheap_blk_t *curr_blk; - mmheap_blk_t *next_blk; - size_t size_aligned; - - size_aligned = align_down(pool_size - 2 * K_MMHEAP_BLK_HEADER_OVERHEAD, K_MMHEAP_ALIGN_SIZE); - - if (((cpu_addr_t)pool_start % K_MMHEAP_ALIGN_SIZE) != 0u) { - return K_ERR_MMHEAP_INVALID_POOL_ADDR; - } - - if (size_aligned < K_MMHEAP_BLK_SIZE_MIN || - size_aligned > K_MMHEAP_BLK_SIZE_MAX) { - return K_ERR_MMHEAP_INVALID_POOL_SIZE; - } - - /* - ** Create the main free block. Offset the start of the block slightly - ** so that the prev_phys_block field falls outside of the pool - - ** it will never be used. - */ - curr_blk = offset_to_block(pool_start, -K_MMHEAP_BLK_HEADER_OVERHEAD); - blk_set_size(curr_blk, size_aligned); - blk_set_free(curr_blk); - blk_set_prev_used(curr_blk); - blk_insert(curr_blk); - - /* Split the block to create a zero-size sentinel block. */ - next_blk = blk_link_next(curr_blk); - blk_set_size(next_blk, 0); - blk_set_used(next_blk); - blk_set_prev_free(next_blk); - return K_ERR_NONE; -} - -__API__ void tos_mmheap_pool_rmv(void *pool_start) -{ - int fl = 0, sl = 0; - mmheap_blk_t *blk; - - blk = offset_to_block(pool_start, -K_MMHEAP_BLK_HEADER_OVERHEAD); - mapping_insert(blk_size(blk), &fl, &sl); - remove_free_block(blk, fl, sl); -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_msg.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_msg.c deleted file mode 100644 index c0dfbc35..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_msg.c +++ /dev/null @@ -1,142 +0,0 @@ -#include - -#if TOS_CFG_MSG_EN > 0u - -__KERNEL__ void msgpool_init(void) -{ - uint32_t i; - - for (i = 0; i < TOS_CFG_MSG_POOL_SIZE; ++i) { - tos_list_init(&k_msg_pool[i].list); - tos_list_add(&k_msg_pool[i].list, &k_msg_freelist); - } -} - -__STATIC__ k_msg_t *msgpool_alloc(void) -{ - k_msg_t *msg = K_NULL; - - if (tos_list_empty(&k_msg_freelist)) { - return K_NULL; - } - - msg = TOS_LIST_FIRST_ENTRY(&k_msg_freelist, k_msg_t, list); - tos_list_del(&msg->list); - return msg; -} - -__STATIC__ void msgpool_free(k_msg_t *msg) -{ - tos_list_del(&msg->list); - tos_list_add(&msg->list, &k_msg_freelist); -} - -__API__ void tos_msg_queue_flush(k_msg_queue_t *msg_queue) -{ - TOS_CPU_CPSR_ALLOC(); - k_list_t *curr, *next; - - TOS_CPU_INT_DISABLE(); - - TOS_LIST_FOR_EACH_SAFE(curr, next, &msg_queue->queue_head) { - msgpool_free(TOS_LIST_ENTRY(curr, k_msg_t, list)); - } - - TOS_CPU_INT_ENABLE(); -} - -__API__ k_err_t tos_msg_queue_create(k_msg_queue_t *msg_queue) -{ - TOS_PTR_SANITY_CHECK(msg_queue); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_init(&msg_queue->knl_obj, KNL_OBJ_TYPE_MSG_QUEUE); -#endif - - tos_list_init(&msg_queue->queue_head); - return K_ERR_NONE; -} - -__API__ k_err_t tos_msg_queue_destroy(k_msg_queue_t *msg_queue) -{ - TOS_PTR_SANITY_CHECK(msg_queue); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&msg_queue->knl_obj, KNL_OBJ_TYPE_MSG_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - tos_msg_queue_flush(msg_queue); - tos_list_init(&msg_queue->queue_head); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_deinit(&msg_queue->knl_obj); -#endif - - return K_ERR_NONE; -} - -__API__ k_err_t tos_msg_queue_get(k_msg_queue_t *msg_queue, void **msg_addr, size_t *msg_size) -{ - TOS_CPU_CPSR_ALLOC(); - k_msg_t *msg; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&msg_queue->knl_obj, KNL_OBJ_TYPE_MSG_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - msg = TOS_LIST_FIRST_ENTRY_OR_NULL(&msg_queue->queue_head, k_msg_t, list); - if (!msg) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MSG_QUEUE_EMPTY; - } - - *msg_addr = msg->msg_addr; - *msg_size = msg->msg_size; - msgpool_free(msg); - - TOS_CPU_INT_ENABLE(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_msg_queue_put(k_msg_queue_t *msg_queue, void *msg_addr, size_t msg_size, k_opt_t opt) -{ - TOS_CPU_CPSR_ALLOC(); - k_msg_t *msg; - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&msg_queue->knl_obj, KNL_OBJ_TYPE_MSG_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - msg = msgpool_alloc(); - if (!msg) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MSG_QUEUE_FULL; - } - - msg->msg_addr = msg_addr; - msg->msg_size = msg_size; - - if (opt & TOS_OPT_MSG_PUT_LIFO) { - tos_list_add(&msg->list, &msg_queue->queue_head); - } else { - tos_list_add_tail(&msg->list, &msg_queue->queue_head); - } - - TOS_CPU_INT_ENABLE(); - - return K_ERR_NONE; -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mutex.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_mutex.c deleted file mode 100644 index 267879cd..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_mutex.c +++ /dev/null @@ -1,205 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_MUTEX_EN > 0u - -__STATIC_INLINE__ void mutex_old_owner_release(k_mutex_t *mutex) -{ - k_task_t *owner; - - owner = mutex->owner; - - tos_list_del(&mutex->owner_list); - mutex->owner = K_NULL; - - // the right time comes! let's do it! - if (owner->prio_pending != K_TASK_PRIO_INVALID) { - tos_task_prio_change(owner, owner->prio_pending); - owner->prio_pending = K_TASK_PRIO_INVALID; - } else if (owner->prio != mutex->owner_orig_prio) { - tos_task_prio_change(owner, mutex->owner_orig_prio); - mutex->owner_orig_prio = K_TASK_PRIO_INVALID; - } -} - -__STATIC_INLINE__ void mutex_fresh_owner_mark(k_mutex_t *mutex, k_task_t *task) -{ - mutex->pend_nesting = (k_nesting_t)1u; - mutex->owner = task; - mutex->owner_orig_prio = task->prio; - - tos_list_add(&mutex->owner_list, &task->mutex_own_list); -} - -__STATIC_INLINE__ void mutex_new_owner_mark(k_mutex_t *mutex, k_task_t *task) -{ - k_prio_t highest_pending_prio; - - mutex_fresh_owner_mark(mutex, task); - - // we own the mutex now, make sure our priority is higher than any one in the pend list. - highest_pending_prio = pend_highest_prio_get(&mutex->pend_obj); - if (task->prio > highest_pending_prio) { - tos_task_prio_change(task, highest_pending_prio); - } -} - -__KERNEL__ void mutex_release(k_mutex_t *mutex) -{ - mutex_old_owner_release(mutex); - pend_wakeup_all(&mutex->pend_obj, PEND_STATE_OWNER_DIE); -} - -__API__ k_err_t tos_mutex_create(k_mutex_t *mutex) -{ - TOS_PTR_SANITY_CHECK(mutex); - - pend_object_init(&mutex->pend_obj, PEND_TYPE_MUTEX); - mutex->pend_nesting = (k_nesting_t)0u; - mutex->owner = K_NULL; - mutex->owner_orig_prio = K_TASK_PRIO_INVALID; - tos_list_init(&mutex->owner_list); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_mutex_destroy(k_mutex_t *mutex) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(mutex); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&mutex->pend_obj, PEND_TYPE_MUTEX)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (!pend_is_nopending(&mutex->pend_obj)) { - pend_wakeup_all(&mutex->pend_obj, PEND_STATE_DESTROY); - } - - pend_object_deinit(&mutex->pend_obj); - mutex->pend_nesting = (k_nesting_t)0u; - - if (mutex->owner) { - mutex_old_owner_release(mutex); - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_mutex_pend_timed(k_mutex_t *mutex, k_tick_t timeout) -{ - TOS_CPU_CPSR_ALLOC(); - k_err_t err; - - TOS_PTR_SANITY_CHECK(mutex); - TOS_IN_IRQ_CHECK(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&mutex->pend_obj, PEND_TYPE_MUTEX)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - if (mutex->pend_nesting == (k_nesting_t)0u) { // first come - mutex_fresh_owner_mark(mutex, k_curr_task); - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - if (knl_is_self(mutex->owner)) { // come again - if (mutex->pend_nesting == (k_nesting_t)-1) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MUTEX_NESTING_OVERFLOW; - } - ++mutex->pend_nesting; - TOS_CPU_INT_ENABLE(); - return K_ERR_MUTEX_NESTING; - } - - if (timeout == TOS_TIME_NOWAIT) { // no wait, return immediately - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_NOWAIT; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_SCHED_LOCKED; - } - - if (mutex->owner->prio > k_curr_task->prio) { - // PRIORITY INVERSION: - // we are declaring a mutex, which's owner has a lower(numerically bigger) priority. - // make owner the same priority with us. - tos_task_prio_change(mutex->owner, k_curr_task->prio); - } - - pend_task_block(k_curr_task, &mutex->pend_obj, timeout); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - err = pend_state2errno(k_curr_task->pend_state); - - if (err == K_ERR_NONE) { - // good, we are the owner now. - TOS_CPU_INT_DISABLE(); - mutex_new_owner_mark(mutex, k_curr_task); - TOS_CPU_INT_ENABLE(); - } - - return err; -} - -__API__ k_err_t tos_mutex_pend(k_mutex_t *mutex) -{ - return tos_mutex_pend_timed(mutex, TOS_TIME_FOREVER); -} - -__API__ k_err_t tos_mutex_post(k_mutex_t *mutex) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(mutex); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&mutex->pend_obj, PEND_TYPE_MUTEX)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - if (!knl_is_self(mutex->owner)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MUTEX_NOT_OWNER; - } - - --mutex->pend_nesting; - if (mutex->pend_nesting > (k_nesting_t)0u) { - TOS_CPU_INT_ENABLE(); - return K_ERR_MUTEX_NESTING; - } - - mutex_old_owner_release(mutex); - - if (pend_is_nopending(&mutex->pend_obj)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - pend_wakeup_one(&mutex->pend_obj, PEND_STATE_POST); - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_pend.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_pend.c deleted file mode 100644 index 6d51108b..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_pend.c +++ /dev/null @@ -1,138 +0,0 @@ -#include "tos.h" - -__STATIC__ void pend_list_add(k_task_t *task, pend_obj_t *pend_obj) -{ - k_list_t *curr, *pend_list; - k_task_t *iter; - - pend_list = &pend_obj->list; - /* keep priority in descending order, the boss(task with highest priority, - numerically smallest) always comes first - */ - TOS_LIST_FOR_EACH(curr, pend_list) { - iter = TOS_LIST_ENTRY(curr, k_task_t, pend_list); - if (task->prio < iter->prio) { - break; - } - } - tos_list_add_tail(&task->pend_list, curr); - - // remember me, you may use me someday - task->pending_obj = pend_obj; - task_state_set_pend(task); -} - -__KERNEL__ k_prio_t pend_highest_prio_get(pend_obj_t *object) -{ - k_task_t *task; - - // we keep the task priority in descending order, so the first one is just fine. - task = TOS_LIST_FIRST_ENTRY_OR_NULL(&object->list, k_task_t, pend_list); - return task ? task->prio : K_TASK_PRIO_INVALID; -} - -__KERNEL__ void pend_list_remove(k_task_t *task) -{ - tos_list_del(&task->pend_list); - - task->pending_obj = (pend_obj_t *)K_NULL; - task_state_reset_pending(task); -} - -__KERNEL__ void pend_object_init(pend_obj_t *object, pend_type_t type) -{ - object->type = type; - tos_list_init(&object->list); -} - -__KERNEL__ void pend_object_deinit(pend_obj_t *object) -{ - object->type = PEND_TYPE_NONE; - tos_list_init(&object->list); -} - -__KERNEL__ int pend_is_nopending(pend_obj_t *object) -{ - return tos_list_empty(&object->list); -} - -__KERNEL__ void pend_list_adjust(k_task_t *task) -{ - // we may be the boss, so re-enter the pend list - tos_list_del(&task->pend_list); - // the "someday" comes - pend_list_add(task, task->pending_obj); -} - -__KERNEL__ int pend_object_verify(pend_obj_t *object, pend_type_t type) -{ - return object->type == type; -} - -__KERNEL__ k_err_t pend_state2errno(pend_state_t state) -{ - if (state == PEND_STATE_POST) { - return K_ERR_NONE; - } else if (state == PEND_STATE_TIMEOUT) { - return K_ERR_PEND_TIMEOUT; - } else if (state == PEND_STATE_DESTROY) { - return K_ERR_PEND_DESTROY; - } else if (state == PEND_STATE_OWNER_DIE) { - return K_ERR_PEND_OWNER_DIE; - } else { - return K_ERR_PEND_ABNORMAL; - } -} - -__KERNEL__ void pend_task_wakeup(k_task_t *task, pend_state_t state) -{ - if (task_state_is_pending(task)) { - // mark why we wakeup - task->pend_state = state; - pend_list_remove(task); - } - - if (task_state_is_sleeping(task)) { - tick_list_remove(task); - } - - if (task_state_is_suspended(task)) { - return; - } - - readyqueue_add(task); -} - -__KERNEL__ void pend_task_block(k_task_t *task, pend_obj_t *object, k_tick_t timeout) -{ - readyqueue_remove(task); - pend_list_add(task, object); - - if (timeout != TOS_TIME_FOREVER) { - tick_list_add(task, timeout); - } -} - -__KERNEL__ void pend_wakeup_one(pend_obj_t *object, pend_state_t state) -{ - pend_task_wakeup(TOS_LIST_FIRST_ENTRY(&object->list, k_task_t, pend_list), state); -} - -__KERNEL__ void pend_wakeup_all(pend_obj_t *object, pend_state_t state) -{ - k_list_t *curr, *next; - - TOS_LIST_FOR_EACH_SAFE(curr, next, &object->list) { - pend_task_wakeup(TOS_LIST_ENTRY(curr, k_task_t, pend_list), state); - } -} - -__KERNEL__ void pend_wakeup(pend_obj_t *object, pend_state_t state, opt_post_t opt) -{ - if (opt == OPT_POST_ONE) { - pend_wakeup_one(object, state); - } else { - pend_wakeup_all(object, state); - } -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_queue.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_queue.c deleted file mode 100644 index fbed18a0..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_queue.c +++ /dev/null @@ -1,170 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_QUEUE_EN > 0u - -__API__ k_err_t tos_queue_create(k_queue_t *queue) -{ - TOS_PTR_SANITY_CHECK(queue); - - pend_object_init(&queue->pend_obj, PEND_TYPE_QUEUE); - tos_msg_queue_create(&queue->msg_queue); - return K_ERR_NONE; -} - -__API__ k_err_t tos_queue_destroy(k_queue_t *queue) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(queue); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&queue->pend_obj, PEND_TYPE_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (!pend_is_nopending(&queue->pend_obj)) { - pend_wakeup_all(&queue->pend_obj, PEND_STATE_DESTROY); - } - - pend_object_deinit(&queue->pend_obj); - tos_msg_queue_flush(&queue->msg_queue); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_queue_flush(k_queue_t *queue) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(queue); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&queue->pend_obj, PEND_TYPE_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - tos_msg_queue_flush(&queue->msg_queue); - TOS_CPU_INT_ENABLE(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_queue_pend(k_queue_t *queue, void **msg_addr, size_t *msg_size, k_tick_t timeout) -{ - TOS_CPU_CPSR_ALLOC(); - k_err_t err; - - TOS_PTR_SANITY_CHECK(queue); - TOS_PTR_SANITY_CHECK(msg_addr); - TOS_PTR_SANITY_CHECK(msg_size); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&queue->pend_obj, PEND_TYPE_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (tos_msg_queue_get(&queue->msg_queue, msg_addr, msg_size) == K_ERR_NONE) { - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - if (timeout == TOS_TIME_NOWAIT) { - *msg_addr = K_NULL; - *msg_size = 0; - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_NOWAIT; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_SCHED_LOCKED; - } - - pend_task_block(k_curr_task, &queue->pend_obj, timeout); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - err = pend_state2errno(k_curr_task->pend_state); - - if (err == K_ERR_NONE) { - *msg_addr = k_curr_task->msg_addr; - *msg_size = k_curr_task->msg_size; - k_curr_task->msg_addr = K_NULL; - k_curr_task->msg_size = 0; - } - - return err; -} - -__STATIC__ void queue_task_msg_recv(k_task_t *task, void *msg_addr, size_t msg_size) -{ - task->msg_addr = msg_addr; - task->msg_size = msg_size; - pend_task_wakeup(task, PEND_STATE_POST); -} - -__STATIC__ k_err_t queue_do_post(k_queue_t *queue, void *msg_addr, size_t msg_size, opt_post_t opt) -{ - TOS_CPU_CPSR_ALLOC(); - k_list_t *curr, *next; - - TOS_PTR_SANITY_CHECK(queue); - TOS_PTR_SANITY_CHECK(msg_addr); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&queue->pend_obj, PEND_TYPE_QUEUE)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (pend_is_nopending(&queue->pend_obj)) { - if (tos_msg_queue_put(&queue->msg_queue, msg_addr, msg_size, TOS_OPT_MSG_PUT_FIFO) != K_ERR_NONE) { - TOS_CPU_INT_ENABLE(); - return K_ERR_QUEUE_FULL; - } - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - if (opt == OPT_POST_ONE) { - queue_task_msg_recv(TOS_LIST_FIRST_ENTRY(&queue->pend_obj.list, k_task_t, pend_list), - msg_addr, msg_size); - } else { // OPT_QUEUE_POST_ALL - TOS_LIST_FOR_EACH_SAFE(curr, next, &queue->pend_obj.list) { - queue_task_msg_recv(TOS_LIST_ENTRY(curr, k_task_t, pend_list), - msg_addr, msg_size); - } - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_queue_post(k_queue_t *queue, void *msg_addr, size_t msg_size) -{ - return queue_do_post(queue, msg_addr, msg_size, OPT_POST_ONE); -} - -__API__ k_err_t tos_queue_post_all(k_queue_t *queue, void *msg_addr, size_t msg_size) -{ - return queue_do_post(queue, msg_addr, msg_size, OPT_POST_ALL); -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_robin.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_robin.c deleted file mode 100644 index 0e0d39f5..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_robin.c +++ /dev/null @@ -1,92 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_ROUND_ROBIN_EN > 0u - -__API__ void tos_robin_config(k_robin_state_t robin_state, k_timeslice_t default_timeslice) -{ - TOS_CPU_CPSR_ALLOC(); - TOS_CPU_INT_DISABLE(); - - k_robin_state = robin_state; - - if (default_timeslice > (k_timeslice_t)0u) { - k_robin_default_timeslice = default_timeslice; - } else { - k_robin_default_timeslice = TOS_CFG_CPU_TICK_PER_SECOND / 10; - } - TOS_CPU_INT_ENABLE(); -} - -__API__ void tos_robin_timeslice_set(k_task_t *task, k_timeslice_t timeslice) -{ - TOS_CPU_CPSR_ALLOC(); - - if (!task) { - task = k_curr_task; - } - - TOS_CPU_INT_DISABLE(); - - if (timeslice == (k_timeslice_t)0u) { - task->timeslice_reload = k_robin_default_timeslice; - } else { - task->timeslice_reload = timeslice; - } - - if (task->timeslice_reload > task->timeslice) { - task->timeslice = task->timeslice_reload; - } - TOS_CPU_INT_ENABLE(); -} - -__KERNEL__ void robin_sched(k_prio_t prio) -{ - TOS_CPU_CPSR_ALLOC(); - k_task_t *task; - - if (k_robin_state != TOS_ROBIN_STATE_ENABLED) { - return; - } - - TOS_CPU_INT_DISABLE(); - - task = readyqueue_first_task_get(prio); - if (!task || knl_is_idle(task)) { - TOS_CPU_INT_ENABLE(); - return; - } - - if (readyqueue_is_prio_onlyone(prio)) { - TOS_CPU_INT_ENABLE(); - return; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return; - } - - if (task->timeslice > (k_timeslice_t)0u) { - --task->timeslice; - } - - if (task->timeslice > (k_timeslice_t)0u) { - TOS_CPU_INT_ENABLE(); - return; - } - - readyqueue_move_head_to_tail(k_curr_task->prio); - - task = readyqueue_first_task_get(prio); - if (task->timeslice_reload == (k_timeslice_t)0u) { - task->timeslice = k_robin_default_timeslice; - } else { - task->timeslice = task->timeslice_reload; - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sched.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_sched.c deleted file mode 100644 index 9ab93b2b..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sched.c +++ /dev/null @@ -1,171 +0,0 @@ -#include - -__STATIC__ k_prio_t readyqueue_prio_highest_get(void) -{ - uint32_t *tbl; - k_prio_t prio; - - prio = 0; - tbl = &k_rdyq.prio_mask[0]; - - while (*tbl == 0) { - prio += K_PRIO_TBL_SLOT_SIZE; - ++tbl; - } - prio += tos_cpu_clz(*tbl); - return prio; -} - -__STATIC_INLINE__ void readyqueue_prio_insert(k_prio_t prio) -{ - k_rdyq.prio_mask[K_PRIO_NDX(prio)] |= K_PRIO_BIT(prio); -} - -__STATIC_INLINE__ void readyqueue_prio_remove(k_prio_t prio) -{ - k_rdyq.prio_mask[K_PRIO_NDX(prio)] &= ~K_PRIO_BIT(prio); -} - -__STATIC_INLINE__ void readyqueue_prio_mark(k_prio_t prio) -{ - readyqueue_prio_insert(prio); - - if (prio < k_rdyq.highest_prio) { - k_rdyq.highest_prio = prio; - } -} - -/** - * when this function involved, must be at least one task in the task list of the certain priority - */ -__KERNEL__ int readyqueue_is_prio_onlyone(k_prio_t prio) -{ - k_list_t *task_list; - k_task_t *task; - - task_list = &k_rdyq.task_list_head[prio]; - task = TOS_LIST_FIRST_ENTRY(task_list, k_task_t, pend_list); - return task->pend_list.next == task_list; -} - -__KERNEL__ k_task_t *readyqueue_first_task_get(k_prio_t prio) -{ - k_list_t *task_list; - - task_list = &k_rdyq.task_list_head[prio]; - return TOS_LIST_FIRST_ENTRY_OR_NULL(task_list, k_task_t, pend_list); -} - -__KERNEL__ k_task_t *readyqueue_highest_ready_task_get(void) -{ - k_list_t *task_list; - - task_list = &k_rdyq.task_list_head[k_rdyq.highest_prio]; - return TOS_LIST_FIRST_ENTRY(task_list, k_task_t, pend_list); -} - -__KERNEL__ void readyqueue_init(void) -{ - uint8_t i; - - k_rdyq.highest_prio = TOS_CFG_TASK_PRIO_MAX; - - for (i = 0; i < TOS_CFG_TASK_PRIO_MAX; ++i) { - tos_list_init(&k_rdyq.task_list_head[i]); - } - - for (i = 0; i < K_PRIO_TBL_SIZE; ++i) { - k_rdyq.prio_mask[i] = 0; - } -} - -__DEBUG__ void readyqueue_walkthru(void) -{ - uint8_t i; - k_task_t *task; - k_list_t *task_list, *curr; - - tos_kprintf("==========================\n"); - tos_kprintf("%d\n", k_rdyq.highest_prio); - - for (i = 0; i < TOS_CFG_TASK_PRIO_MAX; ++i) { - task_list = &k_rdyq.task_list_head[i]; - if (!tos_list_empty(task_list)) { - TOS_LIST_FOR_EACH(curr, task_list) { - task = TOS_LIST_ENTRY(curr, k_task_t, pend_list); - tos_kprintf("---- %d %d [%d] %s\n", task->prio, i, task->state, task->name); - } - } - } - tos_kprintf("\n\n"); -} - -__KERNEL__ void readyqueue_add_head(k_task_t *task) -{ - k_prio_t task_prio; - k_list_t *task_list; - - task_prio = task->prio; - task_list = &k_rdyq.task_list_head[task_prio]; - - if (tos_list_empty(task_list)) { - readyqueue_prio_mark(task_prio); - } - - tos_list_add(&task->pend_list, task_list); -} - -__KERNEL__ void readyqueue_add_tail(k_task_t *task) -{ - k_prio_t task_prio; - k_list_t *task_list; - - task_prio = task->prio; - task_list = &k_rdyq.task_list_head[task_prio]; - - if (tos_list_empty(task_list)) { - readyqueue_prio_mark(task_prio); - } - - tos_list_add_tail(&task->pend_list, task_list); -} - -__KERNEL__ void readyqueue_add(k_task_t *task) -{ - if (task->prio == k_curr_task->prio) { - readyqueue_add_tail(task); - } else { - readyqueue_add_head(task); - } -} - -__KERNEL__ void readyqueue_remove(k_task_t *task) -{ - k_prio_t task_prio; - k_list_t *task_list; - - task_prio = task->prio; - task_list = &k_rdyq.task_list_head[task_prio]; - - tos_list_del(&task->pend_list); - - if (tos_list_empty(task_list)) { - readyqueue_prio_remove(task_prio); - } - - if (task_prio == k_rdyq.highest_prio) { - k_rdyq.highest_prio = readyqueue_prio_highest_get(); - } -} - -__KERNEL__ void readyqueue_move_head_to_tail(k_prio_t prio) -{ - k_list_t *task_list; - - task_list = &k_rdyq.task_list_head[prio]; - - if (!tos_list_empty(task_list)) { - tos_list_move_tail(task_list->next, task_list); - } -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sem.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_sem.c deleted file mode 100644 index a9c2ae3c..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sem.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_SEM_EN > 0u - -__API__ k_err_t tos_sem_create(k_sem_t *sem, k_sem_cnt_t init_count) -{ - TOS_PTR_SANITY_CHECK(sem); - - pend_object_init(&sem->pend_obj, PEND_TYPE_SEM); - sem->count = init_count; - - return K_ERR_NONE; -} - -__API__ k_err_t tos_sem_destroy(k_sem_t *sem) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(sem); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&sem->pend_obj, PEND_TYPE_SEM)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (!pend_is_nopending(&sem->pend_obj)) { - pend_wakeup_all(&sem->pend_obj, PEND_STATE_DESTROY); - } - - pend_object_deinit(&sem->pend_obj); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__STATIC__ k_err_t sem_do_post(k_sem_t *sem, opt_post_t opt) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(sem); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&sem->pend_obj, PEND_TYPE_SEM)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (sem->count == (k_sem_cnt_t)-1) { - TOS_CPU_INT_ENABLE(); - return K_ERR_SEM_OVERFLOW; - } - - if (pend_is_nopending(&sem->pend_obj)) { - ++sem->count; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - pend_wakeup(&sem->pend_obj, PEND_STATE_POST, opt); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_sem_post(k_sem_t *sem) -{ - return sem_do_post(sem, OPT_POST_ONE); -} - -__API__ k_err_t tos_sem_post_all(k_sem_t *sem) -{ - return sem_do_post(sem, OPT_POST_ALL); -} - -__API__ k_err_t tos_sem_pend(k_sem_t *sem, k_tick_t timeout) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(sem); - TOS_IN_IRQ_CHECK(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!pend_object_verify(&sem->pend_obj, PEND_TYPE_SEM)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (sem->count > (k_sem_cnt_t)0u) { - --sem->count; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; - } - - if (timeout == TOS_TIME_NOWAIT) { // no wait, return immediately - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_NOWAIT; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return K_ERR_PEND_SCHED_LOCKED; - } - - pend_task_block(k_curr_task, &sem->pend_obj, timeout); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return pend_state2errno(k_curr_task->pend_state); -} - -#endif // TOS_CFG_SEM_EN - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sys.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_sys.c deleted file mode 100644 index c09fd365..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_sys.c +++ /dev/null @@ -1,262 +0,0 @@ -#include - -__API__ k_err_t tos_knl_init(void) -{ - k_err_t err; - - cpu_init(); - - readyqueue_init(); - -#if TOS_CFG_MMHEAP_EN > 0 - mmheap_init(k_mmheap_pool, TOS_CFG_MMHEAP_POOL_SIZE); -#endif - -#if (TOS_CFG_MSG_EN) > 0 - msgpool_init(); -#endif - - err = knl_idle_init(); - if (err != K_ERR_NONE) { - return err; - } - -#if TOS_CFG_TIMER_EN > 0 - err = timer_init(); - if (err != K_ERR_NONE) { - return err; - } -#endif - -#if TOS_CFG_PWR_MGR_EN > 0U - pm_init(); -#endif - -#if TOS_CFG_TICKLESS_EN > 0u - tickless_init(); -#endif - - return K_ERR_NONE; -} - -__API__ void tos_knl_irq_enter(void) -{ - if (!tos_knl_is_running()) { - return; - } - - if (unlikely(k_irq_nest_cnt >= K_NESTING_LIMIT_IRQ)) { - return; - } - - ++k_irq_nest_cnt; -} - -__API__ void tos_knl_irq_leave(void) -{ - TOS_CPU_CPSR_ALLOC(); - - if (!tos_knl_is_running()) { - return; - } - - TOS_CPU_INT_DISABLE(); - if (!knl_is_inirq()) { - TOS_CPU_INT_ENABLE(); - return; - } - - --k_irq_nest_cnt; - - if (knl_is_inirq()) { - TOS_CPU_INT_ENABLE(); - return; - } - - if (knl_is_sched_locked()) { - TOS_CPU_INT_ENABLE(); - return; - } - - k_next_task = readyqueue_highest_ready_task_get(); - if (knl_is_self(k_next_task)) { - TOS_CPU_INT_ENABLE(); - return; - } - - cpu_irq_context_switch(); - TOS_CPU_INT_ENABLE(); -} - -__API__ k_err_t tos_knl_sched_lock(void) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_IN_IRQ_CHECK(); - - if (!tos_knl_is_running()) { - return K_ERR_KNL_NOT_RUNNING; - } - - if (k_sched_lock_nest_cnt >= K_NESTING_LIMIT_SCHED_LOCK) { - return K_ERR_LOCK_NESTING_OVERFLOW; - } - - TOS_CPU_INT_DISABLE(); - ++k_sched_lock_nest_cnt; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; -} - -__API__ k_err_t tos_knl_sched_unlock(void) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_IN_IRQ_CHECK(); - - if (!tos_knl_is_running()) { - return K_ERR_KNL_NOT_RUNNING; - } - - if (!knl_is_sched_locked()) { - return K_ERR_SCHED_NOT_LOCKED; - } - - TOS_CPU_INT_DISABLE(); - --k_sched_lock_nest_cnt; - TOS_CPU_INT_ENABLE(); - - knl_sched(); - return K_ERR_NONE; -} - -__API__ k_err_t tos_knl_start(void) -{ - if (tos_knl_is_running()) { - return K_ERR_KNL_RUNNING; - } - - k_next_task = readyqueue_highest_ready_task_get(); - k_curr_task = k_next_task; - k_knl_state = KNL_STATE_RUNNING; - cpu_sched_start(); - - return K_ERR_NONE; -} - -__API__ int tos_knl_is_running(void) -{ - return k_knl_state == KNL_STATE_RUNNING; -} - -#if TOS_CFG_TICKLESS_EN > 0u - -/** - * @brief Get the remain ticks of the first oncoming task. - * - * @return The remian ticks of the first oncoming task to be scheduled. - */ -__KERNEL__ k_tick_t knl_next_expires_get(void) -{ - k_tick_t tick_next_expires; -#if TOS_CFG_TIMER_EN > 0u - k_tick_t timer_next_expires; -#endif - - tick_next_expires = tick_next_expires_get(); - -#if TOS_CFG_TIMER_EN > 0u - timer_next_expires = timer_next_expires_get(); -#endif - -#if TOS_CFG_TIMER_EN > 0u - return tick_next_expires < timer_next_expires ? tick_next_expires : timer_next_expires; -#else - return tick_next_expires; -#endif -} - -#endif - - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u -__KERNEL__ int knl_object_verify(knl_obj_t *object, knl_obj_type_t type) -{ - return object->type == type; -} - -__KERNEL__ int knl_object_init(knl_obj_t *object, knl_obj_type_t type) -{ - return object->type = type; -} - -__KERNEL__ int knl_object_deinit(knl_obj_t *object) -{ - return object->type = KNL_OBJ_TYPE_NONE; -} -#endif - -__KERNEL__ void knl_sched(void) -{ - TOS_CPU_CPSR_ALLOC(); - - if (knl_is_inirq()) { - return; - } - - if (knl_is_sched_locked()) { - return; - } - - TOS_CPU_INT_DISABLE(); - k_next_task = readyqueue_highest_ready_task_get(); - if (knl_is_self(k_next_task)) { - TOS_CPU_INT_ENABLE(); - return; - } - - cpu_context_switch(); - TOS_CPU_INT_ENABLE(); -} - -__KERNEL__ int knl_is_sched_locked(void) -{ - return k_sched_lock_nest_cnt > 0u; -} - -__KERNEL__ int knl_is_inirq(void) -{ - return k_irq_nest_cnt > 0u; -} - -__KERNEL__ int knl_is_idle(k_task_t *task) -{ - return task == &k_idle_task; -} - -__KERNEL__ int knl_is_self(k_task_t *task) -{ - return task == k_curr_task; -} - -__STATIC__ void knl_idle_entry(void *arg) -{ - arg = arg; // make compiler happy - - while (K_TRUE) { -#if TOS_CFG_PWR_MGR_EN > 0u - pm_power_manager(); -#endif - } -} - -__KERNEL__ k_err_t knl_idle_init(void) -{ - return tos_task_create(&k_idle_task, "idle", - knl_idle_entry, K_NULL, - K_TASK_PRIO_IDLE, - k_idle_task_stk_addr, - k_idle_task_stk_size, - 0); -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_task.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_task.c deleted file mode 100644 index ff3ec11a..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_task.c +++ /dev/null @@ -1,416 +0,0 @@ -#include - -__STATIC_INLINE__ void task_reset(k_task_t *task) -{ -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_deinit(&task->knl_obj); -#endif - - tos_list_init(&task->tick_list); - tos_list_init(&task->pend_list); - -#if TOS_CFG_MUTEX_EN > 0u - tos_list_init(&task->mutex_own_list); - task->prio_pending = K_TASK_PRIO_INVALID; -#endif - - task->pend_state = PEND_STATE_NONE; - task->pending_obj = (pend_obj_t *)K_NULL; - -#if TOS_CFG_MSG_EN > 0u - task->msg_addr = K_NULL; - task->msg_size = 0; -#endif -} - -__STATIC__ void task_exit(void) -{ - tos_task_destroy(K_NULL); -} - -#if TOS_CFG_MUTEX_EN > 0u -__STATIC__ k_prio_t task_highest_pending_prio_get(k_task_t *task) -{ - k_list_t *curr; - k_mutex_t *mutex; - k_prio_t prio, highest_prio_pending = K_TASK_PRIO_INVALID; - - TOS_LIST_FOR_EACH(curr, &task->mutex_own_list) { - mutex = TOS_LIST_ENTRY(curr, k_mutex_t, owner_list); - prio = pend_highest_prio_get(&mutex->pend_obj); - if (prio < highest_prio_pending) { - highest_prio_pending = prio; - } - } - return highest_prio_pending; -} - -__STATIC__ void task_mutex_release(k_task_t *task) -{ - k_list_t *curr, *next; - - TOS_LIST_FOR_EACH_SAFE(curr, next, &task->mutex_own_list) { - mutex_release(TOS_LIST_ENTRY(curr, k_mutex_t, owner_list)); - } -} -#endif - -__API__ k_err_t tos_task_create(k_task_t *task, - char *name, - k_task_entry_t entry, - void *arg, - k_prio_t prio, - k_stack_t *stk_base, - size_t stk_size, - k_timeslice_t timeslice) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_IN_IRQ_CHECK(); - - TOS_PTR_SANITY_CHECK(task); - TOS_PTR_SANITY_CHECK(entry); - TOS_PTR_SANITY_CHECK(stk_base); - - if (unlikely(stk_size < sizeof(cpu_context_t))) { - return K_ERR_TASK_STK_SIZE_INVALID; - } - - if (unlikely(prio == K_TASK_PRIO_IDLE && !knl_is_idle(task))) { - return K_ERR_TASK_PRIO_INVALID; - } - - if (unlikely(prio > K_TASK_PRIO_IDLE)) { - return K_ERR_TASK_PRIO_INVALID; - } - - task_reset(task); -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_init(&task->knl_obj, KNL_OBJ_TYPE_TASK); -#endif - - task->sp = cpu_task_stk_init((void *)entry, arg, (void *)task_exit, stk_base, stk_size); - task->entry = entry; - task->arg = arg; - task->name = name; - task->prio = prio; - task->stk_base = stk_base; - task->stk_size = stk_size; - -#if TOS_CFG_ROUND_ROBIN_EN > 0u - task->timeslice_reload = timeslice; - - if (timeslice == (k_timeslice_t)0u) { - task->timeslice = k_robin_default_timeslice; - } else { - task->timeslice = timeslice; - } -#endif - - TOS_CPU_INT_DISABLE(); - task_state_set_ready(task); - readyqueue_add_tail(task); - TOS_CPU_INT_ENABLE(); - - if (tos_knl_is_running()) { - knl_sched(); - } - - return K_ERR_NONE; -} - -__API__ k_err_t tos_task_destroy(k_task_t *task) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_IN_IRQ_CHECK(); - - if (unlikely(!task)) { - task = k_curr_task; - } - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (knl_is_idle(task)) { - return K_ERR_TASK_DESTROY_IDLE; - } - - if (knl_is_self(task) && knl_is_sched_locked()) { - return K_ERR_SCHED_LOCKED; - } - - TOS_CPU_INT_DISABLE(); - -#if TOS_CFG_MUTEX_EN > 0u - // when we die, wakeup all the people in this land. - if (!tos_list_empty(&task->mutex_own_list)) { - task_mutex_release(task); - } -#endif - - if (task_state_is_ready(task)) { // that's simple, good kid - readyqueue_remove(task); - } - if (task_state_is_sleeping(task)) { - tick_list_remove(task); - } - if (task_state_is_pending(task)) { - pend_list_remove(task); - } - - task_reset(task); - task_state_set_deleted(task); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ void tos_task_yield(void) -{ - TOS_CPU_CPSR_ALLOC(); - - if (knl_is_inirq()) { - return; - } - - TOS_CPU_INT_DISABLE(); - - readyqueue_remove(k_curr_task); - readyqueue_add_tail(k_curr_task); - - TOS_CPU_INT_ENABLE(); - knl_sched(); -} - -__API__ k_err_t tos_task_prio_change(k_task_t *task, k_prio_t prio_new) -{ - TOS_CPU_CPSR_ALLOC(); -#if TOS_CFG_MUTEX_EN > 0u - k_prio_t highest_pending_prio; -#endif - - TOS_PTR_SANITY_CHECK(task); - TOS_IN_IRQ_CHECK(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (unlikely(prio_new >= K_TASK_PRIO_IDLE)) { - return K_ERR_TASK_PRIO_INVALID; - } - - TOS_CPU_INT_DISABLE(); - - if (task->prio == prio_new) { // just kidding - TOS_CPU_INT_ENABLE(); - knl_sched(); - return K_ERR_NONE; - } - -#if TOS_CFG_MUTEX_EN > 0u - if (!tos_list_empty(&task->mutex_own_list)) { - highest_pending_prio = task_highest_pending_prio_get(task); - if (prio_new > highest_pending_prio) { - task->prio_pending = prio_new; - prio_new = highest_pending_prio; - } - } -#endif - - if (task_state_is_pending(task)) { - task->prio = prio_new; - pend_list_adjust(task); - } else if (task_state_is_sleeping(task)) { - task->prio = prio_new; - } else if (task_state_is_ready(task)) { // good kid - readyqueue_remove(task); - - /* ATTENTION: - must do the prio assignment after readyqueue_remove - otherwise the k_rdyq.highest_prio refresh in readyqueue_remove will be wrong. - */ - task->prio = prio_new; - if (knl_is_self(task)) { - readyqueue_add_head(task); - } else { - readyqueue_add_tail(task); - } - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_task_suspend(k_task_t *task) -{ - TOS_CPU_CPSR_ALLOC(); - - if (unlikely(!task)) { - task = k_curr_task; - } - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (knl_is_idle(task)) { - return K_ERR_TASK_SUSPEND_IDLE; - } - - if (unlikely(knl_is_self(task)) && knl_is_sched_locked()) { // if not you, who? - return K_ERR_SCHED_LOCKED; - } - - TOS_CPU_INT_DISABLE(); - - if (task_state_is_ready(task)) { // kill the good kid - readyqueue_remove(task); - } - task_state_set_suspended(task); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_task_resume(k_task_t *task) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(task); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (unlikely(knl_is_self(task))) { - return K_ERR_TASK_RESUME_SELF; - } - - TOS_CPU_INT_DISABLE(); - - if (!task_state_is_suspended(task)) { - TOS_CPU_INT_ENABLE(); - knl_sched(); - return K_ERR_NONE; - } - - task_state_reset_suspended(task); - if (task_state_is_ready(task)) { // we are good kid now - readyqueue_add(task); - } - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_task_delay(k_tick_t delay) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_IN_IRQ_CHECK(); - - if (knl_is_sched_locked()) { - return K_ERR_SCHED_LOCKED; - } - - if (unlikely(delay == (k_tick_t)0u)) { - tos_task_yield(); - return K_ERR_NONE; - } - - TOS_CPU_INT_DISABLE(); - - if (tick_list_add(k_curr_task, delay) != K_ERR_NONE) { - TOS_CPU_INT_ENABLE(); - return K_ERR_DELAY_FOREVER; - } - - readyqueue_remove(k_curr_task); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -__API__ k_err_t tos_task_delay_abort(k_task_t *task) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_PTR_SANITY_CHECK(task); - TOS_IN_IRQ_CHECK(); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - - if (knl_is_self(task) || !task_state_is_sleeping(task)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_TASK_NOT_DELAY; - } - - if (task_state_is_suspended(task)) { - TOS_CPU_INT_ENABLE(); - return K_ERR_TASK_SUSPENDED; - } - - tick_list_remove(task); - readyqueue_add(task); - - TOS_CPU_INT_ENABLE(); - knl_sched(); - - return K_ERR_NONE; -} - -#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u - -__API__ k_err_t tos_task_stack_draught_depth(k_task_t *task, int *depth) -{ - TOS_CPU_CPSR_ALLOC(); - k_err_t rc; - - TOS_PTR_SANITY_CHECK(depth); - - if (unlikely(!task)) { - task = k_curr_task; - } - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&task->knl_obj, KNL_OBJ_TYPE_TASK)) { - return K_ERR_OBJ_INVALID; - } -#endif - - TOS_CPU_INT_DISABLE(); - rc = cpu_task_stack_draught_depth(task->stk_base, task->stk_size, depth); - TOS_CPU_INT_ENABLE(); - - return rc; -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_tick.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_tick.c deleted file mode 100644 index 0d764426..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_tick.c +++ /dev/null @@ -1,143 +0,0 @@ -#include - -__STATIC__ void tick_task_place(k_task_t *task, k_tick_t timeout) -{ - TOS_CPU_CPSR_ALLOC(); - k_list_t *curr; - k_task_t *curr_task = K_NULL; - k_tick_t curr_expires, prev_expires = (k_tick_t)0u; - - TOS_CPU_INT_DISABLE(); - - task->tick_expires = timeout; - - TOS_LIST_FOR_EACH(curr, &k_tick_list) { - curr_task = TOS_LIST_ENTRY(curr, k_task_t, tick_list); - curr_expires = prev_expires + curr_task->tick_expires; - - if (task->tick_expires < curr_expires) { - break; - } - prev_expires = curr_expires; - } - task->tick_expires -= prev_expires; - if (curr != &k_tick_list && curr_task) { - curr_task->tick_expires -= task->tick_expires; - } - tos_list_add_tail(&task->tick_list, curr); - - TOS_CPU_INT_ENABLE(); -} - -__STATIC__ void tick_task_takeoff(k_task_t *task) -{ - TOS_CPU_CPSR_ALLOC(); - k_task_t *next; - - TOS_CPU_INT_DISABLE(); - - next = TOS_LIST_FIRST_ENTRY_OR_NULL(&task->tick_list, k_task_t, tick_list); - if (next && task->tick_list.next != &k_tick_list) { // not the only one - if (next->tick_expires <= K_TIME_MAX - task->tick_expires) { - next->tick_expires += task->tick_expires; - } else { - next->tick_expires = K_TIME_MAX; - } - } - - tos_list_del(&task->tick_list); - - TOS_CPU_INT_ENABLE(); -} - -__KERNEL__ k_err_t tick_list_add(k_task_t *task, k_tick_t timeout) -{ - if (timeout == TOS_TIME_NOWAIT) { - return K_ERR_DELAY_ZERO; - } - - if (timeout == TOS_TIME_FOREVER) { - return K_ERR_DELAY_FOREVER; - } - - task->tick_expires = timeout; - - tick_task_place(task, timeout); - task_state_set_sleeping(task); - return K_ERR_NONE; -} - -__KERNEL__ void tick_list_remove(k_task_t *task) -{ - tick_task_takeoff(task); - task_state_reset_sleeping(task); -} - -__KERNEL__ void tick_update(k_tick_t tick) -{ - TOS_CPU_CPSR_ALLOC(); - k_task_t *first, *task; - k_list_t *curr, *next; - - TOS_CPU_INT_DISABLE(); - k_tick_count += tick; - - if (tos_list_empty(&k_tick_list)) { - TOS_CPU_INT_ENABLE(); - return; - } - - first = TOS_LIST_FIRST_ENTRY(&k_tick_list, k_task_t, tick_list); - if (first->tick_expires <= tick) { - first->tick_expires = (k_tick_t)0u; - } else { - first->tick_expires -= tick; - TOS_CPU_INT_ENABLE(); - return; - } - - TOS_LIST_FOR_EACH_SAFE(curr, next, &k_tick_list) { - task = TOS_LIST_ENTRY(curr, k_task_t, tick_list); - if (task->tick_expires > (k_tick_t)0u) { - break; - } - - // we are pending on something, but tick's up, no longer waitting - pend_task_wakeup(task, PEND_STATE_TIMEOUT); - } - - TOS_CPU_INT_ENABLE(); -} - -__KERNEL__ k_tick_t tick_next_expires_get(void) -{ - TOS_CPU_CPSR_ALLOC(); - k_tick_t next_expires; - k_task_t *first; - - TOS_CPU_INT_DISABLE(); - - first = TOS_LIST_FIRST_ENTRY_OR_NULL(&k_tick_list, k_task_t, tick_list); - next_expires = first ? first->tick_expires : TOS_TIME_FOREVER; - - TOS_CPU_INT_ENABLE(); - return next_expires; -} - -__API__ void tos_tick_handler(void) -{ - if (unlikely(!tos_knl_is_running())) { - return; - } - - tick_update((k_tick_t)1u); - -#if TOS_CFG_TIMER_EN > 0u && TOS_CFG_TIMER_AS_PROC > 0u - timer_update(); -#endif - -#if TOS_CFG_ROUND_ROBIN_EN > 0u - robin_sched(k_curr_task->prio); -#endif -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_time.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_time.c deleted file mode 100644 index 014b2b87..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_time.c +++ /dev/null @@ -1,49 +0,0 @@ -#include - -__API__ k_tick_t tos_systick_get(void) -{ - TOS_CPU_CPSR_ALLOC(); - k_tick_t tick; - - TOS_CPU_INT_DISABLE(); - tick = k_tick_count; - TOS_CPU_INT_ENABLE(); - return tick; -} - -__API__ void tos_systick_set(k_tick_t tick) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_CPU_INT_DISABLE(); - k_tick_count = tick; - TOS_CPU_INT_ENABLE(); -} - -__API__ k_time_t tos_tick2millisec(k_tick_t tick) -{ - return (k_time_t)(tick * K_TIME_MILLISEC_PER_SEC / TOS_CFG_CPU_TICK_PER_SECOND); -} - -__API__ k_tick_t tos_millisec2tick(k_time_t ms) -{ - return ((k_tick_t)ms * TOS_CFG_CPU_TICK_PER_SECOND / K_TIME_MILLISEC_PER_SEC); -} - -__API__ k_err_t tos_sleep_ms(k_time_t ms) -{ - return tos_task_delay(tos_millisec2tick(ms)); -} - -__STATIC_INLINE__ k_tick_t time_hmsm2tick(k_time_t hour, k_time_t minute, k_time_t second, k_time_t millisec) -{ - return ((k_tick_t)hour * (k_tick_t)3600u + (k_tick_t)minute * (k_tick_t)60u + - (k_tick_t)second) * TOS_CFG_CPU_TICK_PER_SECOND + - (TOS_CFG_CPU_TICK_PER_SECOND * ((k_tick_t)millisec + (k_tick_t)500u / TOS_CFG_CPU_TICK_PER_SECOND)) / (k_tick_t)1000u; -} - -__API__ k_err_t tos_sleep_hmsm(k_time_t hour, k_time_t minute, k_time_t second, k_time_t millisec) -{ - return tos_task_delay(time_hmsm2tick(hour, minute, second, millisec)); -} - diff --git a/board/Nuvoton_M251/TencentOS/kernel/core/tos_timer.c b/board/Nuvoton_M251/TencentOS/kernel/core/tos_timer.c deleted file mode 100644 index db8ff673..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/core/tos_timer.c +++ /dev/null @@ -1,329 +0,0 @@ -#include - -#if TOS_CFG_TIMER_EN > 0u - -__STATIC__ void timer_place(k_timer_t *tmr) -{ - TOS_CPU_CPSR_ALLOC(); - k_list_t *curr; - k_timer_t *iter = K_NULL; - - TOS_CPU_INT_DISABLE(); - - tmr->expires += k_tick_count; - - TOS_LIST_FOR_EACH(curr, &k_timer_ctl.list) { - iter = TOS_LIST_ENTRY(curr, k_timer_t, list); - if (tmr->expires < iter->expires) { - break; - } - } - tos_list_add_tail(&tmr->list, curr); - - if (k_timer_ctl.list.next == &tmr->list) { - // we are the first guy now - k_timer_ctl.next_expires = tmr->expires; - -#if TOS_CFG_TIMER_AS_PROC == 0u - if (task_state_is_sleeping(&k_timer_task)) { - tos_task_delay_abort(&k_timer_task); - } -#endif - } - -#if TOS_CFG_TIMER_AS_PROC == 0u - if (task_state_is_suspended(&k_timer_task)) { - tos_task_resume(&k_timer_task); - } -#endif - - TOS_CPU_INT_ENABLE(); -} - -__STATIC__ void timer_takeoff(k_timer_t *tmr) -{ - TOS_CPU_CPSR_ALLOC(); - k_timer_t *first, *next; - - TOS_CPU_INT_DISABLE(); - - first = TOS_LIST_FIRST_ENTRY(&k_timer_ctl.list, k_timer_t, list); - - tos_list_del(&tmr->list); - - if (first == tmr) { - // if the first guy removed, we need to refresh k_timer_ctl.next_expires - next = TOS_LIST_FIRST_ENTRY_OR_NULL(&tmr->list, k_timer_t, list); - if (!next) { - // the only guy removed - k_timer_ctl.next_expires = TOS_TIME_FOREVER; - } else { - k_timer_ctl.next_expires = next->expires; - } - } - - TOS_CPU_INT_ENABLE(); -} - -__STATIC_INLINE__ void timer_reset(k_timer_t *tmr) -{ -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_deinit(&tmr->knl_obj); -#endif - - tmr->state = TIMER_STATE_UNUSED; - tmr->delay = (k_tick_t)0u; - tmr->expires = (k_tick_t)0u; - tmr->period = (k_tick_t)0u; - tmr->opt = (k_opt_t)0u; - tmr->cb = K_NULL; - tmr->cb_arg = K_NULL; - tos_list_init(&tmr->list); -} - -__API__ k_err_t tos_timer_create(k_timer_t *tmr, - k_tick_t delay, - k_tick_t period, - k_timer_callback_t callback, - void *cb_arg, - k_opt_t opt) -{ - TOS_PTR_SANITY_CHECK(tmr); - TOS_PTR_SANITY_CHECK(callback); - - if (opt == TOS_OPT_TIMER_PERIODIC && period == (k_tick_t)0u) { - return K_ERR_TIMER_INVALID_PERIOD; - } - - if (opt == TOS_OPT_TIMER_ONESHOT && delay == (k_tick_t)0u) { - return K_ERR_TIMER_INVALID_DELAY; - } - - if (opt != TOS_OPT_TIMER_ONESHOT && opt != TOS_OPT_TIMER_PERIODIC) { - return K_ERR_TIMER_INVALID_OPT; - } - - if (delay == TOS_TIME_FOREVER) { - return K_ERR_TIMER_DELAY_FOREVER; - } - - if (period == TOS_TIME_FOREVER) { - return K_ERR_TIMER_PERIOD_FOREVER; - } - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - knl_object_init(&tmr->knl_obj, KNL_OBJ_TYPE_TIMER); -#endif - - tmr->state = TIMER_STATE_STOPPED; - tmr->delay = delay; - tmr->expires = (k_tick_t)0u; - tmr->period = period; - tmr->opt = opt; - tmr->cb = callback; - tmr->cb_arg = cb_arg; - tos_list_init(&tmr->list); - return K_ERR_NONE; -} - -__API__ k_err_t tos_timer_destroy(k_timer_t *tmr) -{ - TOS_PTR_SANITY_CHECK(tmr); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&tmr->knl_obj, KNL_OBJ_TYPE_TIMER)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (tmr->state == TIMER_STATE_UNUSED) { - return K_ERR_TIMER_INACTIVE; - } - - if (tmr->state == TIMER_STATE_RUNNING) { - timer_takeoff(tmr); - } - - timer_reset(tmr); - return K_ERR_NONE; -} - -__API__ k_err_t tos_timer_start(k_timer_t *tmr) -{ - TOS_PTR_SANITY_CHECK(tmr); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&tmr->knl_obj, KNL_OBJ_TYPE_TIMER)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (tmr->state == TIMER_STATE_UNUSED) { - return K_ERR_TIMER_INACTIVE; - } - - if (tmr->state == TIMER_STATE_RUNNING) { - timer_takeoff(tmr); - tmr->expires = tmr->delay; - timer_place(tmr); - return K_ERR_NONE; - } - - if (tmr->state == TIMER_STATE_STOPPED || - tmr->state == TIMER_STATE_COMPLETED) { - tmr->state = TIMER_STATE_RUNNING; - if (tmr->delay == (k_tick_t)0u) { - tmr->expires = tmr->period; - } else { - tmr->expires = tmr->delay; - } - timer_place(tmr); - return K_ERR_NONE; - } - - return K_ERR_TIMER_INVALID_STATE; -} - -__API__ k_err_t tos_timer_stop(k_timer_t *tmr) -{ - TOS_PTR_SANITY_CHECK(tmr); - -#if TOS_CFG_OBJECT_VERIFY_EN > 0u - if (!knl_object_verify(&tmr->knl_obj, KNL_OBJ_TYPE_TIMER)) { - return K_ERR_OBJ_INVALID; - } -#endif - - if (tmr->state == TIMER_STATE_UNUSED) { - return K_ERR_TIMER_INACTIVE; - } - - if (tmr->state == TIMER_STATE_COMPLETED || - tmr->state == TIMER_STATE_STOPPED) { - return K_ERR_TIMER_STOPPED; - } - - if (tmr->state == TIMER_STATE_RUNNING) { - tmr->state = TIMER_STATE_STOPPED; - timer_takeoff(tmr); - } - - return K_ERR_NONE; -} - -__KERNEL__ k_tick_t timer_next_expires_get(void) -{ - TOS_CPU_CPSR_ALLOC(); - k_tick_t next_expires; - - TOS_CPU_INT_DISABLE(); - - if (k_timer_ctl.next_expires == TOS_TIME_FOREVER) { - next_expires = TOS_TIME_FOREVER; - } else if (k_timer_ctl.next_expires <= k_tick_count) { - next_expires = (k_tick_t)0u; - } else { - next_expires = k_timer_ctl.next_expires - k_tick_count; - } - - TOS_CPU_INT_ENABLE(); - return next_expires; -} - -#if TOS_CFG_TIMER_AS_PROC > 0u - -__KERNEL__ void timer_update(void) -{ - k_timer_t *tmr; - k_list_t *curr, *next; - - if (k_timer_ctl.next_expires < k_tick_count) { - return; - } - - tos_knl_sched_lock(); - - TOS_LIST_FOR_EACH_SAFE(curr, next, &k_timer_ctl.list) { - tmr = TOS_LIST_ENTRY(curr, k_timer_t, list); - if (tmr->expires > k_tick_count) { - break; - } - - // time's up - timer_takeoff(tmr); - - if (tmr->opt == TOS_OPT_TIMER_PERIODIC) { - tmr->expires = tmr->period; - timer_place(tmr); - } else { - tmr->state = TIMER_STATE_COMPLETED; - } - - (*tmr->cb)(tmr->cb_arg); - } - - tos_knl_sched_unlock(); -} - -#else /* TOS_CFG_TIMER_AS_PROC > 0u */ - -__STATIC__ void timer_task_entry(void *arg) -{ - k_timer_t *tmr; - k_list_t *curr, *next; - k_tick_t next_expires; - - arg = arg; // make compiler happy - while (K_TRUE) { - next_expires = timer_next_expires_get(); - if (next_expires == TOS_TIME_FOREVER) { - tos_task_suspend(K_NULL); - } else if (next_expires > (k_tick_t)0u) { - tos_task_delay(next_expires); - } - - tos_knl_sched_lock(); - - TOS_LIST_FOR_EACH_SAFE(curr, next, &k_timer_ctl.list) { - tmr = TOS_LIST_ENTRY(curr, k_timer_t, list); - if (tmr->expires > k_tick_count) { // not yet - break; - } - - // time's up - timer_takeoff(tmr); - - if (tmr->opt == TOS_OPT_TIMER_PERIODIC) { - tmr->expires = tmr->period; - timer_place(tmr); - } else { - tmr->state = TIMER_STATE_COMPLETED; - } - - (*tmr->cb)(tmr->cb_arg); - } - - tos_knl_sched_unlock(); - } -} - -#endif - -__KERNEL__ k_err_t timer_init(void) -{ -#if TOS_CFG_TIMER_AS_PROC > 0u - return K_ERR_NONE; -#else - return tos_task_create(&k_timer_task, - "timer", - timer_task_entry, - K_NULL, - k_timer_task_prio, - k_timer_task_stk_addr, - k_timer_task_stk_size, - 0); -#endif -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal.h b/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal.h deleted file mode 100644 index 50ef205f..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _TOS_HAL_H_ -#define _TOS_HAL_H_ - -#include "tos.h" -#include "tos_hal_sd.h" -#include "tos_hal_uart.h" - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_sd.h b/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_sd.h deleted file mode 100644 index 0b18dfc9..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_sd.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _TOS_HAL_SD_H_ -#define _TOS_HAL_SD_H_ - -typedef enum hal_sd_state_en { - HAL_SD_STAT_RESET, /*< not yet initialized or disabled */ - HAL_SD_STAT_READY, /*< initialized and ready for use */ - HAL_SD_STAT_TIMEOUT, /*< timeout state */ - HAL_SD_STAT_BUSY, /*< process ongoing */ - HAL_SD_STAT_PROGRAMMING, /*< programming state */ - HAL_SD_STAT_RECEIVING, /*< receinving state */ - HAL_SD_STAT_TRANSFER, /*< transfert state */ - HAL_SD_STAT_ERROR, /*< error state */ -} hal_sd_state_t; - -typedef struct hal_sd_info_st { - uint32_t card_type; /*< card type */ - uint32_t card_version; /*< card version */ - uint32_t class; /*< card class */ - uint32_t relative_card_addr; /*< relative card address */ - uint32_t blk_num; /*< card capacity in blocks */ - uint32_t blk_size; /*< one block size in bytes */ - uint32_t logical_blk_num; /*< card logical capacity in blocks */ - uint32_t logical_blk_size; /*< logical block size in bytes */ -} hal_sd_info_t; - -typedef struct hal_sd_st { - void *private_sd; -} hal_sd_t; - -__API__ int tos_hal_sd_init(hal_sd_t *sd); - -__API__ int tos_hal_sd_read(hal_sd_t *sd, uint8_t *buf, uint32_t blk_addr, uint32_t blk_num, uint32_t timeout); - -__API__ int tos_hal_sd_write(hal_sd_t *sd, const uint8_t *buf, uint32_t blk_addr, uint32_t blk_num, uint32_t timeout); - -__API__ int tos_hal_sd_read_dma(hal_sd_t *sd, uint8_t *buf, uint32_t blk_addr, uint32_t blk_num); - -__API__ int tos_hal_sd_write_dma(hal_sd_t *sd, const uint8_t *buf, uint32_t blk_addr, uint32_t blk_num); - -__API__ int tos_hal_sd_erase(hal_sd_t *sd, uint32_t blk_add_start, uint32_t blk_addr_end); - -__API__ int tos_hal_sd_info_get(hal_sd_t *sd, hal_sd_info_t *info); - -__API__ int tos_hal_sd_state_get(hal_sd_t *sd, hal_sd_state_t *state); - -__API__ int tos_hal_sd_deinit(hal_sd_t *sd); - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_uart.h b/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_uart.h deleted file mode 100644 index e0dfc7bb..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/hal/include/tos_hal_uart.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _TOS_HAL_UART_H_ -#define _TOS_HAL_UART_H_ - -typedef enum hal_uart_port_en { - HAL_UART_PORT_0 = 0, - HAL_UART_PORT_1, - HAL_UART_PORT_2, - HAL_UART_PORT_3, - HAL_UART_PORT_4, - HAL_UART_PORT_5, - HAL_UART_PORT_6, -} hal_uart_port_t; - -typedef struct hal_uart_st { - hal_uart_port_t port; - void *private_uart; -} hal_uart_t; - -__API__ int tos_hal_uart_init(hal_uart_t *uart, hal_uart_port_t port); - -__API__ int tos_hal_uart_write(hal_uart_t *uart, const uint8_t *buf, size_t size, uint32_t timeout); - -__API__ int tos_hal_uart_read(hal_uart_t *uart, const uint8_t *buf, size_t size, uint32_t timeout); - -__API__ int tos_hal_uart_deinit(hal_uart_t *uart); - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_pm.h b/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_pm.h deleted file mode 100644 index d565ab4e..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_pm.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef _TOS_PM_H_ -#define _TOS_PM_H_ - -#if TOS_CFG_PWR_MGR_EN > 0u - -#define K_PM_DEVICE_MAX_COUNT 10u - -typedef enum idle_power_manager_mode_en { - IDLE_POWER_MANAGER_MODE_SLEEP, - IDLE_POWER_MANAGER_MODE_TICKLESS, -} idle_pwrmgr_mode_t; - -/* - Low-power mode summary -|-------------------------------------------------------------------------------------------------------------------| -| Mode name | Entry | Wakeup | Effect on 1.8V | Effect on VDD | Voltage regulator | -| | | | domain clocks | domain clocks | | -|----------------|------------------|--------------------|--------------------|-----------------|-------------------| -| Sleep | WFI | Any interrupt | CPU clock OFF | | | -| (Sleep now or |------------------|--------------------| no effect on other | None | ON | -| Sleep-on-exit) | WFE | Wakeup event | clocks or analog | | | -| | | | clock sources | | | -|----------------|------------------|--------------------|--------------------|-----------------|-------------------| -| | | | | | ON or in | -| Stop | PDDS and LPDS | Any EXTI line | | | low-power mode | -| | bits + SLEEPDEEP | (configured in the | | | (depends on Power | -| | bit + WFI or WFE | EXTI registers | | | control register | -| | | | | | (PWR_CR) | -|----------------|------------------|--------------------| All 1.8V domain | HSI and HSE |-------------------| -| | | WKUP pin rising | clocks OFF | oscillators OFF | | -| Standby | PDDS bit + | edge, RTC alarm, | | | | -| | SLEEPDEEP bit + | external reset in | | | OFF | -| | WFI or WFE | NRST pin, | | | | -| | | IWDG reset | | | | -| | | | | | | -|-------------------------------------------------------------------------------------------------------------------| - */ -typedef enum k_cpu_low_power_mode_en { - TOS_LOW_POWER_MODE_SLEEP = 0, /* wakeup source: systick/tim/rtc */ - TOS_LOW_POWER_MODE_STOP, /* wakeup source: rtc wakeup/alarm */ - TOS_LOW_POWER_MODE_STANDBY, /* wakeup source: rtc alarm */ - __LOW_POWER_MODE_DUMMY, -} k_cpu_lpwr_mode_t; - -typedef struct k_pm_device_st { - char *name; - - int (*init)(void); - int (*suspend)(void); - int (*resume)(void); -} k_pm_device_t; - -typedef struct pm_device_control_st { - uint8_t count; - k_pm_device_t *mgr[K_PM_DEVICE_MAX_COUNT]; -} pm_device_ctl_t; - -#if TOS_CFG_TICKLESS_EN > 0u -__API__ k_err_t tos_pm_cpu_lpwr_mode_set(k_cpu_lpwr_mode_t cpu_lpwr_mode); -#endif - -__API__ k_err_t tos_pm_device_register(k_pm_device_t *device); - -__KERNEL__ void pm_init(void); - -__KERNEL__ void pm_cpu_lpwr_mode_enter(k_cpu_lpwr_mode_t lpwr_mode); - -__KERNEL__ k_cpu_lpwr_mode_t pm_cpu_lpwr_mode_get(void); - -__KERNEL__ void pm_idle_pwr_mgr_mode_set(idle_pwrmgr_mode_t idle_pwrmgr_mode); - -__KERNEL__ int pm_idle_pwr_mgr_mode_is_sleep(void); - -__KERNEL__ int pm_idle_pwr_mgr_mode_is_tickless(void); - -__KERNEL__ void pm_power_manager(void); - -__KERNEL__ int pm_device_suspend(void); - -__KERNEL__ int pm_device_resume(void); - -#endif /* TOS_CFG_PWR_MGR_EN */ - -#endif /* _TOS_PM_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_tickless.h b/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_tickless.h deleted file mode 100644 index c1ba76ae..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/pm/include/tos_tickless.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _TOS_TICKLESS_H_ -#define _TOS_TICKLESS_H_ - -#if TOS_CFG_TICKLESS_EN > 0u - -typedef struct k_tickless_wakeup_alarm_st { - int (*init)(void); - int (*setup)(k_time_t millisecond); - int (*dismiss)(void); - k_time_t (*max_delay)(void); /* in millisecond */ -} k_tickless_wkup_alarm_t; - -__API__ void tos_tickless_wkup_alarm_install(k_cpu_lpwr_mode_t mode, k_tickless_wkup_alarm_t *wkup_alarm); - -__API__ k_err_t tos_tickless_wkup_alarm_init(k_cpu_lpwr_mode_t mode); - -__HOOK__ int tos_bsp_tickless_setup(void); - -__KERNEL__ int tickless_wkup_alarm_is_installed(k_cpu_lpwr_mode_t mode); - -__KERNEL__ void tickless_init(void); - -__KERNEL__ void tickless_proc(void); - -#endif /* TOS_CFG_TICKLESS_EN */ - -#endif /* _TOS_TICKLESS_H_ */ - diff --git a/board/Nuvoton_M251/TencentOS/kernel/pm/tos_pm.c b/board/Nuvoton_M251/TencentOS/kernel/pm/tos_pm.c deleted file mode 100644 index 7fa053aa..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/pm/tos_pm.c +++ /dev/null @@ -1,144 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_PWR_MGR_EN > 0u - -#if TOS_CFG_TICKLESS_EN > 0u -__API__ k_err_t tos_pm_cpu_lpwr_mode_set(k_cpu_lpwr_mode_t cpu_lpwr_mode) -{ - TOS_CPU_CPSR_ALLOC(); - - if (!tickless_wkup_alarm_is_installed(cpu_lpwr_mode)) { - return K_ERR_PM_WKUP_SOURCE_NOT_INSTALL; - } - - TOS_CPU_INT_DISABLE(); - k_cpu_lpwr_mode = cpu_lpwr_mode; - TOS_CPU_INT_ENABLE(); - return K_ERR_NONE; -} -#endif - -__STATIC__ int pm_device_is_registered(k_pm_device_t *device) -{ - uint8_t i = 0; - - for (i = 0; i < k_pm_device_ctl.count; ++i) { - if (strcmp(k_pm_device_ctl.mgr[i]->name, device->name) == 0) { - return 1; - } - } - return 0; -} - -__API__ k_err_t tos_pm_device_register(k_pm_device_t *device) -{ - TOS_PTR_SANITY_CHECK(device); - - if (pm_device_is_registered(device)) { - return K_ERR_PM_DEVICE_ALREADY_REG; - } - - if (k_pm_device_ctl.count >= K_PM_DEVICE_MAX_COUNT) { - return K_ERR_PM_DEVICE_OVERFLOW; - } - - k_pm_device_ctl.mgr[k_pm_device_ctl.count++] = device; - - return K_ERR_NONE; -} - -__KERNEL__ void pm_init(void) -{ - memset(&k_pm_device_ctl, 0, sizeof(k_pm_device_ctl)); - k_pm_device_ctl.count = 0u; -} - -__STATIC_INLINE__ void pm_cpu_sleep_mode_enter(void) -{ - cpu_sleep_mode_enter(); -} - -__STATIC_INLINE__ void pm_cpu_stop_mode_enter(void) -{ - cpu_stop_mode_enter(); -} - -__STATIC_INLINE__ void pm_cpu_standby_mode_enter(void) -{ - cpu_standby_mode_enter(); -} - -__KERNEL__ void pm_cpu_lpwr_mode_enter(k_cpu_lpwr_mode_t lpwr_mode) -{ - if (TOS_LOW_POWER_MODE_SLEEP == lpwr_mode) { - pm_cpu_sleep_mode_enter(); - } else if (TOS_LOW_POWER_MODE_STOP == lpwr_mode) { - pm_device_suspend(); - pm_cpu_stop_mode_enter(); - pm_device_resume(); - } else if (TOS_LOW_POWER_MODE_STANDBY == lpwr_mode) { - pm_device_suspend(); - pm_cpu_standby_mode_enter(); - pm_device_resume(); - } -} - -__KERNEL__ k_cpu_lpwr_mode_t pm_cpu_lpwr_mode_get(void) -{ - return k_cpu_lpwr_mode; -} - -__KERNEL__ void pm_idle_pwr_mgr_mode_set(idle_pwrmgr_mode_t idle_pwrmgr_mode) -{ - k_idle_pwr_mgr_mode = idle_pwrmgr_mode; -} - -__KERNEL__ int pm_idle_pwr_mgr_mode_is_sleep(void) -{ - return k_idle_pwr_mgr_mode == IDLE_POWER_MANAGER_MODE_SLEEP; -} - -__KERNEL__ int pm_idle_pwr_mgr_mode_is_tickless(void) -{ - return k_idle_pwr_mgr_mode == IDLE_POWER_MANAGER_MODE_TICKLESS; -} - -__KERNEL__ void pm_power_manager(void) -{ - if (pm_idle_pwr_mgr_mode_is_sleep()) { - pm_cpu_sleep_mode_enter(); - } - -#if TOS_CFG_TICKLESS_EN > 0u - else if (pm_idle_pwr_mgr_mode_is_tickless()) { - tickless_proc(); - } -#endif -} - -__KERNEL__ int pm_device_suspend(void) -{ - uint8_t i = 0; - - for (i = 0; i < k_pm_device_ctl.count; ++i) { - if (*k_pm_device_ctl.mgr[i]->suspend) { - (*k_pm_device_ctl.mgr[i]->suspend)(); - } - } - return 0; -} - -__KERNEL__ int pm_device_resume(void) -{ - uint8_t i = 0; - - for (i = 0; i < k_pm_device_ctl.count; ++i) { - if (*k_pm_device_ctl.mgr[i]->resume) { - (*k_pm_device_ctl.mgr[i]->resume)(); - } - } - return 0; -} - -#endif - diff --git a/board/Nuvoton_M251/TencentOS/kernel/pm/tos_tickless.c b/board/Nuvoton_M251/TencentOS/kernel/pm/tos_tickless.c deleted file mode 100644 index 2b498ac3..00000000 --- a/board/Nuvoton_M251/TencentOS/kernel/pm/tos_tickless.c +++ /dev/null @@ -1,144 +0,0 @@ -#include "tos.h" - -#if TOS_CFG_TICKLESS_EN > 0u - -__API__ void tos_tickless_wkup_alarm_install(k_cpu_lpwr_mode_t mode, k_tickless_wkup_alarm_t *wkup_alarm) -{ - k_tickless_wkup_alarm[mode] = wkup_alarm; -} - -__API__ k_err_t tos_tickless_wkup_alarm_init(k_cpu_lpwr_mode_t mode) -{ - if (!k_tickless_wkup_alarm[mode]) { - return K_ERR_TICKLESS_WKUP_ALARM_NOT_INSTALLED; - } - - if (!k_tickless_wkup_alarm[mode]->init) { - return K_ERR_TICKLESS_WKUP_ALARM_NO_INIT; - } - - if (k_tickless_wkup_alarm[mode]->init() != 0) { - return K_ERR_TICKLESS_WKUP_ALARM_INIT_FAILED; - } - return K_ERR_NONE; -} - -__KERNEL__ int tickless_wkup_alarm_is_installed(k_cpu_lpwr_mode_t mode) -{ - return k_tickless_wkup_alarm[mode] != K_NULL; -} - -__STATIC__ int tickless_wkup_alarm_setup(k_cpu_lpwr_mode_t mode, k_time_t expires) -{ - if (k_tickless_wkup_alarm[mode] && k_tickless_wkup_alarm[mode]->setup) { - return k_tickless_wkup_alarm[mode]->setup(expires); - } - return -1; -} - -__STATIC__ int tickless_wkup_alarm_dismiss(k_cpu_lpwr_mode_t mode) -{ - if (k_tickless_wkup_alarm[mode] && k_tickless_wkup_alarm[mode]->dismiss) { - return k_tickless_wkup_alarm[mode]->dismiss(); - } - return -1; -} - -__STATIC__ k_time_t tickless_wkup_alarm_max_delay(k_cpu_lpwr_mode_t mode) -{ - if (k_tickless_wkup_alarm[mode] && k_tickless_wkup_alarm[mode]->max_delay) { - return k_tickless_wkup_alarm[mode]->max_delay(); - } - return (k_time_t)0u; -} - -__STATIC__ k_time_t tickless_cpu_sleep_time_get(k_cpu_lpwr_mode_t lpwr_mode) -{ - k_tick_t next_expires; - k_time_t time_sleep_ms, max_delay_ms; - - /* the max time(in millisecond) we can sleep */ - max_delay_ms = tickless_wkup_alarm_max_delay(lpwr_mode); - - next_expires = knl_next_expires_get(); - if (next_expires == TOS_TIME_FOREVER) { - return max_delay_ms; - } - - /* how much time should we sleep(in millisecond) */ - time_sleep_ms = (k_time_t)(next_expires * K_TIME_MILLISEC_PER_SEC / k_cpu_tick_per_second); - - return time_sleep_ms > max_delay_ms ? max_delay_ms : time_sleep_ms; -} - -__STATIC__ void tickless_systick_suspend(void) -{ - cpu_systick_suspend(); - cpu_systick_pending_reset(); -} - -__STATIC__ void tickless_systick_resume(void) -{ - cpu_systick_suspend(); - cpu_systick_reset(); - cpu_systick_resume(); -} - -__STATIC__ void tickless_systick_fix(k_tick_t tick_sleep) -{ - TOS_CPU_CPSR_ALLOC(); - - TOS_CPU_INT_DISABLE(); - - /* we wakeup from SLEEP mode, fix the system's tick & timer */ - tick_update(tick_sleep); - -#if TOS_CFG_TIMER_EN > 0u && TOS_CFG_TIMER_AS_PROC > 0u - timer_update(); -#endif - - tickless_systick_resume(); - - TOS_CPU_INT_ENABLE(); -} - -__STATIC__ void tickless_enter(void) -{ - tickless_systick_suspend(); -} - -__STATIC__ void tickless_leave(k_time_t time_sleep_ms) -{ - k_tick_t tick_sleep; - - /* how many "ticks" have we sleep */ - tick_sleep = k_cpu_tick_per_second * time_sleep_ms / K_TIME_MILLISEC_PER_SEC; - - tickless_systick_fix(tick_sleep); -} - -__KERNEL__ void tickless_proc(void) -{ - k_time_t time_sleep; - k_cpu_lpwr_mode_t lpwr_mode; - - lpwr_mode = pm_cpu_lpwr_mode_get(); - - time_sleep = tickless_cpu_sleep_time_get(lpwr_mode); /* in millisecond */ - - tickless_enter(); - tickless_wkup_alarm_setup(lpwr_mode, time_sleep); - pm_cpu_lpwr_mode_enter(lpwr_mode); - tickless_wkup_alarm_dismiss(lpwr_mode); - tickless_leave(time_sleep); -} - -__KERNEL__ void tickless_init(void) -{ - pm_idle_pwr_mgr_mode_set(IDLE_POWER_MANAGER_MODE_TICKLESS); - - tos_bsp_tickless_setup(); -} - -#endif - diff --git a/board/Nuvoton_M251/Project/Nu_Link_Driver.ini b/board/Nuvoton_M251/hello world/Nu_Link_Driver.ini similarity index 100% rename from board/Nuvoton_M251/Project/Nu_Link_Driver.ini rename to board/Nuvoton_M251/hello world/Nu_Link_Driver.ini diff --git a/board/Nuvoton_M251/Project/NuvotonTos.uvguix.Administrator b/board/Nuvoton_M251/hello world/NuvotonTos.uvguix.Administrator similarity index 82% rename from board/Nuvoton_M251/Project/NuvotonTos.uvguix.Administrator rename to board/Nuvoton_M251/hello world/NuvotonTos.uvguix.Administrator index 602f19a3..a5e4343b 100644 --- a/board/Nuvoton_M251/Project/NuvotonTos.uvguix.Administrator +++ b/board/Nuvoton_M251/hello world/NuvotonTos.uvguix.Administrator @@ -16,12 +16,12 @@ 346 Code Coverage - 1010 160 + 770 160 204 Performance Analyzer - 1170 + 930 @@ -80,8 +80,8 @@ 44 - 2 - 3 + 0 + 1 -1 -1 @@ -91,17 +91,17 @@ -1 - 93 - 395 - 1826 - 1028 + 48 + 199 + 1630 + 983 0 - 708 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000000000000100000047433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C4E75766F746F6E5F636F64655C4E75766F746F6E5F4D3235315C50726F6A6563745C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF50433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C4E75766F746F6E5F636F64655C4E75766F746F6E5F4D3235315C54656E63656E744F535C617263685C706F72745F632E630000000008706F72745F632E6300000000BECEA100FFFFFFFF50433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C4E75766F746F6E5F636F64655C4E75766F746F6E5F4D3235315C54656E63656E744F535C617263685C706F72745F732E530000000008706F72745F732E5300000000F0A0A100FFFFFFFF5A433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C4E75766F746F6E5F636F64655C4E75766F746F6E5F4D3235315C54656E63656E744F535C544F535F434F4E4649475C746F735F636F6E6669672E68000000000C746F735F636F6E6669672E6800000000BCA8E100FFFFFFFF4E433A5C55736572735C41646D696E6973747261746F725C4465736B746F705C4E75766F746F6E5F636F64655C4E75766F746F6E5F4D3235315C535441525455505C73797374656D5F4D3235312E63000000000D73797374656D5F4D3235312E63000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006500000080070000E2020000 + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 @@ -120,11 +120,11 @@ 0 16 - F40000004F00000090050000DF000000 + F40000004F000000A0040000CA000000 16 - F40000006500000090050000F5000000 + C30100009D0000006F05000018010000 @@ -140,11 +140,11 @@ 0 16 - 0300000066000000ED000000B3020000 + 0300000066000000ED00000092020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -160,11 +160,11 @@ 0 16 - 0300000066000000ED000000B3020000 + 0300000066000000ED00000092020000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -180,11 +180,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -200,11 +200,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -220,11 +220,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -240,11 +240,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -260,11 +260,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -280,11 +280,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -300,11 +300,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -320,11 +320,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -340,11 +340,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -360,11 +360,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -380,11 +380,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -400,11 +400,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -420,11 +420,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -440,11 +440,11 @@ 0 16 - 0300000066000000ED000000B3020000 + 0300000066000000ED00000092020000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -460,11 +460,11 @@ 0 16 - 0300000066000000ED000000B3020000 + 0300000066000000ED00000092020000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -480,11 +480,11 @@ 0 16 - 00000000E402000080070000E7030000 + 00000000C3020000870500006E030000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -500,11 +500,11 @@ 0 16 - 000000001B02000090050000BF020000 + 00000000C7010000A004000056020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -520,11 +520,11 @@ 0 16 - 03000000E70200007D070000CE030000 + 03000000C60200008405000055030000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -540,11 +540,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -560,11 +560,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -600,11 +600,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -620,11 +620,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -640,11 +640,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -660,11 +660,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -680,11 +680,11 @@ 0 16 - F7000000660000008D050000C6000000 + F7000000660000009D040000B1000000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -700,11 +700,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -720,11 +720,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -740,11 +740,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -760,11 +760,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -780,11 +780,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -800,11 +800,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -820,11 +820,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -840,11 +840,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -860,11 +860,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -880,11 +880,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -900,11 +900,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -920,11 +920,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -940,11 +940,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -960,11 +960,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -980,11 +980,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1000,11 +1000,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1020,11 +1020,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1040,11 +1040,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1060,11 +1060,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1080,11 +1080,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1100,11 +1100,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1120,11 +1120,11 @@ 0 16 - 0300000066000000ED000000B3020000 + 0300000066000000ED000000CA020000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -1140,11 +1140,11 @@ 0 16 - 03000000E70200007D070000CE030000 + 03000000C60200008405000055030000 16 - 3A0000005000000002030000E0000000 + 13FAFFFF6900000063FCFFFFE4000000 @@ -1160,11 +1160,11 @@ 0 16 - 03000000E70200007D070000CE030000 + 03000000C60200008405000055030000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -1180,11 +1180,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1200,11 +1200,11 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1220,11 +1220,11 @@ 0 16 - 03000000E70200007D070000CE030000 + 03000000C60200008405000055030000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -1240,11 +1240,11 @@ 0 16 - 03000000E70200007D070000CE030000 + 03000000C60200008405000055030000 16 - 3A000000500000005601000092020000 + 13FAFFFF69000000FFFAFFFF57020000 @@ -1260,11 +1260,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1280,11 +1280,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1300,11 +1300,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1320,11 +1320,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1340,11 +1340,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1360,11 +1360,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1380,11 +1380,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1400,11 +1400,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1420,11 +1420,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1440,11 +1440,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1460,11 +1460,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1480,11 +1480,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1500,11 +1500,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1520,11 +1520,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1540,11 +1540,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1560,11 +1560,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1580,11 +1580,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1600,11 +1600,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1620,11 +1620,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1640,11 +1640,11 @@ 0 16 - A3040000660000008D05000012020000 + B3030000660000009D040000BE010000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 @@ -1680,7 +1680,7 @@ 0 16 - 00000000E703000080070000FA030000 + 000000006E0300008705000081030000 16 @@ -1740,23 +1740,23 @@ 0 16 - 03000000320200008D050000A6020000 + 03000000DE0100009D0400003D020000 16 - 3A000000500000002A0100001B010000 + 13FAFFFF6900000003FBFFFF34010000 3236 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000F40000006500000090050000F5000000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A00400002B020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000650000009005000041020000A00400004F000000900500002B02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000CC020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000065000000F0000000E2020000000000004F000000F0000000CC0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000017020000900500001B02000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003102000090050000D5020000000000001B02000090050000BF02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC80200001B020000CC020000BF02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000CC02000080070000D00200000100000001000010040000000100000035FDFFFF49000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000E602000080070000FD03000000000000D002000080070000E70300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000CA000000A0040000CE000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000C30100009D0000006F05000018010000F40000004F000000A0040000CA0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000D7010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000007F0400009D0000006F05000025020000B00300004F000000A0040000D701000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000AB020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000CF0000009D000000BF01000031030000000000004F000000F0000000AB0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000C3010000A0040000C701000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000CF000000150200006F050000A402000000000000C7010000A00400005602000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF50020000C7010000540200005602000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000AB02000087050000AF02000001000000010000100400000001000000FCFCFFFF79000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000CF0000003503000056060000F403000000000000AF020000870500006E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2356 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000046F6C656496000000000000001400046F6C656409554152545F4F70656E0C746F735F73656D5F70656E6408706F72745F636C7A106B5F726479712E7072696F5F6D61736B14726561647971756575655F7072696F5F6D61726B16726561647971756575655F7072696F5F696E73657274097072696F5F6D61736B10706F72745F73636865645F73746172740F6370755F73636865645F73746172740E50656E6453565F48616E646C65720B6B5F6E6578745F7461736B0F746F735F7461736B5F63726561746515753867325F666F6E745F7538676C69625F345F7466104F4C45445F4949435F53746F7028293B10753878385F627974655F73775F693263034556360D48534D5F455649445F4261636B0748616C665F4576034556350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + 2391 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000004000000000000000000000000000000000000010000000100000096000000020020500000000015706F72745F736C6565705F6D6F64655F656E7465729600000000000000140015706F72745F736C6565705F6D6F64655F656E746572046F6C656409554152545F4F70656E0C746F735F73656D5F70656E6408706F72745F636C7A106B5F726479712E7072696F5F6D61736B14726561647971756575655F7072696F5F6D61726B16726561647971756575655F7072696F5F696E73657274097072696F5F6D61736B10706F72745F73636865645F73746172740F6370755F73636865645F73746172740E50656E6453565F48616E646C65720B6B5F6E6578745F7461736B0F746F735F7461736B5F63726561746515753867325F666F6E745F7538676C69625F345F7466104F4C45445F4949435F53746F7028293B10753878385F627974655F73775F693263034556360D48534D5F455649445F4261636B0748616C665F45760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 1423 @@ -1772,7 +1772,7 @@ Build 678 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 583 @@ -1807,58 +1807,4 @@ - - 1 - 0 - - 100 - 0 - - .\main.c - 6 - 13 - 34 - 0 - - 0 - - - ..\TencentOS\arch\port_c.c - 42 - 1 - 3 - 1 - - 0 - - - ..\TencentOS\arch\port_s.S - 0 - 1 - 1 - 1 - - 0 - - - ..\TencentOS\TOS_CONFIG\tos_config.h - 103 - 8 - 42 - 1 - - 0 - - - ..\STARTUP\system_M251.c - 0 - 131 - 153 - 1 - - 0 - - - - diff --git a/board/Nuvoton_M251/Project/NuvotonTos.uvoptx b/board/Nuvoton_M251/hello world/NuvotonTos.uvoptx similarity index 82% rename from board/Nuvoton_M251/Project/NuvotonTos.uvoptx rename to board/Nuvoton_M251/hello world/NuvotonTos.uvoptx index f1b2aa8c..fa5c5284 100644 --- a/board/Nuvoton_M251/Project/NuvotonTos.uvoptx +++ b/board/Nuvoton_M251/hello world/NuvotonTos.uvoptx @@ -180,7 +180,7 @@ 0 0 0 - ..\STARTUP\system_M251.c + ..\BSP\Src\system_M251.c system_M251.c 0 0 @@ -192,7 +192,7 @@ 0 0 0 - ..\STARTUP\startup_M251.s + .\startup_M251.s startup_M251.s 0 0 @@ -201,7 +201,7 @@ StdDriver - 0 + 1 0 0 0 @@ -212,7 +212,7 @@ 0 0 0 - ..\StdDriver\src\clk.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\clk.c clk.c 0 0 @@ -224,8 +224,8 @@ 0 0 0 - ..\StdDriver\src\retarget.c - retarget.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\gpio.c + gpio.c 0 0 @@ -236,8 +236,8 @@ 0 0 0 - ..\StdDriver\src\uart.c - uart.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\retarget.c + retarget.c 0 0 @@ -248,8 +248,8 @@ 0 0 0 - ..\StdDriver\src\gpio.c - gpio.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\sys.c + sys.c 0 0 @@ -260,8 +260,8 @@ 0 0 0 - ..\StdDriver\src\sys.c - sys.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\uart.c + uart.c 0 0 @@ -280,7 +280,7 @@ 0 0 0 - .\main.c + ..\BSP\Src\main.c main.c 0 0 @@ -289,7 +289,7 @@ Tos/arch - 1 + 0 0 0 0 @@ -300,8 +300,8 @@ 0 0 0 - ..\TencentOS\arch\port_c.c - port_c.c + ..\..\..\arch\arm\arm-v8m\common\tos_cpu.c + tos_cpu.c 0 0 @@ -312,40 +312,40 @@ 0 0 0 - ..\TencentOS\arch\tos_cpu.c - tos_cpu.c - 0 - 0 - - - 4 - 11 - 1 - 0 - 0 - 0 - ..\TencentOS\arch\tos_fault.c + ..\..\..\arch\arm\arm-v8m\common\tos_fault.c tos_fault.c 0 0 4 - 12 + 11 2 0 0 0 - ..\TencentOS\arch\port_s.S + ..\..\..\arch\arm\arm-v8m\cortex-m23\armcc\port_s.S port_s.S 0 0 + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\arch\arm\arm-v8m\cortex-m23\armcc\port_c.c + port_c.c + 0 + 0 + Tos/kernel - 0 + 1 0 0 0 @@ -356,7 +356,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_event.c + ..\..\..\kernel\core\tos_event.c tos_event.c 0 0 @@ -368,7 +368,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_fifo.c + ..\..\..\kernel\core\tos_fifo.c tos_fifo.c 0 0 @@ -380,7 +380,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_global.c + ..\..\..\kernel\core\tos_global.c tos_global.c 0 0 @@ -392,7 +392,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_mmblk.c + ..\..\..\kernel\core\tos_mmblk.c tos_mmblk.c 0 0 @@ -404,7 +404,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_mmheap.c + ..\..\..\kernel\core\tos_mmheap.c tos_mmheap.c 0 0 @@ -416,7 +416,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_msg.c + ..\..\..\kernel\core\tos_msg.c tos_msg.c 0 0 @@ -428,7 +428,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_mutex.c + ..\..\..\kernel\core\tos_mutex.c tos_mutex.c 0 0 @@ -440,7 +440,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_pend.c + ..\..\..\kernel\core\tos_pend.c tos_pend.c 0 0 @@ -452,7 +452,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_queue.c + ..\..\..\kernel\core\tos_queue.c tos_queue.c 0 0 @@ -464,7 +464,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_robin.c + ..\..\..\kernel\core\tos_robin.c tos_robin.c 0 0 @@ -476,7 +476,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_sched.c + ..\..\..\kernel\core\tos_sched.c tos_sched.c 0 0 @@ -488,7 +488,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_sem.c + ..\..\..\kernel\core\tos_sem.c tos_sem.c 0 0 @@ -500,7 +500,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_sys.c + ..\..\..\kernel\core\tos_sys.c tos_sys.c 0 0 @@ -512,7 +512,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_task.c + ..\..\..\kernel\core\tos_task.c tos_task.c 0 0 @@ -524,7 +524,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_tick.c + ..\..\..\kernel\core\tos_tick.c tos_tick.c 0 0 @@ -536,7 +536,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_time.c + ..\..\..\kernel\core\tos_time.c tos_time.c 0 0 @@ -548,7 +548,7 @@ 0 0 0 - ..\TencentOS\kernel\core\tos_timer.c + ..\..\..\kernel\core\tos_timer.c tos_timer.c 0 0 @@ -560,7 +560,7 @@ 0 0 0 - ..\TencentOS\kernel\pm\tos_pm.c + ..\..\..\kernel\pm\tos_pm.c tos_pm.c 0 0 @@ -572,27 +572,51 @@ 0 0 0 - ..\TencentOS\kernel\pm\tos_tickless.c + ..\..\..\kernel\pm\tos_tickless.c tos_tickless.c 0 0 + + 5 + 32 + 1 + 0 + 0 + 0 + ..\..\..\kernel\core\tos_completion.c + tos_completion.c + 0 + 0 + + + 5 + 33 + 1 + 0 + 0 + 0 + ..\..\..\kernel\core\tos_countdownlatch.c + tos_countdownlatch.c + 0 + 0 + Tos/config - 1 + 0 0 0 0 6 - 32 + 34 5 0 0 0 - ..\TencentOS\TOS_CONFIG\tos_config.h + ..\TOS_CONFIG\tos_config.h tos_config.h 0 0 diff --git a/board/Nuvoton_M251/Project/NuvotonTos.uvprojx b/board/Nuvoton_M251/hello world/NuvotonTos.uvprojx similarity index 85% rename from board/Nuvoton_M251/Project/NuvotonTos.uvprojx rename to board/Nuvoton_M251/hello world/NuvotonTos.uvprojx index 220a0d3d..bb49b217 100644 --- a/board/Nuvoton_M251/Project/NuvotonTos.uvprojx +++ b/board/Nuvoton_M251/hello world/NuvotonTos.uvprojx @@ -336,7 +336,7 @@ - ..\CMSIS;..\STARTUP;..\StdDriver\inc;..\TencentOS\arch\include;..\TencentOS\kernel\core\include;..\TencentOS\kernel\pm\include;..\TencentOS\TOS_CONFIG;..\TencentOS\arch;..\STARTUP\Include + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\inc;..\TOS_CONFIG;..\..\..\arch\arm\arm-v8m\common\include;..\..\..\arch\arm\arm-v8m\cortex-m23\armcc;..\..\..\kernel\core\include;..\..\..\kernel\pm\include;..\BSP\Src;..\BSP\Inc;..\..\..\platform\vendor_bsp\st\CMSIS\Core\Include @@ -383,12 +383,12 @@ system_M251.c 1 - ..\STARTUP\system_M251.c + ..\BSP\Src\system_M251.c startup_M251.s 2 - ..\STARTUP\startup_M251.s + .\startup_M251.s @@ -398,27 +398,27 @@ clk.c 1 - ..\StdDriver\src\clk.c - - - retarget.c - 1 - ..\StdDriver\src\retarget.c - - - uart.c - 1 - ..\StdDriver\src\uart.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\clk.c gpio.c 1 - ..\StdDriver\src\gpio.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\gpio.c + + + retarget.c + 1 + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\retarget.c sys.c 1 - ..\StdDriver\src\sys.c + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\sys.c + + + uart.c + 1 + ..\..\..\platform\vendor_bsp\Nuvoton\Nuvoton_M251\StdDriver\src\uart.c @@ -428,32 +428,32 @@ main.c 1 - .\main.c + ..\BSP\Src\main.c
Tos/arch - - port_c.c - 1 - ..\TencentOS\arch\port_c.c - tos_cpu.c 1 - ..\TencentOS\arch\tos_cpu.c + ..\..\..\arch\arm\arm-v8m\common\tos_cpu.c tos_fault.c 1 - ..\TencentOS\arch\tos_fault.c + ..\..\..\arch\arm\arm-v8m\common\tos_fault.c port_s.S 2 - ..\TencentOS\arch\port_s.S + ..\..\..\arch\arm\arm-v8m\cortex-m23\armcc\port_s.S + + + port_c.c + 1 + ..\..\..\arch\arm\arm-v8m\cortex-m23\armcc\port_c.c @@ -463,97 +463,107 @@ tos_event.c 1 - ..\TencentOS\kernel\core\tos_event.c + ..\..\..\kernel\core\tos_event.c tos_fifo.c 1 - ..\TencentOS\kernel\core\tos_fifo.c + ..\..\..\kernel\core\tos_fifo.c tos_global.c 1 - ..\TencentOS\kernel\core\tos_global.c + ..\..\..\kernel\core\tos_global.c tos_mmblk.c 1 - ..\TencentOS\kernel\core\tos_mmblk.c + ..\..\..\kernel\core\tos_mmblk.c tos_mmheap.c 1 - ..\TencentOS\kernel\core\tos_mmheap.c + ..\..\..\kernel\core\tos_mmheap.c tos_msg.c 1 - ..\TencentOS\kernel\core\tos_msg.c + ..\..\..\kernel\core\tos_msg.c tos_mutex.c 1 - ..\TencentOS\kernel\core\tos_mutex.c + ..\..\..\kernel\core\tos_mutex.c tos_pend.c 1 - ..\TencentOS\kernel\core\tos_pend.c + ..\..\..\kernel\core\tos_pend.c tos_queue.c 1 - ..\TencentOS\kernel\core\tos_queue.c + ..\..\..\kernel\core\tos_queue.c tos_robin.c 1 - ..\TencentOS\kernel\core\tos_robin.c + ..\..\..\kernel\core\tos_robin.c tos_sched.c 1 - ..\TencentOS\kernel\core\tos_sched.c + ..\..\..\kernel\core\tos_sched.c tos_sem.c 1 - ..\TencentOS\kernel\core\tos_sem.c + ..\..\..\kernel\core\tos_sem.c tos_sys.c 1 - ..\TencentOS\kernel\core\tos_sys.c + ..\..\..\kernel\core\tos_sys.c tos_task.c 1 - ..\TencentOS\kernel\core\tos_task.c + ..\..\..\kernel\core\tos_task.c tos_tick.c 1 - ..\TencentOS\kernel\core\tos_tick.c + ..\..\..\kernel\core\tos_tick.c tos_time.c 1 - ..\TencentOS\kernel\core\tos_time.c + ..\..\..\kernel\core\tos_time.c tos_timer.c 1 - ..\TencentOS\kernel\core\tos_timer.c + ..\..\..\kernel\core\tos_timer.c tos_pm.c 1 - ..\TencentOS\kernel\pm\tos_pm.c + ..\..\..\kernel\pm\tos_pm.c tos_tickless.c 1 - ..\TencentOS\kernel\pm\tos_tickless.c + ..\..\..\kernel\pm\tos_tickless.c + + + tos_completion.c + 1 + ..\..\..\kernel\core\tos_completion.c + + + tos_countdownlatch.c + 1 + ..\..\..\kernel\core\tos_countdownlatch.c
@@ -563,7 +573,7 @@ tos_config.h 5 - ..\TencentOS\TOS_CONFIG\tos_config.h + ..\TOS_CONFIG\tos_config.h
diff --git a/board/Nuvoton_M251/Project/Objects/NuvotonTos.build_log.htm b/board/Nuvoton_M251/hello world/Objects/NuvotonTos.build_log.htm similarity index 90% rename from board/Nuvoton_M251/Project/Objects/NuvotonTos.build_log.htm rename to board/Nuvoton_M251/hello world/Objects/NuvotonTos.build_log.htm index bde5ca26..6721cb7f 100644 --- a/board/Nuvoton_M251/Project/Objects/NuvotonTos.build_log.htm +++ b/board/Nuvoton_M251/hello world/Objects/NuvotonTos.build_log.htm @@ -21,7 +21,7 @@ Target DLL: NULink\Nu_Link.dll V3.00 Dialog DLL: TCM.DLL V1.32.0.0

Project:

-C:\Users\Administrator\Desktop\Nuvoton_code\Nuvoton_M251\Project\NuvotonTos.uvprojx +C:\Users\Administrator\Desktop\TencentOS-tiny\board\Nuvoton_M251\hello world\NuvotonTos.uvprojx Project File Date: 10/25/2019

Output:

@@ -30,15 +30,15 @@ Rebuild target 'Target 1' compiling system_M251.c... assembling startup_M251.s... compiling clk.c... -compiling retarget.c... -compiling uart.c... compiling gpio.c... +compiling retarget.c... compiling sys.c... +compiling uart.c... compiling main.c... -compiling port_c.c... compiling tos_cpu.c... compiling tos_fault.c... assembling port_s.S... +compiling port_c.c... compiling tos_event.c... compiling tos_fifo.c... compiling tos_global.c... @@ -58,8 +58,10 @@ compiling tos_time.c... compiling tos_timer.c... compiling tos_pm.c... compiling tos_tickless.c... +compiling tos_completion.c... +compiling tos_countdownlatch.c... linking... -Program Size: Code=7956 RO-data=552 RW-data=64 ZI-data=6880 +Program Size: Code=8136 RO-data=552 RW-data=72 ZI-data=6920 ".\Objects\NuvotonTos.axf" - 0 Error(s), 0 Warning(s).

Software Packages used:

@@ -83,7 +85,7 @@ Package Vendor: Nuvoton

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.0.1 -Build Time Elapsed: 00:00:16 +Build Time Elapsed: 00:00:19 diff --git a/board/Nuvoton_M251/Project/Objects/NuvotonTos.htm b/board/Nuvoton_M251/hello world/Objects/NuvotonTos.htm similarity index 82% rename from board/Nuvoton_M251/Project/Objects/NuvotonTos.htm rename to board/Nuvoton_M251/hello world/Objects/NuvotonTos.htm index 6e633f6d..b9cd1e0e 100644 --- a/board/Nuvoton_M251/Project/Objects/NuvotonTos.htm +++ b/board/Nuvoton_M251/hello world/Objects/NuvotonTos.htm @@ -3,7 +3,7 @@ Static Call Graph - [.\Objects\NuvotonTos.axf]

Static Call Graph for image .\Objects\NuvotonTos.axf


-

#<CALLGRAPH># ARM Linker, 6070001: Last Updated: Fri Oct 25 16:19:59 2019 +

#<CALLGRAPH># ARM Linker, 6070001: Last Updated: Fri Oct 25 18:45:40 2019

Maximum Stack Usage = 176 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -12,10 +12,10 @@ __rt_entry_main ⇒ main ⇒ SYS_Init ⇒ CLK_SetCoreClock ⇒ CLK_E

Functions with no stack information