diff --git a/bsp/at32/at32f457-start/project.uvguix.hasee b/bsp/at32/at32f457-start/project.uvguix.hasee new file mode 100644 index 0000000000000000000000000000000000000000..2090ba45134bbd8753391256485c7b8bec3d48b4 --- /dev/null +++ b/bsp/at32/at32f457-start/project.uvguix.hasee @@ -0,0 +1,1878 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser - *** Not Enabled *** + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 201 + 164 + 1916 + 1081 + + + + 0 + + 256 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000003C443A5C5953465C72742D7468726561645C6273705C617433325C61743332663435372D73746172745C6170706C69636174696F6E735C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000063030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DD000000 + + + 16 + BE000000D50000008603000063010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000033030000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000033030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002902000090050000B7020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D050000FF000000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000002C0200008D0500009E020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D50000008603000063010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000033030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000033030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000006403000080070000DE030000 + + + 16 + BE000000D50000008603000063010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001502000090050000B7020000 + + + 16 + BE000000D50000008603000063010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000670300008D050000C5030000 + + + 16 + BE000000D50000008603000063010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DD000000 + + + 16 + BE000000D50000008603000063010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 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 + A0040000630000009005000025020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002902000090050000A3020000 + + + 16 + BE000000D50000008603000063010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DD000000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009E020000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000006403000090050000DE030000 + + + 16 + BE000000D50000008603000063010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000670300008D050000C5030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000670300008D050000C5030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000670300008D050000C5030000 + + + 16 + BE000000D5000000DA01000011030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C4000000 + + + 16 + BE000000D50000008603000063010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007A010000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000DE03000080070000F1030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 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 + 030000002C0200008D0500008A020000 + + + 16 + BE000000D5000000AE0100009E010000 + + + + 3334 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DD00000090050000E1000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000BE000000D50000008603000063010000F40000004F00000090050000DD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000025020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000BE000000D5000000AE0100009E010000A00400004F000000900500002502000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000004C030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000BE000000D5000000AE0100009E010000000000004F000000F00000004C0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000BE000000D5000000AE0100009E010000000000001502000090050000B702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004C0300008007000050030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000BE000000D50000008603000063010000000000005003000080070000DE0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2969 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001A455854495F73657446616C6C456467655472696753656C526567960000000000000014001A455854495F73657446616C6C456467655472696753656C52656711535953434F4E5F7365744578746953656C0F4441435F52454653454C5F564441430745585449435231084750494F5F3232301450494E5F4952515F4D4F44455F46414C4C494E4708454D4946315F413008454D4946315F41360B746573745F454D4946494F0E4C543733385F48575F52657365740D454D49465F5352414D5F435330044353304E14753867325F666F6E745F6E63656E4230385F747214553847325F4932435F4445564943455F4E414D4513553858385F53544152545F5452414E5346455226753867325F53657475705F737364313330365F6932635F3132387836345F6E6F6E616D655F6611753867325F5365747570446973706C61790463683332154932435F73656E64537562416464724D6173746572104750494F5F33355F493243325F53434C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 978 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000972742D746872656164960000000000000001000972742D746872656164000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + applications\main.c + 0 + 6 + 1 + 1 + + 0 + + + + +
diff --git a/bsp/at32/at32f457-start/project.uvoptx b/bsp/at32/at32f457-start/project.uvoptx index 6594d6c9607a1db706fecbf227ee1faf6acc792b..31a450213b5257fdd8d167eb0de3499fe22553f0 100644 --- a/bsp/at32/at32f457-start/project.uvoptx +++ b/bsp/at32/at32f457-start/project.uvoptx @@ -175,11 +175,731 @@ - Source Group 1 + Applications + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 5 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion_comm.c + completion_comm.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion_up.c + completion_up.c + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\condvar.c + condvar.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\pin\dev_pin.c + dev_pin.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\dev_serial_v2.c + dev_serial_v2.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 4 + 19 + 1 + 0 + 0 + 0 + board\src\at32_msp.c + at32_msp.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + board\src\board.c + board.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\libraries\rt_drivers\drv_common.c + drv_common.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\libraries\rt_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + ..\libraries\rt_drivers\drv_usart_v2.c + drv_usart_v2.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 5 + 24 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 26 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 5 + 27 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 28 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 29 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 30 + 1 + 0 + 0 + 0 + ..\..\..\src\cpu_up.c + cpu_up.c + 0 + 0 + + + 6 + 31 + 1 + 0 + 0 + 0 + ..\..\..\src\defunct.c + defunct.c + 0 + 0 + + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\memheap.c + memheap.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_comm.c + scheduler_comm.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libc 0 0 0 0 + + 7 + 44 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 7 + 45 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 7 + 51 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + 7 + 52 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kerrno.c + kerrno.c + 0 + 0 + + + 7 + 53 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kstdio.c + kstdio.c + 0 + 0 + + + 7 + 54 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\kstring.c + kstring.c + 0 + 0 + + + 7 + 55 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\rt_vsnprintf_tiny.c + rt_vsnprintf_tiny.c + 0 + 0 + + + 7 + 56 + 1 + 0 + 0 + 0 + ..\..\..\src\klibc\rt_vsscanf.c + rt_vsscanf.c + 0 + 0 + diff --git a/bsp/at32/at32f457-start/project.uvprojx b/bsp/at32/at32f457-start/project.uvprojx index 37629633788ce36baea9bab3f9fa7dfc3e9d6b0e..c5ce20cf215b92a7d1091051acc77cd4eab45b88 100644 --- a/bsp/at32/at32f457-start/project.uvprojx +++ b/bsp/at32/at32f457-start/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread @@ -15,28 +18,28 @@ ArteryTek ArteryTek.AT32F45x_DFP.2.0.0 IRAM(0x20000000,0x24000) IROM(0x08000000,0x80000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0AT32F457_512 -FS08000000 -FL080000 -FP0($$Device:AT32F457ZET7$Flash\AT32F457_512.FLM)) 0 $$Device:AT32F457ZET7$Device\Include\at32f45x.h - - - - - - - - - + + + + + + + + + $$Device:AT32F457ZET7$SVD\AT32F457xx_v2.svd 0 0 - - - - - + + + + + 0 0 @@ -58,8 +61,8 @@ 0 0 - - + + 0 0 0 @@ -68,8 +71,8 @@ 0 0 - - + + 0 0 0 @@ -79,14 +82,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -100,8 +103,8 @@ 0 0 3 - - + + 1 @@ -134,11 +137,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -171,7 +174,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -182,6 +185,7 @@ 2 0 0 + 0 0 0 8 @@ -305,7 +309,7 @@ 0x0 - + 1 @@ -332,9 +336,9 @@ 0 0 - + AT32F457ZET7, RT_USING_ARMLIBC, RT_USING_LIBC, __RTTHREAD__, __STDC_LIMIT_MACROS, __CLK_TCK=RT_TICK_PER_SECOND - + applications;..\..\..\components\drivers\include;.;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\drivers\include;..\..\..\components\finsh;..\..\..\components\drivers\include;board;..\..\..\components\libc\posix\ipc;..\..\..\components\libc\compilers\common\include;..\..\..\libcpu\arm\common;..\..\..\components\net\utest;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\phy;..\..\..\components\drivers\smp_call;..\libraries\rt_drivers\config;..\..\..\components\libc\posix\io\epoll;..\libraries\rt_drivers;..\libraries\usbotg_library\inc;board\inc;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;..\..\..\components\libc\posix\io\eventfd;..\..\..\include;..\..\..\components\libc\posix\io\poll @@ -350,10 +354,10 @@ 0 4 - - - - + + + + @@ -365,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\board\linker_scripts\link.sct - - - - - + + + + + @@ -394,29 +398,21 @@ 1 ..\..\..\libcpu\arm\common\atomic_arm.c - - div0.c 1 ..\..\..\libcpu\arm\common\div0.c - - showmem.c 1 ..\..\..\libcpu\arm\common\showmem.c - - context_rvds.S 2 ..\..\..\libcpu\arm\cortex-m4\context_rvds.S - - cpuport.c 1 @@ -432,8 +428,47 @@ 1 ..\..\..\components\drivers\core\device.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -444,15 +479,52 @@ - - completion_comm.c 1 ..\..\..\components\drivers\ipc\completion_comm.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -463,15 +535,52 @@ - - completion_up.c 1 ..\..\..\components\drivers\ipc\completion_up.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -482,15 +591,52 @@ - - condvar.c 1 ..\..\..\components\drivers\ipc\condvar.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -501,15 +647,52 @@ - - dataqueue.c 1 ..\..\..\components\drivers\ipc\dataqueue.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -520,15 +703,52 @@ - - pipe.c 1 ..\..\..\components\drivers\ipc\pipe.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -539,15 +759,52 @@ - - ringblk_buf.c 1 ..\..\..\components\drivers\ipc\ringblk_buf.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -558,15 +815,52 @@ - - ringbuffer.c 1 ..\..\..\components\drivers\ipc\ringbuffer.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -577,15 +871,52 @@ - - waitqueue.c 1 ..\..\..\components\drivers\ipc\waitqueue.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -596,15 +927,52 @@ - - workqueue.c 1 ..\..\..\components\drivers\ipc\workqueue.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -615,15 +983,52 @@ - - dev_pin.c 1 ..\..\..\components\drivers\pin\dev_pin.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -634,15 +1039,52 @@ - - dev_serial_v2.c 1 ..\..\..\components\drivers\serial\dev_serial_v2.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_IPC_SOURCE__ @@ -663,29 +1105,21 @@ 1 board\src\at32_msp.c - - board.c 1 board\src\board.c - - drv_common.c 1 ..\libraries\rt_drivers\drv_common.c - - drv_gpio.c 1 ..\libraries\rt_drivers\drv_gpio.c - - drv_usart_v2.c 1 @@ -701,22 +1135,16 @@ 1 ..\..\..\components\finsh\shell.c - - msh.c 1 ..\..\..\components\finsh\msh.c - - msh_parse.c 1 ..\..\..\components\finsh\msh_parse.c - - cmd.c 1 @@ -732,8 +1160,47 @@ 1 ..\..\..\src\clock.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -744,15 +1211,52 @@ - - components.c 1 ..\..\..\src\components.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -763,15 +1267,52 @@ - - cpu_up.c 1 ..\..\..\src\cpu_up.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -782,15 +1323,52 @@ - - defunct.c 1 ..\..\..\src\defunct.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -801,15 +1379,52 @@ - - idle.c 1 ..\..\..\src\idle.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -820,15 +1435,52 @@ - - ipc.c 1 ..\..\..\src\ipc.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -839,15 +1491,52 @@ - - irq.c 1 ..\..\..\src\irq.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -858,15 +1547,52 @@ - - kservice.c 1 ..\..\..\src\kservice.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -877,15 +1603,52 @@ - - mem.c 1 ..\..\..\src\mem.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -896,15 +1659,52 @@ - - memheap.c 1 ..\..\..\src\memheap.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -915,15 +1715,52 @@ - - mempool.c 1 ..\..\..\src\mempool.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -934,15 +1771,52 @@ - - object.c 1 ..\..\..\src\object.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -953,15 +1827,52 @@ - - scheduler_comm.c 1 ..\..\..\src\scheduler_comm.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -972,15 +1883,52 @@ - - scheduler_up.c 1 ..\..\..\src\scheduler_up.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -991,15 +1939,52 @@ - - thread.c 1 ..\..\..\src\thread.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -1010,15 +1995,52 @@ - - timer.c 1 ..\..\..\src\timer.c + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 __RT_KERNEL_SOURCE__ @@ -1039,85 +2061,61 @@ 1 ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 ..\..\..\components\libc\compilers\armlibc\syscalls.c - - cctype.c 1 ..\..\..\components\libc\compilers\common\cctype.c - - cstdlib.c 1 ..\..\..\components\libc\compilers\common\cstdlib.c - - cstring.c 1 ..\..\..\components\libc\compilers\common\cstring.c - - ctime.c 1 ..\..\..\components\libc\compilers\common\ctime.c - - cunistd.c 1 ..\..\..\components\libc\compilers\common\cunistd.c - - cwchar.c 1 ..\..\..\components\libc\compilers\common\cwchar.c - - kerrno.c 1 ..\..\..\src\klibc\kerrno.c - - kstdio.c 1 ..\..\..\src\klibc\kstdio.c - - kstring.c 1 ..\..\..\src\klibc\kstring.c - - rt_vsnprintf_tiny.c 1 ..\..\..\src\klibc\rt_vsnprintf_tiny.c - - rt_vsscanf.c 1 @@ -1128,11 +2126,13 @@ + - - - + + + + @@ -1142,4 +2142,5 @@ +
diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript index 6f2f6c5427a5b9423b32463ba5714b5d68ffd576..b52180f9ab1c40bc57e544d6cd551f6b8ac82c3f 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/SConscript @@ -7,18 +7,41 @@ cwd = GetCurrentDir() src = [] path = [cwd, cwd + '/config'] -if GetDepend('BSP_USING_GPIO'): +if GetDepend(['BSP_USING_GPIO', 'RT_USING_PIN']): src += ['drv_gpio.c'] -if GetDepend('BSP_USING_UART'): +if GetDepend(['BSP_USING_UART', 'RT_USING_SERIAL']): src += ['drv_uart.c'] -if GetDepend('BSP_USING_CAN'): +if GetDepend(['BSP_USING_CAN', 'RT_USING_CAN']): src += ['drv_can.c'] -if GetDepend('BSP_USING_ECAP'): +if GetDepend(['BSP_USING_ECAP']): src += ['drv_ecap.c'] +if GetDepend(['BSP_USING_IWDG1']): + src += ['drv_iwdg1.c'] + +if GetDepend(['BSP_USING_IWDG2']): + src += ['drv_iwdg2.c'] + +if GetDepend(['BSP_USING_WWDG']): + src += ['drv_wwdg.c'] + +if GetDepend(['BSP_USING_HARD_I2C']): + src += ['drv_hard_i2c.c'] + + +if GetDepend(['BSP_USING_SOFT_I2C']): + src += ['drv_soft_i2c.c'] + +if GetDepend(['BSP_USING_DAC']): + src += ['drv_dac.c'] + +if GetDepend(['BSP_USING_GPIO_INT_XINT']): + src += ['drv_gpio_int_xint.c'] + + group = DefineGroup('HAL_Drivers', src, depend = [''], CPPPATH = path) Return('group') diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c new file mode 100644 index 0000000000000000000000000000000000000000..f252752161a8277c432e61f4daa89c784ef2e7fd --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.c @@ -0,0 +1,157 @@ + +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09-09 WCH the first version + * 2022-09-17 hg0720 add some operation function + */ + +#include +#include +#include +#include "drv_dac.h" +#include "src_dac.h" +#if defined BSP_USING_DAC + +//#define DRV_DEBUG +#define LOG_TAG "drv.dac" +#include + +#if defined(BSP_USING_DAC1) +struct rt_dac_device ns800_dac_device1; +#endif + +#if defined(BSP_USING_DAC3) +struct rt_dac_device ns800_dac_device3; +#endif + + + + +struct ns800_dac +{ + struct rt_dac_device *ns800_dac_device; + DAC_TypeDef *Instance; + char *dacName; +}; + +static struct ns800_dac ns800_dac_obj[] = +{ +#if defined(BSP_USING_DAC1) + { + &ns800_dac_device1, + DAC1, + "dac1", + }, +#endif +#if defined(BSP_USING_DAC3) + { + &ns800_dac_device3, + DAC3, + "dac3", + }, +#endif +}; + +static rt_err_t ns800_dac_enabled(struct rt_dac_device *device, rt_uint32_t channel) +{ + struct ns800_dac *N800dac; + RT_ASSERT(device != RT_NULL); + N800dac = (struct ns800_dac*)device->parent.user_data; + DAC_enableModule(N800dac->Instance ); + return RT_EOK; +} + +static rt_err_t ns800_dac_disabled(struct rt_dac_device *device, rt_uint32_t channel) +{ + struct ns800_dac *N800dac; + RT_ASSERT(device != RT_NULL); + N800dac = (struct ns800_dac*)device->parent.user_data; + + DAC_disableModule(N800dac->Instance); + return RT_EOK; +} + +static rt_uint8_t ns800_dac_get_resolution(struct rt_dac_device *device) +{ + struct ns800_dac *N800dac; + + RT_ASSERT(device != RT_NULL); + + N800dac = (struct ns800_dac*)device->parent.user_data; + + (void) N800dac; + + /* Only has supported DAC_ALIGN_12B_R, so it will return 12 bits */ + return 12; +} + +static rt_uint32_t ns800_dac_get_channel(rt_uint32_t channel) +{ + rt_uint32_t ns800_channel = 1; + return ns800_channel; +} + +static rt_err_t ns800_set_dac_value(struct rt_dac_device *device, rt_uint32_t channel, rt_uint32_t *value) +{ + rt_uint32_t dac_channel; + struct ns800_dac *N800dac; + + RT_ASSERT(device != RT_NULL); + RT_ASSERT(value != RT_NULL); + + N800dac = (struct ns800_dac*)device->parent.user_data; + DAC_setShadowValue(N800dac->Instance, *value); + rt_kprintf("AAAValue=%d\n",*value); + + return RT_EOK; +} + +static const struct rt_dac_ops ns800_dac_ops = +{ + .disabled = ns800_dac_disabled, + .enabled = ns800_dac_enabled, + .convert = ns800_set_dac_value, + .get_resolution = ns800_dac_get_resolution, +}; + +static int ns800_dac_init(void) +{ + int result = RT_EOK; + /* save dac name */ + int i = 0; + + for (i = 0; i < sizeof(ns800_dac_obj) / sizeof(ns800_dac_obj[0]); i++) + { + DAC_disableModule(ns800_dac_obj[i].Instance); + /* DACVALA load on next SYSCLK. Determines when the DACVALA register is updated with the value from DACVALS */ + DAC_setLoadMode(ns800_dac_obj[i].Instance , DAC_LOAD_SYSCLK); + /* DAC delayTime */ + DAC_setDetaDelayTime(ns800_dac_obj[i].Instance, 0xFF); + /* DAC SettlingTime */ + DAC_setSettlingTime(ns800_dac_obj[i].Instance, 0xFF); + /* DAC SettlingTime */ + DAC_setDacVrefMode(ns800_dac_obj[i].Instance, DAC_REFSEL_VDAC);//选 ADC VREFHI/VSSA ,DAC1 çš„å‚考电压是 VREFHIA, DAC3 çš„å‚考电压是 VREFHIB。DAC_REFSEL_VDAC 是VDAC + /* set DAC value is zero */ + DAC_setShadowValue(ns800_dac_obj[i].Instance , 0x0); + /* Enable DAC and close output function */ + /* register dac device */ + if (rt_hw_dac_register(ns800_dac_obj[i].ns800_dac_device, ns800_dac_obj[i].dacName, &ns800_dac_ops, &ns800_dac_obj[i]) == RT_EOK) + { + LOG_D("%s init success", ns800_dac_obj[i].dacName); + } + else + { + LOG_E("%s register failed", ns800_dac_obj[i].dacName); + result = -RT_ERROR; + } + } + return result; +} +INIT_DEVICE_EXPORT(ns800_dac_init); + +#endif /* BSP_USING_DAC */ diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h new file mode 100644 index 0000000000000000000000000000000000000000..7bda5f4daf23612b033ec823217e3bcd8e5a1a36 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_dac.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-17 Jeffery Yuan the first version + */ + +#ifndef DRV_DAC_H__ +#define DRV_DAC_H__ + +#include +#include + + + + + +#endif diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c index b3e67ae04df03b21f26e29fb8def37d2c2b3d073..b3ba11f153ed92a74a3e43ef18e34d9925726449 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.c @@ -5,7 +5,7 @@ * * Change Logs: * Date Author Notes - * + *2026-05-17 Jeffery Yuan add interrupt operation function */ #include @@ -18,6 +18,40 @@ #define PIN_ENTRY(pin_macro) {pin_macro} + + +#if defined(GPIOZ) +#define __NS800_PORT_MAX 12u +#elif defined(GPIOK) +#define __NS800_PORT_MAX 11u +#elif defined(GPIOJ) +#define __NS800_PORT_MAX 10u +#elif defined(GPIOI) +#define __NS800_PORT_MAX 9u +#elif defined(GPIOH) +#define __NS800_PORT_MAX 8u +#elif defined(GPIOG) +#define __NS800_PORT_MAX 7u +#elif defined(GPIOF) +#define __NS800_PORT_MAX 6u +#elif defined(GPIOE) +#define __NS800_PORT_MAX 5u +#elif defined(GPIOD) +#define __NS800_PORT_MAX 4u +#elif defined(GPIOC) +#define __NS800_PORT_MAX 3u +#elif defined(GPIOB) +#define __NS800_PORT_MAX 2u +#elif defined(GPIOA) +#define __NS800_PORT_MAX 1u +#else +#define __NS800_PORT_MAX 0u +#error Unsupported NS800 GPIO peripheral. +#endif + +#define PIN_STPORT_MAX __NS800_PORT_MAX + + static const rt_pin_info_t pin_map_table[225] = { /* 0-21: 连续 */ [0] = PIN_ENTRY(GPIO_0), @@ -161,6 +195,84 @@ static const rt_pin_info_t pin_map_table[225] = { [224] = PIN_ENTRY(GPIO_224), }; + + +static struct rt_pin_irq_hdr pin_irq_hdr_table[32] = +{ + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, + {-1, 0, RT_NULL, RT_NULL}, +}; + + +static const struct pin_irq_map pin_irq_map[32] = +{ + {GPIO_PIN_0, EXTI3_0_IRQn}, + {GPIO_PIN_1, EXTI3_0_IRQn}, + {GPIO_PIN_2, EXTI3_0_IRQn}, + {GPIO_PIN_3, EXTI3_0_IRQn}, + {GPIO_PIN_4, EXTI7_4_IRQn}, + {GPIO_PIN_5, EXTI7_4_IRQn}, + {GPIO_PIN_6, EXTI7_4_IRQn}, + {GPIO_PIN_7, EXTI7_4_IRQn}, + {GPIO_PIN_8, EXTI11_8_IRQn}, + {GPIO_PIN_9, EXTI11_8_IRQn}, + {GPIO_PIN_10, EXTI11_8_IRQn}, + {GPIO_PIN_11, EXTI11_8_IRQn}, + {GPIO_PIN_12, EXTI15_12_IRQn}, + {GPIO_PIN_13, EXTI15_12_IRQn}, + {GPIO_PIN_14, EXTI15_12_IRQn}, + {GPIO_PIN_15, EXTI15_12_IRQn}, + {GPIO_PIN_16, EXTI3_0_IRQn}, + {GPIO_PIN_17, EXTI3_0_IRQn}, + {GPIO_PIN_18, EXTI3_0_IRQn}, + {GPIO_PIN_19, EXTI3_0_IRQn}, + {GPIO_PIN_20, EXTI7_4_IRQn}, + {GPIO_PIN_21, EXTI7_4_IRQn}, + {GPIO_PIN_22, EXTI7_4_IRQn}, + {GPIO_PIN_23, EXTI7_4_IRQn}, + {GPIO_PIN_24, EXTI11_8_IRQn}, + {GPIO_PIN_25, EXTI11_8_IRQn}, + {GPIO_PIN_26, EXTI11_8_IRQn}, + {GPIO_PIN_27, EXTI11_8_IRQn}, + {GPIO_PIN_28, EXTI15_12_IRQn}, + {GPIO_PIN_29, EXTI15_12_IRQn}, + {GPIO_PIN_30, EXTI15_12_IRQn}, + {GPIO_PIN_31, EXTI15_12_IRQn}, +}; + + + + /* 1. PIN_NUM: 从(port, pin)获å–å¼•è„šç¼–å· */ int get_pin_num(GPIO_TypeDef *port, GPIO_PinNum pin) { @@ -271,9 +383,6 @@ const rt_pin_info_t* get_pin_info(int pin_num) return &pin_map_table[pin_num]; } -#define PIN_STPORT(pin) (pin_map_table[(pin)].port) -#define PIN_STPIN(pin) (pin_map_table[(pin)].pin) - static uint32_t pin_irq_enable_mask = 0; @@ -287,6 +396,7 @@ static rt_base_t ns800_pin_get(const char *name) uint8_t port_index; GPIO_TypeDef *port = RT_NULL; char *endptr; + if ((name == RT_NULL) || (name[0] == '\0')) { @@ -417,24 +527,614 @@ static void ns800rt7_pin_mode(rt_device_t dev, rt_base_t pin, rt_uint8_t mode) } +//////////////////////////////////////////////////////////////////////////////////////////////////////////// +rt_inline const struct pin_irq_map *get_pin_irq_map(rt_uint32_t pinbit) +{ + rt_int32_t mapindex = get_pin_index(pinbit); + if (mapindex < 0 || mapindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return RT_NULL; + } + return &pin_irq_map[mapindex]; +} + + + + static rt_err_t ns800_pin_attach_irq(struct rt_device *device, rt_base_t pin, rt_uint8_t mode, void (*hdr)(void *args), void *args) { + rt_base_t level; + rt_int32_t irqindex = -1; + const rt_pin_info_t *info = get_pin_info(pin); + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + switch (mode) + { + case PIN_IRQ_MODE_RISING: + case PIN_IRQ_MODE_FALLING: + case PIN_IRQ_MODE_RISING_FALLING: + break; + case PIN_IRQ_MODE_HIGH_LEVEL: + /* hardware not supported */ + case PIN_IRQ_MODE_LOW_LEVEL: + /* hardware not supported */ + default: + return -RT_EINVAL; + } + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_hdr_table)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_table[irqindex].pin == info->pin && + pin_irq_hdr_table[irqindex].hdr == hdr && + pin_irq_hdr_table[irqindex].mode == mode && + pin_irq_hdr_table[irqindex].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (pin_irq_hdr_table[irqindex].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EBUSY; + } + pin_irq_hdr_table[irqindex].pin = info->pin; + pin_irq_hdr_table[irqindex].hdr = hdr; + pin_irq_hdr_table[irqindex].mode = mode; + pin_irq_hdr_table[irqindex].args = args; + rt_hw_interrupt_enable(level); return RT_EOK; } static rt_err_t ns800_pin_dettach_irq(struct rt_device *device, rt_base_t pin) { + rt_base_t level; + rt_int32_t irqindex = -1; + const rt_pin_info_t *info = get_pin_info(pin); + + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_table[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + pin_irq_hdr_table[irqindex].pin = -1; + pin_irq_hdr_table[irqindex].hdr = RT_NULL; + pin_irq_hdr_table[irqindex].mode = 0; + pin_irq_hdr_table[irqindex].args = RT_NULL; + rt_hw_interrupt_enable(level); return RT_EOK; } + +static SYSCON_ExtiSel EXTI_enableGpioLine (GPIO_TypeDef *port, GPIO_PinNum pin) +{ + SYSCON_ExtiSel retLine; + retLine = (SYSCON_ExtiSel)((uint16_t)pin % 16); + /* Unlock SYSCON register writing function */ + SYSCON_UNLOCK; + + + + + if (port == GPIOA) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_0); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_8); + } + } + else if (port == GPIOB) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_1); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_9); + } + } + else if (port == GPIOC) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_2); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_10); + } + } + else if (port == GPIOD) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_3); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_11); + } + } + else if (port == GPIOE) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_4); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_12); + } + } + else if (port == GPIOF) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_5); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_13); + } + } + else if (port == GPIOG) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_6); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_14); + } + } + else if (port == GPIOH) + { + if (pin < GPIO_PIN_16) + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_7); + } + else + { + SYSCON_setExtiSel(SYSCON, retLine, SYSCON_EXTI_PINSEL_15); + } + } + + /* Lock SYSCON register writing function */ + SYSCON_LOCK; + + return retLine; +} + +static IRQn_Type EXTI_getLineIrqn (SYSCON_ExtiSel line) +{ + IRQn_Type irq = EXTI3_0_IRQn; + + switch (line) + { + case SYSCON_EXTISEL_0: + case SYSCON_EXTISEL_1: + case SYSCON_EXTISEL_2: + case SYSCON_EXTISEL_3: + { + irq = EXTI3_0_IRQn; + } + break; + + case SYSCON_EXTISEL_4: + case SYSCON_EXTISEL_5: + case SYSCON_EXTISEL_6: + case SYSCON_EXTISEL_7: + { + irq = EXTI7_4_IRQn; + } + break; + + case SYSCON_EXTISEL_8: + case SYSCON_EXTISEL_9: + case SYSCON_EXTISEL_10: + case SYSCON_EXTISEL_11: + { + irq = EXTI11_8_IRQn; + } + break; + + case SYSCON_EXTISEL_12: + case SYSCON_EXTISEL_13: + case SYSCON_EXTISEL_14: + case SYSCON_EXTISEL_15: + { + irq = EXTI15_12_IRQn; + } + break; + + default: + break; + } + + return irq; +} + +void EXTI_handler(void); + + static rt_err_t ns800_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint8_t enabled) -{ +{ + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t irqindex = -1; + rt_uint8_t gpio_port_souce=0; + const rt_pin_info_t *info = get_pin_info(pin); + uint32_t key_line_idx = 0; + IRQn_Type key_irq_idx; + RT_ASSERT(info->port >= 3 && "gpio just support A,B,C"); + if (PIN_PORT(pin) >= PIN_STPORT_MAX) + { + return -RT_ENOSYS; + } + + if (enabled == PIN_IRQ_ENABLE) + { + irqindex = get_pin_index(info->pin); + if (irqindex < 0 || irqindex >= (rt_int32_t)ITEM_NUM(pin_irq_map)) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + if (pin_irq_hdr_table[irqindex].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_ENOSYS; + } + + irqmap = &pin_irq_map[irqindex]; + + key_line_idx = EXTI_enableGpioLine(info->port,info->pin); + key_irq_idx = EXTI_getLineIrqn((SYSCON_ExtiSel)key_line_idx); + EXTI_setIntrMaskReg(EXTI, (1 << key_line_idx)); + /* Interrupt handler function registration. */ + Interrupt_register(key_irq_idx, &EXTI_handler); + /* Enable the interrupt signals. Enable global interrupts.*/ + Interrupt_enable(key_irq_idx); + + switch (pin_irq_hdr_table[irqindex].mode) + { + case PIN_IRQ_MODE_RISING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_PULLDOWN); + EXTI_setRiseEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + case PIN_IRQ_MODE_FALLING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_PULLUP); + EXTI_setFallEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + case PIN_IRQ_MODE_RISING_FALLING: + GPIO_setPadConfig(info->port,info->pin, GPIO_PIN_TYPE_STD); + EXTI_setRiseEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + EXTI_setFallEdgeTrigSelReg(EXTI, (1 << key_line_idx)); + break; + } + /* Enable the interrupt signals. Enable global interrupts.*/ + Interrupt_enable(irqmap->irqno); + rt_kprintf("IRQn=%d\n",irqmap->irqno); + + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(info->pin); + if (irqmap == RT_NULL) + { + return -RT_ENOSYS; + } + + level = rt_hw_interrupt_disable(); + + pin_irq_enable_mask &= ~irqmap->pinbit; + + if ((irqmap->pinbit>=GPIO_PIN_0)&&(irqmap->pinbit<=GPIO_PIN_3)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_4)&&(irqmap->pinbit<=GPIO_PIN_7)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_8)&&(irqmap->pinbit<=GPIO_PIN_11)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_12)&&(irqmap->pinbit<=GPIO_PIN_15)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_16)&&(irqmap->pinbit<=GPIO_PIN_19)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_16|GPIO_PIN_17|GPIO_PIN_18|GPIO_PIN_19))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_20)&&(irqmap->pinbit<=GPIO_PIN_23)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_20|GPIO_PIN_21|GPIO_PIN_22|GPIO_PIN_23))) + { + NVIC_DisableIRQ(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_24)&&(irqmap->pinbit<=GPIO_PIN_27)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_24|GPIO_PIN_25|GPIO_PIN_26|GPIO_PIN_27))) + { + Interrupt_disable(irqmap->irqno); + } + } + else if ((irqmap->pinbit>=GPIO_PIN_28)&&(irqmap->pinbit<=GPIO_PIN_31)) + { + if(!(pin_irq_enable_mask&(GPIO_PIN_28|GPIO_PIN_29|GPIO_PIN_30|GPIO_PIN_31))) + { + Interrupt_disable(irqmap->irqno); + } + } + else + { + NVIC_DisableIRQ(irqmap->irqno); + } + + rt_hw_interrupt_enable(level); + } + else + { + return -RT_ENOSYS; + } + return RT_EOK; } + + +rt_inline void pin_irq_hdr(int irqno) +{ + if (pin_irq_hdr_table[irqno].hdr) + { + pin_irq_hdr_table[irqno].hdr(pin_irq_hdr_table[irqno].args); + } +} + +void HAL_GPIO_EXTI_Callback(rt_uint16_t GPIO_Pin) +{ + pin_irq_hdr(get_pin_index(GPIO_Pin)); +} + + +void EXTI_handler(void) +{ + rt_interrupt_enter(); + + uint32_t tempPr = EXTI_getPendReg(EXTI); + + if(tempPr & (1 << SYSCON_EXTISEL_0)) + { + if(pin_irq_hdr_table[GPIO_PIN_0].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_0); + } + else if(pin_irq_hdr_table[GPIO_PIN_16].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_16); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_1)) + { + if(pin_irq_hdr_table[GPIO_PIN_1].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_1); + } + else if(pin_irq_hdr_table[GPIO_PIN_17].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_17); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_2)) + { + if(pin_irq_hdr_table[GPIO_PIN_2].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_2); + } + else if(pin_irq_hdr_table[GPIO_PIN_18].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_18); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_3)) + { + if(pin_irq_hdr_table[GPIO_PIN_3].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_3); + } + else if(pin_irq_hdr_table[GPIO_PIN_19].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_19); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_4)) + { + if(pin_irq_hdr_table[GPIO_PIN_4].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_4); + } + else if(pin_irq_hdr_table[GPIO_PIN_20].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_20); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_5)) + { + if(pin_irq_hdr_table[GPIO_PIN_5].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_5); + } + else if(pin_irq_hdr_table[GPIO_PIN_21].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_21); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_6)) + { + if(pin_irq_hdr_table[GPIO_PIN_6].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_6); + } + else if(pin_irq_hdr_table[GPIO_PIN_22].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_22); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_7)) + { + if(pin_irq_hdr_table[GPIO_PIN_7].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_7); + } + else if(pin_irq_hdr_table[GPIO_PIN_23].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_23); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_8)) + { + if(pin_irq_hdr_table[GPIO_PIN_8].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_8); + } + else if(pin_irq_hdr_table[GPIO_PIN_24].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_24); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_9)) + { + if(pin_irq_hdr_table[GPIO_PIN_9].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_9); + } + else if(pin_irq_hdr_table[GPIO_PIN_25].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_25); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_10)) + { + if(pin_irq_hdr_table[GPIO_PIN_10].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_10); + } + else if(pin_irq_hdr_table[GPIO_PIN_26].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_26); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_11)) + { + if(pin_irq_hdr_table[GPIO_PIN_11].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_11); + } + else if(pin_irq_hdr_table[GPIO_PIN_27].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_27); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_12)) + { + if(pin_irq_hdr_table[GPIO_PIN_12].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_12); + } + else if(pin_irq_hdr_table[GPIO_PIN_28].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_28); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_13)) + { + if(pin_irq_hdr_table[GPIO_PIN_13].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_13); + } + else if(pin_irq_hdr_table[GPIO_PIN_29].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_29); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_14)) + { + if(pin_irq_hdr_table[GPIO_PIN_14].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_14); + } + else if(pin_irq_hdr_table[GPIO_PIN_30].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_30); + } + } + if(tempPr & (1 << SYSCON_EXTISEL_15)) + { + if(pin_irq_hdr_table[GPIO_PIN_15].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_15); + } + else if(pin_irq_hdr_table[GPIO_PIN_31].hdr) + { + HAL_GPIO_EXTI_Callback(GPIO_PIN_31); + } + } + + EXTI_clearPendReg(EXTI, tempPr); + + rt_interrupt_leave(); + +} + + static const struct rt_pin_ops _ns800rt7_pin_ops = { ns800rt7_pin_mode, @@ -447,10 +1147,6 @@ static const struct rt_pin_ops _ns800rt7_pin_ops = RT_NULL, }; -rt_inline void pin_irq_hdr(int irqno) -{ - -} int rt_hw_pin_init(void) { diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h index 24a5980dbfa8cfd3b8cf70cc84ada4da1d2d02fb..4dfbd53a1836974861692dbc9e9297ba52e0ba54 100644 --- a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio.h @@ -25,6 +25,11 @@ typedef struct { GPIO_PinNum pin; } rt_pin_info_t; +struct pin_irq_map +{ + rt_uint16_t pinbit; + IRQn_Type irqno; +}; #define PIN_NUM(...) get_pin_num(__VA_ARGS__) #define PIN_PORT(pin) get_port_index_by_num(pin) diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.c new file mode 100644 index 0000000000000000000000000000000000000000..133d6a69935235c9b768c622d2360fa351fd28fe --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.c @@ -0,0 +1,285 @@ +/**************************************************************************//** +* +* @copyright (C) 2026 Novosense Technology Corp. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2026-5-19 Jeffery Yuan First version +* +******************************************************************************/ +#include +#include "drv_gpio_int_xint.h" + +#if defined(BSP_USING_GPIO_INT_XINT) + +#define DBG_TAG "drv.gpio_int_xint" +#define DBG_LVL DBG_INFO +#include + + +#if defined(BSP_USING_GPIO_INT_XINT1) +struct rt_gpio_int_xint_device int_xint_device1; +#endif + +#if defined(BSP_USING_GPIO_INT_XINT2) +struct rt_gpio_int_xint_device int_xint_device2; +#endif + +#if defined(BSP_USING_GPIO_INT_XINT3) +struct rt_gpio_int_xint_device int_xint_device3; +#endif + +#if defined(BSP_USING_GPIO_INT_XINT4) +struct rt_gpio_int_xint_device int_xint_device4; +#endif + +#if defined(BSP_USING_GPIO_INT_XINT5) +struct rt_gpio_int_xint_device int_xint_device5; +#endif + + +static const struct rt_gpio_int_xint_config gpio_xint_config[] = +{ + { + "xint1", + }, + { + "xint2", + }, + { + "xint3", + }, + { + "xint4", + }, + { + "xint5", + }, +}; + +struct rt_gpio_int_xint_irq_hdr gpio_int_xint_irq_hdr[5] = +{ + {-1, RT_NULL,RT_NULL}, + {-1, RT_NULL,RT_NULL}, + {-1, RT_NULL,RT_NULL}, + {-1, RT_NULL,RT_NULL}, + {-1, RT_NULL,RT_NULL}, +}; + + + +static struct gpio_int_xint_irq_map gpio_int_xint_irq_map[5] = +{ + {GPIO_INT_XINT1, EXTI_XINT2_1_IRQn}, + {GPIO_INT_XINT2, EXTI_XINT2_1_IRQn}, + {GPIO_INT_XINT3, EXTI_XINT5_3_IRQn}, + {GPIO_INT_XINT4, EXTI_XINT5_3_IRQn}, + {GPIO_INT_XINT5, EXTI_XINT5_3_IRQn}, +}; + + + +void XIN_Handler(void) +{ + rt_interrupt_enter(); + + // ¶ÁÈ¡ËùÓÐ XINT µÄÖжϱêÖ¾£¨¼ÙÉèÓ²¼þÖ§³ÖÒ»´ÎÐÔ¶ÁÈ¡£© + + for (int i = GPIO_INT_XINT1; i <= GPIO_INT_XINT5; i++) + { + volatile uint32_t tempPr = GPIO_getInterruptFlag((GPIO_ExternalIntNum)i); + if (tempPr & (1 << i)) + { + if (gpio_int_xint_irq_hdr[i].callback != RT_NULL) + { + gpio_int_xint_irq_hdr[i].callback(gpio_int_xint_irq_hdr[i].user_data); + } + GPIO_clearInterruptFlag((GPIO_ExternalIntNum)i); + } + } + + __DSB(); + rt_interrupt_leave(); +} + + +static rt_err_t rt_gpio_int_xint_control(rt_device_t dev, int cmd, void *args) +{ + struct rt_gpio_int_xint_device *gpio_int_xint; + + RT_ASSERT(dev != RT_NULL); + + gpio_int_xint = (struct rt_gpio_int_xint_device *)dev; + + switch (cmd) + { + + case GPIO_INT_XINT_CMD_SET_CALLBACK: + { + struct gpio_int_xint_callback *cb; + + if (args == RT_NULL) + { + return -RT_EINVAL; + } + + + cb = (struct gpio_int_xint_callback *)args; + + rt_mutex_take(&gpio_int_xint->lock, RT_WAITING_FOREVER); + gpio_int_xint->callback = cb->callback; + gpio_int_xint->user_data = cb->user_data; + rt_mutex_release(&gpio_int_xint->lock); + } + break; + case GPIO_INT_XINT_CMD_SET_IINT_INFO: + { + if (args == RT_NULL) + { + return -RT_EINVAL; + } + if(gpio_int_xint->opened) + { + return -RT_EINVAL; + } + rt_mutex_take(&gpio_int_xint->lock, RT_WAITING_FOREVER); + gpio_int_xint->config_data = (struct rt_gpio_int_xint_config_data*)args; + + gpio_int_xint_irq_map[gpio_int_xint->config_data->externalIntNum].xint_num = gpio_int_xint->config_data->externalIntNum; + + gpio_int_xint_irq_hdr[gpio_int_xint->config_data->externalIntNum].callback = gpio_int_xint->callback; + gpio_int_xint_irq_hdr[gpio_int_xint->config_data->externalIntNum].user_data = gpio_int_xint->user_data; + gpio_int_xint_irq_hdr[gpio_int_xint->config_data->externalIntNum].xint_num = gpio_int_xint->config_data->externalIntNum; + + + GPIO_setInterruptType(gpio_int_xint->config_data->externalIntNum,gpio_int_xint->config_data->intType); + + GPIO_setInterruptPin(gpio_int_xint->config_data->gpio_port,gpio_int_xint->config_data->gpio_pin, gpio_int_xint->config_data->externalIntNum); + + GPIO_enableInterrupt( gpio_int_xint->config_data->externalIntNum); + /* Interrupt handler function registration. */ + Interrupt_register(gpio_int_xint_irq_map[gpio_int_xint->config_data->externalIntNum].irqno,&XIN_Handler); + + /* Enable the XIN2_1 interrupt signals. Enable global interrupts.*/ + Interrupt_enable(gpio_int_xint_irq_map[gpio_int_xint->config_data->externalIntNum].irqno); + + gpio_int_xint->opened = RT_TRUE; + rt_mutex_release(&gpio_int_xint->lock); + } + break; + + + default: + break; + } + return RT_EOK; +} + +static rt_err_t rt_hw_gpio_int_xint_register(struct rt_gpio_int_xint_device *gpio_int_xint, const struct rt_gpio_int_xint_config *config) +{ + struct rt_device *dev; + + RT_ASSERT(gpio_int_xint != RT_NULL); + RT_ASSERT(config != RT_NULL); + + gpio_int_xint->config = config; + + + dev = &gpio_int_xint->parent; + + dev->type = RT_Device_Class_Miscellaneous; + dev->rx_indicate = RT_NULL; + dev->tx_complete = RT_NULL; + + + dev->init = RT_NULL; + dev->open = RT_NULL; + dev->close = RT_NULL; + dev->read = RT_NULL; + dev->write = RT_NULL; + dev->control = rt_gpio_int_xint_control; + + return rt_device_register(dev, config->name, RT_DEVICE_FLAG_WRONLY | RT_DEVICE_OFLAG_OPEN); +} + + +int rt_hw_gpio_int_xint_init (void) +{ + rt_err_t ret; +#if defined(BSP_USING_GPIO_INT_XINT1) + int_xint_device1.opened = RT_FALSE; + rt_mutex_init(&int_xint_device1.lock,gpio_xint_config[0].name, RT_IPC_FLAG_PRIO); + rt_sem_init(&int_xint_device1.rx_sem, gpio_xint_config[0].name, 0, RT_IPC_FLAG_FIFO); + ret = rt_hw_gpio_int_xint_register(&int_xint_device1, &gpio_xint_config[0]); + + if (ret != RT_EOK) + { + LOG_E("register %s failed, ret = %d", gpio_xint_config[0].name ,ret); + return ret; + } +#endif + +#if defined(BSP_USING_GPIO_INT_XINT2) + int_xint_device2.opened = RT_FALSE; + rt_mutex_init(&int_xint_device2.lock,gpio_xint_config[1].name, RT_IPC_FLAG_PRIO); + rt_sem_init(&int_xint_device2.rx_sem, gpio_xint_config[1].name, 0, RT_IPC_FLAG_FIFO); + ret = rt_hw_gpio_int_xint_register(&int_xint_device2, &gpio_xint_config[1]); + + if (ret != RT_EOK) + { + LOG_E("register %s failed, ret = %d", gpio_xint_config[1].name ,ret); + return ret; + } +#endif + +#if defined(BSP_USING_GPIO_INT_XINT3) + int_xint_device3.opened = RT_FALSE; + rt_mutex_init(&int_xint_device3.lock,gpio_xint_config[2].name, RT_IPC_FLAG_PRIO); + rt_sem_init(&int_xint_device3.rx_sem, gpio_xint_config[2].name, 0, RT_IPC_FLAG_FIFO); + ret = rt_hw_gpio_int_xint_register(&int_xint_device3, &gpio_xint_config[2]); + + if (ret != RT_EOK) + { + LOG_E("register %s failed, ret = %d", gpio_xint_config[2].name ,ret); + return ret; + } +#endif + +#if defined(BSP_USING_GPIO_INT_XINT4) + int_xint_device4.opened = RT_FALSE; + rt_mutex_init(&int_xint_device4.lock,gpio_xint_config[3].name, RT_IPC_FLAG_PRIO); + rt_sem_init(&int_xint_device4.rx_sem, gpio_xint_config[3].name, 0, RT_IPC_FLAG_FIFO); + ret = rt_hw_gpio_int_xint_register(&int_xint_device4, &gpio_xint_config[3]); + + if (ret != RT_EOK) + { + LOG_E("register %s failed, ret = %d", gpio_xint_config[3].name ,ret); + return ret; + } +#endif + +#if defined(BSP_USING_GPIO_INT_XINT5) + int_xint_device5.opened = RT_FALSE; + rt_mutex_init(&int_xint_device5.lock,gpio_xint_config[4].name, RT_IPC_FLAG_PRIO); + rt_sem_init(&int_xint_device5.rx_sem, gpio_xint_config[4].name, 0, RT_IPC_FLAG_FIFO); + ret = rt_hw_gpio_int_xint_register(&int_xint_device5, &gpio_xint_config[4]); + + if (ret != RT_EOK) + { + LOG_E("register %s failed, ret = %d", gpio_xint_config[4].name ,ret); + return ret; + } +#endif + + + + + LOG_I("gpio_int_xint register done"); + + return RT_EOK; +} +INIT_DEVICE_EXPORT(rt_hw_gpio_int_xint_init); + +#endif /* #if defined(BSP_USING_GPIO_INT_XINT) */ diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.h new file mode 100644 index 0000000000000000000000000000000000000000..992c3c508b4cce6817be2278dd0106f8935d680b --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_gpio_int_xint.h @@ -0,0 +1,95 @@ +/**************************************************************************//** +* +* @copyright (C) 2026 Novosense Technology Corp. All rights reserved. +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2026-5-19 Jeffery Yuan First version +* +******************************************************************************/ + +#ifndef __DRV_XINT_H__ +#define __DRV_XINT_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +#define GPIO_INT_XINT_CMD_SET_IINT_INFO (0x01) +#define GPIO_INT_XINT_CMD_SET_CALLBACK (0x02) + + + +struct rt_gpio_int_xint_config_data +{ + GPIO_ExternalIntNum externalIntNum; + GPIO_TypeDef *gpio_port; + GPIO_PinNum gpio_pin; + GPIO_IntType intType; +}; + + +typedef void (*rt_gpio_int_xint_callback_t)(void *user_data); + +struct gpio_int_xint_callback +{ + rt_gpio_int_xint_callback_t callback; + void *user_data; +}; + + +/* + * Static GPIO_INT_XINT hardware configuration. + */ +struct rt_gpio_int_xint_config +{ + const char *name; +}; + +struct rt_gpio_int_xint_irq_hdr +{ + rt_base_t xint_num; + rt_gpio_int_xint_callback_t callback; + void *user_data; +}; + + + +struct gpio_int_xint_irq_map +{ + rt_base_t xint_num; + IRQn_Type irqno; +}; + + +/* + * GPIO_INT_XINT device object. + */ +struct rt_gpio_int_xint_device +{ + struct rt_device parent; + struct rt_mutex lock; + struct rt_semaphore rx_sem; + rt_bool_t opened; + const struct rt_gpio_int_xint_config *config; + struct rt_gpio_int_xint_config_data *config_data; + rt_gpio_int_xint_callback_t callback; + void *user_data; + +}; +int rt_hw_gpio_int_xint_init(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_USART_H__ */ + diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..481d5c17f058d30e14cbb8330b027c4491ef1bbd --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.c @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2006-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-14 Jeffery Yuan the first version + */ +#include "drv_config.h" +#include "drv_hard_i2c.h" + + +#ifdef RT_USING_I2C + +#define LOG_TAG "drv.i2c" +#include + +#if !defined(BSP_USING_HARD_I2C1) && !defined(BSP_USING_HARD_I2C2) +#error "Please define at least one BSP_USING_I2Cx" +/* This driver can be disabled at menuconfig ? RT-Thread Components ? Device Drivers */ +#endif + +#define I2C_SPEED (100000UL) /* I2C bus speed: 100 kHz */ + +#define IS_I2C_LEGACY(periph) ((periph) == I2C1 || (periph) == I2C2) + + +#if defined(BSP_USING_HARD_I2C1) +struct rt_i2c_bus_device i2c1; /* I2C1 bus device instance */ +#endif /* BSP_USING_I2C1 */ + +#if defined(BSP_USING_HARD_I2C2) +struct rt_i2c_bus_device i2c2; /* I2C2 bus device instance */ +#endif /* BSP_USING_I2C2 */ + + + + +static const struct ns800_i2c_bus ns800_i2c_config[] = { +#ifdef BSP_USING_HARD_I2C1 + { + &i2c1, /* Pointer to I2C1 bus device */ + I2C1, /* I2C1 peripheral base address */ + "hwi2c1", /* Device name */ + GPIOB, /* SCL port: GPIOB */ + GPIO_PIN_11, /* SCL pin: 11 */ + ALT6_FUNCTION, /* SCL alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SCL pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SCL direction: input */ + GPIOB, /* SDA port: GPIOB */ + GPIO_PIN_10, /* SDA pin: 10 */ + ALT6_FUNCTION, /* SDA alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SDA pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SDA direction: input */ + }, +#endif + +#ifdef BSP_USING_HARD_I2C2 + { + &i2c2, /* Pointer to I2C2 bus device */ + I2C2, /* I2C2 peripheral base address */ + "hwi2c2", /* Device name */ + GPIOB, /* SCL port: GPIOB */ + GPIO_PIN_3, /* SCL pin: 3 */ + ALT6_FUNCTION, /* SCL alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SCL pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SCL direction: input */ + GPIOB, /* SDA port: GPIOB */ + GPIO_PIN_2, /* SDA pin: 2 */ + ALT6_FUNCTION, /* SDA alternate function: ALT6 */ + GPIO_PIN_TYPE_OD, /* SDA pad type: pull-up */ + GPIO_DIR_MODE_IN, /* SDA direction: input */ + }, +#endif + }; + +/** + * @brief Initializes the I2C pins and peripheral. + * @param i2c: Pointer to the I2C bus configuration structure + * @retval None + */ +static void ns800_i2c_bus_init(const struct ns800_i2c_bus *i2c) +{ + /* I2C SCL pinmux control */ + GPIO_setPinConfig(i2c->scl_port, i2c->scl_pin, i2c->scl_mux); /* Configure SCL alternate function */ + GPIO_setAnalogMode(i2c->scl_port, i2c->scl_pin, GPIO_ANALOG_DISABLED); /* Disable analog mode for SCL */ + //GPIO_setPadConfig(i2c->scl_port,i2c->scl_pin, GPIO_PIN_TYPE_OD); /* Optional: Open-drain configuration (commented) */ + GPIO_setPadConfig(i2c->scl_port, i2c->scl_pin, i2c->scl_pad); /* Set SCL pad type (e.g., pull-up) */ + GPIO_setQualificationMode(i2c->scl_port, i2c->scl_pin, GPIO_QUAL_ASYNC); /* Set SCL asynchronous qualification */ + //GPIO_setDirectionMode(i2c->scl_port, i2c->scl_pin, i2c->scl_direction); /* Set SCL direction */ + + /* I2C SDA pinmux control */ + GPIO_setPinConfig(i2c->sda_port, i2c->sda_pin, i2c->sda_mux); /* Configure SDA alternate function */ + GPIO_setAnalogMode(i2c->sda_port, i2c->sda_pin, GPIO_ANALOG_DISABLED); /* Disable analog mode for SDA */ + //GPIO_setPadConfig(i2c->sda_port,i2c->sda_pin, GPIO_PIN_TYPE_OD); /* Optional: Open-drain configuration (commented) */ + GPIO_setPadConfig(i2c->sda_port, i2c->sda_pin, i2c->sda_pad); /* Set SDA pad type (e.g., pull-up) */ + GPIO_setQualificationMode(i2c->sda_port, i2c->sda_pin, GPIO_QUAL_ASYNC); /* Set SDA asynchronous qualification */ + //GPIO_setDirectionMode(i2c->sda_port, i2c->sda_pin, i2c->sda_direction); /* Set SDA direction */ + + /* Reset module before configuring it. */ + I2C_resetMaster(i2c->base); /* Reset I2C master module */ + + /* Disable debug mode */ + I2C_disableMasterDebug(i2c->base); /* Disable I2C debug mode to prevent interference */ + + /* Set master water marks. */ + I2C_setMasterWatermarks(i2c->base, I2C_MASTER_WATERMARK_0, I2C_MASTER_WATERMARK_0); /* Set FIFO watermarks to 0 */ + + /* Configure master glitch filters. + And set FILTSDA to 0 disables the filter, so the min value is 1. */ + I2C_setMasterGlitchFilter(i2c->base, I2C_MASTER_FILTER_PCLK1, I2C_MASTER_FILTER_PCLK1); /* Enable glitch filtering */ + + /* Configure baudrate after the SDA/SCL glitch filter setting, + since the baudrate calculation needs them as parameter. */ + I2C_configMasterBaudRate(i2c->base, RCC_getPclk2Frequency(), I2C_SPEED); /* Set I2C clock to 100 kHz */ + + /* Configure bus idle timeouts after baudrate setting. + The value is equal to BUSIDLE cycles of functional clock divided by prescaler. + And set BUSIDLE to 0 disables the filter, so the min value is 1. */ + I2C_setMasterBusIdleTimeout(i2c->base, 1U); /* Set bus idle timeout to 1 cycle */ + + /* Configure pin low timeouts after baudrate setting. + The value is equal to PINLOW cycles of functional clock divided by prescaler. + And set PINLOW to 0 disables the filter, so the min value is 1. */ + I2C_setMasterPinLowTimeout(i2c->base, I2C_MASTER_PINLOW_SCLSDA, 0U); /* Disable pin low timeout */ + + /* Config master data match mode, match code and rxmatchonly. */ + I2C_configMasterDataMatch(i2c->base, I2C_MASTER_MATCHMODE_DISABLED, 0U, 0U, I2C_MASTER_RXMATCHDATAONLY_DISABLE); /* Disable data match feature */ + + /* Enable master module */ + I2C_enableMasterModule(i2c->base); /* Enable I2C master peripheral */ +} + +/** + * @brief Master I2C transfer for NS800 I2C controller. + * + * @param bus The I2C bus device. + * @param msgs Array of I2C messages to transfer. + * @param num Number of messages in the array. + * @return Number of messages successfully transferred, or 0 on error. + */ +static rt_ssize_t ns800_master_xfer(struct rt_i2c_bus_device *bus, + struct rt_i2c_msg msgs[], + rt_uint32_t num) +{ + // Obtain the hardware-specific I2C bus instance from the bus private data. + struct ns800_i2c_bus *ns800_i2c = (struct ns800_i2c_bus *)bus->priv; + I2C_TypeDef *i2c = ns800_i2c->base; // Base address of I2C registers. + I2C_Status status = I2C_STATUS_SUCCESS; // Status of I2C operations. + + // Iterate over each message in the transfer list. + for (rt_uint32_t i = 0; i < num; i++) + { + struct rt_i2c_msg *msg = &msgs[i]; // Current message. + + /* Build the 8-bit device address (7-bit address << 1) with R/W bit + * (the lowest bit will be set by the hardware start condition). */ + uint8_t addr8 = (msg->addr << 1); + I2C_Direction dir; + // Determine transfer direction from message flags. + if (msg->flags & RT_I2C_RD) + { + dir = I2C_DIRECTION_READ; // Master read. + } + else + { + dir = I2C_DIRECTION_WRITE; // Master write. + } + + /* Send START or REPEATED START condition. + * For the first message, send a normal START. + * For subsequent messages, send a RESTART unless the NO_START flag is set. */ + if (i == 0) + { + status = I2C_sendStart(i2c, addr8, dir); + } + else + { + if (!(msg->flags & RT_I2C_NO_START)) + { + status = I2C_sendReStart(i2c, addr8, dir); + } + // If RT_I2C_NO_START is set, skip the start condition and continue data transfer. + } + + // If start/restart failed, log error and abort. + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Start/Restart failed, addr=0x%02X err=%d\n", addr8, status); + goto __exit; + } + + /* Data transfer phase. + * Depending on the direction, either receive data from the slave or send data to it. */ + if (msg->flags & RT_I2C_RD) + { + status = I2C_receiveDataMaster(i2c, msg->buf, msg->len); + } + else + { + status = I2C_sendDataMaster(i2c, msg->buf, msg->len); + } + + // If data transfer failed, log error and abort. + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Data transfer failed, err=%d\n", status); + goto __exit; + } + + /* Send STOP condition: + * Only for the last message and if the NO_STOP flag is not set in that message. + * This ensures the bus is released after the complete transaction. */ + if (!(msg->flags & RT_I2C_NO_STOP) && (i == num - 1)) + { + // Wait for FIFO to become idle before sending STOP to avoid corruption. + status = I2C_sendStop(i2c); + if (status != I2C_STATUS_SUCCESS) + { + LOG_E("[I2C] Send stop failed, err=%d\n", status); + goto __exit; + } + } + } + + // All messages transferred successfully. + return num; + +__exit: + /* Error recovery: try to send STOP to release the bus, + * then reset the I2C master hardware to prevent deadlock. */ + I2C_sendStop(i2c); // Attempt to issue a STOP condition. + I2C_resetMaster(i2c); // Reset the I2C master module. + return 0; // Return 0 to indicate failure. +} + + + +const struct rt_i2c_bus_device_ops ns800_i2c_ops = { + .master_xfer = ns800_master_xfer, /* Master transfer operation */ + .slave_xfer = RT_NULL, /* Slave transfer not supported */ + .i2c_bus_control = RT_NULL, /* Bus control not implemented */ +}; + +/** + * @brief I2C initialization function + * @param None + * @retval RT_EOK indicates successful initialization. + */ +int rt_hw_i2c_init(void) +{ + rt_size_t obj_num = sizeof(ns800_i2c_config) / sizeof(ns800_i2c_config[0]); /* Calculate number of I2C instances */ + + for(int i = 0; i < obj_num; i++) + { + /* Initialize I2C pins and peripheral */ + ns800_i2c_bus_init(&ns800_i2c_config[i]); + + /* Set I2C speed clock = 100kHz */ + if(IS_I2C_LEGACY(ns800_i2c_config[i].base)) /* Check if it's a legacy I2C peripheral */ + { + /* Set bus device operations */ + ns800_i2c_config[i].bus->ops = &ns800_i2c_ops; + /* Set private data pointer to configuration */ + ns800_i2c_config[i].bus->priv = (void *)&ns800_i2c_config[i]; + /* Register I2C bus device with RT-Thread */ + rt_i2c_bus_device_register(ns800_i2c_config[i].bus, ns800_i2c_config[i].device_name); + } + } + + return RT_EOK; /* Return success */ +} + +INIT_BOARD_EXPORT(rt_hw_i2c_init); /* Initialize I2C at board initialization phase */ + +#endif /* RT_USING_I2C */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h new file mode 100644 index 0000000000000000000000000000000000000000..cf11491639af24b8009ddc4edfd0cd2fd80a32fc --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_hard_i2c.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-14 Jeffery Yuan first version + */ + +#ifndef __DRV_HARD_I2C_H__ +#define __DRV_HARD_I2C_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct ns800_i2c_bus +{ + struct rt_i2c_bus_device *bus; + I2C_TypeDef *base; + char *device_name; + GPIO_TypeDef *scl_port; + GPIO_PinNum scl_pin; + GPIO_AltFunc scl_mux; + rt_uint32_t scl_pad; + GPIO_Direction scl_direction; + GPIO_TypeDef *sda_port; + GPIO_PinNum sda_pin; + GPIO_AltFunc sda_mux; + rt_uint32_t sda_pad; + GPIO_Direction sda_direction; +}; + +int rt_hw_hard_i2c_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_HARD_I2C_H__ */ + diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c new file mode 100644 index 0000000000000000000000000000000000000000..9d55f70197e86c209e4c86844a16c2c95d5a55a1 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.c @@ -0,0 +1,279 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery.Yuan Floating-point timeout support + */ + +#include +#include +#include "board.h" +#include "iwdg1.h" +#include "drv_iwdg1.h" + +#ifdef RT_USING_WDT +#ifdef BSP_USING_IWDG1 + +/* IWDG1 clock source frequency (Hz) = 10 MHz */ +#define IWDG1_CLK_FREQ_HZ (10000000U) + +/* PSC encoding to division ratio and tWDCLKD (microseconds) */ +static const uint32_t psc_div_table[] = { + 1, /* 0: DIV1 */ + 2, /* 1: DIV2 */ + 4, /* 2: DIV4 */ + 8, /* 3: DIV8 */ + 16, /* 4: DIV16 */ + 32, /* 5: DIV32 */ + 0, /* 6: Invalid */ + 0, /* 7: Invalid */ + 128, /* 8: DIV128 */ + 256, /* 9: DIV256 */ + 512, /* 10: DIV512*/ + 1024, /* 11: DIV1024*/ + 2048, /* 12: DIV2048*/ + 4096, /* 13: DIV4096*/ + 8192, /* 14: DIV8192*/ + 64 /* 15: DIV64 */ +}; +static const float tWDCLKD_us_table[] = { + 0.1f, 0.2f, 0.4f, 0.8f, 1.6f, 3.2f, + 0.0f, 0.0f, + 12.8f, 25.6f, 51.2f, 102.4f, 204.8f, 409.6f, 819.2f, 6.4f +}; + +/* TOPS encoding to ARR value */ +static const uint32_t tops_arr_table[] = { + 1023, /* 00: 0x3FF */ + 4095, /* 01: 0xFFF */ + 8191, /* 10: 0x1FFF */ + 16383 /* 11: 0x3FFF */ +}; + +/* IWDG1 device object */ +struct iwdg1_device +{ + IWDG1_TypeDef *base; + uint8_t psc_code; /* PSC encoding (0~15) */ + uint8_t tops_code; /* TOPS encoding (0~3) */ + float timeout_ms; /* Actual timeout in milliseconds (floating point) */ + rt_bool_t started; + rt_bool_t interrupt_mode; /* intterrupt flag */ +}; + +static struct iwdg1_device iwdg1_dev; +static rt_watchdog_t watchdog; + +/** + * @brief Calculate the closest hardware configuration for a desired timeout + * @param timeout_ms Desired timeout in milliseconds (float) + * @param psc_code Output PSC encoding + * @param tops_code Output TOPS encoding + * @param actual_ms Output actual timeout in milliseconds (float) + * @return RT_EOK always successful + */ +static rt_err_t iwdg1_calc_config_float(float timeout_ms, uint8_t *psc_code, uint8_t *tops_code, float *actual_ms) +{ + float target_us = timeout_ms * 1000.0f; + float best_diff = 1e9f; + uint8_t best_psc = 0, best_tops = 0; + float best_actual_us = 0; + + for (uint8_t psc = 0; psc < 16; psc++) + { + float tWDCLKD_us = tWDCLKD_us_table[psc]; + if (tWDCLKD_us == 0.0f) continue; + for (uint8_t tops = 0; tops < 4; tops++) + { + uint32_t arr = tops_arr_table[tops]; + float ov_us = (arr + 1) * tWDCLKD_us; + float diff = (ov_us > target_us) ? (ov_us - target_us) : (target_us - ov_us); + if (diff < best_diff) + { + best_diff = diff; + best_psc = psc; + best_tops = tops; + best_actual_us = ov_us; + if (diff == 0) goto found; + } + } + } + +found: + *psc_code = best_psc; + *tops_code = best_tops; + *actual_ms = best_actual_us / 1000.0f; + if (*actual_ms < 0.0001f) *actual_ms = 0.1024f; // ×îС 0.1024ms + rt_kprintf("psc_code=%d, tops_code=%d, actual=%.4f ms\n", best_psc, best_tops, *actual_ms); + return RT_EOK; +} + + +/* IWDG1 Interrupt Handler + NOTE: Due the IWDG1 operates in a low-speed clock domain and the operation + to clear the flag requires a certain number of clock cycles, so wait + for the flag status update to complete before exiting! + */ +void IWDG1_Handler(void) +{ + rt_interrupt_enter(); + rt_kprintf("Enter iwdg1 IRQ!\n"); + IWDG1_clearErrorStatus(iwdg1_dev.base); + IWDG1_clearIntStatus(iwdg1_dev.base); + while(IWDG1_getIntStatus(iwdg1_dev.base) == 1) + { + ; + } + + IWDG1_enableModule(iwdg1_dev.base); + rt_interrupt_leave(); +} + + + + +/* Apply hardware configuration (without enabling) */ +static void iwdg1_apply_config(void) +{ + uint32_t temp; + uint32_t cr = iwdg1_dev.base->CR.WORDVAL; + if (cr != 0x000033FF) { + rt_kprintf("iwdg1: CR already configured (0x%08X), skip write\n", cr); + // Reverse calculate actual timeout from existing CR + uint8_t psc = (cr >> 4) & 0xF; + uint8_t tops = cr & 0x3; + iwdg1_dev.psc_code = psc; + iwdg1_dev.tops_code = tops; + iwdg1_dev.timeout_ms = (tops_arr_table[tops] + 1) * tWDCLKD_us_table[psc] / 1000.0f; + rt_kprintf("iwdg1: using existing config, timeout=%.4f ms\n", iwdg1_dev.timeout_ms); + return; + } + if (iwdg1_dev.interrupt_mode) + { + /* Interrupt handler function registration. */ + Interrupt_register(IWDG1_IRQn, &IWDG1_Handler); + /* Enable the IWDG1 interrupt signals. Enable global interrupts.*/ + Interrupt_enable(IWDG1_IRQn); + temp = iwdg1_dev.tops_code | (IRQ_EN << IWDG_CR_RSTIRQS_S) \ + | (LPRUN << IWDG_CR_SLCSTP_S) \ + | (iwdg1_dev.psc_code << IWDG_CR_CKS_S) \ + | (END_PERCENT0 << IWDG_CR_RPES_S) \ + | (HEAD_PERCENT100 << IWDG_CR_RPSS_S); + } + else + { + temp = iwdg1_dev.tops_code | (RESET_EN << IWDG_CR_RSTIRQS_S) \ + | (LPRUN << IWDG_CR_SLCSTP_S) \ + | (iwdg1_dev.psc_code << IWDG_CR_CKS_S) \ + | (END_PERCENT0 << IWDG_CR_RPES_S) \ + | (HEAD_PERCENT100 << IWDG_CR_RPSS_S); + } + WRITE_REG(iwdg1_dev.base->CR.WORDVAL, temp); + + + IWDG1_clearErrorStatus(iwdg1_dev.base); + IWDG1_clearIntStatus(iwdg1_dev.base); +} + +/* Start watchdog (enable) */ +static void iwdg1_start_hw(void) +{ + IWDG1_enableModule(iwdg1_dev.base); + iwdg1_dev.started = RT_TRUE; + rt_kprintf("iwdg1: started, timeout=%.4f ms\n", iwdg1_dev.timeout_ms); +} + +static rt_err_t iwdg1_init(rt_watchdog_t *wdt) +{ + return RT_EOK; +} + +static rt_err_t iwdg1_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + IWDG1_refreshModule(iwdg1_dev.base); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + // Standard integer millisecond interface (backward compatible) + uint32_t req_ms_int = *(uint32_t *)arg; + float req_ms = (float)req_ms_int; + uint8_t psc, tops; + float actual_ms; + iwdg1_calc_config_float(req_ms, &psc, &tops, &actual_ms); + iwdg1_dev.psc_code = psc; + iwdg1_dev.tops_code = tops; + iwdg1_dev.timeout_ms = actual_ms; + rt_kprintf("iwdg1: set timeout req=%u ms, actual=%.4f ms (PSC=%d, TOPS=%d)\n", + req_ms_int, actual_ms, psc, tops); + if (iwdg1_dev.started) + { + iwdg1_apply_config(); + IWDG1_enableModule(iwdg1_dev.base); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + // Standard integer millisecond interface returns floor of actual timeout + *(uint32_t *)arg = (uint32_t)iwdg1_dev.timeout_ms; + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!iwdg1_dev.started) + { + iwdg1_apply_config(); + iwdg1_start_hw(); + } + else + { + rt_kprintf("iwdg1: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + rt_kprintf("iwdg1: stop not supported\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + +/* Operation function table - constant */ +static const struct rt_watchdog_ops iwdg1_ops = { + .init = iwdg1_init, + .control = iwdg1_control, +}; + +int rt_hw_iwdg1_init(void) +{ + iwdg1_dev.base = IWDG1; + /* Default factory configuration: maximum timeout 13421.7728 ms */ + iwdg1_dev.psc_code = 14; // PSC = 14 (DIV8192), tWDCLKD = 819.2us + iwdg1_dev.tops_code = 3; // TOPS = 3 (ARR=16383) + iwdg1_dev.timeout_ms = (tops_arr_table[3] + 1) * tWDCLKD_us_table[14] / 1000.0f; // 16384*819.2/1000 = 13421.7728 ms + iwdg1_dev.started = RT_FALSE; + iwdg1_dev.interrupt_mode = RT_TRUE; + + watchdog.ops = &iwdg1_ops; + if (rt_hw_watchdog_register(&watchdog, IWDG1_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("iwdg1: register failed\n"); + return -RT_ERROR; + } + rt_kprintf("iwdg1: driver initialized (clock=%d Hz, max timeout=%.4f ms)\n", IWDG1_CLK_FREQ_HZ, iwdg1_dev.timeout_ms); + return RT_EOK; +} + +INIT_BOARD_EXPORT(rt_hw_iwdg1_init); + +#endif /* BSP_USING_IWDG1 */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h new file mode 100644 index 0000000000000000000000000000000000000000..b233159d62308226e4d235174b8627314f126dad --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg1.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-12 Jeffery Yuan first version + */ + +#ifndef DRV_IWDG1_H__ +#define DRV_IWDG1_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define IWDG1_DEVICE_NAME "iwdg1" + +/** + * @brief Initialize IWDG1 hardware and register it as a watchdog device. + * + * @return RT_EOK on success, negative error code otherwise. + */ +int rt_hw_iwdg1_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_IWDG1_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c new file mode 100644 index 0000000000000000000000000000000000000000..9105895e24dc9b9d74c0c1e4fa82e526902d34b7 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.c @@ -0,0 +1,326 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan IWDG2 driver based on chip manual + */ + +#include +#include +#include "board.h" +#include "iwdg2.h" +#include "drv_iwdg2.h" +#ifdef RT_USING_WDT +#ifdef BSP_USING_IWDG2 + +/* IWDG2 ʱÖÓԴƵÂÊ (Hz) = 128 kHz (LIRC) */ +#define IWDG2_CLK_FREQ_HZ (128000U) + +/* PSC ±àÂë¶ÔÓ¦µÄ·ÖƵ±È */ +static const uint32_t psc_div_table[] = { + 128, /* 0: DIV128 */ + 2048, /* 1: DIV2048 */ + 1024, /* 2: DIV1024 */ + 512, /* 3: DIV512 */ + 256, /* 4: DIV256 */ + 64, /* 5: DIV64 */ + 32, /* 6: DIV32 */ + 16, /* 7: DIV16 */ + 8, /* 8: DIV8 */ + 4, /* 9: DIV4 */ + 0, /* 10: ÎÞЧ */ + 0, /* 11: ÎÞЧ */ + 0, /* 12: ÎÞЧ */ + 0, /* 13: ÎÞЧ */ + 0, /* 14: ÎÞЧ */ + 0 /* 15: ÎÞЧ */ +}; + +/* ¸ù¾Ý·ÖƵ±È¼ÆËã tWDCLKD (Ãë) */ +static float get_wdclk_period(uint8_t psc_code) +{ + uint32_t div = psc_div_table[psc_code]; + if (div == 0) return 0.0f; + return (float)div / IWDG2_CLK_FREQ_HZ; +} + +/* IWDG2 É豸¶ÔÏó */ +struct iwdg2_device +{ + IWDG2_TypeDef *base; + uint8_t psc_code; /* PSC ±àÂë (0~15) */ + uint16_t reload; /* ÖØ×°ÔØÖµ (12λ: 0~4095) */ + float timeout_s; /* ʵ¼ÊÒç³öʱ¼ä (Ãë) */ + rt_bool_t started; + rt_bool_t interrupt_mode; /* ÖжÏģʽ±êÖ¾ */ +}; + +static struct iwdg2_device iwdg2_dev; +static rt_watchdog_t watchdog; + +/** + * @brief ¸ù¾ÝÆÚÍû³¬Ê±Ê±¼ä¼ÆËã×î½Ó½üµÄÓ²¼þÅäÖà (PSC ºÍ RELOAD) + * @param timeout_s ÆÚÍû³¬Ê±Ê±¼ä (Ãë) + * @param psc_code Êä³ö PSC ±àÂë + * @param reload Êä³ö RELOAD Öµ + * @param actual_s Êä³öʵ¼Ê³¬Ê±Ê±¼ä (Ãë) + * @return RT_EOK ³É¹¦, -RT_ERROR ÎÞЧ²ÎÊý + */ +static rt_err_t iwdg2_calc_config(float timeout_s, uint8_t *psc_code, uint16_t *reload, float *actual_s) +{ + float best_diff = 1e9f; + uint8_t best_psc = 0; + uint16_t best_reload = 0; + float best_actual = 0; + + if (timeout_s <= 0) return -RT_ERROR; + + for (uint8_t psc = 0; psc < 16; psc++) + { + float tWDCLKD = get_wdclk_period(psc); + if (tWDCLKD == 0.0f) continue; /* ÎÞЧ±àÂë */ + + /* ¼ÆËãËùÐè RELOAD Öµ (ÏòϼÆÊýÆ÷£ºÒç³öʱ¼ä = (RELOAD+1) * tWDCLKD) */ + float reload_f = timeout_s / tWDCLKD - 1.0f; + uint16_t reload_val; + + if (reload_f < 0) + { + reload_val = 0; /* ×îС³¬Ê± */ + } + else if (reload_f > 4095.0f) + { + reload_val = 4095; /* ×î´ó³¬Ê± */ + } + else + { + reload_val = (uint16_t)(reload_f + 0.5f); /* ËÄÉáÎåÈë */ + } + + /* È·±£ÔÚÓÐЧ·¶Î§ */ + if (reload_val > 4095) reload_val = 4095; + + float ov_s = (reload_val + 1) * tWDCLKD; + float diff = (ov_s > timeout_s) ? (ov_s - timeout_s) : (timeout_s - ov_s); + + if (diff < best_diff) + { + best_diff = diff; + best_psc = psc; + best_reload = reload_val; + best_actual = ov_s; + /* Èç¹ûÎó²îСÓÚ1ms£¬Ö±½ÓʹÓà */ + if (diff < 0.001f) break; + } + } + + *psc_code = best_psc; + *reload = best_reload; + *actual_s = best_actual; + return RT_EOK; +} + +/** + * @brief IWDG2 ÖжϷþÎñº¯Êý + * @note º¯ÊýÃûÐèÓëÆô¶¯ÎļþÖеÄÈõ¶¨ÒåÒ»Ö£¬Ö±½Ó¸²¸Ç¼´¿É¡£ + * ²»ÒªÔÚ³õʼ»¯Ê±¶îÍâ×¢²á£¬±ÜÃâÏòÁ¿±í³åÍ»¡£ + */ +void IWDG2_Handler(void) +{ + rt_interrupt_enter(); + if (IWDG2_getIntStatus(iwdg2_dev.base)) + { + rt_kprintf("iwdg2: timeout interrupt occurred!\n"); + IWDG2_clearIntStatus(iwdg2_dev.base); + /* µÈ´ý±êÖ¾Çå³ýÍê³É */ + while (IWDG2_getIntStatus(iwdg2_dev.base)) + { + ; + } + } + rt_interrupt_leave(); +} + +/* Ó¦ÓÃÓ²¼þÅäÖà (²»Ê¹ÄÜ) */ +static void iwdg2_apply_config(void) +{ + /* ÅäÖà IWDG2: ÖжÏģʽ»ò¸´Î»Ä£Ê½ */ + if (iwdg2_dev.interrupt_mode) + { + /* ×¢²á²¢ÆôÓÃÖÐ¶Ï */ + Interrupt_register(IWDG2_IRQn, &IWDG2_Handler); + Interrupt_enable(IWDG2_IRQn); + IWDG2_configModule(iwdg2_dev.base, IRQ_SEL, + (IWDG2_Prescaler)iwdg2_dev.psc_code, + iwdg2_dev.reload); + } + else + { + IWDG2_configModule(iwdg2_dev.base, RESET_SEL, + (IWDG2_Prescaler)iwdg2_dev.psc_code, + iwdg2_dev.reload); + } + + /* µÈ´ýÖØ×°ÔØÖµ¸üÐÂÍê³É */ + while (IWDG2_getRVUStatus(iwdg2_dev.base) != 0) + { + ; + } +} + +/* Æô¶¯¿´ÃŹ· (ʹÄÜ) */ +static void iwdg2_start_hw(void) +{ + if (iwdg2_dev.interrupt_mode) + { + /* Çå³ý¿ÉÄܲÐÁôµÄÖжϱêÖ¾ */ + IWDG2_clearIntStatus(iwdg2_dev.base); + /* ʹÄÜ IWDG2 ÖÐ¶Ï */ + IWDG2_enableInterrupt(iwdg2_dev.base); + } + + /* ʹÄÜ IWDG2 Ä£¿é */ + IWDG2_enableModule(iwdg2_dev.base); + + /* Á¢¼´Î¹¹·£¬È·±£ RELOAD ÖµÕæÕý¼ÓÔØµ½¼ÆÊýÆ÷ */ + IWDG2_refreshModule(iwdg2_dev.base); + + iwdg2_dev.started = RT_TRUE; + + rt_kprintf("iwdg2: started, timeout = %.3f s, mode = %s\n", + (double)iwdg2_dev.timeout_s, + iwdg2_dev.interrupt_mode ? "interrupt" : "reset"); +} + +static rt_err_t iwdg2_init(rt_watchdog_t *wdt) +{ + /* ʹÄÜ LIRC Õñµ´Æ÷²¢µÈ´ýÎȶ¨ */ + RCC_unlockRccRegister(); + RCC_enableLircOscillator(); + RCC_lockRccRegister(); + + rt_kprintf("iwdg2: LIRC clock enabled (%d Hz)\n", IWDG2_CLK_FREQ_HZ); + return RT_EOK; +} + +static rt_err_t iwdg2_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + /* ι¹· */ + IWDG2_refreshModule(iwdg2_dev.base); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + uint32_t req_ms = *(uint32_t *)arg; + float req_s = req_ms / 1000.0f; + uint8_t psc; + uint16_t reload; + float actual_s; + + /* ¼ÆËãÅäÖà */ + if (iwdg2_calc_config(req_s, &psc, &reload, &actual_s) != RT_EOK) + { + rt_kprintf("iwdg2: invalid timeout value %d ms\n", req_ms); + return -RT_ERROR; + } + + /* ¼ì²é³¬Ê±·¶Î§ */ + if (actual_s < 0.00003125f || actual_s > 65.536f) + { + rt_kprintf("iwdg2: timeout out of range (%.6f ~ 65.536 s)\n", 0.00003125); + return -RT_ERROR; + } + + iwdg2_dev.psc_code = psc; + iwdg2_dev.reload = reload; + iwdg2_dev.timeout_s = actual_s; + + rt_kprintf("iwdg2: set timeout req=%d ms, actual=%.3f s (PSC=%d, RELOAD=%d)\n", + req_ms, (double)actual_s, psc, reload); + + if (iwdg2_dev.started) + { + /* Èç¹ûÒѾ­Æô¶¯£¬ÐèÒªÖØÐÂÅäÖò¢ÖØÆô */ + iwdg2_apply_config(); + IWDG2_enableModule(iwdg2_dev.base); + IWDG2_refreshModule(iwdg2_dev.base); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + /* ·µ»Ø³¬Ê±Ê±¼ä£¨ºÁÃ룩 */ + *(uint32_t *)arg = (uint32_t)(iwdg2_dev.timeout_s * 1000.0f); + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!iwdg2_dev.started) + { + iwdg2_apply_config(); + iwdg2_start_hw(); + } + else + { + rt_kprintf("iwdg2: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + /* IWDG2 Ò»µ©Æô¶¯ÎÞ·¨Í£Ö¹£¬ÕâÊÇÓ²¼þÌØÐÔ */ + rt_kprintf("iwdg2: stop not supported (hardware limitation)\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + + +/* ²Ù×÷º¯Êý±í */ +static const struct rt_watchdog_ops iwdg2_ops = { + .init = iwdg2_init, + .control = iwdg2_control, +}; + +int rt_hw_iwdg2_init(void) +{ + iwdg2_dev.base = IWDG2; + + /* ĬÈÏÅäÖãº128·ÖƵ£¬×î´ó³¬Ê±Ô¼4.096Ãë */ + iwdg2_dev.psc_code = 0; /* PSC = 0: DIV128 */ + iwdg2_dev.reload = 4095; /* RELOAD = 0xFFF: ×î´ó¼ÆÊýÖµ */ + iwdg2_dev.timeout_s = 4.096f; /* (4095+1) * 128/128000 = 4.096s */ + iwdg2_dev.started = RT_FALSE; + iwdg2_dev.interrupt_mode = RT_TRUE; /* ĬÈÏÖжÏģʽ£¨°´ÐèÇó¿É¸Ä£© */ + + /* ×¢Ò⣺ + * 1. IWDG2_Handler ÒÑÔÚÆô¶¯ÎļþÖÐÈõ¶¨Ò壬ֱ½ÓдͬÃûº¯Êý¼´¿É£¬ÎÞÐèµ÷Óà Interrupt_register¡£ + * 2. ÖжÏʹÄܲ»ÔÚ³õʼ»¯½×¶Î½øÐУ¬¸ÄΪÆô¶¯¿´ÃŹ·Ê±Ê¹ÄÜ£¬±ÜÃâÌáǰ½øÈëÖжϡ£ */ + + /* ×¢²á¿´ÃŹ·É豸 */ + watchdog.ops = &iwdg2_ops; + if (rt_hw_watchdog_register(&watchdog, IWDG2_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("iwdg2: register failed\n"); + return -RT_ERROR; + } + + rt_kprintf("iwdg2: driver initialized (clock=%d Hz)\n", IWDG2_CLK_FREQ_HZ); + rt_kprintf("iwdg2: timeout range: %.6f ~ 65.536 s\n", 0.00003125); + rt_kprintf("iwdg2: default mode: %s, timeout: 4.096 s\n", + iwdg2_dev.interrupt_mode ? "interrupt" : "reset"); + + return RT_EOK; +} + +INIT_BOARD_EXPORT(rt_hw_iwdg2_init); + +#endif /* BSP_USING_IWDG2 */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h new file mode 100644 index 0000000000000000000000000000000000000000..f69b97270b8b23e43284bf921da506fa439e5392 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_iwdg2.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan first version + */ + +#ifndef DRV_IWDG2_H__ +#define DRV_IWDG2_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define IWDG2_DEVICE_NAME "iwdg2" + +/** + * @brief Initialize IWDG2 peripheral and register watchdog device. + * + * @return RT_EOK on success, otherwise negative error code. + */ +int rt_hw_iwdg2_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_IWDG2_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..cc82a079d8386a243f823eb404bb2fea3e711f93 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-15 Jeffery Yuan the first version + */ + +#include +#include "drv_soft_i2c.h" + +#ifdef BSP_USING_SOFT_I2C + +//#define DRV_DEBUG +#define LOG_TAG "drv.i2c" +#include + +#if !defined(BSP_USING_SOFT_I2C1) && !defined(BSP_USING_SOFT_I2C2) +#error "Please define at least one BSP_USING_I2Cx" +/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ +#endif + +static const struct ns800_soft_i2c_config soft_i2c_config[] = +{ +#ifdef BSP_USING_SOFT_I2C1 + I2C1_BUS_CONFIG, +#endif +#ifdef BSP_USING_SOFT_I2C2 + I2C2_BUS_CONFIG, +#endif +}; + +static struct ns800_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; + +/* + * This function initializes the i2c pin. + * + * @param ns800 i2c dirver class. + */ +static void ns800_i2c_gpio_init(struct ns800_i2c *i2c) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)i2c->ops.data; + + rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); + rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); + + rt_pin_write(cfg->scl, PIN_HIGH); + rt_pin_write(cfg->sda, PIN_HIGH); +} + +static void ns800_i2c_pin_init(void) +{ + rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ns800_i2c); + + for(rt_size_t i = 0; i < obj_num; i++) + { + ns800_i2c_gpio_init(&i2c_obj[i]); + } +} + +/* + * This function sets the sda pin. + * + * @param ns800 config class. + * @param The sda pin state. + */ +static void ns800_set_sda(void *data, rt_int32_t state) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->sda, PIN_HIGH); + } + else + { + rt_pin_write(cfg->sda, PIN_LOW); + } +} + +/* + * This function sets the scl pin. + * + * @param ns800 config class. + * @param The scl pin state. + */ +static void ns800_set_scl(void *data, rt_int32_t state) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->scl, PIN_HIGH); + } + else + { + rt_pin_write(cfg->scl, PIN_LOW); + } +} + +/* + * This function gets the sda pin state. + * + * @param The sda pin state. + */ +static rt_int32_t ns800_get_sda(void *data) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + return rt_pin_read(cfg->sda); +} + +/* + * This function gets the scl pin state. + * + * @param The scl pin state. + */ +static rt_int32_t ns800_get_scl(void *data) +{ + struct ns800_soft_i2c_config* cfg = (struct ns800_soft_i2c_config*)data; + return rt_pin_read(cfg->scl); +} + +/* + * The time delay function. + * + * @param microseconds. + */ +static void ns800_udelay(rt_uint32_t us) +{ + rt_hw_us_delay(us); +} + +static const struct rt_i2c_bit_ops ns800_bit_ops_default = +{ + .data = RT_NULL, + .pin_init = ns800_i2c_pin_init, + .set_sda = ns800_set_sda, + .set_scl = ns800_set_scl, + .get_sda = ns800_get_sda, + .get_scl = ns800_get_scl, + .udelay = ns800_udelay, + .delay_us = 1, + .timeout = 100, + .i2c_pin_init_flag = RT_FALSE +}; + +/* + * if i2c is locked, this function will unlock it + * + * @param ns800 config class + * + * @return RT_EOK indicates successful unlock. + */ +static rt_err_t ns800_i2c_bus_unlock(const struct ns800_soft_i2c_config *cfg) +{ + rt_int32_t i = 0; + + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + while (i++ < 9) + { + rt_pin_write(cfg->scl, PIN_HIGH); + ns800_udelay(100); + rt_pin_write(cfg->scl, PIN_LOW); + ns800_udelay(100); + } + } + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + return -RT_ERROR; + } + + return RT_EOK; +} + +/* I2C initialization function */ +int rt_soft_i2c_init(void) +{ + rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct ns800_i2c); + rt_err_t result; + + for (rt_size_t i = 0; i < obj_num; i++) + { + i2c_obj[i].ops = ns800_bit_ops_default; + i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; + i2c_obj[i].i2c_bus.priv = &i2c_obj[i].ops; + + result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c_bus, soft_i2c_config[i].bus_name); + RT_ASSERT(result == RT_EOK); + ns800_i2c_bus_unlock(&soft_i2c_config[i]); + LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", + soft_i2c_config[i].bus_name, + soft_i2c_config[i].scl, + soft_i2c_config[i].sda); + } + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_soft_i2c_init); + +#endif /* RT_USING_I2C */ diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h new file mode 100644 index 0000000000000000000000000000000000000000..a0c17e27a2e4e42309e26e5f53da81fd87e636e1 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_soft_i2c.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-15 Jeffery Yuan the first version + */ + +#ifndef __DRV_SOFT_I2C__ +#define __DRV_I2C__ + +#include +#include +#include + +/* ns800 config class */ +struct ns800_soft_i2c_config +{ + rt_uint16_t scl; + rt_uint16_t sda; + const char *bus_name; +}; + +/* ns800 i2c dirver class */ +struct ns800_i2c +{ + struct rt_i2c_bit_ops ops; + struct rt_i2c_bus_device i2c_bus; +}; + +#ifdef BSP_USING_SOFT_I2C1 +#define I2C1_BUS_CONFIG \ + { \ + .scl = BSP_SOFT_I2C1_SCL_PIN, \ + .sda = BSP_SOFT_I2C1_SDA_PIN, \ + .bus_name = "soft_i2c1", \ + } +#endif + +#ifdef BSP_USING_SOFT_I2C2 +#define I2C2_BUS_CONFIG \ + { \ + .scl = BSP_SOFT_I2C2_SCL_PIN, \ + .sda = BSP_SOFT_I2C2_SDA_PIN, \ + .bus_name = "soft_i2c2", \ + } +#endif + +int rt_hw_i2c_init(void); + +#endif diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c new file mode 100644 index 0000000000000000000000000000000000000000..2c52f40d254e9e8dbdb3c5841a8e0fed3a00f240 --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.c @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 User WWDG driver based on chip manual + */ + +#include +#include +#include "board.h" +#include "wwdg.h" +#include "drv_wwdg.h" + + +#ifdef RT_USING_WDT +#ifdef BSP_USING_WWDG + +/* WWDG clock frequency (Hz) = HCLK. Here 200MHz as an example; should be obtained from BSP. */ +#ifndef HCLK_FREQ_HZ +#define HCLK_FREQ_HZ (200000000U) +#endif + +/* Prescaler divider table: divider = 2^WDGTB */ +static const uint8_t wdgtb_div_table[] = { + 1, /* 0: 1 */ + 2, /* 1: 2 */ + 4, /* 2: 4 */ + 8, /* 3: 8 */ + 16, /* 4: 16 */ + 32, /* 5: 32 */ + 64, /* 6: 64 */ + 128 /* 7: 128 */ +}; + +/** + * @brief Calculate the tick period for a given prescaler setting. + * @param wdgtb Prescaler code (0~7) + * @return Tick period in seconds (4096 * prescaler / HCLK) + */ +static float get_tick_period(uint8_t wdgtb) +{ + uint32_t div = wdgtb_div_table[wdgtb]; + return (float)(4096U * div) / HCLK_FREQ_HZ; +} + +/* WWDG device structure */ +struct wwdg_device +{ + WWDG_TypeDef *base; /* Base address of WWDG registers */ + uint8_t wdgtb; /* Prescaler code (0~7) */ + uint8_t reload; /* Counter reload value (0x40~0x7F) */ + uint8_t window; /* Window value (0x40~0x7F) */ + float timeout_s; /* Actual timeout in seconds */ + rt_bool_t started; /* True if watchdog is started */ + rt_bool_t interrupt_mode;/* True = interrupt mode, false = reset mode */ +}; + +static struct wwdg_device wwdg_dev; /* Global WWDG device instance */ +static rt_watchdog_t watchdog; /* RT-Thread watchdog device structure */ + +/** + * @brief Calculate the closest hardware configuration (WDGTB and CR.T) for a desired timeout. + * @param timeout_s Desired timeout in seconds + * @param wdgtb Output: prescaler code + * @param reload Output: counter reload value (CR.T) + * @param actual_s Output: actual timeout achieved + * @return RT_EOK on success, -RT_ERROR on invalid parameter + */ +static rt_err_t wwdg_calc_config(float timeout_s, uint8_t *wdgtb, uint8_t *reload, float *actual_s) +{ + float best_diff = 1e9f; + uint8_t best_wdgtb = 0; + uint8_t best_reload = 0x40; /* Minimum valid reload value */ + float best_actual = 0.0f; + + if (timeout_s <= 0.0f) return -RT_ERROR; + + /* Try all possible prescaler values to find the one giving closest timeout */ + for (uint8_t tb = 0; tb < 8; tb++) + { + float tick = get_tick_period(tb); + if (tick == 0.0f) continue; + + /* + * Timeout formula: Tov = (CR.T - 0x3F) * tick + * So required (CR.T - 0x3F) = timeout_s / tick + * Therefore CR.T = timeout_s / tick + 0x3F + */ + float reload_f = timeout_s / tick + 0x3F; + uint8_t reload_val; + + /* Clip to valid range [0x40, 0x7F] */ + if (reload_f < (float)0x40) + { + reload_val = 0x40; /* Minimum timeout */ + } + else if (reload_f > (float)0x7F) + { + reload_val = 0x7F; /* Maximum timeout */ + } + else + { + reload_val = (uint8_t)(reload_f + 0.5f); /* Round to nearest integer */ + if (reload_val < 0x40) reload_val = 0x40; + if (reload_val > 0x7F) reload_val = 0x7F; + } + + float ov_s = (reload_val - 0x3F) * tick; + float diff = (ov_s > timeout_s) ? (ov_s - timeout_s) : (timeout_s - ov_s); + + /* Keep the best match */ + if (diff < best_diff) + { + best_diff = diff; + best_wdgtb = tb; + best_reload = reload_val; + best_actual = ov_s; + /* If error is less than 100us, stop searching early */ + if (diff < 0.0001f) break; + } + } + + *wdgtb = best_wdgtb; + *reload = best_reload; + *actual_s = best_actual; + return RT_EOK; +} + +/* WWDG interrupt handler */ +void wwdg_isr(void) +{ + rt_kprintf("A"); + rt_interrupt_enter(); + WWDG_clearIntStatus(WWDG); /* Clear interrupt flag */ + while(WWDG_getIntStatus(WWDG) == 1) /* Wait until cleared */ + { + ; + } + WWDG_refreshModule(WWDG, wwdg_dev.window); /* Refresh to prevent reset */ + rt_interrupt_leave(); +} + +/* Apply hardware configuration (prescaler, window, mode) without starting the module */ +static void wwdg_apply_config(void) +{ + uint32_t ewi_flag; + + if (wwdg_dev.interrupt_mode) + { + ewi_flag = WWDG_EARLY_WAKEUP_INT; /* Interrupt mode */ + /* Register ISR and enable interrupt */ + Interrupt_register(WWDG_IRQn, &wwdg_isr); + Interrupt_enable(WWDG_IRQn); + } + else + { + ewi_flag = WWDG_DIRECT_RESET; /* Reset mode (no interrupt) */ + } + + /* + * WWDG_configModule(base, early_wakeup_flag, prescaler, window) + * Configure prescaler, window, and mode (interrupt or reset), but does not start. + */ + WWDG_configModule(wwdg_dev.base, ewi_flag, + (WWDG_Prescaler)wwdg_dev.wdgtb, + wwdg_dev.window); +} + +/* Start the watchdog hardware */ +static void wwdg_start_hw(void) +{ + /* Enable the module and load the initial counter value (set WDGA bit) */ + WWDG_enableModule(wwdg_dev.base, wwdg_dev.reload); + wwdg_dev.started = RT_TRUE; + + rt_kprintf("wwdg: started, timeout = %.6f s, mode = %s\n", + (double)wwdg_dev.timeout_s, + wwdg_dev.interrupt_mode ? "interrupt" : "reset"); +} + +/** + * @brief Initialize the watchdog device (called by RT-Thread watchdog framework). + * @param wdt Pointer to watchdog device + * @return RT_EOK on success + */ +static rt_err_t wwdg_init(rt_watchdog_t *wdt) +{ + /* No need to enable extra clock; WWDG uses HCLK directly */ + rt_kprintf("wwdg: HCLK frequency = %d Hz\n", HCLK_FREQ_HZ); + return RT_EOK; +} + +/** + * @brief Control function for the watchdog device. + * @param wdt Pointer to watchdog device + * @param cmd Command to execute + * @param arg Optional argument + * @return RT_EOK on success, error code otherwise + */ +static rt_err_t wwdg_control(rt_watchdog_t *wdt, int cmd, void *arg) +{ + switch (cmd) + { + case RT_DEVICE_CTRL_WDT_KEEPALIVE: + /* Feed the dog: refresh counter within the window */ + WWDG_refreshModule(wwdg_dev.base, wwdg_dev.reload); + break; + + case RT_DEVICE_CTRL_WDT_SET_TIMEOUT: + { + uint32_t req_ms = *(uint32_t *)arg; /* Requested timeout in ms */ + float req_s = req_ms / 1000.0f; + uint8_t wdgtb, reload; + float actual_s; + + if (wwdg_calc_config(req_s, &wdgtb, &reload, &actual_s) != RT_EOK) + { + rt_kprintf("wwdg: invalid timeout value %d ms\n", req_ms); + return -RT_ERROR; + } + + /* Check hardware limits */ + if (actual_s < 0.00002048f || actual_s > 0.16777216f) + { + rt_kprintf("wwdg: timeout out of range (20.48 us ~ 167.772 ms)\n"); + return -RT_ERROR; + } + + /* Store new configuration */ + wwdg_dev.wdgtb = wdgtb; + wwdg_dev.reload = reload; + wwdg_dev.timeout_s = actual_s; + + rt_kprintf("wwdg: set timeout req=%d ms, actual=%.6f s (WDGTB=%d, CR.T=0x%02X)\n", + req_ms, (double)actual_s, wdgtb, reload); + + /* If watchdog is already started, reconfigure and restart */ + if (wwdg_dev.started) + { + wwdg_apply_config(); + WWDG_enableModule(wwdg_dev.base, wwdg_dev.reload); + } + } + break; + + case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: + /* Return current timeout in milliseconds */ + *(uint32_t *)arg = (uint32_t)(wwdg_dev.timeout_s * 1000.0f); + break; + + case RT_DEVICE_CTRL_WDT_START: + if (!wwdg_dev.started) + { + wwdg_apply_config(); /* Apply prescaler, window, mode */ + wwdg_start_hw(); /* Start the watchdog */ + } + else + { + rt_kprintf("wwdg: already started\n"); + } + break; + + case RT_DEVICE_CTRL_WDT_STOP: + /* WWDG cannot be stopped once started (hardware limitation) */ + rt_kprintf("wwdg: stop not supported (hardware limitation)\n"); + return -RT_ENOSYS; + + default: + return -RT_ERROR; + } + return RT_EOK; +} + +/* Watchdog operation function table */ +static const struct rt_watchdog_ops wwdg_ops = { + .init = wwdg_init, + .control = wwdg_control, +}; + +/** + * @brief Initialize the WWDG hardware and register the watchdog device with RT-Thread. + * @return RT_EOK on success, -RT_ERROR on failure + */ +int rt_hw_wwdg_init(void) +{ + wwdg_dev.base = WWDG; /* Assign base address from board definition */ + + /* Default configuration: max prescaler (128), reload 0x7F, window 0x7F -> ~167.772 ms */ + wwdg_dev.wdgtb = 7; + wwdg_dev.reload = 0x7F; + wwdg_dev.window = 0x7F; + wwdg_dev.timeout_s = 0.16777216f; + wwdg_dev.started = RT_FALSE; + wwdg_dev.interrupt_mode = RT_FALSE; /* Default to reset mode (no interrupt) */ + + /* Set operations and register watchdog device */ + watchdog.ops = &wwdg_ops; + if (rt_hw_watchdog_register(&watchdog, WWDG_DEVICE_NAME, RT_DEVICE_FLAG_DEACTIVATE, RT_NULL) != RT_EOK) + { + rt_kprintf("wwdg: register failed\n"); + return -RT_ERROR; + } + + rt_kprintf("wwdg: driver initialized (HCLK=%d Hz)\n", HCLK_FREQ_HZ); + rt_kprintf("wwdg: timeout range: 20.48 us ~ 167.772 ms\n"); + rt_kprintf("wwdg: default mode: reset, timeout: 167.772 ms\n"); + + return RT_EOK; +} + +/* Auto-initialize the driver during board initialization */ +INIT_BOARD_EXPORT(rt_hw_wwdg_init); + +#endif /* BSP_USING_WWDG */ +#endif /* RT_USING_WDT */ \ No newline at end of file diff --git a/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h new file mode 100644 index 0000000000000000000000000000000000000000..10c9f1a0e2e944e69e595749342ca7ec3b3f462d --- /dev/null +++ b/bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_wwdg.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-13 Jeffery Yuan first version + */ + +#ifndef DRV_WWDG_H__ +#define DRV_WWDG_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* WWDG device name used for registration */ +#define WWDG_DEVICE_NAME "wwdg" + +/** + * @brief Initialize the WWDG (Window Watchdog) hardware and register the device. + * + * This function is called during system initialization (via INIT_BOARD_EXPORT). + * It configures the WWDG peripheral with default settings, registers the + * watchdog device with RT-Thread's watchdog framework, and makes it available + * to applications. + * + * @return RT_EOK on success, negative error code otherwise. + */ +int rt_hw_wwdg_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* DRV_WWDG_H__ */ \ No newline at end of file diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config index 5eb647dc85a767b8251faf3822599d7caad9d765..105b8eac18ce7e9c4784e968c82f8fb00a49c02d 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.config @@ -244,13 +244,17 @@ CONFIG_RT_CANSND_MSG_TIMEOUT=100 CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 # CONFIG_RT_CAN_MALLOC_NB_TX_BUFFER is not set # CONFIG_RT_USING_CLOCK_TIME is not set -# CONFIG_RT_USING_I2C is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +CONFIG_RT_USING_I2C_BITOPS=y +# CONFIG_RT_I2C_BITOPS_DEBUG is not set +# CONFIG_RT_USING_SOFT_I2C is not set # CONFIG_RT_USING_PHY is not set # CONFIG_RT_USING_PHY_V2 is not set # CONFIG_RT_USING_ADC is not set -# CONFIG_RT_USING_DAC is not set -# CONFIG_RT_USING_NULL is not set -# CONFIG_RT_USING_ZERO is not set +CONFIG_RT_USING_DAC=y +CONFIG_RT_USING_NULL=y +CONFIG_RT_USING_ZERO=y # CONFIG_RT_USING_RANDOM is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_PULSE_ENCODER is not set @@ -261,13 +265,14 @@ CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set -# CONFIG_RT_USING_WDT is not set +CONFIG_RT_USING_WDT=y # CONFIG_RT_USING_AUDIO is not set # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set # CONFIG_RT_USING_LCD is not set # CONFIG_RT_USING_HWCRYPTO is not set # CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_RPMSG is not set # CONFIG_RT_USING_BLK is not set # CONFIG_RT_USING_REGULATOR is not set # CONFIG_RT_USING_POWER_SUPPLY is not set @@ -318,7 +323,10 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # end of Interprocess Communication (IPC) # end of POSIX (Portable Operating System Interface) layer -# CONFIG_RT_USING_CPLUSPLUS is not set +CONFIG_RT_USING_CPLUSPLUS=y +# CONFIG_RT_USING_CPLUSPLUS11 is not set +# CONFIG_RT_USING_CPP_WRAPPER is not set +# CONFIG_RT_USING_CPP_EXCEPTIONS is not set # end of C/C++ and POSIX layer # @@ -556,7 +564,111 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # u8g2: a monochrome graphic library # # CONFIG_PKG_USING_U8G2_OFFICIAL is not set -# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_U8G2_USE_HW_SPI is not set +CONFIG_U8G2_USE_HW_I2C=y +CONFIG_U8G2_I2C_DEVICE_NAME="soft_i2c2" +CONFIG_U8G2_USE_CPP=y +# CONFIG_U8G2_USING_I2C_YL40 is not set +# CONFIG_U8G2_USING_SW_I2C_SSD1306 is not set +CONFIG_U8G2_USING_HW_I2C_SSD1306=y +# CONFIG_U8G2_USING_SW_SPI_SSD1306 is not set +# CONFIG_U8G2_USING_8080_ST7920 is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_FONT_USAGE is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_FPS is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_ICON_MENU is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_PRINT_UTF8 is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_SELECTION_LIST is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_U8G2_LOGO is not set +# CONFIG_U8G2_USING_FRAME_EXAMPLE_UPDATE_AREA is not set +CONFIG_U8G2_USING_FRAME_EXAMPLE_WEATHER=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CHINESE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CLIP_WINDOW is not set +CONFIG_U8G2_USING_PAGE_EXAMPLE_CLOCK=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_CONTRAST_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DEVANAGARI is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DIRECT_ACCESS is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_DRAW_LOG is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_EXT_UTF8 is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_FLIP_MODE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_FPS is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_ICON_MENU is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_JAPANESE is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_KOREAN is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_POWER_SAVE_TEST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_PRINT_HELLO_WORLD is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SCROLLING_TEXT is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SELECTION_LIST is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_SERIAL is not set +CONFIG_U8G2_USING_PAGE_EXAMPLE_STATE_BUFFER_LOOP=y +# CONFIG_U8G2_USING_PAGE_EXAMPLE_TERMINAL is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_U8G2_LOGO is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_UPDATE_PARTLY is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_WEATHER is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_XBM is not set +# CONFIG_U8G2_USING_PAGE_EXAMPLE_XOR_TEST is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_16x16_FONT is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_FLIP_MODE is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_GRAPHIC_TEST is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_HELLO_WORLD is not set +# CONFIG_U8G2_USING_U8x8_EXAMPLE_MESSAGE_BOX is not set +CONFIG_U8G2_USING_U8x8_EXAMPLE_TERMINAL=y +# CONFIG_U8G2_USING_GAME_EXAMPLE_SPACE_TRASH is not set +# CONFIG_U8G2_USING_GAME_EXAMPLE_TREX is not set +CONFIG_PKG_USING_U8G2=y +CONFIG_PKG_U8G2_PATH="/packages/multimedia/u8g2/u8g2" + +# +# U8G2 Examples +# + +# +# full buffer examples (fast, large RAM consumption) +# +# end of full buffer examples (fast, large RAM consumption) + +# +# page buffer examples (slow, small RAM consumption) +# +# end of page buffer examples (slow, small RAM consumption) + +# +# u8x8 text only examples (fonts with fixed size) +# +# end of u8x8 text only examples (fonts with fixed size) + +# +# game examples +# +# end of game examples +# end of U8G2 Examples + +# CONFIG_PKG_USING_U8G2_V100 is not set +# CONFIG_PKG_USING_U8G2_V110 is not set +# CONFIG_PKG_USING_U8G2_V120 is not set +# CONFIG_PKG_USING_U8G2_V200 is not set +# CONFIG_PKG_USING_U8G2_V210 is not set +# CONFIG_PKG_USING_U8G2_V300 is not set +# CONFIG_PKG_USING_U8G2_C_LATEST_VERSION is not set +# CONFIG_PKG_USING_U8G2_CPP_LATEST_VERSION is not set +CONFIG_PKG_USING_U8G2_LATEST_VERSION=y +CONFIG_PKG_U8G2_VER="latest" + +# +# C version: v1.x.x +# + +# +# C++ version: v2.x.x +# + +# +# C/C++ version: v3.x.x +# +CONFIG_PKG_U8G2_VER_NUM=0x99999 # end of u8g2: a monochrome graphic library # CONFIG_PKG_USING_NES_SIMULATOR is not set @@ -1027,7 +1139,28 @@ CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" # CONFIG_PKG_USING_MULTI_INFRARED is not set # CONFIG_PKG_USING_AGILE_BUTTON is not set # CONFIG_PKG_USING_AGILE_LED is not set -# CONFIG_PKG_USING_AT24CXX is not set +CONFIG_PKG_USING_AT24CXX=y +CONFIG_PKG_AT24CXX_PATH="/packages/peripherals/at24cxx" +CONFIG_PKG_AT24CXX_FINSH=y + +# +# Select the Type of AT24CXX EEPROM +# +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C01 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C02 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C04 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C08 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C16 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C032 is not set +CONFIG_PKG_AT24CXX_EE_TYPE_AT24C64=y +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C128 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C256 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C512 is not set +CONFIG_PKG_AT24CXX_EE_TYPE=6 +# end of Select the Type of AT24CXX EEPROM + +CONFIG_PKG_USING_AT24CXX_LATEST_VERSION=y +CONFIG_PKG_AT24CXX_VER="latest" # CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set # CONFIG_PKG_USING_PCA9685 is not set # CONFIG_PKG_USING_ILI9341 is not set @@ -1442,6 +1575,10 @@ CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" # # On-chip Peripheral Drivers # +CONFIG_BOARD_CLK_CONF=y +CONFIG_SYSCLK_USE_PLL=y +CONFIG_SYSCLK_SOURCE_USE_HXTL=y +CONFIG_PLLCLK_SOURCE_USE_HXTL=y CONFIG_BSP_USING_GPIO=y # CONFIG_BSP_GPIO_PIN_IRQ is not set CONFIG_BSP_USING_UART=y @@ -1450,7 +1587,31 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART2 is not set # CONFIG_BSP_USING_UART3 is not set # CONFIG_BSP_USING_UART4 is not set -CONFIG_BSP_USING_ECAP=y -CONFIG_BSP_USING_CAN=y -CONFIG_BSP_USING_CANFD1=y +# CONFIG_BSP_USING_ECAP is not set +# CONFIG_BSP_USING_CAN is not set +CONFIG_BSP_USING_WDG=y +CONFIG_BSP_USING_IWDG1=y +CONFIG_BSP_USING_IWDG2=y +CONFIG_BSP_USING_WWDG=y +CONFIG_BSP_USING_HARD_I2C=y +CONFIG_BSP_USING_HARD_I2C1=y +# CONFIG_BSP_USING_HARD_I2C2 is not set +CONFIG_BSP_USING_SOFT_I2C=y +# CONFIG_BSP_USING_SOFT_I2C1 is not set +CONFIG_BSP_USING_SOFT_I2C2=y + +# +# Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35 +# +CONFIG_BSP_SOFT_I2C2_SCL_PIN=35 +CONFIG_BSP_SOFT_I2C2_SDA_PIN=34 +CONFIG_BSP_USING_DAC=y +CONFIG_BSP_USING_DAC1=y +CONFIG_BSP_USING_DAC3=y +CONFIG_BSP_USING_GPIO_INT_XINT=y +CONFIG_BSP_USING_GPIO_INT_XINT1=y +CONFIG_BSP_USING_GPIO_INT_XINT2=y +CONFIG_BSP_USING_GPIO_INT_XINT3=y +CONFIG_BSP_USING_GPIO_INT_XINT4=y +CONFIG_BSP_USING_GPIO_INT_XINT5=y # end of On-chip Peripheral Drivers diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs new file mode 100644 index 0000000000000000000000000000000000000000..f30ad8e7df6e10e73249c8886c58a343763b9fa1 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/.configs @@ -0,0 +1,1491 @@ +CONFIG_SOC_SERIES_NS800RT7=y +CONFIG_SOC_NS800RT7P6XX=y +CONFIG_BOARD_NS800RT7P65X=y + +# +# RT-Thread Kernel +# + +# +# klibc options +# + +# +# rt_vsnprintf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set +# end of rt_vsnprintf options + +# +# rt_vsscanf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set +# end of rt_vsscanf options + +# +# rt_memset options +# +# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set +# end of rt_memset options + +# +# rt_memcpy options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set +# end of rt_memcpy options + +# +# rt_memmove options +# +# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set +# end of rt_memmove options + +# +# rt_memcmp options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set +# end of rt_memcmp options + +# +# rt_strstr options +# +# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set +# end of rt_strstr options + +# +# rt_strcasecmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set +# end of rt_strcasecmp options + +# +# rt_strncpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set +# end of rt_strncpy options + +# +# rt_strcpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set +# end of rt_strcpy options + +# +# rt_strncmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set +# end of rt_strncmp options + +# +# rt_strcmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set +# end of rt_strcmp options + +# +# rt_strlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set +# end of rt_strlen options + +# +# rt_strnlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set +# end of rt_strnlen options +# end of klibc options + +CONFIG_RT_NAME_MAX=16 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +# CONFIG_RT_USING_HOOKLIST is not set +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set +# CONFIG_RT_USING_CPU_USAGE_TRACER is not set + +# +# kservice options +# +# CONFIG_RT_USING_TINY_FFS is not set +# end of kservice options + +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_ASSERT=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set +# CONFIG_RT_USING_CI_ACTION is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set +# end of Inter-Thread communication + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y +# end of Memory Management + +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREADSAFE_PRINTF is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_USING_CONSOLE_OUTPUT_CTL=y +CONFIG_RT_VER_NUM=0x50300 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# end of RT-Thread Kernel + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +# CONFIG_FINSH_USING_WORD_OPERATION is not set +# CONFIG_FINSH_USING_FUNC_EXT is not set +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# end of DFS: device virtual file system + +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_DEV_BUS is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_SERIAL_BYPASS is not set +CONFIG_RT_USING_CAN=y +# CONFIG_RT_CAN_USING_HDR is not set +CONFIG_RT_CAN_USING_CANFD=y +CONFIG_RT_CANMSG_BOX_SZ=16 +CONFIG_RT_CANSND_BOX_NUM=1 +CONFIG_RT_CANSND_MSG_TIMEOUT=100 +CONFIG_RT_CAN_NB_TX_FIFO_SIZE=256 +# CONFIG_RT_CAN_MALLOC_NB_TX_BUFFER is not set +# CONFIG_RT_USING_CLOCK_TIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +# CONFIG_RT_USING_I2C_BITOPS is not set +# CONFIG_RT_USING_SOFT_I2C is not set +# CONFIG_RT_USING_PHY is not set +# CONFIG_RT_USING_PHY_V2 is not set +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +CONFIG_RT_USING_WDT=y +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_RPMSG is not set +# CONFIG_RT_USING_BLK is not set +# CONFIG_RT_USING_REGULATOR is not set +# CONFIG_RT_USING_POWER_SUPPLY is not set +# CONFIG_RT_USING_VIRTIO is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_CHERRYUSB is not set +# end of Device Drivers + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 +# end of Timezone and Daylight Saving Time +# end of ISO-ANSI C layer + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# end of Interprocess Communication (IPC) +# end of POSIX (Portable Operating System Interface) layer + +# CONFIG_RT_USING_CPLUSPLUS is not set +# end of C/C++ and POSIX layer + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set +# end of Network + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set +# end of Memory protection + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# end of Utilities + +# +# Using USB legacy version +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set +# end of Using USB legacy version + +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RUST is not set +# end of RT-Thread Components + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set +# end of RT-Thread Utestcases + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set +# CONFIG_PKG_USING_ESP_HOSTED is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set +# end of Marvell WiFi + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# end of Wiced WiFi + +# CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set +# end of CYW43012 WiFi + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set +# end of BL808 WiFi + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 is not set +# end of CYW43439 WiFi +# end of Wi-Fi + +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# end of IoT Cloud + +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set +# CONFIG_PKG_USING_LHC_MODBUS is not set +# CONFIG_PKG_USING_QMODBUS is not set +# CONFIG_PKG_USING_PNET is not set +# CONFIG_PKG_USING_OPENER is not set +# CONFIG_PKG_USING_FREEMQTT is not set +# end of IoT - internet of things + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set +# end of security packages + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set +# CONFIG_PKG_USING_RYAN_JSON is not set +# end of JSON: JavaScript Object Notation, a lightweight data-interchange format + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# end of XML: Extensible Markup Language + +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set +# end of language packages + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set +# end of LVGL: powerful and easy-to-use embedded GUI library + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# end of u8g2: a monochrome graphic library + +# CONFIG_PKG_USING_NES_SIMULATOR is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set +# end of multimedia packages + +# +# tools packages +# +# CONFIG_PKG_USING_VECTOR is not set +# CONFIG_PKG_USING_SORCH is not set +# CONFIG_PKG_USING_DICT is not set +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_MCOREDUMP is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set +# CONFIG_PKG_USING_ZDEBUG is not set +# CONFIG_PKG_USING_RVBACKTRACE is not set +# CONFIG_PKG_USING_HPATCHLITE is not set +# CONFIG_PKG_USING_THREAD_METRIC is not set +# CONFIG_PKG_USING_UORB is not set +# CONFIG_PKG_USING_RT_TUNNEL is not set +# CONFIG_PKG_USING_VIRTUAL_TERMINAL is not set +# end of tools packages + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# end of enhanced kernel services + +# CONFIG_PKG_USING_AUNITY is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set +# end of acceleration: Assembly language or algorithmic acceleration packages + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +CONFIG_PKG_USING_CMSIS_CORE=y +CONFIG_PKG_CMSIS_CORE_PATH="/packages/system/CMSIS/CMSIS-Core" +CONFIG_PKG_USING_CMSIS_CORE_LATEST_VERSION=y +CONFIG_PKG_CMSIS_CORE_VER="latest" +# CONFIG_PKG_USING_CMSIS_NN is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set +# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# end of Micrium: Micrium software products porting for RT-Thread + +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FILEX is not set +# CONFIG_PKG_USING_LEVELX is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_RPMSG_LITE is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_UART_FRAMEWORK is not set +# CONFIG_PKG_USING_SFDB is not set +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_RMP is not set +# CONFIG_PKG_USING_R_RHEALSTONE is not set +# CONFIG_PKG_USING_HEARTBEAT is not set +# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set +# CONFIG_PKG_USING_CHERRYECAT is not set +# CONFIG_PKG_USING_EVENT_LOOP is not set +# CONFIG_PKG_USING_THREAD_MANAGER is not set +# end of system packages + +# +# peripheral libraries and drivers +# + +# +# HAL & SDK Drivers +# + +# +# STM32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_STM32F0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F1_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F2_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F7_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32G4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H7_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H7_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32H7RS_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32H7RS_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32U5_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_STM32WL_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WL_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32WB_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32MP1_M4_CMSIS_DRIVER is not set +# end of STM32 HAL & SDK Drivers + +# +# Infineon HAL Packages +# +# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set +# CONFIG_PKG_USING_INFINEON_CMSIS is not set +# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set +# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set +# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set +# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set +# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set +# CONFIG_PKG_USING_INFINEON_USBDEV is not set +# end of Infineon HAL Packages + +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_ESP_IDF is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# end of Kendryte SDK + +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_RP2350_SDK is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_MM32 is not set + +# +# WCH HAL & SDK Drivers +# +# CONFIG_PKG_USING_CH32V20x_SDK is not set +# CONFIG_PKG_USING_CH32V307_SDK is not set +# end of WCH HAL & SDK Drivers + +# +# AT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_AT32A403A_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A403A_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32A423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F45x_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F402_405_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F403A_407_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F413_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F415_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F421_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F423_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F425_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32F435_437_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_HAL_DRIVER is not set +# CONFIG_PKG_USING_AT32M412_416_CMSIS_DRIVER is not set +# end of AT32 HAL & SDK Drivers + +# +# HC32 DDL Drivers +# +# CONFIG_PKG_USING_HC32F3_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F3_SERIES_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_HC32F4_SERIES_DRIVER is not set +# end of HC32 DDL Drivers + +# +# NXP HAL & SDK Drivers +# +# CONFIG_PKG_USING_NXP_MCX_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_NXP_MCX_SERIES_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC_DRIVER is not set +# CONFIG_PKG_USING_NXP_LPC55S_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6SX_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMX6UL_DRIVER is not set +# CONFIG_PKG_USING_NXP_IMXRT_DRIVER is not set +# end of NXP HAL & SDK Drivers + +# +# NUVOTON Drivers +# +# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set +# end of NUVOTON Drivers + +# +# GD32 Drivers +# +# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32_RISCV_SERIES_DRIVER is not set +# CONFIG_PKG_USING_GD32VW55X_WIFI is not set +# end of GD32 Drivers + +# +# HPMicro SDK +# +# CONFIG_PKG_USING_HPM_SDK is not set +# end of HPMicro SDK + +# +# FT32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_FT32F0_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F0_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_STD_DRIVER is not set +# CONFIG_PKG_USING_FT32F4_CMSIS_DRIVER is not set +# end of FT32 HAL & SDK Drivers + +# +# NOVOSNS Drivers +# +CONFIG_PKG_USING_NOVOSNS_SERIES_DRIVER=y +CONFIG_PKG_NOVOSNS_SERIES_DRIVER_PATH="/packages/peripherals/hal-sdk/novosns/novosns-series" +CONFIG_PKG_USING_NOVOSNS_SERIES_DRIVER_LATEST_VERSION=y +CONFIG_PKG_NOVOSNS_SERIES_DRIVER_VER="latest" +# end of NOVOSNS Drivers +# end of HAL & SDK Drivers + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_MAX31855 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90382 is not set +# CONFIG_PKG_USING_MLX90384 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90394 is not set +# CONFIG_PKG_USING_MLX90396 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_SHT4X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set +# CONFIG_PKG_USING_P3T1755 is not set +# CONFIG_PKG_USING_QMI8658 is not set +# CONFIG_PKG_USING_ICM20948 is not set +# CONFIG_PKG_USING_SCD4X is not set +# end of sensors drivers + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_CST812T is not set +# end of touch drivers + +# CONFIG_PKG_USING_LCD_SPI_DRIVER is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +CONFIG_PKG_USING_AT24CXX=y +CONFIG_PKG_AT24CXX_PATH="/packages/peripherals/at24cxx" +CONFIG_PKG_AT24CXX_FINSH=y + +# +# Select the Type of AT24CXX EEPROM +# +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C01 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C02 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C04 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C08 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C16 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C032 is not set +CONFIG_PKG_AT24CXX_EE_TYPE_AT24C64=y +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C128 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C256 is not set +# CONFIG_PKG_AT24CXX_EE_TYPE_AT24C512 is not set +CONFIG_PKG_AT24CXX_EE_TYPE=6 +# end of Select the Type of AT24CXX EEPROM + +CONFIG_PKG_USING_AT24CXX_LATEST_VERSION=y +CONFIG_PKG_AT24CXX_VER="latest" +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_ST7789 is not set +# CONFIG_PKG_USING_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 is not set +# CONFIG_PKG_USING_RGPOWER is not set +# CONFIG_PKG_USING_BT_MX02 is not set +# CONFIG_PKG_USING_GC9A01 is not set +# CONFIG_PKG_USING_IK485 is not set +# CONFIG_PKG_USING_SERVO is not set +# CONFIG_PKG_USING_SEAN_WS2812B is not set +# CONFIG_PKG_USING_IC74HC165 is not set +# CONFIG_PKG_USING_IST8310 is not set +# CONFIG_PKG_USING_ST7789_SPI is not set +# CONFIG_PKG_USING_CAN_UDS is not set +# CONFIG_PKG_USING_ISOTP_C is not set +# CONFIG_PKG_USING_IKUNLED is not set +# CONFIG_PKG_USING_INS5T8025 is not set +# CONFIG_PKG_USING_IRUART is not set +# CONFIG_PKG_USING_ST7305 is not set +# CONFIG_PKG_USING_TM1668 is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set +# end of peripheral libraries and drivers + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set +# CONFIG_PKG_USING_R_TINYMAIX is not set +# CONFIG_PKG_USING_LLMCHAT is not set +# end of AI packages + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_APID is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set +# end of Signal Processing and Control Algorithm Packages + +# +# miscellaneous packages +# + +# +# project laboratory +# +# end of project laboratory + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set +# end of samples: kernel and components samples + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# end of entertainment: terminal games and other interesting software packages + +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_RALARAM is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LIBCRC is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set +# CONFIG_PKG_USING_DRMP is not set +# end of miscellaneous packages + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_SKETCH_LOADER_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_RTDUINO_SENSORFUSION_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set +# end of Projects and Demos + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set +# end of Sensors + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set +# end of Display + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set +# end of Timing + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set +# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set +# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set +# end of Data Processing + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set +# end of Communication + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# end of Device Control + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# end of Other + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set +# end of Signal IO + +# +# Uncategorized +# +# end of Arduino libraries +# end of RT-Thread online packages + +# +# On-chip Peripheral Drivers +# +CONFIG_BOARD_CLK_CONF=y +CONFIG_SYSCLK_USE_PLL=y +CONFIG_SYSCLK_SOURCE_USE_HXTL=y +CONFIG_PLLCLK_SOURCE_USE_HXTL=y +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_GPIO_PIN_IRQ is not set +CONFIG_BSP_USING_UART=y +CONFIG_BSP_NS800_UART_TX_TIMEOUT=6000 +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_ECAP is not set +# CONFIG_BSP_USING_CAN is not set +CONFIG_BSP_USING_WDG=y +CONFIG_BSP_USING_IWDG1=y +CONFIG_BSP_USING_IWDG2=y +CONFIG_BSP_USING_WWDG=y +CONFIG_BSP_USING_HARD_I2C=y +CONFIG_BSP_USING_HARD_I2C1=y +CONFIG_BSP_USING_HARD_I2C2=y +# end of On-chip Peripheral Drivers diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/EventRecorderStub.scvd b/bsp/novosns/ns800/ns800rt7p65-nssinepad/EventRecorderStub.scvd new file mode 100644 index 0000000000000000000000000000000000000000..2956b29683898915efa436cc948384a2c431dc31 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c index 62ab0863ff13dcb3c6f70b46bed3bf65fa9ce32f..3152bf1679fa8dfdbf44b01ec419a15cf454102d 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.c @@ -1,31 +1,327 @@ +///* +// * Copyright (c) 2006-2026, RT-Thread Development Team +// * +// * SPDX-License-Identifier: Apache-2.0 +// * +// * Change Logs: +// * Date Author Notes +// * 2026-05-06 Jiawei.Deng first version +// */ + +//#include +//#include +//#include + +///* defined the LED1 pin: GPIO_68 = PC4 */ +//#define LED1_PIN PIN_NUM(GPIO_68) +//#define PIN_KEY0 PIN_NUM(GPIO_31) + +///* 中断回调函数 ---------------------------------------------------------------------------- */ +//static void hdr_callback(void *args) +//{ +// char *str = args; +// rt_kprintf("KEY0 pressed. %s\n", str); +//} +////PA12 PF12 PD3 PD10 PF18 PF19 PG30 PG31 +//int main(void) +//{ +// rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); +// /* é…ç½®KEY0引脚为上拉输入 */ +// rt_pin_mode(PIN_KEY0, PIN_MODE_INPUT_PULLUP); +// +// /* ç»‘å®šä¸­æ–­å›žè°ƒå‡½æ•°ï¼Œä¸‹é™æ²¿æ¨¡å¼ï¼Œå›žè°ƒå‡½æ•°å‚数为字符串"--By ZhengNian" */ +// rt_pin_attach_irq(PIN_KEY0, PIN_IRQ_MODE_RISING_FALLING, hdr_callback, (void*)"--By Jeffery"); +// +// /* 使能引脚中断 */ +// rt_pin_irq_enable(PIN_KEY0, PIN_IRQ_ENABLE); +// +// rt_kprintf("IR1=%08X IR2=%08X IRQn=%08X\n",SYSCON->EXTICR1.WORDVAL,SYSCON->EXTICR2.WORDVAL,NVIC->IP); +// while (1) +// { +// /*rt_kprintf("\r\n led1_thread_entry running! \r\n");*/ +// rt_pin_write(LED1_PIN, PIN_HIGH); +// rt_thread_mdelay(1000); +// rt_pin_write(LED1_PIN, PIN_LOW); +// rt_thread_mdelay(1000); +// } +//} + + /* - * Copyright (c) 2006-2026, RT-Thread Development Team + * Copyright (c) 2006-2024, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: - * Date Author Notes - * 2026-05-06 Jiawei.Deng first version + * Date Author Notes + * 2024-01-15 RT-Thread first version */ #include #include -#include +#include +#define DBG_TAG "main" +#define DBG_LVL DBG_LOG +#include -/* defined the LED1 pin: GPIO_68 = PC4 */ -#define LED1_PIN PIN_NUM(GPIO_68) +// A0 ------> DAC_OUT1 +// B1 ------> DAC_OUT3 -int main(void) +#define DAC_DEV_NAME "dac3" /* DAC 设备åç§° */ +#define DAC_DEV_CHANNEL 1 /* DAC é€šé“ */ +#define REFER_VOLTAGE 3.3 /* å‚考电压 3.3V,æ•°æ®ç²¾åº¦ä¹˜ä»¥100ä¿ç•™2ä½å°æ•°*/ +#define CONVERT_BITS (1 << 12) /* 转æ¢ä½æ•°ä¸º12ä½ */ + + +// 设置dac的使用命令 dac_set dac1 1 200 +// ç¬¬ä¸€ä¸ªå‚æ•°ä¸ºå‘½ä»¤ï¼Œç¬¬äºŒä¸ªå‚数为 dac 设备å称,第 3 ä¸ªå‚æ•°ä¸º dac 通é“, +// 第 4 ä¸ªå‚æ•°ä¸º dac 输出数值 +static int dac_set(int argc, char *argv[]) { - rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + if(argc!=4) + { + rt_kprintf("Usage: dac_set \n"); + rt_kprintf("Example: dac_set dac1 1 1000\n"); + return RT_ERROR; + } + rt_dac_device_t dac_dev; + rt_uint32_t value, channel; + float volt; + rt_err_t ret = RT_EOK; + + char dacdevname[RT_NAME_MAX]; + + rt_strncpy(dacdevname, argv[1], RT_NAME_MAX); + channel = atoi(argv[2]); // DAC channel + value = atoi(argv[3]); + + /* 查找设备 */ + dac_dev = (rt_dac_device_t)rt_device_find(dacdevname); + if (dac_dev == RT_NULL) + { + rt_kprintf("dac sample run failed! can't find %s device!\n", dacdevname); + return RT_ERROR; + } + + /* æ‰“å¼€é€šé“ */ + ret = rt_dac_enable(dac_dev, channel); + + /* 设置输出值 */ + rt_dac_write(dac_dev, channel, value); + rt_kprintf("the value is :%d \n", value); + + /* 转æ¢ä¸ºå¯¹åº”电压值 */ + volt = (float)value * (float)REFER_VOLTAGE / (float)CONVERT_BITS; + rt_kprintf("the voltage is :%f \n", volt); + + /* 延时查看效果,关闭通é“åŽæ— è¾“出 */ +// rt_thread_mdelay(500); + + /* å…³é—­é€šé“ */ +// ret = rt_dac_disable(dac_dev, channel); + + return ret; +} + +static int dac1_vol_sample() +{ + rt_dac_device_t dac_dev; + float value, vol; + rt_err_t ret = RT_EOK; + + /* 查找设备 */ + dac_dev = (rt_dac_device_t)rt_device_find(DAC_DEV_NAME); + if (dac_dev == RT_NULL) + { + rt_kprintf("dac sample run failed! can't find %s device!\n", DAC_DEV_NAME); + return RT_ERROR; + } + + /* æ‰“å¼€é€šé“ */ + ret = rt_dac_enable(dac_dev, DAC_DEV_CHANNEL); + + /* 设置输出值 */ + value=4095.0f; + rt_dac_write(dac_dev, DAC_DEV_CHANNEL, (uint16_t)value); + rt_kprintf("the value is :%f \n", value); + + /* 转æ¢ä¸ºå¯¹åº”电压值 */ + vol = value * REFER_VOLTAGE / CONVERT_BITS; + rt_kprintf("the voltage is :%f\n", vol ); + + /* 延时查看效果,关闭通é“åŽæ— è¾“出 */ + // rt_thread_mdelay(500); + + /* å…³é—­é€šé“ */ + // ret = rt_dac_disable(dac_dev, DAC_DEV_CHANNEL); - while (1) + return ret; +} + +int main(void) +{ + int count = 1; + LOG_D("Hello RT-Thread! 2026.5.18"); + LOG_D("System CLock information"); + LOG_D("Current tick = %d", rt_tick_get()); + dac1_vol_sample(); + while (count++) { -/* rt_kprintf("\r\n led1_thread_entry running! \r\n"); */ - rt_pin_write(LED1_PIN, PIN_HIGH); - rt_thread_mdelay(1000); - rt_pin_write(LED1_PIN, PIN_LOW); - rt_thread_mdelay(1000); + // LOG_D("Hello RT-Thread! %d", rt_tick_get()); + rt_thread_mdelay(6000); } + + return RT_EOK; } +/* 导出到 msh 命令列表中 */ +MSH_CMD_EXPORT(dac_set, set dac voltage. Useage: dac_set adc1 1 200); + + + + +///* +// * Copyright (c) 2006-2026, RT-Thread Development Team +// * +// * SPDX-License-Identifier: Apache-2.0 +// * +// * Change Logs: +// * Date Author Notes +// * 2026-05-06 Jiawei.Deng first version +// */ + +//#include +//#include +//#include +//#include "drv_gpio_int_xint.h" + +//#define DBG_TAG "mian." +//#define DBG_LVL DBG_INFO +//#include +///* defined the LED1 pin: GPIO_68 = PC4 */ +//#define LED1_PIN PIN_NUM(GPIO_68)//获å–å¼•è„šç¼–å· + +///* 设备åç§° */ +//#define XINT_DEV_NAME "xint1" +//#define XINT_DEV_NAME1 "xint5" + + +//static rt_device_t xint_dev = RT_NULL; +//static uint32_t trigger_count = 0; +//static rt_device_t xint_dev1 = RT_NULL; +//static uint32_t trigger_count1 = 0; +///* 中断回调函数 */ +//static void xint_callback(void *user_data) +//{ +// uint32_t *count_ptr = (uint32_t *)user_data; +// if (count_ptr != NULL) { +// (*count_ptr)++; +// LOG_I("XINT interrupt triggered! count: %u", *count_ptr); +// } +// else +// { +// rt_kprintf("kkkk\n"); +// } +// /* 注æ„:这里在中断上下文,ä¸è¦æ‰§è¡Œè€—æ—¶æ“作 */ +//} + +///* 中断回调函数 */ +//static void xint_callback1(void *user_data) +//{ +// uint32_t *count_ptr = (uint32_t *)user_data; +// if (count_ptr != NULL) { +// (*count_ptr)++; +// LOG_I("XINT interrupt triggered! count1: %u", *count_ptr); +// } +// else +// { +// rt_kprintf("kkkk\n"); +// } +// /* 注æ„:这里在中断上下文,ä¸è¦æ‰§è¡Œè€—æ—¶æ“作 */ +//} + +//int main(void) +//{ +// rt_err_t ret; +// struct rt_gpio_int_xint_config_data config = {GPIO_INT_XINT1,GPIO_224,GPIO_INT_TYPE_FALLING_EDGE}; +// struct gpio_int_xint_callback cb; +// struct rt_gpio_int_xint_config_data config1 = {GPIO_INT_XINT5,GPIO_41,GPIO_INT_TYPE_FALLING_EDGE}; +// struct gpio_int_xint_callback cb1; +// +// rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); +// rt_pin_mode(PIN_NUM(GPIO_224),PIN_MODE_INPUT); +// rt_pin_mode(PIN_NUM(GPIO_41),PIN_MODE_INPUT); +// rt_kprintf("conf_info:externalIntNum=%d gpio_port=%d config.gpio_pin=%d config.intType=%d\n",config.externalIntNum,config.gpio_port,config.gpio_pin,config.intType); +// +// LOG_I("XINT test thread started"); +// +// /* 1. 打开设备 */ +// xint_dev = rt_device_find(XINT_DEV_NAME); +// if (xint_dev == RT_NULL) +// { +// LOG_E("Cannot find device: %s", XINT_DEV_NAME); +// } +// +// +// if(xint_dev != RT_NULL) +// { +// /* 3. 设置回调函数 */ +// cb.callback = xint_callback; +// cb.user_data = (void *)&trigger_count; +// ret = rt_device_control(xint_dev, GPIO_INT_XINT_CMD_SET_CALLBACK, &cb); +// if (ret != RT_EOK) +// { +// LOG_E("Set callback failed: %d", ret); +// } +// +// /* 4. åˆå§‹åŒ–中断 */ +// ret = rt_device_control(xint_dev, GPIO_INT_XINT_CMD_SET_IINT_INFO, &config); +// if (ret != RT_EOK) +// { +// LOG_E("Set interrupt info failed: %d", ret); +// } +// +// LOG_I("XINT test initialized successfully!"); +// LOG_I("Please trigger interrupt on GPIO pin to test..."); +// } +// +// /* 1. 打开设备 */ +// xint_dev1 = rt_device_find(XINT_DEV_NAME1); +// if (xint_dev1 == RT_NULL) +// { +// LOG_E("Cannot find device: %s", XINT_DEV_NAME1); +// } +// +// +// if(xint_dev1 != RT_NULL) +// { +// /* 3. 设置回调函数 */ +// cb1.callback = xint_callback1; +// cb1.user_data = (void *)&trigger_count1; +// ret = rt_device_control(xint_dev1, GPIO_INT_XINT_CMD_SET_CALLBACK, &cb1); +// if (ret != RT_EOK) +// { +// LOG_E("Set callback failed: %d", ret); +// } +// +// /* 4. åˆå§‹åŒ–中断 */ +// ret = rt_device_control(xint_dev1, GPIO_INT_XINT_CMD_SET_IINT_INFO, &config1); +// if (ret != RT_EOK) +// { +// LOG_E("Set interrupt info failed: %d", ret); +// } +// +// LOG_I("XINT test initialized successfully!"); +// LOG_I("Please trigger interrupt on GPIO pin to test..."); +// } +// while (1) +// { +// /*rt_kprintf("\r\n led1_thread_entry running! \r\n");*/ +// rt_pin_write(LED1_PIN, PIN_HIGH); +// rt_thread_mdelay(1000); +// rt_pin_write(LED1_PIN, PIN_LOW); +// rt_thread_mdelay(1000); +// } +//} + + diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..99565e2c5b5ad4e2e07e42e4a65bb2f874a10fa0 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/applications/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2026, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2026-05-06 Jiawei.Deng first version + */ + +#include +#include +#include + +/* defined the LED1 pin: GPIO_68 = PC4 */ +#define LED1_PIN PIN_NUM(GPIO_68) + + +int main(void) +{ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + char* buffer = new char[1024]; + if(buffer) + { + rt_kprintf("buffer_size=%d\n",sizeof(buffer)); + } + while (1) + { + /*rt_kprintf("\r\n led1_thread_entry running! \r\n");*/ + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(1000); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(1000); + } +} + diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig b/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig index c4bbdf3080b9755f59eda48f07ae7531513c2d76..65f13ff7a36105f7ecf14c65166b0de9bab5291d 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig @@ -1,5 +1,23 @@ menu "On-chip Peripheral Drivers" + menuconfig BOARD_CLK_CONF + bool "Clock Configuration" + default y + if BOARD_CLK_CONF + config SYSCLK_USE_PLL + bool "Use PLL as system clock source" + default y + + config SYSCLK_SOURCE_USE_HXTL + bool "Use High-Speed Crystal Oscillator (HXTL) as system clock source" + default y + depends on SYSCLK_USE_PLL + config PLLCLK_SOURCE_USE_HXTL + bool "Use High-Speed Crystal Oscillator (HXTL) as PLL clock source" + default y + depends on SYSCLK_USE_PLL + endif + menuconfig BSP_USING_GPIO bool "Enable GPIO" select RT_USING_PIN @@ -102,7 +120,121 @@ menu "On-chip Peripheral Drivers" bool "Enable CANFD1" select RT_CAN_USING_CANFD default n + endif + + menuconfig BSP_USING_WDG + bool "Enable WDG" + select RT_USING_WDT + default n + if BSP_USING_WDG + menuconfig BSP_USING_IWDG1 + bool "Enable IWDG1" + default n + + menuconfig BSP_USING_IWDG2 + bool "Enable IWDG1" + default n + + menuconfig BSP_USING_WWDG + bool "Enable WWDG" + default n + endif + + menuconfig BSP_USING_HARD_I2C + bool "Enable Hard I2C" + default n + select RT_USING_I2C + if BSP_USING_HARD_I2C + menuconfig BSP_USING_HARD_I2C1 + bool "Enable Hard I2C1" + default n + menuconfig BSP_USING_HARD_I2C2 + bool "Enable Hard I2C2" + default n endif + + menuconfig BSP_USING_SOFT_I2C + bool "Enable I2C Bus" + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + default n + + if BSP_USING_SOFT_I2C + config BSP_USING_SOFT_I2C1 + bool "Enable I2C1 Bus (software simulation)" + default n + + if BSP_USING_SOFT_I2C1 + comment "Notice: PB10(i2c1_sda) --> 42; PB11 (i2c1_scl)--> 43" + + config BSP_SOFT_I2C1_SCL_PIN + int "i2c1 SCL pin number" + range 0 224 + default 43 + config BSP_SOFT_I2C1_SDA_PIN + int "i2c1 SDA pin number" + range 0 224 + default 42 + endif + + config BSP_USING_SOFT_I2C2 + bool "Enable I2C2 Bus (software simulation)" + default n + + if BSP_USING_SOFT_I2C2 + comment "Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35" + config BSP_SOFT_I2C2_SCL_PIN + int "i2c2 SCL pin number" + range 0 224 + default 35 + config BSP_SOFT_I2C2_SDA_PIN + int "i2c2 SDA pin number" + range 0 224 + default 34 + endif + endif + + menuconfig BSP_USING_DAC + bool "Enable DAC" + default n + select RT_USING_DAC + if BSP_USING_DAC + menuconfig BSP_USING_DAC1 + bool "Enable DAC1" + default n + + menuconfig BSP_USING_DAC3 + bool "Enable DAC3" + default n + endif + + menuconfig BSP_USING_GPIO_INT_XINT + bool "Enable gpio int xint" + default n + if BSP_USING_GPIO_INT_XINT + menuconfig BSP_USING_GPIO_INT_XINT1 + bool "Enable GPIO INT XINT1" + default n + + menuconfig BSP_USING_GPIO_INT_XINT2 + bool "Enable GPIO INT XINT2" + default n + menuconfig BSP_USING_GPIO_INT_XINT3 + bool "Enable GPIO INT XINT3" + default n + + menuconfig BSP_USING_GPIO_INT_XINT4 + bool "Enable GPIO INT XINT4" + default n + + menuconfig BSP_USING_GPIO_INT_XINT5 + bool "Enable GPIO INT XINT5" + default n + + endif + + endmenu diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx new file mode 100644 index 0000000000000000000000000000000000000000..f438721aab96ce051633136914935efec32beca5 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvoptx @@ -0,0 +1,3149 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp; *.cc; *.cxx + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U775238036 -O110 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1.FLM -FS08000000 -FL080000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FF1NS800RT7xxx_FlashBank2.FLM -FS18080000 -FL180000 -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + at24cxx + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + packages\at24cxx-latest\at24cxx.c + at24cxx.c + 0 + 0 + + + + + Board + 0 + 0 + 0 + 0 + + 3 + 3 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + + + CPP + 0 + 0 + 0 + 0 + + 4 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\cplusplus\cxx_crt_init.c + cxx_crt_init.c + 0 + 0 + + + 4 + 5 + 8 + 0 + 0 + 0 + ..\..\..\..\components\libc\cplusplus\cxx_crt.cpp + cxx_crt.cpp + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 5 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 5 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 5 + 8 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\context_rvds.S + context_rvds.S + 0 + 0 + + + 5 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + cpu_cache.c + 0 + 0 + + + 5 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m7\cpuport.c + cpuport.c + 0 + 0 + + + + + Device + 1 + 0 + 0 + 0 + + 6 + 11 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\system_NS800RT7xxx.c + system_NS800RT7xxx.c + 0 + 0 + + + 6 + 12 + 2 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\arm\startup_NS800RT7xxx.s + startup_NS800RT7xxx.s + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 7 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\can\dev_can.c + dev_can.c + 0 + 0 + + + 7 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 7 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c + dev_i2c_bit_ops.c + 0 + 0 + + + 7 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_core.c + dev_i2c_core.c + 0 + 0 + + + 7 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\dev_i2c_dev.c + dev_i2c_dev.c + 0 + 0 + + + 7 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion_comm.c + completion_comm.c + 0 + 0 + + + 7 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion_up.c + completion_up.c + 0 + 0 + + + 7 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\condvar.c + condvar.c + 0 + 0 + + + 7 + 21 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 7 + 22 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 7 + 23 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 7 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 7 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 7 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\dac.c + dac.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\rt_null.c + rt_null.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\rt_zero.c + rt_zero.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\pin\dev_pin.c + dev_pin.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\dev_serial.c + dev_serial.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\watchdog\dev_watchdog.c + dev_watchdog.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 8 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 8 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 8 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 8 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + HAL_Drivers + 1 + 0 + 0 + 0 + + 9 + 37 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_dac.c + drv_dac.c + 0 + 0 + + + 9 + 38 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 9 + 39 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_gpio_int_xint.c + drv_gpio_int_xint.c + 0 + 0 + + + 9 + 40 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_hard_i2c.c + drv_hard_i2c.c + 0 + 0 + + + 9 + 41 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_iwdg1.c + drv_iwdg1.c + 0 + 0 + + + 9 + 42 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_iwdg2.c + drv_iwdg2.c + 0 + 0 + + + 9 + 43 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_soft_i2c.c + drv_soft_i2c.c + 0 + 0 + + + 9 + 44 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_uart.c + drv_uart.c + 0 + 0 + + + 9 + 45 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drivers\drv_wwdg.c + drv_wwdg.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 10 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 10 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 10 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\cpu_up.c + cpu_up.c + 0 + 0 + + + 10 + 50 + 1 + 0 + 0 + 0 + ..\..\..\..\src\defunct.c + defunct.c + 0 + 0 + + + 10 + 51 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 10 + 52 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 10 + 53 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 10 + 54 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 10 + 55 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 10 + 56 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 10 + 57 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 10 + 58 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_comm.c + scheduler_comm.c + 0 + 0 + + + 10 + 59 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 10 + 60 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 10 + 61 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + Libc + 0 + 0 + 0 + 0 + + 11 + 62 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 11 + 63 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 11 + 64 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 11 + 65 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 11 + 66 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 11 + 67 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 11 + 68 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 11 + 69 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + 11 + 70 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kerrno.c + kerrno.c + 0 + 0 + + + 11 + 71 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kstdio.c + kstdio.c + 0 + 0 + + + 11 + 72 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\kstring.c + kstring.c + 0 + 0 + + + 11 + 73 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\rt_vsnprintf_tiny.c + rt_vsnprintf_tiny.c + 0 + 0 + + + 11 + 74 + 1 + 0 + 0 + 0 + ..\..\..\..\src\klibc\rt_vsscanf.c + rt_vsscanf.c + 0 + 0 + + + + + StdDriver + 0 + 0 + 0 + 0 + + 12 + 75 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\adc.c + adc.c + 0 + 0 + + + 12 + 76 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\aeshash.c + aeshash.c + 0 + 0 + + + 12 + 77 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\anass.c + anass.c + 0 + 0 + + + 12 + 78 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\awk.c + awk.c + 0 + 0 + + + 12 + 79 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\bgcrc.c + bgcrc.c + 0 + 0 + + + 12 + 80 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\btim.c + btim.c + 0 + 0 + + + 12 + 81 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\clb.c + clb.c + 0 + 0 + + + 12 + 82 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\cmpss.c + cmpss.c + 0 + 0 + + + 12 + 83 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\crc.c + crc.c + 0 + 0 + + + 12 + 84 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dac.c + Src_dac.c + 0 + 0 + + + 12 + 85 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dcc.c + dcc.c + 0 + 0 + + + 12 + 86 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\debug.c + debug.c + 0 + 0 + + + 12 + 87 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dmamux.c + dmamux.c + 0 + 0 + + + 12 + 88 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\ecap.c + ecap.c + 0 + 0 + + + 12 + 89 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\edma.c + edma.c + 0 + 0 + + + 12 + 90 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_basic.c + emath_basic.c + 0 + 0 + + + 12 + 91 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_filter.c + emath_filter.c + 0 + 0 + + + 12 + 92 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_matrix.c + emath_matrix.c + 0 + 0 + + + 12 + 93 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_transform.c + emath_transform.c + 0 + 0 + + + 12 + 94 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epg.c + epg.c + 0 + 0 + + + 12 + 95 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epwm.c + epwm.c + 0 + 0 + + + 12 + 96 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\eqep.c + eqep.c + 0 + 0 + + + 12 + 97 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\exti.c + exti.c + 0 + 0 + + + 12 + 98 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flash.c + flash.c + 0 + 0 + + + 12 + 99 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flexcan.c + flexcan.c + 0 + 0 + + + 12 + 100 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\fmu.c + fmu.c + 0 + 0 + + + 12 + 101 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\gpio.c + gpio.c + 0 + 0 + + + 12 + 102 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\i2c.c + i2c.c + 0 + 0 + + + 12 + 103 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\interrupt.c + interrupt.c + 0 + 0 + + + 12 + 104 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg1.c + iwdg1.c + 0 + 0 + + + 12 + 105 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg2.c + iwdg2.c + 0 + 0 + + + 12 + 106 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lin.c + lin.c + 0 + 0 + + + 12 + 107 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lptim.c + lptim.c + 0 + 0 + + + 12 + 108 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mcm.c + mcm.c + 0 + 0 + + + 12 + 109 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mu.c + mu.c + 0 + 0 + + + 12 + 110 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pmbus.c + pmbus.c + 0 + 0 + + + 12 + 111 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pwr.c + pwr.c + 0 + 0 + + + 12 + 112 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\qspi.c + qspi.c + 0 + 0 + + + 12 + 113 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\rcc.c + rcc.c + 0 + 0 + + + 12 + 114 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sdfm.c + sdfm.c + 0 + 0 + + + 12 + 115 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sema.c + sema.c + 0 + 0 + + + 12 + 116 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\smpu.c + smpu.c + 0 + 0 + + + 12 + 117 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\spi.c + spi.c + 0 + 0 + + + 12 + 118 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sram.c + sram.c + 0 + 0 + + + 12 + 119 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\stim.c + stim.c + 0 + 0 + + + 12 + 120 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\syscon.c + syscon.c + 0 + 0 + + + 12 + 121 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\tim.c + tim.c + 0 + 0 + + + 12 + 122 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\trng.c + trng.c + 0 + 0 + + + 12 + 123 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\uart.c + uart.c + 0 + 0 + + + 12 + 124 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\upp.c + upp.c + 0 + 0 + + + 12 + 125 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\version.c + version.c + 0 + 0 + + + 12 + 126 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\wwdg.c + wwdg.c + 0 + 0 + + + 12 + 127 + 1 + 0 + 0 + 0 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\xbar.c + xbar.c + 0 + 0 + + + + + U8G2 + 0 + 0 + 0 + 0 + + 13 + 128 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_bitmap.c + u8g2_bitmap.c + 0 + 0 + + + 13 + 129 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_box.c + u8g2_box.c + 0 + 0 + + + 13 + 130 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_buffer.c + u8g2_buffer.c + 0 + 0 + + + 13 + 131 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_circle.c + u8g2_circle.c + 0 + 0 + + + 13 + 132 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_cleardisplay.c + u8g2_cleardisplay.c + 0 + 0 + + + 13 + 133 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_d_memory.c + u8g2_d_memory.c + 0 + 0 + + + 13 + 134 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_d_setup.c + u8g2_d_setup.c + 0 + 0 + + + 13 + 135 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_font.c + u8g2_font.c + 0 + 0 + + + 13 + 136 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_fonts.c + u8g2_fonts.c + 0 + 0 + + + 13 + 137 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_hvline.c + u8g2_hvline.c + 0 + 0 + + + 13 + 138 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_input_value.c + u8g2_input_value.c + 0 + 0 + + + 13 + 139 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_intersection.c + u8g2_intersection.c + 0 + 0 + + + 13 + 140 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_kerning.c + u8g2_kerning.c + 0 + 0 + + + 13 + 141 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_line.c + u8g2_line.c + 0 + 0 + + + 13 + 142 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_ll_hvline.c + u8g2_ll_hvline.c + 0 + 0 + + + 13 + 143 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_message.c + u8g2_message.c + 0 + 0 + + + 13 + 144 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_polygon.c + u8g2_polygon.c + 0 + 0 + + + 13 + 145 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_selection_list.c + u8g2_selection_list.c + 0 + 0 + + + 13 + 146 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8g2_setup.c + u8g2_setup.c + 0 + 0 + + + 13 + 147 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log.c + u8log.c + 0 + 0 + + + 13 + 148 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log_u8g2.c + u8log_u8g2.c + 0 + 0 + + + 13 + 149 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8log_u8x8.c + u8log_u8x8.c + 0 + 0 + + + 13 + 150 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_8x8.c + u8x8_8x8.c + 0 + 0 + + + 13 + 151 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_byte.c + u8x8_byte.c + 0 + 0 + + + 13 + 152 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_cad.c + u8x8_cad.c + 0 + 0 + + + 13 + 153 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_capture.c + u8x8_capture.c + 0 + 0 + + + 13 + 154 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_a2printer.c + u8x8_d_a2printer.c + 0 + 0 + + + 13 + 155 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_hd44102.c + u8x8_d_hd44102.c + 0 + 0 + + + 13 + 156 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_il3820_296x128.c + u8x8_d_il3820_296x128.c + 0 + 0 + + + 13 + 157 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ist3020.c + u8x8_d_ist3020.c + 0 + 0 + + + 13 + 158 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ist7920.c + u8x8_d_ist7920.c + 0 + 0 + + + 13 + 159 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ks0108.c + u8x8_d_ks0108.c + 0 + 0 + + + 13 + 160 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_lc7981.c + u8x8_d_lc7981.c + 0 + 0 + + + 13 + 161 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ld7032_60x32.c + u8x8_d_ld7032_60x32.c + 0 + 0 + + + 13 + 162 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ls013b7dh03.c + u8x8_d_ls013b7dh03.c + 0 + 0 + + + 13 + 163 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_max7219.c + u8x8_d_max7219.c + 0 + 0 + + + 13 + 164 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcd8544_84x48.c + u8x8_d_pcd8544_84x48.c + 0 + 0 + + + 13 + 165 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcf8812.c + u8x8_d_pcf8812.c + 0 + 0 + + + 13 + 166 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_pcf8814_hx1230.c + u8x8_d_pcf8814_hx1230.c + 0 + 0 + + + 13 + 167 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_s1d15721.c + u8x8_d_s1d15721.c + 0 + 0 + + + 13 + 168 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_s1d15e06.c + u8x8_d_s1d15e06.c + 0 + 0 + + + 13 + 169 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sbn1661.c + u8x8_d_sbn1661.c + 0 + 0 + + + 13 + 170 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sed1330.c + u8x8_d_sed1330.c + 0 + 0 + + + 13 + 171 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1106_64x32.c + u8x8_d_sh1106_64x32.c + 0 + 0 + + + 13 + 172 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1106_72x40.c + u8x8_d_sh1106_72x40.c + 0 + 0 + + + 13 + 173 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1107.c + u8x8_d_sh1107.c + 0 + 0 + + + 13 + 174 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1108.c + u8x8_d_sh1108.c + 0 + 0 + + + 13 + 175 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_sh1122.c + u8x8_d_sh1122.c + 0 + 0 + + + 13 + 176 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1305.c + u8x8_d_ssd1305.c + 0 + 0 + + + 13 + 177 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x32.c + u8x8_d_ssd1306_128x32.c + 0 + 0 + + + 13 + 178 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x64_noname.c + u8x8_d_ssd1306_128x64_noname.c + 0 + 0 + + + 13 + 179 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_2040x16.c + u8x8_d_ssd1306_2040x16.c + 0 + 0 + + + 13 + 180 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_48x64.c + u8x8_d_ssd1306_48x64.c + 0 + 0 + + + 13 + 181 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x32.c + u8x8_d_ssd1306_64x32.c + 0 + 0 + + + 13 + 182 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x48.c + u8x8_d_ssd1306_64x48.c + 0 + 0 + + + 13 + 183 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_72x40.c + u8x8_d_ssd1306_72x40.c + 0 + 0 + + + 13 + 184 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1306_96x16.c + u8x8_d_ssd1306_96x16.c + 0 + 0 + + + 13 + 185 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1309.c + u8x8_d_ssd1309.c + 0 + 0 + + + 13 + 186 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1316.c + u8x8_d_ssd1316.c + 0 + 0 + + + 13 + 187 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1317.c + u8x8_d_ssd1317.c + 0 + 0 + + + 13 + 188 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1318.c + u8x8_d_ssd1318.c + 0 + 0 + + + 13 + 189 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1320.c + u8x8_d_ssd1320.c + 0 + 0 + + + 13 + 190 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1322.c + u8x8_d_ssd1322.c + 0 + 0 + + + 13 + 191 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1325.c + u8x8_d_ssd1325.c + 0 + 0 + + + 13 + 192 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1326.c + u8x8_d_ssd1326.c + 0 + 0 + + + 13 + 193 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1327.c + u8x8_d_ssd1327.c + 0 + 0 + + + 13 + 194 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1329.c + u8x8_d_ssd1329.c + 0 + 0 + + + 13 + 195 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1606_172x72.c + u8x8_d_ssd1606_172x72.c + 0 + 0 + + + 13 + 196 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_ssd1607_200x200.c + u8x8_d_ssd1607_200x200.c + 0 + 0 + + + 13 + 197 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7511.c + u8x8_d_st7511.c + 0 + 0 + + + 13 + 198 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st75256.c + u8x8_d_st75256.c + 0 + 0 + + + 13 + 199 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7528.c + u8x8_d_st7528.c + 0 + 0 + + + 13 + 200 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st75320.c + u8x8_d_st75320.c + 0 + 0 + + + 13 + 201 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7565.c + u8x8_d_st7565.c + 0 + 0 + + + 13 + 202 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7567.c + u8x8_d_st7567.c + 0 + 0 + + + 13 + 203 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7571.c + u8x8_d_st7571.c + 0 + 0 + + + 13 + 204 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_erc240160.c + u8x8_d_st7586s_erc240160.c + 0 + 0 + + + 13 + 205 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_s028hn118a.c + u8x8_d_st7586s_s028hn118a.c + 0 + 0 + + + 13 + 206 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7586s_ymc240160.c + u8x8_d_st7586s_ymc240160.c + 0 + 0 + + + 13 + 207 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7588.c + u8x8_d_st7588.c + 0 + 0 + + + 13 + 208 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_st7920.c + u8x8_d_st7920.c + 0 + 0 + + + 13 + 209 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_stdio.c + u8x8_d_stdio.c + 0 + 0 + + + 13 + 210 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_t6963.c + u8x8_d_t6963.c + 0 + 0 + + + 13 + 211 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1601.c + u8x8_d_uc1601.c + 0 + 0 + + + 13 + 212 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1604.c + u8x8_d_uc1604.c + 0 + 0 + + + 13 + 213 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1608.c + u8x8_d_uc1608.c + 0 + 0 + + + 13 + 214 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1610.c + u8x8_d_uc1610.c + 0 + 0 + + + 13 + 215 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1611.c + u8x8_d_uc1611.c + 0 + 0 + + + 13 + 216 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1617.c + u8x8_d_uc1617.c + 0 + 0 + + + 13 + 217 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1638.c + u8x8_d_uc1638.c + 0 + 0 + + + 13 + 218 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1701_dogs102.c + u8x8_d_uc1701_dogs102.c + 0 + 0 + + + 13 + 219 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_d_uc1701_mini12864.c + u8x8_d_uc1701_mini12864.c + 0 + 0 + + + 13 + 220 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_debounce.c + u8x8_debounce.c + 0 + 0 + + + 13 + 221 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_display.c + u8x8_display.c + 0 + 0 + + + 13 + 222 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_fonts.c + u8x8_fonts.c + 0 + 0 + + + 13 + 223 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_gpio.c + u8x8_gpio.c + 0 + 0 + + + 13 + 224 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_input_value.c + u8x8_input_value.c + 0 + 0 + + + 13 + 225 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_message.c + u8x8_message.c + 0 + 0 + + + 13 + 226 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_selection_list.c + u8x8_selection_list.c + 0 + 0 + + + 13 + 227 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_setup.c + u8x8_setup.c + 0 + 0 + + + 13 + 228 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_string.c + u8x8_string.c + 0 + 0 + + + 13 + 229 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_u16toa.c + u8x8_u16toa.c + 0 + 0 + + + 13 + 230 + 1 + 0 + 0 + 0 + packages\u8g2-latest\src\u8x8_u8toa.c + u8x8_u8toa.c + 0 + 0 + + + 13 + 231 + 1 + 0 + 0 + 0 + packages\u8g2-latest\port\u8g2_port.c + u8g2_port.c + 0 + 0 + + + 13 + 232 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\Print.cpp + Print.cpp + 0 + 0 + + + 13 + 233 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\U8g2lib.cpp + U8g2lib.cpp + 0 + 0 + + + 13 + 234 + 8 + 0 + 0 + 0 + packages\u8g2-latest\port\U8x8lib.cpp + U8x8lib.cpp + 0 + 0 + + + 13 + 235 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\ssd1306_12864_hw_i2c_example.cpp + ssd1306_12864_hw_i2c_example.cpp + 0 + 0 + + + 13 + 236 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\full_buffer\Weather.cpp + Weather.cpp + 0 + 0 + + + 13 + 237 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\page_buffer\Clock.cpp + Clock.cpp + 0 + 0 + + + 13 + 238 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\page_buffer\StateBufferLoop.cpp + StateBufferLoop.cpp + 0 + 0 + + + 13 + 239 + 8 + 0 + 0 + 0 + packages\u8g2-latest\examples\u8x8\Terminal_8x8.cpp + Terminal_8x8.cpp + 0 + 0 + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx new file mode 100644 index 0000000000000000000000000000000000000000..3529ddb0d5b7d45ad6cade2c0363ac410fcaf556 --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/project.uvprojx @@ -0,0 +1,3440 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + rt-thread + 0x4 + ARM-ADS + 6240000::V6.24::ARMCLANG + 6240000::V6.24::ARMCLANG + 1 + + + NS800RT7P65D-DHQFBY2 + Novosense + NOVOSENSE.NS800RT7XXX.0.5.3 + https://www.novosns.com/ + IRAM(0x20000000,0x00020000) IRAM2(0x00000000,0x00020000) IROM(0x08000000,0x00080000) IROM2(0x08080000,0x00080000) XRAM(0x20100000,0x00020000) XRAM2(0x20120000,0x00020000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + 0 + + + + + + + + + + + $$Device:NS800RT7P65D-DHQFBY2$CMSIS\SVD\NS800RT7P65x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rt-thread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M7" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 0 + 0 + 0 + 1 + 1 + 8 + 1 + 0 + 0 + 0 + 4 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x20100000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x8080000 + 0x80000 + + + 0 + 0x20100000 + 0x20000 + + + 0 + 0x20120000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 0 + 0x0 + 0x20000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + 3 + 1 + 1 + 0 + 0 + 0 + + -Wno-tautological-constant-out-of-range-compare + DUAL_CORE_ENABLE=0, SYSCLK_SOURCE_USE_HXTL, RT_USING_LIBC, PLLCLK_SOURCE_USE_HXTL, __STDC_LIMIT_MACROS, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND, NS800RT7P65X, SYSCLK_USE_PLL, USE_HAL_DRIVER, RT_USING_ARMLIBC, RTT_U8G2 + + ..\..\..\..\components\drivers\smp_call;..\..\..\..\components\libc\cplusplus;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\posix\io\eventfd;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\components\libc\posix\io\poll;packages\novosns-series-latest\NS800RT7XXX\Device\Inc;packages\CMSIS-Core-latest\Include;..\..\..\..\libcpu\arm\common;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\include;..\..\..\..\components\drivers\include;..\..\..\..\components\finsh;..\..\..\..\libcpu\arm\cortex-m7;..\..\..\..\components\drivers\phy;applications;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\posix\io\epoll;..\libraries\HAL_Drivers;.;packages\at24cxx-latest;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\libc\compilers\common\include;..\..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\libraries\HAL_Drivers\drivers;packages\novosns-series-latest\NS800RT7XXX\StdDriver\Inc;packages\u8g2-latest\port;..\..\..\..\components\libc\posix\ipc;packages\novosns-series-latest\NS800RT7XXX\StdDriver\Inc\ti;packages\u8g2-latest\src;..\..\..\..\components\net\utest;..\libraries\HAL_Drivers\drivers\config;packages\u8g2-latest;..\..\..\..\components\drivers\include;board;..\..\..\..\components\drivers\include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 0 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\board\linker_scripts\link.sct + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + at24cxx + + + at24cxx.c + 1 + packages\at24cxx-latest\at24cxx.c + + + + + Board + + + board.c + 1 + board\board.c + + + + + CPP + + + cxx_crt_init.c + 1 + ..\..\..\..\components\libc\cplusplus\cxx_crt_init.c + + + cxx_crt.cpp + 8 + ..\..\..\..\components\libc\cplusplus\cxx_crt.cpp + + + + + CPU + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m7\context_rvds.S + + + cpu_cache.c + 1 + ..\..\..\..\libcpu\arm\cortex-m7\cpu_cache.c + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m7\cpuport.c + + + + + Device + + + system_NS800RT7xxx.c + 1 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\system_NS800RT7xxx.c + + + startup_NS800RT7xxx.s + 2 + packages\novosns-series-latest\NS800RT7XXX\Device\Src\arm\startup_NS800RT7xxx.s + + + + + DeviceDrivers + + + dev_can.c + 1 + ..\..\..\..\components\drivers\can\dev_can.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + device.c + 1 + ..\..\..\..\components\drivers\core\device.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_bit_ops.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_bit_ops.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_core.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_core.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_i2c_dev.c + 1 + ..\..\..\..\components\drivers\i2c\dev_i2c_dev.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_comm.c + 1 + ..\..\..\..\components\drivers\ipc\completion_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + completion_up.c + 1 + ..\..\..\..\components\drivers\ipc\completion_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + condvar.c + 1 + ..\..\..\..\components\drivers\ipc\condvar.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dac.c + 1 + ..\..\..\..\components\drivers\misc\dac.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + rt_null.c + 1 + ..\..\..\..\components\drivers\misc\rt_null.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + rt_zero.c + 1 + ..\..\..\..\components\drivers\misc\rt_zero.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_pin.c + 1 + ..\..\..\..\components\drivers\pin\dev_pin.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_serial.c + 1 + ..\..\..\..\components\drivers\serial\dev_serial.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + dev_watchdog.c + 1 + ..\..\..\..\components\drivers\watchdog\dev_watchdog.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_IPC_SOURCE__ + + + + + + + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + HAL_Drivers + + + drv_dac.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_dac.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_gpio.c + + + drv_gpio_int_xint.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_gpio_int_xint.c + + + drv_hard_i2c.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_hard_i2c.c + + + drv_iwdg1.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_iwdg1.c + + + drv_iwdg2.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_iwdg2.c + + + drv_soft_i2c.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_soft_i2c.c + + + drv_uart.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_uart.c + + + drv_wwdg.c + 1 + ..\libraries\HAL_Drivers\drivers\drv_wwdg.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + cpu_up.c + 1 + ..\..\..\..\src\cpu_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + defunct.c + 1 + ..\..\..\..\src\defunct.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + object.c + 1 + ..\..\..\..\src\object.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_comm.c + 1 + ..\..\..\..\src\scheduler_comm.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + scheduler_up.c + 1 + ..\..\..\..\src\scheduler_up.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + __RT_KERNEL_SOURCE__ + + + + + + + + + + + Libc + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\..\components\libc\compilers\common\cwchar.c + + + kerrno.c + 1 + ..\..\..\..\src\klibc\kerrno.c + + + kstdio.c + 1 + ..\..\..\..\src\klibc\kstdio.c + + + kstring.c + 1 + ..\..\..\..\src\klibc\kstring.c + + + rt_vsnprintf_tiny.c + 1 + ..\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + rt_vsscanf.c + 1 + ..\..\..\..\src\klibc\rt_vsscanf.c + + + + + StdDriver + + + adc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\adc.c + + + aeshash.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\aeshash.c + + + anass.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\anass.c + + + awk.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\awk.c + + + bgcrc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\bgcrc.c + + + btim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\btim.c + + + clb.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\clb.c + + + cmpss.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\cmpss.c + + + crc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\crc.c + + + Src_dac.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dac.c + + + dcc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dcc.c + + + debug.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\debug.c + + + dmamux.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\dmamux.c + + + ecap.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\ecap.c + + + edma.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\edma.c + + + emath_basic.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_basic.c + + + emath_filter.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_filter.c + + + emath_matrix.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_matrix.c + + + emath_transform.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\emath_transform.c + + + epg.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epg.c + + + epwm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\epwm.c + + + eqep.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\eqep.c + + + exti.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\exti.c + + + flash.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flash.c + + + flexcan.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\flexcan.c + + + fmu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\fmu.c + + + gpio.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\gpio.c + + + i2c.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\i2c.c + + + interrupt.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\interrupt.c + + + iwdg1.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg1.c + + + iwdg2.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\iwdg2.c + + + lin.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lin.c + + + lptim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\lptim.c + + + mcm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mcm.c + + + mu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\mu.c + + + pmbus.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pmbus.c + + + pwr.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\pwr.c + + + qspi.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\qspi.c + + + rcc.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\rcc.c + + + sdfm.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sdfm.c + + + sema.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sema.c + + + smpu.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\smpu.c + + + spi.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\spi.c + + + sram.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\sram.c + + + stim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\stim.c + + + syscon.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\syscon.c + + + tim.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\tim.c + + + trng.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\trng.c + + + uart.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\uart.c + + + upp.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\upp.c + + + version.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\version.c + + + wwdg.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\wwdg.c + + + xbar.c + 1 + packages\novosns-series-latest\NS800RT7XXX\StdDriver\Src\xbar.c + + + + + U8G2 + + + u8g2_bitmap.c + 1 + packages\u8g2-latest\src\u8g2_bitmap.c + + + u8g2_box.c + 1 + packages\u8g2-latest\src\u8g2_box.c + + + u8g2_buffer.c + 1 + packages\u8g2-latest\src\u8g2_buffer.c + + + u8g2_circle.c + 1 + packages\u8g2-latest\src\u8g2_circle.c + + + u8g2_cleardisplay.c + 1 + packages\u8g2-latest\src\u8g2_cleardisplay.c + + + u8g2_d_memory.c + 1 + packages\u8g2-latest\src\u8g2_d_memory.c + + + u8g2_d_setup.c + 1 + packages\u8g2-latest\src\u8g2_d_setup.c + + + u8g2_font.c + 1 + packages\u8g2-latest\src\u8g2_font.c + + + u8g2_fonts.c + 1 + packages\u8g2-latest\src\u8g2_fonts.c + + + u8g2_hvline.c + 1 + packages\u8g2-latest\src\u8g2_hvline.c + + + u8g2_input_value.c + 1 + packages\u8g2-latest\src\u8g2_input_value.c + + + u8g2_intersection.c + 1 + packages\u8g2-latest\src\u8g2_intersection.c + + + u8g2_kerning.c + 1 + packages\u8g2-latest\src\u8g2_kerning.c + + + u8g2_line.c + 1 + packages\u8g2-latest\src\u8g2_line.c + + + u8g2_ll_hvline.c + 1 + packages\u8g2-latest\src\u8g2_ll_hvline.c + + + u8g2_message.c + 1 + packages\u8g2-latest\src\u8g2_message.c + + + u8g2_polygon.c + 1 + packages\u8g2-latest\src\u8g2_polygon.c + + + u8g2_selection_list.c + 1 + packages\u8g2-latest\src\u8g2_selection_list.c + + + u8g2_setup.c + 1 + packages\u8g2-latest\src\u8g2_setup.c + + + u8log.c + 1 + packages\u8g2-latest\src\u8log.c + + + u8log_u8g2.c + 1 + packages\u8g2-latest\src\u8log_u8g2.c + + + u8log_u8x8.c + 1 + packages\u8g2-latest\src\u8log_u8x8.c + + + u8x8_8x8.c + 1 + packages\u8g2-latest\src\u8x8_8x8.c + + + u8x8_byte.c + 1 + packages\u8g2-latest\src\u8x8_byte.c + + + u8x8_cad.c + 1 + packages\u8g2-latest\src\u8x8_cad.c + + + u8x8_capture.c + 1 + packages\u8g2-latest\src\u8x8_capture.c + + + u8x8_d_a2printer.c + 1 + packages\u8g2-latest\src\u8x8_d_a2printer.c + + + u8x8_d_hd44102.c + 1 + packages\u8g2-latest\src\u8x8_d_hd44102.c + + + u8x8_d_il3820_296x128.c + 1 + packages\u8g2-latest\src\u8x8_d_il3820_296x128.c + + + u8x8_d_ist3020.c + 1 + packages\u8g2-latest\src\u8x8_d_ist3020.c + + + u8x8_d_ist7920.c + 1 + packages\u8g2-latest\src\u8x8_d_ist7920.c + + + u8x8_d_ks0108.c + 1 + packages\u8g2-latest\src\u8x8_d_ks0108.c + + + u8x8_d_lc7981.c + 1 + packages\u8g2-latest\src\u8x8_d_lc7981.c + + + u8x8_d_ld7032_60x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ld7032_60x32.c + + + u8x8_d_ls013b7dh03.c + 1 + packages\u8g2-latest\src\u8x8_d_ls013b7dh03.c + + + u8x8_d_max7219.c + 1 + packages\u8g2-latest\src\u8x8_d_max7219.c + + + u8x8_d_pcd8544_84x48.c + 1 + packages\u8g2-latest\src\u8x8_d_pcd8544_84x48.c + + + u8x8_d_pcf8812.c + 1 + packages\u8g2-latest\src\u8x8_d_pcf8812.c + + + u8x8_d_pcf8814_hx1230.c + 1 + packages\u8g2-latest\src\u8x8_d_pcf8814_hx1230.c + + + u8x8_d_s1d15721.c + 1 + packages\u8g2-latest\src\u8x8_d_s1d15721.c + + + u8x8_d_s1d15e06.c + 1 + packages\u8g2-latest\src\u8x8_d_s1d15e06.c + + + u8x8_d_sbn1661.c + 1 + packages\u8g2-latest\src\u8x8_d_sbn1661.c + + + u8x8_d_sed1330.c + 1 + packages\u8g2-latest\src\u8x8_d_sed1330.c + + + u8x8_d_sh1106_64x32.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1106_64x32.c + + + u8x8_d_sh1106_72x40.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1106_72x40.c + + + u8x8_d_sh1107.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1107.c + + + u8x8_d_sh1108.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1108.c + + + u8x8_d_sh1122.c + 1 + packages\u8g2-latest\src\u8x8_d_sh1122.c + + + u8x8_d_ssd1305.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1305.c + + + u8x8_d_ssd1306_128x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x32.c + + + u8x8_d_ssd1306_128x64_noname.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_128x64_noname.c + + + u8x8_d_ssd1306_2040x16.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_2040x16.c + + + u8x8_d_ssd1306_48x64.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_48x64.c + + + u8x8_d_ssd1306_64x32.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x32.c + + + u8x8_d_ssd1306_64x48.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_64x48.c + + + u8x8_d_ssd1306_72x40.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_72x40.c + + + u8x8_d_ssd1306_96x16.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1306_96x16.c + + + u8x8_d_ssd1309.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1309.c + + + u8x8_d_ssd1316.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1316.c + + + u8x8_d_ssd1317.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1317.c + + + u8x8_d_ssd1318.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1318.c + + + u8x8_d_ssd1320.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1320.c + + + u8x8_d_ssd1322.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1322.c + + + u8x8_d_ssd1325.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1325.c + + + u8x8_d_ssd1326.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1326.c + + + u8x8_d_ssd1327.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1327.c + + + u8x8_d_ssd1329.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1329.c + + + u8x8_d_ssd1606_172x72.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1606_172x72.c + + + u8x8_d_ssd1607_200x200.c + 1 + packages\u8g2-latest\src\u8x8_d_ssd1607_200x200.c + + + u8x8_d_st7511.c + 1 + packages\u8g2-latest\src\u8x8_d_st7511.c + + + u8x8_d_st75256.c + 1 + packages\u8g2-latest\src\u8x8_d_st75256.c + + + u8x8_d_st7528.c + 1 + packages\u8g2-latest\src\u8x8_d_st7528.c + + + u8x8_d_st75320.c + 1 + packages\u8g2-latest\src\u8x8_d_st75320.c + + + u8x8_d_st7565.c + 1 + packages\u8g2-latest\src\u8x8_d_st7565.c + + + u8x8_d_st7567.c + 1 + packages\u8g2-latest\src\u8x8_d_st7567.c + + + u8x8_d_st7571.c + 1 + packages\u8g2-latest\src\u8x8_d_st7571.c + + + u8x8_d_st7586s_erc240160.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_erc240160.c + + + u8x8_d_st7586s_s028hn118a.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_s028hn118a.c + + + u8x8_d_st7586s_ymc240160.c + 1 + packages\u8g2-latest\src\u8x8_d_st7586s_ymc240160.c + + + u8x8_d_st7588.c + 1 + packages\u8g2-latest\src\u8x8_d_st7588.c + + + u8x8_d_st7920.c + 1 + packages\u8g2-latest\src\u8x8_d_st7920.c + + + u8x8_d_stdio.c + 1 + packages\u8g2-latest\src\u8x8_d_stdio.c + + + u8x8_d_t6963.c + 1 + packages\u8g2-latest\src\u8x8_d_t6963.c + + + u8x8_d_uc1601.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1601.c + + + u8x8_d_uc1604.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1604.c + + + u8x8_d_uc1608.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1608.c + + + u8x8_d_uc1610.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1610.c + + + u8x8_d_uc1611.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1611.c + + + u8x8_d_uc1617.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1617.c + + + u8x8_d_uc1638.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1638.c + + + u8x8_d_uc1701_dogs102.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1701_dogs102.c + + + u8x8_d_uc1701_mini12864.c + 1 + packages\u8g2-latest\src\u8x8_d_uc1701_mini12864.c + + + u8x8_debounce.c + 1 + packages\u8g2-latest\src\u8x8_debounce.c + + + u8x8_display.c + 1 + packages\u8g2-latest\src\u8x8_display.c + + + u8x8_fonts.c + 1 + packages\u8g2-latest\src\u8x8_fonts.c + + + u8x8_gpio.c + 1 + packages\u8g2-latest\src\u8x8_gpio.c + + + u8x8_input_value.c + 1 + packages\u8g2-latest\src\u8x8_input_value.c + + + u8x8_message.c + 1 + packages\u8g2-latest\src\u8x8_message.c + + + u8x8_selection_list.c + 1 + packages\u8g2-latest\src\u8x8_selection_list.c + + + u8x8_setup.c + 1 + packages\u8g2-latest\src\u8x8_setup.c + + + u8x8_string.c + 1 + packages\u8g2-latest\src\u8x8_string.c + + + u8x8_u16toa.c + 1 + packages\u8g2-latest\src\u8x8_u16toa.c + + + u8x8_u8toa.c + 1 + packages\u8g2-latest\src\u8x8_u8toa.c + + + u8g2_port.c + 1 + packages\u8g2-latest\port\u8g2_port.c + + + Print.cpp + 8 + packages\u8g2-latest\port\Print.cpp + + + U8g2lib.cpp + 8 + packages\u8g2-latest\port\U8g2lib.cpp + + + U8x8lib.cpp + 8 + packages\u8g2-latest\port\U8x8lib.cpp + + + ssd1306_12864_hw_i2c_example.cpp + 8 + packages\u8g2-latest\examples\ssd1306_12864_hw_i2c_example.cpp + + + Weather.cpp + 8 + packages\u8g2-latest\examples\full_buffer\Weather.cpp + + + Clock.cpp + 8 + packages\u8g2-latest\examples\page_buffer\Clock.cpp + + + StateBufferLoop.cpp + 8 + packages\u8g2-latest\examples\page_buffer\StateBufferLoop.cpp + + + Terminal_8x8.cpp + 8 + packages\u8g2-latest\examples\u8x8\Terminal_8x8.cpp + + + + + + + + + + + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h b/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h index 380f2986c76e9d4250b17763411291e6760a8fe8..9b1ea75317b0d6b381124a4934322624c696ce4c 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/rtconfig.h @@ -149,6 +149,12 @@ #define RT_CANSND_BOX_NUM 1 #define RT_CANSND_MSG_TIMEOUT 100 #define RT_CAN_NB_TX_FIFO_SIZE 256 +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_DAC +#define RT_USING_NULL +#define RT_USING_ZERO +#define RT_USING_WDT #define RT_USING_PIN /* end of Device Drivers */ @@ -175,6 +181,7 @@ /* end of Interprocess Communication (IPC) */ /* end of POSIX (Portable Operating System Interface) layer */ +#define RT_USING_CPLUSPLUS /* end of C/C++ and POSIX layer */ /* Network */ @@ -254,6 +261,43 @@ /* u8g2: a monochrome graphic library */ +#define U8G2_USE_HW_I2C +#define U8G2_I2C_DEVICE_NAME "soft_i2c2" +#define U8G2_USE_CPP +#define U8G2_USING_HW_I2C_SSD1306 +#define U8G2_USING_FRAME_EXAMPLE_WEATHER +#define U8G2_USING_PAGE_EXAMPLE_CLOCK +#define U8G2_USING_PAGE_EXAMPLE_STATE_BUFFER_LOOP +#define U8G2_USING_U8x8_EXAMPLE_TERMINAL +#define PKG_USING_U8G2 + +/* U8G2 Examples */ + +/* full buffer examples (fast, large RAM consumption) */ + +/* end of full buffer examples (fast, large RAM consumption) */ + +/* page buffer examples (slow, small RAM consumption) */ + +/* end of page buffer examples (slow, small RAM consumption) */ + +/* u8x8 text only examples (fonts with fixed size) */ + +/* end of u8x8 text only examples (fonts with fixed size) */ + +/* game examples */ + +/* end of game examples */ +/* end of U8G2 Examples */ +#define PKG_USING_U8G2_LATEST_VERSION + +/* C version: v1.x.x */ + +/* C++ version: v2.x.x */ + +/* C/C++ version: v3.x.x */ + +#define PKG_U8G2_VER_NUM 0x99999 /* end of u8g2: a monochrome graphic library */ /* end of multimedia packages */ @@ -344,6 +388,15 @@ /* touch drivers */ /* end of touch drivers */ +#define PKG_USING_AT24CXX +#define PKG_AT24CXX_FINSH + +/* Select the Type of AT24CXX EEPROM */ + +#define PKG_AT24CXX_EE_TYPE_AT24C64 +#define PKG_AT24CXX_EE_TYPE 6 +/* end of Select the Type of AT24CXX EEPROM */ +#define PKG_USING_AT24CXX_LATEST_VERSION /* end of peripheral libraries and drivers */ /* AI packages */ @@ -417,13 +470,36 @@ /* On-chip Peripheral Drivers */ +#define BOARD_CLK_CONF +#define SYSCLK_USE_PLL +#define SYSCLK_SOURCE_USE_HXTL +#define PLLCLK_SOURCE_USE_HXTL #define BSP_USING_GPIO #define BSP_USING_UART #define BSP_NS800_UART_TX_TIMEOUT 6000 #define BSP_USING_UART1 -#define BSP_USING_ECAP -#define BSP_USING_CAN -#define BSP_USING_CANFD1 +#define BSP_USING_WDG +#define BSP_USING_IWDG1 +#define BSP_USING_IWDG2 +#define BSP_USING_WWDG +#define BSP_USING_HARD_I2C +#define BSP_USING_HARD_I2C1 +#define BSP_USING_SOFT_I2C +#define BSP_USING_SOFT_I2C2 + +/* Notice: PB2(i2c2_sda) --> 34; PB3(i2c_scl) --> 35 */ + +#define BSP_SOFT_I2C2_SCL_PIN 35 +#define BSP_SOFT_I2C2_SDA_PIN 34 +#define BSP_USING_DAC +#define BSP_USING_DAC1 +#define BSP_USING_DAC3 +#define BSP_USING_GPIO_INT_XINT +#define BSP_USING_GPIO_INT_XINT1 +#define BSP_USING_GPIO_INT_XINT2 +#define BSP_USING_GPIO_INT_XINT3 +#define BSP_USING_GPIO_INT_XINT4 +#define BSP_USING_GPIO_INT_XINT5 /* end of On-chip Peripheral Drivers */ #endif diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx new file mode 100644 index 0000000000000000000000000000000000000000..c822556e688ec2f5167d4707e29f585f56f790bc --- /dev/null +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvoptx @@ -0,0 +1,177 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp; *.cc; *.cxx + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U775238036 -O110 -S8 -ZTIFSpeedSel50000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(6BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1.FLM -FS08000000 -FL080000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FF1NS800RT7xxx_FlashBank2.FLM -FS18080000 -FL180000 -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20120000 -FC2000 -FN2 -FF0NS800RT7xxx_FlashBank1 -FS08000000 -FL080000 -FF1NS800RT7xxx_FlashBank2 -FS18080000 -FL180000 -FP0($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank1.FLM) -FP1($$Device:NS800RT7P65D-DHQFBY2$CMSIS\Flash\NS800RT7xxx_FlashBank2.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + +
diff --git a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx index 9a1baf2a14bcf6c007e6965df5fbafad3e19f59d..5e3cc5da3a38aa9f72eda068981de0e59b011b5c 100644 --- a/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx +++ b/bsp/novosns/ns800/ns800rt7p65-nssinepad/template.uvprojx @@ -10,13 +10,14 @@ rt-thread 0x4 ARM-ADS + 6240000::V6.24::ARMCLANG 6220000::V6.22::ARMCLANG 1 NS800RT7P65D-DHQFBY2 Novosense - NOVOSENSE.NS800RT7XXX.0.4.0 + NOVOSENSE.NS800RT7XXX.0.5.3 https://www.novosns.com/ IRAM(0x20000000,0x00020000) IRAM2(0x00000000,0x00020000) IROM(0x08000000,0x00080000) IROM2(0x08080000,0x00080000) XRAM(0x20100000,0x00020000) XRAM2(0x20120000,0x00020000) CPUTYPE("Cortex-M7") FPU3(DFPU) CLOCK(12000000) ELITTLE @@ -52,7 +53,7 @@ rt-thread 1 0 - 0 + 1 1 1 .\build\ @@ -323,7 +324,7 @@ 1 0 0 - 3 + 1 0 0 1 diff --git a/bsp/novosns/ns800/tools/sdk_dist.py b/bsp/novosns/ns800/tools/sdk_dist.py index 0b75bf8cee88db5e27d6a2a2b3bf79b8cf4fce83..7ef49f3a2ba97ecce62a46c008adde4d0beb3109 100644 --- a/bsp/novosns/ns800/tools/sdk_dist.py +++ b/bsp/novosns/ns800/tools/sdk_dist.py @@ -11,7 +11,7 @@ def dist_do_building(BSP_ROOT, dist_dir): from mkdist import bsp_copy_files import rtconfig - print("=> copy novosns bsp library") + print("=> copy stm32 bsp library") library_dir = os.path.join(dist_dir, 'libraries') library_path = os.path.join(os.path.dirname(BSP_ROOT), 'libraries') if rtconfig.BSP_LIBRARY_TYPE is not None: @@ -20,3 +20,4 @@ def dist_do_building(BSP_ROOT, dist_dir): print("=> copy bsp drivers") bsp_copy_files(os.path.join(library_path, 'HAL_Drivers'), os.path.join(library_dir, 'HAL_Drivers')) + shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig')) diff --git a/src/kservice.c b/src/kservice.c index db321552616f7d97e927e8398c4681298c80871e..08d911e63e4c28524aa7d901d9ea8c7992ba1c97 100644 --- a/src/kservice.c +++ b/src/kservice.c @@ -388,6 +388,7 @@ void rt_kputs(const char *str) * * @return The number of characters actually written to buffer. */ +#include rt_weak int rt_kprintf(const char *fmt, ...) { va_list args; @@ -407,7 +408,7 @@ rt_weak int rt_kprintf(const char *fmt, ...) * large excluding the terminating null byte. If the output string * would be larger than the rt_log_buf, we have to adjust the output * length. */ - length = rt_vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args); + length = vsnprintf(rt_log_buf, sizeof(rt_log_buf) - 1, fmt, args); if (length > RT_CONSOLEBUF_SIZE - 1) { length = RT_CONSOLEBUF_SIZE - 1;