diff --git a/project/WL468/WL468.uvguix.Felix b/project/WL468/WL468.uvguix.Felix new file mode 100644 index 0000000..27b555c --- /dev/null +++ b/project/WL468/WL468.uvguix.Felix @@ -0,0 +1,1914 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 147 147 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 0 + 62 + 1448 + 806 + + + + 0 + + 701 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000020000000100000055433A5C55736572735C736F6E67635C4465736B746F705C574C435F47656E335F4953505F56353435395F32303233303932325C7372635C6170705C6D6F64756C655F64656D6F5C64656D6F5F68616C5F7764672E63000000000E64656D6F5F68616C5F7764672E6300000000C5D4F200FFFFFFFF4E433A5C55736572735C736F6E67635C4465736B746F705C574C435F47656E335F4953505F56353435395F32303233303932325C7372635C6170705C4D6931324C6974655C4D6931324C6974652E63000000000A4D6931324C6974652E6300000000FFDC7800FFFFFFFF47433A5C55736572735C736F6E67635C4465736B746F705C574C435F47656E335F4953505F56353435395F32303233303932325C7372635C6170705C53385C73385F64656D6F2E63000000000973385F64656D6F2E6300000000BECEA100FFFFFFFF4C433A5C55736572735C736F6E67635C4465736B746F705C574C435F47656E335F4953505F56353435395F32303233303932325C7372635C73646B5C696E636C7564655C68616C5F6372632E68000000000968616C5F6372632E6800000000F0A0A100FFFFFFFF4D433A5C55736572735C736F6E67635C4465736B746F705C574C435F47656E335F4953505F56353435395F32303233303932325C7372635C73646B5C696E636C7564655C68616C5F6770696F2E68000000000A68616C5F6770696F2E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000003401000066000000800700006A030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DE000000 + + + 16 + F40000006600000090050000F5000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002D0100003A030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002D0100003A030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002D0100003A030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002D0100003A030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000006E0300007D070000CD030000 + + + 16 + 8A000000A10000005203000030010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001602000090050000B9020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006E0300007D070000CD030000 + + + 16 + 8A000000A10000005203000030010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 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 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000005203000030010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000002D01000040020000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006E03000057050000CD030000 + + + 16 + 8A000000A10000005203000030010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006E03000057050000CD030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006E03000057050000CD030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006E03000057050000CD030000 + + + 16 + 8A000000A1000000A6010000DE020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C5000000 + + + 16 + 8A000000A10000005203000030010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500000D020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DE00000090050000E2000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F5000000F40000004F00000090050000DE0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000026020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A004000066000000900500003D020000A00400004F000000900500002602000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F00000034010000530300000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003001000070020000000000004F00000030010000530300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000012020000900500001602000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002D02000090050000D0020000000000001602000090050000B902000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000016020000CC020000B902000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000530300008007000057030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000740200005A05000003030000000000005703000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2958 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001C68616C5F6473695F72785F6374726C5F7365745F6175746F5F61636B9600000000000000140005656E64696600044356574C1C68616C5F6473695F72785F6374726C5F7365745F6175746F5F61636B034356410B5F5F63706C7573706C75731868616C5F6473695F72785F6374726C5F68616E646C655F74126473695F72785F6C616E655F737761705F6509626173655F696E666F2668616C20647369207278206374726C20696E69742867207278206374726C2068616E646C65291A2052585F4C414E455F535741505F303132335F544F5F32313033195258204C414E452053574150203031323320544F20323130330F6473695F6C616E655F6E756D655F6510675F72785F6374726C5F68616E646C65156473695F626173655F7472616E735F696E666F5F74156473695F72785F6C616E655F706E5F737761705F6507456467655468720473776170067377697463680C4350555F434C4B5F3130304D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 970 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000005574C3436389600000000000000010005574C343638000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 2 + + ..\..\src\app\module_demo\demo_hal_wdg.c + 16 + 92 + 129 + 1 + + 0 + + + ..\..\src\app\Mi12Lite\Mi12Lite.c + 0 + 139 + 182 + 1 + + 0 + + + ..\..\src\app\S8\s8_demo.c + 17 + 1 + 1100 + 1 + + 0 + + + ..\..\src\sdk\include\hal_crc.h + 6 + 71 + 110 + 1 + + 0 + + + ..\..\src\sdk\include\hal_gpio.h + 0 + 28 + 94 + 1 + + 0 + + + + +
diff --git a/project/WL468/WL468.uvoptx b/project/WL468/WL468.uvoptx new file mode 100644 index 0000000..46168d2 --- /dev/null +++ b/project/WL468/WL468.uvoptx @@ -0,0 +1,505 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + WL468 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 7 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + + + + + 0 + 0 + 244 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + C:\Users\songc\Desktop\WLC_Gen3_ISP_V5381_20230915\src\common\tau_dsi_datatype.h + + +
+ + 1 + 0 + 57 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + C:\Users\songc\Desktop\WLC_Gen3_ISP_V5381_20230915\src\sdk\include\hal_dsi_rx_ctrl.h + + +
+
+ + 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 + + + + + + + + +
+
+ + + app + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\src\app\main.c + main.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\src\app\touch\app_tp_transfer.c + app_tp_transfer.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\src\app\S8\app_tp_for_custom_s8.c + app_tp_for_custom_s8.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\src\app\S8\s8_demo.c + s8_demo.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\src\app\Mi12Lite\Mi12Lite.c + Mi12Lite.c + 0 + 0 + + + + + driver + 0 + 0 + 0 + 0 + + 2 + 6 + 4 + 0 + 0 + 0 + ..\..\src\sdk\CVWL468\lib\CVWL468.lib + CVWL468.lib + 0 + 0 + + + + + board + 0 + 0 + 0 + 0 + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\src\board\board.c + board.c + 0 + 0 + + + + + startup + 0 + 0 + 0 + 0 + + 4 + 8 + 2 + 0 + 0 + 0 + ..\..\src\board\startup\startup_ARMCM0.s + startup_ARMCM0.s + 0 + 0 + + + + + modules_demo + 1 + 0 + 0 + 0 + + 5 + 9 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_crc.c + demo_hal_crc.c + 0 + 0 + + + 5 + 10 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_dsi_rx.c + demo_hal_dsi_rx.c + 0 + 0 + + + 5 + 11 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_dsi_tx.c + demo_hal_dsi_tx.c + 0 + 0 + + + 5 + 12 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_flash.c + demo_hal_flash.c + 0 + 0 + + + 5 + 13 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_gpio.c + demo_hal_gpio.c + 0 + 0 + + + 5 + 14 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_i2c.c + demo_hal_i2c.c + 0 + 0 + + + 5 + 15 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_spi.c + demo_hal_spi.c + 0 + 0 + + + 5 + 16 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_pwm.c + demo_hal_pwm.c + 0 + 0 + + + 5 + 17 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_pwr.c + demo_hal_pwr.c + 0 + 0 + + + 5 + 18 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_swire.c + demo_hal_swire.c + 0 + 0 + + + 5 + 19 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_uart.c + demo_hal_uart.c + 0 + 0 + + + 5 + 20 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_wdg.c + demo_hal_wdg.c + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\module_demo_main.c + module_demo_main.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/project/WL468/WL468.uvprojx b/project/WL468/WL468.uvprojx new file mode 100644 index 0000000..0cf84a1 --- /dev/null +++ b/project/WL468/WL468.uvprojx @@ -0,0 +1,546 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + WL468 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0 + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + WL468_demo + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 1 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin -o .\Objects\@L.bin .\Objects\@L.axf + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 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 + 1 + 1 + "Cortex-M0" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 16 + 1 + 1 + 0 + 0 + 4 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x2000 + + + 1 + 0x10000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x70000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\src;..\..\src\board;..\..\src\common;..\..\src\sdk\include;..\..\src\sdk\include\M0;..\..\src\app;..\..\src\app\S8;..\..\src\app\touch;..\..\src\app\module_demo;..\..\src\app\Mi12Lite + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + + app + + + main.c + 1 + ..\..\src\app\main.c + + + app_tp_transfer.c + 1 + ..\..\src\app\touch\app_tp_transfer.c + + + app_tp_for_custom_s8.c + 1 + ..\..\src\app\S8\app_tp_for_custom_s8.c + + + s8_demo.c + 1 + ..\..\src\app\S8\s8_demo.c + + + Mi12Lite.c + 1 + ..\..\src\app\Mi12Lite\Mi12Lite.c + + + + + driver + + + CVWL468.lib + 4 + ..\..\src\sdk\CVWL468\lib\CVWL468.lib + + + + + board + + + board.c + 1 + ..\..\src\board\board.c + + + + + startup + + + startup_ARMCM0.s + 2 + ..\..\src\board\startup\startup_ARMCM0.s + + + + + modules_demo + + + demo_hal_crc.c + 1 + ..\..\src\app\module_demo\demo_hal_crc.c + + + demo_hal_dsi_rx.c + 1 + ..\..\src\app\module_demo\demo_hal_dsi_rx.c + + + demo_hal_dsi_tx.c + 1 + ..\..\src\app\module_demo\demo_hal_dsi_tx.c + + + demo_hal_flash.c + 1 + ..\..\src\app\module_demo\demo_hal_flash.c + + + demo_hal_gpio.c + 1 + ..\..\src\app\module_demo\demo_hal_gpio.c + + + demo_hal_i2c.c + 1 + ..\..\src\app\module_demo\demo_hal_i2c.c + + + demo_hal_spi.c + 1 + ..\..\src\app\module_demo\demo_hal_spi.c + + + demo_hal_pwm.c + 1 + ..\..\src\app\module_demo\demo_hal_pwm.c + + + demo_hal_pwr.c + 1 + ..\..\src\app\module_demo\demo_hal_pwr.c + + + demo_hal_swire.c + 1 + ..\..\src\app\module_demo\demo_hal_swire.c + + + demo_hal_uart.c + 1 + ..\..\src\app\module_demo\demo_hal_uart.c + + + demo_hal_wdg.c + 1 + ..\..\src\app\module_demo\demo_hal_wdg.c + + + module_demo_main.c + 1 + ..\..\src\app\module_demo\module_demo_main.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + RTE\Device\ARMCM0\startup_ARMCM0.s + + + + + + RTE\Device\ARMCM0\system_ARMCM0.c + + + + + + + +
diff --git a/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240401.map b/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240401.map new file mode 100644 index 0000000..4e265f3 --- /dev/null +++ b/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240401.map @@ -0,0 +1,3994 @@ +Component: ARM Compiler 5.06 update 6 (build 750) Tool: armlink [4d35ed] + +============================================================================== + +Section Cross References + + main.o(i.main) refers to board.o(i.board_Init) for board_Init + main.o(i.main) refers to p8p_demo.o(i.google_p8p_demo) for google_p8p_demo + main.o(i.main) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.Gpio_swire_output) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.Gpio_swire_output) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.Gpio_swire_output) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.Gpio_swire_output) refers to tau_delay.o(i.delayUs) for delayUs + p8p_demo.o(i.Panel_CCM) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_ccm) for hal_dsi_tx_ctrl_set_ccm + p8p_demo.o(i.REG_51_OFF_output) refers to idiv.o(.text) for __aeabi_idivmod + p8p_demo.o(i.REG_51_OFF_output) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.REG_51_OFF_output) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.ap_dcs_read) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) for hal_dsi_rx_ctrl_send_ack_cmd + p8p_demo.o(i.ap_dcs_read) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) for hal_dsi_rx_ctrl_get_max_ret_size + p8p_demo.o(i.ap_dcs_read) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_read) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.ap_dcs_set_backlight) refers to idiv.o(.text) for __aeabi_idivmod + p8p_demo.o(i.ap_dcs_set_backlight) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_backlight) refers to p8p_demo.o(.data) for rd_51_val + p8p_demo.o(i.ap_dcs_set_display_off) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_display_off) refers to p8p_demo.o(.data) for panel_display_done + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.ap_dcs_set_display_on) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_display_on) refers to p8p_demo.o(.data) for g_resolution_change + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_swire.o(i.hal_swire_enable) for hal_swire_enable + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to p8p_demo.o(i.ap_rstn_pull_down_cb) for ap_rstn_pull_down_cb + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter) for hal_dsi_rx_ctrl_set_hw_cmd_filter + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to p8p_demo.o(.data) for sg_exit_idle_mode_flag + p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_frame_change) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.ap_dcs_set_frame_change) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to p8p_demo.o(.data) for sg_system_suspend + p8p_demo.o(i.ap_rstn_pull_high_cb) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_rstn_pull_high_cb) refers to p8p_demo.o(.data) for sg_system_resume + p8p_demo.o(i.ap_set_FPS_53) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_rx_init) for app_mipi_rx_init + p8p_demo.o(i.app_display_init) refers to hal_pwr.o(i.hal_pwr_get_vcc_power_ready) for hal_pwr_get_vcc_power_ready + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_gpio_init) for app_gpio_init + p8p_demo.o(i.app_display_init) refers to hal_swire.o(i.hal_swire_init) for hal_swire_init + p8p_demo.o(i.app_display_init) refers to hal_swire.o(i.hal_swire_set_timer) for hal_swire_set_timer + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_tx_init) for app_mipi_tx_init + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_tx_start) for app_mipi_tx_start + p8p_demo.o(i.app_gpio_init) refers to hal_gpio.o(i.hal_gpio_config_pad) for hal_gpio_config_pad + p8p_demo.o(i.app_gpio_init) refers to p8p_demo.o(.constdata) for .constdata + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(i.app_tx_panel_reset) for app_tx_panel_reset + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(i.send_panel_init_code) for send_panel_init_code + p8p_demo.o(i.app_init_panel) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.app_init_panel) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.app_init_panel) refers to hal_swire.o(i.hal_swire_enable) for hal_swire_enable + p8p_demo.o(i.app_init_panel) refers to hal_swire.o(i.hal_swire_set_pulse) for hal_swire_set_pulse + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(.constdata) for panel_init_code + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) for hal_dsi_rx_ctrl_create_handle + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + p8p_demo.o(i.app_mipi_rx_init) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(.constdata) for g_cus_rx_dcs_execute_table + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(i.ap_dcs_read) for ap_dcs_read + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(i.pps_update_handle) for pps_update_handle + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) for hal_dsi_tx_ctrl_create_handle + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) for hal_dsi_tx_ctrl_init + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) for hal_dsi_tx_ctrl_set_overwrite_rgb + p8p_demo.o(i.app_mipi_tx_init) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_tx_init) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_mipi_tx_start) refers to p8p_demo.o(i.app_init_panel) for app_init_panel + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) for hal_dsi_tx_ctrl_start + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.app_mipi_tx_start) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.app_mipi_tx_start) refers to hal_swire.o(i.hal_swire_set_pulse) for hal_swire_set_pulse + p8p_demo.o(i.app_mipi_tx_start) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_tx_start) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_system_process) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(i.app_system_suspend) for app_system_suspend + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(i.app_system_resume) for app_system_resume + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(.data) for sg_system_suspend + p8p_demo.o(i.app_system_resume) refers to hal_pwr.o(i.hal_pwr_exit_sleep_mode) for hal_pwr_exit_sleep_mode + p8p_demo.o(i.app_system_resume) refers to p8p_demo.o(i.app_display_init) for app_display_init + p8p_demo.o(i.app_system_resume) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) for hal_dsi_tx_ctrl_stop + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) for hal_dsi_tx_ctrl_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) for hal_dsi_rx_ctrl_stop + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) for hal_dsi_rx_ctrl_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.app_system_suspend) refers to hal_swire.o(i.hal_swire_deinit) for hal_swire_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_set_sleep_mode_power) for hal_pwr_set_sleep_mode_power + p8p_demo.o(i.app_system_suspend) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) for hal_pwr_enter_normal_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) for hal_pwr_set_stop_sleep_wakeup_pin + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) for hal_pwr_enter_stop_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) for hal_pwr_enter_deep_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_system_suspend) refers to p8p_demo.o(i.ap_rstn_pull_high_cb) for ap_rstn_pull_high_cb + p8p_demo.o(i.app_tx_panel_reset) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.app_tx_panel_reset) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.google_p8p_demo) refers to hal_pwr.o(i.hal_pwr_set_main_power) for hal_pwr_set_main_power + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(i.app_display_init) for app_display_init + p8p_demo.o(i.google_p8p_demo) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.google_p8p_demo) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) for hal_dsi_rx_ctrl_dcs_async_handler + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(i.app_system_process) for app_system_process + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.pps_update_handle) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.pps_update_handle) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.pps_update_handle) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.send_panel_init_code) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) for hal_dsi_tx_ctrl_write_array_cmd + p8p_demo.o(i.send_panel_init_code) refers to tau_delay.o(i.delayUs) for delayUs + p8p_demo.o(i.soft_te_timer_cb) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) for hal_dsi_tx_ctrl_gen_a_tear_signal + p8p_demo.o(i.soft_te_timer_cb) refers to hal_timer.o(i.hal_timer_start) for hal_timer_start + p8p_demo.o(i.soft_te_timer_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.soft_te_timer_init) refers to hal_timer.o(i.hal_timer_init) for hal_timer_init + p8p_demo.o(i.soft_te_timer_init) refers to hal_timer.o(i.hal_timer_start) for hal_timer_start + p8p_demo.o(i.soft_te_timer_init) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.soft_te_timer_init) refers to p8p_demo.o(i.soft_te_timer_cb) for soft_te_timer_cb + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_display_on) for ap_dcs_set_display_on + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_display_off) for ap_dcs_set_display_off + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_backlight) for ap_dcs_set_backlight + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_set_FPS_53) for ap_set_FPS_53 + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) for ap_dcs_set_enter_sleep_mode + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) for ap_dcs_set_exit_sleep_mode + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_frame_change) for ap_dcs_set_frame_change + board.o(i.board_Init) refers to hal_system.o(i.hal_system_init) for hal_system_init + board.o(i.board_Init) refers to tau_log.o(i.tau_log_init) for tau_log_init + startup_armcm0.o(RESET) refers to startup_armcm0.o(STACK) for __initial_sp + startup_armcm0.o(RESET) refers to startup_armcm0.o(.text) for Reset_Handler + startup_armcm0.o(RESET) refers to drv_common.o(i.HardFault_Handler) for HardFault_Handler + startup_armcm0.o(RESET) refers to drv_common.o(i.SysTick_Handler) for SysTick_Handler + startup_armcm0.o(RESET) refers to drv_vidc.o(i.VIDC_IRQn_Handler) for VIDC_IRQn_Handler + startup_armcm0.o(RESET) refers to hal_internal_vsync.o(i.LCDC_IRQn_Handler) for LCDC_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) for MIPI_RX_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) for MIPI_TX_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_memc.o(i.MEMC_IRQn_Handler) for MEMC_IRQn_Handler + startup_armcm0.o(RESET) refers to hal_internal_dcs.o(i.VPRE_IRQn_Handler) for VPRE_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dma.o(i.DMA_IRQn_Handler) for DMA_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER0_IRQn_Handler) for TIMER0_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER1_IRQn_Handler) for TIMER1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER2_IRQn_Handler) for TIMER2_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER3_IRQn_Handler) for TIMER3_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_uart.o(i.UART_IRQn_Handler) for UART_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_rxbr.o(i.VPRE1_IRQn_Handler) for VPRE1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_swire.o(i.SWIRE_IRQn_Handler) for SWIRE_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.AP_NRESET_IRQn_Handler) for AP_NRESET_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT0_IRQn_Handler) for EXTI_INT0_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT1_IRQn_Handler) for EXTI_INT1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT2_IRQn_Handler) for EXTI_INT2_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT3_IRQn_Handler) for EXTI_INT3_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT4_IRQn_Handler) for EXTI_INT4_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT5_IRQn_Handler) for EXTI_INT5_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT6_IRQn_Handler) for EXTI_INT6_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT7_IRQn_Handler) for EXTI_INT7_IRQn_Handler + startup_armcm0.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd) refers to drv_rxbr.o(i.drv_rxbr_set_ack_pkt_md) for drv_rxbr_set_ack_pkt_md + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_lpdt_fifo_status) for drv_dsi_rx_get_lpdt_fifo_status + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) for dcs_packet_get_fifo_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) for dcs_packet_free_fifo_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) for hal_internal_vsync_get_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_dsc_dec.o(i.drv_dsc_dec_disable) for drv_dsc_dec_disable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) for drv_dsi_rx_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_rxbr.o(i.drv_rxbr_enable_irq) for drv_rxbr_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_vidc.o(i.drv_vidc_enable_irq) for drv_vidc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_memc.o(i.drv_memc_enable_irq) for drv_memc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_swpxl_clr) for drv_rxbr_swpxl_clr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_set_cmd_filter) for drv_rxbr_set_cmd_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_disable) for drv_dsc_dec_disable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_src_parameter) for drv_vidc_set_src_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_scld_step) for drv_vidc_set_scld_step + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_pu_ctrl) for drv_vidc_set_pu_ctrl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_set_swpxl_data) for drv_rxbr_set_swpxl_data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_pg_cfg) for drv_dsi_rx_set_ddi_pg_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) for hal_dsi_rx_ctrl_set_rx_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_pg_cfg) for drv_dsi_rx_set_ipi_pg_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.constdata) for .constdata + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_force_video_crtl) refers to drv_dsi_rx.o(i.drv_dsi_rx_force_video_crtl) for drv_dsi_rx_force_video_crtl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_compressen_en) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) for drv_dsi_rx_get_compression_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) for drv_dsi_rx_get_max_ret_size + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) for hal_dsi_rx_ctrl_init_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_init_rx) for hal_internal_vsync_init_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) for hal_dsi_rx_ctrl_init_dsi_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) for hal_dsi_rx_ctrl_init_rxbr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_enable) for drv_dsc_dec_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) for drv_dsc_dec_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) for hal_dsi_rx_ctrl_init_vidc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) for hal_dsi_rx_ctrl_init_memc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_se.o(i.drv_se_start_rx) for drv_se_start_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_pwr.o(i.drv_pwr_set_pll_clk) for drv_pwr_set_pll_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_rxbr_clk) for drv_crgu_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_dsc_clk) for drv_crgu_set_dsc_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_vidc_clk) for drv_crgu_set_vidc_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_fb_clk) for drv_crgu_set_fb_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) for drv_dsi_rx_set_ctrl_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) for hal_dsi_rx_ctrl_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) for drv_dsi_rx_set_up_phy + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) for drv_dsi_rx_set_lane_swap + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) for drv_dsi_rx_set_ddi_crc_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) for drv_dsi_rx_set_ipi_ycbcr_frmt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) for drv_dsi_rx_set_tear_resp_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_inten) for drv_dsi_rx_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) for drv_dsi_rx_set_check_crc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) for drv_dsi_rx_set_resp_cnt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) for drv_dsi_rx_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_data_mode) for drv_memc_set_data_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_ltpo_mode) for drv_memc_set_ltpo_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_rate_transfer_sel) for drv_memc_rate_transfer_sel + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_fs_en_conditions) for drv_memc_set_fs_en_conditions + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_lcdc_st_conditions) for drv_memc_set_lcdc_st_conditions + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_sel_vsync) for drv_memc_sel_vsync + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_vidc_sync_cnt) for drv_memc_set_vidc_sync_cnt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_tear_waveform) for drv_memc_set_tear_waveform + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_double_buffer) for drv_memc_set_double_buffer + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_circ_mode_enable) for drv_memc_set_circ_mode_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_active_height) for drv_memc_set_active_height + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_ltpo_pu_thres) for drv_memc_set_ltpo_pu_thres + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_enable_irq) for drv_memc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_color_format) for drv_rxbr_set_color_format + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) for drv_rxbr_set_ltpo_drop_th + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_cfg) for drv_rxbr_set_usr_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_col) for drv_rxbr_set_usr_col + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_row) for drv_rxbr_set_usr_row + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) for drv_rxbr_hline_rcv_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_enable_irq) for drv_rxbr_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_src_parameter) for drv_vidc_set_src_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_pentile_swap) for drv_vidc_set_pentile_swap + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_dst_parameter) for drv_vidc_set_dst_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_circ_mode_enable) for drv_vidc_set_circ_mode_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_init_module_enable) for drv_vidc_init_module_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_dither_config) for drv_vidc_set_dither_config + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_vintp_config) for drv_vidc_set_vintp_config + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_rotation) for drv_vidc_set_rotation + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dfltui.o(.text) for __aeabi_ui2d + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dadd.o(.text) for __aeabi_dadd + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_step) for drv_vidc_set_scld_step + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_hcoef0) for drv_vidc_set_scld_hcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_hcoef1) for drv_vidc_set_scld_hcoef1 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_vcoef0) for drv_vidc_set_scld_vcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_vcoef1) for drv_vidc_set_scld_vcoef1 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hinitr) for drv_vidc_set_honly_hinitr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hinitb) for drv_vidc_set_honly_hinitb + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hcoef0) for drv_vidc_set_honly_hcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_mirror) for drv_vidc_set_mirror + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_pu_ctrl) for drv_vidc_set_pu_ctrl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_enable_irq) for drv_vidc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_dsi_rx_ctrl.o(.constdata) for .constdata + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback) for hal_internal_sync_register_rx_callback + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_vidc.o(i.drv_vidc_set_irq_line) for drv_vidc_set_irq_line + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_write_cmd_entry) refers to hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry) for hal_intl_dcs_register_write_cmd_entry + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_release_handle) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to drv_dsi_rx.o(i.drv_dsi_rx_shut_down) for drv_dsi_rx_shut_down + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) for drv_rxbr_set_ack_pkt_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to drv_rxbr.o(i.drv_rxbr_set_cmd_response) for drv_rxbr_set_cmd_response + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) for drv_dsi_rx_set_check_crc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) refers to drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) for drv_dsi_rx_calc_ipi_tx_delay + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) for drv_dsi_rx_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_log_level) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level) for drv_dsi_rx_set_drv_log_level + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to drv_rxbr.o(i.drv_rxbr_sw_reset) for drv_rxbr_sw_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) for hal_dsi_rx_ctrl_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) for hal_intl_svs_update_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) for hal_dsi_rx_ctrl_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) refers to drv_crgu.o(i.drv_crgu_set_rxbr_clk) for drv_crgu_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to drv_dsi_rx.o(i.drv_dsi_rx_power_up) for drv_dsi_rx_power_up + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to drv_dsi_rx.o(i.drv_dsi_rx_shut_down) for drv_dsi_rx_shut_down + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_input_frame_rate) refers to hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) for hal_internal_vsync_toggle_input_frame_rate + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) refers to hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) for hal_internal_sync_input_resolution_change + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fadd.o(.text) for __aeabi_fadd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fmul.o(.text) for __aeabi_fmul + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) for hal_dsi_tx_ctrl_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) for drv_dsi_tx_phy_time_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) for drv_dsi_tx_phy_test_setup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) for drv_dsi_tx_phy_status_ready + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) for hal_internal_sync_register_lcdc_cb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) for hal_internal_sync_set_fb_setting_manual + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) for hal_lcdc_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_memc.o(i.drv_memc_set_data_mode) for drv_memc_set_data_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_frame) refers to drv_lcdc.o(i.drv_lcdc_fixed_frame_output) for drv_lcdc_fixed_frame_output + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_get_tear_mode) for drv_memc_get_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_gen_a_tear_signal) for drv_memc_gen_a_tear_signal + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_init_tx) for hal_internal_vsync_init_tx + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) for hal_internal_sync_register_lcdc_cb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) for hal_dsi_tx_ctrl_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) for hal_dsi_tx_init_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) for hal_dsi_tx_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) for hal_lcdc_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) for hal_lcdc_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) for drv_dsi_tx_phy_status_ready + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) for hal_nonshadow_func_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) for hal_vsync_func_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable) refers to drv_lcdc.o(i.drv_lcdc_part_display_config) for drv_lcdc_part_display_config + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_get_payload) for drv_dsi_tx_command_get_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_release_handle) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) for hal_internal_vsync_set_sync_line + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_endianness) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) refers to drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) for drv_lcdc_config_overwrite_rgb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) for hal_internal_vsync_set_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_vpg) for drv_dsi_tx_set_vpg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) for hal_dsi_tx_ctrl_draw_flick + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) for drv_dsi_tx_config_eotp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) for drv_dsi_tx_command_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_cfg_int_frame) for drv_lcdc_cfg_int_frame + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) for drv_lcdc_enable_shadow_reg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_start) for hal_lcdc_start + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_lcdc.o(i.drv_lcdc_stop_display) for drv_lcdc_stop_display + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_lcdc.o(i.drv_lcdc_set_int) for drv_lcdc_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_int) for drv_dsi_tx_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) for hal_dsi_tx_ctrl_read_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) for drv_dsi_tx_video_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) for drv_dsi_tx_set_bta_ack + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) for drv_dsi_tx_dpi_lpcmd_time + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) for drv_dsi_tx_command_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) for drv_dsi_tx_phy_lane_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) for drv_dsi_tx_dpi_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) for drv_dsi_tx_dpi_polarity + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_response_mode) for drv_dsi_tx_response_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) for drv_dsi_tx_config_eotp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) for drv_dsi_tx_set_time_out_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) for drv_dsi_tx_timeout_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) for drv_dsi_tx_phy_clock_lane_req_hs + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) for drv_dsi_tx_phy_clock_lane_auto_lp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_int) for drv_dsi_tx_config_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_int) for drv_dsi_tx_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to drv_crgu.o(i.drv_crgu_set_dpi_clk) for drv_crgu_set_dpi_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to hal_dsi_tx_ctrl.o(.constdata) for .constdata + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) for drv_dsi_tx_phy_time_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) for drv_dsi_tx_phy_test_setup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) for hal_dsi_tx_timing_info_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) for hal_dsi_tx_cmd_mode_cal_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) for drv_dsi_tx_edpi_cmd_size + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) for hal_dsi_tx_init_phy_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) for hal_dsi_tx_init_dpi_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) for hal_dsi_tx_vid_mode_cal_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) for hal_dsi_tx_init_vid_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) for drv_dsi_tx_set_video_chunk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) for drv_dsi_tx_set_video_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_header) for drv_dsi_tx_command_header + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) refers to d2f.o(.text) for __aeabi_d2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to fmul.o(.text) for __aeabi_fmul + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_svs.o(i.hal_intl_svs_init_tx) for hal_intl_svs_init_tx + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) for hal_tx_frame_rate_adjust + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to drv_lcdc.o(i.drv_lcdc_endianness_config) for drv_lcdc_endianness_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to drv_lcdc.o(i.drv_lcdc_crop_hact) for drv_lcdc_crop_hact + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) for hal_lcdc_postproc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) for hal_lcdc_displayproc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) for hal_intl_fb_get_tx_fb_info + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) for hal_lcdc_timinggen_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to drv_lcdc.o(i.drv_lcdc_config_int) for drv_lcdc_config_int + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to drv_lcdc.o(i.drv_lcdc_set_int) for drv_lcdc_set_int + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to fscalb.o(.text) for __ARM_scalbnf + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to drv_crgu.o(i.drv_crgu_set_lcdc_clk) for drv_crgu_set_lcdc_clk + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) for hal_intl_fb_get_tx_fb_info + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) for hal_lcdc_upscaler_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_fldc_config) for drv_lcdc_fldc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_bcsa_config) for drv_lcdc_bcsa_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_fc_config) for drv_lcdc_fc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_edge_dect_config) for drv_lcdc_edge_dect_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_edge_enh_config) for drv_lcdc_edge_enh_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_vintp_mode_config) for drv_lcdc_vintp_mode_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_dith_config) for drv_lcdc_dith_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to drv_lcdc.o(i.drv_lcdc_vid_hw_start) for drv_lcdc_vid_hw_start + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to drv_lcdc.o(i.drv_lcdc_cmd_start) for drv_lcdc_cmd_start + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_ctrl_flow) for drv_lcdc_ctrl_flow + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_config_src_parameter) for drv_lcdc_config_src_parameter + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_set_prefetch) for drv_lcdc_set_prefetch + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dfltui.o(.text) for __aeabi_ui2d + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dadd.o(.text) for __aeabi_dadd + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for sg_pq_para + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_bcsa_config) for drv_lcdc_bcsa_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_fc_config) for drv_lcdc_fc_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_edge_dect_config) for drv_lcdc_edge_dect_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_edge_enh_config) for drv_lcdc_edge_enh_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for sg_pq_para + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to cfcmple.o(.text) for __aeabi_cfcmple + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) for hal_dsi_tx_ctrl_init + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_init_input) for hal_gpio_init_input + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + hal_gpio.o(i.hal_gpio_ctrl_eint) refers to drv_gpio.o(i.drv_gpio_set_int) for drv_gpio_set_int + hal_gpio.o(i.hal_gpio_get_input_data) refers to drv_gpio.o(i.drv_gpio_get_input_data) for drv_gpio_get_input_data + hal_gpio.o(i.hal_gpio_get_pull_state) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_get_pull_state) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_eint) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) for drv_sys_cfg_sel_gpio_group + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) for drv_sys_cfg_sel_int_trig + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_gpio.o(i.hal_gpio_init_input) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_input) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_init_output) refers to hal_gpio.o(i.drv_gpio_set_output_data) for drv_gpio_set_output_data + hal_gpio.o(i.hal_gpio_init_output) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_output) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_reg_eint_cb) refers to drv_gpio.o(i.drv_gpio_register_callback) for drv_gpio_register_callback + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_gpio.o(i.drv_gpio_register_ap_reset_callback) for drv_gpio_register_ap_reset_callback + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) for drv_sys_cfg_sel_ap_rst_trig + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to hal_gpio.o(i.hal_gpio_set_pull_state) for hal_gpio_set_pull_state + hal_gpio.o(i.hal_gpio_set_mode) refers to drv_gpio.o(i.drv_gpio_set_mode) for drv_gpio_set_mode + hal_gpio.o(i.hal_gpio_set_output_data) refers to hal_gpio.o(i.drv_gpio_set_output_data) for drv_gpio_set_output_data + hal_gpio.o(i.hal_gpio_set_pull_state) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_pull_state) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_pull_state) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to hal_gpio.o(.constdata) for .constdata + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_enable) for drv_swire_enable + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_register_callback) for drv_swire_register_callback + hal_swire.o(i.hal_swire_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_swire.o(i.hal_swire_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_swire.o(i.hal_swire_deinit) refers to hal_timer.o(i.hal_timer_deinit) for hal_timer_deinit + hal_swire.o(i.hal_swire_deinit) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_power_down) for drv_swire_set_power_down + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_get_pulse_count) for drv_swire_get_pulse_count + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_enable) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_enable) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_init) refers to drv_crgu.o(i.drv_crgu_set_clock_div) for drv_crgu_set_clock_div + hal_swire.o(i.hal_swire_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_swire.o(i.hal_swire_init) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_swire.o(i.hal_swire_init) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_set_bit_time) for drv_swire_set_bit_time + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_set_power_down) for drv_swire_set_power_down + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_enable) for drv_swire_enable + hal_swire.o(i.hal_swire_init) refers to drv_common.o(.data) for g_system_clock + hal_swire.o(i.hal_swire_register_callback) refers to drv_swire.o(i.drv_swire_register_callback) for drv_swire_register_callback + hal_swire.o(i.hal_swire_register_callback) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_set_pulse) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_set_pulse) refers to drv_swire.o(i.drv_swire_set_pulse_count) for drv_swire_set_pulse_count + hal_swire.o(i.hal_swire_set_pulse) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_set_timer) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) for drv_sys_cfg_sel_swire_timer + hal_swire.o(i.hal_swire_set_timer) refers to hal_timer.o(i.hal_timer_init) for hal_timer_init + hal_swire.o(i.hal_swire_set_timer) refers to hal_timer.o(i.hal_timer_set_repeat) for hal_timer_set_repeat + hal_swire.o(i.hal_swire_set_timer) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_swire.o(i.hal_swire_set_timer) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_set_timer) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_set_waveform) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_swire.o(i.hal_swire_set_waveform) refers to drv_swire.o(i.drv_swire_set_bit_time) for drv_swire_set_bit_time + hal_swire.o(i.hal_swire_set_waveform) refers to drv_common.o(.data) for g_system_clock + hal_system.o(i.hal_system_disable_systick) refers to drv_common.o(i.drv_common_disable_systick) for drv_common_disable_systick + hal_system.o(i.hal_system_enable_systick) refers to drv_common.o(i.drv_common_enable_systick) for drv_common_enable_systick + hal_system.o(i.hal_system_get_tick) refers to drv_common.o(i.drv_common_get_tick) for drv_common_get_tick + hal_system.o(i.hal_system_idle_mode) refers to drv_common.o(i.drv_common_idle_mode) for drv_common_idle_mode + hal_system.o(i.hal_system_init) refers to drv_pwr.o(i.drv_pwr_set_pll_clk) for drv_pwr_set_pll_clk + hal_system.o(i.hal_system_init) refers to hal_system.o(i.hal_system_updata_sysclk) for hal_system_updata_sysclk + hal_system.o(i.hal_system_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_system.o(i.hal_system_init) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) for drv_sys_cfg_clear_all_int + hal_system.o(i.hal_system_init) refers to drv_common.o(i.drv_common_system_init) for drv_common_system_init + hal_system.o(i.hal_system_init) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_system.o(i.hal_system_register_systick_cb) refers to drv_common.o(i.drv_common_systick_register_cb) for drv_common_systick_register_cb + hal_system.o(i.hal_system_reset_chip) refers to drv_crgu.o(i.drv_crgu_reset_chip) for drv_crgu_reset_chip + hal_system.o(i.hal_system_updata_sysclk) refers to drv_crgu.o(i.drv_crgu_set_ahb_clk) for drv_crgu_set_ahb_clk + hal_system.o(i.hal_system_updata_sysclk) refers to drv_common.o(.data) for g_system_clock + hal_system.o(i.hal_system_updata_sysclk) refers to drv_common.o(.data) for g_system_delay_step + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_set_repeat) for drv_timer_set_repeat + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_timer.o(i.hal_timer_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_timer.o(i.hal_timer_get_status) refers to drv_timer.o(i.drv_timer_get_status) for drv_timer_get_status + hal_timer.o(i.hal_timer_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_timer.o(i.hal_timer_init) refers to drv_timer.o(i.drv_timer_set_prescaler) for drv_timer_set_prescaler + hal_timer.o(i.hal_timer_set_repeat) refers to drv_timer.o(i.drv_timer_set_repeat) for drv_timer_set_repeat + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_pwr.o(i.hal_pwr_elvcc_close) refers to drv_pwr.o(i.drv_pwr_pwmled_electric_current) for drv_pwr_pwmled_electric_current + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_pwmled_electric_current) for drv_pwr_pwmled_electric_current + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_hv_ldo_mode_sel) for drv_pwr_hv_ldo_mode_sel + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel) for drv_pwr_hv_ldo_mode_clock_sel + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_pwmled_driver_current_Big_step) for drv_pwr_pwmled_driver_current_Big_step + hal_pwr.o(i.hal_pwr_elvcc_vol_set) refers to drv_pwr.o(i.drv_pwr_hv_ldo_voltage_set) for drv_pwr_hv_ldo_voltage_set + hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) refers to drv_pwr.o(i.drv_pwr_set_wakeup_type) for drv_pwr_set_wakeup_type + hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) for drv_pwr_enter_deep_sleep_mode + hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) for drv_pwr_enter_sleep_mode_ex + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) for drv_pwr_enter_stop_sleep_mode + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to hal_pwr.o(.data) for .data + hal_pwr.o(i.hal_pwr_exit_sleep_mode) refers to drv_pwr.o(i.drv_pwr_exit_sleep_mode) for drv_pwr_exit_sleep_mode + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_crgu.o(i.drv_crgu_get_all_reset_flag) for drv_crgu_get_all_reset_flag + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_pwr.o(i.drv_pwr_get_wakeflag) for drv_pwr_get_wakeflag + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_crgu.o(i.drv_crgu_clear_all_reset_flags) for drv_crgu_clear_all_reset_flags + hal_pwr.o(i.hal_pwr_get_vcc_power_ready) refers to drv_pwr.o(i.drv_pwr_get_power_ready_st) for drv_pwr_get_power_ready_st + hal_pwr.o(i.hal_pwr_ldo13s_en) refers to drv_pwr.o(i.drv_pwr_ldo13s_en) for drv_pwr_ldo13s_en + hal_pwr.o(i.hal_pwr_ldo13s_set) refers to drv_pwr.o(i.drv_pwr_ldo13s_set) for drv_pwr_ldo13s_set + hal_pwr.o(i.hal_pwr_ldo18s_en) refers to drv_pwr.o(i.drv_pwr_ldo18s_en) for drv_pwr_ldo18s_en + hal_pwr.o(i.hal_pwr_ldo18s_set) refers to drv_pwr.o(i.drv_pwr_ldo18s_set) for drv_pwr_ldo18s_set + hal_pwr.o(i.hal_pwr_set_main_power) refers to drv_pwr.o(i.drv_pwr_set_digit_power_sel) for drv_pwr_set_digit_power_sel + hal_pwr.o(i.hal_pwr_set_pvd) refers to drv_pwr.o(i.drv_pwr_set_pvd) for drv_pwr_set_pvd + hal_pwr.o(i.hal_pwr_set_sleep_mode_power) refers to drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) for drv_pwr_set_breath_screen_power_sel + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_ctrl_eint) for hal_gpio_ctrl_eint + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_init_eint) for hal_gpio_init_eint + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_reg_eint_cb) for hal_gpio_reg_eint_cb + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_pwr.o(.data) for .data + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_pwr.o(i.stop_sleep_cb) for stop_sleep_cb + hal_pwr.o(i.hal_pwr_set_vcc_enable) refers to drv_pwr.o(i.drv_pwr_charge_pump_en) for drv_pwr_charge_pump_en + hal_pwr.o(i.stop_sleep_cb) refers to hal_pwr.o(.data) for .data + tau_delay.o(i.delayMs) refers to tau_delay.o(i.delayUs) for delayUs + tau_delay.o(i.delayUs) refers to drv_common.o(.data) for g_system_delay_step + tau_log.o(i.fgetc) refers to hal_uart.o(i.hal_uart_recv_blocking) for hal_uart_recv_blocking + tau_log.o(i.fgetc) refers to hal_system.o(i.hal_system_get_debug_state) for hal_system_get_debug_state + tau_log.o(i.fgetc) refers to hal_system.o(i.hal_system_clear_debug_state) for hal_system_clear_debug_state + tau_log.o(i.fgetc) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.fputc) refers to tau_log.o(i.tau_log_push_log) for tau_log_push_log + tau_log.o(i.fputc) refers to hal_uart.o(i.hal_uart_send_blocking) for hal_uart_send_blocking + tau_log.o(i.fputc) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_init) refers to hal_uart.o(i.hal_uart_init) for hal_uart_init + tau_log.o(i.tau_log_init) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_printf) refers to memseta.o(.text) for __aeabi_memclr4 + tau_log.o(i.tau_log_printf) refers to strlen.o(.text) for strlen + tau_log.o(i.tau_log_printf) refers to printfa.o(i.__0vsprintf) for vsprintf + tau_log.o(i.tau_log_printf) refers to tau_log.o(i.tau_log_push_log) for tau_log_push_log + tau_log.o(i.tau_log_printf) refers to printfa.o(i.__0printf) for __2printf + tau_log.o(i.tau_log_printf) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_printf) refers to tau_log.o(.bss) for g_log_buf + tau_log.o(i.tau_log_push_log) refers to memcpya.o(.text) for __aeabi_memcpy + tau_log.o(i.tau_log_push_log) refers to tau_delay.o(i.delayUs) for delayUs + tau_log.o(.ARM.__at_0x1101C) refers to tau_log.o(.bss) for g_log_buf + hal_uart.o(i.hal_uart0_rx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart0_tx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart1_rx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart1_tx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_deinit) refers to drv_uart.o(i.drv_uart_deinit) for drv_uart_deinit + hal_uart.o(i.hal_uart_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_uart.o(i.hal_uart_deinit) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_dma_path_close) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_path_close) refers to drv_dma.o(i.drv_dma_deinit) for drv_dma_deinit + hal_uart.o(i.hal_uart_dma_path_close) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_apply_handle) for drv_dma_apply_handle + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_init) for drv_dma_init + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_set_burst) for drv_dma_set_burst + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_register_callback) for drv_dma_register_callback + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_enable_int) for drv_dma_enable_int + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_set_mem_trans_info) for drv_dma_set_mem_trans_info + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_enable) for drv_dma_enable + hal_uart.o(i.hal_uart_dma_recv) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(i.hal_uart0_rx_dma_cb) for hal_uart0_rx_dma_cb + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(i.hal_uart1_rx_dma_cb) for hal_uart1_rx_dma_cb + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_apply_handle) for drv_dma_apply_handle + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_init) for drv_dma_init + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_set_burst) for drv_dma_set_burst + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_register_callback) for drv_dma_register_callback + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_enable_int) for drv_dma_enable_int + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_set_mem_trans_info) for drv_dma_set_mem_trans_info + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_enable) for drv_dma_enable + hal_uart.o(i.hal_uart_dma_send) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(i.hal_uart0_tx_dma_cb) for hal_uart0_tx_dma_cb + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(i.hal_uart1_tx_dma_cb) for hal_uart1_tx_dma_cb + hal_uart.o(i.hal_uart_init) refers to memseta.o(.text) for __aeabi_memclr4 + hal_uart.o(i.hal_uart_init) refers to drv_uart.o(i.drv_uart_init) for drv_uart_init + hal_uart.o(i.hal_uart_init) refers to drv_uart.o(i.drv_uart_trans_create_handle) for drv_uart_trans_create_handle + hal_uart.o(i.hal_uart_init) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_init) refers to drv_common.o(.data) for g_system_clock + hal_uart.o(i.hal_uart_init) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_recv_blocking) refers to drv_uart.o(i.drv_uart_recv_blocking) for drv_uart_recv_blocking + hal_uart.o(i.hal_uart_recv_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_recv_none_blocking) for drv_uart_recv_none_blocking + hal_uart.o(i.hal_uart_recv_none_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_send_blocking) refers to drv_uart.o(i.drv_uart_send_blocking) for drv_uart_send_blocking + hal_uart.o(i.hal_uart_send_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_send_none_blocking) for drv_uart_send_none_blocking + hal_uart.o(i.hal_uart_send_none_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) for hal_dsi_tx_ctrl_gen_a_tear_signal + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to tau_delay.o(i.delayUs) for delayUs + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) for hal_vsync_reset_lcdc_scaler + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) refers to hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) for hal_intl_fb_set_fb_info_manual + hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) for check_mipi_rx_tx_video_info + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_svs.o(i.hal_intl_svs_init_rx) for hal_intl_svs_init_rx + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) for hal_intl_dcs_init_sw_fltr + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to drv_rxbr.o(i.drv_rxbr_register_irq1_callback) for drv_rxbr_register_irq1_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to drv_vidc.o(i.drv_vidc_register_callback) for drv_vidc_register_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to dcs_packet_fifo.o(i.dcs_packet_fifo_init) for dcs_packet_fifo_init + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.soft_gen_te) for soft_gen_te + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.soft_gen_te_double_buffer) for soft_gen_te_double_buffer + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.rxbr_irq1_callback) for rxbr_irq1_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.vidc_callback) for vidc_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) for check_mipi_rx_tx_video_info + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_vsync.o(i.hal_internal_vsync_deinit) for hal_internal_vsync_deinit + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_svs.o(i.hal_intl_svs_deinit_rx) for hal_intl_svs_deinit_rx + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_svs.o(i.hal_intl_svs_set_sync_coef) for hal_intl_svs_set_sync_coef + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_memc.o(i.drv_memc_set_frame_drop_select) for drv_memc_set_frame_drop_select + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_set_tear_line) for drv_lcdc_set_tear_line + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_memc.o(i.drv_memc_rate_transfer_sel) for drv_memc_rate_transfer_sel + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) for drv_lcdc_config_acc_command_mode + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_vsync.o(i.hal_internal_vsync_deinit) for hal_internal_vsync_deinit + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_svs.o(i.hal_intl_svs_deinit_tx) for hal_intl_svs_deinit_tx + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_svs.o(i.hal_intl_svs_set_input_frate) for hal_intl_svs_set_input_frate + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_memc.o(i.drv_memc_rate_transfer_sel) for drv_memc_rate_transfer_sel + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_memc.o(i.drv_memc_sel_vsync) for drv_memc_sel_vsync + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv0_cfg) for drv_rxbr_hline_rcv0_cfg + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dfltui.o(.text) for __aeabi_ui2d + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dadd.o(.text) for __aeabi_dadd + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.drv_rxbr_get_int_source) for drv_rxbr_get_int_source + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.soft_double_buffer_update) for soft_double_buffer_update + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_svs.o(i.hal_intl_svs_handle) for hal_intl_svs_handle + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.vpre_err_reset) for vpre_err_reset + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) for drv_dsi_tx_phy_clock_lane_req_hs + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_lcdc.o(i.drv_lcdc_cmd_start) for drv_lcdc_cmd_start + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) for hal_intl_svs_set_rx_vtt + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(.conststring) for .conststring + hal_internal_vsync.o(i.soft_double_buffer_update) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.soft_gen_te) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.soft_gen_te) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.soft_gen_te_double_buffer) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.soft_gen_te_double_buffer) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_get_int_source) for drv_vidc_get_int_source + hal_internal_vsync.o(i.vidc_callback) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_clear_irq) for drv_vidc_clear_irq + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_get_irq_status) for drv_vidc_get_irq_status + hal_internal_vsync.o(i.vidc_callback) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.vidc_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.vidc_callback) refers to hal_internal_vsync.o(.conststring) for .conststring + hal_internal_vsync.o(i.vpre_err_reset) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_internal_vsync.o(i.vpre_err_reset) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + hal_internal_vsync.o(i.vpre_err_reset) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_dcs.o(i.drv_rxbr_get_status0) for drv_rxbr_get_status0 + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) for hal_intl_dcs_rx_receive_packet + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) for drv_dsc_dec_get_nslc + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_crgu.o(i.drv_crgu_set_dsc_clk) for drv_crgu_set_dsc_clk + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to hal_internal_dcs.o(i.drv_rxbr_get_status0) for drv_rxbr_get_status0 + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) for hal_intl_dcs_sw_filter_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) for dcs_packet_fifo_alloc + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) for hal_dsi_rx_ctrl_dcs_async_handler + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) for drv_dsi_rx_get_ddi_crc_en + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(i.check_pkt_buf_rev) for check_pkt_buf_rev + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(.conststring) for .conststring + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) for hal_intl_dcs_rx_get_dcs_packet_data + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) for hal_intl_dcs_rx_receive_pps + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_dcs.o(i.check_pkt_buf_rev) for check_pkt_buf_rev + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) for drv_dsi_rx_get_compression_en + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_dsc_dec.o(i.drv_dsc_dec_enable) for drv_dsc_dec_enable + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_dcs.o(.conststring) for .conststring + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to memseta.o(.text) for __aeabi_memset + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to drv_rxbr.o(i.drv_rxbr_set_filter_regs) for drv_rxbr_set_filter_regs + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(.data) refers to hal_internal_dcs.o(.bss) for g_imm_buffer + hal_internal_fb.o(i.ha_intl_fb_check_pu_size) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.ha_intl_fb_check_pu_size) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) for hal_intl_fb_flow_control_adapter + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) for hal_intl_fb_check_bandwidth + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.ha_intl_fb_check_pu_size) for ha_intl_fb_check_pu_size + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_edge_resize) for hal_intl_fb_edge_resize + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_edge_resize) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_edge_resize) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_user_flow) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_fb.o(.conststring) for .conststring + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_deinit_tx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_handle) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) for hal_intl_svs_update_rxbr_clk + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_init_tx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(i.svs_wait_fr_stab) for svs_wait_fr_stab + hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_sync_coef) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dfltui.o(.text) for __aeabi_ui2d + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dmul.o(.text) for __aeabi_dmul + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_direct_mode_setting) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.svs_direct_mode_setting) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_internal_svs.o(i.svs_direct_mode_setting) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_direct_mode_setting) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) for drv_rxbr_hline_rcv1_cfg + hal_internal_svs.o(i.svs_direct_mode_setting) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_get_rel_intv) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_get_rel_intv) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_sync_handle) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_sync_handle) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_sync_handle) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_svs.o(i.svs_sync_handle) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_sync_handle) refers to f2d.o(.text) for __aeabi_f2d + hal_internal_svs.o(i.svs_sync_handle) refers to dadd.o(.text) for __aeabi_dadd + hal_internal_svs.o(i.svs_sync_handle) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.svs_sync_handle) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_wait_fr_stab) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_internal_svs.o(i.svs_wait_fr_stab) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_wait_fr_stab) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_svs.o(i.svs_wait_fr_stab) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_wait_fr_stab) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_wait_fr_stab) refers to ffixui.o(.text) for __aeabi_f2uiz + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(i.svs_sync_handle) for svs_sync_handle + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_wait_start) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_internal_svs.o(i.svs_wait_start) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_wait_start) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_internal_svs.o(i.svs_wait_start) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_wait_start) refers to f2d.o(.text) for __aeabi_f2d + hal_internal_svs.o(i.svs_wait_start) refers to ceil.o(i.ceil) for ceil + hal_internal_svs.o(i.svs_wait_start) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_direct_mode_setting) for svs_direct_mode_setting + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) for drv_rxbr_hline_rcv1_cfg + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_wait_fr_stab) for svs_wait_fr_stab + drv_common.o(i.HardFault_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_common.o(i.SysTick_Handler) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_enable_systick) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_common.o(i.drv_common_enable_systick) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_get_tick) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_system_init) refers to drv_se.o(i.drv_se_init) for drv_se_init + drv_common.o(i.drv_common_systick_register_cb) refers to drv_common.o(.data) for .data + drv_crgu.o(i.drv_crgu_get_rxbr_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_crgu.o(i.drv_crgu_get_system_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsc_dec.o(i.drv_dsc_dec_enable) refers to drv_se.o(i.drv_se_set_dsc) for drv_se_set_dsc + drv_gpio.o(i.AP_NRESET_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_gpio.o(i.AP_NRESET_IRQn_Handler) refers to drv_gpio.o(.data) for .data + drv_gpio.o(i.EXTI_INT0_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT1_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT2_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT3_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT4_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT5_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT6_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT7_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.drv_gpio_handle_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_gpio.o(i.drv_gpio_handle_int) refers to drv_gpio.o(.bss) for .bss + drv_gpio.o(i.drv_gpio_register_ap_reset_callback) refers to drv_gpio.o(.data) for .data + drv_gpio.o(i.drv_gpio_register_callback) refers to drv_gpio.o(.bss) for .bss + drv_gpio.o(i.drv_gpio_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_pwr.o(i.drv_pwr_analog_pwm_en) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_elvcc_pwm_en) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_elvcc_pwm_en) refers to tau_delay.o(i.delayMs) for delayMs + drv_pwr.o(i.drv_pwr_enter_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_enter_sleep_mode) refers to drv_pwr.o(i.drv_pwr_por_mode_flag) for drv_pwr_por_mode_flag + drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_exit_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel) refers to drv_pwr.o(i.drv_pwr_hv_ldo_10M_clock) for drv_pwr_hv_ldo_10M_clock + drv_pwr.o(i.drv_pwr_pwm_output_pwm_led) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_digit_power_sel) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_system_clk) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_wakeup_type) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_swire.o(i.SWIRE_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_swire.o(i.SWIRE_IRQn_Handler) refers to drv_swire.o(.data) for .data + drv_swire.o(i.drv_swire_register_callback) refers to drv_swire.o(.data) for .data + drv_swire.o(i.drv_swire_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_timer.o(i.TIMER0_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER1_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER2_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER3_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.drv_timer_clear_status_flags) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_clear_status_flags) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_timer.o(i.drv_timer_enable) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_get_instance) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_get_status) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_clear_status_flags) for drv_timer_clear_status_flags + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_register_callback) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_set_compare_val) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_common.o(.data) for g_system_clock + drv_timer.o(i.drv_timer_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_timer.o(i.drv_timer_set_prescaler) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_set_prescaler) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_repeat) refers to drv_timer.o(.data) for .data + dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_fifo_init) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_get_fifo_size) refers to dcs_packet_fifo.o(.bss) for .bss + drv_se.o(i.drv_se_init) refers to drv_efuse.o(i.drv_efuse_enter_inactive) for drv_efuse_enter_inactive + drv_se.o(i.drv_se_init) refers to drv_efuse.o(i.drv_efuse_read) for drv_efuse_read + drv_se.o(i.drv_se_init) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_dsc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_dsc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_lcdc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_lcdc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_memc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_memc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_rxbr) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_rxbr) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_vidc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_vidc) refers to drv_se.o(.data) for .data + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to drv_dsi_rx.o(.data) for .data + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) for drv_dsi_rx_get_color_bpp + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to ffltui.o(.text) for __aeabi_ui2f + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fdiv.o(.text) for __aeabi_fdiv + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fmul.o(.text) for __aeabi_fmul + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) for drv_dsi_rx_get_color_pcc + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fadd.o(.text) for __aeabi_fadd + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to cfrcmple.o(.text) for __aeabi_cfrcmple + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to f2d.o(.text) for __aeabi_f2d + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to dadd.o(.text) for __aeabi_dadd + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to dfixui.o(.text) for __aeabi_d2uiz + drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_rx.o(i.drv_dsi_rx_get_phy_stopstate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level) refers to drv_dsi_rx.o(.data) for .data + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to drv_phy_common.o(i.drv_phy_test_clear) for drv_phy_test_clear + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to drv_phy_common.o(i.drv_phy_test_lock) for drv_phy_test_lock + drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_enter) for drv_tx_phy_test_enter + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_phy_common.o(i.drv_phy_test_clear) for drv_phy_test_clear + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_write_code) for drv_tx_phy_test_write_code + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_exit) for drv_tx_phy_test_exit + drv_dsi_tx.o(i.drv_dsi_tx_phy_trigger) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock) for drv_dsi_tx_phy_status_pll_lock + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) for drv_dsi_tx_phy_status_ulpsactivenot + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) for drv_dsi_tx_phy_status_ulpsactivenot + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock) for drv_dsi_tx_phy_status_pll_lock + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_version) for drv_dsi_tx_version + drv_dsi_tx.o(i.drv_dsi_tx_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_tx.o(i.drv_dsi_tx_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_lcdc.o(i.drv_lcdc_clear_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_lcdc.o(i.drv_lcdc_cmd_start) refers to drv_se.o(i.drv_se_set_lcdc) for drv_se_set_lcdc + drv_lcdc.o(i.drv_lcdc_ctrl_flow) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + drv_lcdc.o(i.drv_lcdc_part_display_config) refers to drv_lcdc.o(i.drv_lcdc_pixel_value_config) for drv_lcdc_pixel_value_config + drv_lcdc.o(i.drv_lcdc_set_int) refers to drv_lcdc.o(i.drv_lcdc_clear_int) for drv_lcdc_clear_int + drv_lcdc.o(i.drv_lcdc_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_lcdc.o(i.drv_lcdc_vid_hw_start) refers to drv_se.o(i.drv_se_set_lcdc) for drv_se_set_lcdc + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_memc.o(i.drv_memc_get_status) for drv_memc_get_status + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_memc.o(i.drv_memc_clear_status) for drv_memc_clear_status + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_memc.o(i.drv_memc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_memc.o(i.drv_memc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_memc.o(i.drv_memc_rate_transfer_sel) refers to drv_se.o(i.drv_se_set_memc) for drv_se_set_memc + drv_memc.o(i.drv_memc_set_ltpo_mode) refers to drv_se.o(i.drv_se_set_memc) for drv_se_set_memc + drv_rxbr.o(i.VPRE1_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_rxbr.o(i.VPRE1_IRQn_Handler) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_rxbr.o(i.__NVIC_EnableIRQ) for __NVIC_EnableIRQ + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_rxbr.o(i.__NVIC_DisableIRQ) for __NVIC_DisableIRQ + drv_rxbr.o(i.drv_rxbr_register_irq0_callback) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_register_irq1_callback) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_set_cmd_filter) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_rxbr.o(i.drv_rxbr_set_cmd_response) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_rxbr.o(i.drv_rxbr_set_color_format) refers to drv_se.o(i.drv_se_set_rxbr) for drv_se_set_rxbr + drv_rxbr.o(i.drv_rxbr_soft_reset) refers to tau_delay.o(i.delayMs) for delayMs + drv_rxbr.o(i.drv_rxbr_sw_reset) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + drv_rxbr.o(i.drv_rxbr_sw_reset) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + drv_vidc.o(i.VIDC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_vidc.o(i.VIDC_IRQn_Handler) refers to drv_vidc.o(.data) for .data + drv_vidc.o(i.drv_vidc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_vidc.o(i.drv_vidc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_vidc.o(i.drv_vidc_register_callback) refers to drv_vidc.o(.data) for .data + drv_vidc.o(i.drv_vidc_set_src_parameter) refers to drv_se.o(i.drv_se_set_vidc) for drv_se_set_vidc + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(i.drv_dma_get_int_source) for drv_dma_get_int_source + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(i.drv_dma_clear_status) for drv_dma_clear_status + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(.data) for .data + drv_dma.o(i.drv_dma_apply_handle) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dma.o(i.drv_dma_apply_handle) refers to drv_dma.o(.data) for .data + drv_dma.o(i.drv_dma_apply_handle) refers to drv_dma.o(.constdata) for .constdata + drv_dma.o(i.drv_dma_deinit) refers to drv_dma.o(i.drv_dma_disable_int) for drv_dma_disable_int + drv_dma.o(i.drv_dma_disable_int) refers to drv_dma.o(i.drv_dma_int_list_delete) for drv_dma_int_list_delete + drv_dma.o(i.drv_dma_disable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dma.o(i.drv_dma_enable_int) refers to drv_dma.o(i.drv_dma_int_list_inset) for drv_dma_int_list_inset + drv_dma.o(i.drv_dma_enable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_dma.o(i.drv_dma_init) refers to drv_per_common.o(i.drv_per_set_clock) for drv_per_set_clock + drv_dma.o(i.drv_dma_init) refers to drv_dma.o(i.drv_dma_update_handle_setting) for drv_dma_update_handle_setting + drv_dma.o(i.drv_dma_int_list_delete) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.drv_dma_int_list_inset) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.drv_dma_update_handle_setting) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req) for drv_sys_cfg_sel_dma_req + drv_dma.o(i.drv_dma_update_req_by_default) refers to drv_dma.o(i.drv_dma_update_handle_setting) for drv_dma_update_handle_setting + drv_dma.o(i.drv_dma_update_req_by_default) refers to drv_dma.o(.constdata) for .constdata + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_int_trans_handle) for drv_uart_int_trans_handle + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_abort_recv) for drv_uart_abort_recv + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_abort_send) for drv_uart_abort_send + drv_uart.o(i.UART_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(.constdata) for .constdata + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_reset_rx_fifo) for drv_uart_reset_rx_fifo + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_reset_tx_fifo) for drv_uart_reset_tx_fifo + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(i.drv_uart_enable_clk) for drv_uart_enable_clk + drv_uart.o(i.drv_uart_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_enable_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + drv_uart.o(i.drv_uart_enable_int) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_enable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_uart.o(i.drv_uart_get_def_cfg) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_get_def_cfg) refers to drv_common.o(.data) for g_system_clock + drv_uart.o(i.drv_uart_get_instance) refers to drv_uart.o(.constdata) for .constdata + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_enable_clk) for drv_uart_enable_clk + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_set_baud_rate) for drv_uart_set_baud_rate + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_enable_int) for drv_uart_enable_int + drv_uart.o(i.drv_uart_int_trans_handle) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_reset_rx_fifo) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_reset_tx_fifo) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_set_baud_rate) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_uart.o(i.drv_uart_trans_create_handle) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_trans_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_trans_create_handle) refers to drv_uart.o(.bss) for .bss + drv_efuse.o(i.drv_efuse_enter_inactive) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + drv_efuse.o(i.drv_efuse_enter_inactive) refers to drv_efuse.o(i.drv_efuse_int_enable) for drv_efuse_int_enable + drv_efuse.o(i.drv_efuse_read) refers to drv_pwr.o(i.drv_pwr_efuse_pd) for drv_pwr_efuse_pd + drv_efuse.o(i.drv_efuse_read) refers to drv_efuse.o(i.drv_efuse_read_req) for drv_efuse_read_req + drv_efuse.o(i.drv_efuse_write) refers to drv_pwr.o(i.drv_pwr_efuse_pd) for drv_pwr_efuse_pd + drv_efuse.o(i.drv_efuse_write) refers to drv_efuse.o(i.drv_efuse_write_req) for drv_efuse_write_req + drv_efuse.o(i.drv_efuse_write_read_req_clear) refers to drv_efuse.o(i.drv_efuse_write_req) for drv_efuse_write_req + drv_efuse.o(i.drv_efuse_write_read_req_clear) refers to drv_efuse.o(i.drv_efuse_read_req) for drv_efuse_read_req + drv_per_common.o(i.drv_per_get_system_clk) refers to drv_crgu.o(i.drv_crgu_get_system_clk) for drv_crgu_get_system_clk + drv_per_common.o(i.drv_per_reset_module) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + drv_per_common.o(i.drv_per_set_clock) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + ceil.o(i.__softfp_ceil) refers (Special) to iusefp.o(.text) for __I$use$fp + ceil.o(i.__softfp_ceil) refers to ceil.o(i.ceil) for ceil + ceil.o(i.ceil) refers (Special) to iusefp.o(.text) for __I$use$fp + ceil.o(i.ceil) refers to dadd.o(.text) for __aeabi_dadd + ceil.o(i.ceil) refers to cdrcmple.o(.text) for __aeabi_cdrcmple + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry8b.o(.ARM.Collect$$$$0000000A) for _main_cpp_init + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk + idiv.o(.text) refers to uidiv.o(.text) for __aeabi_uidivmod + printfb.o(i.__0fprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0fprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0printf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._sputc) for _sputc + printfb.o(i.__0vfprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vfprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._sputc) for _sputc + printf0.o(i.__0fprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0fprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0printf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0snprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0snprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0sprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0sprintf$0) refers to printf0.o(i._sputc) for _sputc + printf0.o(i.__0vfprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vfprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._sputc) for _sputc + printf1.o(i.__0fprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0fprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0printf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0snprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0snprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0sprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0sprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i.__0vfprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vfprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf2.o(i.__0fprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0fprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0printf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0snprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0snprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0sprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0sprintf$2) refers to printf2.o(i._sputc) for _sputc + printf2.o(i.__0vfprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vfprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._sputc) for _sputc + printf3.o(i.__0fprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0fprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0printf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0snprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0snprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0sprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0sprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i.__0vfprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vfprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf4.o(i.__0fprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0fprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0printf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0snprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0snprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0sprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0sprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i.__0vfprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vfprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf5.o(i.__0fprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0fprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0printf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0snprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0snprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0sprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0sprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i.__0vfprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vfprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf6.o(i.__0fprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0fprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0printf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0snprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0snprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0sprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0sprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i.__0vfprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vfprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i._printf_core) refers to printf6.o(i._printf_pre_padding) for _printf_pre_padding + printf6.o(i._printf_core) refers to printf6.o(i._printf_post_padding) for _printf_post_padding + printf6.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf7.o(i.__0fprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0fprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0printf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0snprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0snprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0sprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0sprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i.__0vfprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vfprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i._printf_core) refers to printf7.o(i._printf_pre_padding) for _printf_pre_padding + printf7.o(i._printf_core) refers to printf7.o(i._printf_post_padding) for _printf_post_padding + printf7.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf8.o(i.__0fprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0fprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0printf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0snprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0snprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0sprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0sprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i.__0vfprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vfprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i._printf_core) refers to printf8.o(i._printf_pre_padding) for _printf_pre_padding + printf8.o(i._printf_core) refers to printf8.o(i._printf_post_padding) for _printf_post_padding + printf8.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i.__0fprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0fprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0fprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0printf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0printf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0printf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0printf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0snprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0snprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0snprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0sprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0sprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0sprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i.__0vfprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vfprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vfprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0vsnprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsnprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsnprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0vsprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i._fp_digits) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._fp_digits) refers to dmul.o(.text) for __aeabi_dmul + printfa.o(i._fp_digits) refers to ddiv.o(.text) for __aeabi_ddiv + printfa.o(i._fp_digits) refers to cdrcmple.o(.text) for __aeabi_cdrcmple + printfa.o(i._fp_digits) refers to dadd.o(.text) for __aeabi_dadd + printfa.o(i._fp_digits) refers to dfixul.o(.text) for __aeabi_d2ulz + printfa.o(i._fp_digits) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_core) refers to printfa.o(i._printf_pre_padding) for _printf_pre_padding + printfa.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers to printfa.o(i._printf_post_padding) for _printf_post_padding + printfa.o(i._printf_core) refers to printfa.o(i._fp_digits) for _fp_digits + printfa.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printfa.o(i._printf_post_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + fadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fadd.o(.text) refers to fepilogue.o(.text) for _float_epilogue + fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fdiv.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fdiv.o(.text) refers to fepilogue.o(.text) for _float_round + fscalb.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl + dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr + dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue + dmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dmul.o(.text) refers to depilogue.o(.text) for _double_epilogue + ffltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + ffltui.o(.text) refers to fepilogue.o(.text) for _float_epilogue + dfltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfltui.o(.text) refers to depilogue.o(.text) for _double_epilogue + ffixui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfixui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfixui.o(.text) refers to llushr.o(.text) for __aeabi_llsr + f2d.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + d2f.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + d2f.o(.text) refers to fepilogue.o(.text) for _float_round + cfcmple.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + cfrcmple.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 + entry2.o(.ARM.Collect$$$$00002712) refers to startup_armcm0.o(STACK) for __initial_sp + entry2.o(__vectab_stack_and_reset_area) refers to startup_armcm0.o(STACK) for __initial_sp + entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main + entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload + entry9a.o(.ARM.Collect$$$$0000000B) refers to main.o(i.main) for main + entry9b.o(.ARM.Collect$$$$0000000C) refers to main.o(i.main) for main + uldiv.o(.text) refers to llushr.o(.text) for __aeabi_llsr + uldiv.o(.text) refers to llshl.o(.text) for __aeabi_llsl + depilogue.o(.text) refers to depilogue.o(i.__ARM_clz) for __ARM_clz + depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl + depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr + ddiv.o(.text) refers to depilogue.o(.text) for _double_round + dfixul.o(.text) refers to llushr.o(.text) for __aeabi_llsr + dfixul.o(.text) refers to llshl.o(.text) for __aeabi_llsl + init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload + + +============================================================================== + +Removing Unused input sections from the image. + + Removing main.o(.rev16_text), (4 bytes). + Removing main.o(.revsh_text), (4 bytes). + Removing p8p_demo.o(.rev16_text), (4 bytes). + Removing p8p_demo.o(.revsh_text), (4 bytes). + Removing p8p_demo.o(i.Gpio_swire_output), (80 bytes). + Removing p8p_demo.o(i.Panel_CCM), (42 bytes). + Removing p8p_demo.o(i.REG_51_OFF_output), (60 bytes). + Removing p8p_demo.o(i.ap_dcs_set_exit_idle_mode), (104 bytes). + Removing p8p_demo.o(i.soft_te_timer_cb), (28 bytes). + Removing p8p_demo.o(i.soft_te_timer_init), (40 bytes). + Removing board.o(.rev16_text), (4 bytes). + Removing board.o(.revsh_text), (4 bytes). + Removing startup_armcm0.o(HEAP), (3072 bytes). + Removing hal_dsi_rx_ctrl.o(.rev16_text), (4 bytes). + Removing hal_dsi_rx_ctrl.o(.revsh_text), (4 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd), (220 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_short_cmd), (28 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init), (320 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern), (260 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_force_video_crtl), (12 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_compressen_en), (8 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback), (52 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_write_cmd_entry), (10 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_release_handle), (40 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart), (68 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack), (176 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter), (28 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc), (24 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk), (32 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter), (44 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_log_level), (8 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data), (240 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk), (72 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk), (56 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_input_frame_rate), (10 bytes). + Removing hal_dsi_tx_ctrl.o(.rev16_text), (4 bytes). + Removing hal_dsi_tx_ctrl.o(.revsh_text), (4 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode), (112 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick), (244 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_frame), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_get_disp_line), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable), (22 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable), (70 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd), (128 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_release_handle), (32 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_ccm), (8 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line), (36 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_endianness), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div), (52 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg), (28 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera), (68 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update), (16 bytes). + Removing hal_gpio.o(.rev16_text), (4 bytes). + Removing hal_gpio.o(.revsh_text), (4 bytes). + Removing hal_gpio.o(i.hal_gpio_get_input_data), (18 bytes). + Removing hal_gpio.o(i.hal_gpio_get_int_type), (20 bytes). + Removing hal_gpio.o(i.hal_gpio_get_pull_state), (40 bytes). + Removing hal_gpio.o(i.hal_gpio_set_driving_strength), (44 bytes). + Removing hal_gpio.o(i.hal_gpio_set_high_impedance), (32 bytes). + Removing hal_gpio.o(i.hal_gpio_set_pull_state), (72 bytes). + Removing hal_gpio.o(i.hal_gpio_set_schmitt_trigger), (52 bytes). + Removing hal_gpio.o(i.hal_gpio_set_slew_rate), (52 bytes). + Removing hal_gpio.o(.constdata), (78 bytes). + Removing hal_swire.o(.rev16_text), (4 bytes). + Removing hal_swire.o(.revsh_text), (4 bytes). + Removing hal_swire.o(i.hal_swire_register_callback), (22 bytes). + Removing hal_swire.o(i.hal_swire_set_waveform), (92 bytes). + Removing hal_system.o(.rev16_text), (4 bytes). + Removing hal_system.o(.revsh_text), (4 bytes). + Removing hal_system.o(i.hal_system_clear_debug_state), (10 bytes). + Removing hal_system.o(i.hal_system_disable_systick), (8 bytes). + Removing hal_system.o(i.hal_system_enable_systick), (8 bytes). + Removing hal_system.o(i.hal_system_get_debug_state), (8 bytes). + Removing hal_system.o(i.hal_system_get_tick), (8 bytes). + Removing hal_system.o(i.hal_system_idle_mode), (8 bytes). + Removing hal_system.o(i.hal_system_register_systick_cb), (8 bytes). + Removing hal_system.o(i.hal_system_reset_chip), (10 bytes). + Removing hal_timer.o(.rev16_text), (4 bytes). + Removing hal_timer.o(.revsh_text), (4 bytes). + Removing hal_timer.o(i.hal_timer_get_status), (8 bytes). + Removing hal_timer.o(i.hal_timer_start), (48 bytes). + Removing hal_timer.o(i.hal_timer_start_ex), (42 bytes). + Removing hal_timer.o(i.hal_timer_stop), (40 bytes). + Removing hal_pwr.o(.rev16_text), (4 bytes). + Removing hal_pwr.o(.revsh_text), (4 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_close), (10 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_ldo_en), (46 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_vol_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_get_reset_flag), (66 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo13s_en), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo13s_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo18s_en), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo18s_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_set_pvd), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_set_vcc_enable), (8 bytes). + Removing tau_delay.o(.rev16_text), (4 bytes). + Removing tau_delay.o(.revsh_text), (4 bytes). + Removing tau_log.o(.rev16_text), (4 bytes). + Removing tau_log.o(.revsh_text), (4 bytes). + Removing tau_log.o(i.fgetc), (72 bytes). + Removing hal_uart.o(.rev16_text), (4 bytes). + Removing hal_uart.o(.revsh_text), (4 bytes). + Removing hal_uart.o(i.hal_uart0_rx_dma_cb), (20 bytes). + Removing hal_uart.o(i.hal_uart0_tx_dma_cb), (36 bytes). + Removing hal_uart.o(i.hal_uart1_rx_dma_cb), (20 bytes). + Removing hal_uart.o(i.hal_uart1_tx_dma_cb), (36 bytes). + Removing hal_uart.o(i.hal_uart_deinit), (48 bytes). + Removing hal_uart.o(i.hal_uart_dma_path_close), (92 bytes). + Removing hal_uart.o(i.hal_uart_dma_recv), (276 bytes). + Removing hal_uart.o(i.hal_uart_dma_send), (280 bytes). + Removing hal_uart.o(i.hal_uart_recv_blocking), (28 bytes). + Removing hal_uart.o(i.hal_uart_recv_none_blocking), (28 bytes). + Removing hal_uart.o(i.hal_uart_send_none_blocking), (28 bytes). + Removing hal_internal_vsync.o(.rev16_text), (4 bytes). + Removing hal_internal_vsync.o(.revsh_text), (4 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_cmd_mode_rcv_te), (2 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback), (28 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual), (28 bytes). + Removing hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line), (60 bytes). + Removing hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate), (134 bytes). + Removing hal_internal_vsync.o(.data), (4 bytes). + Removing hal_internal_dcs.o(.rev16_text), (4 bytes). + Removing hal_internal_dcs.o(.revsh_text), (4 bytes). + Removing hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry), (12 bytes). + Removing hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode), (44 bytes). + Removing hal_internal_fb.o(.rev16_text), (4 bytes). + Removing hal_internal_fb.o(.revsh_text), (4 bytes). + Removing hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual), (480 bytes). + Removing hal_internal_fb.o(.conststring), (152 bytes). + Removing hal_internal_svs.o(.rev16_text), (4 bytes). + Removing hal_internal_svs.o(.revsh_text), (4 bytes). + Removing hal_internal_svs.o(i.hal_intl_svs_set_input_frate), (112 bytes). + Removing hal_internal_svs.o(i.hal_intl_svs_set_sync_coef), (12 bytes). + Removing drv_common.o(.rev16_text), (4 bytes). + Removing drv_common.o(.revsh_text), (4 bytes). + Removing drv_common.o(i.drv_common_disable_systick), (20 bytes). + Removing drv_common.o(i.drv_common_enable_systick), (88 bytes). + Removing drv_common.o(i.drv_common_get_tick), (12 bytes). + Removing drv_common.o(i.drv_common_idle_mode), (40 bytes). + Removing drv_common.o(i.drv_common_systick_register_cb), (12 bytes). + Removing drv_crgu.o(.rev16_text), (4 bytes). + Removing drv_crgu.o(.revsh_text), (4 bytes). + Removing drv_crgu.o(i.drv_crgu_clear_all_reset_flags), (12 bytes). + Removing drv_crgu.o(i.drv_crgu_clear_reset_flag), (20 bytes). + Removing drv_crgu.o(i.drv_crgu_get_all_reset_flag), (12 bytes). + Removing drv_crgu.o(i.drv_crgu_get_reset_flag), (24 bytes). + Removing drv_crgu.o(i.drv_crgu_get_system_clk), (104 bytes). + Removing drv_crgu.o(i.drv_crgu_reset_chip), (24 bytes). + Removing drv_crgu.o(i.drv_crgu_set_clock_src), (16 bytes). + Removing drv_dsc_dec.o(.rev16_text), (4 bytes). + Removing drv_dsc_dec.o(.revsh_text), (4 bytes). + Removing drv_gpio.o(.rev16_text), (4 bytes). + Removing drv_gpio.o(.revsh_text), (4 bytes). + Removing drv_gpio.o(i.drv_gpio_get_attribute), (16 bytes). + Removing drv_gpio.o(i.drv_gpio_get_input_data), (24 bytes). + Removing drv_gpio.o(i.drv_gpio_set_attribute), (28 bytes). + Removing drv_pwr.o(.rev16_text), (4 bytes). + Removing drv_pwr.o(.revsh_text), (4 bytes). + Removing drv_pwr.o(i.drv_pwr_10bit_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_analog_pwm_en), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_charge_pump_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_close_iov18_tp18), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_dsc_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_elvcc_pwm_en), (124 bytes). + Removing drv_pwr.o(i.drv_pwr_enter_sleep_mode), (152 bytes). + Removing drv_pwr.o(i.drv_pwr_exit_sleep_mode_ex), (40 bytes). + Removing drv_pwr.o(i.drv_pwr_fb_pd), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_get_wakeflag), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_get_write_lock_st), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_hf_frm_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_10M_clock), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel), (60 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_mode_sel), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_voltage_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo11d_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo13s_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo13s_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo15_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo18s_en), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo18s_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ltpo_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_osc32k_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_osc80m_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_p3k_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_por_mode_flag), (32 bytes). + Removing drv_pwr.o(i.drv_pwr_power_in), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_power_ready_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_power_sel), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_pwm_output_pwm_led), (56 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_driver_current_Big_step), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_driver_current_small_step), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_electric_current), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_open_drain), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_ram_pd_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_read_boot_chipst), (12 bytes). + Removing drv_pwr.o(i.drv_pwr_read_chipcfg), (12 bytes). + Removing drv_pwr.o(i.drv_pwr_rgbr_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ap_rst_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ldo11_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ldo15_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_pvd), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_set_pvd_mode), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_set_system_clk), (32 bytes). + Removing drv_pwr.o(i.drv_pwr_sw_tp18_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_wakeflag_get), (16 bytes). + Removing drv_swire.o(.rev16_text), (4 bytes). + Removing drv_swire.o(.revsh_text), (4 bytes). + Removing drv_sys_cfg.o(.rev16_text), (4 bytes). + Removing drv_sys_cfg.o(.revsh_text), (4 bytes). + Removing drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req), (128 bytes). + Removing drv_timer.o(.rev16_text), (4 bytes). + Removing drv_timer.o(.revsh_text), (4 bytes). + Removing drv_timer.o(i.drv_timer_get_status), (38 bytes). + Removing drv_timer.o(i.drv_timer_register_callback), (20 bytes). + Removing dcs_packet_fifo.o(.rev16_text), (4 bytes). + Removing dcs_packet_fifo.o(.revsh_text), (4 bytes). + Removing dcs_packet_fifo.o(i.dcs_packet_get_fifo_size), (16 bytes). + Removing drv_se.o(.rev16_text), (4 bytes). + Removing drv_se.o(.revsh_text), (4 bytes). + Removing drv_dsi_rx.o(.rev16_text), (4 bytes). + Removing drv_dsi_rx.o(.revsh_text), (4 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_force_video_crtl), (28 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_lpdt_fifo_status), (16 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_phy_stopstate), (68 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_version), (12 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_pg_cfg), (24 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level), (12 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_pg_cfg), (48 bytes). + Removing drv_dsi_tx.o(.rev16_text), (4 bytes). + Removing drv_dsi_tx.o(.revsh_text), (4 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_command_get_payload), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_force_interrupt), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_get_phy_status), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_forcepll), (16 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_start), (24 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock), (16 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot), (68 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_trigger), (92 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter), (296 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit), (228 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_sdf_3d), (32 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_set_bta), (28 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_set_vpg), (100 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_version), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_vid_shadow), (20 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_clear), (16 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_lock), (32 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_read), (16 bytes). + Removing drv_lcdc.o(.rev16_text), (4 bytes). + Removing drv_lcdc.o(.revsh_text), (4 bytes). + Removing drv_lcdc.o(i.drv_lcdc_clear_irq), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_dpisignal_output_ctrl), (44 bytes). + Removing drv_lcdc.o(i.drv_lcdc_fixed_frame_output), (56 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_dpbuf_num), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_dpi_status), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_frame_clk_count), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_int_en_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_int_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_line_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_rgb2pen_subpixel), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_part_display_config), (52 bytes). + Removing drv_lcdc.o(i.drv_lcdc_pixel_value_config), (32 bytes). + Removing drv_lcdc.o(i.drv_lcdc_rd_st_line_config), (28 bytes). + Removing drv_lcdc.o(i.drv_lcdc_software_reset), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_update_shadow_reg), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_vid_sw_start), (56 bytes). + Removing drv_memc.o(.rev16_text), (4 bytes). + Removing drv_memc.o(.revsh_text), (4 bytes). + Removing drv_memc.o(i.drv_memc_set_db_frm_time), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_db_int_frame), (36 bytes). + Removing drv_memc.o(i.drv_memc_set_double_buffer_reverse), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_fb_pri), (44 bytes). + Removing drv_memc.o(i.drv_memc_set_fb_remaining_line_trigger), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_inten), (28 bytes). + Removing drv_memc.o(i.drv_memc_set_read_trigger_line), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_te_ind), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_tear_hwclr), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_vidc_fb_arb), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_write_trigger_line), (24 bytes). + Removing drv_rxbr.o(.rev16_text), (4 bytes). + Removing drv_rxbr.o(.revsh_text), (4 bytes). + Removing drv_rxbr.o(i.drv_rxbr_clr_swp_cnt), (16 bytes). + Removing drv_rxbr.o(i.drv_rxbr_dsc_flush), (24 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_col_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_cur_hline_rcv_cnt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_frame_data_interval), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_hline_dcat), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_ipi_vsync_interval), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_page_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_pix_fmt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_swpxl_cnt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_hline_rcv0_cfg), (20 bytes). + Removing drv_rxbr.o(i.drv_rxbr_register_irq0_callback), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_ack_pkt_md), (28 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_cmd_filter), (320 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_cmd_response), (324 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_col_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_compress), (32 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_data_catch_hline), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_page_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_swpxl_data), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_tmpdith_bp), (28 bytes). + Removing drv_rxbr.o(i.drv_rxbr_soft_reset), (32 bytes). + Removing drv_rxbr.o(i.drv_rxbr_sw_reset), (164 bytes). + Removing drv_rxbr.o(i.drv_rxbr_swpxl_clr), (32 bytes). + Removing drv_vidc.o(.rev16_text), (4 bytes). + Removing drv_vidc.o(.revsh_text), (4 bytes). + Removing drv_vidc.o(i.drv_vidc_clear_status0), (20 bytes). + Removing drv_vidc.o(i.drv_vidc_debug_cap_pixel), (28 bytes). + Removing drv_vidc.o(i.drv_vidc_debug_signal_frame), (36 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status0), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status1), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status2), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_dsc_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_frmst_latency), (20 bytes). + Removing drv_vidc.o(i.drv_vidc_set_inff_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_irq_line), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_set_module_enable), (28 bytes). + Removing drv_vidc.o(i.drv_vidc_set_outff_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_update_src_format), (20 bytes). + Removing drv_dma.o(.rev16_text), (4 bytes). + Removing drv_dma.o(.revsh_text), (4 bytes). + Removing drv_dma.o(i.drv_dma_apply_handle), (304 bytes). + Removing drv_dma.o(i.drv_dma_deinit), (52 bytes). + Removing drv_dma.o(i.drv_dma_disable), (20 bytes). + Removing drv_dma.o(i.drv_dma_disable_int), (40 bytes). + Removing drv_dma.o(i.drv_dma_enable), (36 bytes). + Removing drv_dma.o(i.drv_dma_enable_int), (68 bytes). + Removing drv_dma.o(i.drv_dma_get_remaining_trans_num), (20 bytes). + Removing drv_dma.o(i.drv_dma_get_status), (20 bytes). + Removing drv_dma.o(i.drv_dma_init), (22 bytes). + Removing drv_dma.o(i.drv_dma_int_list_delete), (88 bytes). + Removing drv_dma.o(i.drv_dma_int_list_inset), (48 bytes). + Removing drv_dma.o(i.drv_dma_register_callback), (4 bytes). + Removing drv_dma.o(i.drv_dma_reset), (36 bytes). + Removing drv_dma.o(i.drv_dma_set_bitwide), (56 bytes). + Removing drv_dma.o(i.drv_dma_set_burst), (20 bytes). + Removing drv_dma.o(i.drv_dma_set_circle_mode), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_dir), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_increment), (72 bytes). + Removing drv_dma.o(i.drv_dma_set_mem_trans_info), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_mem_trans_offset), (24 bytes). + Removing drv_dma.o(i.drv_dma_set_per_address), (20 bytes). + Removing drv_dma.o(i.drv_dma_set_priority), (32 bytes). + Removing drv_dma.o(i.drv_dma_set_tran_int_cnt), (28 bytes). + Removing drv_dma.o(i.drv_dma_update_handle_setting), (148 bytes). + Removing drv_dma.o(i.drv_dma_update_req_by_default), (40 bytes). + Removing drv_dma.o(.constdata), (136 bytes). + Removing drv_uart.o(.rev16_text), (4 bytes). + Removing drv_uart.o(.revsh_text), (4 bytes). + Removing drv_uart.o(i.drv_uart_deinit), (60 bytes). + Removing drv_uart.o(i.drv_uart_get_def_cfg), (72 bytes). + Removing drv_uart.o(i.drv_uart_recv_blocking), (48 bytes). + Removing drv_uart.o(i.drv_uart_recv_none_blocking), (60 bytes). + Removing drv_uart.o(i.drv_uart_send_none_blocking), (60 bytes). + Removing drv_efuse.o(.rev16_text), (4 bytes). + Removing drv_efuse.o(.revsh_text), (4 bytes). + Removing drv_efuse.o(i.drv_efuse_crc_cal), (128 bytes). + Removing drv_efuse.o(i.drv_efuse_get_default_config), (26 bytes). + Removing drv_efuse.o(i.drv_efuse_int_disable), (12 bytes). + Removing drv_efuse.o(i.drv_efuse_write), (56 bytes). + Removing drv_efuse.o(i.drv_efuse_write_read_req_clear), (22 bytes). + Removing drv_efuse.o(i.drv_efuse_write_req), (22 bytes). + Removing drv_phy_common.o(.rev16_text), (4 bytes). + Removing drv_phy_common.o(.revsh_text), (4 bytes). + Removing drv_per_common.o(.rev16_text), (4 bytes). + Removing drv_per_common.o(.revsh_text), (4 bytes). + Removing drv_per_common.o(i.drv_per_get_system_clk), (8 bytes). + Removing drv_per_common.o(i.drv_per_reset_module), (14 bytes). + Removing drv_per_common.o(i.drv_per_set_clock), (14 bytes). + +374 unused section(s) (total 17522 bytes) removed from the image. + +============================================================================== + +Image Symbol Table + + Local Symbols + + Symbol Name Value Ov Type Size Object(Section) + + ../clib/../cmprslib/zerorunl2.c 0x00000000 Number 0 __dczerorl2.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 idiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE + ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE + ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE + ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE + ../fplib/microlib/d2f.c 0x00000000 Number 0 d2f.o ABSOLUTE + ../fplib/microlib/f2d.c 0x00000000 Number 0 f2d.o ABSOLUTE + ../fplib/microlib/fpadd.c 0x00000000 Number 0 fadd.o ABSOLUTE + ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixui.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixui.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 fmul.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE + ../fplib/microlib/fpscalb.c 0x00000000 Number 0 fscalb.o ABSOLUTE + ../mathlib/ceil.c 0x00000000 Number 0 ceil.o ABSOLUTE + ..\..\..\src\common\tau_delay.c 0x00000000 Number 0 tau_delay.o ABSOLUTE + ..\..\..\src\common\tau_log.c 0x00000000 Number 0 tau_log.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_common.c 0x00000000 Number 0 drv_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_crgu.c 0x00000000 Number 0 drv_crgu.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dma.c 0x00000000 Number 0 drv_dma.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsc_dec.c 0x00000000 Number 0 drv_dsc_dec.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsi_rx.c 0x00000000 Number 0 drv_dsi_rx.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsi_tx.c 0x00000000 Number 0 drv_dsi_tx.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_efuse.c 0x00000000 Number 0 drv_efuse.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_gpio.c 0x00000000 Number 0 drv_gpio.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_lcdc.c 0x00000000 Number 0 drv_lcdc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_memc.c 0x00000000 Number 0 drv_memc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_per_common.c 0x00000000 Number 0 drv_per_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_phy_common.c 0x00000000 Number 0 drv_phy_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_pwr.c 0x00000000 Number 0 drv_pwr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_rxbr.c 0x00000000 Number 0 drv_rxbr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_swire.c 0x00000000 Number 0 drv_swire.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_sys_cfg.c 0x00000000 Number 0 drv_sys_cfg.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_timer.c 0x00000000 Number 0 drv_timer.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_uart.c 0x00000000 Number 0 drv_uart.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_vidc.c 0x00000000 Number 0 drv_vidc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_dsi_rx_ctrl.c 0x00000000 Number 0 hal_dsi_rx_ctrl.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_dsi_tx_ctrl.c 0x00000000 Number 0 hal_dsi_tx_ctrl.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_swire.c 0x00000000 Number 0 hal_swire.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_system.c 0x00000000 Number 0 hal_system.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_timer.c 0x00000000 Number 0 hal_timer.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_uart.c 0x00000000 Number 0 hal_uart.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\dcs_packet_fifo.c 0x00000000 Number 0 dcs_packet_fifo.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_dcs.c 0x00000000 Number 0 hal_internal_dcs.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_fb.c 0x00000000 Number 0 hal_internal_fb.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_svs.c 0x00000000 Number 0 hal_internal_svs.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_vsync.c 0x00000000 Number 0 hal_internal_vsync.o ABSOLUTE + ..\..\..\src\driver\cuckoo\src\drv_se.c 0x00000000 Number 0 drv_se.o ABSOLUTE + ..\..\src\app\P8P\p8p_demo.c 0x00000000 Number 0 p8p_demo.o ABSOLUTE + ..\..\src\app\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\..\src\board\board.c 0x00000000 Number 0 board.o ABSOLUTE + ..\..\src\board\startup\startup_ARMCM0.s 0x00000000 Number 0 startup_armcm0.o ABSOLUTE + ..\\..\\..\\src\\common\\tau_delay.c 0x00000000 Number 0 tau_delay.o ABSOLUTE + ..\\..\\..\\src\\common\\tau_log.c 0x00000000 Number 0 tau_log.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_common.c 0x00000000 Number 0 drv_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_crgu.c 0x00000000 Number 0 drv_crgu.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dma.c 0x00000000 Number 0 drv_dma.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsc_dec.c 0x00000000 Number 0 drv_dsc_dec.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsi_rx.c 0x00000000 Number 0 drv_dsi_rx.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsi_tx.c 0x00000000 Number 0 drv_dsi_tx.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_efuse.c 0x00000000 Number 0 drv_efuse.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_gpio.c 0x00000000 Number 0 drv_gpio.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_lcdc.c 0x00000000 Number 0 drv_lcdc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_memc.c 0x00000000 Number 0 drv_memc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_per_common.c 0x00000000 Number 0 drv_per_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_phy_common.c 0x00000000 Number 0 drv_phy_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_pwr.c 0x00000000 Number 0 drv_pwr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_rxbr.c 0x00000000 Number 0 drv_rxbr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_swire.c 0x00000000 Number 0 drv_swire.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_sys_cfg.c 0x00000000 Number 0 drv_sys_cfg.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_timer.c 0x00000000 Number 0 drv_timer.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_uart.c 0x00000000 Number 0 drv_uart.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_vidc.c 0x00000000 Number 0 drv_vidc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_dsi_rx_ctrl.c 0x00000000 Number 0 hal_dsi_rx_ctrl.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_dsi_tx_ctrl.c 0x00000000 Number 0 hal_dsi_tx_ctrl.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_swire.c 0x00000000 Number 0 hal_swire.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_system.c 0x00000000 Number 0 hal_system.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_timer.c 0x00000000 Number 0 hal_timer.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_uart.c 0x00000000 Number 0 hal_uart.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\dcs_packet_fifo.c 0x00000000 Number 0 dcs_packet_fifo.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_dcs.c 0x00000000 Number 0 hal_internal_dcs.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_fb.c 0x00000000 Number 0 hal_internal_fb.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_svs.c 0x00000000 Number 0 hal_internal_svs.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_vsync.c 0x00000000 Number 0 hal_internal_vsync.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\src\\drv_se.c 0x00000000 Number 0 drv_se.o ABSOLUTE + ..\\..\\src\\app\\P8P\\p8p_demo.c 0x00000000 Number 0 p8p_demo.o ABSOLUTE + ..\\..\\src\\app\\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\\..\\src\\board\\board.c 0x00000000 Number 0 board.o ABSOLUTE + cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE + cfcmple.s 0x00000000 Number 0 cfcmple.o ABSOLUTE + cfrcmple.s 0x00000000 Number 0 cfrcmple.o ABSOLUTE + dc.s 0x00000000 Number 0 dc.o ABSOLUTE + handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE + init.s 0x00000000 Number 0 init.o ABSOLUTE + RESET 0x00010000 Section 192 startup_armcm0.o(RESET) + .ARM.Collect$$$$00000000 0x000100c0 Section 0 entry.o(.ARM.Collect$$$$00000000) + .ARM.Collect$$$$00000001 0x000100c0 Section 4 entry2.o(.ARM.Collect$$$$00000001) + .ARM.Collect$$$$00000004 0x000100c4 Section 4 entry5.o(.ARM.Collect$$$$00000004) + .ARM.Collect$$$$00000008 0x000100c8 Section 0 entry7b.o(.ARM.Collect$$$$00000008) + .ARM.Collect$$$$0000000A 0x000100c8 Section 0 entry8b.o(.ARM.Collect$$$$0000000A) + .ARM.Collect$$$$0000000B 0x000100c8 Section 8 entry9a.o(.ARM.Collect$$$$0000000B) + .ARM.Collect$$$$0000000D 0x000100d0 Section 0 entry10a.o(.ARM.Collect$$$$0000000D) + .ARM.Collect$$$$0000000F 0x000100d0 Section 0 entry11a.o(.ARM.Collect$$$$0000000F) + .ARM.Collect$$$$00002712 0x000100d0 Section 4 entry2.o(.ARM.Collect$$$$00002712) + __lit__00000000 0x000100d0 Data 4 entry2.o(.ARM.Collect$$$$00002712) + .text 0x000100d4 Section 120 startup_armcm0.o(.text) + .text 0x0001014c Section 0 uidiv.o(.text) + .text 0x00010178 Section 0 idiv.o(.text) + .text 0x000101a0 Section 0 memcpya.o(.text) + .text 0x000101c4 Section 0 memseta.o(.text) + .text 0x000101e8 Section 0 strlen.o(.text) + .text 0x000101f6 Section 0 fadd.o(.text) + .text 0x000102a8 Section 0 fmul.o(.text) + .text 0x00010322 Section 0 fdiv.o(.text) + .text 0x0001039e Section 0 fscalb.o(.text) + .text 0x000103b8 Section 0 dadd.o(.text) + .text 0x0001051c Section 0 dmul.o(.text) + .text 0x000105ec Section 0 ffltui.o(.text) + .text 0x000105fc Section 0 dfltui.o(.text) + .text 0x00010618 Section 0 ffixui.o(.text) + .text 0x00010640 Section 0 dfixui.o(.text) + .text 0x0001067c Section 0 f2d.o(.text) + .text 0x000106a4 Section 0 d2f.o(.text) + .text 0x000106dc Section 20 cfcmple.o(.text) + .text 0x000106f0 Section 20 cfrcmple.o(.text) + .text 0x00010704 Section 0 uldiv.o(.text) + .text 0x00010764 Section 0 llshl.o(.text) + .text 0x00010784 Section 0 llushr.o(.text) + .text 0x000107a6 Section 0 llsshr.o(.text) + .text 0x000107cc Section 0 iusefp.o(.text) + .text 0x000107cc Section 0 fepilogue.o(.text) + .text 0x0001084e Section 0 depilogue.o(.text) + .text 0x0001090c Section 0 ddiv.o(.text) + .text 0x000109fc Section 0 dfixul.o(.text) + .text 0x00010a3c Section 40 cdrcmple.o(.text) + .text 0x00010a64 Section 36 init.o(.text) + .text 0x00010a88 Section 0 __dczerorl2.o(.text) + i.AP_NRESET_IRQn_Handler 0x00010ae0 Section 0 drv_gpio.o(i.AP_NRESET_IRQn_Handler) + i.DMA_IRQn_Handler 0x00010afc Section 0 drv_dma.o(i.DMA_IRQn_Handler) + i.EXTI_INT0_IRQn_Handler 0x00010b58 Section 0 drv_gpio.o(i.EXTI_INT0_IRQn_Handler) + i.EXTI_INT1_IRQn_Handler 0x00010b62 Section 0 drv_gpio.o(i.EXTI_INT1_IRQn_Handler) + i.EXTI_INT2_IRQn_Handler 0x00010b6c Section 0 drv_gpio.o(i.EXTI_INT2_IRQn_Handler) + i.EXTI_INT3_IRQn_Handler 0x00010b76 Section 0 drv_gpio.o(i.EXTI_INT3_IRQn_Handler) + i.EXTI_INT4_IRQn_Handler 0x00010b80 Section 0 drv_gpio.o(i.EXTI_INT4_IRQn_Handler) + i.EXTI_INT5_IRQn_Handler 0x00010b8a Section 0 drv_gpio.o(i.EXTI_INT5_IRQn_Handler) + i.EXTI_INT6_IRQn_Handler 0x00010b94 Section 0 drv_gpio.o(i.EXTI_INT6_IRQn_Handler) + i.EXTI_INT7_IRQn_Handler 0x00010b9e Section 0 drv_gpio.o(i.EXTI_INT7_IRQn_Handler) + i.HardFault_Handler 0x00010ba8 Section 0 drv_common.o(i.HardFault_Handler) + i.LCDC_IRQn_Handler 0x00010bf0 Section 0 hal_internal_vsync.o(i.LCDC_IRQn_Handler) + i.MEMC_IRQn_Handler 0x00010cf0 Section 0 drv_memc.o(i.MEMC_IRQn_Handler) + i.MIPI_TX_IRQn_Handler 0x00010d8c Section 0 drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) + i.SWIRE_IRQn_Handler 0x00010e44 Section 0 drv_swire.o(i.SWIRE_IRQn_Handler) + i.SysTick_Handler 0x00010e74 Section 0 drv_common.o(i.SysTick_Handler) + i.TIMER0_IRQn_Handler 0x00010e8c Section 0 drv_timer.o(i.TIMER0_IRQn_Handler) + i.TIMER1_IRQn_Handler 0x00010e96 Section 0 drv_timer.o(i.TIMER1_IRQn_Handler) + i.TIMER2_IRQn_Handler 0x00010ea0 Section 0 drv_timer.o(i.TIMER2_IRQn_Handler) + i.TIMER3_IRQn_Handler 0x00010eaa Section 0 drv_timer.o(i.TIMER3_IRQn_Handler) + i.VIDC_IRQn_Handler 0x00010eb4 Section 0 drv_vidc.o(i.VIDC_IRQn_Handler) + i.VPRE1_IRQn_Handler 0x00010ed0 Section 0 drv_rxbr.o(i.VPRE1_IRQn_Handler) + i.VPRE_IRQn_Handler 0x00010eec Section 0 hal_internal_dcs.o(i.VPRE_IRQn_Handler) + i.__0printf 0x00010f68 Section 0 printfa.o(i.__0printf) + i.__0vsprintf 0x00010f88 Section 0 printfa.o(i.__0vsprintf) + i.__ARM_clz 0x00010fac Section 0 depilogue.o(i.__ARM_clz) + i.__ARM_common_switch8 0x00010fda Section 0 hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) + i.__scatterload_null 0x00010ff4 Section 2 handlers.o(i.__scatterload_null) + i._sputc 0x00010ff6 Section 0 printfa.o(i._sputc) + _sputc 0x00010ff7 Thumb Code 10 printfa.o(i._sputc) + .ARM.__at_0x11000 0x00011000 Section 28 drv_common.o(.ARM.__at_0x11000) + .ARM.__at_0x1101C 0x0001101c Section 16 tau_log.o(.ARM.__at_0x1101C) + .ARM.__at_0x1102C 0x0001102c Section 22 hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) + i.MIPI_RX_IRQn_Handler 0x00011044 Section 0 drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) + i.UART_IRQn_Handler 0x000113a8 Section 0 drv_uart.o(i.UART_IRQn_Handler) + i.__NVIC_DisableIRQ 0x00011528 Section 0 drv_rxbr.o(i.__NVIC_DisableIRQ) + __NVIC_DisableIRQ 0x00011529 Thumb Code 26 drv_rxbr.o(i.__NVIC_DisableIRQ) + i.__NVIC_EnableIRQ 0x00011548 Section 0 drv_rxbr.o(i.__NVIC_EnableIRQ) + __NVIC_EnableIRQ 0x00011549 Thumb Code 18 drv_rxbr.o(i.__NVIC_EnableIRQ) + i.__scatterload_copy 0x00011560 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_zeroinit 0x0001156e Section 14 handlers.o(i.__scatterload_zeroinit) + i._fp_digits 0x0001157c Section 0 printfa.o(i._fp_digits) + _fp_digits 0x0001157d Thumb Code 344 printfa.o(i._fp_digits) + i._printf_core 0x000116f0 Section 0 printfa.o(i._printf_core) + _printf_core 0x000116f1 Thumb Code 1754 printfa.o(i._printf_core) + i._printf_post_padding 0x00011ddc Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x00011ddd Thumb Code 32 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x00011dfc Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x00011dfd Thumb Code 44 printfa.o(i._printf_pre_padding) + i.ap_dcs_read 0x00011e28 Section 0 p8p_demo.o(i.ap_dcs_read) + ap_dcs_read 0x00011e29 Thumb Code 280 p8p_demo.o(i.ap_dcs_read) + i.ap_dcs_set_backlight 0x00011f6c Section 0 p8p_demo.o(i.ap_dcs_set_backlight) + ap_dcs_set_backlight 0x00011f6d Thumb Code 146 p8p_demo.o(i.ap_dcs_set_backlight) + i.ap_dcs_set_display_off 0x00012010 Section 0 p8p_demo.o(i.ap_dcs_set_display_off) + ap_dcs_set_display_off 0x00012011 Thumb Code 34 p8p_demo.o(i.ap_dcs_set_display_off) + i.ap_dcs_set_display_on 0x00012058 Section 0 p8p_demo.o(i.ap_dcs_set_display_on) + ap_dcs_set_display_on 0x00012059 Thumb Code 90 p8p_demo.o(i.ap_dcs_set_display_on) + i.ap_dcs_set_enter_sleep_mode 0x000120f8 Section 0 p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) + ap_dcs_set_enter_sleep_mode 0x000120f9 Thumb Code 104 p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) + i.ap_dcs_set_exit_sleep_mode 0x0001218c Section 0 p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) + ap_dcs_set_exit_sleep_mode 0x0001218d Thumb Code 28 p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) + i.ap_dcs_set_frame_change 0x000121cc Section 0 p8p_demo.o(i.ap_dcs_set_frame_change) + ap_dcs_set_frame_change 0x000121cd Thumb Code 46 p8p_demo.o(i.ap_dcs_set_frame_change) + i.ap_rstn_pull_down_cb 0x00012200 Section 0 p8p_demo.o(i.ap_rstn_pull_down_cb) + ap_rstn_pull_down_cb 0x00012201 Thumb Code 38 p8p_demo.o(i.ap_rstn_pull_down_cb) + i.ap_rstn_pull_high_cb 0x00012258 Section 0 p8p_demo.o(i.ap_rstn_pull_high_cb) + ap_rstn_pull_high_cb 0x00012259 Thumb Code 22 p8p_demo.o(i.ap_rstn_pull_high_cb) + i.ap_set_FPS_53 0x00012274 Section 0 p8p_demo.o(i.ap_set_FPS_53) + ap_set_FPS_53 0x00012275 Thumb Code 74 p8p_demo.o(i.ap_set_FPS_53) + i.app_display_init 0x000122be Section 0 p8p_demo.o(i.app_display_init) + i.app_gpio_init 0x000122ec Section 0 p8p_demo.o(i.app_gpio_init) + i.app_init_panel 0x00012308 Section 0 p8p_demo.o(i.app_init_panel) + app_init_panel 0x00012309 Thumb Code 42 p8p_demo.o(i.app_init_panel) + i.app_mipi_rx_init 0x0001233c Section 0 p8p_demo.o(i.app_mipi_rx_init) + app_mipi_rx_init 0x0001233d Thumb Code 232 p8p_demo.o(i.app_mipi_rx_init) + i.app_mipi_tx_init 0x0001245c Section 0 p8p_demo.o(i.app_mipi_tx_init) + app_mipi_tx_init 0x0001245d Thumb Code 214 p8p_demo.o(i.app_mipi_tx_init) + i.app_mipi_tx_start 0x0001255c Section 0 p8p_demo.o(i.app_mipi_tx_start) + app_mipi_tx_start 0x0001255d Thumb Code 118 p8p_demo.o(i.app_mipi_tx_start) + i.app_system_process 0x00012608 Section 0 p8p_demo.o(i.app_system_process) + app_system_process 0x00012609 Thumb Code 60 p8p_demo.o(i.app_system_process) + i.app_system_resume 0x00012674 Section 0 p8p_demo.o(i.app_system_resume) + app_system_resume 0x00012675 Thumb Code 30 p8p_demo.o(i.app_system_resume) + i.app_system_suspend 0x000126b8 Section 0 p8p_demo.o(i.app_system_suspend) + app_system_suspend 0x000126b9 Thumb Code 202 p8p_demo.o(i.app_system_suspend) + i.app_tx_panel_reset 0x00012848 Section 0 p8p_demo.o(i.app_tx_panel_reset) + app_tx_panel_reset 0x00012849 Thumb Code 46 p8p_demo.o(i.app_tx_panel_reset) + i.board_Init 0x00012878 Section 0 board.o(i.board_Init) + i.ceil 0x00012890 Section 0 ceil.o(i.ceil) + i.check_mipi_rx_tx_video_info 0x00012958 Section 0 hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) + check_mipi_rx_tx_video_info 0x00012959 Thumb Code 44 hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) + i.check_pkt_buf_rev 0x00012984 Section 0 hal_internal_dcs.o(i.check_pkt_buf_rev) + check_pkt_buf_rev 0x00012985 Thumb Code 84 hal_internal_dcs.o(i.check_pkt_buf_rev) + i.dcs_packet_fifo_alloc 0x00012a0c Section 0 dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) + i.dcs_packet_fifo_init 0x00012a64 Section 0 dcs_packet_fifo.o(i.dcs_packet_fifo_init) + i.dcs_packet_free_fifo_header 0x00012a7c Section 0 dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) + i.dcs_packet_get_fifo_header 0x00012ac0 Section 0 dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) + i.delayMs 0x00012ae4 Section 0 tau_delay.o(i.delayMs) + i.delayUs 0x00012afc Section 0 tau_delay.o(i.delayUs) + i.drv_common_system_init 0x00012b28 Section 0 drv_common.o(i.drv_common_system_init) + i.drv_crgu_enable_clock 0x00012b30 Section 0 drv_crgu.o(i.drv_crgu_enable_clock) + i.drv_crgu_get_rxbr_clk 0x00012b6c Section 0 drv_crgu.o(i.drv_crgu_get_rxbr_clk) + i.drv_crgu_reset_modules 0x00012bd4 Section 0 drv_crgu.o(i.drv_crgu_reset_modules) + i.drv_crgu_set_ahb_clk 0x00012be4 Section 0 drv_crgu.o(i.drv_crgu_set_ahb_clk) + i.drv_crgu_set_clock_div 0x00012c0c Section 0 drv_crgu.o(i.drv_crgu_set_clock_div) + i.drv_crgu_set_dpi_clk 0x00012c1c Section 0 drv_crgu.o(i.drv_crgu_set_dpi_clk) + i.drv_crgu_set_dsc_clk 0x00012c58 Section 0 drv_crgu.o(i.drv_crgu_set_dsc_clk) + i.drv_crgu_set_fb_clk 0x00012c90 Section 0 drv_crgu.o(i.drv_crgu_set_fb_clk) + i.drv_crgu_set_lcdc_clk 0x00012cb8 Section 0 drv_crgu.o(i.drv_crgu_set_lcdc_clk) + i.drv_crgu_set_reset 0x00012ce0 Section 0 drv_crgu.o(i.drv_crgu_set_reset) + i.drv_crgu_set_rxbr_clk 0x00012cf8 Section 0 drv_crgu.o(i.drv_crgu_set_rxbr_clk) + i.drv_crgu_set_vidc_clk 0x00012d20 Section 0 drv_crgu.o(i.drv_crgu_set_vidc_clk) + i.drv_dma_clear_status 0x00012d48 Section 0 drv_dma.o(i.drv_dma_clear_status) + i.drv_dma_get_int_source 0x00012d60 Section 0 drv_dma.o(i.drv_dma_get_int_source) + drv_dma_get_int_source 0x00012d61 Thumb Code 16 drv_dma.o(i.drv_dma_get_int_source) + i.drv_dsc_dec_disable 0x00012d74 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_disable) + i.drv_dsc_dec_enable 0x00012d90 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_enable) + i.drv_dsc_dec_get_nslc 0x00012dc8 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) + i.drv_dsc_dec_set_irqen 0x00012de8 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) + i.drv_dsi_rx_calc_ipi_tx_delay 0x00012e04 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) + i.drv_dsi_rx_enable_irq 0x00012f10 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) + i.drv_dsi_rx_get_color_bpp 0x00012f50 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) + drv_dsi_rx_get_color_bpp 0x00012f51 Thumb Code 62 drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) + i.drv_dsi_rx_get_color_pcc 0x00012fa0 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) + drv_dsi_rx_get_color_pcc 0x00012fa1 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) + i.drv_dsi_rx_get_compression_en 0x00012fbc Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) + i.drv_dsi_rx_get_ddi_crc_en 0x00012fcc Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) + i.drv_dsi_rx_get_max_ret_size 0x00012fdc Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) + i.drv_dsi_rx_power_up 0x00012fe8 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_power_up) + i.drv_dsi_rx_set_check_crc 0x00013000 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) + i.drv_dsi_rx_set_ctrl_cfg 0x0001301c Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) + i.drv_dsi_rx_set_ddi_cfg 0x00013040 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) + i.drv_dsi_rx_set_ddi_crc_en 0x00013050 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) + i.drv_dsi_rx_set_inten 0x0001306c Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_inten) + i.drv_dsi_rx_set_ipi_cfg 0x00013078 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) + i.drv_dsi_rx_set_ipi_ycbcr_frmt 0x00013088 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) + i.drv_dsi_rx_set_lane_swap 0x000130a4 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) + i.drv_dsi_rx_set_resp_cnt 0x000130b8 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) + i.drv_dsi_rx_set_tear_resp_en 0x000130dc Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) + i.drv_dsi_rx_set_up_phy 0x000130f8 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) + i.drv_dsi_rx_shut_down 0x000131f8 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_shut_down) + i.drv_dsi_tx_command_header 0x00013210 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_header) + i.drv_dsi_tx_command_mode_cfg 0x00013228 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) + i.drv_dsi_tx_command_put_payload 0x00013280 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) + i.drv_dsi_tx_config_eotp 0x0001328c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) + i.drv_dsi_tx_config_int 0x000132ac Section 0 drv_dsi_tx.o(i.drv_dsi_tx_config_int) + i.drv_dsi_tx_dpi_lpcmd_time 0x000132b8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) + i.drv_dsi_tx_dpi_mode 0x000132c8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) + i.drv_dsi_tx_dpi_polarity 0x000132d8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) + i.drv_dsi_tx_edpi_cmd_size 0x000132fc Section 0 drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) + i.drv_dsi_tx_get_cmd_status 0x00013308 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) + i.drv_dsi_tx_mode 0x00013314 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_mode) + i.drv_dsi_tx_phy_clock_lane_auto_lp 0x00013320 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) + i.drv_dsi_tx_phy_clock_lane_req_hs 0x0001333c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) + i.drv_dsi_tx_phy_lane_mode 0x0001335c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) + i.drv_dsi_tx_phy_status_ready 0x0001336c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) + i.drv_dsi_tx_phy_status_stopstate 0x000133d4 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) + i.drv_dsi_tx_phy_test_setup 0x00013418 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) + i.drv_dsi_tx_phy_time_cfg 0x00013568 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) + i.drv_dsi_tx_powerup 0x00013588 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_powerup) + i.drv_dsi_tx_response_mode 0x00013594 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_response_mode) + i.drv_dsi_tx_set_bta_ack 0x000135b8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) + i.drv_dsi_tx_set_esc_div 0x000135d4 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) + i.drv_dsi_tx_set_int 0x000135e8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_int) + i.drv_dsi_tx_set_time_out_div 0x00013628 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) + i.drv_dsi_tx_set_video_chunk 0x00013640 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) + i.drv_dsi_tx_set_video_timing 0x00013654 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) + i.drv_dsi_tx_shutdown 0x00013678 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_shutdown) + i.drv_dsi_tx_timeout_cfg 0x00013684 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) + i.drv_dsi_tx_video_mode_cfg 0x000136b0 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) + i.drv_efuse_enter_inactive 0x00013798 Section 0 drv_efuse.o(i.drv_efuse_enter_inactive) + i.drv_efuse_int_enable 0x000137ce Section 0 drv_efuse.o(i.drv_efuse_int_enable) + i.drv_efuse_read 0x000137da Section 0 drv_efuse.o(i.drv_efuse_read) + i.drv_efuse_read_req 0x00013814 Section 0 drv_efuse.o(i.drv_efuse_read_req) + i.drv_gpio_handle_int 0x0001382c Section 0 drv_gpio.o(i.drv_gpio_handle_int) + drv_gpio_handle_int 0x0001382d Thumb Code 30 drv_gpio.o(i.drv_gpio_handle_int) + i.drv_gpio_register_ap_reset_callback 0x00013850 Section 0 drv_gpio.o(i.drv_gpio_register_ap_reset_callback) + i.drv_gpio_register_callback 0x0001385c Section 0 drv_gpio.o(i.drv_gpio_register_callback) + i.drv_gpio_set_int 0x00013870 Section 0 drv_gpio.o(i.drv_gpio_set_int) + i.drv_gpio_set_ioe 0x000138b4 Section 0 drv_gpio.o(i.drv_gpio_set_ioe) + i.drv_gpio_set_mode 0x000138d4 Section 0 drv_gpio.o(i.drv_gpio_set_mode) + i.drv_gpio_set_output_data 0x000138e8 Section 0 hal_gpio.o(i.drv_gpio_set_output_data) + drv_gpio_set_output_data 0x000138e9 Thumb Code 26 hal_gpio.o(i.drv_gpio_set_output_data) + i.drv_lcdc_bcsa_config 0x00013908 Section 0 drv_lcdc.o(i.drv_lcdc_bcsa_config) + i.drv_lcdc_cfg_int_frame 0x00013930 Section 0 drv_lcdc.o(i.drv_lcdc_cfg_int_frame) + i.drv_lcdc_clear_int 0x0001395c Section 0 drv_lcdc.o(i.drv_lcdc_clear_int) + drv_lcdc_clear_int 0x0001395d Thumb Code 20 drv_lcdc.o(i.drv_lcdc_clear_int) + i.drv_lcdc_cmd_start 0x00013974 Section 0 drv_lcdc.o(i.drv_lcdc_cmd_start) + i.drv_lcdc_config_acc_command_mode 0x000139a8 Section 0 drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) + i.drv_lcdc_config_int 0x000139bc Section 0 drv_lcdc.o(i.drv_lcdc_config_int) + i.drv_lcdc_config_int_single 0x000139f4 Section 0 drv_lcdc.o(i.drv_lcdc_config_int_single) + i.drv_lcdc_config_overwrite_rgb 0x00013a1c Section 0 drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) + i.drv_lcdc_config_src_parameter 0x00013a34 Section 0 drv_lcdc.o(i.drv_lcdc_config_src_parameter) + i.drv_lcdc_crop_hact 0x00013a84 Section 0 drv_lcdc.o(i.drv_lcdc_crop_hact) + i.drv_lcdc_ctrl_flow 0x00013a94 Section 0 drv_lcdc.o(i.drv_lcdc_ctrl_flow) + i.drv_lcdc_dith_config 0x00013acc Section 0 drv_lcdc.o(i.drv_lcdc_dith_config) + i.drv_lcdc_edge_dect_config 0x00013afc Section 0 drv_lcdc.o(i.drv_lcdc_edge_dect_config) + i.drv_lcdc_edge_enh_config 0x00013b38 Section 0 drv_lcdc.o(i.drv_lcdc_edge_enh_config) + i.drv_lcdc_enable_shadow_reg 0x00013b9c Section 0 drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) + i.drv_lcdc_endianness_config 0x00013bc0 Section 0 drv_lcdc.o(i.drv_lcdc_endianness_config) + i.drv_lcdc_fc_config 0x00013bdc Section 0 drv_lcdc.o(i.drv_lcdc_fc_config) + i.drv_lcdc_fldc_config 0x00013bfc Section 0 drv_lcdc.o(i.drv_lcdc_fldc_config) + i.drv_lcdc_function_disable 0x00013c20 Section 0 drv_lcdc.o(i.drv_lcdc_function_disable) + i.drv_lcdc_function_enable 0x00013c44 Section 0 drv_lcdc.o(i.drv_lcdc_function_enable) + i.drv_lcdc_set_int 0x00013c68 Section 0 drv_lcdc.o(i.drv_lcdc_set_int) + i.drv_lcdc_set_prefetch 0x00013ca4 Section 0 drv_lcdc.o(i.drv_lcdc_set_prefetch) + i.drv_lcdc_set_tear_line 0x00013cc0 Section 0 drv_lcdc.o(i.drv_lcdc_set_tear_line) + i.drv_lcdc_stop_display 0x00013cdc Section 0 drv_lcdc.o(i.drv_lcdc_stop_display) + i.drv_lcdc_vid_hw_start 0x00013cec Section 0 drv_lcdc.o(i.drv_lcdc_vid_hw_start) + i.drv_lcdc_vintp_mode_config 0x00013d28 Section 0 drv_lcdc.o(i.drv_lcdc_vintp_mode_config) + i.drv_memc_clear_status 0x00013d40 Section 0 drv_memc.o(i.drv_memc_clear_status) + i.drv_memc_enable_irq 0x00013d54 Section 0 drv_memc.o(i.drv_memc_enable_irq) + i.drv_memc_gen_a_tear_signal 0x00013d94 Section 0 drv_memc.o(i.drv_memc_gen_a_tear_signal) + i.drv_memc_get_status 0x00013da4 Section 0 drv_memc.o(i.drv_memc_get_status) + i.drv_memc_get_tear_mode 0x00013dbc Section 0 drv_memc.o(i.drv_memc_get_tear_mode) + i.drv_memc_rate_transfer_sel 0x00013dcc Section 0 drv_memc.o(i.drv_memc_rate_transfer_sel) + i.drv_memc_sel_vsync 0x00013de8 Section 0 drv_memc.o(i.drv_memc_sel_vsync) + i.drv_memc_set_active_height 0x00013dfc Section 0 drv_memc.o(i.drv_memc_set_active_height) + i.drv_memc_set_circ_mode_enable 0x00013e14 Section 0 drv_memc.o(i.drv_memc_set_circ_mode_enable) + i.drv_memc_set_data_mode 0x00013e30 Section 0 drv_memc.o(i.drv_memc_set_data_mode) + i.drv_memc_set_double_buffer 0x00013e44 Section 0 drv_memc.o(i.drv_memc_set_double_buffer) + i.drv_memc_set_frame_drop_select 0x00013e5c Section 0 drv_memc.o(i.drv_memc_set_frame_drop_select) + i.drv_memc_set_fs_en_conditions 0x00013e78 Section 0 drv_memc.o(i.drv_memc_set_fs_en_conditions) + i.drv_memc_set_lcdc_st_conditions 0x00013e90 Section 0 drv_memc.o(i.drv_memc_set_lcdc_st_conditions) + i.drv_memc_set_ltpo_mode 0x00013eac Section 0 drv_memc.o(i.drv_memc_set_ltpo_mode) + i.drv_memc_set_ltpo_pu_thres 0x00013ecc Section 0 drv_memc.o(i.drv_memc_set_ltpo_pu_thres) + i.drv_memc_set_tear_mode 0x00013ee4 Section 0 drv_memc.o(i.drv_memc_set_tear_mode) + i.drv_memc_set_tear_waveform 0x00013ef8 Section 0 drv_memc.o(i.drv_memc_set_tear_waveform) + i.drv_memc_set_vidc_sync_cnt 0x00013f24 Section 0 drv_memc.o(i.drv_memc_set_vidc_sync_cnt) + i.drv_phy_test_clear 0x00013f38 Section 0 drv_phy_common.o(i.drv_phy_test_clear) + i.drv_phy_test_lock 0x00013f48 Section 0 drv_phy_common.o(i.drv_phy_test_lock) + i.drv_pwr_efuse_pd 0x00013f60 Section 0 drv_pwr.o(i.drv_pwr_efuse_pd) + i.drv_pwr_enter_deep_sleep_mode 0x00013f90 Section 0 drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) + i.drv_pwr_enter_sleep_mode_ex 0x00013fdc Section 0 drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) + i.drv_pwr_enter_stop_sleep_mode 0x00014010 Section 0 drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) + i.drv_pwr_exit_sleep_mode 0x000140a8 Section 0 drv_pwr.o(i.drv_pwr_exit_sleep_mode) + i.drv_pwr_get_power_ready_st 0x000140d0 Section 0 drv_pwr.o(i.drv_pwr_get_power_ready_st) + i.drv_pwr_set_breath_screen_power_sel 0x000140e0 Section 0 drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) + i.drv_pwr_set_digit_power_sel 0x00014108 Section 0 drv_pwr.o(i.drv_pwr_set_digit_power_sel) + i.drv_pwr_set_pll_clk 0x00014130 Section 0 drv_pwr.o(i.drv_pwr_set_pll_clk) + i.drv_pwr_set_wakeup_type 0x00014164 Section 0 drv_pwr.o(i.drv_pwr_set_wakeup_type) + i.drv_pwr_write_lock 0x00014190 Section 0 drv_pwr.o(i.drv_pwr_write_lock) + i.drv_rxbr_clear_pkt_buffer 0x000141b0 Section 0 drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) + i.drv_rxbr_clear_status0 0x000141c0 Section 0 drv_rxbr.o(i.drv_rxbr_clear_status0) + i.drv_rxbr_enable_irq 0x000141cc Section 0 drv_rxbr.o(i.drv_rxbr_enable_irq) + i.drv_rxbr_frame_drop_cfg 0x00014228 Section 0 drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) + i.drv_rxbr_get_int_source 0x00014244 Section 0 hal_internal_vsync.o(i.drv_rxbr_get_int_source) + drv_rxbr_get_int_source 0x00014245 Thumb Code 20 hal_internal_vsync.o(i.drv_rxbr_get_int_source) + i.drv_rxbr_get_status0 0x0001425c Section 0 hal_internal_dcs.o(i.drv_rxbr_get_status0) + drv_rxbr_get_status0 0x0001425d Thumb Code 20 hal_internal_dcs.o(i.drv_rxbr_get_status0) + i.drv_rxbr_hline_rcv1_cfg 0x00014274 Section 0 drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) + i.drv_rxbr_hline_rcv_cfg 0x00014288 Section 0 drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) + i.drv_rxbr_register_irq1_callback 0x00014298 Section 0 drv_rxbr.o(i.drv_rxbr_register_irq1_callback) + i.drv_rxbr_set_ack_pkt_header 0x000142a4 Section 0 drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) + i.drv_rxbr_set_color_format 0x000142bc Section 0 drv_rxbr.o(i.drv_rxbr_set_color_format) + i.drv_rxbr_set_filter_regs 0x000142d8 Section 0 drv_rxbr.o(i.drv_rxbr_set_filter_regs) + i.drv_rxbr_set_inten 0x000142fc Section 0 drv_rxbr.o(i.drv_rxbr_set_inten) + i.drv_rxbr_set_ltpo_drop_th 0x00014318 Section 0 drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) + i.drv_rxbr_set_usr_cfg 0x00014330 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_cfg) + i.drv_rxbr_set_usr_col 0x00014370 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_col) + i.drv_rxbr_set_usr_row 0x00014380 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_row) + i.drv_se_init 0x00014390 Section 0 drv_se.o(i.drv_se_init) + i.drv_se_set_dsc 0x00014408 Section 0 drv_se.o(i.drv_se_set_dsc) + i.drv_se_set_lcdc 0x000144dc Section 0 drv_se.o(i.drv_se_set_lcdc) + i.drv_se_set_memc 0x00014564 Section 0 drv_se.o(i.drv_se_set_memc) + i.drv_se_set_rxbr 0x000145f4 Section 0 drv_se.o(i.drv_se_set_rxbr) + i.drv_se_set_vidc 0x000146c4 Section 0 drv_se.o(i.drv_se_set_vidc) + i.drv_se_start_rx 0x00014770 Section 0 drv_se.o(i.drv_se_start_rx) + i.drv_swire_enable 0x00014784 Section 0 drv_swire.o(i.drv_swire_enable) + i.drv_swire_get_pulse_count 0x000147a0 Section 0 drv_swire.o(i.drv_swire_get_pulse_count) + i.drv_swire_register_callback 0x000147ac Section 0 drv_swire.o(i.drv_swire_register_callback) + i.drv_swire_set_bit_time 0x000147b8 Section 0 drv_swire.o(i.drv_swire_set_bit_time) + i.drv_swire_set_int 0x000147d0 Section 0 drv_swire.o(i.drv_swire_set_int) + i.drv_swire_set_power_down 0x00014818 Section 0 drv_swire.o(i.drv_swire_set_power_down) + i.drv_swire_set_pulse_count 0x00014834 Section 0 drv_swire.o(i.drv_swire_set_pulse_count) + i.drv_swire_set_trig_mode 0x00014840 Section 0 drv_swire.o(i.drv_swire_set_trig_mode) + i.drv_sys_cfg_clear_all_int 0x0001485c Section 0 drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) + i.drv_sys_cfg_clear_pending 0x00014868 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) + i.drv_sys_cfg_sel_ap_rst_trig 0x00014890 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) + i.drv_sys_cfg_sel_gpio_group 0x000148b4 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) + i.drv_sys_cfg_sel_int_trig 0x000148d8 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) + i.drv_sys_cfg_sel_swire_timer 0x000148fc Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) + i.drv_sys_cfg_set_int 0x00014914 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_set_int) + i.drv_timer_clear_status_flags 0x00014938 Section 0 drv_timer.o(i.drv_timer_clear_status_flags) + drv_timer_clear_status_flags 0x00014939 Thumb Code 26 drv_timer.o(i.drv_timer_clear_status_flags) + i.drv_timer_enable 0x00014952 Section 0 drv_timer.o(i.drv_timer_enable) + i.drv_timer_get_instance 0x00014974 Section 0 drv_timer.o(i.drv_timer_get_instance) + i.drv_timer_handle_interrupt 0x00014984 Section 0 drv_timer.o(i.drv_timer_handle_interrupt) + drv_timer_handle_interrupt 0x00014985 Thumb Code 54 drv_timer.o(i.drv_timer_handle_interrupt) + i.drv_timer_set_compare_val 0x000149c0 Section 0 drv_timer.o(i.drv_timer_set_compare_val) + i.drv_timer_set_int 0x00014a00 Section 0 drv_timer.o(i.drv_timer_set_int) + i.drv_timer_set_prescaler 0x00014a48 Section 0 drv_timer.o(i.drv_timer_set_prescaler) + i.drv_timer_set_repeat 0x00014a70 Section 0 drv_timer.o(i.drv_timer_set_repeat) + i.drv_tx_phy_test_enter 0x00014a80 Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_enter) + i.drv_tx_phy_test_exit 0x00014aa0 Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_exit) + i.drv_tx_phy_test_write_code 0x00014ac0 Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_write_code) + i.drv_uart_abort_recv 0x00014ae8 Section 0 drv_uart.o(i.drv_uart_abort_recv) + i.drv_uart_abort_send 0x00014b1c Section 0 drv_uart.o(i.drv_uart_abort_send) + i.drv_uart_config_int 0x00014b50 Section 0 drv_uart.o(i.drv_uart_config_int) + i.drv_uart_enable_clk 0x00014b64 Section 0 drv_uart.o(i.drv_uart_enable_clk) + drv_uart_enable_clk 0x00014b65 Thumb Code 24 drv_uart.o(i.drv_uart_enable_clk) + i.drv_uart_enable_int 0x00014b7c Section 0 drv_uart.o(i.drv_uart_enable_int) + i.drv_uart_get_instance 0x00014bd8 Section 0 drv_uart.o(i.drv_uart_get_instance) + i.drv_uart_init 0x00014c00 Section 0 drv_uart.o(i.drv_uart_init) + i.drv_uart_int_trans_handle 0x00014cd0 Section 0 drv_uart.o(i.drv_uart_int_trans_handle) + drv_uart_int_trans_handle 0x00014cd1 Thumb Code 54 drv_uart.o(i.drv_uart_int_trans_handle) + i.drv_uart_reset_rx_fifo 0x00014d0c Section 0 drv_uart.o(i.drv_uart_reset_rx_fifo) + i.drv_uart_reset_tx_fifo 0x00014d28 Section 0 drv_uart.o(i.drv_uart_reset_tx_fifo) + i.drv_uart_send_blocking 0x00014d44 Section 0 drv_uart.o(i.drv_uart_send_blocking) + i.drv_uart_set_baud_rate 0x00014d5e Section 0 drv_uart.o(i.drv_uart_set_baud_rate) + i.drv_uart_trans_create_handle 0x00014db4 Section 0 drv_uart.o(i.drv_uart_trans_create_handle) + i.drv_vidc_clear_irq 0x00014e00 Section 0 drv_vidc.o(i.drv_vidc_clear_irq) + i.drv_vidc_enable 0x00014e10 Section 0 drv_vidc.o(i.drv_vidc_enable) + i.drv_vidc_enable_irq 0x00014e30 Section 0 drv_vidc.o(i.drv_vidc_enable_irq) + i.drv_vidc_get_int_source 0x00014e70 Section 0 drv_vidc.o(i.drv_vidc_get_int_source) + i.drv_vidc_get_irq_status 0x00014e9c Section 0 drv_vidc.o(i.drv_vidc_get_irq_status) + i.drv_vidc_init_module_enable 0x00014eb4 Section 0 drv_vidc.o(i.drv_vidc_init_module_enable) + i.drv_vidc_register_callback 0x00014ee0 Section 0 drv_vidc.o(i.drv_vidc_register_callback) + i.drv_vidc_reset 0x00014eec Section 0 drv_vidc.o(i.drv_vidc_reset) + i.drv_vidc_set_circ_mode_enable 0x00014ef8 Section 0 drv_vidc.o(i.drv_vidc_set_circ_mode_enable) + i.drv_vidc_set_dither_config 0x00014f14 Section 0 drv_vidc.o(i.drv_vidc_set_dither_config) + i.drv_vidc_set_dst_parameter 0x00014f4c Section 0 drv_vidc.o(i.drv_vidc_set_dst_parameter) + i.drv_vidc_set_honly_hcoef0 0x00014fa8 Section 0 drv_vidc.o(i.drv_vidc_set_honly_hcoef0) + i.drv_vidc_set_honly_hinitb 0x00014fb4 Section 0 drv_vidc.o(i.drv_vidc_set_honly_hinitb) + i.drv_vidc_set_honly_hinitr 0x00014fe0 Section 0 drv_vidc.o(i.drv_vidc_set_honly_hinitr) + i.drv_vidc_set_irqen 0x00015010 Section 0 drv_vidc.o(i.drv_vidc_set_irqen) + i.drv_vidc_set_mirror 0x0001502c Section 0 drv_vidc.o(i.drv_vidc_set_mirror) + i.drv_vidc_set_pentile_swap 0x00015040 Section 0 drv_vidc.o(i.drv_vidc_set_pentile_swap) + i.drv_vidc_set_pu_ctrl 0x0001505c Section 0 drv_vidc.o(i.drv_vidc_set_pu_ctrl) + i.drv_vidc_set_rotation 0x00015068 Section 0 drv_vidc.o(i.drv_vidc_set_rotation) + i.drv_vidc_set_scld_hcoef0 0x00015080 Section 0 drv_vidc.o(i.drv_vidc_set_scld_hcoef0) + i.drv_vidc_set_scld_hcoef1 0x0001508c Section 0 drv_vidc.o(i.drv_vidc_set_scld_hcoef1) + i.drv_vidc_set_scld_step 0x00015098 Section 0 drv_vidc.o(i.drv_vidc_set_scld_step) + i.drv_vidc_set_scld_vcoef0 0x000150ac Section 0 drv_vidc.o(i.drv_vidc_set_scld_vcoef0) + i.drv_vidc_set_scld_vcoef1 0x000150b8 Section 0 drv_vidc.o(i.drv_vidc_set_scld_vcoef1) + i.drv_vidc_set_src_parameter 0x000150c4 Section 0 drv_vidc.o(i.drv_vidc_set_src_parameter) + i.drv_vidc_set_vintp_config 0x000150e4 Section 0 drv_vidc.o(i.drv_vidc_set_vintp_config) + i.fputc 0x0001511c Section 0 tau_log.o(i.fputc) + i.google_p8p_demo 0x00015150 Section 0 p8p_demo.o(i.google_p8p_demo) + i.ha_intl_fb_check_pu_size 0x000151b0 Section 0 hal_internal_fb.o(i.ha_intl_fb_check_pu_size) + ha_intl_fb_check_pu_size 0x000151b1 Thumb Code 58 hal_internal_fb.o(i.ha_intl_fb_check_pu_size) + i.hal_dsi_rx_ctrl_create_handle 0x000151f0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) + i.hal_dsi_rx_ctrl_dcs_async_handler 0x00015230 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) + i.hal_dsi_rx_ctrl_deinit 0x00015270 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) + i.hal_dsi_rx_ctrl_get_max_ret_size 0x00015304 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) + i.hal_dsi_rx_ctrl_init 0x00015324 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) + i.hal_dsi_rx_ctrl_init_clk 0x000153d0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) + hal_dsi_rx_ctrl_init_clk 0x000153d1 Thumb Code 222 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) + i.hal_dsi_rx_ctrl_init_dsi_rx 0x000154d0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) + hal_dsi_rx_ctrl_init_dsi_rx 0x000154d1 Thumb Code 218 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) + i.hal_dsi_rx_ctrl_init_memc 0x000155c8 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) + hal_dsi_rx_ctrl_init_memc 0x000155c9 Thumb Code 294 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) + i.hal_dsi_rx_ctrl_init_rxbr 0x000156f4 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) + hal_dsi_rx_ctrl_init_rxbr 0x000156f5 Thumb Code 314 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) + i.hal_dsi_rx_ctrl_init_vidc 0x0001583c Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) + hal_dsi_rx_ctrl_init_vidc 0x0001583d Thumb Code 624 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) + i.hal_dsi_rx_ctrl_pre_init_pps 0x00015abc Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) + i.hal_dsi_rx_ctrl_send_ack_cmd 0x00015af4 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) + i.hal_dsi_rx_ctrl_set_ipi_cfg 0x00015be4 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) + hal_dsi_rx_ctrl_set_ipi_cfg 0x00015be5 Thumb Code 48 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) + i.hal_dsi_rx_ctrl_start 0x00015c14 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) + i.hal_dsi_rx_ctrl_stop 0x00015c44 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) + i.hal_dsi_rx_ctrl_toggle_resolution 0x00015c74 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) + i.hal_dsi_tx_cmd_mode_cal_timing 0x00015c94 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) + hal_dsi_tx_cmd_mode_cal_timing 0x00015c95 Thumb Code 506 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) + i.hal_dsi_tx_ctrl_create_handle 0x00015f10 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) + i.hal_dsi_tx_ctrl_deinit 0x00015f48 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) + i.hal_dsi_tx_ctrl_gen_a_tear_signal 0x00015fbc Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) + i.hal_dsi_tx_ctrl_init 0x00015fe0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) + i.hal_dsi_tx_ctrl_init_clk 0x0001605c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) + hal_dsi_tx_ctrl_init_clk 0x0001605d Thumb Code 12 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) + i.hal_dsi_tx_ctrl_set_overwrite_rgb 0x0001606c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) + i.hal_dsi_tx_ctrl_set_tear_mode 0x00016074 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) + i.hal_dsi_tx_ctrl_start 0x00016080 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) + i.hal_dsi_tx_ctrl_stop 0x000160fc Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) + i.hal_dsi_tx_ctrl_write_array_cmd 0x00016134 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) + i.hal_dsi_tx_ctrl_write_cmd 0x00016228 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) + i.hal_dsi_tx_init_cfg 0x000162f8 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) + hal_dsi_tx_init_cfg 0x000162f9 Thumb Code 258 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) + i.hal_dsi_tx_init_dpi_timing 0x00016404 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) + hal_dsi_tx_init_dpi_timing 0x00016405 Thumb Code 46 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) + i.hal_dsi_tx_init_phy_cfg 0x0001643c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) + hal_dsi_tx_init_phy_cfg 0x0001643d Thumb Code 22 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) + i.hal_dsi_tx_init_timing 0x00016452 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) + hal_dsi_tx_init_timing 0x00016453 Thumb Code 82 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) + i.hal_dsi_tx_init_vid_timing 0x000164a4 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) + hal_dsi_tx_init_vid_timing 0x000164a5 Thumb Code 70 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) + i.hal_dsi_tx_send_cmd 0x000164f8 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) + hal_dsi_tx_send_cmd 0x000164f9 Thumb Code 58 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) + i.hal_dsi_tx_timing_info_update 0x00016538 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) + hal_dsi_tx_timing_info_update 0x00016539 Thumb Code 142 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) + i.hal_dsi_tx_vid_mode_cal_timing 0x000165cc Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) + hal_dsi_tx_vid_mode_cal_timing 0x000165cd Thumb Code 766 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) + i.hal_gpio_config_pad 0x000168dc Section 0 hal_gpio.o(i.hal_gpio_config_pad) + i.hal_gpio_ctrl_eint 0x00016918 Section 0 hal_gpio.o(i.hal_gpio_ctrl_eint) + i.hal_gpio_init_eint 0x00016930 Section 0 hal_gpio.o(i.hal_gpio_init_eint) + i.hal_gpio_init_input 0x00016970 Section 0 hal_gpio.o(i.hal_gpio_init_input) + i.hal_gpio_init_output 0x00016986 Section 0 hal_gpio.o(i.hal_gpio_init_output) + i.hal_gpio_reg_eint_cb 0x000169a4 Section 0 hal_gpio.o(i.hal_gpio_reg_eint_cb) + i.hal_gpio_set_ap_reset_int 0x000169c0 Section 0 hal_gpio.o(i.hal_gpio_set_ap_reset_int) + i.hal_gpio_set_mode 0x00016a10 Section 0 hal_gpio.o(i.hal_gpio_set_mode) + i.hal_gpio_set_output_data 0x00016a74 Section 0 hal_gpio.o(i.hal_gpio_set_output_data) + i.hal_internal_sync_get_hight_performan_mode 0x00016a7c Section 0 hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) + i.hal_internal_sync_input_resolution_change 0x00016a8c Section 0 hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) + i.hal_internal_sync_register_lcdc_cb 0x00016c40 Section 0 hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) + i.hal_internal_vsync_deinit 0x00016c4c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_deinit) + i.hal_internal_vsync_get_rx_state 0x00016c6c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) + i.hal_internal_vsync_get_sync_line 0x00016c78 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) + i.hal_internal_vsync_get_tx_state 0x00016c8c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) + i.hal_internal_vsync_init_rx 0x00016c98 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_init_rx) + i.hal_internal_vsync_init_tx 0x00016d70 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_init_tx) + i.hal_internal_vsync_set_rx_state 0x00016e38 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) + i.hal_internal_vsync_set_tear_mode 0x00016e58 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) + i.hal_internal_vsync_set_tx_state 0x00016f70 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) + i.hal_intl_dcs_init_sw_fltr 0x00016fdc Section 0 hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) + i.hal_intl_dcs_rx_get_dcs_packet_data 0x00017048 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) + hal_intl_dcs_rx_get_dcs_packet_data 0x00017049 Thumb Code 806 hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) + i.hal_intl_dcs_rx_receive_packet 0x00017494 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) + hal_intl_dcs_rx_receive_packet 0x00017495 Thumb Code 122 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) + i.hal_intl_dcs_rx_receive_pps 0x0001751c Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) + hal_intl_dcs_rx_receive_pps 0x0001751d Thumb Code 268 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) + i.hal_intl_dcs_set_auto_hw_filter 0x00017690 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) + i.hal_intl_dcs_sw_filter_handle 0x0001771c Section 0 hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) + hal_intl_dcs_sw_filter_handle 0x0001771d Thumb Code 36 hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) + i.hal_intl_fb_cal_fb_info 0x00017748 Section 0 hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) + i.hal_intl_fb_check_bandwidth 0x00017a38 Section 0 hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) + hal_intl_fb_check_bandwidth 0x00017a39 Thumb Code 92 hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) + i.hal_intl_fb_edge_resize 0x00017a9c Section 0 hal_internal_fb.o(i.hal_intl_fb_edge_resize) + hal_intl_fb_edge_resize 0x00017a9d Thumb Code 214 hal_internal_fb.o(i.hal_intl_fb_edge_resize) + i.hal_intl_fb_flow_control_adapter 0x00017b78 Section 0 hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) + hal_intl_fb_flow_control_adapter 0x00017b79 Thumb Code 94 hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) + i.hal_intl_fb_get_memc_flow_mode 0x00017bdc Section 0 hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) + i.hal_intl_fb_get_rx_fb_info 0x00017be8 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) + i.hal_intl_fb_get_tx_fb_info 0x00017bf8 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) + i.hal_intl_fb_get_user_flow 0x00017c08 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_user_flow) + i.hal_intl_svs_deinit_rx 0x00017c14 Section 0 hal_internal_svs.o(i.hal_intl_svs_deinit_rx) + i.hal_intl_svs_deinit_tx 0x00017c3c Section 0 hal_internal_svs.o(i.hal_intl_svs_deinit_tx) + i.hal_intl_svs_handle 0x00017c4c Section 0 hal_internal_svs.o(i.hal_intl_svs_handle) + i.hal_intl_svs_init_rx 0x00017c70 Section 0 hal_internal_svs.o(i.hal_intl_svs_init_rx) + i.hal_intl_svs_init_tx 0x00017cf0 Section 0 hal_internal_svs.o(i.hal_intl_svs_init_tx) + i.hal_intl_svs_set_rx_vtt 0x00017d04 Section 0 hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) + i.hal_intl_svs_update_rxbr_clk 0x00017d10 Section 0 hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) + i.hal_lcdc_displayproc_config 0x00017d58 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) + i.hal_lcdc_init_cfg 0x00017dc8 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) + hal_lcdc_init_cfg 0x00017dc9 Thumb Code 62 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) + i.hal_lcdc_init_clk 0x00017e06 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) + hal_lcdc_init_clk 0x00017e07 Thumb Code 112 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) + i.hal_lcdc_postproc_config 0x00017e78 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) + i.hal_lcdc_start 0x00017fa0 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_start) + hal_lcdc_start 0x00017fa1 Thumb Code 36 hal_dsi_tx_ctrl.o(i.hal_lcdc_start) + i.hal_lcdc_timinggen_config 0x00017fc4 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) + hal_lcdc_timinggen_config 0x00017fc5 Thumb Code 60 hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) + i.hal_lcdc_upscaler_config 0x00018000 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) + i.hal_nonshadow_func_update 0x000180e0 Section 0 hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) + i.hal_pwr_enter_deep_sleep_mode 0x0001819c Section 0 hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) + i.hal_pwr_enter_normal_sleep_mode 0x000181c6 Section 0 hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) + i.hal_pwr_enter_stop_sleep_mode 0x000181d0 Section 0 hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) + i.hal_pwr_exit_sleep_mode 0x00018234 Section 0 hal_pwr.o(i.hal_pwr_exit_sleep_mode) + i.hal_pwr_get_vcc_power_ready 0x0001823e Section 0 hal_pwr.o(i.hal_pwr_get_vcc_power_ready) + i.hal_pwr_set_main_power 0x00018246 Section 0 hal_pwr.o(i.hal_pwr_set_main_power) + i.hal_pwr_set_sleep_mode_power 0x0001824e Section 0 hal_pwr.o(i.hal_pwr_set_sleep_mode_power) + i.hal_pwr_set_stop_sleep_wakeup_pin 0x00018258 Section 0 hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) + i.hal_swire_deinit 0x000182bc Section 0 hal_swire.o(i.hal_swire_deinit) + i.hal_swire_enable 0x000182fc Section 0 hal_swire.o(i.hal_swire_enable) + i.hal_swire_init 0x00018358 Section 0 hal_swire.o(i.hal_swire_init) + i.hal_swire_set_pulse 0x000183b0 Section 0 hal_swire.o(i.hal_swire_set_pulse) + i.hal_swire_set_timer 0x000183d4 Section 0 hal_swire.o(i.hal_swire_set_timer) + i.hal_system_init 0x00018414 Section 0 hal_system.o(i.hal_system_init) + i.hal_system_updata_sysclk 0x000184f8 Section 0 hal_system.o(i.hal_system_updata_sysclk) + i.hal_timer_deinit 0x00018548 Section 0 hal_timer.o(i.hal_timer_deinit) + i.hal_timer_init 0x00018578 Section 0 hal_timer.o(i.hal_timer_init) + i.hal_timer_set_repeat 0x00018594 Section 0 hal_timer.o(i.hal_timer_set_repeat) + i.hal_tx_frame_rate_adjust 0x0001859c Section 0 hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) + hal_tx_frame_rate_adjust 0x0001859d Thumb Code 44 hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) + i.hal_uart_init 0x000185cc Section 0 hal_uart.o(i.hal_uart_init) + i.hal_uart_send_blocking 0x00018660 Section 0 hal_uart.o(i.hal_uart_send_blocking) + i.hal_vsync_func_update 0x0001867c Section 0 hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) + i.hal_vsync_reset_lcdc_scaler 0x00018694 Section 0 hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) + i.main 0x00018760 Section 0 main.o(i.main) + i.pps_update_handle 0x000187a0 Section 0 p8p_demo.o(i.pps_update_handle) + pps_update_handle 0x000187a1 Thumb Code 110 p8p_demo.o(i.pps_update_handle) + i.rxbr_irq1_callback 0x0001881c Section 0 hal_internal_vsync.o(i.rxbr_irq1_callback) + rxbr_irq1_callback 0x0001881d Thumb Code 466 hal_internal_vsync.o(i.rxbr_irq1_callback) + i.send_panel_init_code 0x00018ad4 Section 0 p8p_demo.o(i.send_panel_init_code) + send_panel_init_code 0x00018ad5 Thumb Code 58 p8p_demo.o(i.send_panel_init_code) + i.soft_double_buffer_update 0x00018b10 Section 0 hal_internal_vsync.o(i.soft_double_buffer_update) + soft_double_buffer_update 0x00018b11 Thumb Code 56 hal_internal_vsync.o(i.soft_double_buffer_update) + i.soft_gen_te 0x00018b54 Section 0 hal_internal_vsync.o(i.soft_gen_te) + soft_gen_te 0x00018b55 Thumb Code 102 hal_internal_vsync.o(i.soft_gen_te) + i.soft_gen_te_double_buffer 0x00018bd0 Section 0 hal_internal_vsync.o(i.soft_gen_te_double_buffer) + soft_gen_te_double_buffer 0x00018bd1 Thumb Code 122 hal_internal_vsync.o(i.soft_gen_te_double_buffer) + i.stop_sleep_cb 0x00018c64 Section 0 hal_pwr.o(i.stop_sleep_cb) + stop_sleep_cb 0x00018c65 Thumb Code 18 hal_pwr.o(i.stop_sleep_cb) + i.svs_direct_mode_setting 0x00018c7c Section 0 hal_internal_svs.o(i.svs_direct_mode_setting) + svs_direct_mode_setting 0x00018c7d Thumb Code 154 hal_internal_svs.o(i.svs_direct_mode_setting) + i.svs_get_rel_intv 0x00018d28 Section 0 hal_internal_svs.o(i.svs_get_rel_intv) + svs_get_rel_intv 0x00018d29 Thumb Code 20 hal_internal_svs.o(i.svs_get_rel_intv) + i.svs_sync_handle 0x00018d44 Section 0 hal_internal_svs.o(i.svs_sync_handle) + svs_sync_handle 0x00018d45 Thumb Code 158 hal_internal_svs.o(i.svs_sync_handle) + i.svs_wait_fr_stab 0x00018df4 Section 0 hal_internal_svs.o(i.svs_wait_fr_stab) + svs_wait_fr_stab 0x00018df5 Thumb Code 148 hal_internal_svs.o(i.svs_wait_fr_stab) + i.svs_wait_start 0x00018ec0 Section 0 hal_internal_svs.o(i.svs_wait_start) + svs_wait_start 0x00018ec1 Thumb Code 250 hal_internal_svs.o(i.svs_wait_start) + i.tau_log_init 0x00018fcc Section 0 tau_log.o(i.tau_log_init) + i.tau_log_printf 0x00019000 Section 0 tau_log.o(i.tau_log_printf) + i.tau_log_push_log 0x00019084 Section 0 tau_log.o(i.tau_log_push_log) + i.vidc_callback 0x000190fc Section 0 hal_internal_vsync.o(i.vidc_callback) + vidc_callback 0x000190fd Thumb Code 150 hal_internal_vsync.o(i.vidc_callback) + i.vpre_err_reset 0x000191b0 Section 0 hal_internal_vsync.o(i.vpre_err_reset) + vpre_err_reset 0x000191b1 Thumb Code 254 hal_internal_vsync.o(i.vpre_err_reset) + .constdata 0x000192c8 Section 8376 p8p_demo.o(.constdata) + g_cus_rx_dcs_execute_table 0x000192c8 Data 96 p8p_demo.o(.constdata) + .constdata 0x0001b380 Section 40 hal_dsi_rx_ctrl.o(.constdata) + .constdata 0x0001b3a8 Section 28 hal_dsi_tx_ctrl.o(.constdata) + .constdata 0x0001b3c4 Section 48 hal_uart.o(.constdata) + .constdata 0x0001b3f4 Section 16 drv_uart.o(.constdata) + .conststring 0x0001b404 Section 66 hal_dsi_rx_ctrl.o(.conststring) + .conststring 0x0001b448 Section 144 hal_internal_vsync.o(.conststring) + .conststring 0x0001b4d8 Section 142 hal_internal_dcs.o(.conststring) + .data 0x00070000 Section 287 p8p_demo.o(.data) + g_rx_ctrl_handle 0x00070000 Data 4 p8p_demo.o(.data) + g_tx_ctrl_handle 0x00070004 Data 4 p8p_demo.o(.data) + panel_display_done 0x00070008 Data 1 p8p_demo.o(.data) + sg_system_resume 0x00070009 Data 1 p8p_demo.o(.data) + sg_system_suspend 0x0007000a Data 1 p8p_demo.o(.data) + sg_exit_idle_mode_flag 0x0007000b Data 1 p8p_demo.o(.data) + g_resolution_change 0x0007000c Data 1 p8p_demo.o(.data) + pps_renew_flag 0x00070010 Data 4 p8p_demo.o(.data) + pwr_rst_flag 0x00070014 Data 4 p8p_demo.o(.data) + reg53_E8_fg 0x0007011e Data 1 p8p_demo.o(.data) + .data 0x00070120 Section 36 hal_dsi_rx_ctrl.o(.data) + g_hw_auto_filter 0x00070120 Data 1 hal_dsi_rx_ctrl.o(.data) + g_crc_check_enable 0x00070121 Data 1 hal_dsi_rx_ctrl.o(.data) + g_esc_clk 0x00070124 Data 4 hal_dsi_rx_ctrl.o(.data) + g_before_draw_col 0x00070128 Data 4 hal_dsi_rx_ctrl.o(.data) + g_before_draw_page 0x0007012c Data 4 hal_dsi_rx_ctrl.o(.data) + pre_step 0x00070130 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_cmd_filter 0x00070134 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_x 0x00070138 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_y 0x0007013c Data 4 hal_dsi_rx_ctrl.o(.data) + pre_value 0x00070140 Data 4 hal_dsi_rx_ctrl.o(.data) + .data 0x00070144 Section 92 hal_dsi_tx_ctrl.o(.data) + sg_bta_vsync_flag 0x00070144 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_vsync_flag 0x00070145 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_enter_sleep_cmd 0x00070146 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_fldc_cg_mode 0x00070147 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_scl_fir 0x00070148 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_honly_bypass_fir 0x00070149 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_bcs 0x0007014a Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_enhc 0x0007014b Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_edge_dect 0x0007014c Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_edge_enh 0x0007014d Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_dith 0x0007014e Data 1 hal_dsi_tx_ctrl.o(.data) + sg_dith_judge 0x0007014f Data 1 hal_dsi_tx_ctrl.o(.data) + sg_endianness 0x00070150 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_test_pattern_en 0x00070151 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_dith_judge_thr 0x00070154 Data 4 hal_dsi_tx_ctrl.o(.data) + sg_ccm_para 0x00070158 Data 36 hal_dsi_tx_ctrl.o(.data) + sg_honly_para 0x0007017c Data 36 hal_dsi_tx_ctrl.o(.data) + .data 0x000701a0 Section 2 hal_swire.o(.data) + sg_swire_timer 0x000701a0 Data 1 hal_swire.o(.data) + sg_swire_repeat 0x000701a1 Data 1 hal_swire.o(.data) + .data 0x000701a4 Section 8 hal_pwr.o(.data) + sg_wake_up_io 0x000701a4 Data 1 hal_pwr.o(.data) + sg_stop_sleep_wakeup_int 0x000701a8 Data 4 hal_pwr.o(.data) + .data 0x000701ac Section 1 tau_log.o(.data) + g_log_port 0x000701ac Data 1 tau_log.o(.data) + .data 0x000701b0 Section 24 hal_uart.o(.data) + sg_dma_callback 0x000701c0 Data 4 hal_uart.o(.data) + sg_user_data 0x000701c4 Data 4 hal_uart.o(.data) + .data 0x000701c8 Section 16 hal_internal_vsync.o(.data) + s_te_refine_mode 0x000701c8 Data 1 hal_internal_vsync.o(.data) + s_double_buffer 0x000701c9 Data 1 hal_internal_vsync.o(.data) + .data 0x000701d8 Section 40 hal_internal_dcs.o(.data) + pre_nslc 0x000701d8 Data 4 hal_internal_dcs.o(.data) + g_imm_packet 0x000701dc Data 24 hal_internal_dcs.o(.data) + g_cus_rx_write_cmd_handle 0x000701f4 Data 12 hal_internal_dcs.o(.data) + .data 0x00070200 Section 12 drv_common.o(.data) + s_my_tick 0x00070200 Data 4 drv_common.o(.data) + .data 0x0007020c Section 1 drv_common.o(.data) + .data 0x00070210 Section 4 drv_gpio.o(.data) + g_ap_reset_cb 0x00070210 Data 4 drv_gpio.o(.data) + .data 0x00070214 Section 4 drv_swire.o(.data) + sg_drv_swire_cb 0x00070214 Data 4 drv_swire.o(.data) + .data 0x00070218 Section 80 drv_timer.o(.data) + sg_timer_info 0x00070218 Data 80 drv_timer.o(.data) + .data 0x00070268 Section 4 drv_se.o(.data) + chip_info 0x00070268 Data 4 drv_se.o(.data) + .data 0x0007026c Section 1 drv_dsi_rx.o(.data) + sg_rx_drv_level 0x0007026c Data 1 drv_dsi_rx.o(.data) + .data 0x00070270 Section 8 drv_rxbr.o(.data) + .data 0x00070278 Section 4 drv_vidc.o(.data) + .data 0x0007027c Section 400 drv_dma.o(.data) + sg_dma_handle 0x0007027c Data 256 drv_dma.o(.data) + .data 0x0007040c Section 4 stdout.o(.data) + .bss 0x00070410 Section 208 hal_dsi_rx_ctrl.o(.bss) + g_rx_ctrl_handle 0x00070410 Data 208 hal_dsi_rx_ctrl.o(.bss) + .bss 0x000704e0 Section 184 hal_dsi_tx_ctrl.o(.bss) + g_tx_ctrl_handle 0x000704e0 Data 92 hal_dsi_tx_ctrl.o(.bss) + sg_dsi_tx_param 0x0007053c Data 92 hal_dsi_tx_ctrl.o(.bss) + .bss 0x00070598 Section 256 tau_log.o(.bss) + g_log_buf 0x00070598 Data 256 tau_log.o(.bss) + .bss 0x00070698 Section 40 hal_internal_vsync.o(.bss) + .bss 0x000706c0 Section 2048 hal_internal_dcs.o(.bss) + .bss 0x00070ec0 Section 255 hal_internal_dcs.o(.bss) + g_imm_buffer 0x00070ec0 Data 255 hal_internal_dcs.o(.bss) + .bss 0x00070fc0 Section 68 hal_internal_fb.o(.bss) + .bss 0x00071004 Section 68 hal_internal_svs.o(.bss) + sg_sys_handler 0x00071004 Data 68 hal_internal_svs.o(.bss) + .bss 0x00071048 Section 64 drv_gpio.o(.bss) + s_gpio_cb 0x00071048 Data 64 drv_gpio.o(.bss) + .bss 0x00071088 Section 4204 dcs_packet_fifo.o(.bss) + .bss 0x000720f4 Section 16 drv_dma.o(.bss) + sg_dma_int_list 0x000720f4 Data 16 drv_dma.o(.bss) + .bss 0x00072104 Section 96 drv_uart.o(.bss) + sg_uart_userdata 0x00072104 Data 96 drv_uart.o(.bss) + STACK 0x00072168 Section 4096 startup_armcm0.o(STACK) + + Global Symbols + + Symbol Name Value Ov Type Size Object(Section) + + BuildAttributes$$THM_ISAv3M$S$PE$A:L22$X:L11$S22$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$IEEEJ$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE + __ARM_use_no_argv 0x00000000 Number 0 main.o ABSOLUTE + _printf_a 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_c 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_charcount 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_d 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_e 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_f 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_flags 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_g 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_i 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_int_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_l 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ll 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lld 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lli 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llo 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llu 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llx 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_oct 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ls 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_mbtowc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_n 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_o 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_p 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_percent 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_pre_padding 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_return_value 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_s 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_sizespec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_str 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_signed 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_unsigned 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_u 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wctomb 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_widthprec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_x 0x00000000 Number 0 stubs.o ABSOLUTE + __cpp_initialize__aeabi_ - Undefined Weak Reference + __cxa_finalize - Undefined Weak Reference + _clock_init - Undefined Weak Reference + _microlib_exit - Undefined Weak Reference + __Vectors_Size 0x000000c0 Number 0 startup_armcm0.o ABSOLUTE + __Vectors 0x00010000 Data 4 startup_armcm0.o(RESET) + __Vectors_End 0x000100c0 Data 0 startup_armcm0.o(RESET) + __main 0x000100c1 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000) + _main_stk 0x000100c1 Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001) + _main_scatterload 0x000100c5 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) + __main_after_scatterload 0x000100c9 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) + _main_clock 0x000100c9 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008) + _main_cpp_init 0x000100c9 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A) + _main_init 0x000100c9 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B) + __rt_final_cpp 0x000100d1 Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000D) + __rt_final_exit 0x000100d1 Thumb Code 0 entry11a.o(.ARM.Collect$$$$0000000F) + Reset_Handler 0x000100d5 Thumb Code 28 startup_armcm0.o(.text) + NMI_Handler 0x000100f1 Thumb Code 2 startup_armcm0.o(.text) + SVC_Handler 0x000100f5 Thumb Code 2 startup_armcm0.o(.text) + PendSV_Handler 0x000100f7 Thumb Code 2 startup_armcm0.o(.text) + FLSCTRL_IRQn_Handler 0x00010107 Thumb Code 2 startup_armcm0.o(.text) + WDG_IRQn_Handler 0x00010113 Thumb Code 2 startup_armcm0.o(.text) + I2C0_IRQn_Handler 0x00010117 Thumb Code 2 startup_armcm0.o(.text) + I2C1_IRQn_Handler 0x00010119 Thumb Code 2 startup_armcm0.o(.text) + SPIS_IRQn_Handler 0x0001011b Thumb Code 2 startup_armcm0.o(.text) + SPIM_IRQn_Handler 0x0001011d Thumb Code 2 startup_armcm0.o(.text) + I2C2_IRQn_Handler 0x00010121 Thumb Code 2 startup_armcm0.o(.text) + OTP_IRQn_Handler 0x00010123 Thumb Code 2 startup_armcm0.o(.text) + PVD_IRQn_Handler 0x00010127 Thumb Code 2 startup_armcm0.o(.text) + __aeabi_uidiv 0x0001014d Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x0001014d Thumb Code 44 uidiv.o(.text) + __aeabi_idiv 0x00010179 Thumb Code 0 idiv.o(.text) + __aeabi_idivmod 0x00010179 Thumb Code 40 idiv.o(.text) + __aeabi_memcpy 0x000101a1 Thumb Code 36 memcpya.o(.text) + __aeabi_memcpy4 0x000101a1 Thumb Code 0 memcpya.o(.text) + __aeabi_memcpy8 0x000101a1 Thumb Code 0 memcpya.o(.text) + __aeabi_memset 0x000101c5 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x000101c5 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x000101c5 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x000101d3 Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x000101d3 Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x000101d3 Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x000101d7 Thumb Code 18 memseta.o(.text) + strlen 0x000101e9 Thumb Code 14 strlen.o(.text) + __aeabi_fadd 0x000101f7 Thumb Code 162 fadd.o(.text) + __aeabi_fsub 0x00010299 Thumb Code 8 fadd.o(.text) + __aeabi_frsub 0x000102a1 Thumb Code 8 fadd.o(.text) + __aeabi_fmul 0x000102a9 Thumb Code 122 fmul.o(.text) + __aeabi_fdiv 0x00010323 Thumb Code 124 fdiv.o(.text) + __ARM_scalbnf 0x0001039f Thumb Code 24 fscalb.o(.text) + scalbnf 0x0001039f Thumb Code 0 fscalb.o(.text) + __aeabi_dadd 0x000103b9 Thumb Code 328 dadd.o(.text) + __aeabi_dsub 0x00010501 Thumb Code 12 dadd.o(.text) + __aeabi_drsub 0x0001050d Thumb Code 12 dadd.o(.text) + __aeabi_dmul 0x0001051d Thumb Code 202 dmul.o(.text) + __aeabi_ui2f 0x000105ed Thumb Code 14 ffltui.o(.text) + __aeabi_ui2d 0x000105fd Thumb Code 24 dfltui.o(.text) + __aeabi_f2uiz 0x00010619 Thumb Code 40 ffixui.o(.text) + __aeabi_d2uiz 0x00010641 Thumb Code 50 dfixui.o(.text) + __aeabi_f2d 0x0001067d Thumb Code 40 f2d.o(.text) + __aeabi_d2f 0x000106a5 Thumb Code 56 d2f.o(.text) + __aeabi_cfcmpeq 0x000106dd Thumb Code 0 cfcmple.o(.text) + __aeabi_cfcmple 0x000106dd Thumb Code 20 cfcmple.o(.text) + __aeabi_cfrcmple 0x000106f1 Thumb Code 20 cfrcmple.o(.text) + __aeabi_uldivmod 0x00010705 Thumb Code 96 uldiv.o(.text) + __aeabi_llsl 0x00010765 Thumb Code 32 llshl.o(.text) + _ll_shift_l 0x00010765 Thumb Code 0 llshl.o(.text) + __aeabi_llsr 0x00010785 Thumb Code 34 llushr.o(.text) + _ll_ushift_r 0x00010785 Thumb Code 0 llushr.o(.text) + __aeabi_lasr 0x000107a7 Thumb Code 38 llsshr.o(.text) + _ll_sshift_r 0x000107a7 Thumb Code 0 llsshr.o(.text) + __I$use$fp 0x000107cd Thumb Code 0 iusefp.o(.text) + _float_round 0x000107cd Thumb Code 16 fepilogue.o(.text) + _float_epilogue 0x000107dd Thumb Code 114 fepilogue.o(.text) + _double_round 0x0001084f Thumb Code 26 depilogue.o(.text) + _double_epilogue 0x00010869 Thumb Code 164 depilogue.o(.text) + __aeabi_ddiv 0x0001090d Thumb Code 234 ddiv.o(.text) + __aeabi_d2ulz 0x000109fd Thumb Code 54 dfixul.o(.text) + __aeabi_cdrcmple 0x00010a3d Thumb Code 38 cdrcmple.o(.text) + __scatterload 0x00010a65 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x00010a65 Thumb Code 0 init.o(.text) + __decompress 0x00010a89 Thumb Code 0 __dczerorl2.o(.text) + __decompress1 0x00010a89 Thumb Code 86 __dczerorl2.o(.text) + AP_NRESET_IRQn_Handler 0x00010ae1 Thumb Code 22 drv_gpio.o(i.AP_NRESET_IRQn_Handler) + DMA_IRQn_Handler 0x00010afd Thumb Code 78 drv_dma.o(i.DMA_IRQn_Handler) + EXTI_INT0_IRQn_Handler 0x00010b59 Thumb Code 10 drv_gpio.o(i.EXTI_INT0_IRQn_Handler) + EXTI_INT1_IRQn_Handler 0x00010b63 Thumb Code 10 drv_gpio.o(i.EXTI_INT1_IRQn_Handler) + EXTI_INT2_IRQn_Handler 0x00010b6d Thumb Code 10 drv_gpio.o(i.EXTI_INT2_IRQn_Handler) + EXTI_INT3_IRQn_Handler 0x00010b77 Thumb Code 10 drv_gpio.o(i.EXTI_INT3_IRQn_Handler) + EXTI_INT4_IRQn_Handler 0x00010b81 Thumb Code 10 drv_gpio.o(i.EXTI_INT4_IRQn_Handler) + EXTI_INT5_IRQn_Handler 0x00010b8b Thumb Code 10 drv_gpio.o(i.EXTI_INT5_IRQn_Handler) + EXTI_INT6_IRQn_Handler 0x00010b95 Thumb Code 10 drv_gpio.o(i.EXTI_INT6_IRQn_Handler) + EXTI_INT7_IRQn_Handler 0x00010b9f Thumb Code 10 drv_gpio.o(i.EXTI_INT7_IRQn_Handler) + HardFault_Handler 0x00010ba9 Thumb Code 14 drv_common.o(i.HardFault_Handler) + LCDC_IRQn_Handler 0x00010bf1 Thumb Code 118 hal_internal_vsync.o(i.LCDC_IRQn_Handler) + MEMC_IRQn_Handler 0x00010cf1 Thumb Code 154 drv_memc.o(i.MEMC_IRQn_Handler) + MIPI_TX_IRQn_Handler 0x00010d8d Thumb Code 70 drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) + SWIRE_IRQn_Handler 0x00010e45 Thumb Code 38 drv_swire.o(i.SWIRE_IRQn_Handler) + SysTick_Handler 0x00010e75 Thumb Code 20 drv_common.o(i.SysTick_Handler) + TIMER0_IRQn_Handler 0x00010e8d Thumb Code 10 drv_timer.o(i.TIMER0_IRQn_Handler) + TIMER1_IRQn_Handler 0x00010e97 Thumb Code 10 drv_timer.o(i.TIMER1_IRQn_Handler) + TIMER2_IRQn_Handler 0x00010ea1 Thumb Code 10 drv_timer.o(i.TIMER2_IRQn_Handler) + TIMER3_IRQn_Handler 0x00010eab Thumb Code 10 drv_timer.o(i.TIMER3_IRQn_Handler) + VIDC_IRQn_Handler 0x00010eb5 Thumb Code 22 drv_vidc.o(i.VIDC_IRQn_Handler) + VPRE1_IRQn_Handler 0x00010ed1 Thumb Code 22 drv_rxbr.o(i.VPRE1_IRQn_Handler) + VPRE_IRQn_Handler 0x00010eed Thumb Code 116 hal_internal_dcs.o(i.VPRE_IRQn_Handler) + __0printf 0x00010f69 Thumb Code 24 printfa.o(i.__0printf) + __1printf 0x00010f69 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x00010f69 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x00010f69 Thumb Code 0 printfa.o(i.__0printf) + printf 0x00010f69 Thumb Code 0 printfa.o(i.__0printf) + __0vsprintf 0x00010f89 Thumb Code 30 printfa.o(i.__0vsprintf) + __1vsprintf 0x00010f89 Thumb Code 0 printfa.o(i.__0vsprintf) + __2vsprintf 0x00010f89 Thumb Code 0 printfa.o(i.__0vsprintf) + __c89vsprintf 0x00010f89 Thumb Code 0 printfa.o(i.__0vsprintf) + vsprintf 0x00010f89 Thumb Code 0 printfa.o(i.__0vsprintf) + __ARM_clz 0x00010fad Thumb Code 46 depilogue.o(i.__ARM_clz) + __ARM_common_switch8 0x00010fdb Thumb Code 26 hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) + __scatterload_null 0x00010ff5 Thumb Code 2 handlers.o(i.__scatterload_null) + s_RAM_CK 0x00011000 Data 28 drv_common.o(.ARM.__at_0x11000) + g_tau_log 0x0001101c Data 16 tau_log.o(.ARM.__at_0x1101C) + sg_pq_para 0x0001102c Data 22 hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) + MIPI_RX_IRQn_Handler 0x00011045 Thumb Code 354 drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) + UART_IRQn_Handler 0x000113a9 Thumb Code 364 drv_uart.o(i.UART_IRQn_Handler) + __scatterload_copy 0x00011561 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_zeroinit 0x0001156f Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + app_display_init 0x000122bf Thumb Code 44 p8p_demo.o(i.app_display_init) + app_gpio_init 0x000122ed Thumb Code 22 p8p_demo.o(i.app_gpio_init) + board_Init 0x00012879 Thumb Code 20 board.o(i.board_Init) + ceil 0x00012891 Thumb Code 180 ceil.o(i.ceil) + dcs_packet_fifo_alloc 0x00012a0d Thumb Code 80 dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) + dcs_packet_fifo_init 0x00012a65 Thumb Code 18 dcs_packet_fifo.o(i.dcs_packet_fifo_init) + dcs_packet_free_fifo_header 0x00012a7d Thumb Code 60 dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) + dcs_packet_get_fifo_header 0x00012ac1 Thumb Code 26 dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) + delayMs 0x00012ae5 Thumb Code 24 tau_delay.o(i.delayMs) + delayUs 0x00012afd Thumb Code 40 tau_delay.o(i.delayUs) + drv_common_system_init 0x00012b29 Thumb Code 8 drv_common.o(i.drv_common_system_init) + drv_crgu_enable_clock 0x00012b31 Thumb Code 54 drv_crgu.o(i.drv_crgu_enable_clock) + drv_crgu_get_rxbr_clk 0x00012b6d Thumb Code 70 drv_crgu.o(i.drv_crgu_get_rxbr_clk) + drv_crgu_reset_modules 0x00012bd5 Thumb Code 10 drv_crgu.o(i.drv_crgu_reset_modules) + drv_crgu_set_ahb_clk 0x00012be5 Thumb Code 34 drv_crgu.o(i.drv_crgu_set_ahb_clk) + drv_crgu_set_clock_div 0x00012c0d Thumb Code 12 drv_crgu.o(i.drv_crgu_set_clock_div) + drv_crgu_set_dpi_clk 0x00012c1d Thumb Code 54 drv_crgu.o(i.drv_crgu_set_dpi_clk) + drv_crgu_set_dsc_clk 0x00012c59 Thumb Code 52 drv_crgu.o(i.drv_crgu_set_dsc_clk) + drv_crgu_set_fb_clk 0x00012c91 Thumb Code 34 drv_crgu.o(i.drv_crgu_set_fb_clk) + drv_crgu_set_lcdc_clk 0x00012cb9 Thumb Code 36 drv_crgu.o(i.drv_crgu_set_lcdc_clk) + drv_crgu_set_reset 0x00012ce1 Thumb Code 20 drv_crgu.o(i.drv_crgu_set_reset) + drv_crgu_set_rxbr_clk 0x00012cf9 Thumb Code 34 drv_crgu.o(i.drv_crgu_set_rxbr_clk) + drv_crgu_set_vidc_clk 0x00012d21 Thumb Code 36 drv_crgu.o(i.drv_crgu_set_vidc_clk) + drv_dma_clear_status 0x00012d49 Thumb Code 20 drv_dma.o(i.drv_dma_clear_status) + drv_dsc_dec_disable 0x00012d75 Thumb Code 20 drv_dsc_dec.o(i.drv_dsc_dec_disable) + drv_dsc_dec_enable 0x00012d91 Thumb Code 44 drv_dsc_dec.o(i.drv_dsc_dec_enable) + drv_dsc_dec_get_nslc 0x00012dc9 Thumb Code 22 drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) + drv_dsc_dec_set_irqen 0x00012de9 Thumb Code 24 drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) + drv_dsi_rx_calc_ipi_tx_delay 0x00012e05 Thumb Code 252 drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) + drv_dsi_rx_enable_irq 0x00012f11 Thumb Code 58 drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) + drv_dsi_rx_get_compression_en 0x00012fbd Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) + drv_dsi_rx_get_ddi_crc_en 0x00012fcd Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) + drv_dsi_rx_get_max_ret_size 0x00012fdd Thumb Code 8 drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) + drv_dsi_rx_power_up 0x00012fe9 Thumb Code 14 drv_dsi_rx.o(i.drv_dsi_rx_power_up) + drv_dsi_rx_set_check_crc 0x00013001 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) + drv_dsi_rx_set_ctrl_cfg 0x0001301d Thumb Code 32 drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) + drv_dsi_rx_set_ddi_cfg 0x00013041 Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) + drv_dsi_rx_set_ddi_crc_en 0x00013051 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) + drv_dsi_rx_set_inten 0x0001306d Thumb Code 8 drv_dsi_rx.o(i.drv_dsi_rx_set_inten) + drv_dsi_rx_set_ipi_cfg 0x00013079 Thumb Code 12 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) + drv_dsi_rx_set_ipi_ycbcr_frmt 0x00013089 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) + drv_dsi_rx_set_lane_swap 0x000130a5 Thumb Code 16 drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) + drv_dsi_rx_set_resp_cnt 0x000130b9 Thumb Code 32 drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) + drv_dsi_rx_set_tear_resp_en 0x000130dd Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) + drv_dsi_rx_set_up_phy 0x000130f9 Thumb Code 224 drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) + drv_dsi_rx_shut_down 0x000131f9 Thumb Code 14 drv_dsi_rx.o(i.drv_dsi_rx_shut_down) + drv_dsi_tx_command_header 0x00013211 Thumb Code 18 drv_dsi_tx.o(i.drv_dsi_tx_command_header) + drv_dsi_tx_command_mode_cfg 0x00013229 Thumb Code 82 drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) + drv_dsi_tx_command_put_payload 0x00013281 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) + drv_dsi_tx_config_eotp 0x0001328d Thumb Code 26 drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) + drv_dsi_tx_config_int 0x000132ad Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_config_int) + drv_dsi_tx_dpi_lpcmd_time 0x000132b9 Thumb Code 10 drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) + drv_dsi_tx_dpi_mode 0x000132c9 Thumb Code 12 drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) + drv_dsi_tx_dpi_polarity 0x000132d9 Thumb Code 32 drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) + drv_dsi_tx_edpi_cmd_size 0x000132fd Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) + drv_dsi_tx_get_cmd_status 0x00013309 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) + drv_dsi_tx_mode 0x00013315 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_mode) + drv_dsi_tx_phy_clock_lane_auto_lp 0x00013321 Thumb Code 24 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) + drv_dsi_tx_phy_clock_lane_req_hs 0x0001333d Thumb Code 26 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) + drv_dsi_tx_phy_lane_mode 0x0001335d Thumb Code 12 drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) + drv_dsi_tx_phy_status_ready 0x0001336d Thumb Code 100 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) + drv_dsi_tx_phy_status_stopstate 0x000133d5 Thumb Code 62 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) + drv_dsi_tx_phy_test_setup 0x00013419 Thumb Code 314 drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) + drv_dsi_tx_phy_time_cfg 0x00013569 Thumb Code 28 drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) + drv_dsi_tx_powerup 0x00013589 Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_powerup) + drv_dsi_tx_response_mode 0x00013595 Thumb Code 30 drv_dsi_tx.o(i.drv_dsi_tx_response_mode) + drv_dsi_tx_set_bta_ack 0x000135b9 Thumb Code 24 drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) + drv_dsi_tx_set_esc_div 0x000135d5 Thumb Code 14 drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) + drv_dsi_tx_set_int 0x000135e9 Thumb Code 58 drv_dsi_tx.o(i.drv_dsi_tx_set_int) + drv_dsi_tx_set_time_out_div 0x00013629 Thumb Code 18 drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) + drv_dsi_tx_set_video_chunk 0x00013641 Thumb Code 14 drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) + drv_dsi_tx_set_video_timing 0x00013655 Thumb Code 30 drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) + drv_dsi_tx_shutdown 0x00013679 Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_shutdown) + drv_dsi_tx_timeout_cfg 0x00013685 Thumb Code 38 drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) + drv_dsi_tx_video_mode_cfg 0x000136b1 Thumb Code 226 drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) + drv_efuse_enter_inactive 0x00013799 Thumb Code 54 drv_efuse.o(i.drv_efuse_enter_inactive) + drv_efuse_int_enable 0x000137cf Thumb Code 12 drv_efuse.o(i.drv_efuse_int_enable) + drv_efuse_read 0x000137db Thumb Code 58 drv_efuse.o(i.drv_efuse_read) + drv_efuse_read_req 0x00013815 Thumb Code 24 drv_efuse.o(i.drv_efuse_read_req) + drv_gpio_register_ap_reset_callback 0x00013851 Thumb Code 6 drv_gpio.o(i.drv_gpio_register_ap_reset_callback) + drv_gpio_register_callback 0x0001385d Thumb Code 14 drv_gpio.o(i.drv_gpio_register_callback) + drv_gpio_set_int 0x00013871 Thumb Code 62 drv_gpio.o(i.drv_gpio_set_int) + drv_gpio_set_ioe 0x000138b5 Thumb Code 26 drv_gpio.o(i.drv_gpio_set_ioe) + drv_gpio_set_mode 0x000138d5 Thumb Code 16 drv_gpio.o(i.drv_gpio_set_mode) + drv_lcdc_bcsa_config 0x00013909 Thumb Code 30 drv_lcdc.o(i.drv_lcdc_bcsa_config) + drv_lcdc_cfg_int_frame 0x00013931 Thumb Code 34 drv_lcdc.o(i.drv_lcdc_cfg_int_frame) + drv_lcdc_cmd_start 0x00013975 Thumb Code 46 drv_lcdc.o(i.drv_lcdc_cmd_start) + drv_lcdc_config_acc_command_mode 0x000139a9 Thumb Code 14 drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) + drv_lcdc_config_int 0x000139bd Thumb Code 50 drv_lcdc.o(i.drv_lcdc_config_int) + drv_lcdc_config_int_single 0x000139f5 Thumb Code 34 drv_lcdc.o(i.drv_lcdc_config_int_single) + drv_lcdc_config_overwrite_rgb 0x00013a1d Thumb Code 18 drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) + drv_lcdc_config_src_parameter 0x00013a35 Thumb Code 72 drv_lcdc.o(i.drv_lcdc_config_src_parameter) + drv_lcdc_crop_hact 0x00013a85 Thumb Code 10 drv_lcdc.o(i.drv_lcdc_crop_hact) + drv_lcdc_ctrl_flow 0x00013a95 Thumb Code 50 drv_lcdc.o(i.drv_lcdc_ctrl_flow) + drv_lcdc_dith_config 0x00013acd Thumb Code 40 drv_lcdc.o(i.drv_lcdc_dith_config) + drv_lcdc_edge_dect_config 0x00013afd Thumb Code 50 drv_lcdc.o(i.drv_lcdc_edge_dect_config) + drv_lcdc_edge_enh_config 0x00013b39 Thumb Code 86 drv_lcdc.o(i.drv_lcdc_edge_enh_config) + drv_lcdc_enable_shadow_reg 0x00013b9d Thumb Code 32 drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) + drv_lcdc_endianness_config 0x00013bc1 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_endianness_config) + drv_lcdc_fc_config 0x00013bdd Thumb Code 24 drv_lcdc.o(i.drv_lcdc_fc_config) + drv_lcdc_fldc_config 0x00013bfd Thumb Code 32 drv_lcdc.o(i.drv_lcdc_fldc_config) + drv_lcdc_function_disable 0x00013c21 Thumb Code 30 drv_lcdc.o(i.drv_lcdc_function_disable) + drv_lcdc_function_enable 0x00013c45 Thumb Code 30 drv_lcdc.o(i.drv_lcdc_function_enable) + drv_lcdc_set_int 0x00013c69 Thumb Code 54 drv_lcdc.o(i.drv_lcdc_set_int) + drv_lcdc_set_prefetch 0x00013ca5 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_set_prefetch) + drv_lcdc_set_tear_line 0x00013cc1 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_set_tear_line) + drv_lcdc_stop_display 0x00013cdd Thumb Code 12 drv_lcdc.o(i.drv_lcdc_stop_display) + drv_lcdc_vid_hw_start 0x00013ced Thumb Code 56 drv_lcdc.o(i.drv_lcdc_vid_hw_start) + drv_lcdc_vintp_mode_config 0x00013d29 Thumb Code 18 drv_lcdc.o(i.drv_lcdc_vintp_mode_config) + drv_memc_clear_status 0x00013d41 Thumb Code 14 drv_memc.o(i.drv_memc_clear_status) + drv_memc_enable_irq 0x00013d55 Thumb Code 58 drv_memc.o(i.drv_memc_enable_irq) + drv_memc_gen_a_tear_signal 0x00013d95 Thumb Code 12 drv_memc.o(i.drv_memc_gen_a_tear_signal) + drv_memc_get_status 0x00013da5 Thumb Code 20 drv_memc.o(i.drv_memc_get_status) + drv_memc_get_tear_mode 0x00013dbd Thumb Code 10 drv_memc.o(i.drv_memc_get_tear_mode) + drv_memc_rate_transfer_sel 0x00013dcd Thumb Code 22 drv_memc.o(i.drv_memc_rate_transfer_sel) + drv_memc_sel_vsync 0x00013de9 Thumb Code 16 drv_memc.o(i.drv_memc_sel_vsync) + drv_memc_set_active_height 0x00013dfd Thumb Code 16 drv_memc.o(i.drv_memc_set_active_height) + drv_memc_set_circ_mode_enable 0x00013e15 Thumb Code 24 drv_memc.o(i.drv_memc_set_circ_mode_enable) + drv_memc_set_data_mode 0x00013e31 Thumb Code 14 drv_memc.o(i.drv_memc_set_data_mode) + drv_memc_set_double_buffer 0x00013e45 Thumb Code 18 drv_memc.o(i.drv_memc_set_double_buffer) + drv_memc_set_frame_drop_select 0x00013e5d Thumb Code 24 drv_memc.o(i.drv_memc_set_frame_drop_select) + drv_memc_set_fs_en_conditions 0x00013e79 Thumb Code 18 drv_memc.o(i.drv_memc_set_fs_en_conditions) + drv_memc_set_lcdc_st_conditions 0x00013e91 Thumb Code 20 drv_memc.o(i.drv_memc_set_lcdc_st_conditions) + drv_memc_set_ltpo_mode 0x00013ead Thumb Code 28 drv_memc.o(i.drv_memc_set_ltpo_mode) + drv_memc_set_ltpo_pu_thres 0x00013ecd Thumb Code 18 drv_memc.o(i.drv_memc_set_ltpo_pu_thres) + drv_memc_set_tear_mode 0x00013ee5 Thumb Code 16 drv_memc.o(i.drv_memc_set_tear_mode) + drv_memc_set_tear_waveform 0x00013ef9 Thumb Code 36 drv_memc.o(i.drv_memc_set_tear_waveform) + drv_memc_set_vidc_sync_cnt 0x00013f25 Thumb Code 16 drv_memc.o(i.drv_memc_set_vidc_sync_cnt) + drv_phy_test_clear 0x00013f39 Thumb Code 16 drv_phy_common.o(i.drv_phy_test_clear) + drv_phy_test_lock 0x00013f49 Thumb Code 24 drv_phy_common.o(i.drv_phy_test_lock) + drv_pwr_efuse_pd 0x00013f61 Thumb Code 36 drv_pwr.o(i.drv_pwr_efuse_pd) + drv_pwr_enter_deep_sleep_mode 0x00013f91 Thumb Code 60 drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) + drv_pwr_enter_sleep_mode_ex 0x00013fdd Thumb Code 34 drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) + drv_pwr_enter_stop_sleep_mode 0x00014011 Thumb Code 132 drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) + drv_pwr_exit_sleep_mode 0x000140a9 Thumb Code 32 drv_pwr.o(i.drv_pwr_exit_sleep_mode) + drv_pwr_get_power_ready_st 0x000140d1 Thumb Code 10 drv_pwr.o(i.drv_pwr_get_power_ready_st) + drv_pwr_set_breath_screen_power_sel 0x000140e1 Thumb Code 34 drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) + drv_pwr_set_digit_power_sel 0x00014109 Thumb Code 34 drv_pwr.o(i.drv_pwr_set_digit_power_sel) + drv_pwr_set_pll_clk 0x00014131 Thumb Code 30 drv_pwr.o(i.drv_pwr_set_pll_clk) + drv_pwr_set_wakeup_type 0x00014165 Thumb Code 40 drv_pwr.o(i.drv_pwr_set_wakeup_type) + drv_pwr_write_lock 0x00014191 Thumb Code 18 drv_pwr.o(i.drv_pwr_write_lock) + drv_rxbr_clear_pkt_buffer 0x000141b1 Thumb Code 12 drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) + drv_rxbr_clear_status0 0x000141c1 Thumb Code 6 drv_rxbr.o(i.drv_rxbr_clear_status0) + drv_rxbr_enable_irq 0x000141cd Thumb Code 90 drv_rxbr.o(i.drv_rxbr_enable_irq) + drv_rxbr_frame_drop_cfg 0x00014229 Thumb Code 18 drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) + drv_rxbr_hline_rcv1_cfg 0x00014275 Thumb Code 14 drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) + drv_rxbr_hline_rcv_cfg 0x00014289 Thumb Code 10 drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) + drv_rxbr_register_irq1_callback 0x00014299 Thumb Code 6 drv_rxbr.o(i.drv_rxbr_register_irq1_callback) + drv_rxbr_set_ack_pkt_header 0x000142a5 Thumb Code 18 drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) + drv_rxbr_set_color_format 0x000142bd Thumb Code 24 drv_rxbr.o(i.drv_rxbr_set_color_format) + drv_rxbr_set_filter_regs 0x000142d9 Thumb Code 32 drv_rxbr.o(i.drv_rxbr_set_filter_regs) + drv_rxbr_set_inten 0x000142fd Thumb Code 22 drv_rxbr.o(i.drv_rxbr_set_inten) + drv_rxbr_set_ltpo_drop_th 0x00014319 Thumb Code 18 drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) + drv_rxbr_set_usr_cfg 0x00014331 Thumb Code 56 drv_rxbr.o(i.drv_rxbr_set_usr_cfg) + drv_rxbr_set_usr_col 0x00014371 Thumb Code 10 drv_rxbr.o(i.drv_rxbr_set_usr_col) + drv_rxbr_set_usr_row 0x00014381 Thumb Code 10 drv_rxbr.o(i.drv_rxbr_set_usr_row) + drv_se_init 0x00014391 Thumb Code 106 drv_se.o(i.drv_se_init) + drv_se_set_dsc 0x00014409 Thumb Code 162 drv_se.o(i.drv_se_set_dsc) + drv_se_set_lcdc 0x000144dd Thumb Code 88 drv_se.o(i.drv_se_set_lcdc) + drv_se_set_memc 0x00014565 Thumb Code 96 drv_se.o(i.drv_se_set_memc) + drv_se_set_rxbr 0x000145f5 Thumb Code 158 drv_se.o(i.drv_se_set_rxbr) + drv_se_set_vidc 0x000146c5 Thumb Code 122 drv_se.o(i.drv_se_set_vidc) + drv_se_start_rx 0x00014771 Thumb Code 16 drv_se.o(i.drv_se_start_rx) + drv_swire_enable 0x00014785 Thumb Code 24 drv_swire.o(i.drv_swire_enable) + drv_swire_get_pulse_count 0x000147a1 Thumb Code 6 drv_swire.o(i.drv_swire_get_pulse_count) + drv_swire_register_callback 0x000147ad Thumb Code 6 drv_swire.o(i.drv_swire_register_callback) + drv_swire_set_bit_time 0x000147b9 Thumb Code 18 drv_swire.o(i.drv_swire_set_bit_time) + drv_swire_set_int 0x000147d1 Thumb Code 64 drv_swire.o(i.drv_swire_set_int) + drv_swire_set_power_down 0x00014819 Thumb Code 24 drv_swire.o(i.drv_swire_set_power_down) + drv_swire_set_pulse_count 0x00014835 Thumb Code 6 drv_swire.o(i.drv_swire_set_pulse_count) + drv_swire_set_trig_mode 0x00014841 Thumb Code 24 drv_swire.o(i.drv_swire_set_trig_mode) + drv_sys_cfg_clear_all_int 0x0001485d Thumb Code 8 drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) + drv_sys_cfg_clear_pending 0x00014869 Thumb Code 32 drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) + drv_sys_cfg_sel_ap_rst_trig 0x00014891 Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) + drv_sys_cfg_sel_gpio_group 0x000148b5 Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) + drv_sys_cfg_sel_int_trig 0x000148d9 Thumb Code 32 drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) + drv_sys_cfg_sel_swire_timer 0x000148fd Thumb Code 18 drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) + drv_sys_cfg_set_int 0x00014915 Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_set_int) + drv_timer_enable 0x00014953 Thumb Code 32 drv_timer.o(i.drv_timer_enable) + drv_timer_get_instance 0x00014975 Thumb Code 10 drv_timer.o(i.drv_timer_get_instance) + drv_timer_set_compare_val 0x000149c1 Thumb Code 50 drv_timer.o(i.drv_timer_set_compare_val) + drv_timer_set_int 0x00014a01 Thumb Code 68 drv_timer.o(i.drv_timer_set_int) + drv_timer_set_prescaler 0x00014a49 Thumb Code 36 drv_timer.o(i.drv_timer_set_prescaler) + drv_timer_set_repeat 0x00014a71 Thumb Code 12 drv_timer.o(i.drv_timer_set_repeat) + drv_tx_phy_test_enter 0x00014a81 Thumb Code 28 drv_dsi_tx.o(i.drv_tx_phy_test_enter) + drv_tx_phy_test_exit 0x00014aa1 Thumb Code 28 drv_dsi_tx.o(i.drv_tx_phy_test_exit) + drv_tx_phy_test_write_code 0x00014ac1 Thumb Code 34 drv_dsi_tx.o(i.drv_tx_phy_test_write_code) + drv_uart_abort_recv 0x00014ae9 Thumb Code 46 drv_uart.o(i.drv_uart_abort_recv) + drv_uart_abort_send 0x00014b1d Thumb Code 46 drv_uart.o(i.drv_uart_abort_send) + drv_uart_config_int 0x00014b51 Thumb Code 20 drv_uart.o(i.drv_uart_config_int) + drv_uart_enable_int 0x00014b7d Thumb Code 84 drv_uart.o(i.drv_uart_enable_int) + drv_uart_get_instance 0x00014bd9 Thumb Code 36 drv_uart.o(i.drv_uart_get_instance) + drv_uart_init 0x00014c01 Thumb Code 206 drv_uart.o(i.drv_uart_init) + drv_uart_reset_rx_fifo 0x00014d0d Thumb Code 28 drv_uart.o(i.drv_uart_reset_rx_fifo) + drv_uart_reset_tx_fifo 0x00014d29 Thumb Code 28 drv_uart.o(i.drv_uart_reset_tx_fifo) + drv_uart_send_blocking 0x00014d45 Thumb Code 26 drv_uart.o(i.drv_uart_send_blocking) + drv_uart_set_baud_rate 0x00014d5f Thumb Code 84 drv_uart.o(i.drv_uart_set_baud_rate) + drv_uart_trans_create_handle 0x00014db5 Thumb Code 72 drv_uart.o(i.drv_uart_trans_create_handle) + drv_vidc_clear_irq 0x00014e01 Thumb Code 10 drv_vidc.o(i.drv_vidc_clear_irq) + drv_vidc_enable 0x00014e11 Thumb Code 26 drv_vidc.o(i.drv_vidc_enable) + drv_vidc_enable_irq 0x00014e31 Thumb Code 58 drv_vidc.o(i.drv_vidc_enable_irq) + drv_vidc_get_int_source 0x00014e71 Thumb Code 40 drv_vidc.o(i.drv_vidc_get_int_source) + drv_vidc_get_irq_status 0x00014e9d Thumb Code 20 drv_vidc.o(i.drv_vidc_get_irq_status) + drv_vidc_init_module_enable 0x00014eb5 Thumb Code 36 drv_vidc.o(i.drv_vidc_init_module_enable) + drv_vidc_register_callback 0x00014ee1 Thumb Code 6 drv_vidc.o(i.drv_vidc_register_callback) + drv_vidc_reset 0x00014eed Thumb Code 8 drv_vidc.o(i.drv_vidc_reset) + drv_vidc_set_circ_mode_enable 0x00014ef9 Thumb Code 24 drv_vidc.o(i.drv_vidc_set_circ_mode_enable) + drv_vidc_set_dither_config 0x00014f15 Thumb Code 50 drv_vidc.o(i.drv_vidc_set_dither_config) + drv_vidc_set_dst_parameter 0x00014f4d Thumb Code 86 drv_vidc.o(i.drv_vidc_set_dst_parameter) + drv_vidc_set_honly_hcoef0 0x00014fa9 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_honly_hcoef0) + drv_vidc_set_honly_hinitb 0x00014fb5 Thumb Code 38 drv_vidc.o(i.drv_vidc_set_honly_hinitb) + drv_vidc_set_honly_hinitr 0x00014fe1 Thumb Code 42 drv_vidc.o(i.drv_vidc_set_honly_hinitr) + drv_vidc_set_irqen 0x00015011 Thumb Code 22 drv_vidc.o(i.drv_vidc_set_irqen) + drv_vidc_set_mirror 0x0001502d Thumb Code 16 drv_vidc.o(i.drv_vidc_set_mirror) + drv_vidc_set_pentile_swap 0x00015041 Thumb Code 20 drv_vidc.o(i.drv_vidc_set_pentile_swap) + drv_vidc_set_pu_ctrl 0x0001505d Thumb Code 6 drv_vidc.o(i.drv_vidc_set_pu_ctrl) + drv_vidc_set_rotation 0x00015069 Thumb Code 18 drv_vidc.o(i.drv_vidc_set_rotation) + drv_vidc_set_scld_hcoef0 0x00015081 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_hcoef0) + drv_vidc_set_scld_hcoef1 0x0001508d Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_hcoef1) + drv_vidc_set_scld_step 0x00015099 Thumb Code 14 drv_vidc.o(i.drv_vidc_set_scld_step) + drv_vidc_set_scld_vcoef0 0x000150ad Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_vcoef0) + drv_vidc_set_scld_vcoef1 0x000150b9 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_vcoef1) + drv_vidc_set_src_parameter 0x000150c5 Thumb Code 28 drv_vidc.o(i.drv_vidc_set_src_parameter) + drv_vidc_set_vintp_config 0x000150e5 Thumb Code 52 drv_vidc.o(i.drv_vidc_set_vintp_config) + fputc 0x0001511d Thumb Code 42 tau_log.o(i.fputc) + google_p8p_demo 0x00015151 Thumb Code 48 p8p_demo.o(i.google_p8p_demo) + hal_dsi_rx_ctrl_create_handle 0x000151f1 Thumb Code 60 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) + hal_dsi_rx_ctrl_dcs_async_handler 0x00015231 Thumb Code 60 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) + hal_dsi_rx_ctrl_deinit 0x00015271 Thumb Code 132 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) + hal_dsi_rx_ctrl_get_max_ret_size 0x00015305 Thumb Code 28 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) + hal_dsi_rx_ctrl_init 0x00015325 Thumb Code 158 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) + hal_dsi_rx_ctrl_pre_init_pps 0x00015abd Thumb Code 50 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) + hal_dsi_rx_ctrl_send_ack_cmd 0x00015af5 Thumb Code 210 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) + hal_dsi_rx_ctrl_start 0x00015c15 Thumb Code 42 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) + hal_dsi_rx_ctrl_stop 0x00015c45 Thumb Code 42 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) + hal_dsi_rx_ctrl_toggle_resolution 0x00015c75 Thumb Code 28 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) + hal_dsi_tx_ctrl_create_handle 0x00015f11 Thumb Code 48 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) + hal_dsi_tx_ctrl_deinit 0x00015f49 Thumb Code 102 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) + hal_dsi_tx_ctrl_gen_a_tear_signal 0x00015fbd Thumb Code 34 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) + hal_dsi_tx_ctrl_init 0x00015fe1 Thumb Code 110 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) + hal_dsi_tx_ctrl_set_overwrite_rgb 0x0001606d Thumb Code 8 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) + hal_dsi_tx_ctrl_set_tear_mode 0x00016075 Thumb Code 10 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) + hal_dsi_tx_ctrl_start 0x00016081 Thumb Code 116 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) + hal_dsi_tx_ctrl_stop 0x000160fd Thumb Code 52 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) + hal_dsi_tx_ctrl_write_array_cmd 0x00016135 Thumb Code 238 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) + hal_dsi_tx_ctrl_write_cmd 0x00016229 Thumb Code 202 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) + hal_gpio_config_pad 0x000168dd Thumb Code 58 hal_gpio.o(i.hal_gpio_config_pad) + hal_gpio_ctrl_eint 0x00016919 Thumb Code 18 hal_gpio.o(i.hal_gpio_ctrl_eint) + hal_gpio_init_eint 0x00016931 Thumb Code 58 hal_gpio.o(i.hal_gpio_init_eint) + hal_gpio_init_input 0x00016971 Thumb Code 22 hal_gpio.o(i.hal_gpio_init_input) + hal_gpio_init_output 0x00016987 Thumb Code 28 hal_gpio.o(i.hal_gpio_init_output) + hal_gpio_reg_eint_cb 0x000169a5 Thumb Code 22 hal_gpio.o(i.hal_gpio_reg_eint_cb) + hal_gpio_set_ap_reset_int 0x000169c1 Thumb Code 76 hal_gpio.o(i.hal_gpio_set_ap_reset_int) + hal_gpio_set_mode 0x00016a11 Thumb Code 94 hal_gpio.o(i.hal_gpio_set_mode) + hal_gpio_set_output_data 0x00016a75 Thumb Code 8 hal_gpio.o(i.hal_gpio_set_output_data) + hal_internal_sync_get_hight_performan_mode 0x00016a7d Thumb Code 10 hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) + hal_internal_sync_input_resolution_change 0x00016a8d Thumb Code 330 hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) + hal_internal_sync_register_lcdc_cb 0x00016c41 Thumb Code 8 hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) + hal_internal_vsync_deinit 0x00016c4d Thumb Code 22 hal_internal_vsync.o(i.hal_internal_vsync_deinit) + hal_internal_vsync_get_rx_state 0x00016c6d Thumb Code 6 hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) + hal_internal_vsync_get_sync_line 0x00016c79 Thumb Code 16 hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) + hal_internal_vsync_get_tx_state 0x00016c8d Thumb Code 6 hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) + hal_internal_vsync_init_rx 0x00016c99 Thumb Code 190 hal_internal_vsync.o(i.hal_internal_vsync_init_rx) + hal_internal_vsync_init_tx 0x00016d71 Thumb Code 194 hal_internal_vsync.o(i.hal_internal_vsync_init_tx) + hal_internal_vsync_set_rx_state 0x00016e39 Thumb Code 28 hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) + hal_internal_vsync_set_tear_mode 0x00016e59 Thumb Code 262 hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) + hal_internal_vsync_set_tx_state 0x00016f71 Thumb Code 92 hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) + hal_intl_dcs_init_sw_fltr 0x00016fdd Thumb Code 90 hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) + hal_intl_dcs_set_auto_hw_filter 0x00017691 Thumb Code 130 hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) + hal_intl_fb_cal_fb_info 0x00017749 Thumb Code 738 hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) + hal_intl_fb_get_memc_flow_mode 0x00017bdd Thumb Code 6 hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) + hal_intl_fb_get_rx_fb_info 0x00017be9 Thumb Code 12 hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) + hal_intl_fb_get_tx_fb_info 0x00017bf9 Thumb Code 12 hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) + hal_intl_fb_get_user_flow 0x00017c09 Thumb Code 6 hal_internal_fb.o(i.hal_intl_fb_get_user_flow) + hal_intl_svs_deinit_rx 0x00017c15 Thumb Code 32 hal_internal_svs.o(i.hal_intl_svs_deinit_rx) + hal_intl_svs_deinit_tx 0x00017c3d Thumb Code 10 hal_internal_svs.o(i.hal_intl_svs_deinit_tx) + hal_intl_svs_handle 0x00017c4d Thumb Code 24 hal_internal_svs.o(i.hal_intl_svs_handle) + hal_intl_svs_init_rx 0x00017c71 Thumb Code 120 hal_internal_svs.o(i.hal_intl_svs_init_rx) + hal_intl_svs_init_tx 0x00017cf1 Thumb Code 16 hal_internal_svs.o(i.hal_intl_svs_init_tx) + hal_intl_svs_set_rx_vtt 0x00017d05 Thumb Code 6 hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) + hal_intl_svs_update_rxbr_clk 0x00017d11 Thumb Code 52 hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) + hal_lcdc_displayproc_config 0x00017d59 Thumb Code 94 hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) + hal_lcdc_postproc_config 0x00017e79 Thumb Code 276 hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) + hal_lcdc_upscaler_config 0x00018001 Thumb Code 202 hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) + hal_nonshadow_func_update 0x000180e1 Thumb Code 180 hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) + hal_pwr_enter_deep_sleep_mode 0x0001819d Thumb Code 42 hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) + hal_pwr_enter_normal_sleep_mode 0x000181c7 Thumb Code 8 hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) + hal_pwr_enter_stop_sleep_mode 0x000181d1 Thumb Code 88 hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) + hal_pwr_exit_sleep_mode 0x00018235 Thumb Code 10 hal_pwr.o(i.hal_pwr_exit_sleep_mode) + hal_pwr_get_vcc_power_ready 0x0001823f Thumb Code 8 hal_pwr.o(i.hal_pwr_get_vcc_power_ready) + hal_pwr_set_main_power 0x00018247 Thumb Code 8 hal_pwr.o(i.hal_pwr_set_main_power) + hal_pwr_set_sleep_mode_power 0x0001824f Thumb Code 8 hal_pwr.o(i.hal_pwr_set_sleep_mode_power) + hal_pwr_set_stop_sleep_wakeup_pin 0x00018259 Thumb Code 86 hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) + hal_swire_deinit 0x000182bd Thumb Code 60 hal_swire.o(i.hal_swire_deinit) + hal_swire_enable 0x000182fd Thumb Code 86 hal_swire.o(i.hal_swire_enable) + hal_swire_init 0x00018359 Thumb Code 74 hal_swire.o(i.hal_swire_init) + hal_swire_set_pulse 0x000183b1 Thumb Code 32 hal_swire.o(i.hal_swire_set_pulse) + hal_swire_set_timer 0x000183d5 Thumb Code 60 hal_swire.o(i.hal_swire_set_timer) + hal_system_init 0x00018415 Thumb Code 192 hal_system.o(i.hal_system_init) + hal_system_updata_sysclk 0x000184f9 Thumb Code 60 hal_system.o(i.hal_system_updata_sysclk) + hal_timer_deinit 0x00018549 Thumb Code 48 hal_timer.o(i.hal_timer_deinit) + hal_timer_init 0x00018579 Thumb Code 28 hal_timer.o(i.hal_timer_init) + hal_timer_set_repeat 0x00018595 Thumb Code 8 hal_timer.o(i.hal_timer_set_repeat) + hal_uart_init 0x000185cd Thumb Code 134 hal_uart.o(i.hal_uart_init) + hal_uart_send_blocking 0x00018661 Thumb Code 24 hal_uart.o(i.hal_uart_send_blocking) + hal_vsync_func_update 0x0001867d Thumb Code 18 hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) + hal_vsync_reset_lcdc_scaler 0x00018695 Thumb Code 188 hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) + main 0x00018761 Thumb Code 32 main.o(i.main) + tau_log_init 0x00018fcd Thumb Code 48 tau_log.o(i.tau_log_init) + tau_log_printf 0x00019001 Thumb Code 116 tau_log.o(i.tau_log_printf) + tau_log_push_log 0x00019085 Thumb Code 118 tau_log.o(i.tau_log_push_log) + panel_init_code 0x00019328 Data 8262 p8p_demo.o(.constdata) + Region$$Table$$Base 0x0001b568 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x0001b588 Number 0 anon$$obj.o(Region$$Table) + rd_51_val 0x00070018 Data 2 p8p_demo.o(.data) + rd_51_val2 0x0007001a Data 2 p8p_demo.o(.data) + pps 0x0007001c Data 128 p8p_demo.o(.data) + pps_fhd 0x0007009c Data 128 p8p_demo.o(.data) + value_51H 0x0007011c Data 1 p8p_demo.o(.data) + value_51L 0x0007011d Data 1 p8p_demo.o(.data) + sg_uart0_tx_handle 0x000701b0 Data 4 hal_uart.o(.data) + sg_uart0_rx_handle 0x000701b4 Data 4 hal_uart.o(.data) + sg_uart1_tx_handle 0x000701b8 Data 4 hal_uart.o(.data) + sg_uart1_rx_handle 0x000701bc Data 4 hal_uart.o(.data) + g_sof_gen_te_func 0x000701cc Data 4 hal_internal_vsync.o(.data) + hal_internal_vsync_handle_callback 0x000701d0 Data 4 hal_internal_vsync.o(.data) + hal_internal_disp_end_handle_callback 0x000701d4 Data 4 hal_internal_vsync.o(.data) + g_systick_cb_func 0x00070204 Data 4 drv_common.o(.data) + g_system_clock 0x00070208 Data 4 drv_common.o(.data) + g_system_delay_step 0x0007020c Data 1 drv_common.o(.data) + g_int_rxbr_irq0_cb_func 0x00070270 Data 4 drv_rxbr.o(.data) + g_int_rxbr_irq1_cb_func 0x00070274 Data 4 drv_rxbr.o(.data) + g_int_vidc_cb_func 0x00070278 Data 4 drv_vidc.o(.data) + dma_req_map 0x0007037c Data 144 drv_dma.o(.data) + __stdout 0x0007040c Data 4 stdout.o(.data) + g_vsync_handle 0x00070698 Data 40 hal_internal_vsync.o(.bss) + g_dcs_execute_table 0x000706c0 Data 2048 hal_internal_dcs.o(.bss) + g_rx_fb_info 0x00070fc0 Data 68 hal_internal_fb.o(.bss) + g_packet_fifo 0x00071088 Data 4204 dcs_packet_fifo.o(.bss) + __stack_limit 0x00072168 Data 0 startup_armcm0.o(STACK) + __initial_sp 0x00073168 Data 0 startup_armcm0.o(STACK) + + + +============================================================================== + +Memory Map of the image + + Image Entry point : 0x000100c1 + + Load Region LR_IROM2 (Base: 0x00010000, Size: 0x0000b998, Max: 0x00010000, ABSOLUTE, COMPRESSED[0x0000b6f4]) + + Execution Region ER_IROM2 (Exec base: 0x00010000, Load base: 0x00010000, Size: 0x0000b588, Max: 0x00010000, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x00010000 0x00010000 0x000000c0 Data RO 323 RESET startup_armcm0.o + 0x000100c0 0x000100c0 0x00000000 Code RO 1866 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x000100c0 0x000100c0 0x00000004 Code RO 2170 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x000100c4 0x000100c4 0x00000004 Code RO 2173 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x000100c8 0x000100c8 0x00000000 Code RO 2175 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x000100c8 0x000100c8 0x00000000 Code RO 2177 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x000100c8 0x000100c8 0x00000008 Code RO 2178 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x000100d0 0x000100d0 0x00000000 Code RO 2180 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x000100d0 0x000100d0 0x00000000 Code RO 2182 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x000100d0 0x000100d0 0x00000004 Code RO 2171 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x000100d4 0x000100d4 0x00000078 Code RO 324 .text startup_armcm0.o + 0x0001014c 0x0001014c 0x0000002c Code RO 1869 .text mc_p.l(uidiv.o) + 0x00010178 0x00010178 0x00000028 Code RO 1871 .text mc_p.l(idiv.o) + 0x000101a0 0x000101a0 0x00000024 Code RO 1873 .text mc_p.l(memcpya.o) + 0x000101c4 0x000101c4 0x00000024 Code RO 1875 .text mc_p.l(memseta.o) + 0x000101e8 0x000101e8 0x0000000e Code RO 1877 .text mc_p.l(strlen.o) + 0x000101f6 0x000101f6 0x000000b2 Code RO 2142 .text mf_p.l(fadd.o) + 0x000102a8 0x000102a8 0x0000007a Code RO 2144 .text mf_p.l(fmul.o) + 0x00010322 0x00010322 0x0000007c Code RO 2146 .text mf_p.l(fdiv.o) + 0x0001039e 0x0001039e 0x00000018 Code RO 2148 .text mf_p.l(fscalb.o) + 0x000103b6 0x000103b6 0x00000002 PAD + 0x000103b8 0x000103b8 0x00000164 Code RO 2150 .text mf_p.l(dadd.o) + 0x0001051c 0x0001051c 0x000000d0 Code RO 2152 .text mf_p.l(dmul.o) + 0x000105ec 0x000105ec 0x0000000e Code RO 2154 .text mf_p.l(ffltui.o) + 0x000105fa 0x000105fa 0x00000002 PAD + 0x000105fc 0x000105fc 0x0000001c Code RO 2156 .text mf_p.l(dfltui.o) + 0x00010618 0x00010618 0x00000028 Code RO 2158 .text mf_p.l(ffixui.o) + 0x00010640 0x00010640 0x0000003c Code RO 2160 .text mf_p.l(dfixui.o) + 0x0001067c 0x0001067c 0x00000028 Code RO 2162 .text mf_p.l(f2d.o) + 0x000106a4 0x000106a4 0x00000038 Code RO 2164 .text mf_p.l(d2f.o) + 0x000106dc 0x000106dc 0x00000014 Code RO 2166 .text mf_p.l(cfcmple.o) + 0x000106f0 0x000106f0 0x00000014 Code RO 2168 .text mf_p.l(cfrcmple.o) + 0x00010704 0x00010704 0x00000060 Code RO 2185 .text mc_p.l(uldiv.o) + 0x00010764 0x00010764 0x00000020 Code RO 2187 .text mc_p.l(llshl.o) + 0x00010784 0x00010784 0x00000022 Code RO 2189 .text mc_p.l(llushr.o) + 0x000107a6 0x000107a6 0x00000026 Code RO 2191 .text mc_p.l(llsshr.o) + 0x000107cc 0x000107cc 0x00000000 Code RO 2193 .text mc_p.l(iusefp.o) + 0x000107cc 0x000107cc 0x00000082 Code RO 2194 .text mf_p.l(fepilogue.o) + 0x0001084e 0x0001084e 0x000000be Code RO 2196 .text mf_p.l(depilogue.o) + 0x0001090c 0x0001090c 0x000000f0 Code RO 2200 .text mf_p.l(ddiv.o) + 0x000109fc 0x000109fc 0x00000040 Code RO 2202 .text mf_p.l(dfixul.o) + 0x00010a3c 0x00010a3c 0x00000028 Code RO 2204 .text mf_p.l(cdrcmple.o) + 0x00010a64 0x00010a64 0x00000024 Code RO 2206 .text mc_p.l(init.o) + 0x00010a88 0x00010a88 0x00000056 Code RO 2216 .text mc_p.l(__dczerorl2.o) + 0x00010ade 0x00010ade 0x00000002 PAD + 0x00010ae0 0x00010ae0 0x0000001c Code RO 948 i.AP_NRESET_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010afc 0x00010afc 0x0000005c Code RO 1715 i.DMA_IRQn_Handler CVWL668.lib(drv_dma.o) + 0x00010b58 0x00010b58 0x0000000a Code RO 949 i.EXTI_INT0_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b62 0x00010b62 0x0000000a Code RO 950 i.EXTI_INT1_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b6c 0x00010b6c 0x0000000a Code RO 951 i.EXTI_INT2_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b76 0x00010b76 0x0000000a Code RO 952 i.EXTI_INT3_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b80 0x00010b80 0x0000000a Code RO 953 i.EXTI_INT4_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b8a 0x00010b8a 0x0000000a Code RO 954 i.EXTI_INT5_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b94 0x00010b94 0x0000000a Code RO 955 i.EXTI_INT6_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b9e 0x00010b9e 0x0000000a Code RO 956 i.EXTI_INT7_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010ba8 0x00010ba8 0x00000048 Code RO 871 i.HardFault_Handler CVWL668.lib(drv_common.o) + 0x00010bf0 0x00010bf0 0x00000100 Code RO 720 i.LCDC_IRQn_Handler CVWL668.lib(hal_internal_vsync.o) + 0x00010cf0 0x00010cf0 0x0000009a Code RO 1475 i.MEMC_IRQn_Handler CVWL668.lib(drv_memc.o) + 0x00010d8a 0x00010d8a 0x00000002 PAD + 0x00010d8c 0x00010d8c 0x000000b8 Code RO 1281 i.MIPI_TX_IRQn_Handler CVWL668.lib(drv_dsi_tx.o) + 0x00010e44 0x00010e44 0x00000030 Code RO 1110 i.SWIRE_IRQn_Handler CVWL668.lib(drv_swire.o) + 0x00010e74 0x00010e74 0x00000018 Code RO 872 i.SysTick_Handler CVWL668.lib(drv_common.o) + 0x00010e8c 0x00010e8c 0x0000000a Code RO 1153 i.TIMER0_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010e96 0x00010e96 0x0000000a Code RO 1154 i.TIMER1_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010ea0 0x00010ea0 0x0000000a Code RO 1155 i.TIMER2_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010eaa 0x00010eaa 0x0000000a Code RO 1156 i.TIMER3_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010eb4 0x00010eb4 0x0000001c Code RO 1630 i.VIDC_IRQn_Handler CVWL668.lib(drv_vidc.o) + 0x00010ed0 0x00010ed0 0x0000001c Code RO 1541 i.VPRE1_IRQn_Handler CVWL668.lib(drv_rxbr.o) + 0x00010eec 0x00010eec 0x0000007c Code RO 782 i.VPRE_IRQn_Handler CVWL668.lib(hal_internal_dcs.o) + 0x00010f68 0x00010f68 0x00000020 Code RO 2114 i.__0printf mc_p.l(printfa.o) + 0x00010f88 0x00010f88 0x00000024 Code RO 2120 i.__0vsprintf mc_p.l(printfa.o) + 0x00010fac 0x00010fac 0x0000002e Code RO 2198 i.__ARM_clz mf_p.l(depilogue.o) + 0x00010fda 0x00010fda 0x0000001a Code RO 408 i.__ARM_common_switch8 CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00010ff4 0x00010ff4 0x00000002 Code RO 2211 i.__scatterload_null mc_p.l(handlers.o) + 0x00010ff6 0x00010ff6 0x0000000a Code RO 2126 i._sputc mc_p.l(printfa.o) + 0x00011000 0x00011000 0x0000001c Data RO 879 .ARM.__at_0x11000 CVWL668.lib(drv_common.o) + 0x0001101c 0x0001101c 0x00000010 Data RO 676 .ARM.__at_0x1101C CVWL668.lib(tau_log.o) + 0x0001102c 0x0001102c 0x00000016 Data RO 461 .ARM.__at_0x1102C CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00011042 0x00011042 0x00000002 PAD + 0x00011044 0x00011044 0x00000364 Code RO 1220 i.MIPI_RX_IRQn_Handler CVWL668.lib(drv_dsi_rx.o) + 0x000113a8 0x000113a8 0x00000180 Code RO 1778 i.UART_IRQn_Handler CVWL668.lib(drv_uart.o) + 0x00011528 0x00011528 0x00000020 Code RO 1542 i.__NVIC_DisableIRQ CVWL668.lib(drv_rxbr.o) + 0x00011548 0x00011548 0x00000018 Code RO 1543 i.__NVIC_EnableIRQ CVWL668.lib(drv_rxbr.o) + 0x00011560 0x00011560 0x0000000e Code RO 2210 i.__scatterload_copy mc_p.l(handlers.o) + 0x0001156e 0x0001156e 0x0000000e Code RO 2212 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x0001157c 0x0001157c 0x00000174 Code RO 2121 i._fp_digits mc_p.l(printfa.o) + 0x000116f0 0x000116f0 0x000006ec Code RO 2122 i._printf_core mc_p.l(printfa.o) + 0x00011ddc 0x00011ddc 0x00000020 Code RO 2123 i._printf_post_padding mc_p.l(printfa.o) + 0x00011dfc 0x00011dfc 0x0000002c Code RO 2124 i._printf_pre_padding mc_p.l(printfa.o) + 0x00011e28 0x00011e28 0x00000144 Code RO 95 i.ap_dcs_read p8p_demo.o + 0x00011f6c 0x00011f6c 0x000000a4 Code RO 96 i.ap_dcs_set_backlight p8p_demo.o + 0x00012010 0x00012010 0x00000048 Code RO 97 i.ap_dcs_set_display_off p8p_demo.o + 0x00012058 0x00012058 0x000000a0 Code RO 98 i.ap_dcs_set_display_on p8p_demo.o + 0x000120f8 0x000120f8 0x00000094 Code RO 99 i.ap_dcs_set_enter_sleep_mode p8p_demo.o + 0x0001218c 0x0001218c 0x00000040 Code RO 101 i.ap_dcs_set_exit_sleep_mode p8p_demo.o + 0x000121cc 0x000121cc 0x00000034 Code RO 102 i.ap_dcs_set_frame_change p8p_demo.o + 0x00012200 0x00012200 0x00000058 Code RO 103 i.ap_rstn_pull_down_cb p8p_demo.o + 0x00012258 0x00012258 0x0000001c Code RO 104 i.ap_rstn_pull_high_cb p8p_demo.o + 0x00012274 0x00012274 0x0000004a Code RO 105 i.ap_set_FPS_53 p8p_demo.o + 0x000122be 0x000122be 0x0000002c Code RO 106 i.app_display_init p8p_demo.o + 0x000122ea 0x000122ea 0x00000002 PAD + 0x000122ec 0x000122ec 0x0000001c Code RO 107 i.app_gpio_init p8p_demo.o + 0x00012308 0x00012308 0x00000034 Code RO 108 i.app_init_panel p8p_demo.o + 0x0001233c 0x0001233c 0x00000120 Code RO 109 i.app_mipi_rx_init p8p_demo.o + 0x0001245c 0x0001245c 0x00000100 Code RO 110 i.app_mipi_tx_init p8p_demo.o + 0x0001255c 0x0001255c 0x000000ac Code RO 111 i.app_mipi_tx_start p8p_demo.o + 0x00012608 0x00012608 0x0000006c Code RO 112 i.app_system_process p8p_demo.o + 0x00012674 0x00012674 0x00000044 Code RO 113 i.app_system_resume p8p_demo.o + 0x000126b8 0x000126b8 0x00000190 Code RO 114 i.app_system_suspend p8p_demo.o + 0x00012848 0x00012848 0x0000002e Code RO 115 i.app_tx_panel_reset p8p_demo.o + 0x00012876 0x00012876 0x00000002 PAD + 0x00012878 0x00012878 0x00000018 Code RO 297 i.board_Init board.o + 0x00012890 0x00012890 0x000000c8 Code RO 1863 i.ceil m_ps.l(ceil.o) + 0x00012958 0x00012958 0x0000002c Code RO 721 i.check_mipi_rx_tx_video_info CVWL668.lib(hal_internal_vsync.o) + 0x00012984 0x00012984 0x00000088 Code RO 783 i.check_pkt_buf_rev CVWL668.lib(hal_internal_dcs.o) + 0x00012a0c 0x00012a0c 0x00000058 Code RO 1186 i.dcs_packet_fifo_alloc CVWL668.lib(dcs_packet_fifo.o) + 0x00012a64 0x00012a64 0x00000018 Code RO 1187 i.dcs_packet_fifo_init CVWL668.lib(dcs_packet_fifo.o) + 0x00012a7c 0x00012a7c 0x00000044 Code RO 1188 i.dcs_packet_free_fifo_header CVWL668.lib(dcs_packet_fifo.o) + 0x00012ac0 0x00012ac0 0x00000024 Code RO 1189 i.dcs_packet_get_fifo_header CVWL668.lib(dcs_packet_fifo.o) + 0x00012ae4 0x00012ae4 0x00000018 Code RO 663 i.delayMs CVWL668.lib(tau_delay.o) + 0x00012afc 0x00012afc 0x0000002c Code RO 664 i.delayUs CVWL668.lib(tau_delay.o) + 0x00012b28 0x00012b28 0x00000008 Code RO 877 i.drv_common_system_init CVWL668.lib(drv_common.o) + 0x00012b30 0x00012b30 0x0000003c Code RO 896 i.drv_crgu_enable_clock CVWL668.lib(drv_crgu.o) + 0x00012b6c 0x00012b6c 0x00000068 Code RO 899 i.drv_crgu_get_rxbr_clk CVWL668.lib(drv_crgu.o) + 0x00012bd4 0x00012bd4 0x00000010 Code RO 902 i.drv_crgu_reset_modules CVWL668.lib(drv_crgu.o) + 0x00012be4 0x00012be4 0x00000028 Code RO 903 i.drv_crgu_set_ahb_clk CVWL668.lib(drv_crgu.o) + 0x00012c0c 0x00012c0c 0x00000010 Code RO 904 i.drv_crgu_set_clock_div CVWL668.lib(drv_crgu.o) + 0x00012c1c 0x00012c1c 0x0000003c Code RO 906 i.drv_crgu_set_dpi_clk CVWL668.lib(drv_crgu.o) + 0x00012c58 0x00012c58 0x00000038 Code RO 907 i.drv_crgu_set_dsc_clk CVWL668.lib(drv_crgu.o) + 0x00012c90 0x00012c90 0x00000028 Code RO 908 i.drv_crgu_set_fb_clk CVWL668.lib(drv_crgu.o) + 0x00012cb8 0x00012cb8 0x00000028 Code RO 909 i.drv_crgu_set_lcdc_clk CVWL668.lib(drv_crgu.o) + 0x00012ce0 0x00012ce0 0x00000018 Code RO 910 i.drv_crgu_set_reset CVWL668.lib(drv_crgu.o) + 0x00012cf8 0x00012cf8 0x00000028 Code RO 911 i.drv_crgu_set_rxbr_clk CVWL668.lib(drv_crgu.o) + 0x00012d20 0x00012d20 0x00000028 Code RO 912 i.drv_crgu_set_vidc_clk CVWL668.lib(drv_crgu.o) + 0x00012d48 0x00012d48 0x00000018 Code RO 1717 i.drv_dma_clear_status CVWL668.lib(drv_dma.o) + 0x00012d60 0x00012d60 0x00000014 Code RO 1723 i.drv_dma_get_int_source CVWL668.lib(drv_dma.o) + 0x00012d74 0x00012d74 0x0000001c Code RO 936 i.drv_dsc_dec_disable CVWL668.lib(drv_dsc_dec.o) + 0x00012d90 0x00012d90 0x00000038 Code RO 937 i.drv_dsc_dec_enable CVWL668.lib(drv_dsc_dec.o) + 0x00012dc8 0x00012dc8 0x00000020 Code RO 938 i.drv_dsc_dec_get_nslc CVWL668.lib(drv_dsc_dec.o) + 0x00012de8 0x00012de8 0x0000001c Code RO 939 i.drv_dsc_dec_set_irqen CVWL668.lib(drv_dsc_dec.o) + 0x00012e04 0x00012e04 0x0000010c Code RO 1221 i.drv_dsi_rx_calc_ipi_tx_delay CVWL668.lib(drv_dsi_rx.o) + 0x00012f10 0x00012f10 0x00000040 Code RO 1222 i.drv_dsi_rx_enable_irq CVWL668.lib(drv_dsi_rx.o) + 0x00012f50 0x00012f50 0x00000050 Code RO 1224 i.drv_dsi_rx_get_color_bpp CVWL668.lib(drv_dsi_rx.o) + 0x00012fa0 0x00012fa0 0x0000001c Code RO 1225 i.drv_dsi_rx_get_color_pcc CVWL668.lib(drv_dsi_rx.o) + 0x00012fbc 0x00012fbc 0x00000010 Code RO 1226 i.drv_dsi_rx_get_compression_en CVWL668.lib(drv_dsi_rx.o) + 0x00012fcc 0x00012fcc 0x00000010 Code RO 1227 i.drv_dsi_rx_get_ddi_crc_en CVWL668.lib(drv_dsi_rx.o) + 0x00012fdc 0x00012fdc 0x0000000c Code RO 1229 i.drv_dsi_rx_get_max_ret_size CVWL668.lib(drv_dsi_rx.o) + 0x00012fe8 0x00012fe8 0x00000018 Code RO 1232 i.drv_dsi_rx_power_up CVWL668.lib(drv_dsi_rx.o) + 0x00013000 0x00013000 0x0000001c Code RO 1233 i.drv_dsi_rx_set_check_crc CVWL668.lib(drv_dsi_rx.o) + 0x0001301c 0x0001301c 0x00000024 Code RO 1234 i.drv_dsi_rx_set_ctrl_cfg CVWL668.lib(drv_dsi_rx.o) + 0x00013040 0x00013040 0x00000010 Code RO 1235 i.drv_dsi_rx_set_ddi_cfg CVWL668.lib(drv_dsi_rx.o) + 0x00013050 0x00013050 0x0000001c Code RO 1236 i.drv_dsi_rx_set_ddi_crc_en CVWL668.lib(drv_dsi_rx.o) + 0x0001306c 0x0001306c 0x0000000c Code RO 1239 i.drv_dsi_rx_set_inten CVWL668.lib(drv_dsi_rx.o) + 0x00013078 0x00013078 0x00000010 Code RO 1240 i.drv_dsi_rx_set_ipi_cfg CVWL668.lib(drv_dsi_rx.o) + 0x00013088 0x00013088 0x0000001c Code RO 1242 i.drv_dsi_rx_set_ipi_ycbcr_frmt CVWL668.lib(drv_dsi_rx.o) + 0x000130a4 0x000130a4 0x00000014 Code RO 1243 i.drv_dsi_rx_set_lane_swap CVWL668.lib(drv_dsi_rx.o) + 0x000130b8 0x000130b8 0x00000024 Code RO 1244 i.drv_dsi_rx_set_resp_cnt CVWL668.lib(drv_dsi_rx.o) + 0x000130dc 0x000130dc 0x0000001c Code RO 1245 i.drv_dsi_rx_set_tear_resp_en CVWL668.lib(drv_dsi_rx.o) + 0x000130f8 0x000130f8 0x00000100 Code RO 1246 i.drv_dsi_rx_set_up_phy CVWL668.lib(drv_dsi_rx.o) + 0x000131f8 0x000131f8 0x00000018 Code RO 1247 i.drv_dsi_rx_shut_down CVWL668.lib(drv_dsi_rx.o) + 0x00013210 0x00013210 0x00000018 Code RO 1283 i.drv_dsi_tx_command_header CVWL668.lib(drv_dsi_tx.o) + 0x00013228 0x00013228 0x00000058 Code RO 1284 i.drv_dsi_tx_command_mode_cfg CVWL668.lib(drv_dsi_tx.o) + 0x00013280 0x00013280 0x0000000c Code RO 1285 i.drv_dsi_tx_command_put_payload CVWL668.lib(drv_dsi_tx.o) + 0x0001328c 0x0001328c 0x00000020 Code RO 1286 i.drv_dsi_tx_config_eotp CVWL668.lib(drv_dsi_tx.o) + 0x000132ac 0x000132ac 0x0000000c Code RO 1287 i.drv_dsi_tx_config_int CVWL668.lib(drv_dsi_tx.o) + 0x000132b8 0x000132b8 0x00000010 Code RO 1288 i.drv_dsi_tx_dpi_lpcmd_time CVWL668.lib(drv_dsi_tx.o) + 0x000132c8 0x000132c8 0x00000010 Code RO 1289 i.drv_dsi_tx_dpi_mode CVWL668.lib(drv_dsi_tx.o) + 0x000132d8 0x000132d8 0x00000024 Code RO 1290 i.drv_dsi_tx_dpi_polarity CVWL668.lib(drv_dsi_tx.o) + 0x000132fc 0x000132fc 0x0000000c Code RO 1291 i.drv_dsi_tx_edpi_cmd_size CVWL668.lib(drv_dsi_tx.o) + 0x00013308 0x00013308 0x0000000c Code RO 1293 i.drv_dsi_tx_get_cmd_status CVWL668.lib(drv_dsi_tx.o) + 0x00013314 0x00013314 0x0000000c Code RO 1295 i.drv_dsi_tx_mode CVWL668.lib(drv_dsi_tx.o) + 0x00013320 0x00013320 0x0000001c Code RO 1296 i.drv_dsi_tx_phy_clock_lane_auto_lp CVWL668.lib(drv_dsi_tx.o) + 0x0001333c 0x0001333c 0x00000020 Code RO 1297 i.drv_dsi_tx_phy_clock_lane_req_hs CVWL668.lib(drv_dsi_tx.o) + 0x0001335c 0x0001335c 0x00000010 Code RO 1299 i.drv_dsi_tx_phy_lane_mode CVWL668.lib(drv_dsi_tx.o) + 0x0001336c 0x0001336c 0x00000068 Code RO 1302 i.drv_dsi_tx_phy_status_ready CVWL668.lib(drv_dsi_tx.o) + 0x000133d4 0x000133d4 0x00000044 Code RO 1303 i.drv_dsi_tx_phy_status_stopstate CVWL668.lib(drv_dsi_tx.o) + 0x00013418 0x00013418 0x00000150 Code RO 1305 i.drv_dsi_tx_phy_test_setup CVWL668.lib(drv_dsi_tx.o) + 0x00013568 0x00013568 0x00000020 Code RO 1306 i.drv_dsi_tx_phy_time_cfg CVWL668.lib(drv_dsi_tx.o) + 0x00013588 0x00013588 0x0000000c Code RO 1310 i.drv_dsi_tx_powerup CVWL668.lib(drv_dsi_tx.o) + 0x00013594 0x00013594 0x00000024 Code RO 1311 i.drv_dsi_tx_response_mode CVWL668.lib(drv_dsi_tx.o) + 0x000135b8 0x000135b8 0x0000001c Code RO 1314 i.drv_dsi_tx_set_bta_ack CVWL668.lib(drv_dsi_tx.o) + 0x000135d4 0x000135d4 0x00000014 Code RO 1315 i.drv_dsi_tx_set_esc_div CVWL668.lib(drv_dsi_tx.o) + 0x000135e8 0x000135e8 0x00000040 Code RO 1316 i.drv_dsi_tx_set_int CVWL668.lib(drv_dsi_tx.o) + 0x00013628 0x00013628 0x00000018 Code RO 1317 i.drv_dsi_tx_set_time_out_div CVWL668.lib(drv_dsi_tx.o) + 0x00013640 0x00013640 0x00000014 Code RO 1318 i.drv_dsi_tx_set_video_chunk CVWL668.lib(drv_dsi_tx.o) + 0x00013654 0x00013654 0x00000024 Code RO 1319 i.drv_dsi_tx_set_video_timing CVWL668.lib(drv_dsi_tx.o) + 0x00013678 0x00013678 0x0000000c Code RO 1321 i.drv_dsi_tx_shutdown CVWL668.lib(drv_dsi_tx.o) + 0x00013684 0x00013684 0x0000002c Code RO 1322 i.drv_dsi_tx_timeout_cfg CVWL668.lib(drv_dsi_tx.o) + 0x000136b0 0x000136b0 0x000000e8 Code RO 1325 i.drv_dsi_tx_video_mode_cfg CVWL668.lib(drv_dsi_tx.o) + 0x00013798 0x00013798 0x00000036 Code RO 1823 i.drv_efuse_enter_inactive CVWL668.lib(drv_efuse.o) + 0x000137ce 0x000137ce 0x0000000c Code RO 1826 i.drv_efuse_int_enable CVWL668.lib(drv_efuse.o) + 0x000137da 0x000137da 0x0000003a Code RO 1827 i.drv_efuse_read CVWL668.lib(drv_efuse.o) + 0x00013814 0x00013814 0x00000018 Code RO 1828 i.drv_efuse_read_req CVWL668.lib(drv_efuse.o) + 0x0001382c 0x0001382c 0x00000024 Code RO 959 i.drv_gpio_handle_int CVWL668.lib(drv_gpio.o) + 0x00013850 0x00013850 0x0000000c Code RO 960 i.drv_gpio_register_ap_reset_callback CVWL668.lib(drv_gpio.o) + 0x0001385c 0x0001385c 0x00000014 Code RO 961 i.drv_gpio_register_callback CVWL668.lib(drv_gpio.o) + 0x00013870 0x00013870 0x00000044 Code RO 963 i.drv_gpio_set_int CVWL668.lib(drv_gpio.o) + 0x000138b4 0x000138b4 0x00000020 Code RO 964 i.drv_gpio_set_ioe CVWL668.lib(drv_gpio.o) + 0x000138d4 0x000138d4 0x00000014 Code RO 965 i.drv_gpio_set_mode CVWL668.lib(drv_gpio.o) + 0x000138e8 0x000138e8 0x00000020 Code RO 518 i.drv_gpio_set_output_data CVWL668.lib(hal_gpio.o) + 0x00013908 0x00013908 0x00000028 Code RO 1387 i.drv_lcdc_bcsa_config CVWL668.lib(drv_lcdc.o) + 0x00013930 0x00013930 0x0000002c Code RO 1388 i.drv_lcdc_cfg_int_frame CVWL668.lib(drv_lcdc.o) + 0x0001395c 0x0001395c 0x00000018 Code RO 1389 i.drv_lcdc_clear_int CVWL668.lib(drv_lcdc.o) + 0x00013974 0x00013974 0x00000034 Code RO 1391 i.drv_lcdc_cmd_start CVWL668.lib(drv_lcdc.o) + 0x000139a8 0x000139a8 0x00000014 Code RO 1392 i.drv_lcdc_config_acc_command_mode CVWL668.lib(drv_lcdc.o) + 0x000139bc 0x000139bc 0x00000038 Code RO 1393 i.drv_lcdc_config_int CVWL668.lib(drv_lcdc.o) + 0x000139f4 0x000139f4 0x00000028 Code RO 1394 i.drv_lcdc_config_int_single CVWL668.lib(drv_lcdc.o) + 0x00013a1c 0x00013a1c 0x00000018 Code RO 1395 i.drv_lcdc_config_overwrite_rgb CVWL668.lib(drv_lcdc.o) + 0x00013a34 0x00013a34 0x00000050 Code RO 1396 i.drv_lcdc_config_src_parameter CVWL668.lib(drv_lcdc.o) + 0x00013a84 0x00013a84 0x00000010 Code RO 1397 i.drv_lcdc_crop_hact CVWL668.lib(drv_lcdc.o) + 0x00013a94 0x00013a94 0x00000038 Code RO 1398 i.drv_lcdc_ctrl_flow CVWL668.lib(drv_lcdc.o) + 0x00013acc 0x00013acc 0x00000030 Code RO 1399 i.drv_lcdc_dith_config CVWL668.lib(drv_lcdc.o) + 0x00013afc 0x00013afc 0x0000003c Code RO 1401 i.drv_lcdc_edge_dect_config CVWL668.lib(drv_lcdc.o) + 0x00013b38 0x00013b38 0x00000064 Code RO 1402 i.drv_lcdc_edge_enh_config CVWL668.lib(drv_lcdc.o) + 0x00013b9c 0x00013b9c 0x00000024 Code RO 1403 i.drv_lcdc_enable_shadow_reg CVWL668.lib(drv_lcdc.o) + 0x00013bc0 0x00013bc0 0x0000001c Code RO 1404 i.drv_lcdc_endianness_config CVWL668.lib(drv_lcdc.o) + 0x00013bdc 0x00013bdc 0x00000020 Code RO 1405 i.drv_lcdc_fc_config CVWL668.lib(drv_lcdc.o) + 0x00013bfc 0x00013bfc 0x00000024 Code RO 1407 i.drv_lcdc_fldc_config CVWL668.lib(drv_lcdc.o) + 0x00013c20 0x00013c20 0x00000024 Code RO 1408 i.drv_lcdc_function_disable CVWL668.lib(drv_lcdc.o) + 0x00013c44 0x00013c44 0x00000024 Code RO 1409 i.drv_lcdc_function_enable CVWL668.lib(drv_lcdc.o) + 0x00013c68 0x00013c68 0x0000003c Code RO 1420 i.drv_lcdc_set_int CVWL668.lib(drv_lcdc.o) + 0x00013ca4 0x00013ca4 0x0000001c Code RO 1421 i.drv_lcdc_set_prefetch CVWL668.lib(drv_lcdc.o) + 0x00013cc0 0x00013cc0 0x0000001c Code RO 1422 i.drv_lcdc_set_tear_line CVWL668.lib(drv_lcdc.o) + 0x00013cdc 0x00013cdc 0x00000010 Code RO 1424 i.drv_lcdc_stop_display CVWL668.lib(drv_lcdc.o) + 0x00013cec 0x00013cec 0x0000003c Code RO 1426 i.drv_lcdc_vid_hw_start CVWL668.lib(drv_lcdc.o) + 0x00013d28 0x00013d28 0x00000018 Code RO 1428 i.drv_lcdc_vintp_mode_config CVWL668.lib(drv_lcdc.o) + 0x00013d40 0x00013d40 0x00000014 Code RO 1476 i.drv_memc_clear_status CVWL668.lib(drv_memc.o) + 0x00013d54 0x00013d54 0x00000040 Code RO 1477 i.drv_memc_enable_irq CVWL668.lib(drv_memc.o) + 0x00013d94 0x00013d94 0x00000010 Code RO 1478 i.drv_memc_gen_a_tear_signal CVWL668.lib(drv_memc.o) + 0x00013da4 0x00013da4 0x00000018 Code RO 1479 i.drv_memc_get_status CVWL668.lib(drv_memc.o) + 0x00013dbc 0x00013dbc 0x00000010 Code RO 1480 i.drv_memc_get_tear_mode CVWL668.lib(drv_memc.o) + 0x00013dcc 0x00013dcc 0x0000001c Code RO 1481 i.drv_memc_rate_transfer_sel CVWL668.lib(drv_memc.o) + 0x00013de8 0x00013de8 0x00000014 Code RO 1482 i.drv_memc_sel_vsync CVWL668.lib(drv_memc.o) + 0x00013dfc 0x00013dfc 0x00000018 Code RO 1483 i.drv_memc_set_active_height CVWL668.lib(drv_memc.o) + 0x00013e14 0x00013e14 0x0000001c Code RO 1484 i.drv_memc_set_circ_mode_enable CVWL668.lib(drv_memc.o) + 0x00013e30 0x00013e30 0x00000014 Code RO 1485 i.drv_memc_set_data_mode CVWL668.lib(drv_memc.o) + 0x00013e44 0x00013e44 0x00000018 Code RO 1488 i.drv_memc_set_double_buffer CVWL668.lib(drv_memc.o) + 0x00013e5c 0x00013e5c 0x0000001c Code RO 1492 i.drv_memc_set_frame_drop_select CVWL668.lib(drv_memc.o) + 0x00013e78 0x00013e78 0x00000018 Code RO 1493 i.drv_memc_set_fs_en_conditions CVWL668.lib(drv_memc.o) + 0x00013e90 0x00013e90 0x0000001c Code RO 1495 i.drv_memc_set_lcdc_st_conditions CVWL668.lib(drv_memc.o) + 0x00013eac 0x00013eac 0x00000020 Code RO 1496 i.drv_memc_set_ltpo_mode CVWL668.lib(drv_memc.o) + 0x00013ecc 0x00013ecc 0x00000018 Code RO 1497 i.drv_memc_set_ltpo_pu_thres CVWL668.lib(drv_memc.o) + 0x00013ee4 0x00013ee4 0x00000014 Code RO 1501 i.drv_memc_set_tear_mode CVWL668.lib(drv_memc.o) + 0x00013ef8 0x00013ef8 0x0000002c Code RO 1502 i.drv_memc_set_tear_waveform CVWL668.lib(drv_memc.o) + 0x00013f24 0x00013f24 0x00000014 Code RO 1504 i.drv_memc_set_vidc_sync_cnt CVWL668.lib(drv_memc.o) + 0x00013f38 0x00013f38 0x00000010 Code RO 1846 i.drv_phy_test_clear CVWL668.lib(drv_phy_common.o) + 0x00013f48 0x00013f48 0x00000018 Code RO 1847 i.drv_phy_test_lock CVWL668.lib(drv_phy_common.o) + 0x00013f60 0x00013f60 0x00000030 Code RO 995 i.drv_pwr_efuse_pd CVWL668.lib(drv_pwr.o) + 0x00013f90 0x00013f90 0x0000004c Code RO 997 i.drv_pwr_enter_deep_sleep_mode CVWL668.lib(drv_pwr.o) + 0x00013fdc 0x00013fdc 0x00000034 Code RO 999 i.drv_pwr_enter_sleep_mode_ex CVWL668.lib(drv_pwr.o) + 0x00014010 0x00014010 0x00000098 Code RO 1000 i.drv_pwr_enter_stop_sleep_mode CVWL668.lib(drv_pwr.o) + 0x000140a8 0x000140a8 0x00000028 Code RO 1001 i.drv_pwr_exit_sleep_mode CVWL668.lib(drv_pwr.o) + 0x000140d0 0x000140d0 0x00000010 Code RO 1004 i.drv_pwr_get_power_ready_st CVWL668.lib(drv_pwr.o) + 0x000140e0 0x000140e0 0x00000028 Code RO 1036 i.drv_pwr_set_breath_screen_power_sel CVWL668.lib(drv_pwr.o) + 0x00014108 0x00014108 0x00000028 Code RO 1037 i.drv_pwr_set_digit_power_sel CVWL668.lib(drv_pwr.o) + 0x00014130 0x00014130 0x00000034 Code RO 1040 i.drv_pwr_set_pll_clk CVWL668.lib(drv_pwr.o) + 0x00014164 0x00014164 0x0000002c Code RO 1044 i.drv_pwr_set_wakeup_type CVWL668.lib(drv_pwr.o) + 0x00014190 0x00014190 0x00000020 Code RO 1047 i.drv_pwr_write_lock CVWL668.lib(drv_pwr.o) + 0x000141b0 0x000141b0 0x00000010 Code RO 1544 i.drv_rxbr_clear_pkt_buffer CVWL668.lib(drv_rxbr.o) + 0x000141c0 0x000141c0 0x0000000c Code RO 1545 i.drv_rxbr_clear_status0 CVWL668.lib(drv_rxbr.o) + 0x000141cc 0x000141cc 0x0000005a Code RO 1548 i.drv_rxbr_enable_irq CVWL668.lib(drv_rxbr.o) + 0x00014226 0x00014226 0x00000002 PAD + 0x00014228 0x00014228 0x0000001c Code RO 1549 i.drv_rxbr_frame_drop_cfg CVWL668.lib(drv_rxbr.o) + 0x00014244 0x00014244 0x00000018 Code RO 722 i.drv_rxbr_get_int_source CVWL668.lib(hal_internal_vsync.o) + 0x0001425c 0x0001425c 0x00000018 Code RO 784 i.drv_rxbr_get_status0 CVWL668.lib(hal_internal_dcs.o) + 0x00014274 0x00014274 0x00000014 Code RO 1559 i.drv_rxbr_hline_rcv1_cfg CVWL668.lib(drv_rxbr.o) + 0x00014288 0x00014288 0x00000010 Code RO 1560 i.drv_rxbr_hline_rcv_cfg CVWL668.lib(drv_rxbr.o) + 0x00014298 0x00014298 0x0000000c Code RO 1562 i.drv_rxbr_register_irq1_callback CVWL668.lib(drv_rxbr.o) + 0x000142a4 0x000142a4 0x00000018 Code RO 1563 i.drv_rxbr_set_ack_pkt_header CVWL668.lib(drv_rxbr.o) + 0x000142bc 0x000142bc 0x0000001c Code RO 1568 i.drv_rxbr_set_color_format CVWL668.lib(drv_rxbr.o) + 0x000142d8 0x000142d8 0x00000024 Code RO 1571 i.drv_rxbr_set_filter_regs CVWL668.lib(drv_rxbr.o) + 0x000142fc 0x000142fc 0x0000001c Code RO 1572 i.drv_rxbr_set_inten CVWL668.lib(drv_rxbr.o) + 0x00014318 0x00014318 0x00000018 Code RO 1573 i.drv_rxbr_set_ltpo_drop_th CVWL668.lib(drv_rxbr.o) + 0x00014330 0x00014330 0x00000040 Code RO 1577 i.drv_rxbr_set_usr_cfg CVWL668.lib(drv_rxbr.o) + 0x00014370 0x00014370 0x00000010 Code RO 1578 i.drv_rxbr_set_usr_col CVWL668.lib(drv_rxbr.o) + 0x00014380 0x00014380 0x00000010 Code RO 1579 i.drv_rxbr_set_usr_row CVWL668.lib(drv_rxbr.o) + 0x00014390 0x00014390 0x00000078 Code RO 1201 i.drv_se_init CVWL668.lib(drv_se.o) + 0x00014408 0x00014408 0x000000d4 Code RO 1202 i.drv_se_set_dsc CVWL668.lib(drv_se.o) + 0x000144dc 0x000144dc 0x00000088 Code RO 1203 i.drv_se_set_lcdc CVWL668.lib(drv_se.o) + 0x00014564 0x00014564 0x00000090 Code RO 1204 i.drv_se_set_memc CVWL668.lib(drv_se.o) + 0x000145f4 0x000145f4 0x000000d0 Code RO 1205 i.drv_se_set_rxbr CVWL668.lib(drv_se.o) + 0x000146c4 0x000146c4 0x000000ac Code RO 1206 i.drv_se_set_vidc CVWL668.lib(drv_se.o) + 0x00014770 0x00014770 0x00000014 Code RO 1207 i.drv_se_start_rx CVWL668.lib(drv_se.o) + 0x00014784 0x00014784 0x0000001c Code RO 1111 i.drv_swire_enable CVWL668.lib(drv_swire.o) + 0x000147a0 0x000147a0 0x0000000c Code RO 1112 i.drv_swire_get_pulse_count CVWL668.lib(drv_swire.o) + 0x000147ac 0x000147ac 0x0000000c Code RO 1113 i.drv_swire_register_callback CVWL668.lib(drv_swire.o) + 0x000147b8 0x000147b8 0x00000018 Code RO 1114 i.drv_swire_set_bit_time CVWL668.lib(drv_swire.o) + 0x000147d0 0x000147d0 0x00000048 Code RO 1115 i.drv_swire_set_int CVWL668.lib(drv_swire.o) + 0x00014818 0x00014818 0x0000001c Code RO 1116 i.drv_swire_set_power_down CVWL668.lib(drv_swire.o) + 0x00014834 0x00014834 0x0000000c Code RO 1117 i.drv_swire_set_pulse_count CVWL668.lib(drv_swire.o) + 0x00014840 0x00014840 0x0000001c Code RO 1118 i.drv_swire_set_trig_mode CVWL668.lib(drv_swire.o) + 0x0001485c 0x0001485c 0x0000000c Code RO 1133 i.drv_sys_cfg_clear_all_int CVWL668.lib(drv_sys_cfg.o) + 0x00014868 0x00014868 0x00000028 Code RO 1134 i.drv_sys_cfg_clear_pending CVWL668.lib(drv_sys_cfg.o) + 0x00014890 0x00014890 0x00000024 Code RO 1135 i.drv_sys_cfg_sel_ap_rst_trig CVWL668.lib(drv_sys_cfg.o) + 0x000148b4 0x000148b4 0x00000024 Code RO 1137 i.drv_sys_cfg_sel_gpio_group CVWL668.lib(drv_sys_cfg.o) + 0x000148d8 0x000148d8 0x00000024 Code RO 1138 i.drv_sys_cfg_sel_int_trig CVWL668.lib(drv_sys_cfg.o) + 0x000148fc 0x000148fc 0x00000018 Code RO 1139 i.drv_sys_cfg_sel_swire_timer CVWL668.lib(drv_sys_cfg.o) + 0x00014914 0x00014914 0x00000024 Code RO 1140 i.drv_sys_cfg_set_int CVWL668.lib(drv_sys_cfg.o) + 0x00014938 0x00014938 0x0000001a Code RO 1157 i.drv_timer_clear_status_flags CVWL668.lib(drv_timer.o) + 0x00014952 0x00014952 0x00000020 Code RO 1158 i.drv_timer_enable CVWL668.lib(drv_timer.o) + 0x00014972 0x00014972 0x00000002 PAD + 0x00014974 0x00014974 0x00000010 Code RO 1159 i.drv_timer_get_instance CVWL668.lib(drv_timer.o) + 0x00014984 0x00014984 0x0000003c Code RO 1161 i.drv_timer_handle_interrupt CVWL668.lib(drv_timer.o) + 0x000149c0 0x000149c0 0x00000040 Code RO 1163 i.drv_timer_set_compare_val CVWL668.lib(drv_timer.o) + 0x00014a00 0x00014a00 0x00000048 Code RO 1164 i.drv_timer_set_int CVWL668.lib(drv_timer.o) + 0x00014a48 0x00014a48 0x00000028 Code RO 1165 i.drv_timer_set_prescaler CVWL668.lib(drv_timer.o) + 0x00014a70 0x00014a70 0x00000010 Code RO 1166 i.drv_timer_set_repeat CVWL668.lib(drv_timer.o) + 0x00014a80 0x00014a80 0x00000020 Code RO 1327 i.drv_tx_phy_test_enter CVWL668.lib(drv_dsi_tx.o) + 0x00014aa0 0x00014aa0 0x00000020 Code RO 1328 i.drv_tx_phy_test_exit CVWL668.lib(drv_dsi_tx.o) + 0x00014ac0 0x00014ac0 0x00000028 Code RO 1331 i.drv_tx_phy_test_write_code CVWL668.lib(drv_dsi_tx.o) + 0x00014ae8 0x00014ae8 0x00000034 Code RO 1779 i.drv_uart_abort_recv CVWL668.lib(drv_uart.o) + 0x00014b1c 0x00014b1c 0x00000034 Code RO 1780 i.drv_uart_abort_send CVWL668.lib(drv_uart.o) + 0x00014b50 0x00014b50 0x00000014 Code RO 1781 i.drv_uart_config_int CVWL668.lib(drv_uart.o) + 0x00014b64 0x00014b64 0x00000018 Code RO 1783 i.drv_uart_enable_clk CVWL668.lib(drv_uart.o) + 0x00014b7c 0x00014b7c 0x0000005c Code RO 1784 i.drv_uart_enable_int CVWL668.lib(drv_uart.o) + 0x00014bd8 0x00014bd8 0x00000028 Code RO 1786 i.drv_uart_get_instance CVWL668.lib(drv_uart.o) + 0x00014c00 0x00014c00 0x000000ce Code RO 1787 i.drv_uart_init CVWL668.lib(drv_uart.o) + 0x00014cce 0x00014cce 0x00000002 PAD + 0x00014cd0 0x00014cd0 0x0000003c Code RO 1788 i.drv_uart_int_trans_handle CVWL668.lib(drv_uart.o) + 0x00014d0c 0x00014d0c 0x0000001c Code RO 1791 i.drv_uart_reset_rx_fifo CVWL668.lib(drv_uart.o) + 0x00014d28 0x00014d28 0x0000001c Code RO 1792 i.drv_uart_reset_tx_fifo CVWL668.lib(drv_uart.o) + 0x00014d44 0x00014d44 0x0000001a Code RO 1793 i.drv_uart_send_blocking CVWL668.lib(drv_uart.o) + 0x00014d5e 0x00014d5e 0x00000054 Code RO 1795 i.drv_uart_set_baud_rate CVWL668.lib(drv_uart.o) + 0x00014db2 0x00014db2 0x00000002 PAD + 0x00014db4 0x00014db4 0x0000004c Code RO 1796 i.drv_uart_trans_create_handle CVWL668.lib(drv_uart.o) + 0x00014e00 0x00014e00 0x00000010 Code RO 1631 i.drv_vidc_clear_irq CVWL668.lib(drv_vidc.o) + 0x00014e10 0x00014e10 0x00000020 Code RO 1635 i.drv_vidc_enable CVWL668.lib(drv_vidc.o) + 0x00014e30 0x00014e30 0x00000040 Code RO 1636 i.drv_vidc_enable_irq CVWL668.lib(drv_vidc.o) + 0x00014e70 0x00014e70 0x0000002c Code RO 1637 i.drv_vidc_get_int_source CVWL668.lib(drv_vidc.o) + 0x00014e9c 0x00014e9c 0x00000018 Code RO 1638 i.drv_vidc_get_irq_status CVWL668.lib(drv_vidc.o) + 0x00014eb4 0x00014eb4 0x0000002c Code RO 1642 i.drv_vidc_init_module_enable CVWL668.lib(drv_vidc.o) + 0x00014ee0 0x00014ee0 0x0000000c Code RO 1643 i.drv_vidc_register_callback CVWL668.lib(drv_vidc.o) + 0x00014eec 0x00014eec 0x0000000c Code RO 1644 i.drv_vidc_reset CVWL668.lib(drv_vidc.o) + 0x00014ef8 0x00014ef8 0x0000001c Code RO 1645 i.drv_vidc_set_circ_mode_enable CVWL668.lib(drv_vidc.o) + 0x00014f14 0x00014f14 0x00000038 Code RO 1646 i.drv_vidc_set_dither_config CVWL668.lib(drv_vidc.o) + 0x00014f4c 0x00014f4c 0x0000005c Code RO 1648 i.drv_vidc_set_dst_parameter CVWL668.lib(drv_vidc.o) + 0x00014fa8 0x00014fa8 0x0000000c Code RO 1650 i.drv_vidc_set_honly_hcoef0 CVWL668.lib(drv_vidc.o) + 0x00014fb4 0x00014fb4 0x0000002c Code RO 1651 i.drv_vidc_set_honly_hinitb CVWL668.lib(drv_vidc.o) + 0x00014fe0 0x00014fe0 0x00000030 Code RO 1652 i.drv_vidc_set_honly_hinitr CVWL668.lib(drv_vidc.o) + 0x00015010 0x00015010 0x0000001c Code RO 1655 i.drv_vidc_set_irqen CVWL668.lib(drv_vidc.o) + 0x0001502c 0x0001502c 0x00000014 Code RO 1656 i.drv_vidc_set_mirror CVWL668.lib(drv_vidc.o) + 0x00015040 0x00015040 0x0000001c Code RO 1659 i.drv_vidc_set_pentile_swap CVWL668.lib(drv_vidc.o) + 0x0001505c 0x0001505c 0x0000000c Code RO 1660 i.drv_vidc_set_pu_ctrl CVWL668.lib(drv_vidc.o) + 0x00015068 0x00015068 0x00000018 Code RO 1661 i.drv_vidc_set_rotation CVWL668.lib(drv_vidc.o) + 0x00015080 0x00015080 0x0000000c Code RO 1662 i.drv_vidc_set_scld_hcoef0 CVWL668.lib(drv_vidc.o) + 0x0001508c 0x0001508c 0x0000000c Code RO 1663 i.drv_vidc_set_scld_hcoef1 CVWL668.lib(drv_vidc.o) + 0x00015098 0x00015098 0x00000014 Code RO 1664 i.drv_vidc_set_scld_step CVWL668.lib(drv_vidc.o) + 0x000150ac 0x000150ac 0x0000000c Code RO 1665 i.drv_vidc_set_scld_vcoef0 CVWL668.lib(drv_vidc.o) + 0x000150b8 0x000150b8 0x0000000c Code RO 1666 i.drv_vidc_set_scld_vcoef1 CVWL668.lib(drv_vidc.o) + 0x000150c4 0x000150c4 0x00000020 Code RO 1667 i.drv_vidc_set_src_parameter CVWL668.lib(drv_vidc.o) + 0x000150e4 0x000150e4 0x00000038 Code RO 1668 i.drv_vidc_set_vintp_config CVWL668.lib(drv_vidc.o) + 0x0001511c 0x0001511c 0x00000034 Code RO 672 i.fputc CVWL668.lib(tau_log.o) + 0x00015150 0x00015150 0x00000060 Code RO 116 i.google_p8p_demo p8p_demo.o + 0x000151b0 0x000151b0 0x00000040 Code RO 812 i.ha_intl_fb_check_pu_size CVWL668.lib(hal_internal_fb.o) + 0x000151f0 0x000151f0 0x00000040 Code RO 332 i.hal_dsi_rx_ctrl_create_handle CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015230 0x00015230 0x00000040 Code RO 333 i.hal_dsi_rx_ctrl_dcs_async_handler CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015270 0x00015270 0x00000094 Code RO 334 i.hal_dsi_rx_ctrl_deinit CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015304 0x00015304 0x00000020 Code RO 339 i.hal_dsi_rx_ctrl_get_max_ret_size CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015324 0x00015324 0x000000ac Code RO 340 i.hal_dsi_rx_ctrl_init CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000153d0 0x000153d0 0x00000100 Code RO 341 i.hal_dsi_rx_ctrl_init_clk CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000154d0 0x000154d0 0x000000f8 Code RO 342 i.hal_dsi_rx_ctrl_init_dsi_rx CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000155c8 0x000155c8 0x0000012c Code RO 343 i.hal_dsi_rx_ctrl_init_memc CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000156f4 0x000156f4 0x00000148 Code RO 344 i.hal_dsi_rx_ctrl_init_rxbr CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001583c 0x0001583c 0x00000280 Code RO 345 i.hal_dsi_rx_ctrl_init_vidc CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015abc 0x00015abc 0x00000038 Code RO 346 i.hal_dsi_rx_ctrl_pre_init_pps CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015af4 0x00015af4 0x000000f0 Code RO 351 i.hal_dsi_rx_ctrl_send_ack_cmd CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015be4 0x00015be4 0x00000030 Code RO 357 i.hal_dsi_rx_ctrl_set_ipi_cfg CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c14 0x00015c14 0x00000030 Code RO 362 i.hal_dsi_rx_ctrl_start CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c44 0x00015c44 0x00000030 Code RO 363 i.hal_dsi_rx_ctrl_stop CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c74 0x00015c74 0x00000020 Code RO 365 i.hal_dsi_rx_ctrl_toggle_resolution CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c94 0x00015c94 0x0000027c Code RO 412 i.hal_dsi_tx_cmd_mode_cal_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015f10 0x00015f10 0x00000038 Code RO 414 i.hal_dsi_tx_ctrl_create_handle CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015f48 0x00015f48 0x00000074 Code RO 415 i.hal_dsi_tx_ctrl_deinit CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015fbc 0x00015fbc 0x00000022 Code RO 418 i.hal_dsi_tx_ctrl_gen_a_tear_signal CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015fde 0x00015fde 0x00000002 PAD + 0x00015fe0 0x00015fe0 0x0000007c Code RO 420 i.hal_dsi_tx_ctrl_init CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001605c 0x0001605c 0x00000010 Code RO 421 i.hal_dsi_tx_ctrl_init_clk CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001606c 0x0001606c 0x00000008 Code RO 434 i.hal_dsi_tx_ctrl_set_overwrite_rgb CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016074 0x00016074 0x0000000a Code RO 435 i.hal_dsi_tx_ctrl_set_tear_mode CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001607e 0x0001607e 0x00000002 PAD + 0x00016080 0x00016080 0x0000007c Code RO 437 i.hal_dsi_tx_ctrl_start CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000160fc 0x000160fc 0x00000038 Code RO 438 i.hal_dsi_tx_ctrl_stop CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016134 0x00016134 0x000000f4 Code RO 440 i.hal_dsi_tx_ctrl_write_array_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016228 0x00016228 0x000000d0 Code RO 441 i.hal_dsi_tx_ctrl_write_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000162f8 0x000162f8 0x0000010c Code RO 442 i.hal_dsi_tx_init_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016404 0x00016404 0x00000038 Code RO 443 i.hal_dsi_tx_init_dpi_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001643c 0x0001643c 0x00000016 Code RO 444 i.hal_dsi_tx_init_phy_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016452 0x00016452 0x00000052 Code RO 445 i.hal_dsi_tx_init_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000164a4 0x000164a4 0x00000054 Code RO 446 i.hal_dsi_tx_init_vid_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000164f8 0x000164f8 0x00000040 Code RO 447 i.hal_dsi_tx_send_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016538 0x00016538 0x00000094 Code RO 448 i.hal_dsi_tx_timing_info_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000165cc 0x000165cc 0x00000310 Code RO 449 i.hal_dsi_tx_vid_mode_cal_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000168dc 0x000168dc 0x0000003a Code RO 519 i.hal_gpio_config_pad CVWL668.lib(hal_gpio.o) + 0x00016916 0x00016916 0x00000002 PAD + 0x00016918 0x00016918 0x00000018 Code RO 520 i.hal_gpio_ctrl_eint CVWL668.lib(hal_gpio.o) + 0x00016930 0x00016930 0x00000040 Code RO 524 i.hal_gpio_init_eint CVWL668.lib(hal_gpio.o) + 0x00016970 0x00016970 0x00000016 Code RO 525 i.hal_gpio_init_input CVWL668.lib(hal_gpio.o) + 0x00016986 0x00016986 0x0000001c Code RO 526 i.hal_gpio_init_output CVWL668.lib(hal_gpio.o) + 0x000169a2 0x000169a2 0x00000002 PAD + 0x000169a4 0x000169a4 0x0000001c Code RO 527 i.hal_gpio_reg_eint_cb CVWL668.lib(hal_gpio.o) + 0x000169c0 0x000169c0 0x00000050 Code RO 528 i.hal_gpio_set_ap_reset_int CVWL668.lib(hal_gpio.o) + 0x00016a10 0x00016a10 0x00000064 Code RO 531 i.hal_gpio_set_mode CVWL668.lib(hal_gpio.o) + 0x00016a74 0x00016a74 0x00000008 Code RO 532 i.hal_gpio_set_output_data CVWL668.lib(hal_gpio.o) + 0x00016a7c 0x00016a7c 0x00000010 Code RO 724 i.hal_internal_sync_get_hight_performan_mode CVWL668.lib(hal_internal_vsync.o) + 0x00016a8c 0x00016a8c 0x000001b4 Code RO 725 i.hal_internal_sync_input_resolution_change CVWL668.lib(hal_internal_vsync.o) + 0x00016c40 0x00016c40 0x0000000c Code RO 726 i.hal_internal_sync_register_lcdc_cb CVWL668.lib(hal_internal_vsync.o) + 0x00016c4c 0x00016c4c 0x00000020 Code RO 729 i.hal_internal_vsync_deinit CVWL668.lib(hal_internal_vsync.o) + 0x00016c6c 0x00016c6c 0x0000000c Code RO 730 i.hal_internal_vsync_get_rx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016c78 0x00016c78 0x00000014 Code RO 731 i.hal_internal_vsync_get_sync_line CVWL668.lib(hal_internal_vsync.o) + 0x00016c8c 0x00016c8c 0x0000000c Code RO 732 i.hal_internal_vsync_get_tx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016c98 0x00016c98 0x000000d8 Code RO 733 i.hal_internal_vsync_init_rx CVWL668.lib(hal_internal_vsync.o) + 0x00016d70 0x00016d70 0x000000c8 Code RO 734 i.hal_internal_vsync_init_tx CVWL668.lib(hal_internal_vsync.o) + 0x00016e38 0x00016e38 0x00000020 Code RO 735 i.hal_internal_vsync_set_rx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016e58 0x00016e58 0x00000118 Code RO 737 i.hal_internal_vsync_set_tear_mode CVWL668.lib(hal_internal_vsync.o) + 0x00016f70 0x00016f70 0x0000006c Code RO 738 i.hal_internal_vsync_set_tx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016fdc 0x00016fdc 0x0000006c Code RO 785 i.hal_intl_dcs_init_sw_fltr CVWL668.lib(hal_internal_dcs.o) + 0x00017048 0x00017048 0x0000044c Code RO 787 i.hal_intl_dcs_rx_get_dcs_packet_data CVWL668.lib(hal_internal_dcs.o) + 0x00017494 0x00017494 0x00000088 Code RO 788 i.hal_intl_dcs_rx_receive_packet CVWL668.lib(hal_internal_dcs.o) + 0x0001751c 0x0001751c 0x00000174 Code RO 789 i.hal_intl_dcs_rx_receive_pps CVWL668.lib(hal_internal_dcs.o) + 0x00017690 0x00017690 0x0000008c Code RO 790 i.hal_intl_dcs_set_auto_hw_filter CVWL668.lib(hal_internal_dcs.o) + 0x0001771c 0x0001771c 0x0000002c Code RO 792 i.hal_intl_dcs_sw_filter_handle CVWL668.lib(hal_internal_dcs.o) + 0x00017748 0x00017748 0x000002f0 Code RO 813 i.hal_intl_fb_cal_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017a38 0x00017a38 0x00000064 Code RO 814 i.hal_intl_fb_check_bandwidth CVWL668.lib(hal_internal_fb.o) + 0x00017a9c 0x00017a9c 0x000000dc Code RO 815 i.hal_intl_fb_edge_resize CVWL668.lib(hal_internal_fb.o) + 0x00017b78 0x00017b78 0x00000064 Code RO 816 i.hal_intl_fb_flow_control_adapter CVWL668.lib(hal_internal_fb.o) + 0x00017bdc 0x00017bdc 0x0000000c Code RO 817 i.hal_intl_fb_get_memc_flow_mode CVWL668.lib(hal_internal_fb.o) + 0x00017be8 0x00017be8 0x00000010 Code RO 818 i.hal_intl_fb_get_rx_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017bf8 0x00017bf8 0x00000010 Code RO 819 i.hal_intl_fb_get_tx_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017c08 0x00017c08 0x0000000c Code RO 820 i.hal_intl_fb_get_user_flow CVWL668.lib(hal_internal_fb.o) + 0x00017c14 0x00017c14 0x00000028 Code RO 838 i.hal_intl_svs_deinit_rx CVWL668.lib(hal_internal_svs.o) + 0x00017c3c 0x00017c3c 0x00000010 Code RO 839 i.hal_intl_svs_deinit_tx CVWL668.lib(hal_internal_svs.o) + 0x00017c4c 0x00017c4c 0x00000024 Code RO 840 i.hal_intl_svs_handle CVWL668.lib(hal_internal_svs.o) + 0x00017c70 0x00017c70 0x00000080 Code RO 841 i.hal_intl_svs_init_rx CVWL668.lib(hal_internal_svs.o) + 0x00017cf0 0x00017cf0 0x00000014 Code RO 842 i.hal_intl_svs_init_tx CVWL668.lib(hal_internal_svs.o) + 0x00017d04 0x00017d04 0x0000000c Code RO 844 i.hal_intl_svs_set_rx_vtt CVWL668.lib(hal_internal_svs.o) + 0x00017d10 0x00017d10 0x00000048 Code RO 846 i.hal_intl_svs_update_rxbr_clk CVWL668.lib(hal_internal_svs.o) + 0x00017d58 0x00017d58 0x00000070 Code RO 450 i.hal_lcdc_displayproc_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017dc8 0x00017dc8 0x0000003e Code RO 451 i.hal_lcdc_init_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017e06 0x00017e06 0x00000070 Code RO 452 i.hal_lcdc_init_clk CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017e76 0x00017e76 0x00000002 PAD + 0x00017e78 0x00017e78 0x00000128 Code RO 453 i.hal_lcdc_postproc_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017fa0 0x00017fa0 0x00000024 Code RO 454 i.hal_lcdc_start CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017fc4 0x00017fc4 0x0000003c Code RO 455 i.hal_lcdc_timinggen_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00018000 0x00018000 0x000000e0 Code RO 456 i.hal_lcdc_upscaler_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000180e0 0x000180e0 0x000000bc Code RO 458 i.hal_nonshadow_func_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001819c 0x0001819c 0x0000002a Code RO 623 i.hal_pwr_enter_deep_sleep_mode CVWL668.lib(hal_pwr.o) + 0x000181c6 0x000181c6 0x00000008 Code RO 624 i.hal_pwr_enter_normal_sleep_mode CVWL668.lib(hal_pwr.o) + 0x000181ce 0x000181ce 0x00000002 PAD + 0x000181d0 0x000181d0 0x00000064 Code RO 625 i.hal_pwr_enter_stop_sleep_mode CVWL668.lib(hal_pwr.o) + 0x00018234 0x00018234 0x0000000a Code RO 626 i.hal_pwr_exit_sleep_mode CVWL668.lib(hal_pwr.o) + 0x0001823e 0x0001823e 0x00000008 Code RO 628 i.hal_pwr_get_vcc_power_ready CVWL668.lib(hal_pwr.o) + 0x00018246 0x00018246 0x00000008 Code RO 633 i.hal_pwr_set_main_power CVWL668.lib(hal_pwr.o) + 0x0001824e 0x0001824e 0x00000008 Code RO 635 i.hal_pwr_set_sleep_mode_power CVWL668.lib(hal_pwr.o) + 0x00018256 0x00018256 0x00000002 PAD + 0x00018258 0x00018258 0x00000064 Code RO 636 i.hal_pwr_set_stop_sleep_wakeup_pin CVWL668.lib(hal_pwr.o) + 0x000182bc 0x000182bc 0x00000040 Code RO 559 i.hal_swire_deinit CVWL668.lib(hal_swire.o) + 0x000182fc 0x000182fc 0x0000005c Code RO 560 i.hal_swire_enable CVWL668.lib(hal_swire.o) + 0x00018358 0x00018358 0x00000058 Code RO 561 i.hal_swire_init CVWL668.lib(hal_swire.o) + 0x000183b0 0x000183b0 0x00000024 Code RO 563 i.hal_swire_set_pulse CVWL668.lib(hal_swire.o) + 0x000183d4 0x000183d4 0x00000040 Code RO 564 i.hal_swire_set_timer CVWL668.lib(hal_swire.o) + 0x00018414 0x00018414 0x000000e4 Code RO 584 i.hal_system_init CVWL668.lib(hal_system.o) + 0x000184f8 0x000184f8 0x00000050 Code RO 587 i.hal_system_updata_sysclk CVWL668.lib(hal_system.o) + 0x00018548 0x00018548 0x00000030 Code RO 602 i.hal_timer_deinit CVWL668.lib(hal_timer.o) + 0x00018578 0x00018578 0x0000001c Code RO 604 i.hal_timer_init CVWL668.lib(hal_timer.o) + 0x00018594 0x00018594 0x00000008 Code RO 605 i.hal_timer_set_repeat CVWL668.lib(hal_timer.o) + 0x0001859c 0x0001859c 0x00000030 Code RO 459 i.hal_tx_frame_rate_adjust CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000185cc 0x000185cc 0x00000094 Code RO 696 i.hal_uart_init CVWL668.lib(hal_uart.o) + 0x00018660 0x00018660 0x0000001c Code RO 699 i.hal_uart_send_blocking CVWL668.lib(hal_uart.o) + 0x0001867c 0x0001867c 0x00000018 Code RO 460 i.hal_vsync_func_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00018694 0x00018694 0x000000cc Code RO 740 i.hal_vsync_reset_lcdc_scaler CVWL668.lib(hal_internal_vsync.o) + 0x00018760 0x00018760 0x00000040 Code RO 3 i.main main.o + 0x000187a0 0x000187a0 0x0000007c Code RO 117 i.pps_update_handle p8p_demo.o + 0x0001881c 0x0001881c 0x000002b8 Code RO 741 i.rxbr_irq1_callback CVWL668.lib(hal_internal_vsync.o) + 0x00018ad4 0x00018ad4 0x0000003a Code RO 118 i.send_panel_init_code p8p_demo.o + 0x00018b0e 0x00018b0e 0x00000002 PAD + 0x00018b10 0x00018b10 0x00000044 Code RO 742 i.soft_double_buffer_update CVWL668.lib(hal_internal_vsync.o) + 0x00018b54 0x00018b54 0x0000007c Code RO 743 i.soft_gen_te CVWL668.lib(hal_internal_vsync.o) + 0x00018bd0 0x00018bd0 0x00000094 Code RO 744 i.soft_gen_te_double_buffer CVWL668.lib(hal_internal_vsync.o) + 0x00018c64 0x00018c64 0x00000018 Code RO 638 i.stop_sleep_cb CVWL668.lib(hal_pwr.o) + 0x00018c7c 0x00018c7c 0x000000ac Code RO 847 i.svs_direct_mode_setting CVWL668.lib(hal_internal_svs.o) + 0x00018d28 0x00018d28 0x0000001c Code RO 848 i.svs_get_rel_intv CVWL668.lib(hal_internal_svs.o) + 0x00018d44 0x00018d44 0x000000b0 Code RO 849 i.svs_sync_handle CVWL668.lib(hal_internal_svs.o) + 0x00018df4 0x00018df4 0x000000cc Code RO 850 i.svs_wait_fr_stab CVWL668.lib(hal_internal_svs.o) + 0x00018ec0 0x00018ec0 0x0000010c Code RO 851 i.svs_wait_start CVWL668.lib(hal_internal_svs.o) + 0x00018fcc 0x00018fcc 0x00000034 Code RO 673 i.tau_log_init CVWL668.lib(tau_log.o) + 0x00019000 0x00019000 0x00000084 Code RO 674 i.tau_log_printf CVWL668.lib(tau_log.o) + 0x00019084 0x00019084 0x00000076 Code RO 675 i.tau_log_push_log CVWL668.lib(tau_log.o) + 0x000190fa 0x000190fa 0x00000002 PAD + 0x000190fc 0x000190fc 0x000000b4 Code RO 745 i.vidc_callback CVWL668.lib(hal_internal_vsync.o) + 0x000191b0 0x000191b0 0x00000118 Code RO 746 i.vpre_err_reset CVWL668.lib(hal_internal_vsync.o) + 0x000192c8 0x000192c8 0x000020b8 Data RO 121 .constdata p8p_demo.o + 0x0001b380 0x0001b380 0x00000028 Data RO 367 .constdata CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001b3a8 0x0001b3a8 0x0000001c Data RO 463 .constdata CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001b3c4 0x0001b3c4 0x00000030 Data RO 701 .constdata CVWL668.lib(hal_uart.o) + 0x0001b3f4 0x0001b3f4 0x00000010 Data RO 1798 .constdata CVWL668.lib(drv_uart.o) + 0x0001b404 0x0001b404 0x00000042 Data RO 368 .conststring CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001b446 0x0001b446 0x00000002 PAD + 0x0001b448 0x0001b448 0x00000090 Data RO 748 .conststring CVWL668.lib(hal_internal_vsync.o) + 0x0001b4d8 0x0001b4d8 0x0000008e Data RO 795 .conststring CVWL668.lib(hal_internal_dcs.o) + 0x0001b566 0x0001b566 0x00000002 PAD + 0x0001b568 0x0001b568 0x00000020 Data RO 2208 Region$$Table anon$$obj.o + + + Execution Region RW_IRAM1 (Exec base: 0x00070000, Load base: 0x0001b588, Size: 0x00003168, Max: 0x00008000, ABSOLUTE, COMPRESSED[0x0000016c]) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x00070000 COMPRESSED 0x0000011f Data RW 122 .data p8p_demo.o + 0x0007011f COMPRESSED 0x00000001 PAD + 0x00070120 COMPRESSED 0x00000024 Data RW 369 .data CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00070144 COMPRESSED 0x0000005c Data RW 464 .data CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000701a0 COMPRESSED 0x00000002 Data RW 566 .data CVWL668.lib(hal_swire.o) + 0x000701a2 COMPRESSED 0x00000002 PAD + 0x000701a4 COMPRESSED 0x00000008 Data RW 639 .data CVWL668.lib(hal_pwr.o) + 0x000701ac COMPRESSED 0x00000001 Data RW 678 .data CVWL668.lib(tau_log.o) + 0x000701ad COMPRESSED 0x00000003 PAD + 0x000701b0 COMPRESSED 0x00000018 Data RW 702 .data CVWL668.lib(hal_uart.o) + 0x000701c8 COMPRESSED 0x00000010 Data RW 749 .data CVWL668.lib(hal_internal_vsync.o) + 0x000701d8 COMPRESSED 0x00000028 Data RW 796 .data CVWL668.lib(hal_internal_dcs.o) + 0x00070200 COMPRESSED 0x0000000c Data RW 880 .data CVWL668.lib(drv_common.o) + 0x0007020c COMPRESSED 0x00000001 Data RW 881 .data CVWL668.lib(drv_common.o) + 0x0007020d COMPRESSED 0x00000003 PAD + 0x00070210 COMPRESSED 0x00000004 Data RW 967 .data CVWL668.lib(drv_gpio.o) + 0x00070214 COMPRESSED 0x00000004 Data RW 1119 .data CVWL668.lib(drv_swire.o) + 0x00070218 COMPRESSED 0x00000050 Data RW 1167 .data CVWL668.lib(drv_timer.o) + 0x00070268 COMPRESSED 0x00000004 Data RW 1208 .data CVWL668.lib(drv_se.o) + 0x0007026c COMPRESSED 0x00000001 Data RW 1248 .data CVWL668.lib(drv_dsi_rx.o) + 0x0007026d COMPRESSED 0x00000003 PAD + 0x00070270 COMPRESSED 0x00000008 Data RW 1583 .data CVWL668.lib(drv_rxbr.o) + 0x00070278 COMPRESSED 0x00000004 Data RW 1670 .data CVWL668.lib(drv_vidc.o) + 0x0007027c COMPRESSED 0x00000190 Data RW 1745 .data CVWL668.lib(drv_dma.o) + 0x0007040c COMPRESSED 0x00000004 Data RW 2184 .data mc_p.l(stdout.o) + 0x00070410 - 0x000000d0 Zero RW 366 .bss CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000704e0 - 0x000000b8 Zero RW 462 .bss CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00070598 - 0x00000100 Zero RW 677 .bss CVWL668.lib(tau_log.o) + 0x00070698 - 0x00000028 Zero RW 747 .bss CVWL668.lib(hal_internal_vsync.o) + 0x000706c0 - 0x00000800 Zero RW 793 .bss CVWL668.lib(hal_internal_dcs.o) + 0x00070ec0 - 0x000000ff Zero RW 794 .bss CVWL668.lib(hal_internal_dcs.o) + 0x00070fbf COMPRESSED 0x00000001 PAD + 0x00070fc0 - 0x00000044 Zero RW 822 .bss CVWL668.lib(hal_internal_fb.o) + 0x00071004 - 0x00000044 Zero RW 852 .bss CVWL668.lib(hal_internal_svs.o) + 0x00071048 - 0x00000040 Zero RW 966 .bss CVWL668.lib(drv_gpio.o) + 0x00071088 - 0x0000106c Zero RW 1191 .bss CVWL668.lib(dcs_packet_fifo.o) + 0x000720f4 - 0x00000010 Zero RW 1743 .bss CVWL668.lib(drv_dma.o) + 0x00072104 - 0x00000060 Zero RW 1797 .bss CVWL668.lib(drv_uart.o) + 0x00072164 COMPRESSED 0x00000004 PAD + 0x00072168 - 0x00001000 Zero RW 321 STACK startup_armcm0.o + + +============================================================================== + +Image component sizes + + + Code (inc. data) RO Data RW Data ZI Data Debug Object Name + + 24 4 0 0 0 577 board.o + 64 32 0 0 0 10471 main.o + 2914 826 8376 287 0 31016 p8p_demo.o + 120 18 192 0 4096 2164 startup_armcm0.o + + ---------------------------------------------------------------------- + 3128 880 8600 288 4096 44228 Object Totals + 0 0 32 0 0 0 (incl. Generated) + 6 0 0 1 0 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name + + 216 32 0 0 4204 252 dcs_packet_fifo.o + 104 62 28 13 0 192 drv_common.o + 536 90 0 0 0 792 drv_crgu.o + 136 22 0 400 16 196 drv_dma.o + 144 34 0 0 0 248 drv_dsc_dec.o + 1904 682 0 1 0 1340 drv_dsi_rx.o + 1704 306 0 0 0 2036 drv_dsi_tx.o + 148 0 0 0 0 260 drv_efuse.o + 296 40 0 4 64 1000 drv_gpio.o + 1080 166 0 0 0 1620 drv_lcdc.o + 658 104 0 0 0 1240 drv_memc.o + 40 0 0 0 0 120 drv_phy_common.o + 592 132 0 0 0 716 drv_pwr.o + 514 102 0 8 0 1120 drv_rxbr.o + 1012 264 0 4 0 492 drv_se.o + 264 54 0 4 0 560 drv_swire.o + 220 40 0 0 0 428 drv_sys_cfg.o + 366 38 0 80 0 816 drv_timer.o + 1172 54 16 0 96 980 drv_uart.o + 824 152 0 4 0 1700 drv_vidc.o + 2750 202 106 36 208 1256 hal_dsi_rx_ctrl.o + 4302 336 50 92 184 2212 hal_dsi_tx_ctrl.o + 444 34 0 0 0 688 hal_gpio.o + 2184 512 142 40 2303 656 hal_internal_dcs.o + 1292 60 0 0 68 688 hal_internal_fb.o + 1172 182 0 0 68 840 hal_internal_svs.o + 3400 716 144 16 40 1564 hal_internal_vsync.o + 308 32 0 8 0 616 hal_pwr.o + 344 32 0 2 0 348 hal_swire.o + 308 56 0 0 0 136 hal_system.o + 84 0 0 0 0 204 hal_timer.o + 176 18 48 24 0 144 hal_uart.o + 68 4 0 0 0 136 tau_delay.o + 354 30 16 1 256 320 tau_log.o + 200 20 0 0 0 76 ceil.o + 86 0 0 0 0 0 __dczerorl2.o + 0 0 0 0 0 0 entry.o + 0 0 0 0 0 0 entry10a.o + 0 0 0 0 0 0 entry11a.o + 8 4 0 0 0 0 entry2.o + 4 0 0 0 0 0 entry5.o + 0 0 0 0 0 0 entry7b.o + 0 0 0 0 0 0 entry8b.o + 8 4 0 0 0 0 entry9a.o + 30 0 0 0 0 0 handlers.o + 40 0 0 0 0 72 idiv.o + 36 8 0 0 0 68 init.o + 0 0 0 0 0 0 iusefp.o + 32 0 0 0 0 68 llshl.o + 38 0 0 0 0 68 llsshr.o + 34 0 0 0 0 68 llushr.o + 36 0 0 0 0 60 memcpya.o + 36 0 0 0 0 100 memseta.o + 2298 104 0 0 0 544 printfa.o + 0 0 0 4 0 0 stdout.o + 14 0 0 0 0 60 strlen.o + 44 0 0 0 0 72 uidiv.o + 96 0 0 0 0 84 uldiv.o + 40 2 0 0 0 68 cdrcmple.o + 20 0 0 0 0 68 cfcmple.o + 20 0 0 0 0 68 cfrcmple.o + 56 0 0 0 0 68 d2f.o + 356 4 0 0 0 140 dadd.o + 240 6 0 0 0 84 ddiv.o + 236 0 0 0 0 216 depilogue.o + 60 10 0 0 0 68 dfixui.o + 64 10 0 0 0 68 dfixul.o + 28 4 0 0 0 68 dfltui.o + 208 6 0 0 0 88 dmul.o + 40 0 0 0 0 60 f2d.o + 178 0 0 0 0 108 fadd.o + 124 0 0 0 0 72 fdiv.o + 130 0 0 0 0 144 fepilogue.o + 40 0 0 0 0 60 ffixui.o + 14 0 0 0 0 68 ffltui.o + 122 0 0 0 0 72 fmul.o + 24 0 0 0 0 60 fscalb.o + + ---------------------------------------------------------------------- + 34188 4770 556 752 7512 28904 Library Totals + 32 0 6 11 5 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Name + + 29116 4588 550 737 7507 25916 CVWL668.lib + 200 20 0 0 0 76 m_ps.l + 2840 120 0 4 0 1264 mc_p.l + 2000 42 0 0 0 1648 mf_p.l + + ---------------------------------------------------------------------- + 34188 4770 556 752 7512 28904 Library Totals + + ---------------------------------------------------------------------- + +============================================================================== + + + Code (inc. data) RO Data RW Data ZI Data Debug + + 37316 5650 9156 1040 11608 53796 Grand Totals + 37316 5650 9156 364 11608 53796 ELF Image Totals (compressed) + 37316 5650 9156 364 0 0 ROM Totals + +============================================================================== + + Total RO Size (Code + RO Data) 46472 ( 45.38kB) + Total RW Size (RW Data + ZI Data) 12648 ( 12.35kB) + Total ROM Size (Code + RO Data + RW Data) 46836 ( 45.74kB) + +============================================================================== + diff --git a/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240407.map b/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240407.map new file mode 100644 index 0000000..6e36ac6 --- /dev/null +++ b/project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240407.map @@ -0,0 +1,4044 @@ +Component: ARM Compiler 5.06 update 6 (build 750) Tool: armlink [4d35ed] + +============================================================================== + +Section Cross References + + main.o(i.main) refers to board.o(i.board_Init) for board_Init + main.o(i.main) refers to p8p_demo.o(i.google_p8p_demo) for google_p8p_demo + main.o(i.main) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.Gpio_swire_output) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.Gpio_swire_output) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.Gpio_swire_output) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.Gpio_swire_output) refers to tau_delay.o(i.delayUs) for delayUs + p8p_demo.o(i.Panel_CCM) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_ccm) for hal_dsi_tx_ctrl_set_ccm + p8p_demo.o(i.REG_51_OFF_output) refers to idiv.o(.text) for __aeabi_idivmod + p8p_demo.o(i.REG_51_OFF_output) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.REG_51_OFF_output) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.ap_dcs_read) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) for hal_dsi_rx_ctrl_send_ack_cmd + p8p_demo.o(i.ap_dcs_read) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) for hal_dsi_rx_ctrl_get_max_ret_size + p8p_demo.o(i.ap_dcs_read) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_read) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.ap_dcs_set_backlight) refers to idiv.o(.text) for __aeabi_idivmod + p8p_demo.o(i.ap_dcs_set_backlight) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_backlight) refers to p8p_demo.o(.data) for rd_51_val + p8p_demo.o(i.ap_dcs_set_display_off) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_display_off) refers to p8p_demo.o(.data) for panel_display_done + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.ap_dcs_set_display_on) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_display_on) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_display_on) refers to p8p_demo.o(.data) for g_resolution_change + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_swire.o(i.hal_swire_enable) for hal_swire_enable + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) refers to p8p_demo.o(i.ap_rstn_pull_down_cb) for ap_rstn_pull_down_cb + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter) for hal_dsi_rx_ctrl_set_hw_cmd_filter + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_exit_idle_mode) refers to p8p_demo.o(.data) for sg_exit_idle_mode_flag + p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_dcs_set_frame_change) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.ap_dcs_set_frame_change) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_rstn_pull_down_cb) refers to p8p_demo.o(.data) for sg_system_suspend + p8p_demo.o(i.ap_rstn_pull_high_cb) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.ap_rstn_pull_high_cb) refers to p8p_demo.o(.data) for sg_system_resume + p8p_demo.o(i.ap_set_FPS_53) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_rx_init) for app_mipi_rx_init + p8p_demo.o(i.app_display_init) refers to hal_pwr.o(i.hal_pwr_get_vcc_power_ready) for hal_pwr_get_vcc_power_ready + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_gpio_init) for app_gpio_init + p8p_demo.o(i.app_display_init) refers to hal_swire.o(i.hal_swire_init) for hal_swire_init + p8p_demo.o(i.app_display_init) refers to hal_swire.o(i.hal_swire_set_timer) for hal_swire_set_timer + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_tx_init) for app_mipi_tx_init + p8p_demo.o(i.app_display_init) refers to p8p_demo.o(i.app_mipi_tx_start) for app_mipi_tx_start + p8p_demo.o(i.app_gpio_init) refers to hal_gpio.o(i.hal_gpio_config_pad) for hal_gpio_config_pad + p8p_demo.o(i.app_gpio_init) refers to p8p_demo.o(.constdata) for .constdata + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(i.app_tx_panel_reset) for app_tx_panel_reset + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(i.send_panel_init_code) for send_panel_init_code + p8p_demo.o(i.app_init_panel) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.app_init_panel) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.app_init_panel) refers to hal_swire.o(i.hal_swire_enable) for hal_swire_enable + p8p_demo.o(i.app_init_panel) refers to hal_swire.o(i.hal_swire_set_pulse) for hal_swire_set_pulse + p8p_demo.o(i.app_init_panel) refers to p8p_demo.o(.constdata) for panel_init_code + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) for hal_dsi_rx_ctrl_create_handle + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + p8p_demo.o(i.app_mipi_rx_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + p8p_demo.o(i.app_mipi_rx_init) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(.constdata) for g_cus_rx_dcs_execute_table + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(i.ap_dcs_read) for ap_dcs_read + p8p_demo.o(i.app_mipi_rx_init) refers to p8p_demo.o(i.pps_update_handle) for pps_update_handle + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) for hal_dsi_tx_ctrl_create_handle + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) for hal_dsi_tx_ctrl_init + p8p_demo.o(i.app_mipi_tx_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) for hal_dsi_tx_ctrl_set_overwrite_rgb + p8p_demo.o(i.app_mipi_tx_init) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_tx_init) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_mipi_tx_start) refers to p8p_demo.o(i.app_init_panel) for app_init_panel + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) for hal_dsi_tx_ctrl_start + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) for hal_dsi_rx_ctrl_pre_init_pps + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.app_mipi_tx_start) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.app_mipi_tx_start) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) for hal_dsi_tx_ctrl_write_cmd + p8p_demo.o(i.app_mipi_tx_start) refers to hal_swire.o(i.hal_swire_set_pulse) for hal_swire_set_pulse + p8p_demo.o(i.app_mipi_tx_start) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_mipi_tx_start) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_system_process) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(i.app_system_suspend) for app_system_suspend + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(i.app_system_resume) for app_system_resume + p8p_demo.o(i.app_system_process) refers to p8p_demo.o(.data) for sg_system_suspend + p8p_demo.o(i.app_system_resume) refers to hal_pwr.o(i.hal_pwr_exit_sleep_mode) for hal_pwr_exit_sleep_mode + p8p_demo.o(i.app_system_resume) refers to p8p_demo.o(i.app_display_init) for app_display_init + p8p_demo.o(i.app_system_resume) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) for hal_dsi_tx_ctrl_stop + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) for hal_dsi_tx_ctrl_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) for hal_dsi_rx_ctrl_stop + p8p_demo.o(i.app_system_suspend) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) for hal_dsi_rx_ctrl_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + p8p_demo.o(i.app_system_suspend) refers to hal_swire.o(i.hal_swire_deinit) for hal_swire_deinit + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_set_sleep_mode_power) for hal_pwr_set_sleep_mode_power + p8p_demo.o(i.app_system_suspend) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) for hal_pwr_enter_normal_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) for hal_pwr_set_stop_sleep_wakeup_pin + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) for hal_pwr_enter_stop_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) for hal_pwr_enter_deep_sleep_mode + p8p_demo.o(i.app_system_suspend) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.app_system_suspend) refers to p8p_demo.o(i.ap_rstn_pull_high_cb) for ap_rstn_pull_high_cb + p8p_demo.o(i.app_tx_panel_reset) refers to hal_gpio.o(i.hal_gpio_set_output_data) for hal_gpio_set_output_data + p8p_demo.o(i.app_tx_panel_reset) refers to tau_delay.o(i.delayMs) for delayMs + p8p_demo.o(i.google_p8p_demo) refers to hal_pwr.o(i.hal_pwr_set_main_power) for hal_pwr_set_main_power + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(i.app_display_init) for app_display_init + p8p_demo.o(i.google_p8p_demo) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + p8p_demo.o(i.google_p8p_demo) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) for hal_dsi_rx_ctrl_dcs_async_handler + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(i.app_system_process) for app_system_process + p8p_demo.o(i.google_p8p_demo) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.pps_update_handle) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.pps_update_handle) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) for hal_dsi_rx_ctrl_toggle_resolution + p8p_demo.o(i.pps_update_handle) refers to p8p_demo.o(.data) for g_rx_ctrl_handle + p8p_demo.o(i.send_panel_init_code) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) for hal_dsi_tx_ctrl_write_array_cmd + p8p_demo.o(i.send_panel_init_code) refers to tau_delay.o(i.delayUs) for delayUs + p8p_demo.o(i.soft_te_timer_cb) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) for hal_dsi_tx_ctrl_gen_a_tear_signal + p8p_demo.o(i.soft_te_timer_cb) refers to hal_timer.o(i.hal_timer_start) for hal_timer_start + p8p_demo.o(i.soft_te_timer_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) for hal_dsi_tx_ctrl_set_tear_mode + p8p_demo.o(i.soft_te_timer_init) refers to hal_timer.o(i.hal_timer_init) for hal_timer_init + p8p_demo.o(i.soft_te_timer_init) refers to hal_timer.o(i.hal_timer_start) for hal_timer_start + p8p_demo.o(i.soft_te_timer_init) refers to p8p_demo.o(.data) for g_tx_ctrl_handle + p8p_demo.o(i.soft_te_timer_init) refers to p8p_demo.o(i.soft_te_timer_cb) for soft_te_timer_cb + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_display_on) for ap_dcs_set_display_on + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_display_off) for ap_dcs_set_display_off + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_backlight) for ap_dcs_set_backlight + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_set_FPS_53) for ap_set_FPS_53 + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) for ap_dcs_set_enter_sleep_mode + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) for ap_dcs_set_exit_sleep_mode + p8p_demo.o(.constdata) refers to p8p_demo.o(i.ap_dcs_set_frame_change) for ap_dcs_set_frame_change + board.o(i.board_Init) refers to hal_system.o(i.hal_system_init) for hal_system_init + board.o(i.board_Init) refers to tau_log.o(i.tau_log_init) for tau_log_init + startup_armcm0.o(RESET) refers to startup_armcm0.o(STACK) for __initial_sp + startup_armcm0.o(RESET) refers to startup_armcm0.o(.text) for Reset_Handler + startup_armcm0.o(RESET) refers to drv_common.o(i.HardFault_Handler) for HardFault_Handler + startup_armcm0.o(RESET) refers to drv_common.o(i.SysTick_Handler) for SysTick_Handler + startup_armcm0.o(RESET) refers to drv_vidc.o(i.VIDC_IRQn_Handler) for VIDC_IRQn_Handler + startup_armcm0.o(RESET) refers to hal_internal_vsync.o(i.LCDC_IRQn_Handler) for LCDC_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) for MIPI_RX_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) for MIPI_TX_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_memc.o(i.MEMC_IRQn_Handler) for MEMC_IRQn_Handler + startup_armcm0.o(RESET) refers to hal_internal_dcs.o(i.VPRE_IRQn_Handler) for VPRE_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_dma.o(i.DMA_IRQn_Handler) for DMA_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER0_IRQn_Handler) for TIMER0_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER1_IRQn_Handler) for TIMER1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER2_IRQn_Handler) for TIMER2_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_timer.o(i.TIMER3_IRQn_Handler) for TIMER3_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_uart.o(i.UART_IRQn_Handler) for UART_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_rxbr.o(i.VPRE1_IRQn_Handler) for VPRE1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_swire.o(i.SWIRE_IRQn_Handler) for SWIRE_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.AP_NRESET_IRQn_Handler) for AP_NRESET_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT0_IRQn_Handler) for EXTI_INT0_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT1_IRQn_Handler) for EXTI_INT1_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT2_IRQn_Handler) for EXTI_INT2_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT3_IRQn_Handler) for EXTI_INT3_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT4_IRQn_Handler) for EXTI_INT4_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT5_IRQn_Handler) for EXTI_INT5_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT6_IRQn_Handler) for EXTI_INT6_IRQn_Handler + startup_armcm0.o(RESET) refers to drv_gpio.o(i.EXTI_INT7_IRQn_Handler) for EXTI_INT7_IRQn_Handler + startup_armcm0.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd) refers to drv_rxbr.o(i.drv_rxbr_set_ack_pkt_md) for drv_rxbr_set_ack_pkt_md + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_lpdt_fifo_status) for drv_dsi_rx_get_lpdt_fifo_status + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) for dcs_packet_get_fifo_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) for dcs_packet_free_fifo_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) for hal_internal_vsync_get_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_dsc_dec.o(i.drv_dsc_dec_disable) for drv_dsc_dec_disable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) for drv_dsi_rx_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_rxbr.o(i.drv_rxbr_enable_irq) for drv_rxbr_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_vidc.o(i.drv_vidc_enable_irq) for drv_vidc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_memc.o(i.drv_memc_enable_irq) for drv_memc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to hal_dsi_rx_ctrl.o(i.swap_uint16_t) for swap_uint16_t + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to fflti.o(.text) for __aeabi_i2f + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data_ex) for hal_dsi_rx_ctrl_set_pixel_data_ex + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_swpxl_clr) for drv_rxbr_swpxl_clr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_set_cmd_filter) for drv_rxbr_set_cmd_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_disable) for drv_dsc_dec_disable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_src_parameter) for drv_vidc_set_src_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_scld_step) for drv_vidc_set_scld_step + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_vidc.o(i.drv_vidc_set_pu_ctrl) for drv_vidc_set_pu_ctrl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to drv_rxbr.o(i.drv_rxbr_set_swpxl_data) for drv_rxbr_set_swpxl_data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_pg_cfg) for drv_dsi_rx_set_ddi_pg_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) for hal_dsi_rx_ctrl_set_rx_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_pg_cfg) for drv_dsi_rx_set_ipi_pg_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.constdata) for .constdata + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_force_video_crtl) refers to drv_dsi_rx.o(i.drv_dsi_rx_force_video_crtl) for drv_dsi_rx_force_video_crtl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_cap_pixel_color) refers to drv_vidc.o(i.drv_vidc_get_status2) for drv_vidc_get_status2 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_compressen_en) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) for drv_dsi_rx_get_compression_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) for drv_dsi_rx_get_max_ret_size + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) for hal_dsi_rx_ctrl_init_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_init_rx) for hal_internal_vsync_init_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) for hal_dsi_rx_ctrl_init_dsi_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) for hal_dsi_rx_ctrl_init_rxbr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_enable) for drv_dsc_dec_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) for drv_dsc_dec_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) for hal_dsi_rx_ctrl_init_vidc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) for hal_dsi_rx_ctrl_init_memc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to drv_se.o(i.drv_se_start_rx) for drv_se_start_rx + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_pwr.o(i.drv_pwr_set_pll_clk) for drv_pwr_set_pll_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_rxbr_clk) for drv_crgu_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_dsc_clk) for drv_crgu_set_dsc_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_vidc_clk) for drv_crgu_set_vidc_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_set_fb_clk) for drv_crgu_set_fb_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) for drv_dsi_rx_set_ctrl_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) for hal_dsi_rx_ctrl_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) for drv_dsi_rx_set_up_phy + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) for drv_dsi_rx_set_lane_swap + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) for drv_dsi_rx_set_ddi_crc_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) for drv_dsi_rx_set_ipi_ycbcr_frmt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) for drv_dsi_rx_set_tear_resp_en + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_inten) for drv_dsi_rx_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) for drv_dsi_rx_set_check_crc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) for drv_dsi_rx_set_resp_cnt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) for drv_dsi_rx_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_data_mode) for drv_memc_set_data_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_ltpo_mode) for drv_memc_set_ltpo_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_rate_transfer_sel) for drv_memc_rate_transfer_sel + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_fs_en_conditions) for drv_memc_set_fs_en_conditions + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_lcdc_st_conditions) for drv_memc_set_lcdc_st_conditions + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_sel_vsync) for drv_memc_sel_vsync + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_vidc_sync_cnt) for drv_memc_set_vidc_sync_cnt + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_tear_waveform) for drv_memc_set_tear_waveform + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_double_buffer) for drv_memc_set_double_buffer + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_circ_mode_enable) for drv_memc_set_circ_mode_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_active_height) for drv_memc_set_active_height + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_set_ltpo_pu_thres) for drv_memc_set_ltpo_pu_thres + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to drv_memc.o(i.drv_memc_enable_irq) for drv_memc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_color_format) for drv_rxbr_set_color_format + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) for drv_rxbr_set_ltpo_drop_th + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_cfg) for drv_rxbr_set_usr_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_col) for drv_rxbr_set_usr_col + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_set_usr_row) for drv_rxbr_set_usr_row + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) for drv_rxbr_hline_rcv_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to drv_rxbr.o(i.drv_rxbr_enable_irq) for drv_rxbr_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_src_parameter) for drv_vidc_set_src_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_pentile_swap) for drv_vidc_set_pentile_swap + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_dst_parameter) for drv_vidc_set_dst_parameter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_circ_mode_enable) for drv_vidc_set_circ_mode_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_init_module_enable) for drv_vidc_init_module_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_dither_config) for drv_vidc_set_dither_config + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_vintp_config) for drv_vidc_set_vintp_config + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_rotation) for drv_vidc_set_rotation + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dfltui.o(.text) for __aeabi_ui2d + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dadd.o(.text) for __aeabi_dadd + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_step) for drv_vidc_set_scld_step + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_hcoef0) for drv_vidc_set_scld_hcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_hcoef1) for drv_vidc_set_scld_hcoef1 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_vcoef0) for drv_vidc_set_scld_vcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_scld_vcoef1) for drv_vidc_set_scld_vcoef1 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hinitr) for drv_vidc_set_honly_hinitr + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hinitb) for drv_vidc_set_honly_hinitb + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_honly_hcoef0) for drv_vidc_set_honly_hcoef0 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_mirror) for drv_vidc_set_mirror + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_pu_ctrl) for drv_vidc_set_pu_ctrl + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to drv_vidc.o(i.drv_vidc_enable_irq) for drv_vidc_enable_irq + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) refers to hal_dsi_rx_ctrl.o(.constdata) for .constdata + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback) for hal_internal_sync_register_rx_callback + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_vidc.o(i.drv_vidc_set_irq_line) for drv_vidc_set_irq_line + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_write_cmd_entry) refers to hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry) for hal_intl_dcs_register_write_cmd_entry + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_release_handle) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to drv_dsi_rx.o(i.drv_dsi_rx_shut_down) for drv_dsi_rx_shut_down + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) for drv_rxbr_set_ack_pkt_header + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to drv_rxbr.o(i.drv_rxbr_set_cmd_response) for drv_rxbr_set_cmd_response + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack) refers to hal_dsi_rx_ctrl.o(.conststring) for .conststring + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cap_pixel_pos) refers to drv_vidc.o(i.drv_vidc_debug_cap_pixel) for drv_vidc_debug_cap_pixel + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) for drv_dsi_rx_set_check_crc + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) refers to drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) for drv_dsi_rx_calc_ipi_tx_delay + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) for drv_dsi_rx_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_log_level) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level) for drv_dsi_rx_set_drv_log_level + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to drv_rxbr.o(i.drv_rxbr_sw_reset) for drv_rxbr_sw_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data_ex) refers to drv_rxbr.o(i.drv_rxbr_sw_reset) for drv_rxbr_sw_reset + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data_ex) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) for hal_dsi_rx_ctrl_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) for hal_intl_svs_update_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) for drv_dsi_rx_set_ddi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) for hal_dsi_rx_ctrl_set_ipi_cfg + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk) refers to hal_dsi_rx_ctrl.o(.data) for .data + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk) refers to drv_crgu.o(i.drv_crgu_set_rxbr_clk) for drv_crgu_set_rxbr_clk + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to drv_dsi_rx.o(i.drv_dsi_rx_power_up) for drv_dsi_rx_power_up + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to drv_dsi_rx.o(i.drv_dsi_rx_shut_down) for drv_dsi_rx_shut_down + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) for hal_internal_vsync_set_rx_state + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_input_frame_rate) refers to hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) for hal_internal_vsync_toggle_input_frame_rate + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) refers to hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) for hal_internal_sync_input_resolution_change + hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) refers to hal_dsi_rx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fadd.o(.text) for __aeabi_fadd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to fmul.o(.text) for __aeabi_fmul + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) for hal_dsi_tx_ctrl_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) for drv_dsi_tx_phy_time_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) for drv_dsi_tx_phy_test_setup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) for drv_dsi_tx_config_eotp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) for drv_dsi_tx_phy_status_ready + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) for hal_internal_sync_register_lcdc_cb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) for hal_internal_sync_set_fb_setting_manual + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) for hal_lcdc_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to drv_memc.o(i.drv_memc_set_data_mode) for drv_memc_set_data_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_frame) refers to drv_lcdc.o(i.drv_lcdc_fixed_frame_output) for drv_lcdc_fixed_frame_output + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_get_tear_mode) for drv_memc_get_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) refers to drv_memc.o(i.drv_memc_gen_a_tear_signal) for drv_memc_gen_a_tear_signal + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_init_tx) for hal_internal_vsync_init_tx + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) for hal_internal_sync_register_lcdc_cb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) for hal_dsi_tx_ctrl_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) for hal_dsi_tx_init_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) for hal_dsi_tx_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) for hal_lcdc_init_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) for hal_lcdc_init_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) for drv_dsi_tx_phy_status_ready + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) for hal_nonshadow_func_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) refers to hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) for hal_vsync_func_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable) refers to drv_lcdc.o(i.drv_lcdc_part_display_config) for drv_lcdc_part_display_config + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_get_payload) for drv_dsi_tx_command_get_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_release_handle) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) for hal_internal_vsync_set_sync_line + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to memcpya.o(.text) for __aeabi_memcpy + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_endianness) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) for hal_nonshadow_func_req_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) refers to drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) for drv_lcdc_config_overwrite_rgb + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) for hal_internal_vsync_set_tear_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_vpg) for drv_dsi_tx_set_vpg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick) for hal_dsi_tx_ctrl_draw_flick + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) for drv_dsi_tx_phy_clock_lane_auto_lp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) for drv_dsi_tx_config_eotp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) for drv_dsi_tx_command_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_cfg_int_frame) for drv_lcdc_cfg_int_frame + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_dsi_tx.o(i.drv_dsi_tx_powerup) for drv_dsi_tx_powerup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) for drv_lcdc_enable_shadow_reg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_start) for hal_lcdc_start + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_lcdc.o(i.drv_lcdc_stop_display) for drv_lcdc_stop_display + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_lcdc.o(i.drv_lcdc_set_int) for drv_lcdc_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_int) for drv_dsi_tx_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to drv_dsi_tx.o(i.drv_dsi_tx_shutdown) for drv_dsi_tx_shutdown + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd) for hal_dsi_tx_ctrl_read_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) for hal_dsi_tx_send_cmd + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) for drv_dsi_tx_video_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) for drv_dsi_tx_set_bta_ack + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) for drv_dsi_tx_dpi_lpcmd_time + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) for drv_dsi_tx_command_mode_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_mode) for drv_dsi_tx_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) for drv_dsi_tx_phy_lane_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) for drv_dsi_tx_dpi_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) for drv_dsi_tx_dpi_polarity + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_response_mode) for drv_dsi_tx_response_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) for drv_dsi_tx_config_eotp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) for drv_dsi_tx_set_esc_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) for drv_dsi_tx_set_time_out_div + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to memseta.o(.text) for __aeabi_memclr4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) for drv_dsi_tx_timeout_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) for drv_dsi_tx_phy_clock_lane_req_hs + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) for drv_dsi_tx_phy_clock_lane_auto_lp + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_config_int) for drv_dsi_tx_config_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_int) for drv_dsi_tx_set_int + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to drv_crgu.o(i.drv_crgu_set_dpi_clk) for drv_crgu_set_dpi_clk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) refers to hal_dsi_tx_ctrl.o(.constdata) for .constdata + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) for drv_dsi_tx_phy_time_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) for drv_dsi_tx_phy_test_setup + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) for hal_dsi_tx_timing_info_update + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) for hal_dsi_tx_cmd_mode_cal_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) for drv_dsi_tx_edpi_cmd_size + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) for hal_dsi_tx_init_phy_cfg + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) for hal_dsi_tx_init_dpi_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) for hal_dsi_tx_vid_mode_cal_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) for hal_dsi_tx_init_vid_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) for drv_dsi_tx_set_video_chunk + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) refers to drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) for drv_dsi_tx_set_video_timing + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) for drv_dsi_tx_get_cmd_status + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_header) for drv_dsi_tx_command_header + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) refers to d2f.o(.text) for __aeabi_d2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to fmul.o(.text) for __aeabi_fmul + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to idiv.o(.text) for __aeabi_idivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_internal_svs.o(i.hal_intl_svs_init_tx) for hal_intl_svs_init_tx + hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) refers to hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) for hal_tx_frame_rate_adjust + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to drv_lcdc.o(i.drv_lcdc_endianness_config) for drv_lcdc_endianness_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to drv_lcdc.o(i.drv_lcdc_crop_hact) for drv_lcdc_crop_hact + hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) for hal_lcdc_postproc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) for hal_lcdc_displayproc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) for hal_intl_fb_get_tx_fb_info + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) for hal_lcdc_timinggen_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to drv_lcdc.o(i.drv_lcdc_config_int) for drv_lcdc_config_int + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) refers to drv_lcdc.o(i.drv_lcdc_set_int) for drv_lcdc_set_int + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to fscalb.o(.text) for __ARM_scalbnf + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to ffltui.o(.text) for __aeabi_ui2f + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to fdiv.o(.text) for __aeabi_fdiv + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to f2d.o(.text) for __aeabi_f2d + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to ceil.o(i.ceil) for ceil + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) refers to drv_crgu.o(i.drv_crgu_set_lcdc_clk) for drv_crgu_set_lcdc_clk + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) for hal_intl_fb_get_tx_fb_info + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) for hal_lcdc_upscaler_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_fldc_config) for drv_lcdc_fldc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_bcsa_config) for drv_lcdc_bcsa_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_fc_config) for drv_lcdc_fc_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_edge_dect_config) for drv_lcdc_edge_dect_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_edge_enh_config) for drv_lcdc_edge_enh_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_vintp_mode_config) for drv_lcdc_vintp_mode_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to drv_lcdc.o(i.drv_lcdc_dith_config) for drv_lcdc_dith_config + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for .ARM.__at_0x1102C + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to drv_lcdc.o(i.drv_lcdc_vid_hw_start) for drv_lcdc_vid_hw_start + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_dsi_tx_ctrl.o(i.hal_lcdc_start) refers to drv_lcdc.o(i.drv_lcdc_cmd_start) for drv_lcdc_cmd_start + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_ctrl_flow) for drv_lcdc_ctrl_flow + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_config_src_parameter) for drv_lcdc_config_src_parameter + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) for hal_intl_fb_get_memc_flow_mode + hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) refers to drv_lcdc.o(i.drv_lcdc_set_prefetch) for drv_lcdc_set_prefetch + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dfltui.o(.text) for __aeabi_ui2d + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dadd.o(.text) for __aeabi_dadd + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for sg_pq_para + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_bcsa_config) for drv_lcdc_bcsa_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_fc_config) for drv_lcdc_fc_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_edge_dect_config) for drv_lcdc_edge_dect_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_edge_enh_config) for drv_lcdc_edge_enh_config + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) refers to hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) for sg_pq_para + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to cfcmple.o(.text) for __aeabi_cfcmple + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) for hal_dsi_tx_ctrl_init + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) for hal_internal_vsync_set_tx_state + hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) refers to hal_dsi_tx_ctrl.o(.bss) for .bss + hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) refers to hal_dsi_tx_ctrl.o(.data) for .data + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_init_input) for hal_gpio_init_input + hal_gpio.o(i.hal_gpio_config_pad) refers to hal_gpio.o(i.hal_gpio_init_output) for hal_gpio_init_output + hal_gpio.o(i.hal_gpio_ctrl_eint) refers to drv_gpio.o(i.drv_gpio_set_int) for drv_gpio_set_int + hal_gpio.o(i.hal_gpio_get_input_data) refers to drv_gpio.o(i.drv_gpio_get_input_data) for drv_gpio_get_input_data + hal_gpio.o(i.hal_gpio_get_pull_state) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_get_pull_state) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_eint) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) for drv_sys_cfg_sel_gpio_group + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) for drv_sys_cfg_sel_int_trig + hal_gpio.o(i.hal_gpio_init_eint) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_gpio.o(i.hal_gpio_init_input) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_input) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_init_output) refers to hal_gpio.o(i.drv_gpio_set_output_data) for drv_gpio_set_output_data + hal_gpio.o(i.hal_gpio_init_output) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_init_output) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_reg_eint_cb) refers to drv_gpio.o(i.drv_gpio_register_callback) for drv_gpio_register_callback + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_gpio.o(i.drv_gpio_register_ap_reset_callback) for drv_gpio_register_ap_reset_callback + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) for drv_sys_cfg_sel_ap_rst_trig + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_gpio.o(i.hal_gpio_set_ap_reset_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_driving_strength) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to drv_gpio.o(i.drv_gpio_set_ioe) for drv_gpio_set_ioe + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_gpio.o(i.hal_gpio_set_high_impedance) refers to hal_gpio.o(i.hal_gpio_set_pull_state) for hal_gpio_set_pull_state + hal_gpio.o(i.hal_gpio_set_mode) refers to drv_gpio.o(i.drv_gpio_set_mode) for drv_gpio_set_mode + hal_gpio.o(i.hal_gpio_set_mode) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_output_data) refers to hal_gpio.o(i.drv_gpio_set_output_data) for drv_gpio_set_output_data + hal_gpio.o(i.hal_gpio_set_pull_state) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_pull_state) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_pull_state) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_schmitt_trigger) refers to hal_gpio.o(.constdata) for .constdata + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to drv_gpio.o(i.drv_gpio_get_attribute) for drv_gpio_get_attribute + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to drv_gpio.o(i.drv_gpio_set_attribute) for drv_gpio_set_attribute + hal_gpio.o(i.hal_gpio_set_slew_rate) refers to hal_gpio.o(.constdata) for .constdata + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_enable) for drv_swire_enable + hal_swire.o(i.hal_swire_deinit) refers to drv_swire.o(i.drv_swire_register_callback) for drv_swire_register_callback + hal_swire.o(i.hal_swire_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_swire.o(i.hal_swire_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_swire.o(i.hal_swire_deinit) refers to hal_timer.o(i.hal_timer_deinit) for hal_timer_deinit + hal_swire.o(i.hal_swire_deinit) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_power_down) for drv_swire_set_power_down + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_get_pulse_count) for drv_swire_get_pulse_count + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_enable) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_swire.o(i.hal_swire_enable) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_enable) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_init) refers to drv_crgu.o(i.drv_crgu_set_clock_div) for drv_crgu_set_clock_div + hal_swire.o(i.hal_swire_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_swire.o(i.hal_swire_init) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_swire.o(i.hal_swire_init) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_set_bit_time) for drv_swire_set_bit_time + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_set_power_down) for drv_swire_set_power_down + hal_swire.o(i.hal_swire_init) refers to drv_swire.o(i.drv_swire_enable) for drv_swire_enable + hal_swire.o(i.hal_swire_init) refers to drv_common.o(.data) for g_system_clock + hal_swire.o(i.hal_swire_register_callback) refers to drv_swire.o(i.drv_swire_register_callback) for drv_swire_register_callback + hal_swire.o(i.hal_swire_register_callback) refers to drv_swire.o(i.drv_swire_set_int) for drv_swire_set_int + hal_swire.o(i.hal_swire_set_pulse) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_set_pulse) refers to drv_swire.o(i.drv_swire_set_pulse_count) for drv_swire_set_pulse_count + hal_swire.o(i.hal_swire_set_pulse) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_set_timer) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) for drv_sys_cfg_sel_swire_timer + hal_swire.o(i.hal_swire_set_timer) refers to hal_timer.o(i.hal_timer_init) for hal_timer_init + hal_swire.o(i.hal_swire_set_timer) refers to hal_timer.o(i.hal_timer_set_repeat) for hal_timer_set_repeat + hal_swire.o(i.hal_swire_set_timer) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_swire.o(i.hal_swire_set_timer) refers to drv_swire.o(i.drv_swire_set_trig_mode) for drv_swire_set_trig_mode + hal_swire.o(i.hal_swire_set_timer) refers to hal_swire.o(.data) for .data + hal_swire.o(i.hal_swire_set_waveform) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_swire.o(i.hal_swire_set_waveform) refers to drv_swire.o(i.drv_swire_set_bit_time) for drv_swire_set_bit_time + hal_swire.o(i.hal_swire_set_waveform) refers to drv_common.o(.data) for g_system_clock + hal_system.o(i.hal_system_disable_systick) refers to drv_common.o(i.drv_common_disable_systick) for drv_common_disable_systick + hal_system.o(i.hal_system_enable_systick) refers to drv_common.o(i.drv_common_enable_systick) for drv_common_enable_systick + hal_system.o(i.hal_system_get_tick) refers to drv_common.o(i.drv_common_get_tick) for drv_common_get_tick + hal_system.o(i.hal_system_idle_mode) refers to drv_common.o(i.drv_common_idle_mode) for drv_common_idle_mode + hal_system.o(i.hal_system_init) refers to drv_pwr.o(i.drv_pwr_set_pll_clk) for drv_pwr_set_pll_clk + hal_system.o(i.hal_system_init) refers to hal_system.o(i.hal_system_updata_sysclk) for hal_system_updata_sysclk + hal_system.o(i.hal_system_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_system.o(i.hal_system_init) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) for drv_sys_cfg_clear_all_int + hal_system.o(i.hal_system_init) refers to drv_common.o(i.drv_common_system_init) for drv_common_system_init + hal_system.o(i.hal_system_init) refers to hal_gpio.o(i.hal_gpio_set_mode) for hal_gpio_set_mode + hal_system.o(i.hal_system_register_systick_cb) refers to drv_common.o(i.drv_common_systick_register_cb) for drv_common_systick_register_cb + hal_system.o(i.hal_system_reset_chip) refers to drv_crgu.o(i.drv_crgu_reset_chip) for drv_crgu_reset_chip + hal_system.o(i.hal_system_updata_sysclk) refers to drv_crgu.o(i.drv_crgu_set_ahb_clk) for drv_crgu_set_ahb_clk + hal_system.o(i.hal_system_updata_sysclk) refers to drv_common.o(.data) for g_system_clock + hal_system.o(i.hal_system_updata_sysclk) refers to drv_common.o(.data) for g_system_delay_step + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_set_repeat) for drv_timer_set_repeat + hal_timer.o(i.hal_timer_deinit) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_timer.o(i.hal_timer_deinit) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_timer.o(i.hal_timer_get_status) refers to drv_timer.o(i.drv_timer_get_status) for drv_timer_get_status + hal_timer.o(i.hal_timer_init) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_timer.o(i.hal_timer_init) refers to drv_timer.o(i.drv_timer_set_prescaler) for drv_timer_set_prescaler + hal_timer.o(i.hal_timer_set_repeat) refers to drv_timer.o(i.drv_timer_set_repeat) for drv_timer_set_repeat + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_start) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_start_ex) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_enable) for drv_timer_enable + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_register_callback) for drv_timer_register_callback + hal_timer.o(i.hal_timer_stop) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + hal_pwr.o(i.hal_pwr_elvcc_close) refers to drv_pwr.o(i.drv_pwr_pwmled_electric_current) for drv_pwr_pwmled_electric_current + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_pwmled_electric_current) for drv_pwr_pwmled_electric_current + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_hv_ldo_mode_sel) for drv_pwr_hv_ldo_mode_sel + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel) for drv_pwr_hv_ldo_mode_clock_sel + hal_pwr.o(i.hal_pwr_elvcc_ldo_en) refers to drv_pwr.o(i.drv_pwr_pwmled_driver_current_Big_step) for drv_pwr_pwmled_driver_current_Big_step + hal_pwr.o(i.hal_pwr_elvcc_vol_set) refers to drv_pwr.o(i.drv_pwr_hv_ldo_voltage_set) for drv_pwr_hv_ldo_voltage_set + hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) refers to drv_pwr.o(i.drv_pwr_set_wakeup_type) for drv_pwr_set_wakeup_type + hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) for drv_pwr_enter_deep_sleep_mode + hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) for drv_pwr_enter_sleep_mode_ex + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) for drv_pwr_enter_stop_sleep_mode + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) refers to hal_pwr.o(.data) for .data + hal_pwr.o(i.hal_pwr_exit_sleep_mode) refers to drv_pwr.o(i.drv_pwr_exit_sleep_mode) for drv_pwr_exit_sleep_mode + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_crgu.o(i.drv_crgu_get_all_reset_flag) for drv_crgu_get_all_reset_flag + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_pwr.o(i.drv_pwr_get_wakeflag) for drv_pwr_get_wakeflag + hal_pwr.o(i.hal_pwr_get_reset_flag) refers to drv_crgu.o(i.drv_crgu_clear_all_reset_flags) for drv_crgu_clear_all_reset_flags + hal_pwr.o(i.hal_pwr_get_vcc_power_ready) refers to drv_pwr.o(i.drv_pwr_get_power_ready_st) for drv_pwr_get_power_ready_st + hal_pwr.o(i.hal_pwr_ldo13s_en) refers to drv_pwr.o(i.drv_pwr_ldo13s_en) for drv_pwr_ldo13s_en + hal_pwr.o(i.hal_pwr_ldo13s_set) refers to drv_pwr.o(i.drv_pwr_ldo13s_set) for drv_pwr_ldo13s_set + hal_pwr.o(i.hal_pwr_ldo18s_en) refers to drv_pwr.o(i.drv_pwr_ldo18s_en) for drv_pwr_ldo18s_en + hal_pwr.o(i.hal_pwr_ldo18s_set) refers to drv_pwr.o(i.drv_pwr_ldo18s_set) for drv_pwr_ldo18s_set + hal_pwr.o(i.hal_pwr_set_main_power) refers to drv_pwr.o(i.drv_pwr_set_digit_power_sel) for drv_pwr_set_digit_power_sel + hal_pwr.o(i.hal_pwr_set_pvd) refers to drv_pwr.o(i.drv_pwr_set_pvd) for drv_pwr_set_pvd + hal_pwr.o(i.hal_pwr_set_sleep_mode_power) refers to drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) for drv_pwr_set_breath_screen_power_sel + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_ctrl_eint) for hal_gpio_ctrl_eint + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_init_eint) for hal_gpio_init_eint + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_reg_eint_cb) for hal_gpio_reg_eint_cb + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_gpio.o(i.hal_gpio_set_ap_reset_int) for hal_gpio_set_ap_reset_int + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_pwr.o(.data) for .data + hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) refers to hal_pwr.o(i.stop_sleep_cb) for stop_sleep_cb + hal_pwr.o(i.hal_pwr_set_vcc_enable) refers to drv_pwr.o(i.drv_pwr_charge_pump_en) for drv_pwr_charge_pump_en + hal_pwr.o(i.hal_pwr_sw_tp18_en) refers to drv_pwr.o(i.drv_pwr_sw_tp18_en) for drv_pwr_sw_tp18_en + hal_pwr.o(i.stop_sleep_cb) refers to hal_pwr.o(.data) for .data + tau_delay.o(i.delayMs) refers to tau_delay.o(i.delayUs) for delayUs + tau_delay.o(i.delayUs) refers to drv_common.o(.data) for g_system_delay_step + tau_log.o(i.fgetc) refers to hal_uart.o(i.hal_uart_recv_blocking) for hal_uart_recv_blocking + tau_log.o(i.fgetc) refers to hal_system.o(i.hal_system_get_debug_state) for hal_system_get_debug_state + tau_log.o(i.fgetc) refers to hal_system.o(i.hal_system_clear_debug_state) for hal_system_clear_debug_state + tau_log.o(i.fgetc) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.fputc) refers to tau_log.o(i.tau_log_push_log) for tau_log_push_log + tau_log.o(i.fputc) refers to hal_uart.o(i.hal_uart_send_blocking) for hal_uart_send_blocking + tau_log.o(i.fputc) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_init) refers to hal_uart.o(i.hal_uart_init) for hal_uart_init + tau_log.o(i.tau_log_init) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_printf) refers to memseta.o(.text) for __aeabi_memclr4 + tau_log.o(i.tau_log_printf) refers to strlen.o(.text) for strlen + tau_log.o(i.tau_log_printf) refers to printfa.o(i.__0vsprintf) for vsprintf + tau_log.o(i.tau_log_printf) refers to tau_log.o(i.tau_log_push_log) for tau_log_push_log + tau_log.o(i.tau_log_printf) refers to printfa.o(i.__0printf) for __2printf + tau_log.o(i.tau_log_printf) refers to tau_log.o(.data) for g_log_port + tau_log.o(i.tau_log_printf) refers to tau_log.o(.bss) for g_log_buf + tau_log.o(i.tau_log_push_log) refers to memcpya.o(.text) for __aeabi_memcpy + tau_log.o(i.tau_log_push_log) refers to tau_delay.o(i.delayUs) for delayUs + tau_log.o(.ARM.__at_0x1101C) refers to tau_log.o(.bss) for g_log_buf + hal_uart.o(i.hal_uart0_rx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart0_tx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart1_rx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart1_tx_dma_cb) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_deinit) refers to drv_uart.o(i.drv_uart_deinit) for drv_uart_deinit + hal_uart.o(i.hal_uart_deinit) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_uart.o(i.hal_uart_deinit) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_dma_path_close) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_path_close) refers to drv_dma.o(i.drv_dma_deinit) for drv_dma_deinit + hal_uart.o(i.hal_uart_dma_path_close) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_apply_handle) for drv_dma_apply_handle + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_init) for drv_dma_init + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_set_burst) for drv_dma_set_burst + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_register_callback) for drv_dma_register_callback + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_enable_int) for drv_dma_enable_int + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_set_mem_trans_info) for drv_dma_set_mem_trans_info + hal_uart.o(i.hal_uart_dma_recv) refers to drv_dma.o(i.drv_dma_enable) for drv_dma_enable + hal_uart.o(i.hal_uart_dma_recv) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(i.hal_uart0_rx_dma_cb) for hal_uart0_rx_dma_cb + hal_uart.o(i.hal_uart_dma_recv) refers to hal_uart.o(i.hal_uart1_rx_dma_cb) for hal_uart1_rx_dma_cb + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_apply_handle) for drv_dma_apply_handle + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_init) for drv_dma_init + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_set_burst) for drv_dma_set_burst + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_register_callback) for drv_dma_register_callback + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_enable_int) for drv_dma_enable_int + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_disable) for drv_dma_disable + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_set_mem_trans_info) for drv_dma_set_mem_trans_info + hal_uart.o(i.hal_uart_dma_send) refers to drv_dma.o(i.drv_dma_enable) for drv_dma_enable + hal_uart.o(i.hal_uart_dma_send) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(i.hal_uart0_tx_dma_cb) for hal_uart0_tx_dma_cb + hal_uart.o(i.hal_uart_dma_send) refers to hal_uart.o(i.hal_uart1_tx_dma_cb) for hal_uart1_tx_dma_cb + hal_uart.o(i.hal_uart_init) refers to memseta.o(.text) for __aeabi_memclr4 + hal_uart.o(i.hal_uart_init) refers to drv_uart.o(i.drv_uart_init) for drv_uart_init + hal_uart.o(i.hal_uart_init) refers to drv_uart.o(i.drv_uart_trans_create_handle) for drv_uart_trans_create_handle + hal_uart.o(i.hal_uart_init) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_init) refers to drv_common.o(.data) for g_system_clock + hal_uart.o(i.hal_uart_init) refers to hal_uart.o(.data) for .data + hal_uart.o(i.hal_uart_recv_blocking) refers to drv_uart.o(i.drv_uart_recv_blocking) for drv_uart_recv_blocking + hal_uart.o(i.hal_uart_recv_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_recv_none_blocking) for drv_uart_recv_none_blocking + hal_uart.o(i.hal_uart_recv_none_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_send_blocking) refers to drv_uart.o(i.drv_uart_send_blocking) for drv_uart_send_blocking + hal_uart.o(i.hal_uart_send_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_uart.o(i.hal_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_send_none_blocking) for drv_uart_send_none_blocking + hal_uart.o(i.hal_uart_send_none_blocking) refers to hal_uart.o(.constdata) for .constdata + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_internal_vsync.o(i.LCDC_IRQn_Handler) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) for hal_dsi_rx_ctrl_init + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) for hal_internal_vsync_set_tear_mode + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) for hal_dsi_rx_ctrl_start + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) for hal_dsi_tx_ctrl_gen_a_tear_signal + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to tau_delay.o(i.delayUs) for delayUs + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) for hal_vsync_reset_lcdc_scaler + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) refers to hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) for hal_intl_fb_set_fb_info_manual + hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_deinit) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) for check_mipi_rx_tx_video_info + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_svs.o(i.hal_intl_svs_init_rx) for hal_intl_svs_init_rx + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) for hal_intl_dcs_init_sw_fltr + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to drv_rxbr.o(i.drv_rxbr_register_irq1_callback) for drv_rxbr_register_irq1_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to drv_vidc.o(i.drv_vidc_register_callback) for drv_vidc_register_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to dcs_packet_fifo.o(i.dcs_packet_fifo_init) for dcs_packet_fifo_init + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.soft_pro_motion_init) for soft_pro_motion_init + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.soft_gen_te) for soft_gen_te + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.rxbr_irq1_callback) for rxbr_irq1_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.vidc_callback) for vidc_callback + hal_internal_vsync.o(i.hal_internal_vsync_init_rx) refers to hal_internal_vsync.o(i.soft_gen_te_double_buffer) for soft_gen_te_double_buffer + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) for check_mipi_rx_tx_video_info + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) for hal_intl_fb_cal_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_init_tx) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_vsync.o(i.hal_internal_vsync_deinit) for hal_internal_vsync_deinit + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_svs.o(i.hal_intl_svs_deinit_rx) for hal_intl_svs_deinit_rx + hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_svs.o(i.hal_intl_svs_set_sync_coef) for hal_intl_svs_set_sync_coef + hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_memc.o(i.drv_memc_set_tear_mode) for drv_memc_set_tear_mode + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_config_int_single) for drv_lcdc_config_int_single + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_memc.o(i.drv_memc_set_frame_drop_select) for drv_memc_set_frame_drop_select + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) for hal_internal_vsync_get_sync_line + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_set_tear_line) for drv_lcdc_set_tear_line + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to idiv.o(.text) for __aeabi_idivmod + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) for drv_lcdc_config_acc_command_mode + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_vsync.o(i.hal_internal_vsync_deinit) for hal_internal_vsync_deinit + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_svs.o(i.hal_intl_svs_deinit_tx) for hal_intl_svs_deinit_tx + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_vsync.o(i.soft_pro_motion_init) for soft_pro_motion_init + hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_internal_svs.o(i.hal_intl_svs_set_input_frate) for hal_intl_svs_set_input_frate + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_memc.o(i.drv_memc_rate_transfer_sel) for drv_memc_rate_transfer_sel + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_memc.o(i.drv_memc_sel_vsync) for drv_memc_sel_vsync + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv0_cfg) for drv_rxbr_hline_rcv0_cfg + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dfltui.o(.text) for __aeabi_ui2d + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dadd.o(.text) for __aeabi_dadd + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to hal_internal_vsync.o(i.soft_pro_motion_init) for soft_pro_motion_init + hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.drv_rxbr_get_int_source) for drv_rxbr_get_int_source + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.soft_double_buffer_update) for soft_double_buffer_update + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_svs.o(i.hal_intl_svs_handle) for hal_intl_svs_handle + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(i.vpre_err_reset) for vpre_err_reset + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_vidc.o(i.drv_vidc_enable) for drv_vidc_enable + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) for drv_dsi_tx_phy_clock_lane_req_hs + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_lcdc.o(i.drv_lcdc_cmd_start) for drv_lcdc_cmd_start + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) for hal_intl_svs_set_rx_vtt + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.rxbr_irq1_callback) refers to hal_internal_vsync.o(.conststring) for .conststring + hal_internal_vsync.o(i.soft_double_buffer_update) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.soft_gen_te) refers to hal_internal_vsync.o(i.soft_tear_adjust_line) for soft_tear_adjust_line + hal_internal_vsync.o(i.soft_gen_te) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.soft_gen_te) refers to hal_internal_vsync.o(.data) for .data + hal_internal_vsync.o(i.soft_gen_te_double_buffer) refers to hal_internal_vsync.o(i.soft_tear_adjust_line) for soft_tear_adjust_line + hal_internal_vsync.o(i.soft_gen_te_double_buffer) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.soft_pro_motion_init) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_vsync.o(i.soft_pro_motion_init) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.soft_pro_motion_init) refers to hal_internal_fb.o(.bss) for g_rx_fb_info + hal_internal_vsync.o(i.soft_tear_adjust_line) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_get_int_source) for drv_vidc_get_int_source + hal_internal_vsync.o(i.vidc_callback) refers to drv_lcdc.o(i.drv_lcdc_function_disable) for drv_lcdc_function_disable + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_set_irqen) for drv_vidc_set_irqen + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_clear_irq) for drv_vidc_clear_irq + hal_internal_vsync.o(i.vidc_callback) refers to drv_vidc.o(i.drv_vidc_get_irq_status) for drv_vidc_get_irq_status + hal_internal_vsync.o(i.vidc_callback) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_vsync.o(i.vidc_callback) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_vsync.o(i.vidc_callback) refers to hal_internal_vsync.o(.conststring) for .conststring + hal_internal_vsync.o(i.vpre_err_reset) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + hal_internal_vsync.o(i.vpre_err_reset) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + hal_internal_vsync.o(i.vpre_err_reset) refers to hal_internal_vsync.o(.bss) for .bss + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_dcs.o(i.drv_rxbr_get_status0) for drv_rxbr_get_status0 + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) for hal_intl_dcs_rx_receive_packet + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) for drv_dsc_dec_get_nslc + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_crgu.o(i.drv_crgu_set_dsc_clk) for drv_crgu_set_dsc_clk + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + hal_internal_dcs.o(i.VPRE_IRQn_Handler) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to hal_internal_dcs.o(i.drv_rxbr_get_status0) for drv_rxbr_get_status0 + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.check_pkt_buf_rev) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) for hal_intl_dcs_sw_filter_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) for dcs_packet_fifo_alloc + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) for hal_dsi_rx_ctrl_dcs_async_handler + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) for drv_dsi_rx_get_ddi_crc_en + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(i.check_pkt_buf_rev) for check_pkt_buf_rev + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) for drv_dsi_tx_command_put_payload + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) for hal_intl_dcs_rx_get_dcs_packet_data + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) for hal_intl_dcs_rx_receive_pps + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) for drv_rxbr_clear_pkt_buffer + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_dcs.o(i.check_pkt_buf_rev) for check_pkt_buf_rev + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to memcmp.o(.text) for memcmp + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) for drv_dsi_rx_get_compression_en + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to drv_dsc_dec.o(i.drv_dsc_dec_enable) for drv_dsc_dec_enable + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_dcs.o(.conststring) for .conststring + hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to memseta.o(.text) for __aeabi_memset + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to drv_rxbr.o(i.drv_rxbr_set_filter_regs) for drv_rxbr_set_filter_regs + hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode) refers to hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) for hal_intl_dcs_set_auto_hw_filter + hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) refers to hal_internal_dcs.o(.data) for .data + hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) refers to hal_internal_dcs.o(.bss) for .bss + hal_internal_dcs.o(.data) refers to hal_internal_dcs.o(.bss) for g_imm_buffer + hal_internal_fb.o(i.ha_intl_fb_check_pu_size) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.ha_intl_fb_check_pu_size) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) for hal_intl_fb_flow_control_adapter + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) for hal_intl_fb_check_bandwidth + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.ha_intl_fb_check_pu_size) for ha_intl_fb_check_pu_size + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(i.hal_intl_fb_edge_resize) for hal_intl_fb_edge_resize + hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) for hal_internal_sync_get_hight_performan_mode + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_edge_resize) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_edge_resize) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) refers to memcpya.o(.text) for __aeabi_memcpy4 + hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_get_user_flow) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_fb.o(.bss) for .bss + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_vsync.o(.bss) for g_vsync_handle + hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual) refers to hal_internal_fb.o(.conststring) for .conststring + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_deinit_rx) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_deinit_tx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_handle) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to memseta.o(.text) for __aeabi_memclr4 + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) for hal_intl_svs_update_rxbr_clk + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_fb.o(i.hal_intl_fb_get_user_flow) for hal_intl_fb_get_user_flow + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_init_rx) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_init_tx) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(i.svs_wait_start) for svs_wait_start + hal_internal_svs.o(i.hal_intl_svs_set_input_frate) refers to hal_internal_svs.o(i.svs_wait_fr_stab) for svs_wait_fr_stab + hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_set_sync_coef) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dfltui.o(.text) for __aeabi_ui2d + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dmul.o(.text) for __aeabi_dmul + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_direct_mode_setting) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.svs_direct_mode_setting) refers to hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) for hal_intl_fb_get_rx_fb_info + hal_internal_svs.o(i.svs_direct_mode_setting) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_direct_mode_setting) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) for drv_rxbr_hline_rcv1_cfg + hal_internal_svs.o(i.svs_direct_mode_setting) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_get_rel_intv) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_get_rel_intv) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_sync_handle) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_sync_handle) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_sync_handle) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_svs.o(i.svs_sync_handle) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_sync_handle) refers to f2d.o(.text) for __aeabi_f2d + hal_internal_svs.o(i.svs_sync_handle) refers to dadd.o(.text) for __aeabi_dadd + hal_internal_svs.o(i.svs_sync_handle) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.svs_sync_handle) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_wait_fr_stab) refers to drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) for drv_rxbr_frame_drop_cfg + hal_internal_svs.o(i.svs_wait_fr_stab) refers to uidiv.o(.text) for __aeabi_uidivmod + hal_internal_svs.o(i.svs_wait_fr_stab) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + hal_internal_svs.o(i.svs_wait_fr_stab) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_wait_fr_stab) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_wait_fr_stab) refers to ffixui.o(.text) for __aeabi_f2uiz + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_fr_stab) refers to hal_internal_svs.o(i.svs_sync_handle) for svs_sync_handle + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_get_rel_intv) for svs_get_rel_intv + hal_internal_svs.o(i.svs_wait_start) refers to drv_crgu.o(i.drv_crgu_get_rxbr_clk) for drv_crgu_get_rxbr_clk + hal_internal_svs.o(i.svs_wait_start) refers to ffltui.o(.text) for __aeabi_ui2f + hal_internal_svs.o(i.svs_wait_start) refers to fdiv.o(.text) for __aeabi_fdiv + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) for hal_internal_vsync_get_tx_state + hal_internal_svs.o(i.svs_wait_start) refers to fmul.o(.text) for __aeabi_fmul + hal_internal_svs.o(i.svs_wait_start) refers to f2d.o(.text) for __aeabi_f2d + hal_internal_svs.o(i.svs_wait_start) refers to ceil.o(i.ceil) for ceil + hal_internal_svs.o(i.svs_wait_start) refers to dfixui.o(.text) for __aeabi_d2uiz + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_direct_mode_setting) for svs_direct_mode_setting + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_clear_status0) for drv_rxbr_clear_status0 + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_set_inten) for drv_rxbr_set_inten + hal_internal_svs.o(i.svs_wait_start) refers to drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) for drv_rxbr_hline_rcv1_cfg + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(.bss) for .bss + hal_internal_svs.o(i.svs_wait_start) refers to hal_internal_svs.o(i.svs_wait_fr_stab) for svs_wait_fr_stab + drv_common.o(i.HardFault_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_common.o(i.SysTick_Handler) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_enable_systick) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_common.o(i.drv_common_enable_systick) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_get_tick) refers to drv_common.o(.data) for .data + drv_common.o(i.drv_common_system_init) refers to drv_se.o(i.drv_se_init) for drv_se_init + drv_common.o(i.drv_common_systick_register_cb) refers to drv_common.o(.data) for .data + drv_crgu.o(i.drv_crgu_get_rxbr_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_crgu.o(i.drv_crgu_get_system_clk) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsc_dec.o(i.drv_dsc_dec_enable) refers to drv_se.o(i.drv_se_set_dsc) for drv_se_set_dsc + drv_gpio.o(i.AP_NRESET_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_gpio.o(i.AP_NRESET_IRQn_Handler) refers to drv_gpio.o(.data) for .data + drv_gpio.o(i.EXTI_INT0_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT1_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT2_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT3_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT4_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT5_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT6_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.EXTI_INT7_IRQn_Handler) refers to drv_gpio.o(i.drv_gpio_handle_int) for drv_gpio_handle_int + drv_gpio.o(i.drv_gpio_handle_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_gpio.o(i.drv_gpio_handle_int) refers to drv_gpio.o(.bss) for .bss + drv_gpio.o(i.drv_gpio_register_ap_reset_callback) refers to drv_gpio.o(.data) for .data + drv_gpio.o(i.drv_gpio_register_callback) refers to drv_gpio.o(.bss) for .bss + drv_gpio.o(i.drv_gpio_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_pwr.o(i.drv_pwr_analog_pwm_en) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_elvcc_pwm_en) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_elvcc_pwm_en) refers to tau_delay.o(i.delayMs) for delayMs + drv_pwr.o(i.drv_pwr_enter_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_enter_sleep_mode) refers to drv_pwr.o(i.drv_pwr_por_mode_flag) for drv_pwr_por_mode_flag + drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_exit_sleep_mode) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel) refers to drv_pwr.o(i.drv_pwr_hv_ldo_10M_clock) for drv_pwr_hv_ldo_10M_clock + drv_pwr.o(i.drv_pwr_pwm_output_pwm_led) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_digit_power_sel) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_system_clk) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_pwr.o(i.drv_pwr_set_wakeup_type) refers to drv_pwr.o(i.drv_pwr_write_lock) for drv_pwr_write_lock + drv_swire.o(i.SWIRE_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_swire.o(i.SWIRE_IRQn_Handler) refers to drv_swire.o(.data) for .data + drv_swire.o(i.drv_swire_register_callback) refers to drv_swire.o(.data) for .data + drv_swire.o(i.drv_swire_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_timer.o(i.TIMER0_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER1_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER2_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.TIMER3_IRQn_Handler) refers to drv_timer.o(i.drv_timer_handle_interrupt) for drv_timer_handle_interrupt + drv_timer.o(i.drv_timer_clear_status_flags) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_clear_status_flags) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_timer.o(i.drv_timer_enable) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_get_instance) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_get_status) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_clear_status_flags) for drv_timer_clear_status_flags + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_set_int) for drv_timer_set_int + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(i.drv_timer_set_compare_val) for drv_timer_set_compare_val + drv_timer.o(i.drv_timer_handle_interrupt) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_register_callback) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_set_compare_val) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_compare_val) refers to drv_common.o(.data) for g_system_clock + drv_timer.o(i.drv_timer_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_timer.o(i.drv_timer_set_prescaler) refers to drv_timer.o(i.drv_timer_get_instance) for drv_timer_get_instance + drv_timer.o(i.drv_timer_set_prescaler) refers to drv_timer.o(.data) for .data + drv_timer.o(i.drv_timer_set_repeat) refers to drv_timer.o(.data) for .data + dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_fifo_init) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) refers to dcs_packet_fifo.o(.bss) for .bss + dcs_packet_fifo.o(i.dcs_packet_get_fifo_size) refers to dcs_packet_fifo.o(.bss) for .bss + drv_se.o(i.drv_se_init) refers to drv_efuse.o(i.drv_efuse_enter_inactive) for drv_efuse_enter_inactive + drv_se.o(i.drv_se_init) refers to drv_efuse.o(i.drv_efuse_read) for drv_efuse_read + drv_se.o(i.drv_se_init) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_dsc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_dsc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_lcdc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_lcdc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_memc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_memc) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_rxbr) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_rxbr) refers to drv_se.o(.data) for .data + drv_se.o(i.drv_se_set_vidc) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_se.o(i.drv_se_set_vidc) refers to drv_se.o(.data) for .data + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) refers to drv_dsi_rx.o(.data) for .data + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) for drv_dsi_rx_get_color_bpp + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to ffltui.o(.text) for __aeabi_ui2f + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fdiv.o(.text) for __aeabi_fdiv + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fmul.o(.text) for __aeabi_fmul + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) for drv_dsi_rx_get_color_pcc + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to fadd.o(.text) for __aeabi_fadd + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to cfrcmple.o(.text) for __aeabi_cfrcmple + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to f2d.o(.text) for __aeabi_f2d + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to dadd.o(.text) for __aeabi_dadd + drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) refers to dfixui.o(.text) for __aeabi_d2uiz + drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_rx.o(i.drv_dsi_rx_get_phy_stopstate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level) refers to drv_dsi_rx.o(.data) for .data + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to drv_phy_common.o(i.drv_phy_test_clear) for drv_phy_test_clear + drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) refers to drv_phy_common.o(i.drv_phy_test_lock) for drv_phy_test_lock + drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_enter) for drv_tx_phy_test_enter + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_phy_common.o(i.drv_phy_test_clear) for drv_phy_test_clear + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_write_code) for drv_tx_phy_test_write_code + drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) refers to drv_dsi_tx.o(i.drv_tx_phy_test_exit) for drv_tx_phy_test_exit + drv_dsi_tx.o(i.drv_dsi_tx_phy_trigger) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) for drv_dsi_tx_phy_status_stopstate + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock) for drv_dsi_tx_phy_status_pll_lock + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) for drv_dsi_tx_phy_status_ulpsactivenot + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot) for drv_dsi_tx_phy_status_ulpsactivenot + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock) for drv_dsi_tx_phy_status_pll_lock + drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit) refers to drv_dsi_tx.o(i.drv_dsi_tx_version) for drv_dsi_tx_version + drv_dsi_tx.o(i.drv_dsi_tx_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dsi_tx.o(i.drv_dsi_tx_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_lcdc.o(i.drv_lcdc_clear_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_lcdc.o(i.drv_lcdc_cmd_start) refers to drv_se.o(i.drv_se_set_lcdc) for drv_se_set_lcdc + drv_lcdc.o(i.drv_lcdc_ctrl_flow) refers to drv_lcdc.o(i.drv_lcdc_function_enable) for drv_lcdc_function_enable + drv_lcdc.o(i.drv_lcdc_part_display_config) refers to drv_lcdc.o(i.drv_lcdc_pixel_value_config) for drv_lcdc_pixel_value_config + drv_lcdc.o(i.drv_lcdc_set_int) refers to drv_lcdc.o(i.drv_lcdc_clear_int) for drv_lcdc_clear_int + drv_lcdc.o(i.drv_lcdc_set_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_lcdc.o(i.drv_lcdc_vid_hw_start) refers to drv_se.o(i.drv_se_set_lcdc) for drv_se_set_lcdc + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_memc.o(i.drv_memc_get_status) for drv_memc_get_status + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_memc.o(i.drv_memc_clear_status) for drv_memc_clear_status + drv_memc.o(i.MEMC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_memc.o(i.drv_memc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_memc.o(i.drv_memc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_memc.o(i.drv_memc_rate_transfer_sel) refers to drv_se.o(i.drv_se_set_memc) for drv_se_set_memc + drv_memc.o(i.drv_memc_set_ltpo_mode) refers to drv_se.o(i.drv_se_set_memc) for drv_se_set_memc + drv_rxbr.o(i.VPRE1_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_rxbr.o(i.VPRE1_IRQn_Handler) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_rxbr.o(i.__NVIC_EnableIRQ) for __NVIC_EnableIRQ + drv_rxbr.o(i.drv_rxbr_enable_irq) refers to drv_rxbr.o(i.__NVIC_DisableIRQ) for __NVIC_DisableIRQ + drv_rxbr.o(i.drv_rxbr_register_irq0_callback) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_register_irq1_callback) refers to drv_rxbr.o(.data) for .data + drv_rxbr.o(i.drv_rxbr_set_cmd_filter) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_rxbr.o(i.drv_rxbr_set_cmd_response) refers to hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) for __ARM_common_switch8 + drv_rxbr.o(i.drv_rxbr_set_color_format) refers to drv_se.o(i.drv_se_set_rxbr) for drv_se_set_rxbr + drv_rxbr.o(i.drv_rxbr_soft_reset) refers to tau_delay.o(i.delayMs) for delayMs + drv_rxbr.o(i.drv_rxbr_sw_reset) refers to drv_crgu.o(i.drv_crgu_set_reset) for drv_crgu_set_reset + drv_rxbr.o(i.drv_rxbr_sw_reset) refers to drv_vidc.o(i.drv_vidc_reset) for drv_vidc_reset + drv_vidc.o(i.VIDC_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_vidc.o(i.VIDC_IRQn_Handler) refers to drv_vidc.o(.data) for .data + drv_vidc.o(i.drv_vidc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_vidc.o(i.drv_vidc_enable_irq) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_vidc.o(i.drv_vidc_register_callback) refers to drv_vidc.o(.data) for .data + drv_vidc.o(i.drv_vidc_set_src_parameter) refers to drv_se.o(i.drv_se_set_vidc) for drv_se_set_vidc + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(i.drv_dma_get_int_source) for drv_dma_get_int_source + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(i.drv_dma_clear_status) for drv_dma_clear_status + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.DMA_IRQn_Handler) refers to drv_dma.o(.data) for .data + drv_dma.o(i.drv_dma_apply_handle) refers to tau_log.o(i.tau_log_printf) for tau_log_printf + drv_dma.o(i.drv_dma_apply_handle) refers to drv_dma.o(.data) for .data + drv_dma.o(i.drv_dma_apply_handle) refers to drv_dma.o(.constdata) for .constdata + drv_dma.o(i.drv_dma_deinit) refers to drv_dma.o(i.drv_dma_disable_int) for drv_dma_disable_int + drv_dma.o(i.drv_dma_disable_int) refers to drv_dma.o(i.drv_dma_int_list_delete) for drv_dma_int_list_delete + drv_dma.o(i.drv_dma_disable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_dma.o(i.drv_dma_enable_int) refers to drv_dma.o(i.drv_dma_int_list_inset) for drv_dma_int_list_inset + drv_dma.o(i.drv_dma_enable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_dma.o(i.drv_dma_init) refers to drv_per_common.o(i.drv_per_set_clock) for drv_per_set_clock + drv_dma.o(i.drv_dma_init) refers to drv_dma.o(i.drv_dma_update_handle_setting) for drv_dma_update_handle_setting + drv_dma.o(i.drv_dma_int_list_delete) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.drv_dma_int_list_inset) refers to drv_dma.o(.bss) for .bss + drv_dma.o(i.drv_dma_update_handle_setting) refers to drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req) for drv_sys_cfg_sel_dma_req + drv_dma.o(i.drv_dma_update_req_by_default) refers to drv_dma.o(i.drv_dma_update_handle_setting) for drv_dma_update_handle_setting + drv_dma.o(i.drv_dma_update_req_by_default) refers to drv_dma.o(.constdata) for .constdata + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_int_trans_handle) for drv_uart_int_trans_handle + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_abort_recv) for drv_uart_abort_recv + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(i.drv_uart_abort_send) for drv_uart_abort_send + drv_uart.o(i.UART_IRQn_Handler) refers to drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) for drv_sys_cfg_clear_pending + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(.constdata) for .constdata + drv_uart.o(i.UART_IRQn_Handler) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(i.drv_uart_reset_rx_fifo) for drv_uart_reset_rx_fifo + drv_uart.o(i.drv_uart_abort_recv) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(i.drv_uart_reset_tx_fifo) for drv_uart_reset_tx_fifo + drv_uart.o(i.drv_uart_abort_send) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(i.drv_uart_enable_clk) for drv_uart_enable_clk + drv_uart.o(i.drv_uart_deinit) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_deinit) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_enable_clk) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + drv_uart.o(i.drv_uart_enable_int) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_enable_int) refers to drv_sys_cfg.o(i.drv_sys_cfg_set_int) for drv_sys_cfg_set_int + drv_uart.o(i.drv_uart_get_def_cfg) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_get_def_cfg) refers to drv_common.o(.data) for g_system_clock + drv_uart.o(i.drv_uart_get_instance) refers to drv_uart.o(.constdata) for .constdata + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_enable_clk) for drv_uart_enable_clk + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_set_baud_rate) for drv_uart_set_baud_rate + drv_uart.o(i.drv_uart_init) refers to drv_uart.o(i.drv_uart_enable_int) for drv_uart_enable_int + drv_uart.o(i.drv_uart_int_trans_handle) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_recv_none_blocking) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_reset_rx_fifo) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_reset_tx_fifo) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(i.drv_uart_config_int) for drv_uart_config_int + drv_uart.o(i.drv_uart_send_none_blocking) refers to drv_uart.o(.bss) for .bss + drv_uart.o(i.drv_uart_set_baud_rate) refers to uidiv.o(.text) for __aeabi_uidivmod + drv_uart.o(i.drv_uart_trans_create_handle) refers to drv_uart.o(i.drv_uart_get_instance) for drv_uart_get_instance + drv_uart.o(i.drv_uart_trans_create_handle) refers to memseta.o(.text) for __aeabi_memclr4 + drv_uart.o(i.drv_uart_trans_create_handle) refers to drv_uart.o(.bss) for .bss + drv_efuse.o(i.drv_efuse_enter_inactive) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + drv_efuse.o(i.drv_efuse_enter_inactive) refers to drv_efuse.o(i.drv_efuse_int_enable) for drv_efuse_int_enable + drv_efuse.o(i.drv_efuse_read) refers to drv_pwr.o(i.drv_pwr_efuse_pd) for drv_pwr_efuse_pd + drv_efuse.o(i.drv_efuse_read) refers to drv_efuse.o(i.drv_efuse_read_req) for drv_efuse_read_req + drv_efuse.o(i.drv_efuse_write) refers to drv_pwr.o(i.drv_pwr_efuse_pd) for drv_pwr_efuse_pd + drv_efuse.o(i.drv_efuse_write) refers to drv_efuse.o(i.drv_efuse_write_req) for drv_efuse_write_req + drv_efuse.o(i.drv_efuse_write_read_req_clear) refers to drv_efuse.o(i.drv_efuse_write_req) for drv_efuse_write_req + drv_efuse.o(i.drv_efuse_write_read_req_clear) refers to drv_efuse.o(i.drv_efuse_read_req) for drv_efuse_read_req + drv_per_common.o(i.drv_per_get_system_clk) refers to drv_crgu.o(i.drv_crgu_get_system_clk) for drv_crgu_get_system_clk + drv_per_common.o(i.drv_per_reset_module) refers to drv_crgu.o(i.drv_crgu_reset_modules) for drv_crgu_reset_modules + drv_per_common.o(i.drv_per_set_clock) refers to drv_crgu.o(i.drv_crgu_enable_clock) for drv_crgu_enable_clock + ceil.o(i.__softfp_ceil) refers (Special) to iusefp.o(.text) for __I$use$fp + ceil.o(i.__softfp_ceil) refers to ceil.o(i.ceil) for ceil + ceil.o(i.ceil) refers (Special) to iusefp.o(.text) for __I$use$fp + ceil.o(i.ceil) refers to dadd.o(.text) for __aeabi_dadd + ceil.o(i.ceil) refers to cdrcmple.o(.text) for __aeabi_cdrcmple + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry8b.o(.ARM.Collect$$$$0000000A) for _main_cpp_init + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload + entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk + idiv.o(.text) refers to uidiv.o(.text) for __aeabi_uidivmod + printfb.o(i.__0fprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0fprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0printf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0printf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0snprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0sprintf$bare) refers to printfb.o(i._sputc) for _sputc + printfb.o(i.__0vfprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vfprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vprintf$bare) refers to tau_log.o(i.fputc) for fputc + printfb.o(i.__0vprintf$bare) refers to stdout.o(.data) for __stdout + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsnprintf$bare) refers to printfb.o(i._snputc) for _snputc + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._printf_core) for _printf_core + printfb.o(i.__0vsprintf$bare) refers to printfb.o(i._sputc) for _sputc + printf0.o(i.__0fprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0fprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0printf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0printf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0snprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0snprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0sprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0sprintf$0) refers to printf0.o(i._sputc) for _sputc + printf0.o(i.__0vfprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vfprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vprintf$0) refers to tau_log.o(i.fputc) for fputc + printf0.o(i.__0vprintf$0) refers to stdout.o(.data) for __stdout + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsnprintf$0) refers to printf0.o(i._snputc) for _snputc + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._printf_core) for _printf_core + printf0.o(i.__0vsprintf$0) refers to printf0.o(i._sputc) for _sputc + printf1.o(i.__0fprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0fprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0printf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0printf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0snprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0snprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0sprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0sprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i.__0vfprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vfprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vprintf$1) refers to tau_log.o(i.fputc) for fputc + printf1.o(i.__0vprintf$1) refers to stdout.o(.data) for __stdout + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsnprintf$1) refers to printf1.o(i._snputc) for _snputc + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._printf_core) for _printf_core + printf1.o(i.__0vsprintf$1) refers to printf1.o(i._sputc) for _sputc + printf1.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf2.o(i.__0fprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0fprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0printf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0printf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0snprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0snprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0sprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0sprintf$2) refers to printf2.o(i._sputc) for _sputc + printf2.o(i.__0vfprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vfprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vprintf$2) refers to tau_log.o(i.fputc) for fputc + printf2.o(i.__0vprintf$2) refers to stdout.o(.data) for __stdout + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsnprintf$2) refers to printf2.o(i._snputc) for _snputc + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._printf_core) for _printf_core + printf2.o(i.__0vsprintf$2) refers to printf2.o(i._sputc) for _sputc + printf3.o(i.__0fprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0fprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0printf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0printf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0snprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0snprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0sprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0sprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i.__0vfprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vfprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vprintf$3) refers to tau_log.o(i.fputc) for fputc + printf3.o(i.__0vprintf$3) refers to stdout.o(.data) for __stdout + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsnprintf$3) refers to printf3.o(i._snputc) for _snputc + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._printf_core) for _printf_core + printf3.o(i.__0vsprintf$3) refers to printf3.o(i._sputc) for _sputc + printf3.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf4.o(i.__0fprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0fprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0printf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0printf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0snprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0snprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0sprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0sprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i.__0vfprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vfprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vprintf$4) refers to tau_log.o(i.fputc) for fputc + printf4.o(i.__0vprintf$4) refers to stdout.o(.data) for __stdout + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsnprintf$4) refers to printf4.o(i._snputc) for _snputc + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._printf_core) for _printf_core + printf4.o(i.__0vsprintf$4) refers to printf4.o(i._sputc) for _sputc + printf4.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf5.o(i.__0fprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0fprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0printf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0printf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0snprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0snprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0sprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0sprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i.__0vfprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vfprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vprintf$5) refers to tau_log.o(i.fputc) for fputc + printf5.o(i.__0vprintf$5) refers to stdout.o(.data) for __stdout + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsnprintf$5) refers to printf5.o(i._snputc) for _snputc + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._printf_core) for _printf_core + printf5.o(i.__0vsprintf$5) refers to printf5.o(i._sputc) for _sputc + printf5.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf6.o(i.__0fprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0fprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0printf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0printf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0snprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0snprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0sprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0sprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i.__0vfprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vfprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vprintf$6) refers to tau_log.o(i.fputc) for fputc + printf6.o(i.__0vprintf$6) refers to stdout.o(.data) for __stdout + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsnprintf$6) refers to printf6.o(i._snputc) for _snputc + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._printf_core) for _printf_core + printf6.o(i.__0vsprintf$6) refers to printf6.o(i._sputc) for _sputc + printf6.o(i._printf_core) refers to printf6.o(i._printf_pre_padding) for _printf_pre_padding + printf6.o(i._printf_core) refers to printf6.o(i._printf_post_padding) for _printf_post_padding + printf6.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printf7.o(i.__0fprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0fprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0printf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0printf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0snprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0snprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0sprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0sprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i.__0vfprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vfprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vprintf$7) refers to tau_log.o(i.fputc) for fputc + printf7.o(i.__0vprintf$7) refers to stdout.o(.data) for __stdout + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsnprintf$7) refers to printf7.o(i._snputc) for _snputc + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._printf_core) for _printf_core + printf7.o(i.__0vsprintf$7) refers to printf7.o(i._sputc) for _sputc + printf7.o(i._printf_core) refers to printf7.o(i._printf_pre_padding) for _printf_pre_padding + printf7.o(i._printf_core) refers to printf7.o(i._printf_post_padding) for _printf_post_padding + printf7.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printf8.o(i.__0fprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0fprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0printf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0printf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0snprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0snprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0sprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0sprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i.__0vfprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vfprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vprintf$8) refers to tau_log.o(i.fputc) for fputc + printf8.o(i.__0vprintf$8) refers to stdout.o(.data) for __stdout + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsnprintf$8) refers to printf8.o(i._snputc) for _snputc + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._printf_core) for _printf_core + printf8.o(i.__0vsprintf$8) refers to printf8.o(i._sputc) for _sputc + printf8.o(i._printf_core) refers to printf8.o(i._printf_pre_padding) for _printf_pre_padding + printf8.o(i._printf_core) refers to printf8.o(i._printf_post_padding) for _printf_post_padding + printf8.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i.__0fprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0fprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0fprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0printf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0printf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0printf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0printf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0snprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0snprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0snprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0sprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0sprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0sprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i.__0vfprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vfprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vfprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vprintf) refers to tau_log.o(i.fputc) for fputc + printfa.o(i.__0vprintf) refers to stdout.o(.data) for __stdout + printfa.o(i.__0vsnprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsnprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsnprintf) refers to printfa.o(i._snputc) for _snputc + printfa.o(i.__0vsprintf) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i.__0vsprintf) refers to printfa.o(i._printf_core) for _printf_core + printfa.o(i.__0vsprintf) refers to printfa.o(i._sputc) for _sputc + printfa.o(i._fp_digits) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._fp_digits) refers to dmul.o(.text) for __aeabi_dmul + printfa.o(i._fp_digits) refers to ddiv.o(.text) for __aeabi_ddiv + printfa.o(i._fp_digits) refers to cdrcmple.o(.text) for __aeabi_cdrcmple + printfa.o(i._fp_digits) refers to dadd.o(.text) for __aeabi_dadd + printfa.o(i._fp_digits) refers to dfixul.o(.text) for __aeabi_d2ulz + printfa.o(i._fp_digits) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_core) refers to printfa.o(i._printf_pre_padding) for _printf_pre_padding + printfa.o(i._printf_core) refers to uldiv.o(.text) for __aeabi_uldivmod + printfa.o(i._printf_core) refers to printfa.o(i._printf_post_padding) for _printf_post_padding + printfa.o(i._printf_core) refers to printfa.o(i._fp_digits) for _fp_digits + printfa.o(i._printf_core) refers to uidiv.o(.text) for __aeabi_uidivmod + printfa.o(i._printf_post_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp + printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp + fadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fadd.o(.text) refers to fepilogue.o(.text) for _float_epilogue + fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fdiv.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fdiv.o(.text) refers to fepilogue.o(.text) for _float_round + fscalb.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl + dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr + dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue + dmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dmul.o(.text) refers to depilogue.o(.text) for _double_epilogue + fflti.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + fflti.o(.text) refers to fepilogue.o(.text) for _float_epilogue + ffltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + ffltui.o(.text) refers to fepilogue.o(.text) for _float_epilogue + dfltui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfltui.o(.text) refers to depilogue.o(.text) for _double_epilogue + ffixui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfixui.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + dfixui.o(.text) refers to llushr.o(.text) for __aeabi_llsr + f2d.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + d2f.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + d2f.o(.text) refers to fepilogue.o(.text) for _float_round + cfcmple.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + cfrcmple.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp + entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 + entry2.o(.ARM.Collect$$$$00002712) refers to startup_armcm0.o(STACK) for __initial_sp + entry2.o(__vectab_stack_and_reset_area) refers to startup_armcm0.o(STACK) for __initial_sp + entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main + entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload + entry9a.o(.ARM.Collect$$$$0000000B) refers to main.o(i.main) for main + entry9b.o(.ARM.Collect$$$$0000000C) refers to main.o(i.main) for main + uldiv.o(.text) refers to llushr.o(.text) for __aeabi_llsr + uldiv.o(.text) refers to llshl.o(.text) for __aeabi_llsl + depilogue.o(.text) refers to depilogue.o(i.__ARM_clz) for __ARM_clz + depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl + depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr + ddiv.o(.text) refers to depilogue.o(.text) for _double_round + dfixul.o(.text) refers to llushr.o(.text) for __aeabi_llsr + dfixul.o(.text) refers to llshl.o(.text) for __aeabi_llsl + init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload + + +============================================================================== + +Removing Unused input sections from the image. + + Removing main.o(.rev16_text), (4 bytes). + Removing main.o(.revsh_text), (4 bytes). + Removing p8p_demo.o(.rev16_text), (4 bytes). + Removing p8p_demo.o(.revsh_text), (4 bytes). + Removing p8p_demo.o(i.Gpio_swire_output), (80 bytes). + Removing p8p_demo.o(i.Panel_CCM), (42 bytes). + Removing p8p_demo.o(i.REG_51_OFF_output), (60 bytes). + Removing p8p_demo.o(i.ap_dcs_set_exit_idle_mode), (104 bytes). + Removing p8p_demo.o(i.soft_te_timer_cb), (28 bytes). + Removing p8p_demo.o(i.soft_te_timer_init), (40 bytes). + Removing board.o(.rev16_text), (4 bytes). + Removing board.o(.revsh_text), (4 bytes). + Removing startup_armcm0.o(HEAP), (3072 bytes). + Removing hal_dsi_rx_ctrl.o(.rev16_text), (4 bytes). + Removing hal_dsi_rx_ctrl.o(.revsh_text), (4 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_long_cmd), (220 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_ack_short_cmd), (28 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_line), (604 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_draw_mode_init), (320 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_enable_test_pattern), (256 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_force_video_crtl), (12 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_cap_pixel_color), (10 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_compressen_en), (8 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_callback), (66 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_register_write_cmd_entry), (10 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_release_handle), (40 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_restart), (68 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_ack), (176 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_auto_hw_filter), (28 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cap_pixel_pos), (10 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_check_crc), (24 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_cus_esc_clk), (32 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_hw_cmd_filter), (44 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_log_level), (8 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data), (240 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_pixel_data_ex), (392 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rx_clk), (72 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_rxbr_clk), (56 bytes). + Removing hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_input_frame_rate), (10 bytes). + Removing hal_dsi_rx_ctrl.o(i.swap_uint16_t), (10 bytes). + Removing hal_dsi_tx_ctrl.o(.rev16_text), (4 bytes). + Removing hal_dsi_tx_ctrl.o(.revsh_text), (4 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_cmd_mode), (120 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_draw_flick), (244 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_frame), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_get_disp_line), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_overwrite_enable), (22 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_partial_disp_enable), (70 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_read_cmd), (128 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_release_handle), (32 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_bcs), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_ccm), (8 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_cus_sync_line), (36 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_dect), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_edge_enhance), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_endianness), (12 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_escape_clock_div), (52 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_fc), (60 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_vpg), (28 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_vporch_bta_opera), (68 bytes). + Removing hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_req_update), (16 bytes). + Removing hal_gpio.o(.rev16_text), (4 bytes). + Removing hal_gpio.o(.revsh_text), (4 bytes). + Removing hal_gpio.o(i.hal_gpio_get_input_data), (18 bytes). + Removing hal_gpio.o(i.hal_gpio_get_int_type), (20 bytes). + Removing hal_gpio.o(i.hal_gpio_get_pull_state), (40 bytes). + Removing hal_gpio.o(i.hal_gpio_set_driving_strength), (44 bytes). + Removing hal_gpio.o(i.hal_gpio_set_high_impedance), (32 bytes). + Removing hal_gpio.o(i.hal_gpio_set_pull_state), (72 bytes). + Removing hal_gpio.o(i.hal_gpio_set_schmitt_trigger), (52 bytes). + Removing hal_gpio.o(i.hal_gpio_set_slew_rate), (52 bytes). + Removing hal_swire.o(.rev16_text), (4 bytes). + Removing hal_swire.o(.revsh_text), (4 bytes). + Removing hal_swire.o(i.hal_swire_register_callback), (22 bytes). + Removing hal_swire.o(i.hal_swire_set_waveform), (92 bytes). + Removing hal_system.o(.rev16_text), (4 bytes). + Removing hal_system.o(.revsh_text), (4 bytes). + Removing hal_system.o(i.hal_system_clear_debug_state), (10 bytes). + Removing hal_system.o(i.hal_system_disable_systick), (8 bytes). + Removing hal_system.o(i.hal_system_enable_systick), (8 bytes). + Removing hal_system.o(i.hal_system_get_debug_state), (8 bytes). + Removing hal_system.o(i.hal_system_get_tick), (8 bytes). + Removing hal_system.o(i.hal_system_idle_mode), (8 bytes). + Removing hal_system.o(i.hal_system_register_systick_cb), (8 bytes). + Removing hal_system.o(i.hal_system_reset_chip), (10 bytes). + Removing hal_timer.o(.rev16_text), (4 bytes). + Removing hal_timer.o(.revsh_text), (4 bytes). + Removing hal_timer.o(i.hal_timer_get_status), (8 bytes). + Removing hal_timer.o(i.hal_timer_start), (48 bytes). + Removing hal_timer.o(i.hal_timer_start_ex), (42 bytes). + Removing hal_timer.o(i.hal_timer_stop), (40 bytes). + Removing hal_pwr.o(.rev16_text), (4 bytes). + Removing hal_pwr.o(.revsh_text), (4 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_close), (10 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_ldo_en), (46 bytes). + Removing hal_pwr.o(i.hal_pwr_elvcc_vol_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_get_reset_flag), (66 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo13s_en), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo13s_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo18s_en), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_ldo18s_set), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_set_pvd), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_set_vcc_enable), (8 bytes). + Removing hal_pwr.o(i.hal_pwr_sw_tp18_en), (8 bytes). + Removing tau_delay.o(.rev16_text), (4 bytes). + Removing tau_delay.o(.revsh_text), (4 bytes). + Removing tau_log.o(.rev16_text), (4 bytes). + Removing tau_log.o(.revsh_text), (4 bytes). + Removing tau_log.o(i.fgetc), (72 bytes). + Removing hal_uart.o(.rev16_text), (4 bytes). + Removing hal_uart.o(.revsh_text), (4 bytes). + Removing hal_uart.o(i.hal_uart0_rx_dma_cb), (20 bytes). + Removing hal_uart.o(i.hal_uart0_tx_dma_cb), (36 bytes). + Removing hal_uart.o(i.hal_uart1_rx_dma_cb), (20 bytes). + Removing hal_uart.o(i.hal_uart1_tx_dma_cb), (36 bytes). + Removing hal_uart.o(i.hal_uart_deinit), (48 bytes). + Removing hal_uart.o(i.hal_uart_dma_path_close), (92 bytes). + Removing hal_uart.o(i.hal_uart_dma_recv), (276 bytes). + Removing hal_uart.o(i.hal_uart_dma_send), (280 bytes). + Removing hal_uart.o(i.hal_uart_recv_blocking), (28 bytes). + Removing hal_uart.o(i.hal_uart_recv_none_blocking), (28 bytes). + Removing hal_uart.o(i.hal_uart_send_none_blocking), (28 bytes). + Removing hal_internal_vsync.o(.rev16_text), (4 bytes). + Removing hal_internal_vsync.o(.revsh_text), (4 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_cmd_mode_rcv_te), (2 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_register_rx_callback), (28 bytes). + Removing hal_internal_vsync.o(i.hal_internal_sync_set_fb_setting_manual), (28 bytes). + Removing hal_internal_vsync.o(i.hal_internal_vsync_set_sync_line), (60 bytes). + Removing hal_internal_vsync.o(i.hal_internal_vsync_toggle_input_frame_rate), (134 bytes). + Removing hal_internal_vsync.o(.data), (4 bytes). + Removing hal_internal_dcs.o(.rev16_text), (4 bytes). + Removing hal_internal_dcs.o(.revsh_text), (4 bytes). + Removing hal_internal_dcs.o(i.hal_intl_dcs_register_write_cmd_entry), (12 bytes). + Removing hal_internal_dcs.o(i.hal_intl_dcs_set_dcs_direct_mode), (44 bytes). + Removing hal_internal_fb.o(.rev16_text), (4 bytes). + Removing hal_internal_fb.o(.revsh_text), (4 bytes). + Removing hal_internal_fb.o(i.hal_intl_fb_set_fb_info_manual), (480 bytes). + Removing hal_internal_fb.o(.conststring), (152 bytes). + Removing hal_internal_svs.o(.rev16_text), (4 bytes). + Removing hal_internal_svs.o(.revsh_text), (4 bytes). + Removing hal_internal_svs.o(i.hal_intl_svs_set_input_frate), (112 bytes). + Removing hal_internal_svs.o(i.hal_intl_svs_set_sync_coef), (12 bytes). + Removing drv_common.o(.rev16_text), (4 bytes). + Removing drv_common.o(.revsh_text), (4 bytes). + Removing drv_common.o(i.drv_common_disable_systick), (20 bytes). + Removing drv_common.o(i.drv_common_enable_systick), (88 bytes). + Removing drv_common.o(i.drv_common_get_tick), (12 bytes). + Removing drv_common.o(i.drv_common_idle_mode), (40 bytes). + Removing drv_common.o(i.drv_common_systick_register_cb), (12 bytes). + Removing drv_crgu.o(.rev16_text), (4 bytes). + Removing drv_crgu.o(.revsh_text), (4 bytes). + Removing drv_crgu.o(i.drv_crgu_clear_all_reset_flags), (12 bytes). + Removing drv_crgu.o(i.drv_crgu_clear_reset_flag), (20 bytes). + Removing drv_crgu.o(i.drv_crgu_get_all_reset_flag), (12 bytes). + Removing drv_crgu.o(i.drv_crgu_get_reset_flag), (24 bytes). + Removing drv_crgu.o(i.drv_crgu_get_system_clk), (104 bytes). + Removing drv_crgu.o(i.drv_crgu_reset_chip), (24 bytes). + Removing drv_crgu.o(i.drv_crgu_set_clock_src), (16 bytes). + Removing drv_dsc_dec.o(.rev16_text), (4 bytes). + Removing drv_dsc_dec.o(.revsh_text), (4 bytes). + Removing drv_gpio.o(.rev16_text), (4 bytes). + Removing drv_gpio.o(.revsh_text), (4 bytes). + Removing drv_gpio.o(i.drv_gpio_get_attribute), (16 bytes). + Removing drv_gpio.o(i.drv_gpio_get_input_data), (24 bytes). + Removing drv_gpio.o(i.drv_gpio_set_attribute), (28 bytes). + Removing drv_pwr.o(.rev16_text), (4 bytes). + Removing drv_pwr.o(.revsh_text), (4 bytes). + Removing drv_pwr.o(i.drv_pwr_10bit_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_analog_pwm_en), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_charge_pump_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_close_iov18_tp18), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_dsc_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_elvcc_pwm_en), (124 bytes). + Removing drv_pwr.o(i.drv_pwr_enter_sleep_mode), (152 bytes). + Removing drv_pwr.o(i.drv_pwr_exit_sleep_mode_ex), (40 bytes). + Removing drv_pwr.o(i.drv_pwr_fb_pd), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_get_wakeflag), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_get_write_lock_st), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_hf_frm_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_10M_clock), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_mode_clock_sel), (60 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_mode_sel), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_hv_ldo_voltage_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo11d_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo13s_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo13s_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo15_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo18s_en), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_ldo18s_set), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_ltpo_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_osc32k_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_osc80m_trim), (36 bytes). + Removing drv_pwr.o(i.drv_pwr_p3k_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_por_mode_flag), (32 bytes). + Removing drv_pwr.o(i.drv_pwr_power_in), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_power_ready_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_power_sel), (44 bytes). + Removing drv_pwr.o(i.drv_pwr_pwm_output_pwm_led), (56 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_driver_current_Big_step), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_driver_current_small_step), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_electric_current), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_pwmled_open_drain), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_ram_pd_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_read_boot_chipst), (12 bytes). + Removing drv_pwr.o(i.drv_pwr_read_chipcfg), (12 bytes). + Removing drv_pwr.o(i.drv_pwr_rgbr_state_get), (16 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ap_rst_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ldo11_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_ldo15_mode), (48 bytes). + Removing drv_pwr.o(i.drv_pwr_set_pvd), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_set_pvd_mode), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_set_system_clk), (32 bytes). + Removing drv_pwr.o(i.drv_pwr_sw_tp18_en), (52 bytes). + Removing drv_pwr.o(i.drv_pwr_wakeflag_get), (16 bytes). + Removing drv_swire.o(.rev16_text), (4 bytes). + Removing drv_swire.o(.revsh_text), (4 bytes). + Removing drv_sys_cfg.o(.rev16_text), (4 bytes). + Removing drv_sys_cfg.o(.revsh_text), (4 bytes). + Removing drv_sys_cfg.o(i.drv_sys_cfg_sel_dma_req), (128 bytes). + Removing drv_timer.o(.rev16_text), (4 bytes). + Removing drv_timer.o(.revsh_text), (4 bytes). + Removing drv_timer.o(i.drv_timer_get_status), (38 bytes). + Removing drv_timer.o(i.drv_timer_register_callback), (20 bytes). + Removing dcs_packet_fifo.o(.rev16_text), (4 bytes). + Removing dcs_packet_fifo.o(.revsh_text), (4 bytes). + Removing dcs_packet_fifo.o(i.dcs_packet_get_fifo_size), (16 bytes). + Removing drv_se.o(.rev16_text), (4 bytes). + Removing drv_se.o(.revsh_text), (4 bytes). + Removing drv_dsi_rx.o(.rev16_text), (4 bytes). + Removing drv_dsi_rx.o(.revsh_text), (4 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_force_video_crtl), (28 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_lpdt_fifo_status), (16 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_phy_stopstate), (68 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_get_version), (12 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_pg_cfg), (24 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_drv_log_level), (12 bytes). + Removing drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_pg_cfg), (48 bytes). + Removing drv_dsi_tx.o(.rev16_text), (4 bytes). + Removing drv_dsi_tx.o(.revsh_text), (4 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_command_get_payload), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_force_interrupt), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_get_phy_status), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_forcepll), (16 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_start), (24 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_status_pll_lock), (16 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ulpsactivenot), (68 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_trigger), (92 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_enter), (296 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_phy_ulps_exit), (228 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_sdf_3d), (32 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_set_bta), (28 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_set_vpg), (100 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_version), (12 bytes). + Removing drv_dsi_tx.o(i.drv_dsi_tx_vid_shadow), (20 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_clear), (16 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_lock), (32 bytes). + Removing drv_dsi_tx.o(i.drv_tx_phy_test_read), (16 bytes). + Removing drv_lcdc.o(.rev16_text), (4 bytes). + Removing drv_lcdc.o(.revsh_text), (4 bytes). + Removing drv_lcdc.o(i.drv_lcdc_clear_irq), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_dpisignal_output_ctrl), (44 bytes). + Removing drv_lcdc.o(i.drv_lcdc_fixed_frame_output), (56 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_dpbuf_num), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_dpi_status), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_frame_clk_count), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_int_en_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_int_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_line_status), (12 bytes). + Removing drv_lcdc.o(i.drv_lcdc_get_rgb2pen_subpixel), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_part_display_config), (52 bytes). + Removing drv_lcdc.o(i.drv_lcdc_pixel_value_config), (32 bytes). + Removing drv_lcdc.o(i.drv_lcdc_rd_st_line_config), (28 bytes). + Removing drv_lcdc.o(i.drv_lcdc_software_reset), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_update_shadow_reg), (16 bytes). + Removing drv_lcdc.o(i.drv_lcdc_vid_sw_start), (56 bytes). + Removing drv_memc.o(.rev16_text), (4 bytes). + Removing drv_memc.o(.revsh_text), (4 bytes). + Removing drv_memc.o(i.drv_memc_set_db_frm_time), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_db_int_frame), (36 bytes). + Removing drv_memc.o(i.drv_memc_set_double_buffer_reverse), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_fb_pri), (44 bytes). + Removing drv_memc.o(i.drv_memc_set_fb_remaining_line_trigger), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_inten), (28 bytes). + Removing drv_memc.o(i.drv_memc_set_read_trigger_line), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_te_ind), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_tear_hwclr), (24 bytes). + Removing drv_memc.o(i.drv_memc_set_vidc_fb_arb), (20 bytes). + Removing drv_memc.o(i.drv_memc_set_write_trigger_line), (24 bytes). + Removing drv_rxbr.o(.rev16_text), (4 bytes). + Removing drv_rxbr.o(.revsh_text), (4 bytes). + Removing drv_rxbr.o(i.drv_rxbr_clr_swp_cnt), (16 bytes). + Removing drv_rxbr.o(i.drv_rxbr_dsc_flush), (24 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_col_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_cur_hline_rcv_cnt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_frame_data_interval), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_hline_dcat), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_ipi_vsync_interval), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_page_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_pix_fmt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_get_swpxl_cnt), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_hline_rcv0_cfg), (20 bytes). + Removing drv_rxbr.o(i.drv_rxbr_register_irq0_callback), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_ack_pkt_md), (28 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_cmd_filter), (320 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_cmd_response), (324 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_col_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_compress), (32 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_data_catch_hline), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_page_addr), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_swpxl_data), (12 bytes). + Removing drv_rxbr.o(i.drv_rxbr_set_tmpdith_bp), (28 bytes). + Removing drv_rxbr.o(i.drv_rxbr_soft_reset), (32 bytes). + Removing drv_rxbr.o(i.drv_rxbr_sw_reset), (164 bytes). + Removing drv_rxbr.o(i.drv_rxbr_swpxl_clr), (32 bytes). + Removing drv_vidc.o(.rev16_text), (4 bytes). + Removing drv_vidc.o(.revsh_text), (4 bytes). + Removing drv_vidc.o(i.drv_vidc_clear_status0), (20 bytes). + Removing drv_vidc.o(i.drv_vidc_debug_cap_pixel), (28 bytes). + Removing drv_vidc.o(i.drv_vidc_debug_signal_frame), (36 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status0), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status1), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_get_status2), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_dsc_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_frmst_latency), (20 bytes). + Removing drv_vidc.o(i.drv_vidc_set_inff_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_set_irq_line), (24 bytes). + Removing drv_vidc.o(i.drv_vidc_set_module_enable), (28 bytes). + Removing drv_vidc.o(i.drv_vidc_set_outff_thresh), (12 bytes). + Removing drv_vidc.o(i.drv_vidc_update_src_format), (20 bytes). + Removing drv_dma.o(.rev16_text), (4 bytes). + Removing drv_dma.o(.revsh_text), (4 bytes). + Removing drv_dma.o(i.drv_dma_apply_handle), (304 bytes). + Removing drv_dma.o(i.drv_dma_deinit), (52 bytes). + Removing drv_dma.o(i.drv_dma_disable), (20 bytes). + Removing drv_dma.o(i.drv_dma_disable_int), (40 bytes). + Removing drv_dma.o(i.drv_dma_enable), (36 bytes). + Removing drv_dma.o(i.drv_dma_enable_int), (68 bytes). + Removing drv_dma.o(i.drv_dma_get_remaining_trans_num), (20 bytes). + Removing drv_dma.o(i.drv_dma_get_status), (20 bytes). + Removing drv_dma.o(i.drv_dma_init), (22 bytes). + Removing drv_dma.o(i.drv_dma_int_list_delete), (88 bytes). + Removing drv_dma.o(i.drv_dma_int_list_inset), (48 bytes). + Removing drv_dma.o(i.drv_dma_register_callback), (4 bytes). + Removing drv_dma.o(i.drv_dma_reset), (36 bytes). + Removing drv_dma.o(i.drv_dma_set_bitwide), (56 bytes). + Removing drv_dma.o(i.drv_dma_set_burst), (20 bytes). + Removing drv_dma.o(i.drv_dma_set_circle_mode), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_dir), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_increment), (72 bytes). + Removing drv_dma.o(i.drv_dma_set_mem_trans_info), (40 bytes). + Removing drv_dma.o(i.drv_dma_set_mem_trans_offset), (24 bytes). + Removing drv_dma.o(i.drv_dma_set_per_address), (20 bytes). + Removing drv_dma.o(i.drv_dma_set_priority), (32 bytes). + Removing drv_dma.o(i.drv_dma_set_tran_int_cnt), (28 bytes). + Removing drv_dma.o(i.drv_dma_update_handle_setting), (148 bytes). + Removing drv_dma.o(i.drv_dma_update_req_by_default), (40 bytes). + Removing drv_dma.o(.constdata), (136 bytes). + Removing drv_uart.o(.rev16_text), (4 bytes). + Removing drv_uart.o(.revsh_text), (4 bytes). + Removing drv_uart.o(i.drv_uart_deinit), (60 bytes). + Removing drv_uart.o(i.drv_uart_get_def_cfg), (72 bytes). + Removing drv_uart.o(i.drv_uart_recv_blocking), (48 bytes). + Removing drv_uart.o(i.drv_uart_recv_none_blocking), (60 bytes). + Removing drv_uart.o(i.drv_uart_send_none_blocking), (60 bytes). + Removing drv_efuse.o(.rev16_text), (4 bytes). + Removing drv_efuse.o(.revsh_text), (4 bytes). + Removing drv_efuse.o(i.drv_efuse_crc_cal), (128 bytes). + Removing drv_efuse.o(i.drv_efuse_get_default_config), (26 bytes). + Removing drv_efuse.o(i.drv_efuse_int_disable), (12 bytes). + Removing drv_efuse.o(i.drv_efuse_write), (56 bytes). + Removing drv_efuse.o(i.drv_efuse_write_read_req_clear), (22 bytes). + Removing drv_efuse.o(i.drv_efuse_write_req), (22 bytes). + Removing drv_phy_common.o(.rev16_text), (4 bytes). + Removing drv_phy_common.o(.revsh_text), (4 bytes). + Removing drv_per_common.o(.rev16_text), (4 bytes). + Removing drv_per_common.o(.revsh_text), (4 bytes). + Removing drv_per_common.o(i.drv_per_get_system_clk), (8 bytes). + Removing drv_per_common.o(i.drv_per_reset_module), (14 bytes). + Removing drv_per_common.o(i.drv_per_set_clock), (14 bytes). + Removing fflti.o(.text), (22 bytes). + +380 unused section(s) (total 18518 bytes) removed from the image. + +============================================================================== + +Image Symbol Table + + Local Symbols + + Symbol Name Value Ov Type Size Object(Section) + + ../clib/../cmprslib/zerorunl2.c 0x00000000 Number 0 __dczerorl2.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 idiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE + ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE + ../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE + ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE + ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE + ../fplib/microlib/d2f.c 0x00000000 Number 0 d2f.o ABSOLUTE + ../fplib/microlib/f2d.c 0x00000000 Number 0 f2d.o ABSOLUTE + ../fplib/microlib/fpadd.c 0x00000000 Number 0 fadd.o ABSOLUTE + ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixui.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixui.o ABSOLUTE + ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE + ../fplib/microlib/fpflt.c 0x00000000 Number 0 fflti.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 fmul.o ABSOLUTE + ../fplib/microlib/fpscalb.c 0x00000000 Number 0 fscalb.o ABSOLUTE + ../mathlib/ceil.c 0x00000000 Number 0 ceil.o ABSOLUTE + ..\..\..\src\common\tau_delay.c 0x00000000 Number 0 tau_delay.o ABSOLUTE + ..\..\..\src\common\tau_log.c 0x00000000 Number 0 tau_log.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_common.c 0x00000000 Number 0 drv_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_crgu.c 0x00000000 Number 0 drv_crgu.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dma.c 0x00000000 Number 0 drv_dma.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsc_dec.c 0x00000000 Number 0 drv_dsc_dec.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsi_rx.c 0x00000000 Number 0 drv_dsi_rx.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_dsi_tx.c 0x00000000 Number 0 drv_dsi_tx.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_efuse.c 0x00000000 Number 0 drv_efuse.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_gpio.c 0x00000000 Number 0 drv_gpio.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_lcdc.c 0x00000000 Number 0 drv_lcdc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_memc.c 0x00000000 Number 0 drv_memc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_per_common.c 0x00000000 Number 0 drv_per_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_phy_common.c 0x00000000 Number 0 drv_phy_common.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_pwr.c 0x00000000 Number 0 drv_pwr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_rxbr.c 0x00000000 Number 0 drv_rxbr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_swire.c 0x00000000 Number 0 drv_swire.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_sys_cfg.c 0x00000000 Number 0 drv_sys_cfg.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_timer.c 0x00000000 Number 0 drv_timer.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_uart.c 0x00000000 Number 0 drv_uart.o ABSOLUTE + ..\..\..\src\driver\cuckoo\drv\drv_vidc.c 0x00000000 Number 0 drv_vidc.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_dsi_rx_ctrl.c 0x00000000 Number 0 hal_dsi_rx_ctrl.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_dsi_tx_ctrl.c 0x00000000 Number 0 hal_dsi_tx_ctrl.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_swire.c 0x00000000 Number 0 hal_swire.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_system.c 0x00000000 Number 0 hal_system.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_timer.c 0x00000000 Number 0 hal_timer.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\hal_uart.c 0x00000000 Number 0 hal_uart.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\dcs_packet_fifo.c 0x00000000 Number 0 dcs_packet_fifo.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_dcs.c 0x00000000 Number 0 hal_internal_dcs.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_fb.c 0x00000000 Number 0 hal_internal_fb.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_svs.c 0x00000000 Number 0 hal_internal_svs.o ABSOLUTE + ..\..\..\src\driver\cuckoo\hal\internal\hal_internal_vsync.c 0x00000000 Number 0 hal_internal_vsync.o ABSOLUTE + ..\..\..\src\driver\cuckoo\src\drv_se.c 0x00000000 Number 0 drv_se.o ABSOLUTE + ..\..\src\app\P8P\p8p_demo.c 0x00000000 Number 0 p8p_demo.o ABSOLUTE + ..\..\src\app\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\..\src\board\board.c 0x00000000 Number 0 board.o ABSOLUTE + ..\..\src\board\startup\startup_ARMCM0.s 0x00000000 Number 0 startup_armcm0.o ABSOLUTE + ..\\..\\..\\src\\common\\tau_delay.c 0x00000000 Number 0 tau_delay.o ABSOLUTE + ..\\..\\..\\src\\common\\tau_log.c 0x00000000 Number 0 tau_log.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_common.c 0x00000000 Number 0 drv_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_crgu.c 0x00000000 Number 0 drv_crgu.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dma.c 0x00000000 Number 0 drv_dma.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsc_dec.c 0x00000000 Number 0 drv_dsc_dec.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsi_rx.c 0x00000000 Number 0 drv_dsi_rx.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_dsi_tx.c 0x00000000 Number 0 drv_dsi_tx.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_efuse.c 0x00000000 Number 0 drv_efuse.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_gpio.c 0x00000000 Number 0 drv_gpio.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_lcdc.c 0x00000000 Number 0 drv_lcdc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_memc.c 0x00000000 Number 0 drv_memc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_per_common.c 0x00000000 Number 0 drv_per_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_phy_common.c 0x00000000 Number 0 drv_phy_common.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_pwr.c 0x00000000 Number 0 drv_pwr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_rxbr.c 0x00000000 Number 0 drv_rxbr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_swire.c 0x00000000 Number 0 drv_swire.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_sys_cfg.c 0x00000000 Number 0 drv_sys_cfg.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_timer.c 0x00000000 Number 0 drv_timer.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_uart.c 0x00000000 Number 0 drv_uart.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\drv\\drv_vidc.c 0x00000000 Number 0 drv_vidc.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_dsi_rx_ctrl.c 0x00000000 Number 0 hal_dsi_rx_ctrl.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_dsi_tx_ctrl.c 0x00000000 Number 0 hal_dsi_tx_ctrl.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_gpio.c 0x00000000 Number 0 hal_gpio.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_pwr.c 0x00000000 Number 0 hal_pwr.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_swire.c 0x00000000 Number 0 hal_swire.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_system.c 0x00000000 Number 0 hal_system.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_timer.c 0x00000000 Number 0 hal_timer.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\hal_uart.c 0x00000000 Number 0 hal_uart.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\dcs_packet_fifo.c 0x00000000 Number 0 dcs_packet_fifo.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_dcs.c 0x00000000 Number 0 hal_internal_dcs.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_fb.c 0x00000000 Number 0 hal_internal_fb.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_svs.c 0x00000000 Number 0 hal_internal_svs.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\hal\\internal\\hal_internal_vsync.c 0x00000000 Number 0 hal_internal_vsync.o ABSOLUTE + ..\\..\\..\\src\\driver\\cuckoo\\src\\drv_se.c 0x00000000 Number 0 drv_se.o ABSOLUTE + ..\\..\\src\\app\\P8P\\p8p_demo.c 0x00000000 Number 0 p8p_demo.o ABSOLUTE + ..\\..\\src\\app\\main.c 0x00000000 Number 0 main.o ABSOLUTE + ..\\..\\src\\board\\board.c 0x00000000 Number 0 board.o ABSOLUTE + cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE + cfcmple.s 0x00000000 Number 0 cfcmple.o ABSOLUTE + cfrcmple.s 0x00000000 Number 0 cfrcmple.o ABSOLUTE + dc.s 0x00000000 Number 0 dc.o ABSOLUTE + handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE + init.s 0x00000000 Number 0 init.o ABSOLUTE + RESET 0x00010000 Section 192 startup_armcm0.o(RESET) + .ARM.Collect$$$$00000000 0x000100c0 Section 0 entry.o(.ARM.Collect$$$$00000000) + .ARM.Collect$$$$00000001 0x000100c0 Section 4 entry2.o(.ARM.Collect$$$$00000001) + .ARM.Collect$$$$00000004 0x000100c4 Section 4 entry5.o(.ARM.Collect$$$$00000004) + .ARM.Collect$$$$00000008 0x000100c8 Section 0 entry7b.o(.ARM.Collect$$$$00000008) + .ARM.Collect$$$$0000000A 0x000100c8 Section 0 entry8b.o(.ARM.Collect$$$$0000000A) + .ARM.Collect$$$$0000000B 0x000100c8 Section 8 entry9a.o(.ARM.Collect$$$$0000000B) + .ARM.Collect$$$$0000000D 0x000100d0 Section 0 entry10a.o(.ARM.Collect$$$$0000000D) + .ARM.Collect$$$$0000000F 0x000100d0 Section 0 entry11a.o(.ARM.Collect$$$$0000000F) + .ARM.Collect$$$$00002712 0x000100d0 Section 4 entry2.o(.ARM.Collect$$$$00002712) + __lit__00000000 0x000100d0 Data 4 entry2.o(.ARM.Collect$$$$00002712) + .text 0x000100d4 Section 120 startup_armcm0.o(.text) + .text 0x0001014c Section 0 uidiv.o(.text) + .text 0x00010178 Section 0 idiv.o(.text) + .text 0x000101a0 Section 0 memcpya.o(.text) + .text 0x000101c4 Section 0 memseta.o(.text) + .text 0x000101e8 Section 0 strlen.o(.text) + .text 0x000101f6 Section 0 memcmp.o(.text) + .text 0x00010210 Section 0 fadd.o(.text) + .text 0x000102c2 Section 0 fmul.o(.text) + .text 0x0001033c Section 0 fdiv.o(.text) + .text 0x000103b8 Section 0 fscalb.o(.text) + .text 0x000103d0 Section 0 dadd.o(.text) + .text 0x00010534 Section 0 dmul.o(.text) + .text 0x00010604 Section 0 ffltui.o(.text) + .text 0x00010614 Section 0 dfltui.o(.text) + .text 0x00010630 Section 0 ffixui.o(.text) + .text 0x00010658 Section 0 dfixui.o(.text) + .text 0x00010694 Section 0 f2d.o(.text) + .text 0x000106bc Section 0 d2f.o(.text) + .text 0x000106f4 Section 20 cfcmple.o(.text) + .text 0x00010708 Section 20 cfrcmple.o(.text) + .text 0x0001071c Section 0 uldiv.o(.text) + .text 0x0001077c Section 0 llshl.o(.text) + .text 0x0001079c Section 0 llushr.o(.text) + .text 0x000107be Section 0 llsshr.o(.text) + .text 0x000107e4 Section 0 iusefp.o(.text) + .text 0x000107e4 Section 0 fepilogue.o(.text) + .text 0x00010866 Section 0 depilogue.o(.text) + .text 0x00010924 Section 0 ddiv.o(.text) + .text 0x00010a14 Section 0 dfixul.o(.text) + .text 0x00010a54 Section 40 cdrcmple.o(.text) + .text 0x00010a7c Section 36 init.o(.text) + .text 0x00010aa0 Section 0 __dczerorl2.o(.text) + i.AP_NRESET_IRQn_Handler 0x00010af8 Section 0 drv_gpio.o(i.AP_NRESET_IRQn_Handler) + i.DMA_IRQn_Handler 0x00010b14 Section 0 drv_dma.o(i.DMA_IRQn_Handler) + i.EXTI_INT0_IRQn_Handler 0x00010b70 Section 0 drv_gpio.o(i.EXTI_INT0_IRQn_Handler) + i.EXTI_INT1_IRQn_Handler 0x00010b7a Section 0 drv_gpio.o(i.EXTI_INT1_IRQn_Handler) + i.EXTI_INT2_IRQn_Handler 0x00010b84 Section 0 drv_gpio.o(i.EXTI_INT2_IRQn_Handler) + i.EXTI_INT3_IRQn_Handler 0x00010b8e Section 0 drv_gpio.o(i.EXTI_INT3_IRQn_Handler) + i.EXTI_INT4_IRQn_Handler 0x00010b98 Section 0 drv_gpio.o(i.EXTI_INT4_IRQn_Handler) + i.EXTI_INT5_IRQn_Handler 0x00010ba2 Section 0 drv_gpio.o(i.EXTI_INT5_IRQn_Handler) + i.EXTI_INT6_IRQn_Handler 0x00010bac Section 0 drv_gpio.o(i.EXTI_INT6_IRQn_Handler) + i.EXTI_INT7_IRQn_Handler 0x00010bb6 Section 0 drv_gpio.o(i.EXTI_INT7_IRQn_Handler) + i.HardFault_Handler 0x00010bc0 Section 0 drv_common.o(i.HardFault_Handler) + i.LCDC_IRQn_Handler 0x00010c08 Section 0 hal_internal_vsync.o(i.LCDC_IRQn_Handler) + i.MEMC_IRQn_Handler 0x00010d08 Section 0 drv_memc.o(i.MEMC_IRQn_Handler) + i.MIPI_TX_IRQn_Handler 0x00010da4 Section 0 drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) + i.SWIRE_IRQn_Handler 0x00010e5c Section 0 drv_swire.o(i.SWIRE_IRQn_Handler) + i.SysTick_Handler 0x00010e8c Section 0 drv_common.o(i.SysTick_Handler) + i.TIMER0_IRQn_Handler 0x00010ea4 Section 0 drv_timer.o(i.TIMER0_IRQn_Handler) + i.TIMER1_IRQn_Handler 0x00010eae Section 0 drv_timer.o(i.TIMER1_IRQn_Handler) + i.TIMER2_IRQn_Handler 0x00010eb8 Section 0 drv_timer.o(i.TIMER2_IRQn_Handler) + i.TIMER3_IRQn_Handler 0x00010ec2 Section 0 drv_timer.o(i.TIMER3_IRQn_Handler) + i.VIDC_IRQn_Handler 0x00010ecc Section 0 drv_vidc.o(i.VIDC_IRQn_Handler) + i.VPRE1_IRQn_Handler 0x00010ee8 Section 0 drv_rxbr.o(i.VPRE1_IRQn_Handler) + i.VPRE_IRQn_Handler 0x00010f04 Section 0 hal_internal_dcs.o(i.VPRE_IRQn_Handler) + i.__0printf 0x00010f70 Section 0 printfa.o(i.__0printf) + i.__0vsprintf 0x00010f90 Section 0 printfa.o(i.__0vsprintf) + i.__ARM_clz 0x00010fb4 Section 0 depilogue.o(i.__ARM_clz) + i.__ARM_common_switch8 0x00010fe2 Section 0 hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) + i.__scatterload_null 0x00010ffc Section 2 handlers.o(i.__scatterload_null) + .ARM.__at_0x11000 0x00011000 Section 28 drv_common.o(.ARM.__at_0x11000) + .ARM.__at_0x1101C 0x0001101c Section 16 tau_log.o(.ARM.__at_0x1101C) + .ARM.__at_0x1102C 0x0001102c Section 22 hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) + i.MIPI_RX_IRQn_Handler 0x00011044 Section 0 drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) + i.UART_IRQn_Handler 0x000113a8 Section 0 drv_uart.o(i.UART_IRQn_Handler) + i.__NVIC_DisableIRQ 0x00011528 Section 0 drv_rxbr.o(i.__NVIC_DisableIRQ) + __NVIC_DisableIRQ 0x00011529 Thumb Code 26 drv_rxbr.o(i.__NVIC_DisableIRQ) + i.__NVIC_EnableIRQ 0x00011548 Section 0 drv_rxbr.o(i.__NVIC_EnableIRQ) + __NVIC_EnableIRQ 0x00011549 Thumb Code 18 drv_rxbr.o(i.__NVIC_EnableIRQ) + i.__scatterload_copy 0x00011560 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_zeroinit 0x0001156e Section 14 handlers.o(i.__scatterload_zeroinit) + i._fp_digits 0x0001157c Section 0 printfa.o(i._fp_digits) + _fp_digits 0x0001157d Thumb Code 344 printfa.o(i._fp_digits) + i._printf_core 0x000116f0 Section 0 printfa.o(i._printf_core) + _printf_core 0x000116f1 Thumb Code 1754 printfa.o(i._printf_core) + i._printf_post_padding 0x00011ddc Section 0 printfa.o(i._printf_post_padding) + _printf_post_padding 0x00011ddd Thumb Code 32 printfa.o(i._printf_post_padding) + i._printf_pre_padding 0x00011dfc Section 0 printfa.o(i._printf_pre_padding) + _printf_pre_padding 0x00011dfd Thumb Code 44 printfa.o(i._printf_pre_padding) + i._sputc 0x00011e28 Section 0 printfa.o(i._sputc) + _sputc 0x00011e29 Thumb Code 10 printfa.o(i._sputc) + i.ap_dcs_read 0x00011e34 Section 0 p8p_demo.o(i.ap_dcs_read) + ap_dcs_read 0x00011e35 Thumb Code 280 p8p_demo.o(i.ap_dcs_read) + i.ap_dcs_set_backlight 0x00011f78 Section 0 p8p_demo.o(i.ap_dcs_set_backlight) + ap_dcs_set_backlight 0x00011f79 Thumb Code 130 p8p_demo.o(i.ap_dcs_set_backlight) + i.ap_dcs_set_display_off 0x0001200c Section 0 p8p_demo.o(i.ap_dcs_set_display_off) + ap_dcs_set_display_off 0x0001200d Thumb Code 34 p8p_demo.o(i.ap_dcs_set_display_off) + i.ap_dcs_set_display_on 0x00012054 Section 0 p8p_demo.o(i.ap_dcs_set_display_on) + ap_dcs_set_display_on 0x00012055 Thumb Code 90 p8p_demo.o(i.ap_dcs_set_display_on) + i.ap_dcs_set_enter_sleep_mode 0x000120f4 Section 0 p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) + ap_dcs_set_enter_sleep_mode 0x000120f5 Thumb Code 104 p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) + i.ap_dcs_set_exit_sleep_mode 0x00012188 Section 0 p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) + ap_dcs_set_exit_sleep_mode 0x00012189 Thumb Code 28 p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) + i.ap_dcs_set_frame_change 0x000121c8 Section 0 p8p_demo.o(i.ap_dcs_set_frame_change) + ap_dcs_set_frame_change 0x000121c9 Thumb Code 46 p8p_demo.o(i.ap_dcs_set_frame_change) + i.ap_rstn_pull_down_cb 0x000121fc Section 0 p8p_demo.o(i.ap_rstn_pull_down_cb) + ap_rstn_pull_down_cb 0x000121fd Thumb Code 38 p8p_demo.o(i.ap_rstn_pull_down_cb) + i.ap_rstn_pull_high_cb 0x00012254 Section 0 p8p_demo.o(i.ap_rstn_pull_high_cb) + ap_rstn_pull_high_cb 0x00012255 Thumb Code 22 p8p_demo.o(i.ap_rstn_pull_high_cb) + i.ap_set_FPS_53 0x00012270 Section 0 p8p_demo.o(i.ap_set_FPS_53) + ap_set_FPS_53 0x00012271 Thumb Code 74 p8p_demo.o(i.ap_set_FPS_53) + i.app_display_init 0x000122ba Section 0 p8p_demo.o(i.app_display_init) + i.app_gpio_init 0x000122e8 Section 0 p8p_demo.o(i.app_gpio_init) + i.app_init_panel 0x00012304 Section 0 p8p_demo.o(i.app_init_panel) + app_init_panel 0x00012305 Thumb Code 42 p8p_demo.o(i.app_init_panel) + i.app_mipi_rx_init 0x00012338 Section 0 p8p_demo.o(i.app_mipi_rx_init) + app_mipi_rx_init 0x00012339 Thumb Code 232 p8p_demo.o(i.app_mipi_rx_init) + i.app_mipi_tx_init 0x00012458 Section 0 p8p_demo.o(i.app_mipi_tx_init) + app_mipi_tx_init 0x00012459 Thumb Code 214 p8p_demo.o(i.app_mipi_tx_init) + i.app_mipi_tx_start 0x00012558 Section 0 p8p_demo.o(i.app_mipi_tx_start) + app_mipi_tx_start 0x00012559 Thumb Code 112 p8p_demo.o(i.app_mipi_tx_start) + i.app_system_process 0x000125fc Section 0 p8p_demo.o(i.app_system_process) + app_system_process 0x000125fd Thumb Code 60 p8p_demo.o(i.app_system_process) + i.app_system_resume 0x00012668 Section 0 p8p_demo.o(i.app_system_resume) + app_system_resume 0x00012669 Thumb Code 30 p8p_demo.o(i.app_system_resume) + i.app_system_suspend 0x000126ac Section 0 p8p_demo.o(i.app_system_suspend) + app_system_suspend 0x000126ad Thumb Code 202 p8p_demo.o(i.app_system_suspend) + i.app_tx_panel_reset 0x0001283c Section 0 p8p_demo.o(i.app_tx_panel_reset) + app_tx_panel_reset 0x0001283d Thumb Code 46 p8p_demo.o(i.app_tx_panel_reset) + i.board_Init 0x0001286c Section 0 board.o(i.board_Init) + i.ceil 0x00012884 Section 0 ceil.o(i.ceil) + i.check_mipi_rx_tx_video_info 0x0001294c Section 0 hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) + check_mipi_rx_tx_video_info 0x0001294d Thumb Code 44 hal_internal_vsync.o(i.check_mipi_rx_tx_video_info) + i.check_pkt_buf_rev 0x00012978 Section 0 hal_internal_dcs.o(i.check_pkt_buf_rev) + check_pkt_buf_rev 0x00012979 Thumb Code 84 hal_internal_dcs.o(i.check_pkt_buf_rev) + i.dcs_packet_fifo_alloc 0x00012a00 Section 0 dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) + i.dcs_packet_fifo_init 0x00012a58 Section 0 dcs_packet_fifo.o(i.dcs_packet_fifo_init) + i.dcs_packet_free_fifo_header 0x00012a70 Section 0 dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) + i.dcs_packet_get_fifo_header 0x00012ab4 Section 0 dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) + i.delayMs 0x00012ad8 Section 0 tau_delay.o(i.delayMs) + i.delayUs 0x00012af0 Section 0 tau_delay.o(i.delayUs) + i.drv_common_system_init 0x00012b1c Section 0 drv_common.o(i.drv_common_system_init) + i.drv_crgu_enable_clock 0x00012b24 Section 0 drv_crgu.o(i.drv_crgu_enable_clock) + i.drv_crgu_get_rxbr_clk 0x00012b60 Section 0 drv_crgu.o(i.drv_crgu_get_rxbr_clk) + i.drv_crgu_reset_modules 0x00012bc8 Section 0 drv_crgu.o(i.drv_crgu_reset_modules) + i.drv_crgu_set_ahb_clk 0x00012bd8 Section 0 drv_crgu.o(i.drv_crgu_set_ahb_clk) + i.drv_crgu_set_clock_div 0x00012c00 Section 0 drv_crgu.o(i.drv_crgu_set_clock_div) + i.drv_crgu_set_dpi_clk 0x00012c10 Section 0 drv_crgu.o(i.drv_crgu_set_dpi_clk) + i.drv_crgu_set_dsc_clk 0x00012c4c Section 0 drv_crgu.o(i.drv_crgu_set_dsc_clk) + i.drv_crgu_set_fb_clk 0x00012c84 Section 0 drv_crgu.o(i.drv_crgu_set_fb_clk) + i.drv_crgu_set_lcdc_clk 0x00012cac Section 0 drv_crgu.o(i.drv_crgu_set_lcdc_clk) + i.drv_crgu_set_reset 0x00012cd4 Section 0 drv_crgu.o(i.drv_crgu_set_reset) + i.drv_crgu_set_rxbr_clk 0x00012cec Section 0 drv_crgu.o(i.drv_crgu_set_rxbr_clk) + i.drv_crgu_set_vidc_clk 0x00012d14 Section 0 drv_crgu.o(i.drv_crgu_set_vidc_clk) + i.drv_dma_clear_status 0x00012d3c Section 0 drv_dma.o(i.drv_dma_clear_status) + i.drv_dma_get_int_source 0x00012d54 Section 0 drv_dma.o(i.drv_dma_get_int_source) + drv_dma_get_int_source 0x00012d55 Thumb Code 16 drv_dma.o(i.drv_dma_get_int_source) + i.drv_dsc_dec_disable 0x00012d68 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_disable) + i.drv_dsc_dec_enable 0x00012d84 Section 0 drv_dsc_dec.o(i.drv_dsc_dec_enable) + i.drv_dsc_dec_get_nslc 0x00012dbc Section 0 drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) + i.drv_dsc_dec_set_irqen 0x00012ddc Section 0 drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) + i.drv_dsi_rx_calc_ipi_tx_delay 0x00012df8 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) + i.drv_dsi_rx_enable_irq 0x00012f04 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) + i.drv_dsi_rx_get_color_bpp 0x00012f44 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) + drv_dsi_rx_get_color_bpp 0x00012f45 Thumb Code 62 drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp) + i.drv_dsi_rx_get_color_pcc 0x00012f94 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) + drv_dsi_rx_get_color_pcc 0x00012f95 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc) + i.drv_dsi_rx_get_compression_en 0x00012fb0 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) + i.drv_dsi_rx_get_ddi_crc_en 0x00012fc0 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) + i.drv_dsi_rx_get_max_ret_size 0x00012fd0 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) + i.drv_dsi_rx_power_up 0x00012fdc Section 0 drv_dsi_rx.o(i.drv_dsi_rx_power_up) + i.drv_dsi_rx_set_check_crc 0x00012ff4 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) + i.drv_dsi_rx_set_ctrl_cfg 0x00013010 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) + i.drv_dsi_rx_set_ddi_cfg 0x00013034 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) + i.drv_dsi_rx_set_ddi_crc_en 0x00013044 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) + i.drv_dsi_rx_set_inten 0x00013060 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_inten) + i.drv_dsi_rx_set_ipi_cfg 0x0001306c Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) + i.drv_dsi_rx_set_ipi_ycbcr_frmt 0x0001307c Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) + i.drv_dsi_rx_set_lane_swap 0x00013098 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) + i.drv_dsi_rx_set_resp_cnt 0x000130ac Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) + i.drv_dsi_rx_set_tear_resp_en 0x000130d0 Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) + i.drv_dsi_rx_set_up_phy 0x000130ec Section 0 drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) + i.drv_dsi_rx_shut_down 0x000131ec Section 0 drv_dsi_rx.o(i.drv_dsi_rx_shut_down) + i.drv_dsi_tx_command_header 0x00013204 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_header) + i.drv_dsi_tx_command_mode_cfg 0x0001321c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) + i.drv_dsi_tx_command_put_payload 0x00013274 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) + i.drv_dsi_tx_config_eotp 0x00013280 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) + i.drv_dsi_tx_config_int 0x000132a0 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_config_int) + i.drv_dsi_tx_dpi_lpcmd_time 0x000132ac Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) + i.drv_dsi_tx_dpi_mode 0x000132bc Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) + i.drv_dsi_tx_dpi_polarity 0x000132cc Section 0 drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) + i.drv_dsi_tx_edpi_cmd_size 0x000132f0 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) + i.drv_dsi_tx_get_cmd_status 0x000132fc Section 0 drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) + i.drv_dsi_tx_mode 0x00013308 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_mode) + i.drv_dsi_tx_phy_clock_lane_auto_lp 0x00013314 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) + i.drv_dsi_tx_phy_clock_lane_req_hs 0x00013330 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) + i.drv_dsi_tx_phy_lane_mode 0x00013350 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) + i.drv_dsi_tx_phy_status_ready 0x00013360 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) + i.drv_dsi_tx_phy_status_stopstate 0x000133c8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) + i.drv_dsi_tx_phy_test_setup 0x0001340c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) + i.drv_dsi_tx_phy_time_cfg 0x0001355c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) + i.drv_dsi_tx_powerup 0x0001357c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_powerup) + i.drv_dsi_tx_response_mode 0x00013588 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_response_mode) + i.drv_dsi_tx_set_bta_ack 0x000135ac Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) + i.drv_dsi_tx_set_esc_div 0x000135c8 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) + i.drv_dsi_tx_set_int 0x000135dc Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_int) + i.drv_dsi_tx_set_time_out_div 0x0001361c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) + i.drv_dsi_tx_set_video_chunk 0x00013634 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) + i.drv_dsi_tx_set_video_timing 0x00013648 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) + i.drv_dsi_tx_shutdown 0x0001366c Section 0 drv_dsi_tx.o(i.drv_dsi_tx_shutdown) + i.drv_dsi_tx_timeout_cfg 0x00013678 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) + i.drv_dsi_tx_video_mode_cfg 0x000136a4 Section 0 drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) + i.drv_efuse_enter_inactive 0x0001378c Section 0 drv_efuse.o(i.drv_efuse_enter_inactive) + i.drv_efuse_int_enable 0x000137c2 Section 0 drv_efuse.o(i.drv_efuse_int_enable) + i.drv_efuse_read 0x000137ce Section 0 drv_efuse.o(i.drv_efuse_read) + i.drv_efuse_read_req 0x00013808 Section 0 drv_efuse.o(i.drv_efuse_read_req) + i.drv_gpio_handle_int 0x00013820 Section 0 drv_gpio.o(i.drv_gpio_handle_int) + drv_gpio_handle_int 0x00013821 Thumb Code 30 drv_gpio.o(i.drv_gpio_handle_int) + i.drv_gpio_register_ap_reset_callback 0x00013844 Section 0 drv_gpio.o(i.drv_gpio_register_ap_reset_callback) + i.drv_gpio_register_callback 0x00013850 Section 0 drv_gpio.o(i.drv_gpio_register_callback) + i.drv_gpio_set_int 0x00013864 Section 0 drv_gpio.o(i.drv_gpio_set_int) + i.drv_gpio_set_ioe 0x000138a8 Section 0 drv_gpio.o(i.drv_gpio_set_ioe) + i.drv_gpio_set_mode 0x000138c8 Section 0 drv_gpio.o(i.drv_gpio_set_mode) + i.drv_gpio_set_output_data 0x000138dc Section 0 hal_gpio.o(i.drv_gpio_set_output_data) + drv_gpio_set_output_data 0x000138dd Thumb Code 26 hal_gpio.o(i.drv_gpio_set_output_data) + i.drv_lcdc_bcsa_config 0x000138fc Section 0 drv_lcdc.o(i.drv_lcdc_bcsa_config) + i.drv_lcdc_cfg_int_frame 0x00013924 Section 0 drv_lcdc.o(i.drv_lcdc_cfg_int_frame) + i.drv_lcdc_clear_int 0x00013950 Section 0 drv_lcdc.o(i.drv_lcdc_clear_int) + drv_lcdc_clear_int 0x00013951 Thumb Code 20 drv_lcdc.o(i.drv_lcdc_clear_int) + i.drv_lcdc_cmd_start 0x00013968 Section 0 drv_lcdc.o(i.drv_lcdc_cmd_start) + i.drv_lcdc_config_acc_command_mode 0x0001399c Section 0 drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) + i.drv_lcdc_config_int 0x000139b0 Section 0 drv_lcdc.o(i.drv_lcdc_config_int) + i.drv_lcdc_config_int_single 0x000139e8 Section 0 drv_lcdc.o(i.drv_lcdc_config_int_single) + i.drv_lcdc_config_overwrite_rgb 0x00013a10 Section 0 drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) + i.drv_lcdc_config_src_parameter 0x00013a28 Section 0 drv_lcdc.o(i.drv_lcdc_config_src_parameter) + i.drv_lcdc_crop_hact 0x00013a78 Section 0 drv_lcdc.o(i.drv_lcdc_crop_hact) + i.drv_lcdc_ctrl_flow 0x00013a88 Section 0 drv_lcdc.o(i.drv_lcdc_ctrl_flow) + i.drv_lcdc_dith_config 0x00013ac0 Section 0 drv_lcdc.o(i.drv_lcdc_dith_config) + i.drv_lcdc_edge_dect_config 0x00013af0 Section 0 drv_lcdc.o(i.drv_lcdc_edge_dect_config) + i.drv_lcdc_edge_enh_config 0x00013b2c Section 0 drv_lcdc.o(i.drv_lcdc_edge_enh_config) + i.drv_lcdc_enable_shadow_reg 0x00013b90 Section 0 drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) + i.drv_lcdc_endianness_config 0x00013bb4 Section 0 drv_lcdc.o(i.drv_lcdc_endianness_config) + i.drv_lcdc_fc_config 0x00013bd0 Section 0 drv_lcdc.o(i.drv_lcdc_fc_config) + i.drv_lcdc_fldc_config 0x00013bf0 Section 0 drv_lcdc.o(i.drv_lcdc_fldc_config) + i.drv_lcdc_function_disable 0x00013c14 Section 0 drv_lcdc.o(i.drv_lcdc_function_disable) + i.drv_lcdc_function_enable 0x00013c38 Section 0 drv_lcdc.o(i.drv_lcdc_function_enable) + i.drv_lcdc_set_int 0x00013c5c Section 0 drv_lcdc.o(i.drv_lcdc_set_int) + i.drv_lcdc_set_prefetch 0x00013c98 Section 0 drv_lcdc.o(i.drv_lcdc_set_prefetch) + i.drv_lcdc_set_tear_line 0x00013cb4 Section 0 drv_lcdc.o(i.drv_lcdc_set_tear_line) + i.drv_lcdc_stop_display 0x00013cd0 Section 0 drv_lcdc.o(i.drv_lcdc_stop_display) + i.drv_lcdc_vid_hw_start 0x00013ce0 Section 0 drv_lcdc.o(i.drv_lcdc_vid_hw_start) + i.drv_lcdc_vintp_mode_config 0x00013d1c Section 0 drv_lcdc.o(i.drv_lcdc_vintp_mode_config) + i.drv_memc_clear_status 0x00013d34 Section 0 drv_memc.o(i.drv_memc_clear_status) + i.drv_memc_enable_irq 0x00013d48 Section 0 drv_memc.o(i.drv_memc_enable_irq) + i.drv_memc_gen_a_tear_signal 0x00013d88 Section 0 drv_memc.o(i.drv_memc_gen_a_tear_signal) + i.drv_memc_get_status 0x00013d98 Section 0 drv_memc.o(i.drv_memc_get_status) + i.drv_memc_get_tear_mode 0x00013db0 Section 0 drv_memc.o(i.drv_memc_get_tear_mode) + i.drv_memc_rate_transfer_sel 0x00013dc0 Section 0 drv_memc.o(i.drv_memc_rate_transfer_sel) + i.drv_memc_sel_vsync 0x00013ddc Section 0 drv_memc.o(i.drv_memc_sel_vsync) + i.drv_memc_set_active_height 0x00013df0 Section 0 drv_memc.o(i.drv_memc_set_active_height) + i.drv_memc_set_circ_mode_enable 0x00013e08 Section 0 drv_memc.o(i.drv_memc_set_circ_mode_enable) + i.drv_memc_set_data_mode 0x00013e24 Section 0 drv_memc.o(i.drv_memc_set_data_mode) + i.drv_memc_set_double_buffer 0x00013e38 Section 0 drv_memc.o(i.drv_memc_set_double_buffer) + i.drv_memc_set_frame_drop_select 0x00013e50 Section 0 drv_memc.o(i.drv_memc_set_frame_drop_select) + i.drv_memc_set_fs_en_conditions 0x00013e6c Section 0 drv_memc.o(i.drv_memc_set_fs_en_conditions) + i.drv_memc_set_lcdc_st_conditions 0x00013e84 Section 0 drv_memc.o(i.drv_memc_set_lcdc_st_conditions) + i.drv_memc_set_ltpo_mode 0x00013ea0 Section 0 drv_memc.o(i.drv_memc_set_ltpo_mode) + i.drv_memc_set_ltpo_pu_thres 0x00013ec0 Section 0 drv_memc.o(i.drv_memc_set_ltpo_pu_thres) + i.drv_memc_set_tear_mode 0x00013ed8 Section 0 drv_memc.o(i.drv_memc_set_tear_mode) + i.drv_memc_set_tear_waveform 0x00013eec Section 0 drv_memc.o(i.drv_memc_set_tear_waveform) + i.drv_memc_set_vidc_sync_cnt 0x00013f18 Section 0 drv_memc.o(i.drv_memc_set_vidc_sync_cnt) + i.drv_phy_test_clear 0x00013f2c Section 0 drv_phy_common.o(i.drv_phy_test_clear) + i.drv_phy_test_lock 0x00013f3c Section 0 drv_phy_common.o(i.drv_phy_test_lock) + i.drv_pwr_efuse_pd 0x00013f54 Section 0 drv_pwr.o(i.drv_pwr_efuse_pd) + i.drv_pwr_enter_deep_sleep_mode 0x00013f84 Section 0 drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) + i.drv_pwr_enter_sleep_mode_ex 0x00013fd0 Section 0 drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) + i.drv_pwr_enter_stop_sleep_mode 0x00014004 Section 0 drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) + i.drv_pwr_exit_sleep_mode 0x0001409c Section 0 drv_pwr.o(i.drv_pwr_exit_sleep_mode) + i.drv_pwr_get_power_ready_st 0x000140c4 Section 0 drv_pwr.o(i.drv_pwr_get_power_ready_st) + i.drv_pwr_set_breath_screen_power_sel 0x000140d4 Section 0 drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) + i.drv_pwr_set_digit_power_sel 0x000140fc Section 0 drv_pwr.o(i.drv_pwr_set_digit_power_sel) + i.drv_pwr_set_pll_clk 0x00014124 Section 0 drv_pwr.o(i.drv_pwr_set_pll_clk) + i.drv_pwr_set_wakeup_type 0x00014158 Section 0 drv_pwr.o(i.drv_pwr_set_wakeup_type) + i.drv_pwr_write_lock 0x00014184 Section 0 drv_pwr.o(i.drv_pwr_write_lock) + i.drv_rxbr_clear_pkt_buffer 0x000141a4 Section 0 drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) + i.drv_rxbr_clear_status0 0x000141b4 Section 0 drv_rxbr.o(i.drv_rxbr_clear_status0) + i.drv_rxbr_enable_irq 0x000141c0 Section 0 drv_rxbr.o(i.drv_rxbr_enable_irq) + i.drv_rxbr_frame_drop_cfg 0x0001421c Section 0 drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) + i.drv_rxbr_get_int_source 0x00014238 Section 0 hal_internal_vsync.o(i.drv_rxbr_get_int_source) + drv_rxbr_get_int_source 0x00014239 Thumb Code 20 hal_internal_vsync.o(i.drv_rxbr_get_int_source) + i.drv_rxbr_get_status0 0x00014250 Section 0 hal_internal_dcs.o(i.drv_rxbr_get_status0) + drv_rxbr_get_status0 0x00014251 Thumb Code 20 hal_internal_dcs.o(i.drv_rxbr_get_status0) + i.drv_rxbr_hline_rcv1_cfg 0x00014268 Section 0 drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) + i.drv_rxbr_hline_rcv_cfg 0x0001427c Section 0 drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) + i.drv_rxbr_register_irq1_callback 0x0001428c Section 0 drv_rxbr.o(i.drv_rxbr_register_irq1_callback) + i.drv_rxbr_set_ack_pkt_header 0x00014298 Section 0 drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) + i.drv_rxbr_set_color_format 0x000142b0 Section 0 drv_rxbr.o(i.drv_rxbr_set_color_format) + i.drv_rxbr_set_filter_regs 0x000142cc Section 0 drv_rxbr.o(i.drv_rxbr_set_filter_regs) + i.drv_rxbr_set_inten 0x000142f0 Section 0 drv_rxbr.o(i.drv_rxbr_set_inten) + i.drv_rxbr_set_ltpo_drop_th 0x0001430c Section 0 drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) + i.drv_rxbr_set_usr_cfg 0x00014324 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_cfg) + i.drv_rxbr_set_usr_col 0x00014364 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_col) + i.drv_rxbr_set_usr_row 0x00014374 Section 0 drv_rxbr.o(i.drv_rxbr_set_usr_row) + i.drv_se_init 0x00014384 Section 0 drv_se.o(i.drv_se_init) + i.drv_se_set_dsc 0x000143fc Section 0 drv_se.o(i.drv_se_set_dsc) + i.drv_se_set_lcdc 0x000144d0 Section 0 drv_se.o(i.drv_se_set_lcdc) + i.drv_se_set_memc 0x00014558 Section 0 drv_se.o(i.drv_se_set_memc) + i.drv_se_set_rxbr 0x000145c0 Section 0 drv_se.o(i.drv_se_set_rxbr) + i.drv_se_set_vidc 0x00014690 Section 0 drv_se.o(i.drv_se_set_vidc) + i.drv_se_start_rx 0x0001473c Section 0 drv_se.o(i.drv_se_start_rx) + i.drv_swire_enable 0x00014750 Section 0 drv_swire.o(i.drv_swire_enable) + i.drv_swire_get_pulse_count 0x0001476c Section 0 drv_swire.o(i.drv_swire_get_pulse_count) + i.drv_swire_register_callback 0x00014778 Section 0 drv_swire.o(i.drv_swire_register_callback) + i.drv_swire_set_bit_time 0x00014784 Section 0 drv_swire.o(i.drv_swire_set_bit_time) + i.drv_swire_set_int 0x0001479c Section 0 drv_swire.o(i.drv_swire_set_int) + i.drv_swire_set_power_down 0x000147e4 Section 0 drv_swire.o(i.drv_swire_set_power_down) + i.drv_swire_set_pulse_count 0x00014800 Section 0 drv_swire.o(i.drv_swire_set_pulse_count) + i.drv_swire_set_trig_mode 0x0001480c Section 0 drv_swire.o(i.drv_swire_set_trig_mode) + i.drv_sys_cfg_clear_all_int 0x00014828 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) + i.drv_sys_cfg_clear_pending 0x00014834 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) + i.drv_sys_cfg_sel_ap_rst_trig 0x0001485c Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) + i.drv_sys_cfg_sel_gpio_group 0x00014880 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) + i.drv_sys_cfg_sel_int_trig 0x000148a4 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) + i.drv_sys_cfg_sel_swire_timer 0x000148c8 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) + i.drv_sys_cfg_set_int 0x000148e0 Section 0 drv_sys_cfg.o(i.drv_sys_cfg_set_int) + i.drv_timer_clear_status_flags 0x00014904 Section 0 drv_timer.o(i.drv_timer_clear_status_flags) + drv_timer_clear_status_flags 0x00014905 Thumb Code 26 drv_timer.o(i.drv_timer_clear_status_flags) + i.drv_timer_enable 0x0001491e Section 0 drv_timer.o(i.drv_timer_enable) + i.drv_timer_get_instance 0x00014940 Section 0 drv_timer.o(i.drv_timer_get_instance) + i.drv_timer_handle_interrupt 0x00014950 Section 0 drv_timer.o(i.drv_timer_handle_interrupt) + drv_timer_handle_interrupt 0x00014951 Thumb Code 54 drv_timer.o(i.drv_timer_handle_interrupt) + i.drv_timer_set_compare_val 0x0001498c Section 0 drv_timer.o(i.drv_timer_set_compare_val) + i.drv_timer_set_int 0x000149cc Section 0 drv_timer.o(i.drv_timer_set_int) + i.drv_timer_set_prescaler 0x00014a14 Section 0 drv_timer.o(i.drv_timer_set_prescaler) + i.drv_timer_set_repeat 0x00014a3c Section 0 drv_timer.o(i.drv_timer_set_repeat) + i.drv_tx_phy_test_enter 0x00014a4c Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_enter) + i.drv_tx_phy_test_exit 0x00014a6c Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_exit) + i.drv_tx_phy_test_write_code 0x00014a8c Section 0 drv_dsi_tx.o(i.drv_tx_phy_test_write_code) + i.drv_uart_abort_recv 0x00014ab4 Section 0 drv_uart.o(i.drv_uart_abort_recv) + i.drv_uart_abort_send 0x00014ae8 Section 0 drv_uart.o(i.drv_uart_abort_send) + i.drv_uart_config_int 0x00014b1c Section 0 drv_uart.o(i.drv_uart_config_int) + i.drv_uart_enable_clk 0x00014b30 Section 0 drv_uart.o(i.drv_uart_enable_clk) + drv_uart_enable_clk 0x00014b31 Thumb Code 24 drv_uart.o(i.drv_uart_enable_clk) + i.drv_uart_enable_int 0x00014b48 Section 0 drv_uart.o(i.drv_uart_enable_int) + i.drv_uart_get_instance 0x00014ba4 Section 0 drv_uart.o(i.drv_uart_get_instance) + i.drv_uart_init 0x00014bcc Section 0 drv_uart.o(i.drv_uart_init) + i.drv_uart_int_trans_handle 0x00014c9c Section 0 drv_uart.o(i.drv_uart_int_trans_handle) + drv_uart_int_trans_handle 0x00014c9d Thumb Code 54 drv_uart.o(i.drv_uart_int_trans_handle) + i.drv_uart_reset_rx_fifo 0x00014cd8 Section 0 drv_uart.o(i.drv_uart_reset_rx_fifo) + i.drv_uart_reset_tx_fifo 0x00014cf4 Section 0 drv_uart.o(i.drv_uart_reset_tx_fifo) + i.drv_uart_send_blocking 0x00014d10 Section 0 drv_uart.o(i.drv_uart_send_blocking) + i.drv_uart_set_baud_rate 0x00014d2a Section 0 drv_uart.o(i.drv_uart_set_baud_rate) + i.drv_uart_trans_create_handle 0x00014d80 Section 0 drv_uart.o(i.drv_uart_trans_create_handle) + i.drv_vidc_clear_irq 0x00014dcc Section 0 drv_vidc.o(i.drv_vidc_clear_irq) + i.drv_vidc_enable 0x00014ddc Section 0 drv_vidc.o(i.drv_vidc_enable) + i.drv_vidc_enable_irq 0x00014dfc Section 0 drv_vidc.o(i.drv_vidc_enable_irq) + i.drv_vidc_get_int_source 0x00014e3c Section 0 drv_vidc.o(i.drv_vidc_get_int_source) + i.drv_vidc_get_irq_status 0x00014e68 Section 0 drv_vidc.o(i.drv_vidc_get_irq_status) + i.drv_vidc_init_module_enable 0x00014e80 Section 0 drv_vidc.o(i.drv_vidc_init_module_enable) + i.drv_vidc_register_callback 0x00014eac Section 0 drv_vidc.o(i.drv_vidc_register_callback) + i.drv_vidc_reset 0x00014eb8 Section 0 drv_vidc.o(i.drv_vidc_reset) + i.drv_vidc_set_circ_mode_enable 0x00014ec4 Section 0 drv_vidc.o(i.drv_vidc_set_circ_mode_enable) + i.drv_vidc_set_dither_config 0x00014ee0 Section 0 drv_vidc.o(i.drv_vidc_set_dither_config) + i.drv_vidc_set_dst_parameter 0x00014f18 Section 0 drv_vidc.o(i.drv_vidc_set_dst_parameter) + i.drv_vidc_set_honly_hcoef0 0x00014f74 Section 0 drv_vidc.o(i.drv_vidc_set_honly_hcoef0) + i.drv_vidc_set_honly_hinitb 0x00014f80 Section 0 drv_vidc.o(i.drv_vidc_set_honly_hinitb) + i.drv_vidc_set_honly_hinitr 0x00014fac Section 0 drv_vidc.o(i.drv_vidc_set_honly_hinitr) + i.drv_vidc_set_irqen 0x00014fdc Section 0 drv_vidc.o(i.drv_vidc_set_irqen) + i.drv_vidc_set_mirror 0x00014ff8 Section 0 drv_vidc.o(i.drv_vidc_set_mirror) + i.drv_vidc_set_pentile_swap 0x0001500c Section 0 drv_vidc.o(i.drv_vidc_set_pentile_swap) + i.drv_vidc_set_pu_ctrl 0x00015028 Section 0 drv_vidc.o(i.drv_vidc_set_pu_ctrl) + i.drv_vidc_set_rotation 0x00015034 Section 0 drv_vidc.o(i.drv_vidc_set_rotation) + i.drv_vidc_set_scld_hcoef0 0x0001504c Section 0 drv_vidc.o(i.drv_vidc_set_scld_hcoef0) + i.drv_vidc_set_scld_hcoef1 0x00015058 Section 0 drv_vidc.o(i.drv_vidc_set_scld_hcoef1) + i.drv_vidc_set_scld_step 0x00015064 Section 0 drv_vidc.o(i.drv_vidc_set_scld_step) + i.drv_vidc_set_scld_vcoef0 0x00015078 Section 0 drv_vidc.o(i.drv_vidc_set_scld_vcoef0) + i.drv_vidc_set_scld_vcoef1 0x00015084 Section 0 drv_vidc.o(i.drv_vidc_set_scld_vcoef1) + i.drv_vidc_set_src_parameter 0x00015090 Section 0 drv_vidc.o(i.drv_vidc_set_src_parameter) + i.drv_vidc_set_vintp_config 0x000150b0 Section 0 drv_vidc.o(i.drv_vidc_set_vintp_config) + i.fputc 0x000150e8 Section 0 tau_log.o(i.fputc) + i.google_p8p_demo 0x0001511c Section 0 p8p_demo.o(i.google_p8p_demo) + i.ha_intl_fb_check_pu_size 0x0001517c Section 0 hal_internal_fb.o(i.ha_intl_fb_check_pu_size) + ha_intl_fb_check_pu_size 0x0001517d Thumb Code 58 hal_internal_fb.o(i.ha_intl_fb_check_pu_size) + i.hal_dsi_rx_ctrl_create_handle 0x000151bc Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) + i.hal_dsi_rx_ctrl_dcs_async_handler 0x000151fc Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) + i.hal_dsi_rx_ctrl_deinit 0x0001523c Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) + i.hal_dsi_rx_ctrl_get_max_ret_size 0x000152d0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) + i.hal_dsi_rx_ctrl_init 0x000152f0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) + i.hal_dsi_rx_ctrl_init_clk 0x0001539c Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) + hal_dsi_rx_ctrl_init_clk 0x0001539d Thumb Code 222 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk) + i.hal_dsi_rx_ctrl_init_dsi_rx 0x0001549c Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) + hal_dsi_rx_ctrl_init_dsi_rx 0x0001549d Thumb Code 232 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx) + i.hal_dsi_rx_ctrl_init_memc 0x000155a4 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) + hal_dsi_rx_ctrl_init_memc 0x000155a5 Thumb Code 294 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc) + i.hal_dsi_rx_ctrl_init_rxbr 0x000156d0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) + hal_dsi_rx_ctrl_init_rxbr 0x000156d1 Thumb Code 314 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr) + i.hal_dsi_rx_ctrl_init_vidc 0x00015818 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) + hal_dsi_rx_ctrl_init_vidc 0x00015819 Thumb Code 624 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc) + i.hal_dsi_rx_ctrl_pre_init_pps 0x00015a98 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) + i.hal_dsi_rx_ctrl_send_ack_cmd 0x00015ad0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) + i.hal_dsi_rx_ctrl_set_ipi_cfg 0x00015bc0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) + hal_dsi_rx_ctrl_set_ipi_cfg 0x00015bc1 Thumb Code 48 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg) + i.hal_dsi_rx_ctrl_start 0x00015bf0 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) + i.hal_dsi_rx_ctrl_stop 0x00015c20 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) + i.hal_dsi_rx_ctrl_toggle_resolution 0x00015c50 Section 0 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) + i.hal_dsi_tx_cmd_mode_cal_timing 0x00015c70 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) + hal_dsi_tx_cmd_mode_cal_timing 0x00015c71 Thumb Code 510 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing) + i.hal_dsi_tx_ctrl_create_handle 0x00015ef0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) + i.hal_dsi_tx_ctrl_deinit 0x00015f28 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) + i.hal_dsi_tx_ctrl_gen_a_tear_signal 0x00015f9c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) + i.hal_dsi_tx_ctrl_init 0x00015fc0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) + i.hal_dsi_tx_ctrl_init_clk 0x0001603c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) + hal_dsi_tx_ctrl_init_clk 0x0001603d Thumb Code 12 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk) + i.hal_dsi_tx_ctrl_set_overwrite_rgb 0x0001604c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) + i.hal_dsi_tx_ctrl_set_tear_mode 0x00016054 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) + i.hal_dsi_tx_ctrl_start 0x00016060 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) + i.hal_dsi_tx_ctrl_stop 0x000160f0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) + i.hal_dsi_tx_ctrl_write_array_cmd 0x00016128 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) + i.hal_dsi_tx_ctrl_write_cmd 0x0001621c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) + i.hal_dsi_tx_init_cfg 0x000162ec Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) + hal_dsi_tx_init_cfg 0x000162ed Thumb Code 250 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg) + i.hal_dsi_tx_init_dpi_timing 0x000163f0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) + hal_dsi_tx_init_dpi_timing 0x000163f1 Thumb Code 58 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing) + i.hal_dsi_tx_init_phy_cfg 0x00016434 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) + hal_dsi_tx_init_phy_cfg 0x00016435 Thumb Code 22 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg) + i.hal_dsi_tx_init_timing 0x0001644a Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) + hal_dsi_tx_init_timing 0x0001644b Thumb Code 82 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing) + i.hal_dsi_tx_init_vid_timing 0x0001649c Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) + hal_dsi_tx_init_vid_timing 0x0001649d Thumb Code 70 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing) + i.hal_dsi_tx_send_cmd 0x000164f0 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) + hal_dsi_tx_send_cmd 0x000164f1 Thumb Code 58 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd) + i.hal_dsi_tx_timing_info_update 0x00016530 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) + hal_dsi_tx_timing_info_update 0x00016531 Thumb Code 142 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update) + i.hal_dsi_tx_vid_mode_cal_timing 0x000165c4 Section 0 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) + hal_dsi_tx_vid_mode_cal_timing 0x000165c5 Thumb Code 766 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) + i.hal_gpio_config_pad 0x000168d4 Section 0 hal_gpio.o(i.hal_gpio_config_pad) + i.hal_gpio_ctrl_eint 0x00016910 Section 0 hal_gpio.o(i.hal_gpio_ctrl_eint) + i.hal_gpio_init_eint 0x00016928 Section 0 hal_gpio.o(i.hal_gpio_init_eint) + i.hal_gpio_init_input 0x00016968 Section 0 hal_gpio.o(i.hal_gpio_init_input) + i.hal_gpio_init_output 0x0001697e Section 0 hal_gpio.o(i.hal_gpio_init_output) + i.hal_gpio_reg_eint_cb 0x0001699c Section 0 hal_gpio.o(i.hal_gpio_reg_eint_cb) + i.hal_gpio_set_ap_reset_int 0x000169b8 Section 0 hal_gpio.o(i.hal_gpio_set_ap_reset_int) + i.hal_gpio_set_mode 0x00016a08 Section 0 hal_gpio.o(i.hal_gpio_set_mode) + i.hal_gpio_set_output_data 0x00016a68 Section 0 hal_gpio.o(i.hal_gpio_set_output_data) + i.hal_internal_sync_get_hight_performan_mode 0x00016a70 Section 0 hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) + i.hal_internal_sync_input_resolution_change 0x00016a80 Section 0 hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) + i.hal_internal_sync_register_lcdc_cb 0x00016c34 Section 0 hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) + i.hal_internal_vsync_deinit 0x00016c40 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_deinit) + i.hal_internal_vsync_get_rx_state 0x00016c60 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) + i.hal_internal_vsync_get_sync_line 0x00016c6c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) + i.hal_internal_vsync_get_tx_state 0x00016c80 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) + i.hal_internal_vsync_init_rx 0x00016c8c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_init_rx) + i.hal_internal_vsync_init_tx 0x00016d74 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_init_tx) + i.hal_internal_vsync_set_rx_state 0x00016e3c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) + i.hal_internal_vsync_set_tear_mode 0x00016e5c Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) + i.hal_internal_vsync_set_tx_state 0x00017048 Section 0 hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) + i.hal_intl_dcs_init_sw_fltr 0x000170a0 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) + i.hal_intl_dcs_rx_get_dcs_packet_data 0x0001710c Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) + hal_intl_dcs_rx_get_dcs_packet_data 0x0001710d Thumb Code 782 hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data) + i.hal_intl_dcs_rx_receive_packet 0x0001753c Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) + hal_intl_dcs_rx_receive_packet 0x0001753d Thumb Code 122 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet) + i.hal_intl_dcs_rx_receive_pps 0x000175c4 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) + hal_intl_dcs_rx_receive_pps 0x000175c5 Thumb Code 266 hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps) + i.hal_intl_dcs_set_auto_hw_filter 0x00017738 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) + i.hal_intl_dcs_sw_filter_handle 0x000177c4 Section 0 hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) + hal_intl_dcs_sw_filter_handle 0x000177c5 Thumb Code 36 hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle) + i.hal_intl_fb_cal_fb_info 0x000177f0 Section 0 hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) + i.hal_intl_fb_check_bandwidth 0x00017b08 Section 0 hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) + hal_intl_fb_check_bandwidth 0x00017b09 Thumb Code 92 hal_internal_fb.o(i.hal_intl_fb_check_bandwidth) + i.hal_intl_fb_edge_resize 0x00017b6c Section 0 hal_internal_fb.o(i.hal_intl_fb_edge_resize) + hal_intl_fb_edge_resize 0x00017b6d Thumb Code 214 hal_internal_fb.o(i.hal_intl_fb_edge_resize) + i.hal_intl_fb_flow_control_adapter 0x00017c48 Section 0 hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) + hal_intl_fb_flow_control_adapter 0x00017c49 Thumb Code 110 hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter) + i.hal_intl_fb_get_memc_flow_mode 0x00017cbc Section 0 hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) + i.hal_intl_fb_get_rx_fb_info 0x00017cc8 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) + i.hal_intl_fb_get_tx_fb_info 0x00017cd8 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) + i.hal_intl_fb_get_user_flow 0x00017ce8 Section 0 hal_internal_fb.o(i.hal_intl_fb_get_user_flow) + i.hal_intl_svs_deinit_rx 0x00017cf4 Section 0 hal_internal_svs.o(i.hal_intl_svs_deinit_rx) + i.hal_intl_svs_deinit_tx 0x00017d1c Section 0 hal_internal_svs.o(i.hal_intl_svs_deinit_tx) + i.hal_intl_svs_handle 0x00017d2c Section 0 hal_internal_svs.o(i.hal_intl_svs_handle) + i.hal_intl_svs_init_rx 0x00017d50 Section 0 hal_internal_svs.o(i.hal_intl_svs_init_rx) + i.hal_intl_svs_init_tx 0x00017dd0 Section 0 hal_internal_svs.o(i.hal_intl_svs_init_tx) + i.hal_intl_svs_set_rx_vtt 0x00017de4 Section 0 hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) + i.hal_intl_svs_update_rxbr_clk 0x00017df0 Section 0 hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) + i.hal_lcdc_displayproc_config 0x00017e38 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) + i.hal_lcdc_init_cfg 0x00017ea8 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) + hal_lcdc_init_cfg 0x00017ea9 Thumb Code 62 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg) + i.hal_lcdc_init_clk 0x00017ee6 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) + hal_lcdc_init_clk 0x00017ee7 Thumb Code 112 hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk) + i.hal_lcdc_postproc_config 0x00017f58 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) + i.hal_lcdc_start 0x00018080 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_start) + hal_lcdc_start 0x00018081 Thumb Code 36 hal_dsi_tx_ctrl.o(i.hal_lcdc_start) + i.hal_lcdc_timinggen_config 0x000180a4 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) + hal_lcdc_timinggen_config 0x000180a5 Thumb Code 60 hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config) + i.hal_lcdc_upscaler_config 0x000180e0 Section 0 hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) + i.hal_nonshadow_func_update 0x000181c0 Section 0 hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) + i.hal_pwr_enter_deep_sleep_mode 0x0001827c Section 0 hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) + i.hal_pwr_enter_normal_sleep_mode 0x000182a6 Section 0 hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) + i.hal_pwr_enter_stop_sleep_mode 0x000182b0 Section 0 hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) + i.hal_pwr_exit_sleep_mode 0x00018314 Section 0 hal_pwr.o(i.hal_pwr_exit_sleep_mode) + i.hal_pwr_get_vcc_power_ready 0x0001831e Section 0 hal_pwr.o(i.hal_pwr_get_vcc_power_ready) + i.hal_pwr_set_main_power 0x00018326 Section 0 hal_pwr.o(i.hal_pwr_set_main_power) + i.hal_pwr_set_sleep_mode_power 0x0001832e Section 0 hal_pwr.o(i.hal_pwr_set_sleep_mode_power) + i.hal_pwr_set_stop_sleep_wakeup_pin 0x00018338 Section 0 hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) + i.hal_swire_deinit 0x0001839c Section 0 hal_swire.o(i.hal_swire_deinit) + i.hal_swire_enable 0x000183dc Section 0 hal_swire.o(i.hal_swire_enable) + i.hal_swire_init 0x00018438 Section 0 hal_swire.o(i.hal_swire_init) + i.hal_swire_set_pulse 0x00018490 Section 0 hal_swire.o(i.hal_swire_set_pulse) + i.hal_swire_set_timer 0x000184b4 Section 0 hal_swire.o(i.hal_swire_set_timer) + i.hal_system_init 0x000184f4 Section 0 hal_system.o(i.hal_system_init) + i.hal_system_updata_sysclk 0x000185d8 Section 0 hal_system.o(i.hal_system_updata_sysclk) + i.hal_timer_deinit 0x00018628 Section 0 hal_timer.o(i.hal_timer_deinit) + i.hal_timer_init 0x00018658 Section 0 hal_timer.o(i.hal_timer_init) + i.hal_timer_set_repeat 0x00018674 Section 0 hal_timer.o(i.hal_timer_set_repeat) + i.hal_tx_frame_rate_adjust 0x0001867c Section 0 hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) + hal_tx_frame_rate_adjust 0x0001867d Thumb Code 44 hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) + i.hal_uart_init 0x000186ac Section 0 hal_uart.o(i.hal_uart_init) + i.hal_uart_send_blocking 0x00018740 Section 0 hal_uart.o(i.hal_uart_send_blocking) + i.hal_vsync_func_update 0x0001875c Section 0 hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) + i.hal_vsync_reset_lcdc_scaler 0x00018774 Section 0 hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) + i.main 0x00018854 Section 0 main.o(i.main) + i.pps_update_handle 0x00018894 Section 0 p8p_demo.o(i.pps_update_handle) + pps_update_handle 0x00018895 Thumb Code 110 p8p_demo.o(i.pps_update_handle) + i.rxbr_irq1_callback 0x00018910 Section 0 hal_internal_vsync.o(i.rxbr_irq1_callback) + rxbr_irq1_callback 0x00018911 Thumb Code 496 hal_internal_vsync.o(i.rxbr_irq1_callback) + i.send_panel_init_code 0x00018c04 Section 0 p8p_demo.o(i.send_panel_init_code) + send_panel_init_code 0x00018c05 Thumb Code 58 p8p_demo.o(i.send_panel_init_code) + i.soft_double_buffer_update 0x00018c40 Section 0 hal_internal_vsync.o(i.soft_double_buffer_update) + soft_double_buffer_update 0x00018c41 Thumb Code 56 hal_internal_vsync.o(i.soft_double_buffer_update) + i.soft_gen_te 0x00018c84 Section 0 hal_internal_vsync.o(i.soft_gen_te) + soft_gen_te 0x00018c85 Thumb Code 86 hal_internal_vsync.o(i.soft_gen_te) + i.soft_gen_te_double_buffer 0x00018cf0 Section 0 hal_internal_vsync.o(i.soft_gen_te_double_buffer) + soft_gen_te_double_buffer 0x00018cf1 Thumb Code 202 hal_internal_vsync.o(i.soft_gen_te_double_buffer) + i.soft_pro_motion_init 0x00018dd0 Section 0 hal_internal_vsync.o(i.soft_pro_motion_init) + soft_pro_motion_init 0x00018dd1 Thumb Code 46 hal_internal_vsync.o(i.soft_pro_motion_init) + i.soft_tear_adjust_line 0x00018e08 Section 0 hal_internal_vsync.o(i.soft_tear_adjust_line) + soft_tear_adjust_line 0x00018e09 Thumb Code 26 hal_internal_vsync.o(i.soft_tear_adjust_line) + i.stop_sleep_cb 0x00018e2c Section 0 hal_pwr.o(i.stop_sleep_cb) + stop_sleep_cb 0x00018e2d Thumb Code 18 hal_pwr.o(i.stop_sleep_cb) + i.svs_direct_mode_setting 0x00018e44 Section 0 hal_internal_svs.o(i.svs_direct_mode_setting) + svs_direct_mode_setting 0x00018e45 Thumb Code 154 hal_internal_svs.o(i.svs_direct_mode_setting) + i.svs_get_rel_intv 0x00018ef0 Section 0 hal_internal_svs.o(i.svs_get_rel_intv) + svs_get_rel_intv 0x00018ef1 Thumb Code 20 hal_internal_svs.o(i.svs_get_rel_intv) + i.svs_sync_handle 0x00018f0c Section 0 hal_internal_svs.o(i.svs_sync_handle) + svs_sync_handle 0x00018f0d Thumb Code 158 hal_internal_svs.o(i.svs_sync_handle) + i.svs_wait_fr_stab 0x00018fbc Section 0 hal_internal_svs.o(i.svs_wait_fr_stab) + svs_wait_fr_stab 0x00018fbd Thumb Code 148 hal_internal_svs.o(i.svs_wait_fr_stab) + i.svs_wait_start 0x00019088 Section 0 hal_internal_svs.o(i.svs_wait_start) + svs_wait_start 0x00019089 Thumb Code 250 hal_internal_svs.o(i.svs_wait_start) + i.tau_log_init 0x00019194 Section 0 tau_log.o(i.tau_log_init) + i.tau_log_printf 0x000191c8 Section 0 tau_log.o(i.tau_log_printf) + i.tau_log_push_log 0x0001924c Section 0 tau_log.o(i.tau_log_push_log) + i.vidc_callback 0x000192c4 Section 0 hal_internal_vsync.o(i.vidc_callback) + vidc_callback 0x000192c5 Thumb Code 150 hal_internal_vsync.o(i.vidc_callback) + i.vpre_err_reset 0x00019378 Section 0 hal_internal_vsync.o(i.vpre_err_reset) + vpre_err_reset 0x00019379 Thumb Code 254 hal_internal_vsync.o(i.vpre_err_reset) + .constdata 0x00019490 Section 8380 p8p_demo.o(.constdata) + g_cus_rx_dcs_execute_table 0x00019490 Data 96 p8p_demo.o(.constdata) + .constdata 0x0001b54c Section 40 hal_dsi_rx_ctrl.o(.constdata) + .constdata 0x0001b574 Section 28 hal_dsi_tx_ctrl.o(.constdata) + .constdata 0x0001b590 Section 182 hal_gpio.o(.constdata) + s_gpio_map 0x0001b590 Data 104 hal_gpio.o(.constdata) + s_gpio_perf 0x0001b5f8 Data 78 hal_gpio.o(.constdata) + .constdata 0x0001b648 Section 48 hal_uart.o(.constdata) + .constdata 0x0001b678 Section 16 drv_uart.o(.constdata) + .conststring 0x0001b688 Section 66 hal_dsi_rx_ctrl.o(.conststring) + .conststring 0x0001b6cc Section 144 hal_internal_vsync.o(.conststring) + .conststring 0x0001b75c Section 70 hal_internal_dcs.o(.conststring) + .data 0x00070000 Section 287 p8p_demo.o(.data) + g_rx_ctrl_handle 0x00070000 Data 4 p8p_demo.o(.data) + g_tx_ctrl_handle 0x00070004 Data 4 p8p_demo.o(.data) + panel_display_done 0x00070008 Data 1 p8p_demo.o(.data) + sg_system_resume 0x00070009 Data 1 p8p_demo.o(.data) + sg_system_suspend 0x0007000a Data 1 p8p_demo.o(.data) + sg_exit_idle_mode_flag 0x0007000b Data 1 p8p_demo.o(.data) + g_resolution_change 0x0007000c Data 1 p8p_demo.o(.data) + pps_renew_flag 0x00070010 Data 4 p8p_demo.o(.data) + pwr_rst_flag 0x00070014 Data 4 p8p_demo.o(.data) + reg53_E8_fg 0x0007011e Data 1 p8p_demo.o(.data) + .data 0x00070120 Section 48 hal_dsi_rx_ctrl.o(.data) + g_hw_auto_filter 0x00070120 Data 1 hal_dsi_rx_ctrl.o(.data) + g_crc_check_enable 0x00070121 Data 1 hal_dsi_rx_ctrl.o(.data) + g_esc_clk 0x00070124 Data 4 hal_dsi_rx_ctrl.o(.data) + g_before_draw_col 0x00070128 Data 4 hal_dsi_rx_ctrl.o(.data) + g_before_draw_page 0x0007012c Data 4 hal_dsi_rx_ctrl.o(.data) + pre_step 0x00070130 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_cmd_filter 0x00070134 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_x 0x00070138 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_y 0x0007013c Data 4 hal_dsi_rx_ctrl.o(.data) + pre_value 0x00070140 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_x 0x00070144 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_y 0x00070148 Data 4 hal_dsi_rx_ctrl.o(.data) + pre_value 0x0007014c Data 4 hal_dsi_rx_ctrl.o(.data) + .data 0x00070150 Section 92 hal_dsi_tx_ctrl.o(.data) + sg_bta_vsync_flag 0x00070150 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_vsync_flag 0x00070151 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_enter_sleep_cmd 0x00070152 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_fldc_cg_mode 0x00070153 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_scl_fir 0x00070154 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_honly_bypass_fir 0x00070155 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_bcs 0x00070156 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_enhc 0x00070157 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_edge_dect 0x00070158 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_edge_enh 0x00070159 Data 1 hal_dsi_tx_ctrl.o(.data) + sg_bypass_dith 0x0007015a Data 1 hal_dsi_tx_ctrl.o(.data) + sg_dith_judge 0x0007015b Data 1 hal_dsi_tx_ctrl.o(.data) + sg_endianness 0x0007015c Data 1 hal_dsi_tx_ctrl.o(.data) + sg_test_pattern_en 0x0007015d Data 1 hal_dsi_tx_ctrl.o(.data) + sg_dith_judge_thr 0x00070160 Data 4 hal_dsi_tx_ctrl.o(.data) + sg_ccm_para 0x00070164 Data 36 hal_dsi_tx_ctrl.o(.data) + sg_honly_para 0x00070188 Data 36 hal_dsi_tx_ctrl.o(.data) + .data 0x000701ac Section 2 hal_swire.o(.data) + sg_swire_timer 0x000701ac Data 1 hal_swire.o(.data) + sg_swire_repeat 0x000701ad Data 1 hal_swire.o(.data) + .data 0x000701b0 Section 8 hal_pwr.o(.data) + sg_wake_up_io 0x000701b0 Data 1 hal_pwr.o(.data) + sg_stop_sleep_wakeup_int 0x000701b4 Data 4 hal_pwr.o(.data) + .data 0x000701b8 Section 1 tau_log.o(.data) + g_log_port 0x000701b8 Data 1 tau_log.o(.data) + .data 0x000701bc Section 24 hal_uart.o(.data) + sg_dma_callback 0x000701cc Data 4 hal_uart.o(.data) + sg_user_data 0x000701d0 Data 4 hal_uart.o(.data) + .data 0x000701d4 Section 16 hal_internal_vsync.o(.data) + s_te_refine_mode 0x000701d4 Data 1 hal_internal_vsync.o(.data) + .data 0x000701e4 Section 36 hal_internal_dcs.o(.data) + g_imm_packet 0x000701e4 Data 24 hal_internal_dcs.o(.data) + g_cus_rx_write_cmd_handle 0x000701fc Data 12 hal_internal_dcs.o(.data) + .data 0x00070208 Section 12 drv_common.o(.data) + s_my_tick 0x00070208 Data 4 drv_common.o(.data) + .data 0x00070214 Section 1 drv_common.o(.data) + .data 0x00070218 Section 4 drv_gpio.o(.data) + g_ap_reset_cb 0x00070218 Data 4 drv_gpio.o(.data) + .data 0x0007021c Section 4 drv_swire.o(.data) + sg_drv_swire_cb 0x0007021c Data 4 drv_swire.o(.data) + .data 0x00070220 Section 80 drv_timer.o(.data) + sg_timer_info 0x00070220 Data 80 drv_timer.o(.data) + .data 0x00070270 Section 4 drv_se.o(.data) + chip_info 0x00070270 Data 4 drv_se.o(.data) + .data 0x00070274 Section 1 drv_dsi_rx.o(.data) + sg_rx_drv_level 0x00070274 Data 1 drv_dsi_rx.o(.data) + .data 0x00070278 Section 8 drv_rxbr.o(.data) + .data 0x00070280 Section 4 drv_vidc.o(.data) + .data 0x00070284 Section 400 drv_dma.o(.data) + sg_dma_handle 0x00070284 Data 256 drv_dma.o(.data) + .data 0x00070414 Section 4 stdout.o(.data) + .bss 0x00070418 Section 208 hal_dsi_rx_ctrl.o(.bss) + g_rx_ctrl_handle 0x00070418 Data 208 hal_dsi_rx_ctrl.o(.bss) + .bss 0x000704e8 Section 184 hal_dsi_tx_ctrl.o(.bss) + g_tx_ctrl_handle 0x000704e8 Data 92 hal_dsi_tx_ctrl.o(.bss) + sg_dsi_tx_param 0x00070544 Data 92 hal_dsi_tx_ctrl.o(.bss) + .bss 0x000705a0 Section 256 tau_log.o(.bss) + g_log_buf 0x000705a0 Data 256 tau_log.o(.bss) + .bss 0x000706a0 Section 68 hal_internal_vsync.o(.bss) + .bss 0x000706e4 Section 2048 hal_internal_dcs.o(.bss) + .bss 0x00070ee4 Section 255 hal_internal_dcs.o(.bss) + g_imm_buffer 0x00070ee4 Data 255 hal_internal_dcs.o(.bss) + .bss 0x00070fe4 Section 68 hal_internal_fb.o(.bss) + .bss 0x00071028 Section 68 hal_internal_svs.o(.bss) + sg_sys_handler 0x00071028 Data 68 hal_internal_svs.o(.bss) + .bss 0x0007106c Section 64 drv_gpio.o(.bss) + s_gpio_cb 0x0007106c Data 64 drv_gpio.o(.bss) + .bss 0x000710ac Section 4204 dcs_packet_fifo.o(.bss) + .bss 0x00072118 Section 16 drv_dma.o(.bss) + sg_dma_int_list 0x00072118 Data 16 drv_dma.o(.bss) + .bss 0x00072128 Section 96 drv_uart.o(.bss) + sg_uart_userdata 0x00072128 Data 96 drv_uart.o(.bss) + STACK 0x00072188 Section 4096 startup_armcm0.o(STACK) + + Global Symbols + + Symbol Name Value Ov Type Size Object(Section) + + BuildAttributes$$THM_ISAv3M$S$PE$A:L22$X:L11$S22$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$IEEEJ$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE + __ARM_use_no_argv 0x00000000 Number 0 main.o ABSOLUTE + _printf_a 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_c 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_charcount 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_d 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_e 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_f 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_flags 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_fp_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_g 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_i 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_int_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_l 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ll 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lld 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_lli 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llo 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llu 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_llx 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_dec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_hex 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_longlong_oct 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_ls 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_mbtowc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_n 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_o 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_p 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_percent 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_pre_padding 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_return_value 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_s 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_sizespec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_str 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_signed 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_truncate_unsigned 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_u 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wc 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_wctomb 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_widthprec 0x00000000 Number 0 stubs.o ABSOLUTE + _printf_x 0x00000000 Number 0 stubs.o ABSOLUTE + __cpp_initialize__aeabi_ - Undefined Weak Reference + __cxa_finalize - Undefined Weak Reference + _clock_init - Undefined Weak Reference + _microlib_exit - Undefined Weak Reference + __Vectors_Size 0x000000c0 Number 0 startup_armcm0.o ABSOLUTE + __Vectors 0x00010000 Data 4 startup_armcm0.o(RESET) + __Vectors_End 0x000100c0 Data 0 startup_armcm0.o(RESET) + __main 0x000100c1 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000) + _main_stk 0x000100c1 Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001) + _main_scatterload 0x000100c5 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) + __main_after_scatterload 0x000100c9 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) + _main_clock 0x000100c9 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008) + _main_cpp_init 0x000100c9 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A) + _main_init 0x000100c9 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B) + __rt_final_cpp 0x000100d1 Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000D) + __rt_final_exit 0x000100d1 Thumb Code 0 entry11a.o(.ARM.Collect$$$$0000000F) + Reset_Handler 0x000100d5 Thumb Code 28 startup_armcm0.o(.text) + NMI_Handler 0x000100f1 Thumb Code 2 startup_armcm0.o(.text) + SVC_Handler 0x000100f5 Thumb Code 2 startup_armcm0.o(.text) + PendSV_Handler 0x000100f7 Thumb Code 2 startup_armcm0.o(.text) + FLSCTRL_IRQn_Handler 0x00010107 Thumb Code 2 startup_armcm0.o(.text) + WDG_IRQn_Handler 0x00010113 Thumb Code 2 startup_armcm0.o(.text) + I2C0_IRQn_Handler 0x00010117 Thumb Code 2 startup_armcm0.o(.text) + I2C1_IRQn_Handler 0x00010119 Thumb Code 2 startup_armcm0.o(.text) + SPIS_IRQn_Handler 0x0001011b Thumb Code 2 startup_armcm0.o(.text) + SPIM_IRQn_Handler 0x0001011d Thumb Code 2 startup_armcm0.o(.text) + I2C2_IRQn_Handler 0x00010121 Thumb Code 2 startup_armcm0.o(.text) + OTP_IRQn_Handler 0x00010123 Thumb Code 2 startup_armcm0.o(.text) + PVD_IRQn_Handler 0x00010127 Thumb Code 2 startup_armcm0.o(.text) + __aeabi_uidiv 0x0001014d Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x0001014d Thumb Code 44 uidiv.o(.text) + __aeabi_idiv 0x00010179 Thumb Code 0 idiv.o(.text) + __aeabi_idivmod 0x00010179 Thumb Code 40 idiv.o(.text) + __aeabi_memcpy 0x000101a1 Thumb Code 36 memcpya.o(.text) + __aeabi_memcpy4 0x000101a1 Thumb Code 0 memcpya.o(.text) + __aeabi_memcpy8 0x000101a1 Thumb Code 0 memcpya.o(.text) + __aeabi_memset 0x000101c5 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x000101c5 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x000101c5 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x000101d3 Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x000101d3 Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x000101d3 Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x000101d7 Thumb Code 18 memseta.o(.text) + strlen 0x000101e9 Thumb Code 14 strlen.o(.text) + memcmp 0x000101f7 Thumb Code 26 memcmp.o(.text) + __aeabi_fadd 0x00010211 Thumb Code 162 fadd.o(.text) + __aeabi_fsub 0x000102b3 Thumb Code 8 fadd.o(.text) + __aeabi_frsub 0x000102bb Thumb Code 8 fadd.o(.text) + __aeabi_fmul 0x000102c3 Thumb Code 122 fmul.o(.text) + __aeabi_fdiv 0x0001033d Thumb Code 124 fdiv.o(.text) + __ARM_scalbnf 0x000103b9 Thumb Code 24 fscalb.o(.text) + scalbnf 0x000103b9 Thumb Code 0 fscalb.o(.text) + __aeabi_dadd 0x000103d1 Thumb Code 328 dadd.o(.text) + __aeabi_dsub 0x00010519 Thumb Code 12 dadd.o(.text) + __aeabi_drsub 0x00010525 Thumb Code 12 dadd.o(.text) + __aeabi_dmul 0x00010535 Thumb Code 202 dmul.o(.text) + __aeabi_ui2f 0x00010605 Thumb Code 14 ffltui.o(.text) + __aeabi_ui2d 0x00010615 Thumb Code 24 dfltui.o(.text) + __aeabi_f2uiz 0x00010631 Thumb Code 40 ffixui.o(.text) + __aeabi_d2uiz 0x00010659 Thumb Code 50 dfixui.o(.text) + __aeabi_f2d 0x00010695 Thumb Code 40 f2d.o(.text) + __aeabi_d2f 0x000106bd Thumb Code 56 d2f.o(.text) + __aeabi_cfcmpeq 0x000106f5 Thumb Code 0 cfcmple.o(.text) + __aeabi_cfcmple 0x000106f5 Thumb Code 20 cfcmple.o(.text) + __aeabi_cfrcmple 0x00010709 Thumb Code 20 cfrcmple.o(.text) + __aeabi_uldivmod 0x0001071d Thumb Code 96 uldiv.o(.text) + __aeabi_llsl 0x0001077d Thumb Code 32 llshl.o(.text) + _ll_shift_l 0x0001077d Thumb Code 0 llshl.o(.text) + __aeabi_llsr 0x0001079d Thumb Code 34 llushr.o(.text) + _ll_ushift_r 0x0001079d Thumb Code 0 llushr.o(.text) + __aeabi_lasr 0x000107bf Thumb Code 38 llsshr.o(.text) + _ll_sshift_r 0x000107bf Thumb Code 0 llsshr.o(.text) + __I$use$fp 0x000107e5 Thumb Code 0 iusefp.o(.text) + _float_round 0x000107e5 Thumb Code 16 fepilogue.o(.text) + _float_epilogue 0x000107f5 Thumb Code 114 fepilogue.o(.text) + _double_round 0x00010867 Thumb Code 26 depilogue.o(.text) + _double_epilogue 0x00010881 Thumb Code 164 depilogue.o(.text) + __aeabi_ddiv 0x00010925 Thumb Code 234 ddiv.o(.text) + __aeabi_d2ulz 0x00010a15 Thumb Code 54 dfixul.o(.text) + __aeabi_cdrcmple 0x00010a55 Thumb Code 38 cdrcmple.o(.text) + __scatterload 0x00010a7d Thumb Code 28 init.o(.text) + __scatterload_rt2 0x00010a7d Thumb Code 0 init.o(.text) + __decompress 0x00010aa1 Thumb Code 0 __dczerorl2.o(.text) + __decompress1 0x00010aa1 Thumb Code 86 __dczerorl2.o(.text) + AP_NRESET_IRQn_Handler 0x00010af9 Thumb Code 22 drv_gpio.o(i.AP_NRESET_IRQn_Handler) + DMA_IRQn_Handler 0x00010b15 Thumb Code 78 drv_dma.o(i.DMA_IRQn_Handler) + EXTI_INT0_IRQn_Handler 0x00010b71 Thumb Code 10 drv_gpio.o(i.EXTI_INT0_IRQn_Handler) + EXTI_INT1_IRQn_Handler 0x00010b7b Thumb Code 10 drv_gpio.o(i.EXTI_INT1_IRQn_Handler) + EXTI_INT2_IRQn_Handler 0x00010b85 Thumb Code 10 drv_gpio.o(i.EXTI_INT2_IRQn_Handler) + EXTI_INT3_IRQn_Handler 0x00010b8f Thumb Code 10 drv_gpio.o(i.EXTI_INT3_IRQn_Handler) + EXTI_INT4_IRQn_Handler 0x00010b99 Thumb Code 10 drv_gpio.o(i.EXTI_INT4_IRQn_Handler) + EXTI_INT5_IRQn_Handler 0x00010ba3 Thumb Code 10 drv_gpio.o(i.EXTI_INT5_IRQn_Handler) + EXTI_INT6_IRQn_Handler 0x00010bad Thumb Code 10 drv_gpio.o(i.EXTI_INT6_IRQn_Handler) + EXTI_INT7_IRQn_Handler 0x00010bb7 Thumb Code 10 drv_gpio.o(i.EXTI_INT7_IRQn_Handler) + HardFault_Handler 0x00010bc1 Thumb Code 14 drv_common.o(i.HardFault_Handler) + LCDC_IRQn_Handler 0x00010c09 Thumb Code 118 hal_internal_vsync.o(i.LCDC_IRQn_Handler) + MEMC_IRQn_Handler 0x00010d09 Thumb Code 154 drv_memc.o(i.MEMC_IRQn_Handler) + MIPI_TX_IRQn_Handler 0x00010da5 Thumb Code 70 drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) + SWIRE_IRQn_Handler 0x00010e5d Thumb Code 38 drv_swire.o(i.SWIRE_IRQn_Handler) + SysTick_Handler 0x00010e8d Thumb Code 20 drv_common.o(i.SysTick_Handler) + TIMER0_IRQn_Handler 0x00010ea5 Thumb Code 10 drv_timer.o(i.TIMER0_IRQn_Handler) + TIMER1_IRQn_Handler 0x00010eaf Thumb Code 10 drv_timer.o(i.TIMER1_IRQn_Handler) + TIMER2_IRQn_Handler 0x00010eb9 Thumb Code 10 drv_timer.o(i.TIMER2_IRQn_Handler) + TIMER3_IRQn_Handler 0x00010ec3 Thumb Code 10 drv_timer.o(i.TIMER3_IRQn_Handler) + VIDC_IRQn_Handler 0x00010ecd Thumb Code 22 drv_vidc.o(i.VIDC_IRQn_Handler) + VPRE1_IRQn_Handler 0x00010ee9 Thumb Code 22 drv_rxbr.o(i.VPRE1_IRQn_Handler) + VPRE_IRQn_Handler 0x00010f05 Thumb Code 104 hal_internal_dcs.o(i.VPRE_IRQn_Handler) + __0printf 0x00010f71 Thumb Code 24 printfa.o(i.__0printf) + __1printf 0x00010f71 Thumb Code 0 printfa.o(i.__0printf) + __2printf 0x00010f71 Thumb Code 0 printfa.o(i.__0printf) + __c89printf 0x00010f71 Thumb Code 0 printfa.o(i.__0printf) + printf 0x00010f71 Thumb Code 0 printfa.o(i.__0printf) + __0vsprintf 0x00010f91 Thumb Code 30 printfa.o(i.__0vsprintf) + __1vsprintf 0x00010f91 Thumb Code 0 printfa.o(i.__0vsprintf) + __2vsprintf 0x00010f91 Thumb Code 0 printfa.o(i.__0vsprintf) + __c89vsprintf 0x00010f91 Thumb Code 0 printfa.o(i.__0vsprintf) + vsprintf 0x00010f91 Thumb Code 0 printfa.o(i.__0vsprintf) + __ARM_clz 0x00010fb5 Thumb Code 46 depilogue.o(i.__ARM_clz) + __ARM_common_switch8 0x00010fe3 Thumb Code 26 hal_dsi_rx_ctrl.o(i.__ARM_common_switch8) + __scatterload_null 0x00010ffd Thumb Code 2 handlers.o(i.__scatterload_null) + s_RAM_CK 0x00011000 Data 28 drv_common.o(.ARM.__at_0x11000) + g_tau_log 0x0001101c Data 16 tau_log.o(.ARM.__at_0x1101C) + sg_pq_para 0x0001102c Data 22 hal_dsi_tx_ctrl.o(.ARM.__at_0x1102C) + MIPI_RX_IRQn_Handler 0x00011045 Thumb Code 354 drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) + UART_IRQn_Handler 0x000113a9 Thumb Code 364 drv_uart.o(i.UART_IRQn_Handler) + __scatterload_copy 0x00011561 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_zeroinit 0x0001156f Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + app_display_init 0x000122bb Thumb Code 44 p8p_demo.o(i.app_display_init) + app_gpio_init 0x000122e9 Thumb Code 22 p8p_demo.o(i.app_gpio_init) + board_Init 0x0001286d Thumb Code 20 board.o(i.board_Init) + ceil 0x00012885 Thumb Code 180 ceil.o(i.ceil) + dcs_packet_fifo_alloc 0x00012a01 Thumb Code 80 dcs_packet_fifo.o(i.dcs_packet_fifo_alloc) + dcs_packet_fifo_init 0x00012a59 Thumb Code 18 dcs_packet_fifo.o(i.dcs_packet_fifo_init) + dcs_packet_free_fifo_header 0x00012a71 Thumb Code 60 dcs_packet_fifo.o(i.dcs_packet_free_fifo_header) + dcs_packet_get_fifo_header 0x00012ab5 Thumb Code 26 dcs_packet_fifo.o(i.dcs_packet_get_fifo_header) + delayMs 0x00012ad9 Thumb Code 24 tau_delay.o(i.delayMs) + delayUs 0x00012af1 Thumb Code 40 tau_delay.o(i.delayUs) + drv_common_system_init 0x00012b1d Thumb Code 8 drv_common.o(i.drv_common_system_init) + drv_crgu_enable_clock 0x00012b25 Thumb Code 54 drv_crgu.o(i.drv_crgu_enable_clock) + drv_crgu_get_rxbr_clk 0x00012b61 Thumb Code 70 drv_crgu.o(i.drv_crgu_get_rxbr_clk) + drv_crgu_reset_modules 0x00012bc9 Thumb Code 10 drv_crgu.o(i.drv_crgu_reset_modules) + drv_crgu_set_ahb_clk 0x00012bd9 Thumb Code 34 drv_crgu.o(i.drv_crgu_set_ahb_clk) + drv_crgu_set_clock_div 0x00012c01 Thumb Code 12 drv_crgu.o(i.drv_crgu_set_clock_div) + drv_crgu_set_dpi_clk 0x00012c11 Thumb Code 54 drv_crgu.o(i.drv_crgu_set_dpi_clk) + drv_crgu_set_dsc_clk 0x00012c4d Thumb Code 52 drv_crgu.o(i.drv_crgu_set_dsc_clk) + drv_crgu_set_fb_clk 0x00012c85 Thumb Code 34 drv_crgu.o(i.drv_crgu_set_fb_clk) + drv_crgu_set_lcdc_clk 0x00012cad Thumb Code 36 drv_crgu.o(i.drv_crgu_set_lcdc_clk) + drv_crgu_set_reset 0x00012cd5 Thumb Code 20 drv_crgu.o(i.drv_crgu_set_reset) + drv_crgu_set_rxbr_clk 0x00012ced Thumb Code 34 drv_crgu.o(i.drv_crgu_set_rxbr_clk) + drv_crgu_set_vidc_clk 0x00012d15 Thumb Code 36 drv_crgu.o(i.drv_crgu_set_vidc_clk) + drv_dma_clear_status 0x00012d3d Thumb Code 20 drv_dma.o(i.drv_dma_clear_status) + drv_dsc_dec_disable 0x00012d69 Thumb Code 20 drv_dsc_dec.o(i.drv_dsc_dec_disable) + drv_dsc_dec_enable 0x00012d85 Thumb Code 44 drv_dsc_dec.o(i.drv_dsc_dec_enable) + drv_dsc_dec_get_nslc 0x00012dbd Thumb Code 22 drv_dsc_dec.o(i.drv_dsc_dec_get_nslc) + drv_dsc_dec_set_irqen 0x00012ddd Thumb Code 24 drv_dsc_dec.o(i.drv_dsc_dec_set_irqen) + drv_dsi_rx_calc_ipi_tx_delay 0x00012df9 Thumb Code 252 drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay) + drv_dsi_rx_enable_irq 0x00012f05 Thumb Code 58 drv_dsi_rx.o(i.drv_dsi_rx_enable_irq) + drv_dsi_rx_get_compression_en 0x00012fb1 Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en) + drv_dsi_rx_get_ddi_crc_en 0x00012fc1 Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en) + drv_dsi_rx_get_max_ret_size 0x00012fd1 Thumb Code 8 drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size) + drv_dsi_rx_power_up 0x00012fdd Thumb Code 14 drv_dsi_rx.o(i.drv_dsi_rx_power_up) + drv_dsi_rx_set_check_crc 0x00012ff5 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc) + drv_dsi_rx_set_ctrl_cfg 0x00013011 Thumb Code 32 drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg) + drv_dsi_rx_set_ddi_cfg 0x00013035 Thumb Code 10 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg) + drv_dsi_rx_set_ddi_crc_en 0x00013045 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en) + drv_dsi_rx_set_inten 0x00013061 Thumb Code 8 drv_dsi_rx.o(i.drv_dsi_rx_set_inten) + drv_dsi_rx_set_ipi_cfg 0x0001306d Thumb Code 12 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg) + drv_dsi_rx_set_ipi_ycbcr_frmt 0x0001307d Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt) + drv_dsi_rx_set_lane_swap 0x00013099 Thumb Code 16 drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap) + drv_dsi_rx_set_resp_cnt 0x000130ad Thumb Code 32 drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt) + drv_dsi_rx_set_tear_resp_en 0x000130d1 Thumb Code 24 drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en) + drv_dsi_rx_set_up_phy 0x000130ed Thumb Code 224 drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy) + drv_dsi_rx_shut_down 0x000131ed Thumb Code 14 drv_dsi_rx.o(i.drv_dsi_rx_shut_down) + drv_dsi_tx_command_header 0x00013205 Thumb Code 18 drv_dsi_tx.o(i.drv_dsi_tx_command_header) + drv_dsi_tx_command_mode_cfg 0x0001321d Thumb Code 82 drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg) + drv_dsi_tx_command_put_payload 0x00013275 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload) + drv_dsi_tx_config_eotp 0x00013281 Thumb Code 26 drv_dsi_tx.o(i.drv_dsi_tx_config_eotp) + drv_dsi_tx_config_int 0x000132a1 Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_config_int) + drv_dsi_tx_dpi_lpcmd_time 0x000132ad Thumb Code 10 drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time) + drv_dsi_tx_dpi_mode 0x000132bd Thumb Code 12 drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode) + drv_dsi_tx_dpi_polarity 0x000132cd Thumb Code 32 drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity) + drv_dsi_tx_edpi_cmd_size 0x000132f1 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size) + drv_dsi_tx_get_cmd_status 0x000132fd Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status) + drv_dsi_tx_mode 0x00013309 Thumb Code 6 drv_dsi_tx.o(i.drv_dsi_tx_mode) + drv_dsi_tx_phy_clock_lane_auto_lp 0x00013315 Thumb Code 24 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp) + drv_dsi_tx_phy_clock_lane_req_hs 0x00013331 Thumb Code 26 drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs) + drv_dsi_tx_phy_lane_mode 0x00013351 Thumb Code 12 drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode) + drv_dsi_tx_phy_status_ready 0x00013361 Thumb Code 100 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready) + drv_dsi_tx_phy_status_stopstate 0x000133c9 Thumb Code 62 drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate) + drv_dsi_tx_phy_test_setup 0x0001340d Thumb Code 314 drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup) + drv_dsi_tx_phy_time_cfg 0x0001355d Thumb Code 28 drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg) + drv_dsi_tx_powerup 0x0001357d Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_powerup) + drv_dsi_tx_response_mode 0x00013589 Thumb Code 30 drv_dsi_tx.o(i.drv_dsi_tx_response_mode) + drv_dsi_tx_set_bta_ack 0x000135ad Thumb Code 24 drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack) + drv_dsi_tx_set_esc_div 0x000135c9 Thumb Code 14 drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div) + drv_dsi_tx_set_int 0x000135dd Thumb Code 58 drv_dsi_tx.o(i.drv_dsi_tx_set_int) + drv_dsi_tx_set_time_out_div 0x0001361d Thumb Code 18 drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div) + drv_dsi_tx_set_video_chunk 0x00013635 Thumb Code 14 drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk) + drv_dsi_tx_set_video_timing 0x00013649 Thumb Code 30 drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing) + drv_dsi_tx_shutdown 0x0001366d Thumb Code 8 drv_dsi_tx.o(i.drv_dsi_tx_shutdown) + drv_dsi_tx_timeout_cfg 0x00013679 Thumb Code 38 drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg) + drv_dsi_tx_video_mode_cfg 0x000136a5 Thumb Code 226 drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg) + drv_efuse_enter_inactive 0x0001378d Thumb Code 54 drv_efuse.o(i.drv_efuse_enter_inactive) + drv_efuse_int_enable 0x000137c3 Thumb Code 12 drv_efuse.o(i.drv_efuse_int_enable) + drv_efuse_read 0x000137cf Thumb Code 58 drv_efuse.o(i.drv_efuse_read) + drv_efuse_read_req 0x00013809 Thumb Code 24 drv_efuse.o(i.drv_efuse_read_req) + drv_gpio_register_ap_reset_callback 0x00013845 Thumb Code 6 drv_gpio.o(i.drv_gpio_register_ap_reset_callback) + drv_gpio_register_callback 0x00013851 Thumb Code 14 drv_gpio.o(i.drv_gpio_register_callback) + drv_gpio_set_int 0x00013865 Thumb Code 62 drv_gpio.o(i.drv_gpio_set_int) + drv_gpio_set_ioe 0x000138a9 Thumb Code 26 drv_gpio.o(i.drv_gpio_set_ioe) + drv_gpio_set_mode 0x000138c9 Thumb Code 16 drv_gpio.o(i.drv_gpio_set_mode) + drv_lcdc_bcsa_config 0x000138fd Thumb Code 30 drv_lcdc.o(i.drv_lcdc_bcsa_config) + drv_lcdc_cfg_int_frame 0x00013925 Thumb Code 34 drv_lcdc.o(i.drv_lcdc_cfg_int_frame) + drv_lcdc_cmd_start 0x00013969 Thumb Code 46 drv_lcdc.o(i.drv_lcdc_cmd_start) + drv_lcdc_config_acc_command_mode 0x0001399d Thumb Code 14 drv_lcdc.o(i.drv_lcdc_config_acc_command_mode) + drv_lcdc_config_int 0x000139b1 Thumb Code 50 drv_lcdc.o(i.drv_lcdc_config_int) + drv_lcdc_config_int_single 0x000139e9 Thumb Code 34 drv_lcdc.o(i.drv_lcdc_config_int_single) + drv_lcdc_config_overwrite_rgb 0x00013a11 Thumb Code 18 drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb) + drv_lcdc_config_src_parameter 0x00013a29 Thumb Code 72 drv_lcdc.o(i.drv_lcdc_config_src_parameter) + drv_lcdc_crop_hact 0x00013a79 Thumb Code 10 drv_lcdc.o(i.drv_lcdc_crop_hact) + drv_lcdc_ctrl_flow 0x00013a89 Thumb Code 50 drv_lcdc.o(i.drv_lcdc_ctrl_flow) + drv_lcdc_dith_config 0x00013ac1 Thumb Code 40 drv_lcdc.o(i.drv_lcdc_dith_config) + drv_lcdc_edge_dect_config 0x00013af1 Thumb Code 50 drv_lcdc.o(i.drv_lcdc_edge_dect_config) + drv_lcdc_edge_enh_config 0x00013b2d Thumb Code 86 drv_lcdc.o(i.drv_lcdc_edge_enh_config) + drv_lcdc_enable_shadow_reg 0x00013b91 Thumb Code 32 drv_lcdc.o(i.drv_lcdc_enable_shadow_reg) + drv_lcdc_endianness_config 0x00013bb5 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_endianness_config) + drv_lcdc_fc_config 0x00013bd1 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_fc_config) + drv_lcdc_fldc_config 0x00013bf1 Thumb Code 32 drv_lcdc.o(i.drv_lcdc_fldc_config) + drv_lcdc_function_disable 0x00013c15 Thumb Code 30 drv_lcdc.o(i.drv_lcdc_function_disable) + drv_lcdc_function_enable 0x00013c39 Thumb Code 30 drv_lcdc.o(i.drv_lcdc_function_enable) + drv_lcdc_set_int 0x00013c5d Thumb Code 54 drv_lcdc.o(i.drv_lcdc_set_int) + drv_lcdc_set_prefetch 0x00013c99 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_set_prefetch) + drv_lcdc_set_tear_line 0x00013cb5 Thumb Code 24 drv_lcdc.o(i.drv_lcdc_set_tear_line) + drv_lcdc_stop_display 0x00013cd1 Thumb Code 12 drv_lcdc.o(i.drv_lcdc_stop_display) + drv_lcdc_vid_hw_start 0x00013ce1 Thumb Code 56 drv_lcdc.o(i.drv_lcdc_vid_hw_start) + drv_lcdc_vintp_mode_config 0x00013d1d Thumb Code 18 drv_lcdc.o(i.drv_lcdc_vintp_mode_config) + drv_memc_clear_status 0x00013d35 Thumb Code 14 drv_memc.o(i.drv_memc_clear_status) + drv_memc_enable_irq 0x00013d49 Thumb Code 58 drv_memc.o(i.drv_memc_enable_irq) + drv_memc_gen_a_tear_signal 0x00013d89 Thumb Code 12 drv_memc.o(i.drv_memc_gen_a_tear_signal) + drv_memc_get_status 0x00013d99 Thumb Code 20 drv_memc.o(i.drv_memc_get_status) + drv_memc_get_tear_mode 0x00013db1 Thumb Code 10 drv_memc.o(i.drv_memc_get_tear_mode) + drv_memc_rate_transfer_sel 0x00013dc1 Thumb Code 22 drv_memc.o(i.drv_memc_rate_transfer_sel) + drv_memc_sel_vsync 0x00013ddd Thumb Code 16 drv_memc.o(i.drv_memc_sel_vsync) + drv_memc_set_active_height 0x00013df1 Thumb Code 16 drv_memc.o(i.drv_memc_set_active_height) + drv_memc_set_circ_mode_enable 0x00013e09 Thumb Code 24 drv_memc.o(i.drv_memc_set_circ_mode_enable) + drv_memc_set_data_mode 0x00013e25 Thumb Code 14 drv_memc.o(i.drv_memc_set_data_mode) + drv_memc_set_double_buffer 0x00013e39 Thumb Code 18 drv_memc.o(i.drv_memc_set_double_buffer) + drv_memc_set_frame_drop_select 0x00013e51 Thumb Code 24 drv_memc.o(i.drv_memc_set_frame_drop_select) + drv_memc_set_fs_en_conditions 0x00013e6d Thumb Code 18 drv_memc.o(i.drv_memc_set_fs_en_conditions) + drv_memc_set_lcdc_st_conditions 0x00013e85 Thumb Code 20 drv_memc.o(i.drv_memc_set_lcdc_st_conditions) + drv_memc_set_ltpo_mode 0x00013ea1 Thumb Code 28 drv_memc.o(i.drv_memc_set_ltpo_mode) + drv_memc_set_ltpo_pu_thres 0x00013ec1 Thumb Code 18 drv_memc.o(i.drv_memc_set_ltpo_pu_thres) + drv_memc_set_tear_mode 0x00013ed9 Thumb Code 16 drv_memc.o(i.drv_memc_set_tear_mode) + drv_memc_set_tear_waveform 0x00013eed Thumb Code 36 drv_memc.o(i.drv_memc_set_tear_waveform) + drv_memc_set_vidc_sync_cnt 0x00013f19 Thumb Code 16 drv_memc.o(i.drv_memc_set_vidc_sync_cnt) + drv_phy_test_clear 0x00013f2d Thumb Code 16 drv_phy_common.o(i.drv_phy_test_clear) + drv_phy_test_lock 0x00013f3d Thumb Code 24 drv_phy_common.o(i.drv_phy_test_lock) + drv_pwr_efuse_pd 0x00013f55 Thumb Code 36 drv_pwr.o(i.drv_pwr_efuse_pd) + drv_pwr_enter_deep_sleep_mode 0x00013f85 Thumb Code 60 drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode) + drv_pwr_enter_sleep_mode_ex 0x00013fd1 Thumb Code 34 drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex) + drv_pwr_enter_stop_sleep_mode 0x00014005 Thumb Code 132 drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode) + drv_pwr_exit_sleep_mode 0x0001409d Thumb Code 32 drv_pwr.o(i.drv_pwr_exit_sleep_mode) + drv_pwr_get_power_ready_st 0x000140c5 Thumb Code 10 drv_pwr.o(i.drv_pwr_get_power_ready_st) + drv_pwr_set_breath_screen_power_sel 0x000140d5 Thumb Code 34 drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel) + drv_pwr_set_digit_power_sel 0x000140fd Thumb Code 34 drv_pwr.o(i.drv_pwr_set_digit_power_sel) + drv_pwr_set_pll_clk 0x00014125 Thumb Code 30 drv_pwr.o(i.drv_pwr_set_pll_clk) + drv_pwr_set_wakeup_type 0x00014159 Thumb Code 40 drv_pwr.o(i.drv_pwr_set_wakeup_type) + drv_pwr_write_lock 0x00014185 Thumb Code 18 drv_pwr.o(i.drv_pwr_write_lock) + drv_rxbr_clear_pkt_buffer 0x000141a5 Thumb Code 12 drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer) + drv_rxbr_clear_status0 0x000141b5 Thumb Code 6 drv_rxbr.o(i.drv_rxbr_clear_status0) + drv_rxbr_enable_irq 0x000141c1 Thumb Code 90 drv_rxbr.o(i.drv_rxbr_enable_irq) + drv_rxbr_frame_drop_cfg 0x0001421d Thumb Code 18 drv_rxbr.o(i.drv_rxbr_frame_drop_cfg) + drv_rxbr_hline_rcv1_cfg 0x00014269 Thumb Code 14 drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg) + drv_rxbr_hline_rcv_cfg 0x0001427d Thumb Code 10 drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg) + drv_rxbr_register_irq1_callback 0x0001428d Thumb Code 6 drv_rxbr.o(i.drv_rxbr_register_irq1_callback) + drv_rxbr_set_ack_pkt_header 0x00014299 Thumb Code 18 drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header) + drv_rxbr_set_color_format 0x000142b1 Thumb Code 24 drv_rxbr.o(i.drv_rxbr_set_color_format) + drv_rxbr_set_filter_regs 0x000142cd Thumb Code 32 drv_rxbr.o(i.drv_rxbr_set_filter_regs) + drv_rxbr_set_inten 0x000142f1 Thumb Code 22 drv_rxbr.o(i.drv_rxbr_set_inten) + drv_rxbr_set_ltpo_drop_th 0x0001430d Thumb Code 18 drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th) + drv_rxbr_set_usr_cfg 0x00014325 Thumb Code 56 drv_rxbr.o(i.drv_rxbr_set_usr_cfg) + drv_rxbr_set_usr_col 0x00014365 Thumb Code 10 drv_rxbr.o(i.drv_rxbr_set_usr_col) + drv_rxbr_set_usr_row 0x00014375 Thumb Code 10 drv_rxbr.o(i.drv_rxbr_set_usr_row) + drv_se_init 0x00014385 Thumb Code 106 drv_se.o(i.drv_se_init) + drv_se_set_dsc 0x000143fd Thumb Code 162 drv_se.o(i.drv_se_set_dsc) + drv_se_set_lcdc 0x000144d1 Thumb Code 88 drv_se.o(i.drv_se_set_lcdc) + drv_se_set_memc 0x00014559 Thumb Code 54 drv_se.o(i.drv_se_set_memc) + drv_se_set_rxbr 0x000145c1 Thumb Code 158 drv_se.o(i.drv_se_set_rxbr) + drv_se_set_vidc 0x00014691 Thumb Code 122 drv_se.o(i.drv_se_set_vidc) + drv_se_start_rx 0x0001473d Thumb Code 16 drv_se.o(i.drv_se_start_rx) + drv_swire_enable 0x00014751 Thumb Code 24 drv_swire.o(i.drv_swire_enable) + drv_swire_get_pulse_count 0x0001476d Thumb Code 6 drv_swire.o(i.drv_swire_get_pulse_count) + drv_swire_register_callback 0x00014779 Thumb Code 6 drv_swire.o(i.drv_swire_register_callback) + drv_swire_set_bit_time 0x00014785 Thumb Code 18 drv_swire.o(i.drv_swire_set_bit_time) + drv_swire_set_int 0x0001479d Thumb Code 64 drv_swire.o(i.drv_swire_set_int) + drv_swire_set_power_down 0x000147e5 Thumb Code 24 drv_swire.o(i.drv_swire_set_power_down) + drv_swire_set_pulse_count 0x00014801 Thumb Code 6 drv_swire.o(i.drv_swire_set_pulse_count) + drv_swire_set_trig_mode 0x0001480d Thumb Code 24 drv_swire.o(i.drv_swire_set_trig_mode) + drv_sys_cfg_clear_all_int 0x00014829 Thumb Code 8 drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int) + drv_sys_cfg_clear_pending 0x00014835 Thumb Code 32 drv_sys_cfg.o(i.drv_sys_cfg_clear_pending) + drv_sys_cfg_sel_ap_rst_trig 0x0001485d Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig) + drv_sys_cfg_sel_gpio_group 0x00014881 Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group) + drv_sys_cfg_sel_int_trig 0x000148a5 Thumb Code 32 drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig) + drv_sys_cfg_sel_swire_timer 0x000148c9 Thumb Code 18 drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer) + drv_sys_cfg_set_int 0x000148e1 Thumb Code 30 drv_sys_cfg.o(i.drv_sys_cfg_set_int) + drv_timer_enable 0x0001491f Thumb Code 32 drv_timer.o(i.drv_timer_enable) + drv_timer_get_instance 0x00014941 Thumb Code 10 drv_timer.o(i.drv_timer_get_instance) + drv_timer_set_compare_val 0x0001498d Thumb Code 50 drv_timer.o(i.drv_timer_set_compare_val) + drv_timer_set_int 0x000149cd Thumb Code 68 drv_timer.o(i.drv_timer_set_int) + drv_timer_set_prescaler 0x00014a15 Thumb Code 36 drv_timer.o(i.drv_timer_set_prescaler) + drv_timer_set_repeat 0x00014a3d Thumb Code 12 drv_timer.o(i.drv_timer_set_repeat) + drv_tx_phy_test_enter 0x00014a4d Thumb Code 28 drv_dsi_tx.o(i.drv_tx_phy_test_enter) + drv_tx_phy_test_exit 0x00014a6d Thumb Code 28 drv_dsi_tx.o(i.drv_tx_phy_test_exit) + drv_tx_phy_test_write_code 0x00014a8d Thumb Code 34 drv_dsi_tx.o(i.drv_tx_phy_test_write_code) + drv_uart_abort_recv 0x00014ab5 Thumb Code 46 drv_uart.o(i.drv_uart_abort_recv) + drv_uart_abort_send 0x00014ae9 Thumb Code 46 drv_uart.o(i.drv_uart_abort_send) + drv_uart_config_int 0x00014b1d Thumb Code 20 drv_uart.o(i.drv_uart_config_int) + drv_uart_enable_int 0x00014b49 Thumb Code 84 drv_uart.o(i.drv_uart_enable_int) + drv_uart_get_instance 0x00014ba5 Thumb Code 36 drv_uart.o(i.drv_uart_get_instance) + drv_uart_init 0x00014bcd Thumb Code 206 drv_uart.o(i.drv_uart_init) + drv_uart_reset_rx_fifo 0x00014cd9 Thumb Code 28 drv_uart.o(i.drv_uart_reset_rx_fifo) + drv_uart_reset_tx_fifo 0x00014cf5 Thumb Code 28 drv_uart.o(i.drv_uart_reset_tx_fifo) + drv_uart_send_blocking 0x00014d11 Thumb Code 26 drv_uart.o(i.drv_uart_send_blocking) + drv_uart_set_baud_rate 0x00014d2b Thumb Code 84 drv_uart.o(i.drv_uart_set_baud_rate) + drv_uart_trans_create_handle 0x00014d81 Thumb Code 72 drv_uart.o(i.drv_uart_trans_create_handle) + drv_vidc_clear_irq 0x00014dcd Thumb Code 10 drv_vidc.o(i.drv_vidc_clear_irq) + drv_vidc_enable 0x00014ddd Thumb Code 26 drv_vidc.o(i.drv_vidc_enable) + drv_vidc_enable_irq 0x00014dfd Thumb Code 58 drv_vidc.o(i.drv_vidc_enable_irq) + drv_vidc_get_int_source 0x00014e3d Thumb Code 40 drv_vidc.o(i.drv_vidc_get_int_source) + drv_vidc_get_irq_status 0x00014e69 Thumb Code 20 drv_vidc.o(i.drv_vidc_get_irq_status) + drv_vidc_init_module_enable 0x00014e81 Thumb Code 36 drv_vidc.o(i.drv_vidc_init_module_enable) + drv_vidc_register_callback 0x00014ead Thumb Code 6 drv_vidc.o(i.drv_vidc_register_callback) + drv_vidc_reset 0x00014eb9 Thumb Code 8 drv_vidc.o(i.drv_vidc_reset) + drv_vidc_set_circ_mode_enable 0x00014ec5 Thumb Code 24 drv_vidc.o(i.drv_vidc_set_circ_mode_enable) + drv_vidc_set_dither_config 0x00014ee1 Thumb Code 50 drv_vidc.o(i.drv_vidc_set_dither_config) + drv_vidc_set_dst_parameter 0x00014f19 Thumb Code 86 drv_vidc.o(i.drv_vidc_set_dst_parameter) + drv_vidc_set_honly_hcoef0 0x00014f75 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_honly_hcoef0) + drv_vidc_set_honly_hinitb 0x00014f81 Thumb Code 38 drv_vidc.o(i.drv_vidc_set_honly_hinitb) + drv_vidc_set_honly_hinitr 0x00014fad Thumb Code 42 drv_vidc.o(i.drv_vidc_set_honly_hinitr) + drv_vidc_set_irqen 0x00014fdd Thumb Code 22 drv_vidc.o(i.drv_vidc_set_irqen) + drv_vidc_set_mirror 0x00014ff9 Thumb Code 16 drv_vidc.o(i.drv_vidc_set_mirror) + drv_vidc_set_pentile_swap 0x0001500d Thumb Code 20 drv_vidc.o(i.drv_vidc_set_pentile_swap) + drv_vidc_set_pu_ctrl 0x00015029 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_pu_ctrl) + drv_vidc_set_rotation 0x00015035 Thumb Code 18 drv_vidc.o(i.drv_vidc_set_rotation) + drv_vidc_set_scld_hcoef0 0x0001504d Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_hcoef0) + drv_vidc_set_scld_hcoef1 0x00015059 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_hcoef1) + drv_vidc_set_scld_step 0x00015065 Thumb Code 14 drv_vidc.o(i.drv_vidc_set_scld_step) + drv_vidc_set_scld_vcoef0 0x00015079 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_vcoef0) + drv_vidc_set_scld_vcoef1 0x00015085 Thumb Code 6 drv_vidc.o(i.drv_vidc_set_scld_vcoef1) + drv_vidc_set_src_parameter 0x00015091 Thumb Code 28 drv_vidc.o(i.drv_vidc_set_src_parameter) + drv_vidc_set_vintp_config 0x000150b1 Thumb Code 52 drv_vidc.o(i.drv_vidc_set_vintp_config) + fputc 0x000150e9 Thumb Code 42 tau_log.o(i.fputc) + google_p8p_demo 0x0001511d Thumb Code 48 p8p_demo.o(i.google_p8p_demo) + hal_dsi_rx_ctrl_create_handle 0x000151bd Thumb Code 60 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle) + hal_dsi_rx_ctrl_dcs_async_handler 0x000151fd Thumb Code 60 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler) + hal_dsi_rx_ctrl_deinit 0x0001523d Thumb Code 132 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit) + hal_dsi_rx_ctrl_get_max_ret_size 0x000152d1 Thumb Code 28 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size) + hal_dsi_rx_ctrl_init 0x000152f1 Thumb Code 158 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init) + hal_dsi_rx_ctrl_pre_init_pps 0x00015a99 Thumb Code 50 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps) + hal_dsi_rx_ctrl_send_ack_cmd 0x00015ad1 Thumb Code 210 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd) + hal_dsi_rx_ctrl_start 0x00015bf1 Thumb Code 42 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start) + hal_dsi_rx_ctrl_stop 0x00015c21 Thumb Code 42 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop) + hal_dsi_rx_ctrl_toggle_resolution 0x00015c51 Thumb Code 28 hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution) + hal_dsi_tx_ctrl_create_handle 0x00015ef1 Thumb Code 48 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle) + hal_dsi_tx_ctrl_deinit 0x00015f29 Thumb Code 102 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit) + hal_dsi_tx_ctrl_gen_a_tear_signal 0x00015f9d Thumb Code 34 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal) + hal_dsi_tx_ctrl_init 0x00015fc1 Thumb Code 110 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) + hal_dsi_tx_ctrl_set_overwrite_rgb 0x0001604d Thumb Code 8 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb) + hal_dsi_tx_ctrl_set_tear_mode 0x00016055 Thumb Code 10 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode) + hal_dsi_tx_ctrl_start 0x00016061 Thumb Code 134 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start) + hal_dsi_tx_ctrl_stop 0x000160f1 Thumb Code 52 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop) + hal_dsi_tx_ctrl_write_array_cmd 0x00016129 Thumb Code 238 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd) + hal_dsi_tx_ctrl_write_cmd 0x0001621d Thumb Code 202 hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd) + hal_gpio_config_pad 0x000168d5 Thumb Code 58 hal_gpio.o(i.hal_gpio_config_pad) + hal_gpio_ctrl_eint 0x00016911 Thumb Code 18 hal_gpio.o(i.hal_gpio_ctrl_eint) + hal_gpio_init_eint 0x00016929 Thumb Code 58 hal_gpio.o(i.hal_gpio_init_eint) + hal_gpio_init_input 0x00016969 Thumb Code 22 hal_gpio.o(i.hal_gpio_init_input) + hal_gpio_init_output 0x0001697f Thumb Code 28 hal_gpio.o(i.hal_gpio_init_output) + hal_gpio_reg_eint_cb 0x0001699d Thumb Code 22 hal_gpio.o(i.hal_gpio_reg_eint_cb) + hal_gpio_set_ap_reset_int 0x000169b9 Thumb Code 76 hal_gpio.o(i.hal_gpio_set_ap_reset_int) + hal_gpio_set_mode 0x00016a09 Thumb Code 92 hal_gpio.o(i.hal_gpio_set_mode) + hal_gpio_set_output_data 0x00016a69 Thumb Code 8 hal_gpio.o(i.hal_gpio_set_output_data) + hal_internal_sync_get_hight_performan_mode 0x00016a71 Thumb Code 10 hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode) + hal_internal_sync_input_resolution_change 0x00016a81 Thumb Code 336 hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change) + hal_internal_sync_register_lcdc_cb 0x00016c35 Thumb Code 8 hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb) + hal_internal_vsync_deinit 0x00016c41 Thumb Code 22 hal_internal_vsync.o(i.hal_internal_vsync_deinit) + hal_internal_vsync_get_rx_state 0x00016c61 Thumb Code 6 hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state) + hal_internal_vsync_get_sync_line 0x00016c6d Thumb Code 16 hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line) + hal_internal_vsync_get_tx_state 0x00016c81 Thumb Code 6 hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state) + hal_internal_vsync_init_rx 0x00016c8d Thumb Code 206 hal_internal_vsync.o(i.hal_internal_vsync_init_rx) + hal_internal_vsync_init_tx 0x00016d75 Thumb Code 194 hal_internal_vsync.o(i.hal_internal_vsync_init_tx) + hal_internal_vsync_set_rx_state 0x00016e3d Thumb Code 28 hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state) + hal_internal_vsync_set_tear_mode 0x00016e5d Thumb Code 424 hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode) + hal_internal_vsync_set_tx_state 0x00017049 Thumb Code 78 hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state) + hal_intl_dcs_init_sw_fltr 0x000170a1 Thumb Code 90 hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr) + hal_intl_dcs_set_auto_hw_filter 0x00017739 Thumb Code 130 hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter) + hal_intl_fb_cal_fb_info 0x000177f1 Thumb Code 780 hal_internal_fb.o(i.hal_intl_fb_cal_fb_info) + hal_intl_fb_get_memc_flow_mode 0x00017cbd Thumb Code 6 hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode) + hal_intl_fb_get_rx_fb_info 0x00017cc9 Thumb Code 12 hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info) + hal_intl_fb_get_tx_fb_info 0x00017cd9 Thumb Code 12 hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info) + hal_intl_fb_get_user_flow 0x00017ce9 Thumb Code 6 hal_internal_fb.o(i.hal_intl_fb_get_user_flow) + hal_intl_svs_deinit_rx 0x00017cf5 Thumb Code 32 hal_internal_svs.o(i.hal_intl_svs_deinit_rx) + hal_intl_svs_deinit_tx 0x00017d1d Thumb Code 10 hal_internal_svs.o(i.hal_intl_svs_deinit_tx) + hal_intl_svs_handle 0x00017d2d Thumb Code 24 hal_internal_svs.o(i.hal_intl_svs_handle) + hal_intl_svs_init_rx 0x00017d51 Thumb Code 120 hal_internal_svs.o(i.hal_intl_svs_init_rx) + hal_intl_svs_init_tx 0x00017dd1 Thumb Code 16 hal_internal_svs.o(i.hal_intl_svs_init_tx) + hal_intl_svs_set_rx_vtt 0x00017de5 Thumb Code 6 hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt) + hal_intl_svs_update_rxbr_clk 0x00017df1 Thumb Code 52 hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk) + hal_lcdc_displayproc_config 0x00017e39 Thumb Code 94 hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config) + hal_lcdc_postproc_config 0x00017f59 Thumb Code 276 hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config) + hal_lcdc_upscaler_config 0x000180e1 Thumb Code 202 hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config) + hal_nonshadow_func_update 0x000181c1 Thumb Code 180 hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) + hal_pwr_enter_deep_sleep_mode 0x0001827d Thumb Code 42 hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode) + hal_pwr_enter_normal_sleep_mode 0x000182a7 Thumb Code 8 hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode) + hal_pwr_enter_stop_sleep_mode 0x000182b1 Thumb Code 88 hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode) + hal_pwr_exit_sleep_mode 0x00018315 Thumb Code 10 hal_pwr.o(i.hal_pwr_exit_sleep_mode) + hal_pwr_get_vcc_power_ready 0x0001831f Thumb Code 8 hal_pwr.o(i.hal_pwr_get_vcc_power_ready) + hal_pwr_set_main_power 0x00018327 Thumb Code 8 hal_pwr.o(i.hal_pwr_set_main_power) + hal_pwr_set_sleep_mode_power 0x0001832f Thumb Code 8 hal_pwr.o(i.hal_pwr_set_sleep_mode_power) + hal_pwr_set_stop_sleep_wakeup_pin 0x00018339 Thumb Code 86 hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) + hal_swire_deinit 0x0001839d Thumb Code 60 hal_swire.o(i.hal_swire_deinit) + hal_swire_enable 0x000183dd Thumb Code 86 hal_swire.o(i.hal_swire_enable) + hal_swire_init 0x00018439 Thumb Code 74 hal_swire.o(i.hal_swire_init) + hal_swire_set_pulse 0x00018491 Thumb Code 32 hal_swire.o(i.hal_swire_set_pulse) + hal_swire_set_timer 0x000184b5 Thumb Code 60 hal_swire.o(i.hal_swire_set_timer) + hal_system_init 0x000184f5 Thumb Code 192 hal_system.o(i.hal_system_init) + hal_system_updata_sysclk 0x000185d9 Thumb Code 60 hal_system.o(i.hal_system_updata_sysclk) + hal_timer_deinit 0x00018629 Thumb Code 48 hal_timer.o(i.hal_timer_deinit) + hal_timer_init 0x00018659 Thumb Code 28 hal_timer.o(i.hal_timer_init) + hal_timer_set_repeat 0x00018675 Thumb Code 8 hal_timer.o(i.hal_timer_set_repeat) + hal_uart_init 0x000186ad Thumb Code 134 hal_uart.o(i.hal_uart_init) + hal_uart_send_blocking 0x00018741 Thumb Code 24 hal_uart.o(i.hal_uart_send_blocking) + hal_vsync_func_update 0x0001875d Thumb Code 18 hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) + hal_vsync_reset_lcdc_scaler 0x00018775 Thumb Code 206 hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler) + main 0x00018855 Thumb Code 32 main.o(i.main) + tau_log_init 0x00019195 Thumb Code 48 tau_log.o(i.tau_log_init) + tau_log_printf 0x000191c9 Thumb Code 116 tau_log.o(i.tau_log_printf) + tau_log_push_log 0x0001924d Thumb Code 118 tau_log.o(i.tau_log_push_log) + panel_init_code 0x000194f0 Data 8268 p8p_demo.o(.constdata) + Region$$Table$$Base 0x0001b7a4 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x0001b7c4 Number 0 anon$$obj.o(Region$$Table) + rd_51_val 0x00070018 Data 2 p8p_demo.o(.data) + rd_51_val2 0x0007001a Data 2 p8p_demo.o(.data) + pps 0x0007001c Data 128 p8p_demo.o(.data) + pps_fhd 0x0007009c Data 128 p8p_demo.o(.data) + value_51H 0x0007011c Data 1 p8p_demo.o(.data) + value_51L 0x0007011d Data 1 p8p_demo.o(.data) + sg_uart0_tx_handle 0x000701bc Data 4 hal_uart.o(.data) + sg_uart0_rx_handle 0x000701c0 Data 4 hal_uart.o(.data) + sg_uart1_tx_handle 0x000701c4 Data 4 hal_uart.o(.data) + sg_uart1_rx_handle 0x000701c8 Data 4 hal_uart.o(.data) + g_sof_gen_te_func 0x000701d8 Data 4 hal_internal_vsync.o(.data) + hal_internal_vsync_handle_callback 0x000701dc Data 4 hal_internal_vsync.o(.data) + hal_internal_disp_end_handle_callback 0x000701e0 Data 4 hal_internal_vsync.o(.data) + g_systick_cb_func 0x0007020c Data 4 drv_common.o(.data) + g_system_clock 0x00070210 Data 4 drv_common.o(.data) + g_system_delay_step 0x00070214 Data 1 drv_common.o(.data) + g_int_rxbr_irq0_cb_func 0x00070278 Data 4 drv_rxbr.o(.data) + g_int_rxbr_irq1_cb_func 0x0007027c Data 4 drv_rxbr.o(.data) + g_int_vidc_cb_func 0x00070280 Data 4 drv_vidc.o(.data) + dma_req_map 0x00070384 Data 144 drv_dma.o(.data) + __stdout 0x00070414 Data 4 stdout.o(.data) + g_vsync_handle 0x000706a0 Data 40 hal_internal_vsync.o(.bss) + sg_pro_motion_handle 0x000706c8 Data 28 hal_internal_vsync.o(.bss) + g_dcs_execute_table 0x000706e4 Data 2048 hal_internal_dcs.o(.bss) + g_rx_fb_info 0x00070fe4 Data 68 hal_internal_fb.o(.bss) + g_packet_fifo 0x000710ac Data 4204 dcs_packet_fifo.o(.bss) + __stack_limit 0x00072188 Data 0 startup_armcm0.o(STACK) + __initial_sp 0x00073188 Data 0 startup_armcm0.o(STACK) + + + +============================================================================== + +Memory Map of the image + + Image Entry point : 0x000100c1 + + Load Region LR_IROM2 (Base: 0x00010000, Size: 0x0000bbdc, Max: 0x00010000, ABSOLUTE, COMPRESSED[0x0000b930]) + + Execution Region ER_IROM2 (Exec base: 0x00010000, Load base: 0x00010000, Size: 0x0000b7c4, Max: 0x00010000, ABSOLUTE) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x00010000 0x00010000 0x000000c0 Data RO 323 RESET startup_armcm0.o + 0x000100c0 0x000100c0 0x00000000 Code RO 1882 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x000100c0 0x000100c0 0x00000004 Code RO 2190 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x000100c4 0x000100c4 0x00000004 Code RO 2193 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x000100c8 0x000100c8 0x00000000 Code RO 2195 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x000100c8 0x000100c8 0x00000000 Code RO 2197 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x000100c8 0x000100c8 0x00000008 Code RO 2198 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x000100d0 0x000100d0 0x00000000 Code RO 2200 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x000100d0 0x000100d0 0x00000000 Code RO 2202 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x000100d0 0x000100d0 0x00000004 Code RO 2191 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x000100d4 0x000100d4 0x00000078 Code RO 324 .text startup_armcm0.o + 0x0001014c 0x0001014c 0x0000002c Code RO 1885 .text mc_p.l(uidiv.o) + 0x00010178 0x00010178 0x00000028 Code RO 1887 .text mc_p.l(idiv.o) + 0x000101a0 0x000101a0 0x00000024 Code RO 1889 .text mc_p.l(memcpya.o) + 0x000101c4 0x000101c4 0x00000024 Code RO 1891 .text mc_p.l(memseta.o) + 0x000101e8 0x000101e8 0x0000000e Code RO 1893 .text mc_p.l(strlen.o) + 0x000101f6 0x000101f6 0x0000001a Code RO 1895 .text mc_p.l(memcmp.o) + 0x00010210 0x00010210 0x000000b2 Code RO 2160 .text mf_p.l(fadd.o) + 0x000102c2 0x000102c2 0x0000007a Code RO 2162 .text mf_p.l(fmul.o) + 0x0001033c 0x0001033c 0x0000007c Code RO 2164 .text mf_p.l(fdiv.o) + 0x000103b8 0x000103b8 0x00000018 Code RO 2166 .text mf_p.l(fscalb.o) + 0x000103d0 0x000103d0 0x00000164 Code RO 2168 .text mf_p.l(dadd.o) + 0x00010534 0x00010534 0x000000d0 Code RO 2170 .text mf_p.l(dmul.o) + 0x00010604 0x00010604 0x0000000e Code RO 2174 .text mf_p.l(ffltui.o) + 0x00010612 0x00010612 0x00000002 PAD + 0x00010614 0x00010614 0x0000001c Code RO 2176 .text mf_p.l(dfltui.o) + 0x00010630 0x00010630 0x00000028 Code RO 2178 .text mf_p.l(ffixui.o) + 0x00010658 0x00010658 0x0000003c Code RO 2180 .text mf_p.l(dfixui.o) + 0x00010694 0x00010694 0x00000028 Code RO 2182 .text mf_p.l(f2d.o) + 0x000106bc 0x000106bc 0x00000038 Code RO 2184 .text mf_p.l(d2f.o) + 0x000106f4 0x000106f4 0x00000014 Code RO 2186 .text mf_p.l(cfcmple.o) + 0x00010708 0x00010708 0x00000014 Code RO 2188 .text mf_p.l(cfrcmple.o) + 0x0001071c 0x0001071c 0x00000060 Code RO 2205 .text mc_p.l(uldiv.o) + 0x0001077c 0x0001077c 0x00000020 Code RO 2207 .text mc_p.l(llshl.o) + 0x0001079c 0x0001079c 0x00000022 Code RO 2209 .text mc_p.l(llushr.o) + 0x000107be 0x000107be 0x00000026 Code RO 2211 .text mc_p.l(llsshr.o) + 0x000107e4 0x000107e4 0x00000000 Code RO 2213 .text mc_p.l(iusefp.o) + 0x000107e4 0x000107e4 0x00000082 Code RO 2214 .text mf_p.l(fepilogue.o) + 0x00010866 0x00010866 0x000000be Code RO 2216 .text mf_p.l(depilogue.o) + 0x00010924 0x00010924 0x000000f0 Code RO 2220 .text mf_p.l(ddiv.o) + 0x00010a14 0x00010a14 0x00000040 Code RO 2222 .text mf_p.l(dfixul.o) + 0x00010a54 0x00010a54 0x00000028 Code RO 2224 .text mf_p.l(cdrcmple.o) + 0x00010a7c 0x00010a7c 0x00000024 Code RO 2226 .text mc_p.l(init.o) + 0x00010aa0 0x00010aa0 0x00000056 Code RO 2236 .text mc_p.l(__dczerorl2.o) + 0x00010af6 0x00010af6 0x00000002 PAD + 0x00010af8 0x00010af8 0x0000001c Code RO 964 i.AP_NRESET_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b14 0x00010b14 0x0000005c Code RO 1731 i.DMA_IRQn_Handler CVWL668.lib(drv_dma.o) + 0x00010b70 0x00010b70 0x0000000a Code RO 965 i.EXTI_INT0_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b7a 0x00010b7a 0x0000000a Code RO 966 i.EXTI_INT1_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b84 0x00010b84 0x0000000a Code RO 967 i.EXTI_INT2_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b8e 0x00010b8e 0x0000000a Code RO 968 i.EXTI_INT3_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010b98 0x00010b98 0x0000000a Code RO 969 i.EXTI_INT4_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010ba2 0x00010ba2 0x0000000a Code RO 970 i.EXTI_INT5_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010bac 0x00010bac 0x0000000a Code RO 971 i.EXTI_INT6_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010bb6 0x00010bb6 0x0000000a Code RO 972 i.EXTI_INT7_IRQn_Handler CVWL668.lib(drv_gpio.o) + 0x00010bc0 0x00010bc0 0x00000048 Code RO 887 i.HardFault_Handler CVWL668.lib(drv_common.o) + 0x00010c08 0x00010c08 0x00000100 Code RO 732 i.LCDC_IRQn_Handler CVWL668.lib(hal_internal_vsync.o) + 0x00010d08 0x00010d08 0x0000009a Code RO 1491 i.MEMC_IRQn_Handler CVWL668.lib(drv_memc.o) + 0x00010da2 0x00010da2 0x00000002 PAD + 0x00010da4 0x00010da4 0x000000b8 Code RO 1297 i.MIPI_TX_IRQn_Handler CVWL668.lib(drv_dsi_tx.o) + 0x00010e5c 0x00010e5c 0x00000030 Code RO 1126 i.SWIRE_IRQn_Handler CVWL668.lib(drv_swire.o) + 0x00010e8c 0x00010e8c 0x00000018 Code RO 888 i.SysTick_Handler CVWL668.lib(drv_common.o) + 0x00010ea4 0x00010ea4 0x0000000a Code RO 1169 i.TIMER0_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010eae 0x00010eae 0x0000000a Code RO 1170 i.TIMER1_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010eb8 0x00010eb8 0x0000000a Code RO 1171 i.TIMER2_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010ec2 0x00010ec2 0x0000000a Code RO 1172 i.TIMER3_IRQn_Handler CVWL668.lib(drv_timer.o) + 0x00010ecc 0x00010ecc 0x0000001c Code RO 1646 i.VIDC_IRQn_Handler CVWL668.lib(drv_vidc.o) + 0x00010ee8 0x00010ee8 0x0000001c Code RO 1557 i.VPRE1_IRQn_Handler CVWL668.lib(drv_rxbr.o) + 0x00010f04 0x00010f04 0x0000006c Code RO 798 i.VPRE_IRQn_Handler CVWL668.lib(hal_internal_dcs.o) + 0x00010f70 0x00010f70 0x00000020 Code RO 2132 i.__0printf mc_p.l(printfa.o) + 0x00010f90 0x00010f90 0x00000024 Code RO 2138 i.__0vsprintf mc_p.l(printfa.o) + 0x00010fb4 0x00010fb4 0x0000002e Code RO 2218 i.__ARM_clz mf_p.l(depilogue.o) + 0x00010fe2 0x00010fe2 0x0000001a Code RO 418 i.__ARM_common_switch8 CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00010ffc 0x00010ffc 0x00000002 Code RO 2231 i.__scatterload_null mc_p.l(handlers.o) + 0x00010ffe 0x00010ffe 0x00000002 PAD + 0x00011000 0x00011000 0x0000001c Data RO 895 .ARM.__at_0x11000 CVWL668.lib(drv_common.o) + 0x0001101c 0x0001101c 0x00000010 Data RO 688 .ARM.__at_0x1101C CVWL668.lib(tau_log.o) + 0x0001102c 0x0001102c 0x00000016 Data RO 471 .ARM.__at_0x1102C CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00011042 0x00011042 0x00000002 PAD + 0x00011044 0x00011044 0x00000364 Code RO 1236 i.MIPI_RX_IRQn_Handler CVWL668.lib(drv_dsi_rx.o) + 0x000113a8 0x000113a8 0x00000180 Code RO 1794 i.UART_IRQn_Handler CVWL668.lib(drv_uart.o) + 0x00011528 0x00011528 0x00000020 Code RO 1558 i.__NVIC_DisableIRQ CVWL668.lib(drv_rxbr.o) + 0x00011548 0x00011548 0x00000018 Code RO 1559 i.__NVIC_EnableIRQ CVWL668.lib(drv_rxbr.o) + 0x00011560 0x00011560 0x0000000e Code RO 2230 i.__scatterload_copy mc_p.l(handlers.o) + 0x0001156e 0x0001156e 0x0000000e Code RO 2232 i.__scatterload_zeroinit mc_p.l(handlers.o) + 0x0001157c 0x0001157c 0x00000174 Code RO 2139 i._fp_digits mc_p.l(printfa.o) + 0x000116f0 0x000116f0 0x000006ec Code RO 2140 i._printf_core mc_p.l(printfa.o) + 0x00011ddc 0x00011ddc 0x00000020 Code RO 2141 i._printf_post_padding mc_p.l(printfa.o) + 0x00011dfc 0x00011dfc 0x0000002c Code RO 2142 i._printf_pre_padding mc_p.l(printfa.o) + 0x00011e28 0x00011e28 0x0000000a Code RO 2144 i._sputc mc_p.l(printfa.o) + 0x00011e32 0x00011e32 0x00000002 PAD + 0x00011e34 0x00011e34 0x00000144 Code RO 95 i.ap_dcs_read p8p_demo.o + 0x00011f78 0x00011f78 0x00000094 Code RO 96 i.ap_dcs_set_backlight p8p_demo.o + 0x0001200c 0x0001200c 0x00000048 Code RO 97 i.ap_dcs_set_display_off p8p_demo.o + 0x00012054 0x00012054 0x000000a0 Code RO 98 i.ap_dcs_set_display_on p8p_demo.o + 0x000120f4 0x000120f4 0x00000094 Code RO 99 i.ap_dcs_set_enter_sleep_mode p8p_demo.o + 0x00012188 0x00012188 0x00000040 Code RO 101 i.ap_dcs_set_exit_sleep_mode p8p_demo.o + 0x000121c8 0x000121c8 0x00000034 Code RO 102 i.ap_dcs_set_frame_change p8p_demo.o + 0x000121fc 0x000121fc 0x00000058 Code RO 103 i.ap_rstn_pull_down_cb p8p_demo.o + 0x00012254 0x00012254 0x0000001c Code RO 104 i.ap_rstn_pull_high_cb p8p_demo.o + 0x00012270 0x00012270 0x0000004a Code RO 105 i.ap_set_FPS_53 p8p_demo.o + 0x000122ba 0x000122ba 0x0000002c Code RO 106 i.app_display_init p8p_demo.o + 0x000122e6 0x000122e6 0x00000002 PAD + 0x000122e8 0x000122e8 0x0000001c Code RO 107 i.app_gpio_init p8p_demo.o + 0x00012304 0x00012304 0x00000034 Code RO 108 i.app_init_panel p8p_demo.o + 0x00012338 0x00012338 0x00000120 Code RO 109 i.app_mipi_rx_init p8p_demo.o + 0x00012458 0x00012458 0x00000100 Code RO 110 i.app_mipi_tx_init p8p_demo.o + 0x00012558 0x00012558 0x000000a4 Code RO 111 i.app_mipi_tx_start p8p_demo.o + 0x000125fc 0x000125fc 0x0000006c Code RO 112 i.app_system_process p8p_demo.o + 0x00012668 0x00012668 0x00000044 Code RO 113 i.app_system_resume p8p_demo.o + 0x000126ac 0x000126ac 0x00000190 Code RO 114 i.app_system_suspend p8p_demo.o + 0x0001283c 0x0001283c 0x0000002e Code RO 115 i.app_tx_panel_reset p8p_demo.o + 0x0001286a 0x0001286a 0x00000002 PAD + 0x0001286c 0x0001286c 0x00000018 Code RO 297 i.board_Init board.o + 0x00012884 0x00012884 0x000000c8 Code RO 1879 i.ceil m_ps.l(ceil.o) + 0x0001294c 0x0001294c 0x0000002c Code RO 733 i.check_mipi_rx_tx_video_info CVWL668.lib(hal_internal_vsync.o) + 0x00012978 0x00012978 0x00000088 Code RO 799 i.check_pkt_buf_rev CVWL668.lib(hal_internal_dcs.o) + 0x00012a00 0x00012a00 0x00000058 Code RO 1202 i.dcs_packet_fifo_alloc CVWL668.lib(dcs_packet_fifo.o) + 0x00012a58 0x00012a58 0x00000018 Code RO 1203 i.dcs_packet_fifo_init CVWL668.lib(dcs_packet_fifo.o) + 0x00012a70 0x00012a70 0x00000044 Code RO 1204 i.dcs_packet_free_fifo_header CVWL668.lib(dcs_packet_fifo.o) + 0x00012ab4 0x00012ab4 0x00000024 Code RO 1205 i.dcs_packet_get_fifo_header CVWL668.lib(dcs_packet_fifo.o) + 0x00012ad8 0x00012ad8 0x00000018 Code RO 675 i.delayMs CVWL668.lib(tau_delay.o) + 0x00012af0 0x00012af0 0x0000002c Code RO 676 i.delayUs CVWL668.lib(tau_delay.o) + 0x00012b1c 0x00012b1c 0x00000008 Code RO 893 i.drv_common_system_init CVWL668.lib(drv_common.o) + 0x00012b24 0x00012b24 0x0000003c Code RO 912 i.drv_crgu_enable_clock CVWL668.lib(drv_crgu.o) + 0x00012b60 0x00012b60 0x00000068 Code RO 915 i.drv_crgu_get_rxbr_clk CVWL668.lib(drv_crgu.o) + 0x00012bc8 0x00012bc8 0x00000010 Code RO 918 i.drv_crgu_reset_modules CVWL668.lib(drv_crgu.o) + 0x00012bd8 0x00012bd8 0x00000028 Code RO 919 i.drv_crgu_set_ahb_clk CVWL668.lib(drv_crgu.o) + 0x00012c00 0x00012c00 0x00000010 Code RO 920 i.drv_crgu_set_clock_div CVWL668.lib(drv_crgu.o) + 0x00012c10 0x00012c10 0x0000003c Code RO 922 i.drv_crgu_set_dpi_clk CVWL668.lib(drv_crgu.o) + 0x00012c4c 0x00012c4c 0x00000038 Code RO 923 i.drv_crgu_set_dsc_clk CVWL668.lib(drv_crgu.o) + 0x00012c84 0x00012c84 0x00000028 Code RO 924 i.drv_crgu_set_fb_clk CVWL668.lib(drv_crgu.o) + 0x00012cac 0x00012cac 0x00000028 Code RO 925 i.drv_crgu_set_lcdc_clk CVWL668.lib(drv_crgu.o) + 0x00012cd4 0x00012cd4 0x00000018 Code RO 926 i.drv_crgu_set_reset CVWL668.lib(drv_crgu.o) + 0x00012cec 0x00012cec 0x00000028 Code RO 927 i.drv_crgu_set_rxbr_clk CVWL668.lib(drv_crgu.o) + 0x00012d14 0x00012d14 0x00000028 Code RO 928 i.drv_crgu_set_vidc_clk CVWL668.lib(drv_crgu.o) + 0x00012d3c 0x00012d3c 0x00000018 Code RO 1733 i.drv_dma_clear_status CVWL668.lib(drv_dma.o) + 0x00012d54 0x00012d54 0x00000014 Code RO 1739 i.drv_dma_get_int_source CVWL668.lib(drv_dma.o) + 0x00012d68 0x00012d68 0x0000001c Code RO 952 i.drv_dsc_dec_disable CVWL668.lib(drv_dsc_dec.o) + 0x00012d84 0x00012d84 0x00000038 Code RO 953 i.drv_dsc_dec_enable CVWL668.lib(drv_dsc_dec.o) + 0x00012dbc 0x00012dbc 0x00000020 Code RO 954 i.drv_dsc_dec_get_nslc CVWL668.lib(drv_dsc_dec.o) + 0x00012ddc 0x00012ddc 0x0000001c Code RO 955 i.drv_dsc_dec_set_irqen CVWL668.lib(drv_dsc_dec.o) + 0x00012df8 0x00012df8 0x0000010c Code RO 1237 i.drv_dsi_rx_calc_ipi_tx_delay CVWL668.lib(drv_dsi_rx.o) + 0x00012f04 0x00012f04 0x00000040 Code RO 1238 i.drv_dsi_rx_enable_irq CVWL668.lib(drv_dsi_rx.o) + 0x00012f44 0x00012f44 0x00000050 Code RO 1240 i.drv_dsi_rx_get_color_bpp CVWL668.lib(drv_dsi_rx.o) + 0x00012f94 0x00012f94 0x0000001c Code RO 1241 i.drv_dsi_rx_get_color_pcc CVWL668.lib(drv_dsi_rx.o) + 0x00012fb0 0x00012fb0 0x00000010 Code RO 1242 i.drv_dsi_rx_get_compression_en CVWL668.lib(drv_dsi_rx.o) + 0x00012fc0 0x00012fc0 0x00000010 Code RO 1243 i.drv_dsi_rx_get_ddi_crc_en CVWL668.lib(drv_dsi_rx.o) + 0x00012fd0 0x00012fd0 0x0000000c Code RO 1245 i.drv_dsi_rx_get_max_ret_size CVWL668.lib(drv_dsi_rx.o) + 0x00012fdc 0x00012fdc 0x00000018 Code RO 1248 i.drv_dsi_rx_power_up CVWL668.lib(drv_dsi_rx.o) + 0x00012ff4 0x00012ff4 0x0000001c Code RO 1249 i.drv_dsi_rx_set_check_crc CVWL668.lib(drv_dsi_rx.o) + 0x00013010 0x00013010 0x00000024 Code RO 1250 i.drv_dsi_rx_set_ctrl_cfg CVWL668.lib(drv_dsi_rx.o) + 0x00013034 0x00013034 0x00000010 Code RO 1251 i.drv_dsi_rx_set_ddi_cfg CVWL668.lib(drv_dsi_rx.o) + 0x00013044 0x00013044 0x0000001c Code RO 1252 i.drv_dsi_rx_set_ddi_crc_en CVWL668.lib(drv_dsi_rx.o) + 0x00013060 0x00013060 0x0000000c Code RO 1255 i.drv_dsi_rx_set_inten CVWL668.lib(drv_dsi_rx.o) + 0x0001306c 0x0001306c 0x00000010 Code RO 1256 i.drv_dsi_rx_set_ipi_cfg CVWL668.lib(drv_dsi_rx.o) + 0x0001307c 0x0001307c 0x0000001c Code RO 1258 i.drv_dsi_rx_set_ipi_ycbcr_frmt CVWL668.lib(drv_dsi_rx.o) + 0x00013098 0x00013098 0x00000014 Code RO 1259 i.drv_dsi_rx_set_lane_swap CVWL668.lib(drv_dsi_rx.o) + 0x000130ac 0x000130ac 0x00000024 Code RO 1260 i.drv_dsi_rx_set_resp_cnt CVWL668.lib(drv_dsi_rx.o) + 0x000130d0 0x000130d0 0x0000001c Code RO 1261 i.drv_dsi_rx_set_tear_resp_en CVWL668.lib(drv_dsi_rx.o) + 0x000130ec 0x000130ec 0x00000100 Code RO 1262 i.drv_dsi_rx_set_up_phy CVWL668.lib(drv_dsi_rx.o) + 0x000131ec 0x000131ec 0x00000018 Code RO 1263 i.drv_dsi_rx_shut_down CVWL668.lib(drv_dsi_rx.o) + 0x00013204 0x00013204 0x00000018 Code RO 1299 i.drv_dsi_tx_command_header CVWL668.lib(drv_dsi_tx.o) + 0x0001321c 0x0001321c 0x00000058 Code RO 1300 i.drv_dsi_tx_command_mode_cfg CVWL668.lib(drv_dsi_tx.o) + 0x00013274 0x00013274 0x0000000c Code RO 1301 i.drv_dsi_tx_command_put_payload CVWL668.lib(drv_dsi_tx.o) + 0x00013280 0x00013280 0x00000020 Code RO 1302 i.drv_dsi_tx_config_eotp CVWL668.lib(drv_dsi_tx.o) + 0x000132a0 0x000132a0 0x0000000c Code RO 1303 i.drv_dsi_tx_config_int CVWL668.lib(drv_dsi_tx.o) + 0x000132ac 0x000132ac 0x00000010 Code RO 1304 i.drv_dsi_tx_dpi_lpcmd_time CVWL668.lib(drv_dsi_tx.o) + 0x000132bc 0x000132bc 0x00000010 Code RO 1305 i.drv_dsi_tx_dpi_mode CVWL668.lib(drv_dsi_tx.o) + 0x000132cc 0x000132cc 0x00000024 Code RO 1306 i.drv_dsi_tx_dpi_polarity CVWL668.lib(drv_dsi_tx.o) + 0x000132f0 0x000132f0 0x0000000c Code RO 1307 i.drv_dsi_tx_edpi_cmd_size CVWL668.lib(drv_dsi_tx.o) + 0x000132fc 0x000132fc 0x0000000c Code RO 1309 i.drv_dsi_tx_get_cmd_status CVWL668.lib(drv_dsi_tx.o) + 0x00013308 0x00013308 0x0000000c Code RO 1311 i.drv_dsi_tx_mode CVWL668.lib(drv_dsi_tx.o) + 0x00013314 0x00013314 0x0000001c Code RO 1312 i.drv_dsi_tx_phy_clock_lane_auto_lp CVWL668.lib(drv_dsi_tx.o) + 0x00013330 0x00013330 0x00000020 Code RO 1313 i.drv_dsi_tx_phy_clock_lane_req_hs CVWL668.lib(drv_dsi_tx.o) + 0x00013350 0x00013350 0x00000010 Code RO 1315 i.drv_dsi_tx_phy_lane_mode CVWL668.lib(drv_dsi_tx.o) + 0x00013360 0x00013360 0x00000068 Code RO 1318 i.drv_dsi_tx_phy_status_ready CVWL668.lib(drv_dsi_tx.o) + 0x000133c8 0x000133c8 0x00000044 Code RO 1319 i.drv_dsi_tx_phy_status_stopstate CVWL668.lib(drv_dsi_tx.o) + 0x0001340c 0x0001340c 0x00000150 Code RO 1321 i.drv_dsi_tx_phy_test_setup CVWL668.lib(drv_dsi_tx.o) + 0x0001355c 0x0001355c 0x00000020 Code RO 1322 i.drv_dsi_tx_phy_time_cfg CVWL668.lib(drv_dsi_tx.o) + 0x0001357c 0x0001357c 0x0000000c Code RO 1326 i.drv_dsi_tx_powerup CVWL668.lib(drv_dsi_tx.o) + 0x00013588 0x00013588 0x00000024 Code RO 1327 i.drv_dsi_tx_response_mode CVWL668.lib(drv_dsi_tx.o) + 0x000135ac 0x000135ac 0x0000001c Code RO 1330 i.drv_dsi_tx_set_bta_ack CVWL668.lib(drv_dsi_tx.o) + 0x000135c8 0x000135c8 0x00000014 Code RO 1331 i.drv_dsi_tx_set_esc_div CVWL668.lib(drv_dsi_tx.o) + 0x000135dc 0x000135dc 0x00000040 Code RO 1332 i.drv_dsi_tx_set_int CVWL668.lib(drv_dsi_tx.o) + 0x0001361c 0x0001361c 0x00000018 Code RO 1333 i.drv_dsi_tx_set_time_out_div CVWL668.lib(drv_dsi_tx.o) + 0x00013634 0x00013634 0x00000014 Code RO 1334 i.drv_dsi_tx_set_video_chunk CVWL668.lib(drv_dsi_tx.o) + 0x00013648 0x00013648 0x00000024 Code RO 1335 i.drv_dsi_tx_set_video_timing CVWL668.lib(drv_dsi_tx.o) + 0x0001366c 0x0001366c 0x0000000c Code RO 1337 i.drv_dsi_tx_shutdown CVWL668.lib(drv_dsi_tx.o) + 0x00013678 0x00013678 0x0000002c Code RO 1338 i.drv_dsi_tx_timeout_cfg CVWL668.lib(drv_dsi_tx.o) + 0x000136a4 0x000136a4 0x000000e8 Code RO 1341 i.drv_dsi_tx_video_mode_cfg CVWL668.lib(drv_dsi_tx.o) + 0x0001378c 0x0001378c 0x00000036 Code RO 1839 i.drv_efuse_enter_inactive CVWL668.lib(drv_efuse.o) + 0x000137c2 0x000137c2 0x0000000c Code RO 1842 i.drv_efuse_int_enable CVWL668.lib(drv_efuse.o) + 0x000137ce 0x000137ce 0x0000003a Code RO 1843 i.drv_efuse_read CVWL668.lib(drv_efuse.o) + 0x00013808 0x00013808 0x00000018 Code RO 1844 i.drv_efuse_read_req CVWL668.lib(drv_efuse.o) + 0x00013820 0x00013820 0x00000024 Code RO 975 i.drv_gpio_handle_int CVWL668.lib(drv_gpio.o) + 0x00013844 0x00013844 0x0000000c Code RO 976 i.drv_gpio_register_ap_reset_callback CVWL668.lib(drv_gpio.o) + 0x00013850 0x00013850 0x00000014 Code RO 977 i.drv_gpio_register_callback CVWL668.lib(drv_gpio.o) + 0x00013864 0x00013864 0x00000044 Code RO 979 i.drv_gpio_set_int CVWL668.lib(drv_gpio.o) + 0x000138a8 0x000138a8 0x00000020 Code RO 980 i.drv_gpio_set_ioe CVWL668.lib(drv_gpio.o) + 0x000138c8 0x000138c8 0x00000014 Code RO 981 i.drv_gpio_set_mode CVWL668.lib(drv_gpio.o) + 0x000138dc 0x000138dc 0x00000020 Code RO 528 i.drv_gpio_set_output_data CVWL668.lib(hal_gpio.o) + 0x000138fc 0x000138fc 0x00000028 Code RO 1403 i.drv_lcdc_bcsa_config CVWL668.lib(drv_lcdc.o) + 0x00013924 0x00013924 0x0000002c Code RO 1404 i.drv_lcdc_cfg_int_frame CVWL668.lib(drv_lcdc.o) + 0x00013950 0x00013950 0x00000018 Code RO 1405 i.drv_lcdc_clear_int CVWL668.lib(drv_lcdc.o) + 0x00013968 0x00013968 0x00000034 Code RO 1407 i.drv_lcdc_cmd_start CVWL668.lib(drv_lcdc.o) + 0x0001399c 0x0001399c 0x00000014 Code RO 1408 i.drv_lcdc_config_acc_command_mode CVWL668.lib(drv_lcdc.o) + 0x000139b0 0x000139b0 0x00000038 Code RO 1409 i.drv_lcdc_config_int CVWL668.lib(drv_lcdc.o) + 0x000139e8 0x000139e8 0x00000028 Code RO 1410 i.drv_lcdc_config_int_single CVWL668.lib(drv_lcdc.o) + 0x00013a10 0x00013a10 0x00000018 Code RO 1411 i.drv_lcdc_config_overwrite_rgb CVWL668.lib(drv_lcdc.o) + 0x00013a28 0x00013a28 0x00000050 Code RO 1412 i.drv_lcdc_config_src_parameter CVWL668.lib(drv_lcdc.o) + 0x00013a78 0x00013a78 0x00000010 Code RO 1413 i.drv_lcdc_crop_hact CVWL668.lib(drv_lcdc.o) + 0x00013a88 0x00013a88 0x00000038 Code RO 1414 i.drv_lcdc_ctrl_flow CVWL668.lib(drv_lcdc.o) + 0x00013ac0 0x00013ac0 0x00000030 Code RO 1415 i.drv_lcdc_dith_config CVWL668.lib(drv_lcdc.o) + 0x00013af0 0x00013af0 0x0000003c Code RO 1417 i.drv_lcdc_edge_dect_config CVWL668.lib(drv_lcdc.o) + 0x00013b2c 0x00013b2c 0x00000064 Code RO 1418 i.drv_lcdc_edge_enh_config CVWL668.lib(drv_lcdc.o) + 0x00013b90 0x00013b90 0x00000024 Code RO 1419 i.drv_lcdc_enable_shadow_reg CVWL668.lib(drv_lcdc.o) + 0x00013bb4 0x00013bb4 0x0000001c Code RO 1420 i.drv_lcdc_endianness_config CVWL668.lib(drv_lcdc.o) + 0x00013bd0 0x00013bd0 0x00000020 Code RO 1421 i.drv_lcdc_fc_config CVWL668.lib(drv_lcdc.o) + 0x00013bf0 0x00013bf0 0x00000024 Code RO 1423 i.drv_lcdc_fldc_config CVWL668.lib(drv_lcdc.o) + 0x00013c14 0x00013c14 0x00000024 Code RO 1424 i.drv_lcdc_function_disable CVWL668.lib(drv_lcdc.o) + 0x00013c38 0x00013c38 0x00000024 Code RO 1425 i.drv_lcdc_function_enable CVWL668.lib(drv_lcdc.o) + 0x00013c5c 0x00013c5c 0x0000003c Code RO 1436 i.drv_lcdc_set_int CVWL668.lib(drv_lcdc.o) + 0x00013c98 0x00013c98 0x0000001c Code RO 1437 i.drv_lcdc_set_prefetch CVWL668.lib(drv_lcdc.o) + 0x00013cb4 0x00013cb4 0x0000001c Code RO 1438 i.drv_lcdc_set_tear_line CVWL668.lib(drv_lcdc.o) + 0x00013cd0 0x00013cd0 0x00000010 Code RO 1440 i.drv_lcdc_stop_display CVWL668.lib(drv_lcdc.o) + 0x00013ce0 0x00013ce0 0x0000003c Code RO 1442 i.drv_lcdc_vid_hw_start CVWL668.lib(drv_lcdc.o) + 0x00013d1c 0x00013d1c 0x00000018 Code RO 1444 i.drv_lcdc_vintp_mode_config CVWL668.lib(drv_lcdc.o) + 0x00013d34 0x00013d34 0x00000014 Code RO 1492 i.drv_memc_clear_status CVWL668.lib(drv_memc.o) + 0x00013d48 0x00013d48 0x00000040 Code RO 1493 i.drv_memc_enable_irq CVWL668.lib(drv_memc.o) + 0x00013d88 0x00013d88 0x00000010 Code RO 1494 i.drv_memc_gen_a_tear_signal CVWL668.lib(drv_memc.o) + 0x00013d98 0x00013d98 0x00000018 Code RO 1495 i.drv_memc_get_status CVWL668.lib(drv_memc.o) + 0x00013db0 0x00013db0 0x00000010 Code RO 1496 i.drv_memc_get_tear_mode CVWL668.lib(drv_memc.o) + 0x00013dc0 0x00013dc0 0x0000001c Code RO 1497 i.drv_memc_rate_transfer_sel CVWL668.lib(drv_memc.o) + 0x00013ddc 0x00013ddc 0x00000014 Code RO 1498 i.drv_memc_sel_vsync CVWL668.lib(drv_memc.o) + 0x00013df0 0x00013df0 0x00000018 Code RO 1499 i.drv_memc_set_active_height CVWL668.lib(drv_memc.o) + 0x00013e08 0x00013e08 0x0000001c Code RO 1500 i.drv_memc_set_circ_mode_enable CVWL668.lib(drv_memc.o) + 0x00013e24 0x00013e24 0x00000014 Code RO 1501 i.drv_memc_set_data_mode CVWL668.lib(drv_memc.o) + 0x00013e38 0x00013e38 0x00000018 Code RO 1504 i.drv_memc_set_double_buffer CVWL668.lib(drv_memc.o) + 0x00013e50 0x00013e50 0x0000001c Code RO 1508 i.drv_memc_set_frame_drop_select CVWL668.lib(drv_memc.o) + 0x00013e6c 0x00013e6c 0x00000018 Code RO 1509 i.drv_memc_set_fs_en_conditions CVWL668.lib(drv_memc.o) + 0x00013e84 0x00013e84 0x0000001c Code RO 1511 i.drv_memc_set_lcdc_st_conditions CVWL668.lib(drv_memc.o) + 0x00013ea0 0x00013ea0 0x00000020 Code RO 1512 i.drv_memc_set_ltpo_mode CVWL668.lib(drv_memc.o) + 0x00013ec0 0x00013ec0 0x00000018 Code RO 1513 i.drv_memc_set_ltpo_pu_thres CVWL668.lib(drv_memc.o) + 0x00013ed8 0x00013ed8 0x00000014 Code RO 1517 i.drv_memc_set_tear_mode CVWL668.lib(drv_memc.o) + 0x00013eec 0x00013eec 0x0000002c Code RO 1518 i.drv_memc_set_tear_waveform CVWL668.lib(drv_memc.o) + 0x00013f18 0x00013f18 0x00000014 Code RO 1520 i.drv_memc_set_vidc_sync_cnt CVWL668.lib(drv_memc.o) + 0x00013f2c 0x00013f2c 0x00000010 Code RO 1862 i.drv_phy_test_clear CVWL668.lib(drv_phy_common.o) + 0x00013f3c 0x00013f3c 0x00000018 Code RO 1863 i.drv_phy_test_lock CVWL668.lib(drv_phy_common.o) + 0x00013f54 0x00013f54 0x00000030 Code RO 1011 i.drv_pwr_efuse_pd CVWL668.lib(drv_pwr.o) + 0x00013f84 0x00013f84 0x0000004c Code RO 1013 i.drv_pwr_enter_deep_sleep_mode CVWL668.lib(drv_pwr.o) + 0x00013fd0 0x00013fd0 0x00000034 Code RO 1015 i.drv_pwr_enter_sleep_mode_ex CVWL668.lib(drv_pwr.o) + 0x00014004 0x00014004 0x00000098 Code RO 1016 i.drv_pwr_enter_stop_sleep_mode CVWL668.lib(drv_pwr.o) + 0x0001409c 0x0001409c 0x00000028 Code RO 1017 i.drv_pwr_exit_sleep_mode CVWL668.lib(drv_pwr.o) + 0x000140c4 0x000140c4 0x00000010 Code RO 1020 i.drv_pwr_get_power_ready_st CVWL668.lib(drv_pwr.o) + 0x000140d4 0x000140d4 0x00000028 Code RO 1052 i.drv_pwr_set_breath_screen_power_sel CVWL668.lib(drv_pwr.o) + 0x000140fc 0x000140fc 0x00000028 Code RO 1053 i.drv_pwr_set_digit_power_sel CVWL668.lib(drv_pwr.o) + 0x00014124 0x00014124 0x00000034 Code RO 1056 i.drv_pwr_set_pll_clk CVWL668.lib(drv_pwr.o) + 0x00014158 0x00014158 0x0000002c Code RO 1060 i.drv_pwr_set_wakeup_type CVWL668.lib(drv_pwr.o) + 0x00014184 0x00014184 0x00000020 Code RO 1063 i.drv_pwr_write_lock CVWL668.lib(drv_pwr.o) + 0x000141a4 0x000141a4 0x00000010 Code RO 1560 i.drv_rxbr_clear_pkt_buffer CVWL668.lib(drv_rxbr.o) + 0x000141b4 0x000141b4 0x0000000c Code RO 1561 i.drv_rxbr_clear_status0 CVWL668.lib(drv_rxbr.o) + 0x000141c0 0x000141c0 0x0000005a Code RO 1564 i.drv_rxbr_enable_irq CVWL668.lib(drv_rxbr.o) + 0x0001421a 0x0001421a 0x00000002 PAD + 0x0001421c 0x0001421c 0x0000001c Code RO 1565 i.drv_rxbr_frame_drop_cfg CVWL668.lib(drv_rxbr.o) + 0x00014238 0x00014238 0x00000018 Code RO 734 i.drv_rxbr_get_int_source CVWL668.lib(hal_internal_vsync.o) + 0x00014250 0x00014250 0x00000018 Code RO 800 i.drv_rxbr_get_status0 CVWL668.lib(hal_internal_dcs.o) + 0x00014268 0x00014268 0x00000014 Code RO 1575 i.drv_rxbr_hline_rcv1_cfg CVWL668.lib(drv_rxbr.o) + 0x0001427c 0x0001427c 0x00000010 Code RO 1576 i.drv_rxbr_hline_rcv_cfg CVWL668.lib(drv_rxbr.o) + 0x0001428c 0x0001428c 0x0000000c Code RO 1578 i.drv_rxbr_register_irq1_callback CVWL668.lib(drv_rxbr.o) + 0x00014298 0x00014298 0x00000018 Code RO 1579 i.drv_rxbr_set_ack_pkt_header CVWL668.lib(drv_rxbr.o) + 0x000142b0 0x000142b0 0x0000001c Code RO 1584 i.drv_rxbr_set_color_format CVWL668.lib(drv_rxbr.o) + 0x000142cc 0x000142cc 0x00000024 Code RO 1587 i.drv_rxbr_set_filter_regs CVWL668.lib(drv_rxbr.o) + 0x000142f0 0x000142f0 0x0000001c Code RO 1588 i.drv_rxbr_set_inten CVWL668.lib(drv_rxbr.o) + 0x0001430c 0x0001430c 0x00000018 Code RO 1589 i.drv_rxbr_set_ltpo_drop_th CVWL668.lib(drv_rxbr.o) + 0x00014324 0x00014324 0x00000040 Code RO 1593 i.drv_rxbr_set_usr_cfg CVWL668.lib(drv_rxbr.o) + 0x00014364 0x00014364 0x00000010 Code RO 1594 i.drv_rxbr_set_usr_col CVWL668.lib(drv_rxbr.o) + 0x00014374 0x00014374 0x00000010 Code RO 1595 i.drv_rxbr_set_usr_row CVWL668.lib(drv_rxbr.o) + 0x00014384 0x00014384 0x00000078 Code RO 1217 i.drv_se_init CVWL668.lib(drv_se.o) + 0x000143fc 0x000143fc 0x000000d4 Code RO 1218 i.drv_se_set_dsc CVWL668.lib(drv_se.o) + 0x000144d0 0x000144d0 0x00000088 Code RO 1219 i.drv_se_set_lcdc CVWL668.lib(drv_se.o) + 0x00014558 0x00014558 0x00000068 Code RO 1220 i.drv_se_set_memc CVWL668.lib(drv_se.o) + 0x000145c0 0x000145c0 0x000000d0 Code RO 1221 i.drv_se_set_rxbr CVWL668.lib(drv_se.o) + 0x00014690 0x00014690 0x000000ac Code RO 1222 i.drv_se_set_vidc CVWL668.lib(drv_se.o) + 0x0001473c 0x0001473c 0x00000014 Code RO 1223 i.drv_se_start_rx CVWL668.lib(drv_se.o) + 0x00014750 0x00014750 0x0000001c Code RO 1127 i.drv_swire_enable CVWL668.lib(drv_swire.o) + 0x0001476c 0x0001476c 0x0000000c Code RO 1128 i.drv_swire_get_pulse_count CVWL668.lib(drv_swire.o) + 0x00014778 0x00014778 0x0000000c Code RO 1129 i.drv_swire_register_callback CVWL668.lib(drv_swire.o) + 0x00014784 0x00014784 0x00000018 Code RO 1130 i.drv_swire_set_bit_time CVWL668.lib(drv_swire.o) + 0x0001479c 0x0001479c 0x00000048 Code RO 1131 i.drv_swire_set_int CVWL668.lib(drv_swire.o) + 0x000147e4 0x000147e4 0x0000001c Code RO 1132 i.drv_swire_set_power_down CVWL668.lib(drv_swire.o) + 0x00014800 0x00014800 0x0000000c Code RO 1133 i.drv_swire_set_pulse_count CVWL668.lib(drv_swire.o) + 0x0001480c 0x0001480c 0x0000001c Code RO 1134 i.drv_swire_set_trig_mode CVWL668.lib(drv_swire.o) + 0x00014828 0x00014828 0x0000000c Code RO 1149 i.drv_sys_cfg_clear_all_int CVWL668.lib(drv_sys_cfg.o) + 0x00014834 0x00014834 0x00000028 Code RO 1150 i.drv_sys_cfg_clear_pending CVWL668.lib(drv_sys_cfg.o) + 0x0001485c 0x0001485c 0x00000024 Code RO 1151 i.drv_sys_cfg_sel_ap_rst_trig CVWL668.lib(drv_sys_cfg.o) + 0x00014880 0x00014880 0x00000024 Code RO 1153 i.drv_sys_cfg_sel_gpio_group CVWL668.lib(drv_sys_cfg.o) + 0x000148a4 0x000148a4 0x00000024 Code RO 1154 i.drv_sys_cfg_sel_int_trig CVWL668.lib(drv_sys_cfg.o) + 0x000148c8 0x000148c8 0x00000018 Code RO 1155 i.drv_sys_cfg_sel_swire_timer CVWL668.lib(drv_sys_cfg.o) + 0x000148e0 0x000148e0 0x00000024 Code RO 1156 i.drv_sys_cfg_set_int CVWL668.lib(drv_sys_cfg.o) + 0x00014904 0x00014904 0x0000001a Code RO 1173 i.drv_timer_clear_status_flags CVWL668.lib(drv_timer.o) + 0x0001491e 0x0001491e 0x00000020 Code RO 1174 i.drv_timer_enable CVWL668.lib(drv_timer.o) + 0x0001493e 0x0001493e 0x00000002 PAD + 0x00014940 0x00014940 0x00000010 Code RO 1175 i.drv_timer_get_instance CVWL668.lib(drv_timer.o) + 0x00014950 0x00014950 0x0000003c Code RO 1177 i.drv_timer_handle_interrupt CVWL668.lib(drv_timer.o) + 0x0001498c 0x0001498c 0x00000040 Code RO 1179 i.drv_timer_set_compare_val CVWL668.lib(drv_timer.o) + 0x000149cc 0x000149cc 0x00000048 Code RO 1180 i.drv_timer_set_int CVWL668.lib(drv_timer.o) + 0x00014a14 0x00014a14 0x00000028 Code RO 1181 i.drv_timer_set_prescaler CVWL668.lib(drv_timer.o) + 0x00014a3c 0x00014a3c 0x00000010 Code RO 1182 i.drv_timer_set_repeat CVWL668.lib(drv_timer.o) + 0x00014a4c 0x00014a4c 0x00000020 Code RO 1343 i.drv_tx_phy_test_enter CVWL668.lib(drv_dsi_tx.o) + 0x00014a6c 0x00014a6c 0x00000020 Code RO 1344 i.drv_tx_phy_test_exit CVWL668.lib(drv_dsi_tx.o) + 0x00014a8c 0x00014a8c 0x00000028 Code RO 1347 i.drv_tx_phy_test_write_code CVWL668.lib(drv_dsi_tx.o) + 0x00014ab4 0x00014ab4 0x00000034 Code RO 1795 i.drv_uart_abort_recv CVWL668.lib(drv_uart.o) + 0x00014ae8 0x00014ae8 0x00000034 Code RO 1796 i.drv_uart_abort_send CVWL668.lib(drv_uart.o) + 0x00014b1c 0x00014b1c 0x00000014 Code RO 1797 i.drv_uart_config_int CVWL668.lib(drv_uart.o) + 0x00014b30 0x00014b30 0x00000018 Code RO 1799 i.drv_uart_enable_clk CVWL668.lib(drv_uart.o) + 0x00014b48 0x00014b48 0x0000005c Code RO 1800 i.drv_uart_enable_int CVWL668.lib(drv_uart.o) + 0x00014ba4 0x00014ba4 0x00000028 Code RO 1802 i.drv_uart_get_instance CVWL668.lib(drv_uart.o) + 0x00014bcc 0x00014bcc 0x000000ce Code RO 1803 i.drv_uart_init CVWL668.lib(drv_uart.o) + 0x00014c9a 0x00014c9a 0x00000002 PAD + 0x00014c9c 0x00014c9c 0x0000003c Code RO 1804 i.drv_uart_int_trans_handle CVWL668.lib(drv_uart.o) + 0x00014cd8 0x00014cd8 0x0000001c Code RO 1807 i.drv_uart_reset_rx_fifo CVWL668.lib(drv_uart.o) + 0x00014cf4 0x00014cf4 0x0000001c Code RO 1808 i.drv_uart_reset_tx_fifo CVWL668.lib(drv_uart.o) + 0x00014d10 0x00014d10 0x0000001a Code RO 1809 i.drv_uart_send_blocking CVWL668.lib(drv_uart.o) + 0x00014d2a 0x00014d2a 0x00000054 Code RO 1811 i.drv_uart_set_baud_rate CVWL668.lib(drv_uart.o) + 0x00014d7e 0x00014d7e 0x00000002 PAD + 0x00014d80 0x00014d80 0x0000004c Code RO 1812 i.drv_uart_trans_create_handle CVWL668.lib(drv_uart.o) + 0x00014dcc 0x00014dcc 0x00000010 Code RO 1647 i.drv_vidc_clear_irq CVWL668.lib(drv_vidc.o) + 0x00014ddc 0x00014ddc 0x00000020 Code RO 1651 i.drv_vidc_enable CVWL668.lib(drv_vidc.o) + 0x00014dfc 0x00014dfc 0x00000040 Code RO 1652 i.drv_vidc_enable_irq CVWL668.lib(drv_vidc.o) + 0x00014e3c 0x00014e3c 0x0000002c Code RO 1653 i.drv_vidc_get_int_source CVWL668.lib(drv_vidc.o) + 0x00014e68 0x00014e68 0x00000018 Code RO 1654 i.drv_vidc_get_irq_status CVWL668.lib(drv_vidc.o) + 0x00014e80 0x00014e80 0x0000002c Code RO 1658 i.drv_vidc_init_module_enable CVWL668.lib(drv_vidc.o) + 0x00014eac 0x00014eac 0x0000000c Code RO 1659 i.drv_vidc_register_callback CVWL668.lib(drv_vidc.o) + 0x00014eb8 0x00014eb8 0x0000000c Code RO 1660 i.drv_vidc_reset CVWL668.lib(drv_vidc.o) + 0x00014ec4 0x00014ec4 0x0000001c Code RO 1661 i.drv_vidc_set_circ_mode_enable CVWL668.lib(drv_vidc.o) + 0x00014ee0 0x00014ee0 0x00000038 Code RO 1662 i.drv_vidc_set_dither_config CVWL668.lib(drv_vidc.o) + 0x00014f18 0x00014f18 0x0000005c Code RO 1664 i.drv_vidc_set_dst_parameter CVWL668.lib(drv_vidc.o) + 0x00014f74 0x00014f74 0x0000000c Code RO 1666 i.drv_vidc_set_honly_hcoef0 CVWL668.lib(drv_vidc.o) + 0x00014f80 0x00014f80 0x0000002c Code RO 1667 i.drv_vidc_set_honly_hinitb CVWL668.lib(drv_vidc.o) + 0x00014fac 0x00014fac 0x00000030 Code RO 1668 i.drv_vidc_set_honly_hinitr CVWL668.lib(drv_vidc.o) + 0x00014fdc 0x00014fdc 0x0000001c Code RO 1671 i.drv_vidc_set_irqen CVWL668.lib(drv_vidc.o) + 0x00014ff8 0x00014ff8 0x00000014 Code RO 1672 i.drv_vidc_set_mirror CVWL668.lib(drv_vidc.o) + 0x0001500c 0x0001500c 0x0000001c Code RO 1675 i.drv_vidc_set_pentile_swap CVWL668.lib(drv_vidc.o) + 0x00015028 0x00015028 0x0000000c Code RO 1676 i.drv_vidc_set_pu_ctrl CVWL668.lib(drv_vidc.o) + 0x00015034 0x00015034 0x00000018 Code RO 1677 i.drv_vidc_set_rotation CVWL668.lib(drv_vidc.o) + 0x0001504c 0x0001504c 0x0000000c Code RO 1678 i.drv_vidc_set_scld_hcoef0 CVWL668.lib(drv_vidc.o) + 0x00015058 0x00015058 0x0000000c Code RO 1679 i.drv_vidc_set_scld_hcoef1 CVWL668.lib(drv_vidc.o) + 0x00015064 0x00015064 0x00000014 Code RO 1680 i.drv_vidc_set_scld_step CVWL668.lib(drv_vidc.o) + 0x00015078 0x00015078 0x0000000c Code RO 1681 i.drv_vidc_set_scld_vcoef0 CVWL668.lib(drv_vidc.o) + 0x00015084 0x00015084 0x0000000c Code RO 1682 i.drv_vidc_set_scld_vcoef1 CVWL668.lib(drv_vidc.o) + 0x00015090 0x00015090 0x00000020 Code RO 1683 i.drv_vidc_set_src_parameter CVWL668.lib(drv_vidc.o) + 0x000150b0 0x000150b0 0x00000038 Code RO 1684 i.drv_vidc_set_vintp_config CVWL668.lib(drv_vidc.o) + 0x000150e8 0x000150e8 0x00000034 Code RO 684 i.fputc CVWL668.lib(tau_log.o) + 0x0001511c 0x0001511c 0x00000060 Code RO 116 i.google_p8p_demo p8p_demo.o + 0x0001517c 0x0001517c 0x00000040 Code RO 828 i.ha_intl_fb_check_pu_size CVWL668.lib(hal_internal_fb.o) + 0x000151bc 0x000151bc 0x00000040 Code RO 332 i.hal_dsi_rx_ctrl_create_handle CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000151fc 0x000151fc 0x00000040 Code RO 333 i.hal_dsi_rx_ctrl_dcs_async_handler CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001523c 0x0001523c 0x00000094 Code RO 334 i.hal_dsi_rx_ctrl_deinit CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000152d0 0x000152d0 0x00000020 Code RO 341 i.hal_dsi_rx_ctrl_get_max_ret_size CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000152f0 0x000152f0 0x000000ac Code RO 342 i.hal_dsi_rx_ctrl_init CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001539c 0x0001539c 0x00000100 Code RO 343 i.hal_dsi_rx_ctrl_init_clk CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001549c 0x0001549c 0x00000108 Code RO 344 i.hal_dsi_rx_ctrl_init_dsi_rx CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000155a4 0x000155a4 0x0000012c Code RO 345 i.hal_dsi_rx_ctrl_init_memc CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000156d0 0x000156d0 0x00000148 Code RO 346 i.hal_dsi_rx_ctrl_init_rxbr CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015818 0x00015818 0x00000280 Code RO 347 i.hal_dsi_rx_ctrl_init_vidc CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015a98 0x00015a98 0x00000038 Code RO 348 i.hal_dsi_rx_ctrl_pre_init_pps CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015ad0 0x00015ad0 0x000000f0 Code RO 353 i.hal_dsi_rx_ctrl_send_ack_cmd CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015bc0 0x00015bc0 0x00000030 Code RO 360 i.hal_dsi_rx_ctrl_set_ipi_cfg CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015bf0 0x00015bf0 0x00000030 Code RO 366 i.hal_dsi_rx_ctrl_start CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c20 0x00015c20 0x00000030 Code RO 367 i.hal_dsi_rx_ctrl_stop CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c50 0x00015c50 0x00000020 Code RO 369 i.hal_dsi_rx_ctrl_toggle_resolution CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00015c70 0x00015c70 0x00000280 Code RO 422 i.hal_dsi_tx_cmd_mode_cal_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015ef0 0x00015ef0 0x00000038 Code RO 424 i.hal_dsi_tx_ctrl_create_handle CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015f28 0x00015f28 0x00000074 Code RO 425 i.hal_dsi_tx_ctrl_deinit CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015f9c 0x00015f9c 0x00000022 Code RO 428 i.hal_dsi_tx_ctrl_gen_a_tear_signal CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00015fbe 0x00015fbe 0x00000002 PAD + 0x00015fc0 0x00015fc0 0x0000007c Code RO 430 i.hal_dsi_tx_ctrl_init CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001603c 0x0001603c 0x00000010 Code RO 431 i.hal_dsi_tx_ctrl_init_clk CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001604c 0x0001604c 0x00000008 Code RO 444 i.hal_dsi_tx_ctrl_set_overwrite_rgb CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016054 0x00016054 0x0000000a Code RO 445 i.hal_dsi_tx_ctrl_set_tear_mode CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001605e 0x0001605e 0x00000002 PAD + 0x00016060 0x00016060 0x00000090 Code RO 447 i.hal_dsi_tx_ctrl_start CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000160f0 0x000160f0 0x00000038 Code RO 448 i.hal_dsi_tx_ctrl_stop CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016128 0x00016128 0x000000f4 Code RO 450 i.hal_dsi_tx_ctrl_write_array_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001621c 0x0001621c 0x000000d0 Code RO 451 i.hal_dsi_tx_ctrl_write_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000162ec 0x000162ec 0x00000104 Code RO 452 i.hal_dsi_tx_init_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000163f0 0x000163f0 0x00000044 Code RO 453 i.hal_dsi_tx_init_dpi_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016434 0x00016434 0x00000016 Code RO 454 i.hal_dsi_tx_init_phy_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001644a 0x0001644a 0x00000052 Code RO 455 i.hal_dsi_tx_init_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001649c 0x0001649c 0x00000054 Code RO 456 i.hal_dsi_tx_init_vid_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000164f0 0x000164f0 0x00000040 Code RO 457 i.hal_dsi_tx_send_cmd CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00016530 0x00016530 0x00000094 Code RO 458 i.hal_dsi_tx_timing_info_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000165c4 0x000165c4 0x00000310 Code RO 459 i.hal_dsi_tx_vid_mode_cal_timing CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000168d4 0x000168d4 0x0000003a Code RO 529 i.hal_gpio_config_pad CVWL668.lib(hal_gpio.o) + 0x0001690e 0x0001690e 0x00000002 PAD + 0x00016910 0x00016910 0x00000018 Code RO 530 i.hal_gpio_ctrl_eint CVWL668.lib(hal_gpio.o) + 0x00016928 0x00016928 0x00000040 Code RO 534 i.hal_gpio_init_eint CVWL668.lib(hal_gpio.o) + 0x00016968 0x00016968 0x00000016 Code RO 535 i.hal_gpio_init_input CVWL668.lib(hal_gpio.o) + 0x0001697e 0x0001697e 0x0000001c Code RO 536 i.hal_gpio_init_output CVWL668.lib(hal_gpio.o) + 0x0001699a 0x0001699a 0x00000002 PAD + 0x0001699c 0x0001699c 0x0000001c Code RO 537 i.hal_gpio_reg_eint_cb CVWL668.lib(hal_gpio.o) + 0x000169b8 0x000169b8 0x00000050 Code RO 538 i.hal_gpio_set_ap_reset_int CVWL668.lib(hal_gpio.o) + 0x00016a08 0x00016a08 0x00000060 Code RO 541 i.hal_gpio_set_mode CVWL668.lib(hal_gpio.o) + 0x00016a68 0x00016a68 0x00000008 Code RO 542 i.hal_gpio_set_output_data CVWL668.lib(hal_gpio.o) + 0x00016a70 0x00016a70 0x00000010 Code RO 736 i.hal_internal_sync_get_hight_performan_mode CVWL668.lib(hal_internal_vsync.o) + 0x00016a80 0x00016a80 0x000001b4 Code RO 737 i.hal_internal_sync_input_resolution_change CVWL668.lib(hal_internal_vsync.o) + 0x00016c34 0x00016c34 0x0000000c Code RO 738 i.hal_internal_sync_register_lcdc_cb CVWL668.lib(hal_internal_vsync.o) + 0x00016c40 0x00016c40 0x00000020 Code RO 741 i.hal_internal_vsync_deinit CVWL668.lib(hal_internal_vsync.o) + 0x00016c60 0x00016c60 0x0000000c Code RO 742 i.hal_internal_vsync_get_rx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016c6c 0x00016c6c 0x00000014 Code RO 743 i.hal_internal_vsync_get_sync_line CVWL668.lib(hal_internal_vsync.o) + 0x00016c80 0x00016c80 0x0000000c Code RO 744 i.hal_internal_vsync_get_tx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016c8c 0x00016c8c 0x000000e8 Code RO 745 i.hal_internal_vsync_init_rx CVWL668.lib(hal_internal_vsync.o) + 0x00016d74 0x00016d74 0x000000c8 Code RO 746 i.hal_internal_vsync_init_tx CVWL668.lib(hal_internal_vsync.o) + 0x00016e3c 0x00016e3c 0x00000020 Code RO 747 i.hal_internal_vsync_set_rx_state CVWL668.lib(hal_internal_vsync.o) + 0x00016e5c 0x00016e5c 0x000001ec Code RO 749 i.hal_internal_vsync_set_tear_mode CVWL668.lib(hal_internal_vsync.o) + 0x00017048 0x00017048 0x00000058 Code RO 750 i.hal_internal_vsync_set_tx_state CVWL668.lib(hal_internal_vsync.o) + 0x000170a0 0x000170a0 0x0000006c Code RO 801 i.hal_intl_dcs_init_sw_fltr CVWL668.lib(hal_internal_dcs.o) + 0x0001710c 0x0001710c 0x00000430 Code RO 803 i.hal_intl_dcs_rx_get_dcs_packet_data CVWL668.lib(hal_internal_dcs.o) + 0x0001753c 0x0001753c 0x00000088 Code RO 804 i.hal_intl_dcs_rx_receive_packet CVWL668.lib(hal_internal_dcs.o) + 0x000175c4 0x000175c4 0x00000174 Code RO 805 i.hal_intl_dcs_rx_receive_pps CVWL668.lib(hal_internal_dcs.o) + 0x00017738 0x00017738 0x0000008c Code RO 806 i.hal_intl_dcs_set_auto_hw_filter CVWL668.lib(hal_internal_dcs.o) + 0x000177c4 0x000177c4 0x0000002c Code RO 808 i.hal_intl_dcs_sw_filter_handle CVWL668.lib(hal_internal_dcs.o) + 0x000177f0 0x000177f0 0x00000318 Code RO 829 i.hal_intl_fb_cal_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017b08 0x00017b08 0x00000064 Code RO 830 i.hal_intl_fb_check_bandwidth CVWL668.lib(hal_internal_fb.o) + 0x00017b6c 0x00017b6c 0x000000dc Code RO 831 i.hal_intl_fb_edge_resize CVWL668.lib(hal_internal_fb.o) + 0x00017c48 0x00017c48 0x00000074 Code RO 832 i.hal_intl_fb_flow_control_adapter CVWL668.lib(hal_internal_fb.o) + 0x00017cbc 0x00017cbc 0x0000000c Code RO 833 i.hal_intl_fb_get_memc_flow_mode CVWL668.lib(hal_internal_fb.o) + 0x00017cc8 0x00017cc8 0x00000010 Code RO 834 i.hal_intl_fb_get_rx_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017cd8 0x00017cd8 0x00000010 Code RO 835 i.hal_intl_fb_get_tx_fb_info CVWL668.lib(hal_internal_fb.o) + 0x00017ce8 0x00017ce8 0x0000000c Code RO 836 i.hal_intl_fb_get_user_flow CVWL668.lib(hal_internal_fb.o) + 0x00017cf4 0x00017cf4 0x00000028 Code RO 854 i.hal_intl_svs_deinit_rx CVWL668.lib(hal_internal_svs.o) + 0x00017d1c 0x00017d1c 0x00000010 Code RO 855 i.hal_intl_svs_deinit_tx CVWL668.lib(hal_internal_svs.o) + 0x00017d2c 0x00017d2c 0x00000024 Code RO 856 i.hal_intl_svs_handle CVWL668.lib(hal_internal_svs.o) + 0x00017d50 0x00017d50 0x00000080 Code RO 857 i.hal_intl_svs_init_rx CVWL668.lib(hal_internal_svs.o) + 0x00017dd0 0x00017dd0 0x00000014 Code RO 858 i.hal_intl_svs_init_tx CVWL668.lib(hal_internal_svs.o) + 0x00017de4 0x00017de4 0x0000000c Code RO 860 i.hal_intl_svs_set_rx_vtt CVWL668.lib(hal_internal_svs.o) + 0x00017df0 0x00017df0 0x00000048 Code RO 862 i.hal_intl_svs_update_rxbr_clk CVWL668.lib(hal_internal_svs.o) + 0x00017e38 0x00017e38 0x00000070 Code RO 460 i.hal_lcdc_displayproc_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017ea8 0x00017ea8 0x0000003e Code RO 461 i.hal_lcdc_init_cfg CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017ee6 0x00017ee6 0x00000070 Code RO 462 i.hal_lcdc_init_clk CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00017f56 0x00017f56 0x00000002 PAD + 0x00017f58 0x00017f58 0x00000128 Code RO 463 i.hal_lcdc_postproc_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00018080 0x00018080 0x00000024 Code RO 464 i.hal_lcdc_start CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000180a4 0x000180a4 0x0000003c Code RO 465 i.hal_lcdc_timinggen_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000180e0 0x000180e0 0x000000e0 Code RO 466 i.hal_lcdc_upscaler_config CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000181c0 0x000181c0 0x000000bc Code RO 468 i.hal_nonshadow_func_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001827c 0x0001827c 0x0000002a Code RO 633 i.hal_pwr_enter_deep_sleep_mode CVWL668.lib(hal_pwr.o) + 0x000182a6 0x000182a6 0x00000008 Code RO 634 i.hal_pwr_enter_normal_sleep_mode CVWL668.lib(hal_pwr.o) + 0x000182ae 0x000182ae 0x00000002 PAD + 0x000182b0 0x000182b0 0x00000064 Code RO 635 i.hal_pwr_enter_stop_sleep_mode CVWL668.lib(hal_pwr.o) + 0x00018314 0x00018314 0x0000000a Code RO 636 i.hal_pwr_exit_sleep_mode CVWL668.lib(hal_pwr.o) + 0x0001831e 0x0001831e 0x00000008 Code RO 638 i.hal_pwr_get_vcc_power_ready CVWL668.lib(hal_pwr.o) + 0x00018326 0x00018326 0x00000008 Code RO 643 i.hal_pwr_set_main_power CVWL668.lib(hal_pwr.o) + 0x0001832e 0x0001832e 0x00000008 Code RO 645 i.hal_pwr_set_sleep_mode_power CVWL668.lib(hal_pwr.o) + 0x00018336 0x00018336 0x00000002 PAD + 0x00018338 0x00018338 0x00000064 Code RO 646 i.hal_pwr_set_stop_sleep_wakeup_pin CVWL668.lib(hal_pwr.o) + 0x0001839c 0x0001839c 0x00000040 Code RO 569 i.hal_swire_deinit CVWL668.lib(hal_swire.o) + 0x000183dc 0x000183dc 0x0000005c Code RO 570 i.hal_swire_enable CVWL668.lib(hal_swire.o) + 0x00018438 0x00018438 0x00000058 Code RO 571 i.hal_swire_init CVWL668.lib(hal_swire.o) + 0x00018490 0x00018490 0x00000024 Code RO 573 i.hal_swire_set_pulse CVWL668.lib(hal_swire.o) + 0x000184b4 0x000184b4 0x00000040 Code RO 574 i.hal_swire_set_timer CVWL668.lib(hal_swire.o) + 0x000184f4 0x000184f4 0x000000e4 Code RO 594 i.hal_system_init CVWL668.lib(hal_system.o) + 0x000185d8 0x000185d8 0x00000050 Code RO 597 i.hal_system_updata_sysclk CVWL668.lib(hal_system.o) + 0x00018628 0x00018628 0x00000030 Code RO 612 i.hal_timer_deinit CVWL668.lib(hal_timer.o) + 0x00018658 0x00018658 0x0000001c Code RO 614 i.hal_timer_init CVWL668.lib(hal_timer.o) + 0x00018674 0x00018674 0x00000008 Code RO 615 i.hal_timer_set_repeat CVWL668.lib(hal_timer.o) + 0x0001867c 0x0001867c 0x00000030 Code RO 469 i.hal_tx_frame_rate_adjust CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000186ac 0x000186ac 0x00000094 Code RO 708 i.hal_uart_init CVWL668.lib(hal_uart.o) + 0x00018740 0x00018740 0x0000001c Code RO 711 i.hal_uart_send_blocking CVWL668.lib(hal_uart.o) + 0x0001875c 0x0001875c 0x00000018 Code RO 470 i.hal_vsync_func_update CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x00018774 0x00018774 0x000000e0 Code RO 752 i.hal_vsync_reset_lcdc_scaler CVWL668.lib(hal_internal_vsync.o) + 0x00018854 0x00018854 0x00000040 Code RO 3 i.main main.o + 0x00018894 0x00018894 0x0000007c Code RO 117 i.pps_update_handle p8p_demo.o + 0x00018910 0x00018910 0x000002f4 Code RO 753 i.rxbr_irq1_callback CVWL668.lib(hal_internal_vsync.o) + 0x00018c04 0x00018c04 0x0000003a Code RO 118 i.send_panel_init_code p8p_demo.o + 0x00018c3e 0x00018c3e 0x00000002 PAD + 0x00018c40 0x00018c40 0x00000044 Code RO 754 i.soft_double_buffer_update CVWL668.lib(hal_internal_vsync.o) + 0x00018c84 0x00018c84 0x0000006c Code RO 755 i.soft_gen_te CVWL668.lib(hal_internal_vsync.o) + 0x00018cf0 0x00018cf0 0x000000e0 Code RO 756 i.soft_gen_te_double_buffer CVWL668.lib(hal_internal_vsync.o) + 0x00018dd0 0x00018dd0 0x00000038 Code RO 757 i.soft_pro_motion_init CVWL668.lib(hal_internal_vsync.o) + 0x00018e08 0x00018e08 0x00000024 Code RO 758 i.soft_tear_adjust_line CVWL668.lib(hal_internal_vsync.o) + 0x00018e2c 0x00018e2c 0x00000018 Code RO 649 i.stop_sleep_cb CVWL668.lib(hal_pwr.o) + 0x00018e44 0x00018e44 0x000000ac Code RO 863 i.svs_direct_mode_setting CVWL668.lib(hal_internal_svs.o) + 0x00018ef0 0x00018ef0 0x0000001c Code RO 864 i.svs_get_rel_intv CVWL668.lib(hal_internal_svs.o) + 0x00018f0c 0x00018f0c 0x000000b0 Code RO 865 i.svs_sync_handle CVWL668.lib(hal_internal_svs.o) + 0x00018fbc 0x00018fbc 0x000000cc Code RO 866 i.svs_wait_fr_stab CVWL668.lib(hal_internal_svs.o) + 0x00019088 0x00019088 0x0000010c Code RO 867 i.svs_wait_start CVWL668.lib(hal_internal_svs.o) + 0x00019194 0x00019194 0x00000034 Code RO 685 i.tau_log_init CVWL668.lib(tau_log.o) + 0x000191c8 0x000191c8 0x00000084 Code RO 686 i.tau_log_printf CVWL668.lib(tau_log.o) + 0x0001924c 0x0001924c 0x00000076 Code RO 687 i.tau_log_push_log CVWL668.lib(tau_log.o) + 0x000192c2 0x000192c2 0x00000002 PAD + 0x000192c4 0x000192c4 0x000000b4 Code RO 759 i.vidc_callback CVWL668.lib(hal_internal_vsync.o) + 0x00019378 0x00019378 0x00000118 Code RO 760 i.vpre_err_reset CVWL668.lib(hal_internal_vsync.o) + 0x00019490 0x00019490 0x000020bc Data RO 121 .constdata p8p_demo.o + 0x0001b54c 0x0001b54c 0x00000028 Data RO 372 .constdata CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001b574 0x0001b574 0x0000001c Data RO 473 .constdata CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x0001b590 0x0001b590 0x000000b6 Data RO 546 .constdata CVWL668.lib(hal_gpio.o) + 0x0001b646 0x0001b646 0x00000002 PAD + 0x0001b648 0x0001b648 0x00000030 Data RO 713 .constdata CVWL668.lib(hal_uart.o) + 0x0001b678 0x0001b678 0x00000010 Data RO 1814 .constdata CVWL668.lib(drv_uart.o) + 0x0001b688 0x0001b688 0x00000042 Data RO 373 .conststring CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x0001b6ca 0x0001b6ca 0x00000002 PAD + 0x0001b6cc 0x0001b6cc 0x00000090 Data RO 762 .conststring CVWL668.lib(hal_internal_vsync.o) + 0x0001b75c 0x0001b75c 0x00000046 Data RO 811 .conststring CVWL668.lib(hal_internal_dcs.o) + 0x0001b7a2 0x0001b7a2 0x00000002 PAD + 0x0001b7a4 0x0001b7a4 0x00000020 Data RO 2228 Region$$Table anon$$obj.o + + + Execution Region RW_IRAM1 (Exec base: 0x00070000, Load base: 0x0001b7c4, Size: 0x00003188, Max: 0x00008000, ABSOLUTE, COMPRESSED[0x0000016c]) + + Exec Addr Load Addr Size Type Attr Idx E Section Name Object + + 0x00070000 COMPRESSED 0x0000011f Data RW 122 .data p8p_demo.o + 0x0007011f COMPRESSED 0x00000001 PAD + 0x00070120 COMPRESSED 0x00000030 Data RW 374 .data CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x00070150 COMPRESSED 0x0000005c Data RW 474 .data CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000701ac COMPRESSED 0x00000002 Data RW 576 .data CVWL668.lib(hal_swire.o) + 0x000701ae COMPRESSED 0x00000002 PAD + 0x000701b0 COMPRESSED 0x00000008 Data RW 650 .data CVWL668.lib(hal_pwr.o) + 0x000701b8 COMPRESSED 0x00000001 Data RW 690 .data CVWL668.lib(tau_log.o) + 0x000701b9 COMPRESSED 0x00000003 PAD + 0x000701bc COMPRESSED 0x00000018 Data RW 714 .data CVWL668.lib(hal_uart.o) + 0x000701d4 COMPRESSED 0x00000010 Data RW 763 .data CVWL668.lib(hal_internal_vsync.o) + 0x000701e4 COMPRESSED 0x00000024 Data RW 812 .data CVWL668.lib(hal_internal_dcs.o) + 0x00070208 COMPRESSED 0x0000000c Data RW 896 .data CVWL668.lib(drv_common.o) + 0x00070214 COMPRESSED 0x00000001 Data RW 897 .data CVWL668.lib(drv_common.o) + 0x00070215 COMPRESSED 0x00000003 PAD + 0x00070218 COMPRESSED 0x00000004 Data RW 983 .data CVWL668.lib(drv_gpio.o) + 0x0007021c COMPRESSED 0x00000004 Data RW 1135 .data CVWL668.lib(drv_swire.o) + 0x00070220 COMPRESSED 0x00000050 Data RW 1183 .data CVWL668.lib(drv_timer.o) + 0x00070270 COMPRESSED 0x00000004 Data RW 1224 .data CVWL668.lib(drv_se.o) + 0x00070274 COMPRESSED 0x00000001 Data RW 1264 .data CVWL668.lib(drv_dsi_rx.o) + 0x00070275 COMPRESSED 0x00000003 PAD + 0x00070278 COMPRESSED 0x00000008 Data RW 1599 .data CVWL668.lib(drv_rxbr.o) + 0x00070280 COMPRESSED 0x00000004 Data RW 1686 .data CVWL668.lib(drv_vidc.o) + 0x00070284 COMPRESSED 0x00000190 Data RW 1761 .data CVWL668.lib(drv_dma.o) + 0x00070414 COMPRESSED 0x00000004 Data RW 2204 .data mc_p.l(stdout.o) + 0x00070418 - 0x000000d0 Zero RW 371 .bss CVWL668.lib(hal_dsi_rx_ctrl.o) + 0x000704e8 - 0x000000b8 Zero RW 472 .bss CVWL668.lib(hal_dsi_tx_ctrl.o) + 0x000705a0 - 0x00000100 Zero RW 689 .bss CVWL668.lib(tau_log.o) + 0x000706a0 - 0x00000044 Zero RW 761 .bss CVWL668.lib(hal_internal_vsync.o) + 0x000706e4 - 0x00000800 Zero RW 809 .bss CVWL668.lib(hal_internal_dcs.o) + 0x00070ee4 - 0x000000ff Zero RW 810 .bss CVWL668.lib(hal_internal_dcs.o) + 0x00070fe3 COMPRESSED 0x00000001 PAD + 0x00070fe4 - 0x00000044 Zero RW 838 .bss CVWL668.lib(hal_internal_fb.o) + 0x00071028 - 0x00000044 Zero RW 868 .bss CVWL668.lib(hal_internal_svs.o) + 0x0007106c - 0x00000040 Zero RW 982 .bss CVWL668.lib(drv_gpio.o) + 0x000710ac - 0x0000106c Zero RW 1207 .bss CVWL668.lib(dcs_packet_fifo.o) + 0x00072118 - 0x00000010 Zero RW 1759 .bss CVWL668.lib(drv_dma.o) + 0x00072128 - 0x00000060 Zero RW 1813 .bss CVWL668.lib(drv_uart.o) + 0x00072188 - 0x00001000 Zero RW 321 STACK startup_armcm0.o + + +============================================================================== + +Image component sizes + + + Code (inc. data) RO Data RW Data ZI Data Debug Object Name + + 24 4 0 0 0 577 board.o + 64 32 0 0 0 10471 main.o + 2890 824 8380 287 0 31276 p8p_demo.o + 120 18 192 0 4096 2164 startup_armcm0.o + + ---------------------------------------------------------------------- + 3104 878 8604 288 4096 44488 Object Totals + 0 0 32 0 0 0 (incl. Generated) + 6 0 0 1 0 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name + + 216 32 0 0 4204 252 dcs_packet_fifo.o + 104 62 28 13 0 192 drv_common.o + 536 90 0 0 0 792 drv_crgu.o + 136 22 0 400 16 196 drv_dma.o + 144 34 0 0 0 248 drv_dsc_dec.o + 1904 682 0 1 0 1340 drv_dsi_rx.o + 1704 306 0 0 0 2036 drv_dsi_tx.o + 148 0 0 0 0 260 drv_efuse.o + 296 40 0 4 64 1000 drv_gpio.o + 1080 166 0 0 0 1620 drv_lcdc.o + 658 104 0 0 0 1240 drv_memc.o + 40 0 0 0 0 120 drv_phy_common.o + 592 132 0 0 0 716 drv_pwr.o + 514 102 0 8 0 1120 drv_rxbr.o + 972 266 0 4 0 488 drv_se.o + 264 54 0 4 0 560 drv_swire.o + 220 40 0 0 0 428 drv_sys_cfg.o + 366 38 0 80 0 816 drv_timer.o + 1172 54 16 0 96 980 drv_uart.o + 824 152 0 4 0 1700 drv_vidc.o + 2766 204 106 48 208 1256 hal_dsi_rx_ctrl.o + 4330 338 50 92 184 2212 hal_dsi_tx_ctrl.o + 440 32 182 0 0 688 hal_gpio.o + 2140 506 70 36 2303 652 hal_internal_dcs.o + 1348 58 0 0 68 700 hal_internal_fb.o + 1172 182 0 0 68 840 hal_internal_svs.o + 3840 802 144 16 68 1688 hal_internal_vsync.o + 308 32 0 8 0 616 hal_pwr.o + 344 32 0 2 0 348 hal_swire.o + 308 56 0 0 0 136 hal_system.o + 84 0 0 0 0 204 hal_timer.o + 176 18 48 24 0 144 hal_uart.o + 68 4 0 0 0 136 tau_delay.o + 354 30 16 1 256 320 tau_log.o + 200 20 0 0 0 76 ceil.o + 86 0 0 0 0 0 __dczerorl2.o + 0 0 0 0 0 0 entry.o + 0 0 0 0 0 0 entry10a.o + 0 0 0 0 0 0 entry11a.o + 8 4 0 0 0 0 entry2.o + 4 0 0 0 0 0 entry5.o + 0 0 0 0 0 0 entry7b.o + 0 0 0 0 0 0 entry8b.o + 8 4 0 0 0 0 entry9a.o + 30 0 0 0 0 0 handlers.o + 40 0 0 0 0 72 idiv.o + 36 8 0 0 0 68 init.o + 0 0 0 0 0 0 iusefp.o + 32 0 0 0 0 68 llshl.o + 38 0 0 0 0 68 llsshr.o + 34 0 0 0 0 68 llushr.o + 26 0 0 0 0 72 memcmp.o + 36 0 0 0 0 60 memcpya.o + 36 0 0 0 0 100 memseta.o + 2298 104 0 0 0 544 printfa.o + 0 0 0 4 0 0 stdout.o + 14 0 0 0 0 60 strlen.o + 44 0 0 0 0 72 uidiv.o + 96 0 0 0 0 84 uldiv.o + 40 2 0 0 0 68 cdrcmple.o + 20 0 0 0 0 68 cfcmple.o + 20 0 0 0 0 68 cfrcmple.o + 56 0 0 0 0 68 d2f.o + 356 4 0 0 0 140 dadd.o + 240 6 0 0 0 84 ddiv.o + 236 0 0 0 0 216 depilogue.o + 60 10 0 0 0 68 dfixui.o + 64 10 0 0 0 68 dfixul.o + 28 4 0 0 0 68 dfltui.o + 208 6 0 0 0 88 dmul.o + 40 0 0 0 0 60 f2d.o + 178 0 0 0 0 108 fadd.o + 124 0 0 0 0 72 fdiv.o + 130 0 0 0 0 144 fepilogue.o + 40 0 0 0 0 60 ffixui.o + 14 0 0 0 0 68 ffltui.o + 122 0 0 0 0 72 fmul.o + 24 0 0 0 0 60 fscalb.o + + ---------------------------------------------------------------------- + 34668 4852 668 760 7536 29104 Library Totals + 34 0 8 11 1 0 (incl. Padding) + + ---------------------------------------------------------------------- + + Code (inc. data) RO Data RW Data ZI Data Debug Library Name + + 29568 4670 660 745 7535 26044 CVWL668.lib + 200 20 0 0 0 76 m_ps.l + 2866 120 0 4 0 1336 mc_p.l + 2000 42 0 0 0 1648 mf_p.l + + ---------------------------------------------------------------------- + 34668 4852 668 760 7536 29104 Library Totals + + ---------------------------------------------------------------------- + +============================================================================== + + + Code (inc. data) RO Data RW Data ZI Data Debug + + 37772 5730 9272 1048 11632 54124 Grand Totals + 37772 5730 9272 364 11632 54124 ELF Image Totals (compressed) + 37772 5730 9272 364 0 0 ROM Totals + +============================================================================== + + Total RO Size (Code + RO Data) 47044 ( 45.94kB) + Total RW Size (RW Data + ZI Data) 12680 ( 12.38kB) + Total ROM Size (Code + RO Data + RW Data) 47408 ( 46.30kB) + +============================================================================== + diff --git a/project/WL668/Listings/board._ip b/project/WL668/Listings/board._ip new file mode 100644 index 0000000..5880e20 --- /dev/null +++ b/project/WL668/Listings/board._ip @@ -0,0 +1,6 @@ +..\..\src\board\board.c -E --c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\listings\board.i --list_dir ".\\Listings\\" --list \ No newline at end of file diff --git a/project/WL668/Listings/board.i b/project/WL668/Listings/board.i new file mode 100644 index 0000000..de24ffc --- /dev/null +++ b/project/WL668/Listings/board.i @@ -0,0 +1,4677 @@ +# 1 "..\\..\\src\\board\\board.c" + + + + + + + + + +# 1 "..\\..\\src\\board\\board.h" + + + + + + + + + + + + + + + + + + +void board_Init(void); + +# 11 "..\\..\\src\\board\\board.c" +# 1 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + + + + +# 1 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + +# 46 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + +typedef signed char int8_t; +typedef signed short int int16_t; +typedef signed int int32_t; +typedef signed __int64 int64_t; + + +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned __int64 uint64_t; + + + + + +typedef signed char int_least8_t; +typedef signed short int int_least16_t; +typedef signed int int_least32_t; +typedef signed __int64 int_least64_t; + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; +typedef unsigned __int64 uint_least64_t; + + + + +typedef signed int int_fast8_t; +typedef signed int int_fast16_t; +typedef signed int int_fast32_t; +typedef signed __int64 int_fast64_t; + + +typedef unsigned int uint_fast8_t; +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +typedef unsigned __int64 uint_fast64_t; + + + + + + +typedef signed int intptr_t; +typedef unsigned int uintptr_t; + + + +typedef signed long long intmax_t; +typedef unsigned long long uintmax_t; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 216 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 241 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 305 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + +# 18 "..\\..\\src\\common\\tau_common.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 61 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 75 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 112 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); + + + + + + + +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +{ + return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +{ + return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +{ + unsigned __f = __ARM_fcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +{ + unsigned __f = __ARM_dcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} + + + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +{ + return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +{ + unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); + return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +{ + unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; + return (__xe != 0xff) && (__xe != 0); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +{ + unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; + return (__xe != 0x7ff) && (__xe != 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +{ + return (*(unsigned *)&(__x)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +{ + return (*(1 + (unsigned *)&(__x))) >> 31; +} + + + + + + + + + + +# 230 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + typedef float float_t; + typedef double double_t; +# 251 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + +extern const int math_errhandling; +# 261 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +extern __declspec(__nothrow) double acos(double ); + + + +extern __declspec(__nothrow) double asin(double ); + + + + + +extern __declspec(__nothrow) __attribute__((const)) double atan(double ); + + + +extern __declspec(__nothrow) double atan2(double , double ); + + + + + +extern __declspec(__nothrow) double cos(double ); + + + + +extern __declspec(__nothrow) double sin(double ); + + + + + +extern void __use_accurate_range_reduction(void); + + + +extern __declspec(__nothrow) double tan(double ); + + + + + +extern __declspec(__nothrow) double cosh(double ); + + + + +extern __declspec(__nothrow) double sinh(double ); + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double tanh(double ); + + + +extern __declspec(__nothrow) double exp(double ); + + + + + + +extern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); + + + + + + + +extern __declspec(__nothrow) double ldexp(double , int ); + + + + +extern __declspec(__nothrow) double log(double ); + + + + + +extern __declspec(__nothrow) double log10(double ); + + + +extern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); + + + + + +extern __declspec(__nothrow) double pow(double , double ); + + + + + + +extern __declspec(__nothrow) double sqrt(double ); + + + + + + + + static __inline double _sqrt(double __x) { return sqrt(__x); } + + + + + static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double ceil(double ); + + +extern __declspec(__nothrow) __attribute__((const)) double fabs(double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double floor(double ); + + + +extern __declspec(__nothrow) double fmod(double , double ); + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double acosh(double ); + + + +extern __declspec(__nothrow) double asinh(double ); + + + +extern __declspec(__nothrow) double atanh(double ); + + + +extern __declspec(__nothrow) double cbrt(double ); + + + +static __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) + + + +{ + (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); + return __x; +} +static __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) + + + +{ + (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); + return __x; +} +extern __declspec(__nothrow) double erf(double ); + + + +extern __declspec(__nothrow) double erfc(double ); + + + +extern __declspec(__nothrow) double expm1(double ); + + + + + + + + + + + + + + + +# 479 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + +extern __declspec(__nothrow) double hypot(double , double ); + + + + + + +extern __declspec(__nothrow) int ilogb(double ); + + + +extern __declspec(__nothrow) int ilogbf(float ); + + + +extern __declspec(__nothrow) int ilogbl(long double ); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double lgamma (double ); + + + + +extern __declspec(__nothrow) double log1p(double ); + + + +extern __declspec(__nothrow) double logb(double ); + + + +extern __declspec(__nothrow) float logbf(float ); + + + +extern __declspec(__nothrow) long double logbl(long double ); + + + +extern __declspec(__nothrow) double nextafter(double , double ); + + + + +extern __declspec(__nothrow) float nextafterf(float , float ); + + + + +extern __declspec(__nothrow) long double nextafterl(long double , long double ); + + + + +extern __declspec(__nothrow) double nexttoward(double , long double ); + + + + +extern __declspec(__nothrow) float nexttowardf(float , long double ); + + + + +extern __declspec(__nothrow) long double nexttowardl(long double , long double ); + + + + +extern __declspec(__nothrow) double remainder(double , double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double rint(double ); + + + +extern __declspec(__nothrow) double scalbln(double , long int ); + + + +extern __declspec(__nothrow) float scalblnf(float , long int ); + + + +extern __declspec(__nothrow) long double scalblnl(long double , long int ); + + + +extern __declspec(__nothrow) double scalbn(double , int ); + + + +extern __declspec(__nothrow) float scalbnf(float , int ); + + + +extern __declspec(__nothrow) long double scalbnl(long double , int ); + + + + + + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +static __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +extern __declspec(__nothrow) float sinf(float ); +extern __declspec(__nothrow) float cosf(float ); +extern __declspec(__nothrow) float tanf(float ); +extern __declspec(__nothrow) float acosf(float ); +extern __declspec(__nothrow) float asinf(float ); +extern __declspec(__nothrow) float atanf(float ); +extern __declspec(__nothrow) float atan2f(float , float ); +extern __declspec(__nothrow) float sinhf(float ); +extern __declspec(__nothrow) float coshf(float ); +extern __declspec(__nothrow) float tanhf(float ); +extern __declspec(__nothrow) float expf(float ); +extern __declspec(__nothrow) float logf(float ); +extern __declspec(__nothrow) float log10f(float ); +extern __declspec(__nothrow) float powf(float , float ); +extern __declspec(__nothrow) float sqrtf(float ); +extern __declspec(__nothrow) float ldexpf(float , int ); +extern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +extern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +extern __declspec(__nothrow) float fmodf(float , float ); +extern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +__declspec(__nothrow) long double acosl(long double ); +__declspec(__nothrow) long double asinl(long double ); +__declspec(__nothrow) long double atanl(long double ); +__declspec(__nothrow) long double atan2l(long double , long double ); +__declspec(__nothrow) long double ceill(long double ); +__declspec(__nothrow) long double cosl(long double ); +__declspec(__nothrow) long double coshl(long double ); +__declspec(__nothrow) long double expl(long double ); +__declspec(__nothrow) long double fabsl(long double ); +__declspec(__nothrow) long double floorl(long double ); +__declspec(__nothrow) long double fmodl(long double , long double ); +__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double ldexpl(long double , int ); +__declspec(__nothrow) long double logl(long double ); +__declspec(__nothrow) long double log10l(long double ); +__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double powl(long double , long double ); +__declspec(__nothrow) long double sinl(long double ); +__declspec(__nothrow) long double sinhl(long double ); +__declspec(__nothrow) long double sqrtl(long double ); +__declspec(__nothrow) long double tanl(long double ); +__declspec(__nothrow) long double tanhl(long double ); + + + + + + +extern __declspec(__nothrow) float acoshf(float ); +__declspec(__nothrow) long double acoshl(long double ); +extern __declspec(__nothrow) float asinhf(float ); +__declspec(__nothrow) long double asinhl(long double ); +extern __declspec(__nothrow) float atanhf(float ); +__declspec(__nothrow) long double atanhl(long double ); +__declspec(__nothrow) long double copysignl(long double , long double ); +extern __declspec(__nothrow) float cbrtf(float ); +__declspec(__nothrow) long double cbrtl(long double ); +extern __declspec(__nothrow) float erff(float ); +__declspec(__nothrow) long double erfl(long double ); +extern __declspec(__nothrow) float erfcf(float ); +__declspec(__nothrow) long double erfcl(long double ); +extern __declspec(__nothrow) float expm1f(float ); +__declspec(__nothrow) long double expm1l(long double ); +extern __declspec(__nothrow) float log1pf(float ); +__declspec(__nothrow) long double log1pl(long double ); +extern __declspec(__nothrow) float hypotf(float , float ); +__declspec(__nothrow) long double hypotl(long double , long double ); +extern __declspec(__nothrow) float lgammaf(float ); +__declspec(__nothrow) long double lgammal(long double ); +extern __declspec(__nothrow) float remainderf(float , float ); +__declspec(__nothrow) long double remainderl(long double , long double ); +extern __declspec(__nothrow) float rintf(float ); +__declspec(__nothrow) long double rintl(long double ); + + + + + + + +extern __declspec(__nothrow) double exp2(double ); +extern __declspec(__nothrow) float exp2f(float ); +__declspec(__nothrow) long double exp2l(long double ); +extern __declspec(__nothrow) double fdim(double , double ); +extern __declspec(__nothrow) float fdimf(float , float ); +__declspec(__nothrow) long double fdiml(long double , long double ); +# 803 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) double fma(double , double , double ); +extern __declspec(__nothrow) float fmaf(float , float , float ); + +static __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } + + +extern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +__declspec(__nothrow) long double fmaxl(long double , long double ); +extern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +__declspec(__nothrow) long double fminl(long double , long double ); +extern __declspec(__nothrow) double log2(double ); +extern __declspec(__nothrow) float log2f(float ); +__declspec(__nothrow) long double log2l(long double ); +extern __declspec(__nothrow) long lrint(double ); +extern __declspec(__nothrow) long lrintf(float ); + +static __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } + + +extern __declspec(__nothrow) long long llrint(double ); +extern __declspec(__nothrow) long long llrintf(float ); + +static __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } + + +extern __declspec(__nothrow) long lround(double ); +extern __declspec(__nothrow) long lroundf(float ); + +static __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } + + +extern __declspec(__nothrow) long long llround(double ); +extern __declspec(__nothrow) long long llroundf(float ); + +static __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } + + +extern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +extern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); + +static __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +# 856 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +extern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +__declspec(__nothrow) long double nearbyintl(long double ); +extern double remquo(double , double , int * ); +extern float remquof(float , float , int * ); + +static __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } + + +extern __declspec(__nothrow) __attribute__((const)) double round(double ); +extern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +__declspec(__nothrow) long double roundl(long double ); +extern __declspec(__nothrow) double tgamma(double ); +extern __declspec(__nothrow) float tgammaf(float ); +__declspec(__nothrow) long double tgammal(long double ); +extern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +extern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +__declspec(__nothrow) long double truncl(long double ); + + + + + + +# 896 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 1087 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + +# 1317 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + +# 19 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 75 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef uint32_t status_t; + + +typedef void (*fcb_type)(void *data); + +typedef void (*uart_trans_cb)(status_t status, void *user_data); + +typedef void (*flash_trans_cb)(status_t status, void *user_data); +# 16 "..\\..\\src\\sdk\\include\\hal_system.h" +# 1 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + + + + + + + + + +# 1 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + + + + +# 20 "..\\..\\src\\common\\tau_device_datatype.h" +# 21 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + +enum _status_groups +{ + STATUS_GROUP_GENERIC = 0, + STATUS_GROUP_I2C = 1, + STATUS_GROUP_UART = 2, + STATUS_GROUP_SPI = 3, + STATUS_GROUP_TIMER = 4, +}; + + +enum _generic_status +{ + STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), + STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), + STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), + STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), + STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), + STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), + STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +}; + + + + + +typedef enum +{ + STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), + STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), + STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), + STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), + STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), + STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), + STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), + STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), + STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), + STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), + STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +} uart_status_e; + + + + +typedef enum +{ + STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), + STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), + STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +} timer_status_e; + + + + +typedef enum +{ + DETECT_HIGH_LVL = 0, + DETECT_LOW_LVL, + DETECT_RISING_EDGE, + DETECT_FALLING_EDGE, + DETECT_DOUBLE_EDGE +} sys_cfg_trigger_e; + + + + +typedef enum +{ + TIMER_NUM0 = 0, + TIMER_NUM1, + TIMER_NUM2, + TIMER_NUM3, + TIMER_NUM_MAX +} timer_num_e; + + + + +typedef enum +{ + GPIO_INT_EXTI_INT0 = 0, + GPIO_INT_EXTI_INT1, + GPIO_INT_EXTI_INT2, + GPIO_INT_EXTI_INT3, + GPIO_INT_EXTI_INT4, + GPIO_INT_EXTI_INT5, + GPIO_INT_EXTI_INT6, + GPIO_INT_EXTI_INT7, + GPIO_INT_MAX +} gpio_int_e; + + +typedef enum _pwm_int_type +{ + PWM_INT_HIGH_OVERFLOW = 0, + PWM_INT_LOW_OVERFLOW, + PWM_INT_TOTAL_OVERFLOW, + PWM_INT_HIGH_DONE, + PWM_INT_LOW_DONE, + PWM_INT_TOTAL_DONE, + PWM_INT_MAX +} pwm_int_type_e; + + + + +typedef enum +{ + I2C_SELECT_0 = 0, + I2C_SELECT_1, +} i2c_select_e; + + + + + +typedef enum _i2c_rate +{ + I2C_RATE_STANDARD = 1, + I2C_RATE_FAST, + I2C_RATE_HIGH, +} i2c_rate_e; + + + + + +typedef enum +{ + I2C_INDEX_0, + I2C_INDEX_1, + I2C_INDEX_2, + I2C_INDEX_MAX +} i2c_index_e; + + + + + +typedef enum +{ + AHB_DMA_CH0, + AHB_DMA_CH1, + AHB_DMA_CH2, + AHB_DMA_CH3, + AHB_DMA_CH4, + AHB_DMA_CH5, + AHB_DMA_CH6, + AHB_DMA_CH7, + AHB_DMA_CH_NUM +} dma_channel_type_e; + + + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} function_state_e; + + + + +typedef enum +{ + CRC_REV_NO_TRANSPOSE = 0, + CRC_REV_ONLY_BITS_TRANSPOSE, + CRC_REV_BOTH_TRANSPOSE, + CRC_REV_ONLY_BYTES_TRANSPOSE, +} crc_reversal_type_e; + + + + +typedef enum +{ + CRC_FXOR_DISABLE = 0, + CRC_FXOR_ENABLE, +} crc_fxor_function_e; + + + + +typedef enum +{ + CRC_16_BIT_PROTOCOL = 0, + CRC_32_BIT_PROTOCOL, +} crc_protocol_type_e; + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_gpio.h" +# 18 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + +typedef enum +{ + + IO_PAD_GPIO0 = 0, + IO_PAD_GPIO1, + IO_PAD_GPIO2, + IO_PAD_GPIO3, + IO_PAD_GPIO4, + IO_PAD_GPIO5, + IO_PAD_GPIO6, + IO_PAD_GPIO7, + IO_PAD_GPIO8, + IO_PAD_GPIO9, + IO_PAD_GPIO10, + IO_PAD_GPIO11, + IO_PAD_GPIO12, + IO_PAD_GPIO13, + IO_PAD_GPIO14, + IO_PAD_GPIO15, + IO_PAD_GPIO16, + IO_PAD_GPIO17, + IO_PAD_GPIO18, + IO_PAD_GPIO19, + IO_PAD_GPIO20, + IO_PAD_GPIO21, + IO_PAD_GPIO22, + IO_PAD_GPIO23, + IO_PAD_GPIO24, + IO_PAD_GPIO25, + + + IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, + IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, + IO_PAD_AP_INT = IO_PAD_GPIO2, + IO_PAD_AP_TE = IO_PAD_GPIO3, + IO_PAD_AP_SWIRE = IO_PAD_GPIO4, + IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, + IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, + IO_PAD_TD_RSTN = IO_PAD_GPIO7, + IO_PAD_AP_PWMEN = IO_PAD_GPIO8, + IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, + IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, + IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, + IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, + IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, + IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, + IO_PAD_SWD_CLK = IO_PAD_GPIO15, + IO_PAD_SWD_DIO = IO_PAD_GPIO16, + IO_PAD_AP_RSTN = IO_PAD_GPIO17, + IO_PAD_UART0_TX = IO_PAD_GPIO18, + IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, + IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, + IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, + IO_PAD_TD_INT = IO_PAD_GPIO22, + IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, + IO_PAD_UART1_TX = IO_PAD_GPIO24, + IO_PAD_UART0_RX = IO_PAD_GPIO25, + + IO_PAD_MAX, + + + + IO_PIN_1 = IO_PAD_SWD_CLK, + IO_PIN_2 = IO_PAD_UART0_TX, + IO_PIN_3 = IO_PAD_SWD_DIO, + IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, + IO_PIN_5 = IO_PAD_TD_SPIM_CLK, + IO_PIN_6 = IO_PAD_TD_SPIM_CSN, + IO_PIN_7 = IO_PAD_TD_SPIM_MISO, + IO_PIN_8 = IO_PAD_TD_RSTN, + IO_PIN_9 = IO_PAD_TD_FC_CSN, + IO_PIN_10 = IO_PAD_TD_FC_CLK, + IO_PIN_11 = IO_PAD_TD_FC_IO0, + IO_PIN_12 = IO_PAD_TD_FC_IO1, + IO_PIN_13 = IO_PAD_TD_TP_RESX, + IO_PIN_14 = IO_PAD_UART1_TX, + IO_PIN_15 = IO_PAD_AP_SWIRE, + IO_PIN_16 = IO_PAD_AP_INT, + IO_PIN_17 = IO_PAD_AP_PWMEN, + IO_PIN_18 = IO_PAD_AP_TPRSTN, + + IO_PIN_29 = IO_PAD_AP_TE, + IO_PIN_30 = IO_PAD_AP_SPIS_MISO, + IO_PIN_31 = IO_PAD_AP_SPIS_CSN, + IO_PIN_32 = IO_PAD_AP_SPIS_CLK, + IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, + IO_PIN_34 = IO_PAD_AP_RSTN, + IO_PIN_35 = IO_PAD_TD_INT, + IO_PIN_36 = IO_PAD_UART0_RX, + +} io_pad_e; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + PIN1_MODE_SWDCLK = 0, + PIN1_MODE_GPIO15 = 2, +} pin1_mode_e; + + + + + +typedef enum +{ + PIN2_MODE_UART0_TX = 0, + PIN2_MODE_PWMO = 1, + PIN2_MODE_GPIO18 = 2, + PIN2_MODE_PWMI = 3, + PIN2_MODE_TEAR1 = 4, +} pin2_mode_e; + + + + +typedef enum +{ + PIN3_MODE_SWDIO = 0, + PIN3_MODE_GPIO16 = 2, +} pin3_mode_e; + + + + + +typedef enum +{ + PIN4_MODE_SPIM_MOSI = 0, + PIN4_MODE_I2C02_SDA = 1, + PIN4_MODE_GPIO6 = 2, + PIN4_MODE_UART0_TX = 3, +} pin4_mode_e; + + + + +typedef enum +{ + PIN5_MODE_SPIM_SCLK = 0, + PIN5_MODE_I2C1_SCL = 1, + PIN5_MODE_GPIO19 = 2, +} pin5_mode_e; + + + + +typedef enum +{ + PIN6_MODE_SPIM_CSN = 0, + PIN6_MODE_I2C1_SDA = 1, + PIN6_MODE_GPIO20 = 2, +} pin6_mode_e; + + + + +typedef enum +{ + PIN7_MODE_SPIM_MISO = 0, + PIN7_MODE_I2C02_SCL = 1, + PIN7_MODE_GPIO5 = 2, +} pin7_mode_e; + + + + +typedef enum +{ + PIN8_MODE_GPIO7 = 2, + PIN8_MODE_I2C02_SDA = 3, +} pin8_mode_e; + + + + +typedef enum +{ + PIN9_MODE_TSPIS_CSN = 0, + PIN9_MODE_GPIO12 = 2, +} pin9_mode_e; + + + + +typedef enum +{ + PIN10_MODE_TSPIS_CLK = 0, + PIN10_MODE_GPIO11 = 2, +} pin10_mode_e; + + + + + +typedef enum +{ + PIN11_MODE_TSPIS_IO0 = 0, + PIN11_MODE_GPIO13 = 2, + PIN11_MODE_I2C02_SDA = 3, +} pin11_mode_e; + + + + +typedef enum +{ + PIN12_MODE_TSPIS_IO1 = 0, + PIN12_MODE_GPIO14 = 2, + PIN12_MODE_I2C02_SCL = 3, +} pin12_mode_e; + + + + +typedef enum +{ + PIN13_MODE_GPIO23 = 2, + PIN13_MODE_PWMO = 3, + PIN13_MODE_UART1_RX = 4, +} pin13_mode_e; + + + + +typedef enum +{ + PIN14_MODE_GPIO24 = 2, + PIN14_MODE_UART0_RX = 3, + PIN14_MODE_UART1_TX = 4, +} pin14_mode_e; + + + + + + +typedef enum +{ + PIN15_MODE_SWIRE = 0, + PIN15_MODE_PWMO = 1, + PIN15_MODE_GPIO4 = 2, +} pin15_mode_e; + + + + +typedef enum +{ + PIN16_MODE_GPIO2 = 2, +} pin16_mode_e; + + + + +typedef enum +{ + PIN17_MODE_UART0_RX = 1, + PIN17_MODE_GPIO8 = 2, + PIN17_MODE_PWMO = 3, +} pin17_mode_e; + + + + +typedef enum +{ + PIN18_MODE_UART0_RX = 0, + PIN18_MODE_GPIO21 = 2, + PIN18_MODE_I2C02_SCL = 3, +} pin18_mode_e; + + + + + + + +typedef enum +{ + PIN29_MODE_JTAG_TRSTN = 0, + PIN29_MODE_TEAR = 1, + PIN29_MODE_GPIO3 = 2, +} pin29_mode_e; + + + + + +typedef enum +{ + PIN30_MODE_JTAG_TDO = 0, + PIN30_MODE_SPIS_MISO = 1, + PIN30_MODE_GPIO0 = 2, + PIN30_MODE_UART0_RX = 3, + PIN30_MODE_I2C1_SCL = 6, +} pin30_mode_e; + + + + +typedef enum +{ + PIN31_MODE_JTAG_TMS = 0, + PIN31_MODE_SPIS_CSN = 1, + PIN31_MODE_GPIO10 = 2, + PIN31_MODE_I2C02_SDA = 3, +} pin31_mode_e; + + + + +typedef enum +{ + PIN32_MODE_JTAG_TCK = 0, + PIN32_MODE_SPIS_SCLK = 1, + PIN32_MODE_GPIO9 = 2, + PIN32_MODE_I2C02_SCL = 3, +} pin32_mode_e; + + + + +typedef enum +{ + PIN33_MODE_JTAG_TDI = 0, + PIN33_MODE_SPIS_MOSI = 1, + PIN33_MODE_GPIO1 = 2, + PIN33_MODE_UART0_TX = 3, + PIN33_MODE_I2C1_SDA_0 = 6, +} pin33_mode_e; + + + + +typedef enum +{ + PIN34_MODE_GPIO17 = 2, +} pin34_mode_e; + + + + + +typedef enum +{ + PIN35_MODE_GPIO22 = 2, +} pin35_mode_e; + + + + + +typedef enum +{ + PIN36_MODE_UART0_RX = 0, + PIN36_MODE_PWMO = 1, + PIN36_MODE_GPIO25 = 2, +} pin36_mode_e; + + + + + + + +typedef enum +{ + IO_MODE_INTER_FC_CLK = 0, + IO_MODE_TSPIS_CLK_EN = 2, +} pad_sfc_clk_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_CSN = 0, + IO_MODE_TSPIS_CSN_EN = 2, +} pad_sfc_csn_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO0 = 0, + IO_MODE_TSPIS_IO0_EN = 2, +} pad_sfc_io0_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO1 = 0, + IO_MODE_TSPIS_IO1_EN = 2, +} pad_sfc_io1_mode_e; + + + + +typedef enum +{ + IO_SLEW_RATE_SLOW = 0, + IO_SLEW_RATE_FAST = 1, +} pad_slew_rate_e; + + + + + + + +typedef enum +{ + IO_IOE_INPUT = 0, + IO_IOE_OUTPUT, + IO_IOE_NONE +} gpio_ioe_e; + + + + +typedef enum +{ + IO_LVL_LOW = 0, + IO_LVL_HIGH, + IO_LVL_NONE +} gpio_level_e; + + + + + + + +typedef struct +{ + io_pad_e pad; + uint8_t mode; + gpio_ioe_e ioe; + gpio_level_e lvl; +} io_pad_attr_t; + + + + + + + + + + + + + + +void hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); + + + + + + + + +void hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); + + + + + + + +void hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); + + + + + + +gpio_int_e hal_gpio_get_int_type(io_pad_e pad); + + + + + + + +void hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); + + + + + + + +void hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); + + + + + + +void hal_gpio_init_input(io_pad_e pad); + + + + + + +gpio_level_e hal_gpio_get_input_data(io_pad_e pad); + + + + + + + +void hal_gpio_set_mode(io_pad_e pad, uint8_t mode); + + + + + + +void hal_gpio_set_high_impedance(io_pad_e pad); + + + + + + + + +void hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); + + + + + + + + +void hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); + + + + + + + +void hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); + + + + + + + +void hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); + + + + + + + +void hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); + + + + + + + + +void hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); + + + + + + + +void hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); + +# 17 "..\\..\\src\\sdk\\include\\hal_system.h" +# 1 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + +# 18 "..\\..\\src\\common\\tau_log.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 38 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + typedef unsigned int size_t; +# 54 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + +extern __declspec(__nothrow) void *memcpy(void * __restrict , + const void * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) void *memmove(void * , + const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +extern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +# 193 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + + + + + +# 209 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + +extern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +# 232 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + +# 247 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + + +extern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +# 270 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + +extern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) char *strerror(int ); + + + + + + + +extern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 502 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + +# 19 "..\\..\\src\\common\\tau_log.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + +# 57 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + typedef struct __va_list { void *__ap; } va_list; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typedef va_list __gnuc_va_list; + + + + + + +# 147 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + +# 20 "..\\..\\src\\common\\tau_log.h" +# 1 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum IRQn +{ + + NonMaskableInt_IRQn = -14, + HardFault_IRQn = -13, + SVCall_IRQn = -5, + PendSV_IRQn = -2, + SysTick_IRQn = -1, + + + VIDC_IRQn = 0, + LCDC_IRQn = 1, + MIPI_RX_IRQn = 2, + MIPI_TX_IRQn = 3, + MEMC_IRQn = 4, + VPRE_IRQn = 5, + FLSCTRL_IRQn = 6, + DMA_IRQn = 7, + TIMER0_IRQn = 8, + TIMER1_IRQn = 9, + TIMER2_IRQn = 10, + TIMER3_IRQn = 11, + WDG_IRQn = 12, + UART_IRQn = 13, + I2C0_IRQn = 14, + I2C1_IRQn = 15, + SPIS_IRQn = 16, + SPIM_IRQn = 17, + VPRE1_IRQn = 18, + I2C2_IRQn = 19, + OTP_IRQn = 20, + SWIRE_IRQn = 21, + PVD_IRQn = 22, + AP_NRESET_IRQn = 23, + EXTI_INT0_IRQn = 24, + EXTI_INT1_IRQn = 25, + EXTI_INT2_IRQn = 26, + EXTI_INT3_IRQn = 27, + EXTI_INT4_IRQn = 28, + EXTI_INT5_IRQn = 29, + EXTI_INT6_IRQn = 30, + EXTI_INT7_IRQn = 31 + +} IRQn_Type; + + + + + + + + +#pragma push +#pragma anon_unions +# 107 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_version.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 64 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + +# 114 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 29 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 107 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __asm("control"); + return(__regControl); +} + + + + + + + +static __inline void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __asm("control"); + __regControl = control; +} + + + + + + + +static __inline uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __asm("ipsr"); + return(__regIPSR); +} + + + + + + + +static __inline uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __asm("apsr"); + return(__regAPSR); +} + + + + + + + +static __inline uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __asm("xpsr"); + return(__regXPSR); +} + + + + + + + +static __inline uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + return(__regProcessStackPointer); +} + + + + + + + +static __inline void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + __regProcessStackPointer = topOfProcStack; +} + + + + + + + +static __inline uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __asm("msp"); + return(__regMainStackPointer); +} + + + + + + + +static __inline void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __asm("msp"); + __regMainStackPointer = topOfMainStack; +} + + + + + + + +static __inline uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __asm("primask"); + return(__regPriMask); +} + + + + + + + +static __inline void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __asm("primask"); + __regPriMask = (priMask); +} + + +# 342 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + +static __inline uint32_t __get_FPSCR(void) +{ + + + + + + return(0U); + +} + + + + + + + +static __inline void __set_FPSCR(uint32_t fpscr) +{ + + + + + + (void)fpscr; + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} + + + + + + + + + + +__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U * 8U) - 1U; + + result = value; + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; + return result; +} + + + + + + + + + + + + +# 732 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + +__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + + + + + + + + + + + + + +# 866 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + +# 268 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 116 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + +# 150 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + +# 166 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:28; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} APSR_Type; + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:23; + } b; + uint32_t w; +} IPSR_Type; + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:15; + uint32_t T:1; + uint32_t _reserved1:3; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} xPSR_Type; + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:1; + uint32_t SPSEL:1; + uint32_t _reserved1:30; + } b; + uint32_t w; +} CONTROL_Type; + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t ISER[1U]; + uint32_t RESERVED0[31U]; + volatile uint32_t ICER[1U]; + uint32_t RESERVED1[31U]; + volatile uint32_t ISPR[1U]; + uint32_t RESERVED2[31U]; + volatile uint32_t ICPR[1U]; + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + volatile uint32_t IP[8U]; +} NVIC_Type; + + + + + + + + + + + + + + +typedef struct +{ + volatile const uint32_t CPUID; + volatile uint32_t ICSR; + uint32_t RESERVED0; + volatile uint32_t AIRCR; + volatile uint32_t SCR; + volatile uint32_t CCR; + uint32_t RESERVED1; + volatile uint32_t SHP[2U]; + volatile uint32_t SHCSR; +} SCB_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t CTRL; + volatile uint32_t LOAD; + volatile uint32_t VAL; + volatile const uint32_t CALIB; +} SysTick_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 583 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + +# 598 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + +static __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + + +static __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } + else + { + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } +} + + + + + + + + + + + +static __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } + else + { + return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } +} + + + + + + + + + + + + + +static __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + + + + + + + + + + + + +static __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + + + + + + + + + + +static __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = 0x0U; + (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = 0x0U; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +} + + + + + + +__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +{ + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | + (1UL << 2U)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + for(;;) + { + __nop(); + } +} + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SCB_GetFPUType(void) +{ + return 0U; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > (0xFFFFFFUL )) + { + return (1UL); + } + + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); + __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | + (1UL << 1U) | + (1UL ); + return (0UL); +} + + + + + + + + + + + + + + +# 122 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\Device\\ARM\\ARMCM0\\Include\\system_ARMCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern uint32_t SystemCoreClock; + + + + + + + +extern void SystemInit (void); + + + + + + + +extern void SystemCoreClockUpdate (void); + + + + + +# 123 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +#pragma pop +# 142 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +# 167 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + +# 179 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + +# 21 "..\\..\\src\\common\\tau_log.h" + + + + +# 31 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + kLOG_LEVEL_DBG = 0, + kLOG_LEVEL_INF, + kLOG_LEVEL_ERR, + kLOG_LEVEL_NONE +} log_level_e; + + + + + +typedef enum +{ + LOG_PORT_UART0, + LOG_PORT_UART1, + LOG_PORT_SWD, + LOG_PORT_UNKNOWN +} log_port_e; + + + + + + + + + + + + + + +void tau_log_init(uint32_t baud_rate, log_port_e log_port); + + + + + + + +void tau_log_printf(log_level_e log_lv, const char *fmt, ...); + +# 18 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + +typedef enum +{ + HAL_SYSCLK_80M = 80000000, + HAL_SYSCLK_100M = 100000000, + HAL_SYSCLK_150M = 150000000 +} hal_system_clk_e; + + + + + + + + + + + + + + +void hal_system_init(hal_system_clk_e sysclk); + + + + + + +void hal_system_idle_mode(_Bool disable_systick); + + + + + + +void hal_system_register_systick_cb(fcb_type cb_func); + + + + + + +_Bool hal_system_enable_systick(uint8_t ms); + + + + + + +_Bool hal_system_disable_systick(void); + + + + + + +uint32_t hal_system_get_tick(void); + + + + + + +void hal_system_reset_chip(void); + + + + + + +uint32_t hal_system_get_debug_state(void); + + + + + + +void hal_system_clear_debug_state(void); + + + + + + +_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); + +# 12 "..\\..\\src\\board\\board.c" +# 13 "..\\..\\src\\board\\board.c" +# 14 "..\\..\\src\\board\\board.c" +# 15 "..\\..\\src\\board\\board.c" + + + + + + +void board_Init(void) +{ + + hal_system_init(HAL_SYSCLK_80M); + + + tau_log_init(115200, LOG_PORT_UART0); + + + +} diff --git a/project/WL668/Listings/board.lst b/project/WL668/Listings/board.lst new file mode 100644 index 0000000..2645d9f --- /dev/null +++ b/project/WL668/Listings/board.lst @@ -0,0 +1,6596 @@ +L 1 "..\..\src\board\board.c" +N/******************************************************************************* +N* +N* +N* File: board.c +N* Description 板级文件 +N* Version V0.1 +N* Date 2023-07-23 +N* Author lzy +N*******************************************************************************/ +N#include "board.h" +L 1 "..\..\src\board\board.h" 1 +N/******************************************************************************* +N* +N* +N* File: board.h +N* Description: baord 初始化头文件 +N* Version: V0.1 +N* Date: 2020-01-08 +N* Author: lzy +N *******************************************************************************/ +N +N#ifndef __BOARD_H__ +N#define __BOARD_H__ +N +N/** +N* @brief 系统板级初始化,配置系统时钟,调试log输出 +N* @param none +N* @retval none +N*/ +Nvoid board_Init(void); +N +N#endif +L 11 "..\..\src\board\board.c" 2 +N#include "hal_system.h" +L 1 "..\..\src\sdk\include\hal_system.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_system.h +N* Description hal 通用系统接口头文件 +N* Version V0.1 +N* Date 2021-05-21 +N* Author lzy +N *******************************************************************************/ +N#ifndef __HAL_SYSTEM_H__ +N#define __HAL_SYSTEM_H__ +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_common.h" +L 1 "..\..\src\common\tau_common.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_common.h +N* Description 通用数据类型相关定义头文件 +N* Version V0.1 +N* Date 2020-09-07 +N* Author lzy +N *******************************************************************************/ +N +N#ifndef __TAU_COMMON_H +N#define __TAU_COMMON_H +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "stdint.h" +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h" 1 +N/* Copyright (C) ARM Ltd., 1999,2014 */ +N/* All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdint_h +N#define __stdint_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifdef __INT64_TYPE__ +S /* armclang predefines '__INT64_TYPE__' and '__INT64_C_SUFFIX__' */ +S #define __INT64 __INT64_TYPE__ +N #else +N /* armcc has builtin '__int64' which can be used in --strict mode */ +N #define __INT64 __int64 +N #define __INT64_C_SUFFIX__ ll +N #endif +N #define __PASTE2(x, y) x ## y +N #define __PASTE(x, y) __PASTE2(x, y) +N #define __INT64_C(x) __ESCAPE__(__PASTE(x, __INT64_C_SUFFIX__)) +N #define __UINT64_C(x) __ESCAPE__(__PASTE(x ## u, __INT64_C_SUFFIX__)) +N #if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X #if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N #else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N #endif +N +N #ifndef __STDINT_DECLS +N #define __STDINT_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N +N/* +N * 'signed' is redundant below, except for 'signed char' and if +N * the typedef is used to declare a bitfield. +N */ +N +N /* 7.18.1.1 */ +N +N /* exact-width signed integer types */ +Ntypedef signed char int8_t; +Ntypedef signed short int int16_t; +Ntypedef signed int int32_t; +Ntypedef signed __INT64 int64_t; +Xtypedef signed __int64 int64_t; +N +N /* exact-width unsigned integer types */ +Ntypedef unsigned char uint8_t; +Ntypedef unsigned short int uint16_t; +Ntypedef unsigned int uint32_t; +Ntypedef unsigned __INT64 uint64_t; +Xtypedef unsigned __int64 uint64_t; +N +N /* 7.18.1.2 */ +N +N /* smallest type of at least n bits */ +N /* minimum-width signed integer types */ +Ntypedef signed char int_least8_t; +Ntypedef signed short int int_least16_t; +Ntypedef signed int int_least32_t; +Ntypedef signed __INT64 int_least64_t; +Xtypedef signed __int64 int_least64_t; +N +N /* minimum-width unsigned integer types */ +Ntypedef unsigned char uint_least8_t; +Ntypedef unsigned short int uint_least16_t; +Ntypedef unsigned int uint_least32_t; +Ntypedef unsigned __INT64 uint_least64_t; +Xtypedef unsigned __int64 uint_least64_t; +N +N /* 7.18.1.3 */ +N +N /* fastest minimum-width signed integer types */ +Ntypedef signed int int_fast8_t; +Ntypedef signed int int_fast16_t; +Ntypedef signed int int_fast32_t; +Ntypedef signed __INT64 int_fast64_t; +Xtypedef signed __int64 int_fast64_t; +N +N /* fastest minimum-width unsigned integer types */ +Ntypedef unsigned int uint_fast8_t; +Ntypedef unsigned int uint_fast16_t; +Ntypedef unsigned int uint_fast32_t; +Ntypedef unsigned __INT64 uint_fast64_t; +Xtypedef unsigned __int64 uint_fast64_t; +N +N /* 7.18.1.4 integer types capable of holding object pointers */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +Stypedef signed __INT64 intptr_t; +Stypedef unsigned __INT64 uintptr_t; +N#else +Ntypedef signed int intptr_t; +Ntypedef unsigned int uintptr_t; +N#endif +N +N /* 7.18.1.5 greatest-width integer types */ +Ntypedef signed __LONGLONG intmax_t; +Xtypedef signed long long intmax_t; +Ntypedef unsigned __LONGLONG uintmax_t; +Xtypedef unsigned long long uintmax_t; +N +N +N#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) +X#if !0L || 0L +N +N /* 7.18.2.1 */ +N +N /* minimum values of exact-width signed integer types */ +N#define INT8_MIN -128 +N#define INT16_MIN -32768 +N#define INT32_MIN (~0x7fffffff) /* -2147483648 is unsigned */ +N#define INT64_MIN __INT64_C(~0x7fffffffffffffff) /* -9223372036854775808 is unsigned */ +N +N /* maximum values of exact-width signed integer types */ +N#define INT8_MAX 127 +N#define INT16_MAX 32767 +N#define INT32_MAX 2147483647 +N#define INT64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of exact-width unsigned integer types */ +N#define UINT8_MAX 255 +N#define UINT16_MAX 65535 +N#define UINT32_MAX 4294967295u +N#define UINT64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.2 */ +N +N /* minimum values of minimum-width signed integer types */ +N#define INT_LEAST8_MIN -128 +N#define INT_LEAST16_MIN -32768 +N#define INT_LEAST32_MIN (~0x7fffffff) +N#define INT_LEAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of minimum-width signed integer types */ +N#define INT_LEAST8_MAX 127 +N#define INT_LEAST16_MAX 32767 +N#define INT_LEAST32_MAX 2147483647 +N#define INT_LEAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of minimum-width unsigned integer types */ +N#define UINT_LEAST8_MAX 255 +N#define UINT_LEAST16_MAX 65535 +N#define UINT_LEAST32_MAX 4294967295u +N#define UINT_LEAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.3 */ +N +N /* minimum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MIN (~0x7fffffff) +N#define INT_FAST16_MIN (~0x7fffffff) +N#define INT_FAST32_MIN (~0x7fffffff) +N#define INT_FAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MAX 2147483647 +N#define INT_FAST16_MAX 2147483647 +N#define INT_FAST32_MAX 2147483647 +N#define INT_FAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of fastest minimum-width unsigned integer types */ +N#define UINT_FAST8_MAX 4294967295u +N#define UINT_FAST16_MAX 4294967295u +N#define UINT_FAST32_MAX 4294967295u +N#define UINT_FAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.4 */ +N +N /* minimum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MIN INT64_MIN +N#else +N#define INTPTR_MIN INT32_MIN +N#endif +N +N /* maximum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MAX INT64_MAX +N#else +N#define INTPTR_MAX INT32_MAX +N#endif +N +N /* maximum value of pointer-holding unsigned integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define UINTPTR_MAX UINT64_MAX +N#else +N#define UINTPTR_MAX UINT32_MAX +N#endif +N +N /* 7.18.2.5 */ +N +N /* minimum value of greatest-width signed integer type */ +N#define INTMAX_MIN __ESCAPE__(~0x7fffffffffffffffll) +N +N /* maximum value of greatest-width signed integer type */ +N#define INTMAX_MAX __ESCAPE__(9223372036854775807ll) +N +N /* maximum value of greatest-width unsigned integer type */ +N#define UINTMAX_MAX __ESCAPE__(18446744073709551615ull) +N +N /* 7.18.3 */ +N +N /* limits of ptrdiff_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define PTRDIFF_MIN INT64_MIN +S#define PTRDIFF_MAX INT64_MAX +N#else +N#define PTRDIFF_MIN INT32_MIN +N#define PTRDIFF_MAX INT32_MAX +N#endif +N +N /* limits of sig_atomic_t */ +N#define SIG_ATOMIC_MIN (~0x7fffffff) +N#define SIG_ATOMIC_MAX 2147483647 +N +N /* limit of size_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define SIZE_MAX UINT64_MAX +N#else +N#define SIZE_MAX UINT32_MAX +N#endif +N +N /* limits of wchar_t */ +N /* NB we have to undef and redef because they're defined in both +N * stdint.h and wchar.h */ +N#undef WCHAR_MIN +N#undef WCHAR_MAX +N +N#if defined(__WCHAR32) || (defined(__ARM_SIZEOF_WCHAR_T) && __ARM_SIZEOF_WCHAR_T == 4) +X#if 0L || (0L && __ARM_SIZEOF_WCHAR_T == 4) +S #define WCHAR_MIN 0 +S #define WCHAR_MAX 0xffffffffU +N#else +N #define WCHAR_MIN 0 +N #define WCHAR_MAX 65535 +N#endif +N +N /* limits of wint_t */ +N#define WINT_MIN (~0x7fffffff) +N#define WINT_MAX 2147483647 +N +N#endif /* __STDC_LIMIT_MACROS */ +N +N#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) +X#if !0L || 0L +N +N /* 7.18.4.1 macros for minimum-width integer constants */ +N#define INT8_C(x) (x) +N#define INT16_C(x) (x) +N#define INT32_C(x) (x) +N#define INT64_C(x) __INT64_C(x) +N +N#define UINT8_C(x) (x ## u) +N#define UINT16_C(x) (x ## u) +N#define UINT32_C(x) (x ## u) +N#define UINT64_C(x) __UINT64_C(x) +N +N /* 7.18.4.2 macros for greatest-width integer constants */ +N#define INTMAX_C(x) __ESCAPE__(x ## ll) +N#define UINTMAX_C(x) __ESCAPE__(x ## ull) +N +N#endif /* __STDC_CONSTANT_MACROS */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STDINT_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDINT_NO_EXPORTS +S using ::std::int8_t; +S using ::std::int16_t; +S using ::std::int32_t; +S using ::std::int64_t; +S using ::std::uint8_t; +S using ::std::uint16_t; +S using ::std::uint32_t; +S using ::std::uint64_t; +S using ::std::int_least8_t; +S using ::std::int_least16_t; +S using ::std::int_least32_t; +S using ::std::int_least64_t; +S using ::std::uint_least8_t; +S using ::std::uint_least16_t; +S using ::std::uint_least32_t; +S using ::std::uint_least64_t; +S using ::std::int_fast8_t; +S using ::std::int_fast16_t; +S using ::std::int_fast32_t; +S using ::std::int_fast64_t; +S using ::std::uint_fast8_t; +S using ::std::uint_fast16_t; +S using ::std::uint_fast32_t; +S using ::std::uint_fast64_t; +S using ::std::intptr_t; +S using ::std::uintptr_t; +S using ::std::intmax_t; +S using ::std::uintmax_t; +S #endif +N #endif /* __cplusplus */ +N +N#undef __INT64 +N#undef __LONGLONG +N +N#endif /* __stdint_h */ +N +N/* end of stdint.h */ +L 18 "..\..\src\common\tau_common.h" 2 +N#include "math.h" +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h" 1 +N/* +N * math.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.5 +N * Copyright (C) Codemist Ltd., 1988 +N * Copyright 1991-1998,2004-2006,2014 ARM Limited. All rights reserved +N */ +N +N/* +N * RCS $Revision$ Codemist 0.03 +N * Checkin $Date$ +N * Revising $Author: statham $ +N */ +N +N/* +N * Parts of this file are based upon fdlibm: +N * +N * ==================================================== +N * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +N * +N * Developed at SunSoft, a Sun Microsystems, Inc. business. +N * Permission to use, copy, modify, and distribute this +N * software is freely granted, provided that this notice +N * is preserved. +N * ==================================================== +N */ +N +N#ifndef __math_h +N#define __math_h +N#define __ARMCLIB_VERSION 5060037 +N +N#if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X#if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N#else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N#endif +N +N/* +N * Some of these declarations are new in C99. To access them in C++ +N * you can use -D__USE_C99_MATH (or -D__USE_C99_ALL). +N */ +N#ifndef __USE_C99_MATH +N #if defined(__USE_C99_ALL) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X #if 0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N #define __USE_C99_MATH 1 +N #endif +N#endif +N +N#define _ARMABI __declspec(__nothrow) +N#ifdef __TARGET_ARCH_AARCH64 +S# define _ARMABI_SOFTFP __declspec(__nothrow) +N#else +N# define _ARMABI_SOFTFP __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) +N# define __HAVE_LONGDOUBLE 1 +N#endif +N#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const)) +N#ifdef __FP_FENV_EXCEPTIONS +S# define _ARMABI_FPEXCEPT _ARMABI +N#else +N# define _ARMABI_FPEXCEPT _ARMABI __attribute__((const)) +N#endif +N +N#ifdef __cplusplus +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF inline +N#elif defined __GNUC__ || defined _USE_STATIC_INLINE +X#elif 1L || 0L +N#define _ARMABI_INLINE static __inline +N#define _ARMABI_INLINE_DEF static __inline +N#elif (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) +X#elif (1L && 199901L <= 199901L) +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF static inline +S#else +S#define _ARMABI_INLINE __inline +S#define _ARMABI_INLINE_DEF __inline +N#endif +N +N#ifdef __TARGET_ARCH_AARCH64 +S# define _SOFTFP +N#else +N# define _SOFTFP __attribute__((__pcs__("aapcs"))) +N#endif +N +N /* +N * If the compiler supports signalling nans as per N965 then it +N * will define __SUPPORT_SNAN__, in which case a user may define +N * _WANT_SNAN in order to obtain the nans function, as well as the +N * FP_NANS and FP_NANQ classification macros. +N */ +N#if defined(__SUPPORT_SNAN__) && defined(_WANT_SNAN) +X#if 0L && 0L +S#pragma import(__use_snan) +N#endif +N +N/* +N * Macros for our inline functions down below. +N * unsigned& __FLT(float x) - returns the bit pattern of x +N * unsigned& __HI(double x) - returns the bit pattern of the high part of x +N * (high part has exponent & sign bit in it) +N * unsigned& __LO(double x) - returns the bit pattern of the low part of x +N * +N * We can assign to __FLT, __HI, and __LO and the appropriate bits get set in +N * the floating point variable used. +N * +N * __HI & __LO are affected by the endianness and the target FPU. +N */ +N#define __FLT(x) (*(unsigned *)&(x)) +N#if defined(__ARM_BIG_ENDIAN) || defined(__BIG_ENDIAN) +X#if 0L || 0L +S# define __LO(x) (*(1 + (unsigned *)&(x))) +S# define __HI(x) (*(unsigned *)&(x)) +N#else /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N# define __HI(x) (*(1 + (unsigned *)&(x))) +N# define __LO(x) (*(unsigned *)&(x)) +N#endif /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N +N# ifndef __MATH_DECLS +N# define __MATH_DECLS +N +N +N/* +N * A set of functions that we don't actually want to put in the standard +N * namespace ever. These are all called by the C99 macros. As they're +N * not specified by any standard they can't belong in ::std::. The +N * macro #defines are below amongst the standard function declarations. +N * We only include these if we actually need them later on +N */ +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N# ifdef __cplusplus +S extern "C" { +N# endif /* __cplusplus */ +N +Nextern _SOFTFP unsigned __ARM_dcmp4(double /*x*/, double /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +Nextern _SOFTFP unsigned __ARM_fcmp4(float /*x*/, float /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); +N /* +N * Compare x and y and return the CPSR in r0. These means we can test for +N * result types with bit pattern matching. +N * +N * These are a copy of the declarations in rt_fp.h keep in sync. +N */ +N +Nextern _ARMABI_SOFTFP int __ARM_fpclassifyf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +Nextern _ARMABI_SOFTFP int __ARM_fpclassify(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); +N /* Classify x into NaN, infinite, normal, subnormal, zero */ +N /* Used by fpclassify macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinitef(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +N{ +N return ((__FLT(__x) >> 23) & 0xff) != 0xff; +X return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinite(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +N{ +N return ((__HI(__x) >> 20) & 0x7ff) != 0x7ff; +X return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +N} +N /* Return 1 if __x is finite, 0 otherwise */ +N /* Used by isfinite macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinff(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +N{ +N return (__FLT(__x) << 1) == 0xff000000; +X return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinf(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +N{ +N return ((__HI(__x) << 1) == 0xffe00000) && (__LO(__x) == 0); +X return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +N} +N /* Return 1 if __x is infinite, 0 otherwise */ +N /* Used by isinf macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreaterf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +N{ +N unsigned __f = __ARM_fcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreater(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +N{ +N unsigned __f = __ARM_dcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N /* +N * Compare __x and __y and return 1 if __x < __y or __x > __y, 0 otherwise +N * Used by islessgreater macro +N */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnanf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +N{ +N return (0x7f800000 - (__FLT(__x) & 0x7fffffff)) >> 31; +X return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnan(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +N{ +N unsigned __xf = __HI(__x) | ((__LO(__x) == 0) ? 0 : 1); +X unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); +N return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +N} +N /* Return 1 if __x is a NaN, 0 otherwise */ +N /* Used by isnan macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormalf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +N{ +N unsigned __xe = (__FLT(__x) >> 23) & 0xff; +X unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; +N return (__xe != 0xff) && (__xe != 0); +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormal(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +N{ +N unsigned __xe = (__HI(__x) >> 20) & 0x7ff; +X unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; +N return (__xe != 0x7ff) && (__xe != 0); +N} +N /* Return 1 if __x is a normalised number, 0 otherwise */ +N /* used by isnormal macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbitf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +N{ +N return __FLT(__x) >> 31; +X return (*(unsigned *)&(__x)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbit(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +N{ +N return __HI(__x) >> 31; +X return (*(1 + (unsigned *)&(__x))) >> 31; +N} +N /* Return signbit of __x */ +N /* Used by signbit macro */ +N +N# ifdef __cplusplus +S } /* extern "C" */ +N# endif /* __cplusplus */ +N#endif /* Strict ANSI */ +N +N# undef __CLIBNS +N +N# ifdef __cplusplus +S namespace std { +S# define __CLIBNS ::std:: +S extern "C" { +N# else +N# define __CLIBNS +N# endif /* __cplusplus */ +N +N +N#ifndef __has_builtin +N #define __has_builtin(x) 0 +N#endif +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N /* C99 additions */ +N typedef float float_t; +N typedef double double_t; +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VALF __builtin_inff() +S# define HUGE_VALL __builtin_infl() +S# define INFINITY __builtin_inff() +S# define NAN __builtin_nanf("") +N# else +N# define HUGE_VALF ((float)__INFINITY__) +N# define HUGE_VALL ((long double)__INFINITY__) +N# define INFINITY ((float)__INFINITY__) +N# define NAN (__ESCAPE__(0f_7FC00000)) +N#endif +N +N# define MATH_ERRNO 1 +N# define MATH_ERREXCEPT 2 +Nextern const int math_errhandling; +N#endif +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VAL __builtin_inf() +N#else +N# define HUGE_VAL ((double)__INFINITY__) +N#endif +N +Nextern _ARMABI double acos(double /*x*/); +Xextern __declspec(__nothrow) double acos(double ); +N /* computes the principal value of the arc cosine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* Returns: the arc cosine in the range 0 to Pi. */ +Nextern _ARMABI double asin(double /*x*/); +Xextern __declspec(__nothrow) double asin(double ); +N /* computes the principal value of the arc sine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* and -HUGE_VAL is returned. */ +N /* Returns: the arc sine in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI_PURE double atan(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double atan(double ); +N /* computes the principal value of the arc tangent of x */ +N /* Returns: the arc tangent in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI double atan2(double /*y*/, double /*x*/); +Xextern __declspec(__nothrow) double atan2(double , double ); +N /* computes the principal value of the arc tangent of y/x, using the */ +N /* signs of both arguments to determine the quadrant of the return value */ +N /* a domain error occurs if both args are zero, and -HUGE_VAL returned. */ +N /* Returns: the arc tangent of y/x, in the range -Pi to Pi. */ +N +Nextern _ARMABI double cos(double /*x*/); +Xextern __declspec(__nothrow) double cos(double ); +N /* computes the cosine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the cosine value. */ +Nextern _ARMABI double sin(double /*x*/); +Xextern __declspec(__nothrow) double sin(double ); +N /* computes the sine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the sine value. */ +N +Nextern void __use_accurate_range_reduction(void); +N /* reference this to select the larger, slower, but more accurate */ +N /* range reduction in sin, cos and tan */ +N +Nextern _ARMABI double tan(double /*x*/); +Xextern __declspec(__nothrow) double tan(double ); +N /* computes the tangent of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance */ +N /* Returns: the tangent value. */ +N /* if range error; returns HUGE_VAL. */ +N +Nextern _ARMABI double cosh(double /*x*/); +Xextern __declspec(__nothrow) double cosh(double ); +N /* computes the hyperbolic cosine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic cosine value. */ +N /* if range error; returns HUGE_VAL. */ +Nextern _ARMABI double sinh(double /*x*/); +Xextern __declspec(__nothrow) double sinh(double ); +N /* computes the hyperbolic sine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic sine value. */ +N /* if range error; returns -HUGE_VAL or HUGE_VAL depending */ +N /* on the sign of the argument */ +N +Nextern _ARMABI_PURE double tanh(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double tanh(double ); +N /* computes the hyperbolic tangent of x. */ +N /* Returns: the hyperbolic tangent value. */ +N +Nextern _ARMABI double exp(double /*x*/); +Xextern __declspec(__nothrow) double exp(double ); +N /* computes the exponential function of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the exponential value. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +N +Nextern _ARMABI double frexp(double /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); +N /* breaks a floating-point number into a normalised fraction and an */ +N /* integral power of 2. It stores the integer in the int object pointed */ +N /* to by exp. */ +N /* Returns: the value x, such that x is a double with magnitude in the */ +N /* interval 0.5 to 1.0 or zero, and value equals x times 2 raised to the */ +N /* power *exp. If value is zero, both parts of the result are zero. */ +N +Nextern _ARMABI double ldexp(double /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) double ldexp(double , int ); +N /* multiplies a floating-point number by an integral power of 2. */ +N /* A range error may occur. */ +N /* Returns: the value of x times 2 raised to the power of exp. */ +N /* if range error; HUGE_VAL is returned. */ +Nextern _ARMABI double log(double /*x*/); +Xextern __declspec(__nothrow) double log(double ); +N /* computes the natural logarithm of x. A domain error occurs if the */ +N /* argument is negative, and -HUGE_VAL is returned. A range error occurs */ +N /* if the argument is zero. */ +N /* Returns: the natural logarithm. */ +N /* if range error; -HUGE_VAL is returned. */ +Nextern _ARMABI double log10(double /*x*/); +Xextern __declspec(__nothrow) double log10(double ); +N /* computes the base-ten logarithm of x. A domain error occurs if the */ +N /* argument is negative. A range error occurs if the argument is zero. */ +N /* Returns: the base-ten logarithm. */ +Nextern _ARMABI double modf(double /*value*/, double * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); +N /* breaks the argument value into integral and fraction parts, each of */ +N /* which has the same sign as the argument. It stores the integral part */ +N /* as a double in the object pointed to by iptr. */ +N /* Returns: the signed fractional part of value. */ +N +Nextern _ARMABI double pow(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double pow(double , double ); +N /* computes x raised to the power of y. A domain error occurs if x is */ +N /* zero and y is less than or equal to zero, or if x is negative and y */ +N /* is not an integer, and -HUGE_VAL returned. A range error may occur. */ +N /* Returns: the value of x raised to the power of y. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +Nextern _ARMABI double sqrt(double /*x*/); +Xextern __declspec(__nothrow) double sqrt(double ); +N /* computes the non-negative square root of x. A domain error occurs */ +N /* if the argument is negative, and -HUGE_VAL returned. */ +N /* Returns: the value of the square root. */ +N +N#if defined(__TARGET_FPU_VFP_DOUBLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE double _sqrt(double __x) { return __sqrt(__x); } +N#else +N _ARMABI_INLINE double _sqrt(double __x) { return sqrt(__x); } +X static __inline double _sqrt(double __x) { return sqrt(__x); } +N#endif +N#if defined(__TARGET_FPU_VFP_SINGLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE float _sqrtf(float __x) { return __sqrtf(__x); } +N#else +N _ARMABI_INLINE float _sqrtf(float __x) { return (float)sqrt(__x); } +X static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } +N#endif +N /* With VFP, _sqrt and _sqrtf should expand inline as the native VFP square root +N * instructions. They will not behave like the C sqrt() function, because +N * they will report unusual values as IEEE exceptions (in fpmodes which +N * support IEEE exceptions) rather than in errno. These function names +N * are not specified in any standard. */ +N +Nextern _ARMABI_PURE double ceil(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double ceil(double ); +N /* computes the smallest integer not less than x. */ +N /* Returns: the smallest integer not less than x, expressed as a double. */ +Nextern _ARMABI_PURE double fabs(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fabs(double ); +N /* computes the absolute value of the floating-point number x. */ +N /* Returns: the absolute value of x. */ +N +Nextern _ARMABI_PURE double floor(double /*d*/); +Xextern __declspec(__nothrow) __attribute__((const)) double floor(double ); +N /* computes the largest integer not greater than x. */ +N /* Returns: the largest integer not greater than x, expressed as a double */ +N +Nextern _ARMABI double fmod(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fmod(double , double ); +N /* computes the floating-point remainder of x/y. */ +N /* Returns: the value x - i * y, for some integer i such that, if y is */ +N /* nonzero, the result has the same sign as x and magnitude */ +N /* less than the magnitude of y. If y is zero, a domain error */ +N /* occurs and -HUGE_VAL is returned. */ +N +N /* Additional Mathlib functions not defined by the ANSI standard. +N * Not guaranteed, and not necessarily very well tested. +N * C99 requires the user to include to use these functions +N * declaring them "by hand" is not sufficient +N * +N * The above statement is not completely true now. Some of the above +N * C99 functionality has been added as per the Standard, and (where +N * necessary) old Mathlib functionality withdrawn/changed. Before +N * including this header #define __ENABLE_MATHLIB_LEGACY if you want to +N * re-enable the legacy functionality. +N */ +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +Nextern _ARMABI double acosh(double /*x*/); +Xextern __declspec(__nothrow) double acosh(double ); +N /* +N * Inverse cosh. EDOM if argument < 1.0 +N */ +Nextern _ARMABI double asinh(double /*x*/); +Xextern __declspec(__nothrow) double asinh(double ); +N /* +N * Inverse sinh. +N */ +Nextern _ARMABI double atanh(double /*x*/); +Xextern __declspec(__nothrow) double atanh(double ); +N /* +N * Inverse tanh. EDOM if |argument| > 1.0 +N */ +Nextern _ARMABI double cbrt(double /*x*/); +Xextern __declspec(__nothrow) double cbrt(double ); +N /* +N * Cube root. +N */ +N_ARMABI_INLINE _ARMABI_PURE double copysign(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __HI(__x) = (__HI(__x) & 0x7fffffff) | (__HI(__y) & 0x80000000); +X (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); +N return __x; +N} +N_ARMABI_INLINE _ARMABI_PURE float copysignf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __FLT(__x) = (__FLT(__x) & 0x7fffffff) | (__FLT(__y) & 0x80000000); +X (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); +N return __x; +N} +Nextern _ARMABI double erf(double /*x*/); +Xextern __declspec(__nothrow) double erf(double ); +N /* +N * Error function. (2/sqrt(pi)) * integral from 0 to x of exp(-t*t) dt. +N */ +Nextern _ARMABI double erfc(double /*x*/); +Xextern __declspec(__nothrow) double erfc(double ); +N /* +N * 1-erf(x). (More accurate than just coding 1-erf(x), for large x.) +N */ +Nextern _ARMABI double expm1(double /*x*/); +Xextern __declspec(__nothrow) double expm1(double ); +N /* +N * exp(x)-1. (More accurate than just coding exp(x)-1, for small x.) +N */ +N#define fpclassify(x) \ +N ((sizeof(x) == sizeof(float)) ? \ +N __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +X#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +N /* +N * Classify a floating point number into one of the following values: +N */ +N#define FP_ZERO (0) +N#define FP_SUBNORMAL (4) +N#define FP_NORMAL (5) +N#define FP_INFINITE (3) +N#define FP_NAN (7) +N +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +S/* +S * Note that we'll never classify a number as FP_NAN, as all NaNs will +S * be either FP_NANQ or FP_NANS +S */ +S# define FP_NANQ (8) +S# define FP_NANS (9) +N#endif +N +N +Nextern _ARMABI double hypot(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double hypot(double , double ); +N /* +N * sqrt(x*x+y*y), ie the length of the vector (x,y) or the +N * hypotenuse of a right triangle whose other two sides are x +N * and y. Won't overflow unless the _answer_ is too big, even +N * if the intermediate x*x+y*y is too big. +N */ +Nextern _ARMABI int ilogb(double /*x*/); +Xextern __declspec(__nothrow) int ilogb(double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +Nextern _ARMABI int ilogbf(float /*x*/); +Xextern __declspec(__nothrow) int ilogbf(float ); +N /* +N * Like ilogb but takes a float +N */ +Nextern _ARMABI int ilogbl(long double /*x*/); +Xextern __declspec(__nothrow) int ilogbl(long double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +N#define FP_ILOGB0 (-0x7fffffff) /* ilogb(0) == -INT_MAX */ +N#define FP_ILOGBNAN ( 0x80000000) /* ilogb(NAN) == INT_MIN */ +N +N#define isfinite(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isfinitef(x) \ +N : __ARM_isfinite(x)) +X#define isfinite(x) ((sizeof(x) == sizeof(float)) ? __ARM_isfinitef(x) : __ARM_isfinite(x)) +N /* +N * Returns true if x is a finite number, size independent. +N */ +N +N#define isgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +X#define isgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +N /* +N * Returns true if x > y, throws no exceptions except on Signaling NaNs +N * +N * We want the C not set but the Z bit clear, V must be clear +N */ +N +N#define isgreaterequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +X#define isgreaterequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +N /* +N * Returns true if x >= y, throws no exceptions except on Signaling NaNs +N * +N * We just need to see if the C bit is set or not and ensure V clear +N */ +N +N#define isinf(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isinff(x) \ +N : __ARM_isinf(x)) +X#define isinf(x) ((sizeof(x) == sizeof(float)) ? __ARM_isinff(x) : __ARM_isinf(x)) +N /* +N * Returns true if x is an infinity, size independent. +N */ +N +N#define isless(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +X#define isless(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +N /* +N * Returns true if x < y, throws no exceptions except on Signaling NaNs +N * +N * We're less than if N is set, V clear +N */ +N +N#define islessequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) \ +N : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +X#define islessequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +N /* +N * Returns true if x <= y, throws no exceptions except on Signaling NaNs +N * +N * We're less than or equal if one of N or Z is set, V clear +N */ +N +N#define islessgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? __ARM_islessgreaterf((x), (y)) \ +N : __ARM_islessgreater((x), (y))) +X#define islessgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? __ARM_islessgreaterf((x), (y)) : __ARM_islessgreater((x), (y))) +N /* +N * Returns true if x <> y, throws no exceptions except on Signaling NaNs +N * Unfortunately this test is too complicated to do in a macro without +N * evaluating x & y twice. Shame really... +N */ +N +N#define isnan(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnanf(x) \ +N : __ARM_isnan(x)) +X#define isnan(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnanf(x) : __ARM_isnan(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isnormal(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnormalf(x) \ +N : __ARM_isnormal(x)) +X#define isnormal(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnormalf(x) : __ARM_isnormal(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isunordered(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +X#define isunordered(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +N /* +N * Returns true if x ? y, throws no exceptions except on Signaling NaNs +N * Unordered occurs if and only if the V bit is set +N */ +N +Nextern _ARMABI double lgamma (double /*x*/); +Xextern __declspec(__nothrow) double lgamma (double ); +N /* +N * The log of the absolute value of the gamma function of x. The sign +N * of the gamma function of x is returned in the global `signgam'. +N */ +Nextern _ARMABI double log1p(double /*x*/); +Xextern __declspec(__nothrow) double log1p(double ); +N /* +N * log(1+x). (More accurate than just coding log(1+x), for small x.) +N */ +Nextern _ARMABI double logb(double /*x*/); +Xextern __declspec(__nothrow) double logb(double ); +N /* +N * Like ilogb but returns a double. +N */ +Nextern _ARMABI float logbf(float /*x*/); +Xextern __declspec(__nothrow) float logbf(float ); +N /* +N * Like logb but takes and returns float +N */ +Nextern _ARMABI long double logbl(long double /*x*/); +Xextern __declspec(__nothrow) long double logbl(long double ); +N /* +N * Like logb but takes and returns long double +N */ +Nextern _ARMABI double nextafter(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double nextafter(double , double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nextafterf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float nextafterf(float , float ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nextafterl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nextafterl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double nexttoward(double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) double nexttoward(double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nexttowardf(float /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) float nexttowardf(float , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nexttowardl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nexttowardl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double remainder(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double remainder(double , double ); +N /* +N * Returns the remainder of x by y, in the IEEE 754 sense. +N */ +Nextern _ARMABI_FPEXCEPT double rint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double rint(double ); +N /* +N * Rounds x to an integer, in the IEEE 754 sense. +N */ +Nextern _ARMABI double scalbln(double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) double scalbln(double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalblnf(float /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) float scalblnf(float , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalblnl(long double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) long double scalblnl(long double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI double scalbn(double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) double scalbn(double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalbnf(float /*x*/, int /*n*/); +Xextern __declspec(__nothrow) float scalbnf(float , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalbnl(long double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) long double scalbnl(long double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +N#define signbit(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_signbitf(x) \ +N : __ARM_signbit(x)) +X#define signbit(x) ((sizeof(x) == sizeof(float)) ? __ARM_signbitf(x) : __ARM_signbit(x)) +N /* +N * Returns the signbit of x, size independent macro +N */ +N#endif +N +N/* C99 float versions of functions. math.h has always reserved these +N identifiers for this purpose (7.13.4). */ +Nextern _ARMABI_PURE float _fabsf(float); /* old ARM name */ +Xextern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +N_ARMABI_INLINE _ARMABI_PURE float fabsf(float __f) { return _fabsf(__f); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +Nextern _ARMABI float sinf(float /*x*/); +Xextern __declspec(__nothrow) float sinf(float ); +Nextern _ARMABI float cosf(float /*x*/); +Xextern __declspec(__nothrow) float cosf(float ); +Nextern _ARMABI float tanf(float /*x*/); +Xextern __declspec(__nothrow) float tanf(float ); +Nextern _ARMABI float acosf(float /*x*/); +Xextern __declspec(__nothrow) float acosf(float ); +Nextern _ARMABI float asinf(float /*x*/); +Xextern __declspec(__nothrow) float asinf(float ); +Nextern _ARMABI float atanf(float /*x*/); +Xextern __declspec(__nothrow) float atanf(float ); +Nextern _ARMABI float atan2f(float /*y*/, float /*x*/); +Xextern __declspec(__nothrow) float atan2f(float , float ); +Nextern _ARMABI float sinhf(float /*x*/); +Xextern __declspec(__nothrow) float sinhf(float ); +Nextern _ARMABI float coshf(float /*x*/); +Xextern __declspec(__nothrow) float coshf(float ); +Nextern _ARMABI float tanhf(float /*x*/); +Xextern __declspec(__nothrow) float tanhf(float ); +Nextern _ARMABI float expf(float /*x*/); +Xextern __declspec(__nothrow) float expf(float ); +Nextern _ARMABI float logf(float /*x*/); +Xextern __declspec(__nothrow) float logf(float ); +Nextern _ARMABI float log10f(float /*x*/); +Xextern __declspec(__nothrow) float log10f(float ); +Nextern _ARMABI float powf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float powf(float , float ); +Nextern _ARMABI float sqrtf(float /*x*/); +Xextern __declspec(__nothrow) float sqrtf(float ); +Nextern _ARMABI float ldexpf(float /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) float ldexpf(float , int ); +Nextern _ARMABI float frexpf(float /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +Nextern _ARMABI_PURE float ceilf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +Nextern _ARMABI_PURE float floorf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +Nextern _ARMABI float fmodf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fmodf(float , float ); +Nextern _ARMABI float modff(float /*value*/, float * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); +N +N/* C99 long double versions of functions. */ +N/* (also need to have 'using' declarations below) */ +N#define _ARMDEFLD1(f) \ +N _ARMABI long double f##l(long double /*x*/) +X#define _ARMDEFLD1(f) _ARMABI long double f##l(long double ) +N +N#define _ARMDEFLD1P(f, T) \ +N _ARMABI long double f##l(long double /*x*/, T /*p*/) +X#define _ARMDEFLD1P(f, T) _ARMABI long double f##l(long double , T ) +N +N#define _ARMDEFLD2(f) \ +N _ARMABI long double f##l(long double /*x*/, long double /*y*/) +X#define _ARMDEFLD2(f) _ARMABI long double f##l(long double , long double ) +N +N/* +N * Long double versions of C89 functions can be defined +N * unconditionally, because C89 reserved these names in "future +N * library directions". +N */ +N_ARMDEFLD1(acos); +X__declspec(__nothrow) long double acosl(long double ); +N_ARMDEFLD1(asin); +X__declspec(__nothrow) long double asinl(long double ); +N_ARMDEFLD1(atan); +X__declspec(__nothrow) long double atanl(long double ); +N_ARMDEFLD2(atan2); +X__declspec(__nothrow) long double atan2l(long double , long double ); +N_ARMDEFLD1(ceil); +X__declspec(__nothrow) long double ceill(long double ); +N_ARMDEFLD1(cos); +X__declspec(__nothrow) long double cosl(long double ); +N_ARMDEFLD1(cosh); +X__declspec(__nothrow) long double coshl(long double ); +N_ARMDEFLD1(exp); +X__declspec(__nothrow) long double expl(long double ); +N_ARMDEFLD1(fabs); +X__declspec(__nothrow) long double fabsl(long double ); +N_ARMDEFLD1(floor); +X__declspec(__nothrow) long double floorl(long double ); +N_ARMDEFLD2(fmod); +X__declspec(__nothrow) long double fmodl(long double , long double ); +N_ARMDEFLD1P(frexp, int*) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +N_ARMDEFLD1P(ldexp, int); +X__declspec(__nothrow) long double ldexpl(long double , int ); +N_ARMDEFLD1(log); +X__declspec(__nothrow) long double logl(long double ); +N_ARMDEFLD1(log10); +X__declspec(__nothrow) long double log10l(long double ); +N_ARMABI long double modfl(long double /*x*/, long double * /*p*/) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +N_ARMDEFLD2(pow); +X__declspec(__nothrow) long double powl(long double , long double ); +N_ARMDEFLD1(sin); +X__declspec(__nothrow) long double sinl(long double ); +N_ARMDEFLD1(sinh); +X__declspec(__nothrow) long double sinhl(long double ); +N_ARMDEFLD1(sqrt); +X__declspec(__nothrow) long double sqrtl(long double ); +N_ARMDEFLD1(tan); +X__declspec(__nothrow) long double tanl(long double ); +N_ARMDEFLD1(tanh); +X__declspec(__nothrow) long double tanhl(long double ); +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +N/* +N * C99 float and long double versions of extra-C89 functions. +N */ +Nextern _ARMABI float acoshf(float /*x*/); +Xextern __declspec(__nothrow) float acoshf(float ); +N_ARMDEFLD1(acosh); +X__declspec(__nothrow) long double acoshl(long double ); +Nextern _ARMABI float asinhf(float /*x*/); +Xextern __declspec(__nothrow) float asinhf(float ); +N_ARMDEFLD1(asinh); +X__declspec(__nothrow) long double asinhl(long double ); +Nextern _ARMABI float atanhf(float /*x*/); +Xextern __declspec(__nothrow) float atanhf(float ); +N_ARMDEFLD1(atanh); +X__declspec(__nothrow) long double atanhl(long double ); +N_ARMDEFLD2(copysign); +X__declspec(__nothrow) long double copysignl(long double , long double ); +Nextern _ARMABI float cbrtf(float /*x*/); +Xextern __declspec(__nothrow) float cbrtf(float ); +N_ARMDEFLD1(cbrt); +X__declspec(__nothrow) long double cbrtl(long double ); +Nextern _ARMABI float erff(float /*x*/); +Xextern __declspec(__nothrow) float erff(float ); +N_ARMDEFLD1(erf); +X__declspec(__nothrow) long double erfl(long double ); +Nextern _ARMABI float erfcf(float /*x*/); +Xextern __declspec(__nothrow) float erfcf(float ); +N_ARMDEFLD1(erfc); +X__declspec(__nothrow) long double erfcl(long double ); +Nextern _ARMABI float expm1f(float /*x*/); +Xextern __declspec(__nothrow) float expm1f(float ); +N_ARMDEFLD1(expm1); +X__declspec(__nothrow) long double expm1l(long double ); +Nextern _ARMABI float log1pf(float /*x*/); +Xextern __declspec(__nothrow) float log1pf(float ); +N_ARMDEFLD1(log1p); +X__declspec(__nothrow) long double log1pl(long double ); +Nextern _ARMABI float hypotf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float hypotf(float , float ); +N_ARMDEFLD2(hypot); +X__declspec(__nothrow) long double hypotl(long double , long double ); +Nextern _ARMABI float lgammaf(float /*x*/); +Xextern __declspec(__nothrow) float lgammaf(float ); +N_ARMDEFLD1(lgamma); +X__declspec(__nothrow) long double lgammal(long double ); +Nextern _ARMABI float remainderf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float remainderf(float , float ); +N_ARMDEFLD2(remainder); +X__declspec(__nothrow) long double remainderl(long double , long double ); +Nextern _ARMABI float rintf(float /*x*/); +Xextern __declspec(__nothrow) float rintf(float ); +N_ARMDEFLD1(rint); +X__declspec(__nothrow) long double rintl(long double ); +N +N#endif +N +N#if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +X#if (0L && !0L) || 1L +N/* +N * Functions new in C99. +N */ +Nextern _ARMABI double exp2(double /*x*/); /* * 2.^x. */ +Xextern __declspec(__nothrow) double exp2(double ); +Nextern _ARMABI float exp2f(float /*x*/); +Xextern __declspec(__nothrow) float exp2f(float ); +N_ARMDEFLD1(exp2); +X__declspec(__nothrow) long double exp2l(long double ); +Nextern _ARMABI double fdim(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fdim(double , double ); +Nextern _ARMABI float fdimf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fdimf(float , float ); +N_ARMDEFLD2(fdim); +X__declspec(__nothrow) long double fdiml(long double , long double ); +N#ifdef __FP_FAST_FMA +S#define FP_FAST_FMA +N#endif +N#ifdef __FP_FAST_FMAF +S#define FP_FAST_FMAF +N#endif +N#ifdef __FP_FAST_FMAL +S#define FP_FAST_FMAL +N#endif +Nextern _ARMABI double fma(double /*x*/, double /*y*/, double /*z*/); +Xextern __declspec(__nothrow) double fma(double , double , double ); +Nextern _ARMABI float fmaf(float /*x*/, float /*y*/, float /*z*/); +Xextern __declspec(__nothrow) float fmaf(float , float , float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long double fmal(long double __x, long double __y, long double __z) \ +N { return (long double)fma((double)__x, (double)__y, (double)__z); } +Xstatic __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } +N#endif +Nextern _ARMABI_FPEXCEPT double fmax(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +Nextern _ARMABI_FPEXCEPT float fmaxf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +N_ARMDEFLD2(fmax); +X__declspec(__nothrow) long double fmaxl(long double , long double ); +Nextern _ARMABI_FPEXCEPT double fmin(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +Nextern _ARMABI_FPEXCEPT float fminf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +N_ARMDEFLD2(fmin); +X__declspec(__nothrow) long double fminl(long double , long double ); +Nextern _ARMABI double log2(double /*x*/); /* * log base 2 of x. */ +Xextern __declspec(__nothrow) double log2(double ); +Nextern _ARMABI float log2f(float /*x*/); +Xextern __declspec(__nothrow) float log2f(float ); +N_ARMDEFLD1(log2); +X__declspec(__nothrow) long double log2l(long double ); +Nextern _ARMABI long lrint(double /*x*/); +Xextern __declspec(__nothrow) long lrint(double ); +Nextern _ARMABI long lrintf(float /*x*/); +Xextern __declspec(__nothrow) long lrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lrintl(long double __x) \ +N { return lrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llrint(double /*x*/); +Xextern __declspec(__nothrow) long long llrint(double ); +Nextern _ARMABI __LONGLONG llrintf(float /*x*/); +Xextern __declspec(__nothrow) long long llrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llrintl(long double __x) \ +N { return llrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } +N#endif +Nextern _ARMABI long lround(double /*x*/); +Xextern __declspec(__nothrow) long lround(double ); +Nextern _ARMABI long lroundf(float /*x*/); +Xextern __declspec(__nothrow) long lroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lroundl(long double __x) \ +N { return lround((double)__x); } +Xstatic __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llround(double /*x*/); +Xextern __declspec(__nothrow) long long llround(double ); +Nextern _ARMABI __LONGLONG llroundf(float /*x*/); +Xextern __declspec(__nothrow) long long llroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llroundl(long double __x) \ +N { return llround((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } +N#endif +Nextern _ARMABI_PURE double nan(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +Nextern _ARMABI_PURE float nanf(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI_PURE long double nanl(const char *__t) \ +N { return (long double)nan(__t); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +N#endif +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +Sextern _ARMABI_PURE double nans(const char */*tagp*/); +Sextern _ARMABI_PURE float nansf(const char */*tagp*/); +S#ifdef __HAVE_LONGDOUBLE +S_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) \ +S { return (long double)nans(__t); } +X_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) { return (long double)nans(__t); } +S#endif +N#endif +Nextern _ARMABI_FPEXCEPT double nearbyint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +Nextern _ARMABI_FPEXCEPT float nearbyintf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +N_ARMDEFLD1(nearbyint); +X__declspec(__nothrow) long double nearbyintl(long double ); +Nextern double remquo(double /*x*/, double /*y*/, int */*quo*/); +Nextern float remquof(float /*x*/, float /*y*/, int */*quo*/); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE long double remquol(long double __x, long double __y, int *__q) \ +N { return (long double)remquo((double)__x, (double)__y, __q); } +Xstatic __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } +N#endif +Nextern _ARMABI_FPEXCEPT double round(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double round(double ); +Nextern _ARMABI_FPEXCEPT float roundf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +N_ARMDEFLD1(round); +X__declspec(__nothrow) long double roundl(long double ); +Nextern _ARMABI double tgamma(double /*x*/); /* * The gamma function of x. */ +Xextern __declspec(__nothrow) double tgamma(double ); +Nextern _ARMABI float tgammaf(float /*x*/); +Xextern __declspec(__nothrow) float tgammaf(float ); +N_ARMDEFLD1(tgamma); +X__declspec(__nothrow) long double tgammal(long double ); +Nextern _ARMABI_FPEXCEPT double trunc(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +Nextern _ARMABI_FPEXCEPT float truncf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +N_ARMDEFLD1(trunc); +X__declspec(__nothrow) long double truncl(long double ); +N#endif +N +N#undef _ARMDEFLD1 +N#undef _ARMDEFLD1P +N#undef _ARMDEFLD2 +N +N#if defined(__cplusplus) && ((!defined(__STRICT_ANSI__) || defined(__USE_C99_MATH)) || defined(__ARMCOMPILER_LIBCXX)) +X#if 0L && ((!0L || 1L) || 0L) +S extern "C++" { +S inline int (fpclassify)(double __x) { return fpclassify(__x); } +S inline bool (isfinite)(double __x) { return isfinite(__x); } +S inline bool (isgreater)(double __x, double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(double __x, double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(double __x) { return isinf(__x); } +S inline bool (isless)(double __x, double __y) { return isless(__x, __y); } +S inline bool (islessequal)(double __x, double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(double __x, double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(double __x) { return isnan(__x); } +S inline bool (isnormal)(double __x) { return isnormal(__x); } +S inline bool (isunordered)(double __x, double __y) { return isunordered(__x, __y); } +S +S } +N#endif +N +N#if defined(__cplusplus) && !defined(__ARMCOMPILER_LIBCXX) +X#if 0L && !0L +S extern "C++" { +S inline float abs(float __x) { return fabsf(__x); } +S inline float acos(float __x) { return acosf(__x); } +S inline float asin(float __x) { return asinf(__x); } +S inline float atan(float __x) { return atanf(__x); } +S inline float atan2(float __y, float __x) { return atan2f(__y,__x); } +S inline float ceil(float __x) { return ceilf(__x); } +S inline float cos(float __x) { return cosf(__x); } +S inline float cosh(float __x) { return coshf(__x); } +S inline float exp(float __x) { return expf(__x); } +S inline float fabs(float __x) { return fabsf(__x); } +S inline float floor(float __x) { return floorf(__x); } +S inline float fmod(float __x, float __y) { return fmodf(__x, __y); } +S float frexp(float __x, int* __exp) __attribute__((__nonnull__(2))); +S inline float frexp(float __x, int* __exp) { return frexpf(__x, __exp); } +S inline float ldexp(float __x, int __exp) { return ldexpf(__x, __exp);} +S inline float log(float __x) { return logf(__x); } +S inline float log10(float __x) { return log10f(__x); } +S float modf(float __x, float* __iptr) __attribute__((__nonnull__(2))); +S inline float modf(float __x, float* __iptr) { return modff(__x, __iptr); } +S inline float pow(float __x, float __y) { return powf(__x,__y); } +S inline float pow(float __x, int __y) { return powf(__x, (float)__y); } +S inline float sin(float __x) { return sinf(__x); } +S inline float sinh(float __x) { return sinhf(__x); } +S inline float sqrt(float __x) { return sqrtf(__x); } +S inline float _sqrt(float __x) { return _sqrtf(__x); } +S inline float tan(float __x) { return tanf(__x); } +S inline float tanh(float __x) { return tanhf(__x); } +S +S inline double abs(double __x) { return fabs(__x); } +S inline double pow(double __x, int __y) +S { return pow(__x, (double) __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double abs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double acos(long double __x) +S { return (long double)acosl(__x); } +S inline long double asin(long double __x) +S { return (long double)asinl(__x); } +S inline long double atan(long double __x) +S { return (long double)atanl(__x); } +S inline long double atan2(long double __y, long double __x) +S { return (long double)atan2l(__y, __x); } +S inline long double ceil(long double __x) +S { return (long double)ceill( __x); } +S inline long double cos(long double __x) +S { return (long double)cosl(__x); } +S inline long double cosh(long double __x) +S { return (long double)coshl(__x); } +S inline long double exp(long double __x) +S { return (long double)expl(__x); } +S inline long double fabs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double floor(long double __x) +S { return (long double)floorl(__x); } +S inline long double fmod(long double __x, long double __y) +S { return (long double)fmodl(__x, __y); } +S long double frexp(long double __x, int* __p) __attribute__((__nonnull__(2))); +S inline long double frexp(long double __x, int* __p) +S { return (long double)frexpl(__x, __p); } +S inline long double ldexp(long double __x, int __exp) +S { return (long double)ldexpl(__x, __exp); } +S inline long double log(long double __x) +S { return (long double)logl(__x); } +S inline long double log10(long double __x) +S { return (long double)log10l(__x); } +S long double modf(long double __x, long double* __p) __attribute__((__nonnull__(2))); +S inline long double modf(long double __x, long double* __p) +S { return (long double)modfl(__x, __p); } +S inline long double pow(long double __x, long double __y) +S { return (long double)powl(__x, __y); } +S inline long double pow(long double __x, int __y) +S { return (long double)powl(__x, __y); } +S inline long double sin(long double __x) +S { return (long double)sinl(__x); } +S inline long double sinh(long double __x) +S { return (long double)sinhl(__x); } +S inline long double sqrt(long double __x) +S { return (long double)sqrtl(__x); } +S inline long double _sqrt(long double __x) +S { return (long double)_sqrt((double) __x); } +S inline long double tan(long double __x) +S { return (long double)tanl(__x); } +S inline long double tanh(long double __x) +S { return (long double)tanhl(__x); } +S#endif +S +S#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S inline float acosh(float __x) { return acoshf(__x); } +S inline float asinh(float __x) { return asinhf(__x); } +S inline float atanh(float __x) { return atanhf(__x); } +S inline float cbrt(float __x) { return cbrtf(__x); } +S inline float erf(float __x) { return erff(__x); } +S inline float erfc(float __x) { return erfcf(__x); } +S inline float expm1(float __x) { return expm1f(__x); } +S inline float log1p(float __x) { return log1pf(__x); } +S inline float hypot(float __x, float __y) { return hypotf(__x, __y); } +S inline float lgamma(float __x) { return lgammaf(__x); } +S inline float remainder(float __x, float __y) { return remainderf(__x, __y); } +S inline float rint(float __x) { return rintf(__x); } +S#endif +S +S#ifdef __USE_C99_MATH +S inline float exp2(float __x) { return exp2f(__x); } +S inline float fdim(float __x, float __y) { return fdimf(__x, __y); } +S inline float fma(float __x, float __y, float __z) { return fmaf(__x, __y, __z); } +S inline float fmax(float __x, float __y) { return fmaxf(__x, __y); } +S inline float fmin(float __x, float __y) { return fminf(__x, __y); } +S inline float log2(float __x) { return log2f(__x); } +S inline _ARMABI long lrint(float __x) { return lrintf(__x); } +S inline _ARMABI __LONGLONG llrint(float __x) { return llrintf(__x); } +S inline _ARMABI long lround(float __x) { return lroundf(__x); } +S inline _ARMABI __LONGLONG llround(float __x) { return llroundf(__x); } +S inline _ARMABI_FPEXCEPT float nearbyint(float __x) { return nearbyintf(__x); } +S inline float remquo(float __x, float __y, int *__q) { return remquof(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT float round(float __x) { return roundf(__x); } +S inline float tgamma(float __x) { return tgammaf(__x); } +S inline _ARMABI_FPEXCEPT float trunc(float __x) { return truncf(__x); } +S +S inline int (fpclassify)(float __x) { return fpclassify(__x); } +S inline bool (isfinite)(float __x) { return isfinite(__x); } +S inline bool (isgreater)(float __x, float __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(float __x, float __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(float __x) { return isinf(__x); } +S inline bool (isless)(float __x, float __y) { return isless(__x, __y); } +S inline bool (islessequal)(float __x, float __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(float __x, float __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(float __x) { return isnan(__x); } +S inline bool (isnormal)(float __x) { return isnormal(__x); } +S inline bool (isunordered)(float __x, float __y) { return isunordered(__x, __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double acosh(long double __x) { return acoshl(__x); } +S inline long double asinh(long double __x) { return asinhl(__x); } +S inline long double atanh(long double __x) { return atanhl(__x); } +S inline long double cbrt(long double __x) { return cbrtl(__x); } +S inline long double erf(long double __x) { return erfl(__x); } +S inline long double erfc(long double __x) { return erfcl(__x); } +S inline long double expm1(long double __x) { return expm1l(__x); } +S inline long double log1p(long double __x) { return log1pl(__x); } +S inline long double hypot(long double __x, long double __y) { return hypotl(__x, __y); } +S inline long double lgamma(long double __x) { return lgammal(__x); } +S inline long double remainder(long double __x, long double __y) { return remainderl(__x, __y); } +S inline long double rint(long double __x) { return rintl(__x); } +S inline long double exp2(long double __x) { return exp2l(__x); } +S inline long double fdim(long double __x, long double __y) { return fdiml(__x, __y); } +S inline long double fma(long double __x, long double __y, long double __z) { return fmal(__x, __y, __z); } +S inline long double fmax(long double __x, long double __y) { return fmaxl(__x, __y); } +S inline long double fmin(long double __x, long double __y) { return fminl(__x, __y); } +S inline long double log2(long double __x) { return log2l(__x); } +S inline _ARMABI long lrint(long double __x) { return lrintl(__x); } +S inline _ARMABI __LONGLONG llrint(long double __x) { return llrintl(__x); } +S inline _ARMABI long lround(long double __x) { return lroundl(__x); } +S inline _ARMABI __LONGLONG llround(long double __x) { return llroundl(__x); } +S inline _ARMABI_FPEXCEPT long double nearbyint(long double __x) { return nearbyintl(__x); } +S inline long double remquo(long double __x, long double __y, int *__q) { return remquol(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT long double round(long double __x) { return roundl(__x); } +S inline long double tgamma(long double __x) { return tgammal(__x); } +S inline _ARMABI_FPEXCEPT long double trunc(long double __x) { return truncl(__x); } +S inline int (fpclassify)(long double __x) { return fpclassify(__x); } +S inline bool (isfinite)(long double __x) { return isfinite(__x); } +S inline bool (isgreater)(long double __x, long double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(long double __x, long double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(long double __x) { return isinf(__x); } +S inline bool (isless)(long double __x, long double __y) { return isless(__x, __y); } +S inline bool (islessequal)(long double __x, long double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(long double __x, long double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(long double __x) { return isnan(__x); } +S inline bool (isnormal)(long double __x) { return isnormal(__x); } +S inline bool (isunordered)(long double __x, long double __y) { return isunordered(__x, __y); } +S#endif +S +S#undef fpclassify +S#undef isfinite +S#undef isgreater +S#undef isgreaterequal +S#undef isinf +S#undef isless +S#undef islessequal +S#undef islessgreater +S#undef isnan +S#undef isnormal +S#undef isunordered +S +S#endif +S +S } +N#endif +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif +N #endif /* __MATH_DECLS */ +N +N #if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE +X #if _AEABI_PORTABILITY_LEVEL != 0 && !0L +S #define _AEABI_PORTABLE +N #endif +N +N #if defined(__cplusplus) && !defined(__MATH_NO_EXPORTS) +X #if 0L && !0L +S using ::std::__use_accurate_range_reduction; +S #ifndef __ARMCOMPILER_LIBCXX +S using ::std::abs; +S #endif +S using ::std::acos; +S using ::std::asin; +S using ::std::atan2; +S using ::std::atan; +S using ::std::ceil; +S using ::std::cos; +S using ::std::cosh; +S using ::std::exp; +S using ::std::fabs; +S using ::std::floor; +S using ::std::fmod; +S using ::std::frexp; +S using ::std::ldexp; +S using ::std::log10; +S using ::std::log; +S using ::std::modf; +S using ::std::pow; +S using ::std::sin; +S using ::std::sinh; +S using ::std::sqrt; +S using ::std::_sqrt; +S using ::std::_sqrtf; +S using ::std::tan; +S using ::std::tanh; +S using ::std::_fabsf; +S /* C99 float and long double versions in already-C89-reserved namespace */ +S using ::std::acosf; +S using ::std::acosl; +S using ::std::asinf; +S using ::std::asinl; +S using ::std::atan2f; +S using ::std::atan2l; +S using ::std::atanf; +S using ::std::atanl; +S using ::std::ceilf; +S using ::std::ceill; +S using ::std::cosf; +S using ::std::coshf; +S using ::std::coshl; +S using ::std::cosl; +S using ::std::expf; +S using ::std::expl; +S using ::std::fabsf; +S using ::std::fabsl; +S using ::std::floorf; +S using ::std::floorl; +S using ::std::fmodf; +S using ::std::fmodl; +S using ::std::frexpf; +S using ::std::frexpl; +S using ::std::ldexpf; +S using ::std::ldexpl; +S using ::std::log10f; +S using ::std::log10l; +S using ::std::logf; +S using ::std::logl; +S using ::std::modff; +S using ::std::modfl; +S using ::std::powf; +S using ::std::powl; +S using ::std::sinf; +S using ::std::sinhf; +S using ::std::sinhl; +S using ::std::sinl; +S using ::std::sqrtf; +S using ::std::sqrtl; +S using ::std::tanf; +S using ::std::tanhf; +S using ::std::tanhl; +S using ::std::tanl; +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S /* C99 additions which for historical reasons appear in non-strict mode */ +S using ::std::acosh; +S using ::std::asinh; +S using ::std::atanh; +S using ::std::cbrt; +S using ::std::copysign; +S using ::std::copysignf; +S using ::std::erf; +S using ::std::erfc; +S using ::std::expm1; +S using ::std::hypot; +S using ::std::ilogb; +S using ::std::ilogbf; +S using ::std::ilogbl; +S using ::std::lgamma; +S using ::std::log1p; +S using ::std::logb; +S using ::std::logbf; +S using ::std::logbl; +S using ::std::nextafter; +S using ::std::nextafterf; +S using ::std::nextafterl; +S using ::std::nexttoward; +S using ::std::nexttowardf; +S using ::std::nexttowardl; +S using ::std::remainder; +S using ::std::rint; +S using ::std::scalbln; +S using ::std::scalblnf; +S using ::std::scalblnl; +S using ::std::scalbn; +S using ::std::scalbnf; +S using ::std::scalbnl; +S using ::std::math_errhandling; +S using ::std::acoshf; +S using ::std::acoshl; +S using ::std::asinhf; +S using ::std::asinhl; +S using ::std::atanhf; +S using ::std::atanhl; +S using ::std::copysignl; +S using ::std::cbrtf; +S using ::std::cbrtl; +S using ::std::erff; +S using ::std::erfl; +S using ::std::erfcf; +S using ::std::erfcl; +S using ::std::expm1f; +S using ::std::expm1l; +S using ::std::log1pf; +S using ::std::log1pl; +S using ::std::hypotf; +S using ::std::hypotl; +S using ::std::lgammaf; +S using ::std::lgammal; +S using ::std::remainderf; +S using ::std::remainderl; +S using ::std::rintf; +S using ::std::rintl; +S /* New in C99. */ +S using ::std::float_t; +S using ::std::double_t; +S #endif +S #if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +S /* Functions new in C99. */ +S using ::std::exp2; +S using ::std::exp2f; +S using ::std::exp2l; +S using ::std::fdim; +S using ::std::fdimf; +S using ::std::fdiml; +S using ::std::fma; +S using ::std::fmaf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::fmal; +S#endif +S using ::std::fmax; +S using ::std::fmaxf; +S using ::std::fmaxl; +S using ::std::fmin; +S using ::std::fminf; +S using ::std::fminl; +S using ::std::log2; +S using ::std::log2f; +S using ::std::log2l; +S using ::std::lrint; +S using ::std::lrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lrintl; +S#endif +S using ::std::llrint; +S using ::std::llrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llrintl; +S#endif +S using ::std::lround; +S using ::std::lroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lroundl; +S#endif +S using ::std::llround; +S using ::std::llroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llroundl; +S#endif +S using ::std::nan; +S using ::std::nanf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::nanl; +S#endif +S using ::std::nearbyint; +S using ::std::nearbyintf; +S using ::std::nearbyintl; +S using ::std::remquo; +S using ::std::remquof; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::remquol; +S#endif +S using ::std::round; +S using ::std::roundf; +S using ::std::roundl; +S using ::std::tgamma; +S using ::std::tgammaf; +S using ::std::tgammal; +S using ::std::trunc; +S using ::std::truncf; +S using ::std::truncl; +S #endif +S +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S using ::std::fpclassify; +S using ::std::isfinite; +S using ::std::isgreater; +S using ::std::isgreaterequal; +S using ::std::isinf; +S using ::std::isless; +S using ::std::islessequal; +S using ::std::islessgreater; +S using ::std::isnan; +S using ::std::isnormal; +S using ::std::isunordered; +S #endif +N #endif +N +N#undef __LONGLONG +N +N#endif /* __math_h */ +N +N/* end of math.h */ +L 19 "..\..\src\common\tau_common.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N * \name 通用常量定义 +N * @{ +N */ +N//#define ENABLE 1 +N//#define DISABLE 0 +N +N#define ON 1 +N#define OFF 0 +N +N#define NONE 0 +N#define EOS '\0' +N +N/* +N#ifndef TRUE +N#define TRUE 1 +N#endif +N +N#ifndef FALSE +N#define FALSE 0 +N#endif +N*/ +N +N#ifndef __cplusplus +N#define true 1 +N#define false 0 +N#define bool _Bool +N#endif /* ifndef __cplusplus */ +N +N#ifndef NULL +N#define NULL ((void *)0) +N#endif +N +N#define TAU_LITTLE_ENDIAN 1234 /**< \brief 小端模式 */ +N#define TAU_BIG_ENDIAN 3412 /**< \brief 大端模式 */ +N +N/** @} */ +N +N/******************************************************************************/ +N +N/** +N * \name 常用宏定义 +N * @{ +N */ +N +N#ifdef __cplusplus +S#define __I volatile /*!< Defines 'read only' permissions */ +N#else +N#define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N#define TAU_INLINE inline +N#define TAU_STATIC_INLINE static inline +N#define TAU_STATIC static +N#define TAU_CONST const +N#define TAU_EXTERN extern +N +N#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +N#define MAX(x, y) (((x) > (y)) ? (x) : (y)) +N +N/** +N * \brief 求结构体成员的偏移 +N * \attention 不同平台上,由于成员大小和内存对齐等原因, +N * 同一结构体成员的偏移可能是不一样的 +N * +N * \par 示例 +N * \code +N * struct my_struct { +N * int m1; +N * char m2; +N * }; +N * int offset_m2; +N * +N * offset_m2 = TAU_OFFSET(struct my_struct, m2); +N * \endcode +N */ +N#define TAU_OFFSET(structure, member) ((uint32_t)(&(((structure *)0)->member))) +N +N/** @} */ +N +N/** +N * \brief 通过结构体成员指针获取包含该结构体成员的结构体 +N * +N * \param ptr 指向结构体成员的指针 +N * \param type 结构体类型 +N * \param member 结构体中该成员的名称 +N * +N * \par 示例 +N * \code +N * struct my_struct = { +N * int m1; +N * char m2; +N * }; +N * struct my_struct my_st; +N * char *p_m2 = &my_st.m2; +N * struct my_struct *p_st = TAU_CONTAINER_OF(p_m2, struct my_struct, m2); +N * \endcode +N */ +N#define TAU_CONTAINER_OF(ptr, type, member) \ +N ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +X#define TAU_CONTAINER_OF(ptr, type, member) ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +N +N/** +N * \brief 计算结构体成员的大小 +N * +N * \code +N * struct a = { +N * uint32_t m1; +N * uint32_t m2; +N * }; +N * int size_m2; +N * +N * size_m2 = TAU_MEMBER_SIZE(a, m2); //size_m2 = 4 +N * \endcode +N */ +N#define TAU_MEMBER_SIZE(structure, member) (sizeof(((structure *)0)->member)) +N +N/** +N * \brief 计算数组元素个数 +N * +N * \code +N * int a[] = {0, 1, 2, 3}; +N * int element_a = TAU_NELEMENTS(a); // element_a = 4 +N * \endcode +N */ +N#define TAU_NELEMENTS(array) (sizeof(array) / sizeof((array)[0])) +N +N/** +N * \brief 向上舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_UP(15, 4); // size = 16 +N * \endcode +N */ +N#define TAU_ROUND_UP(x, align) (((int)(x)/(align))*(align) + (((int)(x)%(align)) ? (align) : 0)) +N +N/** +N * \brief 向下舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_DOWN(15, 4); // size = 12 +N * \endcode +N */ +N#define TAU_ROUND_DOWN(x, align) (((int)(x)/(align))*(align)) +N +N/** \brief 倍数向上舍入 */ +N#define TAU_DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) +N +N/** +N * \brief 测试是否对齐 +N * +N * \param x 被运算的数 +N * \param align 对齐因素,必须为2的乘方 +N * +N * \code +N * if (TAU_ALIGNED(x, 4) { +N * ; // x对齐 +N * } else { +N * ; // x不对齐 +N * } +N * \endcode +N */ +N#define TAU_ALIGNED(x, align) (((int)(x) & (align - 1)) == 0) +N +N/** \brief 将1字节BCD数据转换为16进制数据 */ +N#define TAU_BCD_TO_HEX(val) (((val)&0x0f) + ((val) >> 4) * 10) +N +N/** \brief 将1字节16进制数据转换为BCD数据 */ +N#define TAU_HEX_TO_BCD(val) ((((val) / 10) << 4) + (val) % 10) +N +N/** +N * \brief 向上取整 +N */ +N#define TAU_CEIL(val) ceil(val) +N +N +N/*! @brief Construct the version number for drivers. */ +N#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix)) +N +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*!< @brief 用于返回状态和错误 */ +Ntypedef uint32_t status_t; +N +N/* \brief 通用回调函数指针定义 */ +Ntypedef void (*fcb_type)(void *data); +N +Ntypedef void (*uart_trans_cb)(status_t status, void *user_data); +N +Ntypedef void (*flash_trans_cb)(status_t status, void *user_data); +N#endif /* __TAU_COMMON_H */ +L 16 "..\..\src\sdk\include\hal_system.h" 2 +N#include "hal_gpio.h" +L 1 "..\..\src\sdk\include\hal_gpio.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_gpio.h +N* Description: gpio HAL层头文件 +N* Version: V0.1 +N* Date: 2023-07-27 +N* Author: kevin +N *******************************************************************************/ +N#ifndef __HAL_GPIO_H__ +N#define __HAL_GPIO_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +L 1 "..\..\src\common\tau_device_datatype.h" 1 +N/******************************************************************************* +N * +N * +N * File: tau_device_datatype.h +N * Description device datatype +N * Version V0.1 +N * Date 2020-12-04 +N * Author kevin +N *******************************************************************************/ +N +N#ifndef _TAU_DEVICE_DATATYPE_H_ +N#define _TAU_DEVICE_DATATYPE_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N +N#include "stdint.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 计算组状态码 */ +N#define MAKE_STATUS(group, code) ((((group)*100) + (code))) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 分组状态值 */ +Nenum _status_groups +N{ +N STATUS_GROUP_GENERIC = 0, +N STATUS_GROUP_I2C = 1, +N STATUS_GROUP_UART = 2, +N STATUS_GROUP_SPI = 3, +N STATUS_GROUP_TIMER = 4, +N}; +N +N/*! @brief 常用状态码 */ +Nenum _generic_status +N{ +N STATUS_SUCCESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 0), +X STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), +N STATUS_FAIL = MAKE_STATUS(STATUS_GROUP_GENERIC, 1), +X STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), +N STATUS_READ_ONLY = MAKE_STATUS(STATUS_GROUP_GENERIC, 2), +X STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), +N STATUS_OUT_OF_RANGE = MAKE_STATUS(STATUS_GROUP_GENERIC, 3), +X STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), +N STATUS_INVALID_ARGUMENT = MAKE_STATUS(STATUS_GROUP_GENERIC, 4), +X STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), +N STATUS_TIME_OUT = MAKE_STATUS(STATUS_GROUP_GENERIC, 5), +X STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), +N STATUS_NO_TRANSFER_IN_PROGRESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 6), +X STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +N}; +N +N/** +N* @brief UART状态枚举定义 +N* +N*/ +Ntypedef enum +N{ +N STATUS_UART_TX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 0), /*!< Transmitter is busy. */ +X STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), +N STATUS_UART_RX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 1), /*!< Receiver is busy. */ +X STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), +N STATUS_UART_TX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 2), /*!< USART transmitter is idle. */ +X STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), +N STATUS_UART_RX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 3), /*!< USART receiver is idle. */ +X STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), +N STATUS_UART_TX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 7), /*!< Error happens on txFIFO. */ +X STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), +N STATUS_UART_RX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 9), /*!< Error happens on rxFIFO. */ +X STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), +N STATUS_UART_RX_RING_BUFF_OVERRUN = MAKE_STATUS(STATUS_GROUP_UART, 8), /*!< Error happens on rx ring buffer */ +X STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), +N STATUS_UART_NOISE_ERR = MAKE_STATUS(STATUS_GROUP_UART, 10), /*!< USART noise error. */ +X STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), +N STATUS_UART_FRAMING_ERR = MAKE_STATUS(STATUS_GROUP_UART, 11), /*!< USART framing error. */ +X STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), +N STATUS_UART_PARITY_ERR = MAKE_STATUS(STATUS_GROUP_UART, 12), /*!< USART parity error. */ +X STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), +N STATUS_UART_BAUDRATE_NOT_SPT = MAKE_STATUS(STATUS_GROUP_UART, 13), /*!< Baudrate is not support in current clock source */ +X STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +N} uart_status_e; +N +N/*! +N * @brief timer状态 +N */ +Ntypedef enum +N{ +N STATUS_TIMER_IDLE = MAKE_STATUS(STATUS_GROUP_TIMER, 0), /*!< 空闲 */ +X STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), +N STATUS_TIMER_RUNNING = MAKE_STATUS(STATUS_GROUP_TIMER, 1), /*!< 运行中 */ +X STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), +N STATUS_TIMER_TIMEOUT = MAKE_STATUS(STATUS_GROUP_TIMER, 2), /*!< 超时 */ +X STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +N} timer_status_e; +N +N/*! +N * @brief system触发事件(中断/复位)模式 +N */ +Ntypedef enum +N{ +N DETECT_HIGH_LVL = 0, +N DETECT_LOW_LVL, +N DETECT_RISING_EDGE, +N DETECT_FALLING_EDGE, +N DETECT_DOUBLE_EDGE +N} sys_cfg_trigger_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N TIMER_NUM0 = 0, +N TIMER_NUM1, +N TIMER_NUM2, +N TIMER_NUM3, +N TIMER_NUM_MAX +N} timer_num_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N GPIO_INT_EXTI_INT0 = 0, +N GPIO_INT_EXTI_INT1, +N GPIO_INT_EXTI_INT2, +N GPIO_INT_EXTI_INT3, +N GPIO_INT_EXTI_INT4, +N GPIO_INT_EXTI_INT5, +N GPIO_INT_EXTI_INT6, +N GPIO_INT_EXTI_INT7, +N GPIO_INT_MAX +N} gpio_int_e; +N +N/*! @brief PWMI中断类型 */ +Ntypedef enum _pwm_int_type +N{ +N PWM_INT_HIGH_OVERFLOW = 0, +N PWM_INT_LOW_OVERFLOW, +N PWM_INT_TOTAL_OVERFLOW, +N PWM_INT_HIGH_DONE, +N PWM_INT_LOW_DONE, +N PWM_INT_TOTAL_DONE, +N PWM_INT_MAX +N} pwm_int_type_e; +N +N/** +N* @brief I2C chose +N*/ +Ntypedef enum +N{ +N I2C_SELECT_0 = 0, //常用slave +N I2C_SELECT_1, //常用master +N} i2c_select_e; +N +N/*! +N * @brief 传输速度 +N * @note +N */ +Ntypedef enum _i2c_rate +N{ +N I2C_RATE_STANDARD = 1, //100kHz +N I2C_RATE_FAST, //400kHz +N I2C_RATE_HIGH, //1MHz +N} i2c_rate_e; +N +N/*! +N * @brief I2C Index +N * @note +N */ +Ntypedef enum +N{ +N I2C_INDEX_0, +N I2C_INDEX_1, +N I2C_INDEX_2, +N I2C_INDEX_MAX +N} i2c_index_e; +N +N/*! +N * @brief DMA channel type +N * @note +N */ +Ntypedef enum +N{ +N AHB_DMA_CH0, +N AHB_DMA_CH1, +N AHB_DMA_CH2, +N AHB_DMA_CH3, +N AHB_DMA_CH4, +N AHB_DMA_CH5, +N AHB_DMA_CH6, +N AHB_DMA_CH7, +N AHB_DMA_CH_NUM +N} dma_channel_type_e; +N +N/*! @brief Type used for all status and error return values. */ +N +Ntypedef enum +N{ +N DISABLE = 0, +N ENABLE = !DISABLE +N} function_state_e; +N +N/** +N* @brief The reversal types of the bit order of the input/output data +N*/ +Ntypedef enum +N{ +N CRC_REV_NO_TRANSPOSE = 0, /*!< No transposition */ +N CRC_REV_ONLY_BITS_TRANSPOSE, /*!< Bits in bytes are transposed; bytes are not transposed */ +N CRC_REV_BOTH_TRANSPOSE, /*!< Both bits in bytes and bytes are transposed */ +N CRC_REV_ONLY_BYTES_TRANSPOSE, /*!< Only bytes are transposed; no bits in a byte are transposed */ +N} crc_reversal_type_e; +N +N/** +N* @brief Complement Read Of CRC Data Register +N*/ +Ntypedef enum +N{ +N CRC_FXOR_DISABLE = 0, /*!< No XOR on reading */ +N CRC_FXOR_ENABLE, /*!< Invert or complement the read value of the CRC Data register */ +N} crc_fxor_function_e; +N +N/** +N* @brief width of CRC protocol (polynomial) +N*/ +Ntypedef enum +N{ +N CRC_16_BIT_PROTOCOL = 0, /*!< 0: 16-bit CRC protocol */ +N CRC_32_BIT_PROTOCOL, /*!< 1: 32-bit CRC protocol */ +N} crc_protocol_type_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N#endif +N +L 17 "..\..\src\sdk\include\hal_gpio.h" 2 +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N* @brief GPIO pin +N*/ +Ntypedef enum +N{ +N /*以GPIO命名PIN*/ +N IO_PAD_GPIO0 = 0, +N IO_PAD_GPIO1, +N IO_PAD_GPIO2, +N IO_PAD_GPIO3, +N IO_PAD_GPIO4, +N IO_PAD_GPIO5, +N IO_PAD_GPIO6, +N IO_PAD_GPIO7, +N IO_PAD_GPIO8, +N IO_PAD_GPIO9, +N IO_PAD_GPIO10, +N IO_PAD_GPIO11, +N IO_PAD_GPIO12, +N IO_PAD_GPIO13, +N IO_PAD_GPIO14, +N IO_PAD_GPIO15, +N IO_PAD_GPIO16, +N IO_PAD_GPIO17, +N IO_PAD_GPIO18, +N IO_PAD_GPIO19, +N IO_PAD_GPIO20, +N IO_PAD_GPIO21, +N IO_PAD_GPIO22, +N IO_PAD_GPIO23, +N IO_PAD_GPIO24, +N IO_PAD_GPIO25, +N +N /*以实际PAD NAME命名PIN*/ +N IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, +N IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, +N IO_PAD_AP_INT = IO_PAD_GPIO2, +N IO_PAD_AP_TE = IO_PAD_GPIO3, +N IO_PAD_AP_SWIRE = IO_PAD_GPIO4, +N IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, +N IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, +N IO_PAD_TD_RSTN = IO_PAD_GPIO7, +N IO_PAD_AP_PWMEN = IO_PAD_GPIO8, +N IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, +N IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, +N IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, +N IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, +N IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, +N IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, +N IO_PAD_SWD_CLK = IO_PAD_GPIO15, +N IO_PAD_SWD_DIO = IO_PAD_GPIO16, +N IO_PAD_AP_RSTN = IO_PAD_GPIO17, +N IO_PAD_UART0_TX = IO_PAD_GPIO18, +N IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, +N IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, +N IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, +N IO_PAD_TD_INT = IO_PAD_GPIO22, +N IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, +N IO_PAD_UART1_TX = IO_PAD_GPIO24, +N IO_PAD_UART0_RX = IO_PAD_GPIO25, +N +N IO_PAD_MAX, +N +N +N /*以实际引脚序号命名PIN*/ +N IO_PIN_1 = IO_PAD_SWD_CLK, +N IO_PIN_2 = IO_PAD_UART0_TX, +N IO_PIN_3 = IO_PAD_SWD_DIO, +N IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, +N IO_PIN_5 = IO_PAD_TD_SPIM_CLK, +N IO_PIN_6 = IO_PAD_TD_SPIM_CSN, +N IO_PIN_7 = IO_PAD_TD_SPIM_MISO, +N IO_PIN_8 = IO_PAD_TD_RSTN, +N IO_PIN_9 = IO_PAD_TD_FC_CSN, +N IO_PIN_10 = IO_PAD_TD_FC_CLK, +N IO_PIN_11 = IO_PAD_TD_FC_IO0, +N IO_PIN_12 = IO_PAD_TD_FC_IO1, +N IO_PIN_13 = IO_PAD_TD_TP_RESX, +N IO_PIN_14 = IO_PAD_UART1_TX, +N IO_PIN_15 = IO_PAD_AP_SWIRE, +N IO_PIN_16 = IO_PAD_AP_INT, +N IO_PIN_17 = IO_PAD_AP_PWMEN, +N IO_PIN_18 = IO_PAD_AP_TPRSTN, +N +N IO_PIN_29 = IO_PAD_AP_TE, +N IO_PIN_30 = IO_PAD_AP_SPIS_MISO, +N IO_PIN_31 = IO_PAD_AP_SPIS_CSN, +N IO_PIN_32 = IO_PAD_AP_SPIS_CLK, +N IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, +N IO_PIN_34 = IO_PAD_AP_RSTN, +N IO_PIN_35 = IO_PAD_TD_INT, +N IO_PIN_36 = IO_PAD_UART0_RX, +N +N} io_pad_e; +N +N +N/* +N芯片引脚 | 默认mode | 可选mode +N---------------------------------------------------------------- +NIO_PIN_1 | IO_PAD_SWCLK, | PIN1_MODE_SWDCLK +N | | PIN1_MODE_GPIO15 +N---------------------------------------------------------------- +NIO_PIN_2 | IO_PAD_UART0_TX, | PIN2_MODE_UART0_TX +N | | PIN2_MODE_PWMO +N | | PIN2_MODE_GPIO18 +N | | PIN2_MODE_PWMI +N | | PIN2_MODE_TEAR1 +N---------------------------------------------------------------- +NIO_PIN_3 | IO_PAD_SWDIO, | PIN3_MODE_SWDIO +N | | PIN3_MODE_GPIO16 +N---------------------------------------------------------------- +NIO_PIN_4 | IO_PAD_TD_SPIM_MOSI, | PIN4_MODE_SPIM_MOSI +N | | PIN4_MODE_I2C02_SDA +N | | PIN4_MODE_GPIO6 +N | | PIN4_MODE_UART0_TX +N---------------------------------------------------------------- +NIO_PIN_5 | IO_PAD_TD_SPIM_CLK, | PIN5_MODE_SPIM_SCLK +N | | PIN5_MODE_I2C1_SCL +N | | PIN5_MODE_GPIO19 +N---------------------------------------------------------------- +NIO_PIN_6 | IO_PAD_TD_SPIM_CSN, | PIN6_MODE_SPIM_CSN +N | | PIN6_MODE_I2C1_SDA +N | | PIN6_MODE_GPIO20 +N---------------------------------------------------------------- +NIO_PIN_7 | IO_PAD_TD_SPIM_MISO, | PIN7_MODE_SPIM_MISO +N | | PIN7_MODE_I2C02_SCL +N | | PIN7_MODE_GPIO5 +N---------------------------------------------------------------- +NIO_PIN_8 | IO_PAD_TD_RSTN, | PIN8_MODE_GPIO7 +N | | PIN8_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_9 | IO_PAD_TD_FC_CSN, | PIN9_MODE_TSPIS_CSN +N | | PIN9_MODE_GPIO12 +N---------------------------------------------------------------- +NIO_PIN_10 | IO_PAD_TD_FC_CLK, | PIN10_MODE_TSPIS_CLK +N | | PIN10_MODE_GPIO11 +N---------------------------------------------------------------- +NIO_PIN_11 | IO_PAD_TD_FC_IO0, | PIN11_MODE_TSPIS_IO0 +N | | PIN11_MODE_GPIO13 +N | | PIN11_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_12 | IO_PAD_TD_FC_IO1, | PIN12_MODE_TSPIS_IO1 +N | | PIN12_MODE_GPIO14 +N | | PIN12_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_13 | IO_PAD_TD_TP_RESX, | PIN13_MODE_GPIO23 +N | | PIN13_MODE_PWMO +N | | PIN13_MODE_UART1_RX +N | | PIN13_MODE_UART1_RX +N---------------------------------------------------------------- +NIO_PIN_14 | IO_PAD_UART1_TX, | PIN14_MODE_GPIO24 +N | | PIN14_MODE_UART0_RX +N | | PIN14_MODE_UART1_TX +N | | +N---------------------------------------------------------------- +NIO_PIN_15 | IO_PAD_AP_SWIRE, | PIN15_MODE_SWIRE +N | | PIN15_MODE_PWMO +N | | PIN15_MODE_GPIO4 +N---------------------------------------------------------------- +NIO_PIN_16 | IO_PAD_AP_INT, | PIN16_MODE_GPIO2 +N---------------------------------------------------------------- +NIO_PIN_17 | IO_PAD_AP_PWMEN, | PIN17_MODE_UART0_RX +N | | PIN17_MODE_GPIO8 +N | | PIN17_MODE_PWMO +N---------------------------------------------------------------- +NIO_PIN_18 | IO_PAD_AP_TPRSTN, | PIN18_MODE_UART0_RX +N | | PIN18_MODE_GPIO21 +N | | PIN18_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_29 | IO_PAD_AP_TE, | PIN29_MODE_JTAG_TRSTN +N | | PIN29_MODE_TEAR +N | | PIN29_MODE_GPIO3 +N---------------------------------------------------------------- +NIO_PIN_30 | IO_PAD_AP_SPIS_MISO, | PIN30_MODE_JTAG_TDO +N | | PIN30_MODE_SPIS_MISO +N | | PIN30_MODE_GPIO0 +N | | PIN30_MODE_UART0_RX +N | | PIN30_MODE_I2C1_SCL +N---------------------------------------------------------------- +NIO_PIN_31 | IO_PAD_AP_SPIS_CSN, | PIN31_MODE_JTAG_TMS +N | | PIN31_MODE_SPIS_CSN +N | | PIN31_MODE_GPIO10 +N | | PIN31_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_32 | IO_PAD_AP_SPIS_CLK, | PIN32_MODE_JTAG_TCK +N | | PIN32_MODE_SPIS_SCLK +N | | PIN32_MODE_GPIO9 +N | | PIN32_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_33 | IO_PAD_AP_SPIS_MOSI, | PIN33_MODE_JTAG_TDI +N | | PIN33_MODE_SPIS_MOSI +N | | PIN33_MODE_GPIO1 +N | | PIN33_MODE_UART0_TX +N | | PIN33_MODE_I2C1_SDA_0 +N---------------------------------------------------------------- +NIO_PIN_34 | IO_PAD_AP_RSTN, | PIN34_MODE_GPIO17 +N---------------------------------------------------------------- +NIO_PIN_35 | IO_PAD_TD_INT, | PIN35_MODE_GPIO22 +N---------------------------------------------------------------- +NIO_PIN_36 | IO_PAD_UART0_RX, | PIN36_MODE_UART0_RX +N | | PIN36_MODE_PWMO +N | | PIN36_MODE_GPIO25 +N---------------------------------------------------------------- +N*/ +N +N +N/** +N* @brief PIN1 IO_PAD_SWD_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN1_MODE_SWDCLK = 0, +N PIN1_MODE_GPIO15 = 2, +N} pin1_mode_e; +N +N +N/** +N* @brief PIN2 PAD_UART0_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN2_MODE_UART0_TX = 0, +N PIN2_MODE_PWMO = 1, +N PIN2_MODE_GPIO18 = 2, +N PIN2_MODE_PWMI = 3, +N PIN2_MODE_TEAR1 = 4, +N} pin2_mode_e; +N +N/** +N* @brief PIN3 IO_PAD_SWD_DIO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN3_MODE_SWDIO = 0, +N PIN3_MODE_GPIO16 = 2, +N} pin3_mode_e; +N +N +N/** +N* @brief PIN4 PAD_TD_SPIM_MOSI可选的mode +N*/ +Ntypedef enum +N{ +N PIN4_MODE_SPIM_MOSI = 0, +N PIN4_MODE_I2C02_SDA = 1, +N PIN4_MODE_GPIO6 = 2, +N PIN4_MODE_UART0_TX = 3, +N} pin4_mode_e; +N +N/** +N* @brief PIN5 PAD_TD_SPIM_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN5_MODE_SPIM_SCLK = 0, +N PIN5_MODE_I2C1_SCL = 1, +N PIN5_MODE_GPIO19 = 2, +N} pin5_mode_e; +N +N/** +N* @brief PIN6 PAD_TD_SPIM_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN6_MODE_SPIM_CSN = 0, +N PIN6_MODE_I2C1_SDA = 1, +N PIN6_MODE_GPIO20 = 2, +N} pin6_mode_e; +N +N/** +N* @brief PIN7 PAD_TD_SPIM_MISO可选的mode +N*/ +Ntypedef enum +N{ +N PIN7_MODE_SPIM_MISO = 0, +N PIN7_MODE_I2C02_SCL = 1, +N PIN7_MODE_GPIO5 = 2, +N} pin7_mode_e; +N +N/** +N* @brief PIN8 PAD_TD_RSTN可选的mode +N*/ +Ntypedef enum +N{ +N PIN8_MODE_GPIO7 = 2, +N PIN8_MODE_I2C02_SDA = 3, +N} pin8_mode_e; +N +N/** +N* @brief PIN9 PAD_TD_FC_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN9_MODE_TSPIS_CSN = 0, +N PIN9_MODE_GPIO12 = 2, +N} pin9_mode_e; +N +N/** +N* @brief PIN10 PAD_TD_FC_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN10_MODE_TSPIS_CLK = 0, +N PIN10_MODE_GPIO11 = 2, +N} pin10_mode_e; +N +N +N/** +N* @brief PIN11 PAD_TD_FC_IO0可选的mode +N*/ +Ntypedef enum +N{ +N PIN11_MODE_TSPIS_IO0 = 0, +N PIN11_MODE_GPIO13 = 2, +N PIN11_MODE_I2C02_SDA = 3, +N} pin11_mode_e; +N +N/** +N* @brief PIN12 PAD_TD_FC_IO1可选的mode +N*/ +Ntypedef enum +N{ +N PIN12_MODE_TSPIS_IO1 = 0, +N PIN12_MODE_GPIO14 = 2, +N PIN12_MODE_I2C02_SCL = 3, +N} pin12_mode_e; +N +N/** +N* @brief PIN13 PAD_TD_TP_RESX可选的mode +N*/ +Ntypedef enum +N{ +N PIN13_MODE_GPIO23 = 2, +N PIN13_MODE_PWMO = 3, +N PIN13_MODE_UART1_RX = 4, +N} pin13_mode_e; +N +N/** +N* @brief PIN14 PAD_UART1_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN14_MODE_GPIO24 = 2, +N PIN14_MODE_UART0_RX = 3, +N PIN14_MODE_UART1_TX = 4, +N} pin14_mode_e; +N +N +N +N/** +N* @brief PIN15 PAD_AP_SWIRE可选的mode +N*/ +Ntypedef enum +N{ +N PIN15_MODE_SWIRE = 0, +N PIN15_MODE_PWMO = 1, +N PIN15_MODE_GPIO4 = 2, +N} pin15_mode_e; +N +N/** +N* @brief PIN16 IO_PAD_AP_INT 可选的mode +N*/ +Ntypedef enum +N{ +N PIN16_MODE_GPIO2 = 2, +N} pin16_mode_e; +N +N/** +N* @brief PIN17 PAD_AP_PWMEN可选的mode +N*/ +Ntypedef enum +N{ +N PIN17_MODE_UART0_RX = 1, +N PIN17_MODE_GPIO8 = 2, +N PIN17_MODE_PWMO = 3, +N} pin17_mode_e; +N +N/** +N* @brief PIN18 IO_PAD_AP_TPRSTN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN18_MODE_UART0_RX = 0, +N PIN18_MODE_GPIO21 = 2, +N PIN18_MODE_I2C02_SCL = 3, +N} pin18_mode_e; +N +N +N//---------- +N +N/** +N* @brief PIN29 IO_PAD_AP_TE 可选的mode +N*/ +Ntypedef enum +N{ +N PIN29_MODE_JTAG_TRSTN = 0, +N PIN29_MODE_TEAR = 1, +N PIN29_MODE_GPIO3 = 2, +N} pin29_mode_e; +N +N +N/** +N* @brief PIN30 IO_PAD_AP_SPIS_MISO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN30_MODE_JTAG_TDO = 0, +N PIN30_MODE_SPIS_MISO = 1, +N PIN30_MODE_GPIO0 = 2, +N PIN30_MODE_UART0_RX = 3, +N PIN30_MODE_I2C1_SCL = 6, +N} pin30_mode_e; +N +N/** +N* @brief PIN31 IO_PAD_AP_SPIS_CSN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN31_MODE_JTAG_TMS = 0, +N PIN31_MODE_SPIS_CSN = 1, +N PIN31_MODE_GPIO10 = 2, +N PIN31_MODE_I2C02_SDA = 3, +N} pin31_mode_e; +N +N/** +N* @brief PIN32 IO_PAD_AP_SPIS_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN32_MODE_JTAG_TCK = 0, +N PIN32_MODE_SPIS_SCLK = 1, +N PIN32_MODE_GPIO9 = 2, +N PIN32_MODE_I2C02_SCL = 3, +N} pin32_mode_e; +N +N/** +N* @brief PIN33 IO_PAD_AP_SPIS_MOSI 可选的mode +N*/ +Ntypedef enum +N{ +N PIN33_MODE_JTAG_TDI = 0, +N PIN33_MODE_SPIS_MOSI = 1, +N PIN33_MODE_GPIO1 = 2, +N PIN33_MODE_UART0_TX = 3, +N PIN33_MODE_I2C1_SDA_0 = 6, +N} pin33_mode_e; +N +N/** +N* @brief PIN34 PAD_AP_RST可选的mode +N*/ +Ntypedef enum +N{ +N PIN34_MODE_GPIO17 = 2, +N} pin34_mode_e; +N +N +N/** +N* @brief PIN35 PAD_TD_INT可选的mode +N*/ +Ntypedef enum +N{ +N PIN35_MODE_GPIO22 = 2, +N} pin35_mode_e; +N +N +N/** +N* @brief PIN36 PAD_UART_RX可选的mode +N*/ +Ntypedef enum +N{ +N PIN36_MODE_UART0_RX = 0, +N PIN36_MODE_PWMO = 1, +N PIN36_MODE_GPIO25 = 2, +N} pin36_mode_e; +N +N +N +N//------------------------------------------------------------------------- +N/** +N* @brief PAD_SFC_CLK可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CLK = 0, +N IO_MODE_TSPIS_CLK_EN = 2, +N} pad_sfc_clk_mode_e; +N +N/** +N* @brief PAD_SFC_CSN可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CSN = 0, +N IO_MODE_TSPIS_CSN_EN = 2, +N} pad_sfc_csn_mode_e; +N +N/** +N* @brief PAD_SFC_IO0可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO0 = 0, +N IO_MODE_TSPIS_IO0_EN = 2, +N} pad_sfc_io0_mode_e; +N +N/** +N* @brief PAD_SFC_IO1可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO1 = 0, +N IO_MODE_TSPIS_IO1_EN = 2, +N} pad_sfc_io1_mode_e; +N +N/** +N* @brief PAD电压转换速率 +N*/ +Ntypedef enum +N{ +N IO_SLEW_RATE_SLOW = 0, +N IO_SLEW_RATE_FAST = 1, +N} pad_slew_rate_e; +N +N/******************************************************************************* +N* IOE +N*******************************************************************************/ +N/** +N* @brief GPIO io方向 +N*/ +Ntypedef enum +N{ +N IO_IOE_INPUT = 0, +N IO_IOE_OUTPUT, +N IO_IOE_NONE +N} gpio_ioe_e; +N +N/** +N* @brief GPIO level +N*/ +Ntypedef enum +N{ +N IO_LVL_LOW = 0, +N IO_LVL_HIGH, +N IO_LVL_NONE +N} gpio_level_e; +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief PAD与MODE的MAP结构体 +N*/ +Ntypedef struct +N{ +N io_pad_e pad; +N uint8_t mode; +N gpio_ioe_e ioe; +N gpio_level_e lvl; +N} io_pad_attr_t; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input,指定中断触发方式 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param trig:4种中断触发方式,参考枚举类型sys_cfg_trigger_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); +N +N/** +N* @brief 注册GPIO中断回调函数 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param cb_func:回调函数地址 +N* @param data:回调函数参数地址 +N* @retval 无 +N*/ +Nvoid hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); +N +N/** +N* @brief 开关GPIO中断 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param state:开关控制 +N* @retval 无 +N*/ +Nvoid hal_gpio_ctrl_eint(io_pad_e pad, bool state); +Xvoid hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); +N +N/** +N* @brief 获取GPIO中断类型 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_int_e hal_gpio_get_int_type(io_pad_e pad); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为output,指定初始电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 封装设置输出接口 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_input(io_pad_e pad); +N +N/** +N* @brief 读取输入电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_level_e hal_gpio_get_input_data(io_pad_e pad); +N +N/** +N* @brief 设置io mode +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param mode:工作模式,参考各PAD对应的mode枚举类型 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_mode(io_pad_e pad, uint8_t mode); +N +N/** +N* @brief 设置io 为高阻态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_high_impedance(io_pad_e pad); +N +N/** +N* @brief 获取指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_get_pull_state(io_pad_e pad, bool *up_enable, bool *down_enable); +Xvoid hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); +N +N/** +N* @brief 配置指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_pull_state(io_pad_e pad, bool up_enable, bool down_enable); +Xvoid hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); +N +N/** +N* @brief 配置指定PAD是否为施密特触发 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param st_enable:1为施密特触发,0为正常触发 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, bool st_enable); +Xvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); +N +N/** +N* @brief 配置指定PAD的驱动能力 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param strength:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); +N +N/** +N* @brief 配置指定PAD的电压转换速率 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param rate:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); +N +N/** +N* @brief 配置AP_RSTN引脚中断 +N* @param enable: 中断开关 +N* @param cb_func:回调函数 +N* @param trig:触发模式 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_ap_reset_int(bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +Xvoid hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +N +N/** +N* @brief 批量设置IO参数 +N* @param attrs: PAD属性 +N* @param size: 数组成员个数 +N* @retval 无 +N*/ +Nvoid hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); +N +N#endif /* __HAL_GPIO_H__ */ +L 17 "..\..\src\sdk\include\hal_system.h" 2 +N#include "tau_log.h" +L 1 "..\..\src\common\tau_log.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_log.h +N* Description log file +N* Version V0.1 +N* Date 2020-12-08 +N* Author linyw +N*******************************************************************************/ +N#ifndef _TAU_LOG_H_ +N#define _TAU_LOG_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h" 1 +N/* string.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.11 */ +N/* Copyright (C) Codemist Ltd., 1988-1993. */ +N/* Copyright 1991-1993 ARM Limited. All rights reserved. */ +N/* version 0.04 */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N */ +N +N/* +N * string.h declares one type and several functions, and defines one macro +N * useful for manipulating character arrays and other objects treated as +N * character arrays. Various methods are used for determining the lengths of +N * the arrays, but in all cases a char * or void * argument points to the +N * initial (lowest addresses) character of the array. If an array is written +N * beyond the end of an object, the behaviour is undefined. +N */ +N +N#ifndef __string_h +N#define __string_h +N#define __ARMCLIB_VERSION 5060037 +N +N#define _ARMABI __declspec(__nothrow) +N +N #ifndef __STRING_DECLS +N #define __STRING_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N#if defined(__cplusplus) || !defined(__STRICT_ANSI__) +X#if 0L || !0L +N /* unconditional in C++ and non-strict C for consistency of debug info */ +N #if __sizeof_ptr == 8 +X #if 4 == 8 +S typedef unsigned long size_t; /* see */ +N #else +N typedef unsigned int size_t; /* see */ +N #endif +N#elif !defined(__size_t) +X#elif !0L +S #define __size_t 1 +S #if __sizeof_ptr == 8 +S typedef unsigned long size_t; /* see */ +S #else +S typedef unsigned int size_t; /* see */ +S #endif +N#endif +N +N#undef NULL +N#define NULL 0 /* see */ +N +Nextern _ARMABI void *memcpy(void * __restrict /*s1*/, +Xextern __declspec(__nothrow) void *memcpy(void * __restrict , +N const void * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI void *memmove(void * /*s1*/, +Xextern __declspec(__nothrow) void *memmove(void * , +N const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. Copying takes place as if the n characters from the +N * object pointed to by s2 are first copied into a temporary array of n +N * characters that does not overlap the objects pointed to by s1 and s2, +N * and then the n characters from the temporary array are copied into the +N * object pointed to by s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strcpy(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string pointed to by s2 (including the terminating nul +N * character) into the array pointed to by s1. If copying takes place +N * between objects that overlap, the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncpy(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies not more than n characters (characters that follow a null +N * character are not copied) from the array pointed to by s2 into the array +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +N +Nextern _ARMABI char *strcat(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * appends a copy of the string pointed to by s2 (including the terminating +N * null character) to the end of the string pointed to by s1. The initial +N * character of s2 overwrites the null character at the end of s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncat(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * appends not more than n characters (a null character and characters that +N * follow it are not appended) from the array pointed to by s2 to the end of +N * the string pointed to by s1. The initial character of s2 overwrites the +N * null character at the end of s1. A terminating null character is always +N * appended to the result. +N * Returns: the value of s1. +N */ +N +N/* +N * The sign of a nonzero value returned by the comparison functions is +N * determined by the sign of the difference between the values of the first +N * pair of characters (both interpreted as unsigned char) that differ in the +N * objects being compared. +N */ +N +Nextern _ARMABI int memcmp(const void * /*s1*/, const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the first n characters of the object pointed to by s1 to the +N * first n characters of the object pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the object pointed to by s1 is greater than, equal to, or +N * less than the object pointed to by s2. +N */ +Nextern _ARMABI int strcmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcasecmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, +N * case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncasecmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2, case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcoll(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, both +N * interpreted as appropriate to the LC_COLLATE category of the current +N * locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2 when both are interpreted +N * as appropriate to the current locale. +N */ +N +Nextern _ARMABI size_t strxfrm(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); +N /* +N * transforms the string pointed to by s2 and places the resulting string +N * into the array pointed to by s1. The transformation function is such that +N * if the strcmp function is applied to two transformed strings, it returns +N * a value greater than, equal to or less than zero, corresponding to the +N * result of the strcoll function applied to the same two original strings. +N * No more than n characters are placed into the resulting array pointed to +N * by s1, including the terminating null character. If n is zero, s1 is +N * permitted to be a null pointer. If copying takes place between objects +N * that overlap, the behaviour is undefined. +N * Returns: The length of the transformed string is returned (not including +N * the terminating null character). If the value returned is n or +N * more, the contents of the array pointed to by s1 are +N * indeterminate. +N */ +N +N +N#ifdef __cplusplus +Sextern _ARMABI const void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Sextern "C++" void *memchr(void * __s, int __c, size_t __n) __attribute__((__nonnull__(1))); +Sextern "C++" inline void *memchr(void * __s, int __c, size_t __n) +S { return const_cast(memchr(const_cast(__s), __c, __n)); } +N#else +Nextern _ARMABI void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an unsigned char) in the +N * initial n characters (each interpreted as unsigned char) of the object +N * pointed to by s. +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the object. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strchr(char * __s, int __c) +S { return const_cast(strchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an char) in the string +N * pointed to by s (including the terminating null character). +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the string. +N */ +N +Nextern _ARMABI size_t strcspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters not from the string pointed to by +N * s2. The terminating null character is not considered part of s2. +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strpbrk(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strpbrk(char * __s1, const char * __s2) +S { return const_cast(strpbrk(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of any +N * character from the string pointed to by s2. +N * Returns: returns a pointer to the character, or a null pointer if no +N * character form s2 occurs in s1. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strrchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strrchr(char * __s, int __c) +S { return const_cast(strrchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the last occurence of c (converted to a char) in the string +N * pointed to by s. The terminating null character is considered part of +N * the string. +N * Returns: returns a pointer to the character, or a null pointer if c does +N * not occur in the string. +N */ +N +Nextern _ARMABI size_t strspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters from the string pointed to by S2 +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strstr(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strstr(char * __s1, const char * __s2) +S { return const_cast(strstr(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of the +N * sequence of characters (excluding the terminating null character) in the +N * string pointed to by s2. +N * Returns: a pointer to the located string, or a null pointer if the string +N * is not found. +N */ +N +Nextern _ARMABI char *strtok(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +Nextern _ARMABI char *_strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#ifndef __STRICT_ANSI__ +Nextern _ARMABI char *strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#endif +N /* +N * A sequence of calls to the strtok function breaks the string pointed to +N * by s1 into a sequence of tokens, each of which is delimited by a +N * character from the string pointed to by s2. The first call in the +N * sequence has s1 as its first argument, and is followed by calls with a +N * null pointer as their first argument. The separator string pointed to by +N * s2 may be different from call to call. +N * The first call in the sequence searches for the first character that is +N * not contained in the current separator string s2. If no such character +N * is found, then there are no tokens in s1 and the strtok function returns +N * a null pointer. If such a character is found, it is the start of the +N * first token. +N * The strtok function then searches from there for a character that is +N * contained in the current separator string. If no such character is found, +N * the current token extends to the end of the string pointed to by s1, and +N * subsequent searches for a token will fail. If such a character is found, +N * it is overwritten by a null character, which terminates the current +N * token. The strtok function saves a pointer to the following character, +N * from which the next search for a token will start. +N * Each subsequent call, with a null pointer as the value for the first +N * argument, starts searching from the saved pointer and behaves as +N * described above. +N * Returns: pointer to the first character of a token, or a null pointer if +N * there is no token. +N * +N * strtok_r() is a common extension which works exactly like +N * strtok(), but instead of storing its state in a hidden +N * library variable, requires the user to pass in a pointer to a +N * char * variable which will be used instead. Any sequence of +N * calls to strtok_r() passing the same char ** pointer should +N * behave exactly like the corresponding sequence of calls to +N * strtok(). This means that strtok_r() can safely be used in +N * multi-threaded programs, and also that you can tokenise two +N * strings in parallel. +N */ +N +Nextern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); +N /* +N * copies the value of c (converted to an unsigned char) into each of the +N * first n charactes of the object pointed to by s. +N * Returns: the value of s. +N */ +Nextern _ARMABI char *strerror(int /*errnum*/); +Xextern __declspec(__nothrow) char *strerror(int ); +N /* +N * maps the error number in errnum to an error message string. +N * Returns: a pointer to the string, the contents of which are +N * implementation-defined. The array pointed to shall not be +N * modified by the program, but may be overwritten by a +N * subsequent call to the strerror function. +N */ +Nextern _ARMABI size_t strlen(const char * /*s*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); +N /* +N * computes the length of the string pointed to by s. +N * Returns: the number of characters that precede the terminating null +N * character. +N */ +N +Nextern _ARMABI size_t strlcpy(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string src into the string dst, using no more than +N * len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src. Thus, the operation +N * succeeded without truncation if and only if ret < len; +N * otherwise, the value in ret tells you how big to make dst if +N * you decide to reallocate it. (That value does _not_ include +N * the NUL.) +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI size_t strlcat(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * concatenates the string src to the string dst, using no more +N * than len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src plus the original length +N * of dst. Thus, the operation succeeded without truncation if +N * and only if ret < len; otherwise, the value in ret tells you +N * how big to make dst if you decide to reallocate it. (That +N * value does _not_ include the NUL.) +N * +N * If no NUL is encountered within the first len bytes of dst, +N * then the length of dst is considered to have been equal to +N * len for the purposes of the return value (as if there were a +N * NUL at dst[len]). Thus, the return value in this case is len +N * + strlen(src). +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI void _membitcpybl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpybb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * Copies or moves a piece of memory from one place to another, +N * with one-bit granularity. So you can start or finish a copy +N * part way through a byte, and you can copy between regions +N * with different alignment within a byte. +N * +N * All these functions have the same prototype: two void * +N * pointers for destination and source, then two integers +N * giving the bit offset from those pointers, and finally the +N * number of bits to copy. +N * +N * Just like memcpy and memmove, the "cpy" functions copy as +N * fast as they can in the assumption that the memory regions +N * do not overlap, while the "move" functions cope correctly +N * with overlap. +N * +N * Treating memory as a stream of individual bits requires +N * defining a convention about what order those bits are +N * considered to be arranged in. The above functions support +N * multiple conventions: +N * +N * - the "bl" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in little-endian fashion, so that the LSB comes +N * first. (For example, membitcpybl(a,b,0,7,1) would copy +N * the MSB of the byte at b to the LSB of the byte at a.) +N * +N * - the "bb" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in big-endian fashion, so that the MSB comes +N * first. +N * +N * - the "hl" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in little-endian fashion. +N * +N * - the "hb" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in big-endian fashion. +N * +N * - the "wl" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in little-endian fashion. +N * +N * - the "wb" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in big-endian fashion. +N */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STRING_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STRING_NO_EXPORTS +S using ::std::size_t; +S using ::std::memcpy; +S using ::std::memmove; +S using ::std::strcpy; +S using ::std::strncpy; +S using ::std::strcat; +S using ::std::strncat; +S using ::std::memcmp; +S using ::std::strcmp; +S using ::std::strncmp; +S using ::std::strcasecmp; +S using ::std::strncasecmp; +S using ::std::strcoll; +S using ::std::strxfrm; +S using ::std::memchr; +S using ::std::strchr; +S using ::std::strcspn; +S using ::std::strpbrk; +S using ::std::strrchr; +S using ::std::strspn; +S using ::std::strstr; +S using ::std::strtok; +S#ifndef __STRICT_ANSI__ +S using ::std::strtok_r; +S#endif +S using ::std::_strtok_r; +S using ::std::memset; +S using ::std::strerror; +S using ::std::strlen; +S using ::std::strlcpy; +S using ::std::strlcat; +S using ::std::_membitcpybl; +S using ::std::_membitcpybb; +S using ::std::_membitcpyhl; +S using ::std::_membitcpyhb; +S using ::std::_membitcpywl; +S using ::std::_membitcpywb; +S using ::std::_membitmovebl; +S using ::std::_membitmovebb; +S using ::std::_membitmovehl; +S using ::std::_membitmovehb; +S using ::std::_membitmovewl; +S using ::std::_membitmovewb; +S #endif /* __STRING_NO_EXPORTS */ +N #endif /* __cplusplus */ +N +N#endif +N +N/* end of string.h */ +N +L 19 "..\..\src\common\tau_log.h" 2 +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h" 1 +N/* stdarg.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.8 */ +N/* Copyright (C) Codemist Ltd., 1988 */ +N/* Copyright (C) ARM Ltd., 1991-1999. All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdarg_h +N#define __stdarg_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifndef __STDARG_DECLS +N #define __STDARG_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS ::std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N/* +N * stdarg.h declares a type and defines macros for advancing through a +N * list of arguments whose number and types are not known to the called +N * function when it is translated. A function may be called with a variable +N * number of arguments of differing types. Its parameter list contains one or +N * more parameters. The rightmost parameter plays a special role in the access +N * mechanism, and will be called parmN in this description. +N */ +N +N/* N.B. is required to declare vfprintf() without defining */ +N/* va_list. Clearly the type __va_list there must keep in step. */ +N#ifdef __clang__ +S typedef __builtin_va_list va_list; +S #define va_start(ap, param) __builtin_va_start(ap, param) +S #define va_end(ap) __builtin_va_end(ap) +S #define va_arg(ap, type) __builtin_va_arg(ap, type) +S #if __STDC_VERSION__ >= 199900L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +S #define va_copy(dest, src) __builtin_va_copy(dest, src) +S #endif +N#else +N #ifdef __TARGET_ARCH_AARCH64 +S typedef struct __va_list { +S void *__stack; +S void *__gr_top; +S void *__vr_top; +S int __gr_offs; +S int __vr_offs; +S } va_list; +N #else +N typedef struct __va_list { void *__ap; } va_list; +N #endif +N /* +N * an array type suitable for holding information needed by the macro va_arg +N * and the function va_end. The called function shall declare a variable +N * (referred to as ap) having type va_list. The variable ap may be passed as +N * an argument to another function. +N * Note: va_list is an array type so that when an object of that type +N * is passed as an argument it gets passed by reference. +N */ +N #define va_start(ap, parmN) __va_start(ap, parmN) +N +N /* +N * The va_start macro shall be executed before any access to the unnamed +N * arguments. The parameter ap points to an object that has type va_list. +N * The va_start macro initialises ap for subsequent use by va_arg and +N * va_end. The parameter parmN is the identifier of the rightmost parameter +N * in the variable parameter list in the function definition (the one just +N * before the '...'). If the parameter parmN is declared with the register +N * storage class an error is given. +N * If parmN is a narrow type (char, short, float) an error is given in +N * strict ANSI mode, or a warning otherwise. +N * Returns: no value. +N */ +N #define va_arg(ap, type) __va_arg(ap, type) +N +N /* +N * The va_arg macro expands to an expression that has the type and value of +N * the next argument in the call. The parameter ap shall be the same as the +N * va_list ap initialised by va_start. Each invocation of va_arg modifies +N * ap so that successive arguments are returned in turn. The parameter +N * 'type' is a type name such that the type of a pointer to an object that +N * has the specified type can be obtained simply by postfixing a * to +N * 'type'. If type is a narrow type, an error is given in strict ANSI +N * mode, or a warning otherwise. If the type is an array or function type, +N * an error is given. +N * In non-strict ANSI mode, 'type' is allowed to be any expression. +N * Returns: The first invocation of the va_arg macro after that of the +N * va_start macro returns the value of the argument after that +N * specified by parmN. Successive invocations return the values of +N * the remaining arguments in succession. +N * The result is cast to 'type', even if 'type' is narrow. +N */ +N +N#define __va_copy(dest, src) ((void)((dest) = (src))) +N +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N /* va_copy is in C99 and non-strict C90 and non-strict C++ +N * __va_copy is always present. +N */ +N #define va_copy(dest, src) ((void)((dest) = (src))) +N +N /* The va_copy macro makes the va_list dest be a copy of +N * the va_list src, as if the va_start macro had been applied +N * to it followed by the same sequence of uses of the va_arg +N * macro as had previously been used to reach the present state +N * of src. +N */ +N#endif +N +N#define va_end(ap) __va_end(ap) +N /* +N * The va_end macro facilitates a normal return from the function whose +N * variable argument list was referenced by the expansion of va_start that +N * initialised the va_list ap. If the va_end macro is not invoked before +N * the return, the behaviour is undefined. +N * Returns: no value. +N */ +N#endif /* __clang__ */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N +N #ifdef __GNUC__ +N /* be cooperative with glibc */ +N typedef __CLIBNS va_list __gnuc_va_list; +X typedef va_list __gnuc_va_list; +N #define __GNUC_VA_LIST +N #undef __need___va_list +N #endif +N +N #endif /* __STDARG_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDARG_NO_EXPORTS +S using ::std::va_list; +S #endif +N #endif /* __cplusplus */ +N#endif +N +N/* end of stdarg.h */ +N +L 20 "..\..\src\common\tau_log.h" 2 +N#include "ArmCM0.h" +L 1 "..\..\src\sdk\include\M0\ArmCM0.h" 1 +N/**************************************************************************//** +N * @file ARMCM0.h +N * @brief CMSIS Core Peripheral Access Layer Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef ARMCM0_H +N#define ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +N +N/* ------------------------- Interrupt Number Definition ------------------------ */ +N +Ntypedef enum IRQn +N{ +N /* ------------------- Processor Exceptions Numbers ----------------------------- */ +N NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */ +N HardFault_IRQn = -13, /* 3 HardFault Interrupt */ +N SVCall_IRQn = -5, /* 11 SV Call Interrupt */ +N PendSV_IRQn = -2, /* 14 Pend SV Interrupt */ +N SysTick_IRQn = -1, /* 15 System Tick Interrupt */ +N +N /* ------------------- Processor Interrupt Numbers ------------------------------ */ +N VIDC_IRQn = 0, +N LCDC_IRQn = 1, +N MIPI_RX_IRQn = 2, +N MIPI_TX_IRQn = 3, +N MEMC_IRQn = 4, +N VPRE_IRQn = 5, +N FLSCTRL_IRQn = 6, +N DMA_IRQn = 7, +N TIMER0_IRQn = 8, +N TIMER1_IRQn = 9, +N TIMER2_IRQn = 10, +N TIMER3_IRQn = 11, +N WDG_IRQn = 12, +N UART_IRQn = 13, +N I2C0_IRQn = 14, +N I2C1_IRQn = 15, +N SPIS_IRQn = 16, +N SPIM_IRQn = 17, +N VPRE1_IRQn = 18, +N I2C2_IRQn = 19, +N OTP_IRQn = 20, +N SWIRE_IRQn = 21, +N PVD_IRQn = 22, +N AP_NRESET_IRQn = 23, +N EXTI_INT0_IRQn = 24, +N EXTI_INT1_IRQn = 25, +N EXTI_INT2_IRQn = 26, +N EXTI_INT3_IRQn = 27, +N EXTI_INT4_IRQn = 28, +N EXTI_INT5_IRQn = 29, +N EXTI_INT6_IRQn = 30, +N EXTI_INT7_IRQn = 31 +N /* Interrupts 10 .. 31 are left out */ +N} IRQn_Type; +N +N +N/* ================================================================================ */ +N/* ================ Processor and Core Peripheral Section ================ */ +N/* ================================================================================ */ +N +N/* ------- Start of section using anonymous unions and disabling warnings ------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma push +N#pragma anon_unions +N#elif defined (__ICCARM__) +X#elif 0L +S#pragma language=extended +S#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +S#pragma clang diagnostic push +S#pragma clang diagnostic ignored "-Wc11-extensions" +S#pragma clang diagnostic ignored "-Wreserved-id-macro" +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning 586 +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* -------- Configuration of Core Peripherals ----------------------------------- */ +N#define __CM0_REV 0x0000U /* Core revision r0p0 */ +N#define __MPU_PRESENT 0U /* no MPU present */ +N#define __VTOR_PRESENT 0U /* no VTOR present */ +N#define __NVIC_PRIO_BITS 2U /* Number of Bits used for Priority Levels */ //20220228 +N#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */ +N +N#define __FPU_PRESENT 0U /* Set to 1 if FPU is present */ +N#define __FPU_DP 0U /* single precision FPU */ +N#define __ICACHE_PRESENT 0U /* Set to 1 if I-CACHE is present */ +N#define __DCACHE_PRESENT 0U /* Set to 1 if D-CACHE is present */ +N#define __DSP_PRESENT 0U /* no DSP extension present */ +N +N#include "core_cm0.h" /* Processor and core peripherals */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 1 +N/**************************************************************************//** +N * @file core_cm0.h +N * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File +N * @version V5.0.6 +N * @date 13. March 2019 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2019 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CORE_CM0_H_GENERIC +N#define __CORE_CM0_H_GENERIC +N +N#include +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/** +N \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions +N CMSIS violates the following MISRA-C:2004 rules: +N +N \li Required Rule 8.5, object/function definition in header file.
+N Function definitions in header files are used to allow 'inlining'. +N +N \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+N Unions are used for effective representation of core registers. +N +N \li Advisory Rule 19.7, Function-like macro defined.
+N Function-like macros are used to allow more efficient code. +N */ +N +N +N/******************************************************************************* +N * CMSIS definitions +N ******************************************************************************/ +N/** +N \ingroup Cortex_M0 +N @{ +N */ +N +N#include "cmsis_version.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h" 1 +N/**************************************************************************//** +N * @file cmsis_version.h +N * @brief CMSIS Core(M) Version definitions +N * @version V5.0.2 +N * @date 19. April 2017 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2017 ARM Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CMSIS_VERSION_H +N#define __CMSIS_VERSION_H +N +N/* CMSIS Version definitions */ +N#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +N#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +N#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ +N __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +X#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | __CM_CMSIS_VERSION_SUB ) +N#endif +L 64 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N/* CMSIS CM0 definitions */ +N#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +N#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +N#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ +N __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ +X#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | __CM0_CMSIS_VERSION_SUB ) +N +N#define __CORTEX_M (0U) /*!< Cortex-M Core */ +N +N/** __FPU_USED indicates whether an FPU is used or not. +N This core does not support an FPU at all +N*/ +N#define __FPU_USED 0U +N +N#if defined ( __CC_ARM ) +X#if 1L +N #if defined __TARGET_FPU_VFP +X #if 0L +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +N #endif +N +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +X#elif 1L && (5060750 >= 6010050) +S #if defined __ARM_FP +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __GNUC__ ) +S #if defined (__VFP_FP__) && !defined(__SOFTFP__) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __ICCARM__ ) +S #if defined __ARMVFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TI_ARM__ ) +S #if defined __TI_VFP_SUPPORT__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TASKING__ ) +S #if defined __FPU_VFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __CSMC__ ) +S #if ( __CSMC__ & 0x400U) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +N#endif +N +N#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 1 +N/**************************************************************************//** +N * @file cmsis_compiler.h +N * @brief CMSIS compiler generic header file +N * @version V5.1.0 +N * @date 09. October 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_COMPILER_H +N#define __CMSIS_COMPILER_H +N +N#include +N +N/* +N * Arm Compiler 4/5 +N */ +N#if defined ( __CC_ARM ) +X#if 1L +N #include "cmsis_armcc.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h" 1 +N/**************************************************************************//** +N * @file cmsis_armcc.h +N * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file +N * @version V5.0.5 +N * @date 14. December 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_ARMCC_H +N#define __CMSIS_ARMCC_H +N +N +N#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) +X#if 1L && (5060750 < 400677) +S #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +N#endif +N +N/* CMSIS compiler control architecture macros */ +N#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ +N (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) +X#if ((0L && (__TARGET_ARCH_6_M == 1)) || (1L && (1 == 1)) ) +N #define __ARM_ARCH_6M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) +X#if (0L && (__TARGET_ARCH_7_M == 1)) +S #define __ARM_ARCH_7M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) +X#if (0L && (__TARGET_ARCH_7E_M == 1)) +S #define __ARM_ARCH_7EM__ 1 +N#endif +N +N /* __ARM_ARCH_8M_BASE__ not applicable */ +N /* __ARM_ARCH_8M_MAIN__ not applicable */ +N +N/* CMSIS compiler control DSP macros */ +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __ARM_FEATURE_DSP 1 +N#endif +N +N/* CMSIS compiler specific defines */ +N#ifndef __ASM +N #define __ASM __asm +N#endif +N#ifndef __INLINE +N #define __INLINE __inline +N#endif +N#ifndef __STATIC_INLINE +N #define __STATIC_INLINE static __inline +N#endif +N#ifndef __STATIC_FORCEINLINE +N #define __STATIC_FORCEINLINE static __forceinline +N#endif +N#ifndef __NO_RETURN +N #define __NO_RETURN __declspec(noreturn) +N#endif +N#ifndef __USED +N #define __USED __attribute__((used)) +N#endif +N#ifndef __WEAK +N #define __WEAK __attribute__((weak)) +N#endif +N#ifndef __PACKED +N #define __PACKED __attribute__((packed)) +N#endif +N#ifndef __PACKED_STRUCT +N #define __PACKED_STRUCT __packed struct +N#endif +N#ifndef __PACKED_UNION +N #define __PACKED_UNION __packed union +N#endif +N#ifndef __UNALIGNED_UINT32 /* deprecated */ +N #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +N#endif +N#ifndef __UNALIGNED_UINT16_WRITE +N #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT16_READ +N #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +N#endif +N#ifndef __UNALIGNED_UINT32_WRITE +N #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT32_READ +N #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +N#endif +N#ifndef __ALIGNED +N #define __ALIGNED(x) __attribute__((aligned(x))) +N#endif +N#ifndef __RESTRICT +N #define __RESTRICT __restrict +N#endif +N +N/* ########################### Core Function Access ########################### */ +N/** \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions +N @{ +N */ +N +N/** +N \brief Enable IRQ Interrupts +N \details Enables IRQ interrupts by clearing the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __enable_irq(); */ +N +N +N/** +N \brief Disable IRQ Interrupts +N \details Disables IRQ interrupts by setting the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __disable_irq(); */ +N +N/** +N \brief Get Control Register +N \details Returns the content of the Control Register. +N \return Control Register value +N */ +N__STATIC_INLINE uint32_t __get_CONTROL(void) +Xstatic __inline uint32_t __get_CONTROL(void) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N return(__regControl); +N} +N +N +N/** +N \brief Set Control Register +N \details Writes the given value to the Control Register. +N \param [in] control Control Register value to set +N */ +N__STATIC_INLINE void __set_CONTROL(uint32_t control) +Xstatic __inline void __set_CONTROL(uint32_t control) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N __regControl = control; +N} +N +N +N/** +N \brief Get IPSR Register +N \details Returns the content of the IPSR Register. +N \return IPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_IPSR(void) +Xstatic __inline uint32_t __get_IPSR(void) +N{ +N register uint32_t __regIPSR __ASM("ipsr"); +X register uint32_t __regIPSR __asm("ipsr"); +N return(__regIPSR); +N} +N +N +N/** +N \brief Get APSR Register +N \details Returns the content of the APSR Register. +N \return APSR Register value +N */ +N__STATIC_INLINE uint32_t __get_APSR(void) +Xstatic __inline uint32_t __get_APSR(void) +N{ +N register uint32_t __regAPSR __ASM("apsr"); +X register uint32_t __regAPSR __asm("apsr"); +N return(__regAPSR); +N} +N +N +N/** +N \brief Get xPSR Register +N \details Returns the content of the xPSR Register. +N \return xPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_xPSR(void) +Xstatic __inline uint32_t __get_xPSR(void) +N{ +N register uint32_t __regXPSR __ASM("xpsr"); +X register uint32_t __regXPSR __asm("xpsr"); +N return(__regXPSR); +N} +N +N +N/** +N \brief Get Process Stack Pointer +N \details Returns the current value of the Process Stack Pointer (PSP). +N \return PSP Register value +N */ +N__STATIC_INLINE uint32_t __get_PSP(void) +Xstatic __inline uint32_t __get_PSP(void) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N return(__regProcessStackPointer); +N} +N +N +N/** +N \brief Set Process Stack Pointer +N \details Assigns the given value to the Process Stack Pointer (PSP). +N \param [in] topOfProcStack Process Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +Xstatic __inline void __set_PSP(uint32_t topOfProcStack) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N __regProcessStackPointer = topOfProcStack; +N} +N +N +N/** +N \brief Get Main Stack Pointer +N \details Returns the current value of the Main Stack Pointer (MSP). +N \return MSP Register value +N */ +N__STATIC_INLINE uint32_t __get_MSP(void) +Xstatic __inline uint32_t __get_MSP(void) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N return(__regMainStackPointer); +N} +N +N +N/** +N \brief Set Main Stack Pointer +N \details Assigns the given value to the Main Stack Pointer (MSP). +N \param [in] topOfMainStack Main Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +Xstatic __inline void __set_MSP(uint32_t topOfMainStack) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N __regMainStackPointer = topOfMainStack; +N} +N +N +N/** +N \brief Get Priority Mask +N \details Returns the current state of the priority mask bit from the Priority Mask Register. +N \return Priority Mask value +N */ +N__STATIC_INLINE uint32_t __get_PRIMASK(void) +Xstatic __inline uint32_t __get_PRIMASK(void) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N return(__regPriMask); +N} +N +N +N/** +N \brief Set Priority Mask +N \details Assigns the given value to the Priority Mask Register. +N \param [in] priMask Priority Mask +N */ +N__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +Xstatic __inline void __set_PRIMASK(uint32_t priMask) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N __regPriMask = (priMask); +N} +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief Enable FIQ +S \details Enables FIQ interrupts by clearing the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __enable_fault_irq __enable_fiq +S +S +S/** +S \brief Disable FIQ +S \details Disables FIQ interrupts by setting the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __disable_fault_irq __disable_fiq +S +S +S/** +S \brief Get Base Priority +S \details Returns the current value of the Base Priority register. +S \return Base Priority register value +S */ +S__STATIC_INLINE uint32_t __get_BASEPRI(void) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S return(__regBasePri); +S} +S +S +S/** +S \brief Set Base Priority +S \details Assigns the given value to the Base Priority register. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S __regBasePri = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Set Base Priority with condition +S \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, +S or the new value increases the BASEPRI priority level. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +S{ +S register uint32_t __regBasePriMax __ASM("basepri_max"); +S __regBasePriMax = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Get Fault Mask +S \details Returns the current value of the Fault Mask register. +S \return Fault Mask register value +S */ +S__STATIC_INLINE uint32_t __get_FAULTMASK(void) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S return(__regFaultMask); +S} +S +S +S/** +S \brief Set Fault Mask +S \details Assigns the given value to the Fault Mask register. +S \param [in] faultMask Fault Mask value to set +S */ +S__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S __regFaultMask = (faultMask & (uint32_t)1U); +S} +S +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N +N/** +N \brief Get FPSCR +N \details Returns the current value of the Floating Point Status/Control register. +N \return Floating Point Status/Control register value +N */ +N__STATIC_INLINE uint32_t __get_FPSCR(void) +Xstatic __inline uint32_t __get_FPSCR(void) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S return(__regfpscr); +N#else +N return(0U); +N#endif +N} +N +N +N/** +N \brief Set FPSCR +N \details Assigns the given value to the Floating Point Status/Control register. +N \param [in] fpscr Floating Point Status/Control value to set +N */ +N__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +Xstatic __inline void __set_FPSCR(uint32_t fpscr) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S __regfpscr = (fpscr); +N#else +N (void)fpscr; +N#endif +N} +N +N +N/*@} end of CMSIS_Core_RegAccFunctions */ +N +N +N/* ########################## Core Instruction Access ######################### */ +N/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface +N Access to dedicated instructions +N @{ +N*/ +N +N/** +N \brief No Operation +N \details No Operation does nothing. This instruction can be used for code alignment purposes. +N */ +N#define __NOP __nop +N +N +N/** +N \brief Wait For Interrupt +N \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. +N */ +N#define __WFI __wfi +N +N +N/** +N \brief Wait For Event +N \details Wait For Event is a hint instruction that permits the processor to enter +N a low-power state until one of a number of events occurs. +N */ +N#define __WFE __wfe +N +N +N/** +N \brief Send Event +N \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. +N */ +N#define __SEV __sev +N +N +N/** +N \brief Instruction Synchronization Barrier +N \details Instruction Synchronization Barrier flushes the pipeline in the processor, +N so that all instructions following the ISB are fetched from cache or memory, +N after the instruction has been completed. +N */ +N#define __ISB() do {\ +N __schedule_barrier();\ +N __isb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __ISB() do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Synchronization Barrier +N \details Acts as a special kind of Data Memory Barrier. +N It completes when all explicit memory accesses before this instruction complete. +N */ +N#define __DSB() do {\ +N __schedule_barrier();\ +N __dsb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DSB() do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Memory Barrier +N \details Ensures the apparent order of the explicit memory operations before +N and after the instruction, without ensuring their completion. +N */ +N#define __DMB() do {\ +N __schedule_barrier();\ +N __dmb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DMB() do { __schedule_barrier(); __dmb(0xF); __schedule_barrier(); } while (0U) +N +N +N/** +N \brief Reverse byte order (32 bit) +N \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#define __REV __rev +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +X__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +N{ +N rev16 r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +X__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +N{ +N revsh r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Rotate Right in unsigned value (32 bit) +N \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. +N \param [in] op1 Value to rotate +N \param [in] op2 Number of Bits to rotate +N \return Rotated value +N */ +N#define __ROR __ror +N +N +N/** +N \brief Breakpoint +N \details Causes the processor to enter Debug state. +N Debug tools can use this to investigate system state when the instruction at a particular address is reached. +N \param [in] value is ignored by the processor. +N If required, a debugger can use it to store additional information about the breakpoint. +N */ +N#define __BKPT(value) __breakpoint(value) +N +N +N/** +N \brief Reverse bit order of value +N \details Reverses the bit order of the given value. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __RBIT __rbit +N#else +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +X__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +N{ +N uint32_t result; +N uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ +N +N result = value; /* r will be reversed bits of v; first get LSB of v */ +N for (value >>= 1U; value != 0U; value >>= 1U) +N { +N result <<= 1U; +N result |= value & 1U; +N s--; +N } +N result <<= s; /* shift when v's highest bits are zero */ +N return result; +N} +N#endif +N +N +N/** +N \brief Count leading zeros +N \details Counts the number of leading zeros of a data value. +N \param [in] value Value to count the leading zeros +N \return number of leading zeros in value +N */ +N#define __CLZ __clz +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief LDR Exclusive (8 bit) +S \details Executes a exclusive LDR instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +S#else +S #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (16 bit) +S \details Executes a exclusive LDR instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +S#else +S #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (32 bit) +S \details Executes a exclusive LDR instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +S#else +S #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (8 bit) +S \details Executes a exclusive STR instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXB(value, ptr) __strex(value, ptr) +S#else +S #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (16 bit) +S \details Executes a exclusive STR instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXH(value, ptr) __strex(value, ptr) +S#else +S #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (32 bit) +S \details Executes a exclusive STR instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXW(value, ptr) __strex(value, ptr) +S#else +S #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief Remove the exclusive lock +S \details Removes the exclusive lock which is created by LDREX. +S */ +S#define __CLREX __clrex +S +S +S/** +S \brief Signed Saturate +S \details Saturates a signed value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (1..32) +S \return Saturated value +S */ +S#define __SSAT __ssat +S +S +S/** +S \brief Unsigned Saturate +S \details Saturates an unsigned value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (0..31) +S \return Saturated value +S */ +S#define __USAT __usat +S +S +S/** +S \brief Rotate Right with Extend (32 bit) +S \details Moves each bit of a bitstring right by one bit. +S The carry input is shifted in at the left end of the bitstring. +S \param [in] value Value to rotate +S \return Rotated value +S */ +S#ifndef __NO_EMBEDDED_ASM +S__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +S{ +S rrx r0, r0 +S bx lr +S} +S#endif +S +S +S/** +S \brief LDRT Unprivileged (8 bit) +S \details Executes a Unprivileged LDRT instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (16 bit) +S \details Executes a Unprivileged LDRT instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (32 bit) +S \details Executes a Unprivileged LDRT instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) +S +S +S/** +S \brief STRT Unprivileged (8 bit) +S \details Executes a Unprivileged STRT instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRBT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (16 bit) +S \details Executes a Unprivileged STRT instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRHT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (32 bit) +S \details Executes a Unprivileged STRT instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRT(value, ptr) __strt(value, ptr) +S +N#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#else +N +N/** +N \brief Signed Saturate +N \details Saturates a signed value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (1..32) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +N{ +N if ((sat >= 1U) && (sat <= 32U)) +N { +N const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); +N const int32_t min = -1 - max ; +N if (val > max) +N { +N return max; +N } +N else if (val < min) +N { +N return min; +N } +N } +N return val; +N} +N +N/** +N \brief Unsigned Saturate +N \details Saturates an unsigned value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (0..31) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +N{ +N if (sat <= 31U) +N { +N const uint32_t max = ((1U << sat) - 1U); +N if (val > (int32_t)max) +N { +N return max; +N } +N else if (val < 0) +N { +N return 0U; +N } +N } +N return (uint32_t)val; +N} +N +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ +N +N +N/* ################### Compiler specific Intrinsics ########################### */ +N/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics +N Access to dedicated SIMD instructions +N @{ +N*/ +N +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S#define __SADD8 __sadd8 +S#define __QADD8 __qadd8 +S#define __SHADD8 __shadd8 +S#define __UADD8 __uadd8 +S#define __UQADD8 __uqadd8 +S#define __UHADD8 __uhadd8 +S#define __SSUB8 __ssub8 +S#define __QSUB8 __qsub8 +S#define __SHSUB8 __shsub8 +S#define __USUB8 __usub8 +S#define __UQSUB8 __uqsub8 +S#define __UHSUB8 __uhsub8 +S#define __SADD16 __sadd16 +S#define __QADD16 __qadd16 +S#define __SHADD16 __shadd16 +S#define __UADD16 __uadd16 +S#define __UQADD16 __uqadd16 +S#define __UHADD16 __uhadd16 +S#define __SSUB16 __ssub16 +S#define __QSUB16 __qsub16 +S#define __SHSUB16 __shsub16 +S#define __USUB16 __usub16 +S#define __UQSUB16 __uqsub16 +S#define __UHSUB16 __uhsub16 +S#define __SASX __sasx +S#define __QASX __qasx +S#define __SHASX __shasx +S#define __UASX __uasx +S#define __UQASX __uqasx +S#define __UHASX __uhasx +S#define __SSAX __ssax +S#define __QSAX __qsax +S#define __SHSAX __shsax +S#define __USAX __usax +S#define __UQSAX __uqsax +S#define __UHSAX __uhsax +S#define __USAD8 __usad8 +S#define __USADA8 __usada8 +S#define __SSAT16 __ssat16 +S#define __USAT16 __usat16 +S#define __UXTB16 __uxtb16 +S#define __UXTAB16 __uxtab16 +S#define __SXTB16 __sxtb16 +S#define __SXTAB16 __sxtab16 +S#define __SMUAD __smuad +S#define __SMUADX __smuadx +S#define __SMLAD __smlad +S#define __SMLADX __smladx +S#define __SMLALD __smlald +S#define __SMLALDX __smlaldx +S#define __SMUSD __smusd +S#define __SMUSDX __smusdx +S#define __SMLSD __smlsd +S#define __SMLSDX __smlsdx +S#define __SMLSLD __smlsld +S#define __SMLSLDX __smlsldx +S#define __SEL __sel +S#define __QADD __qadd +S#define __QSUB __qsub +S +S#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ +S ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +X#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +S +S#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ +S ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +X#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +S +S#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ +S ((int64_t)(ARG3) << 32U) ) >> 32U)) +X#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + ((int64_t)(ARG3) << 32U) ) >> 32U)) +S +N#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +N/*@} end of group CMSIS_SIMD_intrinsics */ +N +N +N#endif /* __CMSIS_ARMCC_H */ +L 35 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 2 +N +N +N/* +N * Arm Compiler 6.6 LTM (armclang) +N */ +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) +X#elif 1L && (5060750 >= 6010050) && (5060750 < 6100100) +S #include "cmsis_armclang_ltm.h" +S +S /* +S * Arm Compiler above 6.10.1 (armclang) +S */ +S#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) +S #include "cmsis_armclang.h" +S +S +S/* +S * GNU Compiler +S */ +S#elif defined ( __GNUC__ ) +S #include "cmsis_gcc.h" +S +S +S/* +S * IAR Compiler +S */ +S#elif defined ( __ICCARM__ ) +S #include +S +S +S/* +S * TI Arm Compiler +S */ +S#elif defined ( __TI_ARM__ ) +S #include +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __attribute__((packed)) +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __attribute__((packed)) +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __attribute__((packed)) +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __attribute__((packed)) T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __attribute__((aligned(x))) +S #endif +S #ifndef __RESTRICT +S #define __RESTRICT __restrict +S #endif +S +S +S/* +S * TASKING Compiler +S */ +S#elif defined ( __TASKING__ ) +S /* +S * The CMSIS functions have been implemented as intrinsics in the compiler. +S * Please use "carm -?i" to get an up to date list of all intrinsics, +S * Including the CMSIS ones. +S */ +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __packed__ +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __packed__ +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __packed__ +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __packed__ T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __align(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S/* +S * COSMIC Compiler +S */ +S#elif defined ( __CSMC__ ) +S #include +S +S #ifndef __ASM +S #define __ASM _asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S // NO RETURN is automatically detected hence no warning here +S #define __NO_RETURN +S #endif +S #ifndef __USED +S #warning No compiler specific solution for __USED. __USED is ignored. +S #define __USED +S #endif +S #ifndef __WEAK +S #define __WEAK __weak +S #endif +S #ifndef __PACKED +S #define __PACKED @packed +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT @packed struct +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION @packed union +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S @packed struct T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. +S #define __ALIGNED(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S#else +S #error Unknown compiler. +N#endif +N +N +N#endif /* __CMSIS_COMPILER_H */ +N +L 116 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_GENERIC */ +N +N#ifndef __CMSIS_GENERIC +N +N#ifndef __CORE_CM0_H_DEPENDANT +N#define __CORE_CM0_H_DEPENDANT +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/* check device defines and use defaults */ +N#if defined __CHECK_DEVICE_DEFINES +X#if 0L +S #ifndef __CM0_REV +S #define __CM0_REV 0x0000U +S #warning "__CM0_REV not defined in device header file; using default!" +S #endif +S +S #ifndef __NVIC_PRIO_BITS +S #define __NVIC_PRIO_BITS 2U +S #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" +S #endif +S +S #ifndef __Vendor_SysTickConfig +S #define __Vendor_SysTickConfig 0U +S #warning "__Vendor_SysTickConfig not defined in device header file; using default!" +S #endif +N#endif +N +N/* IO definitions (access restrictions to peripheral registers) */ +N/** +N \defgroup CMSIS_glob_defs CMSIS Global Defines +N +N IO Type Qualifiers are used +N \li to specify the access to peripheral variables. +N \li for automatic generation of peripheral register debug information. +N*/ +N#ifdef __cplusplus +S #define __I volatile /*!< Defines 'read only' permissions */ +N#else +N #define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N/* following defines should be used for structure members */ +N#define __IM volatile const /*! Defines 'read only' structure member permissions */ +N#define __OM volatile /*! Defines 'write only' structure member permissions */ +N#define __IOM volatile /*! Defines 'read / write' structure member permissions */ +N +N/*@} end of group Cortex_M0 */ +N +N +N +N/******************************************************************************* +N * Register Abstraction +N Core Register contain: +N - Core Register +N - Core NVIC Register +N - Core SCB Register +N - Core SysTick Register +N ******************************************************************************/ +N/** +N \defgroup CMSIS_core_register Defines and Type Definitions +N \brief Type definitions and defines for Cortex-M processor based devices. +N*/ +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CORE Status and Control Registers +N \brief Core Register type definitions. +N @{ +N */ +N +N/** +N \brief Union type to access the Application Program Status Register (APSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} APSR_Type; +N +N/* APSR Register Definitions */ +N#define APSR_N_Pos 31U /*!< APSR: N Position */ +N#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ +N +N#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +N#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ +N +N#define APSR_C_Pos 29U /*!< APSR: C Position */ +N#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ +N +N#define APSR_V_Pos 28U /*!< APSR: V Position */ +N#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ +N +N +N/** +N \brief Union type to access the Interrupt Program Status Register (IPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} IPSR_Type; +N +N/* IPSR Register Definitions */ +N#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +N#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Special-Purpose Program Status Registers (xPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +N uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ +N uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} xPSR_Type; +N +N/* xPSR Register Definitions */ +N#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +N#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ +N +N#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +N#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ +N +N#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +N#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ +N +N#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +N#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ +N +N#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +N#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ +N +N#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +N#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Control Registers (CONTROL). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:1; /*!< bit: 0 Reserved */ +N uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ +N uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} CONTROL_Type; +N +N/* CONTROL Register Definitions */ +N#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +N#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ +N +N/*@} end of group CMSIS_CORE */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) +N \brief Type definitions for the NVIC Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). +N */ +Ntypedef struct +N{ +N __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ +X volatile uint32_t ISER[1U]; +N uint32_t RESERVED0[31U]; +N __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ +X volatile uint32_t ICER[1U]; +N uint32_t RESERVED1[31U]; +N __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ +X volatile uint32_t ISPR[1U]; +N uint32_t RESERVED2[31U]; +N __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ +X volatile uint32_t ICPR[1U]; +N uint32_t RESERVED3[31U]; +N uint32_t RESERVED4[64U]; +N __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +X volatile uint32_t IP[8U]; +N} NVIC_Type; +N +N/*@} end of group CMSIS_NVIC */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SCB System Control Block (SCB) +N \brief Type definitions for the System Control Block Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the System Control Block (SCB). +N */ +Ntypedef struct +N{ +N __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ +X volatile const uint32_t CPUID; +N __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +X volatile uint32_t ICSR; +N uint32_t RESERVED0; +N __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ +X volatile uint32_t AIRCR; +N __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ +X volatile uint32_t SCR; +N __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ +X volatile uint32_t CCR; +N uint32_t RESERVED1; +N __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ +X volatile uint32_t SHP[2U]; +N __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +X volatile uint32_t SHCSR; +N} SCB_Type; +N +N/* SCB CPUID Register Definitions */ +N#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +N#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ +N +N#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +N#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ +N +N#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +N#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ +N +N#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +N#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ +N +N#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +N#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ +N +N/* SCB Interrupt Control State Register Definitions */ +N#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +N#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ +N +N#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +N#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ +N +N#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +N#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ +N +N#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +N#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ +N +N#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +N#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ +N +N#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +N#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ +N +N#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +N#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ +N +N#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +N#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ +N +N#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +N#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ +N +N/* SCB Application Interrupt and Reset Control Register Definitions */ +N#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +N#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ +N +N#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +N#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ +N +N#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +N#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ +N +N#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +N#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ +N +N#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +N#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ +N +N/* SCB System Control Register Definitions */ +N#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +N#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ +N +N#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +N#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ +N +N#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +N#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ +N +N/* SCB Configuration Control Register Definitions */ +N#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +N#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ +N +N#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +N#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ +N +N/* SCB System Handler Control and State Register Definitions */ +N#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +N#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ +N +N/*@} end of group CMSIS_SCB */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SysTick System Tick Timer (SysTick) +N \brief Type definitions for the System Timer Registers. +N @{ +N */ +N +N/** +N \brief Structure type to access the System Timer (SysTick). +N */ +Ntypedef struct +N{ +N __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ +X volatile uint32_t CTRL; +N __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ +X volatile uint32_t LOAD; +N __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ +X volatile uint32_t VAL; +N __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +X volatile const uint32_t CALIB; +N} SysTick_Type; +N +N/* SysTick Control / Status Register Definitions */ +N#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +N#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ +N +N#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +N#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ +N +N#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +N#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ +N +N#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +N#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ +N +N/* SysTick Reload Register Definitions */ +N#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +N#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ +N +N/* SysTick Current Register Definitions */ +N#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +N#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ +N +N/* SysTick Calibration Register Definitions */ +N#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +N#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ +N +N#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +N#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ +N +N#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +N#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ +N +N/*@} end of group CMSIS_SysTick */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) +N \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. +N Therefore they are not covered by the Cortex-M0 header file. +N @{ +N */ +N/*@} end of group CMSIS_CoreDebug */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_bitfield Core register bit field macros +N \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). +N @{ +N */ +N +N/** +N \brief Mask and shift a bit field value for use in a register bit range. +N \param[in] field Name of the register bit field. +N \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted value. +N*/ +N#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) +N +N/** +N \brief Mask and shift a register value to extract a bit filed value. +N \param[in] field Name of the register bit field. +N \param[in] value Value of register. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted bit field value. +N*/ +N#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) +N +N/*@} end of group CMSIS_core_bitfield */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_base Core Definitions +N \brief Definitions for base addresses, unions, and structures. +N @{ +N */ +N +N/* Memory mapping of Core Hardware */ +N#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +N#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +N#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +N#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ +N +N#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +N#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +N#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +N +N +N/*@} */ +N +N +N +N/******************************************************************************* +N * Hardware Abstraction Layer +N Core Function Interface contains: +N - Core NVIC Functions +N - Core SysTick Functions +N - Core Register Access Functions +N ******************************************************************************/ +N/** +N \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +N*/ +N +N +N +N/* ########################## NVIC functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_NVICFunctions NVIC Functions +N \brief Functions that manage interrupts and exceptions via the NVIC. +N @{ +N */ +N +N#ifdef CMSIS_NVIC_VIRTUAL +S #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE +S #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" +S #endif +S #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping +N #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping +N #define NVIC_EnableIRQ __NVIC_EnableIRQ +N #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ +N #define NVIC_DisableIRQ __NVIC_DisableIRQ +N #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ +N #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ +N #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +N/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ +N #define NVIC_SetPriority __NVIC_SetPriority +N #define NVIC_GetPriority __NVIC_GetPriority +N #define NVIC_SystemReset __NVIC_SystemReset +N#endif /* CMSIS_NVIC_VIRTUAL */ +N +N#ifdef CMSIS_VECTAB_VIRTUAL +S #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE +S #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" +S #endif +S #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetVector __NVIC_SetVector +N #define NVIC_GetVector __NVIC_GetVector +N#endif /* (CMSIS_VECTAB_VIRTUAL) */ +N +N#define NVIC_USER_IRQ_OFFSET 16 +N +N +N/* The following EXC_RETURN values are saved the LR on exception entry */ +N#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +N +N +N/* Interrupt Priorities are WORD accessible only under Armv6-M */ +N/* The following MACROS handle generation of the register offset and byte masks */ +N#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +N#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +N#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) +N +N#define __NVIC_SetPriorityGrouping(X) (void)(X) +N#define __NVIC_GetPriorityGrouping() (0U) +N +N/** +N \brief Enable Interrupt +N \details Enables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Get Interrupt Enable status +N \details Returns a device specific interrupt enable status from the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt is not enabled. +N \return 1 Interrupt is enabled. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Disable Interrupt +N \details Disables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N __DSB(); +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N __ISB(); +X do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); +N } +N} +N +N +N/** +N \brief Get Pending Interrupt +N \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt status is not pending. +N \return 1 Interrupt status is pending. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Set Pending Interrupt +N \details Sets the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Clear Pending Interrupt +N \details Clears the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Set Interrupt Priority +N \details Sets the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \param [in] priority Priority to set. +N \note The priority cannot be set for every processor exception. +N */ +N__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +Xstatic __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N else +N { +N SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N} +N +N +N/** +N \brief Get Interrupt Priority +N \details Reads the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Interrupt Priority. +N Value is aligned automatically to the implemented priority bits of the microcontroller. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +N{ +N +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N else +N { +N return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N} +N +N +N/** +N \brief Encode Priority +N \details Encodes the priority for an interrupt with the given priority group, +N preemptive priority value, and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +N \param [in] PriorityGroup Used priority group. +N \param [in] PreemptPriority Preemptive priority value (starting from 0). +N \param [in] SubPriority Subpriority value (starting from 0). +N \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). +N */ +N__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +Xstatic __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N return ( +N ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | +N ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) +N ); +N} +N +N +N/** +N \brief Decode Priority +N \details Decodes an interrupt priority value with a given priority group to +N preemptive priority value and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. +N \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). +N \param [in] PriorityGroup Used priority group. +N \param [out] pPreemptPriority Preemptive priority value (starting from 0). +N \param [out] pSubPriority Subpriority value (starting from 0). +N */ +N__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +Xstatic __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); +N *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +N} +N +N +N +N/** +N \brief Set Interrupt Vector +N \details Sets an interrupt vector in SRAM based interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N Address 0 must be mapped to SRAM. +N \param [in] IRQn Interrupt number +N \param [in] vector Address of interrupt handler function +N */ +N__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +Xstatic __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +N{ +N uint32_t vectors = 0x0U; +N (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; +X (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +N} +N +N +N/** +N \brief Get Interrupt Vector +N \details Reads an interrupt vector from interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Address of interrupt handler function +N */ +N__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +N{ +N uint32_t vectors = 0x0U; +N return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +X return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +N} +N +N +N/** +N \brief System Reset +N \details Initiates a system reset request to reset the MCU. +N */ +N__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +X__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +N{ +N __DSB(); /* Ensure all outstanding memory accesses included +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N buffered write are completed before reset */ +N SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | +N SCB_AIRCR_SYSRESETREQ_Msk); +X (1UL << 2U)); +N __DSB(); /* Ensure completion of memory access */ +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N +N for(;;) /* wait until reset */ +N { +N __NOP(); +X __nop(); +N } +N} +N +N/*@} end of CMSIS_Core_NVICFunctions */ +N +N +N/* ########################## FPU functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_FpuFunctions FPU Functions +N \brief Function that provides FPU type. +N @{ +N */ +N +N/** +N \brief get FPU type +N \details returns the FPU type +N \returns +N - \b 0: No FPU +N - \b 1: Single precision FPU +N - \b 2: Double + Single precision FPU +N */ +N__STATIC_INLINE uint32_t SCB_GetFPUType(void) +Xstatic __inline uint32_t SCB_GetFPUType(void) +N{ +N return 0U; /* No FPU */ +N} +N +N +N/*@} end of CMSIS_Core_FpuFunctions */ +N +N +N +N/* ################################## SysTick function ############################################ */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_SysTickFunctions SysTick Functions +N \brief Functions that configure the System. +N @{ +N */ +N +N#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) +X#if 1L && (0U == 0U) +N +N/** +N \brief System Tick Configuration +N \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. +N Counter is in free running mode to generate periodic interrupts. +N \param [in] ticks Number of ticks between two interrupts. +N \return 0 Function succeeded. +N \return 1 Function failed. +N \note When the variable __Vendor_SysTickConfig is set to 1, then the +N function SysTick_Config is not included. In this case, the file device.h +N must contain a vendor-specific implementation of this function. +N */ +N__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +Xstatic __inline uint32_t SysTick_Config(uint32_t ticks) +N{ +N if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) +X if ((ticks - 1UL) > (0xFFFFFFUL )) +N { +N return (1UL); /* Reload value impossible */ +N } +N +N SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); +N NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ +X __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); +N SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; +N SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | +N SysTick_CTRL_TICKINT_Msk | +X (1UL << 1U) | +N SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ +X (1UL ); +N return (0UL); /* Function successful */ +N} +N +N#endif +N +N/*@} end of CMSIS_Core_SysTickFunctions */ +N +N +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_DEPENDANT */ +N +N#endif /* __CMSIS_GENERIC */ +L 122 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N#include "system_ARMCM0.h" /* System Header */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h" 1 +N/**************************************************************************//** +N * @file system_ARMCM0.h +N * @brief CMSIS Device System Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef SYSTEM_ARMCM0_H +N#define SYSTEM_ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +Nextern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ +N +N +N/** +N \brief Setup the microcontroller system. +N +N Initialize the System and update the SystemCoreClock variable. +N */ +Nextern void SystemInit (void); +N +N +N/** +N \brief Update SystemCoreClock variable. +N +N Updates the SystemCoreClock with current core Clock retrieved from cpu registers. +N */ +Nextern void SystemCoreClockUpdate (void); +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* SYSTEM_ARMCM0_H */ +L 123 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N +N/* -------- End of section using anonymous unions and disabling warnings -------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma pop +N#elif defined (__ICCARM__) +X#elif 0L +S/* leave anonymous unions enabled */ +S#elif (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +S#pragma clang diagnostic pop +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning restore +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* In HS mode and when the DMA is used, all variables and data structures dealing +N with the DMA during the transaction process should be 4-bytes aligned */ +N#define DMA_WORD_ALIGN_EN +N#ifdef DMA_WORD_ALIGN_EN +N#if defined (__GNUC__) /* GNU Compiler */ +X#if 1L +N#define __ALIGN_END __attribute__ ((aligned (4))) +N#define __ALIGN_BEGIN +N#else +S#define __ALIGN_END +S#if defined (__CC_ARM) /* ARM Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#elif defined (__ICCARM__) /* IAR Compiler */ +S#define __ALIGN_BEGIN +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#endif /* __CC_ARM */ +N#endif /* __GNUC__ */ +N#else +S +S#define __ALIGN_BEGIN +S#define __ALIGN_END +S +S#define __ALIGN_END_1 __attribute__ ((aligned (1))) +N#endif /* DMA_WORD_ALIGN_EN */ +N +N/* __packed keyword used to decrease the data type alignment to 1-byte */ +N#if defined (__CC_ARM) /* ARM Compiler */ +X#if 1L +N#define __packed __packed +N#elif defined (__ICCARM__) /* IAR Compiler */ +X#elif 0L +S#define __packed __packed +S#elif defined ( __GNUC__ ) /* GNU Compiler */ +S#define __packed __attribute__ ((__packed__)) +S#define __weak __attribute__((weak)) +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __packed __unaligned +N#endif /* __CC_ARM */ +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* ARMCM0_H */ +L 21 "..\..\src\common\tau_log.h" 2 +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N#ifdef LOG_TAG +S#undef LOG_TAG +N#endif +N#define LOG_TAG "tau_log" +N#define LOG_CURREN_LEVEL kLOG_LEVEL_DBG /* 配置打印等级 TODO:每个模块可配置打印等级 */ +N#define LOG_BUF_SIZE (256) /* 配置打印缓存的大小 */ +N +N/* +N * Using the following three macros for conveniently logging. +N */ +N#define TAU_LOGD(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGD(format,...) do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGI(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGI(format,...) do { tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGE(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGE(format,...) do { tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief log打印等级枚举 +N* +N*/ +Ntypedef enum +N{ +N kLOG_LEVEL_DBG = 0, +N kLOG_LEVEL_INF, +N kLOG_LEVEL_ERR, +N kLOG_LEVEL_NONE /* 不打印任何参数 */ +N} log_level_e; +N +N/** +N* @brief log打印端口枚举 +N* +N*/ +Ntypedef enum +N{ +N LOG_PORT_UART0, /* 使用串口输出打印 */ +N LOG_PORT_UART1, /* 使用串口输出打印 */ +N LOG_PORT_SWD, /* 使用swd输出打印 */ +N LOG_PORT_UNKNOWN +N} log_port_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_init(uint32_t baud_rate, log_port_e log_port); +N +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_printf(log_level_e log_lv, const char *fmt, ...); +N +N#endif +L 18 "..\..\src\sdk\include\hal_system.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief 系统时钟配置 +N*/ +Ntypedef enum +N{ +N HAL_SYSCLK_80M = 80000000, +N HAL_SYSCLK_100M = 100000000, +N HAL_SYSCLK_150M = 150000000 +N} hal_system_clk_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N +N/** +N* @brief system 初始化 +N* @param sysclk:系统时钟 +N* @retval none +N*/ +Nvoid hal_system_init(hal_system_clk_e sysclk); +N +N/** +N* @brief mcu进入idle模式,等待中断唤醒 +N* @param disable_systick: 进入idle时是否关闭systick(退出idle 恢复systick) +N* @retval none +N*/ +Nvoid hal_system_idle_mode(bool disable_systick); +Xvoid hal_system_idle_mode(_Bool disable_systick); +N +N/** +N* @brief 注册systick回调函数 +N* @param cb_func:回调函数地址 +N* @retval 无 +N*/ +Nvoid hal_system_register_systick_cb(fcb_type cb_func); +N +N/** +N* @brief 启动sys tickt +N* @param ms: sys tickt 间隔, 范围1-10ms +N* @retval true/false +N*/ +Nbool hal_system_enable_systick(uint8_t ms); +X_Bool hal_system_enable_systick(uint8_t ms); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nbool hal_system_disable_systick(void); +X_Bool hal_system_disable_systick(void); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nuint32_t hal_system_get_tick(void); +N +N/** +N* @brief reset chip +N* @param none +N* @retval none +N*/ +Nvoid hal_system_reset_chip(void); +N +N/** +N* @brief 获取上位机设置的debug state(debug only) +N* @param none +N* @retval debug state +N*/ +Nuint32_t hal_system_get_debug_state(void); +N +N/** +N* @brief clear debug state(debug only) +N* @param none +N* @retval none +N*/ +Nvoid hal_system_clear_debug_state(void); +N +N/** +N* @brief 更新MCU时钟 +N* @param sysclk:系统时钟 +N* @retval true/false +N*/ +Nbool hal_system_updata_sysclk(hal_system_clk_e sysclk); +X_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); +N +N#endif //__HAL_SYSTEM_H__ +L 12 "..\..\src\board\board.c" 2 +N#include "hal_gpio.h" +N#include "ArmCM0.h" +N#include "tau_log.h" +N +N/** +N* @brief 系统板级初始化,配置系统时钟,调试log输出 +N* @param none +N* @retval none +N*/ +Nvoid board_Init(void) +N{ +N /* system init ,配置MCU时钟 */ +N hal_system_init(HAL_SYSCLK_80M); +N +N /* 使用SWD口作为Debug Log输出,可配置成Uart方式 */ +N tau_log_init(115200, LOG_PORT_UART0); +N +N /* systick init,根据需要配置 */ +N //hal_system_enable_systick(1); +N} diff --git a/project/WL668/Listings/board.txt b/project/WL668/Listings/board.txt new file mode 100644 index 0000000..3d97ded --- /dev/null +++ b/project/WL668/Listings/board.txt @@ -0,0 +1,57 @@ +; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637] +; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave --gnu -o.\objects\board.o --asm_dir=.\Listings\ --list_dir=.\Listings\ --depend=.\objects\board.d --cpu=Cortex-M0 --apcs=interwork -O0 --diag_suppress=9931 -I..\..\src -I..\..\src\board -I..\..\src\common -I..\..\src\sdk\include -I..\..\src\sdk\include\M0 -I..\..\src\app -I..\..\src\app\S8 -I..\..\src\app\touch -I..\..\src\app\module_demo -I..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__MICROLIB -D__UVISION_VERSION=528 -D_RTE_ -DARMCM0 --omf_browse=.\objects\board.crf ..\..\src\board\board.c] + THUMB + + AREA ||i.board_Init||, CODE, READONLY, ALIGN=2 + + board_Init PROC +;;;20 */ +;;;21 void board_Init(void) +000000 b510 PUSH {r4,lr} +;;;22 { +;;;23 /* system init ,配置MCU时钟 */ +;;;24 hal_system_init(HAL_SYSCLK_80M); +000002 4804 LDR r0,|L1.20| +000004 f7fffffe BL hal_system_init +;;;25 +;;;26 /* 使用SWD口作为Debug Log输出,可配置成Uart方式 */ +;;;27 tau_log_init(115200, LOG_PORT_UART0); +000008 2100 MOVS r1,#0 +00000a 20e1 MOVS r0,#0xe1 +00000c 0240 LSLS r0,r0,#9 +00000e f7fffffe BL tau_log_init +;;;28 +;;;29 /* systick init,根据需要配置 */ +;;;30 //hal_system_enable_systick(1); +;;;31 } +000012 bd10 POP {r4,pc} + ENDP + + |L1.20| + DCD 0x04c4b400 + +;*** Start embedded assembler *** + +#line 1 "..\\..\\src\\board\\board.c" + AREA ||.rev16_text||, CODE + THUMB + EXPORT |__asm___7_board_c_bcd01269____REV16| +#line 467 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" +|__asm___7_board_c_bcd01269____REV16| PROC +#line 468 + + rev16 r0, r0 + bx lr + ENDP + AREA ||.revsh_text||, CODE + THUMB + EXPORT |__asm___7_board_c_bcd01269____REVSH| +#line 482 +|__asm___7_board_c_bcd01269____REVSH| PROC +#line 483 + + revsh r0, r0 + bx lr + ENDP + +;*** End embedded assembler *** diff --git a/project/WL668/Listings/main._ip b/project/WL668/Listings/main._ip new file mode 100644 index 0000000..4da327d --- /dev/null +++ b/project/WL668/Listings/main._ip @@ -0,0 +1,6 @@ +..\..\src\app\main.c -E --c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\listings\main.i --list_dir ".\\Listings\\" --list \ No newline at end of file diff --git a/project/WL668/Listings/main.i b/project/WL668/Listings/main.i new file mode 100644 index 0000000..3ea14d6 --- /dev/null +++ b/project/WL668/Listings/main.i @@ -0,0 +1,6424 @@ +# 1 "..\\..\\src\\app\\main.c" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdio.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 47 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdio.h" + + + + + + + typedef unsigned int size_t; + + + + + + + + + + + + + + + + + typedef struct __va_list __va_list; + + + + + + + + + + + + + + + + +typedef struct __fpos_t_struct { + unsigned __int64 __pos; + + + + + + struct { + unsigned int __state1, __state2; + } __mbstate; +} fpos_t; + + + + + + + + + + +typedef struct __FILE FILE; + + + + + + + + + +# 136 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdio.h" + + +extern FILE __stdin, __stdout, __stderr; +extern FILE *__aeabi_stdin, *__aeabi_stdout, *__aeabi_stderr; + +# 166 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdio.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int remove(const char * ) __attribute__((__nonnull__(1))); + + + + + + + +extern __declspec(__nothrow) int rename(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +extern __declspec(__nothrow) FILE *tmpfile(void); + + + + + + +extern __declspec(__nothrow) char *tmpnam(char * ); + + + + + + + + + + + + + + +extern __declspec(__nothrow) int fclose(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + + + +extern __declspec(__nothrow) int fflush(FILE * ); + + + + + + + + + +extern __declspec(__nothrow) FILE *fopen(const char * __restrict , + const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) FILE *freopen(const char * __restrict , + const char * __restrict , + FILE * __restrict ) __attribute__((__nonnull__(2,3))); + + + + + + + + + + +extern __declspec(__nothrow) void setbuf(FILE * __restrict , + char * __restrict ) __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) int setvbuf(FILE * __restrict , + char * __restrict , + int , size_t ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int fprintf(FILE * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int _fprintf(FILE * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int printf(const char * __restrict , ...) __attribute__((__nonnull__(1))); + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int _printf(const char * __restrict , ...) __attribute__((__nonnull__(1))); + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int sprintf(char * __restrict , const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int _sprintf(char * __restrict , const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int __ARM_snprintf(char * __restrict , size_t , + const char * __restrict , ...) __attribute__((__nonnull__(3))); + + +#pragma __printf_args +extern __declspec(__nothrow) int snprintf(char * __restrict , size_t , + const char * __restrict , ...) __attribute__((__nonnull__(3))); + + + + + + + + + + + + + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int _snprintf(char * __restrict , size_t , + const char * __restrict , ...) __attribute__((__nonnull__(3))); + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int fscanf(FILE * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int _fscanf(FILE * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int scanf(const char * __restrict , ...) __attribute__((__nonnull__(1))); + + + + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int _scanf(const char * __restrict , ...) __attribute__((__nonnull__(1))); + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int sscanf(const char * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +#pragma __scanf_args +extern __declspec(__nothrow) int _sscanf(const char * __restrict , + const char * __restrict , ...) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int vfscanf(FILE * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) int vscanf(const char * __restrict , __va_list) __attribute__((__nonnull__(1))); +extern __declspec(__nothrow) int vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); + +extern __declspec(__nothrow) int _vfscanf(FILE * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) int _vscanf(const char * __restrict , __va_list) __attribute__((__nonnull__(1))); +extern __declspec(__nothrow) int _vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) int __ARM_vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); + +extern __declspec(__nothrow) int vprintf(const char * __restrict , __va_list ) __attribute__((__nonnull__(1))); + + + + + + + +extern __declspec(__nothrow) int _vprintf(const char * __restrict , __va_list ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) int vfprintf(FILE * __restrict , + const char * __restrict , __va_list ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int vsprintf(char * __restrict , + const char * __restrict , __va_list ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int __ARM_vsnprintf(char * __restrict , size_t , + const char * __restrict , __va_list ) __attribute__((__nonnull__(3))); + +extern __declspec(__nothrow) int vsnprintf(char * __restrict , size_t , + const char * __restrict , __va_list ) __attribute__((__nonnull__(3))); + + + + + + + + + + +extern __declspec(__nothrow) int _vsprintf(char * __restrict , + const char * __restrict , __va_list ) __attribute__((__nonnull__(1,2))); + + + + + +extern __declspec(__nothrow) int _vfprintf(FILE * __restrict , + const char * __restrict , __va_list ) __attribute__((__nonnull__(1,2))); + + + + + +extern __declspec(__nothrow) int _vsnprintf(char * __restrict , size_t , + const char * __restrict , __va_list ) __attribute__((__nonnull__(3))); + + + + + + +#pragma __printf_args +extern __declspec(__nothrow) int asprintf(char ** , const char * __restrict , ...) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) int vasprintf(char ** , const char * __restrict , __va_list ) __attribute__((__nonnull__(2))); + +#pragma __printf_args +extern __declspec(__nothrow) int __ARM_asprintf(char ** , const char * __restrict , ...) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) int __ARM_vasprintf(char ** , const char * __restrict , __va_list ) __attribute__((__nonnull__(2))); + + + + + + + + + + + +extern __declspec(__nothrow) int fgetc(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + + + +extern __declspec(__nothrow) char *fgets(char * __restrict , int , + FILE * __restrict ) __attribute__((__nonnull__(1,3))); + + + + + + + + + + + + +extern __declspec(__nothrow) int fputc(int , FILE * ) __attribute__((__nonnull__(2))); + + + + + + + + + +extern __declspec(__nothrow) int fputs(const char * __restrict , FILE * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) int getc(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + extern __declspec(__nothrow) int (getchar)(void); + + + + + + + + +extern __declspec(__nothrow) char *gets(char * ) __attribute__((__nonnull__(1))); + + + + + + + + + + + +extern __declspec(__nothrow) int putc(int , FILE * ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + extern __declspec(__nothrow) int (putchar)(int ); + + + + + + +extern __declspec(__nothrow) int puts(const char * ) __attribute__((__nonnull__(1))); + + + + + + + +extern __declspec(__nothrow) int ungetc(int , FILE * ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t fread(void * __restrict , + size_t , size_t , FILE * __restrict ) __attribute__((__nonnull__(1,4))); + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t __fread_bytes_avail(void * __restrict , + size_t , FILE * __restrict ) __attribute__((__nonnull__(1,3))); + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t fwrite(const void * __restrict , + size_t , size_t , FILE * __restrict ) __attribute__((__nonnull__(1,4))); + + + + + + + + + + +extern __declspec(__nothrow) int fgetpos(FILE * __restrict , fpos_t * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +extern __declspec(__nothrow) int fseek(FILE * , long int , int ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int fsetpos(FILE * __restrict , const fpos_t * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + +extern __declspec(__nothrow) long int ftell(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + +extern __declspec(__nothrow) void rewind(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + + +extern __declspec(__nothrow) void clearerr(FILE * ) __attribute__((__nonnull__(1))); + + + + + + + +extern __declspec(__nothrow) int feof(FILE * ) __attribute__((__nonnull__(1))); + + + + +extern __declspec(__nothrow) int ferror(FILE * ) __attribute__((__nonnull__(1))); + + + + +extern __declspec(__nothrow) void perror(const char * ); + + + + + + + + + + + + +extern __declspec(__nothrow) int _fisatty(FILE * ) __attribute__((__nonnull__(1))); + + + +extern __declspec(__nothrow) void __use_no_semihosting_swi(void); +extern __declspec(__nothrow) void __use_no_semihosting(void); + + + + + + + + + + + + + + + + + + +# 1021 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdio.h" + + + + + +# 2 "..\\..\\src\\app\\main.c" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 38 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + typedef unsigned int size_t; +# 54 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + +extern __declspec(__nothrow) void *memcpy(void * __restrict , + const void * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) void *memmove(void * , + const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +extern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +# 193 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + + + + + +# 209 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + +extern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +# 232 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + +# 247 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + + +extern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +# 270 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + +extern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) char *strerror(int ); + + + + + + + +extern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 502 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + +# 3 "..\\..\\src\\app\\main.c" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 54 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + + + typedef unsigned int size_t; +# 70 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + + + + + + + typedef unsigned short wchar_t; +# 91 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + +typedef struct div_t { int quot, rem; } div_t; + +typedef struct ldiv_t { long int quot, rem; } ldiv_t; + + +typedef struct lldiv_t { long long quot, rem; } lldiv_t; + + + +# 112 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + + + + + + + + +# 131 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + +extern __declspec(__nothrow) int __aeabi_MB_CUR_MAX(void); + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double atof(const char * ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) int atoi(const char * ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) long int atol(const char * ) __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) long long atoll(const char * ) __attribute__((__nonnull__(1))); + + + + + + + +extern __declspec(__nothrow) double strtod(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) float strtof(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); +extern __declspec(__nothrow) long double strtold(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); + + + + +extern __declspec(__nothrow) long int strtol(const char * __restrict , + char ** __restrict , int ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) unsigned long int strtoul(const char * __restrict , + char ** __restrict , int ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) long long strtoll(const char * __restrict , + char ** __restrict , int ) + __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) unsigned long long strtoull(const char * __restrict , + char ** __restrict , int ) + __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) int rand(void); + + + + + + + + + +extern __declspec(__nothrow) void srand(unsigned int ); + + + + + + + + + +struct _rand_state { int __x[57]; }; +extern __declspec(__nothrow) int _rand_r(struct _rand_state *); +extern __declspec(__nothrow) void _srand_r(struct _rand_state *, unsigned int); +struct _ANSI_rand_state { int __x[1]; }; +extern __declspec(__nothrow) int _ANSI_rand_r(struct _ANSI_rand_state *); +extern __declspec(__nothrow) void _ANSI_srand_r(struct _ANSI_rand_state *, unsigned int); + + + + + +extern __declspec(__nothrow) void *calloc(size_t , size_t ); + + + + + +extern __declspec(__nothrow) void free(void * ); + + + + + + + +extern __declspec(__nothrow) void *malloc(size_t ); + + + + + +extern __declspec(__nothrow) void *realloc(void * , size_t ); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int posix_memalign(void ** , size_t , size_t ); + + + + + + + + + + + + +typedef int (*__heapprt)(void *, char const *, ...); +extern __declspec(__nothrow) void __heapstats(int (* )(void * , + char const * , ...), + void * ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + +extern __declspec(__nothrow) int __heapvalid(int (* )(void * , + char const * , ...), + void * , int ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) __declspec(__noreturn) void abort(void); + + + + + + + + + + +extern __declspec(__nothrow) int atexit(void (* )(void)) __attribute__((__nonnull__(1))); + + + + + + +# 436 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + +extern __declspec(__nothrow) __declspec(__noreturn) void exit(int ); + + + + + + + + + + + + + + + +extern __declspec(__nothrow) __declspec(__noreturn) void _Exit(int ); + + + + + + + + + + +extern __declspec(__nothrow) char *getenv(const char * ) __attribute__((__nonnull__(1))); + + + + + + + + + + + + +extern __declspec(__nothrow) int system(const char * ); + + + + + + + + + + + + +extern void *bsearch(const void * , const void * , + size_t , size_t , + int (* )(const void *, const void *)) __attribute__((__nonnull__(1,2,5))); + + + + + + + + + + + + + + +# 524 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + +extern void qsort(void * , size_t , size_t , + int (* )(const void *, const void *)) __attribute__((__nonnull__(1,4))); + + + + + + + + + + + + +# 553 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + +extern __declspec(__nothrow) __attribute__((const)) int abs(int ); + + + + + + +extern __declspec(__nothrow) __attribute__((const)) div_t div(int , int ); + + + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) long int labs(long int ); + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) ldiv_t ldiv(long int , long int ); + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) long long llabs(long long ); + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) lldiv_t lldiv(long long , long long ); + + + + + + + + + + + + + +# 634 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + +typedef struct __sdiv32by16 { int quot, rem; } __sdiv32by16; +typedef struct __udiv32by16 { unsigned int quot, rem; } __udiv32by16; + +typedef struct __sdiv64by32 { int rem, quot; } __sdiv64by32; + +__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __sdiv32by16 __rt_sdiv32by16( + int , + short int ); + + + +__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __udiv32by16 __rt_udiv32by16( + unsigned int , + unsigned short ); + + + +__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __sdiv64by32 __rt_sdiv64by32( + int , unsigned int , + int ); + + + + + + + + +extern __declspec(__nothrow) unsigned int __fp_status(unsigned int , unsigned int ); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int mblen(const char * , size_t ); + + + + + + + + + + + + + + +extern __declspec(__nothrow) int mbtowc(wchar_t * __restrict , + const char * __restrict , size_t ); + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int wctomb(char * , wchar_t ); + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t mbstowcs(wchar_t * __restrict , + const char * __restrict , size_t ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t wcstombs(char * __restrict , + const wchar_t * __restrict , size_t ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void __use_realtime_heap(void); +extern __declspec(__nothrow) void __use_realtime_division(void); +extern __declspec(__nothrow) void __use_two_region_memory(void); +extern __declspec(__nothrow) void __use_no_heap(void); +extern __declspec(__nothrow) void __use_no_heap_region(void); + +extern __declspec(__nothrow) char const *__C_library_version_string(void); +extern __declspec(__nothrow) int __C_library_version_number(void); + + + + + + + + + + + +# 892 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdlib.h" + + + + + + +# 4 "..\\..\\src\\app\\main.c" +# 1 "..\\..\\src\\app\\test_cfg_global.h" + + + + + + + + + + + + + + + + + + + +# 31 "..\\..\\src\\app\\test_cfg_global.h" + + + + +# 1 "..\\..\\src\\app\\P8P\\p8p_demo.h" + + + + + + + + + + + + + + + + + + +void google_p8p_demo(void); + +# 37 "..\\..\\src\\app\\test_cfg_global.h" + + + +# 5 "..\\..\\src\\app\\main.c" +# 1 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + +# 46 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + +typedef signed char int8_t; +typedef signed short int int16_t; +typedef signed int int32_t; +typedef signed __int64 int64_t; + + +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned __int64 uint64_t; + + + + + +typedef signed char int_least8_t; +typedef signed short int int_least16_t; +typedef signed int int_least32_t; +typedef signed __int64 int_least64_t; + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; +typedef unsigned __int64 uint_least64_t; + + + + +typedef signed int int_fast8_t; +typedef signed int int_fast16_t; +typedef signed int int_fast32_t; +typedef signed __int64 int_fast64_t; + + +typedef unsigned int uint_fast8_t; +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +typedef unsigned __int64 uint_fast64_t; + + + + + + +typedef signed int intptr_t; +typedef unsigned int uintptr_t; + + + +typedef signed long long intmax_t; +typedef unsigned long long uintmax_t; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 216 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 241 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 305 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + +# 18 "..\\..\\src\\common\\tau_log.h" +# 19 "..\\..\\src\\common\\tau_log.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + +# 57 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + typedef struct __va_list { void *__ap; } va_list; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typedef va_list __gnuc_va_list; + + + + + + +# 147 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + +# 20 "..\\..\\src\\common\\tau_log.h" +# 1 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum IRQn +{ + + NonMaskableInt_IRQn = -14, + HardFault_IRQn = -13, + SVCall_IRQn = -5, + PendSV_IRQn = -2, + SysTick_IRQn = -1, + + + VIDC_IRQn = 0, + LCDC_IRQn = 1, + MIPI_RX_IRQn = 2, + MIPI_TX_IRQn = 3, + MEMC_IRQn = 4, + VPRE_IRQn = 5, + FLSCTRL_IRQn = 6, + DMA_IRQn = 7, + TIMER0_IRQn = 8, + TIMER1_IRQn = 9, + TIMER2_IRQn = 10, + TIMER3_IRQn = 11, + WDG_IRQn = 12, + UART_IRQn = 13, + I2C0_IRQn = 14, + I2C1_IRQn = 15, + SPIS_IRQn = 16, + SPIM_IRQn = 17, + VPRE1_IRQn = 18, + I2C2_IRQn = 19, + OTP_IRQn = 20, + SWIRE_IRQn = 21, + PVD_IRQn = 22, + AP_NRESET_IRQn = 23, + EXTI_INT0_IRQn = 24, + EXTI_INT1_IRQn = 25, + EXTI_INT2_IRQn = 26, + EXTI_INT3_IRQn = 27, + EXTI_INT4_IRQn = 28, + EXTI_INT5_IRQn = 29, + EXTI_INT6_IRQn = 30, + EXTI_INT7_IRQn = 31 + +} IRQn_Type; + + + + + + + + +#pragma push +#pragma anon_unions +# 107 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_version.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 64 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + +# 114 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 29 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 107 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __asm("control"); + return(__regControl); +} + + + + + + + +static __inline void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __asm("control"); + __regControl = control; +} + + + + + + + +static __inline uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __asm("ipsr"); + return(__regIPSR); +} + + + + + + + +static __inline uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __asm("apsr"); + return(__regAPSR); +} + + + + + + + +static __inline uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __asm("xpsr"); + return(__regXPSR); +} + + + + + + + +static __inline uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + return(__regProcessStackPointer); +} + + + + + + + +static __inline void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + __regProcessStackPointer = topOfProcStack; +} + + + + + + + +static __inline uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __asm("msp"); + return(__regMainStackPointer); +} + + + + + + + +static __inline void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __asm("msp"); + __regMainStackPointer = topOfMainStack; +} + + + + + + + +static __inline uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __asm("primask"); + return(__regPriMask); +} + + + + + + + +static __inline void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __asm("primask"); + __regPriMask = (priMask); +} + + +# 342 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + +static __inline uint32_t __get_FPSCR(void) +{ + + + + + + return(0U); + +} + + + + + + + +static __inline void __set_FPSCR(uint32_t fpscr) +{ + + + + + + (void)fpscr; + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} + + + + + + + + + + +__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U * 8U) - 1U; + + result = value; + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; + return result; +} + + + + + + + + + + + + +# 732 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + +__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + + + + + + + + + + + + + +# 866 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + +# 268 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 116 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + +# 150 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + +# 166 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:28; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} APSR_Type; + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:23; + } b; + uint32_t w; +} IPSR_Type; + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:15; + uint32_t T:1; + uint32_t _reserved1:3; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} xPSR_Type; + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:1; + uint32_t SPSEL:1; + uint32_t _reserved1:30; + } b; + uint32_t w; +} CONTROL_Type; + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t ISER[1U]; + uint32_t RESERVED0[31U]; + volatile uint32_t ICER[1U]; + uint32_t RESERVED1[31U]; + volatile uint32_t ISPR[1U]; + uint32_t RESERVED2[31U]; + volatile uint32_t ICPR[1U]; + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + volatile uint32_t IP[8U]; +} NVIC_Type; + + + + + + + + + + + + + + +typedef struct +{ + volatile const uint32_t CPUID; + volatile uint32_t ICSR; + uint32_t RESERVED0; + volatile uint32_t AIRCR; + volatile uint32_t SCR; + volatile uint32_t CCR; + uint32_t RESERVED1; + volatile uint32_t SHP[2U]; + volatile uint32_t SHCSR; +} SCB_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t CTRL; + volatile uint32_t LOAD; + volatile uint32_t VAL; + volatile const uint32_t CALIB; +} SysTick_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 583 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + +# 598 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + +static __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + + +static __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } + else + { + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } +} + + + + + + + + + + + +static __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } + else + { + return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } +} + + + + + + + + + + + + + +static __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + + + + + + + + + + + + +static __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + + + + + + + + + + +static __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = 0x0U; + (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = 0x0U; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +} + + + + + + +__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +{ + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | + (1UL << 2U)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + for(;;) + { + __nop(); + } +} + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SCB_GetFPUType(void) +{ + return 0U; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > (0xFFFFFFUL )) + { + return (1UL); + } + + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); + __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | + (1UL << 1U) | + (1UL ); + return (0UL); +} + + + + + + + + + + + + + + +# 122 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\Device\\ARM\\ARMCM0\\Include\\system_ARMCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern uint32_t SystemCoreClock; + + + + + + + +extern void SystemInit (void); + + + + + + + +extern void SystemCoreClockUpdate (void); + + + + + +# 123 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +#pragma pop +# 142 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +# 167 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + +# 179 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + +# 21 "..\\..\\src\\common\\tau_log.h" + + + + +# 31 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + kLOG_LEVEL_DBG = 0, + kLOG_LEVEL_INF, + kLOG_LEVEL_ERR, + kLOG_LEVEL_NONE +} log_level_e; + + + + + +typedef enum +{ + LOG_PORT_UART0, + LOG_PORT_UART1, + LOG_PORT_SWD, + LOG_PORT_UNKNOWN +} log_port_e; + + + + + + + + + + + + + + +void tau_log_init(uint32_t baud_rate, log_port_e log_port); + + + + + + + +void tau_log_printf(log_level_e log_lv, const char *fmt, ...); + +# 6 "..\\..\\src\\app\\main.c" +# 1 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + + + + +# 1 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + +# 18 "..\\..\\src\\common\\tau_common.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 61 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 75 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 112 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); + + + + + + + +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +{ + return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +{ + return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +{ + unsigned __f = __ARM_fcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +{ + unsigned __f = __ARM_dcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} + + + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +{ + return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +{ + unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); + return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +{ + unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; + return (__xe != 0xff) && (__xe != 0); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +{ + unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; + return (__xe != 0x7ff) && (__xe != 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +{ + return (*(unsigned *)&(__x)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +{ + return (*(1 + (unsigned *)&(__x))) >> 31; +} + + + + + + + + + + +# 230 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + typedef float float_t; + typedef double double_t; +# 251 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + +extern const int math_errhandling; +# 261 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +extern __declspec(__nothrow) double acos(double ); + + + +extern __declspec(__nothrow) double asin(double ); + + + + + +extern __declspec(__nothrow) __attribute__((const)) double atan(double ); + + + +extern __declspec(__nothrow) double atan2(double , double ); + + + + + +extern __declspec(__nothrow) double cos(double ); + + + + +extern __declspec(__nothrow) double sin(double ); + + + + + +extern void __use_accurate_range_reduction(void); + + + +extern __declspec(__nothrow) double tan(double ); + + + + + +extern __declspec(__nothrow) double cosh(double ); + + + + +extern __declspec(__nothrow) double sinh(double ); + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double tanh(double ); + + + +extern __declspec(__nothrow) double exp(double ); + + + + + + +extern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); + + + + + + + +extern __declspec(__nothrow) double ldexp(double , int ); + + + + +extern __declspec(__nothrow) double log(double ); + + + + + +extern __declspec(__nothrow) double log10(double ); + + + +extern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); + + + + + +extern __declspec(__nothrow) double pow(double , double ); + + + + + + +extern __declspec(__nothrow) double sqrt(double ); + + + + + + + + static __inline double _sqrt(double __x) { return sqrt(__x); } + + + + + static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double ceil(double ); + + +extern __declspec(__nothrow) __attribute__((const)) double fabs(double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double floor(double ); + + + +extern __declspec(__nothrow) double fmod(double , double ); + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double acosh(double ); + + + +extern __declspec(__nothrow) double asinh(double ); + + + +extern __declspec(__nothrow) double atanh(double ); + + + +extern __declspec(__nothrow) double cbrt(double ); + + + +static __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) + + + +{ + (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); + return __x; +} +static __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) + + + +{ + (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); + return __x; +} +extern __declspec(__nothrow) double erf(double ); + + + +extern __declspec(__nothrow) double erfc(double ); + + + +extern __declspec(__nothrow) double expm1(double ); + + + + + + + + + + + + + + + +# 479 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + +extern __declspec(__nothrow) double hypot(double , double ); + + + + + + +extern __declspec(__nothrow) int ilogb(double ); + + + +extern __declspec(__nothrow) int ilogbf(float ); + + + +extern __declspec(__nothrow) int ilogbl(long double ); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double lgamma (double ); + + + + +extern __declspec(__nothrow) double log1p(double ); + + + +extern __declspec(__nothrow) double logb(double ); + + + +extern __declspec(__nothrow) float logbf(float ); + + + +extern __declspec(__nothrow) long double logbl(long double ); + + + +extern __declspec(__nothrow) double nextafter(double , double ); + + + + +extern __declspec(__nothrow) float nextafterf(float , float ); + + + + +extern __declspec(__nothrow) long double nextafterl(long double , long double ); + + + + +extern __declspec(__nothrow) double nexttoward(double , long double ); + + + + +extern __declspec(__nothrow) float nexttowardf(float , long double ); + + + + +extern __declspec(__nothrow) long double nexttowardl(long double , long double ); + + + + +extern __declspec(__nothrow) double remainder(double , double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double rint(double ); + + + +extern __declspec(__nothrow) double scalbln(double , long int ); + + + +extern __declspec(__nothrow) float scalblnf(float , long int ); + + + +extern __declspec(__nothrow) long double scalblnl(long double , long int ); + + + +extern __declspec(__nothrow) double scalbn(double , int ); + + + +extern __declspec(__nothrow) float scalbnf(float , int ); + + + +extern __declspec(__nothrow) long double scalbnl(long double , int ); + + + + + + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +static __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +extern __declspec(__nothrow) float sinf(float ); +extern __declspec(__nothrow) float cosf(float ); +extern __declspec(__nothrow) float tanf(float ); +extern __declspec(__nothrow) float acosf(float ); +extern __declspec(__nothrow) float asinf(float ); +extern __declspec(__nothrow) float atanf(float ); +extern __declspec(__nothrow) float atan2f(float , float ); +extern __declspec(__nothrow) float sinhf(float ); +extern __declspec(__nothrow) float coshf(float ); +extern __declspec(__nothrow) float tanhf(float ); +extern __declspec(__nothrow) float expf(float ); +extern __declspec(__nothrow) float logf(float ); +extern __declspec(__nothrow) float log10f(float ); +extern __declspec(__nothrow) float powf(float , float ); +extern __declspec(__nothrow) float sqrtf(float ); +extern __declspec(__nothrow) float ldexpf(float , int ); +extern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +extern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +extern __declspec(__nothrow) float fmodf(float , float ); +extern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +__declspec(__nothrow) long double acosl(long double ); +__declspec(__nothrow) long double asinl(long double ); +__declspec(__nothrow) long double atanl(long double ); +__declspec(__nothrow) long double atan2l(long double , long double ); +__declspec(__nothrow) long double ceill(long double ); +__declspec(__nothrow) long double cosl(long double ); +__declspec(__nothrow) long double coshl(long double ); +__declspec(__nothrow) long double expl(long double ); +__declspec(__nothrow) long double fabsl(long double ); +__declspec(__nothrow) long double floorl(long double ); +__declspec(__nothrow) long double fmodl(long double , long double ); +__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double ldexpl(long double , int ); +__declspec(__nothrow) long double logl(long double ); +__declspec(__nothrow) long double log10l(long double ); +__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double powl(long double , long double ); +__declspec(__nothrow) long double sinl(long double ); +__declspec(__nothrow) long double sinhl(long double ); +__declspec(__nothrow) long double sqrtl(long double ); +__declspec(__nothrow) long double tanl(long double ); +__declspec(__nothrow) long double tanhl(long double ); + + + + + + +extern __declspec(__nothrow) float acoshf(float ); +__declspec(__nothrow) long double acoshl(long double ); +extern __declspec(__nothrow) float asinhf(float ); +__declspec(__nothrow) long double asinhl(long double ); +extern __declspec(__nothrow) float atanhf(float ); +__declspec(__nothrow) long double atanhl(long double ); +__declspec(__nothrow) long double copysignl(long double , long double ); +extern __declspec(__nothrow) float cbrtf(float ); +__declspec(__nothrow) long double cbrtl(long double ); +extern __declspec(__nothrow) float erff(float ); +__declspec(__nothrow) long double erfl(long double ); +extern __declspec(__nothrow) float erfcf(float ); +__declspec(__nothrow) long double erfcl(long double ); +extern __declspec(__nothrow) float expm1f(float ); +__declspec(__nothrow) long double expm1l(long double ); +extern __declspec(__nothrow) float log1pf(float ); +__declspec(__nothrow) long double log1pl(long double ); +extern __declspec(__nothrow) float hypotf(float , float ); +__declspec(__nothrow) long double hypotl(long double , long double ); +extern __declspec(__nothrow) float lgammaf(float ); +__declspec(__nothrow) long double lgammal(long double ); +extern __declspec(__nothrow) float remainderf(float , float ); +__declspec(__nothrow) long double remainderl(long double , long double ); +extern __declspec(__nothrow) float rintf(float ); +__declspec(__nothrow) long double rintl(long double ); + + + + + + + +extern __declspec(__nothrow) double exp2(double ); +extern __declspec(__nothrow) float exp2f(float ); +__declspec(__nothrow) long double exp2l(long double ); +extern __declspec(__nothrow) double fdim(double , double ); +extern __declspec(__nothrow) float fdimf(float , float ); +__declspec(__nothrow) long double fdiml(long double , long double ); +# 803 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) double fma(double , double , double ); +extern __declspec(__nothrow) float fmaf(float , float , float ); + +static __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } + + +extern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +__declspec(__nothrow) long double fmaxl(long double , long double ); +extern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +__declspec(__nothrow) long double fminl(long double , long double ); +extern __declspec(__nothrow) double log2(double ); +extern __declspec(__nothrow) float log2f(float ); +__declspec(__nothrow) long double log2l(long double ); +extern __declspec(__nothrow) long lrint(double ); +extern __declspec(__nothrow) long lrintf(float ); + +static __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } + + +extern __declspec(__nothrow) long long llrint(double ); +extern __declspec(__nothrow) long long llrintf(float ); + +static __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } + + +extern __declspec(__nothrow) long lround(double ); +extern __declspec(__nothrow) long lroundf(float ); + +static __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } + + +extern __declspec(__nothrow) long long llround(double ); +extern __declspec(__nothrow) long long llroundf(float ); + +static __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } + + +extern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +extern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); + +static __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +# 856 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +extern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +__declspec(__nothrow) long double nearbyintl(long double ); +extern double remquo(double , double , int * ); +extern float remquof(float , float , int * ); + +static __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } + + +extern __declspec(__nothrow) __attribute__((const)) double round(double ); +extern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +__declspec(__nothrow) long double roundl(long double ); +extern __declspec(__nothrow) double tgamma(double ); +extern __declspec(__nothrow) float tgammaf(float ); +__declspec(__nothrow) long double tgammal(long double ); +extern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +extern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +__declspec(__nothrow) long double truncl(long double ); + + + + + + +# 896 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 1087 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + +# 1317 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + +# 19 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 75 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef uint32_t status_t; + + +typedef void (*fcb_type)(void *data); + +typedef void (*uart_trans_cb)(status_t status, void *user_data); + +typedef void (*flash_trans_cb)(status_t status, void *user_data); +# 16 "..\\..\\src\\sdk\\include\\hal_system.h" +# 1 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + + + + + + + + + +# 1 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + + + + +# 20 "..\\..\\src\\common\\tau_device_datatype.h" +# 21 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + +enum _status_groups +{ + STATUS_GROUP_GENERIC = 0, + STATUS_GROUP_I2C = 1, + STATUS_GROUP_UART = 2, + STATUS_GROUP_SPI = 3, + STATUS_GROUP_TIMER = 4, +}; + + +enum _generic_status +{ + STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), + STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), + STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), + STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), + STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), + STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), + STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +}; + + + + + +typedef enum +{ + STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), + STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), + STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), + STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), + STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), + STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), + STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), + STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), + STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), + STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), + STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +} uart_status_e; + + + + +typedef enum +{ + STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), + STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), + STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +} timer_status_e; + + + + +typedef enum +{ + DETECT_HIGH_LVL = 0, + DETECT_LOW_LVL, + DETECT_RISING_EDGE, + DETECT_FALLING_EDGE, + DETECT_DOUBLE_EDGE +} sys_cfg_trigger_e; + + + + +typedef enum +{ + TIMER_NUM0 = 0, + TIMER_NUM1, + TIMER_NUM2, + TIMER_NUM3, + TIMER_NUM_MAX +} timer_num_e; + + + + +typedef enum +{ + GPIO_INT_EXTI_INT0 = 0, + GPIO_INT_EXTI_INT1, + GPIO_INT_EXTI_INT2, + GPIO_INT_EXTI_INT3, + GPIO_INT_EXTI_INT4, + GPIO_INT_EXTI_INT5, + GPIO_INT_EXTI_INT6, + GPIO_INT_EXTI_INT7, + GPIO_INT_MAX +} gpio_int_e; + + +typedef enum _pwm_int_type +{ + PWM_INT_HIGH_OVERFLOW = 0, + PWM_INT_LOW_OVERFLOW, + PWM_INT_TOTAL_OVERFLOW, + PWM_INT_HIGH_DONE, + PWM_INT_LOW_DONE, + PWM_INT_TOTAL_DONE, + PWM_INT_MAX +} pwm_int_type_e; + + + + +typedef enum +{ + I2C_SELECT_0 = 0, + I2C_SELECT_1, +} i2c_select_e; + + + + + +typedef enum _i2c_rate +{ + I2C_RATE_STANDARD = 1, + I2C_RATE_FAST, + I2C_RATE_HIGH, +} i2c_rate_e; + + + + + +typedef enum +{ + I2C_INDEX_0, + I2C_INDEX_1, + I2C_INDEX_2, + I2C_INDEX_MAX +} i2c_index_e; + + + + + +typedef enum +{ + AHB_DMA_CH0, + AHB_DMA_CH1, + AHB_DMA_CH2, + AHB_DMA_CH3, + AHB_DMA_CH4, + AHB_DMA_CH5, + AHB_DMA_CH6, + AHB_DMA_CH7, + AHB_DMA_CH_NUM +} dma_channel_type_e; + + + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} function_state_e; + + + + +typedef enum +{ + CRC_REV_NO_TRANSPOSE = 0, + CRC_REV_ONLY_BITS_TRANSPOSE, + CRC_REV_BOTH_TRANSPOSE, + CRC_REV_ONLY_BYTES_TRANSPOSE, +} crc_reversal_type_e; + + + + +typedef enum +{ + CRC_FXOR_DISABLE = 0, + CRC_FXOR_ENABLE, +} crc_fxor_function_e; + + + + +typedef enum +{ + CRC_16_BIT_PROTOCOL = 0, + CRC_32_BIT_PROTOCOL, +} crc_protocol_type_e; + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_gpio.h" +# 18 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + +typedef enum +{ + + IO_PAD_GPIO0 = 0, + IO_PAD_GPIO1, + IO_PAD_GPIO2, + IO_PAD_GPIO3, + IO_PAD_GPIO4, + IO_PAD_GPIO5, + IO_PAD_GPIO6, + IO_PAD_GPIO7, + IO_PAD_GPIO8, + IO_PAD_GPIO9, + IO_PAD_GPIO10, + IO_PAD_GPIO11, + IO_PAD_GPIO12, + IO_PAD_GPIO13, + IO_PAD_GPIO14, + IO_PAD_GPIO15, + IO_PAD_GPIO16, + IO_PAD_GPIO17, + IO_PAD_GPIO18, + IO_PAD_GPIO19, + IO_PAD_GPIO20, + IO_PAD_GPIO21, + IO_PAD_GPIO22, + IO_PAD_GPIO23, + IO_PAD_GPIO24, + IO_PAD_GPIO25, + + + IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, + IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, + IO_PAD_AP_INT = IO_PAD_GPIO2, + IO_PAD_AP_TE = IO_PAD_GPIO3, + IO_PAD_AP_SWIRE = IO_PAD_GPIO4, + IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, + IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, + IO_PAD_TD_RSTN = IO_PAD_GPIO7, + IO_PAD_AP_PWMEN = IO_PAD_GPIO8, + IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, + IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, + IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, + IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, + IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, + IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, + IO_PAD_SWD_CLK = IO_PAD_GPIO15, + IO_PAD_SWD_DIO = IO_PAD_GPIO16, + IO_PAD_AP_RSTN = IO_PAD_GPIO17, + IO_PAD_UART0_TX = IO_PAD_GPIO18, + IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, + IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, + IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, + IO_PAD_TD_INT = IO_PAD_GPIO22, + IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, + IO_PAD_UART1_TX = IO_PAD_GPIO24, + IO_PAD_UART0_RX = IO_PAD_GPIO25, + + IO_PAD_MAX, + + + + IO_PIN_1 = IO_PAD_SWD_CLK, + IO_PIN_2 = IO_PAD_UART0_TX, + IO_PIN_3 = IO_PAD_SWD_DIO, + IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, + IO_PIN_5 = IO_PAD_TD_SPIM_CLK, + IO_PIN_6 = IO_PAD_TD_SPIM_CSN, + IO_PIN_7 = IO_PAD_TD_SPIM_MISO, + IO_PIN_8 = IO_PAD_TD_RSTN, + IO_PIN_9 = IO_PAD_TD_FC_CSN, + IO_PIN_10 = IO_PAD_TD_FC_CLK, + IO_PIN_11 = IO_PAD_TD_FC_IO0, + IO_PIN_12 = IO_PAD_TD_FC_IO1, + IO_PIN_13 = IO_PAD_TD_TP_RESX, + IO_PIN_14 = IO_PAD_UART1_TX, + IO_PIN_15 = IO_PAD_AP_SWIRE, + IO_PIN_16 = IO_PAD_AP_INT, + IO_PIN_17 = IO_PAD_AP_PWMEN, + IO_PIN_18 = IO_PAD_AP_TPRSTN, + + IO_PIN_29 = IO_PAD_AP_TE, + IO_PIN_30 = IO_PAD_AP_SPIS_MISO, + IO_PIN_31 = IO_PAD_AP_SPIS_CSN, + IO_PIN_32 = IO_PAD_AP_SPIS_CLK, + IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, + IO_PIN_34 = IO_PAD_AP_RSTN, + IO_PIN_35 = IO_PAD_TD_INT, + IO_PIN_36 = IO_PAD_UART0_RX, + +} io_pad_e; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + PIN1_MODE_SWDCLK = 0, + PIN1_MODE_GPIO15 = 2, +} pin1_mode_e; + + + + + +typedef enum +{ + PIN2_MODE_UART0_TX = 0, + PIN2_MODE_PWMO = 1, + PIN2_MODE_GPIO18 = 2, + PIN2_MODE_PWMI = 3, + PIN2_MODE_TEAR1 = 4, +} pin2_mode_e; + + + + +typedef enum +{ + PIN3_MODE_SWDIO = 0, + PIN3_MODE_GPIO16 = 2, +} pin3_mode_e; + + + + + +typedef enum +{ + PIN4_MODE_SPIM_MOSI = 0, + PIN4_MODE_I2C02_SDA = 1, + PIN4_MODE_GPIO6 = 2, + PIN4_MODE_UART0_TX = 3, +} pin4_mode_e; + + + + +typedef enum +{ + PIN5_MODE_SPIM_SCLK = 0, + PIN5_MODE_I2C1_SCL = 1, + PIN5_MODE_GPIO19 = 2, +} pin5_mode_e; + + + + +typedef enum +{ + PIN6_MODE_SPIM_CSN = 0, + PIN6_MODE_I2C1_SDA = 1, + PIN6_MODE_GPIO20 = 2, +} pin6_mode_e; + + + + +typedef enum +{ + PIN7_MODE_SPIM_MISO = 0, + PIN7_MODE_I2C02_SCL = 1, + PIN7_MODE_GPIO5 = 2, +} pin7_mode_e; + + + + +typedef enum +{ + PIN8_MODE_GPIO7 = 2, + PIN8_MODE_I2C02_SDA = 3, +} pin8_mode_e; + + + + +typedef enum +{ + PIN9_MODE_TSPIS_CSN = 0, + PIN9_MODE_GPIO12 = 2, +} pin9_mode_e; + + + + +typedef enum +{ + PIN10_MODE_TSPIS_CLK = 0, + PIN10_MODE_GPIO11 = 2, +} pin10_mode_e; + + + + + +typedef enum +{ + PIN11_MODE_TSPIS_IO0 = 0, + PIN11_MODE_GPIO13 = 2, + PIN11_MODE_I2C02_SDA = 3, +} pin11_mode_e; + + + + +typedef enum +{ + PIN12_MODE_TSPIS_IO1 = 0, + PIN12_MODE_GPIO14 = 2, + PIN12_MODE_I2C02_SCL = 3, +} pin12_mode_e; + + + + +typedef enum +{ + PIN13_MODE_GPIO23 = 2, + PIN13_MODE_PWMO = 3, + PIN13_MODE_UART1_RX = 4, +} pin13_mode_e; + + + + +typedef enum +{ + PIN14_MODE_GPIO24 = 2, + PIN14_MODE_UART0_RX = 3, + PIN14_MODE_UART1_TX = 4, +} pin14_mode_e; + + + + + + +typedef enum +{ + PIN15_MODE_SWIRE = 0, + PIN15_MODE_PWMO = 1, + PIN15_MODE_GPIO4 = 2, +} pin15_mode_e; + + + + +typedef enum +{ + PIN16_MODE_GPIO2 = 2, +} pin16_mode_e; + + + + +typedef enum +{ + PIN17_MODE_UART0_RX = 1, + PIN17_MODE_GPIO8 = 2, + PIN17_MODE_PWMO = 3, +} pin17_mode_e; + + + + +typedef enum +{ + PIN18_MODE_UART0_RX = 0, + PIN18_MODE_GPIO21 = 2, + PIN18_MODE_I2C02_SCL = 3, +} pin18_mode_e; + + + + + + + +typedef enum +{ + PIN29_MODE_JTAG_TRSTN = 0, + PIN29_MODE_TEAR = 1, + PIN29_MODE_GPIO3 = 2, +} pin29_mode_e; + + + + + +typedef enum +{ + PIN30_MODE_JTAG_TDO = 0, + PIN30_MODE_SPIS_MISO = 1, + PIN30_MODE_GPIO0 = 2, + PIN30_MODE_UART0_RX = 3, + PIN30_MODE_I2C1_SCL = 6, +} pin30_mode_e; + + + + +typedef enum +{ + PIN31_MODE_JTAG_TMS = 0, + PIN31_MODE_SPIS_CSN = 1, + PIN31_MODE_GPIO10 = 2, + PIN31_MODE_I2C02_SDA = 3, +} pin31_mode_e; + + + + +typedef enum +{ + PIN32_MODE_JTAG_TCK = 0, + PIN32_MODE_SPIS_SCLK = 1, + PIN32_MODE_GPIO9 = 2, + PIN32_MODE_I2C02_SCL = 3, +} pin32_mode_e; + + + + +typedef enum +{ + PIN33_MODE_JTAG_TDI = 0, + PIN33_MODE_SPIS_MOSI = 1, + PIN33_MODE_GPIO1 = 2, + PIN33_MODE_UART0_TX = 3, + PIN33_MODE_I2C1_SDA_0 = 6, +} pin33_mode_e; + + + + +typedef enum +{ + PIN34_MODE_GPIO17 = 2, +} pin34_mode_e; + + + + + +typedef enum +{ + PIN35_MODE_GPIO22 = 2, +} pin35_mode_e; + + + + + +typedef enum +{ + PIN36_MODE_UART0_RX = 0, + PIN36_MODE_PWMO = 1, + PIN36_MODE_GPIO25 = 2, +} pin36_mode_e; + + + + + + + +typedef enum +{ + IO_MODE_INTER_FC_CLK = 0, + IO_MODE_TSPIS_CLK_EN = 2, +} pad_sfc_clk_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_CSN = 0, + IO_MODE_TSPIS_CSN_EN = 2, +} pad_sfc_csn_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO0 = 0, + IO_MODE_TSPIS_IO0_EN = 2, +} pad_sfc_io0_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO1 = 0, + IO_MODE_TSPIS_IO1_EN = 2, +} pad_sfc_io1_mode_e; + + + + +typedef enum +{ + IO_SLEW_RATE_SLOW = 0, + IO_SLEW_RATE_FAST = 1, +} pad_slew_rate_e; + + + + + + + +typedef enum +{ + IO_IOE_INPUT = 0, + IO_IOE_OUTPUT, + IO_IOE_NONE +} gpio_ioe_e; + + + + +typedef enum +{ + IO_LVL_LOW = 0, + IO_LVL_HIGH, + IO_LVL_NONE +} gpio_level_e; + + + + + + + +typedef struct +{ + io_pad_e pad; + uint8_t mode; + gpio_ioe_e ioe; + gpio_level_e lvl; +} io_pad_attr_t; + + + + + + + + + + + + + + +void hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); + + + + + + + + +void hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); + + + + + + + +void hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); + + + + + + +gpio_int_e hal_gpio_get_int_type(io_pad_e pad); + + + + + + + +void hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); + + + + + + + +void hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); + + + + + + +void hal_gpio_init_input(io_pad_e pad); + + + + + + +gpio_level_e hal_gpio_get_input_data(io_pad_e pad); + + + + + + + +void hal_gpio_set_mode(io_pad_e pad, uint8_t mode); + + + + + + +void hal_gpio_set_high_impedance(io_pad_e pad); + + + + + + + + +void hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); + + + + + + + + +void hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); + + + + + + + +void hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); + + + + + + + +void hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); + + + + + + + +void hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); + + + + + + + + +void hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); + + + + + + + +void hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); + +# 17 "..\\..\\src\\sdk\\include\\hal_system.h" +# 18 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + +typedef enum +{ + HAL_SYSCLK_80M = 80000000, + HAL_SYSCLK_100M = 100000000, + HAL_SYSCLK_150M = 150000000 +} hal_system_clk_e; + + + + + + + + + + + + + + +void hal_system_init(hal_system_clk_e sysclk); + + + + + + +void hal_system_idle_mode(_Bool disable_systick); + + + + + + +void hal_system_register_systick_cb(fcb_type cb_func); + + + + + + +_Bool hal_system_enable_systick(uint8_t ms); + + + + + + +_Bool hal_system_disable_systick(void); + + + + + + +uint32_t hal_system_get_tick(void); + + + + + + +void hal_system_reset_chip(void); + + + + + + +uint32_t hal_system_get_debug_state(void); + + + + + + +void hal_system_clear_debug_state(void); + + + + + + +_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); + +# 7 "..\\..\\src\\app\\main.c" +# 1 "..\\..\\src\\board\\board.h" + + + + + + + + + + + + + + + + + + +void board_Init(void); + +# 8 "..\\..\\src\\app\\main.c" +# 1 "..\\..\\src\\app\\module_demo\\module_demo_main.h" + + + + + + + + + +# 13 "..\\..\\src\\app\\module_demo\\module_demo_main.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void module_demo_main(void); + +# 9 "..\\..\\src\\app\\main.c" +int main() +{ + board_Init(); + + while (1) + { + + + + + + + google_p8p_demo(); + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "668 Demo\n", "tau_log", 23); } while (0); + while (1); + } +} diff --git a/project/WL668/Listings/main.lst b/project/WL668/Listings/main.lst new file mode 100644 index 0000000..f7c2d89 --- /dev/null +++ b/project/WL668/Listings/main.lst @@ -0,0 +1,8825 @@ +L 1 "..\..\src\app\main.c" +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h" 1 +N/* stdio.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.9 */ +N/* Copyright (C) Codemist Ltd., 1988-1993 */ +N/* Copyright 1991-1998 ARM Limited. All rights reserved. */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: sdouglas $ +N */ +N +N/* +N * stdio.h declares two types, several macros, and many functions for +N * performing input and output. For a discussion on Streams and Files +N * refer to sections 4.9.2 and 4.9.3 in the above ANSI draft, or to a +N * modern textbook on C. +N */ +N +N#ifndef __stdio_h +N#define __stdio_h +N#define __ARMCLIB_VERSION 5060037 +N +N/* +N * Depending on compiler version __int64 or __INT64_TYPE__ should be defined. +N */ +N#ifndef __int64 +N #ifdef __INT64_TYPE__ +S #define __int64 __INT64_TYPE__ +N #endif +N /* On some architectures neither of these may be defined - if so, fall +N through and error out if used. */ +N#endif +N +N +N#define _ARMABI __declspec(__nothrow) +N +N #ifndef __STDIO_DECLS +N #define __STDIO_DECLS +N +N #undef __CLIBNS +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS ::std:: +S extern "C" { +N #else /* ndef __cplusplus */ +N #define __CLIBNS +N #endif /* ndef __cplusplus */ +N +N#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || !defined(__size_t) +X#if 0L || !0L || !0L +N /* always defined in C++ and non-strict C for consistency of debug info */ +N #if __sizeof_ptr == 8 +X #if 4 == 8 +S typedef unsigned long size_t; /* see */ +N #else +N typedef unsigned int size_t; /* see */ +N #endif +N #if !defined(__cplusplus) && defined(__STRICT_ANSI__) +X #if !0L && 0L +S #define __size_t 1 +N #endif +N#endif +N +N#undef NULL +N#define NULL 0 /* see */ +N +N/* ANSI forbids va_list to be defined here */ +N/* keep in step with and */ +N#if !defined(__va_list) && (defined(__cplusplus) || !defined(__STRICT_ANSI__) || !defined(__va_list_defined)) +X#if !0L && (0L || !0L || !0L) +N/* always defined in C++ and non-strict C for consistency of debug info */ +N #ifdef __clang__ +S typedef __builtin_va_list __va_list; +N #else +N typedef struct __va_list __va_list; +N #endif +N #if !defined(__cplusplus) && defined(__STRICT_ANSI__) +X #if !0L && 0L +S #define __va_list_defined 1 +N #endif +N#endif +N +N /* +N * If the compiler supports signalling nans as per N965 then it +N * will define __SUPPORT_SNAN__, in which case a user may define +N * _WANT_SNAN in order to obtain compliant versions of the printf +N * and scanf families of functions +N */ +N#if defined(__SUPPORT_SNAN__) && defined(_WANT_SNAN) +X#if 0L && 0L +S#pragma import(__use_snan) +N#endif +N +Ntypedef struct __fpos_t_struct { +N unsigned __int64 __pos; +N /* +N * this structure is equivalent to an mbstate_t, but we're not +N * allowed to actually define the type name `mbstate_t' within +N * stdio.h +N */ +N struct { +N unsigned int __state1, __state2; +N } __mbstate; +N} fpos_t; +N /* +N * fpos_t is an object capable of recording all information needed to +N * specify uniquely every position within a file. +N */ +N +N#define _SYS_OPEN 16 +N /* _SYS_OPEN defines a limit on the number of open files that is imposed +N * by this C library +N */ +N +Ntypedef struct __FILE FILE; +N /* +N * FILE is an object capable of recording all information needed to control +N * a stream, such as its file position indicator, a pointer to its +N * associated buffer, an error indicator that records whether a read/write +N * error has occurred and an end-of-file indicator that records whether the +N * end-of-file has been reached. +N * Its structure is not made known to library clients. +N */ +N +N#if defined(__STRICT_ANSI__) && !__FILE_INCOMPLETE +X#if 0L && !__FILE_INCOMPLETE +Sstruct __FILE { +S union { +S long __FILE_alignment; +S#ifdef __TARGET_ARCH_AARCH64 +S char __FILE_size[136]; +S#else /* __TARGET_ARCH_AARCH64 */ +S char __FILE_size[84]; +S#endif /* __TARGET_ARCH_AARCH64 */ +S } __FILE_opaque; +S}; +S /* +S * FILE must be an object type (C99 - 7.19.1) and an object type fully +S * describes an object [including its static size] (C99 - 6.2.5). +S * This definition is a placeholder which matches the struct __FILE in +S * size and alignment as used internally by libc. +S */ +N#endif +N +N +Nextern FILE __stdin, __stdout, __stderr; +Nextern FILE *__aeabi_stdin, *__aeabi_stdout, *__aeabi_stderr; +N +N#if _AEABI_PORTABILITY_LEVEL != 0 || (!defined _AEABI_PORTABILITY_LEVEL && __DEFAULT_AEABI_PORTABILITY_LEVEL != 0) +X#if _AEABI_PORTABILITY_LEVEL != 0 || (!0L && __DEFAULT_AEABI_PORTABILITY_LEVEL != 0) +S#define stdin (__CLIBNS __aeabi_stdin) +S /* pointer to a FILE object associated with standard input stream */ +S#define stdout (__CLIBNS __aeabi_stdout) +S /* pointer to a FILE object associated with standard output stream */ +S#define stderr (__CLIBNS __aeabi_stderr) +S /* pointer to a FILE object associated with standard error stream */ +Sextern const int __aeabi_IOFBF; +S#define _IOFBF (__CLIBNS __aeabi_IOFBF) +Sextern const int __aeabi_IONBF; +S#define _IONBF (__CLIBNS __aeabi_IONBF) +Sextern const int __aeabi_IOLBF; +S#define _IOLBF (__CLIBNS __aeabi_IOLBF) +Sextern const int __aeabi_BUFSIZ; +S#define BUFSIZ (__CLIBNS __aeabi_BUFSIZ) +Sextern const int __aeabi_FOPEN_MAX; +S#define FOPEN_MAX (__CLIBNS __aeabi_FOPEN_MAX) +Sextern const int __aeabi_TMP_MAX; +S#define TMP_MAX (__CLIBNS __aeabi_TMP_MAX) +Sextern const int __aeabi_FILENAME_MAX; +S#define FILENAME_MAX (__CLIBNS __aeabi_FILENAME_MAX) +Sextern const int __aeabi_L_tmpnam; +S#define L_tmpnam (__CLIBNS __aeabi_L_tmpnam) +N#else +N#define stdin (&__CLIBNS __stdin) +N /* pointer to a FILE object associated with standard input stream */ +N#define stdout (&__CLIBNS __stdout) +N /* pointer to a FILE object associated with standard output stream */ +N#define stderr (&__CLIBNS __stderr) +N /* pointer to a FILE object associated with standard error stream */ +N +N#define _IOFBF 0x100 /* fully buffered IO */ +N#define _IOLBF 0x200 /* line buffered IO */ +N#define _IONBF 0x400 /* unbuffered IO */ +N +N /* Various default file IO buffer sizes */ +N#define BUFSIZ (512) /* system buffer size (as used by setbuf) */ +N +N#define FOPEN_MAX _SYS_OPEN +N /* +N * an integral constant expression that is the minimum number of files that +N * this implementation guarantees can be open simultaneously. +N */ +N +N#define FILENAME_MAX 256 +N /* +N * an integral constant expression that is the size of an array of char +N * large enough to hold the longest filename string +N */ +N#define L_tmpnam FILENAME_MAX +N /* +N * an integral constant expression that is the size of an array of char +N * large enough to hold a temporary file name string generated by the +N * tmpnam function. +N */ +N#define TMP_MAX 256 +N /* +N * an integral constant expression that is the minimum number of unique +N * file names that shall be generated by the tmpnam function. +N */ +N +N#endif +N +N#define EOF (-1) +N /* +N * negative integral constant, indicates end-of-file, that is, no more input +N * from a stream. +N */ +N +N#define SEEK_SET 0 /* start of stream (see fseek) */ +N#define SEEK_CUR 1 /* current position in stream (see fseek) */ +N#define SEEK_END 2 /* end of stream (see fseek) */ +N +N /* +N * _IOBIN is the flag passed to _sys_write to denote a binary +N * file. +N */ +N#define _IOBIN 0x04 /* binary stream */ +N +N#define __STDIN_BUFSIZ (64) /* default stdin buffer size */ +N#define __STDOUT_BUFSIZ (64) /* default stdout buffer size */ +N#define __STDERR_BUFSIZ (16) /* default stderr buffer size */ +N +Nextern _ARMABI int remove(const char * /*filename*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int remove(const char * ) __attribute__((__nonnull__(1))); +N /* +N * causes the file whose name is the string pointed to by filename to be +N * removed. Subsequent attempts to open the file will fail, unless it is +N * created anew. If the file is open, the behaviour of the remove function +N * is implementation-defined. +N * Returns: zero if the operation succeeds, nonzero if it fails. +N */ +Nextern _ARMABI int rename(const char * /*old*/, const char * /*new*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int rename(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * causes the file whose name is the string pointed to by old to be +N * henceforth known by the name given by the string pointed to by new. The +N * file named old is effectively removed. If a file named by the string +N * pointed to by new exists prior to the call of the rename function, the +N * behaviour is implementation-defined. +N * Returns: zero if the operation succeeds, nonzero if it fails, in which +N * case if the file existed previously it is still known by its +N * original name. +N */ +Nextern _ARMABI FILE *tmpfile(void); +Xextern __declspec(__nothrow) FILE *tmpfile(void); +N /* +N * creates a temporary binary file that will be automatically removed when +N * it is closed or at program termination. The file is opened for update. +N * Returns: a pointer to the stream of the file that it created. If the file +N * cannot be created, a null pointer is returned. +N */ +Nextern _ARMABI char *tmpnam(char * /*s*/); +Xextern __declspec(__nothrow) char *tmpnam(char * ); +N /* +N * generates a string that is not the same as the name of an existing file. +N * The tmpnam function generates a different string each time it is called, +N * up to TMP_MAX times. If it is called more than TMP_MAX times, the +N * behaviour is implementation-defined. +N * Returns: If the argument is a null pointer, the tmpnam function leaves +N * its result in an internal static object and returns a pointer to +N * that object. Subsequent calls to the tmpnam function may modify +N * the same object. if the argument is not a null pointer, it is +N * assumed to point to an array of at least L_tmpnam characters; +N * the tmpnam function writes its result in that array and returns +N * the argument as its value. +N */ +N +Nextern _ARMABI int fclose(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int fclose(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * causes the stream pointed to by stream to be flushed and the associated +N * file to be closed. Any unwritten buffered data for the stream are +N * delivered to the host environment to be written to the file; any unread +N * buffered data are discarded. The stream is disassociated from the file. +N * If the associated buffer was automatically allocated, it is deallocated. +N * Returns: zero if the stream was succesfully closed, or nonzero if any +N * errors were detected or if the stream was already closed. +N */ +Nextern _ARMABI int fflush(FILE * /*stream*/); +Xextern __declspec(__nothrow) int fflush(FILE * ); +N /* +N * If the stream points to an output or update stream in which the most +N * recent operation was output, the fflush function causes any unwritten +N * data for that stream to be delivered to the host environment to be +N * written to the file. If the stream points to an input or update stream, +N * the fflush function undoes the effect of any preceding ungetc operation +N * on the stream. +N * Returns: nonzero if a write error occurs. +N */ +Nextern _ARMABI FILE *fopen(const char * __restrict /*filename*/, +Xextern __declspec(__nothrow) FILE *fopen(const char * __restrict , +N const char * __restrict /*mode*/) __attribute__((__nonnull__(1,2))); +N /* +N * opens the file whose name is the string pointed to by filename, and +N * associates a stream with it. +N * The argument mode points to a string beginning with one of the following +N * sequences: +N * "r" open text file for reading +N * "w" create text file for writing, or truncate to zero length +N * "a" append; open text file or create for writing at eof +N * "rb" open binary file for reading +N * "wb" create binary file for writing, or truncate to zero length +N * "ab" append; open binary file or create for writing at eof +N * "r+" open text file for update (reading and writing) +N * "w+" create text file for update, or truncate to zero length +N * "a+" append; open text file or create for update, writing at eof +N * "r+b"/"rb+" open binary file for update (reading and writing) +N * "w+b"/"wb+" create binary file for update, or truncate to zero length +N * "a+b"/"ab+" append; open binary file or create for update, writing at eof +N * +N * Opening a file with read mode ('r' as the first character in the mode +N * argument) fails if the file does not exist or cannot be read. +N * Opening a file with append mode ('a' as the first character in the mode +N * argument) causes all subsequent writes to be forced to the current end of +N * file, regardless of intervening calls to the fseek function. In some +N * implementations, opening a binary file with append mode ('b' as the +N * second or third character in the mode argument) may initially position +N * the file position indicator beyond the last data written, because of the +N * NUL padding. +N * When a file is opened with update mode ('+' as the second or third +N * character in the mode argument), both input and output may be performed +N * on the associated stream. However, output may not be directly followed +N * by input without an intervening call to the fflush fuction or to a file +N * positioning function (fseek, fsetpos, or rewind), and input be not be +N * directly followed by output without an intervening call to the fflush +N * fuction or to a file positioning function, unless the input operation +N * encounters end-of-file. Opening a file with update mode may open or +N * create a binary stream in some implementations. When opened, a stream +N * is fully buffered if and only if it does not refer to an interactive +N * device. The error and end-of-file indicators for the stream are +N * cleared. +N * Returns: a pointer to the object controlling the stream. If the open +N * operation fails, fopen returns a null pointer. +N */ +Nextern _ARMABI FILE *freopen(const char * __restrict /*filename*/, +Xextern __declspec(__nothrow) FILE *freopen(const char * __restrict , +N const char * __restrict /*mode*/, +N FILE * __restrict /*stream*/) __attribute__((__nonnull__(2,3))); +N /* +N * opens the file whose name is the string pointed to by filename and +N * associates the stream pointed to by stream with it. The mode argument is +N * used just as in the fopen function. +N * The freopen function first attempts to close any file that is associated +N * with the specified stream. Failure to close the file successfully is +N * ignored. The error and end-of-file indicators for the stream are cleared. +N * Returns: a null pointer if the operation fails. Otherwise, freopen +N * returns the value of the stream. +N */ +Nextern _ARMABI void setbuf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) void setbuf(FILE * __restrict , +N char * __restrict /*buf*/) __attribute__((__nonnull__(1))); +N /* +N * Except that it returns no value, the setbuf function is equivalent to the +N * setvbuf function invoked with the values _IOFBF for mode and BUFSIZ for +N * size, or (if buf is a null pointer), with the value _IONBF for mode. +N * Returns: no value. +N */ +Nextern _ARMABI int setvbuf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int setvbuf(FILE * __restrict , +N char * __restrict /*buf*/, +N int /*mode*/, size_t /*size*/) __attribute__((__nonnull__(1))); +N /* +N * may be used after the stream pointed to by stream has been associated +N * with an open file but before it is read or written. The argument mode +N * determines how stream will be buffered, as follows: _IOFBF causes +N * input/output to be fully buffered; _IOLBF causes output to be line +N * buffered (the buffer will be flushed when a new-line character is +N * written, when the buffer is full, or when input is requested); _IONBF +N * causes input/output to be completely unbuffered. If buf is not the null +N * pointer, the array it points to may be used instead of an automatically +N * allocated buffer (the buffer must have a lifetime at least as great as +N * the open stream, so the stream should be closed before a buffer that has +N * automatic storage duration is deallocated upon block exit). The argument +N * size specifies the size of the array. The contents of the array at any +N * time are indeterminate. +N * Returns: zero on success, or nonzero if an invalid value is given for +N * mode or size, or if the request cannot be honoured. +N */ +N#pragma __printf_args +Nextern _ARMABI int fprintf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int fprintf(FILE * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * writes output to the stream pointed to by stream, under control of the +N * string pointed to by format that specifies how subsequent arguments are +N * converted for output. If there are insufficient arguments for the format, +N * the behaviour is undefined. If the format is exhausted while arguments +N * remain, the excess arguments are evaluated but otherwise ignored. The +N * fprintf function returns when the end of the format string is reached. +N * The format shall be a multibyte character sequence, beginning and ending +N * in its initial shift state. The format is composed of zero or more +N * directives: ordinary multibyte characters (not %), which are copied +N * unchanged to the output stream; and conversion specifiers, each of which +N * results in fetching zero or more subsequent arguments. Each conversion +N * specification is introduced by the character %. For a description of the +N * available conversion specifiers refer to section 4.9.6.1 in the ANSI +N * draft mentioned at the start of this file or to any modern textbook on C. +N * The minimum value for the maximum number of characters producable by any +N * single conversion is at least 509. +N * Returns: the number of characters transmitted, or a negative value if an +N * output error occurred. +N */ +N#pragma __printf_args +Nextern _ARMABI int _fprintf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int _fprintf(FILE * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to fprintf, but does not support floating-point formats. +N * You can use instead of fprintf to improve code size. +N * Returns: as fprintf. +N */ +N#pragma __printf_args +Nextern _ARMABI int printf(const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int printf(const char * __restrict , ...) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to fprintf with the argument stdout interposed before the +N * arguments to printf. +N * Returns: the number of characters transmitted, or a negative value if an +N * output error occurred. +N */ +N#pragma __printf_args +Nextern _ARMABI int _printf(const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int _printf(const char * __restrict , ...) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to printf, but does not support floating-point formats. +N * You can use instead of printf to improve code size. +N * Returns: as printf. +N */ +N#pragma __printf_args +Nextern _ARMABI int sprintf(char * __restrict /*s*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int sprintf(char * __restrict , const char * __restrict , ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to fprintf, except that the argument s specifies an array +N * into which the generated output is to be written, rather than to a +N * stream. A null character is written at the end of the characters written; +N * it is not counted as part of the returned sum. +N * Returns: the number of characters written to the array, not counting the +N * terminating null character. +N */ +N#pragma __printf_args +Nextern _ARMABI int _sprintf(char * __restrict /*s*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int _sprintf(char * __restrict , const char * __restrict , ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to sprintf, but does not support floating-point formats. +N * You can use instead of sprintf to improve code size. +N * Returns: as sprintf. +N */ +N +N#pragma __printf_args +Nextern _ARMABI int __ARM_snprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int __ARM_snprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(3))); +N +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N#pragma __printf_args +Nextern _ARMABI int snprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int snprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(3))); +N /* +N * is equivalent to fprintf, except that the argument s specifies an array +N * into which the generated output is to be written, rather than to a +N * stream. The argument n specifies the size of the output array, so as to +N * avoid overflowing the buffer. +N * A null character is written at the end of the characters written, even +N * if the formatting was not completed; it is not counted as part of the +N * returned sum. At most n characters of the output buffer are used, +N * _including_ the null character. +N * Returns: the number of characters that would have been written to the +N * array, not counting the terminating null character, if the +N * array had been big enough. So if the return is >=0 and =n, the string was truncated (but there is still a null char +N * at the end of what was written); if the return is <0, there was +N * an error. +N */ +N#endif +N#pragma __printf_args +Nextern _ARMABI int _snprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int _snprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(3))); +N /* +N * is equivalent to snprintf, but does not support floating-point formats. +N * You can use instead of snprintf to improve code size. +N * Returns: as snprintf. +N */ +N#pragma __scanf_args +Nextern _ARMABI int fscanf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int fscanf(FILE * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * reads input from the stream pointed to by stream, under control of the +N * string pointed to by format that specifies the admissible input sequences +N * and how thay are to be converted for assignment, using subsequent +N * arguments as pointers to the objects to receive the converted input. If +N * there are insufficient arguments for the format, the behaviour is +N * undefined. If the format is exhausted while arguments remain, the excess +N * arguments are evaluated but otherwise ignored. +N * The format is composed of zero or more directives: one or more +N * white-space characters; an ordinary character (not %); or a conversion +N * specification. Each conversion specification is introduced by the +N * character %. For a description of the available conversion specifiers +N * refer to section 4.9.6.2 in the ANSI draft mentioned at the start of this +N * file, or to any modern textbook on C. +N * If end-of-file is encountered during input, conversion is terminated. If +N * end-of-file occurs before any characters matching the current directive +N * have been read (other than leading white space, where permitted), +N * execution of the current directive terminates with an input failure; +N * otherwise, unless execution of the current directive is terminated with a +N * matching failure, execution of the following directive (if any) is +N * terminated with an input failure. +N * If conversions terminates on a conflicting input character, the offending +N * input character is left unread in the input strem. Trailing white space +N * (including new-line characters) is left unread unless matched by a +N * directive. The success of literal matches and suppressed asignments is +N * not directly determinable other than via the %n directive. +N * Returns: the value of the macro EOF if an input failure occurs before any +N * conversion. Otherwise, the fscanf function returns the number of +N * input items assigned, which can be fewer than provided for, or +N * even zero, in the event of an early conflict between an input +N * character and the format. +N */ +N#pragma __scanf_args +Nextern _ARMABI int _fscanf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int _fscanf(FILE * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to fscanf, but does not support floating-point formats. +N * You can use instead of fscanf to improve code size. +N * Returns: as fscanf. +N */ +N#pragma __scanf_args +Nextern _ARMABI int scanf(const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int scanf(const char * __restrict , ...) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to fscanf with the argument stdin interposed before the +N * arguments to scanf. +N * Returns: the value of the macro EOF if an input failure occurs before any +N * conversion. Otherwise, the scanf function returns the number of +N * input items assigned, which can be fewer than provided for, or +N * even zero, in the event of an early matching failure. +N */ +N#pragma __scanf_args +Nextern _ARMABI int _scanf(const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int _scanf(const char * __restrict , ...) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to scanf, but does not support floating-point formats. +N * You can use instead of scanf to improve code size. +N * Returns: as scanf. +N */ +N#pragma __scanf_args +Nextern _ARMABI int sscanf(const char * __restrict /*s*/, +Xextern __declspec(__nothrow) int sscanf(const char * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to fscanf except that the argument s specifies a string +N * from which the input is to be obtained, rather than from a stream. +N * Reaching the end of the string is equivalent to encountering end-of-file +N * for the fscanf function. +N * Returns: the value of the macro EOF if an input failure occurs before any +N * conversion. Otherwise, the scanf function returns the number of +N * input items assigned, which can be fewer than provided for, or +N * even zero, in the event of an early matching failure. +N */ +N#pragma __scanf_args +Nextern _ARMABI int _sscanf(const char * __restrict /*s*/, +Xextern __declspec(__nothrow) int _sscanf(const char * __restrict , +N const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to sscanf, but does not support floating-point formats. +N * You can use instead of sscanf to improve code size. +N * Returns: as sscanf. +N */ +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N/* C99 additions */ +Nextern _ARMABI int vfscanf(FILE * __restrict /*stream*/, const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int vfscanf(FILE * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI int vscanf(const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int vscanf(const char * __restrict , __va_list) __attribute__((__nonnull__(1))); +Nextern _ARMABI int vsscanf(const char * __restrict /*s*/, const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +N#endif +Nextern _ARMABI int _vfscanf(FILE * __restrict /*stream*/, const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int _vfscanf(FILE * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI int _vscanf(const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int _vscanf(const char * __restrict , __va_list) __attribute__((__nonnull__(1))); +Nextern _ARMABI int _vsscanf(const char * __restrict /*s*/, const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int _vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI int __ARM_vsscanf(const char * __restrict /*s*/, const char * __restrict /*format*/, __va_list) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int __ARM_vsscanf(const char * __restrict , const char * __restrict , __va_list) __attribute__((__nonnull__(1,2))); +N +Nextern _ARMABI int vprintf(const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int vprintf(const char * __restrict , __va_list ) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to printf, with the variable argument list replaced by arg, +N * which has been initialised by the va_start macro (and possibly subsequent +N * va_arg calls). The vprintf function does not invoke the va_end function. +N * Returns: the number of characters transmitted, or a negative value if an +N * output error occurred. +N */ +Nextern _ARMABI int _vprintf(const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int _vprintf(const char * __restrict , __va_list ) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to vprintf, but does not support floating-point formats. +N * You can use instead of vprintf to improve code size. +N * Returns: as vprintf. +N */ +Nextern _ARMABI int vfprintf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int vfprintf(FILE * __restrict , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to fprintf, with the variable argument list replaced by +N * arg, which has been initialised by the va_start macro (and possibly +N * subsequent va_arg calls). The vfprintf function does not invoke the +N * va_end function. +N * Returns: the number of characters transmitted, or a negative value if an +N * output error occurred. +N */ +Nextern _ARMABI int vsprintf(char * __restrict /*s*/, +Xextern __declspec(__nothrow) int vsprintf(char * __restrict , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to sprintf, with the variable argument list replaced by +N * arg, which has been initialised by the va_start macro (and possibly +N * subsequent va_arg calls). The vsprintf function does not invoke the +N * va_end function. +N * Returns: the number of characters written in the array, not counting the +N * terminating null character. +N */ +Nextern _ARMABI int __ARM_vsnprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int __ARM_vsnprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(3))); +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +Nextern _ARMABI int vsnprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int vsnprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(3))); +N /* +N * is equivalent to snprintf, with the variable argument list replaced by +N * arg, which has been initialised by the va_start macro (and possibly +N * subsequent va_arg calls). The vsprintf function does not invoke the +N * va_end function. +N * Returns: the number of characters that would have been written in the +N * array, not counting the terminating null character. As +N * snprintf. +N */ +N#endif +Nextern _ARMABI int _vsprintf(char * __restrict /*s*/, +Xextern __declspec(__nothrow) int _vsprintf(char * __restrict , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to vsprintf, but does not support floating-point formats. +N * You can use instead of vsprintf to improve code size. +N * Returns: as vsprintf. +N */ +Nextern _ARMABI int _vfprintf(FILE * __restrict /*stream*/, +Xextern __declspec(__nothrow) int _vfprintf(FILE * __restrict , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(1,2))); +N /* +N * is equivalent to vfprintf, but does not support floating-point formats. +N * You can use instead of vfprintf to improve code size. +N * Returns: as vfprintf. +N */ +Nextern _ARMABI int _vsnprintf(char * __restrict /*s*/, size_t /*n*/, +Xextern __declspec(__nothrow) int _vsnprintf(char * __restrict , size_t , +N const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(3))); +N /* +N * is equivalent to vsnprintf, but does not support floating-point formats. +N * You can use instead of vsnprintf to improve code size. +N * Returns: as vsnprintf. +N */ +N#if !defined(__STRICT_ANSI__) +X#if !0L +N#pragma __printf_args +Nextern _ARMABI int asprintf(char ** /*strp*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int asprintf(char ** , const char * __restrict , ...) __attribute__((__nonnull__(2))); +Nextern _ARMABI int vasprintf(char ** /*strp*/, const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int vasprintf(char ** , const char * __restrict , __va_list ) __attribute__((__nonnull__(2))); +N#endif +N#pragma __printf_args +Nextern _ARMABI int __ARM_asprintf(char ** /*strp*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int __ARM_asprintf(char ** , const char * __restrict , ...) __attribute__((__nonnull__(2))); +Nextern _ARMABI int __ARM_vasprintf(char ** /*strp*/, const char * __restrict /*format*/, __va_list /*arg*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int __ARM_vasprintf(char ** , const char * __restrict , __va_list ) __attribute__((__nonnull__(2))); +N /* +N * dynamically allocates a buffer of the right size for the +N * formatted string, and returns it in (*strp). Formal return value +N * is the same as any other printf variant, except that it returns +N * -1 if the buffer could not be allocated. +N * +N * (The functions with __ARM_ prefixed names are identical to the +N * ones without, but are available in all compilation modes without +N * violating user namespace.) +N */ +N +Nextern _ARMABI int fgetc(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int fgetc(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * obtains the next character (if present) as an unsigned char converted to +N * an int, from the input stream pointed to by stream, and advances the +N * associated file position indicator (if defined). +N * Returns: the next character from the input stream pointed to by stream. +N * If the stream is at end-of-file, the end-of-file indicator is +N * set and fgetc returns EOF. If a read error occurs, the error +N * indicator is set and fgetc returns EOF. +N */ +Nextern _ARMABI char *fgets(char * __restrict /*s*/, int /*n*/, +Xextern __declspec(__nothrow) char *fgets(char * __restrict , int , +N FILE * __restrict /*stream*/) __attribute__((__nonnull__(1,3))); +N /* +N * reads at most one less than the number of characters specified by n from +N * the stream pointed to by stream into the array pointed to by s. No +N * additional characters are read after a new-line character (which is +N * retained) or after end-of-file. A null character is written immediately +N * after the last character read into the array. +N * Returns: s if successful. If end-of-file is encountered and no characters +N * have been read into the array, the contents of the array remain +N * unchanged and a null pointer is returned. If a read error occurs +N * during the operation, the array contents are indeterminate and a +N * null pointer is returned. +N */ +Nextern _ARMABI int fputc(int /*c*/, FILE * /*stream*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int fputc(int , FILE * ) __attribute__((__nonnull__(2))); +N /* +N * writes the character specified by c (converted to an unsigned char) to +N * the output stream pointed to by stream, at the position indicated by the +N * asociated file position indicator (if defined), and advances the +N * indicator appropriately. If the file position indicator is not defined, +N * the character is appended to the output stream. +N * Returns: the character written. If a write error occurs, the error +N * indicator is set and fputc returns EOF. +N */ +Nextern _ARMABI int fputs(const char * __restrict /*s*/, FILE * __restrict /*stream*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int fputs(const char * __restrict , FILE * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * writes the string pointed to by s to the stream pointed to by stream. +N * The terminating null character is not written. +N * Returns: EOF if a write error occurs; otherwise it returns a nonnegative +N * value. +N */ +Nextern _ARMABI int getc(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int getc(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * is equivalent to fgetc except that it may be implemented as an unsafe +N * macro (stream may be evaluated more than once, so the argument should +N * never be an expression with side-effects). +N * Returns: the next character from the input stream pointed to by stream. +N * If the stream is at end-of-file, the end-of-file indicator is +N * set and getc returns EOF. If a read error occurs, the error +N * indicator is set and getc returns EOF. +N */ +N#ifdef __cplusplus +S inline int getchar() { return getc(stdin); } +N#else +N #define getchar() getc(stdin) +N extern _ARMABI int (getchar)(void); +X extern __declspec(__nothrow) int (getchar)(void); +N#endif +N /* +N * is equivalent to getc with the argument stdin. +N * Returns: the next character from the input stream pointed to by stdin. +N * If the stream is at end-of-file, the end-of-file indicator is +N * set and getchar returns EOF. If a read error occurs, the error +N * indicator is set and getchar returns EOF. +N */ +Nextern _ARMABI char *gets(char * /*s*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *gets(char * ) __attribute__((__nonnull__(1))); +N /* +N * reads characters from the input stream pointed to by stdin into the array +N * pointed to by s, until end-of-file is encountered or a new-line character +N * is read. Any new-line character is discarded, and a null character is +N * written immediately after the last character read into the array. +N * Returns: s if successful. If end-of-file is encountered and no characters +N * have been read into the array, the contents of the array remain +N * unchanged and a null pointer is returned. If a read error occurs +N * during the operation, the array contents are indeterminate and a +N * null pointer is returned. +N */ +Nextern _ARMABI int putc(int /*c*/, FILE * /*stream*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int putc(int , FILE * ) __attribute__((__nonnull__(2))); +N /* +N * is equivalent to fputc except that it may be implemented as aan unsafe +N * macro (stream may be evaluated more than once, so the argument should +N * never be an expression with side-effects). +N * Returns: the character written. If a write error occurs, the error +N * indicator is set and putc returns EOF. +N */ +N#ifdef __cplusplus +S inline int putchar(int __c) { return putc(__c, stdout); } +N#else +N #define putchar(c) putc(c, stdout) +N extern _ARMABI int (putchar)(int /*c*/); +X extern __declspec(__nothrow) int (putchar)(int ); +N#endif +N /* +N * is equivalent to putc with the second argument stdout. +N * Returns: the character written. If a write error occurs, the error +N * indicator is set and putc returns EOF. +N */ +Nextern _ARMABI int puts(const char * /*s*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int puts(const char * ) __attribute__((__nonnull__(1))); +N /* +N * writes the string pointed to by s to the stream pointed to by stdout, and +N * appends a new-line character to the output. The terminating null +N * character is not written. +N * Returns: EOF if a write error occurs; otherwise it returns a nonnegative +N * value. +N */ +Nextern _ARMABI int ungetc(int /*c*/, FILE * /*stream*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) int ungetc(int , FILE * ) __attribute__((__nonnull__(2))); +N /* +N * pushes the character specified by c (converted to an unsigned char) back +N * onto the input stream pointed to by stream. The character will be +N * returned by the next read on that stream. An intervening call to the +N * fflush function or to a file positioning function (fseek, fsetpos, +N * rewind) discards any pushed-back characters. The extern _ARMABIal storage +N * corresponding to the stream is unchanged. +N * One character pushback is guaranteed. If the unget function is called too +N * many times on the same stream without an intervening read or file +N * positioning operation on that stream, the operation may fail. +N * If the value of c equals that of the macro EOF, the operation fails and +N * the input stream is unchanged. +N * A successful call to the ungetc function clears the end-of-file +N * indicator. The value of the file position indicator after reading or +N * discarding all pushed-back characters shall be the same as it was before +N * the characters were pushed back. For a text stream, the value of the file +N * position indicator after a successful call to the ungetc function is +N * unspecified until all pushed-back characters are read or discarded. For a +N * binary stream, the file position indicator is decremented by each +N * successful call to the ungetc function; if its value was zero before a +N * call, it is indeterminate after the call. +N * Returns: the character pushed back after conversion, or EOF if the +N * operation fails. +N */ +N +Nextern _ARMABI size_t fread(void * __restrict /*ptr*/, +Xextern __declspec(__nothrow) size_t fread(void * __restrict , +N size_t /*size*/, size_t /*nmemb*/, FILE * __restrict /*stream*/) __attribute__((__nonnull__(1,4))); +N /* +N * reads into the array pointed to by ptr, up to nmemb members whose size is +N * specified by size, from the stream pointed to by stream. The file +N * position indicator (if defined) is advanced by the number of characters +N * successfully read. If an error occurs, the resulting value of the file +N * position indicator is indeterminate. If a partial member is read, its +N * value is indeterminate. The ferror or feof function shall be used to +N * distinguish between a read error and end-of-file. +N * Returns: the number of members successfully read, which may be less than +N * nmemb if a read error or end-of-file is encountered. If size or +N * nmemb is zero, fread returns zero and the contents of the array +N * and the state of the stream remain unchanged. +N */ +N +Nextern _ARMABI size_t __fread_bytes_avail(void * __restrict /*ptr*/, +Xextern __declspec(__nothrow) size_t __fread_bytes_avail(void * __restrict , +N size_t /*count*/, FILE * __restrict /*stream*/) __attribute__((__nonnull__(1,3))); +N /* +N * reads into the array pointed to by ptr, up to count characters from the +N * stream pointed to by stream. The file position indicator (if defined) +N * is advanced by the number of characters successfully read. If an error +N * occurs, the resulting value of the file position indicator is +N * indeterminate. The ferror or feof function shall be used to +N * distinguish between a read error and end-of-file. The call will block +N * only if no characters are available. +N * Returns: the number of characters successfully read, which may be less than +N * count. If count is zero, __fread_bytes_avail returns zero and +N * the contents of the array and the state of the stream remain +N * unchanged. +N */ +N +Nextern _ARMABI size_t fwrite(const void * __restrict /*ptr*/, +Xextern __declspec(__nothrow) size_t fwrite(const void * __restrict , +N size_t /*size*/, size_t /*nmemb*/, FILE * __restrict /*stream*/) __attribute__((__nonnull__(1,4))); +N /* +N * writes, from the array pointed to by ptr up to nmemb members whose size +N * is specified by size, to the stream pointed to by stream. The file +N * position indicator (if defined) is advanced by the number of characters +N * successfully written. If an error occurs, the resulting value of the file +N * position indicator is indeterminate. +N * Returns: the number of members successfully written, which will be less +N * than nmemb only if a write error is encountered. +N */ +N +Nextern _ARMABI int fgetpos(FILE * __restrict /*stream*/, fpos_t * __restrict /*pos*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int fgetpos(FILE * __restrict , fpos_t * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * stores the current value of the file position indicator for the stream +N * pointed to by stream in the object pointed to by pos. The value stored +N * contains unspecified information usable by the fsetpos function for +N * repositioning the stream to its position at the time of the call to the +N * fgetpos function. +N * Returns: zero, if successful. Otherwise nonzero is returned and the +N * integer expression errno is set to an implementation-defined +N * nonzero value. +N */ +Nextern _ARMABI int fseek(FILE * /*stream*/, long int /*offset*/, int /*whence*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int fseek(FILE * , long int , int ) __attribute__((__nonnull__(1))); +N /* +N * sets the file position indicator for the stream pointed to by stream. +N * For a binary stream, the new position is at the signed number of +N * characters specified by offset away from the point specified by whence. +N * The specified point is the beginning of the file for SEEK_SET, the +N * current position in the file for SEEK_CUR, or end-of-file for SEEK_END. +N * A binary stream need not meaningfully support fseek calls with a whence +N * value of SEEK_END. +N * For a text stream, either offset shall be zero, or offset shall be a +N * value returned by an earlier call to the ftell function on the same +N * stream and whence shall be SEEK_SET. +N * The fseek function clears the end-of-file indicator and undoes any +N * effects of the ungetc function on the same stream. After an fseek call, +N * the next operation on an update stream may be either input or output. +N * Returns: nonzero only for a request that cannot be satisfied. +N */ +Nextern _ARMABI int fsetpos(FILE * __restrict /*stream*/, const fpos_t * __restrict /*pos*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int fsetpos(FILE * __restrict , const fpos_t * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * sets the file position indicator for the stream pointed to by stream +N * according to the value of the object pointed to by pos, which shall be a +N * value returned by an earlier call to the fgetpos function on the same +N * stream. +N * The fsetpos function clears the end-of-file indicator and undoes any +N * effects of the ungetc function on the same stream. After an fsetpos call, +N * the next operation on an update stream may be either input or output. +N * Returns: zero, if successful. Otherwise nonzero is returned and the +N * integer expression errno is set to an implementation-defined +N * nonzero value. +N */ +Nextern _ARMABI long int ftell(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) long int ftell(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * obtains the current value of the file position indicator for the stream +N * pointed to by stream. For a binary stream, the value is the number of +N * characters from the beginning of the file. For a text stream, the file +N * position indicator contains unspecified information, usable by the fseek +N * function for returning the file position indicator to its position at the +N * time of the ftell call; the difference between two such return values is +N * not necessarily a meaningful measure of the number of characters written +N * or read. +N * Returns: if successful, the current value of the file position indicator. +N * On failure, the ftell function returns -1L and sets the integer +N * expression errno to an implementation-defined nonzero value. +N */ +Nextern _ARMABI void rewind(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void rewind(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * sets the file position indicator for the stream pointed to by stream to +N * the beginning of the file. It is equivalent to +N * (void)fseek(stream, 0L, SEEK_SET) +N * except that the error indicator for the stream is also cleared. +N * Returns: no value. +N */ +N +Nextern _ARMABI void clearerr(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void clearerr(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * clears the end-of-file and error indicators for the stream pointed to by +N * stream. These indicators are cleared only when the file is opened or by +N * an explicit call to the clearerr function or to the rewind function. +N * Returns: no value. +N */ +N +Nextern _ARMABI int feof(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int feof(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * tests the end-of-file indicator for the stream pointed to by stream. +N * Returns: nonzero iff the end-of-file indicator is set for stream. +N */ +Nextern _ARMABI int ferror(FILE * /*stream*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int ferror(FILE * ) __attribute__((__nonnull__(1))); +N /* +N * tests the error indicator for the stream pointed to by stream. +N * Returns: nonzero iff the error indicator is set for stream. +N */ +Nextern _ARMABI void perror(const char * /*s*/); +Xextern __declspec(__nothrow) void perror(const char * ); +N /* +N * maps the error number in the integer expression errno to an error +N * message. It writes a sequence of characters to the standard error stream +N * thus: first (if s is not a null pointer and the character pointed to by +N * s is not the null character), the string pointed to by s followed by a +N * colon and a space; then an appropriate error message string followed by +N * a new-line character. The contents of the error message strings are the +N * same as those returned by the strerror function with argument errno, +N * which are implementation-defined. +N * Returns: no value. +N */ +N +Nextern _ARMABI int _fisatty(FILE * /*stream*/ ) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int _fisatty(FILE * ) __attribute__((__nonnull__(1))); +N /* Returns 1 if the stream is tty (stdin), 0 otherwise. Not ANSI compliant. +N */ +N +Nextern _ARMABI void __use_no_semihosting_swi(void); +Xextern __declspec(__nothrow) void __use_no_semihosting_swi(void); +Nextern _ARMABI void __use_no_semihosting(void); +Xextern __declspec(__nothrow) void __use_no_semihosting(void); +N /* +N * Referencing either of these symbols will cause a link-time +N * error if any library functions that use semihosting SWI +N * calls are also present in the link, i.e. you define it if +N * you want to make sure you haven't accidentally used any such +N * SWIs. +N */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif +N #endif /* __STDIO_DECLS */ +N +N #if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE +X #if _AEABI_PORTABILITY_LEVEL != 0 && !0L +S #define _AEABI_PORTABLE +N #endif +N +N #if defined(__cplusplus) && !defined(__STDIO_NO_EXPORTS) +X #if 0L && !0L +S using ::std::size_t; +S using ::std::fpos_t; +S using ::std::FILE; +S using ::std::remove; +S using ::std::rename; +S using ::std::tmpfile; +S using ::std::tmpnam; +S using ::std::fclose; +S using ::std::fflush; +S using ::std::fopen; +S using ::std::freopen; +S using ::std::setbuf; +S using ::std::setvbuf; +S using ::std::fprintf; +S using ::std::_fprintf; +S using ::std::printf; +S using ::std::_printf; +S using ::std::sprintf; +S using ::std::_sprintf; +S #if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +S using ::std::snprintf; +S using ::std::vsnprintf; +S using ::std::vfscanf; +S using ::std::vscanf; +S using ::std::vsscanf; +S #endif +S using ::std::_snprintf; +S using ::std::_vsnprintf; +S#if !defined(__STRICT_ANSI__) +S using ::std::asprintf; +S using ::std::vasprintf; +S#endif +S using ::std::__ARM_asprintf; +S using ::std::__ARM_vasprintf; +S using ::std::__ARM_vsnprintf; +S using ::std::__ARM_snprintf; +S using ::std::__ARM_vsscanf; +S using ::std::fscanf; +S using ::std::_fscanf; +S using ::std::scanf; +S using ::std::_scanf; +S using ::std::sscanf; +S using ::std::_sscanf; +S using ::std::_vfscanf; +S using ::std::_vscanf; +S using ::std::_vsscanf; +S using ::std::vprintf; +S using ::std::_vprintf; +S using ::std::vfprintf; +S using ::std::_vfprintf; +S using ::std::vsprintf; +S using ::std::_vsprintf; +S using ::std::fgetc; +S using ::std::fgets; +S using ::std::fputc; +S using ::std::fputs; +S using ::std::getc; +S using ::std::getchar; +S using ::std::gets; +S using ::std::putc; +S using ::std::putchar; +S using ::std::puts; +S using ::std::ungetc; +S using ::std::fread; +S using ::std::__fread_bytes_avail; +S using ::std::fwrite; +S using ::std::fgetpos; +S using ::std::fseek; +S using ::std::fsetpos; +S using ::std::ftell; +S using ::std::rewind; +S using ::std::clearerr; +S using ::std::feof; +S using ::std::ferror; +S using ::std::perror; +S using ::std::_fisatty; +S using ::std::__use_no_semihosting_swi; +S using ::std::__use_no_semihosting; +N #endif +N +N#endif /* ndef __stdio_h */ +N +N/* end of stdio.h */ +N +L 2 "..\..\src\app\main.c" 2 +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h" 1 +N/* string.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.11 */ +N/* Copyright (C) Codemist Ltd., 1988-1993. */ +N/* Copyright 1991-1993 ARM Limited. All rights reserved. */ +N/* version 0.04 */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N */ +N +N/* +N * string.h declares one type and several functions, and defines one macro +N * useful for manipulating character arrays and other objects treated as +N * character arrays. Various methods are used for determining the lengths of +N * the arrays, but in all cases a char * or void * argument points to the +N * initial (lowest addresses) character of the array. If an array is written +N * beyond the end of an object, the behaviour is undefined. +N */ +N +N#ifndef __string_h +N#define __string_h +N#define __ARMCLIB_VERSION 5060037 +N +N#define _ARMABI __declspec(__nothrow) +N +N #ifndef __STRING_DECLS +N #define __STRING_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N#if defined(__cplusplus) || !defined(__STRICT_ANSI__) +X#if 0L || !0L +N /* unconditional in C++ and non-strict C for consistency of debug info */ +N #if __sizeof_ptr == 8 +X #if 4 == 8 +S typedef unsigned long size_t; /* see */ +N #else +N typedef unsigned int size_t; /* see */ +N #endif +N#elif !defined(__size_t) +X#elif !0L +S #define __size_t 1 +S #if __sizeof_ptr == 8 +S typedef unsigned long size_t; /* see */ +S #else +S typedef unsigned int size_t; /* see */ +S #endif +N#endif +N +N#undef NULL +N#define NULL 0 /* see */ +N +Nextern _ARMABI void *memcpy(void * __restrict /*s1*/, +Xextern __declspec(__nothrow) void *memcpy(void * __restrict , +N const void * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI void *memmove(void * /*s1*/, +Xextern __declspec(__nothrow) void *memmove(void * , +N const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. Copying takes place as if the n characters from the +N * object pointed to by s2 are first copied into a temporary array of n +N * characters that does not overlap the objects pointed to by s1 and s2, +N * and then the n characters from the temporary array are copied into the +N * object pointed to by s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strcpy(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string pointed to by s2 (including the terminating nul +N * character) into the array pointed to by s1. If copying takes place +N * between objects that overlap, the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncpy(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies not more than n characters (characters that follow a null +N * character are not copied) from the array pointed to by s2 into the array +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +N +Nextern _ARMABI char *strcat(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * appends a copy of the string pointed to by s2 (including the terminating +N * null character) to the end of the string pointed to by s1. The initial +N * character of s2 overwrites the null character at the end of s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncat(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * appends not more than n characters (a null character and characters that +N * follow it are not appended) from the array pointed to by s2 to the end of +N * the string pointed to by s1. The initial character of s2 overwrites the +N * null character at the end of s1. A terminating null character is always +N * appended to the result. +N * Returns: the value of s1. +N */ +N +N/* +N * The sign of a nonzero value returned by the comparison functions is +N * determined by the sign of the difference between the values of the first +N * pair of characters (both interpreted as unsigned char) that differ in the +N * objects being compared. +N */ +N +Nextern _ARMABI int memcmp(const void * /*s1*/, const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the first n characters of the object pointed to by s1 to the +N * first n characters of the object pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the object pointed to by s1 is greater than, equal to, or +N * less than the object pointed to by s2. +N */ +Nextern _ARMABI int strcmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcasecmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, +N * case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncasecmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2, case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcoll(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, both +N * interpreted as appropriate to the LC_COLLATE category of the current +N * locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2 when both are interpreted +N * as appropriate to the current locale. +N */ +N +Nextern _ARMABI size_t strxfrm(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); +N /* +N * transforms the string pointed to by s2 and places the resulting string +N * into the array pointed to by s1. The transformation function is such that +N * if the strcmp function is applied to two transformed strings, it returns +N * a value greater than, equal to or less than zero, corresponding to the +N * result of the strcoll function applied to the same two original strings. +N * No more than n characters are placed into the resulting array pointed to +N * by s1, including the terminating null character. If n is zero, s1 is +N * permitted to be a null pointer. If copying takes place between objects +N * that overlap, the behaviour is undefined. +N * Returns: The length of the transformed string is returned (not including +N * the terminating null character). If the value returned is n or +N * more, the contents of the array pointed to by s1 are +N * indeterminate. +N */ +N +N +N#ifdef __cplusplus +Sextern _ARMABI const void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Sextern "C++" void *memchr(void * __s, int __c, size_t __n) __attribute__((__nonnull__(1))); +Sextern "C++" inline void *memchr(void * __s, int __c, size_t __n) +S { return const_cast(memchr(const_cast(__s), __c, __n)); } +N#else +Nextern _ARMABI void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an unsigned char) in the +N * initial n characters (each interpreted as unsigned char) of the object +N * pointed to by s. +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the object. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strchr(char * __s, int __c) +S { return const_cast(strchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an char) in the string +N * pointed to by s (including the terminating null character). +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the string. +N */ +N +Nextern _ARMABI size_t strcspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters not from the string pointed to by +N * s2. The terminating null character is not considered part of s2. +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strpbrk(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strpbrk(char * __s1, const char * __s2) +S { return const_cast(strpbrk(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of any +N * character from the string pointed to by s2. +N * Returns: returns a pointer to the character, or a null pointer if no +N * character form s2 occurs in s1. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strrchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strrchr(char * __s, int __c) +S { return const_cast(strrchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the last occurence of c (converted to a char) in the string +N * pointed to by s. The terminating null character is considered part of +N * the string. +N * Returns: returns a pointer to the character, or a null pointer if c does +N * not occur in the string. +N */ +N +Nextern _ARMABI size_t strspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters from the string pointed to by S2 +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strstr(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strstr(char * __s1, const char * __s2) +S { return const_cast(strstr(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of the +N * sequence of characters (excluding the terminating null character) in the +N * string pointed to by s2. +N * Returns: a pointer to the located string, or a null pointer if the string +N * is not found. +N */ +N +Nextern _ARMABI char *strtok(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +Nextern _ARMABI char *_strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#ifndef __STRICT_ANSI__ +Nextern _ARMABI char *strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#endif +N /* +N * A sequence of calls to the strtok function breaks the string pointed to +N * by s1 into a sequence of tokens, each of which is delimited by a +N * character from the string pointed to by s2. The first call in the +N * sequence has s1 as its first argument, and is followed by calls with a +N * null pointer as their first argument. The separator string pointed to by +N * s2 may be different from call to call. +N * The first call in the sequence searches for the first character that is +N * not contained in the current separator string s2. If no such character +N * is found, then there are no tokens in s1 and the strtok function returns +N * a null pointer. If such a character is found, it is the start of the +N * first token. +N * The strtok function then searches from there for a character that is +N * contained in the current separator string. If no such character is found, +N * the current token extends to the end of the string pointed to by s1, and +N * subsequent searches for a token will fail. If such a character is found, +N * it is overwritten by a null character, which terminates the current +N * token. The strtok function saves a pointer to the following character, +N * from which the next search for a token will start. +N * Each subsequent call, with a null pointer as the value for the first +N * argument, starts searching from the saved pointer and behaves as +N * described above. +N * Returns: pointer to the first character of a token, or a null pointer if +N * there is no token. +N * +N * strtok_r() is a common extension which works exactly like +N * strtok(), but instead of storing its state in a hidden +N * library variable, requires the user to pass in a pointer to a +N * char * variable which will be used instead. Any sequence of +N * calls to strtok_r() passing the same char ** pointer should +N * behave exactly like the corresponding sequence of calls to +N * strtok(). This means that strtok_r() can safely be used in +N * multi-threaded programs, and also that you can tokenise two +N * strings in parallel. +N */ +N +Nextern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); +N /* +N * copies the value of c (converted to an unsigned char) into each of the +N * first n charactes of the object pointed to by s. +N * Returns: the value of s. +N */ +Nextern _ARMABI char *strerror(int /*errnum*/); +Xextern __declspec(__nothrow) char *strerror(int ); +N /* +N * maps the error number in errnum to an error message string. +N * Returns: a pointer to the string, the contents of which are +N * implementation-defined. The array pointed to shall not be +N * modified by the program, but may be overwritten by a +N * subsequent call to the strerror function. +N */ +Nextern _ARMABI size_t strlen(const char * /*s*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); +N /* +N * computes the length of the string pointed to by s. +N * Returns: the number of characters that precede the terminating null +N * character. +N */ +N +Nextern _ARMABI size_t strlcpy(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string src into the string dst, using no more than +N * len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src. Thus, the operation +N * succeeded without truncation if and only if ret < len; +N * otherwise, the value in ret tells you how big to make dst if +N * you decide to reallocate it. (That value does _not_ include +N * the NUL.) +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI size_t strlcat(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * concatenates the string src to the string dst, using no more +N * than len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src plus the original length +N * of dst. Thus, the operation succeeded without truncation if +N * and only if ret < len; otherwise, the value in ret tells you +N * how big to make dst if you decide to reallocate it. (That +N * value does _not_ include the NUL.) +N * +N * If no NUL is encountered within the first len bytes of dst, +N * then the length of dst is considered to have been equal to +N * len for the purposes of the return value (as if there were a +N * NUL at dst[len]). Thus, the return value in this case is len +N * + strlen(src). +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI void _membitcpybl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpybb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * Copies or moves a piece of memory from one place to another, +N * with one-bit granularity. So you can start or finish a copy +N * part way through a byte, and you can copy between regions +N * with different alignment within a byte. +N * +N * All these functions have the same prototype: two void * +N * pointers for destination and source, then two integers +N * giving the bit offset from those pointers, and finally the +N * number of bits to copy. +N * +N * Just like memcpy and memmove, the "cpy" functions copy as +N * fast as they can in the assumption that the memory regions +N * do not overlap, while the "move" functions cope correctly +N * with overlap. +N * +N * Treating memory as a stream of individual bits requires +N * defining a convention about what order those bits are +N * considered to be arranged in. The above functions support +N * multiple conventions: +N * +N * - the "bl" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in little-endian fashion, so that the LSB comes +N * first. (For example, membitcpybl(a,b,0,7,1) would copy +N * the MSB of the byte at b to the LSB of the byte at a.) +N * +N * - the "bb" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in big-endian fashion, so that the MSB comes +N * first. +N * +N * - the "hl" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in little-endian fashion. +N * +N * - the "hb" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in big-endian fashion. +N * +N * - the "wl" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in little-endian fashion. +N * +N * - the "wb" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in big-endian fashion. +N */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STRING_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STRING_NO_EXPORTS +S using ::std::size_t; +S using ::std::memcpy; +S using ::std::memmove; +S using ::std::strcpy; +S using ::std::strncpy; +S using ::std::strcat; +S using ::std::strncat; +S using ::std::memcmp; +S using ::std::strcmp; +S using ::std::strncmp; +S using ::std::strcasecmp; +S using ::std::strncasecmp; +S using ::std::strcoll; +S using ::std::strxfrm; +S using ::std::memchr; +S using ::std::strchr; +S using ::std::strcspn; +S using ::std::strpbrk; +S using ::std::strrchr; +S using ::std::strspn; +S using ::std::strstr; +S using ::std::strtok; +S#ifndef __STRICT_ANSI__ +S using ::std::strtok_r; +S#endif +S using ::std::_strtok_r; +S using ::std::memset; +S using ::std::strerror; +S using ::std::strlen; +S using ::std::strlcpy; +S using ::std::strlcat; +S using ::std::_membitcpybl; +S using ::std::_membitcpybb; +S using ::std::_membitcpyhl; +S using ::std::_membitcpyhb; +S using ::std::_membitcpywl; +S using ::std::_membitcpywb; +S using ::std::_membitmovebl; +S using ::std::_membitmovebb; +S using ::std::_membitmovehl; +S using ::std::_membitmovehb; +S using ::std::_membitmovewl; +S using ::std::_membitmovewb; +S #endif /* __STRING_NO_EXPORTS */ +N #endif /* __cplusplus */ +N +N#endif +N +N/* end of string.h */ +N +L 3 "..\..\src\app\main.c" 2 +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h" 1 +N/* stdlib.h: ANSI draft (X3J11 May 88) library header, section 4.10 */ +N/* Copyright (C) Codemist Ltd., 1988-1993. */ +N/* Copyright 1991-1998,2014 ARM Limited. All rights reserved. */ +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N/* +N * stdlib.h declares four types, several general purpose functions, +N * and defines several macros. +N */ +N +N#ifndef __stdlib_h +N#define __stdlib_h +N#define __ARMCLIB_VERSION 5060037 +N +N#if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X#if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N#else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N#endif +N +N#define _ARMABI __declspec(__nothrow) +N#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const)) +N#define _ARMABI_NORETURN __declspec(__nothrow) __declspec(__noreturn) +N#define _ARMABI_THROW +N +N #ifndef __STDLIB_DECLS +N #define __STDLIB_DECLS +N +N /* +N * Some of these declarations are new in C99. To access them in C++ +N * you can use -D__USE_C99_STDLIB (or -D__USE_C99ALL). +N */ +N #ifndef __USE_C99_STDLIB +N #if defined(__USE_C99_ALL) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X #if 0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N #define __USE_C99_STDLIB 1 +N #endif +N #endif +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS ::std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N#if defined(__cplusplus) || !defined(__STRICT_ANSI__) +X#if 0L || !0L +N /* unconditional in C++ and non-strict C for consistency of debug info */ +N #if __sizeof_ptr == 8 +X #if 4 == 8 +S typedef unsigned long size_t; /* see */ +N #else +N typedef unsigned int size_t; /* see */ +N #endif +N#elif !defined(__size_t) +X#elif !0L +S #define __size_t 1 +S #if __sizeof_ptr == 8 +S typedef unsigned long size_t; /* see */ +S #else +S typedef unsigned int size_t; /* see */ +S #endif +N#endif +N +N#undef NULL +N#define NULL 0 /* see */ +N +N#ifndef __cplusplus /* wchar_t is a builtin type for C++ */ +N #if !defined(__STRICT_ANSI__) +X #if !0L +N /* unconditional in non-strict C for consistency of debug info */ +N #if defined(__WCHAR32) || (defined(__ARM_SIZEOF_WCHAR_T) && __ARM_SIZEOF_WCHAR_T == 4) +X #if 0L || (0L && __ARM_SIZEOF_WCHAR_T == 4) +S typedef unsigned int wchar_t; /* see */ +N #else +N typedef unsigned short wchar_t; /* see */ +N #endif +N #elif !defined(__wchar_t) +X #elif !0L +S #define __wchar_t 1 +S #if defined(__WCHAR32) || (defined(__ARM_SIZEOF_WCHAR_T) && __ARM_SIZEOF_WCHAR_T == 4) +S typedef unsigned int wchar_t; /* see */ +S #else +S typedef unsigned short wchar_t; /* see */ +S #endif +N #endif +N#endif +N +Ntypedef struct div_t { int quot, rem; } div_t; +N /* type of the value returned by the div function. */ +Ntypedef struct ldiv_t { long int quot, rem; } ldiv_t; +N /* type of the value returned by the ldiv function. */ +N#if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +X#if !0L || 1 +Ntypedef struct lldiv_t { __LONGLONG quot, rem; } lldiv_t; +Xtypedef struct lldiv_t { long long quot, rem; } lldiv_t; +N /* type of the value returned by the lldiv function. */ +N#endif +N +N#ifdef __EXIT_FAILURE +S# define EXIT_FAILURE __EXIT_FAILURE +S /* +S * an integral expression which may be used as an argument to the exit +S * function to return unsuccessful termination status to the host +S * environment. +S */ +N#else +N# define EXIT_FAILURE 1 /* unixoid */ +N#endif +N#define EXIT_SUCCESS 0 +N /* +N * an integral expression which may be used as an argument to the exit +N * function to return successful termination status to the host +N * environment. +N */ +N +N /* +N * Defining __USE_ANSI_EXAMPLE_RAND at compile time switches to +N * the example implementation of rand() and srand() provided in +N * the ANSI C standard. This implementation is very poor, but is +N * provided for completeness. +N */ +N#ifdef __USE_ANSI_EXAMPLE_RAND +S#define srand _ANSI_srand +S#define rand _ANSI_rand +S#define RAND_MAX 0x7fff +N#else +N#define RAND_MAX 0x7fffffff +N#endif +N /* +N * RAND_MAX: an integral constant expression, the value of which +N * is the maximum value returned by the rand function. +N */ +Nextern _ARMABI int __aeabi_MB_CUR_MAX(void); +Xextern __declspec(__nothrow) int __aeabi_MB_CUR_MAX(void); +N#define MB_CUR_MAX ( __aeabi_MB_CUR_MAX() ) +N /* +N * a positive integer expression whose value is the maximum number of bytes +N * in a multibyte character for the extended character set specified by the +N * current locale (category LC_CTYPE), and whose value is never greater +N * than MB_LEN_MAX. +N */ +N +N /* +N * If the compiler supports signalling nans as per N965 then it +N * will define __SUPPORT_SNAN__, in which case a user may define +N * _WANT_SNAN in order to obtain a compliant version of the strtod +N * family of functions. +N */ +N#if defined(__SUPPORT_SNAN__) && defined(_WANT_SNAN) +X#if 0L && 0L +S#pragma import(__use_snan) +N#endif +N +Nextern _ARMABI double atof(const char * /*nptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) double atof(const char * ) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to double +N * representation. +N * Returns: the converted value. +N */ +Nextern _ARMABI int atoi(const char * /*nptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int atoi(const char * ) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to int +N * representation. +N * Returns: the converted value. +N */ +Nextern _ARMABI long int atol(const char * /*nptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) long int atol(const char * ) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to long int +N * representation. +N * Returns: the converted value. +N */ +N#if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +X#if !0L || 1 +Nextern _ARMABI __LONGLONG atoll(const char * /*nptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) long long atoll(const char * ) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to +N * long long int representation. +N * Returns: the converted value. +N */ +N#endif +N +Nextern _ARMABI double strtod(const char * __restrict /*nptr*/, char ** __restrict /*endptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) double strtod(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to double +N * representation. First it decomposes the input string into three parts: +N * an initial, possibly empty, sequence of white-space characters (as +N * specified by the isspace function), a subject sequence resembling a +N * floating point constant; and a final string of one or more unrecognised +N * characters, including the terminating null character of the input string. +N * Then it attempts to convert the subject sequence to a floating point +N * number, and returns the result. A pointer to the final string is stored +N * in the object pointed to by endptr, provided that endptr is not a null +N * pointer. +N * Returns: the converted value if any. If no conversion could be performed, +N * zero is returned. If the correct value is outside the range of +N * representable values, plus or minus HUGE_VAL is returned +N * (according to the sign of the value), and the value of the macro +N * ERANGE is stored in errno. If the correct value would cause +N * underflow, zero is returned and the value of the macro ERANGE is +N * stored in errno. +N */ +N#if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +X#if !0L || 1 +Nextern _ARMABI float strtof(const char * __restrict /*nptr*/, char ** __restrict /*endptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) float strtof(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); +Nextern _ARMABI long double strtold(const char * __restrict /*nptr*/, char ** __restrict /*endptr*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) long double strtold(const char * __restrict , char ** __restrict ) __attribute__((__nonnull__(1))); +N /* +N * same as strtod, but return float and long double respectively. +N */ +N#endif +Nextern _ARMABI long int strtol(const char * __restrict /*nptr*/, +Xextern __declspec(__nothrow) long int strtol(const char * __restrict , +N char ** __restrict /*endptr*/, int /*base*/) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to long int +N * representation. First it decomposes the input string into three parts: +N * an initial, possibly empty, sequence of white-space characters (as +N * specified by the isspace function), a subject sequence resembling an +N * integer represented in some radix determined by the value of base, and a +N * final string of one or more unrecognised characters, including the +N * terminating null character of the input string. Then it attempts to +N * convert the subject sequence to an integer, and returns the result. +N * If the value of base is 0, the expected form of the subject sequence is +N * that of an integer constant (described in ANSI Draft, section 3.1.3.2), +N * optionally preceded by a '+' or '-' sign, but not including an integer +N * suffix. If the value of base is between 2 and 36, the expected form of +N * the subject sequence is a sequence of letters and digits representing an +N * integer with the radix specified by base, optionally preceded by a plus +N * or minus sign, but not including an integer suffix. The letters from a +N * (or A) through z (or Z) are ascribed the values 10 to 35; only letters +N * whose ascribed values are less than that of the base are permitted. If +N * the value of base is 16, the characters 0x or 0X may optionally precede +N * the sequence of letters and digits following the sign if present. +N * A pointer to the final string is stored in the object +N * pointed to by endptr, provided that endptr is not a null pointer. +N * Returns: the converted value if any. If no conversion could be performed, +N * zero is returned and nptr is stored in *endptr. +N * If the correct value is outside the range of +N * representable values, LONG_MAX or LONG_MIN is returned +N * (according to the sign of the value), and the value of the +N * macro ERANGE is stored in errno. +N */ +Nextern _ARMABI unsigned long int strtoul(const char * __restrict /*nptr*/, +Xextern __declspec(__nothrow) unsigned long int strtoul(const char * __restrict , +N char ** __restrict /*endptr*/, int /*base*/) __attribute__((__nonnull__(1))); +N /* +N * converts the initial part of the string pointed to by nptr to unsigned +N * long int representation. First it decomposes the input string into three +N * parts: an initial, possibly empty, sequence of white-space characters (as +N * determined by the isspace function), a subject sequence resembling an +N * unsigned integer represented in some radix determined by the value of +N * base, and a final string of one or more unrecognised characters, +N * including the terminating null character of the input string. Then it +N * attempts to convert the subject sequence to an unsigned integer, and +N * returns the result. If the value of base is zero, the expected form of +N * the subject sequence is that of an integer constant (described in ANSI +N * Draft, section 3.1.3.2), optionally preceded by a '+' or '-' sign, but +N * not including an integer suffix. If the value of base is between 2 and +N * 36, the expected form of the subject sequence is a sequence of letters +N * and digits representing an integer with the radix specified by base, +N * optionally preceded by a '+' or '-' sign, but not including an integer +N * suffix. The letters from a (or A) through z (or Z) stand for the values +N * 10 to 35; only letters whose ascribed values are less than that of the +N * base are permitted. If the value of base is 16, the characters 0x or 0X +N * may optionally precede the sequence of letters and digits following the +N * sign, if present. A pointer to the final string is stored in the object +N * pointed to by endptr, provided that endptr is not a null pointer. +N * Returns: the converted value if any. If no conversion could be performed, +N * zero is returned and nptr is stored in *endptr. +N * If the correct value is outside the range of +N * representable values, ULONG_MAX is returned, and the value of +N * the macro ERANGE is stored in errno. +N */ +N +N/* C90 reserves all names beginning with 'str' */ +Nextern _ARMABI __LONGLONG strtoll(const char * __restrict /*nptr*/, +Xextern __declspec(__nothrow) long long strtoll(const char * __restrict , +N char ** __restrict /*endptr*/, int /*base*/) +N __attribute__((__nonnull__(1))); +N /* +N * as strtol but returns a long long int value. If the correct value is +N * outside the range of representable values, LLONG_MAX or LLONG_MIN is +N * returned (according to the sign of the value), and the value of the +N * macro ERANGE is stored in errno. +N */ +Nextern _ARMABI unsigned __LONGLONG strtoull(const char * __restrict /*nptr*/, +Xextern __declspec(__nothrow) unsigned long long strtoull(const char * __restrict , +N char ** __restrict /*endptr*/, int /*base*/) +N __attribute__((__nonnull__(1))); +N /* +N * as strtoul but returns an unsigned long long int value. If the correct +N * value is outside the range of representable values, ULLONG_MAX is returned, +N * and the value of the macro ERANGE is stored in errno. +N */ +N +Nextern _ARMABI int rand(void); +Xextern __declspec(__nothrow) int rand(void); +N /* +N * Computes a sequence of pseudo-random integers in the range 0 to RAND_MAX. +N * Uses an additive generator (Mitchell & Moore) of the form: +N * Xn = (X[n-24] + X[n-55]) MOD 2^31 +N * This is described in section 3.2.2 of Knuth, vol 2. It's period is +N * in excess of 2^55 and its randomness properties, though unproven, are +N * conjectured to be good. Empirical testing since 1958 has shown no flaws. +N * Returns: a pseudo-random integer. +N */ +Nextern _ARMABI void srand(unsigned int /*seed*/); +Xextern __declspec(__nothrow) void srand(unsigned int ); +N /* +N * uses its argument as a seed for a new sequence of pseudo-random numbers +N * to be returned by subsequent calls to rand. If srand is then called with +N * the same seed value, the sequence of pseudo-random numbers is repeated. +N * If rand is called before any calls to srand have been made, the same +N * sequence is generated as when srand is first called with a seed value +N * of 1. +N */ +N +Nstruct _rand_state { int __x[57]; }; +Nextern _ARMABI int _rand_r(struct _rand_state *); +Xextern __declspec(__nothrow) int _rand_r(struct _rand_state *); +Nextern _ARMABI void _srand_r(struct _rand_state *, unsigned int); +Xextern __declspec(__nothrow) void _srand_r(struct _rand_state *, unsigned int); +Nstruct _ANSI_rand_state { int __x[1]; }; +Nextern _ARMABI int _ANSI_rand_r(struct _ANSI_rand_state *); +Xextern __declspec(__nothrow) int _ANSI_rand_r(struct _ANSI_rand_state *); +Nextern _ARMABI void _ANSI_srand_r(struct _ANSI_rand_state *, unsigned int); +Xextern __declspec(__nothrow) void _ANSI_srand_r(struct _ANSI_rand_state *, unsigned int); +N /* +N * Re-entrant variants of both flavours of rand, which operate on +N * an explicitly supplied state buffer. +N */ +N +Nextern _ARMABI void *calloc(size_t /*nmemb*/, size_t /*size*/); +Xextern __declspec(__nothrow) void *calloc(size_t , size_t ); +N /* +N * allocates space for an array of nmemb objects, each of whose size is +N * 'size'. The space is initialised to all bits zero. +N * Returns: either a null pointer or a pointer to the allocated space. +N */ +Nextern _ARMABI void free(void * /*ptr*/); +Xextern __declspec(__nothrow) void free(void * ); +N /* +N * causes the space pointed to by ptr to be deallocated (i.e., made +N * available for further allocation). If ptr is a null pointer, no action +N * occurs. Otherwise, if ptr does not match a pointer earlier returned by +N * calloc, malloc or realloc or if the space has been deallocated by a call +N * to free or realloc, the behaviour is undefined. +N */ +Nextern _ARMABI void *malloc(size_t /*size*/); +Xextern __declspec(__nothrow) void *malloc(size_t ); +N /* +N * allocates space for an object whose size is specified by 'size' and whose +N * value is indeterminate. +N * Returns: either a null pointer or a pointer to the allocated space. +N */ +Nextern _ARMABI void *realloc(void * /*ptr*/, size_t /*size*/); +Xextern __declspec(__nothrow) void *realloc(void * , size_t ); +N /* +N * changes the size of the object pointed to by ptr to the size specified by +N * size. The contents of the object shall be unchanged up to the lesser of +N * the new and old sizes. If the new size is larger, the value of the newly +N * allocated portion of the object is indeterminate. If ptr is a null +N * pointer, the realloc function behaves like a call to malloc for the +N * specified size. Otherwise, if ptr does not match a pointer earlier +N * returned by calloc, malloc or realloc, or if the space has been +N * deallocated by a call to free or realloc, the behaviour is undefined. +N * If the space cannot be allocated, the object pointed to by ptr is +N * unchanged. If size is zero and ptr is not a null pointer, the object it +N * points to is freed. +N * Returns: either a null pointer or a pointer to the possibly moved +N * allocated space. +N */ +N#if !defined(__STRICT_ANSI__) +X#if !0L +Nextern _ARMABI int posix_memalign(void ** /*ret*/, size_t /*alignment*/, size_t /*size*/); +Xextern __declspec(__nothrow) int posix_memalign(void ** , size_t , size_t ); +N /* +N * allocates space for an object of size 'size', aligned to a +N * multiple of 'alignment' (which must be a power of two and at +N * least 4). +N * +N * On success, a pointer to the allocated object is stored in +N * *ret, and zero is returned. On failure, the return value is +N * either ENOMEM (allocation failed because no suitable piece of +N * memory was available) or EINVAL (the 'alignment' parameter was +N * invalid). +N */ +N#endif +Ntypedef int (*__heapprt)(void *, char const *, ...); +Nextern _ARMABI void __heapstats(int (* /*dprint*/)(void * /*param*/, +Xextern __declspec(__nothrow) void __heapstats(int (* )(void * , +N char const * /*format*/, ...), +N void * /*param*/) __attribute__((__nonnull__(1))); +N /* +N * reports current heap statistics (eg. number of free blocks in +N * the free-list). Output is as implementation-defined free-form +N * text, provided via the dprint function. `param' gives an +N * extra data word to pass to dprint. You can call +N * __heapstats(fprintf,stdout) by casting fprintf to the above +N * function type; the typedef `__heapprt' is provided for this +N * purpose. +N * +N * `dprint' will not be called while the heap is being examined, +N * so it can allocate memory itself without trouble. +N */ +Nextern _ARMABI int __heapvalid(int (* /*dprint*/)(void * /*param*/, +Xextern __declspec(__nothrow) int __heapvalid(int (* )(void * , +N char const * /*format*/, ...), +N void * /*param*/, int /*verbose*/) __attribute__((__nonnull__(1))); +N /* +N * performs a consistency check on the heap. Errors are reported +N * through dprint, like __heapstats. If `verbose' is nonzero, +N * full diagnostic information on the heap state is printed out. +N * +N * This routine probably won't work if the heap isn't a +N * contiguous chunk (for example, if __user_heap_extend has been +N * overridden). +N * +N * `dprint' may be called while the heap is being examined or +N * even in an invalid state, so it must perform no memory +N * allocation. In particular, if `dprint' calls (or is) a stdio +N * function, the stream it outputs to must already have either +N * been written to or been setvbuf'ed, or else the system will +N * allocate buffer space for it on the first call to dprint. +N */ +Nextern _ARMABI_NORETURN void abort(void); +Xextern __declspec(__nothrow) __declspec(__noreturn) void abort(void); +N /* +N * causes abnormal program termination to occur, unless the signal SIGABRT +N * is being caught and the signal handler does not return. Whether open +N * output streams are flushed or open streams are closed or temporary +N * files removed is implementation-defined. +N * An implementation-defined form of the status 'unsuccessful termination' +N * is returned to the host environment by means of a call to +N * raise(SIGABRT). +N */ +N +Nextern _ARMABI int atexit(void (* /*func*/)(void)) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) int atexit(void (* )(void)) __attribute__((__nonnull__(1))); +N /* +N * registers the function pointed to by func, to be called without its +N * arguments at normal program termination. It is possible to register at +N * least 32 functions. +N * Returns: zero if the registration succeeds, nonzero if it fails. +N */ +N#if defined(__EDG__) && !defined(__GNUC__) +X#if 1L && !1L +S#define __LANGUAGE_LINKAGE_CHANGES_FUNCTION_TYPE +N#endif +N#if defined(__cplusplus) && defined(__LANGUAGE_LINKAGE_CHANGES_FUNCTION_TYPE) +X#if 0L && 0L +S /* atexit that takes a ptr to a function with C++ linkage +S * but not in GNU mode +S */ +S typedef void (* __C_exitfuncptr)(); +S extern "C++" +S inline int atexit(void (* __func)()) { +S return atexit((__C_exitfuncptr)__func); +S } +N#endif +N +N +Nextern _ARMABI_NORETURN void exit(int /*status*/); +Xextern __declspec(__nothrow) __declspec(__noreturn) void exit(int ); +N /* +N * causes normal program termination to occur. If more than one call to the +N * exit function is executed by a program, the behaviour is undefined. +N * First, all functions registered by the atexit function are called, in the +N * reverse order of their registration. +N * Next, all open output streams are flushed, all open streams are closed, +N * and all files created by the tmpfile function are removed. +N * Finally, control is returned to the host environment. If the value of +N * status is zero or EXIT_SUCCESS, an implementation-defined form of the +N * status 'successful termination' is returned. If the value of status is +N * EXIT_FAILURE, an implementation-defined form of the status +N * 'unsuccessful termination' is returned. Otherwise the status returned +N * is implementation-defined. +N */ +N +Nextern _ARMABI_NORETURN void _Exit(int /*status*/); +Xextern __declspec(__nothrow) __declspec(__noreturn) void _Exit(int ); +N /* +N * causes normal program termination to occur. No functions registered +N * by the atexit function are called. +N * In this implementation, all open output streams are flushed, all +N * open streams are closed, and all files created by the tmpfile function +N * are removed. +N * Control is returned to the host environment. The status returned to +N * the host environment is determined in the same way as for 'exit'. +N */ +N +Nextern _ARMABI char *getenv(const char * /*name*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *getenv(const char * ) __attribute__((__nonnull__(1))); +N /* +N * searches the environment list, provided by the host environment, for a +N * string that matches the string pointed to by name. The set of environment +N * names and the method for altering the environment list are +N * implementation-defined. +N * Returns: a pointer to a string associated with the matched list member. +N * The array pointed to shall not be modified by the program, but +N * may be overwritten by a subsequent call to the getenv function. +N * If the specified name cannot be found, a null pointer is +N * returned. +N */ +N +Nextern _ARMABI int system(const char * /*string*/); +Xextern __declspec(__nothrow) int system(const char * ); +N /* +N * passes the string pointed to by string to the host environment to be +N * executed by a command processor in an implementation-defined manner. +N * A null pointer may be used for string, to inquire whether a command +N * processor exists. +N * +N * Returns: If the argument is a null pointer, the system function returns +N * non-zero only if a command processor is available. If the +N * argument is not a null pointer, the system function returns an +N * implementation-defined value. +N */ +N +Nextern _ARMABI_THROW void *bsearch(const void * /*key*/, const void * /*base*/, +Xextern void *bsearch(const void * , const void * , +N size_t /*nmemb*/, size_t /*size*/, +N int (* /*compar*/)(const void *, const void *)) __attribute__((__nonnull__(1,2,5))); +N /* +N * searches an array of nmemb objects, the initial member of which is +N * pointed to by base, for a member that matches the object pointed to by +N * key. The size of each member of the array is specified by size. +N * The contents of the array shall be in ascending sorted order according to +N * a comparison function pointed to by compar, which is called with two +N * arguments that point to the key object and to an array member, in that +N * order. The function shall return an integer less than, equal to, or +N * greater than zero if the key object is considered, respectively, to be +N * less than, to match, or to be greater than the array member. +N * Returns: a pointer to a matching member of the array, or a null pointer +N * if no match is found. If two members compare as equal, which +N * member is matched is unspecified. +N */ +N#if defined(__cplusplus) && defined(__LANGUAGE_LINKAGE_CHANGES_FUNCTION_TYPE) +X#if 0L && 0L +S /* bsearch that takes a ptr to a function with C++ linkage +S * but not in GNU mode +S */ +S typedef int (* __C_compareprocptr)(const void *, const void *); +S extern "C++" +S void *bsearch(const void * __key, const void * __base, +S size_t __nmemb, size_t __size, +S int (* __compar)(const void *, const void *)) __attribute__((__nonnull__(1,2,5))); +S extern "C++" +S inline void *bsearch(const void * __key, const void * __base, +S size_t __nmemb, size_t __size, +S int (* __compar)(const void *, const void *)) { +S return bsearch(__key, __base, __nmemb, __size, (__C_compareprocptr)__compar); +S } +N#endif +N +N +Nextern _ARMABI_THROW void qsort(void * /*base*/, size_t /*nmemb*/, size_t /*size*/, +Xextern void qsort(void * , size_t , size_t , +N int (* /*compar*/)(const void *, const void *)) __attribute__((__nonnull__(1,4))); +N /* +N * sorts an array of nmemb objects, the initial member of which is pointed +N * to by base. The size of each object is specified by size. +N * The contents of the array shall be in ascending order according to a +N * comparison function pointed to by compar, which is called with two +N * arguments that point to the objects being compared. The function shall +N * return an integer less than, equal to, or greater than zero if the first +N * argument is considered to be respectively less than, equal to, or greater +N * than the second. If two members compare as equal, their order in the +N * sorted array is unspecified. +N */ +N +N#if defined(__cplusplus) && defined(__LANGUAGE_LINKAGE_CHANGES_FUNCTION_TYPE) +X#if 0L && 0L +S /* qsort that takes a ptr to a function with C++ linkage +S * but not in GNU mode +S */ +S extern "C++" +S void qsort(void * __base, size_t __nmemb, size_t __size, +S int (* __compar)(const void *, const void *)) __attribute__((__nonnull__(1,4))); +S extern "C++" +S inline void qsort(void * __base, size_t __nmemb, size_t __size, +S int (* __compar)(const void *, const void *)) { +S qsort(__base, __nmemb, __size, (__C_compareprocptr)__compar); +S } +N#endif +N +Nextern _ARMABI_PURE int abs(int /*j*/); +Xextern __declspec(__nothrow) __attribute__((const)) int abs(int ); +N /* +N * computes the absolute value of an integer j. If the result cannot be +N * represented, the behaviour is undefined. +N * Returns: the absolute value. +N */ +N +Nextern _ARMABI_PURE div_t div(int /*numer*/, int /*denom*/); +Xextern __declspec(__nothrow) __attribute__((const)) div_t div(int , int ); +N /* +N * computes the quotient and remainder of the division of the numerator +N * numer by the denominator denom. If the division is inexact, the resulting +N * quotient is the integer of lesser magnitude that is the nearest to the +N * algebraic quotient. If the result cannot be represented, the behaviour is +N * undefined; otherwise, quot * denom + rem shall equal numer. +N * Returns: a structure of type div_t, comprising both the quotient and the +N * remainder. the structure shall contain the following members, +N * in either order. +N * int quot; int rem; +N */ +Nextern _ARMABI_PURE long int labs(long int /*j*/); +Xextern __declspec(__nothrow) __attribute__((const)) long int labs(long int ); +N /* +N * computes the absolute value of an long integer j. If the result cannot be +N * represented, the behaviour is undefined. +N * Returns: the absolute value. +N */ +N#ifdef __cplusplus +S extern "C++" inline _ARMABI_PURE long abs(long int x) { return labs(x); } +N#endif +N +Nextern _ARMABI_PURE ldiv_t ldiv(long int /*numer*/, long int /*denom*/); +Xextern __declspec(__nothrow) __attribute__((const)) ldiv_t ldiv(long int , long int ); +N /* +N * computes the quotient and remainder of the division of the numerator +N * numer by the denominator denom. If the division is inexact, the sign of +N * the resulting quotient is that of the algebraic quotient, and the +N * magnitude of the resulting quotient is the largest integer less than the +N * magnitude of the algebraic quotient. If the result cannot be represented, +N * the behaviour is undefined; otherwise, quot * denom + rem shall equal +N * numer. +N * Returns: a structure of type ldiv_t, comprising both the quotient and the +N * remainder. the structure shall contain the following members, +N * in either order. +N * long int quot; long int rem; +N */ +N#ifdef __cplusplus +S extern "C++" inline _ARMABI_PURE ldiv_t div(long int __numer, long int __denom) { +S return ldiv(__numer, __denom); +S } +N#endif +N +N#if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +X#if !0L || 1 +Nextern _ARMABI_PURE __LONGLONG llabs(__LONGLONG /*j*/); +Xextern __declspec(__nothrow) __attribute__((const)) long long llabs(long long ); +N /* +N * computes the absolute value of a long long integer j. If the +N * result cannot be represented, the behaviour is undefined. +N * Returns: the absolute value. +N */ +N#ifdef __cplusplus +S extern "C++" inline _ARMABI_PURE __LONGLONG abs(__LONGLONG x) { return llabs(x); } +N#endif +N +Nextern _ARMABI_PURE lldiv_t lldiv(__LONGLONG /*numer*/, __LONGLONG /*denom*/); +Xextern __declspec(__nothrow) __attribute__((const)) lldiv_t lldiv(long long , long long ); +N /* +N * computes the quotient and remainder of the division of the numerator +N * numer by the denominator denom. If the division is inexact, the sign of +N * the resulting quotient is that of the algebraic quotient, and the +N * magnitude of the resulting quotient is the largest integer less than the +N * magnitude of the algebraic quotient. If the result cannot be represented, +N * the behaviour is undefined; otherwise, quot * denom + rem shall equal +N * numer. +N * Returns: a structure of type lldiv_t, comprising both the quotient and the +N * remainder. the structure shall contain the following members, +N * in either order. +N * long long quot; long long rem; +N */ +N#ifdef __cplusplus +S extern "C++" inline _ARMABI_PURE lldiv_t div(__LONGLONG __numer, __LONGLONG __denom) { +S return lldiv(__numer, __denom); +S } +N#endif +N#endif +N +N#if !(__ARM_NO_DEPRECATED_FUNCTIONS) +N/* +N * ARM real-time divide functions for guaranteed performance +N */ +Ntypedef struct __sdiv32by16 { int quot, rem; } __sdiv32by16; +Ntypedef struct __udiv32by16 { unsigned int quot, rem; } __udiv32by16; +N /* used int so that values return in separate regs, although 16-bit */ +Ntypedef struct __sdiv64by32 { int rem, quot; } __sdiv64by32; +N +N__value_in_regs extern _ARMABI_PURE __sdiv32by16 __rt_sdiv32by16( +X__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __sdiv32by16 __rt_sdiv32by16( +N int /*numer*/, +N short int /*denom*/); +N /* +N * Signed divide: (16-bit quot), (16-bit rem) = (32-bit) / (16-bit) +N */ +N__value_in_regs extern _ARMABI_PURE __udiv32by16 __rt_udiv32by16( +X__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __udiv32by16 __rt_udiv32by16( +N unsigned int /*numer*/, +N unsigned short /*denom*/); +N /* +N * Unsigned divide: (16-bit quot), (16-bit rem) = (32-bit) / (16-bit) +N */ +N__value_in_regs extern _ARMABI_PURE __sdiv64by32 __rt_sdiv64by32( +X__value_in_regs extern __declspec(__nothrow) __attribute__((const)) __sdiv64by32 __rt_sdiv64by32( +N int /*numer_h*/, unsigned int /*numer_l*/, +N int /*denom*/); +N /* +N * Signed divide: (32-bit quot), (32-bit rem) = (64-bit) / (32-bit) +N */ +N#endif +N +N/* +N * ARM floating-point mask/status function (for both hardfp and softfp) +N */ +Nextern _ARMABI unsigned int __fp_status(unsigned int /*mask*/, unsigned int /*flags*/); +Xextern __declspec(__nothrow) unsigned int __fp_status(unsigned int , unsigned int ); +N /* +N * mask and flags are bit-fields which correspond directly to the +N * floating point status register in the FPE/FPA and fplib. +N * __fp_status returns the current value of the status register, +N * and also sets the writable bits of the word +N * (the exception control and flag bytes) to: +N * +N * new = (old & ~mask) ^ flags; +N */ +N#define __fpsr_IXE 0x100000 +N#define __fpsr_UFE 0x80000 +N#define __fpsr_OFE 0x40000 +N#define __fpsr_DZE 0x20000 +N#define __fpsr_IOE 0x10000 +N +N#define __fpsr_IXC 0x10 +N#define __fpsr_UFC 0x8 +N#define __fpsr_OFC 0x4 +N#define __fpsr_DZC 0x2 +N#define __fpsr_IOC 0x1 +N +N/* +N * Multibyte Character Functions. +N * The behaviour of the multibyte character functions is affected by the +N * LC_CTYPE category of the current locale. For a state-dependent encoding, +N * each function is placed into its initial state by a call for which its +N * character pointer argument, s, is a null pointer. Subsequent calls with s +N * as other than a null pointer cause the internal state of the function to be +N * altered as necessary. A call with s as a null pointer causes these functions +N * to return a nonzero value if encodings have state dependency, and a zero +N * otherwise. After the LC_CTYPE category is changed, the shift state of these +N * functions is indeterminate. +N */ +Nextern _ARMABI int mblen(const char * /*s*/, size_t /*n*/); +Xextern __declspec(__nothrow) int mblen(const char * , size_t ); +N /* +N * If s is not a null pointer, the mblen function determines the number of +N * bytes compromising the multibyte character pointed to by s. Except that +N * the shift state of the mbtowc function is not affected, it is equivalent +N * to mbtowc((wchar_t *)0, s, n); +N * Returns: If s is a null pointer, the mblen function returns a nonzero or +N * zero value, if multibyte character encodings, respectively, do +N * or do not have state-dependent encodings. If s is not a null +N * pointer, the mblen function either returns a 0 (if s points to a +N * null character), or returns the number of bytes that compromise +N * the multibyte character (if the next n of fewer bytes form a +N * valid multibyte character), or returns -1 (they do not form a +N * valid multibyte character). +N */ +Nextern _ARMABI int mbtowc(wchar_t * __restrict /*pwc*/, +Xextern __declspec(__nothrow) int mbtowc(wchar_t * __restrict , +N const char * __restrict /*s*/, size_t /*n*/); +N /* +N * If s is not a null pointer, the mbtowc function determines the number of +N * bytes that compromise the multibyte character pointed to by s. It then +N * determines the code for value of type wchar_t that corresponds to that +N * multibyte character. (The value of the code corresponding to the null +N * character is zero). If the multibyte character is valid and pwc is not a +N * null pointer, the mbtowc function stores the code in the object pointed +N * to by pwc. At most n bytes of the array pointed to by s will be examined. +N * Returns: If s is a null pointer, the mbtowc function returns a nonzero or +N * zero value, if multibyte character encodings, respectively, do +N * or do not have state-dependent encodings. If s is not a null +N * pointer, the mbtowc function either returns a 0 (if s points to +N * a null character), or returns the number of bytes that +N * compromise the converted multibyte character (if the next n of +N * fewer bytes form a valid multibyte character), or returns -1 +N * (they do not form a valid multibyte character). +N */ +Nextern _ARMABI int wctomb(char * /*s*/, wchar_t /*wchar*/); +Xextern __declspec(__nothrow) int wctomb(char * , wchar_t ); +N /* +N * determines the number of bytes need to represent the multibyte character +N * corresponding to the code whose value is wchar (including any change in +N * shift state). It stores the multibyte character representation in the +N * array object pointed to by s (if s is not a null pointer). At most +N * MB_CUR_MAX characters are stored. If the value of wchar is zero, the +N * wctomb function is left in the initial shift state). +N * Returns: If s is a null pointer, the wctomb function returns a nonzero or +N * zero value, if multibyte character encodings, respectively, do +N * or do not have state-dependent encodings. If s is not a null +N * pointer, the wctomb function returns a -1 if the value of wchar +N * does not correspond to a valid multibyte character, or returns +N * the number of bytes that compromise the multibyte character +N * corresponding to the value of wchar. +N */ +N +N/* +N * Multibyte String Functions. +N * The behaviour of the multibyte string functions is affected by the LC_CTYPE +N * category of the current locale. +N */ +Nextern _ARMABI size_t mbstowcs(wchar_t * __restrict /*pwcs*/, +Xextern __declspec(__nothrow) size_t mbstowcs(wchar_t * __restrict , +N const char * __restrict /*s*/, size_t /*n*/) __attribute__((__nonnull__(2))); +N /* +N * converts a sequence of multibyte character that begins in the initial +N * shift state from the array pointed to by s into a sequence of +N * corresponding codes and stores not more than n codes into the array +N * pointed to by pwcs. No multibyte character that follow a null character +N * (which is converted into a code with value zero) will be examined or +N * converted. Each multibyte character is converted as if by a call to +N * mbtowc function, except that the shift state of the mbtowc function is +N * not affected. No more than n elements will be modified in the array +N * pointed to by pwcs. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: If an invalid multibyte character is encountered, the mbstowcs +N * function returns (size_t)-1. Otherwise, the mbstowcs function +N * returns the number of array elements modified, not including +N * a terminating zero code, if any. +N */ +Nextern _ARMABI size_t wcstombs(char * __restrict /*s*/, +Xextern __declspec(__nothrow) size_t wcstombs(char * __restrict , +N const wchar_t * __restrict /*pwcs*/, size_t /*n*/) __attribute__((__nonnull__(2))); +N /* +N * converts a sequence of codes that correspond to multibyte characters +N * from the array pointed to by pwcs into a sequence of multibyte +N * characters that begins in the initial shift state and stores these +N * multibyte characters into the array pointed to by s, stopping if a +N * multibyte character would exceed the limit of n total bytes or if a +N * null character is stored. Each code is converted as if by a call to the +N * wctomb function, except that the shift state of the wctomb function is +N * not affected. No more than n elements will be modified in the array +N * pointed to by s. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: If a code is encountered that does not correspond to a valid +N * multibyte character, the wcstombs function returns (size_t)-1. +N * Otherwise, the wcstombs function returns the number of bytes +N * modified, not including a terminating null character, if any. +N */ +N +Nextern _ARMABI void __use_realtime_heap(void); +Xextern __declspec(__nothrow) void __use_realtime_heap(void); +Nextern _ARMABI void __use_realtime_division(void); +Xextern __declspec(__nothrow) void __use_realtime_division(void); +Nextern _ARMABI void __use_two_region_memory(void); +Xextern __declspec(__nothrow) void __use_two_region_memory(void); +Nextern _ARMABI void __use_no_heap(void); +Xextern __declspec(__nothrow) void __use_no_heap(void); +Nextern _ARMABI void __use_no_heap_region(void); +Xextern __declspec(__nothrow) void __use_no_heap_region(void); +N +Nextern _ARMABI char const *__C_library_version_string(void); +Xextern __declspec(__nothrow) char const *__C_library_version_string(void); +Nextern _ARMABI int __C_library_version_number(void); +Xextern __declspec(__nothrow) int __C_library_version_number(void); +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STDLIB_DECLS */ +N +N #if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE +X #if _AEABI_PORTABILITY_LEVEL != 0 && !0L +S #define _AEABI_PORTABLE +N #endif +N +N #ifdef __cplusplus +S #ifndef __STDLIB_NO_EXPORTS +S #if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +S using ::std::atoll; +S using ::std::lldiv_t; +S #endif /* !defined(__STRICT_ANSI__) || __USE_C99_STDLIB */ +S using ::std::div_t; +S using ::std::ldiv_t; +S using ::std::atof; +S using ::std::atoi; +S using ::std::atol; +S using ::std::strtod; +S#if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +S using ::std::strtof; +S using ::std::strtold; +S#endif +S using ::std::strtol; +S using ::std::strtoul; +S using ::std::strtoll; +S using ::std::strtoull; +S using ::std::rand; +S using ::std::srand; +S using ::std::_rand_state; +S using ::std::_rand_r; +S using ::std::_srand_r; +S using ::std::_ANSI_rand_state; +S using ::std::_ANSI_rand_r; +S using ::std::_ANSI_srand_r; +S using ::std::calloc; +S using ::std::free; +S using ::std::malloc; +S using ::std::realloc; +S#if !defined(__STRICT_ANSI__) +S using ::std::posix_memalign; +S#endif +S using ::std::__heapprt; +S using ::std::__heapstats; +S using ::std::__heapvalid; +S using ::std::abort; +S using ::std::atexit; +S using ::std::exit; +S using ::std::_Exit; +S using ::std::getenv; +S using ::std::system; +S using ::std::bsearch; +S using ::std::qsort; +S using ::std::abs; +S using ::std::div; +S using ::std::labs; +S using ::std::ldiv; +S #if !defined(__STRICT_ANSI__) || __USE_C99_STDLIB +S using ::std::llabs; +S using ::std::lldiv; +S #endif /* !defined(__STRICT_ANSI__) || __USE_C99_STDLIB */ +S#if !(__ARM_NO_DEPRECATED_FUNCTIONS) +S using ::std::__sdiv32by16; +S using ::std::__udiv32by16; +S using ::std::__sdiv64by32; +S using ::std::__rt_sdiv32by16; +S using ::std::__rt_udiv32by16; +S using ::std::__rt_sdiv64by32; +S#endif +S using ::std::__fp_status; +S using ::std::mblen; +S using ::std::mbtowc; +S using ::std::wctomb; +S using ::std::mbstowcs; +S using ::std::wcstombs; +S using ::std::__use_realtime_heap; +S using ::std::__use_realtime_division; +S using ::std::__use_two_region_memory; +S using ::std::__use_no_heap; +S using ::std::__use_no_heap_region; +S using ::std::__C_library_version_string; +S using ::std::__C_library_version_number; +S using ::std::size_t; +S using ::std::__aeabi_MB_CUR_MAX; +S #endif /* __STDLIB_NO_EXPORTS */ +N #endif /* __cplusplus */ +N +N#undef __LONGLONG +N +N#endif /* __stdlib_h */ +N +N/* end of stdlib.h */ +L 4 "..\..\src\app\main.c" 2 +N#include "test_cfg_global.h" +L 1 "..\..\src\app\test_cfg_global.h" 1 +N/******************************************************************************* +N* +N* File: test_cfg_global.h +N* Description: 测试用例全局配置头文件 +N* Version: V0.1 +N* Date: 2021-05-01 +N* Author: kevin +N *******************************************************************************/ +N +N#ifndef __TEST_GLOBAL_CONFIG_H__ +N#define __TEST_GLOBAL_CONFIG_H__ +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/* 模块demo 宏定义 */ +N#define _MODULE_DEMO_ENABLE 0 +N#define _MODULE_DEMO_TIMER_EN 0 +N#define _MODULE_DEMO_DSI_TX_EN 0 +N#define _MODULE_DEMO_DSI_RX_EN 0 +N#define _MODULE_DEMO_PWM_EN 0 +N#define _MODULE_DEMO_SWIRE_EN 0 +N#define _MODULE_DEMO_WDG_EN 0 +N#define _MODULE_DEMO_GPIO_EN 0 +N#define _MODULE_DEMO_I2C_EN 0 +N#define _MODULE_DEMO_SPI_EN 0 +N#define _MODULE_DEMO_PWR_EN 0 +N/* ap demo 宏定义 */ +N#define _DEMO_GOOGLE_P8P_EN 1 +N +N +N#if _DEMO_GOOGLE_P8P_EN +X#if 1 +N #include "p8p_demo.h" +L 1 "..\..\src\app\P8P\p8p_demo.h" 1 +N/******************************************************************************* +N* Copyright (C) 2019-2022, TAU Systems (R),All Rights Reserved. +N* +N* File: P8P.h +N* Description GOOGLE P8P DEMO file +N* Version V0.1 +N* Date 2023-12-25 +N* Author Markin +N*******************************************************************************/ +N#ifndef __GOOGLE_P8P_DEMO_H__ +N#define __GOOGLE_P8P_DEMO_H__ +N +N +N#define PANEL_INIT_CODE_ARRAY 1 +N#define DDIC_FPS_SETTING 1 +N +N +N +Nvoid google_p8p_demo(void); +N +N#endif +L 37 "..\..\src\app\test_cfg_global.h" 2 +N#endif +N#endif +N +L 5 "..\..\src\app\main.c" 2 +N#include "tau_log.h" +L 1 "..\..\src\common\tau_log.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_log.h +N* Description log file +N* Version V0.1 +N* Date 2020-12-08 +N* Author linyw +N*******************************************************************************/ +N#ifndef _TAU_LOG_H_ +N#define _TAU_LOG_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h" 1 +N/* Copyright (C) ARM Ltd., 1999,2014 */ +N/* All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdint_h +N#define __stdint_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifdef __INT64_TYPE__ +S /* armclang predefines '__INT64_TYPE__' and '__INT64_C_SUFFIX__' */ +S #define __INT64 __INT64_TYPE__ +N #else +N /* armcc has builtin '__int64' which can be used in --strict mode */ +N #define __INT64 __int64 +N #define __INT64_C_SUFFIX__ ll +N #endif +N #define __PASTE2(x, y) x ## y +N #define __PASTE(x, y) __PASTE2(x, y) +N #define __INT64_C(x) __ESCAPE__(__PASTE(x, __INT64_C_SUFFIX__)) +N #define __UINT64_C(x) __ESCAPE__(__PASTE(x ## u, __INT64_C_SUFFIX__)) +N #if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X #if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N #else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N #endif +N +N #ifndef __STDINT_DECLS +N #define __STDINT_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N +N/* +N * 'signed' is redundant below, except for 'signed char' and if +N * the typedef is used to declare a bitfield. +N */ +N +N /* 7.18.1.1 */ +N +N /* exact-width signed integer types */ +Ntypedef signed char int8_t; +Ntypedef signed short int int16_t; +Ntypedef signed int int32_t; +Ntypedef signed __INT64 int64_t; +Xtypedef signed __int64 int64_t; +N +N /* exact-width unsigned integer types */ +Ntypedef unsigned char uint8_t; +Ntypedef unsigned short int uint16_t; +Ntypedef unsigned int uint32_t; +Ntypedef unsigned __INT64 uint64_t; +Xtypedef unsigned __int64 uint64_t; +N +N /* 7.18.1.2 */ +N +N /* smallest type of at least n bits */ +N /* minimum-width signed integer types */ +Ntypedef signed char int_least8_t; +Ntypedef signed short int int_least16_t; +Ntypedef signed int int_least32_t; +Ntypedef signed __INT64 int_least64_t; +Xtypedef signed __int64 int_least64_t; +N +N /* minimum-width unsigned integer types */ +Ntypedef unsigned char uint_least8_t; +Ntypedef unsigned short int uint_least16_t; +Ntypedef unsigned int uint_least32_t; +Ntypedef unsigned __INT64 uint_least64_t; +Xtypedef unsigned __int64 uint_least64_t; +N +N /* 7.18.1.3 */ +N +N /* fastest minimum-width signed integer types */ +Ntypedef signed int int_fast8_t; +Ntypedef signed int int_fast16_t; +Ntypedef signed int int_fast32_t; +Ntypedef signed __INT64 int_fast64_t; +Xtypedef signed __int64 int_fast64_t; +N +N /* fastest minimum-width unsigned integer types */ +Ntypedef unsigned int uint_fast8_t; +Ntypedef unsigned int uint_fast16_t; +Ntypedef unsigned int uint_fast32_t; +Ntypedef unsigned __INT64 uint_fast64_t; +Xtypedef unsigned __int64 uint_fast64_t; +N +N /* 7.18.1.4 integer types capable of holding object pointers */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +Stypedef signed __INT64 intptr_t; +Stypedef unsigned __INT64 uintptr_t; +N#else +Ntypedef signed int intptr_t; +Ntypedef unsigned int uintptr_t; +N#endif +N +N /* 7.18.1.5 greatest-width integer types */ +Ntypedef signed __LONGLONG intmax_t; +Xtypedef signed long long intmax_t; +Ntypedef unsigned __LONGLONG uintmax_t; +Xtypedef unsigned long long uintmax_t; +N +N +N#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) +X#if !0L || 0L +N +N /* 7.18.2.1 */ +N +N /* minimum values of exact-width signed integer types */ +N#define INT8_MIN -128 +N#define INT16_MIN -32768 +N#define INT32_MIN (~0x7fffffff) /* -2147483648 is unsigned */ +N#define INT64_MIN __INT64_C(~0x7fffffffffffffff) /* -9223372036854775808 is unsigned */ +N +N /* maximum values of exact-width signed integer types */ +N#define INT8_MAX 127 +N#define INT16_MAX 32767 +N#define INT32_MAX 2147483647 +N#define INT64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of exact-width unsigned integer types */ +N#define UINT8_MAX 255 +N#define UINT16_MAX 65535 +N#define UINT32_MAX 4294967295u +N#define UINT64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.2 */ +N +N /* minimum values of minimum-width signed integer types */ +N#define INT_LEAST8_MIN -128 +N#define INT_LEAST16_MIN -32768 +N#define INT_LEAST32_MIN (~0x7fffffff) +N#define INT_LEAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of minimum-width signed integer types */ +N#define INT_LEAST8_MAX 127 +N#define INT_LEAST16_MAX 32767 +N#define INT_LEAST32_MAX 2147483647 +N#define INT_LEAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of minimum-width unsigned integer types */ +N#define UINT_LEAST8_MAX 255 +N#define UINT_LEAST16_MAX 65535 +N#define UINT_LEAST32_MAX 4294967295u +N#define UINT_LEAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.3 */ +N +N /* minimum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MIN (~0x7fffffff) +N#define INT_FAST16_MIN (~0x7fffffff) +N#define INT_FAST32_MIN (~0x7fffffff) +N#define INT_FAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MAX 2147483647 +N#define INT_FAST16_MAX 2147483647 +N#define INT_FAST32_MAX 2147483647 +N#define INT_FAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of fastest minimum-width unsigned integer types */ +N#define UINT_FAST8_MAX 4294967295u +N#define UINT_FAST16_MAX 4294967295u +N#define UINT_FAST32_MAX 4294967295u +N#define UINT_FAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.4 */ +N +N /* minimum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MIN INT64_MIN +N#else +N#define INTPTR_MIN INT32_MIN +N#endif +N +N /* maximum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MAX INT64_MAX +N#else +N#define INTPTR_MAX INT32_MAX +N#endif +N +N /* maximum value of pointer-holding unsigned integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define UINTPTR_MAX UINT64_MAX +N#else +N#define UINTPTR_MAX UINT32_MAX +N#endif +N +N /* 7.18.2.5 */ +N +N /* minimum value of greatest-width signed integer type */ +N#define INTMAX_MIN __ESCAPE__(~0x7fffffffffffffffll) +N +N /* maximum value of greatest-width signed integer type */ +N#define INTMAX_MAX __ESCAPE__(9223372036854775807ll) +N +N /* maximum value of greatest-width unsigned integer type */ +N#define UINTMAX_MAX __ESCAPE__(18446744073709551615ull) +N +N /* 7.18.3 */ +N +N /* limits of ptrdiff_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define PTRDIFF_MIN INT64_MIN +S#define PTRDIFF_MAX INT64_MAX +N#else +N#define PTRDIFF_MIN INT32_MIN +N#define PTRDIFF_MAX INT32_MAX +N#endif +N +N /* limits of sig_atomic_t */ +N#define SIG_ATOMIC_MIN (~0x7fffffff) +N#define SIG_ATOMIC_MAX 2147483647 +N +N /* limit of size_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define SIZE_MAX UINT64_MAX +N#else +N#define SIZE_MAX UINT32_MAX +N#endif +N +N /* limits of wchar_t */ +N /* NB we have to undef and redef because they're defined in both +N * stdint.h and wchar.h */ +N#undef WCHAR_MIN +N#undef WCHAR_MAX +N +N#if defined(__WCHAR32) || (defined(__ARM_SIZEOF_WCHAR_T) && __ARM_SIZEOF_WCHAR_T == 4) +X#if 0L || (0L && __ARM_SIZEOF_WCHAR_T == 4) +S #define WCHAR_MIN 0 +S #define WCHAR_MAX 0xffffffffU +N#else +N #define WCHAR_MIN 0 +N #define WCHAR_MAX 65535 +N#endif +N +N /* limits of wint_t */ +N#define WINT_MIN (~0x7fffffff) +N#define WINT_MAX 2147483647 +N +N#endif /* __STDC_LIMIT_MACROS */ +N +N#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) +X#if !0L || 0L +N +N /* 7.18.4.1 macros for minimum-width integer constants */ +N#define INT8_C(x) (x) +N#define INT16_C(x) (x) +N#define INT32_C(x) (x) +N#define INT64_C(x) __INT64_C(x) +N +N#define UINT8_C(x) (x ## u) +N#define UINT16_C(x) (x ## u) +N#define UINT32_C(x) (x ## u) +N#define UINT64_C(x) __UINT64_C(x) +N +N /* 7.18.4.2 macros for greatest-width integer constants */ +N#define INTMAX_C(x) __ESCAPE__(x ## ll) +N#define UINTMAX_C(x) __ESCAPE__(x ## ull) +N +N#endif /* __STDC_CONSTANT_MACROS */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STDINT_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDINT_NO_EXPORTS +S using ::std::int8_t; +S using ::std::int16_t; +S using ::std::int32_t; +S using ::std::int64_t; +S using ::std::uint8_t; +S using ::std::uint16_t; +S using ::std::uint32_t; +S using ::std::uint64_t; +S using ::std::int_least8_t; +S using ::std::int_least16_t; +S using ::std::int_least32_t; +S using ::std::int_least64_t; +S using ::std::uint_least8_t; +S using ::std::uint_least16_t; +S using ::std::uint_least32_t; +S using ::std::uint_least64_t; +S using ::std::int_fast8_t; +S using ::std::int_fast16_t; +S using ::std::int_fast32_t; +S using ::std::int_fast64_t; +S using ::std::uint_fast8_t; +S using ::std::uint_fast16_t; +S using ::std::uint_fast32_t; +S using ::std::uint_fast64_t; +S using ::std::intptr_t; +S using ::std::uintptr_t; +S using ::std::intmax_t; +S using ::std::uintmax_t; +S #endif +N #endif /* __cplusplus */ +N +N#undef __INT64 +N#undef __LONGLONG +N +N#endif /* __stdint_h */ +N +N/* end of stdint.h */ +L 18 "..\..\src\common\tau_log.h" 2 +N#include +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h" 1 +N/* stdarg.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.8 */ +N/* Copyright (C) Codemist Ltd., 1988 */ +N/* Copyright (C) ARM Ltd., 1991-1999. All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdarg_h +N#define __stdarg_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifndef __STDARG_DECLS +N #define __STDARG_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS ::std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N/* +N * stdarg.h declares a type and defines macros for advancing through a +N * list of arguments whose number and types are not known to the called +N * function when it is translated. A function may be called with a variable +N * number of arguments of differing types. Its parameter list contains one or +N * more parameters. The rightmost parameter plays a special role in the access +N * mechanism, and will be called parmN in this description. +N */ +N +N/* N.B. is required to declare vfprintf() without defining */ +N/* va_list. Clearly the type __va_list there must keep in step. */ +N#ifdef __clang__ +S typedef __builtin_va_list va_list; +S #define va_start(ap, param) __builtin_va_start(ap, param) +S #define va_end(ap) __builtin_va_end(ap) +S #define va_arg(ap, type) __builtin_va_arg(ap, type) +S #if __STDC_VERSION__ >= 199900L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +S #define va_copy(dest, src) __builtin_va_copy(dest, src) +S #endif +N#else +N #ifdef __TARGET_ARCH_AARCH64 +S typedef struct __va_list { +S void *__stack; +S void *__gr_top; +S void *__vr_top; +S int __gr_offs; +S int __vr_offs; +S } va_list; +N #else +N typedef struct __va_list { void *__ap; } va_list; +N #endif +N /* +N * an array type suitable for holding information needed by the macro va_arg +N * and the function va_end. The called function shall declare a variable +N * (referred to as ap) having type va_list. The variable ap may be passed as +N * an argument to another function. +N * Note: va_list is an array type so that when an object of that type +N * is passed as an argument it gets passed by reference. +N */ +N #define va_start(ap, parmN) __va_start(ap, parmN) +N +N /* +N * The va_start macro shall be executed before any access to the unnamed +N * arguments. The parameter ap points to an object that has type va_list. +N * The va_start macro initialises ap for subsequent use by va_arg and +N * va_end. The parameter parmN is the identifier of the rightmost parameter +N * in the variable parameter list in the function definition (the one just +N * before the '...'). If the parameter parmN is declared with the register +N * storage class an error is given. +N * If parmN is a narrow type (char, short, float) an error is given in +N * strict ANSI mode, or a warning otherwise. +N * Returns: no value. +N */ +N #define va_arg(ap, type) __va_arg(ap, type) +N +N /* +N * The va_arg macro expands to an expression that has the type and value of +N * the next argument in the call. The parameter ap shall be the same as the +N * va_list ap initialised by va_start. Each invocation of va_arg modifies +N * ap so that successive arguments are returned in turn. The parameter +N * 'type' is a type name such that the type of a pointer to an object that +N * has the specified type can be obtained simply by postfixing a * to +N * 'type'. If type is a narrow type, an error is given in strict ANSI +N * mode, or a warning otherwise. If the type is an array or function type, +N * an error is given. +N * In non-strict ANSI mode, 'type' is allowed to be any expression. +N * Returns: The first invocation of the va_arg macro after that of the +N * va_start macro returns the value of the argument after that +N * specified by parmN. Successive invocations return the values of +N * the remaining arguments in succession. +N * The result is cast to 'type', even if 'type' is narrow. +N */ +N +N#define __va_copy(dest, src) ((void)((dest) = (src))) +N +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N /* va_copy is in C99 and non-strict C90 and non-strict C++ +N * __va_copy is always present. +N */ +N #define va_copy(dest, src) ((void)((dest) = (src))) +N +N /* The va_copy macro makes the va_list dest be a copy of +N * the va_list src, as if the va_start macro had been applied +N * to it followed by the same sequence of uses of the va_arg +N * macro as had previously been used to reach the present state +N * of src. +N */ +N#endif +N +N#define va_end(ap) __va_end(ap) +N /* +N * The va_end macro facilitates a normal return from the function whose +N * variable argument list was referenced by the expansion of va_start that +N * initialised the va_list ap. If the va_end macro is not invoked before +N * the return, the behaviour is undefined. +N * Returns: no value. +N */ +N#endif /* __clang__ */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N +N #ifdef __GNUC__ +N /* be cooperative with glibc */ +N typedef __CLIBNS va_list __gnuc_va_list; +X typedef va_list __gnuc_va_list; +N #define __GNUC_VA_LIST +N #undef __need___va_list +N #endif +N +N #endif /* __STDARG_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDARG_NO_EXPORTS +S using ::std::va_list; +S #endif +N #endif /* __cplusplus */ +N#endif +N +N/* end of stdarg.h */ +N +L 20 "..\..\src\common\tau_log.h" 2 +N#include "ArmCM0.h" +L 1 "..\..\src\sdk\include\M0\ArmCM0.h" 1 +N/**************************************************************************//** +N * @file ARMCM0.h +N * @brief CMSIS Core Peripheral Access Layer Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef ARMCM0_H +N#define ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +N +N/* ------------------------- Interrupt Number Definition ------------------------ */ +N +Ntypedef enum IRQn +N{ +N /* ------------------- Processor Exceptions Numbers ----------------------------- */ +N NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */ +N HardFault_IRQn = -13, /* 3 HardFault Interrupt */ +N SVCall_IRQn = -5, /* 11 SV Call Interrupt */ +N PendSV_IRQn = -2, /* 14 Pend SV Interrupt */ +N SysTick_IRQn = -1, /* 15 System Tick Interrupt */ +N +N /* ------------------- Processor Interrupt Numbers ------------------------------ */ +N VIDC_IRQn = 0, +N LCDC_IRQn = 1, +N MIPI_RX_IRQn = 2, +N MIPI_TX_IRQn = 3, +N MEMC_IRQn = 4, +N VPRE_IRQn = 5, +N FLSCTRL_IRQn = 6, +N DMA_IRQn = 7, +N TIMER0_IRQn = 8, +N TIMER1_IRQn = 9, +N TIMER2_IRQn = 10, +N TIMER3_IRQn = 11, +N WDG_IRQn = 12, +N UART_IRQn = 13, +N I2C0_IRQn = 14, +N I2C1_IRQn = 15, +N SPIS_IRQn = 16, +N SPIM_IRQn = 17, +N VPRE1_IRQn = 18, +N I2C2_IRQn = 19, +N OTP_IRQn = 20, +N SWIRE_IRQn = 21, +N PVD_IRQn = 22, +N AP_NRESET_IRQn = 23, +N EXTI_INT0_IRQn = 24, +N EXTI_INT1_IRQn = 25, +N EXTI_INT2_IRQn = 26, +N EXTI_INT3_IRQn = 27, +N EXTI_INT4_IRQn = 28, +N EXTI_INT5_IRQn = 29, +N EXTI_INT6_IRQn = 30, +N EXTI_INT7_IRQn = 31 +N /* Interrupts 10 .. 31 are left out */ +N} IRQn_Type; +N +N +N/* ================================================================================ */ +N/* ================ Processor and Core Peripheral Section ================ */ +N/* ================================================================================ */ +N +N/* ------- Start of section using anonymous unions and disabling warnings ------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma push +N#pragma anon_unions +N#elif defined (__ICCARM__) +X#elif 0L +S#pragma language=extended +S#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +S#pragma clang diagnostic push +S#pragma clang diagnostic ignored "-Wc11-extensions" +S#pragma clang diagnostic ignored "-Wreserved-id-macro" +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning 586 +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* -------- Configuration of Core Peripherals ----------------------------------- */ +N#define __CM0_REV 0x0000U /* Core revision r0p0 */ +N#define __MPU_PRESENT 0U /* no MPU present */ +N#define __VTOR_PRESENT 0U /* no VTOR present */ +N#define __NVIC_PRIO_BITS 2U /* Number of Bits used for Priority Levels */ //20220228 +N#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */ +N +N#define __FPU_PRESENT 0U /* Set to 1 if FPU is present */ +N#define __FPU_DP 0U /* single precision FPU */ +N#define __ICACHE_PRESENT 0U /* Set to 1 if I-CACHE is present */ +N#define __DCACHE_PRESENT 0U /* Set to 1 if D-CACHE is present */ +N#define __DSP_PRESENT 0U /* no DSP extension present */ +N +N#include "core_cm0.h" /* Processor and core peripherals */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 1 +N/**************************************************************************//** +N * @file core_cm0.h +N * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File +N * @version V5.0.6 +N * @date 13. March 2019 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2019 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CORE_CM0_H_GENERIC +N#define __CORE_CM0_H_GENERIC +N +N#include +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/** +N \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions +N CMSIS violates the following MISRA-C:2004 rules: +N +N \li Required Rule 8.5, object/function definition in header file.
+N Function definitions in header files are used to allow 'inlining'. +N +N \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+N Unions are used for effective representation of core registers. +N +N \li Advisory Rule 19.7, Function-like macro defined.
+N Function-like macros are used to allow more efficient code. +N */ +N +N +N/******************************************************************************* +N * CMSIS definitions +N ******************************************************************************/ +N/** +N \ingroup Cortex_M0 +N @{ +N */ +N +N#include "cmsis_version.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h" 1 +N/**************************************************************************//** +N * @file cmsis_version.h +N * @brief CMSIS Core(M) Version definitions +N * @version V5.0.2 +N * @date 19. April 2017 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2017 ARM Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CMSIS_VERSION_H +N#define __CMSIS_VERSION_H +N +N/* CMSIS Version definitions */ +N#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +N#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +N#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ +N __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +X#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | __CM_CMSIS_VERSION_SUB ) +N#endif +L 64 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N/* CMSIS CM0 definitions */ +N#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +N#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +N#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ +N __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ +X#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | __CM0_CMSIS_VERSION_SUB ) +N +N#define __CORTEX_M (0U) /*!< Cortex-M Core */ +N +N/** __FPU_USED indicates whether an FPU is used or not. +N This core does not support an FPU at all +N*/ +N#define __FPU_USED 0U +N +N#if defined ( __CC_ARM ) +X#if 1L +N #if defined __TARGET_FPU_VFP +X #if 0L +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +N #endif +N +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +X#elif 1L && (5060750 >= 6010050) +S #if defined __ARM_FP +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __GNUC__ ) +S #if defined (__VFP_FP__) && !defined(__SOFTFP__) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __ICCARM__ ) +S #if defined __ARMVFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TI_ARM__ ) +S #if defined __TI_VFP_SUPPORT__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TASKING__ ) +S #if defined __FPU_VFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __CSMC__ ) +S #if ( __CSMC__ & 0x400U) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +N#endif +N +N#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 1 +N/**************************************************************************//** +N * @file cmsis_compiler.h +N * @brief CMSIS compiler generic header file +N * @version V5.1.0 +N * @date 09. October 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_COMPILER_H +N#define __CMSIS_COMPILER_H +N +N#include +N +N/* +N * Arm Compiler 4/5 +N */ +N#if defined ( __CC_ARM ) +X#if 1L +N #include "cmsis_armcc.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h" 1 +N/**************************************************************************//** +N * @file cmsis_armcc.h +N * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file +N * @version V5.0.5 +N * @date 14. December 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_ARMCC_H +N#define __CMSIS_ARMCC_H +N +N +N#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) +X#if 1L && (5060750 < 400677) +S #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +N#endif +N +N/* CMSIS compiler control architecture macros */ +N#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ +N (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) +X#if ((0L && (__TARGET_ARCH_6_M == 1)) || (1L && (1 == 1)) ) +N #define __ARM_ARCH_6M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) +X#if (0L && (__TARGET_ARCH_7_M == 1)) +S #define __ARM_ARCH_7M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) +X#if (0L && (__TARGET_ARCH_7E_M == 1)) +S #define __ARM_ARCH_7EM__ 1 +N#endif +N +N /* __ARM_ARCH_8M_BASE__ not applicable */ +N /* __ARM_ARCH_8M_MAIN__ not applicable */ +N +N/* CMSIS compiler control DSP macros */ +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __ARM_FEATURE_DSP 1 +N#endif +N +N/* CMSIS compiler specific defines */ +N#ifndef __ASM +N #define __ASM __asm +N#endif +N#ifndef __INLINE +N #define __INLINE __inline +N#endif +N#ifndef __STATIC_INLINE +N #define __STATIC_INLINE static __inline +N#endif +N#ifndef __STATIC_FORCEINLINE +N #define __STATIC_FORCEINLINE static __forceinline +N#endif +N#ifndef __NO_RETURN +N #define __NO_RETURN __declspec(noreturn) +N#endif +N#ifndef __USED +N #define __USED __attribute__((used)) +N#endif +N#ifndef __WEAK +N #define __WEAK __attribute__((weak)) +N#endif +N#ifndef __PACKED +N #define __PACKED __attribute__((packed)) +N#endif +N#ifndef __PACKED_STRUCT +N #define __PACKED_STRUCT __packed struct +N#endif +N#ifndef __PACKED_UNION +N #define __PACKED_UNION __packed union +N#endif +N#ifndef __UNALIGNED_UINT32 /* deprecated */ +N #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +N#endif +N#ifndef __UNALIGNED_UINT16_WRITE +N #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT16_READ +N #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +N#endif +N#ifndef __UNALIGNED_UINT32_WRITE +N #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT32_READ +N #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +N#endif +N#ifndef __ALIGNED +N #define __ALIGNED(x) __attribute__((aligned(x))) +N#endif +N#ifndef __RESTRICT +N #define __RESTRICT __restrict +N#endif +N +N/* ########################### Core Function Access ########################### */ +N/** \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions +N @{ +N */ +N +N/** +N \brief Enable IRQ Interrupts +N \details Enables IRQ interrupts by clearing the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __enable_irq(); */ +N +N +N/** +N \brief Disable IRQ Interrupts +N \details Disables IRQ interrupts by setting the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __disable_irq(); */ +N +N/** +N \brief Get Control Register +N \details Returns the content of the Control Register. +N \return Control Register value +N */ +N__STATIC_INLINE uint32_t __get_CONTROL(void) +Xstatic __inline uint32_t __get_CONTROL(void) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N return(__regControl); +N} +N +N +N/** +N \brief Set Control Register +N \details Writes the given value to the Control Register. +N \param [in] control Control Register value to set +N */ +N__STATIC_INLINE void __set_CONTROL(uint32_t control) +Xstatic __inline void __set_CONTROL(uint32_t control) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N __regControl = control; +N} +N +N +N/** +N \brief Get IPSR Register +N \details Returns the content of the IPSR Register. +N \return IPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_IPSR(void) +Xstatic __inline uint32_t __get_IPSR(void) +N{ +N register uint32_t __regIPSR __ASM("ipsr"); +X register uint32_t __regIPSR __asm("ipsr"); +N return(__regIPSR); +N} +N +N +N/** +N \brief Get APSR Register +N \details Returns the content of the APSR Register. +N \return APSR Register value +N */ +N__STATIC_INLINE uint32_t __get_APSR(void) +Xstatic __inline uint32_t __get_APSR(void) +N{ +N register uint32_t __regAPSR __ASM("apsr"); +X register uint32_t __regAPSR __asm("apsr"); +N return(__regAPSR); +N} +N +N +N/** +N \brief Get xPSR Register +N \details Returns the content of the xPSR Register. +N \return xPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_xPSR(void) +Xstatic __inline uint32_t __get_xPSR(void) +N{ +N register uint32_t __regXPSR __ASM("xpsr"); +X register uint32_t __regXPSR __asm("xpsr"); +N return(__regXPSR); +N} +N +N +N/** +N \brief Get Process Stack Pointer +N \details Returns the current value of the Process Stack Pointer (PSP). +N \return PSP Register value +N */ +N__STATIC_INLINE uint32_t __get_PSP(void) +Xstatic __inline uint32_t __get_PSP(void) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N return(__regProcessStackPointer); +N} +N +N +N/** +N \brief Set Process Stack Pointer +N \details Assigns the given value to the Process Stack Pointer (PSP). +N \param [in] topOfProcStack Process Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +Xstatic __inline void __set_PSP(uint32_t topOfProcStack) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N __regProcessStackPointer = topOfProcStack; +N} +N +N +N/** +N \brief Get Main Stack Pointer +N \details Returns the current value of the Main Stack Pointer (MSP). +N \return MSP Register value +N */ +N__STATIC_INLINE uint32_t __get_MSP(void) +Xstatic __inline uint32_t __get_MSP(void) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N return(__regMainStackPointer); +N} +N +N +N/** +N \brief Set Main Stack Pointer +N \details Assigns the given value to the Main Stack Pointer (MSP). +N \param [in] topOfMainStack Main Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +Xstatic __inline void __set_MSP(uint32_t topOfMainStack) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N __regMainStackPointer = topOfMainStack; +N} +N +N +N/** +N \brief Get Priority Mask +N \details Returns the current state of the priority mask bit from the Priority Mask Register. +N \return Priority Mask value +N */ +N__STATIC_INLINE uint32_t __get_PRIMASK(void) +Xstatic __inline uint32_t __get_PRIMASK(void) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N return(__regPriMask); +N} +N +N +N/** +N \brief Set Priority Mask +N \details Assigns the given value to the Priority Mask Register. +N \param [in] priMask Priority Mask +N */ +N__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +Xstatic __inline void __set_PRIMASK(uint32_t priMask) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N __regPriMask = (priMask); +N} +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief Enable FIQ +S \details Enables FIQ interrupts by clearing the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __enable_fault_irq __enable_fiq +S +S +S/** +S \brief Disable FIQ +S \details Disables FIQ interrupts by setting the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __disable_fault_irq __disable_fiq +S +S +S/** +S \brief Get Base Priority +S \details Returns the current value of the Base Priority register. +S \return Base Priority register value +S */ +S__STATIC_INLINE uint32_t __get_BASEPRI(void) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S return(__regBasePri); +S} +S +S +S/** +S \brief Set Base Priority +S \details Assigns the given value to the Base Priority register. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S __regBasePri = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Set Base Priority with condition +S \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, +S or the new value increases the BASEPRI priority level. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +S{ +S register uint32_t __regBasePriMax __ASM("basepri_max"); +S __regBasePriMax = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Get Fault Mask +S \details Returns the current value of the Fault Mask register. +S \return Fault Mask register value +S */ +S__STATIC_INLINE uint32_t __get_FAULTMASK(void) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S return(__regFaultMask); +S} +S +S +S/** +S \brief Set Fault Mask +S \details Assigns the given value to the Fault Mask register. +S \param [in] faultMask Fault Mask value to set +S */ +S__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S __regFaultMask = (faultMask & (uint32_t)1U); +S} +S +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N +N/** +N \brief Get FPSCR +N \details Returns the current value of the Floating Point Status/Control register. +N \return Floating Point Status/Control register value +N */ +N__STATIC_INLINE uint32_t __get_FPSCR(void) +Xstatic __inline uint32_t __get_FPSCR(void) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S return(__regfpscr); +N#else +N return(0U); +N#endif +N} +N +N +N/** +N \brief Set FPSCR +N \details Assigns the given value to the Floating Point Status/Control register. +N \param [in] fpscr Floating Point Status/Control value to set +N */ +N__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +Xstatic __inline void __set_FPSCR(uint32_t fpscr) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S __regfpscr = (fpscr); +N#else +N (void)fpscr; +N#endif +N} +N +N +N/*@} end of CMSIS_Core_RegAccFunctions */ +N +N +N/* ########################## Core Instruction Access ######################### */ +N/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface +N Access to dedicated instructions +N @{ +N*/ +N +N/** +N \brief No Operation +N \details No Operation does nothing. This instruction can be used for code alignment purposes. +N */ +N#define __NOP __nop +N +N +N/** +N \brief Wait For Interrupt +N \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. +N */ +N#define __WFI __wfi +N +N +N/** +N \brief Wait For Event +N \details Wait For Event is a hint instruction that permits the processor to enter +N a low-power state until one of a number of events occurs. +N */ +N#define __WFE __wfe +N +N +N/** +N \brief Send Event +N \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. +N */ +N#define __SEV __sev +N +N +N/** +N \brief Instruction Synchronization Barrier +N \details Instruction Synchronization Barrier flushes the pipeline in the processor, +N so that all instructions following the ISB are fetched from cache or memory, +N after the instruction has been completed. +N */ +N#define __ISB() do {\ +N __schedule_barrier();\ +N __isb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __ISB() do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Synchronization Barrier +N \details Acts as a special kind of Data Memory Barrier. +N It completes when all explicit memory accesses before this instruction complete. +N */ +N#define __DSB() do {\ +N __schedule_barrier();\ +N __dsb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DSB() do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Memory Barrier +N \details Ensures the apparent order of the explicit memory operations before +N and after the instruction, without ensuring their completion. +N */ +N#define __DMB() do {\ +N __schedule_barrier();\ +N __dmb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DMB() do { __schedule_barrier(); __dmb(0xF); __schedule_barrier(); } while (0U) +N +N +N/** +N \brief Reverse byte order (32 bit) +N \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#define __REV __rev +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +X__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +N{ +N rev16 r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +X__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +N{ +N revsh r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Rotate Right in unsigned value (32 bit) +N \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. +N \param [in] op1 Value to rotate +N \param [in] op2 Number of Bits to rotate +N \return Rotated value +N */ +N#define __ROR __ror +N +N +N/** +N \brief Breakpoint +N \details Causes the processor to enter Debug state. +N Debug tools can use this to investigate system state when the instruction at a particular address is reached. +N \param [in] value is ignored by the processor. +N If required, a debugger can use it to store additional information about the breakpoint. +N */ +N#define __BKPT(value) __breakpoint(value) +N +N +N/** +N \brief Reverse bit order of value +N \details Reverses the bit order of the given value. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __RBIT __rbit +N#else +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +X__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +N{ +N uint32_t result; +N uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ +N +N result = value; /* r will be reversed bits of v; first get LSB of v */ +N for (value >>= 1U; value != 0U; value >>= 1U) +N { +N result <<= 1U; +N result |= value & 1U; +N s--; +N } +N result <<= s; /* shift when v's highest bits are zero */ +N return result; +N} +N#endif +N +N +N/** +N \brief Count leading zeros +N \details Counts the number of leading zeros of a data value. +N \param [in] value Value to count the leading zeros +N \return number of leading zeros in value +N */ +N#define __CLZ __clz +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief LDR Exclusive (8 bit) +S \details Executes a exclusive LDR instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +S#else +S #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (16 bit) +S \details Executes a exclusive LDR instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +S#else +S #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (32 bit) +S \details Executes a exclusive LDR instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +S#else +S #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (8 bit) +S \details Executes a exclusive STR instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXB(value, ptr) __strex(value, ptr) +S#else +S #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (16 bit) +S \details Executes a exclusive STR instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXH(value, ptr) __strex(value, ptr) +S#else +S #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (32 bit) +S \details Executes a exclusive STR instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXW(value, ptr) __strex(value, ptr) +S#else +S #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief Remove the exclusive lock +S \details Removes the exclusive lock which is created by LDREX. +S */ +S#define __CLREX __clrex +S +S +S/** +S \brief Signed Saturate +S \details Saturates a signed value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (1..32) +S \return Saturated value +S */ +S#define __SSAT __ssat +S +S +S/** +S \brief Unsigned Saturate +S \details Saturates an unsigned value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (0..31) +S \return Saturated value +S */ +S#define __USAT __usat +S +S +S/** +S \brief Rotate Right with Extend (32 bit) +S \details Moves each bit of a bitstring right by one bit. +S The carry input is shifted in at the left end of the bitstring. +S \param [in] value Value to rotate +S \return Rotated value +S */ +S#ifndef __NO_EMBEDDED_ASM +S__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +S{ +S rrx r0, r0 +S bx lr +S} +S#endif +S +S +S/** +S \brief LDRT Unprivileged (8 bit) +S \details Executes a Unprivileged LDRT instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (16 bit) +S \details Executes a Unprivileged LDRT instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (32 bit) +S \details Executes a Unprivileged LDRT instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) +S +S +S/** +S \brief STRT Unprivileged (8 bit) +S \details Executes a Unprivileged STRT instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRBT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (16 bit) +S \details Executes a Unprivileged STRT instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRHT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (32 bit) +S \details Executes a Unprivileged STRT instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRT(value, ptr) __strt(value, ptr) +S +N#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#else +N +N/** +N \brief Signed Saturate +N \details Saturates a signed value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (1..32) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +N{ +N if ((sat >= 1U) && (sat <= 32U)) +N { +N const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); +N const int32_t min = -1 - max ; +N if (val > max) +N { +N return max; +N } +N else if (val < min) +N { +N return min; +N } +N } +N return val; +N} +N +N/** +N \brief Unsigned Saturate +N \details Saturates an unsigned value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (0..31) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +N{ +N if (sat <= 31U) +N { +N const uint32_t max = ((1U << sat) - 1U); +N if (val > (int32_t)max) +N { +N return max; +N } +N else if (val < 0) +N { +N return 0U; +N } +N } +N return (uint32_t)val; +N} +N +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ +N +N +N/* ################### Compiler specific Intrinsics ########################### */ +N/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics +N Access to dedicated SIMD instructions +N @{ +N*/ +N +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S#define __SADD8 __sadd8 +S#define __QADD8 __qadd8 +S#define __SHADD8 __shadd8 +S#define __UADD8 __uadd8 +S#define __UQADD8 __uqadd8 +S#define __UHADD8 __uhadd8 +S#define __SSUB8 __ssub8 +S#define __QSUB8 __qsub8 +S#define __SHSUB8 __shsub8 +S#define __USUB8 __usub8 +S#define __UQSUB8 __uqsub8 +S#define __UHSUB8 __uhsub8 +S#define __SADD16 __sadd16 +S#define __QADD16 __qadd16 +S#define __SHADD16 __shadd16 +S#define __UADD16 __uadd16 +S#define __UQADD16 __uqadd16 +S#define __UHADD16 __uhadd16 +S#define __SSUB16 __ssub16 +S#define __QSUB16 __qsub16 +S#define __SHSUB16 __shsub16 +S#define __USUB16 __usub16 +S#define __UQSUB16 __uqsub16 +S#define __UHSUB16 __uhsub16 +S#define __SASX __sasx +S#define __QASX __qasx +S#define __SHASX __shasx +S#define __UASX __uasx +S#define __UQASX __uqasx +S#define __UHASX __uhasx +S#define __SSAX __ssax +S#define __QSAX __qsax +S#define __SHSAX __shsax +S#define __USAX __usax +S#define __UQSAX __uqsax +S#define __UHSAX __uhsax +S#define __USAD8 __usad8 +S#define __USADA8 __usada8 +S#define __SSAT16 __ssat16 +S#define __USAT16 __usat16 +S#define __UXTB16 __uxtb16 +S#define __UXTAB16 __uxtab16 +S#define __SXTB16 __sxtb16 +S#define __SXTAB16 __sxtab16 +S#define __SMUAD __smuad +S#define __SMUADX __smuadx +S#define __SMLAD __smlad +S#define __SMLADX __smladx +S#define __SMLALD __smlald +S#define __SMLALDX __smlaldx +S#define __SMUSD __smusd +S#define __SMUSDX __smusdx +S#define __SMLSD __smlsd +S#define __SMLSDX __smlsdx +S#define __SMLSLD __smlsld +S#define __SMLSLDX __smlsldx +S#define __SEL __sel +S#define __QADD __qadd +S#define __QSUB __qsub +S +S#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ +S ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +X#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +S +S#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ +S ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +X#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +S +S#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ +S ((int64_t)(ARG3) << 32U) ) >> 32U)) +X#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + ((int64_t)(ARG3) << 32U) ) >> 32U)) +S +N#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +N/*@} end of group CMSIS_SIMD_intrinsics */ +N +N +N#endif /* __CMSIS_ARMCC_H */ +L 35 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 2 +N +N +N/* +N * Arm Compiler 6.6 LTM (armclang) +N */ +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) +X#elif 1L && (5060750 >= 6010050) && (5060750 < 6100100) +S #include "cmsis_armclang_ltm.h" +S +S /* +S * Arm Compiler above 6.10.1 (armclang) +S */ +S#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) +S #include "cmsis_armclang.h" +S +S +S/* +S * GNU Compiler +S */ +S#elif defined ( __GNUC__ ) +S #include "cmsis_gcc.h" +S +S +S/* +S * IAR Compiler +S */ +S#elif defined ( __ICCARM__ ) +S #include +S +S +S/* +S * TI Arm Compiler +S */ +S#elif defined ( __TI_ARM__ ) +S #include +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __attribute__((packed)) +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __attribute__((packed)) +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __attribute__((packed)) +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __attribute__((packed)) T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __attribute__((aligned(x))) +S #endif +S #ifndef __RESTRICT +S #define __RESTRICT __restrict +S #endif +S +S +S/* +S * TASKING Compiler +S */ +S#elif defined ( __TASKING__ ) +S /* +S * The CMSIS functions have been implemented as intrinsics in the compiler. +S * Please use "carm -?i" to get an up to date list of all intrinsics, +S * Including the CMSIS ones. +S */ +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __packed__ +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __packed__ +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __packed__ +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __packed__ T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __align(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S/* +S * COSMIC Compiler +S */ +S#elif defined ( __CSMC__ ) +S #include +S +S #ifndef __ASM +S #define __ASM _asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S // NO RETURN is automatically detected hence no warning here +S #define __NO_RETURN +S #endif +S #ifndef __USED +S #warning No compiler specific solution for __USED. __USED is ignored. +S #define __USED +S #endif +S #ifndef __WEAK +S #define __WEAK __weak +S #endif +S #ifndef __PACKED +S #define __PACKED @packed +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT @packed struct +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION @packed union +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S @packed struct T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. +S #define __ALIGNED(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S#else +S #error Unknown compiler. +N#endif +N +N +N#endif /* __CMSIS_COMPILER_H */ +N +L 116 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_GENERIC */ +N +N#ifndef __CMSIS_GENERIC +N +N#ifndef __CORE_CM0_H_DEPENDANT +N#define __CORE_CM0_H_DEPENDANT +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/* check device defines and use defaults */ +N#if defined __CHECK_DEVICE_DEFINES +X#if 0L +S #ifndef __CM0_REV +S #define __CM0_REV 0x0000U +S #warning "__CM0_REV not defined in device header file; using default!" +S #endif +S +S #ifndef __NVIC_PRIO_BITS +S #define __NVIC_PRIO_BITS 2U +S #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" +S #endif +S +S #ifndef __Vendor_SysTickConfig +S #define __Vendor_SysTickConfig 0U +S #warning "__Vendor_SysTickConfig not defined in device header file; using default!" +S #endif +N#endif +N +N/* IO definitions (access restrictions to peripheral registers) */ +N/** +N \defgroup CMSIS_glob_defs CMSIS Global Defines +N +N IO Type Qualifiers are used +N \li to specify the access to peripheral variables. +N \li for automatic generation of peripheral register debug information. +N*/ +N#ifdef __cplusplus +S #define __I volatile /*!< Defines 'read only' permissions */ +N#else +N #define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N/* following defines should be used for structure members */ +N#define __IM volatile const /*! Defines 'read only' structure member permissions */ +N#define __OM volatile /*! Defines 'write only' structure member permissions */ +N#define __IOM volatile /*! Defines 'read / write' structure member permissions */ +N +N/*@} end of group Cortex_M0 */ +N +N +N +N/******************************************************************************* +N * Register Abstraction +N Core Register contain: +N - Core Register +N - Core NVIC Register +N - Core SCB Register +N - Core SysTick Register +N ******************************************************************************/ +N/** +N \defgroup CMSIS_core_register Defines and Type Definitions +N \brief Type definitions and defines for Cortex-M processor based devices. +N*/ +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CORE Status and Control Registers +N \brief Core Register type definitions. +N @{ +N */ +N +N/** +N \brief Union type to access the Application Program Status Register (APSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} APSR_Type; +N +N/* APSR Register Definitions */ +N#define APSR_N_Pos 31U /*!< APSR: N Position */ +N#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ +N +N#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +N#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ +N +N#define APSR_C_Pos 29U /*!< APSR: C Position */ +N#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ +N +N#define APSR_V_Pos 28U /*!< APSR: V Position */ +N#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ +N +N +N/** +N \brief Union type to access the Interrupt Program Status Register (IPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} IPSR_Type; +N +N/* IPSR Register Definitions */ +N#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +N#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Special-Purpose Program Status Registers (xPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +N uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ +N uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} xPSR_Type; +N +N/* xPSR Register Definitions */ +N#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +N#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ +N +N#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +N#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ +N +N#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +N#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ +N +N#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +N#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ +N +N#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +N#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ +N +N#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +N#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Control Registers (CONTROL). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:1; /*!< bit: 0 Reserved */ +N uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ +N uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} CONTROL_Type; +N +N/* CONTROL Register Definitions */ +N#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +N#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ +N +N/*@} end of group CMSIS_CORE */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) +N \brief Type definitions for the NVIC Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). +N */ +Ntypedef struct +N{ +N __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ +X volatile uint32_t ISER[1U]; +N uint32_t RESERVED0[31U]; +N __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ +X volatile uint32_t ICER[1U]; +N uint32_t RESERVED1[31U]; +N __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ +X volatile uint32_t ISPR[1U]; +N uint32_t RESERVED2[31U]; +N __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ +X volatile uint32_t ICPR[1U]; +N uint32_t RESERVED3[31U]; +N uint32_t RESERVED4[64U]; +N __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +X volatile uint32_t IP[8U]; +N} NVIC_Type; +N +N/*@} end of group CMSIS_NVIC */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SCB System Control Block (SCB) +N \brief Type definitions for the System Control Block Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the System Control Block (SCB). +N */ +Ntypedef struct +N{ +N __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ +X volatile const uint32_t CPUID; +N __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +X volatile uint32_t ICSR; +N uint32_t RESERVED0; +N __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ +X volatile uint32_t AIRCR; +N __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ +X volatile uint32_t SCR; +N __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ +X volatile uint32_t CCR; +N uint32_t RESERVED1; +N __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ +X volatile uint32_t SHP[2U]; +N __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +X volatile uint32_t SHCSR; +N} SCB_Type; +N +N/* SCB CPUID Register Definitions */ +N#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +N#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ +N +N#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +N#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ +N +N#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +N#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ +N +N#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +N#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ +N +N#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +N#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ +N +N/* SCB Interrupt Control State Register Definitions */ +N#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +N#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ +N +N#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +N#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ +N +N#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +N#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ +N +N#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +N#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ +N +N#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +N#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ +N +N#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +N#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ +N +N#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +N#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ +N +N#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +N#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ +N +N#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +N#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ +N +N/* SCB Application Interrupt and Reset Control Register Definitions */ +N#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +N#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ +N +N#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +N#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ +N +N#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +N#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ +N +N#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +N#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ +N +N#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +N#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ +N +N/* SCB System Control Register Definitions */ +N#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +N#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ +N +N#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +N#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ +N +N#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +N#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ +N +N/* SCB Configuration Control Register Definitions */ +N#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +N#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ +N +N#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +N#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ +N +N/* SCB System Handler Control and State Register Definitions */ +N#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +N#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ +N +N/*@} end of group CMSIS_SCB */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SysTick System Tick Timer (SysTick) +N \brief Type definitions for the System Timer Registers. +N @{ +N */ +N +N/** +N \brief Structure type to access the System Timer (SysTick). +N */ +Ntypedef struct +N{ +N __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ +X volatile uint32_t CTRL; +N __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ +X volatile uint32_t LOAD; +N __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ +X volatile uint32_t VAL; +N __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +X volatile const uint32_t CALIB; +N} SysTick_Type; +N +N/* SysTick Control / Status Register Definitions */ +N#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +N#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ +N +N#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +N#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ +N +N#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +N#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ +N +N#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +N#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ +N +N/* SysTick Reload Register Definitions */ +N#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +N#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ +N +N/* SysTick Current Register Definitions */ +N#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +N#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ +N +N/* SysTick Calibration Register Definitions */ +N#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +N#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ +N +N#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +N#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ +N +N#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +N#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ +N +N/*@} end of group CMSIS_SysTick */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) +N \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. +N Therefore they are not covered by the Cortex-M0 header file. +N @{ +N */ +N/*@} end of group CMSIS_CoreDebug */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_bitfield Core register bit field macros +N \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). +N @{ +N */ +N +N/** +N \brief Mask and shift a bit field value for use in a register bit range. +N \param[in] field Name of the register bit field. +N \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted value. +N*/ +N#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) +N +N/** +N \brief Mask and shift a register value to extract a bit filed value. +N \param[in] field Name of the register bit field. +N \param[in] value Value of register. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted bit field value. +N*/ +N#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) +N +N/*@} end of group CMSIS_core_bitfield */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_base Core Definitions +N \brief Definitions for base addresses, unions, and structures. +N @{ +N */ +N +N/* Memory mapping of Core Hardware */ +N#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +N#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +N#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +N#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ +N +N#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +N#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +N#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +N +N +N/*@} */ +N +N +N +N/******************************************************************************* +N * Hardware Abstraction Layer +N Core Function Interface contains: +N - Core NVIC Functions +N - Core SysTick Functions +N - Core Register Access Functions +N ******************************************************************************/ +N/** +N \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +N*/ +N +N +N +N/* ########################## NVIC functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_NVICFunctions NVIC Functions +N \brief Functions that manage interrupts and exceptions via the NVIC. +N @{ +N */ +N +N#ifdef CMSIS_NVIC_VIRTUAL +S #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE +S #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" +S #endif +S #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping +N #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping +N #define NVIC_EnableIRQ __NVIC_EnableIRQ +N #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ +N #define NVIC_DisableIRQ __NVIC_DisableIRQ +N #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ +N #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ +N #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +N/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ +N #define NVIC_SetPriority __NVIC_SetPriority +N #define NVIC_GetPriority __NVIC_GetPriority +N #define NVIC_SystemReset __NVIC_SystemReset +N#endif /* CMSIS_NVIC_VIRTUAL */ +N +N#ifdef CMSIS_VECTAB_VIRTUAL +S #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE +S #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" +S #endif +S #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetVector __NVIC_SetVector +N #define NVIC_GetVector __NVIC_GetVector +N#endif /* (CMSIS_VECTAB_VIRTUAL) */ +N +N#define NVIC_USER_IRQ_OFFSET 16 +N +N +N/* The following EXC_RETURN values are saved the LR on exception entry */ +N#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +N +N +N/* Interrupt Priorities are WORD accessible only under Armv6-M */ +N/* The following MACROS handle generation of the register offset and byte masks */ +N#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +N#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +N#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) +N +N#define __NVIC_SetPriorityGrouping(X) (void)(X) +N#define __NVIC_GetPriorityGrouping() (0U) +N +N/** +N \brief Enable Interrupt +N \details Enables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Get Interrupt Enable status +N \details Returns a device specific interrupt enable status from the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt is not enabled. +N \return 1 Interrupt is enabled. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Disable Interrupt +N \details Disables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N __DSB(); +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N __ISB(); +X do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); +N } +N} +N +N +N/** +N \brief Get Pending Interrupt +N \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt status is not pending. +N \return 1 Interrupt status is pending. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Set Pending Interrupt +N \details Sets the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Clear Pending Interrupt +N \details Clears the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Set Interrupt Priority +N \details Sets the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \param [in] priority Priority to set. +N \note The priority cannot be set for every processor exception. +N */ +N__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +Xstatic __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N else +N { +N SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N} +N +N +N/** +N \brief Get Interrupt Priority +N \details Reads the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Interrupt Priority. +N Value is aligned automatically to the implemented priority bits of the microcontroller. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +N{ +N +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N else +N { +N return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N} +N +N +N/** +N \brief Encode Priority +N \details Encodes the priority for an interrupt with the given priority group, +N preemptive priority value, and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +N \param [in] PriorityGroup Used priority group. +N \param [in] PreemptPriority Preemptive priority value (starting from 0). +N \param [in] SubPriority Subpriority value (starting from 0). +N \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). +N */ +N__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +Xstatic __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N return ( +N ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | +N ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) +N ); +N} +N +N +N/** +N \brief Decode Priority +N \details Decodes an interrupt priority value with a given priority group to +N preemptive priority value and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. +N \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). +N \param [in] PriorityGroup Used priority group. +N \param [out] pPreemptPriority Preemptive priority value (starting from 0). +N \param [out] pSubPriority Subpriority value (starting from 0). +N */ +N__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +Xstatic __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); +N *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +N} +N +N +N +N/** +N \brief Set Interrupt Vector +N \details Sets an interrupt vector in SRAM based interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N Address 0 must be mapped to SRAM. +N \param [in] IRQn Interrupt number +N \param [in] vector Address of interrupt handler function +N */ +N__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +Xstatic __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +N{ +N uint32_t vectors = 0x0U; +N (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; +X (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +N} +N +N +N/** +N \brief Get Interrupt Vector +N \details Reads an interrupt vector from interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Address of interrupt handler function +N */ +N__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +N{ +N uint32_t vectors = 0x0U; +N return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +X return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +N} +N +N +N/** +N \brief System Reset +N \details Initiates a system reset request to reset the MCU. +N */ +N__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +X__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +N{ +N __DSB(); /* Ensure all outstanding memory accesses included +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N buffered write are completed before reset */ +N SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | +N SCB_AIRCR_SYSRESETREQ_Msk); +X (1UL << 2U)); +N __DSB(); /* Ensure completion of memory access */ +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N +N for(;;) /* wait until reset */ +N { +N __NOP(); +X __nop(); +N } +N} +N +N/*@} end of CMSIS_Core_NVICFunctions */ +N +N +N/* ########################## FPU functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_FpuFunctions FPU Functions +N \brief Function that provides FPU type. +N @{ +N */ +N +N/** +N \brief get FPU type +N \details returns the FPU type +N \returns +N - \b 0: No FPU +N - \b 1: Single precision FPU +N - \b 2: Double + Single precision FPU +N */ +N__STATIC_INLINE uint32_t SCB_GetFPUType(void) +Xstatic __inline uint32_t SCB_GetFPUType(void) +N{ +N return 0U; /* No FPU */ +N} +N +N +N/*@} end of CMSIS_Core_FpuFunctions */ +N +N +N +N/* ################################## SysTick function ############################################ */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_SysTickFunctions SysTick Functions +N \brief Functions that configure the System. +N @{ +N */ +N +N#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) +X#if 1L && (0U == 0U) +N +N/** +N \brief System Tick Configuration +N \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. +N Counter is in free running mode to generate periodic interrupts. +N \param [in] ticks Number of ticks between two interrupts. +N \return 0 Function succeeded. +N \return 1 Function failed. +N \note When the variable __Vendor_SysTickConfig is set to 1, then the +N function SysTick_Config is not included. In this case, the file device.h +N must contain a vendor-specific implementation of this function. +N */ +N__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +Xstatic __inline uint32_t SysTick_Config(uint32_t ticks) +N{ +N if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) +X if ((ticks - 1UL) > (0xFFFFFFUL )) +N { +N return (1UL); /* Reload value impossible */ +N } +N +N SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); +N NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ +X __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); +N SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; +N SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | +N SysTick_CTRL_TICKINT_Msk | +X (1UL << 1U) | +N SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ +X (1UL ); +N return (0UL); /* Function successful */ +N} +N +N#endif +N +N/*@} end of CMSIS_Core_SysTickFunctions */ +N +N +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_DEPENDANT */ +N +N#endif /* __CMSIS_GENERIC */ +L 122 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N#include "system_ARMCM0.h" /* System Header */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h" 1 +N/**************************************************************************//** +N * @file system_ARMCM0.h +N * @brief CMSIS Device System Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef SYSTEM_ARMCM0_H +N#define SYSTEM_ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +Nextern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ +N +N +N/** +N \brief Setup the microcontroller system. +N +N Initialize the System and update the SystemCoreClock variable. +N */ +Nextern void SystemInit (void); +N +N +N/** +N \brief Update SystemCoreClock variable. +N +N Updates the SystemCoreClock with current core Clock retrieved from cpu registers. +N */ +Nextern void SystemCoreClockUpdate (void); +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* SYSTEM_ARMCM0_H */ +L 123 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N +N/* -------- End of section using anonymous unions and disabling warnings -------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma pop +N#elif defined (__ICCARM__) +X#elif 0L +S/* leave anonymous unions enabled */ +S#elif (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +S#pragma clang diagnostic pop +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning restore +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* In HS mode and when the DMA is used, all variables and data structures dealing +N with the DMA during the transaction process should be 4-bytes aligned */ +N#define DMA_WORD_ALIGN_EN +N#ifdef DMA_WORD_ALIGN_EN +N#if defined (__GNUC__) /* GNU Compiler */ +X#if 1L +N#define __ALIGN_END __attribute__ ((aligned (4))) +N#define __ALIGN_BEGIN +N#else +S#define __ALIGN_END +S#if defined (__CC_ARM) /* ARM Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#elif defined (__ICCARM__) /* IAR Compiler */ +S#define __ALIGN_BEGIN +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#endif /* __CC_ARM */ +N#endif /* __GNUC__ */ +N#else +S +S#define __ALIGN_BEGIN +S#define __ALIGN_END +S +S#define __ALIGN_END_1 __attribute__ ((aligned (1))) +N#endif /* DMA_WORD_ALIGN_EN */ +N +N/* __packed keyword used to decrease the data type alignment to 1-byte */ +N#if defined (__CC_ARM) /* ARM Compiler */ +X#if 1L +N#define __packed __packed +N#elif defined (__ICCARM__) /* IAR Compiler */ +X#elif 0L +S#define __packed __packed +S#elif defined ( __GNUC__ ) /* GNU Compiler */ +S#define __packed __attribute__ ((__packed__)) +S#define __weak __attribute__((weak)) +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __packed __unaligned +N#endif /* __CC_ARM */ +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* ARMCM0_H */ +L 21 "..\..\src\common\tau_log.h" 2 +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N#ifdef LOG_TAG +S#undef LOG_TAG +N#endif +N#define LOG_TAG "tau_log" +N#define LOG_CURREN_LEVEL kLOG_LEVEL_DBG /* 配置打印等级 TODO:每个模块可配置打印等级 */ +N#define LOG_BUF_SIZE (256) /* 配置打印缓存的大小 */ +N +N/* +N * Using the following three macros for conveniently logging. +N */ +N#define TAU_LOGD(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGD(format,...) do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGI(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGI(format,...) do { tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGE(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGE(format,...) do { tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief log打印等级枚举 +N* +N*/ +Ntypedef enum +N{ +N kLOG_LEVEL_DBG = 0, +N kLOG_LEVEL_INF, +N kLOG_LEVEL_ERR, +N kLOG_LEVEL_NONE /* 不打印任何参数 */ +N} log_level_e; +N +N/** +N* @brief log打印端口枚举 +N* +N*/ +Ntypedef enum +N{ +N LOG_PORT_UART0, /* 使用串口输出打印 */ +N LOG_PORT_UART1, /* 使用串口输出打印 */ +N LOG_PORT_SWD, /* 使用swd输出打印 */ +N LOG_PORT_UNKNOWN +N} log_port_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_init(uint32_t baud_rate, log_port_e log_port); +N +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_printf(log_level_e log_lv, const char *fmt, ...); +N +N#endif +L 6 "..\..\src\app\main.c" 2 +N#include "hal_system.h" +L 1 "..\..\src\sdk\include\hal_system.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_system.h +N* Description hal 通用系统接口头文件 +N* Version V0.1 +N* Date 2021-05-21 +N* Author lzy +N *******************************************************************************/ +N#ifndef __HAL_SYSTEM_H__ +N#define __HAL_SYSTEM_H__ +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_common.h" +L 1 "..\..\src\common\tau_common.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_common.h +N* Description 通用数据类型相关定义头文件 +N* Version V0.1 +N* Date 2020-09-07 +N* Author lzy +N *******************************************************************************/ +N +N#ifndef __TAU_COMMON_H +N#define __TAU_COMMON_H +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "stdint.h" +N#include "math.h" +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h" 1 +N/* +N * math.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.5 +N * Copyright (C) Codemist Ltd., 1988 +N * Copyright 1991-1998,2004-2006,2014 ARM Limited. All rights reserved +N */ +N +N/* +N * RCS $Revision$ Codemist 0.03 +N * Checkin $Date$ +N * Revising $Author: statham $ +N */ +N +N/* +N * Parts of this file are based upon fdlibm: +N * +N * ==================================================== +N * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +N * +N * Developed at SunSoft, a Sun Microsystems, Inc. business. +N * Permission to use, copy, modify, and distribute this +N * software is freely granted, provided that this notice +N * is preserved. +N * ==================================================== +N */ +N +N#ifndef __math_h +N#define __math_h +N#define __ARMCLIB_VERSION 5060037 +N +N#if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X#if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N#else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N#endif +N +N/* +N * Some of these declarations are new in C99. To access them in C++ +N * you can use -D__USE_C99_MATH (or -D__USE_C99_ALL). +N */ +N#ifndef __USE_C99_MATH +N #if defined(__USE_C99_ALL) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X #if 0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N #define __USE_C99_MATH 1 +N #endif +N#endif +N +N#define _ARMABI __declspec(__nothrow) +N#ifdef __TARGET_ARCH_AARCH64 +S# define _ARMABI_SOFTFP __declspec(__nothrow) +N#else +N# define _ARMABI_SOFTFP __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) +N# define __HAVE_LONGDOUBLE 1 +N#endif +N#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const)) +N#ifdef __FP_FENV_EXCEPTIONS +S# define _ARMABI_FPEXCEPT _ARMABI +N#else +N# define _ARMABI_FPEXCEPT _ARMABI __attribute__((const)) +N#endif +N +N#ifdef __cplusplus +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF inline +N#elif defined __GNUC__ || defined _USE_STATIC_INLINE +X#elif 1L || 0L +N#define _ARMABI_INLINE static __inline +N#define _ARMABI_INLINE_DEF static __inline +N#elif (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) +X#elif (1L && 199901L <= 199901L) +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF static inline +S#else +S#define _ARMABI_INLINE __inline +S#define _ARMABI_INLINE_DEF __inline +N#endif +N +N#ifdef __TARGET_ARCH_AARCH64 +S# define _SOFTFP +N#else +N# define _SOFTFP __attribute__((__pcs__("aapcs"))) +N#endif +N +N /* +N * If the compiler supports signalling nans as per N965 then it +N * will define __SUPPORT_SNAN__, in which case a user may define +N * _WANT_SNAN in order to obtain the nans function, as well as the +N * FP_NANS and FP_NANQ classification macros. +N */ +N#if defined(__SUPPORT_SNAN__) && defined(_WANT_SNAN) +X#if 0L && 0L +S#pragma import(__use_snan) +N#endif +N +N/* +N * Macros for our inline functions down below. +N * unsigned& __FLT(float x) - returns the bit pattern of x +N * unsigned& __HI(double x) - returns the bit pattern of the high part of x +N * (high part has exponent & sign bit in it) +N * unsigned& __LO(double x) - returns the bit pattern of the low part of x +N * +N * We can assign to __FLT, __HI, and __LO and the appropriate bits get set in +N * the floating point variable used. +N * +N * __HI & __LO are affected by the endianness and the target FPU. +N */ +N#define __FLT(x) (*(unsigned *)&(x)) +N#if defined(__ARM_BIG_ENDIAN) || defined(__BIG_ENDIAN) +X#if 0L || 0L +S# define __LO(x) (*(1 + (unsigned *)&(x))) +S# define __HI(x) (*(unsigned *)&(x)) +N#else /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N# define __HI(x) (*(1 + (unsigned *)&(x))) +N# define __LO(x) (*(unsigned *)&(x)) +N#endif /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N +N# ifndef __MATH_DECLS +N# define __MATH_DECLS +N +N +N/* +N * A set of functions that we don't actually want to put in the standard +N * namespace ever. These are all called by the C99 macros. As they're +N * not specified by any standard they can't belong in ::std::. The +N * macro #defines are below amongst the standard function declarations. +N * We only include these if we actually need them later on +N */ +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N# ifdef __cplusplus +S extern "C" { +N# endif /* __cplusplus */ +N +Nextern _SOFTFP unsigned __ARM_dcmp4(double /*x*/, double /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +Nextern _SOFTFP unsigned __ARM_fcmp4(float /*x*/, float /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); +N /* +N * Compare x and y and return the CPSR in r0. These means we can test for +N * result types with bit pattern matching. +N * +N * These are a copy of the declarations in rt_fp.h keep in sync. +N */ +N +Nextern _ARMABI_SOFTFP int __ARM_fpclassifyf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +Nextern _ARMABI_SOFTFP int __ARM_fpclassify(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); +N /* Classify x into NaN, infinite, normal, subnormal, zero */ +N /* Used by fpclassify macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinitef(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +N{ +N return ((__FLT(__x) >> 23) & 0xff) != 0xff; +X return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinite(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +N{ +N return ((__HI(__x) >> 20) & 0x7ff) != 0x7ff; +X return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +N} +N /* Return 1 if __x is finite, 0 otherwise */ +N /* Used by isfinite macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinff(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +N{ +N return (__FLT(__x) << 1) == 0xff000000; +X return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinf(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +N{ +N return ((__HI(__x) << 1) == 0xffe00000) && (__LO(__x) == 0); +X return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +N} +N /* Return 1 if __x is infinite, 0 otherwise */ +N /* Used by isinf macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreaterf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +N{ +N unsigned __f = __ARM_fcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreater(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +N{ +N unsigned __f = __ARM_dcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N /* +N * Compare __x and __y and return 1 if __x < __y or __x > __y, 0 otherwise +N * Used by islessgreater macro +N */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnanf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +N{ +N return (0x7f800000 - (__FLT(__x) & 0x7fffffff)) >> 31; +X return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnan(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +N{ +N unsigned __xf = __HI(__x) | ((__LO(__x) == 0) ? 0 : 1); +X unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); +N return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +N} +N /* Return 1 if __x is a NaN, 0 otherwise */ +N /* Used by isnan macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormalf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +N{ +N unsigned __xe = (__FLT(__x) >> 23) & 0xff; +X unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; +N return (__xe != 0xff) && (__xe != 0); +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormal(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +N{ +N unsigned __xe = (__HI(__x) >> 20) & 0x7ff; +X unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; +N return (__xe != 0x7ff) && (__xe != 0); +N} +N /* Return 1 if __x is a normalised number, 0 otherwise */ +N /* used by isnormal macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbitf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +N{ +N return __FLT(__x) >> 31; +X return (*(unsigned *)&(__x)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbit(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +N{ +N return __HI(__x) >> 31; +X return (*(1 + (unsigned *)&(__x))) >> 31; +N} +N /* Return signbit of __x */ +N /* Used by signbit macro */ +N +N# ifdef __cplusplus +S } /* extern "C" */ +N# endif /* __cplusplus */ +N#endif /* Strict ANSI */ +N +N# undef __CLIBNS +N +N# ifdef __cplusplus +S namespace std { +S# define __CLIBNS ::std:: +S extern "C" { +N# else +N# define __CLIBNS +N# endif /* __cplusplus */ +N +N +N#ifndef __has_builtin +N #define __has_builtin(x) 0 +N#endif +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N /* C99 additions */ +N typedef float float_t; +N typedef double double_t; +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VALF __builtin_inff() +S# define HUGE_VALL __builtin_infl() +S# define INFINITY __builtin_inff() +S# define NAN __builtin_nanf("") +N# else +N# define HUGE_VALF ((float)__INFINITY__) +N# define HUGE_VALL ((long double)__INFINITY__) +N# define INFINITY ((float)__INFINITY__) +N# define NAN (__ESCAPE__(0f_7FC00000)) +N#endif +N +N# define MATH_ERRNO 1 +N# define MATH_ERREXCEPT 2 +Nextern const int math_errhandling; +N#endif +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VAL __builtin_inf() +N#else +N# define HUGE_VAL ((double)__INFINITY__) +N#endif +N +Nextern _ARMABI double acos(double /*x*/); +Xextern __declspec(__nothrow) double acos(double ); +N /* computes the principal value of the arc cosine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* Returns: the arc cosine in the range 0 to Pi. */ +Nextern _ARMABI double asin(double /*x*/); +Xextern __declspec(__nothrow) double asin(double ); +N /* computes the principal value of the arc sine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* and -HUGE_VAL is returned. */ +N /* Returns: the arc sine in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI_PURE double atan(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double atan(double ); +N /* computes the principal value of the arc tangent of x */ +N /* Returns: the arc tangent in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI double atan2(double /*y*/, double /*x*/); +Xextern __declspec(__nothrow) double atan2(double , double ); +N /* computes the principal value of the arc tangent of y/x, using the */ +N /* signs of both arguments to determine the quadrant of the return value */ +N /* a domain error occurs if both args are zero, and -HUGE_VAL returned. */ +N /* Returns: the arc tangent of y/x, in the range -Pi to Pi. */ +N +Nextern _ARMABI double cos(double /*x*/); +Xextern __declspec(__nothrow) double cos(double ); +N /* computes the cosine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the cosine value. */ +Nextern _ARMABI double sin(double /*x*/); +Xextern __declspec(__nothrow) double sin(double ); +N /* computes the sine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the sine value. */ +N +Nextern void __use_accurate_range_reduction(void); +N /* reference this to select the larger, slower, but more accurate */ +N /* range reduction in sin, cos and tan */ +N +Nextern _ARMABI double tan(double /*x*/); +Xextern __declspec(__nothrow) double tan(double ); +N /* computes the tangent of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance */ +N /* Returns: the tangent value. */ +N /* if range error; returns HUGE_VAL. */ +N +Nextern _ARMABI double cosh(double /*x*/); +Xextern __declspec(__nothrow) double cosh(double ); +N /* computes the hyperbolic cosine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic cosine value. */ +N /* if range error; returns HUGE_VAL. */ +Nextern _ARMABI double sinh(double /*x*/); +Xextern __declspec(__nothrow) double sinh(double ); +N /* computes the hyperbolic sine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic sine value. */ +N /* if range error; returns -HUGE_VAL or HUGE_VAL depending */ +N /* on the sign of the argument */ +N +Nextern _ARMABI_PURE double tanh(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double tanh(double ); +N /* computes the hyperbolic tangent of x. */ +N /* Returns: the hyperbolic tangent value. */ +N +Nextern _ARMABI double exp(double /*x*/); +Xextern __declspec(__nothrow) double exp(double ); +N /* computes the exponential function of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the exponential value. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +N +Nextern _ARMABI double frexp(double /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); +N /* breaks a floating-point number into a normalised fraction and an */ +N /* integral power of 2. It stores the integer in the int object pointed */ +N /* to by exp. */ +N /* Returns: the value x, such that x is a double with magnitude in the */ +N /* interval 0.5 to 1.0 or zero, and value equals x times 2 raised to the */ +N /* power *exp. If value is zero, both parts of the result are zero. */ +N +Nextern _ARMABI double ldexp(double /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) double ldexp(double , int ); +N /* multiplies a floating-point number by an integral power of 2. */ +N /* A range error may occur. */ +N /* Returns: the value of x times 2 raised to the power of exp. */ +N /* if range error; HUGE_VAL is returned. */ +Nextern _ARMABI double log(double /*x*/); +Xextern __declspec(__nothrow) double log(double ); +N /* computes the natural logarithm of x. A domain error occurs if the */ +N /* argument is negative, and -HUGE_VAL is returned. A range error occurs */ +N /* if the argument is zero. */ +N /* Returns: the natural logarithm. */ +N /* if range error; -HUGE_VAL is returned. */ +Nextern _ARMABI double log10(double /*x*/); +Xextern __declspec(__nothrow) double log10(double ); +N /* computes the base-ten logarithm of x. A domain error occurs if the */ +N /* argument is negative. A range error occurs if the argument is zero. */ +N /* Returns: the base-ten logarithm. */ +Nextern _ARMABI double modf(double /*value*/, double * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); +N /* breaks the argument value into integral and fraction parts, each of */ +N /* which has the same sign as the argument. It stores the integral part */ +N /* as a double in the object pointed to by iptr. */ +N /* Returns: the signed fractional part of value. */ +N +Nextern _ARMABI double pow(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double pow(double , double ); +N /* computes x raised to the power of y. A domain error occurs if x is */ +N /* zero and y is less than or equal to zero, or if x is negative and y */ +N /* is not an integer, and -HUGE_VAL returned. A range error may occur. */ +N /* Returns: the value of x raised to the power of y. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +Nextern _ARMABI double sqrt(double /*x*/); +Xextern __declspec(__nothrow) double sqrt(double ); +N /* computes the non-negative square root of x. A domain error occurs */ +N /* if the argument is negative, and -HUGE_VAL returned. */ +N /* Returns: the value of the square root. */ +N +N#if defined(__TARGET_FPU_VFP_DOUBLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE double _sqrt(double __x) { return __sqrt(__x); } +N#else +N _ARMABI_INLINE double _sqrt(double __x) { return sqrt(__x); } +X static __inline double _sqrt(double __x) { return sqrt(__x); } +N#endif +N#if defined(__TARGET_FPU_VFP_SINGLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE float _sqrtf(float __x) { return __sqrtf(__x); } +N#else +N _ARMABI_INLINE float _sqrtf(float __x) { return (float)sqrt(__x); } +X static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } +N#endif +N /* With VFP, _sqrt and _sqrtf should expand inline as the native VFP square root +N * instructions. They will not behave like the C sqrt() function, because +N * they will report unusual values as IEEE exceptions (in fpmodes which +N * support IEEE exceptions) rather than in errno. These function names +N * are not specified in any standard. */ +N +Nextern _ARMABI_PURE double ceil(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double ceil(double ); +N /* computes the smallest integer not less than x. */ +N /* Returns: the smallest integer not less than x, expressed as a double. */ +Nextern _ARMABI_PURE double fabs(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fabs(double ); +N /* computes the absolute value of the floating-point number x. */ +N /* Returns: the absolute value of x. */ +N +Nextern _ARMABI_PURE double floor(double /*d*/); +Xextern __declspec(__nothrow) __attribute__((const)) double floor(double ); +N /* computes the largest integer not greater than x. */ +N /* Returns: the largest integer not greater than x, expressed as a double */ +N +Nextern _ARMABI double fmod(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fmod(double , double ); +N /* computes the floating-point remainder of x/y. */ +N /* Returns: the value x - i * y, for some integer i such that, if y is */ +N /* nonzero, the result has the same sign as x and magnitude */ +N /* less than the magnitude of y. If y is zero, a domain error */ +N /* occurs and -HUGE_VAL is returned. */ +N +N /* Additional Mathlib functions not defined by the ANSI standard. +N * Not guaranteed, and not necessarily very well tested. +N * C99 requires the user to include to use these functions +N * declaring them "by hand" is not sufficient +N * +N * The above statement is not completely true now. Some of the above +N * C99 functionality has been added as per the Standard, and (where +N * necessary) old Mathlib functionality withdrawn/changed. Before +N * including this header #define __ENABLE_MATHLIB_LEGACY if you want to +N * re-enable the legacy functionality. +N */ +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +Nextern _ARMABI double acosh(double /*x*/); +Xextern __declspec(__nothrow) double acosh(double ); +N /* +N * Inverse cosh. EDOM if argument < 1.0 +N */ +Nextern _ARMABI double asinh(double /*x*/); +Xextern __declspec(__nothrow) double asinh(double ); +N /* +N * Inverse sinh. +N */ +Nextern _ARMABI double atanh(double /*x*/); +Xextern __declspec(__nothrow) double atanh(double ); +N /* +N * Inverse tanh. EDOM if |argument| > 1.0 +N */ +Nextern _ARMABI double cbrt(double /*x*/); +Xextern __declspec(__nothrow) double cbrt(double ); +N /* +N * Cube root. +N */ +N_ARMABI_INLINE _ARMABI_PURE double copysign(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __HI(__x) = (__HI(__x) & 0x7fffffff) | (__HI(__y) & 0x80000000); +X (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); +N return __x; +N} +N_ARMABI_INLINE _ARMABI_PURE float copysignf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __FLT(__x) = (__FLT(__x) & 0x7fffffff) | (__FLT(__y) & 0x80000000); +X (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); +N return __x; +N} +Nextern _ARMABI double erf(double /*x*/); +Xextern __declspec(__nothrow) double erf(double ); +N /* +N * Error function. (2/sqrt(pi)) * integral from 0 to x of exp(-t*t) dt. +N */ +Nextern _ARMABI double erfc(double /*x*/); +Xextern __declspec(__nothrow) double erfc(double ); +N /* +N * 1-erf(x). (More accurate than just coding 1-erf(x), for large x.) +N */ +Nextern _ARMABI double expm1(double /*x*/); +Xextern __declspec(__nothrow) double expm1(double ); +N /* +N * exp(x)-1. (More accurate than just coding exp(x)-1, for small x.) +N */ +N#define fpclassify(x) \ +N ((sizeof(x) == sizeof(float)) ? \ +N __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +X#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +N /* +N * Classify a floating point number into one of the following values: +N */ +N#define FP_ZERO (0) +N#define FP_SUBNORMAL (4) +N#define FP_NORMAL (5) +N#define FP_INFINITE (3) +N#define FP_NAN (7) +N +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +S/* +S * Note that we'll never classify a number as FP_NAN, as all NaNs will +S * be either FP_NANQ or FP_NANS +S */ +S# define FP_NANQ (8) +S# define FP_NANS (9) +N#endif +N +N +Nextern _ARMABI double hypot(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double hypot(double , double ); +N /* +N * sqrt(x*x+y*y), ie the length of the vector (x,y) or the +N * hypotenuse of a right triangle whose other two sides are x +N * and y. Won't overflow unless the _answer_ is too big, even +N * if the intermediate x*x+y*y is too big. +N */ +Nextern _ARMABI int ilogb(double /*x*/); +Xextern __declspec(__nothrow) int ilogb(double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +Nextern _ARMABI int ilogbf(float /*x*/); +Xextern __declspec(__nothrow) int ilogbf(float ); +N /* +N * Like ilogb but takes a float +N */ +Nextern _ARMABI int ilogbl(long double /*x*/); +Xextern __declspec(__nothrow) int ilogbl(long double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +N#define FP_ILOGB0 (-0x7fffffff) /* ilogb(0) == -INT_MAX */ +N#define FP_ILOGBNAN ( 0x80000000) /* ilogb(NAN) == INT_MIN */ +N +N#define isfinite(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isfinitef(x) \ +N : __ARM_isfinite(x)) +X#define isfinite(x) ((sizeof(x) == sizeof(float)) ? __ARM_isfinitef(x) : __ARM_isfinite(x)) +N /* +N * Returns true if x is a finite number, size independent. +N */ +N +N#define isgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +X#define isgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +N /* +N * Returns true if x > y, throws no exceptions except on Signaling NaNs +N * +N * We want the C not set but the Z bit clear, V must be clear +N */ +N +N#define isgreaterequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +X#define isgreaterequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +N /* +N * Returns true if x >= y, throws no exceptions except on Signaling NaNs +N * +N * We just need to see if the C bit is set or not and ensure V clear +N */ +N +N#define isinf(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isinff(x) \ +N : __ARM_isinf(x)) +X#define isinf(x) ((sizeof(x) == sizeof(float)) ? __ARM_isinff(x) : __ARM_isinf(x)) +N /* +N * Returns true if x is an infinity, size independent. +N */ +N +N#define isless(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +X#define isless(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +N /* +N * Returns true if x < y, throws no exceptions except on Signaling NaNs +N * +N * We're less than if N is set, V clear +N */ +N +N#define islessequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) \ +N : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +X#define islessequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +N /* +N * Returns true if x <= y, throws no exceptions except on Signaling NaNs +N * +N * We're less than or equal if one of N or Z is set, V clear +N */ +N +N#define islessgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? __ARM_islessgreaterf((x), (y)) \ +N : __ARM_islessgreater((x), (y))) +X#define islessgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? __ARM_islessgreaterf((x), (y)) : __ARM_islessgreater((x), (y))) +N /* +N * Returns true if x <> y, throws no exceptions except on Signaling NaNs +N * Unfortunately this test is too complicated to do in a macro without +N * evaluating x & y twice. Shame really... +N */ +N +N#define isnan(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnanf(x) \ +N : __ARM_isnan(x)) +X#define isnan(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnanf(x) : __ARM_isnan(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isnormal(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnormalf(x) \ +N : __ARM_isnormal(x)) +X#define isnormal(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnormalf(x) : __ARM_isnormal(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isunordered(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +X#define isunordered(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +N /* +N * Returns true if x ? y, throws no exceptions except on Signaling NaNs +N * Unordered occurs if and only if the V bit is set +N */ +N +Nextern _ARMABI double lgamma (double /*x*/); +Xextern __declspec(__nothrow) double lgamma (double ); +N /* +N * The log of the absolute value of the gamma function of x. The sign +N * of the gamma function of x is returned in the global `signgam'. +N */ +Nextern _ARMABI double log1p(double /*x*/); +Xextern __declspec(__nothrow) double log1p(double ); +N /* +N * log(1+x). (More accurate than just coding log(1+x), for small x.) +N */ +Nextern _ARMABI double logb(double /*x*/); +Xextern __declspec(__nothrow) double logb(double ); +N /* +N * Like ilogb but returns a double. +N */ +Nextern _ARMABI float logbf(float /*x*/); +Xextern __declspec(__nothrow) float logbf(float ); +N /* +N * Like logb but takes and returns float +N */ +Nextern _ARMABI long double logbl(long double /*x*/); +Xextern __declspec(__nothrow) long double logbl(long double ); +N /* +N * Like logb but takes and returns long double +N */ +Nextern _ARMABI double nextafter(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double nextafter(double , double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nextafterf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float nextafterf(float , float ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nextafterl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nextafterl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double nexttoward(double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) double nexttoward(double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nexttowardf(float /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) float nexttowardf(float , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nexttowardl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nexttowardl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double remainder(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double remainder(double , double ); +N /* +N * Returns the remainder of x by y, in the IEEE 754 sense. +N */ +Nextern _ARMABI_FPEXCEPT double rint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double rint(double ); +N /* +N * Rounds x to an integer, in the IEEE 754 sense. +N */ +Nextern _ARMABI double scalbln(double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) double scalbln(double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalblnf(float /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) float scalblnf(float , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalblnl(long double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) long double scalblnl(long double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI double scalbn(double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) double scalbn(double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalbnf(float /*x*/, int /*n*/); +Xextern __declspec(__nothrow) float scalbnf(float , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalbnl(long double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) long double scalbnl(long double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +N#define signbit(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_signbitf(x) \ +N : __ARM_signbit(x)) +X#define signbit(x) ((sizeof(x) == sizeof(float)) ? __ARM_signbitf(x) : __ARM_signbit(x)) +N /* +N * Returns the signbit of x, size independent macro +N */ +N#endif +N +N/* C99 float versions of functions. math.h has always reserved these +N identifiers for this purpose (7.13.4). */ +Nextern _ARMABI_PURE float _fabsf(float); /* old ARM name */ +Xextern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +N_ARMABI_INLINE _ARMABI_PURE float fabsf(float __f) { return _fabsf(__f); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +Nextern _ARMABI float sinf(float /*x*/); +Xextern __declspec(__nothrow) float sinf(float ); +Nextern _ARMABI float cosf(float /*x*/); +Xextern __declspec(__nothrow) float cosf(float ); +Nextern _ARMABI float tanf(float /*x*/); +Xextern __declspec(__nothrow) float tanf(float ); +Nextern _ARMABI float acosf(float /*x*/); +Xextern __declspec(__nothrow) float acosf(float ); +Nextern _ARMABI float asinf(float /*x*/); +Xextern __declspec(__nothrow) float asinf(float ); +Nextern _ARMABI float atanf(float /*x*/); +Xextern __declspec(__nothrow) float atanf(float ); +Nextern _ARMABI float atan2f(float /*y*/, float /*x*/); +Xextern __declspec(__nothrow) float atan2f(float , float ); +Nextern _ARMABI float sinhf(float /*x*/); +Xextern __declspec(__nothrow) float sinhf(float ); +Nextern _ARMABI float coshf(float /*x*/); +Xextern __declspec(__nothrow) float coshf(float ); +Nextern _ARMABI float tanhf(float /*x*/); +Xextern __declspec(__nothrow) float tanhf(float ); +Nextern _ARMABI float expf(float /*x*/); +Xextern __declspec(__nothrow) float expf(float ); +Nextern _ARMABI float logf(float /*x*/); +Xextern __declspec(__nothrow) float logf(float ); +Nextern _ARMABI float log10f(float /*x*/); +Xextern __declspec(__nothrow) float log10f(float ); +Nextern _ARMABI float powf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float powf(float , float ); +Nextern _ARMABI float sqrtf(float /*x*/); +Xextern __declspec(__nothrow) float sqrtf(float ); +Nextern _ARMABI float ldexpf(float /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) float ldexpf(float , int ); +Nextern _ARMABI float frexpf(float /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +Nextern _ARMABI_PURE float ceilf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +Nextern _ARMABI_PURE float floorf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +Nextern _ARMABI float fmodf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fmodf(float , float ); +Nextern _ARMABI float modff(float /*value*/, float * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); +N +N/* C99 long double versions of functions. */ +N/* (also need to have 'using' declarations below) */ +N#define _ARMDEFLD1(f) \ +N _ARMABI long double f##l(long double /*x*/) +X#define _ARMDEFLD1(f) _ARMABI long double f##l(long double ) +N +N#define _ARMDEFLD1P(f, T) \ +N _ARMABI long double f##l(long double /*x*/, T /*p*/) +X#define _ARMDEFLD1P(f, T) _ARMABI long double f##l(long double , T ) +N +N#define _ARMDEFLD2(f) \ +N _ARMABI long double f##l(long double /*x*/, long double /*y*/) +X#define _ARMDEFLD2(f) _ARMABI long double f##l(long double , long double ) +N +N/* +N * Long double versions of C89 functions can be defined +N * unconditionally, because C89 reserved these names in "future +N * library directions". +N */ +N_ARMDEFLD1(acos); +X__declspec(__nothrow) long double acosl(long double ); +N_ARMDEFLD1(asin); +X__declspec(__nothrow) long double asinl(long double ); +N_ARMDEFLD1(atan); +X__declspec(__nothrow) long double atanl(long double ); +N_ARMDEFLD2(atan2); +X__declspec(__nothrow) long double atan2l(long double , long double ); +N_ARMDEFLD1(ceil); +X__declspec(__nothrow) long double ceill(long double ); +N_ARMDEFLD1(cos); +X__declspec(__nothrow) long double cosl(long double ); +N_ARMDEFLD1(cosh); +X__declspec(__nothrow) long double coshl(long double ); +N_ARMDEFLD1(exp); +X__declspec(__nothrow) long double expl(long double ); +N_ARMDEFLD1(fabs); +X__declspec(__nothrow) long double fabsl(long double ); +N_ARMDEFLD1(floor); +X__declspec(__nothrow) long double floorl(long double ); +N_ARMDEFLD2(fmod); +X__declspec(__nothrow) long double fmodl(long double , long double ); +N_ARMDEFLD1P(frexp, int*) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +N_ARMDEFLD1P(ldexp, int); +X__declspec(__nothrow) long double ldexpl(long double , int ); +N_ARMDEFLD1(log); +X__declspec(__nothrow) long double logl(long double ); +N_ARMDEFLD1(log10); +X__declspec(__nothrow) long double log10l(long double ); +N_ARMABI long double modfl(long double /*x*/, long double * /*p*/) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +N_ARMDEFLD2(pow); +X__declspec(__nothrow) long double powl(long double , long double ); +N_ARMDEFLD1(sin); +X__declspec(__nothrow) long double sinl(long double ); +N_ARMDEFLD1(sinh); +X__declspec(__nothrow) long double sinhl(long double ); +N_ARMDEFLD1(sqrt); +X__declspec(__nothrow) long double sqrtl(long double ); +N_ARMDEFLD1(tan); +X__declspec(__nothrow) long double tanl(long double ); +N_ARMDEFLD1(tanh); +X__declspec(__nothrow) long double tanhl(long double ); +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +N/* +N * C99 float and long double versions of extra-C89 functions. +N */ +Nextern _ARMABI float acoshf(float /*x*/); +Xextern __declspec(__nothrow) float acoshf(float ); +N_ARMDEFLD1(acosh); +X__declspec(__nothrow) long double acoshl(long double ); +Nextern _ARMABI float asinhf(float /*x*/); +Xextern __declspec(__nothrow) float asinhf(float ); +N_ARMDEFLD1(asinh); +X__declspec(__nothrow) long double asinhl(long double ); +Nextern _ARMABI float atanhf(float /*x*/); +Xextern __declspec(__nothrow) float atanhf(float ); +N_ARMDEFLD1(atanh); +X__declspec(__nothrow) long double atanhl(long double ); +N_ARMDEFLD2(copysign); +X__declspec(__nothrow) long double copysignl(long double , long double ); +Nextern _ARMABI float cbrtf(float /*x*/); +Xextern __declspec(__nothrow) float cbrtf(float ); +N_ARMDEFLD1(cbrt); +X__declspec(__nothrow) long double cbrtl(long double ); +Nextern _ARMABI float erff(float /*x*/); +Xextern __declspec(__nothrow) float erff(float ); +N_ARMDEFLD1(erf); +X__declspec(__nothrow) long double erfl(long double ); +Nextern _ARMABI float erfcf(float /*x*/); +Xextern __declspec(__nothrow) float erfcf(float ); +N_ARMDEFLD1(erfc); +X__declspec(__nothrow) long double erfcl(long double ); +Nextern _ARMABI float expm1f(float /*x*/); +Xextern __declspec(__nothrow) float expm1f(float ); +N_ARMDEFLD1(expm1); +X__declspec(__nothrow) long double expm1l(long double ); +Nextern _ARMABI float log1pf(float /*x*/); +Xextern __declspec(__nothrow) float log1pf(float ); +N_ARMDEFLD1(log1p); +X__declspec(__nothrow) long double log1pl(long double ); +Nextern _ARMABI float hypotf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float hypotf(float , float ); +N_ARMDEFLD2(hypot); +X__declspec(__nothrow) long double hypotl(long double , long double ); +Nextern _ARMABI float lgammaf(float /*x*/); +Xextern __declspec(__nothrow) float lgammaf(float ); +N_ARMDEFLD1(lgamma); +X__declspec(__nothrow) long double lgammal(long double ); +Nextern _ARMABI float remainderf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float remainderf(float , float ); +N_ARMDEFLD2(remainder); +X__declspec(__nothrow) long double remainderl(long double , long double ); +Nextern _ARMABI float rintf(float /*x*/); +Xextern __declspec(__nothrow) float rintf(float ); +N_ARMDEFLD1(rint); +X__declspec(__nothrow) long double rintl(long double ); +N +N#endif +N +N#if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +X#if (0L && !0L) || 1L +N/* +N * Functions new in C99. +N */ +Nextern _ARMABI double exp2(double /*x*/); /* * 2.^x. */ +Xextern __declspec(__nothrow) double exp2(double ); +Nextern _ARMABI float exp2f(float /*x*/); +Xextern __declspec(__nothrow) float exp2f(float ); +N_ARMDEFLD1(exp2); +X__declspec(__nothrow) long double exp2l(long double ); +Nextern _ARMABI double fdim(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fdim(double , double ); +Nextern _ARMABI float fdimf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fdimf(float , float ); +N_ARMDEFLD2(fdim); +X__declspec(__nothrow) long double fdiml(long double , long double ); +N#ifdef __FP_FAST_FMA +S#define FP_FAST_FMA +N#endif +N#ifdef __FP_FAST_FMAF +S#define FP_FAST_FMAF +N#endif +N#ifdef __FP_FAST_FMAL +S#define FP_FAST_FMAL +N#endif +Nextern _ARMABI double fma(double /*x*/, double /*y*/, double /*z*/); +Xextern __declspec(__nothrow) double fma(double , double , double ); +Nextern _ARMABI float fmaf(float /*x*/, float /*y*/, float /*z*/); +Xextern __declspec(__nothrow) float fmaf(float , float , float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long double fmal(long double __x, long double __y, long double __z) \ +N { return (long double)fma((double)__x, (double)__y, (double)__z); } +Xstatic __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } +N#endif +Nextern _ARMABI_FPEXCEPT double fmax(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +Nextern _ARMABI_FPEXCEPT float fmaxf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +N_ARMDEFLD2(fmax); +X__declspec(__nothrow) long double fmaxl(long double , long double ); +Nextern _ARMABI_FPEXCEPT double fmin(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +Nextern _ARMABI_FPEXCEPT float fminf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +N_ARMDEFLD2(fmin); +X__declspec(__nothrow) long double fminl(long double , long double ); +Nextern _ARMABI double log2(double /*x*/); /* * log base 2 of x. */ +Xextern __declspec(__nothrow) double log2(double ); +Nextern _ARMABI float log2f(float /*x*/); +Xextern __declspec(__nothrow) float log2f(float ); +N_ARMDEFLD1(log2); +X__declspec(__nothrow) long double log2l(long double ); +Nextern _ARMABI long lrint(double /*x*/); +Xextern __declspec(__nothrow) long lrint(double ); +Nextern _ARMABI long lrintf(float /*x*/); +Xextern __declspec(__nothrow) long lrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lrintl(long double __x) \ +N { return lrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llrint(double /*x*/); +Xextern __declspec(__nothrow) long long llrint(double ); +Nextern _ARMABI __LONGLONG llrintf(float /*x*/); +Xextern __declspec(__nothrow) long long llrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llrintl(long double __x) \ +N { return llrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } +N#endif +Nextern _ARMABI long lround(double /*x*/); +Xextern __declspec(__nothrow) long lround(double ); +Nextern _ARMABI long lroundf(float /*x*/); +Xextern __declspec(__nothrow) long lroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lroundl(long double __x) \ +N { return lround((double)__x); } +Xstatic __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llround(double /*x*/); +Xextern __declspec(__nothrow) long long llround(double ); +Nextern _ARMABI __LONGLONG llroundf(float /*x*/); +Xextern __declspec(__nothrow) long long llroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llroundl(long double __x) \ +N { return llround((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } +N#endif +Nextern _ARMABI_PURE double nan(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +Nextern _ARMABI_PURE float nanf(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI_PURE long double nanl(const char *__t) \ +N { return (long double)nan(__t); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +N#endif +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +Sextern _ARMABI_PURE double nans(const char */*tagp*/); +Sextern _ARMABI_PURE float nansf(const char */*tagp*/); +S#ifdef __HAVE_LONGDOUBLE +S_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) \ +S { return (long double)nans(__t); } +X_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) { return (long double)nans(__t); } +S#endif +N#endif +Nextern _ARMABI_FPEXCEPT double nearbyint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +Nextern _ARMABI_FPEXCEPT float nearbyintf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +N_ARMDEFLD1(nearbyint); +X__declspec(__nothrow) long double nearbyintl(long double ); +Nextern double remquo(double /*x*/, double /*y*/, int */*quo*/); +Nextern float remquof(float /*x*/, float /*y*/, int */*quo*/); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE long double remquol(long double __x, long double __y, int *__q) \ +N { return (long double)remquo((double)__x, (double)__y, __q); } +Xstatic __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } +N#endif +Nextern _ARMABI_FPEXCEPT double round(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double round(double ); +Nextern _ARMABI_FPEXCEPT float roundf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +N_ARMDEFLD1(round); +X__declspec(__nothrow) long double roundl(long double ); +Nextern _ARMABI double tgamma(double /*x*/); /* * The gamma function of x. */ +Xextern __declspec(__nothrow) double tgamma(double ); +Nextern _ARMABI float tgammaf(float /*x*/); +Xextern __declspec(__nothrow) float tgammaf(float ); +N_ARMDEFLD1(tgamma); +X__declspec(__nothrow) long double tgammal(long double ); +Nextern _ARMABI_FPEXCEPT double trunc(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +Nextern _ARMABI_FPEXCEPT float truncf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +N_ARMDEFLD1(trunc); +X__declspec(__nothrow) long double truncl(long double ); +N#endif +N +N#undef _ARMDEFLD1 +N#undef _ARMDEFLD1P +N#undef _ARMDEFLD2 +N +N#if defined(__cplusplus) && ((!defined(__STRICT_ANSI__) || defined(__USE_C99_MATH)) || defined(__ARMCOMPILER_LIBCXX)) +X#if 0L && ((!0L || 1L) || 0L) +S extern "C++" { +S inline int (fpclassify)(double __x) { return fpclassify(__x); } +S inline bool (isfinite)(double __x) { return isfinite(__x); } +S inline bool (isgreater)(double __x, double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(double __x, double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(double __x) { return isinf(__x); } +S inline bool (isless)(double __x, double __y) { return isless(__x, __y); } +S inline bool (islessequal)(double __x, double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(double __x, double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(double __x) { return isnan(__x); } +S inline bool (isnormal)(double __x) { return isnormal(__x); } +S inline bool (isunordered)(double __x, double __y) { return isunordered(__x, __y); } +S +S } +N#endif +N +N#if defined(__cplusplus) && !defined(__ARMCOMPILER_LIBCXX) +X#if 0L && !0L +S extern "C++" { +S inline float abs(float __x) { return fabsf(__x); } +S inline float acos(float __x) { return acosf(__x); } +S inline float asin(float __x) { return asinf(__x); } +S inline float atan(float __x) { return atanf(__x); } +S inline float atan2(float __y, float __x) { return atan2f(__y,__x); } +S inline float ceil(float __x) { return ceilf(__x); } +S inline float cos(float __x) { return cosf(__x); } +S inline float cosh(float __x) { return coshf(__x); } +S inline float exp(float __x) { return expf(__x); } +S inline float fabs(float __x) { return fabsf(__x); } +S inline float floor(float __x) { return floorf(__x); } +S inline float fmod(float __x, float __y) { return fmodf(__x, __y); } +S float frexp(float __x, int* __exp) __attribute__((__nonnull__(2))); +S inline float frexp(float __x, int* __exp) { return frexpf(__x, __exp); } +S inline float ldexp(float __x, int __exp) { return ldexpf(__x, __exp);} +S inline float log(float __x) { return logf(__x); } +S inline float log10(float __x) { return log10f(__x); } +S float modf(float __x, float* __iptr) __attribute__((__nonnull__(2))); +S inline float modf(float __x, float* __iptr) { return modff(__x, __iptr); } +S inline float pow(float __x, float __y) { return powf(__x,__y); } +S inline float pow(float __x, int __y) { return powf(__x, (float)__y); } +S inline float sin(float __x) { return sinf(__x); } +S inline float sinh(float __x) { return sinhf(__x); } +S inline float sqrt(float __x) { return sqrtf(__x); } +S inline float _sqrt(float __x) { return _sqrtf(__x); } +S inline float tan(float __x) { return tanf(__x); } +S inline float tanh(float __x) { return tanhf(__x); } +S +S inline double abs(double __x) { return fabs(__x); } +S inline double pow(double __x, int __y) +S { return pow(__x, (double) __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double abs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double acos(long double __x) +S { return (long double)acosl(__x); } +S inline long double asin(long double __x) +S { return (long double)asinl(__x); } +S inline long double atan(long double __x) +S { return (long double)atanl(__x); } +S inline long double atan2(long double __y, long double __x) +S { return (long double)atan2l(__y, __x); } +S inline long double ceil(long double __x) +S { return (long double)ceill( __x); } +S inline long double cos(long double __x) +S { return (long double)cosl(__x); } +S inline long double cosh(long double __x) +S { return (long double)coshl(__x); } +S inline long double exp(long double __x) +S { return (long double)expl(__x); } +S inline long double fabs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double floor(long double __x) +S { return (long double)floorl(__x); } +S inline long double fmod(long double __x, long double __y) +S { return (long double)fmodl(__x, __y); } +S long double frexp(long double __x, int* __p) __attribute__((__nonnull__(2))); +S inline long double frexp(long double __x, int* __p) +S { return (long double)frexpl(__x, __p); } +S inline long double ldexp(long double __x, int __exp) +S { return (long double)ldexpl(__x, __exp); } +S inline long double log(long double __x) +S { return (long double)logl(__x); } +S inline long double log10(long double __x) +S { return (long double)log10l(__x); } +S long double modf(long double __x, long double* __p) __attribute__((__nonnull__(2))); +S inline long double modf(long double __x, long double* __p) +S { return (long double)modfl(__x, __p); } +S inline long double pow(long double __x, long double __y) +S { return (long double)powl(__x, __y); } +S inline long double pow(long double __x, int __y) +S { return (long double)powl(__x, __y); } +S inline long double sin(long double __x) +S { return (long double)sinl(__x); } +S inline long double sinh(long double __x) +S { return (long double)sinhl(__x); } +S inline long double sqrt(long double __x) +S { return (long double)sqrtl(__x); } +S inline long double _sqrt(long double __x) +S { return (long double)_sqrt((double) __x); } +S inline long double tan(long double __x) +S { return (long double)tanl(__x); } +S inline long double tanh(long double __x) +S { return (long double)tanhl(__x); } +S#endif +S +S#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S inline float acosh(float __x) { return acoshf(__x); } +S inline float asinh(float __x) { return asinhf(__x); } +S inline float atanh(float __x) { return atanhf(__x); } +S inline float cbrt(float __x) { return cbrtf(__x); } +S inline float erf(float __x) { return erff(__x); } +S inline float erfc(float __x) { return erfcf(__x); } +S inline float expm1(float __x) { return expm1f(__x); } +S inline float log1p(float __x) { return log1pf(__x); } +S inline float hypot(float __x, float __y) { return hypotf(__x, __y); } +S inline float lgamma(float __x) { return lgammaf(__x); } +S inline float remainder(float __x, float __y) { return remainderf(__x, __y); } +S inline float rint(float __x) { return rintf(__x); } +S#endif +S +S#ifdef __USE_C99_MATH +S inline float exp2(float __x) { return exp2f(__x); } +S inline float fdim(float __x, float __y) { return fdimf(__x, __y); } +S inline float fma(float __x, float __y, float __z) { return fmaf(__x, __y, __z); } +S inline float fmax(float __x, float __y) { return fmaxf(__x, __y); } +S inline float fmin(float __x, float __y) { return fminf(__x, __y); } +S inline float log2(float __x) { return log2f(__x); } +S inline _ARMABI long lrint(float __x) { return lrintf(__x); } +S inline _ARMABI __LONGLONG llrint(float __x) { return llrintf(__x); } +S inline _ARMABI long lround(float __x) { return lroundf(__x); } +S inline _ARMABI __LONGLONG llround(float __x) { return llroundf(__x); } +S inline _ARMABI_FPEXCEPT float nearbyint(float __x) { return nearbyintf(__x); } +S inline float remquo(float __x, float __y, int *__q) { return remquof(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT float round(float __x) { return roundf(__x); } +S inline float tgamma(float __x) { return tgammaf(__x); } +S inline _ARMABI_FPEXCEPT float trunc(float __x) { return truncf(__x); } +S +S inline int (fpclassify)(float __x) { return fpclassify(__x); } +S inline bool (isfinite)(float __x) { return isfinite(__x); } +S inline bool (isgreater)(float __x, float __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(float __x, float __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(float __x) { return isinf(__x); } +S inline bool (isless)(float __x, float __y) { return isless(__x, __y); } +S inline bool (islessequal)(float __x, float __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(float __x, float __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(float __x) { return isnan(__x); } +S inline bool (isnormal)(float __x) { return isnormal(__x); } +S inline bool (isunordered)(float __x, float __y) { return isunordered(__x, __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double acosh(long double __x) { return acoshl(__x); } +S inline long double asinh(long double __x) { return asinhl(__x); } +S inline long double atanh(long double __x) { return atanhl(__x); } +S inline long double cbrt(long double __x) { return cbrtl(__x); } +S inline long double erf(long double __x) { return erfl(__x); } +S inline long double erfc(long double __x) { return erfcl(__x); } +S inline long double expm1(long double __x) { return expm1l(__x); } +S inline long double log1p(long double __x) { return log1pl(__x); } +S inline long double hypot(long double __x, long double __y) { return hypotl(__x, __y); } +S inline long double lgamma(long double __x) { return lgammal(__x); } +S inline long double remainder(long double __x, long double __y) { return remainderl(__x, __y); } +S inline long double rint(long double __x) { return rintl(__x); } +S inline long double exp2(long double __x) { return exp2l(__x); } +S inline long double fdim(long double __x, long double __y) { return fdiml(__x, __y); } +S inline long double fma(long double __x, long double __y, long double __z) { return fmal(__x, __y, __z); } +S inline long double fmax(long double __x, long double __y) { return fmaxl(__x, __y); } +S inline long double fmin(long double __x, long double __y) { return fminl(__x, __y); } +S inline long double log2(long double __x) { return log2l(__x); } +S inline _ARMABI long lrint(long double __x) { return lrintl(__x); } +S inline _ARMABI __LONGLONG llrint(long double __x) { return llrintl(__x); } +S inline _ARMABI long lround(long double __x) { return lroundl(__x); } +S inline _ARMABI __LONGLONG llround(long double __x) { return llroundl(__x); } +S inline _ARMABI_FPEXCEPT long double nearbyint(long double __x) { return nearbyintl(__x); } +S inline long double remquo(long double __x, long double __y, int *__q) { return remquol(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT long double round(long double __x) { return roundl(__x); } +S inline long double tgamma(long double __x) { return tgammal(__x); } +S inline _ARMABI_FPEXCEPT long double trunc(long double __x) { return truncl(__x); } +S inline int (fpclassify)(long double __x) { return fpclassify(__x); } +S inline bool (isfinite)(long double __x) { return isfinite(__x); } +S inline bool (isgreater)(long double __x, long double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(long double __x, long double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(long double __x) { return isinf(__x); } +S inline bool (isless)(long double __x, long double __y) { return isless(__x, __y); } +S inline bool (islessequal)(long double __x, long double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(long double __x, long double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(long double __x) { return isnan(__x); } +S inline bool (isnormal)(long double __x) { return isnormal(__x); } +S inline bool (isunordered)(long double __x, long double __y) { return isunordered(__x, __y); } +S#endif +S +S#undef fpclassify +S#undef isfinite +S#undef isgreater +S#undef isgreaterequal +S#undef isinf +S#undef isless +S#undef islessequal +S#undef islessgreater +S#undef isnan +S#undef isnormal +S#undef isunordered +S +S#endif +S +S } +N#endif +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif +N #endif /* __MATH_DECLS */ +N +N #if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE +X #if _AEABI_PORTABILITY_LEVEL != 0 && !0L +S #define _AEABI_PORTABLE +N #endif +N +N #if defined(__cplusplus) && !defined(__MATH_NO_EXPORTS) +X #if 0L && !0L +S using ::std::__use_accurate_range_reduction; +S #ifndef __ARMCOMPILER_LIBCXX +S using ::std::abs; +S #endif +S using ::std::acos; +S using ::std::asin; +S using ::std::atan2; +S using ::std::atan; +S using ::std::ceil; +S using ::std::cos; +S using ::std::cosh; +S using ::std::exp; +S using ::std::fabs; +S using ::std::floor; +S using ::std::fmod; +S using ::std::frexp; +S using ::std::ldexp; +S using ::std::log10; +S using ::std::log; +S using ::std::modf; +S using ::std::pow; +S using ::std::sin; +S using ::std::sinh; +S using ::std::sqrt; +S using ::std::_sqrt; +S using ::std::_sqrtf; +S using ::std::tan; +S using ::std::tanh; +S using ::std::_fabsf; +S /* C99 float and long double versions in already-C89-reserved namespace */ +S using ::std::acosf; +S using ::std::acosl; +S using ::std::asinf; +S using ::std::asinl; +S using ::std::atan2f; +S using ::std::atan2l; +S using ::std::atanf; +S using ::std::atanl; +S using ::std::ceilf; +S using ::std::ceill; +S using ::std::cosf; +S using ::std::coshf; +S using ::std::coshl; +S using ::std::cosl; +S using ::std::expf; +S using ::std::expl; +S using ::std::fabsf; +S using ::std::fabsl; +S using ::std::floorf; +S using ::std::floorl; +S using ::std::fmodf; +S using ::std::fmodl; +S using ::std::frexpf; +S using ::std::frexpl; +S using ::std::ldexpf; +S using ::std::ldexpl; +S using ::std::log10f; +S using ::std::log10l; +S using ::std::logf; +S using ::std::logl; +S using ::std::modff; +S using ::std::modfl; +S using ::std::powf; +S using ::std::powl; +S using ::std::sinf; +S using ::std::sinhf; +S using ::std::sinhl; +S using ::std::sinl; +S using ::std::sqrtf; +S using ::std::sqrtl; +S using ::std::tanf; +S using ::std::tanhf; +S using ::std::tanhl; +S using ::std::tanl; +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S /* C99 additions which for historical reasons appear in non-strict mode */ +S using ::std::acosh; +S using ::std::asinh; +S using ::std::atanh; +S using ::std::cbrt; +S using ::std::copysign; +S using ::std::copysignf; +S using ::std::erf; +S using ::std::erfc; +S using ::std::expm1; +S using ::std::hypot; +S using ::std::ilogb; +S using ::std::ilogbf; +S using ::std::ilogbl; +S using ::std::lgamma; +S using ::std::log1p; +S using ::std::logb; +S using ::std::logbf; +S using ::std::logbl; +S using ::std::nextafter; +S using ::std::nextafterf; +S using ::std::nextafterl; +S using ::std::nexttoward; +S using ::std::nexttowardf; +S using ::std::nexttowardl; +S using ::std::remainder; +S using ::std::rint; +S using ::std::scalbln; +S using ::std::scalblnf; +S using ::std::scalblnl; +S using ::std::scalbn; +S using ::std::scalbnf; +S using ::std::scalbnl; +S using ::std::math_errhandling; +S using ::std::acoshf; +S using ::std::acoshl; +S using ::std::asinhf; +S using ::std::asinhl; +S using ::std::atanhf; +S using ::std::atanhl; +S using ::std::copysignl; +S using ::std::cbrtf; +S using ::std::cbrtl; +S using ::std::erff; +S using ::std::erfl; +S using ::std::erfcf; +S using ::std::erfcl; +S using ::std::expm1f; +S using ::std::expm1l; +S using ::std::log1pf; +S using ::std::log1pl; +S using ::std::hypotf; +S using ::std::hypotl; +S using ::std::lgammaf; +S using ::std::lgammal; +S using ::std::remainderf; +S using ::std::remainderl; +S using ::std::rintf; +S using ::std::rintl; +S /* New in C99. */ +S using ::std::float_t; +S using ::std::double_t; +S #endif +S #if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +S /* Functions new in C99. */ +S using ::std::exp2; +S using ::std::exp2f; +S using ::std::exp2l; +S using ::std::fdim; +S using ::std::fdimf; +S using ::std::fdiml; +S using ::std::fma; +S using ::std::fmaf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::fmal; +S#endif +S using ::std::fmax; +S using ::std::fmaxf; +S using ::std::fmaxl; +S using ::std::fmin; +S using ::std::fminf; +S using ::std::fminl; +S using ::std::log2; +S using ::std::log2f; +S using ::std::log2l; +S using ::std::lrint; +S using ::std::lrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lrintl; +S#endif +S using ::std::llrint; +S using ::std::llrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llrintl; +S#endif +S using ::std::lround; +S using ::std::lroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lroundl; +S#endif +S using ::std::llround; +S using ::std::llroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llroundl; +S#endif +S using ::std::nan; +S using ::std::nanf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::nanl; +S#endif +S using ::std::nearbyint; +S using ::std::nearbyintf; +S using ::std::nearbyintl; +S using ::std::remquo; +S using ::std::remquof; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::remquol; +S#endif +S using ::std::round; +S using ::std::roundf; +S using ::std::roundl; +S using ::std::tgamma; +S using ::std::tgammaf; +S using ::std::tgammal; +S using ::std::trunc; +S using ::std::truncf; +S using ::std::truncl; +S #endif +S +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S using ::std::fpclassify; +S using ::std::isfinite; +S using ::std::isgreater; +S using ::std::isgreaterequal; +S using ::std::isinf; +S using ::std::isless; +S using ::std::islessequal; +S using ::std::islessgreater; +S using ::std::isnan; +S using ::std::isnormal; +S using ::std::isunordered; +S #endif +N #endif +N +N#undef __LONGLONG +N +N#endif /* __math_h */ +N +N/* end of math.h */ +L 19 "..\..\src\common\tau_common.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N * \name 通用常量定义 +N * @{ +N */ +N//#define ENABLE 1 +N//#define DISABLE 0 +N +N#define ON 1 +N#define OFF 0 +N +N#define NONE 0 +N#define EOS '\0' +N +N/* +N#ifndef TRUE +N#define TRUE 1 +N#endif +N +N#ifndef FALSE +N#define FALSE 0 +N#endif +N*/ +N +N#ifndef __cplusplus +N#define true 1 +N#define false 0 +N#define bool _Bool +N#endif /* ifndef __cplusplus */ +N +N#ifndef NULL +S#define NULL ((void *)0) +N#endif +N +N#define TAU_LITTLE_ENDIAN 1234 /**< \brief 小端模式 */ +N#define TAU_BIG_ENDIAN 3412 /**< \brief 大端模式 */ +N +N/** @} */ +N +N/******************************************************************************/ +N +N/** +N * \name 常用宏定义 +N * @{ +N */ +N +N#ifdef __cplusplus +S#define __I volatile /*!< Defines 'read only' permissions */ +N#else +N#define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N#define TAU_INLINE inline +N#define TAU_STATIC_INLINE static inline +N#define TAU_STATIC static +N#define TAU_CONST const +N#define TAU_EXTERN extern +N +N#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +N#define MAX(x, y) (((x) > (y)) ? (x) : (y)) +N +N/** +N * \brief 求结构体成员的偏移 +N * \attention 不同平台上,由于成员大小和内存对齐等原因, +N * 同一结构体成员的偏移可能是不一样的 +N * +N * \par 示例 +N * \code +N * struct my_struct { +N * int m1; +N * char m2; +N * }; +N * int offset_m2; +N * +N * offset_m2 = TAU_OFFSET(struct my_struct, m2); +N * \endcode +N */ +N#define TAU_OFFSET(structure, member) ((uint32_t)(&(((structure *)0)->member))) +N +N/** @} */ +N +N/** +N * \brief 通过结构体成员指针获取包含该结构体成员的结构体 +N * +N * \param ptr 指向结构体成员的指针 +N * \param type 结构体类型 +N * \param member 结构体中该成员的名称 +N * +N * \par 示例 +N * \code +N * struct my_struct = { +N * int m1; +N * char m2; +N * }; +N * struct my_struct my_st; +N * char *p_m2 = &my_st.m2; +N * struct my_struct *p_st = TAU_CONTAINER_OF(p_m2, struct my_struct, m2); +N * \endcode +N */ +N#define TAU_CONTAINER_OF(ptr, type, member) \ +N ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +X#define TAU_CONTAINER_OF(ptr, type, member) ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +N +N/** +N * \brief 计算结构体成员的大小 +N * +N * \code +N * struct a = { +N * uint32_t m1; +N * uint32_t m2; +N * }; +N * int size_m2; +N * +N * size_m2 = TAU_MEMBER_SIZE(a, m2); //size_m2 = 4 +N * \endcode +N */ +N#define TAU_MEMBER_SIZE(structure, member) (sizeof(((structure *)0)->member)) +N +N/** +N * \brief 计算数组元素个数 +N * +N * \code +N * int a[] = {0, 1, 2, 3}; +N * int element_a = TAU_NELEMENTS(a); // element_a = 4 +N * \endcode +N */ +N#define TAU_NELEMENTS(array) (sizeof(array) / sizeof((array)[0])) +N +N/** +N * \brief 向上舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_UP(15, 4); // size = 16 +N * \endcode +N */ +N#define TAU_ROUND_UP(x, align) (((int)(x)/(align))*(align) + (((int)(x)%(align)) ? (align) : 0)) +N +N/** +N * \brief 向下舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_DOWN(15, 4); // size = 12 +N * \endcode +N */ +N#define TAU_ROUND_DOWN(x, align) (((int)(x)/(align))*(align)) +N +N/** \brief 倍数向上舍入 */ +N#define TAU_DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) +N +N/** +N * \brief 测试是否对齐 +N * +N * \param x 被运算的数 +N * \param align 对齐因素,必须为2的乘方 +N * +N * \code +N * if (TAU_ALIGNED(x, 4) { +N * ; // x对齐 +N * } else { +N * ; // x不对齐 +N * } +N * \endcode +N */ +N#define TAU_ALIGNED(x, align) (((int)(x) & (align - 1)) == 0) +N +N/** \brief 将1字节BCD数据转换为16进制数据 */ +N#define TAU_BCD_TO_HEX(val) (((val)&0x0f) + ((val) >> 4) * 10) +N +N/** \brief 将1字节16进制数据转换为BCD数据 */ +N#define TAU_HEX_TO_BCD(val) ((((val) / 10) << 4) + (val) % 10) +N +N/** +N * \brief 向上取整 +N */ +N#define TAU_CEIL(val) ceil(val) +N +N +N/*! @brief Construct the version number for drivers. */ +N#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix)) +N +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*!< @brief 用于返回状态和错误 */ +Ntypedef uint32_t status_t; +N +N/* \brief 通用回调函数指针定义 */ +Ntypedef void (*fcb_type)(void *data); +N +Ntypedef void (*uart_trans_cb)(status_t status, void *user_data); +N +Ntypedef void (*flash_trans_cb)(status_t status, void *user_data); +N#endif /* __TAU_COMMON_H */ +L 16 "..\..\src\sdk\include\hal_system.h" 2 +N#include "hal_gpio.h" +L 1 "..\..\src\sdk\include\hal_gpio.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_gpio.h +N* Description: gpio HAL层头文件 +N* Version: V0.1 +N* Date: 2023-07-27 +N* Author: kevin +N *******************************************************************************/ +N#ifndef __HAL_GPIO_H__ +N#define __HAL_GPIO_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +L 1 "..\..\src\common\tau_device_datatype.h" 1 +N/******************************************************************************* +N * +N * +N * File: tau_device_datatype.h +N * Description device datatype +N * Version V0.1 +N * Date 2020-12-04 +N * Author kevin +N *******************************************************************************/ +N +N#ifndef _TAU_DEVICE_DATATYPE_H_ +N#define _TAU_DEVICE_DATATYPE_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N +N#include "stdint.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 计算组状态码 */ +N#define MAKE_STATUS(group, code) ((((group)*100) + (code))) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 分组状态值 */ +Nenum _status_groups +N{ +N STATUS_GROUP_GENERIC = 0, +N STATUS_GROUP_I2C = 1, +N STATUS_GROUP_UART = 2, +N STATUS_GROUP_SPI = 3, +N STATUS_GROUP_TIMER = 4, +N}; +N +N/*! @brief 常用状态码 */ +Nenum _generic_status +N{ +N STATUS_SUCCESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 0), +X STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), +N STATUS_FAIL = MAKE_STATUS(STATUS_GROUP_GENERIC, 1), +X STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), +N STATUS_READ_ONLY = MAKE_STATUS(STATUS_GROUP_GENERIC, 2), +X STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), +N STATUS_OUT_OF_RANGE = MAKE_STATUS(STATUS_GROUP_GENERIC, 3), +X STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), +N STATUS_INVALID_ARGUMENT = MAKE_STATUS(STATUS_GROUP_GENERIC, 4), +X STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), +N STATUS_TIME_OUT = MAKE_STATUS(STATUS_GROUP_GENERIC, 5), +X STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), +N STATUS_NO_TRANSFER_IN_PROGRESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 6), +X STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +N}; +N +N/** +N* @brief UART状态枚举定义 +N* +N*/ +Ntypedef enum +N{ +N STATUS_UART_TX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 0), /*!< Transmitter is busy. */ +X STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), +N STATUS_UART_RX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 1), /*!< Receiver is busy. */ +X STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), +N STATUS_UART_TX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 2), /*!< USART transmitter is idle. */ +X STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), +N STATUS_UART_RX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 3), /*!< USART receiver is idle. */ +X STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), +N STATUS_UART_TX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 7), /*!< Error happens on txFIFO. */ +X STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), +N STATUS_UART_RX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 9), /*!< Error happens on rxFIFO. */ +X STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), +N STATUS_UART_RX_RING_BUFF_OVERRUN = MAKE_STATUS(STATUS_GROUP_UART, 8), /*!< Error happens on rx ring buffer */ +X STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), +N STATUS_UART_NOISE_ERR = MAKE_STATUS(STATUS_GROUP_UART, 10), /*!< USART noise error. */ +X STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), +N STATUS_UART_FRAMING_ERR = MAKE_STATUS(STATUS_GROUP_UART, 11), /*!< USART framing error. */ +X STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), +N STATUS_UART_PARITY_ERR = MAKE_STATUS(STATUS_GROUP_UART, 12), /*!< USART parity error. */ +X STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), +N STATUS_UART_BAUDRATE_NOT_SPT = MAKE_STATUS(STATUS_GROUP_UART, 13), /*!< Baudrate is not support in current clock source */ +X STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +N} uart_status_e; +N +N/*! +N * @brief timer状态 +N */ +Ntypedef enum +N{ +N STATUS_TIMER_IDLE = MAKE_STATUS(STATUS_GROUP_TIMER, 0), /*!< 空闲 */ +X STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), +N STATUS_TIMER_RUNNING = MAKE_STATUS(STATUS_GROUP_TIMER, 1), /*!< 运行中 */ +X STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), +N STATUS_TIMER_TIMEOUT = MAKE_STATUS(STATUS_GROUP_TIMER, 2), /*!< 超时 */ +X STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +N} timer_status_e; +N +N/*! +N * @brief system触发事件(中断/复位)模式 +N */ +Ntypedef enum +N{ +N DETECT_HIGH_LVL = 0, +N DETECT_LOW_LVL, +N DETECT_RISING_EDGE, +N DETECT_FALLING_EDGE, +N DETECT_DOUBLE_EDGE +N} sys_cfg_trigger_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N TIMER_NUM0 = 0, +N TIMER_NUM1, +N TIMER_NUM2, +N TIMER_NUM3, +N TIMER_NUM_MAX +N} timer_num_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N GPIO_INT_EXTI_INT0 = 0, +N GPIO_INT_EXTI_INT1, +N GPIO_INT_EXTI_INT2, +N GPIO_INT_EXTI_INT3, +N GPIO_INT_EXTI_INT4, +N GPIO_INT_EXTI_INT5, +N GPIO_INT_EXTI_INT6, +N GPIO_INT_EXTI_INT7, +N GPIO_INT_MAX +N} gpio_int_e; +N +N/*! @brief PWMI中断类型 */ +Ntypedef enum _pwm_int_type +N{ +N PWM_INT_HIGH_OVERFLOW = 0, +N PWM_INT_LOW_OVERFLOW, +N PWM_INT_TOTAL_OVERFLOW, +N PWM_INT_HIGH_DONE, +N PWM_INT_LOW_DONE, +N PWM_INT_TOTAL_DONE, +N PWM_INT_MAX +N} pwm_int_type_e; +N +N/** +N* @brief I2C chose +N*/ +Ntypedef enum +N{ +N I2C_SELECT_0 = 0, //常用slave +N I2C_SELECT_1, //常用master +N} i2c_select_e; +N +N/*! +N * @brief 传输速度 +N * @note +N */ +Ntypedef enum _i2c_rate +N{ +N I2C_RATE_STANDARD = 1, //100kHz +N I2C_RATE_FAST, //400kHz +N I2C_RATE_HIGH, //1MHz +N} i2c_rate_e; +N +N/*! +N * @brief I2C Index +N * @note +N */ +Ntypedef enum +N{ +N I2C_INDEX_0, +N I2C_INDEX_1, +N I2C_INDEX_2, +N I2C_INDEX_MAX +N} i2c_index_e; +N +N/*! +N * @brief DMA channel type +N * @note +N */ +Ntypedef enum +N{ +N AHB_DMA_CH0, +N AHB_DMA_CH1, +N AHB_DMA_CH2, +N AHB_DMA_CH3, +N AHB_DMA_CH4, +N AHB_DMA_CH5, +N AHB_DMA_CH6, +N AHB_DMA_CH7, +N AHB_DMA_CH_NUM +N} dma_channel_type_e; +N +N/*! @brief Type used for all status and error return values. */ +N +Ntypedef enum +N{ +N DISABLE = 0, +N ENABLE = !DISABLE +N} function_state_e; +N +N/** +N* @brief The reversal types of the bit order of the input/output data +N*/ +Ntypedef enum +N{ +N CRC_REV_NO_TRANSPOSE = 0, /*!< No transposition */ +N CRC_REV_ONLY_BITS_TRANSPOSE, /*!< Bits in bytes are transposed; bytes are not transposed */ +N CRC_REV_BOTH_TRANSPOSE, /*!< Both bits in bytes and bytes are transposed */ +N CRC_REV_ONLY_BYTES_TRANSPOSE, /*!< Only bytes are transposed; no bits in a byte are transposed */ +N} crc_reversal_type_e; +N +N/** +N* @brief Complement Read Of CRC Data Register +N*/ +Ntypedef enum +N{ +N CRC_FXOR_DISABLE = 0, /*!< No XOR on reading */ +N CRC_FXOR_ENABLE, /*!< Invert or complement the read value of the CRC Data register */ +N} crc_fxor_function_e; +N +N/** +N* @brief width of CRC protocol (polynomial) +N*/ +Ntypedef enum +N{ +N CRC_16_BIT_PROTOCOL = 0, /*!< 0: 16-bit CRC protocol */ +N CRC_32_BIT_PROTOCOL, /*!< 1: 32-bit CRC protocol */ +N} crc_protocol_type_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N#endif +N +L 17 "..\..\src\sdk\include\hal_gpio.h" 2 +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N* @brief GPIO pin +N*/ +Ntypedef enum +N{ +N /*以GPIO命名PIN*/ +N IO_PAD_GPIO0 = 0, +N IO_PAD_GPIO1, +N IO_PAD_GPIO2, +N IO_PAD_GPIO3, +N IO_PAD_GPIO4, +N IO_PAD_GPIO5, +N IO_PAD_GPIO6, +N IO_PAD_GPIO7, +N IO_PAD_GPIO8, +N IO_PAD_GPIO9, +N IO_PAD_GPIO10, +N IO_PAD_GPIO11, +N IO_PAD_GPIO12, +N IO_PAD_GPIO13, +N IO_PAD_GPIO14, +N IO_PAD_GPIO15, +N IO_PAD_GPIO16, +N IO_PAD_GPIO17, +N IO_PAD_GPIO18, +N IO_PAD_GPIO19, +N IO_PAD_GPIO20, +N IO_PAD_GPIO21, +N IO_PAD_GPIO22, +N IO_PAD_GPIO23, +N IO_PAD_GPIO24, +N IO_PAD_GPIO25, +N +N /*以实际PAD NAME命名PIN*/ +N IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, +N IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, +N IO_PAD_AP_INT = IO_PAD_GPIO2, +N IO_PAD_AP_TE = IO_PAD_GPIO3, +N IO_PAD_AP_SWIRE = IO_PAD_GPIO4, +N IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, +N IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, +N IO_PAD_TD_RSTN = IO_PAD_GPIO7, +N IO_PAD_AP_PWMEN = IO_PAD_GPIO8, +N IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, +N IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, +N IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, +N IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, +N IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, +N IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, +N IO_PAD_SWD_CLK = IO_PAD_GPIO15, +N IO_PAD_SWD_DIO = IO_PAD_GPIO16, +N IO_PAD_AP_RSTN = IO_PAD_GPIO17, +N IO_PAD_UART0_TX = IO_PAD_GPIO18, +N IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, +N IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, +N IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, +N IO_PAD_TD_INT = IO_PAD_GPIO22, +N IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, +N IO_PAD_UART1_TX = IO_PAD_GPIO24, +N IO_PAD_UART0_RX = IO_PAD_GPIO25, +N +N IO_PAD_MAX, +N +N +N /*以实际引脚序号命名PIN*/ +N IO_PIN_1 = IO_PAD_SWD_CLK, +N IO_PIN_2 = IO_PAD_UART0_TX, +N IO_PIN_3 = IO_PAD_SWD_DIO, +N IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, +N IO_PIN_5 = IO_PAD_TD_SPIM_CLK, +N IO_PIN_6 = IO_PAD_TD_SPIM_CSN, +N IO_PIN_7 = IO_PAD_TD_SPIM_MISO, +N IO_PIN_8 = IO_PAD_TD_RSTN, +N IO_PIN_9 = IO_PAD_TD_FC_CSN, +N IO_PIN_10 = IO_PAD_TD_FC_CLK, +N IO_PIN_11 = IO_PAD_TD_FC_IO0, +N IO_PIN_12 = IO_PAD_TD_FC_IO1, +N IO_PIN_13 = IO_PAD_TD_TP_RESX, +N IO_PIN_14 = IO_PAD_UART1_TX, +N IO_PIN_15 = IO_PAD_AP_SWIRE, +N IO_PIN_16 = IO_PAD_AP_INT, +N IO_PIN_17 = IO_PAD_AP_PWMEN, +N IO_PIN_18 = IO_PAD_AP_TPRSTN, +N +N IO_PIN_29 = IO_PAD_AP_TE, +N IO_PIN_30 = IO_PAD_AP_SPIS_MISO, +N IO_PIN_31 = IO_PAD_AP_SPIS_CSN, +N IO_PIN_32 = IO_PAD_AP_SPIS_CLK, +N IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, +N IO_PIN_34 = IO_PAD_AP_RSTN, +N IO_PIN_35 = IO_PAD_TD_INT, +N IO_PIN_36 = IO_PAD_UART0_RX, +N +N} io_pad_e; +N +N +N/* +N芯片引脚 | 默认mode | 可选mode +N---------------------------------------------------------------- +NIO_PIN_1 | IO_PAD_SWCLK, | PIN1_MODE_SWDCLK +N | | PIN1_MODE_GPIO15 +N---------------------------------------------------------------- +NIO_PIN_2 | IO_PAD_UART0_TX, | PIN2_MODE_UART0_TX +N | | PIN2_MODE_PWMO +N | | PIN2_MODE_GPIO18 +N | | PIN2_MODE_PWMI +N | | PIN2_MODE_TEAR1 +N---------------------------------------------------------------- +NIO_PIN_3 | IO_PAD_SWDIO, | PIN3_MODE_SWDIO +N | | PIN3_MODE_GPIO16 +N---------------------------------------------------------------- +NIO_PIN_4 | IO_PAD_TD_SPIM_MOSI, | PIN4_MODE_SPIM_MOSI +N | | PIN4_MODE_I2C02_SDA +N | | PIN4_MODE_GPIO6 +N | | PIN4_MODE_UART0_TX +N---------------------------------------------------------------- +NIO_PIN_5 | IO_PAD_TD_SPIM_CLK, | PIN5_MODE_SPIM_SCLK +N | | PIN5_MODE_I2C1_SCL +N | | PIN5_MODE_GPIO19 +N---------------------------------------------------------------- +NIO_PIN_6 | IO_PAD_TD_SPIM_CSN, | PIN6_MODE_SPIM_CSN +N | | PIN6_MODE_I2C1_SDA +N | | PIN6_MODE_GPIO20 +N---------------------------------------------------------------- +NIO_PIN_7 | IO_PAD_TD_SPIM_MISO, | PIN7_MODE_SPIM_MISO +N | | PIN7_MODE_I2C02_SCL +N | | PIN7_MODE_GPIO5 +N---------------------------------------------------------------- +NIO_PIN_8 | IO_PAD_TD_RSTN, | PIN8_MODE_GPIO7 +N | | PIN8_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_9 | IO_PAD_TD_FC_CSN, | PIN9_MODE_TSPIS_CSN +N | | PIN9_MODE_GPIO12 +N---------------------------------------------------------------- +NIO_PIN_10 | IO_PAD_TD_FC_CLK, | PIN10_MODE_TSPIS_CLK +N | | PIN10_MODE_GPIO11 +N---------------------------------------------------------------- +NIO_PIN_11 | IO_PAD_TD_FC_IO0, | PIN11_MODE_TSPIS_IO0 +N | | PIN11_MODE_GPIO13 +N | | PIN11_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_12 | IO_PAD_TD_FC_IO1, | PIN12_MODE_TSPIS_IO1 +N | | PIN12_MODE_GPIO14 +N | | PIN12_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_13 | IO_PAD_TD_TP_RESX, | PIN13_MODE_GPIO23 +N | | PIN13_MODE_PWMO +N | | PIN13_MODE_UART1_RX +N | | PIN13_MODE_UART1_RX +N---------------------------------------------------------------- +NIO_PIN_14 | IO_PAD_UART1_TX, | PIN14_MODE_GPIO24 +N | | PIN14_MODE_UART0_RX +N | | PIN14_MODE_UART1_TX +N | | +N---------------------------------------------------------------- +NIO_PIN_15 | IO_PAD_AP_SWIRE, | PIN15_MODE_SWIRE +N | | PIN15_MODE_PWMO +N | | PIN15_MODE_GPIO4 +N---------------------------------------------------------------- +NIO_PIN_16 | IO_PAD_AP_INT, | PIN16_MODE_GPIO2 +N---------------------------------------------------------------- +NIO_PIN_17 | IO_PAD_AP_PWMEN, | PIN17_MODE_UART0_RX +N | | PIN17_MODE_GPIO8 +N | | PIN17_MODE_PWMO +N---------------------------------------------------------------- +NIO_PIN_18 | IO_PAD_AP_TPRSTN, | PIN18_MODE_UART0_RX +N | | PIN18_MODE_GPIO21 +N | | PIN18_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_29 | IO_PAD_AP_TE, | PIN29_MODE_JTAG_TRSTN +N | | PIN29_MODE_TEAR +N | | PIN29_MODE_GPIO3 +N---------------------------------------------------------------- +NIO_PIN_30 | IO_PAD_AP_SPIS_MISO, | PIN30_MODE_JTAG_TDO +N | | PIN30_MODE_SPIS_MISO +N | | PIN30_MODE_GPIO0 +N | | PIN30_MODE_UART0_RX +N | | PIN30_MODE_I2C1_SCL +N---------------------------------------------------------------- +NIO_PIN_31 | IO_PAD_AP_SPIS_CSN, | PIN31_MODE_JTAG_TMS +N | | PIN31_MODE_SPIS_CSN +N | | PIN31_MODE_GPIO10 +N | | PIN31_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_32 | IO_PAD_AP_SPIS_CLK, | PIN32_MODE_JTAG_TCK +N | | PIN32_MODE_SPIS_SCLK +N | | PIN32_MODE_GPIO9 +N | | PIN32_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_33 | IO_PAD_AP_SPIS_MOSI, | PIN33_MODE_JTAG_TDI +N | | PIN33_MODE_SPIS_MOSI +N | | PIN33_MODE_GPIO1 +N | | PIN33_MODE_UART0_TX +N | | PIN33_MODE_I2C1_SDA_0 +N---------------------------------------------------------------- +NIO_PIN_34 | IO_PAD_AP_RSTN, | PIN34_MODE_GPIO17 +N---------------------------------------------------------------- +NIO_PIN_35 | IO_PAD_TD_INT, | PIN35_MODE_GPIO22 +N---------------------------------------------------------------- +NIO_PIN_36 | IO_PAD_UART0_RX, | PIN36_MODE_UART0_RX +N | | PIN36_MODE_PWMO +N | | PIN36_MODE_GPIO25 +N---------------------------------------------------------------- +N*/ +N +N +N/** +N* @brief PIN1 IO_PAD_SWD_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN1_MODE_SWDCLK = 0, +N PIN1_MODE_GPIO15 = 2, +N} pin1_mode_e; +N +N +N/** +N* @brief PIN2 PAD_UART0_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN2_MODE_UART0_TX = 0, +N PIN2_MODE_PWMO = 1, +N PIN2_MODE_GPIO18 = 2, +N PIN2_MODE_PWMI = 3, +N PIN2_MODE_TEAR1 = 4, +N} pin2_mode_e; +N +N/** +N* @brief PIN3 IO_PAD_SWD_DIO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN3_MODE_SWDIO = 0, +N PIN3_MODE_GPIO16 = 2, +N} pin3_mode_e; +N +N +N/** +N* @brief PIN4 PAD_TD_SPIM_MOSI可选的mode +N*/ +Ntypedef enum +N{ +N PIN4_MODE_SPIM_MOSI = 0, +N PIN4_MODE_I2C02_SDA = 1, +N PIN4_MODE_GPIO6 = 2, +N PIN4_MODE_UART0_TX = 3, +N} pin4_mode_e; +N +N/** +N* @brief PIN5 PAD_TD_SPIM_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN5_MODE_SPIM_SCLK = 0, +N PIN5_MODE_I2C1_SCL = 1, +N PIN5_MODE_GPIO19 = 2, +N} pin5_mode_e; +N +N/** +N* @brief PIN6 PAD_TD_SPIM_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN6_MODE_SPIM_CSN = 0, +N PIN6_MODE_I2C1_SDA = 1, +N PIN6_MODE_GPIO20 = 2, +N} pin6_mode_e; +N +N/** +N* @brief PIN7 PAD_TD_SPIM_MISO可选的mode +N*/ +Ntypedef enum +N{ +N PIN7_MODE_SPIM_MISO = 0, +N PIN7_MODE_I2C02_SCL = 1, +N PIN7_MODE_GPIO5 = 2, +N} pin7_mode_e; +N +N/** +N* @brief PIN8 PAD_TD_RSTN可选的mode +N*/ +Ntypedef enum +N{ +N PIN8_MODE_GPIO7 = 2, +N PIN8_MODE_I2C02_SDA = 3, +N} pin8_mode_e; +N +N/** +N* @brief PIN9 PAD_TD_FC_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN9_MODE_TSPIS_CSN = 0, +N PIN9_MODE_GPIO12 = 2, +N} pin9_mode_e; +N +N/** +N* @brief PIN10 PAD_TD_FC_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN10_MODE_TSPIS_CLK = 0, +N PIN10_MODE_GPIO11 = 2, +N} pin10_mode_e; +N +N +N/** +N* @brief PIN11 PAD_TD_FC_IO0可选的mode +N*/ +Ntypedef enum +N{ +N PIN11_MODE_TSPIS_IO0 = 0, +N PIN11_MODE_GPIO13 = 2, +N PIN11_MODE_I2C02_SDA = 3, +N} pin11_mode_e; +N +N/** +N* @brief PIN12 PAD_TD_FC_IO1可选的mode +N*/ +Ntypedef enum +N{ +N PIN12_MODE_TSPIS_IO1 = 0, +N PIN12_MODE_GPIO14 = 2, +N PIN12_MODE_I2C02_SCL = 3, +N} pin12_mode_e; +N +N/** +N* @brief PIN13 PAD_TD_TP_RESX可选的mode +N*/ +Ntypedef enum +N{ +N PIN13_MODE_GPIO23 = 2, +N PIN13_MODE_PWMO = 3, +N PIN13_MODE_UART1_RX = 4, +N} pin13_mode_e; +N +N/** +N* @brief PIN14 PAD_UART1_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN14_MODE_GPIO24 = 2, +N PIN14_MODE_UART0_RX = 3, +N PIN14_MODE_UART1_TX = 4, +N} pin14_mode_e; +N +N +N +N/** +N* @brief PIN15 PAD_AP_SWIRE可选的mode +N*/ +Ntypedef enum +N{ +N PIN15_MODE_SWIRE = 0, +N PIN15_MODE_PWMO = 1, +N PIN15_MODE_GPIO4 = 2, +N} pin15_mode_e; +N +N/** +N* @brief PIN16 IO_PAD_AP_INT 可选的mode +N*/ +Ntypedef enum +N{ +N PIN16_MODE_GPIO2 = 2, +N} pin16_mode_e; +N +N/** +N* @brief PIN17 PAD_AP_PWMEN可选的mode +N*/ +Ntypedef enum +N{ +N PIN17_MODE_UART0_RX = 1, +N PIN17_MODE_GPIO8 = 2, +N PIN17_MODE_PWMO = 3, +N} pin17_mode_e; +N +N/** +N* @brief PIN18 IO_PAD_AP_TPRSTN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN18_MODE_UART0_RX = 0, +N PIN18_MODE_GPIO21 = 2, +N PIN18_MODE_I2C02_SCL = 3, +N} pin18_mode_e; +N +N +N//---------- +N +N/** +N* @brief PIN29 IO_PAD_AP_TE 可选的mode +N*/ +Ntypedef enum +N{ +N PIN29_MODE_JTAG_TRSTN = 0, +N PIN29_MODE_TEAR = 1, +N PIN29_MODE_GPIO3 = 2, +N} pin29_mode_e; +N +N +N/** +N* @brief PIN30 IO_PAD_AP_SPIS_MISO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN30_MODE_JTAG_TDO = 0, +N PIN30_MODE_SPIS_MISO = 1, +N PIN30_MODE_GPIO0 = 2, +N PIN30_MODE_UART0_RX = 3, +N PIN30_MODE_I2C1_SCL = 6, +N} pin30_mode_e; +N +N/** +N* @brief PIN31 IO_PAD_AP_SPIS_CSN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN31_MODE_JTAG_TMS = 0, +N PIN31_MODE_SPIS_CSN = 1, +N PIN31_MODE_GPIO10 = 2, +N PIN31_MODE_I2C02_SDA = 3, +N} pin31_mode_e; +N +N/** +N* @brief PIN32 IO_PAD_AP_SPIS_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN32_MODE_JTAG_TCK = 0, +N PIN32_MODE_SPIS_SCLK = 1, +N PIN32_MODE_GPIO9 = 2, +N PIN32_MODE_I2C02_SCL = 3, +N} pin32_mode_e; +N +N/** +N* @brief PIN33 IO_PAD_AP_SPIS_MOSI 可选的mode +N*/ +Ntypedef enum +N{ +N PIN33_MODE_JTAG_TDI = 0, +N PIN33_MODE_SPIS_MOSI = 1, +N PIN33_MODE_GPIO1 = 2, +N PIN33_MODE_UART0_TX = 3, +N PIN33_MODE_I2C1_SDA_0 = 6, +N} pin33_mode_e; +N +N/** +N* @brief PIN34 PAD_AP_RST可选的mode +N*/ +Ntypedef enum +N{ +N PIN34_MODE_GPIO17 = 2, +N} pin34_mode_e; +N +N +N/** +N* @brief PIN35 PAD_TD_INT可选的mode +N*/ +Ntypedef enum +N{ +N PIN35_MODE_GPIO22 = 2, +N} pin35_mode_e; +N +N +N/** +N* @brief PIN36 PAD_UART_RX可选的mode +N*/ +Ntypedef enum +N{ +N PIN36_MODE_UART0_RX = 0, +N PIN36_MODE_PWMO = 1, +N PIN36_MODE_GPIO25 = 2, +N} pin36_mode_e; +N +N +N +N//------------------------------------------------------------------------- +N/** +N* @brief PAD_SFC_CLK可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CLK = 0, +N IO_MODE_TSPIS_CLK_EN = 2, +N} pad_sfc_clk_mode_e; +N +N/** +N* @brief PAD_SFC_CSN可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CSN = 0, +N IO_MODE_TSPIS_CSN_EN = 2, +N} pad_sfc_csn_mode_e; +N +N/** +N* @brief PAD_SFC_IO0可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO0 = 0, +N IO_MODE_TSPIS_IO0_EN = 2, +N} pad_sfc_io0_mode_e; +N +N/** +N* @brief PAD_SFC_IO1可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO1 = 0, +N IO_MODE_TSPIS_IO1_EN = 2, +N} pad_sfc_io1_mode_e; +N +N/** +N* @brief PAD电压转换速率 +N*/ +Ntypedef enum +N{ +N IO_SLEW_RATE_SLOW = 0, +N IO_SLEW_RATE_FAST = 1, +N} pad_slew_rate_e; +N +N/******************************************************************************* +N* IOE +N*******************************************************************************/ +N/** +N* @brief GPIO io方向 +N*/ +Ntypedef enum +N{ +N IO_IOE_INPUT = 0, +N IO_IOE_OUTPUT, +N IO_IOE_NONE +N} gpio_ioe_e; +N +N/** +N* @brief GPIO level +N*/ +Ntypedef enum +N{ +N IO_LVL_LOW = 0, +N IO_LVL_HIGH, +N IO_LVL_NONE +N} gpio_level_e; +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief PAD与MODE的MAP结构体 +N*/ +Ntypedef struct +N{ +N io_pad_e pad; +N uint8_t mode; +N gpio_ioe_e ioe; +N gpio_level_e lvl; +N} io_pad_attr_t; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input,指定中断触发方式 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param trig:4种中断触发方式,参考枚举类型sys_cfg_trigger_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); +N +N/** +N* @brief 注册GPIO中断回调函数 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param cb_func:回调函数地址 +N* @param data:回调函数参数地址 +N* @retval 无 +N*/ +Nvoid hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); +N +N/** +N* @brief 开关GPIO中断 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param state:开关控制 +N* @retval 无 +N*/ +Nvoid hal_gpio_ctrl_eint(io_pad_e pad, bool state); +Xvoid hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); +N +N/** +N* @brief 获取GPIO中断类型 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_int_e hal_gpio_get_int_type(io_pad_e pad); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为output,指定初始电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 封装设置输出接口 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_input(io_pad_e pad); +N +N/** +N* @brief 读取输入电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_level_e hal_gpio_get_input_data(io_pad_e pad); +N +N/** +N* @brief 设置io mode +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param mode:工作模式,参考各PAD对应的mode枚举类型 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_mode(io_pad_e pad, uint8_t mode); +N +N/** +N* @brief 设置io 为高阻态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_high_impedance(io_pad_e pad); +N +N/** +N* @brief 获取指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_get_pull_state(io_pad_e pad, bool *up_enable, bool *down_enable); +Xvoid hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); +N +N/** +N* @brief 配置指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_pull_state(io_pad_e pad, bool up_enable, bool down_enable); +Xvoid hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); +N +N/** +N* @brief 配置指定PAD是否为施密特触发 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param st_enable:1为施密特触发,0为正常触发 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, bool st_enable); +Xvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); +N +N/** +N* @brief 配置指定PAD的驱动能力 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param strength:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); +N +N/** +N* @brief 配置指定PAD的电压转换速率 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param rate:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); +N +N/** +N* @brief 配置AP_RSTN引脚中断 +N* @param enable: 中断开关 +N* @param cb_func:回调函数 +N* @param trig:触发模式 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_ap_reset_int(bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +Xvoid hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +N +N/** +N* @brief 批量设置IO参数 +N* @param attrs: PAD属性 +N* @param size: 数组成员个数 +N* @retval 无 +N*/ +Nvoid hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); +N +N#endif /* __HAL_GPIO_H__ */ +L 17 "..\..\src\sdk\include\hal_system.h" 2 +N#include "tau_log.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief 系统时钟配置 +N*/ +Ntypedef enum +N{ +N HAL_SYSCLK_80M = 80000000, +N HAL_SYSCLK_100M = 100000000, +N HAL_SYSCLK_150M = 150000000 +N} hal_system_clk_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N +N/** +N* @brief system 初始化 +N* @param sysclk:系统时钟 +N* @retval none +N*/ +Nvoid hal_system_init(hal_system_clk_e sysclk); +N +N/** +N* @brief mcu进入idle模式,等待中断唤醒 +N* @param disable_systick: 进入idle时是否关闭systick(退出idle 恢复systick) +N* @retval none +N*/ +Nvoid hal_system_idle_mode(bool disable_systick); +Xvoid hal_system_idle_mode(_Bool disable_systick); +N +N/** +N* @brief 注册systick回调函数 +N* @param cb_func:回调函数地址 +N* @retval 无 +N*/ +Nvoid hal_system_register_systick_cb(fcb_type cb_func); +N +N/** +N* @brief 启动sys tickt +N* @param ms: sys tickt 间隔, 范围1-10ms +N* @retval true/false +N*/ +Nbool hal_system_enable_systick(uint8_t ms); +X_Bool hal_system_enable_systick(uint8_t ms); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nbool hal_system_disable_systick(void); +X_Bool hal_system_disable_systick(void); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nuint32_t hal_system_get_tick(void); +N +N/** +N* @brief reset chip +N* @param none +N* @retval none +N*/ +Nvoid hal_system_reset_chip(void); +N +N/** +N* @brief 获取上位机设置的debug state(debug only) +N* @param none +N* @retval debug state +N*/ +Nuint32_t hal_system_get_debug_state(void); +N +N/** +N* @brief clear debug state(debug only) +N* @param none +N* @retval none +N*/ +Nvoid hal_system_clear_debug_state(void); +N +N/** +N* @brief 更新MCU时钟 +N* @param sysclk:系统时钟 +N* @retval true/false +N*/ +Nbool hal_system_updata_sysclk(hal_system_clk_e sysclk); +X_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); +N +N#endif //__HAL_SYSTEM_H__ +L 7 "..\..\src\app\main.c" 2 +N#include "board.h" +L 1 "..\..\src\board\board.h" 1 +N/******************************************************************************* +N* +N* +N* File: board.h +N* Description: baord 初始化头文件 +N* Version: V0.1 +N* Date: 2020-01-08 +N* Author: lzy +N *******************************************************************************/ +N +N#ifndef __BOARD_H__ +N#define __BOARD_H__ +N +N/** +N* @brief 系统板级初始化,配置系统时钟,调试log输出 +N* @param none +N* @retval none +N*/ +Nvoid board_Init(void); +N +N#endif +L 8 "..\..\src\app\main.c" 2 +N#include "module_demo_main.h" +L 1 "..\..\src\app\module_demo\module_demo_main.h" 1 +N/******************************************************************************* +N* +N* File: module_demo_main.h +N* Description: module demo main file +N* Version: V0.1 +N* Date: 2023-07-27 +N* Author: Jaya +N *******************************************************************************/ +N +N#ifndef __MODULE_DEMO_MAIN_H__ +N#define __MODULE_DEMO_MAIN_H__ +N#include "test_cfg_global.h" +N +N#if _MODULE_DEMO_DSI_TX_EN +X#if 0 +S#include "demo_hal_dsi_tx.h" +N#endif +N +N#if _MODULE_DEMO_DSI_RX_EN +X#if 0 +S#include "demo_hal_dsi_rx.h" +N#endif +N +N#if _MODULE_DEMO_TIMER_EN +X#if 0 +S#include "demo_hal_timer.h" +N#endif +N +N#if _MODULE_DEMO_WDG_EN +X#if 0 +S#include "demo_hal_wdg.h" +N#endif +N +N#if _MODULE_DEMO_GPIO_EN +X#if 0 +S#include "demo_hal_gpio.h" +N#endif +N +N#if _MODULE_DEMO_SWIRE_EN +X#if 0 +S#include "demo_hal_swire.h" +N#endif +N +N#if _MODULE_DEMO_SPI_EN +X#if 0 +S#include "demo_hal_spi.h" +N#endif +N +N#if _MODULE_DEMO_I2C_EN +X#if 0 +S#include "demo_hal_i2c.h" +N#endif +N +N#if _MODULE_DEMO_FLASH_EN +S#include "demo_hal_flash.h" +N#endif +N +N#if _MODULE_DEMO_PWM_EN +X#if 0 +S#include "demo_hal_pwm.h" +N#endif +N +N#if _MODULE_DEMO_PWR_EN +X#if 0 +S#include "demo_hal_pwr.h" +N#endif +N +N#if _MODULE_DEMO_UART_EN +S#include "demo_hal_uart.h" +N#endif +N +N#if _MODULE_DEMO_CRC_EN +S#include "demo_hal_crc.h" +N#endif +N +Nvoid module_demo_main(void); +N +N#endif /* __MODULE_DEMO_MAIN_H__ */ +L 9 "..\..\src\app\main.c" 2 +Nint main() +N{ +N board_Init(); +N +N while (1) +N { +N#if _MODULE_DEMO_ENABLE +X#if 0 +S module_demo_main(); +N#endif +N +N +N#if _DEMO_GOOGLE_P8P_EN +X#if 1 +N google_p8p_demo(); +N#endif +N TAU_LOGD("668 Demo\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "668 Demo\n", "tau_log", 23); } while (0); +N while (1); +N } +N} diff --git a/project/WL668/Listings/main.txt b/project/WL668/Listings/main.txt new file mode 100644 index 0000000..0a9b2cb --- /dev/null +++ b/project/WL668/Listings/main.txt @@ -0,0 +1,84 @@ +; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637] +; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave --gnu -o.\objects\main.o --asm_dir=.\Listings\ --list_dir=.\Listings\ --depend=.\objects\main.d --cpu=Cortex-M0 --apcs=interwork -O0 --diag_suppress=9931 -I..\..\src -I..\..\src\board -I..\..\src\common -I..\..\src\sdk\include -I..\..\src\sdk\include\M0 -I..\..\src\app -I..\..\src\app\S8 -I..\..\src\app\touch -I..\..\src\app\module_demo -I..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__MICROLIB -D__UVISION_VERSION=528 -D_RTE_ -DARMCM0 --omf_browse=.\objects\main.crf ..\..\src\app\main.c] + THUMB + + AREA ||i.main||, CODE, READONLY, ALIGN=2 + + main PROC +;;;68 #endif /* __MODULE_DEMO_MAIN_H__ */ +;;;9 int main() +000000 f7fffffe BL board_Init +;;;10 { +;;;11 board_Init(); +;;;12 +;;;13 while (1) +000004 e00b B |L1.30| + |L1.6| +;;;14 { +;;;15 #if _MODULE_DEMO_ENABLE +;;;16 module_demo_main(); +;;;17 #endif +;;;18 +;;;19 +;;;20 #if _DEMO_GOOGLE_P8P_EN +;;;21 google_p8p_demo(); +000006 f7fffffe BL google_p8p_demo +;;;22 #endif +;;;23 TAU_LOGD("668 Demo\n"); +00000a bf00 NOP +00000c 2317 MOVS r3,#0x17 +00000e a204 ADR r2,|L1.32| +000010 a105 ADR r1,|L1.40| +000012 2000 MOVS r0,#0 +000014 f7fffffe BL tau_log_printf +000018 bf00 NOP +;;;24 while (1); +00001a bf00 NOP + |L1.28| +00001c e7fe B |L1.28| + |L1.30| +00001e e7f2 B |L1.6| +;;;25 } +;;;26 } + ENDP + + |L1.32| +000020 7461755f DCB "tau_log",0 +000024 6c6f6700 + |L1.40| +000028 5b25735d DCB "[%s] (%04d) 668 Demo\n",0 +00002c 20282530 +000030 34642920 +000034 36363820 +000038 44656d6f +00003c 0a00 +00003e 00 DCB 0 +00003f 00 DCB 0 + +;*** Start embedded assembler *** + +#line 1 "..\\..\\src\\app\\main.c" + AREA ||.rev16_text||, CODE + THUMB + EXPORT |__asm___6_main_c_main____REV16| +#line 467 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" +|__asm___6_main_c_main____REV16| PROC +#line 468 + + rev16 r0, r0 + bx lr + ENDP + AREA ||.revsh_text||, CODE + THUMB + EXPORT |__asm___6_main_c_main____REVSH| +#line 482 +|__asm___6_main_c_main____REVSH| PROC +#line 483 + + revsh r0, r0 + bx lr + ENDP + +;*** End embedded assembler *** + + __ARM_use_no_argv EQU 0 diff --git a/project/WL668/Listings/p8p_demo._ip b/project/WL668/Listings/p8p_demo._ip new file mode 100644 index 0000000..392393e --- /dev/null +++ b/project/WL668/Listings/p8p_demo._ip @@ -0,0 +1,6 @@ +..\..\src\app\P8P\p8p_demo.c -E --c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\listings\p8p_demo.i --list_dir ".\\Listings\\" --list \ No newline at end of file diff --git a/project/WL668/Listings/p8p_demo.i b/project/WL668/Listings/p8p_demo.i new file mode 100644 index 0000000..0720511 --- /dev/null +++ b/project/WL668/Listings/p8p_demo.i @@ -0,0 +1,8325 @@ +# 1 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + + + +# 1 "..\\..\\src\\app\\P8P\\p8p_demo.h" + + + + + + + + + + + + + + + + + + +void google_p8p_demo(void); + +# 10 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum IRQn +{ + + NonMaskableInt_IRQn = -14, + HardFault_IRQn = -13, + SVCall_IRQn = -5, + PendSV_IRQn = -2, + SysTick_IRQn = -1, + + + VIDC_IRQn = 0, + LCDC_IRQn = 1, + MIPI_RX_IRQn = 2, + MIPI_TX_IRQn = 3, + MEMC_IRQn = 4, + VPRE_IRQn = 5, + FLSCTRL_IRQn = 6, + DMA_IRQn = 7, + TIMER0_IRQn = 8, + TIMER1_IRQn = 9, + TIMER2_IRQn = 10, + TIMER3_IRQn = 11, + WDG_IRQn = 12, + UART_IRQn = 13, + I2C0_IRQn = 14, + I2C1_IRQn = 15, + SPIS_IRQn = 16, + SPIM_IRQn = 17, + VPRE1_IRQn = 18, + I2C2_IRQn = 19, + OTP_IRQn = 20, + SWIRE_IRQn = 21, + PVD_IRQn = 22, + AP_NRESET_IRQn = 23, + EXTI_INT0_IRQn = 24, + EXTI_INT1_IRQn = 25, + EXTI_INT2_IRQn = 26, + EXTI_INT3_IRQn = 27, + EXTI_INT4_IRQn = 28, + EXTI_INT5_IRQn = 29, + EXTI_INT6_IRQn = 30, + EXTI_INT7_IRQn = 31 + +} IRQn_Type; + + + + + + + + +#pragma push +#pragma anon_unions +# 107 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + +# 46 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + +typedef signed char int8_t; +typedef signed short int int16_t; +typedef signed int int32_t; +typedef signed __int64 int64_t; + + +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned __int64 uint64_t; + + + + + +typedef signed char int_least8_t; +typedef signed short int int_least16_t; +typedef signed int int_least32_t; +typedef signed __int64 int_least64_t; + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; +typedef unsigned __int64 uint_least64_t; + + + + +typedef signed int int_fast8_t; +typedef signed int int_fast16_t; +typedef signed int int_fast32_t; +typedef signed __int64 int_fast64_t; + + +typedef unsigned int uint_fast8_t; +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +typedef unsigned __int64 uint_fast64_t; + + + + + + +typedef signed int intptr_t; +typedef unsigned int uintptr_t; + + + +typedef signed long long intmax_t; +typedef unsigned long long uintmax_t; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 216 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + +# 241 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 305 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h" + + + + + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_version.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 64 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + +# 114 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 29 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 107 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __asm("control"); + return(__regControl); +} + + + + + + + +static __inline void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __asm("control"); + __regControl = control; +} + + + + + + + +static __inline uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __asm("ipsr"); + return(__regIPSR); +} + + + + + + + +static __inline uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __asm("apsr"); + return(__regAPSR); +} + + + + + + + +static __inline uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __asm("xpsr"); + return(__regXPSR); +} + + + + + + + +static __inline uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + return(__regProcessStackPointer); +} + + + + + + + +static __inline void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __asm("psp"); + __regProcessStackPointer = topOfProcStack; +} + + + + + + + +static __inline uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __asm("msp"); + return(__regMainStackPointer); +} + + + + + + + +static __inline void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __asm("msp"); + __regMainStackPointer = topOfMainStack; +} + + + + + + + +static __inline uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __asm("primask"); + return(__regPriMask); +} + + + + + + + +static __inline void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __asm("primask"); + __regPriMask = (priMask); +} + + +# 342 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + +static __inline uint32_t __get_FPSCR(void) +{ + + + + + + return(0U); + +} + + + + + + + +static __inline void __set_FPSCR(uint32_t fpscr) +{ + + + + + + (void)fpscr; + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} + + + + + + + + + + +__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U * 8U) - 1U; + + result = value; + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; + return result; +} + + + + + + + + + + + + +# 732 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + + + + + + +__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + + + + + + + + +__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + + + + + + + + + + + + + +# 866 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" + + + +# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + + +# 268 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h" + + + + +# 116 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + +# 150 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + +# 166 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:28; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} APSR_Type; + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:23; + } b; + uint32_t w; +} IPSR_Type; + + + + + + + + + +typedef union +{ + struct + { + uint32_t ISR:9; + uint32_t _reserved0:15; + uint32_t T:1; + uint32_t _reserved1:3; + uint32_t V:1; + uint32_t C:1; + uint32_t Z:1; + uint32_t N:1; + } b; + uint32_t w; +} xPSR_Type; + + + + + + + + + + + + + + + + + + + + + + + + +typedef union +{ + struct + { + uint32_t _reserved0:1; + uint32_t SPSEL:1; + uint32_t _reserved1:30; + } b; + uint32_t w; +} CONTROL_Type; + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t ISER[1U]; + uint32_t RESERVED0[31U]; + volatile uint32_t ICER[1U]; + uint32_t RESERVED1[31U]; + volatile uint32_t ISPR[1U]; + uint32_t RESERVED2[31U]; + volatile uint32_t ICPR[1U]; + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + volatile uint32_t IP[8U]; +} NVIC_Type; + + + + + + + + + + + + + + +typedef struct +{ + volatile const uint32_t CPUID; + volatile uint32_t ICSR; + uint32_t RESERVED0; + volatile uint32_t AIRCR; + volatile uint32_t SCR; + volatile uint32_t CCR; + uint32_t RESERVED1; + volatile uint32_t SHP[2U]; + volatile uint32_t SHCSR; +} SCB_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef struct +{ + volatile uint32_t CTRL; + volatile uint32_t LOAD; + volatile uint32_t VAL; + volatile const uint32_t CALIB; +} SysTick_Type; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 583 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + +# 598 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h" + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); + } +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + + + + + + + +static __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + +static __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + + + + + + + + + + +static __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } + else + { + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | + (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); + } +} + + + + + + + + + + + +static __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } + else + { + return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); + } +} + + + + + + + + + + + + + +static __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + + + + + + + + + + + + +static __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + + + + + + + + + + +static __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t vectors = 0x0U; + (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +} + + + + + + + + + + +static __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t vectors = 0x0U; + return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +} + + + + + + +__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +{ + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | + (1UL << 2U)); + do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); + + for(;;) + { + __nop(); + } +} + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SCB_GetFPUType(void) +{ + return 0U; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + +static __inline uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > (0xFFFFFFUL )) + { + return (1UL); + } + + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); + __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; + ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | + (1UL << 1U) | + (1UL ); + return (0UL); +} + + + + + + + + + + + + + + +# 122 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" +# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\Device\\ARM\\ARMCM0\\Include\\system_ARMCM0.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern uint32_t SystemCoreClock; + + + + + + + +extern void SystemInit (void); + + + + + + + +extern void SystemCoreClockUpdate (void); + + + + + +# 123 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +#pragma pop +# 142 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + +# 167 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + +# 179 "..\\..\\src\\sdk\\include\\M0\\ArmCM0.h" + + + + + +# 11 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + + + + +# 20 "..\\..\\src\\common\\tau_device_datatype.h" +# 1 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + +# 18 "..\\..\\src\\common\\tau_common.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 61 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 75 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 112 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + + + + + + + +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); + + + + + + + +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +{ + return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +{ + return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +{ + return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +{ + unsigned __f = __ARM_fcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +{ + unsigned __f = __ARM_dcmp4(__x, __y) >> 28; + return (__f == 8) || (__f == 2); +} + + + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +{ + return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +{ + unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); + return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +{ + unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; + return (__xe != 0xff) && (__xe != 0); +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +{ + unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; + return (__xe != 0x7ff) && (__xe != 0); +} + + + +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +{ + return (*(unsigned *)&(__x)) >> 31; +} +static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +{ + return (*(1 + (unsigned *)&(__x))) >> 31; +} + + + + + + + + + + +# 230 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + typedef float float_t; + typedef double double_t; +# 251 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + +extern const int math_errhandling; +# 261 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +extern __declspec(__nothrow) double acos(double ); + + + +extern __declspec(__nothrow) double asin(double ); + + + + + +extern __declspec(__nothrow) __attribute__((const)) double atan(double ); + + + +extern __declspec(__nothrow) double atan2(double , double ); + + + + + +extern __declspec(__nothrow) double cos(double ); + + + + +extern __declspec(__nothrow) double sin(double ); + + + + + +extern void __use_accurate_range_reduction(void); + + + +extern __declspec(__nothrow) double tan(double ); + + + + + +extern __declspec(__nothrow) double cosh(double ); + + + + +extern __declspec(__nothrow) double sinh(double ); + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double tanh(double ); + + + +extern __declspec(__nothrow) double exp(double ); + + + + + + +extern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); + + + + + + + +extern __declspec(__nothrow) double ldexp(double , int ); + + + + +extern __declspec(__nothrow) double log(double ); + + + + + +extern __declspec(__nothrow) double log10(double ); + + + +extern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); + + + + + +extern __declspec(__nothrow) double pow(double , double ); + + + + + + +extern __declspec(__nothrow) double sqrt(double ); + + + + + + + + static __inline double _sqrt(double __x) { return sqrt(__x); } + + + + + static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) double ceil(double ); + + +extern __declspec(__nothrow) __attribute__((const)) double fabs(double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double floor(double ); + + + +extern __declspec(__nothrow) double fmod(double , double ); + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double acosh(double ); + + + +extern __declspec(__nothrow) double asinh(double ); + + + +extern __declspec(__nothrow) double atanh(double ); + + + +extern __declspec(__nothrow) double cbrt(double ); + + + +static __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) + + + +{ + (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); + return __x; +} +static __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) + + + +{ + (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); + return __x; +} +extern __declspec(__nothrow) double erf(double ); + + + +extern __declspec(__nothrow) double erfc(double ); + + + +extern __declspec(__nothrow) double expm1(double ); + + + + + + + + + + + + + + + +# 479 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + +extern __declspec(__nothrow) double hypot(double , double ); + + + + + + +extern __declspec(__nothrow) int ilogb(double ); + + + +extern __declspec(__nothrow) int ilogbf(float ); + + + +extern __declspec(__nothrow) int ilogbl(long double ); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) double lgamma (double ); + + + + +extern __declspec(__nothrow) double log1p(double ); + + + +extern __declspec(__nothrow) double logb(double ); + + + +extern __declspec(__nothrow) float logbf(float ); + + + +extern __declspec(__nothrow) long double logbl(long double ); + + + +extern __declspec(__nothrow) double nextafter(double , double ); + + + + +extern __declspec(__nothrow) float nextafterf(float , float ); + + + + +extern __declspec(__nothrow) long double nextafterl(long double , long double ); + + + + +extern __declspec(__nothrow) double nexttoward(double , long double ); + + + + +extern __declspec(__nothrow) float nexttowardf(float , long double ); + + + + +extern __declspec(__nothrow) long double nexttowardl(long double , long double ); + + + + +extern __declspec(__nothrow) double remainder(double , double ); + + + +extern __declspec(__nothrow) __attribute__((const)) double rint(double ); + + + +extern __declspec(__nothrow) double scalbln(double , long int ); + + + +extern __declspec(__nothrow) float scalblnf(float , long int ); + + + +extern __declspec(__nothrow) long double scalblnl(long double , long int ); + + + +extern __declspec(__nothrow) double scalbn(double , int ); + + + +extern __declspec(__nothrow) float scalbnf(float , int ); + + + +extern __declspec(__nothrow) long double scalbnl(long double , int ); + + + + + + + + + + + + + + +extern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +static __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +extern __declspec(__nothrow) float sinf(float ); +extern __declspec(__nothrow) float cosf(float ); +extern __declspec(__nothrow) float tanf(float ); +extern __declspec(__nothrow) float acosf(float ); +extern __declspec(__nothrow) float asinf(float ); +extern __declspec(__nothrow) float atanf(float ); +extern __declspec(__nothrow) float atan2f(float , float ); +extern __declspec(__nothrow) float sinhf(float ); +extern __declspec(__nothrow) float coshf(float ); +extern __declspec(__nothrow) float tanhf(float ); +extern __declspec(__nothrow) float expf(float ); +extern __declspec(__nothrow) float logf(float ); +extern __declspec(__nothrow) float log10f(float ); +extern __declspec(__nothrow) float powf(float , float ); +extern __declspec(__nothrow) float sqrtf(float ); +extern __declspec(__nothrow) float ldexpf(float , int ); +extern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +extern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +extern __declspec(__nothrow) float fmodf(float , float ); +extern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +__declspec(__nothrow) long double acosl(long double ); +__declspec(__nothrow) long double asinl(long double ); +__declspec(__nothrow) long double atanl(long double ); +__declspec(__nothrow) long double atan2l(long double , long double ); +__declspec(__nothrow) long double ceill(long double ); +__declspec(__nothrow) long double cosl(long double ); +__declspec(__nothrow) long double coshl(long double ); +__declspec(__nothrow) long double expl(long double ); +__declspec(__nothrow) long double fabsl(long double ); +__declspec(__nothrow) long double floorl(long double ); +__declspec(__nothrow) long double fmodl(long double , long double ); +__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double ldexpl(long double , int ); +__declspec(__nothrow) long double logl(long double ); +__declspec(__nothrow) long double log10l(long double ); +__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +__declspec(__nothrow) long double powl(long double , long double ); +__declspec(__nothrow) long double sinl(long double ); +__declspec(__nothrow) long double sinhl(long double ); +__declspec(__nothrow) long double sqrtl(long double ); +__declspec(__nothrow) long double tanl(long double ); +__declspec(__nothrow) long double tanhl(long double ); + + + + + + +extern __declspec(__nothrow) float acoshf(float ); +__declspec(__nothrow) long double acoshl(long double ); +extern __declspec(__nothrow) float asinhf(float ); +__declspec(__nothrow) long double asinhl(long double ); +extern __declspec(__nothrow) float atanhf(float ); +__declspec(__nothrow) long double atanhl(long double ); +__declspec(__nothrow) long double copysignl(long double , long double ); +extern __declspec(__nothrow) float cbrtf(float ); +__declspec(__nothrow) long double cbrtl(long double ); +extern __declspec(__nothrow) float erff(float ); +__declspec(__nothrow) long double erfl(long double ); +extern __declspec(__nothrow) float erfcf(float ); +__declspec(__nothrow) long double erfcl(long double ); +extern __declspec(__nothrow) float expm1f(float ); +__declspec(__nothrow) long double expm1l(long double ); +extern __declspec(__nothrow) float log1pf(float ); +__declspec(__nothrow) long double log1pl(long double ); +extern __declspec(__nothrow) float hypotf(float , float ); +__declspec(__nothrow) long double hypotl(long double , long double ); +extern __declspec(__nothrow) float lgammaf(float ); +__declspec(__nothrow) long double lgammal(long double ); +extern __declspec(__nothrow) float remainderf(float , float ); +__declspec(__nothrow) long double remainderl(long double , long double ); +extern __declspec(__nothrow) float rintf(float ); +__declspec(__nothrow) long double rintl(long double ); + + + + + + + +extern __declspec(__nothrow) double exp2(double ); +extern __declspec(__nothrow) float exp2f(float ); +__declspec(__nothrow) long double exp2l(long double ); +extern __declspec(__nothrow) double fdim(double , double ); +extern __declspec(__nothrow) float fdimf(float , float ); +__declspec(__nothrow) long double fdiml(long double , long double ); +# 803 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) double fma(double , double , double ); +extern __declspec(__nothrow) float fmaf(float , float , float ); + +static __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } + + +extern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +__declspec(__nothrow) long double fmaxl(long double , long double ); +extern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +extern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +__declspec(__nothrow) long double fminl(long double , long double ); +extern __declspec(__nothrow) double log2(double ); +extern __declspec(__nothrow) float log2f(float ); +__declspec(__nothrow) long double log2l(long double ); +extern __declspec(__nothrow) long lrint(double ); +extern __declspec(__nothrow) long lrintf(float ); + +static __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } + + +extern __declspec(__nothrow) long long llrint(double ); +extern __declspec(__nothrow) long long llrintf(float ); + +static __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } + + +extern __declspec(__nothrow) long lround(double ); +extern __declspec(__nothrow) long lroundf(float ); + +static __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } + + +extern __declspec(__nothrow) long long llround(double ); +extern __declspec(__nothrow) long long llroundf(float ); + +static __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } + + +extern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +extern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); + +static __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +# 856 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" +extern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +extern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +__declspec(__nothrow) long double nearbyintl(long double ); +extern double remquo(double , double , int * ); +extern float remquof(float , float , int * ); + +static __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } + + +extern __declspec(__nothrow) __attribute__((const)) double round(double ); +extern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +__declspec(__nothrow) long double roundl(long double ); +extern __declspec(__nothrow) double tgamma(double ); +extern __declspec(__nothrow) float tgammaf(float ); +__declspec(__nothrow) long double tgammal(long double ); +extern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +extern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +__declspec(__nothrow) long double truncl(long double ); + + + + + + +# 896 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + +# 1087 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + + + + + + +# 1317 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h" + + + + + + +# 19 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 75 "..\\..\\src\\common\\tau_common.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef uint32_t status_t; + + +typedef void (*fcb_type)(void *data); + +typedef void (*uart_trans_cb)(status_t status, void *user_data); + +typedef void (*flash_trans_cb)(status_t status, void *user_data); +# 21 "..\\..\\src\\common\\tau_device_datatype.h" + + + + + + + + + + + + + + + +enum _status_groups +{ + STATUS_GROUP_GENERIC = 0, + STATUS_GROUP_I2C = 1, + STATUS_GROUP_UART = 2, + STATUS_GROUP_SPI = 3, + STATUS_GROUP_TIMER = 4, +}; + + +enum _generic_status +{ + STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), + STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), + STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), + STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), + STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), + STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), + STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +}; + + + + + +typedef enum +{ + STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), + STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), + STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), + STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), + STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), + STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), + STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), + STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), + STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), + STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), + STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +} uart_status_e; + + + + +typedef enum +{ + STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), + STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), + STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +} timer_status_e; + + + + +typedef enum +{ + DETECT_HIGH_LVL = 0, + DETECT_LOW_LVL, + DETECT_RISING_EDGE, + DETECT_FALLING_EDGE, + DETECT_DOUBLE_EDGE +} sys_cfg_trigger_e; + + + + +typedef enum +{ + TIMER_NUM0 = 0, + TIMER_NUM1, + TIMER_NUM2, + TIMER_NUM3, + TIMER_NUM_MAX +} timer_num_e; + + + + +typedef enum +{ + GPIO_INT_EXTI_INT0 = 0, + GPIO_INT_EXTI_INT1, + GPIO_INT_EXTI_INT2, + GPIO_INT_EXTI_INT3, + GPIO_INT_EXTI_INT4, + GPIO_INT_EXTI_INT5, + GPIO_INT_EXTI_INT6, + GPIO_INT_EXTI_INT7, + GPIO_INT_MAX +} gpio_int_e; + + +typedef enum _pwm_int_type +{ + PWM_INT_HIGH_OVERFLOW = 0, + PWM_INT_LOW_OVERFLOW, + PWM_INT_TOTAL_OVERFLOW, + PWM_INT_HIGH_DONE, + PWM_INT_LOW_DONE, + PWM_INT_TOTAL_DONE, + PWM_INT_MAX +} pwm_int_type_e; + + + + +typedef enum +{ + I2C_SELECT_0 = 0, + I2C_SELECT_1, +} i2c_select_e; + + + + + +typedef enum _i2c_rate +{ + I2C_RATE_STANDARD = 1, + I2C_RATE_FAST, + I2C_RATE_HIGH, +} i2c_rate_e; + + + + + +typedef enum +{ + I2C_INDEX_0, + I2C_INDEX_1, + I2C_INDEX_2, + I2C_INDEX_MAX +} i2c_index_e; + + + + + +typedef enum +{ + AHB_DMA_CH0, + AHB_DMA_CH1, + AHB_DMA_CH2, + AHB_DMA_CH3, + AHB_DMA_CH4, + AHB_DMA_CH5, + AHB_DMA_CH6, + AHB_DMA_CH7, + AHB_DMA_CH_NUM +} dma_channel_type_e; + + + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} function_state_e; + + + + +typedef enum +{ + CRC_REV_NO_TRANSPOSE = 0, + CRC_REV_ONLY_BITS_TRANSPOSE, + CRC_REV_BOTH_TRANSPOSE, + CRC_REV_ONLY_BYTES_TRANSPOSE, +} crc_reversal_type_e; + + + + +typedef enum +{ + CRC_FXOR_DISABLE = 0, + CRC_FXOR_ENABLE, +} crc_fxor_function_e; + + + + +typedef enum +{ + CRC_16_BIT_PROTOCOL = 0, + CRC_32_BIT_PROTOCOL, +} crc_protocol_type_e; + + + + + + + +# 12 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + +# 18 "..\\..\\src\\common\\tau_log.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 38 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + + + typedef unsigned int size_t; +# 54 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + +extern __declspec(__nothrow) void *memcpy(void * __restrict , + const void * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) void *memmove(void * , + const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +extern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +extern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + +extern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + +extern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); + + + + + + + + + + + + + + + + + +# 193 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + + + + + +# 209 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + +extern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + +# 232 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + +# 247 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); + + + + + + + + + +extern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + +# 270 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" +extern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); + + + + + + + + + +extern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +extern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + +extern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); + + + + + +extern __declspec(__nothrow) char *strerror(int ); + + + + + + + +extern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); + + + + + + +extern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + +extern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +extern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 502 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h" + + + + + +# 19 "..\\..\\src\\common\\tau_log.h" +# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + + + + + + + + +# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + + + + + + + + + + +# 57 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + typedef struct __va_list { void *__ap; } va_list; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typedef va_list __gnuc_va_list; + + + + + + +# 147 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h" + + + +# 20 "..\\..\\src\\common\\tau_log.h" +# 21 "..\\..\\src\\common\\tau_log.h" + + + + +# 31 "..\\..\\src\\common\\tau_log.h" + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + kLOG_LEVEL_DBG = 0, + kLOG_LEVEL_INF, + kLOG_LEVEL_ERR, + kLOG_LEVEL_NONE +} log_level_e; + + + + + +typedef enum +{ + LOG_PORT_UART0, + LOG_PORT_UART1, + LOG_PORT_SWD, + LOG_PORT_UNKNOWN +} log_port_e; + + + + + + + + + + + + + + +void tau_log_init(uint32_t baud_rate, log_port_e log_port); + + + + + + + +void tau_log_printf(log_level_e log_lv, const char *fmt, ...); + +# 13 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\common\\tau_operations.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# 14 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 15 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\common\\tau_delay.h" + + + + + + + + + + + + + + + +# 19 "..\\..\\src\\common\\tau_delay.h" + + + + + + +void delayMs(uint32_t ms); + + + + + + +void delayUs(uint32_t us); + +# 16 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h" + + + + + + + + + + + + + + + +# 1 "..\\..\\src\\common\\tau_dsi_datatype.h" + + + + + + + + + + + + + + + + +# 18 "..\\..\\src\\common\\tau_dsi_datatype.h" + + + + + + + + + + + + +typedef enum +{ + DSI_ACK_DT_ERROR = 0x02, + DSI_ACK_DT_EOTP = 0x08, + DSI_ACK_DT_GEN_SHORT_RESPONSE_1B = 0x11, + DSI_ACK_DT_GEN_SHORT_RESPONSE_2B = 0x12, + DSI_ACK_DT_GEN_LONG_RESPONSE = 0x1A, + DSI_ACK_DT_DCS_LONG_RESPONSE = 0x1C, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B = 0x21, + DSI_ACK_DT_DCS_SHORT_RESPONSE_2B = 0x22, + DSI_ACK_DT_MAX +} dsi_ack_data_type_e; + + + + +typedef enum +{ + DSI_RECV_DT_PPS = 0x0A, + DSI_RECV_DT_GEN_WRITE_1B = 0x13, + DSI_RECV_DT_GEN_WRITE_2B = 0x23, + DSI_RECV_DT_GEN_READ_0B = 0x04, + DSI_RECV_DT_GEN_READ_1B = 0x14, + DSI_RECV_DT_GEN_READ_2B = 0x24, + DSI_RECV_DT_DCS_WRITE_0B = 0x05, + DSI_RECV_DT_DCS_WRITE_1B = 0x15, + DSI_RECV_DT_DCS_READ_0B = 0x06, + DSI_RECV_DT_GEN_WRITE_LONG = 0x29, + DSI_RECV_DT_DCS_WRITE_LONG = 0x39, + DSI_RECV_DT_MAX +} dsi_data_type_e; + +typedef enum +{ + DCS_ENTER_IDLE_MODE = 0x39, + DCS_ENTER_INVERT_MODE = 0x21, + DCS_ENTER_NORMAL_MODE = 0x13, + DCS_ENTER_PARTIAL_MODE = 0x12, + DCS_ENTER_SLEEP_MODE = 0x10, + DCS_EXIT_IDLE_MODE = 0x38, + DCS_EXIT_INVERT_MODE = 0x20, + DCS_EXIT_SLEEP_MODE = 0x11, + DCS_GET_3D_CONTROL = 0x3F, + DCS_GET_ADDRESS_MODE = 0x0B, + DCS_GET_BLUE_CHANNEL = 0x08, + DCS_GET_COMPRESSION_MODE = 0x03, + DCS_GET_DIAGNOSTIC_RESULT = 0x0F, + DCS_GET_DISPLAY_MODE = 0x0D, + DCS_GET_GREEN_CHANNEL = 0x07, + DCS_GET_PIXEL_FORMAT = 0x0C, + DCS_GET_POWER_MODE = 0x0A, + DCS_GET_RED_CHANNEL = 0x06, + DCS_GET_SCANLINE = 0x45, + DCS_GET_SIGNAL_MODE = 0x0E, + DCS_NOP = 0x00, + DCS_READ_DDB_CONTINUE = 0xA8, + DCS_READ_DDB_START = 0xA1, + DCS_READ_MEMORY_CONTINUE = 0x3E, + DCS_READ_MEMORY_START = 0x2E, + DCS_SET_3D_CONTROL = 0x3D, + DCS_SET_ADDRESS_MODE = 0x36, + DCS_SET_COLUMN_ADDRESS = 0x2A, + DCS_SET_DISPLAY_OFF = 0x28, + DCS_SET_DISPLAY_ON = 0x29, + DCS_SET_GAMMA_CURVE = 0x26, + DCS_SET_PAGE_ADDRESS = 0x2B, + DCS_SET_PARTIAL_COLUMNS = 0x31, + DCS_SET_PARTIAL_ROWS = 0x30, + DCS_SET_PIXEL_FORMAT = 0x3A, + DCS_SET_SCROLL_AREA = 0x33, + DCS_SET_SCROLL_START = 0x37, + DCS_SET_TEAR_OFF = 0x34, + DCS_SET_TEAR_ON = 0x35, + DCS_SET_TEAR_SCANLINE = 0x44, + DCS_SET_VSYNC_TIMING = 0x40, + DCS_SOFT_RESET = 0x01, + DCS_WRITE_LUT = 0x2D, + DCS_WRITE_MEMORY_CONTINUE = 0x3C, + DCS_WRITE_MEMORY_START = 0x2C +} dsi_dcs_cmd_type_e; + + + + +typedef enum +{ + DSI_DATA_VIDEO_MODE = 0, + DSI_DATA_CMD_MODE = 1, + DSI_DATA_MODE_MAX +} dsi_video_data_mode_e; + + + + +typedef enum +{ + DSI_VC_0 = 0, + DSI_VC_1 = 1, + DSI_VC_2 = 2, + DSI_VC_3 = 3, + DSI_VC_MAX +} dsi_virtual_channel_e; + + + + +typedef enum +{ + DSI_FRAME_RATE_60HZ = 0, + DSI_FRAME_RATE_90HZ = 1, + DSI_FRAME_RATE_120HZ = 2, + DSI_FRAME_RATE_144HZ = 3, + DSI_FRAME_RATE_160HZ = 4, + DSI_FRAME_RATE_MAX +} dsi_video_frame_rate_e; + + + + +typedef enum +{ + DSI_RGB565 = 1, + DSI_RGB666 = 2, + DSI_RGB666_LOOSELY = 3, + DSI_RGB888 = 4, + DSI_RGB10_10_10 = 5, + DSI_RGB12_12_12 = 6, + DSI_YCbCr422_16 = 7, + DSI_PENTILE_16 = DSI_YCbCr422_16, + DSI_YCbCr422_20_LOOSELY = 8, + DSI_YCbCr422_24 = 9, + DSI_YCbCr420_12 = 10, + DSI_DSC_STREAM = 11, + DSI_COLOR_CODE_MAX +} dsi_color_code_e; + + + + +typedef enum +{ + DPI_ENDIAN_RGB = 0, + DPI_ENDIAN_BGR +} dsi_endianness_e; + + + + +typedef enum +{ + DSI_LANE_1 = 1, + DSI_LANE_2 = 2, + DSI_LANE_3 = 3, + DSI_LANE_4 = 4, + DSI_LANE_NUME_MAX +} dsi_lane_nume_e; + + + + +typedef enum +{ + DSI_NONBURST_PULSE = 0, + DSI_NONBURST_EVENT = 1, + DSI_BURST_MODE = 2, + DSI_VIDEO_MODE_MAX +} dsi_video_mode_type_e; + + + + +typedef enum +{ + DSI_CMD_TX_HS = 0, + DSI_CMD_TX_LP = 1 +} dsi_tx_cmd_tx_type_e; + + + + +typedef enum +{ + VIDOE_ROT_ANGLE_0 = 0, + VIDOE_ROT_ANGLE_90 = 1, + VIDOE_ROT_ANGLE_180 = 2, + VIDOE_ROT_ANGLE_270 = 3, + VIDOE_ROT_ANGLE_MAX +} video_rotate_angle_e; + + + + + + + + + +typedef enum +{ + RX_LANE_SWAP_0123 = 0x0, + RX_LANE_SWAP_3210 = 0x1, + RX_LANE_SWAP_2103 = 0x2, + RX_LANE_SWAP_DEFAULT_ORDER = 0x2, + RX_LANE_SWAP_3012 = 0x3, + RX_LANE_SWAP_MAX +} dsi_rx_lane_swap_e; + + + + + + + +typedef enum +{ + RX_LANE_0_PN_SWAP = 0x1, + RX_LANE_1_PN_SWAP = 0x2, + RX_LANE_2_PN_SWAP = 0x4, + RX_LANE_3_PN_SWAP = 0x8, + RX_LANE_CLK_PN_SWAP = 0x10 +} dsi_rx_lane_pn_swap_e; + + + + +typedef enum +{ + ERR_HANDLE_NONE = 0, + ERR_HANDLE_L1 = 1, + ERR_HANDLE_L2 = 2, + ERR_HANDLE_L3 = 3, + ERR_HANDLE_MAX +} hal_err_handle_level_e; + + + + +typedef enum +{ + FC_AUTO_MODE = 0, + FC_V2V_NORMAL_MODE = 1, + FC_V2C_NORMAL_MODE = 2, + FC_C2V_NORMAL_MODE = 3, + FC_C2C_NORMAL_MODE = 4, + FC_PRO_MOTION_MODE = 6, + FC_PRO_MOTION_MODE_2 = 5, + FC_PRO_MOTION_WITH_PU_MODE = 7, + FC_V2V_AUTO_SYCN_MODE = 8, + FC_V2V_DIRECT_MODE = 9, + FC_MODE_MAX +} flow_control_mode_e; + + + + +typedef struct +{ + uint16_t top; + uint16_t bottom; + uint16_t left; + uint16_t right; + _Bool enable; +} pic_edge_info_t; + + + + +typedef struct +{ + uint32_t src_w; + uint32_t src_h; + uint32_t dst_w; + uint32_t dst_h; + dsi_video_frame_rate_e src_frate; + dsi_video_data_mode_e src_mode; + dsi_video_data_mode_e dst_mode; + uint16_t pn_swap; +} dsi_base_trans_info_t; + + + + +typedef struct +{ + _Bool mirror_en; + _Bool pu_optimize; + video_rotate_angle_e rot_angle; + flow_control_mode_e flow_control_mode; + pic_edge_info_t crop_info; + pic_edge_info_t blank_info; + _Bool bw_optimize; + uint8_t pq_type; +} dsi_base_extra_info_t; + + + + +typedef struct +{ + uint32_t coef_c00; + uint32_t coef_c01; + uint32_t coef_c02; + uint32_t coef_c10; + uint32_t coef_c11; + uint32_t coef_c12; + uint32_t coef_c20; + uint32_t coef_c21; + uint32_t coef_c22; +} ccm_coef_t; + + + + +typedef enum +{ + HIGHT_PERFORMAN_NONE = 0, + HIGHT_PERFORMAN_L1 = 1, + HIGHT_PERFORMAN_L2 = 2, + HIGHT_PERFORMAN_MAX +} hight_performan_mode_e; + + + + +typedef struct +{ + uint16_t edgemedslope; + uint16_t desatslope; +} dsi_tx_fc_t; + + + + +typedef struct +{ + _Bool y_enh_method; + uint8_t enhance_str; + uint16_t enhance_slope; + uint16_t boundscale_low; + uint16_t boundscale_high; +} dsi_tx_edge_enh_t; + + + + +typedef struct +{ + uint8_t edge_thr; + _Bool use_large_kernel; +} dsi_tx_edge_dect_t; + + + + +typedef struct +{ + int8_t brightness; + uint16_t contrast; + uint16_t saturation; +} dsi_tx_bcs_t; + + + + +typedef struct +{ + uint32_t st_line; + uint32_t st_col; + uint32_t end_line; + uint32_t end_col; + uint8_t value_r; + uint8_t value_g; + uint8_t value_b; +} dsi_tx_par_dis_t; + +# 17 "..\\..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h" +# 18 "..\\..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h" +# 19 "..\\..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h" + + + + + + + + + +typedef struct hal_dcs_execute_entry_t hal_dcs_execute_entry_t; + +typedef struct hal_dcs_packet_t hal_dcs_packet_t; + +typedef struct hal_dsi_rx_ctrl_handle_t hal_dsi_rx_ctrl_handle_t; + + +typedef _Bool (*hal_dsi_rx_ctrl_dcs_execute)(hal_dsi_rx_ctrl_handle_t *rx_handle, hal_dcs_packet_t *dcs_packet); + + +typedef _Bool (*hal_dsi_rx_ctrl_read_entry)(uint8_t data_type, uint8_t dcs_cmd, uint8_t param); + + +typedef _Bool (*hal_dsi_rx_ctrl_pps_entry)(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height); + + + + +typedef enum hal_rx_event_e +{ + HAL_RX_FS_EVENT = 0x1, + HAL_RX_LINE_EVENT = 0x2, + HAL_RX_END_EVENT = 0x4, +} hal_rx_event_e; + + + + + + +typedef enum +{ + RX_FLT_OPT_0 = 0, + RX_FLT_OPT_1 = 1, + RX_FLT_OPT_2 = 2, + RX_FLT_OPT_3 = 3, + RX_FLT_OPT_4 = 4, + RX_FLT_OPT_5 = 5, + RX_FLT_OPT_6 = 6, + RX_FLT_OPT_7 = 7, + RX_FLT_OPT_8 = 8, + RX_FLT_OPT_9 = 9, + RX_FLT_OPT_10 = 10, + RX_FLT_LINEAR = 11, + RX_FLT_MAX +} hal_dsi_rx_pq_filter_e; + + +typedef void (*hal_dsi_rx_ctrl_event_entry)(hal_rx_event_e event, void *data); + + + + +typedef struct hal_dsi_rx_ctrl_handle_t +{ + dsi_base_trans_info_t base_info; + dsi_base_extra_info_t extra_info; + dsi_color_code_e rx_color_mode; + dsi_lane_nume_e rx_lanes; + dsi_video_mode_type_e rx_nonburst_models; + _Bool compress_en; + uint32_t rx_hsclk_rate; + uint8_t rx_dsc_pps[128]; + const hal_dcs_execute_entry_t *cus_dcs_entry_table; + hal_dsi_rx_ctrl_read_entry rx_dcs_read_entry; + hal_dsi_rx_ctrl_pps_entry pps_update_entry; + _Bool used; + hal_err_handle_level_e err_handler_level; + uint8_t rx_strength; + hight_performan_mode_e hight_performan_mode; + dsi_rx_lane_swap_e rx_lane_swap; + hal_dsi_rx_pq_filter_e rx_pq_index; +} hal_dsi_rx_ctrl_handle_t; + + + + +typedef struct hal_dcs_execute_entry_t +{ + uint32_t dcs_command; + hal_dsi_rx_ctrl_dcs_execute execute_func; + _Bool immediately_func; +} hal_dcs_execute_entry_t; + + + + +typedef struct hal_dcs_packet_t +{ + uint32_t data_type; + uint32_t dcs_command; + uint32_t param_length; + uint8_t *packet_param; + uint16_t crc_data; + const hal_dcs_execute_entry_t *dcs_execute_entry; +} hal_dcs_packet_t; + + + + +typedef struct +{ + uint32_t ipi_pg_hsa; + uint32_t ipi_pg_hbp; + uint32_t ipi_pg_hfp; + uint32_t ipi_pg_vsa; + uint32_t ipi_pg_vbp; + uint32_t ipi_pg_vfp; + uint32_t frame_rate; +} hal_dsi_rx_ipi_pg_t; + + + + + +typedef enum +{ + HAL_RX_DCS_FILTER_0 = 0x0, + HAL_RX_DCS_FILTER_1 = 0x1, + HAL_RX_DCS_FILTER_2 = 0x2, + HAL_RX_DCS_FILTER_3 = 0x3, + HAL_RX_DCS_FILTER_4 = 0x4, + HAL_RX_DCS_FILTER_5 = 0x5, + HAL_RX_DCS_FILTER_6 = 0x6, + HAL_RX_DCS_FILTER_7 = 0x7, + HAL_RX_DCS_FILTER_8 = 0x8, + HAL_RX_DCS_FILTER_9 = 0x9, + HAL_RX_DCS_FILTER_A = 0xA, + HAL_RX_DCS_FILTER_B = 0xB, + HAL_RX_DCS_FILTER_MAX +} hal_rx_dcs_filter_sel_e; + + + + + +typedef enum +{ + HAL_RX_QRESP_CODE0 = 0, + HAL_RX_QRESP_CODE1 = 1, + HAL_RX_QRESP_CODE2 = 2, + HAL_RX_QRESP_CODE3 = 3, + HAL_RX_QRESP_CODE4 = 4, + HAL_RX_QRESP_CODE5 = 5, + HAL_RX_QRESP_CODE6 = 6, + HAL_RX_QRESP_CODE7 = 7, + HAL_RX_QRESP_MAX +} hal_rx_dcs_qresp_e; + + + + +typedef enum +{ + PENTILE_SRC_FORMAT_RGB = 0x0, + PENTILE_SRC_FORMAT_BGR = 0x1, + PENTILE_SRC_FORMAT_RGBG_BGRG = 0x8, + PENTILE_SRC_FORMAT_GBGR_GRGB = 0x9, + PENTILE_SRC_FORMAT_BGRG_RGBG = 0xA, + PENTILE_SRC_FORMAT_GRGB_GBGR = 0xB, + PENTILE_SRC_FORMAT_RGBG_RGBG = 0xC, + PENTILE_SRC_FORMAT_GBGR_GBGR = 0xD, + PENTILE_SRC_FORMAT_BGRG_BGRG = 0xE, + PENTILE_SRC_FORMAT_GRGB_GRGB = 0xF, + PENTILE_SRC_FORMAT_MAX +} pentile_src_format_e; + + + + +typedef enum +{ + RX_CLK_100M = 0, + RX_CLK_150M = 1, + RX_CLK_200M = 2, + RX_CLK_300M = 3, + RX_CLK_40M = 4, + RX_CLK_80M = 5, + RX_CLK_MAX +} hal_rx_clk_e; + + + + +typedef enum +{ + PQ_TYPE_DEFAULT = 0x0, + PQ_TYPE_LIMIT = 0x1, + PQ_TYPE_MAX +} pq_type_e; + + + + +typedef enum +{ + LINE_WEIGHT_FINE = 0, + LINE_WEIGHT_MEDIUM = 1, + LINE_WEIGHT_BOLD = 2, + LINE_WEIGHT_MAX +} line_weight_e; + + + + + + + + + + + + + + +hal_dsi_rx_ctrl_handle_t *hal_dsi_rx_ctrl_create_handle(void); + + + + + + +_Bool hal_dsi_rx_ctrl_release_handle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + + + +_Bool hal_dsi_rx_ctrl_pre_init_pps(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pps[], uint32_t pps_size); + + + + + + +_Bool hal_dsi_rx_ctrl_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_deinit(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_start(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_restart(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_stop(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_set_rx_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_clk_e rxbr_clk); + + + + + + + + + + +_Bool hal_dsi_rx_ctrl_send_ack_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_ack_data_type_e data_type, dsi_virtual_channel_e vc, uint8_t cmd_count, ...); + + + + + + + + + + + + +_Bool hal_dsi_rx_ctrl_ack_short_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]); + + + + + + + + + + + + + +_Bool hal_dsi_rx_ctrl_ack_long_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t data_size, uint8_t data[]); + + + + + + +_Bool hal_dsi_rx_ctrl_dcs_async_handler(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + + + + +_Bool hal_dsi_rx_ctrl_set_hw_cmd_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, + hal_rx_dcs_filter_sel_e filter_number, + uint32_t cmd_start, uint32_t cmd_end); + + + + + + + + + +_Bool hal_dsi_rx_ctrl_enable_test_pattern(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pg_orient, _Bool enable, int frame_rate); + + + + + + + +uint32_t hal_dsi_rx_ctrl_get_max_ret_size(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_get_compressen_en(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + +_Bool hal_dsi_rx_ctrl_toggle_resolution(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + + + + + + + +_Bool hal_dsi_rx_ctrl_set_cus_esc_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t esc_clk); + + + + + + + +_Bool hal_dsi_rx_ctrl_set_auto_hw_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable); + + + + + + +_Bool hal_dsi_rx_ctrl_toggle_input_frame_rate(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_video_frame_rate_e frame_rate); + + + + + + + + +void hal_dsi_rx_ctrl_register_write_cmd_entry(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_dcs_execute execute_func); + + + + + + + + + + + + + +_Bool hal_dsi_rx_ctrl_set_auto_ack(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_dcs_qresp_e qresp_number, dsi_ack_data_type_e data_type, uint32_t cmd_code, uint8_t cmd_count, ...); + + + + + + + + + + +void hal_dsi_rx_ctrl_draw_mode_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool draw_en, _Bool pxl_init_en, dsi_color_code_e color_mode, uint32_t init_value); + + + + + + + + + + + +void hal_dsi_rx_ctrl_set_pixel_data(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, int x, int y, uint8_t red_data, uint8_t green_data, uint8_t blue_data); + + + + + + + + + +void hal_dsi_rx_ctrl_force_video_crtl(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable, dsi_color_code_e frc_vid_code); + + + + + + + + + + +void hal_dsi_rx_ctrl_register_callback(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_event_entry event_cb, uint32_t event_mask, _Bool enable, void *user_data); + + + + + + + +void hal_dsi_rx_ctrl_set_check_crc(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable); + + + + + + +void hal_dsi_rx_ctrl_set_log_level(log_level_e rx_drv_level); + + + + + + + + + + + +void hal_dsi_rx_ctrl_draw_line(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data, line_weight_e line_weight); + + + + + + + +void hal_dsi_rx_ctrl_set_cap_pixel_pos(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x0, uint16_t y0); + + + + + +uint32_t hal_dsi_rx_ctrl_get_cap_pixel_color(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +# 17 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h" +# 18 "..\\..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h" +# 1 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_gpio.h" +# 18 "..\\..\\src\\sdk\\include\\hal_gpio.h" + + + + + + + +typedef enum +{ + + IO_PAD_GPIO0 = 0, + IO_PAD_GPIO1, + IO_PAD_GPIO2, + IO_PAD_GPIO3, + IO_PAD_GPIO4, + IO_PAD_GPIO5, + IO_PAD_GPIO6, + IO_PAD_GPIO7, + IO_PAD_GPIO8, + IO_PAD_GPIO9, + IO_PAD_GPIO10, + IO_PAD_GPIO11, + IO_PAD_GPIO12, + IO_PAD_GPIO13, + IO_PAD_GPIO14, + IO_PAD_GPIO15, + IO_PAD_GPIO16, + IO_PAD_GPIO17, + IO_PAD_GPIO18, + IO_PAD_GPIO19, + IO_PAD_GPIO20, + IO_PAD_GPIO21, + IO_PAD_GPIO22, + IO_PAD_GPIO23, + IO_PAD_GPIO24, + IO_PAD_GPIO25, + + + IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, + IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, + IO_PAD_AP_INT = IO_PAD_GPIO2, + IO_PAD_AP_TE = IO_PAD_GPIO3, + IO_PAD_AP_SWIRE = IO_PAD_GPIO4, + IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, + IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, + IO_PAD_TD_RSTN = IO_PAD_GPIO7, + IO_PAD_AP_PWMEN = IO_PAD_GPIO8, + IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, + IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, + IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, + IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, + IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, + IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, + IO_PAD_SWD_CLK = IO_PAD_GPIO15, + IO_PAD_SWD_DIO = IO_PAD_GPIO16, + IO_PAD_AP_RSTN = IO_PAD_GPIO17, + IO_PAD_UART0_TX = IO_PAD_GPIO18, + IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, + IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, + IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, + IO_PAD_TD_INT = IO_PAD_GPIO22, + IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, + IO_PAD_UART1_TX = IO_PAD_GPIO24, + IO_PAD_UART0_RX = IO_PAD_GPIO25, + + IO_PAD_MAX, + + + + IO_PIN_1 = IO_PAD_SWD_CLK, + IO_PIN_2 = IO_PAD_UART0_TX, + IO_PIN_3 = IO_PAD_SWD_DIO, + IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, + IO_PIN_5 = IO_PAD_TD_SPIM_CLK, + IO_PIN_6 = IO_PAD_TD_SPIM_CSN, + IO_PIN_7 = IO_PAD_TD_SPIM_MISO, + IO_PIN_8 = IO_PAD_TD_RSTN, + IO_PIN_9 = IO_PAD_TD_FC_CSN, + IO_PIN_10 = IO_PAD_TD_FC_CLK, + IO_PIN_11 = IO_PAD_TD_FC_IO0, + IO_PIN_12 = IO_PAD_TD_FC_IO1, + IO_PIN_13 = IO_PAD_TD_TP_RESX, + IO_PIN_14 = IO_PAD_UART1_TX, + IO_PIN_15 = IO_PAD_AP_SWIRE, + IO_PIN_16 = IO_PAD_AP_INT, + IO_PIN_17 = IO_PAD_AP_PWMEN, + IO_PIN_18 = IO_PAD_AP_TPRSTN, + + IO_PIN_29 = IO_PAD_AP_TE, + IO_PIN_30 = IO_PAD_AP_SPIS_MISO, + IO_PIN_31 = IO_PAD_AP_SPIS_CSN, + IO_PIN_32 = IO_PAD_AP_SPIS_CLK, + IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, + IO_PIN_34 = IO_PAD_AP_RSTN, + IO_PIN_35 = IO_PAD_TD_INT, + IO_PIN_36 = IO_PAD_UART0_RX, + +} io_pad_e; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef enum +{ + PIN1_MODE_SWDCLK = 0, + PIN1_MODE_GPIO15 = 2, +} pin1_mode_e; + + + + + +typedef enum +{ + PIN2_MODE_UART0_TX = 0, + PIN2_MODE_PWMO = 1, + PIN2_MODE_GPIO18 = 2, + PIN2_MODE_PWMI = 3, + PIN2_MODE_TEAR1 = 4, +} pin2_mode_e; + + + + +typedef enum +{ + PIN3_MODE_SWDIO = 0, + PIN3_MODE_GPIO16 = 2, +} pin3_mode_e; + + + + + +typedef enum +{ + PIN4_MODE_SPIM_MOSI = 0, + PIN4_MODE_I2C02_SDA = 1, + PIN4_MODE_GPIO6 = 2, + PIN4_MODE_UART0_TX = 3, +} pin4_mode_e; + + + + +typedef enum +{ + PIN5_MODE_SPIM_SCLK = 0, + PIN5_MODE_I2C1_SCL = 1, + PIN5_MODE_GPIO19 = 2, +} pin5_mode_e; + + + + +typedef enum +{ + PIN6_MODE_SPIM_CSN = 0, + PIN6_MODE_I2C1_SDA = 1, + PIN6_MODE_GPIO20 = 2, +} pin6_mode_e; + + + + +typedef enum +{ + PIN7_MODE_SPIM_MISO = 0, + PIN7_MODE_I2C02_SCL = 1, + PIN7_MODE_GPIO5 = 2, +} pin7_mode_e; + + + + +typedef enum +{ + PIN8_MODE_GPIO7 = 2, + PIN8_MODE_I2C02_SDA = 3, +} pin8_mode_e; + + + + +typedef enum +{ + PIN9_MODE_TSPIS_CSN = 0, + PIN9_MODE_GPIO12 = 2, +} pin9_mode_e; + + + + +typedef enum +{ + PIN10_MODE_TSPIS_CLK = 0, + PIN10_MODE_GPIO11 = 2, +} pin10_mode_e; + + + + + +typedef enum +{ + PIN11_MODE_TSPIS_IO0 = 0, + PIN11_MODE_GPIO13 = 2, + PIN11_MODE_I2C02_SDA = 3, +} pin11_mode_e; + + + + +typedef enum +{ + PIN12_MODE_TSPIS_IO1 = 0, + PIN12_MODE_GPIO14 = 2, + PIN12_MODE_I2C02_SCL = 3, +} pin12_mode_e; + + + + +typedef enum +{ + PIN13_MODE_GPIO23 = 2, + PIN13_MODE_PWMO = 3, + PIN13_MODE_UART1_RX = 4, +} pin13_mode_e; + + + + +typedef enum +{ + PIN14_MODE_GPIO24 = 2, + PIN14_MODE_UART0_RX = 3, + PIN14_MODE_UART1_TX = 4, +} pin14_mode_e; + + + + + + +typedef enum +{ + PIN15_MODE_SWIRE = 0, + PIN15_MODE_PWMO = 1, + PIN15_MODE_GPIO4 = 2, +} pin15_mode_e; + + + + +typedef enum +{ + PIN16_MODE_GPIO2 = 2, +} pin16_mode_e; + + + + +typedef enum +{ + PIN17_MODE_UART0_RX = 1, + PIN17_MODE_GPIO8 = 2, + PIN17_MODE_PWMO = 3, +} pin17_mode_e; + + + + +typedef enum +{ + PIN18_MODE_UART0_RX = 0, + PIN18_MODE_GPIO21 = 2, + PIN18_MODE_I2C02_SCL = 3, +} pin18_mode_e; + + + + + + + +typedef enum +{ + PIN29_MODE_JTAG_TRSTN = 0, + PIN29_MODE_TEAR = 1, + PIN29_MODE_GPIO3 = 2, +} pin29_mode_e; + + + + + +typedef enum +{ + PIN30_MODE_JTAG_TDO = 0, + PIN30_MODE_SPIS_MISO = 1, + PIN30_MODE_GPIO0 = 2, + PIN30_MODE_UART0_RX = 3, + PIN30_MODE_I2C1_SCL = 6, +} pin30_mode_e; + + + + +typedef enum +{ + PIN31_MODE_JTAG_TMS = 0, + PIN31_MODE_SPIS_CSN = 1, + PIN31_MODE_GPIO10 = 2, + PIN31_MODE_I2C02_SDA = 3, +} pin31_mode_e; + + + + +typedef enum +{ + PIN32_MODE_JTAG_TCK = 0, + PIN32_MODE_SPIS_SCLK = 1, + PIN32_MODE_GPIO9 = 2, + PIN32_MODE_I2C02_SCL = 3, +} pin32_mode_e; + + + + +typedef enum +{ + PIN33_MODE_JTAG_TDI = 0, + PIN33_MODE_SPIS_MOSI = 1, + PIN33_MODE_GPIO1 = 2, + PIN33_MODE_UART0_TX = 3, + PIN33_MODE_I2C1_SDA_0 = 6, +} pin33_mode_e; + + + + +typedef enum +{ + PIN34_MODE_GPIO17 = 2, +} pin34_mode_e; + + + + + +typedef enum +{ + PIN35_MODE_GPIO22 = 2, +} pin35_mode_e; + + + + + +typedef enum +{ + PIN36_MODE_UART0_RX = 0, + PIN36_MODE_PWMO = 1, + PIN36_MODE_GPIO25 = 2, +} pin36_mode_e; + + + + + + + +typedef enum +{ + IO_MODE_INTER_FC_CLK = 0, + IO_MODE_TSPIS_CLK_EN = 2, +} pad_sfc_clk_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_CSN = 0, + IO_MODE_TSPIS_CSN_EN = 2, +} pad_sfc_csn_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO0 = 0, + IO_MODE_TSPIS_IO0_EN = 2, +} pad_sfc_io0_mode_e; + + + + +typedef enum +{ + IO_MODE_INTER_FC_IO1 = 0, + IO_MODE_TSPIS_IO1_EN = 2, +} pad_sfc_io1_mode_e; + + + + +typedef enum +{ + IO_SLEW_RATE_SLOW = 0, + IO_SLEW_RATE_FAST = 1, +} pad_slew_rate_e; + + + + + + + +typedef enum +{ + IO_IOE_INPUT = 0, + IO_IOE_OUTPUT, + IO_IOE_NONE +} gpio_ioe_e; + + + + +typedef enum +{ + IO_LVL_LOW = 0, + IO_LVL_HIGH, + IO_LVL_NONE +} gpio_level_e; + + + + + + + +typedef struct +{ + io_pad_e pad; + uint8_t mode; + gpio_ioe_e ioe; + gpio_level_e lvl; +} io_pad_attr_t; + + + + + + + + + + + + + + +void hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); + + + + + + + + +void hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); + + + + + + + +void hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); + + + + + + +gpio_int_e hal_gpio_get_int_type(io_pad_e pad); + + + + + + + +void hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); + + + + + + + +void hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); + + + + + + +void hal_gpio_init_input(io_pad_e pad); + + + + + + +gpio_level_e hal_gpio_get_input_data(io_pad_e pad); + + + + + + + +void hal_gpio_set_mode(io_pad_e pad, uint8_t mode); + + + + + + +void hal_gpio_set_high_impedance(io_pad_e pad); + + + + + + + + +void hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); + + + + + + + + +void hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); + + + + + + + +void hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); + + + + + + + +void hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); + + + + + + + +void hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); + + + + + + + + +void hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); + + + + + + + +void hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); + +# 19 "..\\..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h" + + + + + + + + + + + +typedef struct +{ + uint16_t st_col; + uint16_t width; + uint8_t remap_en; + uint8_t blank_en; +} blank_disp_t; + + + + +typedef uint8_t (remap_rule_t)[24]; + + + + +typedef struct +{ + _Bool pentile_enable; + _Bool pentile_reverse_en; + _Bool pentile_24b; + uint32_t rgb_hact; + remap_rule_t *remapl_rule; + remap_rule_t *remapr_rule; + blank_disp_t blank_info0; + blank_disp_t blank_info1; +} dsi_tx_pent_info_t; + + + + + + +typedef enum +{ + ALWAYS_HS = 0, + ONLY_DATA_LANE_AUTO_LP = 1, + CLK_DATA_LANE_AUTO_LP = 2, +} dsi_tx_lane_lp_e; + + + + + +typedef enum +{ + TX_FLT_OPT = 0, + TX_FLT_LINEAR = 1, + TX_FLT_MAX +} hal_dsi_tx_pq_filter_e; + + + + +typedef struct +{ + dsi_base_trans_info_t base_info; + uint32_t dpi_vsa; + uint32_t dpi_vbp; + uint32_t dpi_vfp; + uint32_t dpi_hsa; + uint32_t dpi_hbp; + uint32_t dpi_hfp; + float tx_frame_rate; + uint8_t lane_num; + _Bool used; + _Bool lp_exit_lpdt; + dsi_tx_lane_lp_e tx_lane_lp; + dsi_virtual_channel_e channel_id; + dsi_video_mode_type_e vid_mode; + dsi_tx_cmd_tx_type_e cmd_tx_type; + dsi_tx_pent_info_t pentile_info; + hal_dsi_tx_pq_filter_e tx_pq_index; +} hal_dsi_tx_ctrl_handle_t; + + + + +typedef enum +{ + TE_60HZ_MODE = 0, + TE_USER_MODE = 1, + TE_STOP_MODE = 1, + TE_90HZ_MODE = 2, + TE_120HZ_MODE = 3, + TE_144HZ_MODE = 4, + TE_160HZ_MODE = 5, + TE_MODE_MAX +} te_mode_e; + + + + +typedef enum +{ + TX_VPG_V_COLOR = 0, + TX_VPG_H_COLOR = 1, + TX_VPG_V_BER = 2, + TX_VPG_FLICKER = 3, + TX_VPG_MAX +} dsi_tx_vpg_style_e; + + + + + + +_Bool hal_dsi_tx_ctrl_init(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + + + + + + +_Bool hal_dsi_tx_ctrl_deinit(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + + + + + + +hal_dsi_tx_ctrl_handle_t *hal_dsi_tx_ctrl_create_handle(void); + + + + + + +_Bool hal_dsi_tx_ctrl_release_handle(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + + + + + + +_Bool hal_dsi_tx_ctrl_start(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + + + + + + +_Bool hal_dsi_tx_ctrl_stop(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + + + + + + + + + + +void hal_dsi_tx_ctrl_read_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd, uint8_t size, uint8_t *data); + + + + + + + + + + +_Bool hal_dsi_tx_ctrl_vporch_bta_opera(uint8_t data_type, uint8_t cmd, uint8_t size, uint8_t *data); + + + + + + + + + +_Bool hal_dsi_tx_ctrl_write_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd_count, ...); + + + + + + + + + +_Bool hal_dsi_tx_ctrl_write_array_cmd(uint8_t data_type, uint8_t vc, uint8_t size, const uint8_t *data); + + + + + + + +void hal_dsi_tx_ctrl_cmd_mode(_Bool enable); + + + + + + +void hal_dsi_tx_ctrl_set_escape_clock_div(uint32_t esc_clk); + + + + + + + +void hal_dsi_tx_ctrl_set_endianness(dsi_endianness_e endianness); + + + + + + +void hal_dsi_tx_ctrl_set_ccm(ccm_coef_t *ccm); + + + + + + + +void hal_dsi_tx_ctrl_set_edge_dect(dsi_tx_edge_dect_t *edge_dect_para, _Bool edge_dect_en); + + + + + + + +void hal_dsi_tx_ctrl_set_edge_enhance(dsi_tx_edge_enh_t *edge_enh_para, _Bool edge_enh_en); + + + + + + + +void hal_dsi_tx_ctrl_set_fc(dsi_tx_fc_t *fc_para, _Bool fc_en); + + + + + + + +void hal_dsi_tx_ctrl_set_bcs(dsi_tx_bcs_t *bcs_para, _Bool bcs_en); + + + + + + + + +void hal_dsi_tx_ctrl_set_overwrite_rgb(uint8_t R, uint8_t G, uint8_t B); + + + + + + +void hal_dsi_tx_ctrl_overwrite_enable(_Bool enable); + + + + + + + +void hal_dsi_tx_ctrl_partial_disp_enable(_Bool enable, dsi_tx_par_dis_t *par_disp_cfg); + + + + + + + + + +void hal_dsi_tx_ctrl_set_vpg(_Bool vpg_en, dsi_tx_vpg_style_e style, _Bool vpg_hline_adj); + + + + + + + +void hal_dsi_tx_ctrl_set_tear_mode(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, te_mode_e te); + + + + + + +void hal_dsi_tx_ctrl_gen_a_tear_signal(void); + + + + + + +_Bool hal_dsi_tx_ctrl_gen_a_frame(void); + + + + + + + +_Bool hal_dsi_tx_ctrl_set_cus_sync_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, uint32_t line_num); + + + + + + +uint32_t hal_dsi_tx_ctrl_get_disp_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +# 18 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_swire.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_swire.h" +# 18 "..\\..\\src\\sdk\\include\\hal_swire.h" + + + + + + + + + + + + + + + + + + + + + +void hal_swire_init(void); + + + + + + +void hal_swire_deinit(void); + + + + + + + + + +void hal_swire_set_waveform(uint32_t start_time, uint32_t stop_time, + uint32_t high_time, uint32_t low_time); + + + + + + + +void hal_swire_set_pulse(uint32_t pulse); + + + + + + +void hal_swire_enable(_Bool state); + + + + + + + + +void hal_swire_set_timer(timer_num_e index, uint32_t ms, _Bool repeat); + + + + + + +void hal_swire_register_callback(fcb_type cb_func); + +# 19 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_timer.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_timer.h" +# 18 "..\\..\\src\\sdk\\include\\hal_timer.h" + + + + + + + + + + + + + + + + + + + + + +void hal_timer_init(timer_num_e index); + + + + + + +void hal_timer_deinit(timer_num_e index); + + + + + + + + + + +void hal_timer_start(timer_num_e index, uint32_t ms, fcb_type cb_func, void *data); + + + + + + + + + + +void hal_timer_start_ex(timer_num_e index, uint32_t us, fcb_type cb_func, void *data); + + + + + + +void hal_timer_stop(timer_num_e index); + + + + + + + +void hal_timer_set_repeat(timer_num_e index, _Bool repeat); + + + + + + +timer_status_e hal_timer_get_status(timer_num_e index); + +# 20 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + + + + +# 16 "..\\..\\src\\sdk\\include\\hal_system.h" +# 17 "..\\..\\src\\sdk\\include\\hal_system.h" +# 18 "..\\..\\src\\sdk\\include\\hal_system.h" + + + + + + + + + + + +typedef enum +{ + HAL_SYSCLK_80M = 80000000, + HAL_SYSCLK_100M = 100000000, + HAL_SYSCLK_150M = 150000000 +} hal_system_clk_e; + + + + + + + + + + + + + + +void hal_system_init(hal_system_clk_e sysclk); + + + + + + +void hal_system_idle_mode(_Bool disable_systick); + + + + + + +void hal_system_register_systick_cb(fcb_type cb_func); + + + + + + +_Bool hal_system_enable_systick(uint8_t ms); + + + + + + +_Bool hal_system_disable_systick(void); + + + + + + +uint32_t hal_system_get_tick(void); + + + + + + +void hal_system_reset_chip(void); + + + + + + +uint32_t hal_system_get_debug_state(void); + + + + + + +void hal_system_clear_debug_state(void); + + + + + + +_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); + +# 21 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 22 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\app\\test_cfg_global.h" + + + + + + + + + + + + + + + + + + + +# 31 "..\\..\\src\\app\\test_cfg_global.h" + + + + +# 37 "..\\..\\src\\app\\test_cfg_global.h" + + + +# 23 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_pwr.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_pwr.h" +# 18 "..\\..\\src\\sdk\\include\\hal_pwr.h" +# 19 "..\\..\\src\\sdk\\include\\hal_pwr.h" + + + + + + + + + + + +typedef enum +{ + PWR_SEL_IOV18 = 0, + PWR_SEL_TP18 = 1, + PWR_SEL_VCC = 2, + PWR_SEL_VDD13CP = 3, +} pwr_main_power_sel_e; + + + + +typedef enum +{ + PWR_SLEEP_IN_NON = 0, + PWR_SLEEP_IN_TP18 = 1, + PWR_SLEEP_IN_VCC = 2, + PWR_SLEEP_IN_VCC_TP18 = 3, + PWR_SLEEP_IN_IOV18 = 4, + PWR_SLEEP_IN_IOV18_TP18 = 5, + PWR_SLEEP_IN_IOV18_VCC = 6, + PWR_SLEEP_IN_IOV18_VCC_TP18 = 7, +} pwr_sleep_power_sel_e; + + + + +typedef enum +{ + WUP_RISING_EDGE = 2, + WUP_FALLING_EDGE = 3 +} pwr_wakeup_trigger_e; + + + + +typedef enum +{ + RF_POWER_ON = 0, + RF_CORE_RST = 1, + RF_WDT_RST = 2, + RF_CHIP_RST = 3, + RF_APRSTN_WAKEUP = 4, + RF_TDINT_WAKEUP = 5 +} pwr_reset_flag_e; + + + + + +typedef enum +{ + PWR_NORMAL_SLEEP_MODE = 0, + PWR_STOP_SLEEP_MODE = 1, + PWR_DEEP_SLEEP_MODE = 2 +} pwr_sleep_mode_e; + + +typedef enum _pwr_hv_ldo_e +{ + HV_LDO_0 = 0, + HV_LDO_1 = 1, + HV_LDO_2 = 2, + HV_LDO_3 = 3, + HV_LDO_4 = 4, + HV_LDO_5 = 5, + HV_LDO_6 = 6, + HV_LDO_7 = 7, + HV_LDO_8 = 8, + HV_LDO_9 = 9, + HV_LDO_10 = 10, + HV_LDO_11 = 11, + HV_LDO_12 = 12, + HV_LDO_13 = 13, + HV_LDO_14 = 14, + HV_LDO_15 = 15, +} pwr_hv_ldo_e; + + +typedef enum _pwr_ldo_13s_e +{ + LDO_13S_0 = 0, + LDO_13S_1 = 1, + LDO_13S_2 = 2, + LDO_13S_3 = 3, + LDO_13S_4 = 4, + LDO_13S_5 = 5, + LDO_13S_6 = 6, + LDO_13S_7 = 7, +} pwr_ldo_13s_e; + + +typedef enum _pwr_ldo_18s_e +{ + LDO_18S_0 = 0, + LDO_18S_1 = 1, + LDO_18S_2 = 2, + LDO_18S_3 = 3, + LDO_18S_4 = 4, + LDO_18S_5 = 5, + LDO_18S_6 = 6, + LDO_18S_7 = 7, +} pwr_ldo_18s_e; + + +typedef enum +{ + PVD_IOVCC = 3, + PVD_VCI = 15, +} pwr_pvd_index_e; + + + + + + + + + + + + + + +void hal_pwr_set_main_power(pwr_main_power_sel_e power_sel); + + + + + + + +_Bool hal_pwr_get_vcc_power_ready(void); + + + + + + +void hal_pwr_set_vcc_enable(_Bool enable); + + + + + + + + +void hal_pwr_set_sleep_mode_power(pwr_sleep_power_sel_e power_sel); + + + + + + + + +_Bool hal_pwr_enter_normal_sleep_mode(void); + + + + + + + + +io_pad_e hal_pwr_enter_stop_sleep_mode(void); + + + + + + + +_Bool hal_pwr_set_stop_sleep_wakeup_pin(io_pad_e pad, pwr_wakeup_trigger_e trig); + + + + + + + + +void hal_pwr_enter_deep_sleep_mode(pwr_wakeup_trigger_e ap_rstn_trig, pwr_wakeup_trigger_e td_int_trig); + + + + + + +_Bool hal_pwr_exit_sleep_mode(void); + + + + + + +pwr_reset_flag_e hal_pwr_get_reset_flag(void); + + + + + + +void hal_pwr_elvcc_ldo_en(_Bool enable); + + + + + + + + + + + + + + + + + + + + + + + +void hal_pwr_elvcc_vol_set(pwr_hv_ldo_e voltage); + + + + + + +void hal_pwr_ldo18s_en(_Bool enable); + + + + + + + + + + + + + + + +void hal_pwr_ldo18s_set(pwr_ldo_18s_e voltage); + + + + + + +void hal_pwr_ldo13s_en(_Bool enable); + + + + + + + + + + + + + + + +void hal_pwr_ldo13s_set(pwr_ldo_13s_e voltage); + + + + + + + + +void hal_pwr_set_pvd(pwr_pvd_index_e index, _Bool enable); + + + + + + + + +void hal_pwr_sw_tp18_en(_Bool enable); + + + +# 24 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_pwm.h" + + + + + + + + + + + + + + + +# 17 "..\\..\\src\\sdk\\include\\hal_pwm.h" +# 18 "..\\..\\src\\sdk\\include\\hal_pwm.h" + + + + + + + + + + + + + + + + + + + + + + + + + + + +_Bool hal_pwm_init(uint32_t frequency, uint32_t duty_step); + + + + + + +void hal_pwm_enable(_Bool enable); + + + + + + +void hal_pwm_set_duty(uint32_t duty_ratio); + + + + + + +_Bool hal_pwm_set_elvcc_output(_Bool enable); + + + + + + +void hal_pwm_set_elvcc_capacity(uint8_t capacity); + + + + + + +_Bool hal_pwm_deinit(void); + +# 25 "..\\..\\src\\app\\P8P\\p8p_demo.c" +# 1 "..\\..\\src\\sdk\\include\\hal_crc.h" + + + + + + + + + + + + + + + + + + + +# 21 "..\\..\\src\\sdk\\include\\hal_crc.h" +# 22 "..\\..\\src\\sdk\\include\\hal_crc.h" + + + + + + + + + + + +typedef struct +{ + uint32_t polynomial_value; + uint32_t initial_seed_value; + crc_protocol_type_e crc_protocol; + crc_fxor_function_e crc_foxr; + crc_reversal_type_e crc_reversal_in; + crc_reversal_type_e crc_reversal_out; +} crc_ctrl_handle_t; + + + + +typedef void (*crc_dma_callback)(uint32_t crc_result); + + + + + + + + + + + + + +_Bool hal_crc_init(const crc_ctrl_handle_t *crc_ctrl_handle); + + + + + + +_Bool hal_crc_deinit(void); + + + + + + +_Bool hal_crc_reset(void); + + + + + + + +uint32_t hal_crc_cal(const void *buffer_address, uint32_t buffer_length); + + + + + + + + + +_Bool hal_crc_dma_init(const crc_ctrl_handle_t *crc_ctrl_handle, crc_dma_callback cb_func, const void *buffer_address, uint16_t buffer_length); + + + + + + +_Bool hal_crc_dma_deinit(void); + + + + + + +_Bool hal_crc_dma_start(void); + + + + + + + + +# 26 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + + + + +# 46 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + + +# 59 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +static hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = 0; +static hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = 0; + + +static _Bool panel_display_done = 0; +static _Bool sg_system_resume = 0; +static _Bool sg_system_suspend = 0; +static _Bool sg_exit_idle_mode_flag = 0; + +static volatile _Bool g_resolution_change = 0; +static uint32_t pps_renew_flag = 0; +static uint32_t pwr_rst_flag = 0; + +# 143 "..\\..\\src\\app\\P8P\\p8p_demo.c" + +uint16_t rd_51_val,rd_51_val2; + + +static void ap_rstn_pull_high_cb(void *data); +static void ap_rstn_pull_down_cb(void *data); +static void app_mipi_rx_start_cb(void *data); + + + +# 164 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + +static _Bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +{ + if (dcs_cmd == 0x04) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 3, 0x0A,0x60,0x20); + } + else if (dcs_cmd == 0xa1) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 13, 0x0C,0x21,0x0C,0xC6,0x01,0xF3,0xAA,0x11,0x06,0x2B,0x25,0x21,0xF6); + } + else if (dcs_cmd == 0xDA) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x0A); + } + else if (dcs_cmd == 0xDB) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x68); + } + else if (dcs_cmd == 0xDC) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x07); + } + else if (dcs_cmd == 0xD6) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 5, 0xF0, 0xEA, 0x85, 0x61, 0x86); + } + else + { + uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle); + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0); + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "r[%x] [%d] err!!!!!!\n", "p8p", 221,dcs_cmd, return_size); } while (0); + } + + + return 1; +} + +uint8_t pps[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x0B,0xB0, + 0x05,0x40,0x00,0xBB,0x02,0xA0,0x02,0xA0, + 0x02,0x00,0x02,0x50,0x00,0x20,0x14,0x39, + 0x00,0x09,0x00,0x0C,0x00,0x85,0x00,0x70, + 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, + 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, + 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, + 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, + 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, + 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, + 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t pps_fhd[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x08,0xC4, + 0x03,0xF0,0x00,0xBB,0x01,0xF8,0x01,0xF8, + 0x02,0x00,0x01,0xF8,0x00,0x20,0x11,0x82, + 0x00,0x07,0x00,0x0C,0x00,0x85,0x00,0x96, + 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, + 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, + 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, + 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, + 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, + 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, + 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + + + + +static _Bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height) +{ + + + + + + + + if (pic_width != g_rx_ctrl_handle->base_info.src_w || pic_height != g_rx_ctrl_handle->base_info.src_h) + { + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); + + g_rx_ctrl_handle->base_info.src_w = pic_width; + g_rx_ctrl_handle->base_info.src_h = pic_height; + + g_rx_ctrl_handle->compress_en = 1; + g_resolution_change = 1; + if(pic_width > 720) + { + g_tx_ctrl_handle->base_info.src_w = pic_width; + g_tx_ctrl_handle->base_info.src_h = pic_height; + } + + + + + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + + } + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + + return 1; +} + + + + + + + + + + +static _Bool ap_dcs_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + + if(g_resolution_change) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + g_resolution_change = 0; + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "pps_update_1\r\n", "p8p", 316); } while (0); + } + + + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x29); + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "disp on \n", "p8p", 322); } while (0); + return 1; +} + + +void REG_51_OFF_output(uint16_t REG_51_VALUE) +{ + uint8_t i; + uint16_t REG_51; + + + + for (i =0; i< 50; i++) + { + REG_51=REG_51_VALUE*(50-i)/50; + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, REG_51>>8, REG_51&0x00FF);; + delayMs(17); + + } + +} + + + + + + + +static _Bool ap_dcs_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + + + + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "disp off %d\n", "p8p", 356,panel_display_done); } while (0); + return 1; +} + + + + + + + + +void Gpio_swire_output(uint8_t flag, uint8_t num) +{ + uint8_t ii; + + if (flag) + { + if (flag ==2) + { + hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); + delayMs(2); + } + for (ii =0; ii< num; ii++) + { + hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_LOW); + delayUs(10); + hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_HIGH); + delayUs(9); + } + } + else + { + hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_LOW); + } +} + + + + + + + + + +static _Bool ap_dcs_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x28); + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_STOP_MODE); + delayMs(10); + + + + + hal_swire_enable(0); + delayMs(10); + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x10); + delayMs(20); + + hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_LOW); + + + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_down_cb, DETECT_LOW_LVL); + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "enter sleep mode\n", "p8p", 419); } while (0); + + return 1; +} + + + + + + + +static _Bool ap_dcs_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + + + + + +# 443 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "exit sleep mode \n", "p8p", 444); } while (0); + + return 1; +} + + + + + + + + + + +uint8_t value_51H,value_51L; +static _Bool reg53_E8_fg=0; +static _Bool ap_dcs_set_backlight(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + + + + + + + rd_51_val = dcs_packet->packet_param[0]; + rd_51_val <<=8; + rd_51_val |= dcs_packet->packet_param[1]; + + + if((rd_51_val >=0x00)&&(rd_51_val <= 0xFFF) ){ + + rd_51_val2 = (rd_51_val-0xC4)*2555/3889+0x04; + + } + else if(rd_51_val >0xFFF) { + + rd_51_val2 = 0x9FF; + + } + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, rd_51_val2>>8, rd_51_val2&0x00FF); + + + return 1; +} + +# 526 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + + +static _Bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + sg_exit_idle_mode_flag = 1; + hal_dsi_rx_ctrl_set_hw_cmd_filter(g_rx_ctrl_handle, HAL_RX_DCS_FILTER_B, 0x2C, 0x2C); + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "exit idle mode,skip 0x2C\n", "p8p", 537); } while (0); + return 1; +} + + +static void soft_te_timer_cb(void *data) +{ + + + + + + hal_dsi_tx_ctrl_gen_a_tear_signal(); + hal_timer_start(TIMER_NUM2, 8, soft_te_timer_cb, 0); + + + + + +} + +static void soft_te_timer_init() +{ + + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); + hal_timer_init(TIMER_NUM2); + hal_timer_start(TIMER_NUM2, 1, soft_te_timer_cb, 0); +} + + + + + + + +static _Bool ap_dcs_set_frame_change(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + if (dcs_packet->param_length == 1) + { + if (dcs_packet->packet_param[0] == 0x18) + { + + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + } + else + { + + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_120HZ_MODE); + } + } + + return 1; +} + +static _Bool ap_set_FPS_53(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + uint8_t value_53 =0; + + value_53 = dcs_packet->packet_param[0]; + + if(value_53 == 0x30) + { + + hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x11, 0xCF, 0xFF); + + } + else if(value_53 == 0x20) + { + + hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x00, 0xCF, 0xFF); + + + } + + + return 1; +} + + + + +static const hal_dcs_execute_entry_t g_cus_rx_dcs_execute_table[] = +{ + {DCS_SET_DISPLAY_ON, ap_dcs_set_display_on, 0}, + {DCS_SET_DISPLAY_OFF, ap_dcs_set_display_off, 1}, + {0x51, ap_dcs_set_backlight, 0}, + {0x53, ap_set_FPS_53, 1}, + {DCS_ENTER_SLEEP_MODE, ap_dcs_set_enter_sleep_mode, 1}, + {DCS_EXIT_SLEEP_MODE, ap_dcs_set_exit_sleep_mode, 1}, + {0x60, ap_dcs_set_frame_change, 1}, + + + + + {0, 0, 0} +}; + + + + + + +static void app_tx_panel_reset(void) +{ + + + + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); + delayMs(10); + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_LOW); + delayMs(10); + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); + delayMs(40); +} + + +static void send_panel_init_code(uint32_t size, uint8_t * data) +{ + uint32_t data_offeset = 0; + uint8_t data_type; + uint8_t vc; + uint8_t data_size; + uint8_t * p_data; + + while(data_offeset < size) + { + data_type = data[data_offeset]; + vc = data[data_offeset + 1]; + data_size = data[data_offeset + 2]; + p_data = &data[data_offeset + 3]; + hal_dsi_tx_ctrl_write_array_cmd(data_type, vc, data_size, p_data); + data_offeset = data_offeset + data_size + 3; + delayUs(50); + } +} + +const uint8_t panel_init_code[] = { + +0x39,0,3,0x9C,0xA5,0xA5, +0x39,0,3,0xFD,0x5A,0x5A, +0x39,0,2,0x9F,0x0F, +0x39,0,2,0xB3,0x00, +0x39,0,2,0xD7,0x11, +0x39,0,2,0x9F,0x01, +0x39,0,4,0xB2,0x5A,0x04,0xAF, +0x39,0,36,0xB3,0x00,0xBA,0x00,0x14,0x0C,0x22,0x00,0xBA,0x30,0x14,0x2C,0x00,0x00,0xBA,0x90,0x14,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x00,0x14,0x0C,0x44,0x1C,0x1C,0x1C,0x1C,0x1C, +0x39,0,19,0xCD,0x06,0x1F,0x1F,0x06,0x00,0x09,0x00,0x96,0x1F,0x03,0x28,0x00,0x96,0x1F,0x09,0x46,0x00,0x96, +0x39,0,2,0xD0,0x01, +0x39,0,3,0xE2,0x46,0x20, +0x39,0,3,0xEA,0x04,0x0B, +0x39,0,9,0xEE,0x40,0x38,0x28,0x28,0x28,0x28,0x28,0xC2, +0x39,0,2,0x9F,0x02, +0x39,0,26,0xB2,0x00,0xC9,0x32,0x10,0x11,0x12,0x12,0x00,0x08,0x78,0x21,0x11,0x14,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x11,0x1A, +0x39,0,14,0xB4,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x25,0x25,0x25, +0x39,0,7,0xB5,0x00,0x30,0x30,0x30,0x30,0x2A, +0x39,0,20,0xB6,0x05,0x00,0x00,0x11,0x11,0x11,0x1C,0x08,0x1C,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,17,0xB7,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x03, +0x39,0,14,0xB8,0x00,0x00,0x00,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28, +0x39,0,9,0xB9,0x00,0x00,0x50,0x00,0x00,0x0F,0x0F,0x00, +0x39,0,14,0xBA,0x0E,0xFF,0xFF,0xFF,0x00,0x54,0x00,0x44,0x04,0x44,0x04,0x04,0x00, +0x39,0,26,0xBB,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x3C,0x78,0x78,0x3C, +0x39,0,5,0xBE,0x5B,0x17,0x04,0x5B, +0x39,0,17,0xBF,0x0C,0x8F,0xFF,0x10,0x00,0x07,0x00,0x0A,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,17,0xC1,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,17,0xC2,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,10,0xC3,0x11,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00, +0x39,0,26,0xC4,0x00,0x0C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x1F,0x1F,0x00,0x00,0x0D,0x00,0x00,0x00,0x00, +0x39,0,17,0xD2,0x00,0x00,0x13,0x00,0x00,0x13,0x00,0x00,0x17,0x00,0x00,0x17,0x00,0x00,0x17,0x00, +0x39,0,14,0xC7,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04, +0x39,0,14,0xC8,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1, +0x39,0,27,0xC6,0x00,0x00,0x0f,0x00,0x00,0x11,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x55,0x01,0x01,0x00, +0x39,0,27,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92, +0x39,0,27,0xCC,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x33,0x00,0x02,0x02,0x00,0xF7,0xF7,0xF4,0xA9,0xA9,0xAE,0xF0,0x00,0x00, +0x39,0,41,0xD8,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF, +0x39,0,12,0xD9,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0x39,0,4,0xE0,0x00,0x00,0x60, +0x39,0,6,0xE1,0x43,0x00,0x11,0x60,0x0D, +0x39,0,51,0xE2,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24, +0x39,0,4,0xED,0x00,0x01,0x80, +0x39,0,18,0xEE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x88,0x88,0x29,0x00,0x00,0x00,0x00, +0x39,0,6,0xEF,0x00,0x85,0x88,0x87,0x87, +0x39,0,2,0x9F,0x03, +0x39,0,33,0xB2,0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x0C,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E,0x00,0x20,0x01,0x1F,0x00,0x07,0x00,0x0C,0x08,0xBB,0x08,0x7A, +0x39,0,33,0xB3,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +0x39,0,25,0xB4,0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +0x39,0,2,0xC0,0x11, +0x39,0,2,0xC1,0x82, +0x39,0,3,0xC2,0x00,0xC0, +0x39,0,6,0xC6,0x11,0x00,0x00,0x01,0x01, +0x39,0,2,0xE2,0x01, +0x39,0,2,0x9F,0x04, +0x39,0,4,0xB2,0x01,0x80,0x00, +0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +0x39,0,8,0xB6,0x01,0x20,0x00,0x0F,0xF0,0x10,0x06, +0x39,0,3,0xB9,0x91,0xC1, +0x39,0,3,0xBA,0x01,0x00, +0x39,0,10,0xBB,0x00,0x00,0x08,0x00,0x00,0x00,0xF2,0x00,0x00, +0x39,0,41,0xC1,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xC2,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,4,0xC3,0x00,0x08,0xB8, +0x39,0,20,0xC5,0x00,0x20,0x88,0x41,0xCF,0x4F,0x4F,0x00,0x48,0x53,0x29,0x21,0x28,0x2A,0x05,0x2F,0x00,0x20,0x0F, +0x39,0,37,0xC6,0x4B,0x00,0x90,0x00,0x02,0xD5,0x00,0x02,0xCB,0x01,0x10,0x43,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,5,0xC8,0x48,0x48,0x53,0x53, +0x39,0,3,0xC9,0x88,0x88, +0x39,0,41,0xCC,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCD,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xCE,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCF,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD1,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD2,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD3,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD4,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD6,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD8,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD9,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDD,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xDE,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDF,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE0,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE1,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE2,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE3,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE4,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE5,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE6,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,2,0x9F,0x05, +0x39,0,7,0xB2,0x24,0x20,0x05,0x0F,0xFF,0xFF, +0x39,0,9,0xB3,0xA0,0x00,0x28,0x00,0x00,0x00,0x3F,0xFF, +0x39,0,13,0xB4,0x02,0x0E,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x50,0x0F, +0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,9,0xB8,0x00,0x00,0x00,0x00,0x13,0x1F,0x30,0x6E, +0x39,0,41,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE3,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,41,0xE4,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,21,0xE5,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, + +0x39,0,2,0x9F, 0x04, +0x39,0,19,0xB3, 0x00, 0x00, 0x10, 0x00, 0x30, 0x50, 0x00, 0x70, 0xB0, 0x00, 0xD0, 0xF0, 0x11, 0x30, 0x70, 0x12, 0xF0, 0x70, +0x39,0,21,0xB4, 0x23, 0xF0, 0x70, 0x34, 0xF0, 0xF0, 0x67, 0xF0, 0xF0, 0x8A, 0xF0, 0xF0, 0xCD, 0xF0, 0xF0, 0xEF, 0xF0, 0xF0, 0x0F, 0xFF, +0x39,0,2,0x9F, 0x05, +0x39,0,21,0xB5, 0x0F, 0xFF, 0x07, 0xFF, 0x03, 0x33, 0x01, 0x47, 0x01, 0x46, 0x00, 0xCD, 0x00, 0x66, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x08, +0x39,0,21,0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x80, +0x39,0,4,0xFF,0x00,0x00,0x01, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x01, +0x39,0,5,0xFE,0x01,0x00,0x00,0x00, +0x39,0,22,0xF1,0x02,0x00,0x45,0x23,0xC1,0x2C,0x33,0x94,0xF3,0x44,0x10,0x75,0x45,0xC7,0x0F,0x55,0x7C,0xEB,0x66,0x4A,0xA0, +0x39,0,18,0xF2,0x67,0xF7,0x7C,0x88,0x6B,0xD6,0x9A,0x3C,0x07,0xAB,0xC7,0x27,0xBB,0x84,0xE6,0xB0,0xE6, +0x39,0,22,0xF3,0x02,0x00,0x45,0x22,0xAC,0xDE,0x23,0xF3,0x98,0x34,0x99,0x20,0x44,0x62,0xA3,0x45,0xF3,0x5D,0x56,0xBA,0x0B, +0x39,0,18,0xF4,0x66,0x64,0xDA,0x78,0xBA,0x16,0x89,0x6F,0x1D,0x9A,0xBF,0x0A,0xAA,0x5D,0xAC,0xA0,0xAC, +0x39,0,22,0xF5,0x02,0x00,0xE9,0x33,0x81,0xDD,0x44,0x19,0xB4,0x45,0xD5,0x3C,0x55,0x98,0xE9,0x66,0x61,0xDD,0x77,0x43,0x9E, +0x39,0,18,0xF6,0x78,0xF9,0x8B,0x9A,0x8E,0x03,0xAB,0x74,0x49,0xCC,0x14,0x70,0xCD,0xDC,0x3E,0xD0,0x3E, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x01,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x12,0x7E,0x64,0x23,0xBD,0x8A,0x33,0xAD,0xED,0x44,0x64,0x90,0x55,0x23,0x81,0x56,0xD4,0x2C, +0x39,0,18,0xF2,0x66,0x71,0xF3,0x78,0xCA,0x27,0x89,0x7E,0x2B,0x9A,0xCB,0x1A,0xAA,0x66,0xB5,0xA0,0xB5, +0x39,0,22,0xF3,0x00,0x00,0x01,0x11,0x13,0xE8,0x23,0x5B,0x0A,0x33,0x20,0x62,0x34,0xEB,0x0B,0x44,0xA3,0xFC,0x55,0x45,0x9F, +0x39,0,18,0xF4,0x56,0xDE,0x5D,0x77,0x21,0x72,0x78,0xC5,0x5C,0x89,0xE5,0x2A,0x99,0x6D,0xB1,0x90,0xB1, +0x39,0,22,0xF5,0x02,0x00,0x08,0x23,0xFD,0x68,0x34,0x96,0x48,0x44,0x6A,0xA6,0x55,0x2A,0x5A,0x56,0xF8,0x64,0x67,0xBC,0x1A, +0x39,0,18,0xF6,0x77,0x66,0xF0,0x89,0xD8,0x3D,0x9A,0x9F,0x59,0xBB,0x00,0x58,0xBB,0xAC,0xFC,0xB0,0xFC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x02,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x12,0x63,0xC2,0x33,0x0D,0x53,0x33,0xA6,0xF9,0x44,0x61,0xC0,0x55,0x14,0x5D, +0x39,0,18,0xF2,0x56,0x9C,0x03,0x67,0xBF,0x0F,0x77,0x58,0xDA,0x88,0x56,0x8F,0x89,0xC9,0x00,0x90,0x00, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x02,0x87,0x27,0x22,0x83,0xD1,0x33,0x1B,0x79,0x34,0xDE,0x3A,0x44,0x90,0xDB, +0x39,0,18,0xF4,0x55,0x14,0x74,0x66,0x29,0x76,0x67,0xBA,0x2D,0x77,0xA2,0xD3,0x88,0x08,0x38,0x80,0x38, +0x39,0,22,0xF5,0x02,0x00,0x61,0x22,0x62,0xC3,0x33,0x2A,0x99,0x34,0xDF,0x31,0x44,0x5F,0xBB,0x55,0x22,0x8A,0x56,0xEC,0x39, +0x39,0,18,0xF6,0x66,0x7D,0xED,0x78,0xB7,0x0D,0x88,0x5C,0xE9,0x99,0x70,0xB1,0x9A,0xED,0x2A,0xA0,0x2A, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x03,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0xF0,0x23,0xCD,0x16,0x34,0xA6,0x11,0x44,0x5E,0xA3, +0x39,0,18,0xF2,0x45,0xDB,0x42,0x56,0xDB,0x21,0x66,0x66,0xD2,0x77,0x36,0x66,0x77,0x96,0xBE,0x70,0xBE, +0x39,0,22,0xF3,0x00,0x00,0x02,0x00,0x05,0x07,0x00,0x0C,0x0D,0x11,0x44,0x80,0x22,0x4C,0xA8,0x33,0x36,0x87,0x34,0xDA,0x29, +0x39,0,18,0xF4,0x44,0x57,0xBF,0x55,0x49,0x8D,0x56,0xD6,0x37,0x66,0x97,0xC3,0x67,0xF0,0x16,0x70,0x16, +0x39,0,22,0xF5,0x01,0x00,0x1F,0x11,0x20,0x21,0x33,0x13,0x14,0x33,0x3F,0x6E,0x34,0xAF,0x0E,0x44,0x8D,0xC9,0x55,0x21,0x73, +0x39,0,18,0xF6,0x56,0xA8,0x1B,0x67,0xC1,0x0B,0x77,0x56,0xCC,0x88,0x39,0x6C,0x88,0x9E,0xCC,0x80,0xCC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x04,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x17,0x11,0x50,0xCF,0x33,0x76,0xC2,0x44,0x75,0xC3,0x55,0x19,0x5A, +0x39,0,18,0xF2,0x55,0x93,0xF4,0x66,0x8C,0xD0,0x77,0x0C,0x7A,0x78,0xDD,0x0A,0x88,0x3A,0x61,0x80,0x61, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x12,0x7B,0x46,0x33,0x11,0x65,0x34,0xFA,0x4D,0x44,0x97,0xDD, +0x39,0,18,0xF4,0x55,0x16,0x74,0x66,0x06,0x49,0x66,0x81,0xE9,0x77,0x45,0x73,0x77,0x97,0xBF,0x70,0xBF, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x56,0x57,0x33,0x58,0xD9,0x34,0xFF,0x38,0x44,0x88,0xD6,0x55,0x39,0x97,0x56,0xD4,0x23, +0x39,0,18,0xF6,0x66,0x5C,0xC5,0x77,0x6B,0xB4,0x78,0xF2,0x68,0x89,0xD3,0x04,0x99,0x35,0x62,0x90,0x62, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x05,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x02,0x08,0x6F,0x23,0xB9,0xBF,0x44,0x2E,0xA1,0x45,0xF7,0x38, +0x39,0,18,0xF2,0x55,0x73,0xD7,0x66,0x78,0xB9,0x67,0xFB,0x64,0x77,0xC7,0xF5,0x88,0x20,0x51,0x80,0x51, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x01,0x06,0x32,0x23,0xAA,0x2B,0x34,0xB0,0x1B,0x44,0x69,0xAD, +0x39,0,18,0xF4,0x45,0xF5,0x51,0x56,0xF1,0x2E,0x66,0x70,0xCF,0x77,0x2C,0x5A,0x77,0x81,0xAA,0x70,0xAA, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB0,0x33,0xB1,0xB2,0x34,0xE8,0x0C,0x44,0x5F,0x9E,0x55,0x23,0x74,0x56,0xBC,0x01, +0x39,0,18,0xF6,0x66,0x50,0xB0,0x77,0x5D,0xA1,0x78,0xE5,0x57,0x88,0xC0,0xF1,0x99,0x1F,0x4F,0x90,0x4F, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x06,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x0F,0x18,0x34,0x90,0x21,0x45,0xAA,0x01, +0x39,0,18,0xF2,0x55,0x3A,0xA8,0x66,0x4D,0x8E,0x67,0xD7,0x3E,0x77,0xA5,0xD0,0x78,0xFB,0x2B,0x80,0x2B, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x26,0xEA,0x33,0x17,0xAD,0x44,0x16,0x70, +0x39,0,18,0xF4,0x45,0xAC,0x1B,0x55,0xBD,0xFB,0x66,0x45,0xA7,0x77,0x0F,0x33,0x77,0x5D,0x8B,0x70,0x8B, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB3,0x33,0xCC,0xCD,0x33,0xCE,0xCF,0x44,0x2E,0x76,0x45,0xE9,0x58,0x55,0x9F,0xE1, +0x39,0,18,0xF6,0x66,0x2A,0x97,0x77,0x41,0x82,0x78,0xC8,0x39,0x88,0xA6,0xD2,0x99,0x00,0x31,0x90,0x31, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x07,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0xCB,0x13,0x06,0x59,0x44,0x62,0x95, +0x39,0,18,0xF2,0x45,0xEB,0x63,0x66,0x0B,0x57,0x67,0x93,0x08,0x77,0x6A,0x99,0x77,0xC0,0xEF,0x70,0xEF, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x12,0xC8,0xF3,0x34,0xB5,0x00, +0x39,0,18,0xF4,0x44,0x4E,0xC6,0x55,0x70,0xBD,0x56,0xF6,0x70,0x66,0xCF,0xFD,0x77,0x1F,0x52,0x70,0x52, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x54,0x6E,0x33,0x6F,0x70,0x33,0x71,0x72,0x34,0xE6,0x2F,0x45,0xAE,0x0F,0x55,0x59,0xB7, +0x39,0,18,0xF6,0x56,0xEE,0x5B,0x77,0x0B,0x51,0x78,0x91,0x05,0x88,0x6C,0x9D,0x88,0xC7,0xF8,0x80,0xF8, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x08,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x55,0x00,0x78,0x79, +0x39,0,18,0xF2,0x34,0x8C,0x68,0x55,0x49,0x98,0x56,0xD1,0x48,0x66,0xA9,0xD0,0x67,0xFB,0x27,0x70,0x27, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x01,0x0A,0x15,0x12,0xD1,0x2A, +0x39,0,18,0xF4,0x33,0x15,0xD4,0x44,0xAB,0xF0,0x55,0x26,0xA9,0x66,0x11,0x30,0x66,0x59,0x87,0x60,0x87, +0x39,0,22,0xF5,0x02,0x00,0x55,0x22,0x56,0x57,0x22,0xD1,0xFA,0x33,0x10,0x13,0x33,0x14,0x8C,0x44,0x01,0x68,0x45,0xB5,0x16, +0x39,0,18,0xF6,0x55,0x4B,0xB1,0x66,0x6B,0xAB,0x67,0xDE,0x5C,0x77,0xBB,0xDC,0x88,0x07,0x2D,0x80,0x2D, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x09,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0F, +0x39,0,18,0xF2,0x00,0x50,0x51,0x34,0xF5,0xB1,0x45,0xF1,0x82,0x56,0xDE,0x11,0x66,0x3D,0x5D,0x60,0x5D, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0D, +0x39,0,18,0xF4,0x02,0xA8,0x37,0x34,0x7F,0x08,0x44,0x5A,0xD4,0x55,0x38,0x60,0x55,0x9C,0xB8,0x50,0xB8, +0x39,0,22,0xF5,0x00,0x00,0x01,0x00,0x02,0x03,0x01,0xE2,0x25,0x12,0x49,0x76,0x22,0xF8,0xF9,0x33,0x3A,0xAE,0x44,0x1C,0x64, +0x39,0,18,0xF6,0x45,0x96,0x10,0x56,0xCA,0x0D,0x66,0x52,0xAB,0x77,0x0C,0x2B,0x77,0x64,0x88,0x70,0x88, +0x39,0,2,0xFF,0x01, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x00, +0x39,0,4,0xFF,0x00,0x00,0x00, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x00, +# 975 "..\\..\\src\\app\\P8P\\p8p_demo.c" +0x39,0,2,0x9F,0x07, + +0x39,0,8,0xB2,0x04,0x04,0x04,0x04,0x04,0x00,0x98, +0x39,0,8,0xB3,0x15,0x15,0x15,0x15,0x04,0x00,0x9A, +0x39,0,8,0xB4,0x20,0x20,0x20,0x20,0x04,0x00,0x96, +0x39,0,8,0xB6,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,8,0xB7,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,33,0xB9,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBB,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, +0x39,0,33,0xBD,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBE,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC0,0x00,0x7A,0x7A,0x00,0x7A,0x7A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC1,0x00,0x9A,0x9A,0x00,0x9A,0x9A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC2,0x00,0x96,0x96,0x00,0x96,0x96,0x00,0x6A,0x46,0x00,0x26,0x1B,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,7,0xC4,0x10,0x30,0x1C,0x00,0x1C,0x1C, +0x39,0,7,0xC5,0x22,0x60,0x60,0x22,0x60,0x60, +0x39,0,41,0xD6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xD7,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,2,0x9F,0x0C, +0x39,0,9,0xB4,0xF0,0xC0,0xC0,0x1B,0x1B,0x00,0x00,0x16, +0x39,0,2,0x9F,0x08, +0x39,0,4,0xB2,0x10,0x00,0x02, +0x39,0,2,0xB4,0x11, +0x39,0,8,0xB5,0x00,0x02,0x01,0xFF,0x20,0x40,0xC0, +0x39,0,3,0xB6,0x58,0x03, +0x39,0,55,0xB7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB8,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB9,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBB,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBC,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xBD,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC0,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC1,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC2,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xC3,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC4,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC5,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC6,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC8,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,10,0xC9,0x16,0x33,0x3D,0x01,0x00,0x0F,0xFF,0x00,0x00, +0x39,0,2,0xCA,0xF0, +0x39,0,6,0xCB,0x00,0x01,0x7C,0x42,0x00, +0x39,0,5,0xCC,0x00,0x01,0x00,0x1F, +0x39,0,4,0xCD,0x00,0x01,0x00, +0x39,0,33,0xCE,0x00,0x25,0x00,0xA9,0x01,0x9C,0x03,0x08,0x04,0xF4,0x07,0x65,0x0A,0x62,0x0D,0xEE,0x12,0x0C,0x16,0xC1,0x1C,0x10,0x21,0xFC,0x28,0x87,0x2F,0xB5,0x37,0x86,0x3F,0xFF, +0x39,0,12,0xCF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0x4E,0xED,0x00, +0x39,0,53,0xD0,0x00,0x00,0x01,0xF1,0xEC,0x23,0xE4,0xDC,0x45,0xD7,0xDE,0x67,0xCB,0xC2,0x89,0xC0,0xC4,0xAB,0xC2,0xBC,0xCD,0xB5,0xAB,0xEF,0xAA,0xB4,0x00,0x00,0x01,0xFA,0xF1,0x23,0xEB,0xE4,0x45,0xE3,0xEB,0x67,0xDB,0xD1,0x89,0xCE,0xD0,0xAB,0xCC,0xC8,0xCD,0xC1,0xBA,0xEF,0xB9,0xB8, +0x39,0,53,0xD1,0x00,0x00,0x01,0xFF,0xF0,0x23,0xE8,0xE3,0x45,0xE1,0xE5,0x67,0xD7,0xCC,0x89,0xCE,0xD5,0xAB,0xCE,0xCA,0xCD,0xC4,0xBD,0xEF,0xB9,0xB7,0x00,0x00,0x01,0xF1,0xEB,0x23,0xE1,0xDD,0x45,0xD0,0xD0,0x67,0xBF,0xB1,0x89,0x9D,0x8A,0xAB,0x78,0x62,0xCD,0x49,0x30,0xEF,0x14,0x06, +0x39,0,53,0xD2,0x00,0x00,0x01,0xF5,0xEE,0x23,0xE8,0xE1,0x45,0xD6,0xD4,0x67,0xBF,0xB6,0x89,0xA6,0x99,0xAB,0x88,0x75,0xCD,0x60,0x47,0xEF,0x29,0x05,0x00,0x00,0x01,0xF4,0xEF,0x23,0xE7,0xE1,0x45,0xD7,0xD4,0x67,0xC2,0xB6,0x89,0xA4,0x91,0xAB,0x7A,0x63,0xCD,0x51,0x3B,0xEF,0x1E,0x01, +0x39,0,53,0xD3,0x00,0x00,0x01,0xFF,0xEC,0x23,0xE3,0xD9,0x45,0xD1,0xD6,0x67,0xC1,0xB7,0x89,0xB4,0xBE,0xAB,0xB3,0xAB,0xCD,0xA4,0x9A,0xEF,0x99,0xA1,0x00,0x00,0x11,0x0B,0xFC,0x23,0xF5,0xE4,0x45,0xDF,0xE4,0x67,0xCD,0xC5,0x89,0xBF,0xCD,0xAB,0xB7,0xB4,0xCD,0xAA,0xA4,0xEF,0xA6,0xA5, +0x39,0,53,0xD4,0x00,0x00,0x11,0x02,0xF2,0x23,0xE9,0xE0,0x45,0xDC,0xDD,0x67,0xCC,0xC2,0x89,0xC4,0xD0,0xAB,0xBF,0xB9,0xCD,0xB3,0xAC,0xEF,0xA8,0xA5,0x00,0x00,0x12,0x16,0x20,0x34,0x28,0x30,0x56,0x31,0x38,0x78,0x2F,0x29,0x9A,0x19,0x10,0xAB,0xFF,0xED,0xCD,0xD6,0xBC,0xEF,0xAF,0xB2, +0x39,0,53,0xD5,0x00,0x00,0x12,0x33,0x36,0x34,0x3F,0x45,0x56,0x49,0x4E,0x78,0x47,0x48,0x9A,0x3F,0x3C,0xBC,0x30,0x29,0xDD,0x15,0xFE,0xEF,0xDE,0xBE,0x00,0x00,0x12,0x18,0x26,0x34,0x31,0x39,0x56,0x3D,0x42,0x78,0x3B,0x38,0x9A,0x2D,0x22,0xBC,0x0E,0x0A,0xCD,0xF8,0xE0,0xEF,0xC9,0xB9, +0x39,0,53,0xD6,0x80,0x00,0x02,0xD9,0x08,0x34,0x13,0x1A,0x46,0xE9,0x3C,0x78,0x76,0x8C,0x9A,0xA4,0xBE,0xBC,0xCE,0xD8,0xDE,0xD7,0xD7,0xF1,0xF4,0x16,0x80,0x00,0x02,0xCF,0x01,0x34,0x0A,0x1A,0x46,0xEE,0x44,0x78,0x7B,0x90,0x9A,0xAC,0xC7,0xBC,0xD5,0xD8,0xDE,0xE3,0xED,0xF0,0xF4,0xFC, +0x39,0,27,0xD7,0x80,0x00,0x02,0xF1,0x1B,0x34,0x27,0x2A,0x46,0xFF,0x5D,0x78,0x94,0xAD,0x9A,0xC7,0xDC,0xBC,0xE9,0xE9,0xDE,0xE7,0xE4,0xF1,0xF4,0x06, +0x39,0,18,0xD8,0x80,0x96,0x91,0x8D,0x8B,0x8A,0x96,0x90,0x8E,0x87,0x90,0x96,0x92,0x85,0x8F,0x94,0x96, +0x39,0,2,0x9F,0x09, +0x39,0,3,0xB2,0x9C,0x09, +0x39,0,9,0xB3,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80, +0x39,0,16,0xB4,0x76,0xFF,0xDD,0x43,0x84,0x48,0x32,0x47,0x22,0x11,0x85,0x0D,0x00,0xAC,0x01, +0x39,0,35,0xC0,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58, +0x39,0,29,0xC1,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD0,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x0F,0x13,0x16,0x1A,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xC2,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC3,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC4,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC5,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC6,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC7,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC8,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC9,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCA,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCB,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x15,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCC,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x0F,0x12,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCD,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCE,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCF,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD1,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD2,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD3,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD4,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x0F,0x12,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,17,0xD5,0x17,0xF9,0xFE,0xFD,0x05,0x00,0x00,0x00,0x17,0xF9,0xF8,0xFE,0x00,0x00,0x00,0x00, +0x39,0,17,0xD6,0x18,0xF5,0xF8,0x03,0x00,0x00,0x00,0x00,0x17,0xEB,0xED,0xEF,0x00,0x00,0x00,0x00, +0x39,0,13,0xD7,0x05,0x00,0x80,0x00,0x80,0xAF,0x00,0x80,0x00,0x80,0x03,0xFF, +0x39,0,17,0xD8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x39,0,6,0xEE,0x30,0x10,0x00,0x10,0xFF, +0x39,0,2,0x9F,0x0A, +0x39,0,12,0xB2,0x1F,0x00,0x10,0x01,0x00,0x07,0x00,0x00,0x00,0x11,0x00, +0x39,0,43,0xB3,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB4,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,12,0xBE,0x00,0x1F,0xFF,0x13,0x91,0x0F,0x04,0x00,0x24,0x80,0xFF, +0x39,0,2,0x9F,0x0B, +0x39,0,10,0xB2,0x01,0x3F,0x3F,0x0F,0x3F,0x0F,0x5F,0x0F,0x0F, +0x39,0,49,0xB9,0x32,0x00,0x00,0x00,0x00,0x00,0x6B,0x54,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBA,0x32,0x00,0x00,0x00,0x00,0x00,0x54,0x69,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBC,0x32,0x00,0x00,0x00,0x00,0x00,0x4b,0x4b,0x24,0x1C,0xB0,0x14,0xD1,0x65,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBE,0x32,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x20,0x1C,0x33,0x00,0x00,0x00,0x00,0x25,0x25,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,20,0xC6,0x8F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,20,0xC7,0x0F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,16,0xC8,0xF9,0x05,0x05,0xB0,0xE0,0xB0,0x50,0xBA,0xF0,0xB0,0xE0,0xB0,0x20,0xD0,0x50, +0x39,0,2,0x9F,0x0D, +0x39,0,16,0xB2,0x25,0x10,0x21,0x01,0x02,0x10,0x00,0x00,0x16,0x10,0x00,0x00,0x01,0xAA,0x90, +0x39,0,2,0xB3,0xB0, +0x39,0,13,0xB5,0x00,0x24,0x07,0x01,0x00,0x00,0x00,0x00,0x20,0x04,0xEE,0x21, +0x39,0,4,0xB6,0x02,0x12,0x22, +0x39,0,5,0xB7,0x20,0xF0,0xC0,0xE0, +0x39,0,13,0xB8,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0, +0x39,0,5,0xB9,0x01,0x01,0x01,0x01, +0x39,0,3,0xBA,0x00,0x00, +0x39,0,2,0xBB,0x01, +0x39,0,21,0xBC,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,6,0xBD,0x02,0x00,0x02,0x06,0x5B, +0x39,0,12,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00, +0x39,0,2,0x48,0x03, +0x39,0,1,0x11, +0x39,0,3,0x51,0x00,0x0F, +0x39,0,2,0x53,0xE0, +0x39,0,1,0x35, + +# 1435 "..\\..\\src\\app\\P8P\\p8p_demo.c" +0x39,0,2,0x9F,0x04, +0x39,0,14,0xB5,0x00,0x17,0x27,0x1B,0x17,0x00,0x75,0x75,0x10,0x3B,0x08,0xA8,0x48, + + + + + + +0x39,0,18,0xBE,0x00,0xCF,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF, +0x39,0,46,0xE9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,46,0xEB,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEC,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,46,0xED,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,10,0xF8,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +0x39,0,10,0xF9,0xE1,0x18,0x15,0x00,0xF0,0xF8,0xF0,0xEE,0x00, +0x39,0,10,0xFA,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +0x39,0,2,0x9F,0x05, +0x39,0,13,0xB4,0x02,0x0F,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x40,0x8D, +0x39,0,41,0xE6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE8,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0C,0xF0,0x09,0x71,0x07,0x54,0x04,0x8C,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + +0x39,0,31,0xE9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + + + +}; + + + + + + + + + +static void app_init_panel(void) +{ + + app_tx_panel_reset(); + + send_panel_init_code(sizeof(panel_init_code), (uint8_t *) panel_init_code); + + hal_gpio_init_output(IO_PAD_AP_PWMEN, IO_LVL_HIGH); + delayMs(90); + + hal_swire_enable(1); + hal_swire_set_pulse(31); + + + + + +} + +# 1507 "..\\..\\src\\app\\P8P\\p8p_demo.c" + +# 1544 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + + + +static void app_mipi_rx_init(void) +{ + if (g_rx_ctrl_handle == 0) + { + + g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); + } + + g_rx_ctrl_handle->base_info.src_w = 1344; + g_rx_ctrl_handle->base_info.src_h = 2992; + g_rx_ctrl_handle->base_info.dst_w = 1080; + g_rx_ctrl_handle->base_info.dst_h = 2400; + g_rx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ; + g_rx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE; + g_rx_ctrl_handle->base_info.dst_mode = DSI_DATA_VIDEO_MODE; + g_rx_ctrl_handle->rx_color_mode = DSI_RGB888; + g_rx_ctrl_handle->rx_lanes = DSI_LANE_4; + g_rx_ctrl_handle->rx_nonburst_models = DSI_NONBURST_EVENT; + g_rx_ctrl_handle->compress_en = 1; + g_rx_ctrl_handle->rx_hsclk_rate = 1600000000; + g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table; + g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read; + + g_rx_ctrl_handle->extra_info.crop_info.top =12; + g_rx_ctrl_handle->extra_info.crop_info.enable=1; + + g_rx_ctrl_handle->pps_update_entry = pps_update_handle; + + + if (g_rx_ctrl_handle->compress_en == 1) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); + } + + + hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); + + + + + + +# 1599 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + + hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); + + + + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "rx init!\n\r", "p8p", 1607); } while (0); +} + + + + + + +static void app_mipi_tx_init(void) +{ + if (g_tx_ctrl_handle == 0) + { + g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle(); + } + g_tx_ctrl_handle->channel_id = DSI_VC_0; + g_tx_ctrl_handle->lane_num = DSI_LANE_4; + g_tx_ctrl_handle->vid_mode = DSI_BURST_MODE; + g_tx_ctrl_handle->cmd_tx_type = DSI_CMD_TX_LP; + g_tx_ctrl_handle->dpi_vsa = 1; + g_tx_ctrl_handle->dpi_vbp = 19; + g_tx_ctrl_handle->dpi_vfp = 12; + g_tx_ctrl_handle->dpi_hsa = 1; + g_tx_ctrl_handle->dpi_hbp = 27; + g_tx_ctrl_handle->dpi_hfp = 77; + g_tx_ctrl_handle->base_info.src_w = 1344; + g_tx_ctrl_handle->base_info.src_h = 2992; + g_tx_ctrl_handle->base_info.dst_w = 1080; + g_tx_ctrl_handle->base_info.dst_h = 2400; + g_tx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ; + g_tx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE; + g_tx_ctrl_handle->base_info.dst_mode = DSI_DATA_VIDEO_MODE; + g_tx_ctrl_handle->tx_frame_rate=58; + + + + + + + hal_dsi_tx_ctrl_init(g_tx_ctrl_handle); + + + + + + + hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0x00); + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "tx init!\n\r", "p8p", 1653); } while (0); +} + +# 1671 "..\\..\\src\\app\\P8P\\p8p_demo.c" + +void Panel_CCM(void) +{ + ccm_coef_t ccm; + ccm.coef_c00 = 255; + ccm.coef_c01 = 0; + ccm.coef_c02 = 0; + ccm.coef_c10 = 0; + ccm.coef_c11 = 246; + ccm.coef_c12 = 0; + ccm.coef_c20 = 0; + ccm.coef_c21 = 0; + ccm.coef_c22 = 247; + + hal_dsi_tx_ctrl_set_ccm(&ccm); +} + + + + + + + +static void app_mipi_tx_start(void) +{ + + + app_init_panel(); + + hal_dsi_tx_ctrl_start(g_tx_ctrl_handle); + + + + + + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + + + panel_display_done = 1; + if(g_tx_ctrl_handle->base_info.src_w==1008) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + g_resolution_change = 0; + + } + + delayMs(80); + + + + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); + + + hal_swire_set_pulse(31); + + + + + + + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "tx_start \n", "p8p", 1733); } while (0); +} + + + + + + +static void ap_rstn_pull_high_cb(void *data) +{ + + sg_system_resume = 1; + + hal_gpio_set_ap_reset_int(DISABLE, 0, DETECT_RISING_EDGE); +} + + + + + + +static void ap_rstn_pull_down_cb(void *data) +{ + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "ap_rstn_pull_down_cb\n", "p8p", 1756); } while (0); + sg_system_suspend = 1; + + hal_gpio_set_ap_reset_int(DISABLE, 0, DETECT_RISING_EDGE); + +} + + + + + + + +void app_gpio_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PIN_8, PIN8_MODE_GPIO7, IO_IOE_OUTPUT, IO_LVL_LOW}, + {IO_PIN_17, PIN17_MODE_GPIO8, IO_IOE_OUTPUT, IO_LVL_LOW}, + {IO_PIN_16, PIN16_MODE_GPIO2, IO_IOE_OUTPUT, IO_LVL_LOW}, + + + + {IO_PIN_29, PIN29_MODE_TEAR, IO_IOE_NONE, IO_LVL_NONE}, + + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + + + + + + + +void app_display_init(void) +{ + + app_mipi_rx_init(); + + if (PWR_SEL_VCC == PWR_SEL_VCC) + { + + while (hal_pwr_get_vcc_power_ready() == 0); + } + + + app_gpio_init(); + + + + hal_swire_init(); + hal_swire_set_timer(TIMER_NUM0, 8, 1); +# 1818 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + + app_mipi_tx_init(); + + + + + app_mipi_tx_start(); + +} + + + + + + +static void app_system_resume(pwr_sleep_mode_e sleep_mode) +{ + + hal_pwr_exit_sleep_mode(); + + + app_display_init(); + + + + + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "system resume\n", "p8p", 1846); } while (0); +} + + + + + + +static void app_system_suspend(pwr_sleep_mode_e sleep_mode) +{ + + + hal_dsi_tx_ctrl_stop(g_tx_ctrl_handle); + hal_dsi_tx_ctrl_deinit(g_tx_ctrl_handle); + hal_dsi_rx_ctrl_stop(g_rx_ctrl_handle); + hal_dsi_rx_ctrl_deinit(g_rx_ctrl_handle); + + + hal_gpio_init_output(IO_PAD_AP_TE, IO_LVL_LOW); + panel_display_done = 0; + + + + + + + hal_swire_deinit(); + + + + + + + + + + + hal_pwr_set_sleep_mode_power(PWR_SLEEP_IN_IOV18); + + if (sleep_mode == PWR_NORMAL_SLEEP_MODE) + { + + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); + hal_pwr_enter_normal_sleep_mode(); + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_NORMAL_SLEEP_MODE\n", "p8p", 1890); } while (0); + } + else if (sleep_mode == PWR_STOP_SLEEP_MODE) + { + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_STOP_SLEEP_MODE\n", "p8p", 1894); } while (0); + + + hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_RSTN, WUP_RISING_EDGE); + + + io_pad_e wakeup_io = hal_pwr_enter_stop_sleep_mode(); + if (wakeup_io == IO_PAD_AP_RSTN) + { + sg_system_resume = 1; + } + else + { + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "wakeup_io %d FIXME touch wakeup convert to AP\n", "p8p", 1908,wakeup_io); } while (0); + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); + } + } + else + { + + hal_pwr_enter_deep_sleep_mode(WUP_RISING_EDGE, WUP_FALLING_EDGE); + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_DEEP_SLEEP_MODE\n", "p8p", 1916); } while (0); + } + +} + + + + + + +static void app_system_process(void) +{ + + if (sg_system_suspend) + { + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "app_system_process\n", "p8p", 1931); } while (0); + + app_system_suspend(PWR_DEEP_SLEEP_MODE); + sg_system_suspend = 0; + } + + if (sg_system_resume) + { + + app_system_resume(PWR_DEEP_SLEEP_MODE); + sg_system_resume = 0; + } + +# 1951 "..\\..\\src\\app\\P8P\\p8p_demo.c" +} + + + + + + + + +void google_p8p_demo(void) +{ + + + + + hal_pwr_set_main_power(PWR_SEL_VCC); + + + + + + app_display_init(); + + +# 1982 "..\\..\\src\\app\\P8P\\p8p_demo.c" + + do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "p8p demo init done \n", "p8p", 1983); } while (0); + + while (1) + { + + + + + + + + while (hal_dsi_rx_ctrl_dcs_async_handler(g_rx_ctrl_handle)); + + + app_system_process(); + } +} diff --git a/project/WL668/Listings/p8p_demo.lst b/project/WL668/Listings/p8p_demo.lst new file mode 100644 index 0000000..0efb975 --- /dev/null +++ b/project/WL668/Listings/p8p_demo.lst @@ -0,0 +1,11121 @@ +L 1 "..\..\src\app\P8P\p8p_demo.c" +N/******************************************************************************* +N* +N* File: p8p_demo.c +N* Description: 系统测试文件 +N* Version: V0.1 +N* Date: 2020-02-22 +N* Author: Tempest +N *******************************************************************************/ +N#include "p8p_demo.h" +L 1 "..\..\src\app\P8P\p8p_demo.h" 1 +N/******************************************************************************* +N* Copyright (C) 2019-2022, TAU Systems (R),All Rights Reserved. +N* +N* File: P8P.h +N* Description GOOGLE P8P DEMO file +N* Version V0.1 +N* Date 2023-12-25 +N* Author Markin +N*******************************************************************************/ +N#ifndef __GOOGLE_P8P_DEMO_H__ +N#define __GOOGLE_P8P_DEMO_H__ +N +N +N#define PANEL_INIT_CODE_ARRAY 1 +N#define DDIC_FPS_SETTING 1 +N +N +N +Nvoid google_p8p_demo(void); +N +N#endif +L 10 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "ArmCM0.h" +L 1 "..\..\src\sdk\include\M0\ArmCM0.h" 1 +N/**************************************************************************//** +N * @file ARMCM0.h +N * @brief CMSIS Core Peripheral Access Layer Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef ARMCM0_H +N#define ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +N +N/* ------------------------- Interrupt Number Definition ------------------------ */ +N +Ntypedef enum IRQn +N{ +N /* ------------------- Processor Exceptions Numbers ----------------------------- */ +N NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */ +N HardFault_IRQn = -13, /* 3 HardFault Interrupt */ +N SVCall_IRQn = -5, /* 11 SV Call Interrupt */ +N PendSV_IRQn = -2, /* 14 Pend SV Interrupt */ +N SysTick_IRQn = -1, /* 15 System Tick Interrupt */ +N +N /* ------------------- Processor Interrupt Numbers ------------------------------ */ +N VIDC_IRQn = 0, +N LCDC_IRQn = 1, +N MIPI_RX_IRQn = 2, +N MIPI_TX_IRQn = 3, +N MEMC_IRQn = 4, +N VPRE_IRQn = 5, +N FLSCTRL_IRQn = 6, +N DMA_IRQn = 7, +N TIMER0_IRQn = 8, +N TIMER1_IRQn = 9, +N TIMER2_IRQn = 10, +N TIMER3_IRQn = 11, +N WDG_IRQn = 12, +N UART_IRQn = 13, +N I2C0_IRQn = 14, +N I2C1_IRQn = 15, +N SPIS_IRQn = 16, +N SPIM_IRQn = 17, +N VPRE1_IRQn = 18, +N I2C2_IRQn = 19, +N OTP_IRQn = 20, +N SWIRE_IRQn = 21, +N PVD_IRQn = 22, +N AP_NRESET_IRQn = 23, +N EXTI_INT0_IRQn = 24, +N EXTI_INT1_IRQn = 25, +N EXTI_INT2_IRQn = 26, +N EXTI_INT3_IRQn = 27, +N EXTI_INT4_IRQn = 28, +N EXTI_INT5_IRQn = 29, +N EXTI_INT6_IRQn = 30, +N EXTI_INT7_IRQn = 31 +N /* Interrupts 10 .. 31 are left out */ +N} IRQn_Type; +N +N +N/* ================================================================================ */ +N/* ================ Processor and Core Peripheral Section ================ */ +N/* ================================================================================ */ +N +N/* ------- Start of section using anonymous unions and disabling warnings ------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma push +N#pragma anon_unions +N#elif defined (__ICCARM__) +X#elif 0L +S#pragma language=extended +S#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +S#pragma clang diagnostic push +S#pragma clang diagnostic ignored "-Wc11-extensions" +S#pragma clang diagnostic ignored "-Wreserved-id-macro" +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning 586 +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* -------- Configuration of Core Peripherals ----------------------------------- */ +N#define __CM0_REV 0x0000U /* Core revision r0p0 */ +N#define __MPU_PRESENT 0U /* no MPU present */ +N#define __VTOR_PRESENT 0U /* no VTOR present */ +N#define __NVIC_PRIO_BITS 2U /* Number of Bits used for Priority Levels */ //20220228 +N#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */ +N +N#define __FPU_PRESENT 0U /* Set to 1 if FPU is present */ +N#define __FPU_DP 0U /* single precision FPU */ +N#define __ICACHE_PRESENT 0U /* Set to 1 if I-CACHE is present */ +N#define __DCACHE_PRESENT 0U /* Set to 1 if D-CACHE is present */ +N#define __DSP_PRESENT 0U /* no DSP extension present */ +N +N#include "core_cm0.h" /* Processor and core peripherals */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 1 +N/**************************************************************************//** +N * @file core_cm0.h +N * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File +N * @version V5.0.6 +N * @date 13. March 2019 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2019 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CORE_CM0_H_GENERIC +N#define __CORE_CM0_H_GENERIC +N +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h" 1 +N/* Copyright (C) ARM Ltd., 1999,2014 */ +N/* All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdint_h +N#define __stdint_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifdef __INT64_TYPE__ +S /* armclang predefines '__INT64_TYPE__' and '__INT64_C_SUFFIX__' */ +S #define __INT64 __INT64_TYPE__ +N #else +N /* armcc has builtin '__int64' which can be used in --strict mode */ +N #define __INT64 __int64 +N #define __INT64_C_SUFFIX__ ll +N #endif +N #define __PASTE2(x, y) x ## y +N #define __PASTE(x, y) __PASTE2(x, y) +N #define __INT64_C(x) __ESCAPE__(__PASTE(x, __INT64_C_SUFFIX__)) +N #define __UINT64_C(x) __ESCAPE__(__PASTE(x ## u, __INT64_C_SUFFIX__)) +N #if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X #if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N #else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N #endif +N +N #ifndef __STDINT_DECLS +N #define __STDINT_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N +N/* +N * 'signed' is redundant below, except for 'signed char' and if +N * the typedef is used to declare a bitfield. +N */ +N +N /* 7.18.1.1 */ +N +N /* exact-width signed integer types */ +Ntypedef signed char int8_t; +Ntypedef signed short int int16_t; +Ntypedef signed int int32_t; +Ntypedef signed __INT64 int64_t; +Xtypedef signed __int64 int64_t; +N +N /* exact-width unsigned integer types */ +Ntypedef unsigned char uint8_t; +Ntypedef unsigned short int uint16_t; +Ntypedef unsigned int uint32_t; +Ntypedef unsigned __INT64 uint64_t; +Xtypedef unsigned __int64 uint64_t; +N +N /* 7.18.1.2 */ +N +N /* smallest type of at least n bits */ +N /* minimum-width signed integer types */ +Ntypedef signed char int_least8_t; +Ntypedef signed short int int_least16_t; +Ntypedef signed int int_least32_t; +Ntypedef signed __INT64 int_least64_t; +Xtypedef signed __int64 int_least64_t; +N +N /* minimum-width unsigned integer types */ +Ntypedef unsigned char uint_least8_t; +Ntypedef unsigned short int uint_least16_t; +Ntypedef unsigned int uint_least32_t; +Ntypedef unsigned __INT64 uint_least64_t; +Xtypedef unsigned __int64 uint_least64_t; +N +N /* 7.18.1.3 */ +N +N /* fastest minimum-width signed integer types */ +Ntypedef signed int int_fast8_t; +Ntypedef signed int int_fast16_t; +Ntypedef signed int int_fast32_t; +Ntypedef signed __INT64 int_fast64_t; +Xtypedef signed __int64 int_fast64_t; +N +N /* fastest minimum-width unsigned integer types */ +Ntypedef unsigned int uint_fast8_t; +Ntypedef unsigned int uint_fast16_t; +Ntypedef unsigned int uint_fast32_t; +Ntypedef unsigned __INT64 uint_fast64_t; +Xtypedef unsigned __int64 uint_fast64_t; +N +N /* 7.18.1.4 integer types capable of holding object pointers */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +Stypedef signed __INT64 intptr_t; +Stypedef unsigned __INT64 uintptr_t; +N#else +Ntypedef signed int intptr_t; +Ntypedef unsigned int uintptr_t; +N#endif +N +N /* 7.18.1.5 greatest-width integer types */ +Ntypedef signed __LONGLONG intmax_t; +Xtypedef signed long long intmax_t; +Ntypedef unsigned __LONGLONG uintmax_t; +Xtypedef unsigned long long uintmax_t; +N +N +N#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) +X#if !0L || 0L +N +N /* 7.18.2.1 */ +N +N /* minimum values of exact-width signed integer types */ +N#define INT8_MIN -128 +N#define INT16_MIN -32768 +N#define INT32_MIN (~0x7fffffff) /* -2147483648 is unsigned */ +N#define INT64_MIN __INT64_C(~0x7fffffffffffffff) /* -9223372036854775808 is unsigned */ +N +N /* maximum values of exact-width signed integer types */ +N#define INT8_MAX 127 +N#define INT16_MAX 32767 +N#define INT32_MAX 2147483647 +N#define INT64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of exact-width unsigned integer types */ +N#define UINT8_MAX 255 +N#define UINT16_MAX 65535 +N#define UINT32_MAX 4294967295u +N#define UINT64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.2 */ +N +N /* minimum values of minimum-width signed integer types */ +N#define INT_LEAST8_MIN -128 +N#define INT_LEAST16_MIN -32768 +N#define INT_LEAST32_MIN (~0x7fffffff) +N#define INT_LEAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of minimum-width signed integer types */ +N#define INT_LEAST8_MAX 127 +N#define INT_LEAST16_MAX 32767 +N#define INT_LEAST32_MAX 2147483647 +N#define INT_LEAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of minimum-width unsigned integer types */ +N#define UINT_LEAST8_MAX 255 +N#define UINT_LEAST16_MAX 65535 +N#define UINT_LEAST32_MAX 4294967295u +N#define UINT_LEAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.3 */ +N +N /* minimum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MIN (~0x7fffffff) +N#define INT_FAST16_MIN (~0x7fffffff) +N#define INT_FAST32_MIN (~0x7fffffff) +N#define INT_FAST64_MIN __INT64_C(~0x7fffffffffffffff) +N +N /* maximum values of fastest minimum-width signed integer types */ +N#define INT_FAST8_MAX 2147483647 +N#define INT_FAST16_MAX 2147483647 +N#define INT_FAST32_MAX 2147483647 +N#define INT_FAST64_MAX __INT64_C(9223372036854775807) +N +N /* maximum values of fastest minimum-width unsigned integer types */ +N#define UINT_FAST8_MAX 4294967295u +N#define UINT_FAST16_MAX 4294967295u +N#define UINT_FAST32_MAX 4294967295u +N#define UINT_FAST64_MAX __UINT64_C(18446744073709551615) +N +N /* 7.18.2.4 */ +N +N /* minimum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MIN INT64_MIN +N#else +N#define INTPTR_MIN INT32_MIN +N#endif +N +N /* maximum value of pointer-holding signed integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define INTPTR_MAX INT64_MAX +N#else +N#define INTPTR_MAX INT32_MAX +N#endif +N +N /* maximum value of pointer-holding unsigned integer type */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define UINTPTR_MAX UINT64_MAX +N#else +N#define UINTPTR_MAX UINT32_MAX +N#endif +N +N /* 7.18.2.5 */ +N +N /* minimum value of greatest-width signed integer type */ +N#define INTMAX_MIN __ESCAPE__(~0x7fffffffffffffffll) +N +N /* maximum value of greatest-width signed integer type */ +N#define INTMAX_MAX __ESCAPE__(9223372036854775807ll) +N +N /* maximum value of greatest-width unsigned integer type */ +N#define UINTMAX_MAX __ESCAPE__(18446744073709551615ull) +N +N /* 7.18.3 */ +N +N /* limits of ptrdiff_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define PTRDIFF_MIN INT64_MIN +S#define PTRDIFF_MAX INT64_MAX +N#else +N#define PTRDIFF_MIN INT32_MIN +N#define PTRDIFF_MAX INT32_MAX +N#endif +N +N /* limits of sig_atomic_t */ +N#define SIG_ATOMIC_MIN (~0x7fffffff) +N#define SIG_ATOMIC_MAX 2147483647 +N +N /* limit of size_t */ +N#if __sizeof_ptr == 8 +X#if 4 == 8 +S#define SIZE_MAX UINT64_MAX +N#else +N#define SIZE_MAX UINT32_MAX +N#endif +N +N /* limits of wchar_t */ +N /* NB we have to undef and redef because they're defined in both +N * stdint.h and wchar.h */ +N#undef WCHAR_MIN +N#undef WCHAR_MAX +N +N#if defined(__WCHAR32) || (defined(__ARM_SIZEOF_WCHAR_T) && __ARM_SIZEOF_WCHAR_T == 4) +X#if 0L || (0L && __ARM_SIZEOF_WCHAR_T == 4) +S #define WCHAR_MIN 0 +S #define WCHAR_MAX 0xffffffffU +N#else +N #define WCHAR_MIN 0 +N #define WCHAR_MAX 65535 +N#endif +N +N /* limits of wint_t */ +N#define WINT_MIN (~0x7fffffff) +N#define WINT_MAX 2147483647 +N +N#endif /* __STDC_LIMIT_MACROS */ +N +N#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) +X#if !0L || 0L +N +N /* 7.18.4.1 macros for minimum-width integer constants */ +N#define INT8_C(x) (x) +N#define INT16_C(x) (x) +N#define INT32_C(x) (x) +N#define INT64_C(x) __INT64_C(x) +N +N#define UINT8_C(x) (x ## u) +N#define UINT16_C(x) (x ## u) +N#define UINT32_C(x) (x ## u) +N#define UINT64_C(x) __UINT64_C(x) +N +N /* 7.18.4.2 macros for greatest-width integer constants */ +N#define INTMAX_C(x) __ESCAPE__(x ## ll) +N#define UINTMAX_C(x) __ESCAPE__(x ## ull) +N +N#endif /* __STDC_CONSTANT_MACROS */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STDINT_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDINT_NO_EXPORTS +S using ::std::int8_t; +S using ::std::int16_t; +S using ::std::int32_t; +S using ::std::int64_t; +S using ::std::uint8_t; +S using ::std::uint16_t; +S using ::std::uint32_t; +S using ::std::uint64_t; +S using ::std::int_least8_t; +S using ::std::int_least16_t; +S using ::std::int_least32_t; +S using ::std::int_least64_t; +S using ::std::uint_least8_t; +S using ::std::uint_least16_t; +S using ::std::uint_least32_t; +S using ::std::uint_least64_t; +S using ::std::int_fast8_t; +S using ::std::int_fast16_t; +S using ::std::int_fast32_t; +S using ::std::int_fast64_t; +S using ::std::uint_fast8_t; +S using ::std::uint_fast16_t; +S using ::std::uint_fast32_t; +S using ::std::uint_fast64_t; +S using ::std::intptr_t; +S using ::std::uintptr_t; +S using ::std::intmax_t; +S using ::std::uintmax_t; +S #endif +N #endif /* __cplusplus */ +N +N#undef __INT64 +N#undef __LONGLONG +N +N#endif /* __stdint_h */ +N +N/* end of stdint.h */ +L 35 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/** +N \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions +N CMSIS violates the following MISRA-C:2004 rules: +N +N \li Required Rule 8.5, object/function definition in header file.
+N Function definitions in header files are used to allow 'inlining'. +N +N \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+N Unions are used for effective representation of core registers. +N +N \li Advisory Rule 19.7, Function-like macro defined.
+N Function-like macros are used to allow more efficient code. +N */ +N +N +N/******************************************************************************* +N * CMSIS definitions +N ******************************************************************************/ +N/** +N \ingroup Cortex_M0 +N @{ +N */ +N +N#include "cmsis_version.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h" 1 +N/**************************************************************************//** +N * @file cmsis_version.h +N * @brief CMSIS Core(M) Version definitions +N * @version V5.0.2 +N * @date 19. April 2017 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2017 ARM Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#if defined ( __ICCARM__ ) +X#if 0L +S #pragma system_include /* treat file as system include file for MISRA check */ +S#elif defined (__clang__) +X#elif 0L +S #pragma clang system_header /* treat file as system include file */ +N#endif +N +N#ifndef __CMSIS_VERSION_H +N#define __CMSIS_VERSION_H +N +N/* CMSIS Version definitions */ +N#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +N#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +N#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ +N __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +X#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | __CM_CMSIS_VERSION_SUB ) +N#endif +L 64 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N/* CMSIS CM0 definitions */ +N#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +N#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +N#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ +N __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ +X#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | __CM0_CMSIS_VERSION_SUB ) +N +N#define __CORTEX_M (0U) /*!< Cortex-M Core */ +N +N/** __FPU_USED indicates whether an FPU is used or not. +N This core does not support an FPU at all +N*/ +N#define __FPU_USED 0U +N +N#if defined ( __CC_ARM ) +X#if 1L +N #if defined __TARGET_FPU_VFP +X #if 0L +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +N #endif +N +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +X#elif 1L && (5060750 >= 6010050) +S #if defined __ARM_FP +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __GNUC__ ) +S #if defined (__VFP_FP__) && !defined(__SOFTFP__) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __ICCARM__ ) +S #if defined __ARMVFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TI_ARM__ ) +S #if defined __TI_VFP_SUPPORT__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __TASKING__ ) +S #if defined __FPU_VFP__ +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +S#elif defined ( __CSMC__ ) +S #if ( __CSMC__ & 0x400U) +S #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" +S #endif +S +N#endif +N +N#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 1 +N/**************************************************************************//** +N * @file cmsis_compiler.h +N * @brief CMSIS compiler generic header file +N * @version V5.1.0 +N * @date 09. October 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_COMPILER_H +N#define __CMSIS_COMPILER_H +N +N#include +N +N/* +N * Arm Compiler 4/5 +N */ +N#if defined ( __CC_ARM ) +X#if 1L +N #include "cmsis_armcc.h" +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h" 1 +N/**************************************************************************//** +N * @file cmsis_armcc.h +N * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file +N * @version V5.0.5 +N * @date 14. December 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef __CMSIS_ARMCC_H +N#define __CMSIS_ARMCC_H +N +N +N#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) +X#if 1L && (5060750 < 400677) +S #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +N#endif +N +N/* CMSIS compiler control architecture macros */ +N#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ +N (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) +X#if ((0L && (__TARGET_ARCH_6_M == 1)) || (1L && (1 == 1)) ) +N #define __ARM_ARCH_6M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) +X#if (0L && (__TARGET_ARCH_7_M == 1)) +S #define __ARM_ARCH_7M__ 1 +N#endif +N +N#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) +X#if (0L && (__TARGET_ARCH_7E_M == 1)) +S #define __ARM_ARCH_7EM__ 1 +N#endif +N +N /* __ARM_ARCH_8M_BASE__ not applicable */ +N /* __ARM_ARCH_8M_MAIN__ not applicable */ +N +N/* CMSIS compiler control DSP macros */ +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __ARM_FEATURE_DSP 1 +N#endif +N +N/* CMSIS compiler specific defines */ +N#ifndef __ASM +N #define __ASM __asm +N#endif +N#ifndef __INLINE +N #define __INLINE __inline +N#endif +N#ifndef __STATIC_INLINE +N #define __STATIC_INLINE static __inline +N#endif +N#ifndef __STATIC_FORCEINLINE +N #define __STATIC_FORCEINLINE static __forceinline +N#endif +N#ifndef __NO_RETURN +N #define __NO_RETURN __declspec(noreturn) +N#endif +N#ifndef __USED +N #define __USED __attribute__((used)) +N#endif +N#ifndef __WEAK +N #define __WEAK __attribute__((weak)) +N#endif +N#ifndef __PACKED +N #define __PACKED __attribute__((packed)) +N#endif +N#ifndef __PACKED_STRUCT +N #define __PACKED_STRUCT __packed struct +N#endif +N#ifndef __PACKED_UNION +N #define __PACKED_UNION __packed union +N#endif +N#ifndef __UNALIGNED_UINT32 /* deprecated */ +N #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +N#endif +N#ifndef __UNALIGNED_UINT16_WRITE +N #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT16_READ +N #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +N#endif +N#ifndef __UNALIGNED_UINT32_WRITE +N #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +N#endif +N#ifndef __UNALIGNED_UINT32_READ +N #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +N#endif +N#ifndef __ALIGNED +N #define __ALIGNED(x) __attribute__((aligned(x))) +N#endif +N#ifndef __RESTRICT +N #define __RESTRICT __restrict +N#endif +N +N/* ########################### Core Function Access ########################### */ +N/** \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions +N @{ +N */ +N +N/** +N \brief Enable IRQ Interrupts +N \details Enables IRQ interrupts by clearing the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __enable_irq(); */ +N +N +N/** +N \brief Disable IRQ Interrupts +N \details Disables IRQ interrupts by setting the I-bit in the CPSR. +N Can only be executed in Privileged modes. +N */ +N/* intrinsic void __disable_irq(); */ +N +N/** +N \brief Get Control Register +N \details Returns the content of the Control Register. +N \return Control Register value +N */ +N__STATIC_INLINE uint32_t __get_CONTROL(void) +Xstatic __inline uint32_t __get_CONTROL(void) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N return(__regControl); +N} +N +N +N/** +N \brief Set Control Register +N \details Writes the given value to the Control Register. +N \param [in] control Control Register value to set +N */ +N__STATIC_INLINE void __set_CONTROL(uint32_t control) +Xstatic __inline void __set_CONTROL(uint32_t control) +N{ +N register uint32_t __regControl __ASM("control"); +X register uint32_t __regControl __asm("control"); +N __regControl = control; +N} +N +N +N/** +N \brief Get IPSR Register +N \details Returns the content of the IPSR Register. +N \return IPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_IPSR(void) +Xstatic __inline uint32_t __get_IPSR(void) +N{ +N register uint32_t __regIPSR __ASM("ipsr"); +X register uint32_t __regIPSR __asm("ipsr"); +N return(__regIPSR); +N} +N +N +N/** +N \brief Get APSR Register +N \details Returns the content of the APSR Register. +N \return APSR Register value +N */ +N__STATIC_INLINE uint32_t __get_APSR(void) +Xstatic __inline uint32_t __get_APSR(void) +N{ +N register uint32_t __regAPSR __ASM("apsr"); +X register uint32_t __regAPSR __asm("apsr"); +N return(__regAPSR); +N} +N +N +N/** +N \brief Get xPSR Register +N \details Returns the content of the xPSR Register. +N \return xPSR Register value +N */ +N__STATIC_INLINE uint32_t __get_xPSR(void) +Xstatic __inline uint32_t __get_xPSR(void) +N{ +N register uint32_t __regXPSR __ASM("xpsr"); +X register uint32_t __regXPSR __asm("xpsr"); +N return(__regXPSR); +N} +N +N +N/** +N \brief Get Process Stack Pointer +N \details Returns the current value of the Process Stack Pointer (PSP). +N \return PSP Register value +N */ +N__STATIC_INLINE uint32_t __get_PSP(void) +Xstatic __inline uint32_t __get_PSP(void) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N return(__regProcessStackPointer); +N} +N +N +N/** +N \brief Set Process Stack Pointer +N \details Assigns the given value to the Process Stack Pointer (PSP). +N \param [in] topOfProcStack Process Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +Xstatic __inline void __set_PSP(uint32_t topOfProcStack) +N{ +N register uint32_t __regProcessStackPointer __ASM("psp"); +X register uint32_t __regProcessStackPointer __asm("psp"); +N __regProcessStackPointer = topOfProcStack; +N} +N +N +N/** +N \brief Get Main Stack Pointer +N \details Returns the current value of the Main Stack Pointer (MSP). +N \return MSP Register value +N */ +N__STATIC_INLINE uint32_t __get_MSP(void) +Xstatic __inline uint32_t __get_MSP(void) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N return(__regMainStackPointer); +N} +N +N +N/** +N \brief Set Main Stack Pointer +N \details Assigns the given value to the Main Stack Pointer (MSP). +N \param [in] topOfMainStack Main Stack Pointer value to set +N */ +N__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +Xstatic __inline void __set_MSP(uint32_t topOfMainStack) +N{ +N register uint32_t __regMainStackPointer __ASM("msp"); +X register uint32_t __regMainStackPointer __asm("msp"); +N __regMainStackPointer = topOfMainStack; +N} +N +N +N/** +N \brief Get Priority Mask +N \details Returns the current state of the priority mask bit from the Priority Mask Register. +N \return Priority Mask value +N */ +N__STATIC_INLINE uint32_t __get_PRIMASK(void) +Xstatic __inline uint32_t __get_PRIMASK(void) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N return(__regPriMask); +N} +N +N +N/** +N \brief Set Priority Mask +N \details Assigns the given value to the Priority Mask Register. +N \param [in] priMask Priority Mask +N */ +N__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +Xstatic __inline void __set_PRIMASK(uint32_t priMask) +N{ +N register uint32_t __regPriMask __ASM("primask"); +X register uint32_t __regPriMask __asm("primask"); +N __regPriMask = (priMask); +N} +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief Enable FIQ +S \details Enables FIQ interrupts by clearing the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __enable_fault_irq __enable_fiq +S +S +S/** +S \brief Disable FIQ +S \details Disables FIQ interrupts by setting the F-bit in the CPSR. +S Can only be executed in Privileged modes. +S */ +S#define __disable_fault_irq __disable_fiq +S +S +S/** +S \brief Get Base Priority +S \details Returns the current value of the Base Priority register. +S \return Base Priority register value +S */ +S__STATIC_INLINE uint32_t __get_BASEPRI(void) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S return(__regBasePri); +S} +S +S +S/** +S \brief Set Base Priority +S \details Assigns the given value to the Base Priority register. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +S{ +S register uint32_t __regBasePri __ASM("basepri"); +S __regBasePri = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Set Base Priority with condition +S \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, +S or the new value increases the BASEPRI priority level. +S \param [in] basePri Base Priority value to set +S */ +S__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +S{ +S register uint32_t __regBasePriMax __ASM("basepri_max"); +S __regBasePriMax = (basePri & 0xFFU); +S} +S +S +S/** +S \brief Get Fault Mask +S \details Returns the current value of the Fault Mask register. +S \return Fault Mask register value +S */ +S__STATIC_INLINE uint32_t __get_FAULTMASK(void) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S return(__regFaultMask); +S} +S +S +S/** +S \brief Set Fault Mask +S \details Assigns the given value to the Fault Mask register. +S \param [in] faultMask Fault Mask value to set +S */ +S__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +S{ +S register uint32_t __regFaultMask __ASM("faultmask"); +S __regFaultMask = (faultMask & (uint32_t)1U); +S} +S +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N +N/** +N \brief Get FPSCR +N \details Returns the current value of the Floating Point Status/Control register. +N \return Floating Point Status/Control register value +N */ +N__STATIC_INLINE uint32_t __get_FPSCR(void) +Xstatic __inline uint32_t __get_FPSCR(void) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S return(__regfpscr); +N#else +N return(0U); +N#endif +N} +N +N +N/** +N \brief Set FPSCR +N \details Assigns the given value to the Floating Point Status/Control register. +N \param [in] fpscr Floating Point Status/Control value to set +N */ +N__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +Xstatic __inline void __set_FPSCR(uint32_t fpscr) +N{ +N#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ +N (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +X#if ((1L && (0U == 1U)) && (1L && (0U == 1U)) ) +S register uint32_t __regfpscr __ASM("fpscr"); +S __regfpscr = (fpscr); +N#else +N (void)fpscr; +N#endif +N} +N +N +N/*@} end of CMSIS_Core_RegAccFunctions */ +N +N +N/* ########################## Core Instruction Access ######################### */ +N/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface +N Access to dedicated instructions +N @{ +N*/ +N +N/** +N \brief No Operation +N \details No Operation does nothing. This instruction can be used for code alignment purposes. +N */ +N#define __NOP __nop +N +N +N/** +N \brief Wait For Interrupt +N \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. +N */ +N#define __WFI __wfi +N +N +N/** +N \brief Wait For Event +N \details Wait For Event is a hint instruction that permits the processor to enter +N a low-power state until one of a number of events occurs. +N */ +N#define __WFE __wfe +N +N +N/** +N \brief Send Event +N \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. +N */ +N#define __SEV __sev +N +N +N/** +N \brief Instruction Synchronization Barrier +N \details Instruction Synchronization Barrier flushes the pipeline in the processor, +N so that all instructions following the ISB are fetched from cache or memory, +N after the instruction has been completed. +N */ +N#define __ISB() do {\ +N __schedule_barrier();\ +N __isb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __ISB() do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Synchronization Barrier +N \details Acts as a special kind of Data Memory Barrier. +N It completes when all explicit memory accesses before this instruction complete. +N */ +N#define __DSB() do {\ +N __schedule_barrier();\ +N __dsb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DSB() do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U) +N +N/** +N \brief Data Memory Barrier +N \details Ensures the apparent order of the explicit memory operations before +N and after the instruction, without ensuring their completion. +N */ +N#define __DMB() do {\ +N __schedule_barrier();\ +N __dmb(0xF);\ +N __schedule_barrier();\ +N } while (0U) +X#define __DMB() do { __schedule_barrier(); __dmb(0xF); __schedule_barrier(); } while (0U) +N +N +N/** +N \brief Reverse byte order (32 bit) +N \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#define __REV __rev +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +X__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value) +N{ +N rev16 r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Reverse byte order (16 bit) +N \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#ifndef __NO_EMBEDDED_ASM +N__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +X__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value) +N{ +N revsh r0, r0 +N bx lr +N} +N#endif +N +N +N/** +N \brief Rotate Right in unsigned value (32 bit) +N \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. +N \param [in] op1 Value to rotate +N \param [in] op2 Number of Bits to rotate +N \return Rotated value +N */ +N#define __ROR __ror +N +N +N/** +N \brief Breakpoint +N \details Causes the processor to enter Debug state. +N Debug tools can use this to investigate system state when the instruction at a particular address is reached. +N \param [in] value is ignored by the processor. +N If required, a debugger can use it to store additional information about the breakpoint. +N */ +N#define __BKPT(value) __breakpoint(value) +N +N +N/** +N \brief Reverse bit order of value +N \details Reverses the bit order of the given value. +N \param [in] value Value to reverse +N \return Reversed value +N */ +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S #define __RBIT __rbit +N#else +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +X__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value) +N{ +N uint32_t result; +N uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ +N +N result = value; /* r will be reversed bits of v; first get LSB of v */ +N for (value >>= 1U; value != 0U; value >>= 1U) +N { +N result <<= 1U; +N result |= value & 1U; +N s--; +N } +N result <<= s; /* shift when v's highest bits are zero */ +N return result; +N} +N#endif +N +N +N/** +N \brief Count leading zeros +N \details Counts the number of leading zeros of a data value. +N \param [in] value Value to count the leading zeros +N \return number of leading zeros in value +N */ +N#define __CLZ __clz +N +N +N#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7M__ == 1)) || (0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S/** +S \brief LDR Exclusive (8 bit) +S \details Executes a exclusive LDR instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +S#else +S #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (16 bit) +S \details Executes a exclusive LDR instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +S#else +S #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief LDR Exclusive (32 bit) +S \details Executes a exclusive LDR instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +S#else +S #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (8 bit) +S \details Executes a exclusive STR instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXB(value, ptr) __strex(value, ptr) +S#else +S #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (16 bit) +S \details Executes a exclusive STR instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXH(value, ptr) __strex(value, ptr) +S#else +S #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief STR Exclusive (32 bit) +S \details Executes a exclusive STR instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S \return 0 Function succeeded +S \return 1 Function failed +S */ +S#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) +S #define __STREXW(value, ptr) __strex(value, ptr) +S#else +S #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +S#endif +S +S +S/** +S \brief Remove the exclusive lock +S \details Removes the exclusive lock which is created by LDREX. +S */ +S#define __CLREX __clrex +S +S +S/** +S \brief Signed Saturate +S \details Saturates a signed value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (1..32) +S \return Saturated value +S */ +S#define __SSAT __ssat +S +S +S/** +S \brief Unsigned Saturate +S \details Saturates an unsigned value. +S \param [in] value Value to be saturated +S \param [in] sat Bit position to saturate to (0..31) +S \return Saturated value +S */ +S#define __USAT __usat +S +S +S/** +S \brief Rotate Right with Extend (32 bit) +S \details Moves each bit of a bitstring right by one bit. +S The carry input is shifted in at the left end of the bitstring. +S \param [in] value Value to rotate +S \return Rotated value +S */ +S#ifndef __NO_EMBEDDED_ASM +S__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +S{ +S rrx r0, r0 +S bx lr +S} +S#endif +S +S +S/** +S \brief LDRT Unprivileged (8 bit) +S \details Executes a Unprivileged LDRT instruction for 8 bit value. +S \param [in] ptr Pointer to data +S \return value of type uint8_t at (*ptr) +S */ +S#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (16 bit) +S \details Executes a Unprivileged LDRT instruction for 16 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint16_t at (*ptr) +S */ +S#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) +S +S +S/** +S \brief LDRT Unprivileged (32 bit) +S \details Executes a Unprivileged LDRT instruction for 32 bit values. +S \param [in] ptr Pointer to data +S \return value of type uint32_t at (*ptr) +S */ +S#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) +S +S +S/** +S \brief STRT Unprivileged (8 bit) +S \details Executes a Unprivileged STRT instruction for 8 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRBT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (16 bit) +S \details Executes a Unprivileged STRT instruction for 16 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRHT(value, ptr) __strt(value, ptr) +S +S +S/** +S \brief STRT Unprivileged (32 bit) +S \details Executes a Unprivileged STRT instruction for 32 bit values. +S \param [in] value Value to store +S \param [in] ptr Pointer to location +S */ +S#define __STRT(value, ptr) __strt(value, ptr) +S +N#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#else +N +N/** +N \brief Signed Saturate +N \details Saturates a signed value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (1..32) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat) +N{ +N if ((sat >= 1U) && (sat <= 32U)) +N { +N const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); +N const int32_t min = -1 - max ; +N if (val > max) +N { +N return max; +N } +N else if (val < min) +N { +N return min; +N } +N } +N return val; +N} +N +N/** +N \brief Unsigned Saturate +N \details Saturates an unsigned value. +N \param [in] value Value to be saturated +N \param [in] sat Bit position to saturate to (0..31) +N \return Saturated value +N */ +N__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +X__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat) +N{ +N if (sat <= 31U) +N { +N const uint32_t max = ((1U << sat) - 1U); +N if (val > (int32_t)max) +N { +N return max; +N } +N else if (val < 0) +N { +N return 0U; +N } +N } +N return (uint32_t)val; +N} +N +N#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +N (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +X#endif +N +N/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ +N +N +N/* ################### Compiler specific Intrinsics ########################### */ +N/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics +N Access to dedicated SIMD instructions +N @{ +N*/ +N +N#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) +X#if ((0L && (__ARM_ARCH_7EM__ == 1)) ) +S +S#define __SADD8 __sadd8 +S#define __QADD8 __qadd8 +S#define __SHADD8 __shadd8 +S#define __UADD8 __uadd8 +S#define __UQADD8 __uqadd8 +S#define __UHADD8 __uhadd8 +S#define __SSUB8 __ssub8 +S#define __QSUB8 __qsub8 +S#define __SHSUB8 __shsub8 +S#define __USUB8 __usub8 +S#define __UQSUB8 __uqsub8 +S#define __UHSUB8 __uhsub8 +S#define __SADD16 __sadd16 +S#define __QADD16 __qadd16 +S#define __SHADD16 __shadd16 +S#define __UADD16 __uadd16 +S#define __UQADD16 __uqadd16 +S#define __UHADD16 __uhadd16 +S#define __SSUB16 __ssub16 +S#define __QSUB16 __qsub16 +S#define __SHSUB16 __shsub16 +S#define __USUB16 __usub16 +S#define __UQSUB16 __uqsub16 +S#define __UHSUB16 __uhsub16 +S#define __SASX __sasx +S#define __QASX __qasx +S#define __SHASX __shasx +S#define __UASX __uasx +S#define __UQASX __uqasx +S#define __UHASX __uhasx +S#define __SSAX __ssax +S#define __QSAX __qsax +S#define __SHSAX __shsax +S#define __USAX __usax +S#define __UQSAX __uqsax +S#define __UHSAX __uhsax +S#define __USAD8 __usad8 +S#define __USADA8 __usada8 +S#define __SSAT16 __ssat16 +S#define __USAT16 __usat16 +S#define __UXTB16 __uxtb16 +S#define __UXTAB16 __uxtab16 +S#define __SXTB16 __sxtb16 +S#define __SXTAB16 __sxtab16 +S#define __SMUAD __smuad +S#define __SMUADX __smuadx +S#define __SMLAD __smlad +S#define __SMLADX __smladx +S#define __SMLALD __smlald +S#define __SMLALDX __smlaldx +S#define __SMUSD __smusd +S#define __SMUSDX __smusdx +S#define __SMLSD __smlsd +S#define __SMLSDX __smlsdx +S#define __SMLSLD __smlsld +S#define __SMLSLDX __smlsldx +S#define __SEL __sel +S#define __QADD __qadd +S#define __QSUB __qsub +S +S#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ +S ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +X#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) +S +S#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ +S ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +X#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) +S +S#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ +S ((int64_t)(ARG3) << 32U) ) >> 32U)) +X#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + ((int64_t)(ARG3) << 32U) ) >> 32U)) +S +N#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +N/*@} end of group CMSIS_SIMD_intrinsics */ +N +N +N#endif /* __CMSIS_ARMCC_H */ +L 35 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h" 2 +N +N +N/* +N * Arm Compiler 6.6 LTM (armclang) +N */ +N#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) +X#elif 1L && (5060750 >= 6010050) && (5060750 < 6100100) +S #include "cmsis_armclang_ltm.h" +S +S /* +S * Arm Compiler above 6.10.1 (armclang) +S */ +S#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) +S #include "cmsis_armclang.h" +S +S +S/* +S * GNU Compiler +S */ +S#elif defined ( __GNUC__ ) +S #include "cmsis_gcc.h" +S +S +S/* +S * IAR Compiler +S */ +S#elif defined ( __ICCARM__ ) +S #include +S +S +S/* +S * TI Arm Compiler +S */ +S#elif defined ( __TI_ARM__ ) +S #include +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __attribute__((packed)) +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __attribute__((packed)) +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __attribute__((packed)) +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __attribute__((packed)) T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __attribute__((aligned(x))) +S #endif +S #ifndef __RESTRICT +S #define __RESTRICT __restrict +S #endif +S +S +S/* +S * TASKING Compiler +S */ +S#elif defined ( __TASKING__ ) +S /* +S * The CMSIS functions have been implemented as intrinsics in the compiler. +S * Please use "carm -?i" to get an up to date list of all intrinsics, +S * Including the CMSIS ones. +S */ +S +S #ifndef __ASM +S #define __ASM __asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S #define __NO_RETURN __attribute__((noreturn)) +S #endif +S #ifndef __USED +S #define __USED __attribute__((used)) +S #endif +S #ifndef __WEAK +S #define __WEAK __attribute__((weak)) +S #endif +S #ifndef __PACKED +S #define __PACKED __packed__ +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT struct __packed__ +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION union __packed__ +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S struct __packed__ T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #define __ALIGNED(x) __align(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S/* +S * COSMIC Compiler +S */ +S#elif defined ( __CSMC__ ) +S #include +S +S #ifndef __ASM +S #define __ASM _asm +S #endif +S #ifndef __INLINE +S #define __INLINE inline +S #endif +S #ifndef __STATIC_INLINE +S #define __STATIC_INLINE static inline +S #endif +S #ifndef __STATIC_FORCEINLINE +S #define __STATIC_FORCEINLINE __STATIC_INLINE +S #endif +S #ifndef __NO_RETURN +S // NO RETURN is automatically detected hence no warning here +S #define __NO_RETURN +S #endif +S #ifndef __USED +S #warning No compiler specific solution for __USED. __USED is ignored. +S #define __USED +S #endif +S #ifndef __WEAK +S #define __WEAK __weak +S #endif +S #ifndef __PACKED +S #define __PACKED @packed +S #endif +S #ifndef __PACKED_STRUCT +S #define __PACKED_STRUCT @packed struct +S #endif +S #ifndef __PACKED_UNION +S #define __PACKED_UNION @packed union +S #endif +S #ifndef __UNALIGNED_UINT32 /* deprecated */ +S @packed struct T_UINT32 { uint32_t v; }; +S #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +S #endif +S #ifndef __UNALIGNED_UINT16_WRITE +S __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; +S #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT16_READ +S __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; +S #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __UNALIGNED_UINT32_WRITE +S __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; +S #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +S #endif +S #ifndef __UNALIGNED_UINT32_READ +S __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; +S #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +S #endif +S #ifndef __ALIGNED +S #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. +S #define __ALIGNED(x) +S #endif +S #ifndef __RESTRICT +S #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. +S #define __RESTRICT +S #endif +S +S +S#else +S #error Unknown compiler. +N#endif +N +N +N#endif /* __CMSIS_COMPILER_H */ +N +L 116 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h" 2 +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_GENERIC */ +N +N#ifndef __CMSIS_GENERIC +N +N#ifndef __CORE_CM0_H_DEPENDANT +N#define __CORE_CM0_H_DEPENDANT +N +N#ifdef __cplusplus +S extern "C" { +N#endif +N +N/* check device defines and use defaults */ +N#if defined __CHECK_DEVICE_DEFINES +X#if 0L +S #ifndef __CM0_REV +S #define __CM0_REV 0x0000U +S #warning "__CM0_REV not defined in device header file; using default!" +S #endif +S +S #ifndef __NVIC_PRIO_BITS +S #define __NVIC_PRIO_BITS 2U +S #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" +S #endif +S +S #ifndef __Vendor_SysTickConfig +S #define __Vendor_SysTickConfig 0U +S #warning "__Vendor_SysTickConfig not defined in device header file; using default!" +S #endif +N#endif +N +N/* IO definitions (access restrictions to peripheral registers) */ +N/** +N \defgroup CMSIS_glob_defs CMSIS Global Defines +N +N IO Type Qualifiers are used +N \li to specify the access to peripheral variables. +N \li for automatic generation of peripheral register debug information. +N*/ +N#ifdef __cplusplus +S #define __I volatile /*!< Defines 'read only' permissions */ +N#else +N #define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N/* following defines should be used for structure members */ +N#define __IM volatile const /*! Defines 'read only' structure member permissions */ +N#define __OM volatile /*! Defines 'write only' structure member permissions */ +N#define __IOM volatile /*! Defines 'read / write' structure member permissions */ +N +N/*@} end of group Cortex_M0 */ +N +N +N +N/******************************************************************************* +N * Register Abstraction +N Core Register contain: +N - Core Register +N - Core NVIC Register +N - Core SCB Register +N - Core SysTick Register +N ******************************************************************************/ +N/** +N \defgroup CMSIS_core_register Defines and Type Definitions +N \brief Type definitions and defines for Cortex-M processor based devices. +N*/ +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CORE Status and Control Registers +N \brief Core Register type definitions. +N @{ +N */ +N +N/** +N \brief Union type to access the Application Program Status Register (APSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} APSR_Type; +N +N/* APSR Register Definitions */ +N#define APSR_N_Pos 31U /*!< APSR: N Position */ +N#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ +N +N#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +N#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ +N +N#define APSR_C_Pos 29U /*!< APSR: C Position */ +N#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ +N +N#define APSR_V_Pos 28U /*!< APSR: V Position */ +N#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ +N +N +N/** +N \brief Union type to access the Interrupt Program Status Register (IPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} IPSR_Type; +N +N/* IPSR Register Definitions */ +N#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +N#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Special-Purpose Program Status Registers (xPSR). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ +N uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ +N uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ +N uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ +N uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ +N uint32_t C:1; /*!< bit: 29 Carry condition code flag */ +N uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ +N uint32_t N:1; /*!< bit: 31 Negative condition code flag */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} xPSR_Type; +N +N/* xPSR Register Definitions */ +N#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +N#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ +N +N#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +N#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ +N +N#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +N#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ +N +N#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +N#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ +N +N#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +N#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ +N +N#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +N#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ +N +N +N/** +N \brief Union type to access the Control Registers (CONTROL). +N */ +Ntypedef union +N{ +N struct +N { +N uint32_t _reserved0:1; /*!< bit: 0 Reserved */ +N uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ +N uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ +N } b; /*!< Structure used for bit access */ +N uint32_t w; /*!< Type used for word access */ +N} CONTROL_Type; +N +N/* CONTROL Register Definitions */ +N#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +N#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ +N +N/*@} end of group CMSIS_CORE */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) +N \brief Type definitions for the NVIC Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). +N */ +Ntypedef struct +N{ +N __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ +X volatile uint32_t ISER[1U]; +N uint32_t RESERVED0[31U]; +N __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ +X volatile uint32_t ICER[1U]; +N uint32_t RESERVED1[31U]; +N __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ +X volatile uint32_t ISPR[1U]; +N uint32_t RESERVED2[31U]; +N __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ +X volatile uint32_t ICPR[1U]; +N uint32_t RESERVED3[31U]; +N uint32_t RESERVED4[64U]; +N __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +X volatile uint32_t IP[8U]; +N} NVIC_Type; +N +N/*@} end of group CMSIS_NVIC */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SCB System Control Block (SCB) +N \brief Type definitions for the System Control Block Registers +N @{ +N */ +N +N/** +N \brief Structure type to access the System Control Block (SCB). +N */ +Ntypedef struct +N{ +N __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ +X volatile const uint32_t CPUID; +N __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +X volatile uint32_t ICSR; +N uint32_t RESERVED0; +N __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ +X volatile uint32_t AIRCR; +N __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ +X volatile uint32_t SCR; +N __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ +X volatile uint32_t CCR; +N uint32_t RESERVED1; +N __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ +X volatile uint32_t SHP[2U]; +N __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +X volatile uint32_t SHCSR; +N} SCB_Type; +N +N/* SCB CPUID Register Definitions */ +N#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +N#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ +N +N#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +N#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ +N +N#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +N#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ +N +N#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +N#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ +N +N#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +N#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ +N +N/* SCB Interrupt Control State Register Definitions */ +N#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +N#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ +N +N#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +N#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ +N +N#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +N#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ +N +N#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +N#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ +N +N#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +N#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ +N +N#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +N#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ +N +N#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +N#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ +N +N#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +N#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ +N +N#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +N#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ +N +N/* SCB Application Interrupt and Reset Control Register Definitions */ +N#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +N#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ +N +N#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +N#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ +N +N#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +N#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ +N +N#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +N#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ +N +N#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +N#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ +N +N/* SCB System Control Register Definitions */ +N#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +N#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ +N +N#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +N#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ +N +N#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +N#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ +N +N/* SCB Configuration Control Register Definitions */ +N#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +N#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ +N +N#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +N#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ +N +N/* SCB System Handler Control and State Register Definitions */ +N#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +N#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ +N +N/*@} end of group CMSIS_SCB */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_SysTick System Tick Timer (SysTick) +N \brief Type definitions for the System Timer Registers. +N @{ +N */ +N +N/** +N \brief Structure type to access the System Timer (SysTick). +N */ +Ntypedef struct +N{ +N __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ +X volatile uint32_t CTRL; +N __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ +X volatile uint32_t LOAD; +N __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ +X volatile uint32_t VAL; +N __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +X volatile const uint32_t CALIB; +N} SysTick_Type; +N +N/* SysTick Control / Status Register Definitions */ +N#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +N#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ +N +N#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +N#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ +N +N#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +N#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ +N +N#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +N#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ +N +N/* SysTick Reload Register Definitions */ +N#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +N#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ +N +N/* SysTick Current Register Definitions */ +N#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +N#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ +N +N/* SysTick Calibration Register Definitions */ +N#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +N#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ +N +N#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +N#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ +N +N#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +N#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ +N +N/*@} end of group CMSIS_SysTick */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) +N \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. +N Therefore they are not covered by the Cortex-M0 header file. +N @{ +N */ +N/*@} end of group CMSIS_CoreDebug */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_bitfield Core register bit field macros +N \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). +N @{ +N */ +N +N/** +N \brief Mask and shift a bit field value for use in a register bit range. +N \param[in] field Name of the register bit field. +N \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted value. +N*/ +N#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) +N +N/** +N \brief Mask and shift a register value to extract a bit filed value. +N \param[in] field Name of the register bit field. +N \param[in] value Value of register. This parameter is interpreted as an uint32_t type. +N \return Masked and shifted bit field value. +N*/ +N#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) +N +N/*@} end of group CMSIS_core_bitfield */ +N +N +N/** +N \ingroup CMSIS_core_register +N \defgroup CMSIS_core_base Core Definitions +N \brief Definitions for base addresses, unions, and structures. +N @{ +N */ +N +N/* Memory mapping of Core Hardware */ +N#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +N#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +N#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +N#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ +N +N#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +N#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +N#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +N +N +N/*@} */ +N +N +N +N/******************************************************************************* +N * Hardware Abstraction Layer +N Core Function Interface contains: +N - Core NVIC Functions +N - Core SysTick Functions +N - Core Register Access Functions +N ******************************************************************************/ +N/** +N \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +N*/ +N +N +N +N/* ########################## NVIC functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_NVICFunctions NVIC Functions +N \brief Functions that manage interrupts and exceptions via the NVIC. +N @{ +N */ +N +N#ifdef CMSIS_NVIC_VIRTUAL +S #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE +S #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" +S #endif +S #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping +N #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping +N #define NVIC_EnableIRQ __NVIC_EnableIRQ +N #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ +N #define NVIC_DisableIRQ __NVIC_DisableIRQ +N #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ +N #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ +N #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +N/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ +N #define NVIC_SetPriority __NVIC_SetPriority +N #define NVIC_GetPriority __NVIC_GetPriority +N #define NVIC_SystemReset __NVIC_SystemReset +N#endif /* CMSIS_NVIC_VIRTUAL */ +N +N#ifdef CMSIS_VECTAB_VIRTUAL +S #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE +S #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" +S #endif +S #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +N#else +N #define NVIC_SetVector __NVIC_SetVector +N #define NVIC_GetVector __NVIC_GetVector +N#endif /* (CMSIS_VECTAB_VIRTUAL) */ +N +N#define NVIC_USER_IRQ_OFFSET 16 +N +N +N/* The following EXC_RETURN values are saved the LR on exception entry */ +N#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +N#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +N +N +N/* Interrupt Priorities are WORD accessible only under Armv6-M */ +N/* The following MACROS handle generation of the register offset and byte masks */ +N#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +N#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +N#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) +N +N#define __NVIC_SetPriorityGrouping(X) (void)(X) +N#define __NVIC_GetPriorityGrouping() (0U) +N +N/** +N \brief Enable Interrupt +N \details Enables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_EnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Get Interrupt Enable status +N \details Returns a device specific interrupt enable status from the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt is not enabled. +N \return 1 Interrupt is enabled. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Disable Interrupt +N \details Disables a device specific interrupt in the NVIC interrupt controller. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_DisableIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N __DSB(); +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N __ISB(); +X do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U); +N } +N} +N +N +N/** +N \brief Get Pending Interrupt +N \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. +N \param [in] IRQn Device specific interrupt number. +N \return 0 Interrupt status is not pending. +N \return 1 Interrupt status is pending. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); +N } +N else +N { +N return(0U); +N } +N} +N +N +N/** +N \brief Set Pending Interrupt +N \details Sets the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Clear Pending Interrupt +N \details Clears the pending bit of a device specific interrupt in the NVIC pending register. +N \param [in] IRQn Device specific interrupt number. +N \note IRQn must not be negative. +N */ +N__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +Xstatic __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +N } +N} +N +N +N/** +N \brief Set Interrupt Priority +N \details Sets the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \param [in] priority Priority to set. +N \note The priority cannot be set for every processor exception. +N */ +N__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +Xstatic __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +N{ +N if ((int32_t)(IRQn) >= 0) +N { +N NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N else +N { +N SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) | +N (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); +X (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))); +N } +N} +N +N +N/** +N \brief Get Interrupt Priority +N \details Reads the priority of a device specific interrupt or a processor exception. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Interrupt Priority. +N Value is aligned automatically to the implemented priority bits of the microcontroller. +N */ +N__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +N{ +N +N if ((int32_t)(IRQn) >= 0) +N { +N return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N else +N { +N return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); +X return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U))); +N } +N} +N +N +N/** +N \brief Encode Priority +N \details Encodes the priority for an interrupt with the given priority group, +N preemptive priority value, and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +N \param [in] PriorityGroup Used priority group. +N \param [in] PreemptPriority Preemptive priority value (starting from 0). +N \param [in] SubPriority Subpriority value (starting from 0). +N \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). +N */ +N__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +Xstatic __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N return ( +N ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | +N ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) +N ); +N} +N +N +N/** +N \brief Decode Priority +N \details Decodes an interrupt priority value with a given priority group to +N preemptive priority value and subpriority value. +N In case of a conflict between priority grouping and available +N priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. +N \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). +N \param [in] PriorityGroup Used priority group. +N \param [out] pPreemptPriority Preemptive priority value (starting from 0). +N \param [out] pSubPriority Subpriority value (starting from 0). +N */ +N__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +Xstatic __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +N{ +N uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ +N uint32_t PreemptPriorityBits; +N uint32_t SubPriorityBits; +N +N PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); +X PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp); +N SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); +X SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U)); +N +N *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); +N *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +N} +N +N +N +N/** +N \brief Set Interrupt Vector +N \details Sets an interrupt vector in SRAM based interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N Address 0 must be mapped to SRAM. +N \param [in] IRQn Interrupt number +N \param [in] vector Address of interrupt handler function +N */ +N__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +Xstatic __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +N{ +N uint32_t vectors = 0x0U; +N (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; +X (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector; +N} +N +N +N/** +N \brief Get Interrupt Vector +N \details Reads an interrupt vector from interrupt vector table. +N The interrupt number can be positive to specify a device specific interrupt, +N or negative to specify a processor exception. +N \param [in] IRQn Interrupt number. +N \return Address of interrupt handler function +N */ +N__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +Xstatic __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn) +N{ +N uint32_t vectors = 0x0U; +N return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)); +X return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4)); +N} +N +N +N/** +N \brief System Reset +N \details Initiates a system reset request to reset the MCU. +N */ +N__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +X__declspec(noreturn) static __inline void __NVIC_SystemReset(void) +N{ +N __DSB(); /* Ensure all outstanding memory accesses included +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N buffered write are completed before reset */ +N SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | +X ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR = ((0x5FAUL << 16U) | +N SCB_AIRCR_SYSRESETREQ_Msk); +X (1UL << 2U)); +N __DSB(); /* Ensure completion of memory access */ +X do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U); +N +N for(;;) /* wait until reset */ +N { +N __NOP(); +X __nop(); +N } +N} +N +N/*@} end of CMSIS_Core_NVICFunctions */ +N +N +N/* ########################## FPU functions #################################### */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_FpuFunctions FPU Functions +N \brief Function that provides FPU type. +N @{ +N */ +N +N/** +N \brief get FPU type +N \details returns the FPU type +N \returns +N - \b 0: No FPU +N - \b 1: Single precision FPU +N - \b 2: Double + Single precision FPU +N */ +N__STATIC_INLINE uint32_t SCB_GetFPUType(void) +Xstatic __inline uint32_t SCB_GetFPUType(void) +N{ +N return 0U; /* No FPU */ +N} +N +N +N/*@} end of CMSIS_Core_FpuFunctions */ +N +N +N +N/* ################################## SysTick function ############################################ */ +N/** +N \ingroup CMSIS_Core_FunctionInterface +N \defgroup CMSIS_Core_SysTickFunctions SysTick Functions +N \brief Functions that configure the System. +N @{ +N */ +N +N#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) +X#if 1L && (0U == 0U) +N +N/** +N \brief System Tick Configuration +N \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. +N Counter is in free running mode to generate periodic interrupts. +N \param [in] ticks Number of ticks between two interrupts. +N \return 0 Function succeeded. +N \return 1 Function failed. +N \note When the variable __Vendor_SysTickConfig is set to 1, then the +N function SysTick_Config is not included. In this case, the file device.h +N must contain a vendor-specific implementation of this function. +N */ +N__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +Xstatic __inline uint32_t SysTick_Config(uint32_t ticks) +N{ +N if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) +X if ((ticks - 1UL) > (0xFFFFFFUL )) +N { +N return (1UL); /* Reload value impossible */ +N } +N +N SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD = (uint32_t)(ticks - 1UL); +N NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ +X __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL); +N SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL = 0UL; +N SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | +X ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL = (1UL << 2U) | +N SysTick_CTRL_TICKINT_Msk | +X (1UL << 1U) | +N SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ +X (1UL ); +N return (0UL); /* Function successful */ +N} +N +N#endif +N +N/*@} end of CMSIS_Core_SysTickFunctions */ +N +N +N +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __CORE_CM0_H_DEPENDANT */ +N +N#endif /* __CMSIS_GENERIC */ +L 122 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N#include "system_ARMCM0.h" /* System Header */ +L 1 "C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h" 1 +N/**************************************************************************//** +N * @file system_ARMCM0.h +N * @brief CMSIS Device System Header File for +N * ARMCM0 Device +N * @version V5.3.1 +N * @date 09. July 2018 +N ******************************************************************************/ +N/* +N * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +N * +N * SPDX-License-Identifier: Apache-2.0 +N * +N * Licensed under the Apache License, Version 2.0 (the License); you may +N * not use this file except in compliance with the License. +N * You may obtain a copy of the License at +N * +N * www.apache.org/licenses/LICENSE-2.0 +N * +N * Unless required by applicable law or agreed to in writing, software +N * distributed under the License is distributed on an AS IS BASIS, WITHOUT +N * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +N * See the License for the specific language governing permissions and +N * limitations under the License. +N */ +N +N#ifndef SYSTEM_ARMCM0_H +N#define SYSTEM_ARMCM0_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +Nextern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ +N +N +N/** +N \brief Setup the microcontroller system. +N +N Initialize the System and update the SystemCoreClock variable. +N */ +Nextern void SystemInit (void); +N +N +N/** +N \brief Update SystemCoreClock variable. +N +N Updates the SystemCoreClock with current core Clock retrieved from cpu registers. +N */ +Nextern void SystemCoreClockUpdate (void); +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* SYSTEM_ARMCM0_H */ +L 123 "..\..\src\sdk\include\M0\ArmCM0.h" 2 +N +N/* -------- End of section using anonymous unions and disabling warnings -------- */ +N#if defined (__CC_ARM) +X#if 1L +N#pragma pop +N#elif defined (__ICCARM__) +X#elif 0L +S/* leave anonymous unions enabled */ +S#elif (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +S#pragma clang diagnostic pop +S#elif defined (__GNUC__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TMS470__) +S/* anonymous unions are enabled by default */ +S#elif defined (__TASKING__) +S#pragma warning restore +S#elif defined (__CSMC__) +S/* anonymous unions are enabled by default */ +S#else +S#warning Not supported compiler type +N#endif +N +N/* In HS mode and when the DMA is used, all variables and data structures dealing +N with the DMA during the transaction process should be 4-bytes aligned */ +N#define DMA_WORD_ALIGN_EN +N#ifdef DMA_WORD_ALIGN_EN +N#if defined (__GNUC__) /* GNU Compiler */ +X#if 1L +N#define __ALIGN_END __attribute__ ((aligned (4))) +N#define __ALIGN_BEGIN +N#else +S#define __ALIGN_END +S#if defined (__CC_ARM) /* ARM Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#elif defined (__ICCARM__) /* IAR Compiler */ +S#define __ALIGN_BEGIN +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __ALIGN_BEGIN __align(4) +S#endif /* __CC_ARM */ +N#endif /* __GNUC__ */ +N#else +S +S#define __ALIGN_BEGIN +S#define __ALIGN_END +S +S#define __ALIGN_END_1 __attribute__ ((aligned (1))) +N#endif /* DMA_WORD_ALIGN_EN */ +N +N/* __packed keyword used to decrease the data type alignment to 1-byte */ +N#if defined (__CC_ARM) /* ARM Compiler */ +X#if 1L +N#define __packed __packed +N#elif defined (__ICCARM__) /* IAR Compiler */ +X#elif 0L +S#define __packed __packed +S#elif defined ( __GNUC__ ) /* GNU Compiler */ +S#define __packed __attribute__ ((__packed__)) +S#define __weak __attribute__((weak)) +S#elif defined (__TASKING__) /* TASKING Compiler */ +S#define __packed __unaligned +N#endif /* __CC_ARM */ +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* ARMCM0_H */ +L 11 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "tau_device_datatype.h" +L 1 "..\..\src\common\tau_device_datatype.h" 1 +N/******************************************************************************* +N * +N * +N * File: tau_device_datatype.h +N * Description device datatype +N * Version V0.1 +N * Date 2020-12-04 +N * Author kevin +N *******************************************************************************/ +N +N#ifndef _TAU_DEVICE_DATATYPE_H_ +N#define _TAU_DEVICE_DATATYPE_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N +N#include "stdint.h" +N#include "tau_common.h" +L 1 "..\..\src\common\tau_common.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_common.h +N* Description 通用数据类型相关定义头文件 +N* Version V0.1 +N* Date 2020-09-07 +N* Author lzy +N *******************************************************************************/ +N +N#ifndef __TAU_COMMON_H +N#define __TAU_COMMON_H +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "stdint.h" +N#include "math.h" +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h" 1 +N/* +N * math.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.5 +N * Copyright (C) Codemist Ltd., 1988 +N * Copyright 1991-1998,2004-2006,2014 ARM Limited. All rights reserved +N */ +N +N/* +N * RCS $Revision$ Codemist 0.03 +N * Checkin $Date$ +N * Revising $Author: statham $ +N */ +N +N/* +N * Parts of this file are based upon fdlibm: +N * +N * ==================================================== +N * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. +N * +N * Developed at SunSoft, a Sun Microsystems, Inc. business. +N * Permission to use, copy, modify, and distribute this +N * software is freely granted, provided that this notice +N * is preserved. +N * ==================================================== +N */ +N +N#ifndef __math_h +N#define __math_h +N#define __ARMCLIB_VERSION 5060037 +N +N#if defined(__clang__) || (defined(__ARMCC_VERSION) && !defined(__STRICT_ANSI__)) +X#if 0L || (1L && !0L) +N /* armclang and non-strict armcc allow 'long long' in system headers */ +N #define __LONGLONG long long +N#else +S /* strict armcc has '__int64' */ +S #define __LONGLONG __int64 +N#endif +N +N/* +N * Some of these declarations are new in C99. To access them in C++ +N * you can use -D__USE_C99_MATH (or -D__USE_C99_ALL). +N */ +N#ifndef __USE_C99_MATH +N #if defined(__USE_C99_ALL) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X #if 0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N #define __USE_C99_MATH 1 +N #endif +N#endif +N +N#define _ARMABI __declspec(__nothrow) +N#ifdef __TARGET_ARCH_AARCH64 +S# define _ARMABI_SOFTFP __declspec(__nothrow) +N#else +N# define _ARMABI_SOFTFP __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) +N# define __HAVE_LONGDOUBLE 1 +N#endif +N#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const)) +N#ifdef __FP_FENV_EXCEPTIONS +S# define _ARMABI_FPEXCEPT _ARMABI +N#else +N# define _ARMABI_FPEXCEPT _ARMABI __attribute__((const)) +N#endif +N +N#ifdef __cplusplus +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF inline +N#elif defined __GNUC__ || defined _USE_STATIC_INLINE +X#elif 1L || 0L +N#define _ARMABI_INLINE static __inline +N#define _ARMABI_INLINE_DEF static __inline +N#elif (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) +X#elif (1L && 199901L <= 199901L) +S#define _ARMABI_INLINE inline +S#define _ARMABI_INLINE_DEF static inline +S#else +S#define _ARMABI_INLINE __inline +S#define _ARMABI_INLINE_DEF __inline +N#endif +N +N#ifdef __TARGET_ARCH_AARCH64 +S# define _SOFTFP +N#else +N# define _SOFTFP __attribute__((__pcs__("aapcs"))) +N#endif +N +N /* +N * If the compiler supports signalling nans as per N965 then it +N * will define __SUPPORT_SNAN__, in which case a user may define +N * _WANT_SNAN in order to obtain the nans function, as well as the +N * FP_NANS and FP_NANQ classification macros. +N */ +N#if defined(__SUPPORT_SNAN__) && defined(_WANT_SNAN) +X#if 0L && 0L +S#pragma import(__use_snan) +N#endif +N +N/* +N * Macros for our inline functions down below. +N * unsigned& __FLT(float x) - returns the bit pattern of x +N * unsigned& __HI(double x) - returns the bit pattern of the high part of x +N * (high part has exponent & sign bit in it) +N * unsigned& __LO(double x) - returns the bit pattern of the low part of x +N * +N * We can assign to __FLT, __HI, and __LO and the appropriate bits get set in +N * the floating point variable used. +N * +N * __HI & __LO are affected by the endianness and the target FPU. +N */ +N#define __FLT(x) (*(unsigned *)&(x)) +N#if defined(__ARM_BIG_ENDIAN) || defined(__BIG_ENDIAN) +X#if 0L || 0L +S# define __LO(x) (*(1 + (unsigned *)&(x))) +S# define __HI(x) (*(unsigned *)&(x)) +N#else /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N# define __HI(x) (*(1 + (unsigned *)&(x))) +N# define __LO(x) (*(unsigned *)&(x)) +N#endif /* !defined(__ARM_BIG_ENDIAN) && !defined(__BIG_ENDIAN) */ +N +N# ifndef __MATH_DECLS +N# define __MATH_DECLS +N +N +N/* +N * A set of functions that we don't actually want to put in the standard +N * namespace ever. These are all called by the C99 macros. As they're +N * not specified by any standard they can't belong in ::std::. The +N * macro #defines are below amongst the standard function declarations. +N * We only include these if we actually need them later on +N */ +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N# ifdef __cplusplus +S extern "C" { +N# endif /* __cplusplus */ +N +Nextern _SOFTFP unsigned __ARM_dcmp4(double /*x*/, double /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double , double ); +Nextern _SOFTFP unsigned __ARM_fcmp4(float /*x*/, float /*y*/); +Xextern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float , float ); +N /* +N * Compare x and y and return the CPSR in r0. These means we can test for +N * result types with bit pattern matching. +N * +N * These are a copy of the declarations in rt_fp.h keep in sync. +N */ +N +Nextern _ARMABI_SOFTFP int __ARM_fpclassifyf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float ); +Nextern _ARMABI_SOFTFP int __ARM_fpclassify(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double ); +N /* Classify x into NaN, infinite, normal, subnormal, zero */ +N /* Used by fpclassify macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinitef(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x) +N{ +N return ((__FLT(__x) >> 23) & 0xff) != 0xff; +X return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isfinite(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x) +N{ +N return ((__HI(__x) >> 20) & 0x7ff) != 0x7ff; +X return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff; +N} +N /* Return 1 if __x is finite, 0 otherwise */ +N /* Used by isfinite macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinff(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x) +N{ +N return (__FLT(__x) << 1) == 0xff000000; +X return ((*(unsigned *)&(__x)) << 1) == 0xff000000; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isinf(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x) +N{ +N return ((__HI(__x) << 1) == 0xffe00000) && (__LO(__x) == 0); +X return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0); +N} +N /* Return 1 if __x is infinite, 0 otherwise */ +N /* Used by isinf macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreaterf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y) +N{ +N unsigned __f = __ARM_fcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_islessgreater(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y) +N{ +N unsigned __f = __ARM_dcmp4(__x, __y) >> 28; +N return (__f == 8) || (__f == 2); /* Just N set or Just Z set */ +N} +N /* +N * Compare __x and __y and return 1 if __x < __y or __x > __y, 0 otherwise +N * Used by islessgreater macro +N */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnanf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x) +N{ +N return (0x7f800000 - (__FLT(__x) & 0x7fffffff)) >> 31; +X return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnan(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x) +N{ +N unsigned __xf = __HI(__x) | ((__LO(__x) == 0) ? 0 : 1); +X unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1); +N return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31; +N} +N /* Return 1 if __x is a NaN, 0 otherwise */ +N /* Used by isnan macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormalf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x) +N{ +N unsigned __xe = (__FLT(__x) >> 23) & 0xff; +X unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff; +N return (__xe != 0xff) && (__xe != 0); +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_isnormal(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x) +N{ +N unsigned __xe = (__HI(__x) >> 20) & 0x7ff; +X unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff; +N return (__xe != 0x7ff) && (__xe != 0); +N} +N /* Return 1 if __x is a normalised number, 0 otherwise */ +N /* used by isnormal macro */ +N +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbitf(float __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x) +N{ +N return __FLT(__x) >> 31; +X return (*(unsigned *)&(__x)) >> 31; +N} +N_ARMABI_INLINE_DEF _ARMABI_SOFTFP int __ARM_signbit(double __x) +Xstatic __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x) +N{ +N return __HI(__x) >> 31; +X return (*(1 + (unsigned *)&(__x))) >> 31; +N} +N /* Return signbit of __x */ +N /* Used by signbit macro */ +N +N# ifdef __cplusplus +S } /* extern "C" */ +N# endif /* __cplusplus */ +N#endif /* Strict ANSI */ +N +N# undef __CLIBNS +N +N# ifdef __cplusplus +S namespace std { +S# define __CLIBNS ::std:: +S extern "C" { +N# else +N# define __CLIBNS +N# endif /* __cplusplus */ +N +N +N#ifndef __has_builtin +N #define __has_builtin(x) 0 +N#endif +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N /* C99 additions */ +N typedef float float_t; +N typedef double double_t; +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VALF __builtin_inff() +S# define HUGE_VALL __builtin_infl() +S# define INFINITY __builtin_inff() +S# define NAN __builtin_nanf("") +N# else +N# define HUGE_VALF ((float)__INFINITY__) +N# define HUGE_VALL ((long double)__INFINITY__) +N# define INFINITY ((float)__INFINITY__) +N# define NAN (__ESCAPE__(0f_7FC00000)) +N#endif +N +N# define MATH_ERRNO 1 +N# define MATH_ERREXCEPT 2 +Nextern const int math_errhandling; +N#endif +N#if __has_builtin(__builtin_inf) +X#if 0 +S# define HUGE_VAL __builtin_inf() +N#else +N# define HUGE_VAL ((double)__INFINITY__) +N#endif +N +Nextern _ARMABI double acos(double /*x*/); +Xextern __declspec(__nothrow) double acos(double ); +N /* computes the principal value of the arc cosine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* Returns: the arc cosine in the range 0 to Pi. */ +Nextern _ARMABI double asin(double /*x*/); +Xextern __declspec(__nothrow) double asin(double ); +N /* computes the principal value of the arc sine of x */ +N /* a domain error occurs for arguments not in the range -1 to 1 */ +N /* and -HUGE_VAL is returned. */ +N /* Returns: the arc sine in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI_PURE double atan(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double atan(double ); +N /* computes the principal value of the arc tangent of x */ +N /* Returns: the arc tangent in the range -Pi/2 to Pi/2. */ +N +Nextern _ARMABI double atan2(double /*y*/, double /*x*/); +Xextern __declspec(__nothrow) double atan2(double , double ); +N /* computes the principal value of the arc tangent of y/x, using the */ +N /* signs of both arguments to determine the quadrant of the return value */ +N /* a domain error occurs if both args are zero, and -HUGE_VAL returned. */ +N /* Returns: the arc tangent of y/x, in the range -Pi to Pi. */ +N +Nextern _ARMABI double cos(double /*x*/); +Xextern __declspec(__nothrow) double cos(double ); +N /* computes the cosine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the cosine value. */ +Nextern _ARMABI double sin(double /*x*/); +Xextern __declspec(__nothrow) double sin(double ); +N /* computes the sine of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance. */ +N /* a domain error occurs for infinite input (C 7.12.1 footnote 196). */ +N /* Returns: the sine value. */ +N +Nextern void __use_accurate_range_reduction(void); +N /* reference this to select the larger, slower, but more accurate */ +N /* range reduction in sin, cos and tan */ +N +Nextern _ARMABI double tan(double /*x*/); +Xextern __declspec(__nothrow) double tan(double ); +N /* computes the tangent of x (measured in radians). A large magnitude */ +N /* argument may yield a result with little or no significance */ +N /* Returns: the tangent value. */ +N /* if range error; returns HUGE_VAL. */ +N +Nextern _ARMABI double cosh(double /*x*/); +Xextern __declspec(__nothrow) double cosh(double ); +N /* computes the hyperbolic cosine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic cosine value. */ +N /* if range error; returns HUGE_VAL. */ +Nextern _ARMABI double sinh(double /*x*/); +Xextern __declspec(__nothrow) double sinh(double ); +N /* computes the hyperbolic sine of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the hyperbolic sine value. */ +N /* if range error; returns -HUGE_VAL or HUGE_VAL depending */ +N /* on the sign of the argument */ +N +Nextern _ARMABI_PURE double tanh(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double tanh(double ); +N /* computes the hyperbolic tangent of x. */ +N /* Returns: the hyperbolic tangent value. */ +N +Nextern _ARMABI double exp(double /*x*/); +Xextern __declspec(__nothrow) double exp(double ); +N /* computes the exponential function of x. A range error occurs if the */ +N /* magnitude of x is too large. */ +N /* Returns: the exponential value. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +N +Nextern _ARMABI double frexp(double /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double frexp(double , int * ) __attribute__((__nonnull__(2))); +N /* breaks a floating-point number into a normalised fraction and an */ +N /* integral power of 2. It stores the integer in the int object pointed */ +N /* to by exp. */ +N /* Returns: the value x, such that x is a double with magnitude in the */ +N /* interval 0.5 to 1.0 or zero, and value equals x times 2 raised to the */ +N /* power *exp. If value is zero, both parts of the result are zero. */ +N +Nextern _ARMABI double ldexp(double /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) double ldexp(double , int ); +N /* multiplies a floating-point number by an integral power of 2. */ +N /* A range error may occur. */ +N /* Returns: the value of x times 2 raised to the power of exp. */ +N /* if range error; HUGE_VAL is returned. */ +Nextern _ARMABI double log(double /*x*/); +Xextern __declspec(__nothrow) double log(double ); +N /* computes the natural logarithm of x. A domain error occurs if the */ +N /* argument is negative, and -HUGE_VAL is returned. A range error occurs */ +N /* if the argument is zero. */ +N /* Returns: the natural logarithm. */ +N /* if range error; -HUGE_VAL is returned. */ +Nextern _ARMABI double log10(double /*x*/); +Xextern __declspec(__nothrow) double log10(double ); +N /* computes the base-ten logarithm of x. A domain error occurs if the */ +N /* argument is negative. A range error occurs if the argument is zero. */ +N /* Returns: the base-ten logarithm. */ +Nextern _ARMABI double modf(double /*value*/, double * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) double modf(double , double * ) __attribute__((__nonnull__(2))); +N /* breaks the argument value into integral and fraction parts, each of */ +N /* which has the same sign as the argument. It stores the integral part */ +N /* as a double in the object pointed to by iptr. */ +N /* Returns: the signed fractional part of value. */ +N +Nextern _ARMABI double pow(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double pow(double , double ); +N /* computes x raised to the power of y. A domain error occurs if x is */ +N /* zero and y is less than or equal to zero, or if x is negative and y */ +N /* is not an integer, and -HUGE_VAL returned. A range error may occur. */ +N /* Returns: the value of x raised to the power of y. */ +N /* if underflow range error; 0 is returned. */ +N /* if overflow range error; HUGE_VAL is returned. */ +Nextern _ARMABI double sqrt(double /*x*/); +Xextern __declspec(__nothrow) double sqrt(double ); +N /* computes the non-negative square root of x. A domain error occurs */ +N /* if the argument is negative, and -HUGE_VAL returned. */ +N /* Returns: the value of the square root. */ +N +N#if defined(__TARGET_FPU_VFP_DOUBLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE double _sqrt(double __x) { return __sqrt(__x); } +N#else +N _ARMABI_INLINE double _sqrt(double __x) { return sqrt(__x); } +X static __inline double _sqrt(double __x) { return sqrt(__x); } +N#endif +N#if defined(__TARGET_FPU_VFP_SINGLE) && !defined(__TARGET_FPU_SOFTVFP) +X#if 0L && !1L +S _ARMABI_INLINE float _sqrtf(float __x) { return __sqrtf(__x); } +N#else +N _ARMABI_INLINE float _sqrtf(float __x) { return (float)sqrt(__x); } +X static __inline float _sqrtf(float __x) { return (float)sqrt(__x); } +N#endif +N /* With VFP, _sqrt and _sqrtf should expand inline as the native VFP square root +N * instructions. They will not behave like the C sqrt() function, because +N * they will report unusual values as IEEE exceptions (in fpmodes which +N * support IEEE exceptions) rather than in errno. These function names +N * are not specified in any standard. */ +N +Nextern _ARMABI_PURE double ceil(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double ceil(double ); +N /* computes the smallest integer not less than x. */ +N /* Returns: the smallest integer not less than x, expressed as a double. */ +Nextern _ARMABI_PURE double fabs(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fabs(double ); +N /* computes the absolute value of the floating-point number x. */ +N /* Returns: the absolute value of x. */ +N +Nextern _ARMABI_PURE double floor(double /*d*/); +Xextern __declspec(__nothrow) __attribute__((const)) double floor(double ); +N /* computes the largest integer not greater than x. */ +N /* Returns: the largest integer not greater than x, expressed as a double */ +N +Nextern _ARMABI double fmod(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fmod(double , double ); +N /* computes the floating-point remainder of x/y. */ +N /* Returns: the value x - i * y, for some integer i such that, if y is */ +N /* nonzero, the result has the same sign as x and magnitude */ +N /* less than the magnitude of y. If y is zero, a domain error */ +N /* occurs and -HUGE_VAL is returned. */ +N +N /* Additional Mathlib functions not defined by the ANSI standard. +N * Not guaranteed, and not necessarily very well tested. +N * C99 requires the user to include to use these functions +N * declaring them "by hand" is not sufficient +N * +N * The above statement is not completely true now. Some of the above +N * C99 functionality has been added as per the Standard, and (where +N * necessary) old Mathlib functionality withdrawn/changed. Before +N * including this header #define __ENABLE_MATHLIB_LEGACY if you want to +N * re-enable the legacy functionality. +N */ +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +Nextern _ARMABI double acosh(double /*x*/); +Xextern __declspec(__nothrow) double acosh(double ); +N /* +N * Inverse cosh. EDOM if argument < 1.0 +N */ +Nextern _ARMABI double asinh(double /*x*/); +Xextern __declspec(__nothrow) double asinh(double ); +N /* +N * Inverse sinh. +N */ +Nextern _ARMABI double atanh(double /*x*/); +Xextern __declspec(__nothrow) double atanh(double ); +N /* +N * Inverse tanh. EDOM if |argument| > 1.0 +N */ +Nextern _ARMABI double cbrt(double /*x*/); +Xextern __declspec(__nothrow) double cbrt(double ); +N /* +N * Cube root. +N */ +N_ARMABI_INLINE _ARMABI_PURE double copysign(double __x, double __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __HI(__x) = (__HI(__x) & 0x7fffffff) | (__HI(__y) & 0x80000000); +X (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000); +N return __x; +N} +N_ARMABI_INLINE _ARMABI_PURE float copysignf(float __x, float __y) +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y) +N /* +N * Returns x with sign bit replaced by sign of y. +N */ +N{ +N __FLT(__x) = (__FLT(__x) & 0x7fffffff) | (__FLT(__y) & 0x80000000); +X (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000); +N return __x; +N} +Nextern _ARMABI double erf(double /*x*/); +Xextern __declspec(__nothrow) double erf(double ); +N /* +N * Error function. (2/sqrt(pi)) * integral from 0 to x of exp(-t*t) dt. +N */ +Nextern _ARMABI double erfc(double /*x*/); +Xextern __declspec(__nothrow) double erfc(double ); +N /* +N * 1-erf(x). (More accurate than just coding 1-erf(x), for large x.) +N */ +Nextern _ARMABI double expm1(double /*x*/); +Xextern __declspec(__nothrow) double expm1(double ); +N /* +N * exp(x)-1. (More accurate than just coding exp(x)-1, for small x.) +N */ +N#define fpclassify(x) \ +N ((sizeof(x) == sizeof(float)) ? \ +N __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +X#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __ARM_fpclassifyf(x) : __ARM_fpclassify(x)) +N /* +N * Classify a floating point number into one of the following values: +N */ +N#define FP_ZERO (0) +N#define FP_SUBNORMAL (4) +N#define FP_NORMAL (5) +N#define FP_INFINITE (3) +N#define FP_NAN (7) +N +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +S/* +S * Note that we'll never classify a number as FP_NAN, as all NaNs will +S * be either FP_NANQ or FP_NANS +S */ +S# define FP_NANQ (8) +S# define FP_NANS (9) +N#endif +N +N +Nextern _ARMABI double hypot(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double hypot(double , double ); +N /* +N * sqrt(x*x+y*y), ie the length of the vector (x,y) or the +N * hypotenuse of a right triangle whose other two sides are x +N * and y. Won't overflow unless the _answer_ is too big, even +N * if the intermediate x*x+y*y is too big. +N */ +Nextern _ARMABI int ilogb(double /*x*/); +Xextern __declspec(__nothrow) int ilogb(double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +Nextern _ARMABI int ilogbf(float /*x*/); +Xextern __declspec(__nothrow) int ilogbf(float ); +N /* +N * Like ilogb but takes a float +N */ +Nextern _ARMABI int ilogbl(long double /*x*/); +Xextern __declspec(__nothrow) int ilogbl(long double ); +N /* +N * Exponent of x (returns 0 for 1.0, 1 for 2.0, -1 for 0.5, etc.) +N */ +N#define FP_ILOGB0 (-0x7fffffff) /* ilogb(0) == -INT_MAX */ +N#define FP_ILOGBNAN ( 0x80000000) /* ilogb(NAN) == INT_MIN */ +N +N#define isfinite(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isfinitef(x) \ +N : __ARM_isfinite(x)) +X#define isfinite(x) ((sizeof(x) == sizeof(float)) ? __ARM_isfinitef(x) : __ARM_isfinite(x)) +N /* +N * Returns true if x is a finite number, size independent. +N */ +N +N#define isgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +X#define isgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x20000000)) +N /* +N * Returns true if x > y, throws no exceptions except on Signaling NaNs +N * +N * We want the C not set but the Z bit clear, V must be clear +N */ +N +N#define isgreaterequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +X#define isgreaterequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x30000000) == 0x20000000) : ((__ARM_dcmp4((x), (y)) & 0x30000000) == 0x20000000)) +N /* +N * Returns true if x >= y, throws no exceptions except on Signaling NaNs +N * +N * We just need to see if the C bit is set or not and ensure V clear +N */ +N +N#define isinf(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isinff(x) \ +N : __ARM_isinf(x)) +X#define isinf(x) ((sizeof(x) == sizeof(float)) ? __ARM_isinff(x) : __ARM_isinf(x)) +N /* +N * Returns true if x is an infinity, size independent. +N */ +N +N#define isless(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +X#define isless(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xf0000000) == 0x80000000) : ((__ARM_dcmp4((x), (y)) & 0xf0000000) == 0x80000000)) +N /* +N * Returns true if x < y, throws no exceptions except on Signaling NaNs +N * +N * We're less than if N is set, V clear +N */ +N +N#define islessequal(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) \ +N : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +X#define islessequal(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0xc0000000) != 0) : ((__ARM_dcmp4((x), (y)) & 0xc0000000) != 0)) +N /* +N * Returns true if x <= y, throws no exceptions except on Signaling NaNs +N * +N * We're less than or equal if one of N or Z is set, V clear +N */ +N +N#define islessgreater(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? __ARM_islessgreaterf((x), (y)) \ +N : __ARM_islessgreater((x), (y))) +X#define islessgreater(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? __ARM_islessgreaterf((x), (y)) : __ARM_islessgreater((x), (y))) +N /* +N * Returns true if x <> y, throws no exceptions except on Signaling NaNs +N * Unfortunately this test is too complicated to do in a macro without +N * evaluating x & y twice. Shame really... +N */ +N +N#define isnan(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnanf(x) \ +N : __ARM_isnan(x)) +X#define isnan(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnanf(x) : __ARM_isnan(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isnormal(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_isnormalf(x) \ +N : __ARM_isnormal(x)) +X#define isnormal(x) ((sizeof(x) == sizeof(float)) ? __ARM_isnormalf(x) : __ARM_isnormal(x)) +N /* +N * Returns TRUE if x is a NaN. +N */ +N +N#define isunordered(x, y) \ +N (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) \ +N ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) \ +N : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +X#define isunordered(x, y) (((sizeof(x) == sizeof(float)) && (sizeof(y) == sizeof(float))) ? ((__ARM_fcmp4((x), (y)) & 0x10000000) == 0x10000000) : ((__ARM_dcmp4((x), (y)) & 0x10000000) == 0x10000000)) +N /* +N * Returns true if x ? y, throws no exceptions except on Signaling NaNs +N * Unordered occurs if and only if the V bit is set +N */ +N +Nextern _ARMABI double lgamma (double /*x*/); +Xextern __declspec(__nothrow) double lgamma (double ); +N /* +N * The log of the absolute value of the gamma function of x. The sign +N * of the gamma function of x is returned in the global `signgam'. +N */ +Nextern _ARMABI double log1p(double /*x*/); +Xextern __declspec(__nothrow) double log1p(double ); +N /* +N * log(1+x). (More accurate than just coding log(1+x), for small x.) +N */ +Nextern _ARMABI double logb(double /*x*/); +Xextern __declspec(__nothrow) double logb(double ); +N /* +N * Like ilogb but returns a double. +N */ +Nextern _ARMABI float logbf(float /*x*/); +Xextern __declspec(__nothrow) float logbf(float ); +N /* +N * Like logb but takes and returns float +N */ +Nextern _ARMABI long double logbl(long double /*x*/); +Xextern __declspec(__nothrow) long double logbl(long double ); +N /* +N * Like logb but takes and returns long double +N */ +Nextern _ARMABI double nextafter(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double nextafter(double , double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nextafterf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float nextafterf(float , float ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nextafterl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nextafterl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double nexttoward(double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) double nexttoward(double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI float nexttowardf(float /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) float nexttowardf(float , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI long double nexttowardl(long double /*x*/, long double /*y*/); +Xextern __declspec(__nothrow) long double nexttowardl(long double , long double ); +N /* +N * Returns the next representable number after x, in the +N * direction toward y. +N */ +Nextern _ARMABI double remainder(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double remainder(double , double ); +N /* +N * Returns the remainder of x by y, in the IEEE 754 sense. +N */ +Nextern _ARMABI_FPEXCEPT double rint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double rint(double ); +N /* +N * Rounds x to an integer, in the IEEE 754 sense. +N */ +Nextern _ARMABI double scalbln(double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) double scalbln(double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalblnf(float /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) float scalblnf(float , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalblnl(long double /*x*/, long int /*n*/); +Xextern __declspec(__nothrow) long double scalblnl(long double , long int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI double scalbn(double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) double scalbn(double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI float scalbnf(float /*x*/, int /*n*/); +Xextern __declspec(__nothrow) float scalbnf(float , int ); +N /* +N * Compute x times 2^n quickly. +N */ +Nextern _ARMABI long double scalbnl(long double /*x*/, int /*n*/); +Xextern __declspec(__nothrow) long double scalbnl(long double , int ); +N /* +N * Compute x times 2^n quickly. +N */ +N#define signbit(x) \ +N ((sizeof(x) == sizeof(float)) \ +N ? __ARM_signbitf(x) \ +N : __ARM_signbit(x)) +X#define signbit(x) ((sizeof(x) == sizeof(float)) ? __ARM_signbitf(x) : __ARM_signbit(x)) +N /* +N * Returns the signbit of x, size independent macro +N */ +N#endif +N +N/* C99 float versions of functions. math.h has always reserved these +N identifiers for this purpose (7.13.4). */ +Nextern _ARMABI_PURE float _fabsf(float); /* old ARM name */ +Xextern __declspec(__nothrow) __attribute__((const)) float _fabsf(float); +N_ARMABI_INLINE _ARMABI_PURE float fabsf(float __f) { return _fabsf(__f); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); } +Nextern _ARMABI float sinf(float /*x*/); +Xextern __declspec(__nothrow) float sinf(float ); +Nextern _ARMABI float cosf(float /*x*/); +Xextern __declspec(__nothrow) float cosf(float ); +Nextern _ARMABI float tanf(float /*x*/); +Xextern __declspec(__nothrow) float tanf(float ); +Nextern _ARMABI float acosf(float /*x*/); +Xextern __declspec(__nothrow) float acosf(float ); +Nextern _ARMABI float asinf(float /*x*/); +Xextern __declspec(__nothrow) float asinf(float ); +Nextern _ARMABI float atanf(float /*x*/); +Xextern __declspec(__nothrow) float atanf(float ); +Nextern _ARMABI float atan2f(float /*y*/, float /*x*/); +Xextern __declspec(__nothrow) float atan2f(float , float ); +Nextern _ARMABI float sinhf(float /*x*/); +Xextern __declspec(__nothrow) float sinhf(float ); +Nextern _ARMABI float coshf(float /*x*/); +Xextern __declspec(__nothrow) float coshf(float ); +Nextern _ARMABI float tanhf(float /*x*/); +Xextern __declspec(__nothrow) float tanhf(float ); +Nextern _ARMABI float expf(float /*x*/); +Xextern __declspec(__nothrow) float expf(float ); +Nextern _ARMABI float logf(float /*x*/); +Xextern __declspec(__nothrow) float logf(float ); +Nextern _ARMABI float log10f(float /*x*/); +Xextern __declspec(__nothrow) float log10f(float ); +Nextern _ARMABI float powf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float powf(float , float ); +Nextern _ARMABI float sqrtf(float /*x*/); +Xextern __declspec(__nothrow) float sqrtf(float ); +Nextern _ARMABI float ldexpf(float /*x*/, int /*exp*/); +Xextern __declspec(__nothrow) float ldexpf(float , int ); +Nextern _ARMABI float frexpf(float /*value*/, int * /*exp*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float frexpf(float , int * ) __attribute__((__nonnull__(2))); +Nextern _ARMABI_PURE float ceilf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float ceilf(float ); +Nextern _ARMABI_PURE float floorf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float floorf(float ); +Nextern _ARMABI float fmodf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fmodf(float , float ); +Nextern _ARMABI float modff(float /*value*/, float * /*iptr*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) float modff(float , float * ) __attribute__((__nonnull__(2))); +N +N/* C99 long double versions of functions. */ +N/* (also need to have 'using' declarations below) */ +N#define _ARMDEFLD1(f) \ +N _ARMABI long double f##l(long double /*x*/) +X#define _ARMDEFLD1(f) _ARMABI long double f##l(long double ) +N +N#define _ARMDEFLD1P(f, T) \ +N _ARMABI long double f##l(long double /*x*/, T /*p*/) +X#define _ARMDEFLD1P(f, T) _ARMABI long double f##l(long double , T ) +N +N#define _ARMDEFLD2(f) \ +N _ARMABI long double f##l(long double /*x*/, long double /*y*/) +X#define _ARMDEFLD2(f) _ARMABI long double f##l(long double , long double ) +N +N/* +N * Long double versions of C89 functions can be defined +N * unconditionally, because C89 reserved these names in "future +N * library directions". +N */ +N_ARMDEFLD1(acos); +X__declspec(__nothrow) long double acosl(long double ); +N_ARMDEFLD1(asin); +X__declspec(__nothrow) long double asinl(long double ); +N_ARMDEFLD1(atan); +X__declspec(__nothrow) long double atanl(long double ); +N_ARMDEFLD2(atan2); +X__declspec(__nothrow) long double atan2l(long double , long double ); +N_ARMDEFLD1(ceil); +X__declspec(__nothrow) long double ceill(long double ); +N_ARMDEFLD1(cos); +X__declspec(__nothrow) long double cosl(long double ); +N_ARMDEFLD1(cosh); +X__declspec(__nothrow) long double coshl(long double ); +N_ARMDEFLD1(exp); +X__declspec(__nothrow) long double expl(long double ); +N_ARMDEFLD1(fabs); +X__declspec(__nothrow) long double fabsl(long double ); +N_ARMDEFLD1(floor); +X__declspec(__nothrow) long double floorl(long double ); +N_ARMDEFLD2(fmod); +X__declspec(__nothrow) long double fmodl(long double , long double ); +N_ARMDEFLD1P(frexp, int*) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2))); +N_ARMDEFLD1P(ldexp, int); +X__declspec(__nothrow) long double ldexpl(long double , int ); +N_ARMDEFLD1(log); +X__declspec(__nothrow) long double logl(long double ); +N_ARMDEFLD1(log10); +X__declspec(__nothrow) long double log10l(long double ); +N_ARMABI long double modfl(long double /*x*/, long double * /*p*/) __attribute__((__nonnull__(2))); +X__declspec(__nothrow) long double modfl(long double , long double * ) __attribute__((__nonnull__(2))); +N_ARMDEFLD2(pow); +X__declspec(__nothrow) long double powl(long double , long double ); +N_ARMDEFLD1(sin); +X__declspec(__nothrow) long double sinl(long double ); +N_ARMDEFLD1(sinh); +X__declspec(__nothrow) long double sinhl(long double ); +N_ARMDEFLD1(sqrt); +X__declspec(__nothrow) long double sqrtl(long double ); +N_ARMDEFLD1(tan); +X__declspec(__nothrow) long double tanl(long double ); +N_ARMDEFLD1(tanh); +X__declspec(__nothrow) long double tanhl(long double ); +N +N#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +X#if !0L || 1L +N +N/* +N * C99 float and long double versions of extra-C89 functions. +N */ +Nextern _ARMABI float acoshf(float /*x*/); +Xextern __declspec(__nothrow) float acoshf(float ); +N_ARMDEFLD1(acosh); +X__declspec(__nothrow) long double acoshl(long double ); +Nextern _ARMABI float asinhf(float /*x*/); +Xextern __declspec(__nothrow) float asinhf(float ); +N_ARMDEFLD1(asinh); +X__declspec(__nothrow) long double asinhl(long double ); +Nextern _ARMABI float atanhf(float /*x*/); +Xextern __declspec(__nothrow) float atanhf(float ); +N_ARMDEFLD1(atanh); +X__declspec(__nothrow) long double atanhl(long double ); +N_ARMDEFLD2(copysign); +X__declspec(__nothrow) long double copysignl(long double , long double ); +Nextern _ARMABI float cbrtf(float /*x*/); +Xextern __declspec(__nothrow) float cbrtf(float ); +N_ARMDEFLD1(cbrt); +X__declspec(__nothrow) long double cbrtl(long double ); +Nextern _ARMABI float erff(float /*x*/); +Xextern __declspec(__nothrow) float erff(float ); +N_ARMDEFLD1(erf); +X__declspec(__nothrow) long double erfl(long double ); +Nextern _ARMABI float erfcf(float /*x*/); +Xextern __declspec(__nothrow) float erfcf(float ); +N_ARMDEFLD1(erfc); +X__declspec(__nothrow) long double erfcl(long double ); +Nextern _ARMABI float expm1f(float /*x*/); +Xextern __declspec(__nothrow) float expm1f(float ); +N_ARMDEFLD1(expm1); +X__declspec(__nothrow) long double expm1l(long double ); +Nextern _ARMABI float log1pf(float /*x*/); +Xextern __declspec(__nothrow) float log1pf(float ); +N_ARMDEFLD1(log1p); +X__declspec(__nothrow) long double log1pl(long double ); +Nextern _ARMABI float hypotf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float hypotf(float , float ); +N_ARMDEFLD2(hypot); +X__declspec(__nothrow) long double hypotl(long double , long double ); +Nextern _ARMABI float lgammaf(float /*x*/); +Xextern __declspec(__nothrow) float lgammaf(float ); +N_ARMDEFLD1(lgamma); +X__declspec(__nothrow) long double lgammal(long double ); +Nextern _ARMABI float remainderf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float remainderf(float , float ); +N_ARMDEFLD2(remainder); +X__declspec(__nothrow) long double remainderl(long double , long double ); +Nextern _ARMABI float rintf(float /*x*/); +Xextern __declspec(__nothrow) float rintf(float ); +N_ARMDEFLD1(rint); +X__declspec(__nothrow) long double rintl(long double ); +N +N#endif +N +N#if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +X#if (0L && !0L) || 1L +N/* +N * Functions new in C99. +N */ +Nextern _ARMABI double exp2(double /*x*/); /* * 2.^x. */ +Xextern __declspec(__nothrow) double exp2(double ); +Nextern _ARMABI float exp2f(float /*x*/); +Xextern __declspec(__nothrow) float exp2f(float ); +N_ARMDEFLD1(exp2); +X__declspec(__nothrow) long double exp2l(long double ); +Nextern _ARMABI double fdim(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) double fdim(double , double ); +Nextern _ARMABI float fdimf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) float fdimf(float , float ); +N_ARMDEFLD2(fdim); +X__declspec(__nothrow) long double fdiml(long double , long double ); +N#ifdef __FP_FAST_FMA +S#define FP_FAST_FMA +N#endif +N#ifdef __FP_FAST_FMAF +S#define FP_FAST_FMAF +N#endif +N#ifdef __FP_FAST_FMAL +S#define FP_FAST_FMAL +N#endif +Nextern _ARMABI double fma(double /*x*/, double /*y*/, double /*z*/); +Xextern __declspec(__nothrow) double fma(double , double , double ); +Nextern _ARMABI float fmaf(float /*x*/, float /*y*/, float /*z*/); +Xextern __declspec(__nothrow) float fmaf(float , float , float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long double fmal(long double __x, long double __y, long double __z) \ +N { return (long double)fma((double)__x, (double)__y, (double)__z); } +Xstatic __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z) { return (long double)fma((double)__x, (double)__y, (double)__z); } +N#endif +Nextern _ARMABI_FPEXCEPT double fmax(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmax(double , double ); +Nextern _ARMABI_FPEXCEPT float fmaxf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fmaxf(float , float ); +N_ARMDEFLD2(fmax); +X__declspec(__nothrow) long double fmaxl(long double , long double ); +Nextern _ARMABI_FPEXCEPT double fmin(double /*x*/, double /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) double fmin(double , double ); +Nextern _ARMABI_FPEXCEPT float fminf(float /*x*/, float /*y*/); +Xextern __declspec(__nothrow) __attribute__((const)) float fminf(float , float ); +N_ARMDEFLD2(fmin); +X__declspec(__nothrow) long double fminl(long double , long double ); +Nextern _ARMABI double log2(double /*x*/); /* * log base 2 of x. */ +Xextern __declspec(__nothrow) double log2(double ); +Nextern _ARMABI float log2f(float /*x*/); +Xextern __declspec(__nothrow) float log2f(float ); +N_ARMDEFLD1(log2); +X__declspec(__nothrow) long double log2l(long double ); +Nextern _ARMABI long lrint(double /*x*/); +Xextern __declspec(__nothrow) long lrint(double ); +Nextern _ARMABI long lrintf(float /*x*/); +Xextern __declspec(__nothrow) long lrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lrintl(long double __x) \ +N { return lrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long lrintl(long double __x) { return lrint((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llrint(double /*x*/); +Xextern __declspec(__nothrow) long long llrint(double ); +Nextern _ARMABI __LONGLONG llrintf(float /*x*/); +Xextern __declspec(__nothrow) long long llrintf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llrintl(long double __x) \ +N { return llrint((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llrintl(long double __x) { return llrint((double)__x); } +N#endif +Nextern _ARMABI long lround(double /*x*/); +Xextern __declspec(__nothrow) long lround(double ); +Nextern _ARMABI long lroundf(float /*x*/); +Xextern __declspec(__nothrow) long lroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI long lroundl(long double __x) \ +N { return lround((double)__x); } +Xstatic __inline __declspec(__nothrow) long lroundl(long double __x) { return lround((double)__x); } +N#endif +Nextern _ARMABI __LONGLONG llround(double /*x*/); +Xextern __declspec(__nothrow) long long llround(double ); +Nextern _ARMABI __LONGLONG llroundf(float /*x*/); +Xextern __declspec(__nothrow) long long llroundf(float ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI __LONGLONG llroundl(long double __x) \ +N { return llround((double)__x); } +Xstatic __inline __declspec(__nothrow) long long llroundl(long double __x) { return llround((double)__x); } +N#endif +Nextern _ARMABI_PURE double nan(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nan(const char * ); +Nextern _ARMABI_PURE float nanf(const char */*tagp*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nanf(const char * ); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE _ARMABI_PURE long double nanl(const char *__t) \ +N { return (long double)nan(__t); } +Xstatic __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t) { return (long double)nan(__t); } +N#endif +N#if defined(_WANT_SNAN) && defined(__SUPPORT_SNAN__) +X#if 0L && 0L +Sextern _ARMABI_PURE double nans(const char */*tagp*/); +Sextern _ARMABI_PURE float nansf(const char */*tagp*/); +S#ifdef __HAVE_LONGDOUBLE +S_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) \ +S { return (long double)nans(__t); } +X_ARMABI_INLINE _ARMABI_FPEXCEPT long double nansl(const char *__t) { return (long double)nans(__t); } +S#endif +N#endif +Nextern _ARMABI_FPEXCEPT double nearbyint(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double nearbyint(double ); +Nextern _ARMABI_FPEXCEPT float nearbyintf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float ); +N_ARMDEFLD1(nearbyint); +X__declspec(__nothrow) long double nearbyintl(long double ); +Nextern double remquo(double /*x*/, double /*y*/, int */*quo*/); +Nextern float remquof(float /*x*/, float /*y*/, int */*quo*/); +N#ifdef __HAVE_LONGDOUBLE +N_ARMABI_INLINE long double remquol(long double __x, long double __y, int *__q) \ +N { return (long double)remquo((double)__x, (double)__y, __q); } +Xstatic __inline long double remquol(long double __x, long double __y, int *__q) { return (long double)remquo((double)__x, (double)__y, __q); } +N#endif +Nextern _ARMABI_FPEXCEPT double round(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double round(double ); +Nextern _ARMABI_FPEXCEPT float roundf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float roundf(float ); +N_ARMDEFLD1(round); +X__declspec(__nothrow) long double roundl(long double ); +Nextern _ARMABI double tgamma(double /*x*/); /* * The gamma function of x. */ +Xextern __declspec(__nothrow) double tgamma(double ); +Nextern _ARMABI float tgammaf(float /*x*/); +Xextern __declspec(__nothrow) float tgammaf(float ); +N_ARMDEFLD1(tgamma); +X__declspec(__nothrow) long double tgammal(long double ); +Nextern _ARMABI_FPEXCEPT double trunc(double /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) double trunc(double ); +Nextern _ARMABI_FPEXCEPT float truncf(float /*x*/); +Xextern __declspec(__nothrow) __attribute__((const)) float truncf(float ); +N_ARMDEFLD1(trunc); +X__declspec(__nothrow) long double truncl(long double ); +N#endif +N +N#undef _ARMDEFLD1 +N#undef _ARMDEFLD1P +N#undef _ARMDEFLD2 +N +N#if defined(__cplusplus) && ((!defined(__STRICT_ANSI__) || defined(__USE_C99_MATH)) || defined(__ARMCOMPILER_LIBCXX)) +X#if 0L && ((!0L || 1L) || 0L) +S extern "C++" { +S inline int (fpclassify)(double __x) { return fpclassify(__x); } +S inline bool (isfinite)(double __x) { return isfinite(__x); } +S inline bool (isgreater)(double __x, double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(double __x, double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(double __x) { return isinf(__x); } +S inline bool (isless)(double __x, double __y) { return isless(__x, __y); } +S inline bool (islessequal)(double __x, double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(double __x, double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(double __x) { return isnan(__x); } +S inline bool (isnormal)(double __x) { return isnormal(__x); } +S inline bool (isunordered)(double __x, double __y) { return isunordered(__x, __y); } +S +S } +N#endif +N +N#if defined(__cplusplus) && !defined(__ARMCOMPILER_LIBCXX) +X#if 0L && !0L +S extern "C++" { +S inline float abs(float __x) { return fabsf(__x); } +S inline float acos(float __x) { return acosf(__x); } +S inline float asin(float __x) { return asinf(__x); } +S inline float atan(float __x) { return atanf(__x); } +S inline float atan2(float __y, float __x) { return atan2f(__y,__x); } +S inline float ceil(float __x) { return ceilf(__x); } +S inline float cos(float __x) { return cosf(__x); } +S inline float cosh(float __x) { return coshf(__x); } +S inline float exp(float __x) { return expf(__x); } +S inline float fabs(float __x) { return fabsf(__x); } +S inline float floor(float __x) { return floorf(__x); } +S inline float fmod(float __x, float __y) { return fmodf(__x, __y); } +S float frexp(float __x, int* __exp) __attribute__((__nonnull__(2))); +S inline float frexp(float __x, int* __exp) { return frexpf(__x, __exp); } +S inline float ldexp(float __x, int __exp) { return ldexpf(__x, __exp);} +S inline float log(float __x) { return logf(__x); } +S inline float log10(float __x) { return log10f(__x); } +S float modf(float __x, float* __iptr) __attribute__((__nonnull__(2))); +S inline float modf(float __x, float* __iptr) { return modff(__x, __iptr); } +S inline float pow(float __x, float __y) { return powf(__x,__y); } +S inline float pow(float __x, int __y) { return powf(__x, (float)__y); } +S inline float sin(float __x) { return sinf(__x); } +S inline float sinh(float __x) { return sinhf(__x); } +S inline float sqrt(float __x) { return sqrtf(__x); } +S inline float _sqrt(float __x) { return _sqrtf(__x); } +S inline float tan(float __x) { return tanf(__x); } +S inline float tanh(float __x) { return tanhf(__x); } +S +S inline double abs(double __x) { return fabs(__x); } +S inline double pow(double __x, int __y) +S { return pow(__x, (double) __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double abs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double acos(long double __x) +S { return (long double)acosl(__x); } +S inline long double asin(long double __x) +S { return (long double)asinl(__x); } +S inline long double atan(long double __x) +S { return (long double)atanl(__x); } +S inline long double atan2(long double __y, long double __x) +S { return (long double)atan2l(__y, __x); } +S inline long double ceil(long double __x) +S { return (long double)ceill( __x); } +S inline long double cos(long double __x) +S { return (long double)cosl(__x); } +S inline long double cosh(long double __x) +S { return (long double)coshl(__x); } +S inline long double exp(long double __x) +S { return (long double)expl(__x); } +S inline long double fabs(long double __x) +S { return (long double)fabsl(__x); } +S inline long double floor(long double __x) +S { return (long double)floorl(__x); } +S inline long double fmod(long double __x, long double __y) +S { return (long double)fmodl(__x, __y); } +S long double frexp(long double __x, int* __p) __attribute__((__nonnull__(2))); +S inline long double frexp(long double __x, int* __p) +S { return (long double)frexpl(__x, __p); } +S inline long double ldexp(long double __x, int __exp) +S { return (long double)ldexpl(__x, __exp); } +S inline long double log(long double __x) +S { return (long double)logl(__x); } +S inline long double log10(long double __x) +S { return (long double)log10l(__x); } +S long double modf(long double __x, long double* __p) __attribute__((__nonnull__(2))); +S inline long double modf(long double __x, long double* __p) +S { return (long double)modfl(__x, __p); } +S inline long double pow(long double __x, long double __y) +S { return (long double)powl(__x, __y); } +S inline long double pow(long double __x, int __y) +S { return (long double)powl(__x, __y); } +S inline long double sin(long double __x) +S { return (long double)sinl(__x); } +S inline long double sinh(long double __x) +S { return (long double)sinhl(__x); } +S inline long double sqrt(long double __x) +S { return (long double)sqrtl(__x); } +S inline long double _sqrt(long double __x) +S { return (long double)_sqrt((double) __x); } +S inline long double tan(long double __x) +S { return (long double)tanl(__x); } +S inline long double tanh(long double __x) +S { return (long double)tanhl(__x); } +S#endif +S +S#if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S inline float acosh(float __x) { return acoshf(__x); } +S inline float asinh(float __x) { return asinhf(__x); } +S inline float atanh(float __x) { return atanhf(__x); } +S inline float cbrt(float __x) { return cbrtf(__x); } +S inline float erf(float __x) { return erff(__x); } +S inline float erfc(float __x) { return erfcf(__x); } +S inline float expm1(float __x) { return expm1f(__x); } +S inline float log1p(float __x) { return log1pf(__x); } +S inline float hypot(float __x, float __y) { return hypotf(__x, __y); } +S inline float lgamma(float __x) { return lgammaf(__x); } +S inline float remainder(float __x, float __y) { return remainderf(__x, __y); } +S inline float rint(float __x) { return rintf(__x); } +S#endif +S +S#ifdef __USE_C99_MATH +S inline float exp2(float __x) { return exp2f(__x); } +S inline float fdim(float __x, float __y) { return fdimf(__x, __y); } +S inline float fma(float __x, float __y, float __z) { return fmaf(__x, __y, __z); } +S inline float fmax(float __x, float __y) { return fmaxf(__x, __y); } +S inline float fmin(float __x, float __y) { return fminf(__x, __y); } +S inline float log2(float __x) { return log2f(__x); } +S inline _ARMABI long lrint(float __x) { return lrintf(__x); } +S inline _ARMABI __LONGLONG llrint(float __x) { return llrintf(__x); } +S inline _ARMABI long lround(float __x) { return lroundf(__x); } +S inline _ARMABI __LONGLONG llround(float __x) { return llroundf(__x); } +S inline _ARMABI_FPEXCEPT float nearbyint(float __x) { return nearbyintf(__x); } +S inline float remquo(float __x, float __y, int *__q) { return remquof(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT float round(float __x) { return roundf(__x); } +S inline float tgamma(float __x) { return tgammaf(__x); } +S inline _ARMABI_FPEXCEPT float trunc(float __x) { return truncf(__x); } +S +S inline int (fpclassify)(float __x) { return fpclassify(__x); } +S inline bool (isfinite)(float __x) { return isfinite(__x); } +S inline bool (isgreater)(float __x, float __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(float __x, float __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(float __x) { return isinf(__x); } +S inline bool (isless)(float __x, float __y) { return isless(__x, __y); } +S inline bool (islessequal)(float __x, float __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(float __x, float __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(float __x) { return isnan(__x); } +S inline bool (isnormal)(float __x) { return isnormal(__x); } +S inline bool (isunordered)(float __x, float __y) { return isunordered(__x, __y); } +S +S#ifdef __HAVE_LONGDOUBLE +S inline long double acosh(long double __x) { return acoshl(__x); } +S inline long double asinh(long double __x) { return asinhl(__x); } +S inline long double atanh(long double __x) { return atanhl(__x); } +S inline long double cbrt(long double __x) { return cbrtl(__x); } +S inline long double erf(long double __x) { return erfl(__x); } +S inline long double erfc(long double __x) { return erfcl(__x); } +S inline long double expm1(long double __x) { return expm1l(__x); } +S inline long double log1p(long double __x) { return log1pl(__x); } +S inline long double hypot(long double __x, long double __y) { return hypotl(__x, __y); } +S inline long double lgamma(long double __x) { return lgammal(__x); } +S inline long double remainder(long double __x, long double __y) { return remainderl(__x, __y); } +S inline long double rint(long double __x) { return rintl(__x); } +S inline long double exp2(long double __x) { return exp2l(__x); } +S inline long double fdim(long double __x, long double __y) { return fdiml(__x, __y); } +S inline long double fma(long double __x, long double __y, long double __z) { return fmal(__x, __y, __z); } +S inline long double fmax(long double __x, long double __y) { return fmaxl(__x, __y); } +S inline long double fmin(long double __x, long double __y) { return fminl(__x, __y); } +S inline long double log2(long double __x) { return log2l(__x); } +S inline _ARMABI long lrint(long double __x) { return lrintl(__x); } +S inline _ARMABI __LONGLONG llrint(long double __x) { return llrintl(__x); } +S inline _ARMABI long lround(long double __x) { return lroundl(__x); } +S inline _ARMABI __LONGLONG llround(long double __x) { return llroundl(__x); } +S inline _ARMABI_FPEXCEPT long double nearbyint(long double __x) { return nearbyintl(__x); } +S inline long double remquo(long double __x, long double __y, int *__q) { return remquol(__x, __y, __q); } +S inline _ARMABI_FPEXCEPT long double round(long double __x) { return roundl(__x); } +S inline long double tgamma(long double __x) { return tgammal(__x); } +S inline _ARMABI_FPEXCEPT long double trunc(long double __x) { return truncl(__x); } +S inline int (fpclassify)(long double __x) { return fpclassify(__x); } +S inline bool (isfinite)(long double __x) { return isfinite(__x); } +S inline bool (isgreater)(long double __x, long double __y) { return isgreater(__x, __y); } +S inline bool (isgreaterequal)(long double __x, long double __y) { return isgreaterequal(__x, __y); } +S inline bool (isinf)(long double __x) { return isinf(__x); } +S inline bool (isless)(long double __x, long double __y) { return isless(__x, __y); } +S inline bool (islessequal)(long double __x, long double __y) { return islessequal(__x, __y); } +S inline bool (islessgreater)(long double __x, long double __y) { return islessgreater(__x, __y); } +S inline bool (isnan)(long double __x) { return isnan(__x); } +S inline bool (isnormal)(long double __x) { return isnormal(__x); } +S inline bool (isunordered)(long double __x, long double __y) { return isunordered(__x, __y); } +S#endif +S +S#undef fpclassify +S#undef isfinite +S#undef isgreater +S#undef isgreaterequal +S#undef isinf +S#undef isless +S#undef islessequal +S#undef islessgreater +S#undef isnan +S#undef isnormal +S#undef isunordered +S +S#endif +S +S } +N#endif +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif +N #endif /* __MATH_DECLS */ +N +N #if _AEABI_PORTABILITY_LEVEL != 0 && !defined _AEABI_PORTABLE +X #if _AEABI_PORTABILITY_LEVEL != 0 && !0L +S #define _AEABI_PORTABLE +N #endif +N +N #if defined(__cplusplus) && !defined(__MATH_NO_EXPORTS) +X #if 0L && !0L +S using ::std::__use_accurate_range_reduction; +S #ifndef __ARMCOMPILER_LIBCXX +S using ::std::abs; +S #endif +S using ::std::acos; +S using ::std::asin; +S using ::std::atan2; +S using ::std::atan; +S using ::std::ceil; +S using ::std::cos; +S using ::std::cosh; +S using ::std::exp; +S using ::std::fabs; +S using ::std::floor; +S using ::std::fmod; +S using ::std::frexp; +S using ::std::ldexp; +S using ::std::log10; +S using ::std::log; +S using ::std::modf; +S using ::std::pow; +S using ::std::sin; +S using ::std::sinh; +S using ::std::sqrt; +S using ::std::_sqrt; +S using ::std::_sqrtf; +S using ::std::tan; +S using ::std::tanh; +S using ::std::_fabsf; +S /* C99 float and long double versions in already-C89-reserved namespace */ +S using ::std::acosf; +S using ::std::acosl; +S using ::std::asinf; +S using ::std::asinl; +S using ::std::atan2f; +S using ::std::atan2l; +S using ::std::atanf; +S using ::std::atanl; +S using ::std::ceilf; +S using ::std::ceill; +S using ::std::cosf; +S using ::std::coshf; +S using ::std::coshl; +S using ::std::cosl; +S using ::std::expf; +S using ::std::expl; +S using ::std::fabsf; +S using ::std::fabsl; +S using ::std::floorf; +S using ::std::floorl; +S using ::std::fmodf; +S using ::std::fmodl; +S using ::std::frexpf; +S using ::std::frexpl; +S using ::std::ldexpf; +S using ::std::ldexpl; +S using ::std::log10f; +S using ::std::log10l; +S using ::std::logf; +S using ::std::logl; +S using ::std::modff; +S using ::std::modfl; +S using ::std::powf; +S using ::std::powl; +S using ::std::sinf; +S using ::std::sinhf; +S using ::std::sinhl; +S using ::std::sinl; +S using ::std::sqrtf; +S using ::std::sqrtl; +S using ::std::tanf; +S using ::std::tanhf; +S using ::std::tanhl; +S using ::std::tanl; +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S /* C99 additions which for historical reasons appear in non-strict mode */ +S using ::std::acosh; +S using ::std::asinh; +S using ::std::atanh; +S using ::std::cbrt; +S using ::std::copysign; +S using ::std::copysignf; +S using ::std::erf; +S using ::std::erfc; +S using ::std::expm1; +S using ::std::hypot; +S using ::std::ilogb; +S using ::std::ilogbf; +S using ::std::ilogbl; +S using ::std::lgamma; +S using ::std::log1p; +S using ::std::logb; +S using ::std::logbf; +S using ::std::logbl; +S using ::std::nextafter; +S using ::std::nextafterf; +S using ::std::nextafterl; +S using ::std::nexttoward; +S using ::std::nexttowardf; +S using ::std::nexttowardl; +S using ::std::remainder; +S using ::std::rint; +S using ::std::scalbln; +S using ::std::scalblnf; +S using ::std::scalblnl; +S using ::std::scalbn; +S using ::std::scalbnf; +S using ::std::scalbnl; +S using ::std::math_errhandling; +S using ::std::acoshf; +S using ::std::acoshl; +S using ::std::asinhf; +S using ::std::asinhl; +S using ::std::atanhf; +S using ::std::atanhl; +S using ::std::copysignl; +S using ::std::cbrtf; +S using ::std::cbrtl; +S using ::std::erff; +S using ::std::erfl; +S using ::std::erfcf; +S using ::std::erfcl; +S using ::std::expm1f; +S using ::std::expm1l; +S using ::std::log1pf; +S using ::std::log1pl; +S using ::std::hypotf; +S using ::std::hypotl; +S using ::std::lgammaf; +S using ::std::lgammal; +S using ::std::remainderf; +S using ::std::remainderl; +S using ::std::rintf; +S using ::std::rintl; +S /* New in C99. */ +S using ::std::float_t; +S using ::std::double_t; +S #endif +S #if (defined(__clang__) && !defined(__STRICT_ANSI)) || defined(__USE_C99_MATH) +S /* Functions new in C99. */ +S using ::std::exp2; +S using ::std::exp2f; +S using ::std::exp2l; +S using ::std::fdim; +S using ::std::fdimf; +S using ::std::fdiml; +S using ::std::fma; +S using ::std::fmaf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::fmal; +S#endif +S using ::std::fmax; +S using ::std::fmaxf; +S using ::std::fmaxl; +S using ::std::fmin; +S using ::std::fminf; +S using ::std::fminl; +S using ::std::log2; +S using ::std::log2f; +S using ::std::log2l; +S using ::std::lrint; +S using ::std::lrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lrintl; +S#endif +S using ::std::llrint; +S using ::std::llrintf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llrintl; +S#endif +S using ::std::lround; +S using ::std::lroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::lroundl; +S#endif +S using ::std::llround; +S using ::std::llroundf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::llroundl; +S#endif +S using ::std::nan; +S using ::std::nanf; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::nanl; +S#endif +S using ::std::nearbyint; +S using ::std::nearbyintf; +S using ::std::nearbyintl; +S using ::std::remquo; +S using ::std::remquof; +S#ifdef __HAVE_LONGDOUBLE +S using ::std::remquol; +S#endif +S using ::std::round; +S using ::std::roundf; +S using ::std::roundl; +S using ::std::tgamma; +S using ::std::tgammaf; +S using ::std::tgammal; +S using ::std::trunc; +S using ::std::truncf; +S using ::std::truncl; +S #endif +S +S #if !defined(__STRICT_ANSI__) || defined(__USE_C99_MATH) +S using ::std::fpclassify; +S using ::std::isfinite; +S using ::std::isgreater; +S using ::std::isgreaterequal; +S using ::std::isinf; +S using ::std::isless; +S using ::std::islessequal; +S using ::std::islessgreater; +S using ::std::isnan; +S using ::std::isnormal; +S using ::std::isunordered; +S #endif +N #endif +N +N#undef __LONGLONG +N +N#endif /* __math_h */ +N +N/* end of math.h */ +L 19 "..\..\src\common\tau_common.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N * \name 通用常量定义 +N * @{ +N */ +N//#define ENABLE 1 +N//#define DISABLE 0 +N +N#define ON 1 +N#define OFF 0 +N +N#define NONE 0 +N#define EOS '\0' +N +N/* +N#ifndef TRUE +N#define TRUE 1 +N#endif +N +N#ifndef FALSE +N#define FALSE 0 +N#endif +N*/ +N +N#ifndef __cplusplus +N#define true 1 +N#define false 0 +N#define bool _Bool +N#endif /* ifndef __cplusplus */ +N +N#ifndef NULL +N#define NULL ((void *)0) +N#endif +N +N#define TAU_LITTLE_ENDIAN 1234 /**< \brief 小端模式 */ +N#define TAU_BIG_ENDIAN 3412 /**< \brief 大端模式 */ +N +N/** @} */ +N +N/******************************************************************************/ +N +N/** +N * \name 常用宏定义 +N * @{ +N */ +N +N#ifdef __cplusplus +S#define __I volatile /*!< Defines 'read only' permissions */ +N#else +N#define __I volatile const /*!< Defines 'read only' permissions */ +N#endif +N#define __O volatile /*!< Defines 'write only' permissions */ +N#define __IO volatile /*!< Defines 'read / write' permissions */ +N +N#define TAU_INLINE inline +N#define TAU_STATIC_INLINE static inline +N#define TAU_STATIC static +N#define TAU_CONST const +N#define TAU_EXTERN extern +N +N#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +N#define MAX(x, y) (((x) > (y)) ? (x) : (y)) +N +N/** +N * \brief 求结构体成员的偏移 +N * \attention 不同平台上,由于成员大小和内存对齐等原因, +N * 同一结构体成员的偏移可能是不一样的 +N * +N * \par 示例 +N * \code +N * struct my_struct { +N * int m1; +N * char m2; +N * }; +N * int offset_m2; +N * +N * offset_m2 = TAU_OFFSET(struct my_struct, m2); +N * \endcode +N */ +N#define TAU_OFFSET(structure, member) ((uint32_t)(&(((structure *)0)->member))) +N +N/** @} */ +N +N/** +N * \brief 通过结构体成员指针获取包含该结构体成员的结构体 +N * +N * \param ptr 指向结构体成员的指针 +N * \param type 结构体类型 +N * \param member 结构体中该成员的名称 +N * +N * \par 示例 +N * \code +N * struct my_struct = { +N * int m1; +N * char m2; +N * }; +N * struct my_struct my_st; +N * char *p_m2 = &my_st.m2; +N * struct my_struct *p_st = TAU_CONTAINER_OF(p_m2, struct my_struct, m2); +N * \endcode +N */ +N#define TAU_CONTAINER_OF(ptr, type, member) \ +N ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +X#define TAU_CONTAINER_OF(ptr, type, member) ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) +N +N/** +N * \brief 计算结构体成员的大小 +N * +N * \code +N * struct a = { +N * uint32_t m1; +N * uint32_t m2; +N * }; +N * int size_m2; +N * +N * size_m2 = TAU_MEMBER_SIZE(a, m2); //size_m2 = 4 +N * \endcode +N */ +N#define TAU_MEMBER_SIZE(structure, member) (sizeof(((structure *)0)->member)) +N +N/** +N * \brief 计算数组元素个数 +N * +N * \code +N * int a[] = {0, 1, 2, 3}; +N * int element_a = TAU_NELEMENTS(a); // element_a = 4 +N * \endcode +N */ +N#define TAU_NELEMENTS(array) (sizeof(array) / sizeof((array)[0])) +N +N/** +N * \brief 向上舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_UP(15, 4); // size = 16 +N * \endcode +N */ +N#define TAU_ROUND_UP(x, align) (((int)(x)/(align))*(align) + (((int)(x)%(align)) ? (align) : 0)) +N +N/** +N * \brief 向下舍入 +N * +N * \param x 被运算的数 +N * \param align 对齐因素 +N * +N * \code +N * int size = TAU_ROUND_DOWN(15, 4); // size = 12 +N * \endcode +N */ +N#define TAU_ROUND_DOWN(x, align) (((int)(x)/(align))*(align)) +N +N/** \brief 倍数向上舍入 */ +N#define TAU_DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) +N +N/** +N * \brief 测试是否对齐 +N * +N * \param x 被运算的数 +N * \param align 对齐因素,必须为2的乘方 +N * +N * \code +N * if (TAU_ALIGNED(x, 4) { +N * ; // x对齐 +N * } else { +N * ; // x不对齐 +N * } +N * \endcode +N */ +N#define TAU_ALIGNED(x, align) (((int)(x) & (align - 1)) == 0) +N +N/** \brief 将1字节BCD数据转换为16进制数据 */ +N#define TAU_BCD_TO_HEX(val) (((val)&0x0f) + ((val) >> 4) * 10) +N +N/** \brief 将1字节16进制数据转换为BCD数据 */ +N#define TAU_HEX_TO_BCD(val) ((((val) / 10) << 4) + (val) % 10) +N +N/** +N * \brief 向上取整 +N */ +N#define TAU_CEIL(val) ceil(val) +N +N +N/*! @brief Construct the version number for drivers. */ +N#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix)) +N +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*!< @brief 用于返回状态和错误 */ +Ntypedef uint32_t status_t; +N +N/* \brief 通用回调函数指针定义 */ +Ntypedef void (*fcb_type)(void *data); +N +Ntypedef void (*uart_trans_cb)(status_t status, void *user_data); +N +Ntypedef void (*flash_trans_cb)(status_t status, void *user_data); +N#endif /* __TAU_COMMON_H */ +L 21 "..\..\src\common\tau_device_datatype.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 计算组状态码 */ +N#define MAKE_STATUS(group, code) ((((group)*100) + (code))) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/*! @brief 分组状态值 */ +Nenum _status_groups +N{ +N STATUS_GROUP_GENERIC = 0, +N STATUS_GROUP_I2C = 1, +N STATUS_GROUP_UART = 2, +N STATUS_GROUP_SPI = 3, +N STATUS_GROUP_TIMER = 4, +N}; +N +N/*! @brief 常用状态码 */ +Nenum _generic_status +N{ +N STATUS_SUCCESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 0), +X STATUS_SUCCESS = ((((STATUS_GROUP_GENERIC)*100) + (0))), +N STATUS_FAIL = MAKE_STATUS(STATUS_GROUP_GENERIC, 1), +X STATUS_FAIL = ((((STATUS_GROUP_GENERIC)*100) + (1))), +N STATUS_READ_ONLY = MAKE_STATUS(STATUS_GROUP_GENERIC, 2), +X STATUS_READ_ONLY = ((((STATUS_GROUP_GENERIC)*100) + (2))), +N STATUS_OUT_OF_RANGE = MAKE_STATUS(STATUS_GROUP_GENERIC, 3), +X STATUS_OUT_OF_RANGE = ((((STATUS_GROUP_GENERIC)*100) + (3))), +N STATUS_INVALID_ARGUMENT = MAKE_STATUS(STATUS_GROUP_GENERIC, 4), +X STATUS_INVALID_ARGUMENT = ((((STATUS_GROUP_GENERIC)*100) + (4))), +N STATUS_TIME_OUT = MAKE_STATUS(STATUS_GROUP_GENERIC, 5), +X STATUS_TIME_OUT = ((((STATUS_GROUP_GENERIC)*100) + (5))), +N STATUS_NO_TRANSFER_IN_PROGRESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 6), +X STATUS_NO_TRANSFER_IN_PROGRESS = ((((STATUS_GROUP_GENERIC)*100) + (6))), +N}; +N +N/** +N* @brief UART状态枚举定义 +N* +N*/ +Ntypedef enum +N{ +N STATUS_UART_TX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 0), /*!< Transmitter is busy. */ +X STATUS_UART_TX_BUSY = ((((STATUS_GROUP_UART)*100) + (0))), +N STATUS_UART_RX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 1), /*!< Receiver is busy. */ +X STATUS_UART_RX_BUSY = ((((STATUS_GROUP_UART)*100) + (1))), +N STATUS_UART_TX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 2), /*!< USART transmitter is idle. */ +X STATUS_UART_TX_IDLE = ((((STATUS_GROUP_UART)*100) + (2))), +N STATUS_UART_RX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 3), /*!< USART receiver is idle. */ +X STATUS_UART_RX_IDLE = ((((STATUS_GROUP_UART)*100) + (3))), +N STATUS_UART_TX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 7), /*!< Error happens on txFIFO. */ +X STATUS_UART_TX_ERR = ((((STATUS_GROUP_UART)*100) + (7))), +N STATUS_UART_RX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 9), /*!< Error happens on rxFIFO. */ +X STATUS_UART_RX_ERR = ((((STATUS_GROUP_UART)*100) + (9))), +N STATUS_UART_RX_RING_BUFF_OVERRUN = MAKE_STATUS(STATUS_GROUP_UART, 8), /*!< Error happens on rx ring buffer */ +X STATUS_UART_RX_RING_BUFF_OVERRUN = ((((STATUS_GROUP_UART)*100) + (8))), +N STATUS_UART_NOISE_ERR = MAKE_STATUS(STATUS_GROUP_UART, 10), /*!< USART noise error. */ +X STATUS_UART_NOISE_ERR = ((((STATUS_GROUP_UART)*100) + (10))), +N STATUS_UART_FRAMING_ERR = MAKE_STATUS(STATUS_GROUP_UART, 11), /*!< USART framing error. */ +X STATUS_UART_FRAMING_ERR = ((((STATUS_GROUP_UART)*100) + (11))), +N STATUS_UART_PARITY_ERR = MAKE_STATUS(STATUS_GROUP_UART, 12), /*!< USART parity error. */ +X STATUS_UART_PARITY_ERR = ((((STATUS_GROUP_UART)*100) + (12))), +N STATUS_UART_BAUDRATE_NOT_SPT = MAKE_STATUS(STATUS_GROUP_UART, 13), /*!< Baudrate is not support in current clock source */ +X STATUS_UART_BAUDRATE_NOT_SPT = ((((STATUS_GROUP_UART)*100) + (13))), +N} uart_status_e; +N +N/*! +N * @brief timer状态 +N */ +Ntypedef enum +N{ +N STATUS_TIMER_IDLE = MAKE_STATUS(STATUS_GROUP_TIMER, 0), /*!< 空闲 */ +X STATUS_TIMER_IDLE = ((((STATUS_GROUP_TIMER)*100) + (0))), +N STATUS_TIMER_RUNNING = MAKE_STATUS(STATUS_GROUP_TIMER, 1), /*!< 运行中 */ +X STATUS_TIMER_RUNNING = ((((STATUS_GROUP_TIMER)*100) + (1))), +N STATUS_TIMER_TIMEOUT = MAKE_STATUS(STATUS_GROUP_TIMER, 2), /*!< 超时 */ +X STATUS_TIMER_TIMEOUT = ((((STATUS_GROUP_TIMER)*100) + (2))), +N} timer_status_e; +N +N/*! +N * @brief system触发事件(中断/复位)模式 +N */ +Ntypedef enum +N{ +N DETECT_HIGH_LVL = 0, +N DETECT_LOW_LVL, +N DETECT_RISING_EDGE, +N DETECT_FALLING_EDGE, +N DETECT_DOUBLE_EDGE +N} sys_cfg_trigger_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N TIMER_NUM0 = 0, +N TIMER_NUM1, +N TIMER_NUM2, +N TIMER_NUM3, +N TIMER_NUM_MAX +N} timer_num_e; +N +N/** +N* @brief GPIO interrupt type +N*/ +Ntypedef enum +N{ +N GPIO_INT_EXTI_INT0 = 0, +N GPIO_INT_EXTI_INT1, +N GPIO_INT_EXTI_INT2, +N GPIO_INT_EXTI_INT3, +N GPIO_INT_EXTI_INT4, +N GPIO_INT_EXTI_INT5, +N GPIO_INT_EXTI_INT6, +N GPIO_INT_EXTI_INT7, +N GPIO_INT_MAX +N} gpio_int_e; +N +N/*! @brief PWMI中断类型 */ +Ntypedef enum _pwm_int_type +N{ +N PWM_INT_HIGH_OVERFLOW = 0, +N PWM_INT_LOW_OVERFLOW, +N PWM_INT_TOTAL_OVERFLOW, +N PWM_INT_HIGH_DONE, +N PWM_INT_LOW_DONE, +N PWM_INT_TOTAL_DONE, +N PWM_INT_MAX +N} pwm_int_type_e; +N +N/** +N* @brief I2C chose +N*/ +Ntypedef enum +N{ +N I2C_SELECT_0 = 0, //常用slave +N I2C_SELECT_1, //常用master +N} i2c_select_e; +N +N/*! +N * @brief 传输速度 +N * @note +N */ +Ntypedef enum _i2c_rate +N{ +N I2C_RATE_STANDARD = 1, //100kHz +N I2C_RATE_FAST, //400kHz +N I2C_RATE_HIGH, //1MHz +N} i2c_rate_e; +N +N/*! +N * @brief I2C Index +N * @note +N */ +Ntypedef enum +N{ +N I2C_INDEX_0, +N I2C_INDEX_1, +N I2C_INDEX_2, +N I2C_INDEX_MAX +N} i2c_index_e; +N +N/*! +N * @brief DMA channel type +N * @note +N */ +Ntypedef enum +N{ +N AHB_DMA_CH0, +N AHB_DMA_CH1, +N AHB_DMA_CH2, +N AHB_DMA_CH3, +N AHB_DMA_CH4, +N AHB_DMA_CH5, +N AHB_DMA_CH6, +N AHB_DMA_CH7, +N AHB_DMA_CH_NUM +N} dma_channel_type_e; +N +N/*! @brief Type used for all status and error return values. */ +N +Ntypedef enum +N{ +N DISABLE = 0, +N ENABLE = !DISABLE +N} function_state_e; +N +N/** +N* @brief The reversal types of the bit order of the input/output data +N*/ +Ntypedef enum +N{ +N CRC_REV_NO_TRANSPOSE = 0, /*!< No transposition */ +N CRC_REV_ONLY_BITS_TRANSPOSE, /*!< Bits in bytes are transposed; bytes are not transposed */ +N CRC_REV_BOTH_TRANSPOSE, /*!< Both bits in bytes and bytes are transposed */ +N CRC_REV_ONLY_BYTES_TRANSPOSE, /*!< Only bytes are transposed; no bits in a byte are transposed */ +N} crc_reversal_type_e; +N +N/** +N* @brief Complement Read Of CRC Data Register +N*/ +Ntypedef enum +N{ +N CRC_FXOR_DISABLE = 0, /*!< No XOR on reading */ +N CRC_FXOR_ENABLE, /*!< Invert or complement the read value of the CRC Data register */ +N} crc_fxor_function_e; +N +N/** +N* @brief width of CRC protocol (polynomial) +N*/ +Ntypedef enum +N{ +N CRC_16_BIT_PROTOCOL = 0, /*!< 0: 16-bit CRC protocol */ +N CRC_32_BIT_PROTOCOL, /*!< 1: 32-bit CRC protocol */ +N} crc_protocol_type_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N#endif +N +L 12 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "tau_log.h" +L 1 "..\..\src\common\tau_log.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_log.h +N* Description log file +N* Version V0.1 +N* Date 2020-12-08 +N* Author linyw +N*******************************************************************************/ +N#ifndef _TAU_LOG_H_ +N#define _TAU_LOG_H_ +N +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h" 1 +N/* string.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.11 */ +N/* Copyright (C) Codemist Ltd., 1988-1993. */ +N/* Copyright 1991-1993 ARM Limited. All rights reserved. */ +N/* version 0.04 */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N */ +N +N/* +N * string.h declares one type and several functions, and defines one macro +N * useful for manipulating character arrays and other objects treated as +N * character arrays. Various methods are used for determining the lengths of +N * the arrays, but in all cases a char * or void * argument points to the +N * initial (lowest addresses) character of the array. If an array is written +N * beyond the end of an object, the behaviour is undefined. +N */ +N +N#ifndef __string_h +N#define __string_h +N#define __ARMCLIB_VERSION 5060037 +N +N#define _ARMABI __declspec(__nothrow) +N +N #ifndef __STRING_DECLS +N #define __STRING_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N#if defined(__cplusplus) || !defined(__STRICT_ANSI__) +X#if 0L || !0L +N /* unconditional in C++ and non-strict C for consistency of debug info */ +N #if __sizeof_ptr == 8 +X #if 4 == 8 +S typedef unsigned long size_t; /* see */ +N #else +N typedef unsigned int size_t; /* see */ +N #endif +N#elif !defined(__size_t) +X#elif !0L +S #define __size_t 1 +S #if __sizeof_ptr == 8 +S typedef unsigned long size_t; /* see */ +S #else +S typedef unsigned int size_t; /* see */ +S #endif +N#endif +N +N#undef NULL +N#define NULL 0 /* see */ +N +Nextern _ARMABI void *memcpy(void * __restrict /*s1*/, +Xextern __declspec(__nothrow) void *memcpy(void * __restrict , +N const void * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI void *memmove(void * /*s1*/, +Xextern __declspec(__nothrow) void *memmove(void * , +N const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +N /* +N * copies n characters from the object pointed to by s2 into the object +N * pointed to by s1. Copying takes place as if the n characters from the +N * object pointed to by s2 are first copied into a temporary array of n +N * characters that does not overlap the objects pointed to by s1 and s2, +N * and then the n characters from the temporary array are copied into the +N * object pointed to by s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strcpy(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcpy(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string pointed to by s2 (including the terminating nul +N * character) into the array pointed to by s1. If copying takes place +N * between objects that overlap, the behaviour is undefined. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncpy(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncpy(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies not more than n characters (characters that follow a null +N * character are not copied) from the array pointed to by s2 into the array +N * pointed to by s1. If copying takes place between objects that overlap, +N * the behaviour is undefined. +N * Returns: the value of s1. +N */ +N +Nextern _ARMABI char *strcat(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strcat(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(1,2))); +N /* +N * appends a copy of the string pointed to by s2 (including the terminating +N * null character) to the end of the string pointed to by s1. The initial +N * character of s2 overwrites the null character at the end of s1. +N * Returns: the value of s1. +N */ +Nextern _ARMABI char *strncat(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strncat(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * appends not more than n characters (a null character and characters that +N * follow it are not appended) from the array pointed to by s2 to the end of +N * the string pointed to by s1. The initial character of s2 overwrites the +N * null character at the end of s1. A terminating null character is always +N * appended to the result. +N * Returns: the value of s1. +N */ +N +N/* +N * The sign of a nonzero value returned by the comparison functions is +N * determined by the sign of the difference between the values of the first +N * pair of characters (both interpreted as unsigned char) that differ in the +N * objects being compared. +N */ +N +Nextern _ARMABI int memcmp(const void * /*s1*/, const void * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int memcmp(const void * , const void * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the first n characters of the object pointed to by s1 to the +N * first n characters of the object pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the object pointed to by s1 is greater than, equal to, or +N * less than the object pointed to by s2. +N */ +Nextern _ARMABI int strcmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcasecmp(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcasecmp(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, +N * case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strncasecmp(const char * /*s1*/, const char * /*s2*/, size_t /*n*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strncasecmp(const char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * compares not more than n characters (characters that follow a null +N * character are not compared) from the array pointed to by s1 to the array +N * pointed to by s2, case-insensitively as defined by the current locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2. +N */ +Nextern _ARMABI int strcoll(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) int strcoll(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * compares the string pointed to by s1 to the string pointed to by s2, both +N * interpreted as appropriate to the LC_COLLATE category of the current +N * locale. +N * Returns: an integer greater than, equal to, or less than zero, according +N * as the string pointed to by s1 is greater than, equal to, or +N * less than the string pointed to by s2 when both are interpreted +N * as appropriate to the current locale. +N */ +N +Nextern _ARMABI size_t strxfrm(char * __restrict /*s1*/, const char * __restrict /*s2*/, size_t /*n*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) size_t strxfrm(char * __restrict , const char * __restrict , size_t ) __attribute__((__nonnull__(2))); +N /* +N * transforms the string pointed to by s2 and places the resulting string +N * into the array pointed to by s1. The transformation function is such that +N * if the strcmp function is applied to two transformed strings, it returns +N * a value greater than, equal to or less than zero, corresponding to the +N * result of the strcoll function applied to the same two original strings. +N * No more than n characters are placed into the resulting array pointed to +N * by s1, including the terminating null character. If n is zero, s1 is +N * permitted to be a null pointer. If copying takes place between objects +N * that overlap, the behaviour is undefined. +N * Returns: The length of the transformed string is returned (not including +N * the terminating null character). If the value returned is n or +N * more, the contents of the array pointed to by s1 are +N * indeterminate. +N */ +N +N +N#ifdef __cplusplus +Sextern _ARMABI const void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Sextern "C++" void *memchr(void * __s, int __c, size_t __n) __attribute__((__nonnull__(1))); +Sextern "C++" inline void *memchr(void * __s, int __c, size_t __n) +S { return const_cast(memchr(const_cast(__s), __c, __n)); } +N#else +Nextern _ARMABI void *memchr(const void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memchr(const void * , int , size_t ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an unsigned char) in the +N * initial n characters (each interpreted as unsigned char) of the object +N * pointed to by s. +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the object. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strchr(char * __s, int __c) +S { return const_cast(strchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the first occurence of c (converted to an char) in the string +N * pointed to by s (including the terminating null character). +N * Returns: a pointer to the located character, or a null pointer if the +N * character does not occur in the string. +N */ +N +Nextern _ARMABI size_t strcspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strcspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters not from the string pointed to by +N * s2. The terminating null character is not considered part of s2. +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strpbrk(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strpbrk(char * __s1, const char * __s2) +S { return const_cast(strpbrk(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strpbrk(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strpbrk(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of any +N * character from the string pointed to by s2. +N * Returns: returns a pointer to the character, or a null pointer if no +N * character form s2 occurs in s1. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Sextern "C++" char *strrchr(char * __s, int __c) __attribute__((__nonnull__(1))); +Sextern "C++" inline char *strrchr(char * __s, int __c) +S { return const_cast(strrchr(const_cast(__s), __c)); } +N#else +Nextern _ARMABI char *strrchr(const char * /*s*/, int /*c*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) char *strrchr(const char * , int ) __attribute__((__nonnull__(1))); +N#endif +N /* +N * locates the last occurence of c (converted to a char) in the string +N * pointed to by s. The terminating null character is considered part of +N * the string. +N * Returns: returns a pointer to the character, or a null pointer if c does +N * not occur in the string. +N */ +N +Nextern _ARMABI size_t strspn(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strspn(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N /* +N * computes the length of the initial segment of the string pointed to by s1 +N * which consists entirely of characters from the string pointed to by S2 +N * Returns: the length of the segment. +N */ +N +N#ifdef __cplusplus +Sextern _ARMABI const char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Sextern "C++" char *strstr(char * __s1, const char * __s2) __attribute__((__nonnull__(1,2))); +Sextern "C++" inline char *strstr(char * __s1, const char * __s2) +S { return const_cast(strstr(const_cast(__s1), __s2)); } +N#else +Nextern _ARMABI char *strstr(const char * /*s1*/, const char * /*s2*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) char *strstr(const char * , const char * ) __attribute__((__nonnull__(1,2))); +N#endif +N /* +N * locates the first occurence in the string pointed to by s1 of the +N * sequence of characters (excluding the terminating null character) in the +N * string pointed to by s2. +N * Returns: a pointer to the located string, or a null pointer if the string +N * is not found. +N */ +N +Nextern _ARMABI char *strtok(char * __restrict /*s1*/, const char * __restrict /*s2*/) __attribute__((__nonnull__(2))); +Xextern __declspec(__nothrow) char *strtok(char * __restrict , const char * __restrict ) __attribute__((__nonnull__(2))); +Nextern _ARMABI char *_strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *_strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#ifndef __STRICT_ANSI__ +Nextern _ARMABI char *strtok_r(char * /*s1*/, const char * /*s2*/, char ** /*ptr*/) __attribute__((__nonnull__(2,3))); +Xextern __declspec(__nothrow) char *strtok_r(char * , const char * , char ** ) __attribute__((__nonnull__(2,3))); +N#endif +N /* +N * A sequence of calls to the strtok function breaks the string pointed to +N * by s1 into a sequence of tokens, each of which is delimited by a +N * character from the string pointed to by s2. The first call in the +N * sequence has s1 as its first argument, and is followed by calls with a +N * null pointer as their first argument. The separator string pointed to by +N * s2 may be different from call to call. +N * The first call in the sequence searches for the first character that is +N * not contained in the current separator string s2. If no such character +N * is found, then there are no tokens in s1 and the strtok function returns +N * a null pointer. If such a character is found, it is the start of the +N * first token. +N * The strtok function then searches from there for a character that is +N * contained in the current separator string. If no such character is found, +N * the current token extends to the end of the string pointed to by s1, and +N * subsequent searches for a token will fail. If such a character is found, +N * it is overwritten by a null character, which terminates the current +N * token. The strtok function saves a pointer to the following character, +N * from which the next search for a token will start. +N * Each subsequent call, with a null pointer as the value for the first +N * argument, starts searching from the saved pointer and behaves as +N * described above. +N * Returns: pointer to the first character of a token, or a null pointer if +N * there is no token. +N * +N * strtok_r() is a common extension which works exactly like +N * strtok(), but instead of storing its state in a hidden +N * library variable, requires the user to pass in a pointer to a +N * char * variable which will be used instead. Any sequence of +N * calls to strtok_r() passing the same char ** pointer should +N * behave exactly like the corresponding sequence of calls to +N * strtok(). This means that strtok_r() can safely be used in +N * multi-threaded programs, and also that you can tokenise two +N * strings in parallel. +N */ +N +Nextern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) void *memset(void * , int , size_t ) __attribute__((__nonnull__(1))); +N /* +N * copies the value of c (converted to an unsigned char) into each of the +N * first n charactes of the object pointed to by s. +N * Returns: the value of s. +N */ +Nextern _ARMABI char *strerror(int /*errnum*/); +Xextern __declspec(__nothrow) char *strerror(int ); +N /* +N * maps the error number in errnum to an error message string. +N * Returns: a pointer to the string, the contents of which are +N * implementation-defined. The array pointed to shall not be +N * modified by the program, but may be overwritten by a +N * subsequent call to the strerror function. +N */ +Nextern _ARMABI size_t strlen(const char * /*s*/) __attribute__((__nonnull__(1))); +Xextern __declspec(__nothrow) size_t strlen(const char * ) __attribute__((__nonnull__(1))); +N /* +N * computes the length of the string pointed to by s. +N * Returns: the number of characters that precede the terminating null +N * character. +N */ +N +Nextern _ARMABI size_t strlcpy(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcpy(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * copies the string src into the string dst, using no more than +N * len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src. Thus, the operation +N * succeeded without truncation if and only if ret < len; +N * otherwise, the value in ret tells you how big to make dst if +N * you decide to reallocate it. (That value does _not_ include +N * the NUL.) +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI size_t strlcat(char * /*dst*/, const char * /*src*/, size_t /*len*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) size_t strlcat(char * , const char * , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * concatenates the string src to the string dst, using no more +N * than len bytes of dst. Always null-terminates dst _within the +N * length len (i.e. will copy at most len-1 bytes of string plus +N * a NUL), unless len is actually zero. +N * +N * Return value is the length of the string that _would_ have +N * been written, i.e. the length of src plus the original length +N * of dst. Thus, the operation succeeded without truncation if +N * and only if ret < len; otherwise, the value in ret tells you +N * how big to make dst if you decide to reallocate it. (That +N * value does _not_ include the NUL.) +N * +N * If no NUL is encountered within the first len bytes of dst, +N * then the length of dst is considered to have been equal to +N * len for the purposes of the return value (as if there were a +N * NUL at dst[len]). Thus, the return value in this case is len +N * + strlen(src). +N * +N * This is a BSD-derived library extension, which we are +N * permitted to declare in a standard header because ISO defines +N * function names beginning with 'str' as reserved for future +N * expansion of . +N */ +N +Nextern _ARMABI void _membitcpybl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpybb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpybb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpyhb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpyhb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitcpywb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitcpywb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovebb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovebb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovehb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovehb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewl(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewl(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +Nextern _ARMABI void _membitmovewb(void * /*dest*/, const void * /*src*/, int /*destoffset*/, int /*srcoffset*/, size_t /*nbits*/) __attribute__((__nonnull__(1,2))); +Xextern __declspec(__nothrow) void _membitmovewb(void * , const void * , int , int , size_t ) __attribute__((__nonnull__(1,2))); +N /* +N * Copies or moves a piece of memory from one place to another, +N * with one-bit granularity. So you can start or finish a copy +N * part way through a byte, and you can copy between regions +N * with different alignment within a byte. +N * +N * All these functions have the same prototype: two void * +N * pointers for destination and source, then two integers +N * giving the bit offset from those pointers, and finally the +N * number of bits to copy. +N * +N * Just like memcpy and memmove, the "cpy" functions copy as +N * fast as they can in the assumption that the memory regions +N * do not overlap, while the "move" functions cope correctly +N * with overlap. +N * +N * Treating memory as a stream of individual bits requires +N * defining a convention about what order those bits are +N * considered to be arranged in. The above functions support +N * multiple conventions: +N * +N * - the "bl" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in little-endian fashion, so that the LSB comes +N * first. (For example, membitcpybl(a,b,0,7,1) would copy +N * the MSB of the byte at b to the LSB of the byte at a.) +N * +N * - the "bb" functions consider the unit of memory to be the +N * byte, and consider the bits within each byte to be +N * arranged in big-endian fashion, so that the MSB comes +N * first. +N * +N * - the "hl" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in little-endian fashion. +N * +N * - the "hb" functions consider the unit of memory to be the +N * 16-bit halfword, and consider the bits within each word +N * to be arranged in big-endian fashion. +N * +N * - the "wl" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in little-endian fashion. +N * +N * - the "wb" functions consider the unit of memory to be the +N * 32-bit word, and consider the bits within each word to be +N * arranged in big-endian fashion. +N */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N #endif /* __STRING_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STRING_NO_EXPORTS +S using ::std::size_t; +S using ::std::memcpy; +S using ::std::memmove; +S using ::std::strcpy; +S using ::std::strncpy; +S using ::std::strcat; +S using ::std::strncat; +S using ::std::memcmp; +S using ::std::strcmp; +S using ::std::strncmp; +S using ::std::strcasecmp; +S using ::std::strncasecmp; +S using ::std::strcoll; +S using ::std::strxfrm; +S using ::std::memchr; +S using ::std::strchr; +S using ::std::strcspn; +S using ::std::strpbrk; +S using ::std::strrchr; +S using ::std::strspn; +S using ::std::strstr; +S using ::std::strtok; +S#ifndef __STRICT_ANSI__ +S using ::std::strtok_r; +S#endif +S using ::std::_strtok_r; +S using ::std::memset; +S using ::std::strerror; +S using ::std::strlen; +S using ::std::strlcpy; +S using ::std::strlcat; +S using ::std::_membitcpybl; +S using ::std::_membitcpybb; +S using ::std::_membitcpyhl; +S using ::std::_membitcpyhb; +S using ::std::_membitcpywl; +S using ::std::_membitcpywb; +S using ::std::_membitmovebl; +S using ::std::_membitmovebb; +S using ::std::_membitmovehl; +S using ::std::_membitmovehb; +S using ::std::_membitmovewl; +S using ::std::_membitmovewb; +S #endif /* __STRING_NO_EXPORTS */ +N #endif /* __cplusplus */ +N +N#endif +N +N/* end of string.h */ +N +L 19 "..\..\src\common\tau_log.h" 2 +N#include +L 1 "C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h" 1 +N/* stdarg.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.8 */ +N/* Copyright (C) Codemist Ltd., 1988 */ +N/* Copyright (C) ARM Ltd., 1991-1999. All rights reserved */ +N +N/* +N * RCS $Revision$ +N * Checkin $Date$ +N * Revising $Author: agrant $ +N */ +N +N#ifndef __stdarg_h +N#define __stdarg_h +N#define __ARMCLIB_VERSION 5060037 +N +N #ifndef __STDARG_DECLS +N #define __STDARG_DECLS +N +N #undef __CLIBNS +N +N #ifdef __cplusplus +S namespace std { +S #define __CLIBNS ::std:: +S extern "C" { +N #else +N #define __CLIBNS +N #endif /* __cplusplus */ +N +N/* +N * stdarg.h declares a type and defines macros for advancing through a +N * list of arguments whose number and types are not known to the called +N * function when it is translated. A function may be called with a variable +N * number of arguments of differing types. Its parameter list contains one or +N * more parameters. The rightmost parameter plays a special role in the access +N * mechanism, and will be called parmN in this description. +N */ +N +N/* N.B. is required to declare vfprintf() without defining */ +N/* va_list. Clearly the type __va_list there must keep in step. */ +N#ifdef __clang__ +S typedef __builtin_va_list va_list; +S #define va_start(ap, param) __builtin_va_start(ap, param) +S #define va_end(ap) __builtin_va_end(ap) +S #define va_arg(ap, type) __builtin_va_arg(ap, type) +S #if __STDC_VERSION__ >= 199900L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) +S #define va_copy(dest, src) __builtin_va_copy(dest, src) +S #endif +N#else +N #ifdef __TARGET_ARCH_AARCH64 +S typedef struct __va_list { +S void *__stack; +S void *__gr_top; +S void *__vr_top; +S int __gr_offs; +S int __vr_offs; +S } va_list; +N #else +N typedef struct __va_list { void *__ap; } va_list; +N #endif +N /* +N * an array type suitable for holding information needed by the macro va_arg +N * and the function va_end. The called function shall declare a variable +N * (referred to as ap) having type va_list. The variable ap may be passed as +N * an argument to another function. +N * Note: va_list is an array type so that when an object of that type +N * is passed as an argument it gets passed by reference. +N */ +N #define va_start(ap, parmN) __va_start(ap, parmN) +N +N /* +N * The va_start macro shall be executed before any access to the unnamed +N * arguments. The parameter ap points to an object that has type va_list. +N * The va_start macro initialises ap for subsequent use by va_arg and +N * va_end. The parameter parmN is the identifier of the rightmost parameter +N * in the variable parameter list in the function definition (the one just +N * before the '...'). If the parameter parmN is declared with the register +N * storage class an error is given. +N * If parmN is a narrow type (char, short, float) an error is given in +N * strict ANSI mode, or a warning otherwise. +N * Returns: no value. +N */ +N #define va_arg(ap, type) __va_arg(ap, type) +N +N /* +N * The va_arg macro expands to an expression that has the type and value of +N * the next argument in the call. The parameter ap shall be the same as the +N * va_list ap initialised by va_start. Each invocation of va_arg modifies +N * ap so that successive arguments are returned in turn. The parameter +N * 'type' is a type name such that the type of a pointer to an object that +N * has the specified type can be obtained simply by postfixing a * to +N * 'type'. If type is a narrow type, an error is given in strict ANSI +N * mode, or a warning otherwise. If the type is an array or function type, +N * an error is given. +N * In non-strict ANSI mode, 'type' is allowed to be any expression. +N * Returns: The first invocation of the va_arg macro after that of the +N * va_start macro returns the value of the argument after that +N * specified by parmN. Successive invocations return the values of +N * the remaining arguments in succession. +N * The result is cast to 'type', even if 'type' is narrow. +N */ +N +N#define __va_copy(dest, src) ((void)((dest) = (src))) +N +N#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__) || (defined(__cplusplus) && 201103L <= __cplusplus) +X#if !0L || (1L && 199901L <= 199901L) || (0L && 201103L <= __cplusplus) +N /* va_copy is in C99 and non-strict C90 and non-strict C++ +N * __va_copy is always present. +N */ +N #define va_copy(dest, src) ((void)((dest) = (src))) +N +N /* The va_copy macro makes the va_list dest be a copy of +N * the va_list src, as if the va_start macro had been applied +N * to it followed by the same sequence of uses of the va_arg +N * macro as had previously been used to reach the present state +N * of src. +N */ +N#endif +N +N#define va_end(ap) __va_end(ap) +N /* +N * The va_end macro facilitates a normal return from the function whose +N * variable argument list was referenced by the expansion of va_start that +N * initialised the va_list ap. If the va_end macro is not invoked before +N * the return, the behaviour is undefined. +N * Returns: no value. +N */ +N#endif /* __clang__ */ +N +N #ifdef __cplusplus +S } /* extern "C" */ +S } /* namespace std */ +N #endif /* __cplusplus */ +N +N #ifdef __GNUC__ +N /* be cooperative with glibc */ +N typedef __CLIBNS va_list __gnuc_va_list; +X typedef va_list __gnuc_va_list; +N #define __GNUC_VA_LIST +N #undef __need___va_list +N #endif +N +N #endif /* __STDARG_DECLS */ +N +N #ifdef __cplusplus +S #ifndef __STDARG_NO_EXPORTS +S using ::std::va_list; +S #endif +N #endif /* __cplusplus */ +N#endif +N +N/* end of stdarg.h */ +N +L 20 "..\..\src\common\tau_log.h" 2 +N#include "ArmCM0.h" +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N#ifdef LOG_TAG +S#undef LOG_TAG +N#endif +N#define LOG_TAG "tau_log" +N#define LOG_CURREN_LEVEL kLOG_LEVEL_DBG /* 配置打印等级 TODO:每个模块可配置打印等级 */ +N#define LOG_BUF_SIZE (256) /* 配置打印缓存的大小 */ +N +N/* +N * Using the following three macros for conveniently logging. +N */ +N#define TAU_LOGD(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGD(format,...) do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGI(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGI(format,...) do { tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N#define TAU_LOGE(format,...) \ +N do { \ +N tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ +N } while (0) +X#define TAU_LOGE(format,...) do { tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); } while (0) +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief log打印等级枚举 +N* +N*/ +Ntypedef enum +N{ +N kLOG_LEVEL_DBG = 0, +N kLOG_LEVEL_INF, +N kLOG_LEVEL_ERR, +N kLOG_LEVEL_NONE /* 不打印任何参数 */ +N} log_level_e; +N +N/** +N* @brief log打印端口枚举 +N* +N*/ +Ntypedef enum +N{ +N LOG_PORT_UART0, /* 使用串口输出打印 */ +N LOG_PORT_UART1, /* 使用串口输出打印 */ +N LOG_PORT_SWD, /* 使用swd输出打印 */ +N LOG_PORT_UNKNOWN +N} log_port_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_init(uint32_t baud_rate, log_port_e log_port); +N +N/** +N* @brief 初始化log系统 +N* @param baud_rate 波特率 +N* @param log_port 打印端口选择 +N* @retval none +N*/ +Nvoid tau_log_printf(log_level_e log_lv, const char *fmt, ...); +N +N#endif +L 13 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "tau_operations.h" +L 1 "..\..\src\common\tau_operations.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_operations.h +N* Description 位操作与字节操作相关定义头文件 +N* Version V0.1 +N* Date 2020-09-07 +N* Author lzy +N *******************************************************************************/ +N#ifndef __TAU_BYTEOPS_H +N#define __TAU_BYTEOPS_H +N +N/** +N * \name 通用位常数定义 +N * @{ +N */ +N +N/** \brief 长整数位数 */ +N#ifndef TAU_BITS_PER_LONG +N#define TAU_BITS_PER_LONG 32 +N#endif +N +N/** \brief 字节位数 */ +N#define TAU_BITS_PER_BYTE 8 +N +N/** @} */ +N +N +N/******************************************************************************/ +N +N/** +N * \name 通用位操作 +N * @{ +N */ +N +N/** \brief bit移位 +N * TAU_BIT(2) is 0x4 +N */ +N#define TAU_BIT(bit) (1u << (bit)) +N +N/** \brief 值移位 +N * TAU_SBF(0xFF, 8) is 0xff00 +N */ +N#define TAU_SBF(value, field) ((value) << (field)) +N +N/** \brief bit置位 +N * TAU_BIT_SET(0, 8) is 0x100 +N */ +N#define TAU_BIT_SET(data, bit) ((data) |= TAU_BIT(bit)) +N +N/** \brief bit清零 +N * TAU_BIT_CLR(0xFF, 2) is 0xfb +N */ +N#define TAU_BIT_CLR(data, bit) ((data) &= ~TAU_BIT(bit)) +N +N/** \brief bit置位, 根据 mask 指定的位 +N * TAU_BIT_SET_MASK(0xF0F0, 0xF00) is 0xfff0 +N */ +N#define TAU_BIT_SET_MASK(data, mask) ((data) |= (mask)) +N +N/** \brief bit清零, 根据 mask 指定的位 +N * TAU_BIT_CLR_MASK(0xFFFF, 0xFF00) is 0xff +N */ +N#define TAU_BIT_CLR_MASK(data, mask) ((data) &= ~(mask)) +N +N/** \brief bit翻转 +N * TAU_BIT_TOGGLE(0xFFFF, 0) is 0xfffe +N * TAU_BIT_TOGGLE(0x0000, 1) is 0x2 +N */ +N#define TAU_BIT_TOGGLE(data, bit) ((data) ^= TAU_BIT(bit)) +N +N/** \brief bit修改 +N * TAU_BIT_MODIFY(0, 8, 1) is 0x100 +N * TAU_BIT_MODIFY(0xFFFF, 1, 0) is 0xfffd +N */ +N#define TAU_BIT_MODIFY(data, bit, value) \ +N ((value) ? TAU_BIT_SET(data, bit) : TAU_BIT_CLR(data, bit)) +X#define TAU_BIT_MODIFY(data, bit, value) ((value) ? TAU_BIT_SET(data, bit) : TAU_BIT_CLR(data, bit)) +N +N/** \brief 测试bit是否置位 +N * TAU_BIT_ISSET(0xF0F1, 1) is 0 +N * TAU_BIT_ISSET(0xF0F2, 1) is 2 +N */ +N#define TAU_BIT_ISSET(data, bit) ((data) & TAU_BIT(bit)) +N +N/** \brief 获取bit值 +N * TAU_BIT_GET(0xF0F1, 1) is 0 +N * TAU_BIT_GET(0xF0F2, 1) is 1 +N */ +N#define TAU_BIT_GET(data, bit) (TAU_BIT_ISSET(data, bit) ? 1 : 0) +N +N/** \brief 检测bit值 +N * TAU_BIT_CHECK(0xF5FF, 4) is 1 +N */ +N#define TAU_BIT_CHECK(data, bit) \ +N (((data) & TAU_BIT(bit)) ? 1 : 0) +X#define TAU_BIT_CHECK(data, bit) (((data) & TAU_BIT(bit)) ? 1 : 0) +N +N/** \brief 获取 n bits 掩码值 +N * TAU_BITS_MASK(2) is 0x3 +N */ +N#define TAU_BITS_MASK(n) (~((~0u) << (n))) +N +N/** \brief 获取位段值 +N * TAU_BITS_GET(0xF5FF, 0x0F00, 8) is 0x5 +N */ +N#define TAU_BITS_GET(data, mask, pos) \ +N (((data) & (mask)) >> (pos)) +X#define TAU_BITS_GET(data, mask, pos) (((data) & (mask)) >> (pos)) +N +N/** \brief 获取位段值 +N * TAU_BITS_CHECK(0xF5FF, 0x0F00) is 1 +N */ +N#define TAU_BITS_CHECK(data, mask) \ +N (((data) & (mask)) ? 1 : 0) +X#define TAU_BITS_CHECK(data, mask) (((data) & (mask)) ? 1 : 0) +N +N/** \brief 修改位段值 +N * TAU_BITS_MODIFY(0xF5FF, 0x0FF0, 0x8A0) is 0xF8AF +N*/ +N#define TAU_BITS_MODIFY(data, clear_mask, set_mask) \ +N (data) = (((data) & (~(clear_mask))) | (set_mask)) +X#define TAU_BITS_MODIFY(data, clear_mask, set_mask) (data) = (((data) & (~(clear_mask))) | (set_mask)) +N +N/** \brief 设置位段值 +N * TAU_WRITE_REG32(0x05FF, 0xFFFA) is 0xFFFA +N*/ +N#define TAU_WRITE_REG32(data, value) ((data) = (value)) +N +N/** \brief 设置位段值 +N * TAU_RAED_REG32(0x05FF) is 0x05FF +N*/ +N#define TAU_RAED_REG32(data) (data) +N +N +N/** @} */ +N +N/******************************************************************************/ +N +N/** +N * \brief 取2-byte整数的高位byte +N * +N * \par 示例 +N * \code +N * uint16_t a = 0x1234; +N * uint16_t b; +N * +N * b = TAU_MSB(a); //b=0x12 +N * \endcode +N */ +N#define TAU_MSB(x) (((x) >> 8) & 0xff) +N +N/** +N * \brief 取2-byte整数的低位byte +N * +N * \par 示例 +N * \code +N * uint16_t a = 0x1234; +N * uint16_t b; +N * +N * b = TAU_LSB(a); //b=0x34 +N * \endcode +N */ +N#define TAU_LSB(x) ((x) & 0xff) +N +N/** +N * \brief 取2-word整数的高位word +N * +N * \par 示例 +N * \code +N * uint32_t a = 0x12345678; +N * uint32_t b; +N * +N * b = TAU_MSW(a); //b=0x1234 +N * \endcode +N */ +N#define TAU_MSW(x) (((x) >> 16) & 0xffff) +N +N/** +N * \brief 取2-word整数的低位word +N * +N * \par 示例 +N * \code +N * uint32_t a = 0x12345678; +N * uint32_t b; +N * +N * b = TAU_LSW(a); //b=0x5678 +N * \endcode +N */ +N#define TAU_LSW(x) ((x) & 0xffff) +N +N/** +N * \brief 交换32-bit整数的高位word和低位word +N * +N * \par 示例 +N * \code +N * uint32_t a = 0x12345678; +N * uint32_t b; +N * +N * b = TAU_WORDSWAP(a); //b=0x56781234 +N * \endcode +N */ +N#define TAU_WORDSWAP(x) (TAU_MSW(x) | (TAU_LSW(x) << 16)) +N +N/** +N * \brief 交换32-bit整数的字节顺序 +N * +N * \par 示例 +N * \code +N * uint32_t a = 0x12345678; +N * uint32_t b; +N * +N * b = TAU_LONGSWAP(a); //b=0x78563412 +N * \endcode +N */ +N#define TAU_LONGSWAP(x) ((TAU_LLSB(x) << 24) | \ +N (TAU_LNLSB(x) << 16) | \ +N (TAU_LNMSB(x) << 8) | \ +N (TAU_LMSB(x))) +X#define TAU_LONGSWAP(x) ((TAU_LLSB(x) << 24) | (TAU_LNLSB(x) << 16) | (TAU_LNMSB(x) << 8) | (TAU_LMSB(x))) +N +N#define TAU_LLSB(x) ((x) & 0xff) /**< \brief 取32bit整数第1个字节 */ +N#define TAU_LNLSB(x) (((x) >> 8) & 0xff) /**< \brief 取32bit整数第2个字节 */ +N#define TAU_LNMSB(x) (((x) >> 16) & 0xff) /**< \brief 取32bit整数第3个字节 */ +N#define TAU_LMSB(x) (((x) >> 24) & 0xff) /**< \brief 取32bit整数第4个字节 */ +N#define TAU_LNSB(x,n) (((x) >> ((n) * 8) ) & 0xff) /**< \brief 取32bit整数第n个字节 ,参数 0 - 3*/ +N +N/** +N * @} +N */ +N +N#endif /* __TAU_BYTEOPS_H */ +N +N/* end of file */ +N +L 14 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "tau_common.h" +N#include "tau_delay.h" +L 1 "..\..\src\common\tau_delay.h" 1 +N/** +N * File Name: tau_delay.h +N * +N * +N * +N * Author: Fortsense 3D Firmware Team +N * +N * Date: 2020/12/04 +N * +N * Project: Taurus +N * +N * Description: +N * +N * HISTORY: +N**/ +N#ifndef _DELAY_H_ +N#define _DELAY_H_ +N#include "stdint.h" +N +N/** +N* @brief delay ms 函数,误差2%以内 +N* @param ms:delay时长 +N* @retval none +N*/ +Nvoid delayMs(uint32_t ms); +N +N/** +N* @brief delay us 函数,误差2%以内 +N* @param us:delay时长 +N* @retval none +N*/ +Nvoid delayUs(uint32_t us); +N +N#endif +L 16 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_dsi_rx_ctrl.h" +L 1 "..\..\src\sdk\include\hal_dsi_rx_ctrl.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_dsi_rx_ctrl.h +N* Description: hal mipi dsi rx path control 头文件 +N* Version: V0.1 +N* Date: 2021-04-06 +N* Author: lzy +N *******************************************************************************/ +N#ifndef __HAL_DSI_RX_CTRL_H__ +N#define __HAL_DSI_RX_CTRL_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_dsi_datatype.h" +L 1 "..\..\src\common\tau_dsi_datatype.h" 1 +N/******************************************************************************* +N* +N* +N* File: tau_dsi_datatype.h +N* Description: mipi dsi 通用头文件 +N* Version: V0.1 +N* Date: 2021-01-13 +N* Author: lzy +N *******************************************************************************/ +N +N#ifndef __MIPI_DSI_COMMON_H__ +N#define __MIPI_DSI_COMMON_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N#define DSC_PPS_SIZE 128 +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief Data Types for Peripheral-sourced Packets,From Mipi DSI Spec +N*/ +Ntypedef enum +N{ +N DSI_ACK_DT_ERROR = 0x02, +N DSI_ACK_DT_EOTP = 0x08, +N DSI_ACK_DT_GEN_SHORT_RESPONSE_1B = 0x11, +N DSI_ACK_DT_GEN_SHORT_RESPONSE_2B = 0x12, +N DSI_ACK_DT_GEN_LONG_RESPONSE = 0x1A, +N DSI_ACK_DT_DCS_LONG_RESPONSE = 0x1C, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_1B = 0x21, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_2B = 0x22, +N DSI_ACK_DT_MAX +N} dsi_ack_data_type_e; +N +N/** +N* @brief Software handle data types +N*/ +Ntypedef enum +N{ +N DSI_RECV_DT_PPS = 0x0A, //Picture Parameter Set +N DSI_RECV_DT_GEN_WRITE_1B = 0x13, //Generic Short WRITE, 1 parameter +N DSI_RECV_DT_GEN_WRITE_2B = 0x23, //Generic Short WRITE, 2 parameters +N DSI_RECV_DT_GEN_READ_0B = 0x04, //Generic READ, no parameters +N DSI_RECV_DT_GEN_READ_1B = 0x14, //Generic READ, 1 parameter +N DSI_RECV_DT_GEN_READ_2B = 0x24, //Generic READ, 2 parameters +N DSI_RECV_DT_DCS_WRITE_0B = 0x05, //DCS Short WRITE, no parameters +N DSI_RECV_DT_DCS_WRITE_1B = 0x15, //DCS Short WRITE, 1 parameter +N DSI_RECV_DT_DCS_READ_0B = 0x06, //DCS READ, no parameters +N DSI_RECV_DT_GEN_WRITE_LONG = 0x29, //Generic Long Write +N DSI_RECV_DT_DCS_WRITE_LONG = 0x39, //DCS Long Write/write_LUT Command Packet +N DSI_RECV_DT_MAX +N} dsi_data_type_e; +N +Ntypedef enum +N{ +N DCS_ENTER_IDLE_MODE = 0x39, +N DCS_ENTER_INVERT_MODE = 0x21, +N DCS_ENTER_NORMAL_MODE = 0x13, +N DCS_ENTER_PARTIAL_MODE = 0x12, +N DCS_ENTER_SLEEP_MODE = 0x10, +N DCS_EXIT_IDLE_MODE = 0x38, +N DCS_EXIT_INVERT_MODE = 0x20, +N DCS_EXIT_SLEEP_MODE = 0x11, +N DCS_GET_3D_CONTROL = 0x3F, +N DCS_GET_ADDRESS_MODE = 0x0B, +N DCS_GET_BLUE_CHANNEL = 0x08, +N DCS_GET_COMPRESSION_MODE = 0x03, +N DCS_GET_DIAGNOSTIC_RESULT = 0x0F, +N DCS_GET_DISPLAY_MODE = 0x0D, +N DCS_GET_GREEN_CHANNEL = 0x07, +N DCS_GET_PIXEL_FORMAT = 0x0C, +N DCS_GET_POWER_MODE = 0x0A, +N DCS_GET_RED_CHANNEL = 0x06, +N DCS_GET_SCANLINE = 0x45, +N DCS_GET_SIGNAL_MODE = 0x0E, +N DCS_NOP = 0x00, +N DCS_READ_DDB_CONTINUE = 0xA8, +N DCS_READ_DDB_START = 0xA1, +N DCS_READ_MEMORY_CONTINUE = 0x3E, +N DCS_READ_MEMORY_START = 0x2E, +N DCS_SET_3D_CONTROL = 0x3D, +N DCS_SET_ADDRESS_MODE = 0x36, +N DCS_SET_COLUMN_ADDRESS = 0x2A, +N DCS_SET_DISPLAY_OFF = 0x28, +N DCS_SET_DISPLAY_ON = 0x29, +N DCS_SET_GAMMA_CURVE = 0x26, +N DCS_SET_PAGE_ADDRESS = 0x2B, +N DCS_SET_PARTIAL_COLUMNS = 0x31, +N DCS_SET_PARTIAL_ROWS = 0x30, +N DCS_SET_PIXEL_FORMAT = 0x3A, +N DCS_SET_SCROLL_AREA = 0x33, +N DCS_SET_SCROLL_START = 0x37, +N DCS_SET_TEAR_OFF = 0x34, +N DCS_SET_TEAR_ON = 0x35, +N DCS_SET_TEAR_SCANLINE = 0x44, +N DCS_SET_VSYNC_TIMING = 0x40, +N DCS_SOFT_RESET = 0x01, +N DCS_WRITE_LUT = 0x2D, +N DCS_WRITE_MEMORY_CONTINUE = 0x3C, +N DCS_WRITE_MEMORY_START = 0x2C +N} dsi_dcs_cmd_type_e; +N +N/** +N* @brief video data transfer mode +N*/ +Ntypedef enum +N{ +N DSI_DATA_VIDEO_MODE = 0, +N DSI_DATA_CMD_MODE = 1, +N DSI_DATA_MODE_MAX +N} dsi_video_data_mode_e; +N +N/** +N* @brief dsi virtual channel +N*/ +Ntypedef enum +N{ +N DSI_VC_0 = 0, +N DSI_VC_1 = 1, +N DSI_VC_2 = 2, +N DSI_VC_3 = 3, +N DSI_VC_MAX +N} dsi_virtual_channel_e; +N +N/** +N* @brief video data mode +N*/ +Ntypedef enum +N{ +N DSI_FRAME_RATE_60HZ = 0, +N DSI_FRAME_RATE_90HZ = 1, +N DSI_FRAME_RATE_120HZ = 2, +N DSI_FRAME_RATE_144HZ = 3, +N DSI_FRAME_RATE_160HZ = 4, +N DSI_FRAME_RATE_MAX +N} dsi_video_frame_rate_e; +N +N/** +N* @brief dsi rx color coding +N*/ +Ntypedef enum +N{ +N DSI_RGB565 = 1, +N DSI_RGB666 = 2, /*!< 18 bbp(18bits per pixel) */ +N DSI_RGB666_LOOSELY = 3, /*!< 24 bbp(24bits per pixel) */ +N DSI_RGB888 = 4, /*!< 24 bbp(24bits per pixel) */ +N DSI_RGB10_10_10 = 5, +N DSI_RGB12_12_12 = 6, +N DSI_YCbCr422_16 = 7, +N DSI_PENTILE_16 = DSI_YCbCr422_16, +N DSI_YCbCr422_20_LOOSELY = 8, +N DSI_YCbCr422_24 = 9, +N DSI_YCbCr420_12 = 10, +N DSI_DSC_STREAM = 11, +N DSI_COLOR_CODE_MAX +N} dsi_color_code_e; +N +N/** +N* @brief dsi endianness type +N*/ +Ntypedef enum +N{ +N DPI_ENDIAN_RGB = 0, +N DPI_ENDIAN_BGR +N} dsi_endianness_e; +N +N/** +N* @brief mipi lane number +N*/ +Ntypedef enum +N{ +N DSI_LANE_1 = 1, +N DSI_LANE_2 = 2, +N DSI_LANE_3 = 3, +N DSI_LANE_4 = 4, +N DSI_LANE_NUME_MAX +N} dsi_lane_nume_e; +N +N/** +N* @brief video mode +N*/ +Ntypedef enum +N{ +N DSI_NONBURST_PULSE = 0, +N DSI_NONBURST_EVENT = 1, +N DSI_BURST_MODE = 2, +N DSI_VIDEO_MODE_MAX +N} dsi_video_mode_type_e; +N +N/** +N* @brief panel init cmd transfer type +N*/ +Ntypedef enum +N{ +N DSI_CMD_TX_HS = 0, +N DSI_CMD_TX_LP = 1 +N} dsi_tx_cmd_tx_type_e; +N +N/** +N* @brief angle of rotation +N*/ +Ntypedef enum +N{ +N VIDOE_ROT_ANGLE_0 = 0, /* 不旋转 */ +N VIDOE_ROT_ANGLE_90 = 1, /* 旋转90度 */ +N VIDOE_ROT_ANGLE_180 = 2, /* 旋转180度 */ +N VIDOE_ROT_ANGLE_270 = 3, /* 转转270度 */ +N VIDOE_ROT_ANGLE_MAX +N} video_rotate_angle_e; +N +N/** +N* @brief mipi rx lane swap +N软件配置 PIN28&PIN27 PIN26&PIN25 PIN24&PIN23 PIN22&PIN21 PIN20&PIN19 +NRX_LANE_SWAP_0123 D0P&D0N D1P&D1N CLKP&CLKN D2P&D2N D3P&D3N +NRX_LANE_SWAP_3210 D3P&D3N D2P&D2N CLKP&CLKN D1P&D1N D0P&D0N +NRX_LANE_SWAP_2103(default) D2P&D2N D1P&D1N CLKP&CLKN D0P&D0N D3P&D3N +NRX_LANE_SWAP_3012 D3P&D3N D0P&D0N CLKP&CLKN D1P&D1N D2P&D2N +N*/ +Ntypedef enum +N{ +N RX_LANE_SWAP_0123 = 0x0, +N RX_LANE_SWAP_3210 = 0x1, +N RX_LANE_SWAP_2103 = 0x2, +N RX_LANE_SWAP_DEFAULT_ORDER = 0x2, /* 默认原理图为2103顺序 */ +N RX_LANE_SWAP_3012 = 0x3, +N RX_LANE_SWAP_MAX +N} dsi_rx_lane_swap_e; +N +N/** +N* @brief mipi P/N lane swap flag +N* eg: pn_swap = RX_LANE_0_PN_SWAP | RX_LANE_CLK_PN_SWAP; +N* 表示 lane0 与 CLK 的P跟N交换,其他lane不变。 +N* 注意这里的lane表示的是进行完lane swap的lane,如lane swap配置RX_LANE_SWAP_3012,再配置RX_LANE_0_PN_SWAP则表示PIN26&PIN25进行PN交换,由D0P&D0N变成D0N&D0P +N*/ +Ntypedef enum +N{ +N RX_LANE_0_PN_SWAP = 0x1, +N RX_LANE_1_PN_SWAP = 0x2, +N RX_LANE_2_PN_SWAP = 0x4, +N RX_LANE_3_PN_SWAP = 0x8, +N RX_LANE_CLK_PN_SWAP = 0x10 +N} dsi_rx_lane_pn_swap_e; +N +N/** +N* @brief error processing level +N*/ +Ntypedef enum +N{ +N ERR_HANDLE_NONE = 0, +N ERR_HANDLE_L1 = 1, +N ERR_HANDLE_L2 = 2, +N ERR_HANDLE_L3 = 3, +N ERR_HANDLE_MAX +N} hal_err_handle_level_e; +N +N/** +N* @brief flow control mode +N*/ +Ntypedef enum +N{ +N FC_AUTO_MODE = 0, /* 自动匹配模式,根据base info配置匹配1-4 */ +N FC_V2V_NORMAL_MODE = 1, /* Video to Video 模式转换 */ +N FC_V2C_NORMAL_MODE = 2, /* Video to Command 模式转换 */ +N FC_C2V_NORMAL_MODE = 3, /* Command to Video 模式转换 */ +N FC_C2C_NORMAL_MODE = 4, /* Command to Command 模式转换 */ +N FC_PRO_MOTION_MODE = 6, /* 自适应帧率转换(LTPO模式) */ +N FC_PRO_MOTION_MODE_2 = 5, /* 自适应帧率转换(LTPO模式) */ +N FC_PRO_MOTION_WITH_PU_MODE = 7, /* 自适应帧率带PU */ +N FC_V2V_AUTO_SYCN_MODE = 8, /* Video to Video 软件同步 */ +N FC_V2V_DIRECT_MODE = 9, /* Video to Video 直通模式 */ +N FC_MODE_MAX +N} flow_control_mode_e; +N +N/** +N* @brief transform 基本信息 +N*/ +Ntypedef struct +N{ +N uint16_t top; +N uint16_t bottom; +N uint16_t left; +N uint16_t right; +N bool enable; +X _Bool enable; +N} pic_edge_info_t; +N +N/** +N* @brief transform 基本信息 +N*/ +Ntypedef struct +N{ +N uint32_t src_w; /* mipi rx 接收的 width */ +N uint32_t src_h; /* mipi rx 接收的 height */ +N uint32_t dst_w; /* mipi tx 发送的 width */ +N uint32_t dst_h; /* mipi tx 发送的 height */ +N dsi_video_frame_rate_e src_frate; /* mipi rx 接收的frame rate */ +N dsi_video_data_mode_e src_mode; /* mipi rx 接收video 数据传输模式(video/cmd mode) */ +N dsi_video_data_mode_e dst_mode; /* mipi tx 输出video 数据传输模式(video/cmd mode) */ +N uint16_t pn_swap; /* mipi P/N swap标志位, rx可配置/tx暂不支持 */ +N} dsi_base_trans_info_t; +N +N/** +N* @brief transform 基本信息 +N*/ +Ntypedef struct +N{ +N bool mirror_en; /* 对video 做水平镜像标志位 */ +X _Bool mirror_en; +N bool pu_optimize; /* 用于优化PU显示效果,默认为false;true:优化PU显示显示效果,高功耗;false:普通PU模式,低功耗 */ +X _Bool pu_optimize; +N video_rotate_angle_e rot_angle; /* 对video 做旋转的角度 */ +N flow_control_mode_e flow_control_mode; /* 图像数据流控制模式 */ +N pic_edge_info_t crop_info; /* 图像边缘裁剪配置 not impletmented */ +N pic_edge_info_t blank_info; /* 图像边缘补黑配置 not impletmented */ +N bool bw_optimize; /* 带宽自动检查,默认打开 */ +X _Bool bw_optimize; +N uint8_t pq_type; /* picture quality,参数为 pq_type_e */ +N} dsi_base_extra_info_t; +N +N/** +N* @brief ccm系数 +N*/ +Ntypedef struct +N{ +N uint32_t coef_c00; +N uint32_t coef_c01; +N uint32_t coef_c02; +N uint32_t coef_c10; +N uint32_t coef_c11; +N uint32_t coef_c12; +N uint32_t coef_c20; +N uint32_t coef_c21; +N uint32_t coef_c22; +N} ccm_coef_t; +N +N/** +N* @brief hight performan mode level +N*/ +Ntypedef enum +N{ +N HIGHT_PERFORMAN_NONE = 0, +N HIGHT_PERFORMAN_L1 = 1, +N HIGHT_PERFORMAN_L2 = 2, +N HIGHT_PERFORMAN_MAX +N} hight_performan_mode_e; +N +N/** +N* @brief TX False color去伪彩参数结构体 +N*/ +Ntypedef struct +N{ +N uint16_t edgemedslope; +N uint16_t desatslope; +N} dsi_tx_fc_t; +N +N/** +N* @brief TX 边缘增强参数结构体 +N*/ +Ntypedef struct +N{ +N bool y_enh_method; +X _Bool y_enh_method; +N uint8_t enhance_str; +N uint16_t enhance_slope; +N uint16_t boundscale_low; +N uint16_t boundscale_high; +N} dsi_tx_edge_enh_t; +N +N/** +N* @brief TX 边缘检测参数结构体 +N*/ +Ntypedef struct +N{ +N uint8_t edge_thr; +N bool use_large_kernel; +X _Bool use_large_kernel; +N} dsi_tx_edge_dect_t; +N +N/** +N* @brief TX bcsa 参数结构体 +N*/ +Ntypedef struct +N{ +N int8_t brightness; /* 亮度调整, 范围-127 - 127 */ +N uint16_t contrast; /* 对比度调整,范围0 - 4095 */ +N uint16_t saturation; /* 饱和度调整,范围0 - 4095 */ +N} dsi_tx_bcs_t; +N +N/** +N* @brief partial display 参数结构体 +N*/ +Ntypedef struct +N{ +N uint32_t st_line; /*部分显示起始行位置*/ +N uint32_t st_col; /*部分显示起始列位置*/ +N uint32_t end_line; /*部分显示结束行位置*/ +N uint32_t end_col; /*部分显示结束列位置*/ +N uint8_t value_r; /*部分显示背景色R值*/ +N uint8_t value_g; /*部分显示背景色G值*/ +N uint8_t value_b; /*部分显示背景色B值*/ +N} dsi_tx_par_dis_t; +N +N#endif //__MIPI_DSI_COMMON_H__ +L 17 "..\..\src\sdk\include\hal_dsi_rx_ctrl.h" 2 +N#include "tau_common.h" +N#include "tau_log.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N#define RX_DCS_QUEUE_MAX_SIZE 20 /* DCS存储队列长度 */ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +Ntypedef struct hal_dcs_execute_entry_t hal_dcs_execute_entry_t; +N +Ntypedef struct hal_dcs_packet_t hal_dcs_packet_t; +N +Ntypedef struct hal_dsi_rx_ctrl_handle_t hal_dsi_rx_ctrl_handle_t; +N +N/* DCS CMD 回调函数, 注册进cus_dcs_entry_table里, 匹配对应的DCS 后回调*/ +Ntypedef bool (*hal_dsi_rx_ctrl_dcs_execute)(hal_dsi_rx_ctrl_handle_t *rx_handle, hal_dcs_packet_t *dcs_packet); +Xtypedef _Bool (*hal_dsi_rx_ctrl_dcs_execute)(hal_dsi_rx_ctrl_handle_t *rx_handle, hal_dcs_packet_t *dcs_packet); +N +N/* AP 读cmd 回调, 需要快速回CMD 时可注册, 为NULL 时DSC 读指令与写指令经过parse后由cus_dcs_entry_table回调 */ +Ntypedef bool (*hal_dsi_rx_ctrl_read_entry)(uint8_t data_type, uint8_t dcs_cmd, uint8_t param); +Xtypedef _Bool (*hal_dsi_rx_ctrl_read_entry)(uint8_t data_type, uint8_t dcs_cmd, uint8_t param); +N +N/* AP PPS 更新回调,参数为PPS 以及从PPS 里解析出来的picture width/height, 用于分辨率切换, 不注册该接口时内部处理PPS */ +Ntypedef bool (*hal_dsi_rx_ctrl_pps_entry)(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height); +Xtypedef _Bool (*hal_dsi_rx_ctrl_pps_entry)(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height); +N +N/** +N* @brief hal_rx_event_e select +N*/ +Ntypedef enum hal_rx_event_e +N{ +N HAL_RX_FS_EVENT = 0x1, /* Frame start event */ +N HAL_RX_LINE_EVENT = 0x2, /* Frame receive line event */ +N HAL_RX_END_EVENT = 0x4, /* Frame end event */ +N} hal_rx_event_e; +N +N/** +N* @brief rx pq filter index +N* 默认使用linear,特殊场景使用OPT filter +N* RX_FLT_OPT_0最模糊,边缘最平滑,index越大越清晰,边缘锯齿会加重 +N*/ +Ntypedef enum +N{ +N RX_FLT_OPT_0 = 0, +N RX_FLT_OPT_1 = 1, +N RX_FLT_OPT_2 = 2, +N RX_FLT_OPT_3 = 3, +N RX_FLT_OPT_4 = 4, +N RX_FLT_OPT_5 = 5, +N RX_FLT_OPT_6 = 6, +N RX_FLT_OPT_7 = 7, +N RX_FLT_OPT_8 = 8, +N RX_FLT_OPT_9 = 9, +N RX_FLT_OPT_10 = 10, +N RX_FLT_LINEAR = 11, +N RX_FLT_MAX +N} hal_dsi_rx_pq_filter_e; +N +N/* RX debug 回调函数,用于获取frame start 等功能debug */ +Ntypedef void (*hal_dsi_rx_ctrl_event_entry)(hal_rx_event_e event, void *data); +N +N/** +N* @brief dsi rx ctrl handle struct +N*/ +Ntypedef struct hal_dsi_rx_ctrl_handle_t +N{ +N dsi_base_trans_info_t base_info; /* mipi video 转换基本信息 */ +N dsi_base_extra_info_t extra_info; /* 新增旋转、镜像配置 */ +N dsi_color_code_e rx_color_mode; /* 输入color mode */ +N dsi_lane_nume_e rx_lanes; /* mipi data lane */ +N dsi_video_mode_type_e rx_nonburst_models; /* transmission packet sequences */ +N bool compress_en; /* DSC 压缩标志 */ +X _Bool compress_en; +N uint32_t rx_hsclk_rate; /* mipi 高速信号lane rate */ +N uint8_t rx_dsc_pps[DSC_PPS_SIZE]; /* DSC 压缩PPS参数 */ +X uint8_t rx_dsc_pps[128]; +N const hal_dcs_execute_entry_t *cus_dcs_entry_table; /* DCS处理函数列表 */ +N hal_dsi_rx_ctrl_read_entry rx_dcs_read_entry; /* Host读指令数据函数,为NULL时由rx_dcs_queue注册cmd处理 */ +N hal_dsi_rx_ctrl_pps_entry pps_update_entry; /* PPS Update 时回调函数,用于分辨率切换更新PPS,为NULL时内部处理 */ +N bool used; /* handle使用标志位 */ +X _Bool used; +N hal_err_handle_level_e err_handler_level; /* RX接收错误的时候对模块做reset等级, 等级越高reset模块越多 */ +N uint8_t rx_strength; /* 用于调节RX信号强度,仅适用于开启内阻校准模式,档位0~7,默认3 */ +N hight_performan_mode_e hight_performan_mode; /* 高性能模式等级,参考hight_performan_mode_e */ +N dsi_rx_lane_swap_e rx_lane_swap; /* lane swap default order is 2103*/ +N hal_dsi_rx_pq_filter_e rx_pq_index; /* 画质调整滤波器,默认为linear最优效果,特殊场景使用OPT filter */ +N} hal_dsi_rx_ctrl_handle_t; +N +N/** +N* @brief DCS command execute entry +N*/ +Ntypedef struct hal_dcs_execute_entry_t +N{ +N uint32_t dcs_command; /* DCS command */ +N hal_dsi_rx_ctrl_dcs_execute execute_func; /* command 对应处理函数 */ +N bool immediately_func; /* 执行机制:true-在中断里立即执行,false-加入DCS队列异步执行 */ +X _Bool immediately_func; +N} hal_dcs_execute_entry_t; +N +N/** +N* @brief 存储 DCS packet 结构体 +N*/ +Ntypedef struct hal_dcs_packet_t +N{ +N uint32_t data_type; /* data type */ +N uint32_t dcs_command; /* dcs command */ +N uint32_t param_length; /* dcs param length */ +N uint8_t *packet_param; /* dcs param */ +N uint16_t crc_data; /* dcs crc */ +N const hal_dcs_execute_entry_t *dcs_execute_entry; /* dcs packet 处理函数入口*/ +N} hal_dcs_packet_t; +N +N/** +N* @brief video mode 下 RX pattern参数结构体 +N*/ +Ntypedef struct +N{ +N uint32_t ipi_pg_hsa; +N uint32_t ipi_pg_hbp; +N uint32_t ipi_pg_hfp; +N uint32_t ipi_pg_vsa; +N uint32_t ipi_pg_vbp; +N uint32_t ipi_pg_vfp; +N uint32_t frame_rate; +N} hal_dsi_rx_ipi_pg_t; +N +N +N/** +N* @brief dcs command filter select +N*/ +Ntypedef enum +N{ +N HAL_RX_DCS_FILTER_0 = 0x0, +N HAL_RX_DCS_FILTER_1 = 0x1, +N HAL_RX_DCS_FILTER_2 = 0x2, +N HAL_RX_DCS_FILTER_3 = 0x3, +N HAL_RX_DCS_FILTER_4 = 0x4, +N HAL_RX_DCS_FILTER_5 = 0x5, +N HAL_RX_DCS_FILTER_6 = 0x6, +N HAL_RX_DCS_FILTER_7 = 0x7, +N HAL_RX_DCS_FILTER_8 = 0x8, +N HAL_RX_DCS_FILTER_9 = 0x9, +N HAL_RX_DCS_FILTER_A = 0xA, +N HAL_RX_DCS_FILTER_B = 0xB, +N HAL_RX_DCS_FILTER_MAX +N} hal_rx_dcs_filter_sel_e; +N +N +N/** +N* @brief dcs command filter select +N*/ +Ntypedef enum +N{ +N HAL_RX_QRESP_CODE0 = 0, +N HAL_RX_QRESP_CODE1 = 1, +N HAL_RX_QRESP_CODE2 = 2, +N HAL_RX_QRESP_CODE3 = 3, +N HAL_RX_QRESP_CODE4 = 4, +N HAL_RX_QRESP_CODE5 = 5, +N HAL_RX_QRESP_CODE6 = 6, +N HAL_RX_QRESP_CODE7 = 7, +N HAL_RX_QRESP_MAX +N} hal_rx_dcs_qresp_e; +N +N/** +N* @brief pentile source color format +N*/ +Ntypedef enum +N{ +N PENTILE_SRC_FORMAT_RGB = 0x0, +N PENTILE_SRC_FORMAT_BGR = 0x1, +N PENTILE_SRC_FORMAT_RGBG_BGRG = 0x8, +N PENTILE_SRC_FORMAT_GBGR_GRGB = 0x9, +N PENTILE_SRC_FORMAT_BGRG_RGBG = 0xA, +N PENTILE_SRC_FORMAT_GRGB_GBGR = 0xB, +N PENTILE_SRC_FORMAT_RGBG_RGBG = 0xC, +N PENTILE_SRC_FORMAT_GBGR_GBGR = 0xD, +N PENTILE_SRC_FORMAT_BGRG_BGRG = 0xE, +N PENTILE_SRC_FORMAT_GRGB_GRGB = 0xF, +N PENTILE_SRC_FORMAT_MAX +N} pentile_src_format_e; +N +N/** +N* @brief 设置RX CLK +N*/ +Ntypedef enum +N{ +N RX_CLK_100M = 0, +N RX_CLK_150M = 1, +N RX_CLK_200M = 2, +N RX_CLK_300M = 3, +N RX_CLK_40M = 4, +N RX_CLK_80M = 5, +N RX_CLK_MAX +N} hal_rx_clk_e; +N +N/** +N* @brief pq_type_e select +N*/ +Ntypedef enum +N{ +N PQ_TYPE_DEFAULT = 0x0, +N PQ_TYPE_LIMIT = 0x1, +N PQ_TYPE_MAX +N} pq_type_e; +N +N/** +N* @brief 线的粗细 +N*/ +Ntypedef enum +N{ +N LINE_WEIGHT_FINE = 0, +N LINE_WEIGHT_MEDIUM = 1, +N LINE_WEIGHT_BOLD = 2, +N LINE_WEIGHT_MAX +N} line_weight_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N +N/** +N* @brief 创建dsi rx ctrl handle (释放时需调用hal_dsi_rx_ctrl_release_handle) +N* @param none +N* @retval dsi rx handle +N*/ +Nhal_dsi_rx_ctrl_handle_t *hal_dsi_rx_ctrl_create_handle(void); +N +N/** +N* @brief 释放dsi rx ctrl handle +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_release_handle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_release_handle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 设置rx ctrl handle 里的 PPS 参数 +N* @param rx_ctrl_handle: dsi rx handle +N* @param pps: pps 参数 +N* @param pps_size: pps 参数长度 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_pre_init_pps(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pps[], uint32_t pps_size); +X_Bool hal_dsi_rx_ctrl_pre_init_pps(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pps[], uint32_t pps_size); +N +N/** +N* @brief 初始化dsi rx 模块 +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief dsi rx 模块去初始化 +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_deinit(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_deinit(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 启动dsi rx +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_start(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_start(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 重新配置dsi rx参数并恢复状态 (debug使用, 重新配置rx_ctrl_handle参数后调用该接口重启) +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_restart(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_restart(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 停止dsi rx +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_stop(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_stop(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 手动设置RX clk,一般RX CLK 由底层自动计算,用于特殊video mode场景出现FIFO FULL情况调试使用 +N* @param rxbr_clk: rx clk, 需要大于hs_lane_rate/8 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_set_rx_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_clk_e rxbr_clk); +X_Bool hal_dsi_rx_ctrl_set_rx_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_clk_e rxbr_clk); +N +N/** +N* @brief 发送 MIPI HOST的读响应 CMD +N* @param rx_ctrl_handle: dsi rx handle +N* @param data_type: data type +N* @param vc: virtual channel +N* @param cmd_count: ack command 的长度 +N* @param ... : 需要发送的command(数量与cmd_count 配置一致) +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_send_ack_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_ack_data_type_e data_type, dsi_virtual_channel_e vc, uint8_t cmd_count, ...); +X_Bool hal_dsi_rx_ctrl_send_ack_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_ack_data_type_e data_type, dsi_virtual_channel_e vc, uint8_t cmd_count, ...); +N +N/** +N* @brief 使用数组方式回复短包,与hal_dsi_rx_ctrl_send_ack_cmd功能一致 +N* @param rx_ctrl_handle: dsi rx handle +N* @param data_size: 数组长度,固定为4 +N* @param data: 回复cmd数据,数据排列有严格规定: +N* data[0]:DI(data type) +N* data[1]:data 0 +N* data[2]:data 1 +N* data[3]:内部pkt type,短包固定为0 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_ack_short_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]); +X_Bool hal_dsi_rx_ctrl_ack_short_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]); +N +N/** +N* @brief 使用数组方式回复长包,与hal_dsi_rx_ctrl_send_ack_cmd功能一致 +N* @param rx_ctrl_handle: dsi rx handle +N* @param data_size: 数组长度,为Word Count + header长度 (header固定为4) +N* @param data: 回复cmd数据,数据排列有严格规定: +N* data[0]:DI(data type) +N* data[1]:wc 0 (Word Count 低八位) +N* data[2]:wc 1 (Word Count 高八位) +N* data[3]:内部pkt type,长包固定为1 +N* data[N]:长包数据 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_ack_long_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t data_size, uint8_t data[]); +X_Bool hal_dsi_rx_ctrl_ack_long_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t data_size, uint8_t data[]); +N +N/** +N* @brief 异步处理DSC接口,执行cus_dcs_entry_table里对应DCS immediately_func为false的函数 +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true - 正常处理1个DSC , false - 无DSC 处理 +N*/ +Nbool hal_dsi_rx_ctrl_dcs_async_handler(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_dcs_async_handler(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 使用硬件filter丢弃不需要处理的CMD,避免MCU资源被无效CMD占用 +N* @param rx_ctrl_handle: dsi rx handle +N* @param filter_number: filter 编号(0-7) +N* @param cmd_start: 需要丢弃command code起始位 +N* @param cmd_end: 需要丢弃command code终止位 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_set_hw_cmd_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, +X_Bool hal_dsi_rx_ctrl_set_hw_cmd_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, +N hal_rx_dcs_filter_sel_e filter_number, +N uint32_t cmd_start, uint32_t cmd_end); +N +N/** +N* @brief 使用内置pattern代替mipi输入(用于测试) +N* @param rx_ctrl_handle: dsi rx handle +N* @param pg_orient: pattern 方向(0:Vertical mode ; 1:Horizontal mode) +N* @param enable: 开启/关闭pattern +N* @param frame_rate: pattern 帧率 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_enable_test_pattern(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pg_orient, bool enable, int frame_rate); +X_Bool hal_dsi_rx_ctrl_enable_test_pattern(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pg_orient, _Bool enable, int frame_rate); +N +N +N/** +N* @brief 获取AP 配置 BTA回复数据最大size +N* @param rx_ctrl_handle: dsi rx handle +N* @retval 返回数据大小 +N*/ +Nuint32_t hal_dsi_rx_ctrl_get_max_ret_size(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 获取AP Compression Mode Command配置,默认为0,谨慎使用 +N* @param rx_ctrl_handle: dsi rx handle +N* @retval AP 配置compressen_en +N*/ +Nbool hal_dsi_rx_ctrl_get_compressen_en(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_get_compressen_en(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 输入分辨率切换接口 +N* @param rx_ctrl_handle: dsi rx handle +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_toggle_resolution(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +X_Bool hal_dsi_rx_ctrl_toggle_resolution(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N/** +N* @brief 配置 RX escape clk +N* @param rx_ctrl_handle: dsi rx handle +N* @param esc_clk: escape clk 单位Hz,10000000时回CMD为10Mhz +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_set_cus_esc_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t esc_clk); +X_Bool hal_dsi_rx_ctrl_set_cus_esc_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t esc_clk); +N +N/** +N* @brief 自动计算并配置硬件filter +N* @param rx_ctrl_handle: dsi rx handle +N* @param enable: 启动/关闭 硬件filter +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_set_auto_hw_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable); +X_Bool hal_dsi_rx_ctrl_set_auto_hw_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable); +N +N/* +N* @brief 输入帧率修改(针对video mode) +N* @param rx_ctrl_handle: dsi rx handle +N* @param frame_rate:frame rate +N*/ +Nbool hal_dsi_rx_ctrl_toggle_input_frame_rate(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_video_frame_rate_e frame_rate); +X_Bool hal_dsi_rx_ctrl_toggle_input_frame_rate(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_video_frame_rate_e frame_rate); +N +N/* +N* @brief 注册写命令的回调函数,用于特殊命令序列时写命令的处理. +N 可配合hal_dsi_rx_ctrl_set_auto_hw_filter关闭hw filter用于获取所有软件CMD +N* @param rx_ctrl_handle: dsi rx handle +N* @param 写命令处理函数 +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_register_write_cmd_entry(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_dcs_execute execute_func); +N +N/** +N* @brief 配置硬件自动回复命令 +N* 最大回复长度64,AP需要配置set_max_return_size后并且对比一直才会自动回复,不需要软件再参与 +N* 应用于所有回复固定数据的场景 +N* @param RXBR: registers struct +N* @param qresp_number: qresp 编号(0-7) +N* @param data_type: 需要回复的读命令的datatype +N* @param cmd_code: 需要回复的读命令 +N* @param cmd_count: 需要回复的命令的大小,长包最大size为64,与set_max_return_size一致才会回复 +N* @param ...: 需要回复的参数 +N* @retval true/false +N*/ +Nbool hal_dsi_rx_ctrl_set_auto_ack(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_dcs_qresp_e qresp_number, dsi_ack_data_type_e data_type, uint32_t cmd_code, uint8_t cmd_count, ...); +X_Bool hal_dsi_rx_ctrl_set_auto_ack(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_dcs_qresp_e qresp_number, dsi_ack_data_type_e data_type, uint32_t cmd_code, uint8_t cmd_count, ...); +N +N/* +N* @brief 初始化画点模式 +N* @param rx_ctrl_handle: dsi rx handle +N* @param draw_en: 画点模式使能 +N* @param pxl_init_en: 是否对全屏数据赋值,true:使用init_value赋值,false:使用上一帧数据作为初始值 +N* @param color_mode: 画点模式数据源格式见dsi_color_code_e +N* @param init_value: 全屏初始化数据,bit[23:16]--R,bit[15:8]--G,bit[7:0]--B +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_draw_mode_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool draw_en, bool pxl_init_en, dsi_color_code_e color_mode, uint32_t init_value); +Xvoid hal_dsi_rx_ctrl_draw_mode_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool draw_en, _Bool pxl_init_en, dsi_color_code_e color_mode, uint32_t init_value); +N +N/* +N* @brief 配置像素颜色 +N* @param rx_ctrl_handle: dsi rx handle +N* @param x: 像素点的x 坐标 +N* @param y: 像素点的y 坐标 +N* @param red_data: 像素点R分量 +N* @param green_data: 像素点G分量 +N* @param blue_data: 像素点B分量 +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_set_pixel_data(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, int x, int y, uint8_t red_data, uint8_t green_data, uint8_t blue_data); +N +N +N/** +N* @brief video mode下强制将数据设置为特定的color mode,具体type见dsi_color_code_e +N* @param rx_ctrl_handle: dsi rx handle +N* @param enable: 使能强制数据模式 +N* @param frc_vid_code: 强制的数据格式 +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_force_video_crtl(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable, dsi_color_code_e frc_vid_code); +Xvoid hal_dsi_rx_ctrl_force_video_crtl(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable, dsi_color_code_e frc_vid_code); +N +N/** +N* @brief 注册RX 事件回调函数 +N* @param rx_ctrl_handle: dsi rx handle +N* @param event_cb: 回调函数 +N* @param event_mask: 接收事件掩码,见hal_rx_event_e(eg:HAL_RX_FS_EVENT|HAL_RX_LINE_EVENT) +N* @param enable: 事件回调开关 +N* @param user_data: 预留扩展参数,不同事件事件配置不同参数 +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_register_callback(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_event_entry event_cb, uint32_t event_mask, bool enable, void *user_data); +Xvoid hal_dsi_rx_ctrl_register_callback(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_event_entry event_cb, uint32_t event_mask, _Bool enable, void *user_data); +N +N/** +N* @brief 配置是否打开长包CRC检查 +N* @param rx_ctrl_handle: dsi rx handle +N* @param enable: 开启或者屏蔽CRC检测 +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_set_check_crc(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable); +Xvoid hal_dsi_rx_ctrl_set_check_crc(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable); +N +N/** +N* @brief 配置rx log 等级 +N* @param rx_drv_level: rx log等级见枚举log_level_e +N* @retval none +N*/ +Nvoid hal_dsi_rx_ctrl_set_log_level(log_level_e rx_drv_level); +N +N/** +N * @brief 带颜色画线函数(直线、斜线) +N * @param x1,y1 起点坐标 +N * @param x2,y2 终点坐标 +N * @param red_data: 像素点R分量 +N * @param green_data: 像素点G分量 +N * @param blue_data: 像素点B分量 +N * @param line_weight: 线粗 +N * @return none +N */ +Nvoid hal_dsi_rx_ctrl_draw_line(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data, line_weight_e line_weight); +N +N/** +N * @brief 设置需要获取pixel的坐标 +N * @param cap_x: 抓取pixel的x坐标 +N * @param cap_y: 抓取pixel的y坐标 +N * @return none +N */ +Nvoid hal_dsi_rx_ctrl_set_cap_pixel_pos(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x0, uint16_t y0); +N +N/** +N * @brief 获取指定坐标颜色,必须先设置获取颜色的坐标 +N * @return 返回指定坐标颜色 +N */ +Nuint32_t hal_dsi_rx_ctrl_get_cap_pixel_color(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); +N +N#endif //__HAL_DSI_RX_CTRL_H__ +L 17 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_dsi_tx_ctrl.h" +L 1 "..\..\src\sdk\include\hal_dsi_tx_ctrl.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_dsi_tx_ctrl.h +N* Description: hal mipi dsi tx 头文件 +N* Version: V0.1 +N* Date: 2021-04-23 +N* Author: jaya +N *******************************************************************************/ +N#ifndef __HAL_DSI_TX_CTRL_H__ +N#define __HAL_DSI_TX_CTRL_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_dsi_datatype.h" +N#include "tau_device_datatype.h" +N#include "hal_gpio.h" +L 1 "..\..\src\sdk\include\hal_gpio.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_gpio.h +N* Description: gpio HAL层头文件 +N* Version: V0.1 +N* Date: 2023-07-27 +N* Author: kevin +N *******************************************************************************/ +N#ifndef __HAL_GPIO_H__ +N#define __HAL_GPIO_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/** +N* @brief GPIO pin +N*/ +Ntypedef enum +N{ +N /*以GPIO命名PIN*/ +N IO_PAD_GPIO0 = 0, +N IO_PAD_GPIO1, +N IO_PAD_GPIO2, +N IO_PAD_GPIO3, +N IO_PAD_GPIO4, +N IO_PAD_GPIO5, +N IO_PAD_GPIO6, +N IO_PAD_GPIO7, +N IO_PAD_GPIO8, +N IO_PAD_GPIO9, +N IO_PAD_GPIO10, +N IO_PAD_GPIO11, +N IO_PAD_GPIO12, +N IO_PAD_GPIO13, +N IO_PAD_GPIO14, +N IO_PAD_GPIO15, +N IO_PAD_GPIO16, +N IO_PAD_GPIO17, +N IO_PAD_GPIO18, +N IO_PAD_GPIO19, +N IO_PAD_GPIO20, +N IO_PAD_GPIO21, +N IO_PAD_GPIO22, +N IO_PAD_GPIO23, +N IO_PAD_GPIO24, +N IO_PAD_GPIO25, +N +N /*以实际PAD NAME命名PIN*/ +N IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, +N IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, +N IO_PAD_AP_INT = IO_PAD_GPIO2, +N IO_PAD_AP_TE = IO_PAD_GPIO3, +N IO_PAD_AP_SWIRE = IO_PAD_GPIO4, +N IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, +N IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, +N IO_PAD_TD_RSTN = IO_PAD_GPIO7, +N IO_PAD_AP_PWMEN = IO_PAD_GPIO8, +N IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, +N IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, +N IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, +N IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, +N IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, +N IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, +N IO_PAD_SWD_CLK = IO_PAD_GPIO15, +N IO_PAD_SWD_DIO = IO_PAD_GPIO16, +N IO_PAD_AP_RSTN = IO_PAD_GPIO17, +N IO_PAD_UART0_TX = IO_PAD_GPIO18, +N IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, +N IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, +N IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, +N IO_PAD_TD_INT = IO_PAD_GPIO22, +N IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, +N IO_PAD_UART1_TX = IO_PAD_GPIO24, +N IO_PAD_UART0_RX = IO_PAD_GPIO25, +N +N IO_PAD_MAX, +N +N +N /*以实际引脚序号命名PIN*/ +N IO_PIN_1 = IO_PAD_SWD_CLK, +N IO_PIN_2 = IO_PAD_UART0_TX, +N IO_PIN_3 = IO_PAD_SWD_DIO, +N IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, +N IO_PIN_5 = IO_PAD_TD_SPIM_CLK, +N IO_PIN_6 = IO_PAD_TD_SPIM_CSN, +N IO_PIN_7 = IO_PAD_TD_SPIM_MISO, +N IO_PIN_8 = IO_PAD_TD_RSTN, +N IO_PIN_9 = IO_PAD_TD_FC_CSN, +N IO_PIN_10 = IO_PAD_TD_FC_CLK, +N IO_PIN_11 = IO_PAD_TD_FC_IO0, +N IO_PIN_12 = IO_PAD_TD_FC_IO1, +N IO_PIN_13 = IO_PAD_TD_TP_RESX, +N IO_PIN_14 = IO_PAD_UART1_TX, +N IO_PIN_15 = IO_PAD_AP_SWIRE, +N IO_PIN_16 = IO_PAD_AP_INT, +N IO_PIN_17 = IO_PAD_AP_PWMEN, +N IO_PIN_18 = IO_PAD_AP_TPRSTN, +N +N IO_PIN_29 = IO_PAD_AP_TE, +N IO_PIN_30 = IO_PAD_AP_SPIS_MISO, +N IO_PIN_31 = IO_PAD_AP_SPIS_CSN, +N IO_PIN_32 = IO_PAD_AP_SPIS_CLK, +N IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, +N IO_PIN_34 = IO_PAD_AP_RSTN, +N IO_PIN_35 = IO_PAD_TD_INT, +N IO_PIN_36 = IO_PAD_UART0_RX, +N +N} io_pad_e; +N +N +N/* +N芯片引脚 | 默认mode | 可选mode +N---------------------------------------------------------------- +NIO_PIN_1 | IO_PAD_SWCLK, | PIN1_MODE_SWDCLK +N | | PIN1_MODE_GPIO15 +N---------------------------------------------------------------- +NIO_PIN_2 | IO_PAD_UART0_TX, | PIN2_MODE_UART0_TX +N | | PIN2_MODE_PWMO +N | | PIN2_MODE_GPIO18 +N | | PIN2_MODE_PWMI +N | | PIN2_MODE_TEAR1 +N---------------------------------------------------------------- +NIO_PIN_3 | IO_PAD_SWDIO, | PIN3_MODE_SWDIO +N | | PIN3_MODE_GPIO16 +N---------------------------------------------------------------- +NIO_PIN_4 | IO_PAD_TD_SPIM_MOSI, | PIN4_MODE_SPIM_MOSI +N | | PIN4_MODE_I2C02_SDA +N | | PIN4_MODE_GPIO6 +N | | PIN4_MODE_UART0_TX +N---------------------------------------------------------------- +NIO_PIN_5 | IO_PAD_TD_SPIM_CLK, | PIN5_MODE_SPIM_SCLK +N | | PIN5_MODE_I2C1_SCL +N | | PIN5_MODE_GPIO19 +N---------------------------------------------------------------- +NIO_PIN_6 | IO_PAD_TD_SPIM_CSN, | PIN6_MODE_SPIM_CSN +N | | PIN6_MODE_I2C1_SDA +N | | PIN6_MODE_GPIO20 +N---------------------------------------------------------------- +NIO_PIN_7 | IO_PAD_TD_SPIM_MISO, | PIN7_MODE_SPIM_MISO +N | | PIN7_MODE_I2C02_SCL +N | | PIN7_MODE_GPIO5 +N---------------------------------------------------------------- +NIO_PIN_8 | IO_PAD_TD_RSTN, | PIN8_MODE_GPIO7 +N | | PIN8_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_9 | IO_PAD_TD_FC_CSN, | PIN9_MODE_TSPIS_CSN +N | | PIN9_MODE_GPIO12 +N---------------------------------------------------------------- +NIO_PIN_10 | IO_PAD_TD_FC_CLK, | PIN10_MODE_TSPIS_CLK +N | | PIN10_MODE_GPIO11 +N---------------------------------------------------------------- +NIO_PIN_11 | IO_PAD_TD_FC_IO0, | PIN11_MODE_TSPIS_IO0 +N | | PIN11_MODE_GPIO13 +N | | PIN11_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_12 | IO_PAD_TD_FC_IO1, | PIN12_MODE_TSPIS_IO1 +N | | PIN12_MODE_GPIO14 +N | | PIN12_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_13 | IO_PAD_TD_TP_RESX, | PIN13_MODE_GPIO23 +N | | PIN13_MODE_PWMO +N | | PIN13_MODE_UART1_RX +N | | PIN13_MODE_UART1_RX +N---------------------------------------------------------------- +NIO_PIN_14 | IO_PAD_UART1_TX, | PIN14_MODE_GPIO24 +N | | PIN14_MODE_UART0_RX +N | | PIN14_MODE_UART1_TX +N | | +N---------------------------------------------------------------- +NIO_PIN_15 | IO_PAD_AP_SWIRE, | PIN15_MODE_SWIRE +N | | PIN15_MODE_PWMO +N | | PIN15_MODE_GPIO4 +N---------------------------------------------------------------- +NIO_PIN_16 | IO_PAD_AP_INT, | PIN16_MODE_GPIO2 +N---------------------------------------------------------------- +NIO_PIN_17 | IO_PAD_AP_PWMEN, | PIN17_MODE_UART0_RX +N | | PIN17_MODE_GPIO8 +N | | PIN17_MODE_PWMO +N---------------------------------------------------------------- +NIO_PIN_18 | IO_PAD_AP_TPRSTN, | PIN18_MODE_UART0_RX +N | | PIN18_MODE_GPIO21 +N | | PIN18_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_29 | IO_PAD_AP_TE, | PIN29_MODE_JTAG_TRSTN +N | | PIN29_MODE_TEAR +N | | PIN29_MODE_GPIO3 +N---------------------------------------------------------------- +NIO_PIN_30 | IO_PAD_AP_SPIS_MISO, | PIN30_MODE_JTAG_TDO +N | | PIN30_MODE_SPIS_MISO +N | | PIN30_MODE_GPIO0 +N | | PIN30_MODE_UART0_RX +N | | PIN30_MODE_I2C1_SCL +N---------------------------------------------------------------- +NIO_PIN_31 | IO_PAD_AP_SPIS_CSN, | PIN31_MODE_JTAG_TMS +N | | PIN31_MODE_SPIS_CSN +N | | PIN31_MODE_GPIO10 +N | | PIN31_MODE_I2C02_SDA +N---------------------------------------------------------------- +NIO_PIN_32 | IO_PAD_AP_SPIS_CLK, | PIN32_MODE_JTAG_TCK +N | | PIN32_MODE_SPIS_SCLK +N | | PIN32_MODE_GPIO9 +N | | PIN32_MODE_I2C02_SCL +N---------------------------------------------------------------- +NIO_PIN_33 | IO_PAD_AP_SPIS_MOSI, | PIN33_MODE_JTAG_TDI +N | | PIN33_MODE_SPIS_MOSI +N | | PIN33_MODE_GPIO1 +N | | PIN33_MODE_UART0_TX +N | | PIN33_MODE_I2C1_SDA_0 +N---------------------------------------------------------------- +NIO_PIN_34 | IO_PAD_AP_RSTN, | PIN34_MODE_GPIO17 +N---------------------------------------------------------------- +NIO_PIN_35 | IO_PAD_TD_INT, | PIN35_MODE_GPIO22 +N---------------------------------------------------------------- +NIO_PIN_36 | IO_PAD_UART0_RX, | PIN36_MODE_UART0_RX +N | | PIN36_MODE_PWMO +N | | PIN36_MODE_GPIO25 +N---------------------------------------------------------------- +N*/ +N +N +N/** +N* @brief PIN1 IO_PAD_SWD_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN1_MODE_SWDCLK = 0, +N PIN1_MODE_GPIO15 = 2, +N} pin1_mode_e; +N +N +N/** +N* @brief PIN2 PAD_UART0_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN2_MODE_UART0_TX = 0, +N PIN2_MODE_PWMO = 1, +N PIN2_MODE_GPIO18 = 2, +N PIN2_MODE_PWMI = 3, +N PIN2_MODE_TEAR1 = 4, +N} pin2_mode_e; +N +N/** +N* @brief PIN3 IO_PAD_SWD_DIO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN3_MODE_SWDIO = 0, +N PIN3_MODE_GPIO16 = 2, +N} pin3_mode_e; +N +N +N/** +N* @brief PIN4 PAD_TD_SPIM_MOSI可选的mode +N*/ +Ntypedef enum +N{ +N PIN4_MODE_SPIM_MOSI = 0, +N PIN4_MODE_I2C02_SDA = 1, +N PIN4_MODE_GPIO6 = 2, +N PIN4_MODE_UART0_TX = 3, +N} pin4_mode_e; +N +N/** +N* @brief PIN5 PAD_TD_SPIM_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN5_MODE_SPIM_SCLK = 0, +N PIN5_MODE_I2C1_SCL = 1, +N PIN5_MODE_GPIO19 = 2, +N} pin5_mode_e; +N +N/** +N* @brief PIN6 PAD_TD_SPIM_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN6_MODE_SPIM_CSN = 0, +N PIN6_MODE_I2C1_SDA = 1, +N PIN6_MODE_GPIO20 = 2, +N} pin6_mode_e; +N +N/** +N* @brief PIN7 PAD_TD_SPIM_MISO可选的mode +N*/ +Ntypedef enum +N{ +N PIN7_MODE_SPIM_MISO = 0, +N PIN7_MODE_I2C02_SCL = 1, +N PIN7_MODE_GPIO5 = 2, +N} pin7_mode_e; +N +N/** +N* @brief PIN8 PAD_TD_RSTN可选的mode +N*/ +Ntypedef enum +N{ +N PIN8_MODE_GPIO7 = 2, +N PIN8_MODE_I2C02_SDA = 3, +N} pin8_mode_e; +N +N/** +N* @brief PIN9 PAD_TD_FC_CSN可选的mode +N*/ +Ntypedef enum +N{ +N PIN9_MODE_TSPIS_CSN = 0, +N PIN9_MODE_GPIO12 = 2, +N} pin9_mode_e; +N +N/** +N* @brief PIN10 PAD_TD_FC_CLK可选的mode +N*/ +Ntypedef enum +N{ +N PIN10_MODE_TSPIS_CLK = 0, +N PIN10_MODE_GPIO11 = 2, +N} pin10_mode_e; +N +N +N/** +N* @brief PIN11 PAD_TD_FC_IO0可选的mode +N*/ +Ntypedef enum +N{ +N PIN11_MODE_TSPIS_IO0 = 0, +N PIN11_MODE_GPIO13 = 2, +N PIN11_MODE_I2C02_SDA = 3, +N} pin11_mode_e; +N +N/** +N* @brief PIN12 PAD_TD_FC_IO1可选的mode +N*/ +Ntypedef enum +N{ +N PIN12_MODE_TSPIS_IO1 = 0, +N PIN12_MODE_GPIO14 = 2, +N PIN12_MODE_I2C02_SCL = 3, +N} pin12_mode_e; +N +N/** +N* @brief PIN13 PAD_TD_TP_RESX可选的mode +N*/ +Ntypedef enum +N{ +N PIN13_MODE_GPIO23 = 2, +N PIN13_MODE_PWMO = 3, +N PIN13_MODE_UART1_RX = 4, +N} pin13_mode_e; +N +N/** +N* @brief PIN14 PAD_UART1_TX可选的mode +N*/ +Ntypedef enum +N{ +N PIN14_MODE_GPIO24 = 2, +N PIN14_MODE_UART0_RX = 3, +N PIN14_MODE_UART1_TX = 4, +N} pin14_mode_e; +N +N +N +N/** +N* @brief PIN15 PAD_AP_SWIRE可选的mode +N*/ +Ntypedef enum +N{ +N PIN15_MODE_SWIRE = 0, +N PIN15_MODE_PWMO = 1, +N PIN15_MODE_GPIO4 = 2, +N} pin15_mode_e; +N +N/** +N* @brief PIN16 IO_PAD_AP_INT 可选的mode +N*/ +Ntypedef enum +N{ +N PIN16_MODE_GPIO2 = 2, +N} pin16_mode_e; +N +N/** +N* @brief PIN17 PAD_AP_PWMEN可选的mode +N*/ +Ntypedef enum +N{ +N PIN17_MODE_UART0_RX = 1, +N PIN17_MODE_GPIO8 = 2, +N PIN17_MODE_PWMO = 3, +N} pin17_mode_e; +N +N/** +N* @brief PIN18 IO_PAD_AP_TPRSTN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN18_MODE_UART0_RX = 0, +N PIN18_MODE_GPIO21 = 2, +N PIN18_MODE_I2C02_SCL = 3, +N} pin18_mode_e; +N +N +N//---------- +N +N/** +N* @brief PIN29 IO_PAD_AP_TE 可选的mode +N*/ +Ntypedef enum +N{ +N PIN29_MODE_JTAG_TRSTN = 0, +N PIN29_MODE_TEAR = 1, +N PIN29_MODE_GPIO3 = 2, +N} pin29_mode_e; +N +N +N/** +N* @brief PIN30 IO_PAD_AP_SPIS_MISO 可选的mode +N*/ +Ntypedef enum +N{ +N PIN30_MODE_JTAG_TDO = 0, +N PIN30_MODE_SPIS_MISO = 1, +N PIN30_MODE_GPIO0 = 2, +N PIN30_MODE_UART0_RX = 3, +N PIN30_MODE_I2C1_SCL = 6, +N} pin30_mode_e; +N +N/** +N* @brief PIN31 IO_PAD_AP_SPIS_CSN 可选的mode +N*/ +Ntypedef enum +N{ +N PIN31_MODE_JTAG_TMS = 0, +N PIN31_MODE_SPIS_CSN = 1, +N PIN31_MODE_GPIO10 = 2, +N PIN31_MODE_I2C02_SDA = 3, +N} pin31_mode_e; +N +N/** +N* @brief PIN32 IO_PAD_AP_SPIS_CLK 可选的mode +N*/ +Ntypedef enum +N{ +N PIN32_MODE_JTAG_TCK = 0, +N PIN32_MODE_SPIS_SCLK = 1, +N PIN32_MODE_GPIO9 = 2, +N PIN32_MODE_I2C02_SCL = 3, +N} pin32_mode_e; +N +N/** +N* @brief PIN33 IO_PAD_AP_SPIS_MOSI 可选的mode +N*/ +Ntypedef enum +N{ +N PIN33_MODE_JTAG_TDI = 0, +N PIN33_MODE_SPIS_MOSI = 1, +N PIN33_MODE_GPIO1 = 2, +N PIN33_MODE_UART0_TX = 3, +N PIN33_MODE_I2C1_SDA_0 = 6, +N} pin33_mode_e; +N +N/** +N* @brief PIN34 PAD_AP_RST可选的mode +N*/ +Ntypedef enum +N{ +N PIN34_MODE_GPIO17 = 2, +N} pin34_mode_e; +N +N +N/** +N* @brief PIN35 PAD_TD_INT可选的mode +N*/ +Ntypedef enum +N{ +N PIN35_MODE_GPIO22 = 2, +N} pin35_mode_e; +N +N +N/** +N* @brief PIN36 PAD_UART_RX可选的mode +N*/ +Ntypedef enum +N{ +N PIN36_MODE_UART0_RX = 0, +N PIN36_MODE_PWMO = 1, +N PIN36_MODE_GPIO25 = 2, +N} pin36_mode_e; +N +N +N +N//------------------------------------------------------------------------- +N/** +N* @brief PAD_SFC_CLK可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CLK = 0, +N IO_MODE_TSPIS_CLK_EN = 2, +N} pad_sfc_clk_mode_e; +N +N/** +N* @brief PAD_SFC_CSN可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_CSN = 0, +N IO_MODE_TSPIS_CSN_EN = 2, +N} pad_sfc_csn_mode_e; +N +N/** +N* @brief PAD_SFC_IO0可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO0 = 0, +N IO_MODE_TSPIS_IO0_EN = 2, +N} pad_sfc_io0_mode_e; +N +N/** +N* @brief PAD_SFC_IO1可选的mode 内部PAD +N*/ +Ntypedef enum +N{ +N IO_MODE_INTER_FC_IO1 = 0, +N IO_MODE_TSPIS_IO1_EN = 2, +N} pad_sfc_io1_mode_e; +N +N/** +N* @brief PAD电压转换速率 +N*/ +Ntypedef enum +N{ +N IO_SLEW_RATE_SLOW = 0, +N IO_SLEW_RATE_FAST = 1, +N} pad_slew_rate_e; +N +N/******************************************************************************* +N* IOE +N*******************************************************************************/ +N/** +N* @brief GPIO io方向 +N*/ +Ntypedef enum +N{ +N IO_IOE_INPUT = 0, +N IO_IOE_OUTPUT, +N IO_IOE_NONE +N} gpio_ioe_e; +N +N/** +N* @brief GPIO level +N*/ +Ntypedef enum +N{ +N IO_LVL_LOW = 0, +N IO_LVL_HIGH, +N IO_LVL_NONE +N} gpio_level_e; +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief PAD与MODE的MAP结构体 +N*/ +Ntypedef struct +N{ +N io_pad_e pad; +N uint8_t mode; +N gpio_ioe_e ioe; +N gpio_level_e lvl; +N} io_pad_attr_t; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input,指定中断触发方式 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param trig:4种中断触发方式,参考枚举类型sys_cfg_trigger_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); +N +N/** +N* @brief 注册GPIO中断回调函数 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param cb_func:回调函数地址 +N* @param data:回调函数参数地址 +N* @retval 无 +N*/ +Nvoid hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); +N +N/** +N* @brief 开关GPIO中断 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param state:开关控制 +N* @retval 无 +N*/ +Nvoid hal_gpio_ctrl_eint(io_pad_e pad, bool state); +Xvoid hal_gpio_ctrl_eint(io_pad_e pad, _Bool state); +N +N/** +N* @brief 获取GPIO中断类型 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_int_e hal_gpio_get_int_type(io_pad_e pad); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为output,指定初始电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 封装设置输出接口 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param lvl:初始电平,参考枚举类型gpio_level_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); +N +N/** +N* @brief 配置指定PAD为GPIO mode,方向为input +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_init_input(io_pad_e pad); +N +N/** +N* @brief 读取输入电平 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Ngpio_level_e hal_gpio_get_input_data(io_pad_e pad); +N +N/** +N* @brief 设置io mode +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param mode:工作模式,参考各PAD对应的mode枚举类型 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_mode(io_pad_e pad, uint8_t mode); +N +N/** +N* @brief 设置io 为高阻态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @retval 无 +N*/ +Nvoid hal_gpio_set_high_impedance(io_pad_e pad); +N +N/** +N* @brief 获取指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_get_pull_state(io_pad_e pad, bool *up_enable, bool *down_enable); +Xvoid hal_gpio_get_pull_state(io_pad_e pad, _Bool *up_enable, _Bool *down_enable); +N +N/** +N* @brief 配置指定PAD的默认上拉、下拉状态 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param up_enable:默认上拉状态 +N* @param down_enable:默认下拉状态 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_pull_state(io_pad_e pad, bool up_enable, bool down_enable); +Xvoid hal_gpio_set_pull_state(io_pad_e pad, _Bool up_enable, _Bool down_enable); +N +N/** +N* @brief 配置指定PAD是否为施密特触发 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param st_enable:1为施密特触发,0为正常触发 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, bool st_enable); +Xvoid hal_gpio_set_schmitt_trigger(io_pad_e pad, _Bool st_enable); +N +N/** +N* @brief 配置指定PAD的驱动能力 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param strength:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); +N +N/** +N* @brief 配置指定PAD的电压转换速率 +N* @param pad:GPIO序号,参考枚举类型gpio_pad_e +N* @param rate:驱动强度,取值为0~3 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); +N +N/** +N* @brief 配置AP_RSTN引脚中断 +N* @param enable: 中断开关 +N* @param cb_func:回调函数 +N* @param trig:触发模式 +N* @retval 无 +N*/ +Nvoid hal_gpio_set_ap_reset_int(bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +Xvoid hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); +N +N/** +N* @brief 批量设置IO参数 +N* @param attrs: PAD属性 +N* @param size: 数组成员个数 +N* @retval 无 +N*/ +Nvoid hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); +N +N#endif /* __HAL_GPIO_H__ */ +L 19 "..\..\src\sdk\include\hal_dsi_tx_ctrl.h" 2 +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief blank display configure type +N*/ +Ntypedef struct +N{ +N uint16_t st_col; /* 补黑区域起始坐标,RGBG格式以子像素计数*/ +N uint16_t width; /* 补黑区域宽度,RGBG格式以子像素计数*/ +N uint8_t remap_en; /* 补黑区域是否参与子像素重排*/ +N uint8_t blank_en; /* 补黑区域开关*/ +N} blank_disp_t; +N +N/** +N* @brief pentile remap rule configuration type in rom code +N*/ +Ntypedef uint8_t (remap_rule_t)[24]; +N +N/** +N* @brief 客制化MIPI TX参数结构体 +N*/ +Ntypedef struct +N{ +N bool pentile_enable; /* 是否pentile输出*/ +X _Bool pentile_enable; +N bool pentile_reverse_en; /* 是否打开芯片本身行翻转功能*/ +X _Bool pentile_reverse_en; +N bool pentile_24b; /* 是否以RGB IC搭配RGBG玻璃*/ +X _Bool pentile_24b; +N uint32_t rgb_hact; /* RGB IC搭配RGBG玻璃使用时IC水平方向分辨率*/ +N remap_rule_t *remapl_rule; /* RGB IC搭配RGBG玻璃使用时remap规则1*/ +N remap_rule_t *remapr_rule; /* RGB IC搭配RGBG玻璃使用时remap规则2*/ +N blank_disp_t blank_info0; /* 补黑参数配置信息*/ +N blank_disp_t blank_info1; /* 补黑参数配置信息*/ +N} dsi_tx_pent_info_t; +N +N/** +N* @brief MIPI TX clk/data lane是否自动进LP控制枚举类型 +N* 不同driver IC spec不同,对Lane rate范围要求也不同 +N* 无法点亮时可尝试替换不同的模式 +N*/ +Ntypedef enum +N{ +N ALWAYS_HS = 0, // vid输出默认此模式,仅VSA自动进LP; cmd输出暂不支持此模式 +N ONLY_DATA_LANE_AUTO_LP = 1, // cmd输出默认此模式,data lane行间自动进LP, clk保持HS +N CLK_DATA_LANE_AUTO_LP = 2, // data/clk lane行间自动进LP +N} dsi_tx_lane_lp_e; +N +N/** +N* @brief tx pq filter index +N* 默认使用OPT +N*/ +Ntypedef enum +N{ +N TX_FLT_OPT = 0, +N TX_FLT_LINEAR = 1, +N TX_FLT_MAX +N} hal_dsi_tx_pq_filter_e; +N +N/** +N* @brief 客制化MIPI TX参数结构体 +N*/ +Ntypedef struct +N{ +N dsi_base_trans_info_t base_info; /* mipi video 转换基本信息 */ +N uint32_t dpi_vsa; /* DPI VSA*/ +N uint32_t dpi_vbp; /* DPI VBP*/ +N uint32_t dpi_vfp; /* DPI VFP*/ +N uint32_t dpi_hsa; /* DPI HSA*/ +N uint32_t dpi_hbp; /* DPI HBP*/ +N uint32_t dpi_hfp; /* DPI HFP*/ +N float tx_frame_rate; /* 默认60Hz输出,不建议配置为其他,仅作为debug使用 */ +N uint8_t lane_num; /* TX 使用的 lane 数量*/ +N bool used; /* handle使用标志位 内部自动更新状态,不需要操作*/ +X _Bool used; +N bool lp_exit_lpdt; /* 每一条LP CMD都退出LPDT */ +X _Bool lp_exit_lpdt; +N dsi_tx_lane_lp_e tx_lane_lp; /* clk/data lane是否自动进LP模式配置 */ +N dsi_virtual_channel_e channel_id; /* 虚拟通道ID,默认为0*/ +N dsi_video_mode_type_e vid_mode; /* video输出时选择输出的vid模式种类 */ +N dsi_tx_cmd_tx_type_e cmd_tx_type; /* 初始化模式传输命令方式,0:HS; 1:LP */ +N dsi_tx_pent_info_t pentile_info; /* pentile屏基本信息 */ +N hal_dsi_tx_pq_filter_e tx_pq_index; /* 画质调整滤波器,默认为OPT最优效果 */ +N} hal_dsi_tx_ctrl_handle_t; +N +N/** +N* @brief TE 信号产生模式 +N*/ +Ntypedef enum +N{ +N TE_60HZ_MODE = 0, +N TE_USER_MODE = 1, /* 底层不产生TE, 由hal_dsi_tx_ctrl_gen_a_tear_signal 接口产生 */ +N TE_STOP_MODE = 1, +N TE_90HZ_MODE = 2, +N TE_120HZ_MODE = 3, +N TE_144HZ_MODE = 4, +N TE_160HZ_MODE = 5, +N TE_MODE_MAX +N} te_mode_e; +N +N/** +N* @brief dpi tx vpg style +N*/ +Ntypedef enum +N{ +N TX_VPG_V_COLOR = 0, +N TX_VPG_H_COLOR = 1, +N TX_VPG_V_BER = 2, +N TX_VPG_FLICKER = 3, +N TX_VPG_MAX +N} dsi_tx_vpg_style_e; +N +N/** +N* @brief MIPI TX初始化 +N* @param tx_ctrl_handle: MIPI TX实例 +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_init(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +X_Bool hal_dsi_tx_ctrl_init(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N/** +N* @brief MIPI TX反初始化 +N* @param tx_ctrl_handle: MIPI TX实例 +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_deinit(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +X_Bool hal_dsi_tx_ctrl_deinit(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N/** +N* @brief MIPI TX创建实例 +N* @param None +N* @retval tx_ctrl_handle: MIPI TX实例 +N*/ +Nhal_dsi_tx_ctrl_handle_t *hal_dsi_tx_ctrl_create_handle(void); +N +N/** +N* @brief MIPI TX释放实例 +N* @param tx_ctrl_handle: MIPI TX实例 +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_release_handle(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +X_Bool hal_dsi_tx_ctrl_release_handle(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N/** +N* @brief MIPI TX开始运行 +N* @param tx_ctrl_handle: MIPI TX实例 +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_start(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +X_Bool hal_dsi_tx_ctrl_start(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N/** +N* @brief MIPI TX停止运行 +N* @param tx_ctrl_handle: MIPI TX实例 +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_stop(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +X_Bool hal_dsi_tx_ctrl_stop(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N/** +N* @brief MIPI TX接收命令 +N* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +N* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +N* @param cmd: DCS指令 +N* @param size: 读取数据长度 +N* @param data: 数据存放地址 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_read_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd, uint8_t size, uint8_t *data); +N +N/** +N* @brief video高速数据传输时V porch阶段进行bta回读接口 +N* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +N* @param cmd: DCS指令 +N* @param size: 读取数据长度 +N* @param data: 数据存放地址 +N* @retval true-BTA回复获取有效,false-BTA回复未获得 +N* @attention 需要考虑V porch时长是否足够size长度的寄存器回读,否则造成TX数据通路出错 +N*/ +Nbool hal_dsi_tx_ctrl_vporch_bta_opera(uint8_t data_type, uint8_t cmd, uint8_t size, uint8_t *data); +X_Bool hal_dsi_tx_ctrl_vporch_bta_opera(uint8_t data_type, uint8_t cmd, uint8_t size, uint8_t *data); +N +N/** +N* @brief MIPI TX发送命令 +N* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +N* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +N* @param cmd_count: 可变参数个数 +N* @param ...: 可变参数 +N* @retval true-command发送正常;false-TX当前状态不能发送command +N*/ +Nbool hal_dsi_tx_ctrl_write_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd_count, ...); +X_Bool hal_dsi_tx_ctrl_write_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd_count, ...); +N +N/** +N* @brief MIPI TX发送命令 +N* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +N* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +N* @param size: data个数 +N* @param data: data数组 +N* @retval true-command发送正常;false-TX当前状态不能发送command +N*/ +Nbool hal_dsi_tx_ctrl_write_array_cmd(uint8_t data_type, uint8_t vc, uint8_t size, const uint8_t *data); +X_Bool hal_dsi_tx_ctrl_write_array_cmd(uint8_t data_type, uint8_t vc, uint8_t size, const uint8_t *data); +N +N/** +N* @brief 切换至 LP cmd发送模式 +N* @param enable: true-进行cmd发送;false-结束LP cmd发送 +N* @retval None +N* @attention 应用场景:AP enter sleep后传输发送LP cmd +N*/ +Nvoid hal_dsi_tx_ctrl_cmd_mode(bool enable); +Xvoid hal_dsi_tx_ctrl_cmd_mode(_Bool enable); +N +N/** +N* @brief 设置TX escape mode时钟 +N* @param esc_clk: escape clk 单位Hz,10000000时CMD为10Mhz +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_escape_clock_div(uint32_t esc_clk); +N +N/** +N* @brief 设置RGB或BGR +N* @param endianness: 选择RGB或BGR显示,参考dsi_endianness_e +N* @attention 接口需要在初始化接口hal_dsi_tx_ctrl_init调用前才能生效 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_endianness(dsi_endianness_e endianness); +N +N/** +N* @brief 设置CCM参数 +N* @param coef: 客制化参数,参考结构体ccm_coef_t +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_ccm(ccm_coef_t *ccm); +N +N/** +N* @brief 设置边缘检测算法参数 +N* @param edge_dect_para: 边缘检测算法参数,参考 dsi_tx_edge_dect_t;关闭模块时可以传参NULL +N* @param edge_dect_en: 是否开启边缘检测模块 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_edge_dect(dsi_tx_edge_dect_t *edge_dect_para, bool edge_dect_en); +Xvoid hal_dsi_tx_ctrl_set_edge_dect(dsi_tx_edge_dect_t *edge_dect_para, _Bool edge_dect_en); +N +N/** +N* @brief 设置边缘增强效果算法参数 +N* @param edge_enh_para: 边缘增强算法参数,参考 dsi_tx_edge_enh_t;关闭模块时可以传参NULL +N* @param edge_enh_en: 是否开启边缘增强模块 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_edge_enhance(dsi_tx_edge_enh_t *edge_enh_para, bool edge_enh_en); +Xvoid hal_dsi_tx_ctrl_set_edge_enhance(dsi_tx_edge_enh_t *edge_enh_para, _Bool edge_enh_en); +N +N/** +N* @brief 设置False Color remove算法参数 +N* @param fc_para: false color参数,参考 dsi_tx_fc_t;关闭模块时可以传参NULL +N* @param fc_en: 是否开启false color配置模块 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_fc(dsi_tx_fc_t *fc_para, bool fc_en); +Xvoid hal_dsi_tx_ctrl_set_fc(dsi_tx_fc_t *fc_para, _Bool fc_en); +N +N/** +N* @brief 设置bcs参数 +N* @param bcs_para: 明亮度/对比度/饱和度,参考 dsi_tx_bcs_t;关闭模块时可以传参NULL +N* @param bcs_en: 是否开启bcs配置模块 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_bcs(dsi_tx_bcs_t *bcs_para, bool bcs_en); +Xvoid hal_dsi_tx_ctrl_set_bcs(dsi_tx_bcs_t *bcs_para, _Bool bcs_en); +N +N/** +N* @brief 设置复写颜色 +N* @param R: RGB的R分量 +N* @param G: RGB的G分量 +N* @param B: RGB的B分量 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_overwrite_rgb(uint8_t R, uint8_t G, uint8_t B); +N +N/** +N* @brief 打开overwrite功能 +N* @param enable: true-打开overwrite; false-关闭overwrite +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_overwrite_enable(bool enable); +Xvoid hal_dsi_tx_ctrl_overwrite_enable(_Bool enable); +N +N/** +N* @brief 设置部分显示 +N* @param enable: true-打开partial显示; false-关闭partial显示 +N* @param par_disp_cfg display区域和背景色设置,参考 dsi_tx_par_dis_t; 关闭模块功能时可以传参NULL +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_partial_disp_enable(bool enable, dsi_tx_par_dis_t *par_disp_cfg); +Xvoid hal_dsi_tx_ctrl_partial_disp_enable(_Bool enable, dsi_tx_par_dis_t *par_disp_cfg); +N +N/** +N* @brief 控制TX VPG的输出 +N* @param vpg_en: 使能VPG +N* @param style: VPG的样式 +N* @param vpg_hline_adj: false-正常情况使用,true-VPG显示滚动情况下使用 +N* @attention vpg_hline_adj此参数只能解决带宽余量相差不大的情况,如果带宽需求超出过多,依然无法解决带宽不足引起的VPG显示滚动问题 +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_vpg(bool vpg_en, dsi_tx_vpg_style_e style, bool vpg_hline_adj); +Xvoid hal_dsi_tx_ctrl_set_vpg(_Bool vpg_en, dsi_tx_vpg_style_e style, _Bool vpg_hline_adj); +N +N/** +N* @brief 配置TE模式 +N* @param tx_ctrl_handle: dsi tx handle +N* @param te: te mode +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_set_tear_mode(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, te_mode_e te); +N +N/** +N* @brief 生成一个TE信号 +N* @param None +N* @retval None +N*/ +Nvoid hal_dsi_tx_ctrl_gen_a_tear_signal(void); +N +N/** +N* @brief command mode输出模式下产生一帧数据 +N* @param None +N* @retval None +N*/ +Nbool hal_dsi_tx_ctrl_gen_a_frame(void); +X_Bool hal_dsi_tx_ctrl_gen_a_frame(void); +N +N/** +N* @brief 配置输入输出同步行数,用于调整图像撕裂问题 +N* @param tx_ctrl_handle: dsi tx handle +N* @param line_num: 同步行号,范围1 ~ output height +N* @retval true/false +N*/ +Nbool hal_dsi_tx_ctrl_set_cus_sync_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, uint32_t line_num); +X_Bool hal_dsi_tx_ctrl_set_cus_sync_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, uint32_t line_num); +N +N/** +N* @brief 获取TX当前显示行号 +N* @param tx_ctrl_handle: dsi tx handle +N* @retval 当前显示行号,包括vsa + vbp + vactive + vfp +N*/ +Nuint32_t hal_dsi_tx_ctrl_get_disp_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); +N +N#endif //__HAL_DSI_TX_CTRL_H__ +L 18 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_swire.h" +L 1 "..\..\src\sdk\include\hal_swire.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_swire.h +N* Description: swire HAL层头文件 +N* Version: V0.1 +N* Date: 2021-03-17 +N* Author: jaya +N *******************************************************************************/ +N#ifndef __HAL_SWIRE_H__ +N#define __HAL_SWIRE_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief SWIRE初始化 +N* @param 无 +N* @retval 无 +N*/ +Nvoid hal_swire_init(void); +N +N/** +N* @brief SWIRE去初始化 +N* @param 无 +N* @retval 无 +N*/ +Nvoid hal_swire_deinit(void); +N +N/** +N* @brief 配置SWIRE波形 +N* @param start_time:起始时长,单位us +N* @param stop_time:结束时长,单位us,必须大于300us +N* @param high_time:高电平时长,单位us +N* @param low_time:低电平时长,单位us +N* @retval 无 +N*/ +Nvoid hal_swire_set_waveform(uint32_t start_time, uint32_t stop_time, +N uint32_t high_time, uint32_t low_time); +N +N +N/** +N* @brief 配置SWIRE脉冲个数 +N* @param pulse:脉冲数 +N* @retval 无 +N*/ +Nvoid hal_swire_set_pulse(uint32_t pulse); +N +N/** +N* @brief 开关swire输出,不绑定timer的情况下,每次调用hal_swire_set_pulse产生一个swire波形 +N* @param state:开关控制 +N* @retval 无 +N*/ +Nvoid hal_swire_enable(bool state); +Xvoid hal_swire_enable(_Bool state); +N +N/** +N* @brief 配置swire选择的timer +N* @param timer_num_e index:定时器编号 +N* @param uint32_t ms:超时时间 +N* @param repeat :是否重复 +N* @retval 无 +N*/ +Nvoid hal_swire_set_timer(timer_num_e index, uint32_t ms, bool repeat); +Xvoid hal_swire_set_timer(timer_num_e index, uint32_t ms, _Bool repeat); +N +N/** +N* @brief 注册回调函数,每次swire 发送完成后会产生回调 +N* @param cb_func:回调函数地址 +N* @retval 无 +N*/ +Nvoid hal_swire_register_callback(fcb_type cb_func); +N +N#endif /* __HAL_SWIRE_H__ */ +L 19 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_timer.h" +L 1 "..\..\src\sdk\include\hal_timer.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_timer.h +N* Description: timer HAL层头文件 +N* Version: V0.1 +N* Date: 2021-03-16 +N* Author: jaya +N *******************************************************************************/ +N#ifndef __HAL_TIMER_H__ +N#define __HAL_TIMER_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief 指定定时器初始化 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @retval None +N*/ +Nvoid hal_timer_init(timer_num_e index); +N +N/** +N* @brief 指定定时器反初始化 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @retval None +N*/ +Nvoid hal_timer_deinit(timer_num_e index); +N +N/** +N* @brief 启动指定定时器 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @param ms:超时时间,单位ms。由于应用场景一般是ms级别的,应用开发不需要计数具体时针数, +N 故直接输入时间,在接口内部换算成时钟数进行寄存器设置。 +N* @param cb_func:回调函数地址,不需要则填NULL +N* @param data:回调函数的参数地址,不需要则填NULL +N* @retval None +N*/ +Nvoid hal_timer_start(timer_num_e index, uint32_t ms, fcb_type cb_func, void *data); +N +N/** +N* @brief 启动指定定时器 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @param us:超时时间,单位us。由于应用场景一般是us级别的,应用开发不需要计数具体时针数, +N 故直接输入时间,在接口内部换算成时钟数进行寄存器设置。 +N* @param cb_func:回调函数地址,不需要则填NULL +N* @param data:回调函数的参数地址,不需要则填NULL +N* @retval None +N*/ +Nvoid hal_timer_start_ex(timer_num_e index, uint32_t us, fcb_type cb_func, void *data); +N +N/** +N* @brief 停止指定定时器 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @retval None +N*/ +Nvoid hal_timer_stop(timer_num_e index); +N +N/** +N* @brief 设置定时器是否循环超时 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @param bool enable:循环超时使能 +N* @retval None +N*/ +Nvoid hal_timer_set_repeat(timer_num_e index, bool repeat); +Xvoid hal_timer_set_repeat(timer_num_e index, _Bool repeat); +N +N/** +N* @brief 获取指定指示器状态 +N* @param index:实例序号(0~3),参考枚举类型timer_num_e +N* @retval 参考timer_status_e +N*/ +Ntimer_status_e hal_timer_get_status(timer_num_e index); +N +N#endif /* __HAL_TIMER_H__ */ +L 20 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_system.h" +L 1 "..\..\src\sdk\include\hal_system.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_system.h +N* Description hal 通用系统接口头文件 +N* Version V0.1 +N* Date 2021-05-21 +N* Author lzy +N *******************************************************************************/ +N#ifndef __HAL_SYSTEM_H__ +N#define __HAL_SYSTEM_H__ +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_common.h" +N#include "hal_gpio.h" +N#include "tau_log.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief 系统时钟配置 +N*/ +Ntypedef enum +N{ +N HAL_SYSCLK_80M = 80000000, +N HAL_SYSCLK_100M = 100000000, +N HAL_SYSCLK_150M = 150000000 +N} hal_system_clk_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N +N/** +N* @brief system 初始化 +N* @param sysclk:系统时钟 +N* @retval none +N*/ +Nvoid hal_system_init(hal_system_clk_e sysclk); +N +N/** +N* @brief mcu进入idle模式,等待中断唤醒 +N* @param disable_systick: 进入idle时是否关闭systick(退出idle 恢复systick) +N* @retval none +N*/ +Nvoid hal_system_idle_mode(bool disable_systick); +Xvoid hal_system_idle_mode(_Bool disable_systick); +N +N/** +N* @brief 注册systick回调函数 +N* @param cb_func:回调函数地址 +N* @retval 无 +N*/ +Nvoid hal_system_register_systick_cb(fcb_type cb_func); +N +N/** +N* @brief 启动sys tickt +N* @param ms: sys tickt 间隔, 范围1-10ms +N* @retval true/false +N*/ +Nbool hal_system_enable_systick(uint8_t ms); +X_Bool hal_system_enable_systick(uint8_t ms); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nbool hal_system_disable_systick(void); +X_Bool hal_system_disable_systick(void); +N +N/** +N* @brief 获取systickt +N* @param none +N* @retval 当前systickt值 +N*/ +Nuint32_t hal_system_get_tick(void); +N +N/** +N* @brief reset chip +N* @param none +N* @retval none +N*/ +Nvoid hal_system_reset_chip(void); +N +N/** +N* @brief 获取上位机设置的debug state(debug only) +N* @param none +N* @retval debug state +N*/ +Nuint32_t hal_system_get_debug_state(void); +N +N/** +N* @brief clear debug state(debug only) +N* @param none +N* @retval none +N*/ +Nvoid hal_system_clear_debug_state(void); +N +N/** +N* @brief 更新MCU时钟 +N* @param sysclk:系统时钟 +N* @retval true/false +N*/ +Nbool hal_system_updata_sysclk(hal_system_clk_e sysclk); +X_Bool hal_system_updata_sysclk(hal_system_clk_e sysclk); +N +N#endif //__HAL_SYSTEM_H__ +L 21 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_gpio.h" +N#include "test_cfg_global.h" +L 1 "..\..\src\app\test_cfg_global.h" 1 +N/******************************************************************************* +N* +N* File: test_cfg_global.h +N* Description: 测试用例全局配置头文件 +N* Version: V0.1 +N* Date: 2021-05-01 +N* Author: kevin +N *******************************************************************************/ +N +N#ifndef __TEST_GLOBAL_CONFIG_H__ +N#define __TEST_GLOBAL_CONFIG_H__ +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N/* 模块demo 宏定义 */ +N#define _MODULE_DEMO_ENABLE 0 +N#define _MODULE_DEMO_TIMER_EN 0 +N#define _MODULE_DEMO_DSI_TX_EN 0 +N#define _MODULE_DEMO_DSI_RX_EN 0 +N#define _MODULE_DEMO_PWM_EN 0 +N#define _MODULE_DEMO_SWIRE_EN 0 +N#define _MODULE_DEMO_WDG_EN 0 +N#define _MODULE_DEMO_GPIO_EN 0 +N#define _MODULE_DEMO_I2C_EN 0 +N#define _MODULE_DEMO_SPI_EN 0 +N#define _MODULE_DEMO_PWR_EN 0 +N/* ap demo 宏定义 */ +N#define _DEMO_GOOGLE_P8P_EN 1 +N +N +N#if _DEMO_GOOGLE_P8P_EN +X#if 1 +N #include "p8p_demo.h" +N#endif +N#endif +N +L 23 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_pwr.h" +L 1 "..\..\src\sdk\include\hal_pwr.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_pwr.h +N* Description: pwr hal层头文件 +N* Version: V0.1 +N* Date: 2023-07-21 +N* Author: lyw +N *******************************************************************************/ +N#ifndef __HAL_PWR_H__ +N#define __HAL_PWR_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N#include "hal_gpio.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N/** +N* @brief IC主供电电源选择 +N*/ +Ntypedef enum +N{ +N PWR_SEL_IOV18 = 0, /* IC选择IOV18主供电(默认值) */ +N PWR_SEL_TP18 = 1, /* IC选择TP18主供电 */ +N PWR_SEL_VCC = 2, /* IC选择VCC主供电 */ +N PWR_SEL_VDD13CP = 3, /* IC选择VDD13CP外接电源主供电*/ +N} pwr_main_power_sel_e; +N +N/** +N* @brief Sleep mode 供电模式 +N*/ +Ntypedef enum +N{ +N PWR_SLEEP_IN_NON = 0, /* Sleep Mode期间无外部供电(默认值) */ +N PWR_SLEEP_IN_TP18 = 1, /* Sleep Mode期间TP18有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_VCC = 2, /* Sleep Mode期间VCC有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_VCC_TP18 = 3, /* Sleep Mode期间TP18与VCC有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_IOV18 = 4, /* Sleep Mode期间IOV18有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_IOV18_TP18 = 5, /* Sleep Mode期间IOV18与TP18有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_IOV18_VCC = 6, /* Sleep Mode期间IOV18与VCC有电,其他电源掉电或不存在 */ +N PWR_SLEEP_IN_IOV18_VCC_TP18 = 7, /* Sleep Mode期间IOV18、TP18、VCC均有电,其他电源掉电或不存在 */ +N} pwr_sleep_power_sel_e; +N +N/** +N* @brief sleep mode 唤醒沿配置 +N*/ +Ntypedef enum +N{ +N WUP_RISING_EDGE = 2, /* 上升沿唤醒 */ +N WUP_FALLING_EDGE = 3 /* 下降沿唤醒 */ +N} pwr_wakeup_trigger_e; +N +N/** +N* @brief 软件启动原因 +N*/ +Ntypedef enum +N{ +N RF_POWER_ON = 0, /* Power On,正常上电 */ +N RF_CORE_RST = 1, /* 软件reset, 调用NVIC_SystemReset产生reset */ +N RF_WDT_RST = 2, /* WDT reset */ +N RF_CHIP_RST = 3, /* Chip reset,调用hal_system_reset_chip产生的reset */ +N RF_APRSTN_WAKEUP = 4, /* deep sleep mode 下AP_RSTN reset */ +N RF_TDINT_WAKEUP = 5 /* deep sleep mode 下TD_INT reset */ +N} pwr_reset_flag_e; +N +N/** +N* @brief pwr sleep mode type +N* 不同sleep mode具体应用场景见《PWR说明文档》 +N*/ +Ntypedef enum +N{ +N PWR_NORMAL_SLEEP_MODE = 0, /* 待机下需要处理外设(I2C)等事件使用,调用hal_pwr_enter_normal_sleep_mode 进入,hal_pwr_exit_sleep_mode退出 */ +N PWR_STOP_SLEEP_MODE = 1, /* 待机下需要通过任意GPIO唤醒时使用此模式,进入之前关闭所有模块以及MCU,通过hal_pwr_set_stop_sleep_wakeup_pin 注册GPIO中唤醒源,调用hal_pwr_enter_stop_sleep_mode 进入,hal_pwr_exit_sleep_mode退出 */ +N PWR_DEEP_SLEEP_MODE = 2 /* 待机下只需要通过AP RSTN跟TD INT引脚唤醒使用时使用此模式,调用hal_pwr_enter_deep_sleep_mode 唤醒后重启,通过hal_pwr_get_reset_flag确定唤醒源 */ +N} pwr_sleep_mode_e; +N +N/*! @brief HV LDO输出电压配置*/ +Ntypedef enum _pwr_hv_ldo_e +N{ +N HV_LDO_0 = 0, /*1.20V*/ +N HV_LDO_1 = 1, /*1.26V*/ +N HV_LDO_2 = 2, /*1.32V*/ +N HV_LDO_3 = 3, /*1.38V*/ +N HV_LDO_4 = 4, /*1.44V*/ +N HV_LDO_5 = 5, /*1.50V*/ +N HV_LDO_6 = 6, /*1.56V*/ +N HV_LDO_7 = 7, /*1.62V*/ +N HV_LDO_8 = 8, /*1.68V*/ +N HV_LDO_9 = 9, /*1.74V*/ +N HV_LDO_10 = 10, /*1.80V*/ +N HV_LDO_11 = 11, /*1.86V*/ +N HV_LDO_12 = 12, /*2.04V*/ +N HV_LDO_13 = 13, /*2.46V*/ +N HV_LDO_14 = 14, /*3.00V*/ +N HV_LDO_15 = 15, /*3.30V*/ +N} pwr_hv_ldo_e; +N +N/*! @brief LDO 13S输出电压配置*/ +Ntypedef enum _pwr_ldo_13s_e +N{ +N LDO_13S_0 = 0, /*1.22V*/ +N LDO_13S_1 = 1, /*1.25V*/ +N LDO_13S_2 = 2, /*1.27V*/ +N LDO_13S_3 = 3, /*1.30V*/ +N LDO_13S_4 = 4, /*1.33V*/ +N LDO_13S_5 = 5, /*1.37V*/ +N LDO_13S_6 = 6, /*1.40V*/ +N LDO_13S_7 = 7, /*1.43V*/ +N} pwr_ldo_13s_e; +N +N/*! @brief LDO 18S输出电压配置*/ +Ntypedef enum _pwr_ldo_18s_e +N{ +N LDO_18S_0 = 0, /*1.61V*/ +N LDO_18S_1 = 1, /*1.64V*/ +N LDO_18S_2 = 2, /*1.67V*/ +N LDO_18S_3 = 3, /*1.70V*/ +N LDO_18S_4 = 4, /*1.74V*/ +N LDO_18S_5 = 5, /*1.77V*/ +N LDO_18S_6 = 6, /*1.80V*/ +N LDO_18S_7 = 7, /*1.83V*/ +N} pwr_ldo_18s_e; +N +N/*! @brief PWR PVD index */ +Ntypedef enum +N{ +N PVD_IOVCC = 3, +N PVD_VCI = 15, +N} pwr_pvd_index_e; +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief IC主供电选择,如果是配置vcc主供电,可通过hal_pwr_get_vcc_power_ready获取电源状态 +N* 注:上电只能配置一次,不可随意切换 +N* @param power_sel 主供电选择,见枚举描述 +N* @retval none +N*/ +Nvoid hal_pwr_set_main_power(pwr_main_power_sel_e power_sel); +N +N/** +N* @brief 获取VCC电源稳定状态,使用hal_pwr_set_main_power切换电源后,通过此接口获取电源稳定状态 +N* eg: 使用hal_pwr_set_main_power切换至VCC主供电,在VCC电源接口上电之前,此接口返回值为false +N* @param None +N* @retval true-电源切换完成 false-电源未切换完成 +N*/ +Nbool hal_pwr_get_vcc_power_ready(void); +X_Bool hal_pwr_get_vcc_power_ready(void); +N +N/** +N* @brief 配置VCC开关,芯片启动默认打开VCC CP,不存在VCC的情况下可关闭 +N* @param enable: true:打开CP, false:关闭CP +N* @retval none +N*/ +Nvoid hal_pwr_set_vcc_enable(bool enable); +Xvoid hal_pwr_set_vcc_enable(_Bool enable); +N +N/** +N* @brief sleep mode 期间电源情况配置 +N* 调用sleep mode之前配置,根据配置情况在sleep mode自动切换电源 +N* exit sleep mode后切换回hal_pwr_set_main_power的电源 +N* @param powerin =000 息屏期间状态,IOV18掉电0,VCC掉电0,TP18也掉电0; +N* @retval none +N*/ +Nvoid hal_pwr_set_sleep_mode_power(pwr_sleep_power_sel_e power_sel); +N +N/** +N* @brief 进入normal sleep mode 模式(详细使用方法见《PWR说明文档》) +N* 待机下需要处理外设(I2C)等事件使用,图像通路关闭,MCU&外设正常运行 +N* 调用hal_pwr_exit_sleep_mode退出 +N* @param none +N* @retval bool true/false +N*/ +Nbool hal_pwr_enter_normal_sleep_mode(void); +X_Bool hal_pwr_enter_normal_sleep_mode(void); +N +N/** +N* @brief 进入stop sleep mode 模式(详细使用方法见《PWR说明文档》) +N* 待机下需要通过任意GPIO唤醒时使用此模式,进入之前关闭所有模块,通过hal_pwr_set_stop_sleep_wakeup_pin 注册GPIO中唤醒源。 +N* 调用此接口后MCU会停止运行,等待中断唤醒后该函数才返回,调用hal_pwr_exit_sleep_mode真正退出stop sleep mode +N* @param none +N* @retval io_pad_e:唤醒接口 +N*/ +Nio_pad_e hal_pwr_enter_stop_sleep_mode(void); +N +N/** +N* @brief 注册 stop sleep mode 唤醒IO (详细使用方法见文档) +N* @param pad :Pin name +N* @param trig:唤醒触发模式 +N* @retval true/false +N*/ +Nbool hal_pwr_set_stop_sleep_wakeup_pin(io_pad_e pad, pwr_wakeup_trigger_e trig); +X_Bool hal_pwr_set_stop_sleep_wakeup_pin(io_pad_e pad, pwr_wakeup_trigger_e trig); +N +N/** +N* @brief 进入deep sleep mode 模式, 等待AP_RSTN 或者TD_INT 唤醒 +N* 待机下只需要通过AP RSTN跟TD INT引脚唤醒使用时使用此模式,唤醒后重启,通过hal_pwr_get_reset_flag确定唤醒源 +N* 注意, 如果需要使用deep sleep mode,TD INT引脚不能悬空,必须有上拉或者下拉保证确定电平,否则会导致误唤醒 +N* @param polarity true:上升沿唤醒 false:下降沿唤醒 +N* @retval none +N*/ +Nvoid hal_pwr_enter_deep_sleep_mode(pwr_wakeup_trigger_e ap_rstn_trig, pwr_wakeup_trigger_e td_int_trig); +N +N/** +N* @brief 退出sleep mode, normal/stop sleep mode都需要通过此接口退出 +N* @param none +N* @retval true/false +N*/ +Nbool hal_pwr_exit_sleep_mode(void); +X_Bool hal_pwr_exit_sleep_mode(void); +N +N/** +N* @brief 获取系统复位原因 +N* @param none +N* @retval reset flag,见pwr_reset_flag_e +N*/ +Npwr_reset_flag_e hal_pwr_get_reset_flag(void); +N +N/** +N* @brief 打开ELVCC作为供电电源 +N* @param none +N* @retval +N*/ +Nvoid hal_pwr_elvcc_ldo_en(bool enable); +Xvoid hal_pwr_elvcc_ldo_en(_Bool enable); +N +N +N/** +N* @brief +N* @param HV LDO输出电压配置 +N =0000:1.20V, +N =0001:1.26V, +N =0010:1.32V, +N =0011:1.38V, +N =0100:1.44V, +N =0101:1.50V, +N =0110:1.56V, +N =0111:1.62V, +N =1000:1.68V, +N =1001:1.74V, +N =1010:1.80V, +N =1011:1.86V, +N =1100:2.04V, +N =1101:2.46V, +N =1110:3.00V, +N =1111:3.30V +N* @retval none +N*/ +Nvoid hal_pwr_elvcc_vol_set(pwr_hv_ldo_e voltage); +N +N/** +N* @brief +N* @param LDO18_S模块使能控制,=0关闭,默认关闭;=1开启 +N* @retval none +N*/ +Nvoid hal_pwr_ldo18s_en(bool enable); +Xvoid hal_pwr_ldo18s_en(_Bool enable); +N +N +N/** +N* @brief +N* @param LDO18_S输出电压配置, +N 000=1.61V +N 001=1.64V +N 010=1.67V +N 011=1.70V +N 100=1.74V +N 101=1.77V +N 110=1.80V +N 111=1.83V +N* @retval none +N*/ +Nvoid hal_pwr_ldo18s_set(pwr_ldo_18s_e voltage); +N +N/** +N* @brief +N* @param LDO13_S模块使能控制,=0关闭,默认关闭;=1开启 +N* @retval none +N*/ +Nvoid hal_pwr_ldo13s_en(bool enable); +Xvoid hal_pwr_ldo13s_en(_Bool enable); +N +N +N/** +N* @brief +N* @param LDO13_S输出电压配置, +N 000=1.22V, +N 001=1.25V, +N 010=1.27V, +N 011=1.30V, +N 100=1.33V, +N 101=1.37V, +N 110=1.40V, +N 111=1.43V +N* @retval none +N*/ +Nvoid hal_pwr_ldo13s_set(pwr_ldo_13s_e voltage); +N +N/** +N* @brief PVD(电源检查)开关接口, +N* PVD默认均为打开,注意!电源切换(如主供电切换,进出sleep mode)必须打开PVD! +N* @param index: PVD选择 IOVCC/VCI +N* @param enable: PVD开关 +N* @retval none +N*/ +Nvoid hal_pwr_set_pvd(pwr_pvd_index_e index, bool enable); +Xvoid hal_pwr_set_pvd(pwr_pvd_index_e index, _Bool enable); +N +N/** +N* @brief 使能TP18给VDD18供电 +N* @warning info!!! 1:进入休眠的电源要选择TP18供电 eg: hal_pwr_set_sleep_mode_power(PWR_SLEEP_IN_TP18); +N* @warning info!!! 2:唤醒之后,关闭改使能 eg: hal_pwr_sw_tp18_en(DISENABLE); +N* @param enable: +N* @retval none +N*/ +Nvoid hal_pwr_sw_tp18_en(bool enable); +Xvoid hal_pwr_sw_tp18_en(_Bool enable); +N +N +N +N#endif /* __HAL_PWR_H__ */ +L 24 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_pwm.h" +L 1 "..\..\src\sdk\include\hal_pwm.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_pwm.h +N* Description: pwm HAL层头文件 +N* Version: V0.1 +N* Date: 2021-03-17 +N* Author: jaya +N *******************************************************************************/ +N#ifndef __HAL_PWM_H__ +N#define __HAL_PWM_H__ +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Global constant and macro definitions using #define +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Global structures, unions and enumerations using typedef +N*******************************************************************************/ +N +N/******************************************************************************* +N* 4.Global variable extern declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Global function prototypes +N*******************************************************************************/ +N/** +N* @brief pwm 初始化 +N* @param frequency: PWM 频率 < 30000 (30K) +N* @param duty_step: 占空比调试阶数,与硬件相关,不能超过硬件限制(建议配置255) +N 最大阶数 = (1000000000/130)/frequency,常见如下 +N frequency, max step(最大step可配置) +N { 30000, 255 } +N { 4000, 1923} +N { 3000, 2564} +N* @retval true/false +N*/ +Nbool hal_pwm_init(uint32_t frequency, uint32_t duty_step); +X_Bool hal_pwm_init(uint32_t frequency, uint32_t duty_step); +N +N/** +N* @brief pwm 启动停止控制 +N* @param enable: 启动/停止 +N* @retval none +N*/ +Nvoid hal_pwm_enable(bool enable); +Xvoid hal_pwm_enable(_Bool enable); +N +N/** +N* @brief pwm 设置占空比 +N* @param duty_ratio: 占空比,范围为0 - duty_step(hal_pwm_init配置的参数) +N* @retval none +N*/ +Nvoid hal_pwm_set_duty(uint32_t duty_ratio); +N +N/** +N* @brief pwm 配置从elvcc直接输出背光电源 +N* @param enable: ELVCC输出启停 +N* @retval none +N*/ +Nbool hal_pwm_set_elvcc_output(bool enable); +X_Bool hal_pwm_set_elvcc_output(_Bool enable); +N +N/** +N* @brief 配置elvcc PWM 驱动背光能力,范围 0 - 15, capactiy为15时驱动能力最强,ELVCC输出电流最大 +N* @param capacity: 0 - 15,hal_pwm_set_elvcc_output配置时会恢复默认值15 +N* @retval none +N*/ +Nvoid hal_pwm_set_elvcc_capacity(uint8_t capacity); +N +N/** +N* @brief pwm 去初始化 +N* @param none +N* @retval true/false +N*/ +Nbool hal_pwm_deinit(void); +X_Bool hal_pwm_deinit(void); +N +N#endif /* __HAL_PWM_H__ */ +L 25 "..\..\src\app\P8P\p8p_demo.c" 2 +N#include "hal_crc.h" +L 1 "..\..\src\sdk\include\hal_crc.h" 1 +N/******************************************************************************* +N* +N* +N* File: hal_crc.h +N* Description: hal crc ͷ�ļ� +N* Version: V0.1 +N* Date: 2023-07-27 +N* Author: zzf +N *******************************************************************************/ +N#ifndef __HAL_CRC_H +N#define __HAL_CRC_H +N +N#ifdef __cplusplus +Sextern "C" { +N#endif +N +N/******************************************************************************* +N* 1.Included files +N*******************************************************************************/ +N#include "tau_device_datatype.h" +N#include "tau_common.h" +N +N/******************************************************************************* +N* 2.Exported constant and macro definitions +N*******************************************************************************/ +N +N/******************************************************************************* +N* 3.Exported structures, unions and enumerations +N*******************************************************************************/ +N/** +N* @brief crc calculation unit structure +N*/ +Ntypedef struct +N{ +N uint32_t polynomial_value; +N uint32_t initial_seed_value; +N crc_protocol_type_e crc_protocol; +N crc_fxor_function_e crc_foxr; +N crc_reversal_type_e crc_reversal_in; +N crc_reversal_type_e crc_reversal_out; +N} crc_ctrl_handle_t; +N +N/** +N* @brief crc dma callback function define +N*/ +Ntypedef void (*crc_dma_callback)(uint32_t crc_result); +N +N/******************************************************************************* +N* 4.Exported variable declarations +N*******************************************************************************/ +N +N/******************************************************************************* +N* 5.Exported function declarations +N*******************************************************************************/ +N/** +N* @brief The initialization for CRC calculation unit +N* @param crc_ctrl_handle: configuration parameters in initialization +N* @retval true or false +N**/ +Nbool hal_crc_init(const crc_ctrl_handle_t *crc_ctrl_handle); +X_Bool hal_crc_init(const crc_ctrl_handle_t *crc_ctrl_handle); +N +N/** +N* @brief The initialization for CRC calculation unit +N* @param None +N* @retval true or false +N**/ +Nbool hal_crc_deinit(void); +X_Bool hal_crc_deinit(void); +N +N/** +N* @brief Reset CRC calculation unit and DR to CRCR_INIT value +N* @param None +N* @retval true or false +N**/ +Nbool hal_crc_reset(void); +X_Bool hal_crc_reset(void); +N +N/** +N* @brief Get the result of CRC calculation uint +N* @param buffer_address: 16-bit or 32-bit crc calculate buffer address +N* @param buffer_length: the length of buffer +N* @retval 32-bit crc calculate result +N**/ +Nuint32_t hal_crc_cal(const void *buffer_address, uint32_t buffer_length); +N +N/** +N* @brief initial DMA transfer +N* @param crc_ctrl_handle: configuration parameters in initialization +N* @param buffer_address: 16-bit or 32-bit crc calculate buffer address +N* @param buffer_length: the length of buffer(0~65535) +N* @param cb_func: dma interrupt callback function to get the result of crc calculation +N* @retval true or false +N**/ +Nbool hal_crc_dma_init(const crc_ctrl_handle_t *crc_ctrl_handle, crc_dma_callback cb_func, const void *buffer_address, uint16_t buffer_length); +X_Bool hal_crc_dma_init(const crc_ctrl_handle_t *crc_ctrl_handle, crc_dma_callback cb_func, const void *buffer_address, uint16_t buffer_length); +N +N/** +N* @brief deinitial DMA transfer +N* @param None +N* @retval true or false +N**/ +Nbool hal_crc_dma_deinit(void); +X_Bool hal_crc_dma_deinit(void); +N +N/** +N* @brief start DMA transfer +N* @param None +N* @retval true or false +N**/ +Nbool hal_crc_dma_start(void); +X_Bool hal_crc_dma_start(void); +N +N#ifdef __cplusplus +S} +N#endif +N +N#endif /* __HAL_CRC_H */ +N +N/***************** (C) COPYRIGHT ISP Systems (R) END OF FILE ******************/ +L 26 "..\..\src\app\P8P\p8p_demo.c" 2 +N +N#ifdef LOG_TAG +N#undef LOG_TAG +N#endif +N#define LOG_TAG "p8p" +N +N#if _DEMO_GOOGLE_P8P_EN +X#if 1 +N +N/******************** FEATURE开关 ********************/ +N#define TOUCH_ENABLE false /* Touch转换开关 */ +N#define RX_START_WITHOUT_RST true /* 不等待AP RESET直接启动RX,仅作为调试使用 */ +N#define RX_WAIT_TEAR_ON false /* 等待AP_TEAR_ON */ +N#define RX_RESOLUTION_CHANGE_ENABLE true /* 支持分辨率切换开关, AP存在分辨率切换时需要打开 */ +N#define RX_READ_HW_ACK false /* AP DCS读命令使用硬件回复 */ +N#define TX_START_AFTER_APRST false /* 等待AP_reset 后做Panel初始化, 用于热拔插电源不稳定导致初始化失败 */ +N#define TX_USE_CMD_MODE false /* command mode输出开关 配置为True时需要把TD TE与 AP TE 接一起*/ +N#define TX_CMD_MODE_WITHOUT_TE false /* 屏端TE直接输出给AP,Scaler不看TE信号,AP每输入一帧输出一帧(C2C 60Hz->60Hz) */ +N#define AP_SWIRE_OUTPUT true /* swire信号输出,OLED项目配置 */ +N#define ANALOG_PWM_OUTPUT false /* 模拟PWM 调光开关 */ +N#define SHARE_FLASH_ENABLE false /* 共享flash开关 */ +N/*****************************************************/ +N +N/******************** 输出屏幕选择 ********************/ +N#define AMOLED_ICNA3508 1 /* 4lane FHD Panel */ +N/*****************************************************/ +N +N/****************** 系统相关参数配置 ******************/ +N#define MAIN_POWER_SELECT PWR_SEL_VCC /* 主供电电源选择 */ +N#define SLEEP_MODE_POWER PWR_SLEEP_IN_IOV18 //PWR_SLEEP_IN_TP18 /* 息屏电源选择 */ +N#define SLEEP_MODE_SELECT PWR_DEEP_SLEEP_MODE //PWR_DEEP_SLEEP_MODE //PWR_NORMAL_SLEEP_MODE // /* sleep mode 配置 */ +N#define SWIRE_DEFAULT_PULSE 31 // 41 //31 /* SWIRE 波形配置 */ +N#define PWM_FREQUENCY 30000 /* PWM输出频率30Khz */ +N#define PWM_DUTY_STEP 255 /* PWM调光阶数255阶 */ +N/*****************************************************/ +N +N/********************RX 基本参数配置*******************/ +N//AP MIPI数据信息 +N/* 输入分辨率 */ +N#define INPUT_WIDTH 1344 +N#define INPUT_HEIGHT 2992 +N/* 输入 MIPI lane rate,需要正确配置,可50M step调整 */ +N#define INPUT_MIPI_LANE_RATE 1600000000 +N/* 输入图像格式 */ +N#define INPUT_COLOR_MODE DSI_RGB888 +N/* 输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) */ +N#define INPUT_DATA_MODE DSI_DATA_CMD_MODE +N/* 输入mipi lane数量(DSI_RX_LANE_x x为1-4) */ +N#define INPUT_MIPI_LANE_NUM DSI_LANE_4 +N/* 输入为video mode 时数据格式 */ +N#define INPUT_VIDEO_MODEL DSI_NONBURST_EVENT +N/* 输入虚拟通道(0-3) */ +N#define INPUT_VC DSI_VC_0 +N/* 输入的帧率(60/90/120/144Hz) */ +N#define INPUT_FRAME_RATE DSI_FRAME_RATE_120HZ +N/* 输入数据是否DSC压缩 */ +N#define INPUT_COMPRESS true +N/*****************************************************/ +N +N/********************TX 基本参数配置*******************/ +N#if AMOLED_ICNA3508 +X#if 1 +N//almoled NT37280输出MIPI数据信息 +N/* 输出分辨率配置 */ +N#define OUTPUT_WIDTH 1080 +N#define OUTPUT_HEIGHT 2400 +N/* 输出虚拟通道(0-3) */ +N#define OUTPUT_VC DSI_VC_0 +N/* 输出mipi lane数量(DSI_RX_LANE_x x为1-4) */ +N#define OUTPUT_LANE_NUMBER DSI_LANE_4 +N/* 输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) */ +N#if TX_USE_CMD_MODE +X#if 0 +S#define OUTPUT_DATA_MODE DSI_DATA_CMD_MODE +N#else +N#define OUTPUT_DATA_MODE DSI_DATA_VIDEO_MODE +N#endif +N/* 输出为video mode时的数据格式 */ +N#define OUTPUT_VIDEO_MODEL DSI_BURST_MODE +N/* 输出 VSA */ +N#define OUTPUT_VSA 1 //1 +N/* 输出 VBP */ +N#define OUTPUT_VBP 19 //19 +N/* 输出 VBP */ +N#define OUTPUT_VFP 12 //12 +N/* 输出 VSA */ +N#define OUTPUT_HSA 1 +N/* 输出 HBP */ +N#define OUTPUT_HBP 27 +N/* 输出 HFP */ +N#define OUTPUT_HFP 77 +N/* 初始化模式命令传输类型 LP/HS */ +N#define TX_INIT_TYPE DSI_CMD_TX_LP +N#endif +N/******************************************************/ +N +N#if TOUCH_ENABLE +X#if 0 +S#include "app_tp_transfer.h" +N#endif +N +N/* 全局handle */ +Nstatic hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = NULL; +Xstatic hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = 0; +Nstatic hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = NULL; +Xstatic hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = 0; +N +N/* 屏初始化完成标志位 */ +Nstatic bool panel_display_done = false; +Xstatic _Bool panel_display_done = 0; +Nstatic bool sg_system_resume = false; +Xstatic _Bool sg_system_resume = 0; +Nstatic bool sg_system_suspend = false; +Xstatic _Bool sg_system_suspend = 0; +Nstatic bool sg_exit_idle_mode_flag = false; +Xstatic _Bool sg_exit_idle_mode_flag = 0; +N +Nstatic volatile bool g_resolution_change = false; +Xstatic volatile _Bool g_resolution_change = 0; +Nstatic uint32_t pps_renew_flag = 0; +Nstatic uint32_t pwr_rst_flag = 0; +N +N#if RX_WAIT_TEAR_ON +X#if 0 +Sstatic bool sg_ap_set_tear_on = false; +N#endif +N#if TX_START_AFTER_APRST +X#if 0 +Sstatic bool sg_tx_start_in_process = false; +N#endif +N +Nuint16_t rd_51_val,rd_51_val2; +N +N/* AP reset 回调函数声明 */ +Nstatic void ap_rstn_pull_high_cb(void *data); +Nstatic void ap_rstn_pull_down_cb(void *data); +Nstatic void app_mipi_rx_start_cb(void *data); +N +N +N/*************************DCS 命令处理函数 BEGIN*************************/ +N#if RX_READ_HW_ACK +X#if 0 +S/** +S* @brief 配置AP硬件回读 +S* @param none +S* @retval none +S*/ +Sstatic void app_set_dcs_hw_ack() +S{ +S hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE0, DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, 0xFA, 1, 0x00); +S} +N#endif +N/** +N* @brief ap 读回调函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +Xstatic _Bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +N{ +N if (dcs_cmd == 0x04) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_LONG_RESPONSE, +N DSI_VC_0, +N 3, 0x0A,0x60,0x20); +N } +N else if (dcs_cmd == 0xa1) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_LONG_RESPONSE, +N DSI_VC_0, +N 13, 0x0C,0x21,0x0C,0xC6,0x01,0xF3,0xAA,0x11,0x06,0x2B,0x25,0x21,0xF6); +N } +N else if (dcs_cmd == 0xDA) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +N DSI_VC_0, +N 1, 0x0A); +N } +N else if (dcs_cmd == 0xDB) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +N DSI_VC_0, +N 1, 0x68); +N } +N else if (dcs_cmd == 0xDC) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +N DSI_VC_0, +N 1, 0x07); +N } +N else if (dcs_cmd == 0xD6) +N { +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_LONG_RESPONSE, +N DSI_VC_0, +N 5, 0xF0, 0xEA, 0x85, 0x61, 0x86); +N } +N else +N { +N uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle); +N hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +N DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +N DSI_VC_0, +N 1, 0); +N TAU_LOGD("r[%x] [%d] err!!!!!!\n", dcs_cmd, return_size); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "r[%x] [%d] err!!!!!!\n", "p8p", 221,dcs_cmd, return_size); } while (0); +N } +N +N// TAU_LOGD("r %x\n",dcs_cmd); +N return true; +X return 1; +N} +N +Nuint8_t pps[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x0B,0xB0, +N 0x05,0x40,0x00,0xBB,0x02,0xA0,0x02,0xA0, +N 0x02,0x00,0x02,0x50,0x00,0x20,0x14,0x39, +N 0x00,0x09,0x00,0x0C,0x00,0x85,0x00,0x70, +N 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, +N 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, +N 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, +N 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +N 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, +N 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, +N 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +Nuint8_t pps_fhd[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x08,0xC4, +N 0x03,0xF0,0x00,0xBB,0x01,0xF8,0x01,0xF8, +N 0x02,0x00,0x01,0xF8,0x00,0x20,0x11,0x82, +N 0x00,0x07,0x00,0x0C,0x00,0x85,0x00,0x96, +N 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, +N 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, +N 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, +N 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +N 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, +N 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, +N 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +N +N +N#if RX_RESOLUTION_CHANGE_ENABLE +X#if 1 +N/* PPS update callback 用于分辨率切换case */ +Nstatic bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height) +Xstatic _Bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height) +N{ +N// for (uint8_t i =0; i< 128; i++) +N// { +N// TAU_LOGD("PPS_0A[i]=[0x%02X]\n",i,pps[i]); +N// } +N +N /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ +N // hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +N if (pic_width != g_rx_ctrl_handle->base_info.src_w || pic_height != g_rx_ctrl_handle->base_info.src_h) +N { +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); +N /* PPS Update 且分辨率发生变化 */ +N g_rx_ctrl_handle->base_info.src_w = pic_width; +N g_rx_ctrl_handle->base_info.src_h = pic_height; +N /* 注意部分基板更新PPS前不发 Compression Mode Command的情况 */ +N g_rx_ctrl_handle->compress_en = true; +X g_rx_ctrl_handle->compress_en = 1; +N g_resolution_change = true; +X g_resolution_change = 1; +N if(pic_width > 720) +N { +N g_tx_ctrl_handle->base_info.src_w = pic_width; +N g_tx_ctrl_handle->base_info.src_h = pic_height; +N } +N// hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x22); // ic刷黑处理 +N// delayMs(5); +N +N// hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); +N hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +N // hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x13); // 退出刷黑 +N } +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +N //TAU_LOGD("PPS Update[%d][%d] [%d][%d]\n", pic_width, pic_height, g_rx_ctrl_handle->base_info.src_w, g_rx_ctrl_handle->base_info.src_h); +N return true; +X return 1; +N} +N#endif +N +N +N +N/** +N* @brief ap display on处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N +N if(g_resolution_change) +N { +N hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); +N hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +N g_resolution_change = false; +X g_resolution_change = 0; +N TAU_LOGD("pps_update_1\r\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "pps_update_1\r\n", "p8p", 316); } while (0); +N } +N// TAU_LOGD("disp on"); +N// if (start_display_on == false){ +N hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x29); +N// } +N TAU_LOGD("disp on \n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "disp on \n", "p8p", 322); } while (0); +N return true; +X return 1; +N} +N +N +Nvoid REG_51_OFF_output(uint16_t REG_51_VALUE) +N{ +N uint8_t i; +N uint16_t REG_51; +N +N +N +N for (i =0; i< 50; i++) +N { +N REG_51=REG_51_VALUE*(50-i)/50; +N hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, REG_51>>8, REG_51&0x00FF);; +N delayMs(17); +N // TAU_LOGD("reg_51_off[0x%04X]\n",REG_51); +N } +N +N} +N +N/** +N* @brief ap display off处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N#if ANALOG_PWM_OUTPUT +X#if 0 +S hal_pwm_enable(false); +N#endif +N +N TAU_LOGD("disp off %d\n", panel_display_done); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "disp off %d\n", "p8p", 356,panel_display_done); } while (0); +N return true; +X return 1; +N} +N +N +N/***************************************************************************** +N*GPIO发送swire波形 +N*flag: =0, SWIRE=0; =1,仅发送SWIRE信号; =2, 先置高再发SWIRE信号 +N*num: 发几个脉冲 +N*注意FLAG=1时无GPIO初始化!!!!!! +N*****************************************************************************/ +Nvoid Gpio_swire_output(uint8_t flag, uint8_t num) +N{ +N uint8_t ii; +N +N if (flag) +N { +N if (flag ==2) +N { +N hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +N delayMs(2); +N } +N for (ii =0; ii< num; ii++) +N { +N hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_LOW); +N delayUs(10); +N hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +N delayUs(9); +N } +N } +N else +N { +N hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_LOW); +N } +N} +N +N +N +N/** +N* @brief ap enter sleep mode处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x28); +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_STOP_MODE); +N delayMs(10); +N +N // delayMs(10); +N#if AP_SWIRE_OUTPUT +X#if 1 +N /* Swire close */ +N hal_swire_enable(false); +X hal_swire_enable(0); +N delayMs(10); +N hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x10); +N delayMs(20); +N /* AVDD_EN close*/ +N hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_LOW); +N#endif +N /* Wait AP reset down*/ +N hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_down_cb, DETECT_LOW_LVL); +N // sg_system_suspend=true; +N TAU_LOGD("enter sleep mode\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "enter sleep mode\n", "p8p", 419); } while (0); +N// delayMs(500); +N return true; +X return 1; +N} +N +N/** +N* @brief ap exit sleep mode处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N//#if AP_SWIRE_OUTPUT +N// /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ +N// hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +N//#endif +N +N#if TX_START_AFTER_APRST +X#if 0 +S if (panel_display_done == false) +S { +S sg_tx_start_in_process = true; +S } +N#endif +N +N TAU_LOGD("exit sleep mode \n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "exit sleep mode \n", "p8p", 444); } while (0); +N +N return true; +X return 1; +N} +N +N +N +N/** +N* @brief 调光处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +N +Nuint8_t value_51H,value_51L; +Nstatic bool reg53_E8_fg=0; +Xstatic _Bool reg53_E8_fg=0; +Nstatic bool ap_dcs_set_backlight(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_backlight(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N //手机端0xC4~CEB(2043) 映射0x9FF +N#if 0 +S value_51H = dcs_packet->packet_param[0]; +S value_51L = dcs_packet->packet_param[1]; +S hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, value_51H, value_51L); +N#else +N rd_51_val = dcs_packet->packet_param[0]; +N rd_51_val <<=8; +N rd_51_val |= dcs_packet->packet_param[1]; +N +N// rd_51_val2 = (rd_51_val-0x04)*2555/2043+0x04; //0x9FF max +W "..\..\src\app\P8P\p8p_demo.c" 473 16 pointless comparison of unsigned integer with zero +N if((rd_51_val >=0x00)&&(rd_51_val <= 0xFFF) ){ +N +N rd_51_val2 = (rd_51_val-0xC4)*2555/3889+0x04; //0x9FF max +N +N } +N else if(rd_51_val >0xFFF) { +N +N rd_51_val2 = 0x9FF; +N +N } +N hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, rd_51_val2>>8, rd_51_val2&0x00FF); +N#endif +N // TAU_LOGD("AP_51[0x%04X],IC_51[0x%04X]\n",rd_51_val,rd_51_val2); +N return true; +X return 1; +N} +N +N#if RX_WAIT_TEAR_ON +X#if 0 +S/** +S* @brief ap set tear on 处理函数 +S* @param handler:rx_ctrl_handle +S* dcs_packet: dcs 命令 +S* @retval true/false +S*/ +Sstatic bool ap_dcs_set_tear_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +S{ +S TAU_LOGD("ap_set_tear_on\n"); +S sg_ap_set_tear_on = true; +S if (panel_display_done == false) +S { +S TAU_LOGD("gen a tear\n"); +S hal_dsi_tx_ctrl_gen_a_tear_signal(); +S } +S else +S { +S hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +S } +S return true; +S} +S +S/** +S* @brief ap set tear off 处理函数 +S* @param handler:rx_ctrl_handle +S* dcs_packet: dcs 命令 +S* @retval true/false +S*/ +Sstatic bool ap_dcs_set_tear_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +S{ +S TAU_LOGD("ap_set_tear_off \n"); +S sg_ap_set_tear_on = false; +S hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); +S return true; +S} +N#endif +N +N/** +N* @brief 护眼模式回调函数 +N* @param rx_ctrl_handle: dsi rx handle; +N* dcs packet: dcs_packet +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N sg_exit_idle_mode_flag = true; +X sg_exit_idle_mode_flag = 1; +N hal_dsi_rx_ctrl_set_hw_cmd_filter(g_rx_ctrl_handle, HAL_RX_DCS_FILTER_B, 0x2C, 0x2C); +N TAU_LOGD("exit idle mode,skip 0x2C\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "exit idle mode,skip 0x2C\n", "p8p", 537); } while (0); +N return true; +X return 1; +N} +N +N#define TE_TIMER TIMER_NUM2 +Nstatic void soft_te_timer_cb(void *data) +N{ +N /* +N S8 的屏接的是TP1.8V, AC 启动后需要等到TP1.8 起来后再初始化屏, 所以在TP 起来前需要通过软件产生TE给手机,避免手机卡死 +N */ +N// if (panel_display_done == false) +N// { +N hal_dsi_tx_ctrl_gen_a_tear_signal(); +N hal_timer_start(TE_TIMER, 8, soft_te_timer_cb, NULL); +X hal_timer_start(TIMER_NUM2, 8, soft_te_timer_cb, 0); +N// } +N// else +N// { +N// hal_dsi_rx_ctrl_set_hw_tear_mode(g_rx_ctrl_handle); +N// } +N} +N +Nstatic void soft_te_timer_init() +N{ +N// TAU_LOGD("soft_te_timer_init"); +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); +N hal_timer_init(TE_TIMER); +X hal_timer_init(TIMER_NUM2); +N hal_timer_start(TE_TIMER, 1, soft_te_timer_cb, NULL); +X hal_timer_start(TIMER_NUM2, 1, soft_te_timer_cb, 0); +N} +N +N/** +N* @brief 帧率切换处理函数 +N* @param handler:rx_ctrl_handle +N* dcs_packet: dcs 命令 +N* @retval true/false +N*/ +Nstatic bool ap_dcs_set_frame_change(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_dcs_set_frame_change(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N if (dcs_packet->param_length == 1) +N { +N if (dcs_packet->packet_param[0] == 0x18) +N { +N // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +N } +N else +N { +N // soft_te_timer_init(); +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_120HZ_MODE); +N } +N } +N // TAU_LOGD("frame_change %x ,size %d, data %d\n", dcs_packet->dcs_command, dcs_packet->param_length, dcs_packet->packet_param[0]); +N return true; +X return 1; +N} +N +Nstatic bool ap_set_FPS_53(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +Xstatic _Bool ap_set_FPS_53(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +N{ +N uint8_t value_53 =0; +N +N value_53 = dcs_packet->packet_param[0]; +N +N if(value_53 == 0x30) // AP FPS ON +N { +N +N hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x11, 0xCF, 0xFF); // DDIC FPS ON +N +N } +N else if(value_53 == 0x20) // AP FPS OFF +N { +N +N hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x00, 0xCF, 0xFF); // DDIC FPS OFF +N +N +N } +N +N// TAU_LOGD("B1[%x]", value_b1); +N return true; +X return 1; +N} +N +N/*************************DCS 命令处理函数 END*************************/ +N +N/* 客制化DCS command 处理函数表格 */ +Nstatic const hal_dcs_execute_entry_t g_cus_rx_dcs_execute_table[] = +N{ +N {DCS_SET_DISPLAY_ON, ap_dcs_set_display_on, false}, +X {DCS_SET_DISPLAY_ON, ap_dcs_set_display_on, 0}, +N {DCS_SET_DISPLAY_OFF, ap_dcs_set_display_off, true}, +X {DCS_SET_DISPLAY_OFF, ap_dcs_set_display_off, 1}, +N {0x51, ap_dcs_set_backlight, false}, +X {0x51, ap_dcs_set_backlight, 0}, +N {0x53, ap_set_FPS_53, true}, //FPS Switch: P6P-0xB1; P7P-0x53 +X {0x53, ap_set_FPS_53, 1}, +N {DCS_ENTER_SLEEP_MODE, ap_dcs_set_enter_sleep_mode, true}, +X {DCS_ENTER_SLEEP_MODE, ap_dcs_set_enter_sleep_mode, 1}, +N {DCS_EXIT_SLEEP_MODE, ap_dcs_set_exit_sleep_mode, true}, +X {DCS_EXIT_SLEEP_MODE, ap_dcs_set_exit_sleep_mode, 1}, +N {0x60, ap_dcs_set_frame_change, true}, +X {0x60, ap_dcs_set_frame_change, 1}, +N#if RX_WAIT_TEAR_ON +X#if 0 +S {DCS_SET_TEAR_ON, ap_dcs_set_tear_on, true}, +S {DCS_SET_TEAR_OFF, ap_dcs_set_tear_off, true}, +N#endif +N {0, NULL, false} //{0,NULL,false} 数组最后一个固定成员,作为table结尾的判断标准 +X {0, 0, 0} +N}; +N +N/** +N* @brief panel reset +N* @param none +N* @retval none +N*/ +Nstatic void app_tx_panel_reset(void) +N{ +N#if SHARE_FLASH_ENABLE +X#if 0 +S hal_flash_share_mode(true); +N#endif +N hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); +N delayMs(10); +N hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_LOW); +N delayMs(10); +N hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); +N delayMs(40); +N} +N +N#if PANEL_INIT_CODE_ARRAY +X#if 1 +Nstatic void send_panel_init_code(uint32_t size, uint8_t * data) +N{ +N uint32_t data_offeset = 0; +N uint8_t data_type; +N uint8_t vc; +N uint8_t data_size; +N uint8_t * p_data; +N +N while(data_offeset < size) +N { +N data_type = data[data_offeset]; +N vc = data[data_offeset + 1]; +N data_size = data[data_offeset + 2]; +N p_data = &data[data_offeset + 3]; +N hal_dsi_tx_ctrl_write_array_cmd(data_type, vc, data_size, p_data); +N data_offeset = data_offeset + data_size + 3; +N delayUs(50); +N } +N} +N +Nconst uint8_t panel_init_code[] = { +N#if 1 +N0x39,0,3,0x9C,0xA5,0xA5, +N0x39,0,3,0xFD,0x5A,0x5A, +N0x39,0,2,0x9F,0x0F, +N0x39,0,2,0xB3,0x00, +N0x39,0,2,0xD7,0x11, +N0x39,0,2,0x9F,0x01, +N0x39,0,4,0xB2,0x5A,0x04,0xAF, +N0x39,0,36,0xB3,0x00,0xBA,0x00,0x14,0x0C,0x22,0x00,0xBA,0x30,0x14,0x2C,0x00,0x00,0xBA,0x90,0x14,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x00,0x14,0x0C,0x44,0x1C,0x1C,0x1C,0x1C,0x1C, +N0x39,0,19,0xCD,0x06,0x1F,0x1F,0x06,0x00,0x09,0x00,0x96,0x1F,0x03,0x28,0x00,0x96,0x1F,0x09,0x46,0x00,0x96, +N0x39,0,2,0xD0,0x01, +N0x39,0,3,0xE2,0x46,0x20, +N0x39,0,3,0xEA,0x04,0x0B, +N0x39,0,9,0xEE,0x40,0x38,0x28,0x28,0x28,0x28,0x28,0xC2,//add for ICNA5608 +N0x39,0,2,0x9F,0x02, +N0x39,0,26,0xB2,0x00,0xC9,0x32,0x10,0x11,0x12,0x12,0x00,0x08,0x78,0x21,0x11,0x14,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x11,0x1A, +N0x39,0,14,0xB4,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x25,0x25,0x25, +N0x39,0,7,0xB5,0x00,0x30,0x30,0x30,0x30,0x2A, +N0x39,0,20,0xB6,0x05,0x00,0x00,0x11,0x11,0x11,0x1C,0x08,0x1C,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,17,0xB7,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x03, +N0x39,0,14,0xB8,0x00,0x00,0x00,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28, +N0x39,0,9,0xB9,0x00,0x00,0x50,0x00,0x00,0x0F,0x0F,0x00, +N0x39,0,14,0xBA,0x0E,0xFF,0xFF,0xFF,0x00,0x54,0x00,0x44,0x04,0x44,0x04,0x04,0x00, +N0x39,0,26,0xBB,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x3C,0x78,0x78,0x3C, +N0x39,0,5,0xBE,0x5B,0x17,0x04,0x5B, +N0x39,0,17,0xBF,0x0C,0x8F,0xFF,0x10,0x00,0x07,0x00,0x0A,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,17,0xC1,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +N0x39,0,17,0xC2,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +N0x39,0,10,0xC3,0x11,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00, +N0x39,0,26,0xC4,0x00,0x0C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x1F,0x1F,0x00,0x00,0x0D,0x00,0x00,0x00,0x00, +N0x39,0,17,0xD2,0x00,0x00,0x13,0x00,0x00,0x13,0x00,0x00,0x17,0x00,0x00,0x17,0x00,0x00,0x17,0x00, +N0x39,0,14,0xC7,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04, +N0x39,0,14,0xC8,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1, +N0x39,0,27,0xC6,0x00,0x00,0x0f,0x00,0x00,0x11,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x55,0x01,0x01,0x00, +N0x39,0,27,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92, +N0x39,0,27,0xCC,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x33,0x00,0x02,0x02,0x00,0xF7,0xF7,0xF4,0xA9,0xA9,0xAE,0xF0,0x00,0x00, +N0x39,0,41,0xD8,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF, +N0x39,0,12,0xD9,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +N0x39,0,4,0xE0,0x00,0x00,0x60, +N0x39,0,6,0xE1,0x43,0x00,0x11,0x60,0x0D, +N0x39,0,51,0xE2,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24, +N0x39,0,4,0xED,0x00,0x01,0x80, +N0x39,0,18,0xEE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x88,0x88,0x29,0x00,0x00,0x00,0x00, +N0x39,0,6,0xEF,0x00,0x85,0x88,0x87,0x87, +N0x39,0,2,0x9F,0x03, +N0x39,0,33,0xB2,0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x0C,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E,0x00,0x20,0x01,0x1F,0x00,0x07,0x00,0x0C,0x08,0xBB,0x08,0x7A, +N0x39,0,33,0xB3,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +N0x39,0,25,0xB4,0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +N0x39,0,2,0xC0,0x11, +N0x39,0,2,0xC1,0x82, +N0x39,0,3,0xC2,0x00,0xC0, +N0x39,0,6,0xC6,0x11,0x00,0x00,0x01,0x01, +N0x39,0,2,0xE2,0x01, +N0x39,0,2,0x9F,0x04, +N0x39,0,4,0xB2,0x01,0x80,0x00, +N0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +N0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +N0x39,0,8,0xB6,0x01,0x20,0x00,0x0F,0xF0,0x10,0x06, +N0x39,0,3,0xB9,0x91,0xC1, +N0x39,0,3,0xBA,0x01,0x00, +N0x39,0,10,0xBB,0x00,0x00,0x08,0x00,0x00,0x00,0xF2,0x00,0x00, +N0x39,0,41,0xC1,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,21,0xC2,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +N0x39,0,4,0xC3,0x00,0x08,0xB8, +N0x39,0,20,0xC5,0x00,0x20,0x88,0x41,0xCF,0x4F,0x4F,0x00,0x48,0x53,0x29,0x21,0x28,0x2A,0x05,0x2F,0x00,0x20,0x0F, +N0x39,0,37,0xC6,0x4B,0x00,0x90,0x00,0x02,0xD5,0x00,0x02,0xCB,0x01,0x10,0x43,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,5,0xC8,0x48,0x48,0x53,0x53, +N0x39,0,3,0xC9,0x88,0x88, +N0x39,0,41,0xCC,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,51,0xCD,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,41,0xCE,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,51,0xCF,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,41,0xD0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,51,0xD1,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,41,0xD2,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,51,0xD3,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +N0x39,0,41,0xD4,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,51,0xD5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xD6,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,51,0xD7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xD8,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,51,0xD9,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xDD,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,51,0xDE,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xDF,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +N0x39,0,51,0xE0,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xE1,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +N0x39,0,51,0xE2,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xE3,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +N0x39,0,51,0xE4,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,41,0xE5,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +N0x39,0,51,0xE6,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +N0x39,0,2,0x9F,0x05, +N0x39,0,7,0xB2,0x24,0x20,0x05,0x0F,0xFF,0xFF, +N0x39,0,9,0xB3,0xA0,0x00,0x28,0x00,0x00,0x00,0x3F,0xFF, +N0x39,0,13,0xB4,0x02,0x0E,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x50,0x0F, +N0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +N0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +N0x39,0,9,0xB8,0x00,0x00,0x00,0x00,0x13,0x1F,0x30,0x6E, +N0x39,0,41,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,41,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,21,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,41,0xE3,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +N0x39,0,41,0xE4,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +N0x39,0,21,0xE5,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +N#if 1 // renew +N0x39,0,2,0x9F, 0x04, +N0x39,0,19,0xB3, 0x00, 0x00, 0x10, 0x00, 0x30, 0x50, 0x00, 0x70, 0xB0, 0x00, 0xD0, 0xF0, 0x11, 0x30, 0x70, 0x12, 0xF0, 0x70, +N0x39,0,21,0xB4, 0x23, 0xF0, 0x70, 0x34, 0xF0, 0xF0, 0x67, 0xF0, 0xF0, 0x8A, 0xF0, 0xF0, 0xCD, 0xF0, 0xF0, 0xEF, 0xF0, 0xF0, 0x0F, 0xFF, +N0x39,0,2,0x9F, 0x05, +N0x39,0,21,0xB5, 0x0F, 0xFF, 0x07, 0xFF, 0x03, 0x33, 0x01, 0x47, 0x01, 0x46, 0x00, 0xCD, 0x00, 0x66, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x08, +N0x39,0,21,0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +N0x39,0,2,0x9F,0x05, +N0x39,0,2,0xF9,0x80, +N0x39,0,4,0xFF,0x00,0x00,0x01, +N0x39,0,2,0x9F,0x06, +N0x39,0,3,0xFF,0x00,0x01, +N0x39,0,5,0xFE,0x01,0x00,0x00,0x00, +N0x39,0,22,0xF1,0x02,0x00,0x45,0x23,0xC1,0x2C,0x33,0x94,0xF3,0x44,0x10,0x75,0x45,0xC7,0x0F,0x55,0x7C,0xEB,0x66,0x4A,0xA0, +N0x39,0,18,0xF2,0x67,0xF7,0x7C,0x88,0x6B,0xD6,0x9A,0x3C,0x07,0xAB,0xC7,0x27,0xBB,0x84,0xE6,0xB0,0xE6, +N0x39,0,22,0xF3,0x02,0x00,0x45,0x22,0xAC,0xDE,0x23,0xF3,0x98,0x34,0x99,0x20,0x44,0x62,0xA3,0x45,0xF3,0x5D,0x56,0xBA,0x0B, +N0x39,0,18,0xF4,0x66,0x64,0xDA,0x78,0xBA,0x16,0x89,0x6F,0x1D,0x9A,0xBF,0x0A,0xAA,0x5D,0xAC,0xA0,0xAC, +N0x39,0,22,0xF5,0x02,0x00,0xE9,0x33,0x81,0xDD,0x44,0x19,0xB4,0x45,0xD5,0x3C,0x55,0x98,0xE9,0x66,0x61,0xDD,0x77,0x43,0x9E, +N0x39,0,18,0xF6,0x78,0xF9,0x8B,0x9A,0x8E,0x03,0xAB,0x74,0x49,0xCC,0x14,0x70,0xCD,0xDC,0x3E,0xD0,0x3E, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x01,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x12,0x7E,0x64,0x23,0xBD,0x8A,0x33,0xAD,0xED,0x44,0x64,0x90,0x55,0x23,0x81,0x56,0xD4,0x2C, +N0x39,0,18,0xF2,0x66,0x71,0xF3,0x78,0xCA,0x27,0x89,0x7E,0x2B,0x9A,0xCB,0x1A,0xAA,0x66,0xB5,0xA0,0xB5, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x11,0x13,0xE8,0x23,0x5B,0x0A,0x33,0x20,0x62,0x34,0xEB,0x0B,0x44,0xA3,0xFC,0x55,0x45,0x9F, +N0x39,0,18,0xF4,0x56,0xDE,0x5D,0x77,0x21,0x72,0x78,0xC5,0x5C,0x89,0xE5,0x2A,0x99,0x6D,0xB1,0x90,0xB1, +N0x39,0,22,0xF5,0x02,0x00,0x08,0x23,0xFD,0x68,0x34,0x96,0x48,0x44,0x6A,0xA6,0x55,0x2A,0x5A,0x56,0xF8,0x64,0x67,0xBC,0x1A, +N0x39,0,18,0xF6,0x77,0x66,0xF0,0x89,0xD8,0x3D,0x9A,0x9F,0x59,0xBB,0x00,0x58,0xBB,0xAC,0xFC,0xB0,0xFC, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x02,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x12,0x63,0xC2,0x33,0x0D,0x53,0x33,0xA6,0xF9,0x44,0x61,0xC0,0x55,0x14,0x5D, +N0x39,0,18,0xF2,0x56,0x9C,0x03,0x67,0xBF,0x0F,0x77,0x58,0xDA,0x88,0x56,0x8F,0x89,0xC9,0x00,0x90,0x00, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x02,0x87,0x27,0x22,0x83,0xD1,0x33,0x1B,0x79,0x34,0xDE,0x3A,0x44,0x90,0xDB, +N0x39,0,18,0xF4,0x55,0x14,0x74,0x66,0x29,0x76,0x67,0xBA,0x2D,0x77,0xA2,0xD3,0x88,0x08,0x38,0x80,0x38, +N0x39,0,22,0xF5,0x02,0x00,0x61,0x22,0x62,0xC3,0x33,0x2A,0x99,0x34,0xDF,0x31,0x44,0x5F,0xBB,0x55,0x22,0x8A,0x56,0xEC,0x39, +N0x39,0,18,0xF6,0x66,0x7D,0xED,0x78,0xB7,0x0D,0x88,0x5C,0xE9,0x99,0x70,0xB1,0x9A,0xED,0x2A,0xA0,0x2A, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x03,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0xF0,0x23,0xCD,0x16,0x34,0xA6,0x11,0x44,0x5E,0xA3, +N0x39,0,18,0xF2,0x45,0xDB,0x42,0x56,0xDB,0x21,0x66,0x66,0xD2,0x77,0x36,0x66,0x77,0x96,0xBE,0x70,0xBE, +N0x39,0,22,0xF3,0x00,0x00,0x02,0x00,0x05,0x07,0x00,0x0C,0x0D,0x11,0x44,0x80,0x22,0x4C,0xA8,0x33,0x36,0x87,0x34,0xDA,0x29, +N0x39,0,18,0xF4,0x44,0x57,0xBF,0x55,0x49,0x8D,0x56,0xD6,0x37,0x66,0x97,0xC3,0x67,0xF0,0x16,0x70,0x16, +N0x39,0,22,0xF5,0x01,0x00,0x1F,0x11,0x20,0x21,0x33,0x13,0x14,0x33,0x3F,0x6E,0x34,0xAF,0x0E,0x44,0x8D,0xC9,0x55,0x21,0x73, +N0x39,0,18,0xF6,0x56,0xA8,0x1B,0x67,0xC1,0x0B,0x77,0x56,0xCC,0x88,0x39,0x6C,0x88,0x9E,0xCC,0x80,0xCC, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x04,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x17,0x11,0x50,0xCF,0x33,0x76,0xC2,0x44,0x75,0xC3,0x55,0x19,0x5A, +N0x39,0,18,0xF2,0x55,0x93,0xF4,0x66,0x8C,0xD0,0x77,0x0C,0x7A,0x78,0xDD,0x0A,0x88,0x3A,0x61,0x80,0x61, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x12,0x7B,0x46,0x33,0x11,0x65,0x34,0xFA,0x4D,0x44,0x97,0xDD, +N0x39,0,18,0xF4,0x55,0x16,0x74,0x66,0x06,0x49,0x66,0x81,0xE9,0x77,0x45,0x73,0x77,0x97,0xBF,0x70,0xBF, +N0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x56,0x57,0x33,0x58,0xD9,0x34,0xFF,0x38,0x44,0x88,0xD6,0x55,0x39,0x97,0x56,0xD4,0x23, +N0x39,0,18,0xF6,0x66,0x5C,0xC5,0x77,0x6B,0xB4,0x78,0xF2,0x68,0x89,0xD3,0x04,0x99,0x35,0x62,0x90,0x62, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x05,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x02,0x08,0x6F,0x23,0xB9,0xBF,0x44,0x2E,0xA1,0x45,0xF7,0x38, +N0x39,0,18,0xF2,0x55,0x73,0xD7,0x66,0x78,0xB9,0x67,0xFB,0x64,0x77,0xC7,0xF5,0x88,0x20,0x51,0x80,0x51, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x01,0x06,0x32,0x23,0xAA,0x2B,0x34,0xB0,0x1B,0x44,0x69,0xAD, +N0x39,0,18,0xF4,0x45,0xF5,0x51,0x56,0xF1,0x2E,0x66,0x70,0xCF,0x77,0x2C,0x5A,0x77,0x81,0xAA,0x70,0xAA, +N0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB0,0x33,0xB1,0xB2,0x34,0xE8,0x0C,0x44,0x5F,0x9E,0x55,0x23,0x74,0x56,0xBC,0x01, +N0x39,0,18,0xF6,0x66,0x50,0xB0,0x77,0x5D,0xA1,0x78,0xE5,0x57,0x88,0xC0,0xF1,0x99,0x1F,0x4F,0x90,0x4F, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x06,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x0F,0x18,0x34,0x90,0x21,0x45,0xAA,0x01, +N0x39,0,18,0xF2,0x55,0x3A,0xA8,0x66,0x4D,0x8E,0x67,0xD7,0x3E,0x77,0xA5,0xD0,0x78,0xFB,0x2B,0x80,0x2B, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x26,0xEA,0x33,0x17,0xAD,0x44,0x16,0x70, +N0x39,0,18,0xF4,0x45,0xAC,0x1B,0x55,0xBD,0xFB,0x66,0x45,0xA7,0x77,0x0F,0x33,0x77,0x5D,0x8B,0x70,0x8B, +N0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB3,0x33,0xCC,0xCD,0x33,0xCE,0xCF,0x44,0x2E,0x76,0x45,0xE9,0x58,0x55,0x9F,0xE1, +N0x39,0,18,0xF6,0x66,0x2A,0x97,0x77,0x41,0x82,0x78,0xC8,0x39,0x88,0xA6,0xD2,0x99,0x00,0x31,0x90,0x31, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x07,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0xCB,0x13,0x06,0x59,0x44,0x62,0x95, +N0x39,0,18,0xF2,0x45,0xEB,0x63,0x66,0x0B,0x57,0x67,0x93,0x08,0x77,0x6A,0x99,0x77,0xC0,0xEF,0x70,0xEF, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x12,0xC8,0xF3,0x34,0xB5,0x00, +N0x39,0,18,0xF4,0x44,0x4E,0xC6,0x55,0x70,0xBD,0x56,0xF6,0x70,0x66,0xCF,0xFD,0x77,0x1F,0x52,0x70,0x52, +N0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x54,0x6E,0x33,0x6F,0x70,0x33,0x71,0x72,0x34,0xE6,0x2F,0x45,0xAE,0x0F,0x55,0x59,0xB7, +N0x39,0,18,0xF6,0x56,0xEE,0x5B,0x77,0x0B,0x51,0x78,0x91,0x05,0x88,0x6C,0x9D,0x88,0xC7,0xF8,0x80,0xF8, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x08,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x55,0x00,0x78,0x79, +N0x39,0,18,0xF2,0x34,0x8C,0x68,0x55,0x49,0x98,0x56,0xD1,0x48,0x66,0xA9,0xD0,0x67,0xFB,0x27,0x70,0x27, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x01,0x0A,0x15,0x12,0xD1,0x2A, +N0x39,0,18,0xF4,0x33,0x15,0xD4,0x44,0xAB,0xF0,0x55,0x26,0xA9,0x66,0x11,0x30,0x66,0x59,0x87,0x60,0x87, +N0x39,0,22,0xF5,0x02,0x00,0x55,0x22,0x56,0x57,0x22,0xD1,0xFA,0x33,0x10,0x13,0x33,0x14,0x8C,0x44,0x01,0x68,0x45,0xB5,0x16, +N0x39,0,18,0xF6,0x55,0x4B,0xB1,0x66,0x6B,0xAB,0x67,0xDE,0x5C,0x77,0xBB,0xDC,0x88,0x07,0x2D,0x80,0x2D, +N0x39,0,2,0xFF,0x01, +N0x39,0,5,0xFE,0x01,0x09,0x00,0x00, +N0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0F, +N0x39,0,18,0xF2,0x00,0x50,0x51,0x34,0xF5,0xB1,0x45,0xF1,0x82,0x56,0xDE,0x11,0x66,0x3D,0x5D,0x60,0x5D, +N0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0D, +N0x39,0,18,0xF4,0x02,0xA8,0x37,0x34,0x7F,0x08,0x44,0x5A,0xD4,0x55,0x38,0x60,0x55,0x9C,0xB8,0x50,0xB8, +N0x39,0,22,0xF5,0x00,0x00,0x01,0x00,0x02,0x03,0x01,0xE2,0x25,0x12,0x49,0x76,0x22,0xF8,0xF9,0x33,0x3A,0xAE,0x44,0x1C,0x64, +N0x39,0,18,0xF6,0x45,0x96,0x10,0x56,0xCA,0x0D,0x66,0x52,0xAB,0x77,0x0C,0x2B,0x77,0x64,0x88,0x70,0x88, +N0x39,0,2,0xFF,0x01, +N0x39,0,2,0x9F,0x05, +N0x39,0,2,0xF9,0x00, +N0x39,0,4,0xFF,0x00,0x00,0x00, +N0x39,0,2,0x9F,0x06, +N0x39,0,3,0xFF,0x00,0x00, +N#else // GAMMA correct for reddish +S0x39,0,2,0x9F, 0x04, +S0x39,0,19,0xB3, 0x00, 0x00, 0x10, 0x00, 0x30, 0x50, 0x00, 0x70, 0xB0, 0x00, 0xD0, 0xF0, 0x11, 0x30, 0x70, 0x12, 0xF0, 0x70, +S0x39,0,21,0xB4, 0x23, 0xF0, 0x70, 0x34, 0xF0, 0xF0, 0x67, 0xF0, 0xF0, 0x8A, 0xF0, 0xF0, 0xCD, 0xF0, 0xF0, 0xEF, 0xF0, 0xF0, 0x0F, 0xFF, +S0x39,0,2,0x9F, 0x05, +S0x39,0,21,0xB5, 0x0F, 0xFF, 0x07, 0xFF, 0x03, 0x33, 0x01, 0x47, 0x01, 0x46, 0x00, 0xCD, 0x00, 0x66, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x08, +S0x39,0,21,0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +S0x39,0,2,0x9F, 0x05, +S0x39,0,2,0xF9, 0x80, +S0x39,0,4,0xFF, 0x00, 0x00, 0x01, +S0x39,0,2,0x9F, 0x06, +S0x39,0,3,0xFF, 0x00, 0x01, +S0x39,0,5,0xFE, 0x01, 0x00, 0x00, 0x00, +S0x39,0,22,0xF1, 0x02, 0x00, 0x4C, 0x23, 0xB9, 0x2D, 0x34, 0x8F, 0x26, 0x44, 0x5E, 0x94, 0x45, 0xEF, 0x3F, 0x56, 0xC3, 0x31, 0x66, 0x91, 0xE4, +S0x39,0,18,0xF2, 0x77, 0x32, 0xBF, 0x89, 0xA9, 0x12, 0x9A, 0x74, 0x35, 0xAB, 0xF2, 0x4E, 0xBC, 0xAD, 0x0C, 0xC0, 0x0C, +S0x39,0,22,0xF3, 0x02, 0x00, 0x59, 0x22, 0x9E, 0xE9, 0x33, 0x31, 0xAE, 0x34, 0xE6, 0x15, 0x44, 0x68, 0xB3, 0x55, 0x2D, 0x93, 0x56, 0xEC, 0x3C, +S0x39,0,18,0xF4, 0x67, 0x84, 0x07, 0x78, 0xDB, 0x39, 0x89, 0x8F, 0x2F, 0x9A, 0xCA, 0x16, 0xAA, 0x61, 0xAC, 0xA0, 0xAC, +S0x39,0,22,0xF5, 0x03, 0x00, 0x11, 0x33, 0x82, 0xF0, 0x44, 0x4F, 0xE9, 0x55, 0x28, 0x5F, 0x56, 0xC3, 0x1C, 0x67, 0xAC, 0x22, 0x77, 0x86, 0xE1, +S0x39,0,18,0xF6, 0x88, 0x33, 0xC9, 0x9A, 0xC4, 0x38, 0xAB, 0xAA, 0x75, 0xCC, 0x36, 0x95, 0xCD, 0xF9, 0x5D, 0xD0, 0x5D, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x01, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0xC0, 0x22, 0x02, 0xAD, 0x33, 0x1E, 0xBD, 0x34, 0xF9, 0x2D, 0x44, 0x86, 0xD2, 0x55, 0x4C, 0xB2, 0x66, 0x0B, 0x5C, +S0x39,0,18,0xF2, 0x67, 0xA4, 0x23, 0x78, 0xF8, 0x58, 0x89, 0xAC, 0x4D, 0x9A, 0xE5, 0x34, 0xAA, 0x7D, 0xC8, 0xA0, 0xC8, +S0x39,0,22,0xF3, 0x00, 0x00, 0x56, 0x12, 0x80, 0x22, 0x23, 0x91, 0x2D, 0x33, 0x6B, 0x9F, 0x34, 0xF6, 0x3F, 0x45, 0xB7, 0x19, 0x55, 0x6C, 0xB7, +S0x39,0,18,0xF4, 0x56, 0xFB, 0x73, 0x77, 0x37, 0x8D, 0x78, 0xDB, 0x69, 0x89, 0xED, 0x2C, 0x99, 0x67, 0xA2, 0x90, 0xA2, +S0x39,0,22,0xF5, 0x02, 0x00, 0x89, 0x33, 0x0E, 0x83, 0x34, 0xE3, 0x7B, 0x44, 0xB7, 0xED, 0x55, 0x4C, 0x9E, 0x66, 0x25, 0x96, 0x67, 0xF5, 0x4B, +S0x39,0,18,0xF6, 0x78, 0x98, 0x1F, 0x99, 0x01, 0x65, 0x9A, 0xC1, 0x74, 0xBB, 0x1D, 0x6E, 0xBC, 0xBB, 0x0D, 0xC0, 0x0D, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x02, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x01, 0x02, 0x58, 0x23, 0x3C, 0x00, 0x33, 0x42, 0x77, 0x34, 0xD0, 0x17, 0x44, 0x89, 0xE7, 0x55, 0x33, 0x79, +S0x39,0,18,0xF2, 0x56, 0xB8, 0x26, 0x67, 0xDA, 0x27, 0x77, 0x71, 0xF1, 0x88, 0x63, 0x9C, 0x89, 0xD1, 0x04, 0x90, 0x04, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0xA0, 0x12, 0x9D, 0x6B, 0x22, 0xAB, 0xE2, 0x33, 0x3C, 0x86, 0x34, 0xF9, 0x52, 0x44, 0x9F, 0xE1, +S0x39,0,18,0xF4, 0x55, 0x1C, 0x82, 0x66, 0x2C, 0x75, 0x67, 0xB8, 0x2E, 0x77, 0x98, 0xCB, 0x78, 0xFA, 0x27, 0x80, 0x27, +S0x39,0,22,0xF5, 0x01, 0x00, 0xF9, 0x22, 0x7F, 0xEC, 0x33, 0x46, 0xCE, 0x44, 0x08, 0x37, 0x44, 0x8E, 0xD6, 0x55, 0x4F, 0xB4, 0x66, 0x08, 0x54, +S0x39,0,18,0xF6, 0x67, 0x99, 0x0E, 0x78, 0xCE, 0x21, 0x88, 0x6C, 0xF7, 0x99, 0x72, 0xAE, 0x9A, 0xE7, 0x27, 0xA0, 0x27, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x03, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0x60, 0x22, 0x1F, 0x83, 0x23, 0xFF, 0x56, 0x34, 0xCD, 0x29, 0x44, 0x72, 0xB1, +S0x39,0,18,0xF2, 0x45, 0xE8, 0x4A, 0x56, 0xE6, 0x29, 0x66, 0x68, 0xD4, 0x77, 0x35, 0x61, 0x77, 0x8E, 0xB6, 0x70, 0xB6, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0x1E, 0x12, 0xAC, 0x01, 0x22, 0x75, 0xC6, 0x33, 0x3E, 0x98, 0x34, 0xE1, 0x21, +S0x39,0,18,0xF4, 0x44, 0x56, 0xB3, 0x55, 0x47, 0x86, 0x56, 0xC1, 0x26, 0x66, 0x82, 0xAB, 0x66, 0xD3, 0xF9, 0x60, 0xF9, +S0x39,0,22,0xF5, 0x02, 0x00, 0x48, 0x22, 0x49, 0x4A, 0x23, 0xAD, 0x2C, 0x33, 0x61, 0x90, 0x34, 0xDF, 0x24, 0x44, 0x91, 0xEB, 0x55, 0x36, 0x7A, +S0x39,0,18,0xF6, 0x56, 0xB7, 0x20, 0x67, 0xCA, 0x12, 0x77, 0x54, 0xC7, 0x88, 0x30, 0x5E, 0x88, 0x8B, 0xBA, 0x80, 0xBA, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x04, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0xFC, 0x23, 0xDF, 0x46, 0x34, 0xC5, 0x17, 0x44, 0x8F, 0xE4, 0x55, 0x2C, 0x69, +S0x39,0,18,0xF2, 0x55, 0xA0, 0xFF, 0x66, 0x97, 0xD7, 0x77, 0x14, 0x7D, 0x78, 0xDA, 0x08, 0x88, 0x31, 0x59, 0x80, 0x59, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0xE2, 0x22, 0x76, 0xCF, 0x33, 0x3E, 0x90, 0x44, 0x04, 0x5D, 0x44, 0xA2, 0xDE, +S0x39,0,18,0xF4, 0x55, 0x12, 0x6C, 0x56, 0xFF, 0x3C, 0x66, 0x75, 0xD9, 0x77, 0x31, 0x58, 0x77, 0x7D, 0xA3, 0x70, 0xA3, +S0x39,0,22,0xF5, 0x03, 0x00, 0x0D, 0x33, 0x0E, 0x0F, 0x33, 0x69, 0xF1, 0x44, 0x24, 0x52, 0x44, 0x9E, 0xDF, 0x55, 0x4B, 0xA1, 0x56, 0xED, 0x2E, +S0x39,0,18,0xF6, 0x66, 0x6A, 0xD0, 0x77, 0x72, 0xB6, 0x78, 0xF7, 0x65, 0x88, 0xCB, 0xF9, 0x99, 0x23, 0x4D, 0x90, 0x4D, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x05, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x02, 0x6F, 0x81, 0x33, 0x64, 0xD1, 0x44, 0x5E, 0xBE, 0x55, 0x0A, 0x4B, +S0x39,0,18,0xF2, 0x55, 0x82, 0xE3, 0x66, 0x80, 0xC3, 0x67, 0xFF, 0x6A, 0x77, 0xC6, 0xF1, 0x88, 0x19, 0x42, 0x80, 0x42, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x12, 0x70, 0x2A, 0x23, 0xDE, 0x45, 0x34, 0xCD, 0x2D, 0x44, 0x79, 0xB9, +S0x39,0,18,0xF4, 0x45, 0xF0, 0x4D, 0x56, 0xE5, 0x25, 0x66, 0x5F, 0xC2, 0x77, 0x1B, 0x42, 0x77, 0x69, 0x8E, 0x70, 0x8E, +S0x39,0,22,0xF5, 0x03, 0x00, 0x13, 0x33, 0x32, 0x33, 0x33, 0x34, 0xC7, 0x34, 0xFE, 0x2E, 0x44, 0x80, 0xC3, 0x55, 0x30, 0x8A, 0x56, 0xD7, 0x1B, +S0x39,0,18,0xF6, 0x66, 0x56, 0xBC, 0x77, 0x60, 0xA6, 0x78, 0xE4, 0x52, 0x88, 0xB5, 0xE3, 0x99, 0x0E, 0x38, 0x90, 0x38, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x06, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x13, 0x79, 0x0C, 0x34, 0xF3, 0x70, 0x45, 0xCB, 0x0F, +S0x39,0,18,0xF2, 0x55, 0x4D, 0xB5, 0x66, 0x58, 0x9D, 0x67, 0xDA, 0x46, 0x77, 0xA5, 0xD2, 0x78, 0xF9, 0x21, 0x80, 0x21, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x12, 0xAA, 0x86, 0x33, 0x58, 0xD1, 0x44, 0x29, 0x71, +S0x39,0,18,0xF4, 0x45, 0xAF, 0x16, 0x55, 0xB9, 0xFB, 0x66, 0x38, 0xA0, 0x67, 0xF9, 0x22, 0x77, 0x47, 0x6D, 0x70, 0x6D, +S0x39,0,22,0xF5, 0x02, 0x00, 0x4D, 0x22, 0x4E, 0x4F, 0x33, 0xB7, 0xB8, 0x33, 0xB9, 0xF1, 0x44, 0x49, 0x92, 0x55, 0x05, 0x63, 0x55, 0xB4, 0xFA, +S0x39,0,18,0xF6, 0x66, 0x38, 0xA0, 0x77, 0x44, 0x8B, 0x78, 0xC9, 0x38, 0x88, 0x9A, 0xC9, 0x89, 0xF2, 0x1B, 0x90, 0x1B, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x07, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x0E, 0x33, 0x37, 0xFB, 0x44, 0x6B, 0xBD, +S0x39,0,18,0xF2, 0x55, 0x00, 0x6E, 0x66, 0x19, 0x5F, 0x67, 0x9E, 0x0A, 0x77, 0x68, 0x90, 0x77, 0xBB, 0xE1, 0x70, 0xE1, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x01, 0x08, 0x11, 0x23, 0xA3, 0x52, 0x34, 0xBE, 0x13, +S0x39,0,18,0xF4, 0x44, 0x56, 0xC6, 0x55, 0x71, 0xB8, 0x56, 0xF8, 0x61, 0x66, 0xBC, 0xE4, 0x77, 0x0B, 0x2E, 0x70, 0x2E, +S0x39,0,22,0xF5, 0x02, 0x00, 0x6C, 0x22, 0x6D, 0x6E, 0x23, 0x6F, 0xAE, 0x33, 0xAF, 0xB0, 0x44, 0x03, 0x4E, 0x45, 0xC6, 0x26, 0x55, 0x79, 0xC3, +S0x39,0,18,0xF6, 0x66, 0x02, 0x6D, 0x77, 0x12, 0x57, 0x78, 0x95, 0x02, 0x88, 0x62, 0x8F, 0x88, 0xB7, 0xDF, 0x80, 0xDF, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x08, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x23, 0xAE, 0x8C, +S0x39,0,18,0xF2, 0x44, 0x01, 0x95, 0x55, 0x4C, 0x93, 0x56, 0xD5, 0x43, 0x66, 0x9F, 0xC8, 0x67, 0xEF, 0x12, 0x70, 0x12, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x01, 0x0A, 0x22, 0x22, 0x3E, 0xDE, +S0x39,0,18,0xF4, 0x33, 0x4A, 0xDD, 0x44, 0x97, 0xDD, 0x55, 0x1E, 0x92, 0x56, 0xF0, 0x1A, 0x66, 0x41, 0x65, 0x60, 0x65, +S0x39,0,22,0xF5, 0x00, 0x00, 0xF4, 0x00, 0xF5, 0xF6, 0x02, 0xF7, 0xC8, 0x22, 0xC9, 0xCA, 0x33, 0x41, 0x93, 0x44, 0x18, 0x79, 0x45, 0xCC, 0x0F, +S0x39,0,18,0xF6, 0x55, 0x4F, 0xBE, 0x66, 0x66, 0xA8, 0x67, 0xE4, 0x49, 0x77, 0xA2, 0xCB, 0x78, 0xF2, 0x17, 0x80, 0x17, +S0x39,0,2,0xFF, 0x01, +S0x39,0,5,0xFE, 0x01, 0x09, 0x00, 0x00, +S0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x00, 0x0C, 0x0D, +S0x39,0,18,0xF2, 0x03, 0x59, 0x2C, 0x44, 0x69, 0xBE, 0x55, 0x03, 0x72, 0x56, 0xD6, 0x00, 0x66, 0x27, 0x4A, 0x60, 0x4A, +S0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x00, 0x0C, 0x0D, +S0x39,0,18,0xF4, 0x12, 0x4C, 0x8A, 0x33, 0xA6, 0xFC, 0x44, 0x42, 0xB3, 0x55, 0x11, 0x3C, 0x55, 0x67, 0x91, 0x50, 0x91, +S0x39,0,22,0xF5, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x02, 0x04, 0x02, 0x22, 0x03, 0x04, 0x22, 0x71, 0xD8, 0x33, 0x5F, 0xC5, 0x44, 0x18, 0x62, +S0x39,0,18,0xF6, 0x45, 0x9F, 0x06, 0x55, 0xB3, 0xF7, 0x66, 0x36, 0x9D, 0x67, 0xF4, 0x18, 0x77, 0x3C, 0x5E, 0x70, 0x5E, +S0x39,0,2,0xFF, 0x01, +S0x39,0,2,0x9F, 0x05, +S0x39,0,2,0xF9, 0x00, +S0x39,0,4,0xFF, 0x00, 0x00, 0x00, +S0x39,0,2,0x9F, 0x06, +S0x39,0,3,0xFF, 0x00, 0x00, +N#endif +N0x39,0,2,0x9F,0x07, +N//0x39,0,8,0xB2,0x10,0x10,0x10,0x10,0x04,0x00,0x98, +N0x39,0,8,0xB2,0x04,0x04,0x04,0x04,0x04,0x00,0x98, +N0x39,0,8,0xB3,0x15,0x15,0x15,0x15,0x04,0x00,0x9A, +N0x39,0,8,0xB4,0x20,0x20,0x20,0x20,0x04,0x00,0x96, +N0x39,0,8,0xB6,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +N0x39,0,8,0xB7,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +N0x39,0,33,0xB9,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,33,0xBA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,33,0xBB,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, +N0x39,0,33,0xBD,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,33,0xBE,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,31,0xC0,0x00,0x7A,0x7A,0x00,0x7A,0x7A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,31,0xC1,0x00,0x9A,0x9A,0x00,0x9A,0x9A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,31,0xC2,0x00,0x96,0x96,0x00,0x96,0x96,0x00,0x6A,0x46,0x00,0x26,0x1B,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,7,0xC4,0x10,0x30,0x1C,0x00,0x1C,0x1C, +N0x39,0,7,0xC5,0x22,0x60,0x60,0x22,0x60,0x60, +N0x39,0,41,0xD6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,21,0xD7,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +N0x39,0,2,0x9F,0x0C, +N0x39,0,9,0xB4,0xF0,0xC0,0xC0,0x1B,0x1B,0x00,0x00,0x16, +N0x39,0,2,0x9F,0x08, +N0x39,0,4,0xB2,0x10,0x00,0x02, +N0x39,0,2,0xB4,0x11, +N0x39,0,8,0xB5,0x00,0x02,0x01,0xFF,0x20,0x40,0xC0, +N0x39,0,3,0xB6,0x58,0x03, +N0x39,0,55,0xB7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xB8,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xB9,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xBA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xBB,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xBC,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +N0x39,0,55,0xBD,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xBE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xBF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC0,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC1,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC2,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +N0x39,0,55,0xC3,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC4,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC5,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC6,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,55,0xC8,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +N0x39,0,10,0xC9,0x16,0x33,0x3D,0x01,0x00,0x0F,0xFF,0x00,0x00, +N0x39,0,2,0xCA,0xF0, +N0x39,0,6,0xCB,0x00,0x01,0x7C,0x42,0x00, +N0x39,0,5,0xCC,0x00,0x01,0x00,0x1F, +N0x39,0,4,0xCD,0x00,0x01,0x00, +N0x39,0,33,0xCE,0x00,0x25,0x00,0xA9,0x01,0x9C,0x03,0x08,0x04,0xF4,0x07,0x65,0x0A,0x62,0x0D,0xEE,0x12,0x0C,0x16,0xC1,0x1C,0x10,0x21,0xFC,0x28,0x87,0x2F,0xB5,0x37,0x86,0x3F,0xFF, +N0x39,0,12,0xCF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0x4E,0xED,0x00, +N0x39,0,53,0xD0,0x00,0x00,0x01,0xF1,0xEC,0x23,0xE4,0xDC,0x45,0xD7,0xDE,0x67,0xCB,0xC2,0x89,0xC0,0xC4,0xAB,0xC2,0xBC,0xCD,0xB5,0xAB,0xEF,0xAA,0xB4,0x00,0x00,0x01,0xFA,0xF1,0x23,0xEB,0xE4,0x45,0xE3,0xEB,0x67,0xDB,0xD1,0x89,0xCE,0xD0,0xAB,0xCC,0xC8,0xCD,0xC1,0xBA,0xEF,0xB9,0xB8, +N0x39,0,53,0xD1,0x00,0x00,0x01,0xFF,0xF0,0x23,0xE8,0xE3,0x45,0xE1,0xE5,0x67,0xD7,0xCC,0x89,0xCE,0xD5,0xAB,0xCE,0xCA,0xCD,0xC4,0xBD,0xEF,0xB9,0xB7,0x00,0x00,0x01,0xF1,0xEB,0x23,0xE1,0xDD,0x45,0xD0,0xD0,0x67,0xBF,0xB1,0x89,0x9D,0x8A,0xAB,0x78,0x62,0xCD,0x49,0x30,0xEF,0x14,0x06, +N0x39,0,53,0xD2,0x00,0x00,0x01,0xF5,0xEE,0x23,0xE8,0xE1,0x45,0xD6,0xD4,0x67,0xBF,0xB6,0x89,0xA6,0x99,0xAB,0x88,0x75,0xCD,0x60,0x47,0xEF,0x29,0x05,0x00,0x00,0x01,0xF4,0xEF,0x23,0xE7,0xE1,0x45,0xD7,0xD4,0x67,0xC2,0xB6,0x89,0xA4,0x91,0xAB,0x7A,0x63,0xCD,0x51,0x3B,0xEF,0x1E,0x01, +N0x39,0,53,0xD3,0x00,0x00,0x01,0xFF,0xEC,0x23,0xE3,0xD9,0x45,0xD1,0xD6,0x67,0xC1,0xB7,0x89,0xB4,0xBE,0xAB,0xB3,0xAB,0xCD,0xA4,0x9A,0xEF,0x99,0xA1,0x00,0x00,0x11,0x0B,0xFC,0x23,0xF5,0xE4,0x45,0xDF,0xE4,0x67,0xCD,0xC5,0x89,0xBF,0xCD,0xAB,0xB7,0xB4,0xCD,0xAA,0xA4,0xEF,0xA6,0xA5, +N0x39,0,53,0xD4,0x00,0x00,0x11,0x02,0xF2,0x23,0xE9,0xE0,0x45,0xDC,0xDD,0x67,0xCC,0xC2,0x89,0xC4,0xD0,0xAB,0xBF,0xB9,0xCD,0xB3,0xAC,0xEF,0xA8,0xA5,0x00,0x00,0x12,0x16,0x20,0x34,0x28,0x30,0x56,0x31,0x38,0x78,0x2F,0x29,0x9A,0x19,0x10,0xAB,0xFF,0xED,0xCD,0xD6,0xBC,0xEF,0xAF,0xB2, +N0x39,0,53,0xD5,0x00,0x00,0x12,0x33,0x36,0x34,0x3F,0x45,0x56,0x49,0x4E,0x78,0x47,0x48,0x9A,0x3F,0x3C,0xBC,0x30,0x29,0xDD,0x15,0xFE,0xEF,0xDE,0xBE,0x00,0x00,0x12,0x18,0x26,0x34,0x31,0x39,0x56,0x3D,0x42,0x78,0x3B,0x38,0x9A,0x2D,0x22,0xBC,0x0E,0x0A,0xCD,0xF8,0xE0,0xEF,0xC9,0xB9, +N0x39,0,53,0xD6,0x80,0x00,0x02,0xD9,0x08,0x34,0x13,0x1A,0x46,0xE9,0x3C,0x78,0x76,0x8C,0x9A,0xA4,0xBE,0xBC,0xCE,0xD8,0xDE,0xD7,0xD7,0xF1,0xF4,0x16,0x80,0x00,0x02,0xCF,0x01,0x34,0x0A,0x1A,0x46,0xEE,0x44,0x78,0x7B,0x90,0x9A,0xAC,0xC7,0xBC,0xD5,0xD8,0xDE,0xE3,0xED,0xF0,0xF4,0xFC, +N0x39,0,27,0xD7,0x80,0x00,0x02,0xF1,0x1B,0x34,0x27,0x2A,0x46,0xFF,0x5D,0x78,0x94,0xAD,0x9A,0xC7,0xDC,0xBC,0xE9,0xE9,0xDE,0xE7,0xE4,0xF1,0xF4,0x06, +N0x39,0,18,0xD8,0x80,0x96,0x91,0x8D,0x8B,0x8A,0x96,0x90,0x8E,0x87,0x90,0x96,0x92,0x85,0x8F,0x94,0x96, +N0x39,0,2,0x9F,0x09, +N0x39,0,3,0xB2,0x9C,0x09, +N0x39,0,9,0xB3,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80, +N0x39,0,16,0xB4,0x76,0xFF,0xDD,0x43,0x84,0x48,0x32,0x47,0x22,0x11,0x85,0x0D,0x00,0xAC,0x01, +N0x39,0,35,0xC0,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58, +N0x39,0,29,0xC1,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD0,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x0F,0x13,0x16,0x1A,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +N0x39,0,29,0xC2,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC3,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC4,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC5,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC6,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC7,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC8,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xC9,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xCA,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +N0x39,0,29,0xCB,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x15,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +N0x39,0,29,0xCC,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x0F,0x12,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +N0x39,0,29,0xCD,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +N0x39,0,29,0xCE,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +N0x39,0,29,0xCF,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +N0x39,0,29,0xD1,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +N0x39,0,29,0xD2,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +N0x39,0,29,0xD3,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +N0x39,0,29,0xD4,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x0F,0x12,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +N0x39,0,17,0xD5,0x17,0xF9,0xFE,0xFD,0x05,0x00,0x00,0x00,0x17,0xF9,0xF8,0xFE,0x00,0x00,0x00,0x00, +N0x39,0,17,0xD6,0x18,0xF5,0xF8,0x03,0x00,0x00,0x00,0x00,0x17,0xEB,0xED,0xEF,0x00,0x00,0x00,0x00, +N0x39,0,13,0xD7,0x05,0x00,0x80,0x00,0x80,0xAF,0x00,0x80,0x00,0x80,0x03,0xFF, +N0x39,0,17,0xD8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +N0x39,0,6,0xEE,0x30,0x10,0x00,0x10,0xFF, +N0x39,0,2,0x9F,0x0A, +N0x39,0,12,0xB2,0x1F,0x00,0x10,0x01,0x00,0x07,0x00,0x00,0x00,0x11,0x00, +N0x39,0,43,0xB3,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +N0x39,0,43,0xB4,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +N0x39,0,43,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +N0x39,0,12,0xBE,0x00,0x1F,0xFF,0x13,0x91,0x0F,0x04,0x00,0x24,0x80,0xFF, +N0x39,0,2,0x9F,0x0B, //Middle circle setting REG 0xBE +N0x39,0,10,0xB2,0x01,0x3F,0x3F,0x0F,0x3F,0x0F,0x5F,0x0F,0x0F, +N0x39,0,49,0xB9,0x32,0x00,0x00,0x00,0x00,0x00,0x6B,0x54,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,49,0xBA,0x32,0x00,0x00,0x00,0x00,0x00,0x54,0x69,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,49,0xBC,0x32,0x00,0x00,0x00,0x00,0x00,0x4b,0x4b,0x24,0x1C,0xB0,0x14,0xD1,0x65,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,49,0xBE,0x32,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x20,0x1C,0x33,0x00,0x00,0x00,0x00,0x25,0x25,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,20,0xC6,0x8F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +N0x39,0,20,0xC7,0x0F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +N0x39,0,16,0xC8,0xF9,0x05,0x05,0xB0,0xE0,0xB0,0x50,0xBA,0xF0,0xB0,0xE0,0xB0,0x20,0xD0,0x50, +N0x39,0,2,0x9F,0x0D, +N0x39,0,16,0xB2,0x25,0x10,0x21,0x01,0x02,0x10,0x00,0x00,0x16,0x10,0x00,0x00,0x01,0xAA,0x90, +N0x39,0,2,0xB3,0xB0, +N0x39,0,13,0xB5,0x00,0x24,0x07,0x01,0x00,0x00,0x00,0x00,0x20,0x04,0xEE,0x21, +N0x39,0,4,0xB6,0x02,0x12,0x22, +N0x39,0,5,0xB7,0x20,0xF0,0xC0,0xE0, +N0x39,0,13,0xB8,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0, +N0x39,0,5,0xB9,0x01,0x01,0x01,0x01, +N0x39,0,3,0xBA,0x00,0x00, +N0x39,0,2,0xBB,0x01, +N0x39,0,21,0xBC,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +N0x39,0,6,0xBD,0x02,0x00,0x02,0x06,0x5B, +N0x39,0,12,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00, +N0x39,0,2,0x48,0x03, //0x03:120hz 0x23:60hz +N0x39,0,1,0x11, +N0x39,0,3,0x51,0x00,0x0F, +N0x39,0,2,0x53,0xE0, +N0x39,0,1,0x35, +N//0x39,0,1,0x29, +N#endif +N#if 0 //AMOLED_ICNA3508_gamma_correct --old version +S0x39,0,3,0x9C,0xA5,0xA5, +S0x39,0,3,0xFD,0x5A,0x5A, +S0x39,0,2,0x9F,0x0F, +S0x39,0,2,0xB3,0x00, +S0x39,0,2,0xD7,0x11, +S0x39,0,2,0x9F,0x01, +S0x39,0,4,0xB2,0x5A,0x04,0xAF, +S0x39,0,36,0xB3,0x00,0xBA,0x00,0x14,0x0C,0x22,0x00,0xBA,0x30,0x14,0x2C,0x00,0x00,0xBA,0x90,0x14,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x00,0x14,0x0C,0x44,0x1C,0x1C,0x1C,0x1C,0x1C, +S0x39,0,19,0xCD,0x06,0x1F,0x1F,0x06,0x00,0x09,0x00,0x96,0x1F,0x03,0x28,0x00,0x96,0x1F,0x09,0x46,0x00,0x96, +S0x39,0,2,0xD0,0x01, +S0x39,0,3,0xE2,0x46,0x20, +S0x39,0,3,0xEA,0x04,0x0B, +S0x39,0,9,0xEE,0x40,0x38,0x28,0x28,0x28,0x28,0x28,0xC2,//add for ICNA5608 +S0x39,0,2,0x9F,0x02, +S0x39,0,26,0xB2,0x00,0xC9,0x32,0x10,0x11,0x12,0x12,0x00,0x08,0x78,0x21,0x11,0x14,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x11,0x1A, +S0x39,0,14,0xB4,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x25,0x25,0x25, +S0x39,0,7,0xB5,0x00,0x30,0x30,0x30,0x30,0x2A, +S0x39,0,20,0xB6,0x05,0x00,0x00,0x11,0x11,0x11,0x1C,0x08,0x1C,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S//0x39,0,17,0xB7,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x03, +S0x39,0,17,0xB7,0x05,0x00,0x15,0x00,0x00,0x15,0x70,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, //ver2.0 +S0x39,0,14,0xB8,0x00,0x00,0x00,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28, +S0x39,0,9,0xB9,0x00,0x00,0x50,0x00,0x00,0x0F,0x0F,0x00, +S0x39,0,14,0xBA,0x0E,0xFF,0xFF,0xFF,0x00,0x54,0x00,0x44,0x04,0x44,0x04,0x04,0x00, +S0x39,0,26,0xBB,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x3C,0x78,0x78,0x3C, +S0x39,0,5,0xBE,0x5B,0x17,0x04,0x5B, +S0x39,0,17,0xBF,0x0C,0x8F,0xFF,0x10,0x00,0x07,0x00,0x0A,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,17,0xC1,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +S0x39,0,17,0xC2,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +S0x39,0,10,0xC3,0x11,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00, +S0x39,0,26,0xC4,0x00,0x0C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x1F,0x1F,0x00,0x00,0x0D,0x00,0x00,0x00,0x00, +S0x39,0,17,0xD2,0x00,0x00,0x13,0x00,0x00,0x13,0x00,0x00,0x17,0x00,0x00,0x17,0x00,0x00,0x17,0x00, +S0x39,0,14,0xC7,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04, +S0x39,0,14,0xC8,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1, +S0x39,0,27,0xC6,0x00,0x00,0x0f,0x00,0x00,0x11,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x55,0x01,0x01,0x00, +S0x39,0,27,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92, +S0x39,0,27,0xCC,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S//0x39,0,19,0xD7,0x49,0xC3,0x20,0x7A,0x44,0x00,0x04,0x04,0x00,0xF9,0xF9,0xF4,0xAB,0xA9,0xAE,0xF0,0x00,0x00, +S//0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x53,0x00,0x66,0x02,0x00,0xCC,0xF7,0xF4,0xCC,0xA9,0xAE,0xF0,0x00,0x00, //功耗高 +S0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x53,0x00,0x66,0x02,0x00,0xCC,0xF7,0xF4,0xCC,0xA9,0xAE,0xF0,0x00,0x00, +S0x39,0,41,0xD8,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF, +S0x39,0,12,0xD9,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +S0x39,0,4,0xE0,0x00,0x00,0x60, +S0x39,0,6,0xE1,0x43,0x00,0x11,0x60,0x0D, +S0x39,0,51,0xE2,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24, +S0x39,0,4,0xED,0x00,0x01,0x80, +S0x39,0,18,0xEE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x88,0x88,0x29,0x00,0x00,0x00,0x00, +S0x39,0,6,0xEF,0x00,0x85,0x88,0x87,0x87, +S0x39,0,2,0x9F,0x03, +S0x39,0,33,0xB2,0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x0C,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E,0x00,0x20,0x01,0x1F,0x00,0x07,0x00,0x0C,0x08,0xBB,0x08,0x7A, +S0x39,0,33,0xB3,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +S0x39,0,25,0xB4,0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +S0x39,0,2,0xC0,0x11, +S0x39,0,2,0xC1,0x82, +S0x39,0,3,0xC2,0x00,0xC0, +S0x39,0,6,0xC6,0x11,0x00,0x00,0x01,0x01, +S0x39,0,2,0xE2,0x01, +S0x39,0,2,0x9F,0x04, +S0x39,0,4,0xB2,0x01,0x80,0x00, +S0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +S0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +S0x39,0,8,0xB6,0x01,0x20,0x00,0x0F,0xF0,0x10,0x06, +S//0x39,0,3,0xB9,0x91,0xC1, +S0x39,0,3,0xB9,0x90,0xC1, +S0x39,0,3,0xBA,0x01,0x00, +S0x39,0,10,0xBB,0x00,0x00,0x08,0x00,0x00,0x00,0xF2,0x00,0x00, +S0x39,0,41,0xC1,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,21,0xC2,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +S0x39,0,4,0xC3,0x00,0x08,0xB8, +S0x39,0,20,0xC5,0x00,0x20,0x88,0x41,0xCF,0x4F,0x4F,0x00,0x48,0x53,0x29,0x21,0x28,0x2A,0x05,0x2F,0x00,0x20,0x0F, +S0x39,0,37,0xC6,0x4B,0x00,0x90,0x00,0x02,0xD5,0x00,0x02,0xCB,0x01,0x10,0x43,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,5,0xC8,0x48,0x48,0x53,0x53, +S0x39,0,3,0xC9,0x88,0x88, +S0x39,0,41,0xCC,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,51,0xCD,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,41,0xCE,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,51,0xCF,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,41,0xD0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,51,0xD1,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,41,0xD2,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,51,0xD3,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +S0x39,0,41,0xD4,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,51,0xD5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xD6,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,51,0xD7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xD8,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,51,0xD9,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xDD,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,51,0xDE,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xDF,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +S0x39,0,51,0xE0,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xE1,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +S0x39,0,51,0xE2,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xE3,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +S0x39,0,51,0xE4,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,41,0xE5,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +S0x39,0,51,0xE6,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +S0x39,0,2,0x9F,0x05, +S0x39,0,7,0xB2,0x24,0x20,0x05,0x0F,0xFF,0xFF, +S0x39,0,9,0xB3,0xA0,0x00,0x28,0x00,0x00,0x00,0x3F,0xFF, +S0x39,0,13,0xB4,0x02,0x0E,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x50,0x0F, +S0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +S0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +S0x39,0,9,0xB8,0x00,0x00,0x00,0x00,0x13,0x1F,0x30,0x6E, +S0x39,0,41,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,41,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,21,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,41,0xE3,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +S0x39,0,41,0xE4,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +S0x39,0,21,0xE5,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +S0x39,0,2,0x9F,0x04, +S0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +S0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +S0x39,0,2,0x9F,0x05, +S0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +S0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +S0x39,0,2,0x9F,0x05, +S0x39,0,2,0xF9,0x80, +S0x39,0,4,0xFF,0x00,0x00,0x01, +S0x39,0,2,0x9F,0x06, +S0x39,0,3,0xFF,0x00,0x01, +S0x39,0,5,0xFE,0x01,0x00,0x00,0x00, +S0x39,0,22,0xF1,0x02,0x00,0x45,0x23,0xC1,0x2C,0x33,0x94,0xF3,0x44,0x10,0x75,0x45,0xC7,0x0F,0x55,0x7C,0xEB,0x66,0x4A,0xA0, +S0x39,0,18,0xF2,0x67,0xF7,0x7C,0x88,0x6B,0xD6,0x9A,0x3C,0x07,0xAB,0xC7,0x27,0xBB,0x84,0xE6,0xB0,0xE6, +S0x39,0,22,0xF3,0x02,0x00,0x45,0x22,0xAC,0xDE,0x23,0xF3,0x98,0x34,0x99,0x20,0x44,0x62,0xA3,0x45,0xF3,0x5D,0x56,0xBA,0x0B, +S0x39,0,18,0xF4,0x66,0x64,0xDA,0x78,0xBA,0x16,0x89,0x6F,0x1D,0x9A,0xBF,0x0A,0xAA,0x5D,0xAC,0xA0,0xAC, +S0x39,0,22,0xF5,0x02,0x00,0xE9,0x33,0x81,0xDD,0x44,0x19,0xB4,0x45,0xD5,0x3C,0x55,0x98,0xE9,0x66,0x61,0xDD,0x77,0x43,0x9E, +S0x39,0,18,0xF6,0x78,0xF9,0x8B,0x9A,0x8E,0x03,0xAB,0x74,0x49,0xCC,0x14,0x70,0xCD,0xDC,0x3E,0xD0,0x3E, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x01,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x12,0x7E,0x64,0x23,0xBD,0x8A,0x33,0xAD,0xED,0x44,0x64,0x90,0x55,0x23,0x81,0x56,0xD4,0x2C, +S0x39,0,18,0xF2,0x66,0x71,0xF3,0x78,0xCA,0x27,0x89,0x7E,0x2B,0x9A,0xCB,0x1A,0xAA,0x66,0xB5,0xA0,0xB5, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x11,0x13,0xE8,0x23,0x5B,0x0A,0x33,0x20,0x62,0x34,0xEB,0x0B,0x44,0xA3,0xFC,0x55,0x45,0x9F, +S0x39,0,18,0xF4,0x56,0xDE,0x5D,0x77,0x21,0x72,0x78,0xC5,0x5C,0x89,0xE5,0x2A,0x99,0x6D,0xB1,0x90,0xB1, +S0x39,0,22,0xF5,0x02,0x00,0x08,0x23,0xFD,0x68,0x34,0x96,0x48,0x44,0x6A,0xA6,0x55,0x2A,0x5A,0x56,0xF8,0x64,0x67,0xBC,0x1A, +S0x39,0,18,0xF6,0x77,0x66,0xF0,0x89,0xD8,0x3D,0x9A,0x9F,0x59,0xBB,0x00,0x58,0xBB,0xAC,0xFC,0xB0,0xFC, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x02,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x12,0x63,0xC2,0x33,0x0D,0x53,0x33,0xA6,0xF9,0x44,0x61,0xC0,0x55,0x14,0x5D, +S0x39,0,18,0xF2,0x56,0x9C,0x03,0x67,0xBF,0x0F,0x77,0x58,0xDA,0x88,0x56,0x8F,0x89,0xC9,0x00,0x90,0x00, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x02,0x87,0x27,0x22,0x83,0xD1,0x33,0x1B,0x79,0x34,0xDE,0x3A,0x44,0x90,0xDB, +S0x39,0,18,0xF4,0x55,0x14,0x74,0x66,0x29,0x76,0x67,0xBA,0x2D,0x77,0xA2,0xD3,0x88,0x08,0x38,0x80,0x38, +S0x39,0,22,0xF5,0x02,0x00,0x61,0x22,0x62,0xC3,0x33,0x2A,0x99,0x34,0xDF,0x31,0x44,0x5F,0xBB,0x55,0x22,0x8A,0x56,0xEC,0x39, +S0x39,0,18,0xF6,0x66,0x7D,0xED,0x78,0xB7,0x0D,0x88,0x5C,0xE9,0x99,0x70,0xB1,0x9A,0xED,0x2A,0xA0,0x2A, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x03,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0xF0,0x23,0xCD,0x16,0x34,0xA6,0x11,0x44,0x5E,0xA3, +S0x39,0,18,0xF2,0x45,0xDB,0x42,0x56,0xDB,0x21,0x66,0x66,0xD2,0x77,0x36,0x66,0x77,0x96,0xBE,0x70,0xBE, +S0x39,0,22,0xF3,0x00,0x00,0x02,0x00,0x05,0x07,0x00,0x0C,0x0D,0x11,0x44,0x80,0x22,0x4C,0xA8,0x33,0x36,0x87,0x34,0xDA,0x29, +S0x39,0,18,0xF4,0x44,0x57,0xBF,0x55,0x49,0x8D,0x56,0xD6,0x37,0x66,0x97,0xC3,0x67,0xF0,0x16,0x70,0x16, +S0x39,0,22,0xF5,0x01,0x00,0x1F,0x11,0x20,0x21,0x33,0x13,0x14,0x33,0x3F,0x6E,0x34,0xAF,0x0E,0x44,0x8D,0xC9,0x55,0x21,0x73, +S0x39,0,18,0xF6,0x56,0xA8,0x1B,0x67,0xC1,0x0B,0x77,0x56,0xCC,0x88,0x39,0x6C,0x88,0x9E,0xCC,0x80,0xCC, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x04,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x17,0x11,0x50,0xCF,0x33,0x76,0xC2,0x44,0x75,0xC3,0x55,0x19,0x5A, +S0x39,0,18,0xF2,0x55,0x93,0xF4,0x66,0x8C,0xD0,0x77,0x0C,0x7A,0x78,0xDD,0x0A,0x88,0x3A,0x61,0x80,0x61, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x12,0x7B,0x46,0x33,0x11,0x65,0x34,0xFA,0x4D,0x44,0x97,0xDD, +S0x39,0,18,0xF4,0x55,0x16,0x74,0x66,0x06,0x49,0x66,0x81,0xE9,0x77,0x45,0x73,0x77,0x97,0xBF,0x70,0xBF, +S0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x56,0x57,0x33,0x58,0xD9,0x34,0xFF,0x38,0x44,0x88,0xD6,0x55,0x39,0x97,0x56,0xD4,0x23, +S0x39,0,18,0xF6,0x66,0x5C,0xC5,0x77,0x6B,0xB4,0x78,0xF2,0x68,0x89,0xD3,0x04,0x99,0x35,0x62,0x90,0x62, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x05,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x02,0x08,0x6F,0x23,0xB9,0xBF,0x44,0x2E,0xA1,0x45,0xF7,0x38, +S0x39,0,18,0xF2,0x55,0x73,0xD7,0x66,0x78,0xB9,0x67,0xFB,0x64,0x77,0xC7,0xF5,0x88,0x20,0x51,0x80,0x51, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x01,0x06,0x32,0x23,0xAA,0x2B,0x34,0xB0,0x1B,0x44,0x69,0xAD, +S0x39,0,18,0xF4,0x45,0xF5,0x51,0x56,0xF1,0x2E,0x66,0x70,0xCF,0x77,0x2C,0x5A,0x77,0x81,0xAA,0x70,0xAA, +S0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB0,0x33,0xB1,0xB2,0x34,0xE8,0x0C,0x44,0x5F,0x9E,0x55,0x23,0x74,0x56,0xBC,0x01, +S0x39,0,18,0xF6,0x66,0x50,0xB0,0x77,0x5D,0xA1,0x78,0xE5,0x57,0x88,0xC0,0xF1,0x99,0x1F,0x4F,0x90,0x4F, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x06,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x0F,0x18,0x34,0x90,0x21,0x45,0xAA,0x01, +S0x39,0,18,0xF2,0x55,0x3A,0xA8,0x66,0x4D,0x8E,0x67,0xD7,0x3E,0x77,0xA5,0xD0,0x78,0xFB,0x2B,0x80,0x2B, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x26,0xEA,0x33,0x17,0xAD,0x44,0x16,0x70, +S0x39,0,18,0xF4,0x45,0xAC,0x1B,0x55,0xBD,0xFB,0x66,0x45,0xA7,0x77,0x0F,0x33,0x77,0x5D,0x8B,0x70,0x8B, +S0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB3,0x33,0xCC,0xCD,0x33,0xCE,0xCF,0x44,0x2E,0x76,0x45,0xE9,0x58,0x55,0x9F,0xE1, +S0x39,0,18,0xF6,0x66,0x2A,0x97,0x77,0x41,0x82,0x78,0xC8,0x39,0x88,0xA6,0xD2,0x99,0x00,0x31,0x90,0x31, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x07,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0xCB,0x13,0x06,0x59,0x44,0x62,0x95, +S0x39,0,18,0xF2,0x45,0xEB,0x63,0x66,0x0B,0x57,0x67,0x93,0x08,0x77,0x6A,0x99,0x77,0xC0,0xEF,0x70,0xEF, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x12,0xC8,0xF3,0x34,0xB5,0x00, +S0x39,0,18,0xF4,0x44,0x4E,0xC6,0x55,0x70,0xBD,0x56,0xF6,0x70,0x66,0xCF,0xFD,0x77,0x1F,0x52,0x70,0x52, +S0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x54,0x6E,0x33,0x6F,0x70,0x33,0x71,0x72,0x34,0xE6,0x2F,0x45,0xAE,0x0F,0x55,0x59,0xB7, +S0x39,0,18,0xF6,0x56,0xEE,0x5B,0x77,0x0B,0x51,0x78,0x91,0x05,0x88,0x6C,0x9D,0x88,0xC7,0xF8,0x80,0xF8, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x08,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x55,0x00,0x78,0x79, +S0x39,0,18,0xF2,0x34,0x8C,0x68,0x55,0x49,0x98,0x56,0xD1,0x48,0x66,0xA9,0xD0,0x67,0xFB,0x27,0x70,0x27, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x01,0x0A,0x15,0x12,0xD1,0x2A, +S0x39,0,18,0xF4,0x33,0x15,0xD4,0x44,0xAB,0xF0,0x55,0x26,0xA9,0x66,0x11,0x30,0x66,0x59,0x87,0x60,0x87, +S0x39,0,22,0xF5,0x02,0x00,0x55,0x22,0x56,0x57,0x22,0xD1,0xFA,0x33,0x10,0x13,0x33,0x14,0x8C,0x44,0x01,0x68,0x45,0xB5,0x16, +S0x39,0,18,0xF6,0x55,0x4B,0xB1,0x66,0x6B,0xAB,0x67,0xDE,0x5C,0x77,0xBB,0xDC,0x88,0x07,0x2D,0x80,0x2D, +S0x39,0,2,0xFF,0x01, +S0x39,0,5,0xFE,0x01,0x09,0x00,0x00, +S0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0F, +S0x39,0,18,0xF2,0x00,0x50,0x51,0x34,0xF5,0xB1,0x45,0xF1,0x82,0x56,0xDE,0x11,0x66,0x3D,0x5D,0x60,0x5D, +S0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0D, +S0x39,0,18,0xF4,0x02,0xA8,0x37,0x34,0x7F,0x08,0x44,0x5A,0xD4,0x55,0x38,0x60,0x55,0x9C,0xB8,0x50,0xB8, +S0x39,0,22,0xF5,0x00,0x00,0x01,0x00,0x02,0x03,0x01,0xE2,0x25,0x12,0x49,0x76,0x22,0xF8,0xF9,0x33,0x3A,0xAE,0x44,0x1C,0x64, +S0x39,0,18,0xF6,0x45,0x96,0x10,0x56,0xCA,0x0D,0x66,0x52,0xAB,0x77,0x0C,0x2B,0x77,0x64,0x88,0x70,0x88, +S0x39,0,2,0xFF,0x01, +S0x39,0,2,0x9F,0x05, +S0x39,0,2,0xF9,0x00, +S0x39,0,4,0xFF,0x00,0x00,0x00, +S0x39,0,2,0x9F,0x06, +S0x39,0,3,0xFF,0x00,0x00, +S0x39,0,2,0x9F,0x07, +S//0x39,0,8,0xB2,0x10,0x10,0x10,0x10,0x04,0x00,0x98, +S0x39,0,8,0xB2,0x04,0x04,0x04,0x04,0x04,0x00,0x98, +S0x39,0,8,0xB3,0x15,0x15,0x15,0x15,0x04,0x00,0x9A, +S0x39,0,8,0xB4,0x20,0x20,0x20,0x20,0x04,0x00,0x96, +S0x39,0,8,0xB6,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +S0x39,0,8,0xB7,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +S0x39,0,33,0xB9,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,33,0xBA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,33,0xBB,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, +S0x39,0,33,0xBD,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,33,0xBE,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,31,0xC0,0x00,0x7A,0x7A,0x00,0x7A,0x7A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,31,0xC1,0x00,0x9A,0x9A,0x00,0x9A,0x9A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,31,0xC2,0x00,0x96,0x96,0x00,0x96,0x96,0x00,0x6A,0x46,0x00,0x26,0x1B,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,7,0xC4,0x10,0x30,0x1C,0x00,0x1C,0x1C, +S0x39,0,7,0xC5,0x22,0x60,0x60,0x22,0x60,0x60, +S0x39,0,41,0xD6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,21,0xD7,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +S0x39,0,2,0x9F,0x0C, +S0x39,0,9,0xB4,0xF0,0xC0,0xC0,0x1B,0x1B,0x00,0x00,0x16, +S0x39,0,2,0x9F,0x08, +S0x39,0,4,0xB2,0x10,0x00,0x02, +S0x39,0,2,0xB4,0x11, +S0x39,0,8,0xB5,0x00,0x02,0x01,0xFF,0x20,0x40,0xC0, +S0x39,0,3,0xB6,0x58,0x03, +S0x39,0,55,0xB7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xB8,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xB9,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xBA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xBB,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xBC,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +S0x39,0,55,0xBD,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xBE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xBF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC0,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC1,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC2,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +S0x39,0,55,0xC3,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC4,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC5,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC6,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +S0x39,0,55,0xC8,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +S0x39,0,10,0xC9,0x16,0x33,0x3D,0x01,0x00,0x0F,0xFF,0x00,0x00, +S0x39,0,2,0xCA,0xF0, +S0x39,0,6,0xCB,0x00,0x01,0x7C,0x42,0x00, +S0x39,0,5,0xCC,0x00,0x01,0x00,0x1F, +S0x39,0,4,0xCD,0x00,0x01,0x00, +S0x39,0,33,0xCE,0x00,0x25,0x00,0xA9,0x01,0x9C,0x03,0x08,0x04,0xF4,0x07,0x65,0x0A,0x62,0x0D,0xEE,0x12,0x0C,0x16,0xC1,0x1C,0x10,0x21,0xFC,0x28,0x87,0x2F,0xB5,0x37,0x86,0x3F,0xFF, +S0x39,0,12,0xCF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0x4E,0xED,0x00, +S0x39,0,53,0xD0,0x00,0x00,0x01,0xF1,0xEC,0x23,0xE4,0xDC,0x45,0xD7,0xDE,0x67,0xCB,0xC2,0x89,0xC0,0xC4,0xAB,0xC2,0xBC,0xCD,0xB5,0xAB,0xEF,0xAA,0xB4,0x00,0x00,0x01,0xFA,0xF1,0x23,0xEB,0xE4,0x45,0xE3,0xEB,0x67,0xDB,0xD1,0x89,0xCE,0xD0,0xAB,0xCC,0xC8,0xCD,0xC1,0xBA,0xEF,0xB9,0xB8, +S0x39,0,53,0xD1,0x00,0x00,0x01,0xFF,0xF0,0x23,0xE8,0xE3,0x45,0xE1,0xE5,0x67,0xD7,0xCC,0x89,0xCE,0xD5,0xAB,0xCE,0xCA,0xCD,0xC4,0xBD,0xEF,0xB9,0xB7,0x00,0x00,0x01,0xF1,0xEB,0x23,0xE1,0xDD,0x45,0xD0,0xD0,0x67,0xBF,0xB1,0x89,0x9D,0x8A,0xAB,0x78,0x62,0xCD,0x49,0x30,0xEF,0x14,0x06, +S0x39,0,53,0xD2,0x00,0x00,0x01,0xF5,0xEE,0x23,0xE8,0xE1,0x45,0xD6,0xD4,0x67,0xBF,0xB6,0x89,0xA6,0x99,0xAB,0x88,0x75,0xCD,0x60,0x47,0xEF,0x29,0x05,0x00,0x00,0x01,0xF4,0xEF,0x23,0xE7,0xE1,0x45,0xD7,0xD4,0x67,0xC2,0xB6,0x89,0xA4,0x91,0xAB,0x7A,0x63,0xCD,0x51,0x3B,0xEF,0x1E,0x01, +S0x39,0,53,0xD3,0x00,0x00,0x01,0xFF,0xEC,0x23,0xE3,0xD9,0x45,0xD1,0xD6,0x67,0xC1,0xB7,0x89,0xB4,0xBE,0xAB,0xB3,0xAB,0xCD,0xA4,0x9A,0xEF,0x99,0xA1,0x00,0x00,0x11,0x0B,0xFC,0x23,0xF5,0xE4,0x45,0xDF,0xE4,0x67,0xCD,0xC5,0x89,0xBF,0xCD,0xAB,0xB7,0xB4,0xCD,0xAA,0xA4,0xEF,0xA6,0xA5, +S0x39,0,53,0xD4,0x00,0x00,0x11,0x02,0xF2,0x23,0xE9,0xE0,0x45,0xDC,0xDD,0x67,0xCC,0xC2,0x89,0xC4,0xD0,0xAB,0xBF,0xB9,0xCD,0xB3,0xAC,0xEF,0xA8,0xA5,0x00,0x00,0x12,0x16,0x20,0x34,0x28,0x30,0x56,0x31,0x38,0x78,0x2F,0x29,0x9A,0x19,0x10,0xAB,0xFF,0xED,0xCD,0xD6,0xBC,0xEF,0xAF,0xB2, +S0x39,0,53,0xD5,0x00,0x00,0x12,0x33,0x36,0x34,0x3F,0x45,0x56,0x49,0x4E,0x78,0x47,0x48,0x9A,0x3F,0x3C,0xBC,0x30,0x29,0xDD,0x15,0xFE,0xEF,0xDE,0xBE,0x00,0x00,0x12,0x18,0x26,0x34,0x31,0x39,0x56,0x3D,0x42,0x78,0x3B,0x38,0x9A,0x2D,0x22,0xBC,0x0E,0x0A,0xCD,0xF8,0xE0,0xEF,0xC9,0xB9, +S0x39,0,53,0xD6,0x80,0x00,0x02,0xD9,0x08,0x34,0x13,0x1A,0x46,0xE9,0x3C,0x78,0x76,0x8C,0x9A,0xA4,0xBE,0xBC,0xCE,0xD8,0xDE,0xD7,0xD7,0xF1,0xF4,0x16,0x80,0x00,0x02,0xCF,0x01,0x34,0x0A,0x1A,0x46,0xEE,0x44,0x78,0x7B,0x90,0x9A,0xAC,0xC7,0xBC,0xD5,0xD8,0xDE,0xE3,0xED,0xF0,0xF4,0xFC, +S0x39,0,27,0xD7,0x80,0x00,0x02,0xF1,0x1B,0x34,0x27,0x2A,0x46,0xFF,0x5D,0x78,0x94,0xAD,0x9A,0xC7,0xDC,0xBC,0xE9,0xE9,0xDE,0xE7,0xE4,0xF1,0xF4,0x06, +S0x39,0,18,0xD8,0x80,0x96,0x91,0x8D,0x8B,0x8A,0x96,0x90,0x8E,0x87,0x90,0x96,0x92,0x85,0x8F,0x94,0x96, +S0x39,0,2,0x9F,0x09, +S0x39,0,3,0xB2,0x9C,0x09, +S0x39,0,9,0xB3,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80, +S0x39,0,16,0xB4,0x76,0xFF,0xDD,0x43,0x84,0x48,0x32,0x47,0x22,0x11,0x85,0x0D,0x00,0xAC,0x01, +S0x39,0,35,0xC0,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58, +S0x39,0,29,0xC1,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD0,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x0F,0x13,0x16,0x1A,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +S0x39,0,29,0xC2,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC3,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC4,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC5,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC6,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC7,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC8,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xC9,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xCA,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +S0x39,0,29,0xCB,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x15,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +S0x39,0,29,0xCC,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x0F,0x12,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +S0x39,0,29,0xCD,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +S0x39,0,29,0xCE,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +S0x39,0,29,0xCF,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +S0x39,0,29,0xD1,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +S0x39,0,29,0xD2,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +S0x39,0,29,0xD3,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +S0x39,0,29,0xD4,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x0F,0x12,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +S0x39,0,17,0xD5,0x17,0xF9,0xFE,0xFD,0x05,0x00,0x00,0x00,0x17,0xF9,0xF8,0xFE,0x00,0x00,0x00,0x00, +S0x39,0,17,0xD6,0x18,0xF5,0xF8,0x03,0x00,0x00,0x00,0x00,0x17,0xEB,0xED,0xEF,0x00,0x00,0x00,0x00, +S0x39,0,13,0xD7,0x05,0x00,0x80,0x00,0x80,0xAF,0x00,0x80,0x00,0x80,0x03,0xFF, +S0x39,0,17,0xD8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +S0x39,0,6,0xEE,0x30,0x10,0x00,0x10,0xFF, +S0x39,0,2,0x9F,0x0A, +S0x39,0,12,0xB2,0x1F,0x00,0x10,0x01,0x00,0x07,0x00,0x00,0x00,0x11,0x00, +S0x39,0,43,0xB3,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +S0x39,0,43,0xB4,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +S0x39,0,43,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +S0x39,0,12,0xBE,0x00,0x1F,0xFF,0x13,0x91,0x0F,0x04,0x00,0x24,0x80,0xFF, +S0x39,0,2,0x9F,0x0B, +S0x39,0,10,0xB2,0x01,0x3F,0x3F,0x0F,0x3F,0x0F,0x5F,0x0F,0x0F, +S0x39,0,49,0xB9,0x32,0x00,0x00,0x00,0x00,0x00,0x6B,0x54,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,49,0xBA,0x32,0x00,0x00,0x00,0x00,0x00,0x54,0x69,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,49,0xBC,0x32,0x00,0x00,0x00,0x00,0x00,0x4b,0x4b,0x24,0x1C,0xB0,0x14,0xD1,0x65,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,49,0xBE,0x32,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x1C,0x33,0x00,0x00,0x00,0x00,0x20,0x20,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +S0x39,0,20,0xC6,0x8F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +S0x39,0,20,0xC7,0x0F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +S0x39,0,16,0xC8,0xF9,0x05,0x05,0xB0,0xE0,0xB0,0x50,0xBA,0xF0,0xB0,0xE0,0xB0,0x20,0xD0,0x50, +S0x39,0,2,0x9F,0x0D, +S0x39,0,16,0xB2,0x25,0x10,0x21,0x01,0x02,0x10,0x00,0x00,0x16,0x10,0x00,0x00,0x01,0xAA,0x90, +S0x39,0,2,0xB3,0xB0, +S0x39,0,13,0xB5,0x00,0x24,0x07,0x01,0x00,0x00,0x00,0x00,0x20,0x04,0xEE,0x21, +S0x39,0,4,0xB6,0x02,0x12,0x22, +S0x39,0,5,0xB7,0x20,0xF0,0xC0,0xE0, +S0x39,0,13,0xB8,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0, +S0x39,0,5,0xB9,0x01,0x01,0x01,0x01, +S0x39,0,3,0xBA,0x00,0x00, +S0x39,0,2,0xBB,0x01, +S0x39,0,21,0xBC,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +S0x39,0,6,0xBD,0x02,0x00,0x02,0x06,0x5B, +S0x39,0,12,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00, +S0x39,0,2,0x48,0x03, //00 cmd 0x03 vdo +S//// bist mode +S//0x39,0,2,0x9F,0x01, +S////0x39,0,5,0xC6,0x01,0x20,0x18,0x02, +S//0x39,0,3,0xC6,0x03,0x08, +S0x39,0,1,0x11, +S//0x39,0,3,0x51,0x00,0x00, +S0x39,0,2,0x53,0xE0, +S0x39,0,1,0x35, +S//0x39,0,1,0x29, +S +N#endif +N#if DDIC_FPS_SETTING +X#if 1 +N0x39,0,2,0x9F,0x04, +N0x39,0,14,0xB5,0x00,0x17,0x27,0x1B,0x17,0x00,0x75,0x75,0x10,0x3B,0x08,0xA8,0x48, // 0x3B,0x10,0xB8,0x40,(美版ANDROID 13放久过后指纹解会失效) +N//1226 0x3B,0x08,0xA8,0x48(ANDROID 13+++/14+++) 0x3B,0x10,0xA8,0x50(ANDROID 13++/14++) 0x3B,0x00,0xAF,0x58(ANDROID 13++/14+) +N//1225 0x3B,0x08,0xA0,0x48(ANDROID 13+++/14++) 0x3B,0x10,0xA8,0x48(ANDROID 13++/14++) 0x3B,0x10,0xA8,0x4F(ANDROID 13++/14++) 0x3B,0x10,0xA0,0x48(ANDROID 13++/14++) 0x3B,0x10,0xB0,0x4F(ANDROID 13++/14+) , 0x3B,0x10,0xB8,0x4F(ANDROID 13++/14+) 0x3B,0x18,0xB8,0x4F(ANDROID 13++/14) 0x3B,0x08,0x98,0x2F(ANDROID 13++/14-); 0x3B,0x28,0xB8,0x4F(ANDROID 13++/14--); , 0x3B,0x20,0xB0,0x40 (ANDROID 13/14 JP NG) +N//1222 0x2B,0xF0,0x98,0x7F(ALL OK) 0x2B,0xF0,0x98,0x2F (ALL OK 2nd) 0x2B,0xF0,0x98,0x00, (ALL OK 3rd )0x2B,0xF0,0x9F,0x3F 0x2B,0xDF,0x8F,0x4F(ANDROID 12 FAIL ) +N//1214 0x2B,0xFF,0x9F,0x5F 0x2B,0xFF,0xCF,0x5F +N//ANDROID 14 0x2B,0xF0,0x90,0x20 秒解 LAST VERSION 0x3B,0x3F,0xDF,0x6F +N// 1211 fail FOR ALL VERSION 0x3B,0x3F,0xEF,0x6F; 0x3B,0x2F,0xDF,0x5F; 0x3B,0x1F,0xCF,0x4F; 0x3B,0x1F,0xCF,0x4F; 0x3B,0x0F,0xBF,0x3F; 0x2B,0xFF,0xAF,0x3F +N0x39,0,18,0xBE,0x00,0xCF,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF, +N0x39,0,46,0xE9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,28,0xEA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,46,0xEB,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,28,0xEC,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,46,0xED,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,28,0xEE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +N0x39,0,10,0xF8,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +N0x39,0,10,0xF9,0xE1,0x18,0x15,0x00,0xF0,0xF8,0xF0,0xEE,0x00, +N0x39,0,10,0xFA,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +N0x39,0,2,0x9F,0x05, +N0x39,0,13,0xB4,0x02,0x0F,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x40,0x8D, +N0x39,0,41,0xE6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,31,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,41,0xE8,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0C,0xF0,0x09,0x71,0x07,0x54,0x04,0x8C,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N//0x39,0,41,0xE8,0x01,0xFF,0x00,0x1F,0x00,0x2F,0x00,0x1F,0x00,0x1F,0x0C,0xF0,0x09,0x71,0x07,0x54,0x04,0x8C,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N0x39,0,31,0xE9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +N +N +N#endif +N}; +N +N#endif +N +N +N/** +N* @brief panel init +N* @param none +N* @retval none +N*/ +Nstatic void app_init_panel(void) +N{ +N /* reset panel*/ +N app_tx_panel_reset(); +N#if PANEL_INIT_CODE_ARRAY +X#if 1 +N send_panel_init_code(sizeof(panel_init_code), (uint8_t *) panel_init_code); +N#endif +N hal_gpio_init_output(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +N delayMs(90); +N#if AP_SWIRE_OUTPUT +X#if 1 +N hal_swire_enable(true); +X hal_swire_enable(1); +N hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +X hal_swire_set_pulse(31); +N#endif +N// hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +N// Gpio_swire_output(2, 40); +N +N// TAU_LOGD("Panel init!\n\r"); +N} +N +N#if TX_CMD_MODE_WITHOUT_TE +X#if 0 +S/** +S* @brief MIPI RX事件处理函数,demo code 用于command mode 输出发送数据(模式1) +S* @param event:RX事件 +S* @param data: user data +S* @retval none +S*/ +Sstatic void app_rx_event_cb(hal_rx_event_e event, void *data) +S{ +S if (panel_display_done && event == HAL_RX_LINE_EVENT) +S { +S hal_dsi_tx_ctrl_gen_a_frame(); +S } +S} +N#endif +N +N#if TX_USE_CMD_MODE +X#if 0 +S/** +S* @brief TE引脚作为GPIO 输入回调函数,demo code 用于command mode 输出发送数据(模式2) +S* @param none +S* @retval none +S*/ +Sstatic void app_tx_cmd_panel_te_cb(void *data) +S{ +S if (panel_display_done) +S { +S //delayUs(25); /* 撕裂调试 */ +S hal_dsi_tx_ctrl_gen_a_frame(); +S } +S} +S +S/** +S* @brief 注册屏端TE信号输入引脚回调函数 +S* @param pad :TE输入pad +S* @param trig:触发中断沿配置 +S* @retval none +S*/ +Sstatic void app_tx_cmd_app_init_panel_te_int(io_pad_e pad, sys_cfg_trigger_e trig) +S{ +S /*1.关闭中断*/ +S hal_gpio_ctrl_eint(pad, DISABLE); +S +S /*2.中断初始化*/ +S hal_gpio_init_eint(pad, trig); +S +S /*3.注册回调*/ +S hal_gpio_reg_eint_cb(pad, app_tx_cmd_panel_te_cb); +S +S /*4.使能中断*/ +S hal_gpio_ctrl_eint(pad, ENABLE); +S} +N#endif +N +N/** +N* @brief mipi rx 初始化 +N* @param none +N* @retval none +N*/ +Nstatic void app_mipi_rx_init(void) +N{ +N if (g_rx_ctrl_handle == NULL) +X if (g_rx_ctrl_handle == 0) +N { +N /* 创建rx ctrl handle */ +N g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); +N } +N /* 配置参数 */ +N g_rx_ctrl_handle->base_info.src_w = INPUT_WIDTH; +X g_rx_ctrl_handle->base_info.src_w = 1344; +N g_rx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; +X g_rx_ctrl_handle->base_info.src_h = 2992; +N g_rx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; +X g_rx_ctrl_handle->base_info.dst_w = 1080; +N g_rx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; +X g_rx_ctrl_handle->base_info.dst_h = 2400; +N g_rx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; +X g_rx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ; +N g_rx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; +X g_rx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE; +N g_rx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; +X g_rx_ctrl_handle->base_info.dst_mode = DSI_DATA_VIDEO_MODE; +N g_rx_ctrl_handle->rx_color_mode = INPUT_COLOR_MODE; +X g_rx_ctrl_handle->rx_color_mode = DSI_RGB888; +N g_rx_ctrl_handle->rx_lanes = INPUT_MIPI_LANE_NUM; +X g_rx_ctrl_handle->rx_lanes = DSI_LANE_4; +N g_rx_ctrl_handle->rx_nonburst_models = INPUT_VIDEO_MODEL; /* 可不配置 */ +X g_rx_ctrl_handle->rx_nonburst_models = DSI_NONBURST_EVENT; +N g_rx_ctrl_handle->compress_en = INPUT_COMPRESS; +X g_rx_ctrl_handle->compress_en = 1; +N g_rx_ctrl_handle->rx_hsclk_rate = INPUT_MIPI_LANE_RATE; +X g_rx_ctrl_handle->rx_hsclk_rate = 1600000000; +N g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table; /* 注册 DCS处理列表 */ +N g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read; /* 注册dsc read 回调函数,可选,此函数为空时由cus_dcs_entry_table执行 */ +N// g_rx_ctrl_handle->hight_performan_mode=HIGHT_PERFORMAN_L2; +N g_rx_ctrl_handle->extra_info.crop_info.top =12; //4 8 的倍数 +N g_rx_ctrl_handle->extra_info.crop_info.enable=1; +N#if RX_RESOLUTION_CHANGE_ENABLE +X#if 1 +N g_rx_ctrl_handle->pps_update_entry = pps_update_handle; +N#endif +N /* 提前预置PPS, AP 有PPS cmd也会更新 */ +N if (g_rx_ctrl_handle->compress_en == true) +X if (g_rx_ctrl_handle->compress_en == 1) +N { +N hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); +N } +N +N /* 初始化rx ctrl */ +N hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); +N +N#if RX_READ_HW_ACK +X#if 0 +S /* 配置硬件回复 */ +S app_set_dcs_hw_ack(); +N#endif +N +N#if TX_CMD_MODE_WITHOUT_TE +X#if 0 +S /* 注册接收一帧帧头事件回调,每接收一帧数据TX再往外发一帧 */ +S //hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_FS_EVENT, true, NULL); +S /* 注册接收第0行数据事件,接收到数据后再往外发送数据,确保不撕裂 */ +S uint32_t line = 0; +S hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_LINE_EVENT, true, &line); +N#endif +N +N#if RX_START_WITHOUT_RST +X#if 1 +N /* 等待ap reset置位再启动rx,否则容易收到错误数据 */ +N hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +N#else +S /* 注册RX start callback,确认RX LP11时再启动RX,防止接收错误数据 */ +S hal_gpio_set_ap_reset_int(ENABLE, app_mipi_rx_start_cb, DETECT_HIGH_LVL); +N#endif +N TAU_LOGD("rx init!\n\r"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "rx init!\n\r", "p8p", 1607); } while (0); +N} +N +N/** +N* @brief mipi tx 初始化 +N* @param none +N* @retval none +N*/ +Nstatic void app_mipi_tx_init(void) +N{ +N if (g_tx_ctrl_handle == NULL) +X if (g_tx_ctrl_handle == 0) +N { +N g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle(); +N } +N g_tx_ctrl_handle->channel_id = OUTPUT_VC; +X g_tx_ctrl_handle->channel_id = DSI_VC_0; +N g_tx_ctrl_handle->lane_num = OUTPUT_LANE_NUMBER; +X g_tx_ctrl_handle->lane_num = DSI_LANE_4; +N g_tx_ctrl_handle->vid_mode = OUTPUT_VIDEO_MODEL; +X g_tx_ctrl_handle->vid_mode = DSI_BURST_MODE; +N g_tx_ctrl_handle->cmd_tx_type = TX_INIT_TYPE; +X g_tx_ctrl_handle->cmd_tx_type = DSI_CMD_TX_LP; +N g_tx_ctrl_handle->dpi_vsa = OUTPUT_VSA; +X g_tx_ctrl_handle->dpi_vsa = 1; +N g_tx_ctrl_handle->dpi_vbp = OUTPUT_VBP; +X g_tx_ctrl_handle->dpi_vbp = 19; +N g_tx_ctrl_handle->dpi_vfp = OUTPUT_VFP; +X g_tx_ctrl_handle->dpi_vfp = 12; +N g_tx_ctrl_handle->dpi_hsa = OUTPUT_HSA; +X g_tx_ctrl_handle->dpi_hsa = 1; +N g_tx_ctrl_handle->dpi_hbp = OUTPUT_HBP; +X g_tx_ctrl_handle->dpi_hbp = 27; +N g_tx_ctrl_handle->dpi_hfp = OUTPUT_HFP; +X g_tx_ctrl_handle->dpi_hfp = 77; +N g_tx_ctrl_handle->base_info.src_w = INPUT_WIDTH; +X g_tx_ctrl_handle->base_info.src_w = 1344; +N g_tx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; +X g_tx_ctrl_handle->base_info.src_h = 2992; +N g_tx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; +X g_tx_ctrl_handle->base_info.dst_w = 1080; +N g_tx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; +X g_tx_ctrl_handle->base_info.dst_h = 2400; +N g_tx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; +X g_tx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ; +N g_tx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; +X g_tx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE; +N g_tx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; +X g_tx_ctrl_handle->base_info.dst_mode = DSI_DATA_VIDEO_MODE; +N g_tx_ctrl_handle->tx_frame_rate=58; +N// g_tx_ctrl_handle->tx_lane_lp = 2; +N +N /* 初始化屏时每一条LP CMD都退出LPDT 再进入发送下一条 */ +N /* 解决FT8720 TDDI 显示翻转问题 */ +N // g_tx_ctrl_handle->lp_exit_lpdt = true; +N +N hal_dsi_tx_ctrl_init(g_tx_ctrl_handle); +N// hal_dsi_tx_ctrl_set_cus_sync_line(g_tx_ctrl_handle,1200); //1200 +N +N /* FIXME set tear on*/ +N // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +N +N /* AP 没有发送数据时默认的显示颜色, 量产为0 0 0(黑色), 配置其他颜色仅为debug使用 */ +N hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0x00); +N TAU_LOGD("tx init!\n\r"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "tx init!\n\r", "p8p", 1653); } while (0); +N} +N +N#if !RX_START_WITHOUT_RST +X#if !1 +S/** +S* @brief mipi rx start函数,开启AP RSTN等待启动配置后使用 +S* @param none +S* @retval none +S*/ +Sstatic void app_mipi_rx_start_cb(void *data) +S{ +S /* RX start */ +S hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +S /* close cb */ +S hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_HIGH_LVL); +S TAU_LOGD("rx start\n"); +S} +N#endif +N +Nvoid Panel_CCM(void) +N{ +N ccm_coef_t ccm; +N ccm.coef_c00 = 255; // 260 +N ccm.coef_c01 = 0; +N ccm.coef_c02 = 0; +N ccm.coef_c10 = 0; +N ccm.coef_c11 = 246; // 247 +N ccm.coef_c12 = 0; +N ccm.coef_c20 = 0; +N ccm.coef_c21 = 0; +N ccm.coef_c22 = 247; //248 +N +N hal_dsi_tx_ctrl_set_ccm(&ccm); +N} +N +N +N/** +N* @brief mipi tx 启动 +N* @param none +N* @retval none +N*/ +Nstatic void app_mipi_tx_start(void) +N{ +N // TAU_LOGD("tx_start \n"); +N /* Init panel */ +N app_init_panel(); +N /* TX start */ +N hal_dsi_tx_ctrl_start(g_tx_ctrl_handle); +N +N#if RX_WAIT_TEAR_ON +X#if 0 +S te_mode_e default_te = sg_ap_set_tear_on ? TE_60HZ_MODE : TE_USER_MODE; +S hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, default_te); +N#else +N hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +N#endif +N +N panel_display_done = true; +X panel_display_done = 1; +N if(g_tx_ctrl_handle->base_info.src_w==1008) +N { +N hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); +N hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +N g_resolution_change = false; +X g_resolution_change = 0; +N // TAU_LOGD("pps_update!!\r\n"); +N } +N // soft_te_timer_init(); +N delayMs(80); +N// Panel_CCM(); +N// delayMs(20); +N /* Display on */ +N hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); +N +N#if AP_SWIRE_OUTPUT +X#if 1 +N hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +X hal_swire_set_pulse(31); +N#endif +N +N#if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) +X#if (0 & (!0)) +S // hal_dsi_tx_ctrl_gen_a_frame(); /* FIXME */ +S app_tx_cmd_app_init_panel_te_int(IO_PIN_14, DETECT_RISING_EDGE); /* 注册屏端TE中断 */ +N#endif +N +N TAU_LOGD("tx_start \n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "tx_start \n", "p8p", 1733); } while (0); +N} +N +N/** +N* @brief ap rstn 拉高中断回调,用于息屏唤醒 +N* @param none +N* @retval none +N*/ +Nstatic void ap_rstn_pull_high_cb(void *data) +N{ +N /* system resume begin */ +N sg_system_resume = true; +X sg_system_resume = 1; +N /* 关闭AP reset检查 */ +N hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +X hal_gpio_set_ap_reset_int(DISABLE, 0, DETECT_RISING_EDGE); +N} +N +N/** +N* @brief ap rstn 拉高中断回调,用于息屏待机 +N* @param none +N* @retval none +N*/ +Nstatic void ap_rstn_pull_down_cb(void *data) +N{ +N TAU_LOGD("ap_rstn_pull_down_cb\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "ap_rstn_pull_down_cb\n", "p8p", 1756); } while (0); +N sg_system_suspend = true; +X sg_system_suspend = 1; +N /* 关闭AP reset检查 */ +N hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +X hal_gpio_set_ap_reset_int(DISABLE, 0, DETECT_RISING_EDGE); +N// TAU_LOGD("ap_rstn_pull_down_cb\n"); +N} +N +N/** +N* @brief GPIO初始化配置,根据实际原理图提前配置IO功能以及状态,默认功能可不配置 +N* TP相关I2C/SPI 在tp_transfer.c,也可以挪到此函数初始化 +N* @param none +N* @retval none +N*/ +Nvoid app_gpio_init(void) +N{ +N io_pad_attr_t attrs[] = +N { +N {IO_PIN_8, PIN8_MODE_GPIO7, IO_IOE_OUTPUT, IO_LVL_LOW},/* PIN_8(TD_RSTN), GPIO,输出,低电平 */ +N {IO_PIN_17, PIN17_MODE_GPIO8, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_17(PWMEN), GPIO,输出,低电平 */ +N {IO_PIN_16, PIN16_MODE_GPIO2, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_16(AP_INT),GPIO,输出,低电平 */ +N#if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) +X#if (0 & (!0)) +S {IO_PIN_14, PIN14_MODE_GPIO24, IO_IOE_INPUT, IO_LVL_NONE}, /* PIN_29(AP_TE), cmd mode输出, 并且看屏TE,配置AP TE为GPIO输入 */ +N#endif +N {IO_PIN_29, PIN29_MODE_TEAR, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_29(AP_TE), 硬件TEAR输出模式 */ +N +N }; +N uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); +N hal_gpio_config_pad(attrs, size); +N} +N +N +N/** +N* @brief 显示相关模块初始化,包括MIPI RX/TX/PWM/SWIRE/GPIO等 +N* @param none +N* @retval none +N*/ +Nvoid app_display_init(void) +N{ +N /* mipi rx初始化 */ +N app_mipi_rx_init(); +N /* VCC 主供电,等待VCC Power Ready,此时RX初始化完成可以响应MIPI命令 */ +N if (MAIN_POWER_SELECT == PWR_SEL_VCC) +X if (PWR_SEL_VCC == PWR_SEL_VCC) +N { +N +N while (hal_pwr_get_vcc_power_ready() == false); +X while (hal_pwr_get_vcc_power_ready() == 0); +N } +N +N /* GPIO 初始化 */ +N app_gpio_init(); +N//TAU_LOGD("app_gpio_init \n"); +N /* 背光初始化 */ +N#if AP_SWIRE_OUTPUT +X#if 1 +N hal_swire_init(); /* swire init */ +N hal_swire_set_timer(TIMER_NUM0, 8, true); /* swire连续发送,绑定timer进行发送 */ +X hal_swire_set_timer(TIMER_NUM0, 8, 1); +N#endif +N#if ANALOG_PWM_OUTPUT +X#if 0 +S if (hal_pwm_init(PWM_FREQUENCY, PWM_DUTY_STEP)) +S { +S hal_pwm_enable(true); +S hal_pwm_set_elvcc_output(true); +S } +N#endif +N +N /* mipi tx 初始化*/ +N app_mipi_tx_init(); +N// soft_te_timer_init(); +N#if TX_START_AFTER_APRST +X#if 0 +S TAU_LOGD("wait exit sleep mode\n"); +N#else +N app_mipi_tx_start(); +N#endif +N} +N +N/** +N* @brief 系统resume +N* @param sleep_mode: sleep 模式 +N* @retval none +N*/ +Nstatic void app_system_resume(pwr_sleep_mode_e sleep_mode) +N{ +N /* 退出sleep mode, 电源切换 */ +N hal_pwr_exit_sleep_mode(); +N +N /* display resume */ +N app_display_init(); +N +N#if TOUCH_ENABLE +X#if 0 +S /* touch resume */ +S app_tp_write_other_operations(NULL, 0); +N#endif +N TAU_LOGD("system resume\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "system resume\n", "p8p", 1846); } while (0); +N} +N +N/** +N* @brief 系统suspend,进入sleep mode +N* @param sleep_mode: sleep 模式 +N* @retval none +N*/ +Nstatic void app_system_suspend(pwr_sleep_mode_e sleep_mode) +N{ +N// TAU_LOGD("SLEEP_MODE\n"); +N /* 关闭图像通路 */ +N hal_dsi_tx_ctrl_stop(g_tx_ctrl_handle); +N hal_dsi_tx_ctrl_deinit(g_tx_ctrl_handle); +N hal_dsi_rx_ctrl_stop(g_rx_ctrl_handle); +N hal_dsi_rx_ctrl_deinit(g_rx_ctrl_handle); +N +N /* Tear拉低 */ +N hal_gpio_init_output(IO_PAD_AP_TE, IO_LVL_LOW); +N panel_display_done = false; +X panel_display_done = 0; +N#if RX_WAIT_TEAR_ON +X#if 0 +S sg_ap_set_tear_on = false; +N#endif +N +N /* 关闭外设 比如Swire/I2C/Flash 等 */ +N#if AP_SWIRE_OUTPUT +X#if 1 +N hal_swire_deinit(); +N#endif +N#if ANALOG_PWM_OUTPUT +X#if 0 +S hal_pwm_deinit(); +N#endif +N +N#if SHARE_FLASH_ENABLE +X#if 0 +S hal_flash_share_mode(false); +N#endif +N +N /* 切换TP18 供电 */ +N hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); +X hal_pwr_set_sleep_mode_power(PWR_SLEEP_IN_IOV18); +N +N if (sleep_mode == PWR_NORMAL_SLEEP_MODE) +N { +N /* normal sleep mode, MCU可以正常工作 */ +N hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); +N hal_pwr_enter_normal_sleep_mode(); +N TAU_LOGD("PWR_NORMAL_SLEEP_MODE\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_NORMAL_SLEEP_MODE\n", "p8p", 1890); } while (0); +N } +N else if (sleep_mode == PWR_STOP_SLEEP_MODE) +N { +N TAU_LOGD("PWR_STOP_SLEEP_MODE\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_STOP_SLEEP_MODE\n", "p8p", 1894); } while (0); +N +N /* 注册对应 wakeup IO */ +N hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_RSTN, WUP_RISING_EDGE); +N //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_SPIS_CSN, WUP_FALLING_EDGE); +N //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_TD_INT, WUP_FALLING_EDGE); +N io_pad_e wakeup_io = hal_pwr_enter_stop_sleep_mode(); +N if (wakeup_io == IO_PAD_AP_RSTN) +N { +N sg_system_resume = true; +X sg_system_resume = 1; +N } +N else +N { +N /* Not impletmented */ +N TAU_LOGD("wakeup_io %d FIXME touch wakeup convert to AP\n", wakeup_io); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "wakeup_io %d FIXME touch wakeup convert to AP\n", "p8p", 1908,wakeup_io); } while (0); +N hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); +N } +N } +N else +N { +N /* deep sleep mode,配置AP RSTN 上升沿,TD INT 下降沿唤醒 */ +N hal_pwr_enter_deep_sleep_mode(WUP_RISING_EDGE, WUP_FALLING_EDGE); +N TAU_LOGD("PWR_DEEP_SLEEP_MODE\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "PWR_DEEP_SLEEP_MODE\n", "p8p", 1916); } while (0); +N } +N +N} +N +N/** +N* @brief 系统process处理函数,处理待机唤醒等 +N* @param none +N* @retval none +N*/ +Nstatic void app_system_process(void) +N{ +N +N if (sg_system_suspend) +N { +N TAU_LOGD("app_system_process\n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "app_system_process\n", "p8p", 1931); } while (0); +N /* 系统进入sleep mode */ +N app_system_suspend(SLEEP_MODE_SELECT); +X app_system_suspend(PWR_DEEP_SLEEP_MODE); +N sg_system_suspend = false; +X sg_system_suspend = 0; +N } +N +N if (sg_system_resume) +N { +N /* 系统退出sleep mode */ +N app_system_resume(SLEEP_MODE_SELECT); +X app_system_resume(PWR_DEEP_SLEEP_MODE); +N sg_system_resume = false; +X sg_system_resume = 0; +N } +N +N#if TX_START_AFTER_APRST +X#if 0 +S if (sg_tx_start_in_process) +S { +S app_mipi_tx_start(); +S sg_tx_start_in_process = false; +S } +N#endif +N} +N +N +N +N/** +N* @brief mi12 lite demo 主函数 +N* @param none +N* @retval none +N*/ +Nvoid google_p8p_demo(void) +N{ +N// hal_gpio_set_high_impedance(IO_PIN_14); +N// TAU_LOGD("p6p demo reset flag=%d \n", hal_pwr_get_reset_flag()); +N +N /* 电源选择,上电只需要选择一次 */ +N hal_pwr_set_main_power(MAIN_POWER_SELECT); /* 切换供电*/ +X hal_pwr_set_main_power(PWR_SEL_VCC); +N// if (MAIN_POWER_SELECT == PWR_SEL_VCC) +N// { +N// while (hal_pwr_get_vcc_power_ready() == false); +N// } +N /* 显示模块初始 */ +N app_display_init(); +N +N /* touch 相关模块初始化 */ +N#if TOUCH_ENABLE +X#if 0 +S /* TP 初始化 */ +S app_tp_init(); +S app_tp_phone_clear_reset_on(); +S /* 与屏的TP 模块通讯并初始化 */ +S app_tp_transfer_screen_start(); +N#endif +N +N TAU_LOGD("p8p demo init done \n"); +X do { tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " "p8p demo init done \n", "p8p", 1983); } while (0); +N +N while (1) +N { +N +N ///hal_dsi_tx_ctrl_set_vpg(1, TX_VPG_H_COLOR, true); +N#if TOUCH_ENABLE +X#if 0 +S /* 等待屏TP中断上报做TP协议转换,注意接口实现不可阻塞!否则会影响sleep mode */ +S app_tp_transfer_screen_int(); +N#endif +N /* DCS 命令异步处理 */ +N while (hal_dsi_rx_ctrl_dcs_async_handler(g_rx_ctrl_handle)); +N +N /* 系统事件处理(sleep mode) */ +N app_system_process(); +N } +N} +N#endif +W "..\..\src\app\P8P\p8p_demo.c" 131 13 variable "sg_exit_idle_mode_flag" was set but never used +W "..\..\src\app\P8P\p8p_demo.c" 134 17 variable "pps_renew_flag" was declared but never referenced +W "..\..\src\app\P8P\p8p_demo.c" 135 17 variable "pwr_rst_flag" was declared but never referenced +W "..\..\src\app\P8P\p8p_demo.c" 149 13 function "app_mipi_rx_start_cb" was declared but never referenced +W "..\..\src\app\P8P\p8p_demo.c" 459 13 variable "reg53_E8_fg" was declared but never referenced +W "..\..\src\app\P8P\p8p_demo.c" 533 13 function "ap_dcs_set_exit_idle_mode" was declared but never referenced +W "..\..\src\app\P8P\p8p_demo.c" 558 13 function "soft_te_timer_init" was declared but never referenced diff --git a/project/WL668/Listings/p8p_demo.txt b/project/WL668/Listings/p8p_demo.txt new file mode 100644 index 0000000..2a3555e --- /dev/null +++ b/project/WL668/Listings/p8p_demo.txt @@ -0,0 +1,4611 @@ +; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637] +; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave --gnu -o.\objects\p8p_demo.o --asm_dir=.\Listings\ --list_dir=.\Listings\ --depend=.\objects\p8p_demo.d --cpu=Cortex-M0 --apcs=interwork -O0 --diag_suppress=9931 -I..\..\src -I..\..\src\board -I..\..\src\common -I..\..\src\sdk\include -I..\..\src\sdk\include\M0 -I..\..\src\app -I..\..\src\app\S8 -I..\..\src\app\touch -I..\..\src\app\module_demo -I..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__MICROLIB -D__UVISION_VERSION=528 -D_RTE_ -DARMCM0 --omf_browse=.\objects\p8p_demo.crf ..\..\src\app\P8P\p8p_demo.c] + THUMB + + AREA ||i.Gpio_swire_output||, CODE, READONLY, ALIGN=1 + + Gpio_swire_output PROC +;;;366 *****************************************************************************/ +;;;367 void Gpio_swire_output(uint8_t flag, uint8_t num) +000000 b570 PUSH {r4-r6,lr} +;;;368 { +000002 4604 MOV r4,r0 +000004 460e MOV r6,r1 +;;;369 uint8_t ii; +;;;370 +;;;371 if (flag) +000006 2c00 CMP r4,#0 +000008 d01d BEQ |L1.70| +;;;372 { +;;;373 if (flag ==2) +00000a 2c02 CMP r4,#2 +00000c d106 BNE |L1.28| +;;;374 { +;;;375 hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +00000e 2101 MOVS r1,#1 +000010 2004 MOVS r0,#4 +000012 f7fffffe BL hal_gpio_init_output +;;;376 delayMs(2); +000016 2002 MOVS r0,#2 +000018 f7fffffe BL delayMs + |L1.28| +;;;377 } +;;;378 for (ii =0; ii< num; ii++) +00001c 2500 MOVS r5,#0 +00001e e00f B |L1.64| + |L1.32| +;;;379 { +;;;380 hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_LOW); +000020 2100 MOVS r1,#0 +000022 2004 MOVS r0,#4 +000024 f7fffffe BL hal_gpio_set_output_data +;;;381 delayUs(10); +000028 200a MOVS r0,#0xa +00002a f7fffffe BL delayUs +;;;382 hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +00002e 2101 MOVS r1,#1 +000030 2004 MOVS r0,#4 +000032 f7fffffe BL hal_gpio_set_output_data +;;;383 delayUs(9); +000036 2009 MOVS r0,#9 +000038 f7fffffe BL delayUs +00003c 1c68 ADDS r0,r5,#1 ;378 +00003e b2c5 UXTB r5,r0 ;378 + |L1.64| +000040 42b5 CMP r5,r6 ;378 +000042 dbed BLT |L1.32| +000044 e003 B |L1.78| + |L1.70| +;;;384 } +;;;385 } +;;;386 else +;;;387 { +;;;388 hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_LOW); +000046 2100 MOVS r1,#0 +000048 2004 MOVS r0,#4 +00004a f7fffffe BL hal_gpio_init_output + |L1.78| +;;;389 } +;;;390 } +00004e bd70 POP {r4-r6,pc} +;;;391 + ENDP + + + AREA ||i.Panel_CCM||, CODE, READONLY, ALIGN=1 + + Panel_CCM PROC +;;;1671 +;;;1672 void Panel_CCM(void) +000000 b500 PUSH {lr} +;;;1673 { +000002 b089 SUB sp,sp,#0x24 +;;;1674 ccm_coef_t ccm; +;;;1675 ccm.coef_c00 = 255; // 260 +000004 20ff MOVS r0,#0xff +000006 9000 STR r0,[sp,#0] +;;;1676 ccm.coef_c01 = 0; +000008 2000 MOVS r0,#0 +00000a 9001 STR r0,[sp,#4] +;;;1677 ccm.coef_c02 = 0; +00000c 9002 STR r0,[sp,#8] +;;;1678 ccm.coef_c10 = 0; +00000e 9003 STR r0,[sp,#0xc] +;;;1679 ccm.coef_c11 = 246; // 247 +000010 20f6 MOVS r0,#0xf6 +000012 9004 STR r0,[sp,#0x10] +;;;1680 ccm.coef_c12 = 0; +000014 2000 MOVS r0,#0 +000016 9005 STR r0,[sp,#0x14] +;;;1681 ccm.coef_c20 = 0; +000018 9006 STR r0,[sp,#0x18] +;;;1682 ccm.coef_c21 = 0; +00001a 9007 STR r0,[sp,#0x1c] +;;;1683 ccm.coef_c22 = 247; //248 +00001c 20f7 MOVS r0,#0xf7 +00001e 9008 STR r0,[sp,#0x20] +;;;1684 +;;;1685 hal_dsi_tx_ctrl_set_ccm(&ccm); +000020 4668 MOV r0,sp +000022 f7fffffe BL hal_dsi_tx_ctrl_set_ccm +;;;1686 } +000026 b009 ADD sp,sp,#0x24 +000028 bd00 POP {pc} +;;;1687 + ENDP + + + AREA ||i.REG_51_OFF_output||, CODE, READONLY, ALIGN=1 + + REG_51_OFF_output PROC +;;;326 +;;;327 void REG_51_OFF_output(uint16_t REG_51_VALUE) +000000 b57c PUSH {r2-r6,lr} +;;;328 { +000002 4606 MOV r6,r0 +;;;329 uint8_t i; +;;;330 uint16_t REG_51; +;;;331 +;;;332 +;;;333 +;;;334 for (i =0; i< 50; i++) +000004 2400 MOVS r4,#0 +000006 e016 B |L3.54| + |L3.8| +;;;335 { +;;;336 REG_51=REG_51_VALUE*(50-i)/50; +000008 2132 MOVS r1,#0x32 +00000a 1b09 SUBS r1,r1,r4 +00000c 4371 MULS r1,r6,r1 +00000e 4608 MOV r0,r1 +000010 2132 MOVS r1,#0x32 +000012 f7fffffe BL __aeabi_idivmod +000016 b285 UXTH r5,r0 +;;;337 hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, REG_51>>8, REG_51&0x00FF);; +000018 b2e8 UXTB r0,r5 +00001a 1229 ASRS r1,r5,#8 +00001c 2351 MOVS r3,#0x51 +00001e 2203 MOVS r2,#3 +000020 9100 STR r1,[sp,#0] +000022 9001 STR r0,[sp,#4] +000024 2100 MOVS r1,#0 +000026 2039 MOVS r0,#0x39 +000028 f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;338 delayMs(17); +00002c 2011 MOVS r0,#0x11 +00002e f7fffffe BL delayMs +000032 1c60 ADDS r0,r4,#1 ;334 +000034 b2c4 UXTB r4,r0 ;334 + |L3.54| +000036 2c32 CMP r4,#0x32 ;334 +000038 dbe6 BLT |L3.8| +;;;339 // TAU_LOGD("reg_51_off[0x%04X]\n",REG_51); +;;;340 } +;;;341 +;;;342 } +00003a bd7c POP {r2-r6,pc} +;;;343 + ENDP + + + AREA ||i.ap_dcs_read||, CODE, READONLY, ALIGN=2 + + ap_dcs_read PROC +;;;169 */ +;;;170 static bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +000000 b5f0 PUSH {r4-r7,lr} +;;;171 { +000002 b08d SUB sp,sp,#0x34 +000004 4606 MOV r6,r0 +000006 460c MOV r4,r1 +000008 4617 MOV r7,r2 +;;;172 if (dcs_cmd == 0x04) +00000a 2c04 CMP r4,#4 +00000c d10d BNE |L4.42| +;;;173 { +;;;174 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +00000e 2020 MOVS r0,#0x20 +000010 2160 MOVS r1,#0x60 +000012 220a MOVS r2,#0xa +000014 2303 MOVS r3,#3 +000016 9200 STR r2,[sp,#0] +000018 9101 STR r1,[sp,#4] +00001a 9002 STR r0,[sp,#8] +00001c 2200 MOVS r2,#0 +00001e 211c MOVS r1,#0x1c +000020 483d LDR r0,|L4.280| +000022 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000024 f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +000028 e073 B |L4.274| + |L4.42| +;;;175 DSI_ACK_DT_DCS_LONG_RESPONSE, +;;;176 DSI_VC_0, +;;;177 3, 0x0A,0x60,0x20); +;;;178 } +;;;179 else if (dcs_cmd == 0xa1) +00002a 2ca1 CMP r4,#0xa1 +00002c d120 BNE |L4.112| +;;;180 { +;;;181 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +00002e 20f6 MOVS r0,#0xf6 +000030 2121 MOVS r1,#0x21 +000032 2225 MOVS r2,#0x25 +000034 232b MOVS r3,#0x2b +000036 9309 STR r3,[sp,#0x24] +000038 920a STR r2,[sp,#0x28] +00003a 910b STR r1,[sp,#0x2c] +00003c 900c STR r0,[sp,#0x30] +00003e 2006 MOVS r0,#6 +000040 2111 MOVS r1,#0x11 +000042 22aa MOVS r2,#0xaa +000044 23f3 MOVS r3,#0xf3 +000046 9305 STR r3,[sp,#0x14] +000048 9206 STR r2,[sp,#0x18] +00004a 9107 STR r1,[sp,#0x1c] +00004c 9008 STR r0,[sp,#0x20] +00004e 2001 MOVS r0,#1 +000050 21c6 MOVS r1,#0xc6 +000052 220c MOVS r2,#0xc +000054 2321 MOVS r3,#0x21 +000056 9202 STR r2,[sp,#8] +000058 9301 STR r3,[sp,#4] +00005a 9200 STR r2,[sp,#0] +00005c 9103 STR r1,[sp,#0xc] +00005e 9004 STR r0,[sp,#0x10] +000060 230d MOVS r3,#0xd +000062 2200 MOVS r2,#0 +000064 211c MOVS r1,#0x1c +000066 482c LDR r0,|L4.280| +000068 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00006a f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +00006e e050 B |L4.274| + |L4.112| +;;;182 DSI_ACK_DT_DCS_LONG_RESPONSE, +;;;183 DSI_VC_0, +;;;184 13, 0x0C,0x21,0x0C,0xC6,0x01,0xF3,0xAA,0x11,0x06,0x2B,0x25,0x21,0xF6); +;;;185 } +;;;186 else if (dcs_cmd == 0xDA) +000070 2cda CMP r4,#0xda +000072 d109 BNE |L4.136| +;;;187 { +;;;188 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +000074 200a MOVS r0,#0xa +000076 2301 MOVS r3,#1 +000078 2200 MOVS r2,#0 +00007a 2121 MOVS r1,#0x21 +00007c 9000 STR r0,[sp,#0] +00007e 4826 LDR r0,|L4.280| +000080 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000082 f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +000086 e044 B |L4.274| + |L4.136| +;;;189 DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +;;;190 DSI_VC_0, +;;;191 1, 0x0A); +;;;192 } +;;;193 else if (dcs_cmd == 0xDB) +000088 2cdb CMP r4,#0xdb +00008a d109 BNE |L4.160| +;;;194 { +;;;195 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +00008c 2068 MOVS r0,#0x68 +00008e 2301 MOVS r3,#1 +000090 2200 MOVS r2,#0 +000092 2121 MOVS r1,#0x21 +000094 9000 STR r0,[sp,#0] +000096 4820 LDR r0,|L4.280| +000098 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00009a f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +00009e e038 B |L4.274| + |L4.160| +;;;196 DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +;;;197 DSI_VC_0, +;;;198 1, 0x68); +;;;199 } +;;;200 else if (dcs_cmd == 0xDC) +0000a0 2cdc CMP r4,#0xdc +0000a2 d109 BNE |L4.184| +;;;201 { +;;;202 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +0000a4 2007 MOVS r0,#7 +0000a6 2301 MOVS r3,#1 +0000a8 2200 MOVS r2,#0 +0000aa 2121 MOVS r1,#0x21 +0000ac 9000 STR r0,[sp,#0] +0000ae 481a LDR r0,|L4.280| +0000b0 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000b2 f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +0000b6 e02c B |L4.274| + |L4.184| +;;;203 DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +;;;204 DSI_VC_0, +;;;205 1, 0x07); +;;;206 } +;;;207 else if (dcs_cmd == 0xD6) +0000b8 2cd6 CMP r4,#0xd6 +0000ba d111 BNE |L4.224| +;;;208 { +;;;209 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +0000bc 2086 MOVS r0,#0x86 +0000be 2161 MOVS r1,#0x61 +0000c0 2285 MOVS r2,#0x85 +0000c2 23ea MOVS r3,#0xea +0000c4 9301 STR r3,[sp,#4] +0000c6 9202 STR r2,[sp,#8] +0000c8 9103 STR r1,[sp,#0xc] +0000ca 9004 STR r0,[sp,#0x10] +0000cc 20f0 MOVS r0,#0xf0 +0000ce 2305 MOVS r3,#5 +0000d0 2200 MOVS r2,#0 +0000d2 211c MOVS r1,#0x1c +0000d4 9000 STR r0,[sp,#0] +0000d6 4810 LDR r0,|L4.280| +0000d8 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000da f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +0000de e018 B |L4.274| + |L4.224| +;;;210 DSI_ACK_DT_DCS_LONG_RESPONSE, +;;;211 DSI_VC_0, +;;;212 5, 0xF0, 0xEA, 0x85, 0x61, 0x86); +;;;213 } +;;;214 else +;;;215 { +;;;216 uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle); +0000e0 480d LDR r0,|L4.280| +0000e2 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000e4 f7fffffe BL hal_dsi_rx_ctrl_get_max_ret_size +0000e8 4605 MOV r5,r0 +;;;217 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, +0000ea 2000 MOVS r0,#0 +0000ec 2301 MOVS r3,#1 +0000ee 4602 MOV r2,r0 +0000f0 2121 MOVS r1,#0x21 +0000f2 9000 STR r0,[sp,#0] +0000f4 4808 LDR r0,|L4.280| +0000f6 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000f8 f7fffffe BL hal_dsi_rx_ctrl_send_ack_cmd +;;;218 DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, +;;;219 DSI_VC_0, +;;;220 1, 0); +;;;221 TAU_LOGD("r[%x] [%d] err!!!!!!\n", dcs_cmd, return_size); +0000fc bf00 NOP +0000fe 23dd MOVS r3,#0xdd +000100 a206 ADR r2,|L4.284| +000102 a107 ADR r1,|L4.288| +000104 2000 MOVS r0,#0 +000106 9501 STR r5,[sp,#4] +000108 9400 STR r4,[sp,#0] +00010a f7fffffe BL tau_log_printf +00010e bf00 NOP +;;;222 } +000110 bf00 NOP + |L4.274| +;;;223 +;;;224 // TAU_LOGD("r %x\n",dcs_cmd); +;;;225 return true; +000112 2001 MOVS r0,#1 +;;;226 } +000114 b00d ADD sp,sp,#0x34 +000116 bdf0 POP {r4-r7,pc} +;;;227 + ENDP + + |L4.280| + DCD g_rx_ctrl_handle + |L4.284| +00011c 70387000 DCB "p8p",0 + |L4.288| +000120 5b25735d DCB "[%s] (%04d) r[%x] [%d] err!!!!!!\n",0 +000124 20282530 +000128 34642920 +00012c 725b2578 +000130 5d205b25 +000134 645d2065 +000138 72722121 +00013c 21212121 +000140 0a00 +000142 00 DCB 0 +000143 00 DCB 0 + + AREA ||i.ap_dcs_set_backlight||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_backlight PROC +;;;459 static bool reg53_E8_fg=0; +;;;460 static bool ap_dcs_set_backlight(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b57c PUSH {r2-r6,lr} +;;;461 { +000002 4605 MOV r5,r0 +000004 460c MOV r4,r1 +;;;462 //手机端0xC4~CEB(2043) 映射0x9FF +;;;463 #if 0 +;;;464 value_51H = dcs_packet->packet_param[0]; +;;;465 value_51L = dcs_packet->packet_param[1]; +;;;466 hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, value_51H, value_51L); +;;;467 #else +;;;468 rd_51_val = dcs_packet->packet_param[0]; +000006 68e0 LDR r0,[r4,#0xc] +000008 7800 LDRB r0,[r0,#0] +00000a 491e LDR r1,|L5.132| +00000c 8008 STRH r0,[r1,#0] +;;;469 rd_51_val <<=8; +00000e 4608 MOV r0,r1 +000010 7800 LDRB r0,[r0,#0] ; rd_51_val +000012 0600 LSLS r0,r0,#24 +000014 0c00 LSRS r0,r0,#16 +000016 8008 STRH r0,[r1,#0] +;;;470 rd_51_val |= dcs_packet->packet_param[1]; +000018 68e0 LDR r0,[r4,#0xc] +00001a 7840 LDRB r0,[r0,#1] +00001c 8809 LDRH r1,[r1,#0] ; rd_51_val +00001e 4308 ORRS r0,r0,r1 +000020 4918 LDR r1,|L5.132| +000022 8008 STRH r0,[r1,#0] +;;;471 +;;;472 // rd_51_val2 = (rd_51_val-0x04)*2555/2043+0x04; //0x9FF max +;;;473 if((rd_51_val >=0x00)&&(rd_51_val <= 0xFFF) ){ +000024 4608 MOV r0,r1 +000026 8800 LDRH r0,[r0,#0] ; rd_51_val +000028 2800 CMP r0,#0 +00002a db12 BLT |L5.82| +00002c 4608 MOV r0,r1 +00002e 8800 LDRH r0,[r0,#0] ; rd_51_val +000030 4915 LDR r1,|L5.136| +000032 4288 CMP r0,r1 +000034 dc0d BGT |L5.82| +;;;474 +;;;475 rd_51_val2 = (rd_51_val-0xC4)*2555/3889+0x04; //0x9FF max +000036 4913 LDR r1,|L5.132| +000038 8809 LDRH r1,[r1,#0] ; rd_51_val +00003a 39c4 SUBS r1,r1,#0xc4 +00003c 4a13 LDR r2,|L5.140| +00003e 4351 MULS r1,r2,r1 +000040 4608 MOV r0,r1 +000042 4911 LDR r1,|L5.136| +000044 39ce SUBS r1,r1,#0xce +000046 f7fffffe BL __aeabi_idivmod +00004a 1d00 ADDS r0,r0,#4 +00004c 4910 LDR r1,|L5.144| +00004e 8008 STRH r0,[r1,#0] +000050 e008 B |L5.100| + |L5.82| +;;;476 +;;;477 } +;;;478 else if(rd_51_val >0xFFF) { +000052 480c LDR r0,|L5.132| +000054 8800 LDRH r0,[r0,#0] ; rd_51_val +000056 490c LDR r1,|L5.136| +000058 4288 CMP r0,r1 +00005a dd03 BLE |L5.100| +;;;479 +;;;480 rd_51_val2 = 0x9FF; +00005c 480b LDR r0,|L5.140| +00005e 1d00 ADDS r0,r0,#4 +000060 490b LDR r1,|L5.144| +000062 8008 STRH r0,[r1,#0] + |L5.100| +;;;481 +;;;482 } +;;;483 hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, rd_51_val2>>8, rd_51_val2&0x00FF); +000064 480a LDR r0,|L5.144| +000066 7800 LDRB r0,[r0,#0] ; rd_51_val2 +000068 4909 LDR r1,|L5.144| +00006a 8809 LDRH r1,[r1,#0] ; rd_51_val2 +00006c 1209 ASRS r1,r1,#8 +00006e 2351 MOVS r3,#0x51 +000070 2203 MOVS r2,#3 +000072 9100 STR r1,[sp,#0] +000074 9001 STR r0,[sp,#4] +000076 2100 MOVS r1,#0 +000078 2039 MOVS r0,#0x39 +00007a f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;484 #endif +;;;485 // TAU_LOGD("AP_51[0x%04X],IC_51[0x%04X]\n",rd_51_val,rd_51_val2); +;;;486 return true; +00007e 2001 MOVS r0,#1 +;;;487 } +000080 bd7c POP {r2-r6,pc} +;;;488 + ENDP + +000082 0000 DCW 0x0000 + |L5.132| + DCD rd_51_val + |L5.136| + DCD 0x00000fff + |L5.140| + DCD 0x000009fb + |L5.144| + DCD rd_51_val2 + + AREA ||i.ap_dcs_set_display_off||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_display_off PROC +;;;349 */ +;;;350 static bool ap_dcs_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b538 PUSH {r3-r5,lr} +;;;351 { +000002 4604 MOV r4,r0 +000004 460d MOV r5,r1 +;;;352 #if ANALOG_PWM_OUTPUT +;;;353 hal_pwm_enable(false); +;;;354 #endif +;;;355 +;;;356 TAU_LOGD("disp off %d\n", panel_display_done); +000006 bf00 NOP +000008 4806 LDR r0,|L6.36| +00000a 7800 LDRB r0,[r0,#0] ; panel_display_done +00000c 23ff MOVS r3,#0xff +00000e 3365 ADDS r3,r3,#0x65 +000010 a205 ADR r2,|L6.40| +000012 a106 ADR r1,|L6.44| +000014 9000 STR r0,[sp,#0] +000016 2000 MOVS r0,#0 +000018 f7fffffe BL tau_log_printf +00001c bf00 NOP +;;;357 return true; +00001e 2001 MOVS r0,#1 +;;;358 } +000020 bd38 POP {r3-r5,pc} +;;;359 + ENDP + +000022 0000 DCW 0x0000 + |L6.36| + DCD panel_display_done + |L6.40| +000028 70387000 DCB "p8p",0 + |L6.44| +00002c 5b25735d DCB "[%s] (%04d) disp off %d\n",0 +000030 20282530 +000034 34642920 +000038 64697370 +00003c 206f6666 +000040 2025640a +000044 00 +000045 00 DCB 0 +000046 00 DCB 0 +000047 00 DCB 0 + + AREA ||i.ap_dcs_set_display_on||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_display_on PROC +;;;307 */ +;;;308 static bool ap_dcs_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b570 PUSH {r4-r6,lr} +;;;309 { +000002 4604 MOV r4,r0 +000004 460d MOV r5,r1 +;;;310 +;;;311 if(g_resolution_change) +000006 4815 LDR r0,|L7.92| +000008 7800 LDRB r0,[r0,#0] ; g_resolution_change +00000a 2800 CMP r0,#0 +00000c d014 BEQ |L7.56| +;;;312 { +;;;313 hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); +00000e 2280 MOVS r2,#0x80 +000010 4913 LDR r1,|L7.96| +000012 4814 LDR r0,|L7.100| +000014 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000016 f7fffffe BL hal_dsi_rx_ctrl_pre_init_pps +;;;314 hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +00001a 4812 LDR r0,|L7.100| +00001c 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00001e f7fffffe BL hal_dsi_rx_ctrl_toggle_resolution +;;;315 g_resolution_change = false; +000022 2000 MOVS r0,#0 +000024 490d LDR r1,|L7.92| +000026 7008 STRB r0,[r1,#0] +;;;316 TAU_LOGD("pps_update_1\r\n"); +000028 bf00 NOP +00002a 23ff MOVS r3,#0xff +00002c 333d ADDS r3,r3,#0x3d +00002e a20e ADR r2,|L7.104| +000030 a10e ADR r1,|L7.108| +000032 f7fffffe BL tau_log_printf +000036 bf00 NOP + |L7.56| +;;;317 } +;;;318 // TAU_LOGD("disp on"); +;;;319 // if (start_display_on == false){ +;;;320 hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x29); +000038 2329 MOVS r3,#0x29 +00003a 2202 MOVS r2,#2 +00003c 2100 MOVS r1,#0 +00003e 2005 MOVS r0,#5 +000040 f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;321 // } +;;;322 TAU_LOGD("disp on \n"); +000044 bf00 NOP +000046 23ff MOVS r3,#0xff +000048 3343 ADDS r3,r3,#0x43 +00004a a207 ADR r2,|L7.104| +00004c a10e ADR r1,|L7.136| +00004e 2000 MOVS r0,#0 +000050 f7fffffe BL tau_log_printf +000054 bf00 NOP +;;;323 return true; +000056 2001 MOVS r0,#1 +;;;324 } +000058 bd70 POP {r4-r6,pc} +;;;325 + ENDP + +00005a 0000 DCW 0x0000 + |L7.92| + DCD g_resolution_change + |L7.96| + DCD pps_fhd + |L7.100| + DCD g_rx_ctrl_handle + |L7.104| +000068 70387000 DCB "p8p",0 + |L7.108| +00006c 5b25735d DCB "[%s] (%04d) pps_update_1\r\n",0 +000070 20282530 +000074 34642920 +000078 7070735f +00007c 75706461 +000080 74655f31 +000084 0d0a00 +000087 00 DCB 0 + |L7.136| +000088 5b25735d DCB "[%s] (%04d) disp on \n",0 +00008c 20282530 +000090 34642920 +000094 64697370 +000098 206f6e20 +00009c 0a00 +00009e 00 DCB 0 +00009f 00 DCB 0 + + AREA ||i.ap_dcs_set_enter_sleep_mode||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_enter_sleep_mode PROC +;;;399 */ +;;;400 static bool ap_dcs_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b570 PUSH {r4-r6,lr} +;;;401 { +000002 4604 MOV r4,r0 +000004 460d MOV r5,r1 +;;;402 hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x28); +000006 2328 MOVS r3,#0x28 +000008 2201 MOVS r2,#1 +00000a 2100 MOVS r1,#0 +00000c 2005 MOVS r0,#5 +00000e f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;403 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_STOP_MODE); +000012 2101 MOVS r1,#1 +000014 4814 LDR r0,|L8.104| +000016 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000018 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +;;;404 delayMs(10); +00001c 200a MOVS r0,#0xa +00001e f7fffffe BL delayMs +;;;405 +;;;406 // delayMs(10); +;;;407 #if AP_SWIRE_OUTPUT +;;;408 /* Swire close */ +;;;409 hal_swire_enable(false); +000022 2000 MOVS r0,#0 +000024 f7fffffe BL hal_swire_enable +;;;410 delayMs(10); +000028 200a MOVS r0,#0xa +00002a f7fffffe BL delayMs +;;;411 hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x10); +00002e 2310 MOVS r3,#0x10 +000030 2201 MOVS r2,#1 +000032 2100 MOVS r1,#0 +000034 2005 MOVS r0,#5 +000036 f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;412 delayMs(20); +00003a 2014 MOVS r0,#0x14 +00003c f7fffffe BL delayMs +;;;413 /* AVDD_EN close*/ +;;;414 hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_LOW); +000040 2100 MOVS r1,#0 +000042 2008 MOVS r0,#8 +000044 f7fffffe BL hal_gpio_set_output_data +;;;415 #endif +;;;416 /* Wait AP reset down*/ +;;;417 hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_down_cb, DETECT_LOW_LVL); +000048 2201 MOVS r2,#1 +00004a 4908 LDR r1,|L8.108| +00004c 4610 MOV r0,r2 +00004e f7fffffe BL hal_gpio_set_ap_reset_int +;;;418 // sg_system_suspend=true; +;;;419 TAU_LOGD("enter sleep mode\n"); +000052 bf00 NOP +000054 23ff MOVS r3,#0xff +000056 33a4 ADDS r3,r3,#0xa4 +000058 a205 ADR r2,|L8.112| +00005a a106 ADR r1,|L8.116| +00005c 2000 MOVS r0,#0 +00005e f7fffffe BL tau_log_printf +000062 bf00 NOP +;;;420 // delayMs(500); +;;;421 return true; +000064 2001 MOVS r0,#1 +;;;422 } +000066 bd70 POP {r4-r6,pc} +;;;423 + ENDP + + |L8.104| + DCD g_tx_ctrl_handle + |L8.108| + DCD ap_rstn_pull_down_cb + |L8.112| +000070 70387000 DCB "p8p",0 + |L8.116| +000074 5b25735d DCB "[%s] (%04d) enter sleep mode\n",0 +000078 20282530 +00007c 34642920 +000080 656e7465 +000084 7220736c +000088 65657020 +00008c 6d6f6465 +000090 0a00 +000092 00 DCB 0 +000093 00 DCB 0 + + AREA ||i.ap_dcs_set_exit_idle_mode||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_exit_idle_mode PROC +;;;532 */ +;;;533 static bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b570 PUSH {r4-r6,lr} +;;;534 { +000002 4604 MOV r4,r0 +000004 460d MOV r5,r1 +;;;535 sg_exit_idle_mode_flag = true; +000006 2001 MOVS r0,#1 +000008 4909 LDR r1,|L9.48| +00000a 7008 STRB r0,[r1,#0] +;;;536 hal_dsi_rx_ctrl_set_hw_cmd_filter(g_rx_ctrl_handle, HAL_RX_DCS_FILTER_B, 0x2C, 0x2C); +00000c 232c MOVS r3,#0x2c +00000e 461a MOV r2,r3 +000010 210b MOVS r1,#0xb +000012 4808 LDR r0,|L9.52| +000014 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000016 f7fffffe BL hal_dsi_rx_ctrl_set_hw_cmd_filter +;;;537 TAU_LOGD("exit idle mode,skip 0x2C\n"); +00001a bf00 NOP +00001c 4b06 LDR r3,|L9.56| +00001e a207 ADR r2,|L9.60| +000020 a107 ADR r1,|L9.64| +000022 2000 MOVS r0,#0 +000024 f7fffffe BL tau_log_printf +000028 bf00 NOP +;;;538 return true; +00002a 2001 MOVS r0,#1 +;;;539 } +00002c bd70 POP {r4-r6,pc} +;;;540 + ENDP + +00002e 0000 DCW 0x0000 + |L9.48| + DCD sg_exit_idle_mode_flag + |L9.52| + DCD g_rx_ctrl_handle + |L9.56| + DCD 0x00000219 + |L9.60| +00003c 70387000 DCB "p8p",0 + |L9.64| +000040 5b25735d DCB "[%s] (%04d) exit idle mode,skip 0x2C\n",0 +000044 20282530 +000048 34642920 +00004c 65786974 +000050 2069646c +000054 65206d6f +000058 64652c73 +00005c 6b697020 +000060 30783243 +000064 0a00 +000066 00 DCB 0 +000067 00 DCB 0 + + AREA ||i.ap_dcs_set_exit_sleep_mode||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_exit_sleep_mode PROC +;;;429 */ +;;;430 static bool ap_dcs_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b570 PUSH {r4-r6,lr} +;;;431 { +000002 4604 MOV r4,r0 +000004 460d MOV r5,r1 +;;;432 //#if AP_SWIRE_OUTPUT +;;;433 // /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ +;;;434 // hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +;;;435 //#endif +;;;436 +;;;437 #if TX_START_AFTER_APRST +;;;438 if (panel_display_done == false) +;;;439 { +;;;440 sg_tx_start_in_process = true; +;;;441 } +;;;442 #endif +;;;443 +;;;444 TAU_LOGD("exit sleep mode \n"); +000006 bf00 NOP +000008 23ff MOVS r3,#0xff +00000a 33bd ADDS r3,r3,#0xbd +00000c a203 ADR r2,|L10.28| +00000e a104 ADR r1,|L10.32| +000010 2000 MOVS r0,#0 +000012 f7fffffe BL tau_log_printf +000016 bf00 NOP +;;;445 +;;;446 return true; +000018 2001 MOVS r0,#1 +;;;447 } +00001a bd70 POP {r4-r6,pc} +;;;448 + ENDP + + |L10.28| +00001c 70387000 DCB "p8p",0 + |L10.32| +000020 5b25735d DCB "[%s] (%04d) exit sleep mode \n",0 +000024 20282530 +000028 34642920 +00002c 65786974 +000030 20736c65 +000034 6570206d +000038 6f646520 +00003c 0a00 +00003e 00 DCB 0 +00003f 00 DCB 0 + + AREA ||i.ap_dcs_set_frame_change||, CODE, READONLY, ALIGN=2 + + ap_dcs_set_frame_change PROC +;;;571 */ +;;;572 static bool ap_dcs_set_frame_change(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b570 PUSH {r4-r6,lr} +;;;573 { +000002 4605 MOV r5,r0 +000004 460c MOV r4,r1 +;;;574 if (dcs_packet->param_length == 1) +000006 68a0 LDR r0,[r4,#8] +000008 2801 CMP r0,#1 +00000a d10e BNE |L11.42| +;;;575 { +;;;576 if (dcs_packet->packet_param[0] == 0x18) +00000c 68e0 LDR r0,[r4,#0xc] +00000e 7800 LDRB r0,[r0,#0] +000010 2818 CMP r0,#0x18 +000012 d105 BNE |L11.32| +;;;577 { +;;;578 // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); +;;;579 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +000014 2100 MOVS r1,#0 +000016 4806 LDR r0,|L11.48| +000018 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +00001a f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +00001e e004 B |L11.42| + |L11.32| +;;;580 } +;;;581 else +;;;582 { +;;;583 // soft_te_timer_init(); +;;;584 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_120HZ_MODE); +000020 2103 MOVS r1,#3 +000022 4803 LDR r0,|L11.48| +000024 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000026 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode + |L11.42| +;;;585 } +;;;586 } +;;;587 // TAU_LOGD("frame_change %x ,size %d, data %d\n", dcs_packet->dcs_command, dcs_packet->param_length, dcs_packet->packet_param[0]); +;;;588 return true; +00002a 2001 MOVS r0,#1 +;;;589 } +00002c bd70 POP {r4-r6,pc} +;;;590 + ENDP + +00002e 0000 DCW 0x0000 + |L11.48| + DCD g_tx_ctrl_handle + + AREA ||i.ap_rstn_pull_down_cb||, CODE, READONLY, ALIGN=2 + + ap_rstn_pull_down_cb PROC +;;;1753 */ +;;;1754 static void ap_rstn_pull_down_cb(void *data) +000000 b510 PUSH {r4,lr} +;;;1755 { +000002 4604 MOV r4,r0 +;;;1756 TAU_LOGD("ap_rstn_pull_down_cb\n"); +000004 bf00 NOP +000006 4b08 LDR r3,|L12.40| +000008 a208 ADR r2,|L12.44| +00000a a109 ADR r1,|L12.48| +00000c 2000 MOVS r0,#0 +00000e f7fffffe BL tau_log_printf +000012 bf00 NOP +;;;1757 sg_system_suspend = true; +000014 2001 MOVS r0,#1 +000016 490f LDR r1,|L12.84| +000018 7008 STRB r0,[r1,#0] +;;;1758 /* 关闭AP reset检查 */ +;;;1759 hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +00001a 2202 MOVS r2,#2 +00001c 2100 MOVS r1,#0 +00001e 4608 MOV r0,r1 +000020 f7fffffe BL hal_gpio_set_ap_reset_int +;;;1760 // TAU_LOGD("ap_rstn_pull_down_cb\n"); +;;;1761 } +000024 bd10 POP {r4,pc} +;;;1762 + ENDP + +000026 0000 DCW 0x0000 + |L12.40| + DCD 0x000006dc + |L12.44| +00002c 70387000 DCB "p8p",0 + |L12.48| +000030 5b25735d DCB "[%s] (%04d) ap_rstn_pull_down_cb\n",0 +000034 20282530 +000038 34642920 +00003c 61705f72 +000040 73746e5f +000044 70756c6c +000048 5f646f77 +00004c 6e5f6362 +000050 0a00 +000052 00 DCB 0 +000053 00 DCB 0 + |L12.84| + DCD sg_system_suspend + + AREA ||i.ap_rstn_pull_high_cb||, CODE, READONLY, ALIGN=2 + + ap_rstn_pull_high_cb PROC +;;;1740 */ +;;;1741 static void ap_rstn_pull_high_cb(void *data) +000000 b510 PUSH {r4,lr} +;;;1742 { +000002 4604 MOV r4,r0 +;;;1743 /* system resume begin */ +;;;1744 sg_system_resume = true; +000004 2001 MOVS r0,#1 +000006 4904 LDR r1,|L13.24| +000008 7008 STRB r0,[r1,#0] +;;;1745 /* 关闭AP reset检查 */ +;;;1746 hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +00000a 2202 MOVS r2,#2 +00000c 2100 MOVS r1,#0 +00000e 4608 MOV r0,r1 +000010 f7fffffe BL hal_gpio_set_ap_reset_int +;;;1747 } +000014 bd10 POP {r4,pc} +;;;1748 + ENDP + +000016 0000 DCW 0x0000 + |L13.24| + DCD sg_system_resume + + AREA ||i.ap_set_FPS_53||, CODE, READONLY, ALIGN=1 + + ap_set_FPS_53 PROC +;;;590 +;;;591 static bool ap_set_FPS_53(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +000000 b5fe PUSH {r1-r7,lr} +;;;592 { +000002 4606 MOV r6,r0 +000004 460c MOV r4,r1 +;;;593 uint8_t value_53 =0; +000006 2500 MOVS r5,#0 +;;;594 +;;;595 value_53 = dcs_packet->packet_param[0]; +000008 68e0 LDR r0,[r4,#0xc] +00000a 7805 LDRB r5,[r0,#0] +;;;596 +;;;597 if(value_53 == 0x30) // AP FPS ON +00000c 2d30 CMP r5,#0x30 +00000e d10c BNE |L14.42| +;;;598 { +;;;599 +;;;600 hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x11, 0xCF, 0xFF); // DDIC FPS ON +000010 20ff MOVS r0,#0xff +000012 21cf MOVS r1,#0xcf +000014 2211 MOVS r2,#0x11 +000016 2397 MOVS r3,#0x97 +000018 9200 STR r2,[sp,#0] +00001a 9101 STR r1,[sp,#4] +00001c 9002 STR r0,[sp,#8] +00001e 2204 MOVS r2,#4 +000020 2100 MOVS r1,#0 +000022 2039 MOVS r0,#0x39 +000024 f7fffffe BL hal_dsi_tx_ctrl_write_cmd +000028 e00d B |L14.70| + |L14.42| +;;;601 +;;;602 } +;;;603 else if(value_53 == 0x20) // AP FPS OFF +00002a 2d20 CMP r5,#0x20 +00002c d10b BNE |L14.70| +;;;604 { +;;;605 +;;;606 hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x00, 0xCF, 0xFF); // DDIC FPS OFF +00002e 20ff MOVS r0,#0xff +000030 21cf MOVS r1,#0xcf +000032 2200 MOVS r2,#0 +000034 2397 MOVS r3,#0x97 +000036 9200 STR r2,[sp,#0] +000038 9101 STR r1,[sp,#4] +00003a 9002 STR r0,[sp,#8] +00003c 2204 MOVS r2,#4 +00003e 2100 MOVS r1,#0 +000040 2039 MOVS r0,#0x39 +000042 f7fffffe BL hal_dsi_tx_ctrl_write_cmd + |L14.70| +;;;607 +;;;608 +;;;609 } +;;;610 +;;;611 // TAU_LOGD("B1[%x]", value_b1); +;;;612 return true; +000046 2001 MOVS r0,#1 +;;;613 } +000048 bdfe POP {r1-r7,pc} +;;;614 + ENDP + + + AREA ||i.app_display_init||, CODE, READONLY, ALIGN=1 + + app_display_init PROC +;;;1791 */ +;;;1792 void app_display_init(void) +000000 b510 PUSH {r4,lr} +;;;1793 { +;;;1794 /* mipi rx初始化 */ +;;;1795 app_mipi_rx_init(); +000002 f7fffffe BL app_mipi_rx_init +;;;1796 /* VCC 主供电,等待VCC Power Ready,此时RX初始化完成可以响应MIPI命令 */ +;;;1797 if (MAIN_POWER_SELECT == PWR_SEL_VCC) +;;;1798 { +;;;1799 +;;;1800 while (hal_pwr_get_vcc_power_ready() == false); +000006 bf00 NOP + |L15.8| +000008 f7fffffe BL hal_pwr_get_vcc_power_ready +00000c 2800 CMP r0,#0 +00000e d0fb BEQ |L15.8| +;;;1801 } +;;;1802 +;;;1803 /* GPIO 初始化 */ +;;;1804 app_gpio_init(); +000010 f7fffffe BL app_gpio_init +;;;1805 //TAU_LOGD("app_gpio_init \n"); +;;;1806 /* 背光初始化 */ +;;;1807 #if AP_SWIRE_OUTPUT +;;;1808 hal_swire_init(); /* swire init */ +000014 f7fffffe BL hal_swire_init +;;;1809 hal_swire_set_timer(TIMER_NUM0, 8, true); /* swire连续发送,绑定timer进行发送 */ +000018 2201 MOVS r2,#1 +00001a 2108 MOVS r1,#8 +00001c 2000 MOVS r0,#0 +00001e f7fffffe BL hal_swire_set_timer +;;;1810 #endif +;;;1811 #if ANALOG_PWM_OUTPUT +;;;1812 if (hal_pwm_init(PWM_FREQUENCY, PWM_DUTY_STEP)) +;;;1813 { +;;;1814 hal_pwm_enable(true); +;;;1815 hal_pwm_set_elvcc_output(true); +;;;1816 } +;;;1817 #endif +;;;1818 +;;;1819 /* mipi tx 初始化*/ +;;;1820 app_mipi_tx_init(); +000022 f7fffffe BL app_mipi_tx_init +;;;1821 // soft_te_timer_init(); +;;;1822 #if TX_START_AFTER_APRST +;;;1823 TAU_LOGD("wait exit sleep mode\n"); +;;;1824 #else +;;;1825 app_mipi_tx_start(); +000026 f7fffffe BL app_mipi_tx_start +;;;1826 #endif +;;;1827 } +00002a bd10 POP {r4,pc} +;;;1828 + ENDP + + + AREA ||i.app_gpio_init||, CODE, READONLY, ALIGN=2 + + app_gpio_init PROC +;;;1768 */ +;;;1769 void app_gpio_init(void) +000000 b51f PUSH {r0-r4,lr} +;;;1770 { +;;;1771 io_pad_attr_t attrs[] = +000002 4b05 LDR r3,|L16.24| +000004 cb0f LDM r3,{r0-r3} +000006 466c MOV r4,sp +000008 c40f STM r4!,{r0-r3} +;;;1772 { +;;;1773 {IO_PIN_8, PIN8_MODE_GPIO7, IO_IOE_OUTPUT, IO_LVL_LOW},/* PIN_8(TD_RSTN), GPIO,输出,低电平 */ +;;;1774 {IO_PIN_17, PIN17_MODE_GPIO8, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_17(PWMEN), GPIO,输出,低电平 */ +;;;1775 {IO_PIN_16, PIN16_MODE_GPIO2, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_16(AP_INT),GPIO,输出,低电平 */ +;;;1776 #if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) +;;;1777 {IO_PIN_14, PIN14_MODE_GPIO24, IO_IOE_INPUT, IO_LVL_NONE}, /* PIN_29(AP_TE), cmd mode输出, 并且看屏TE,配置AP TE为GPIO输入 */ +;;;1778 #endif +;;;1779 {IO_PIN_29, PIN29_MODE_TEAR, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_29(AP_TE), 硬件TEAR输出模式 */ +;;;1780 +;;;1781 }; +;;;1782 uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); +00000a 2404 MOVS r4,#4 +;;;1783 hal_gpio_config_pad(attrs, size); +00000c 4621 MOV r1,r4 +00000e 4668 MOV r0,sp +000010 f7fffffe BL hal_gpio_config_pad +;;;1784 } +000014 bd1f POP {r0-r4,pc} +;;;1785 + ENDP + +000016 0000 DCW 0x0000 + |L16.24| + DCD ||.constdata||+0x20ac + + AREA ||i.app_init_panel||, CODE, READONLY, ALIGN=2 + + app_init_panel PROC +;;;1472 */ +;;;1473 static void app_init_panel(void) +000000 b510 PUSH {r4,lr} +;;;1474 { +;;;1475 /* reset panel*/ +;;;1476 app_tx_panel_reset(); +000002 f7fffffe BL app_tx_panel_reset +;;;1477 #if PANEL_INIT_CODE_ARRAY +;;;1478 send_panel_init_code(sizeof(panel_init_code), (uint8_t *) panel_init_code); +000006 4909 LDR r1,|L17.44| +000008 4809 LDR r0,|L17.48| +00000a f7fffffe BL send_panel_init_code +;;;1479 #endif +;;;1480 hal_gpio_init_output(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +00000e 2101 MOVS r1,#1 +000010 2008 MOVS r0,#8 +000012 f7fffffe BL hal_gpio_init_output +;;;1481 delayMs(90); +000016 205a MOVS r0,#0x5a +000018 f7fffffe BL delayMs +;;;1482 #if AP_SWIRE_OUTPUT +;;;1483 hal_swire_enable(true); +00001c 2001 MOVS r0,#1 +00001e f7fffffe BL hal_swire_enable +;;;1484 hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +000022 201f MOVS r0,#0x1f +000024 f7fffffe BL hal_swire_set_pulse +;;;1485 #endif +;;;1486 // hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +;;;1487 // Gpio_swire_output(2, 40); +;;;1488 +;;;1489 // TAU_LOGD("Panel init!\n\r"); +;;;1490 } +000028 bd10 POP {r4,pc} +;;;1491 + ENDP + +00002a 0000 DCW 0x0000 + |L17.44| + DCD panel_init_code + |L17.48| + DCD 0x0000204c + + AREA ||i.app_mipi_rx_init||, CODE, READONLY, ALIGN=2 + + app_mipi_rx_init PROC +;;;1549 */ +;;;1550 static void app_mipi_rx_init(void) +000000 b510 PUSH {r4,lr} +;;;1551 { +;;;1552 if (g_rx_ctrl_handle == NULL) +000002 4839 LDR r0,|L18.232| +000004 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000006 2800 CMP r0,#0 +000008 d103 BNE |L18.18| +;;;1553 { +;;;1554 /* 创建rx ctrl handle */ +;;;1555 g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); +00000a f7fffffe BL hal_dsi_rx_ctrl_create_handle +00000e 4936 LDR r1,|L18.232| +000010 6008 STR r0,[r1,#0] ; g_rx_ctrl_handle + |L18.18| +;;;1556 } +;;;1557 /* 配置参数 */ +;;;1558 g_rx_ctrl_handle->base_info.src_w = INPUT_WIDTH; +000012 2015 MOVS r0,#0x15 +000014 0180 LSLS r0,r0,#6 +000016 4934 LDR r1,|L18.232| +000018 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +00001a 6008 STR r0,[r1,#0] +;;;1559 g_rx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; +00001c 20bb MOVS r0,#0xbb +00001e 0100 LSLS r0,r0,#4 +000020 4931 LDR r1,|L18.232| +000022 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +000024 6048 STR r0,[r1,#4] +;;;1560 g_rx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; +000026 2087 MOVS r0,#0x87 +000028 00c0 LSLS r0,r0,#3 +00002a 492f LDR r1,|L18.232| +00002c 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +00002e 6088 STR r0,[r1,#8] +;;;1561 g_rx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; +000030 204b MOVS r0,#0x4b +000032 0140 LSLS r0,r0,#5 +000034 492c LDR r1,|L18.232| +000036 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +000038 60c8 STR r0,[r1,#0xc] +;;;1562 g_rx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; +00003a 2002 MOVS r0,#2 +00003c 492a LDR r1,|L18.232| +00003e 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +000040 7408 STRB r0,[r1,#0x10] +;;;1563 g_rx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; +000042 2001 MOVS r0,#1 +000044 4928 LDR r1,|L18.232| +000046 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +000048 7448 STRB r0,[r1,#0x11] +;;;1564 g_rx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; +00004a 2000 MOVS r0,#0 +00004c 4926 LDR r1,|L18.232| +00004e 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +000050 7488 STRB r0,[r1,#0x12] +;;;1565 g_rx_ctrl_handle->rx_color_mode = INPUT_COLOR_MODE; +000052 2104 MOVS r1,#4 +000054 4824 LDR r0,|L18.232| +000056 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000058 3020 ADDS r0,r0,#0x20 +00005a 7481 STRB r1,[r0,#0x12] +;;;1566 g_rx_ctrl_handle->rx_lanes = INPUT_MIPI_LANE_NUM; +00005c 4822 LDR r0,|L18.232| +00005e 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000060 3020 ADDS r0,r0,#0x20 +000062 74c1 STRB r1,[r0,#0x13] +;;;1567 g_rx_ctrl_handle->rx_nonburst_models = INPUT_VIDEO_MODEL; /* 可不配置 */ +000064 2101 MOVS r1,#1 +000066 4820 LDR r0,|L18.232| +000068 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00006a 3020 ADDS r0,r0,#0x20 +00006c 7501 STRB r1,[r0,#0x14] +;;;1568 g_rx_ctrl_handle->compress_en = INPUT_COMPRESS; +00006e 481e LDR r0,|L18.232| +000070 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000072 3020 ADDS r0,r0,#0x20 +000074 7541 STRB r1,[r0,#0x15] +;;;1569 g_rx_ctrl_handle->rx_hsclk_rate = INPUT_MIPI_LANE_RATE; +000076 481d LDR r0,|L18.236| +000078 491b LDR r1,|L18.232| +00007a 6809 LDR r1,[r1,#0] ; g_rx_ctrl_handle +00007c 6388 STR r0,[r1,#0x38] +;;;1570 g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table; /* 注册 DCS处理列表 */ +00007e 491c LDR r1,|L18.240| +000080 4819 LDR r0,|L18.232| +000082 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000084 3080 ADDS r0,r0,#0x80 +000086 63c1 STR r1,[r0,#0x3c] +;;;1571 g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read; /* 注册dsc read 回调函数,可选,此函数为空时由cus_dcs_entry_table执行 */ +000088 491a LDR r1,|L18.244| +00008a 4817 LDR r0,|L18.232| +00008c 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00008e 3080 ADDS r0,r0,#0x80 +000090 6401 STR r1,[r0,#0x40] +;;;1572 // g_rx_ctrl_handle->hight_performan_mode=HIGHT_PERFORMAN_L2; +;;;1573 g_rx_ctrl_handle->extra_info.crop_info.top =12; //4 8 的倍数 +000092 210c MOVS r1,#0xc +000094 4814 LDR r0,|L18.232| +000096 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000098 8381 STRH r1,[r0,#0x1c] +;;;1574 g_rx_ctrl_handle->extra_info.crop_info.enable=1; +00009a 2101 MOVS r1,#1 +00009c 4812 LDR r0,|L18.232| +00009e 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000a0 3018 ADDS r0,r0,#0x18 +0000a2 7301 STRB r1,[r0,#0xc] +;;;1575 #if RX_RESOLUTION_CHANGE_ENABLE +;;;1576 g_rx_ctrl_handle->pps_update_entry = pps_update_handle; +0000a4 4914 LDR r1,|L18.248| +0000a6 4810 LDR r0,|L18.232| +0000a8 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000aa 3080 ADDS r0,r0,#0x80 +0000ac 6441 STR r1,[r0,#0x44] +;;;1577 #endif +;;;1578 /* 提前预置PPS, AP 有PPS cmd也会更新 */ +;;;1579 if (g_rx_ctrl_handle->compress_en == true) +0000ae 480e LDR r0,|L18.232| +0000b0 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000b2 3020 ADDS r0,r0,#0x20 +0000b4 7d40 LDRB r0,[r0,#0x15] +0000b6 2801 CMP r0,#1 +0000b8 d105 BNE |L18.198| +;;;1580 { +;;;1581 hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); +0000ba 2280 MOVS r2,#0x80 +0000bc 490f LDR r1,|L18.252| +0000be 480a LDR r0,|L18.232| +0000c0 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000c2 f7fffffe BL hal_dsi_rx_ctrl_pre_init_pps + |L18.198| +;;;1582 } +;;;1583 +;;;1584 /* 初始化rx ctrl */ +;;;1585 hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); +0000c6 4808 LDR r0,|L18.232| +0000c8 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000ca f7fffffe BL hal_dsi_rx_ctrl_init +;;;1586 +;;;1587 #if RX_READ_HW_ACK +;;;1588 /* 配置硬件回复 */ +;;;1589 app_set_dcs_hw_ack(); +;;;1590 #endif +;;;1591 +;;;1592 #if TX_CMD_MODE_WITHOUT_TE +;;;1593 /* 注册接收一帧帧头事件回调,每接收一帧数据TX再往外发一帧 */ +;;;1594 //hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_FS_EVENT, true, NULL); +;;;1595 /* 注册接收第0行数据事件,接收到数据后再往外发送数据,确保不撕裂 */ +;;;1596 uint32_t line = 0; +;;;1597 hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_LINE_EVENT, true, &line); +;;;1598 #endif +;;;1599 +;;;1600 #if RX_START_WITHOUT_RST +;;;1601 /* 等待ap reset置位再启动rx,否则容易收到错误数据 */ +;;;1602 hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +0000ce 4806 LDR r0,|L18.232| +0000d0 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +0000d2 f7fffffe BL hal_dsi_rx_ctrl_start +;;;1603 #else +;;;1604 /* 注册RX start callback,确认RX LP11时再启动RX,防止接收错误数据 */ +;;;1605 hal_gpio_set_ap_reset_int(ENABLE, app_mipi_rx_start_cb, DETECT_HIGH_LVL); +;;;1606 #endif +;;;1607 TAU_LOGD("rx init!\n\r"); +0000d6 bf00 NOP +0000d8 4b09 LDR r3,|L18.256| +0000da a20a ADR r2,|L18.260| +0000dc a10a ADR r1,|L18.264| +0000de 2000 MOVS r0,#0 +0000e0 f7fffffe BL tau_log_printf +0000e4 bf00 NOP +;;;1608 } +0000e6 bd10 POP {r4,pc} +;;;1609 + ENDP + + |L18.232| + DCD g_rx_ctrl_handle + |L18.236| + DCD 0x5f5e1000 + |L18.240| + DCD g_cus_rx_dcs_execute_table + |L18.244| + DCD ap_dcs_read + |L18.248| + DCD pps_update_handle + |L18.252| + DCD pps + |L18.256| + DCD 0x00000647 + |L18.260| +000104 70387000 DCB "p8p",0 + |L18.264| +000108 5b25735d DCB "[%s] (%04d) rx init!\n\r",0 +00010c 20282530 +000110 34642920 +000114 72782069 +000118 6e697421 +00011c 0a0d00 +00011f 00 DCB 0 + + AREA ||i.app_mipi_tx_init||, CODE, READONLY, ALIGN=2 + + app_mipi_tx_init PROC +;;;1614 */ +;;;1615 static void app_mipi_tx_init(void) +000000 b510 PUSH {r4,lr} +;;;1616 { +;;;1617 if (g_tx_ctrl_handle == NULL) +000002 4835 LDR r0,|L19.216| +000004 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000006 2800 CMP r0,#0 +000008 d103 BNE |L19.18| +;;;1618 { +;;;1619 g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle(); +00000a f7fffffe BL hal_dsi_tx_ctrl_create_handle +00000e 4932 LDR r1,|L19.216| +000010 6008 STR r0,[r1,#0] ; g_tx_ctrl_handle + |L19.18| +;;;1620 } +;;;1621 g_tx_ctrl_handle->channel_id = OUTPUT_VC; +000012 2100 MOVS r1,#0 +000014 4830 LDR r0,|L19.216| +000016 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000018 3020 ADDS r0,r0,#0x20 +00001a 7601 STRB r1,[r0,#0x18] +;;;1622 g_tx_ctrl_handle->lane_num = OUTPUT_LANE_NUMBER; +00001c 2104 MOVS r1,#4 +00001e 482e LDR r0,|L19.216| +000020 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000022 3020 ADDS r0,r0,#0x20 +000024 7501 STRB r1,[r0,#0x14] +;;;1623 g_tx_ctrl_handle->vid_mode = OUTPUT_VIDEO_MODEL; +000026 2102 MOVS r1,#2 +000028 482b LDR r0,|L19.216| +00002a 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +00002c 3020 ADDS r0,r0,#0x20 +00002e 7641 STRB r1,[r0,#0x19] +;;;1624 g_tx_ctrl_handle->cmd_tx_type = TX_INIT_TYPE; +000030 2101 MOVS r1,#1 +000032 4829 LDR r0,|L19.216| +000034 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000036 3020 ADDS r0,r0,#0x20 +000038 7681 STRB r1,[r0,#0x1a] +;;;1625 g_tx_ctrl_handle->dpi_vsa = OUTPUT_VSA; +00003a 2001 MOVS r0,#1 +00003c 4926 LDR r1,|L19.216| +00003e 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000040 6188 STR r0,[r1,#0x18] +;;;1626 g_tx_ctrl_handle->dpi_vbp = OUTPUT_VBP; +000042 2013 MOVS r0,#0x13 +000044 4924 LDR r1,|L19.216| +000046 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000048 61c8 STR r0,[r1,#0x1c] +;;;1627 g_tx_ctrl_handle->dpi_vfp = OUTPUT_VFP; +00004a 200c MOVS r0,#0xc +00004c 4922 LDR r1,|L19.216| +00004e 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000050 6208 STR r0,[r1,#0x20] +;;;1628 g_tx_ctrl_handle->dpi_hsa = OUTPUT_HSA; +000052 2001 MOVS r0,#1 +000054 4920 LDR r1,|L19.216| +000056 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000058 6248 STR r0,[r1,#0x24] +;;;1629 g_tx_ctrl_handle->dpi_hbp = OUTPUT_HBP; +00005a 201b MOVS r0,#0x1b +00005c 491e LDR r1,|L19.216| +00005e 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000060 6288 STR r0,[r1,#0x28] +;;;1630 g_tx_ctrl_handle->dpi_hfp = OUTPUT_HFP; +000062 204d MOVS r0,#0x4d +000064 491c LDR r1,|L19.216| +000066 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000068 62c8 STR r0,[r1,#0x2c] +;;;1631 g_tx_ctrl_handle->base_info.src_w = INPUT_WIDTH; +00006a 2015 MOVS r0,#0x15 +00006c 0180 LSLS r0,r0,#6 +00006e 491a LDR r1,|L19.216| +000070 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000072 6008 STR r0,[r1,#0] +;;;1632 g_tx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; +000074 20bb MOVS r0,#0xbb +000076 0100 LSLS r0,r0,#4 +000078 4917 LDR r1,|L19.216| +00007a 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +00007c 6048 STR r0,[r1,#4] +;;;1633 g_tx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; +00007e 2087 MOVS r0,#0x87 +000080 00c0 LSLS r0,r0,#3 +000082 4915 LDR r1,|L19.216| +000084 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000086 6088 STR r0,[r1,#8] +;;;1634 g_tx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; +000088 204b MOVS r0,#0x4b +00008a 0140 LSLS r0,r0,#5 +00008c 4912 LDR r1,|L19.216| +00008e 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000090 60c8 STR r0,[r1,#0xc] +;;;1635 g_tx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; +000092 2002 MOVS r0,#2 +000094 4910 LDR r1,|L19.216| +000096 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +000098 7408 STRB r0,[r1,#0x10] +;;;1636 g_tx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; +00009a 2001 MOVS r0,#1 +00009c 490e LDR r1,|L19.216| +00009e 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +0000a0 7448 STRB r0,[r1,#0x11] +;;;1637 g_tx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; +0000a2 2000 MOVS r0,#0 +0000a4 490c LDR r1,|L19.216| +0000a6 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +0000a8 7488 STRB r0,[r1,#0x12] +;;;1638 g_tx_ctrl_handle->tx_frame_rate=58; +0000aa 480c LDR r0,|L19.220| +0000ac 490a LDR r1,|L19.216| +0000ae 6809 LDR r1,[r1,#0] ; g_tx_ctrl_handle +0000b0 6308 STR r0,[r1,#0x30] +;;;1639 // g_tx_ctrl_handle->tx_lane_lp = 2; +;;;1640 +;;;1641 /* 初始化屏时每一条LP CMD都退出LPDT 再进入发送下一条 */ +;;;1642 /* 解决FT8720 TDDI 显示翻转问题 */ +;;;1643 // g_tx_ctrl_handle->lp_exit_lpdt = true; +;;;1644 +;;;1645 hal_dsi_tx_ctrl_init(g_tx_ctrl_handle); +0000b2 4809 LDR r0,|L19.216| +0000b4 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +0000b6 f7fffffe BL hal_dsi_tx_ctrl_init +;;;1646 // hal_dsi_tx_ctrl_set_cus_sync_line(g_tx_ctrl_handle,1200); //1200 +;;;1647 +;;;1648 /* FIXME set tear on*/ +;;;1649 // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +;;;1650 +;;;1651 /* AP 没有发送数据时默认的显示颜色, 量产为0 0 0(黑色), 配置其他颜色仅为debug使用 */ +;;;1652 hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0x00); +0000ba 2200 MOVS r2,#0 +0000bc 4611 MOV r1,r2 +0000be 4610 MOV r0,r2 +0000c0 f7fffffe BL hal_dsi_tx_ctrl_set_overwrite_rgb +;;;1653 TAU_LOGD("tx init!\n\r"); +0000c4 bf00 NOP +0000c6 4b06 LDR r3,|L19.224| +0000c8 a206 ADR r2,|L19.228| +0000ca a107 ADR r1,|L19.232| +0000cc 2000 MOVS r0,#0 +0000ce f7fffffe BL tau_log_printf +0000d2 bf00 NOP +;;;1654 } +0000d4 bd10 POP {r4,pc} +;;;1655 + ENDP + +0000d6 0000 DCW 0x0000 + |L19.216| + DCD g_tx_ctrl_handle + |L19.220| + DCD 0x42680000 + |L19.224| + DCD 0x00000675 + |L19.228| +0000e4 70387000 DCB "p8p",0 + |L19.232| +0000e8 5b25735d DCB "[%s] (%04d) tx init!\n\r",0 +0000ec 20282530 +0000f0 34642920 +0000f4 74782069 +0000f8 6e697421 +0000fc 0a0d00 +0000ff 00 DCB 0 + + AREA ||i.app_mipi_tx_start||, CODE, READONLY, ALIGN=2 + + app_mipi_tx_start PROC +;;;1693 */ +;;;1694 static void app_mipi_tx_start(void) +000000 b510 PUSH {r4,lr} +;;;1695 { +;;;1696 // TAU_LOGD("tx_start \n"); +;;;1697 /* Init panel */ +;;;1698 app_init_panel(); +000002 f7fffffe BL app_init_panel +;;;1699 /* TX start */ +;;;1700 hal_dsi_tx_ctrl_start(g_tx_ctrl_handle); +000006 481a LDR r0,|L20.112| +000008 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +00000a f7fffffe BL hal_dsi_tx_ctrl_start +;;;1701 +;;;1702 #if RX_WAIT_TEAR_ON +;;;1703 te_mode_e default_te = sg_ap_set_tear_on ? TE_60HZ_MODE : TE_USER_MODE; +;;;1704 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, default_te); +;;;1705 #else +;;;1706 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +00000e 2100 MOVS r1,#0 +000010 4817 LDR r0,|L20.112| +000012 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000014 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +;;;1707 #endif +;;;1708 +;;;1709 panel_display_done = true; +000018 2001 MOVS r0,#1 +00001a 4916 LDR r1,|L20.116| +00001c 7008 STRB r0,[r1,#0] +;;;1710 if(g_tx_ctrl_handle->base_info.src_w==1008) +00001e 4814 LDR r0,|L20.112| +000020 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000022 6800 LDR r0,[r0,#0] +000024 213f MOVS r1,#0x3f +000026 0109 LSLS r1,r1,#4 +000028 4288 CMP r0,r1 +00002a d10c BNE |L20.70| +;;;1711 { +;;;1712 hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); +00002c 2280 MOVS r2,#0x80 +00002e 4912 LDR r1,|L20.120| +000030 4812 LDR r0,|L20.124| +000032 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000034 f7fffffe BL hal_dsi_rx_ctrl_pre_init_pps +;;;1713 hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +000038 4810 LDR r0,|L20.124| +00003a 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00003c f7fffffe BL hal_dsi_rx_ctrl_toggle_resolution +;;;1714 g_resolution_change = false; +000040 2000 MOVS r0,#0 +000042 490f LDR r1,|L20.128| +000044 7008 STRB r0,[r1,#0] + |L20.70| +;;;1715 // TAU_LOGD("pps_update!!\r\n"); +;;;1716 } +;;;1717 // soft_te_timer_init(); +;;;1718 delayMs(80); +000046 2050 MOVS r0,#0x50 +000048 f7fffffe BL delayMs +;;;1719 // Panel_CCM(); +;;;1720 // delayMs(20); +;;;1721 /* Display on */ +;;;1722 hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); +00004c 2329 MOVS r3,#0x29 +00004e 2201 MOVS r2,#1 +000050 2100 MOVS r1,#0 +000052 2005 MOVS r0,#5 +000054 f7fffffe BL hal_dsi_tx_ctrl_write_cmd +;;;1723 +;;;1724 #if AP_SWIRE_OUTPUT +;;;1725 hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +000058 201f MOVS r0,#0x1f +00005a f7fffffe BL hal_swire_set_pulse +;;;1726 #endif +;;;1727 +;;;1728 #if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) +;;;1729 // hal_dsi_tx_ctrl_gen_a_frame(); /* FIXME */ +;;;1730 app_tx_cmd_app_init_panel_te_int(IO_PIN_14, DETECT_RISING_EDGE); /* 注册屏端TE中断 */ +;;;1731 #endif +;;;1732 +;;;1733 TAU_LOGD("tx_start \n"); +00005e bf00 NOP +000060 4b08 LDR r3,|L20.132| +000062 a209 ADR r2,|L20.136| +000064 a109 ADR r1,|L20.140| +000066 2000 MOVS r0,#0 +000068 f7fffffe BL tau_log_printf +00006c bf00 NOP +;;;1734 } +00006e bd10 POP {r4,pc} +;;;1735 + ENDP + + |L20.112| + DCD g_tx_ctrl_handle + |L20.116| + DCD panel_display_done + |L20.120| + DCD pps_fhd + |L20.124| + DCD g_rx_ctrl_handle + |L20.128| + DCD g_resolution_change + |L20.132| + DCD 0x000006c5 + |L20.136| +000088 70387000 DCB "p8p",0 + |L20.140| +00008c 5b25735d DCB "[%s] (%04d) tx_start \n",0 +000090 20282530 +000094 34642920 +000098 74785f73 +00009c 74617274 +0000a0 200a00 +0000a3 00 DCB 0 + + AREA ||i.app_system_process||, CODE, READONLY, ALIGN=2 + + app_system_process PROC +;;;1925 */ +;;;1926 static void app_system_process(void) +000000 b510 PUSH {r4,lr} +;;;1927 { +;;;1928 +;;;1929 if (sg_system_suspend) +000002 480e LDR r0,|L21.60| +000004 7800 LDRB r0,[r0,#0] ; sg_system_suspend +000006 2800 CMP r0,#0 +000008 d00d BEQ |L21.38| +;;;1930 { +;;;1931 TAU_LOGD("app_system_process\n"); +00000a bf00 NOP +00000c 4b0c LDR r3,|L21.64| +00000e a20d ADR r2,|L21.68| +000010 a10d ADR r1,|L21.72| +000012 2000 MOVS r0,#0 +000014 f7fffffe BL tau_log_printf +000018 bf00 NOP +;;;1932 /* 系统进入sleep mode */ +;;;1933 app_system_suspend(SLEEP_MODE_SELECT); +00001a 2002 MOVS r0,#2 +00001c f7fffffe BL app_system_suspend +;;;1934 sg_system_suspend = false; +000020 2000 MOVS r0,#0 +000022 4906 LDR r1,|L21.60| +000024 7008 STRB r0,[r1,#0] + |L21.38| +;;;1935 } +;;;1936 +;;;1937 if (sg_system_resume) +000026 4810 LDR r0,|L21.104| +000028 7800 LDRB r0,[r0,#0] ; sg_system_resume +00002a 2800 CMP r0,#0 +00002c d005 BEQ |L21.58| +;;;1938 { +;;;1939 /* 系统退出sleep mode */ +;;;1940 app_system_resume(SLEEP_MODE_SELECT); +00002e 2002 MOVS r0,#2 +000030 f7fffffe BL app_system_resume +;;;1941 sg_system_resume = false; +000034 2000 MOVS r0,#0 +000036 490c LDR r1,|L21.104| +000038 7008 STRB r0,[r1,#0] + |L21.58| +;;;1942 } +;;;1943 +;;;1944 #if TX_START_AFTER_APRST +;;;1945 if (sg_tx_start_in_process) +;;;1946 { +;;;1947 app_mipi_tx_start(); +;;;1948 sg_tx_start_in_process = false; +;;;1949 } +;;;1950 #endif +;;;1951 } +00003a bd10 POP {r4,pc} +;;;1952 + ENDP + + |L21.60| + DCD sg_system_suspend + |L21.64| + DCD 0x0000078b + |L21.68| +000044 70387000 DCB "p8p",0 + |L21.72| +000048 5b25735d DCB "[%s] (%04d) app_system_process\n",0 +00004c 20282530 +000050 34642920 +000054 6170705f +000058 73797374 +00005c 656d5f70 +000060 726f6365 +000064 73730a00 + |L21.104| + DCD sg_system_resume + + AREA ||i.app_system_resume||, CODE, READONLY, ALIGN=2 + + app_system_resume PROC +;;;1833 */ +;;;1834 static void app_system_resume(pwr_sleep_mode_e sleep_mode) +000000 b510 PUSH {r4,lr} +;;;1835 { +000002 4604 MOV r4,r0 +;;;1836 /* 退出sleep mode, 电源切换 */ +;;;1837 hal_pwr_exit_sleep_mode(); +000004 f7fffffe BL hal_pwr_exit_sleep_mode +;;;1838 +;;;1839 /* display resume */ +;;;1840 app_display_init(); +000008 f7fffffe BL app_display_init +;;;1841 +;;;1842 #if TOUCH_ENABLE +;;;1843 /* touch resume */ +;;;1844 app_tp_write_other_operations(NULL, 0); +;;;1845 #endif +;;;1846 TAU_LOGD("system resume\n"); +00000c bf00 NOP +00000e 4b04 LDR r3,|L22.32| +000010 a204 ADR r2,|L22.36| +000012 a105 ADR r1,|L22.40| +000014 2000 MOVS r0,#0 +000016 f7fffffe BL tau_log_printf +00001a bf00 NOP +;;;1847 } +00001c bd10 POP {r4,pc} +;;;1848 + ENDP + +00001e 0000 DCW 0x0000 + |L22.32| + DCD 0x00000736 + |L22.36| +000024 70387000 DCB "p8p",0 + |L22.40| +000028 5b25735d DCB "[%s] (%04d) system resume\n",0 +00002c 20282530 +000030 34642920 +000034 73797374 +000038 656d2072 +00003c 6573756d +000040 650a00 +000043 00 DCB 0 + + AREA ||i.app_system_suspend||, CODE, READONLY, ALIGN=2 + + app_system_suspend PROC +;;;1853 */ +;;;1854 static void app_system_suspend(pwr_sleep_mode_e sleep_mode) +000000 b538 PUSH {r3-r5,lr} +;;;1855 { +000002 4605 MOV r5,r0 +;;;1856 // TAU_LOGD("SLEEP_MODE\n"); +;;;1857 /* 关闭图像通路 */ +;;;1858 hal_dsi_tx_ctrl_stop(g_tx_ctrl_handle); +000004 4831 LDR r0,|L23.204| +000006 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000008 f7fffffe BL hal_dsi_tx_ctrl_stop +;;;1859 hal_dsi_tx_ctrl_deinit(g_tx_ctrl_handle); +00000c 482f LDR r0,|L23.204| +00000e 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000010 f7fffffe BL hal_dsi_tx_ctrl_deinit +;;;1860 hal_dsi_rx_ctrl_stop(g_rx_ctrl_handle); +000014 482e LDR r0,|L23.208| +000016 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000018 f7fffffe BL hal_dsi_rx_ctrl_stop +;;;1861 hal_dsi_rx_ctrl_deinit(g_rx_ctrl_handle); +00001c 482c LDR r0,|L23.208| +00001e 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000020 f7fffffe BL hal_dsi_rx_ctrl_deinit +;;;1862 +;;;1863 /* Tear拉低 */ +;;;1864 hal_gpio_init_output(IO_PAD_AP_TE, IO_LVL_LOW); +000024 2100 MOVS r1,#0 +000026 2003 MOVS r0,#3 +000028 f7fffffe BL hal_gpio_init_output +;;;1865 panel_display_done = false; +00002c 2000 MOVS r0,#0 +00002e 4929 LDR r1,|L23.212| +000030 7008 STRB r0,[r1,#0] +;;;1866 #if RX_WAIT_TEAR_ON +;;;1867 sg_ap_set_tear_on = false; +;;;1868 #endif +;;;1869 +;;;1870 /* 关闭外设 比如Swire/I2C/Flash 等 */ +;;;1871 #if AP_SWIRE_OUTPUT +;;;1872 hal_swire_deinit(); +000032 f7fffffe BL hal_swire_deinit +;;;1873 #endif +;;;1874 #if ANALOG_PWM_OUTPUT +;;;1875 hal_pwm_deinit(); +;;;1876 #endif +;;;1877 +;;;1878 #if SHARE_FLASH_ENABLE +;;;1879 hal_flash_share_mode(false); +;;;1880 #endif +;;;1881 +;;;1882 /* 切换TP18 供电 */ +;;;1883 hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); +000036 2004 MOVS r0,#4 +000038 f7fffffe BL hal_pwr_set_sleep_mode_power +;;;1884 +;;;1885 if (sleep_mode == PWR_NORMAL_SLEEP_MODE) +00003c 2d00 CMP r5,#0 +00003e d10e BNE |L23.94| +;;;1886 { +;;;1887 /* normal sleep mode, MCU可以正常工作 */ +;;;1888 hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); +000040 2200 MOVS r2,#0 +000042 4925 LDR r1,|L23.216| +000044 2001 MOVS r0,#1 +000046 f7fffffe BL hal_gpio_set_ap_reset_int +;;;1889 hal_pwr_enter_normal_sleep_mode(); +00004a f7fffffe BL hal_pwr_enter_normal_sleep_mode +;;;1890 TAU_LOGD("PWR_NORMAL_SLEEP_MODE\n"); +00004e bf00 NOP +000050 4b22 LDR r3,|L23.220| +000052 a223 ADR r2,|L23.224| +000054 a123 ADR r1,|L23.228| +000056 2000 MOVS r0,#0 +000058 f7fffffe BL tau_log_printf +00005c e034 B |L23.200| + |L23.94| +;;;1891 } +;;;1892 else if (sleep_mode == PWR_STOP_SLEEP_MODE) +00005e 2d01 CMP r5,#1 +000060 d125 BNE |L23.174| +;;;1893 { +;;;1894 TAU_LOGD("PWR_STOP_SLEEP_MODE\n"); +000062 bf00 NOP +000064 4b1d LDR r3,|L23.220| +000066 1d1b ADDS r3,r3,#4 +000068 a21d ADR r2,|L23.224| +00006a a127 ADR r1,|L23.264| +00006c 2000 MOVS r0,#0 +00006e f7fffffe BL tau_log_printf +000072 bf00 NOP +;;;1895 +;;;1896 /* 注册对应 wakeup IO */ +;;;1897 hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_RSTN, WUP_RISING_EDGE); +000074 2102 MOVS r1,#2 +000076 2011 MOVS r0,#0x11 +000078 f7fffffe BL hal_pwr_set_stop_sleep_wakeup_pin +;;;1898 //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_SPIS_CSN, WUP_FALLING_EDGE); +;;;1899 //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_TD_INT, WUP_FALLING_EDGE); +;;;1900 io_pad_e wakeup_io = hal_pwr_enter_stop_sleep_mode(); +00007c f7fffffe BL hal_pwr_enter_stop_sleep_mode +000080 4604 MOV r4,r0 +;;;1901 if (wakeup_io == IO_PAD_AP_RSTN) +000082 2c11 CMP r4,#0x11 +000084 d103 BNE |L23.142| +;;;1902 { +;;;1903 sg_system_resume = true; +000086 2001 MOVS r0,#1 +000088 4928 LDR r1,|L23.300| +00008a 7008 STRB r0,[r1,#0] +00008c e00e B |L23.172| + |L23.142| +;;;1904 } +;;;1905 else +;;;1906 { +;;;1907 /* Not impletmented */ +;;;1908 TAU_LOGD("wakeup_io %d FIXME touch wakeup convert to AP\n", wakeup_io); +00008e bf00 NOP +000090 4b12 LDR r3,|L23.220| +000092 3312 ADDS r3,r3,#0x12 +000094 a212 ADR r2,|L23.224| +000096 a126 ADR r1,|L23.304| +000098 2000 MOVS r0,#0 +00009a 9400 STR r4,[sp,#0] +00009c f7fffffe BL tau_log_printf +0000a0 bf00 NOP +;;;1909 hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); +0000a2 2200 MOVS r2,#0 +0000a4 490c LDR r1,|L23.216| +0000a6 2001 MOVS r0,#1 +0000a8 f7fffffe BL hal_gpio_set_ap_reset_int + |L23.172| +;;;1910 } +;;;1911 } +0000ac e00c B |L23.200| + |L23.174| +;;;1912 else +;;;1913 { +;;;1914 /* deep sleep mode,配置AP RSTN 上升沿,TD INT 下降沿唤醒 */ +;;;1915 hal_pwr_enter_deep_sleep_mode(WUP_RISING_EDGE, WUP_FALLING_EDGE); +0000ae 2103 MOVS r1,#3 +0000b0 2002 MOVS r0,#2 +0000b2 f7fffffe BL hal_pwr_enter_deep_sleep_mode +;;;1916 TAU_LOGD("PWR_DEEP_SLEEP_MODE\n"); +0000b6 bf00 NOP +0000b8 4b08 LDR r3,|L23.220| +0000ba 331a ADDS r3,r3,#0x1a +0000bc a208 ADR r2,|L23.224| +0000be a12b ADR r1,|L23.364| +0000c0 2000 MOVS r0,#0 +0000c2 f7fffffe BL tau_log_printf +0000c6 bf00 NOP + |L23.200| +;;;1917 } +;;;1918 +;;;1919 } +0000c8 bd38 POP {r3-r5,pc} +;;;1920 + ENDP + +0000ca 0000 DCW 0x0000 + |L23.204| + DCD g_tx_ctrl_handle + |L23.208| + DCD g_rx_ctrl_handle + |L23.212| + DCD panel_display_done + |L23.216| + DCD ap_rstn_pull_high_cb + |L23.220| + DCD 0x00000762 + |L23.224| +0000e0 70387000 DCB "p8p",0 + |L23.228| +0000e4 5b25735d DCB "[%s] (%04d) PWR_NORMAL_SLEEP_MODE\n",0 +0000e8 20282530 +0000ec 34642920 +0000f0 5057525f +0000f4 4e4f524d +0000f8 414c5f53 +0000fc 4c454550 +000100 5f4d4f44 +000104 450a00 +000107 00 DCB 0 + |L23.264| +000108 5b25735d DCB "[%s] (%04d) PWR_STOP_SLEEP_MODE\n",0 +00010c 20282530 +000110 34642920 +000114 5057525f +000118 53544f50 +00011c 5f534c45 +000120 45505f4d +000124 4f44450a +000128 00 +000129 00 DCB 0 +00012a 00 DCB 0 +00012b 00 DCB 0 + |L23.300| + DCD sg_system_resume + |L23.304| +000130 5b25735d DCB "[%s] (%04d) wakeup_io %d FIXME touch wakeup convert to " +000134 20282530 +000138 34642920 +00013c 77616b65 +000140 75705f69 +000144 6f202564 +000148 20464958 +00014c 4d452074 +000150 6f756368 +000154 2077616b +000158 65757020 +00015c 636f6e76 +000160 65727420 +000164 746f20 +000167 41500a00 DCB "AP\n",0 +00016b 00 DCB 0 + |L23.364| +00016c 5b25735d DCB "[%s] (%04d) PWR_DEEP_SLEEP_MODE\n",0 +000170 20282530 +000174 34642920 +000178 5057525f +00017c 44454550 +000180 5f534c45 +000184 45505f4d +000188 4f44450a +00018c 00 +00018d 00 DCB 0 +00018e 00 DCB 0 +00018f 00 DCB 0 + + AREA ||i.app_tx_panel_reset||, CODE, READONLY, ALIGN=1 + + app_tx_panel_reset PROC +;;;638 */ +;;;639 static void app_tx_panel_reset(void) +000000 b510 PUSH {r4,lr} +;;;640 { +;;;641 #if SHARE_FLASH_ENABLE +;;;642 hal_flash_share_mode(true); +;;;643 #endif +;;;644 hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); +000002 2101 MOVS r1,#1 +000004 2007 MOVS r0,#7 +000006 f7fffffe BL hal_gpio_set_output_data +;;;645 delayMs(10); +00000a 200a MOVS r0,#0xa +00000c f7fffffe BL delayMs +;;;646 hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_LOW); +000010 2100 MOVS r1,#0 +000012 2007 MOVS r0,#7 +000014 f7fffffe BL hal_gpio_set_output_data +;;;647 delayMs(10); +000018 200a MOVS r0,#0xa +00001a f7fffffe BL delayMs +;;;648 hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); +00001e 2101 MOVS r1,#1 +000020 2007 MOVS r0,#7 +000022 f7fffffe BL hal_gpio_set_output_data +;;;649 delayMs(40); +000026 2028 MOVS r0,#0x28 +000028 f7fffffe BL delayMs +;;;650 } +00002c bd10 POP {r4,pc} +;;;651 + ENDP + + + AREA ||i.google_p8p_demo||, CODE, READONLY, ALIGN=2 + + google_p8p_demo PROC +;;;1959 */ +;;;1960 void google_p8p_demo(void) +000000 2002 MOVS r0,#2 +;;;1961 { +;;;1962 // hal_gpio_set_high_impedance(IO_PIN_14); +;;;1963 // TAU_LOGD("p6p demo reset flag=%d \n", hal_pwr_get_reset_flag()); +;;;1964 +;;;1965 /* 电源选择,上电只需要选择一次 */ +;;;1966 hal_pwr_set_main_power(MAIN_POWER_SELECT); /* 切换供电*/ +000002 f7fffffe BL hal_pwr_set_main_power +;;;1967 // if (MAIN_POWER_SELECT == PWR_SEL_VCC) +;;;1968 // { +;;;1969 // while (hal_pwr_get_vcc_power_ready() == false); +;;;1970 // } +;;;1971 /* 显示模块初始 */ +;;;1972 app_display_init(); +000006 f7fffffe BL app_display_init +;;;1973 +;;;1974 /* touch 相关模块初始化 */ +;;;1975 #if TOUCH_ENABLE +;;;1976 /* TP 初始化 */ +;;;1977 app_tp_init(); +;;;1978 app_tp_phone_clear_reset_on(); +;;;1979 /* 与屏的TP 模块通讯并初始化 */ +;;;1980 app_tp_transfer_screen_start(); +;;;1981 #endif +;;;1982 +;;;1983 TAU_LOGD("p8p demo init done \n"); +00000a bf00 NOP +00000c 4b08 LDR r3,|L25.48| +00000e a209 ADR r2,|L25.52| +000010 a109 ADR r1,|L25.56| +000012 2000 MOVS r0,#0 +000014 f7fffffe BL tau_log_printf +000018 bf00 NOP +;;;1984 +;;;1985 while (1) +00001a e008 B |L25.46| + |L25.28| +;;;1986 { +;;;1987 +;;;1988 ///hal_dsi_tx_ctrl_set_vpg(1, TX_VPG_H_COLOR, true); +;;;1989 #if TOUCH_ENABLE +;;;1990 /* 等待屏TP中断上报做TP协议转换,注意接口实现不可阻塞!否则会影响sleep mode */ +;;;1991 app_tp_transfer_screen_int(); +;;;1992 #endif +;;;1993 /* DCS 命令异步处理 */ +;;;1994 while (hal_dsi_rx_ctrl_dcs_async_handler(g_rx_ctrl_handle)); +00001c bf00 NOP + |L25.30| +00001e 480f LDR r0,|L25.92| +000020 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000022 f7fffffe BL hal_dsi_rx_ctrl_dcs_async_handler +000026 2800 CMP r0,#0 +000028 d1f9 BNE |L25.30| +;;;1995 +;;;1996 /* 系统事件处理(sleep mode) */ +;;;1997 app_system_process(); +00002a f7fffffe BL app_system_process + |L25.46| +00002e e7f5 B |L25.28| +;;;1998 } +;;;1999 } +;;;2000 #endif + ENDP + + |L25.48| + DCD 0x000007bf + |L25.52| +000034 70387000 DCB "p8p",0 + |L25.56| +000038 5b25735d DCB "[%s] (%04d) p8p demo init done \n",0 +00003c 20282530 +000040 34642920 +000044 70387020 +000048 64656d6f +00004c 20696e69 +000050 7420646f +000054 6e65200a +000058 00 +000059 00 DCB 0 +00005a 00 DCB 0 +00005b 00 DCB 0 + |L25.92| + DCD g_rx_ctrl_handle + + AREA ||i.pps_update_handle||, CODE, READONLY, ALIGN=2 + + pps_update_handle PROC +;;;263 /* PPS update callback 用于分辨率切换case */ +;;;264 static bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height) +000000 b5f8 PUSH {r3-r7,lr} +;;;265 { +000002 4606 MOV r6,r0 +000004 460f MOV r7,r1 +000006 4614 MOV r4,r2 +000008 461d MOV r5,r3 +;;;266 // for (uint8_t i =0; i< 128; i++) +;;;267 // { +;;;268 // TAU_LOGD("PPS_0A[i]=[0x%02X]\n",i,pps[i]); +;;;269 // } +;;;270 +;;;271 /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ +;;;272 // hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +;;;273 if (pic_width != g_rx_ctrl_handle->base_info.src_w || pic_height != g_rx_ctrl_handle->base_info.src_h) +00000a 4819 LDR r0,|L26.112| +00000c 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00000e 6800 LDR r0,[r0,#0] +000010 42a0 CMP r0,r4 +000012 d104 BNE |L26.30| +000014 4816 LDR r0,|L26.112| +000016 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000018 6840 LDR r0,[r0,#4] +00001a 42a8 CMP r0,r5 +00001c d020 BEQ |L26.96| + |L26.30| +;;;274 { +;;;275 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); +00001e 2101 MOVS r1,#1 +000020 4814 LDR r0,|L26.116| +000022 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000024 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +;;;276 /* PPS Update 且分辨率发生变化 */ +;;;277 g_rx_ctrl_handle->base_info.src_w = pic_width; +000028 4811 LDR r0,|L26.112| +00002a 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00002c 6004 STR r4,[r0,#0] +;;;278 g_rx_ctrl_handle->base_info.src_h = pic_height; +00002e 4810 LDR r0,|L26.112| +000030 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +000032 6045 STR r5,[r0,#4] +;;;279 /* 注意部分基板更新PPS前不发 Compression Mode Command的情况 */ +;;;280 g_rx_ctrl_handle->compress_en = true; +000034 2101 MOVS r1,#1 +000036 480e LDR r0,|L26.112| +000038 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00003a 3020 ADDS r0,r0,#0x20 +00003c 7541 STRB r1,[r0,#0x15] +;;;281 g_resolution_change = true; +00003e 2001 MOVS r0,#1 +000040 490d LDR r1,|L26.120| +000042 7008 STRB r0,[r1,#0] +;;;282 if(pic_width > 720) +000044 202d MOVS r0,#0x2d +000046 0100 LSLS r0,r0,#4 +000048 4284 CMP r4,r0 +00004a d905 BLS |L26.88| +;;;283 { +;;;284 g_tx_ctrl_handle->base_info.src_w = pic_width; +00004c 4809 LDR r0,|L26.116| +00004e 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000050 6004 STR r4,[r0,#0] +;;;285 g_tx_ctrl_handle->base_info.src_h = pic_height; +000052 4808 LDR r0,|L26.116| +000054 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000056 6045 STR r5,[r0,#4] + |L26.88| +;;;286 } +;;;287 // hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x22); // ic刷黑处理 +;;;288 // delayMs(5); +;;;289 +;;;290 // hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); +;;;291 hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); +000058 4805 LDR r0,|L26.112| +00005a 6800 LDR r0,[r0,#0] ; g_rx_ctrl_handle +00005c f7fffffe BL hal_dsi_rx_ctrl_toggle_resolution + |L26.96| +;;;292 // hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x13); // 退出刷黑 +;;;293 } +;;;294 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +000060 2100 MOVS r1,#0 +000062 4804 LDR r0,|L26.116| +000064 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000066 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +;;;295 //TAU_LOGD("PPS Update[%d][%d] [%d][%d]\n", pic_width, pic_height, g_rx_ctrl_handle->base_info.src_w, g_rx_ctrl_handle->base_info.src_h); +;;;296 return true; +00006a 2001 MOVS r0,#1 +;;;297 } +00006c bdf8 POP {r3-r7,pc} +;;;298 #endif + ENDP + +00006e 0000 DCW 0x0000 + |L26.112| + DCD g_rx_ctrl_handle + |L26.116| + DCD g_tx_ctrl_handle + |L26.120| + DCD g_resolution_change + + AREA ||i.send_panel_init_code||, CODE, READONLY, ALIGN=1 + + send_panel_init_code PROC +;;;652 #if PANEL_INIT_CODE_ARRAY +;;;653 static void send_panel_init_code(uint32_t size, uint8_t * data) +000000 b5fe PUSH {r1-r7,lr} +;;;654 { +000002 4607 MOV r7,r0 +000004 460d MOV r5,r1 +;;;655 uint32_t data_offeset = 0; +000006 2400 MOVS r4,#0 +;;;656 uint8_t data_type; +;;;657 uint8_t vc; +;;;658 uint8_t data_size; +;;;659 uint8_t * p_data; +;;;660 +;;;661 while(data_offeset < size) +000008 e014 B |L27.52| + |L27.10| +;;;662 { +;;;663 data_type = data[data_offeset]; +00000a 5d28 LDRB r0,[r5,r4] +00000c 9002 STR r0,[sp,#8] +;;;664 vc = data[data_offeset + 1]; +00000e 1c60 ADDS r0,r4,#1 +000010 5c28 LDRB r0,[r5,r0] +000012 9001 STR r0,[sp,#4] +;;;665 data_size = data[data_offeset + 2]; +000014 1ca0 ADDS r0,r4,#2 +000016 5c2e LDRB r6,[r5,r0] +;;;666 p_data = &data[data_offeset + 3]; +000018 1ce0 ADDS r0,r4,#3 +00001a 1828 ADDS r0,r5,r0 +00001c 9000 STR r0,[sp,#0] +;;;667 hal_dsi_tx_ctrl_write_array_cmd(data_type, vc, data_size, p_data); +00001e 4632 MOV r2,r6 +000020 9b00 LDR r3,[sp,#0] +000022 9901 LDR r1,[sp,#4] +000024 9802 LDR r0,[sp,#8] +000026 f7fffffe BL hal_dsi_tx_ctrl_write_array_cmd +;;;668 data_offeset = data_offeset + data_size + 3; +00002a 19a0 ADDS r0,r4,r6 +00002c 1cc4 ADDS r4,r0,#3 +;;;669 delayUs(50); +00002e 2032 MOVS r0,#0x32 +000030 f7fffffe BL delayUs + |L27.52| +000034 42bc CMP r4,r7 ;661 +000036 d3e8 BCC |L27.10| +;;;670 } +;;;671 } +000038 bdfe POP {r1-r7,pc} +;;;672 + ENDP + + + AREA ||i.soft_te_timer_cb||, CODE, READONLY, ALIGN=2 + + soft_te_timer_cb PROC +;;;541 #define TE_TIMER TIMER_NUM2 +;;;542 static void soft_te_timer_cb(void *data) +000000 b510 PUSH {r4,lr} +;;;543 { +000002 4604 MOV r4,r0 +;;;544 /* +;;;545 S8 的屏接的是TP1.8V, AC 启动后需要等到TP1.8 起来后再初始化屏, 所以在TP 起来前需要通过软件产生TE给手机,避免手机卡死 +;;;546 */ +;;;547 // if (panel_display_done == false) +;;;548 // { +;;;549 hal_dsi_tx_ctrl_gen_a_tear_signal(); +000004 f7fffffe BL hal_dsi_tx_ctrl_gen_a_tear_signal +;;;550 hal_timer_start(TE_TIMER, 8, soft_te_timer_cb, NULL); +000008 2300 MOVS r3,#0 +00000a 4a03 LDR r2,|L28.24| +00000c 2108 MOVS r1,#8 +00000e 2002 MOVS r0,#2 +000010 f7fffffe BL hal_timer_start +;;;551 // } +;;;552 // else +;;;553 // { +;;;554 // hal_dsi_rx_ctrl_set_hw_tear_mode(g_rx_ctrl_handle); +;;;555 // } +;;;556 } +000014 bd10 POP {r4,pc} +;;;557 + ENDP + +000016 0000 DCW 0x0000 + |L28.24| + DCD soft_te_timer_cb + + AREA ||i.soft_te_timer_init||, CODE, READONLY, ALIGN=2 + + soft_te_timer_init PROC +;;;557 +;;;558 static void soft_te_timer_init() +000000 b510 PUSH {r4,lr} +;;;559 { +;;;560 // TAU_LOGD("soft_te_timer_init"); +;;;561 hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); +000002 2101 MOVS r1,#1 +000004 4806 LDR r0,|L29.32| +000006 6800 LDR r0,[r0,#0] ; g_tx_ctrl_handle +000008 f7fffffe BL hal_dsi_tx_ctrl_set_tear_mode +;;;562 hal_timer_init(TE_TIMER); +00000c 2002 MOVS r0,#2 +00000e f7fffffe BL hal_timer_init +;;;563 hal_timer_start(TE_TIMER, 1, soft_te_timer_cb, NULL); +000012 2300 MOVS r3,#0 +000014 4a03 LDR r2,|L29.36| +000016 2101 MOVS r1,#1 +000018 2002 MOVS r0,#2 +00001a f7fffffe BL hal_timer_start +;;;564 } +00001e bd10 POP {r4,pc} +;;;565 + ENDP + + |L29.32| + DCD g_tx_ctrl_handle + |L29.36| + DCD soft_te_timer_cb + + AREA ||.constdata||, DATA, READONLY, ALIGN=2 + + g_cus_rx_dcs_execute_table + DCD 0x00000029 + DCD ap_dcs_set_display_on +000008 00000000 DCB 0x00,0x00,0x00,0x00 + DCD 0x00000028 + DCD ap_dcs_set_display_off +000014 01000000 DCB 0x01,0x00,0x00,0x00 + DCD 0x00000051 + DCD ap_dcs_set_backlight +000020 00000000 DCB 0x00,0x00,0x00,0x00 + DCD 0x00000053 + DCD ap_set_FPS_53 +00002c 01000000 DCB 0x01,0x00,0x00,0x00 + DCD 0x00000010 + DCD ap_dcs_set_enter_sleep_mode +000038 01000000 DCB 0x01,0x00,0x00,0x00 + DCD 0x00000011 + DCD ap_dcs_set_exit_sleep_mode +000044 01000000 DCB 0x01,0x00,0x00,0x00 + DCD 0x00000060 + DCD ap_dcs_set_frame_change +000050 01000000 DCB 0x01,0x00,0x00,0x00 + DCD 0x00000000 + DCD 0x00000000 +00005c 00000000 DCB 0x00,0x00,0x00,0x00 + panel_init_code +000060 3900039c DCB 0x39,0x00,0x03,0x9c +000064 a5a53900 DCB 0xa5,0xa5,0x39,0x00 +000068 03fd5a5a DCB 0x03,0xfd,0x5a,0x5a +00006c 3900029f DCB 0x39,0x00,0x02,0x9f +000070 0f390002 DCB 0x0f,0x39,0x00,0x02 +000074 b3003900 DCB 0xb3,0x00,0x39,0x00 +000078 02d71139 DCB 0x02,0xd7,0x11,0x39 +00007c 00029f01 DCB 0x00,0x02,0x9f,0x01 +000080 390004b2 DCB 0x39,0x00,0x04,0xb2 +000084 5a04af39 DCB 0x5a,0x04,0xaf,0x39 +000088 0024b300 DCB 0x00,0x24,0xb3,0x00 +00008c ba00140c DCB 0xba,0x00,0x14,0x0c +000090 2200ba30 DCB 0x22,0x00,0xba,0x30 +000094 142c0000 DCB 0x14,0x2c,0x00,0x00 +000098 ba90144c DCB 0xba,0x90,0x14,0x4c +00009c 00000000 DCB 0x00,0x00,0x00,0x00 +0000a0 00000000 DCB 0x00,0x00,0x00,0x00 +0000a4 ba00140c DCB 0xba,0x00,0x14,0x0c +0000a8 441c1c1c DCB 0x44,0x1c,0x1c,0x1c +0000ac 1c1c3900 DCB 0x1c,0x1c,0x39,0x00 +0000b0 13cd061f DCB 0x13,0xcd,0x06,0x1f +0000b4 1f060009 DCB 0x1f,0x06,0x00,0x09 +0000b8 00961f03 DCB 0x00,0x96,0x1f,0x03 +0000bc 2800961f DCB 0x28,0x00,0x96,0x1f +0000c0 09460096 DCB 0x09,0x46,0x00,0x96 +0000c4 390002d0 DCB 0x39,0x00,0x02,0xd0 +0000c8 01390003 DCB 0x01,0x39,0x00,0x03 +0000cc e2462039 DCB 0xe2,0x46,0x20,0x39 +0000d0 0003ea04 DCB 0x00,0x03,0xea,0x04 +0000d4 0b390009 DCB 0x0b,0x39,0x00,0x09 +0000d8 ee403828 DCB 0xee,0x40,0x38,0x28 +0000dc 28282828 DCB 0x28,0x28,0x28,0x28 +0000e0 c2390002 DCB 0xc2,0x39,0x00,0x02 +0000e4 9f023900 DCB 0x9f,0x02,0x39,0x00 +0000e8 1ab200c9 DCB 0x1a,0xb2,0x00,0xc9 +0000ec 32101112 DCB 0x32,0x10,0x11,0x12 +0000f0 12000878 DCB 0x12,0x00,0x08,0x78 +0000f4 21111413 DCB 0x21,0x11,0x14,0x13 +0000f8 11111111 DCB 0x11,0x11,0x11,0x11 +0000fc 11111121 DCB 0x11,0x11,0x11,0x21 +000100 21111a39 DCB 0x21,0x11,0x1a,0x39 +000104 000eb400 DCB 0x00,0x0e,0xb4,0x00 +000108 008c0000 DCB 0x00,0x8c,0x00,0x00 +00010c 00000025 DCB 0x00,0x00,0x00,0x25 +000110 25252525 DCB 0x25,0x25,0x25,0x25 +000114 390007b5 DCB 0x39,0x00,0x07,0xb5 +000118 00303030 DCB 0x00,0x30,0x30,0x30 +00011c 302a3900 DCB 0x30,0x2a,0x39,0x00 +000120 14b60500 DCB 0x14,0xb6,0x05,0x00 +000124 00111111 DCB 0x00,0x11,0x11,0x11 +000128 1c081c21 DCB 0x1c,0x08,0x1c,0x21 +00012c 21212121 DCB 0x21,0x21,0x21,0x21 +000130 21212121 DCB 0x21,0x21,0x21,0x21 +000134 21390011 DCB 0x21,0x39,0x00,0x11 +000138 b7000000 DCB 0xb7,0x00,0x00,0x00 +00013c 00001500 DCB 0x00,0x00,0x15,0x00 +000140 06060306 DCB 0x06,0x06,0x03,0x06 +000144 06030606 DCB 0x06,0x03,0x06,0x06 +000148 0339000e DCB 0x03,0x39,0x00,0x0e +00014c b8000000 DCB 0xb8,0x00,0x00,0x00 +000150 73287328 DCB 0x73,0x28,0x73,0x28 +000154 73287328 DCB 0x73,0x28,0x73,0x28 +000158 73283900 DCB 0x73,0x28,0x39,0x00 +00015c 09b90000 DCB 0x09,0xb9,0x00,0x00 +000160 5000000f DCB 0x50,0x00,0x00,0x0f +000164 0f003900 DCB 0x0f,0x00,0x39,0x00 +000168 0eba0eff DCB 0x0e,0xba,0x0e,0xff +00016c ffff0054 DCB 0xff,0xff,0x00,0x54 +000170 00440444 DCB 0x00,0x44,0x04,0x44 +000174 04040039 DCB 0x04,0x04,0x00,0x39 +000178 001abb00 DCB 0x00,0x1a,0xbb,0x00 +00017c 5a91915a DCB 0x5a,0x91,0x91,0x5a +000180 005a9191 DCB 0x00,0x5a,0x91,0x91 +000184 5a005a91 DCB 0x5a,0x00,0x5a,0x91 +000188 915a005a DCB 0x91,0x5a,0x00,0x5a +00018c 91915a00 DCB 0x91,0x91,0x5a,0x00 +000190 3c78783c DCB 0x3c,0x78,0x78,0x3c +000194 390005be DCB 0x39,0x00,0x05,0xbe +000198 5b17045b DCB 0x5b,0x17,0x04,0x5b +00019c 390011bf DCB 0x39,0x00,0x11,0xbf +0001a0 0c8fff10 DCB 0x0c,0x8f,0xff,0x10 +0001a4 0007000a DCB 0x00,0x07,0x00,0x0a +0001a8 01200000 DCB 0x01,0x20,0x00,0x00 +0001ac 00000000 DCB 0x00,0x00,0x00,0x00 +0001b0 390011c1 DCB 0x39,0x00,0x11,0xc1 +0001b4 0521221d DCB 0x05,0x21,0x22,0x1d +0001b8 1f1e2001 DCB 0x1f,0x1e,0x20,0x01 +0001bc 30313233 DCB 0x30,0x31,0x32,0x33 +0001c0 3d3d3d3d DCB 0x3d,0x3d,0x3d,0x3d +0001c4 390011c2 DCB 0x39,0x00,0x11,0xc2 +0001c8 0521221d DCB 0x05,0x21,0x22,0x1d +0001cc 1f1e2001 DCB 0x1f,0x1e,0x20,0x01 +0001d0 30313233 DCB 0x30,0x31,0x32,0x33 +0001d4 3d3d3d3d DCB 0x3d,0x3d,0x3d,0x3d +0001d8 39000ac3 DCB 0x39,0x00,0x0a,0xc3 +0001dc 11600040 DCB 0x11,0x60,0x00,0x40 +0001e0 00400000 DCB 0x00,0x40,0x00,0x00 +0001e4 0039001a DCB 0x00,0x39,0x00,0x1a +0001e8 c4000c01 DCB 0xc4,0x00,0x0c,0x01 +0001ec 00000000 DCB 0x00,0x00,0x00,0x00 +0001f0 00000000 DCB 0x00,0x00,0x00,0x00 +0001f4 00000008 DCB 0x00,0x00,0x00,0x08 +0001f8 001f1f00 DCB 0x00,0x1f,0x1f,0x00 +0001fc 000d0000 DCB 0x00,0x0d,0x00,0x00 +000200 00003900 DCB 0x00,0x00,0x39,0x00 +000204 11d20000 DCB 0x11,0xd2,0x00,0x00 +000208 13000013 DCB 0x13,0x00,0x00,0x13 +00020c 00001700 DCB 0x00,0x00,0x17,0x00 +000210 00170000 DCB 0x00,0x17,0x00,0x00 +000214 17003900 DCB 0x17,0x00,0x39,0x00 +000218 0ec70004 DCB 0x0e,0xc7,0x00,0x04 +00021c 04040400 DCB 0x04,0x04,0x04,0x00 +000220 04040404 DCB 0x04,0x04,0x04,0x04 +000224 00040439 DCB 0x00,0x04,0x04,0x39 +000228 000ec800 DCB 0x00,0x0e,0xc8,0x00 +00022c b1b1b1b1 DCB 0xb1,0xb1,0xb1,0xb1 +000230 00b1b1b1 DCB 0x00,0xb1,0xb1,0xb1 +000234 b100b1b1 DCB 0xb1,0x00,0xb1,0xb1 +000238 39001bc6 DCB 0x39,0x00,0x1b,0xc6 +00023c 00000f00 DCB 0x00,0x00,0x0f,0x00 +000240 00110000 DCB 0x00,0x11,0x00,0x00 +000244 00900000 DCB 0x00,0x90,0x00,0x00 +000248 00000800 DCB 0x00,0x00,0x08,0x00 +00024c 02000000 DCB 0x02,0x00,0x00,0x00 +000250 00005501 DCB 0x00,0x00,0x55,0x01 +000254 01003900 DCB 0x01,0x00,0x39,0x00 +000258 1bcb0000 DCB 0x1b,0xcb,0x00,0x00 +00025c 00000000 DCB 0x00,0x00,0x00,0x00 +000260 00000000 DCB 0x00,0x00,0x00,0x00 +000264 00000000 DCB 0x00,0x00,0x00,0x00 +000268 90929092 DCB 0x90,0x92,0x90,0x92 +00026c 00909290 DCB 0x00,0x90,0x92,0x90 +000270 92009092 DCB 0x92,0x00,0x90,0x92 +000274 39001bcc DCB 0x39,0x00,0x1b,0xcc +000278 0076ff76 DCB 0x00,0x76,0xff,0x76 +00027c ff0076ff DCB 0xff,0x00,0x76,0xff +000280 76ff0076 DCB 0x76,0xff,0x00,0x76 +000284 ff000000 DCB 0xff,0x00,0x00,0x00 +000288 00000000 DCB 0x00,0x00,0x00,0x00 +00028c 00000000 DCB 0x00,0x00,0x00,0x00 +000290 00003900 DCB 0x00,0x00,0x39,0x00 +000294 13d74dc3 DCB 0x13,0xd7,0x4d,0xc3 +000298 207a3300 DCB 0x20,0x7a,0x33,0x00 +00029c 020200f7 DCB 0x02,0x02,0x00,0xf7 +0002a0 f7f4a9a9 DCB 0xf7,0xf4,0xa9,0xa9 +0002a4 aef00000 DCB 0xae,0xf0,0x00,0x00 +0002a8 390029d8 DCB 0x39,0x00,0x29,0xd8 +0002ac 00047622 DCB 0x00,0x04,0x76,0x22 +0002b0 ff000476 DCB 0xff,0x00,0x04,0x76 +0002b4 22ff0004 DCB 0x22,0xff,0x00,0x04 +0002b8 7622ff00 DCB 0x76,0x22,0xff,0x00 +0002bc 047622ff DCB 0x04,0x76,0x22,0xff +0002c0 00047622 DCB 0x00,0x04,0x76,0x22 +0002c4 ff9076ff DCB 0xff,0x90,0x76,0xff +0002c8 9076ff90 DCB 0x90,0x76,0xff,0x90 +0002cc 76ff9076 DCB 0x76,0xff,0x90,0x76 +0002d0 ff9076ff DCB 0xff,0x90,0x76,0xff +0002d4 39000cd9 DCB 0x39,0x00,0x0c,0xd9 +0002d8 10401000 DCB 0x10,0x40,0x10,0x00 +0002dc 10001000 DCB 0x10,0x00,0x10,0x00 +0002e0 10001039 DCB 0x10,0x00,0x10,0x39 +0002e4 0004e000 DCB 0x00,0x04,0xe0,0x00 +0002e8 00603900 DCB 0x00,0x60,0x39,0x00 +0002ec 06e14300 DCB 0x06,0xe1,0x43,0x00 +0002f0 11600d39 DCB 0x11,0x60,0x0d,0x39 +0002f4 0033e215 DCB 0x00,0x33,0xe2,0x15 +0002f8 00394224 DCB 0x00,0x39,0x42,0x24 +0002fc 15003942 DCB 0x15,0x00,0x39,0x42 +000300 24150039 DCB 0x24,0x15,0x00,0x39 +000304 42241500 DCB 0x42,0x24,0x15,0x00 +000308 39422415 DCB 0x39,0x42,0x24,0x15 +00030c 00394224 DCB 0x00,0x39,0x42,0x24 +000310 15003942 DCB 0x15,0x00,0x39,0x42 +000314 24150039 DCB 0x24,0x15,0x00,0x39 +000318 42241500 DCB 0x42,0x24,0x15,0x00 +00031c 39422415 DCB 0x39,0x42,0x24,0x15 +000320 00394224 DCB 0x00,0x39,0x42,0x24 +000324 15003942 DCB 0x15,0x00,0x39,0x42 +000328 24390004 DCB 0x24,0x39,0x00,0x04 +00032c ed000180 DCB 0xed,0x00,0x01,0x80 +000330 390012ee DCB 0x39,0x00,0x12,0xee +000334 04000000 DCB 0x04,0x00,0x00,0x00 +000338 00000000 DCB 0x00,0x00,0x00,0x00 +00033c 00308888 DCB 0x00,0x30,0x88,0x88 +000340 29000000 DCB 0x29,0x00,0x00,0x00 +000344 00390006 DCB 0x00,0x39,0x00,0x06 +000348 ef008588 DCB 0xef,0x00,0x85,0x88 +00034c 87873900 DCB 0x87,0x87,0x39,0x00 +000350 029f0339 DCB 0x02,0x9f,0x03,0x39 +000354 0021b211 DCB 0x00,0x21,0xb2,0x11 +000358 00008930 DCB 0x00,0x00,0x89,0x30 +00035c 80096004 DCB 0x80,0x09,0x60,0x04 +000360 38000c02 DCB 0x38,0x00,0x0c,0x02 +000364 1c021c02 DCB 0x1c,0x02,0x1c,0x02 +000368 00020e00 DCB 0x00,0x02,0x0e,0x00 +00036c 20011f00 DCB 0x20,0x01,0x1f,0x00 +000370 07000c08 DCB 0x07,0x00,0x0c,0x08 +000374 bb087a39 DCB 0xbb,0x08,0x7a,0x39 +000378 0021b318 DCB 0x00,0x21,0xb3,0x18 +00037c 0010f003 DCB 0x00,0x10,0xf0,0x03 +000380 0c200006 DCB 0x0c,0x20,0x00,0x06 +000384 0b0b330e DCB 0x0b,0x0b,0x33,0x0e +000388 1c2a3846 DCB 0x1c,0x2a,0x38,0x46 +00038c 54626970 DCB 0x54,0x62,0x69,0x70 +000390 77797b7d DCB 0x77,0x79,0x7b,0x7d +000394 7e010201 DCB 0x7e,0x01,0x02,0x01 +000398 00094039 DCB 0x00,0x09,0x40,0x39 +00039c 0019b409 DCB 0x00,0x19,0xb4,0x09 +0003a0 be19fc19 DCB 0xbe,0x19,0xfc,0x19 +0003a4 fa19f81a DCB 0xfa,0x19,0xf8,0x1a +0003a8 381a781a DCB 0x38,0x1a,0x78,0x1a +0003ac b62af62b DCB 0xb6,0x2a,0xf6,0x2b +0003b0 342b743b DCB 0x34,0x2b,0x74,0x3b +0003b4 746bf439 DCB 0x74,0x6b,0xf4,0x39 +0003b8 0002c011 DCB 0x00,0x02,0xc0,0x11 +0003bc 390002c1 DCB 0x39,0x00,0x02,0xc1 +0003c0 82390003 DCB 0x82,0x39,0x00,0x03 +0003c4 c200c039 DCB 0xc2,0x00,0xc0,0x39 +0003c8 0006c611 DCB 0x00,0x06,0xc6,0x11 +0003cc 00000101 DCB 0x00,0x00,0x01,0x01 +0003d0 390002e2 DCB 0x39,0x00,0x02,0xe2 +0003d4 01390002 DCB 0x01,0x39,0x00,0x02 +0003d8 9f043900 DCB 0x9f,0x04,0x39,0x00 +0003dc 04b20180 DCB 0x04,0xb2,0x01,0x80 +0003e0 00390013 DCB 0x00,0x39,0x00,0x13 +0003e4 b3000010 DCB 0xb3,0x00,0x00,0x10 +0003e8 00305000 DCB 0x00,0x30,0x50,0x00 +0003ec 70b000d0 DCB 0x70,0xb0,0x00,0xd0 +0003f0 f0113070 DCB 0xf0,0x11,0x30,0x70 +0003f4 12f07039 DCB 0x12,0xf0,0x70,0x39 +0003f8 0015b423 DCB 0x00,0x15,0xb4,0x23 +0003fc f07034f0 DCB 0xf0,0x70,0x34,0xf0 +000400 f067f0f0 DCB 0xf0,0x67,0xf0,0xf0 +000404 8af0f0cd DCB 0x8a,0xf0,0xf0,0xcd +000408 f0f0eff0 DCB 0xf0,0xf0,0xef,0xf0 +00040c f00fff39 DCB 0xf0,0x0f,0xff,0x39 +000410 0008b601 DCB 0x00,0x08,0xb6,0x01 +000414 20000ff0 DCB 0x20,0x00,0x0f,0xf0 +000418 10063900 DCB 0x10,0x06,0x39,0x00 +00041c 03b991c1 DCB 0x03,0xb9,0x91,0xc1 +000420 390003ba DCB 0x39,0x00,0x03,0xba +000424 01003900 DCB 0x01,0x00,0x39,0x00 +000428 0abb0000 DCB 0x0a,0xbb,0x00,0x00 +00042c 08000000 DCB 0x08,0x00,0x00,0x00 +000430 f2000039 DCB 0xf2,0x00,0x00,0x39 +000434 0029c10f DCB 0x00,0x29,0xc1,0x0f +000438 ff07ff03 DCB 0xff,0x07,0xff,0x03 +00043c 33014701 DCB 0x33,0x01,0x47,0x01 +000440 4600cd00 DCB 0x46,0x00,0xcd,0x00 +000444 66003a00 DCB 0x66,0x00,0x3a,0x00 +000448 14000800 DCB 0x14,0x00,0x08,0x00 +00044c 00000000 DCB 0x00,0x00,0x00,0x00 +000450 00000000 DCB 0x00,0x00,0x00,0x00 +000454 00000000 DCB 0x00,0x00,0x00,0x00 +000458 00000000 DCB 0x00,0x00,0x00,0x00 +00045c 00000039 DCB 0x00,0x00,0x00,0x39 +000460 0015c203 DCB 0x00,0x15,0xc2,0x03 +000464 ff01ff00 DCB 0xff,0x01,0xff,0x00 +000468 00000003 DCB 0x00,0x00,0x00,0x03 +00046c ff01ff00 DCB 0xff,0x01,0xff,0x00 +000470 00000003 DCB 0x00,0x00,0x00,0x03 +000474 ff01ff39 DCB 0xff,0x01,0xff,0x39 +000478 0004c300 DCB 0x00,0x04,0xc3,0x00 +00047c 08b83900 DCB 0x08,0xb8,0x39,0x00 +000480 14c50020 DCB 0x14,0xc5,0x00,0x20 +000484 8841cf4f DCB 0x88,0x41,0xcf,0x4f +000488 4f004853 DCB 0x4f,0x00,0x48,0x53 +00048c 2921282a DCB 0x29,0x21,0x28,0x2a +000490 052f0020 DCB 0x05,0x2f,0x00,0x20 +000494 0f390025 DCB 0x0f,0x39,0x00,0x25 +000498 c64b0090 DCB 0xc6,0x4b,0x00,0x90 +00049c 0002d500 DCB 0x00,0x02,0xd5,0x00 +0004a0 02cb0110 DCB 0x02,0xcb,0x01,0x10 +0004a4 43000a00 DCB 0x43,0x00,0x0a,0x00 +0004a8 00000000 DCB 0x00,0x00,0x00,0x00 +0004ac 00000000 DCB 0x00,0x00,0x00,0x00 +0004b0 00000000 DCB 0x00,0x00,0x00,0x00 +0004b4 00000000 DCB 0x00,0x00,0x00,0x00 +0004b8 00000000 DCB 0x00,0x00,0x00,0x00 +0004bc 00390005 DCB 0x00,0x39,0x00,0x05 +0004c0 c8484853 DCB 0xc8,0x48,0x48,0x53 +0004c4 53390003 DCB 0x53,0x39,0x00,0x03 +0004c8 c9888839 DCB 0xc9,0x88,0x88,0x39 +0004cc 0029cc19 DCB 0x00,0x29,0xcc,0x19 +0004d0 19191919 DCB 0x19,0x19,0x19,0x19 +0004d4 19191919 DCB 0x19,0x19,0x19,0x19 +0004d8 19191919 DCB 0x19,0x19,0x19,0x19 +0004dc 19191919 DCB 0x19,0x19,0x19,0x19 +0004e0 19191919 DCB 0x19,0x19,0x19,0x19 +0004e4 19191919 DCB 0x19,0x19,0x19,0x19 +0004e8 19191919 DCB 0x19,0x19,0x19,0x19 +0004ec 19191919 DCB 0x19,0x19,0x19,0x19 +0004f0 19191919 DCB 0x19,0x19,0x19,0x19 +0004f4 19191939 DCB 0x19,0x19,0x19,0x39 +0004f8 0033cd19 DCB 0x00,0x33,0xcd,0x19 +0004fc 19191919 DCB 0x19,0x19,0x19,0x19 +000500 19191919 DCB 0x19,0x19,0x19,0x19 +000504 19191919 DCB 0x19,0x19,0x19,0x19 +000508 19191919 DCB 0x19,0x19,0x19,0x19 +00050c 19191919 DCB 0x19,0x19,0x19,0x19 +000510 19191919 DCB 0x19,0x19,0x19,0x19 +000514 19191919 DCB 0x19,0x19,0x19,0x19 +000518 19191919 DCB 0x19,0x19,0x19,0x19 +00051c 19191919 DCB 0x19,0x19,0x19,0x19 +000520 19191919 DCB 0x19,0x19,0x19,0x19 +000524 19191919 DCB 0x19,0x19,0x19,0x19 +000528 19191919 DCB 0x19,0x19,0x19,0x19 +00052c 19390029 DCB 0x19,0x39,0x00,0x29 +000530 ce191919 DCB 0xce,0x19,0x19,0x19 +000534 19191919 DCB 0x19,0x19,0x19,0x19 +000538 19191919 DCB 0x19,0x19,0x19,0x19 +00053c 19191919 DCB 0x19,0x19,0x19,0x19 +000540 19191919 DCB 0x19,0x19,0x19,0x19 +000544 19191919 DCB 0x19,0x19,0x19,0x19 +000548 19191919 DCB 0x19,0x19,0x19,0x19 +00054c 19191919 DCB 0x19,0x19,0x19,0x19 +000550 19191919 DCB 0x19,0x19,0x19,0x19 +000554 19191919 DCB 0x19,0x19,0x19,0x19 +000558 19390033 DCB 0x19,0x39,0x00,0x33 +00055c cf191919 DCB 0xcf,0x19,0x19,0x19 +000560 19191919 DCB 0x19,0x19,0x19,0x19 +000564 19191919 DCB 0x19,0x19,0x19,0x19 +000568 19191919 DCB 0x19,0x19,0x19,0x19 +00056c 19191919 DCB 0x19,0x19,0x19,0x19 +000570 19191919 DCB 0x19,0x19,0x19,0x19 +000574 19191919 DCB 0x19,0x19,0x19,0x19 +000578 19191919 DCB 0x19,0x19,0x19,0x19 +00057c 19191919 DCB 0x19,0x19,0x19,0x19 +000580 19191919 DCB 0x19,0x19,0x19,0x19 +000584 19191919 DCB 0x19,0x19,0x19,0x19 +000588 19191919 DCB 0x19,0x19,0x19,0x19 +00058c 19191939 DCB 0x19,0x19,0x19,0x39 +000590 0029d019 DCB 0x00,0x29,0xd0,0x19 +000594 19191919 DCB 0x19,0x19,0x19,0x19 +000598 19191919 DCB 0x19,0x19,0x19,0x19 +00059c 19191919 DCB 0x19,0x19,0x19,0x19 +0005a0 19191919 DCB 0x19,0x19,0x19,0x19 +0005a4 19191919 DCB 0x19,0x19,0x19,0x19 +0005a8 19191919 DCB 0x19,0x19,0x19,0x19 +0005ac 19191919 DCB 0x19,0x19,0x19,0x19 +0005b0 19191919 DCB 0x19,0x19,0x19,0x19 +0005b4 19191919 DCB 0x19,0x19,0x19,0x19 +0005b8 19191939 DCB 0x19,0x19,0x19,0x39 +0005bc 0033d119 DCB 0x00,0x33,0xd1,0x19 +0005c0 19191919 DCB 0x19,0x19,0x19,0x19 +0005c4 19191919 DCB 0x19,0x19,0x19,0x19 +0005c8 19191919 DCB 0x19,0x19,0x19,0x19 +0005cc 19191919 DCB 0x19,0x19,0x19,0x19 +0005d0 19191919 DCB 0x19,0x19,0x19,0x19 +0005d4 19191919 DCB 0x19,0x19,0x19,0x19 +0005d8 19191919 DCB 0x19,0x19,0x19,0x19 +0005dc 19191919 DCB 0x19,0x19,0x19,0x19 +0005e0 19191919 DCB 0x19,0x19,0x19,0x19 +0005e4 19191919 DCB 0x19,0x19,0x19,0x19 +0005e8 19191919 DCB 0x19,0x19,0x19,0x19 +0005ec 19191919 DCB 0x19,0x19,0x19,0x19 +0005f0 19390029 DCB 0x19,0x39,0x00,0x29 +0005f4 d2191919 DCB 0xd2,0x19,0x19,0x19 +0005f8 19191919 DCB 0x19,0x19,0x19,0x19 +0005fc 19191919 DCB 0x19,0x19,0x19,0x19 +000600 19191919 DCB 0x19,0x19,0x19,0x19 +000604 19191919 DCB 0x19,0x19,0x19,0x19 +000608 19191919 DCB 0x19,0x19,0x19,0x19 +00060c 19191919 DCB 0x19,0x19,0x19,0x19 +000610 19191919 DCB 0x19,0x19,0x19,0x19 +000614 19191919 DCB 0x19,0x19,0x19,0x19 +000618 19191919 DCB 0x19,0x19,0x19,0x19 +00061c 19390033 DCB 0x19,0x39,0x00,0x33 +000620 d3191919 DCB 0xd3,0x19,0x19,0x19 +000624 19191919 DCB 0x19,0x19,0x19,0x19 +000628 19191919 DCB 0x19,0x19,0x19,0x19 +00062c 19191919 DCB 0x19,0x19,0x19,0x19 +000630 19191919 DCB 0x19,0x19,0x19,0x19 +000634 19191919 DCB 0x19,0x19,0x19,0x19 +000638 19191919 DCB 0x19,0x19,0x19,0x19 +00063c 19191919 DCB 0x19,0x19,0x19,0x19 +000640 19191919 DCB 0x19,0x19,0x19,0x19 +000644 19191919 DCB 0x19,0x19,0x19,0x19 +000648 19191919 DCB 0x19,0x19,0x19,0x19 +00064c 19191919 DCB 0x19,0x19,0x19,0x19 +000650 19191939 DCB 0x19,0x19,0x19,0x39 +000654 0029d421 DCB 0x00,0x29,0xd4,0x21 +000658 21212121 DCB 0x21,0x21,0x21,0x21 +00065c 21212121 DCB 0x21,0x21,0x21,0x21 +000660 21212121 DCB 0x21,0x21,0x21,0x21 +000664 21212121 DCB 0x21,0x21,0x21,0x21 +000668 21212121 DCB 0x21,0x21,0x21,0x21 +00066c 21212121 DCB 0x21,0x21,0x21,0x21 +000670 21212121 DCB 0x21,0x21,0x21,0x21 +000674 21212121 DCB 0x21,0x21,0x21,0x21 +000678 21212121 DCB 0x21,0x21,0x21,0x21 +00067c 21212139 DCB 0x21,0x21,0x21,0x39 +000680 0033d521 DCB 0x00,0x33,0xd5,0x21 +000684 21212121 DCB 0x21,0x21,0x21,0x21 +000688 21212121 DCB 0x21,0x21,0x21,0x21 +00068c 21212121 DCB 0x21,0x21,0x21,0x21 +000690 21212121 DCB 0x21,0x21,0x21,0x21 +000694 21212121 DCB 0x21,0x21,0x21,0x21 +000698 21212121 DCB 0x21,0x21,0x21,0x21 +00069c 21212121 DCB 0x21,0x21,0x21,0x21 +0006a0 21212121 DCB 0x21,0x21,0x21,0x21 +0006a4 21212121 DCB 0x21,0x21,0x21,0x21 +0006a8 21212121 DCB 0x21,0x21,0x21,0x21 +0006ac 21212121 DCB 0x21,0x21,0x21,0x21 +0006b0 21212121 DCB 0x21,0x21,0x21,0x21 +0006b4 21390029 DCB 0x21,0x39,0x00,0x29 +0006b8 d6212121 DCB 0xd6,0x21,0x21,0x21 +0006bc 21212121 DCB 0x21,0x21,0x21,0x21 +0006c0 21212121 DCB 0x21,0x21,0x21,0x21 +0006c4 21212121 DCB 0x21,0x21,0x21,0x21 +0006c8 21212121 DCB 0x21,0x21,0x21,0x21 +0006cc 21212121 DCB 0x21,0x21,0x21,0x21 +0006d0 21212121 DCB 0x21,0x21,0x21,0x21 +0006d4 21212121 DCB 0x21,0x21,0x21,0x21 +0006d8 21212121 DCB 0x21,0x21,0x21,0x21 +0006dc 21212121 DCB 0x21,0x21,0x21,0x21 +0006e0 21390033 DCB 0x21,0x39,0x00,0x33 +0006e4 d7212121 DCB 0xd7,0x21,0x21,0x21 +0006e8 21212121 DCB 0x21,0x21,0x21,0x21 +0006ec 21212121 DCB 0x21,0x21,0x21,0x21 +0006f0 21212121 DCB 0x21,0x21,0x21,0x21 +0006f4 21212121 DCB 0x21,0x21,0x21,0x21 +0006f8 21212121 DCB 0x21,0x21,0x21,0x21 +0006fc 21212121 DCB 0x21,0x21,0x21,0x21 +000700 21212121 DCB 0x21,0x21,0x21,0x21 +000704 21212121 DCB 0x21,0x21,0x21,0x21 +000708 21212121 DCB 0x21,0x21,0x21,0x21 +00070c 21212121 DCB 0x21,0x21,0x21,0x21 +000710 21212121 DCB 0x21,0x21,0x21,0x21 +000714 21212139 DCB 0x21,0x21,0x21,0x39 +000718 0029d821 DCB 0x00,0x29,0xd8,0x21 +00071c 21212121 DCB 0x21,0x21,0x21,0x21 +000720 21212121 DCB 0x21,0x21,0x21,0x21 +000724 21212121 DCB 0x21,0x21,0x21,0x21 +000728 21212121 DCB 0x21,0x21,0x21,0x21 +00072c 21212121 DCB 0x21,0x21,0x21,0x21 +000730 21212121 DCB 0x21,0x21,0x21,0x21 +000734 21212121 DCB 0x21,0x21,0x21,0x21 +000738 21212121 DCB 0x21,0x21,0x21,0x21 +00073c 21212121 DCB 0x21,0x21,0x21,0x21 +000740 21212139 DCB 0x21,0x21,0x21,0x39 +000744 0033d921 DCB 0x00,0x33,0xd9,0x21 +000748 21212121 DCB 0x21,0x21,0x21,0x21 +00074c 21212121 DCB 0x21,0x21,0x21,0x21 +000750 21212121 DCB 0x21,0x21,0x21,0x21 +000754 21212121 DCB 0x21,0x21,0x21,0x21 +000758 21212121 DCB 0x21,0x21,0x21,0x21 +00075c 21212121 DCB 0x21,0x21,0x21,0x21 +000760 21212121 DCB 0x21,0x21,0x21,0x21 +000764 21212121 DCB 0x21,0x21,0x21,0x21 +000768 21212121 DCB 0x21,0x21,0x21,0x21 +00076c 21212121 DCB 0x21,0x21,0x21,0x21 +000770 21212121 DCB 0x21,0x21,0x21,0x21 +000774 21212121 DCB 0x21,0x21,0x21,0x21 +000778 21390029 DCB 0x21,0x39,0x00,0x29 +00077c dd212121 DCB 0xdd,0x21,0x21,0x21 +000780 21212121 DCB 0x21,0x21,0x21,0x21 +000784 21212121 DCB 0x21,0x21,0x21,0x21 +000788 21212121 DCB 0x21,0x21,0x21,0x21 +00078c 21212121 DCB 0x21,0x21,0x21,0x21 +000790 21212121 DCB 0x21,0x21,0x21,0x21 +000794 21212121 DCB 0x21,0x21,0x21,0x21 +000798 21212121 DCB 0x21,0x21,0x21,0x21 +00079c 21212121 DCB 0x21,0x21,0x21,0x21 +0007a0 21212121 DCB 0x21,0x21,0x21,0x21 +0007a4 21390033 DCB 0x21,0x39,0x00,0x33 +0007a8 de212121 DCB 0xde,0x21,0x21,0x21 +0007ac 21212121 DCB 0x21,0x21,0x21,0x21 +0007b0 21212121 DCB 0x21,0x21,0x21,0x21 +0007b4 21212121 DCB 0x21,0x21,0x21,0x21 +0007b8 21212121 DCB 0x21,0x21,0x21,0x21 +0007bc 21212121 DCB 0x21,0x21,0x21,0x21 +0007c0 21212121 DCB 0x21,0x21,0x21,0x21 +0007c4 21212121 DCB 0x21,0x21,0x21,0x21 +0007c8 21212121 DCB 0x21,0x21,0x21,0x21 +0007cc 21212121 DCB 0x21,0x21,0x21,0x21 +0007d0 21212121 DCB 0x21,0x21,0x21,0x21 +0007d4 21212121 DCB 0x21,0x21,0x21,0x21 +0007d8 21212139 DCB 0x21,0x21,0x21,0x39 +0007dc 0029df23 DCB 0x00,0x29,0xdf,0x23 +0007e0 150f0b0b DCB 0x15,0x0f,0x0b,0x0b +0007e4 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0007e8 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0007ec 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0007f0 0b0b0b26 DCB 0x0b,0x0b,0x0b,0x26 +0007f4 18120e0e DCB 0x18,0x12,0x0e,0x0e +0007f8 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +0007fc 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000800 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000804 0e0e0e39 DCB 0x0e,0x0e,0x0e,0x39 +000808 0033e028 DCB 0x00,0x33,0xe0,0x28 +00080c 1a141010 DCB 0x1a,0x14,0x10,0x10 +000810 10101010 DCB 0x10,0x10,0x10,0x10 +000814 10101010 DCB 0x10,0x10,0x10,0x10 +000818 10101010 DCB 0x10,0x10,0x10,0x10 +00081c 10101028 DCB 0x10,0x10,0x10,0x28 +000820 1a141010 DCB 0x1a,0x14,0x10,0x10 +000824 10101010 DCB 0x10,0x10,0x10,0x10 +000828 10101010 DCB 0x10,0x10,0x10,0x10 +00082c 10101010 DCB 0x10,0x10,0x10,0x10 +000830 10101021 DCB 0x10,0x10,0x10,0x21 +000834 21212121 DCB 0x21,0x21,0x21,0x21 +000838 21212121 DCB 0x21,0x21,0x21,0x21 +00083c 21390029 DCB 0x21,0x39,0x00,0x29 +000840 e123150f DCB 0xe1,0x23,0x15,0x0f +000844 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000848 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +00084c 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000850 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000854 0b261812 DCB 0x0b,0x26,0x18,0x12 +000858 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +00085c 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000860 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000864 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000868 0e390033 DCB 0x0e,0x39,0x00,0x33 +00086c e2281a14 DCB 0xe2,0x28,0x1a,0x14 +000870 10101010 DCB 0x10,0x10,0x10,0x10 +000874 10101010 DCB 0x10,0x10,0x10,0x10 +000878 10101010 DCB 0x10,0x10,0x10,0x10 +00087c 10101010 DCB 0x10,0x10,0x10,0x10 +000880 10281a14 DCB 0x10,0x28,0x1a,0x14 +000884 10101010 DCB 0x10,0x10,0x10,0x10 +000888 10101010 DCB 0x10,0x10,0x10,0x10 +00088c 10101010 DCB 0x10,0x10,0x10,0x10 +000890 10101010 DCB 0x10,0x10,0x10,0x10 +000894 10212121 DCB 0x10,0x21,0x21,0x21 +000898 21212121 DCB 0x21,0x21,0x21,0x21 +00089c 21212139 DCB 0x21,0x21,0x21,0x39 +0008a0 0029e323 DCB 0x00,0x29,0xe3,0x23 +0008a4 150f0b0b DCB 0x15,0x0f,0x0b,0x0b +0008a8 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0008ac 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0008b0 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +0008b4 0b0b0b26 DCB 0x0b,0x0b,0x0b,0x26 +0008b8 18120e0e DCB 0x18,0x12,0x0e,0x0e +0008bc 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +0008c0 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +0008c4 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +0008c8 0e0e0e39 DCB 0x0e,0x0e,0x0e,0x39 +0008cc 0033e428 DCB 0x00,0x33,0xe4,0x28 +0008d0 1a141010 DCB 0x1a,0x14,0x10,0x10 +0008d4 10101010 DCB 0x10,0x10,0x10,0x10 +0008d8 10101010 DCB 0x10,0x10,0x10,0x10 +0008dc 10101010 DCB 0x10,0x10,0x10,0x10 +0008e0 10101028 DCB 0x10,0x10,0x10,0x28 +0008e4 1a141010 DCB 0x1a,0x14,0x10,0x10 +0008e8 10101010 DCB 0x10,0x10,0x10,0x10 +0008ec 10101010 DCB 0x10,0x10,0x10,0x10 +0008f0 10101010 DCB 0x10,0x10,0x10,0x10 +0008f4 10101021 DCB 0x10,0x10,0x10,0x21 +0008f8 21212121 DCB 0x21,0x21,0x21,0x21 +0008fc 21212121 DCB 0x21,0x21,0x21,0x21 +000900 21390029 DCB 0x21,0x39,0x00,0x29 +000904 e523150f DCB 0xe5,0x23,0x15,0x0f +000908 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +00090c 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000910 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000914 0b0b0b0b DCB 0x0b,0x0b,0x0b,0x0b +000918 0b261812 DCB 0x0b,0x26,0x18,0x12 +00091c 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000920 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000924 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +000928 0e0e0e0e DCB 0x0e,0x0e,0x0e,0x0e +00092c 0e390033 DCB 0x0e,0x39,0x00,0x33 +000930 e6281a14 DCB 0xe6,0x28,0x1a,0x14 +000934 10101010 DCB 0x10,0x10,0x10,0x10 +000938 10101010 DCB 0x10,0x10,0x10,0x10 +00093c 10101010 DCB 0x10,0x10,0x10,0x10 +000940 10101010 DCB 0x10,0x10,0x10,0x10 +000944 10281a14 DCB 0x10,0x28,0x1a,0x14 +000948 10101010 DCB 0x10,0x10,0x10,0x10 +00094c 10101010 DCB 0x10,0x10,0x10,0x10 +000950 10101010 DCB 0x10,0x10,0x10,0x10 +000954 10101010 DCB 0x10,0x10,0x10,0x10 +000958 10212121 DCB 0x10,0x21,0x21,0x21 +00095c 21212121 DCB 0x21,0x21,0x21,0x21 +000960 21212139 DCB 0x21,0x21,0x21,0x39 +000964 00029f05 DCB 0x00,0x02,0x9f,0x05 +000968 390007b2 DCB 0x39,0x00,0x07,0xb2 +00096c 2420050f DCB 0x24,0x20,0x05,0x0f +000970 ffff3900 DCB 0xff,0xff,0x39,0x00 +000974 09b3a000 DCB 0x09,0xb3,0xa0,0x00 +000978 28000000 DCB 0x28,0x00,0x00,0x00 +00097c 3fff3900 DCB 0x3f,0xff,0x39,0x00 +000980 0db4020e DCB 0x0d,0xb4,0x02,0x0e +000984 3e000010 DCB 0x3e,0x00,0x00,0x10 +000988 06000002 DCB 0x06,0x00,0x00,0x02 +00098c 500f3900 DCB 0x50,0x0f,0x39,0x00 +000990 15b50fff DCB 0x15,0xb5,0x0f,0xff +000994 07ff0333 DCB 0x07,0xff,0x03,0x33 +000998 01470146 DCB 0x01,0x47,0x01,0x46 +00099c 00cd0066 DCB 0x00,0xcd,0x00,0x66 +0009a0 003a0014 DCB 0x00,0x3a,0x00,0x14 +0009a4 00083900 DCB 0x00,0x08,0x39,0x00 +0009a8 15b603ff DCB 0x15,0xb6,0x03,0xff +0009ac 01ff0000 DCB 0x01,0xff,0x00,0x00 +0009b0 000003ff DCB 0x00,0x00,0x03,0xff +0009b4 01ff0000 DCB 0x01,0xff,0x00,0x00 +0009b8 000003ff DCB 0x00,0x00,0x03,0xff +0009bc 01ff3900 DCB 0x01,0xff,0x39,0x00 +0009c0 09b80000 DCB 0x09,0xb8,0x00,0x00 +0009c4 0000131f DCB 0x00,0x00,0x13,0x1f +0009c8 306e3900 DCB 0x30,0x6e,0x39,0x00 +0009cc 29e00000 DCB 0x29,0xe0,0x00,0x00 +0009d0 00000000 DCB 0x00,0x00,0x00,0x00 +0009d4 00000000 DCB 0x00,0x00,0x00,0x00 +0009d8 00000000 DCB 0x00,0x00,0x00,0x00 +0009dc 00000000 DCB 0x00,0x00,0x00,0x00 +0009e0 00000000 DCB 0x00,0x00,0x00,0x00 +0009e4 00000000 DCB 0x00,0x00,0x00,0x00 +0009e8 00000000 DCB 0x00,0x00,0x00,0x00 +0009ec 00000000 DCB 0x00,0x00,0x00,0x00 +0009f0 00000000 DCB 0x00,0x00,0x00,0x00 +0009f4 00003900 DCB 0x00,0x00,0x39,0x00 +0009f8 29e10000 DCB 0x29,0xe1,0x00,0x00 +0009fc 00000000 DCB 0x00,0x00,0x00,0x00 +000a00 00000000 DCB 0x00,0x00,0x00,0x00 +000a04 00000000 DCB 0x00,0x00,0x00,0x00 +000a08 00000000 DCB 0x00,0x00,0x00,0x00 +000a0c 00000000 DCB 0x00,0x00,0x00,0x00 +000a10 00000000 DCB 0x00,0x00,0x00,0x00 +000a14 00000000 DCB 0x00,0x00,0x00,0x00 +000a18 00000000 DCB 0x00,0x00,0x00,0x00 +000a1c 00000000 DCB 0x00,0x00,0x00,0x00 +000a20 00003900 DCB 0x00,0x00,0x39,0x00 +000a24 15e20000 DCB 0x15,0xe2,0x00,0x00 +000a28 00000000 DCB 0x00,0x00,0x00,0x00 +000a2c 00000000 DCB 0x00,0x00,0x00,0x00 +000a30 00000000 DCB 0x00,0x00,0x00,0x00 +000a34 00000000 DCB 0x00,0x00,0x00,0x00 +000a38 00003900 DCB 0x00,0x00,0x39,0x00 +000a3c 29e301e1 DCB 0x29,0xe3,0x01,0xe1 +000a40 01e101e1 DCB 0x01,0xe1,0x01,0xe1 +000a44 01e101ff DCB 0x01,0xe1,0x01,0xff +000a48 01ff01ff DCB 0x01,0xff,0x01,0xff +000a4c 01ff01ff DCB 0x01,0xff,0x01,0xff +000a50 01ff01e1 DCB 0x01,0xff,0x01,0xe1 +000a54 01e101e1 DCB 0x01,0xe1,0x01,0xe1 +000a58 01e101ff DCB 0x01,0xe1,0x01,0xff +000a5c 01ff01ff DCB 0x01,0xff,0x01,0xff +000a60 01ff01ff DCB 0x01,0xff,0x01,0xff +000a64 01ff3900 DCB 0x01,0xff,0x39,0x00 +000a68 29e401e1 DCB 0x29,0xe4,0x01,0xe1 +000a6c 01e101e1 DCB 0x01,0xe1,0x01,0xe1 +000a70 01e101ff DCB 0x01,0xe1,0x01,0xff +000a74 01ff01ff DCB 0x01,0xff,0x01,0xff +000a78 01ff01ff DCB 0x01,0xff,0x01,0xff +000a7c 01ff01e1 DCB 0x01,0xff,0x01,0xe1 +000a80 01e101e1 DCB 0x01,0xe1,0x01,0xe1 +000a84 01e101ff DCB 0x01,0xe1,0x01,0xff +000a88 01ff01ff DCB 0x01,0xff,0x01,0xff +000a8c 01ff01ff DCB 0x01,0xff,0x01,0xff +000a90 01ff3900 DCB 0x01,0xff,0x39,0x00 +000a94 15e501ff DCB 0x15,0xe5,0x01,0xff +000a98 01ff01ff DCB 0x01,0xff,0x01,0xff +000a9c 01ff01ff DCB 0x01,0xff,0x01,0xff +000aa0 01ff01ff DCB 0x01,0xff,0x01,0xff +000aa4 01ff01ff DCB 0x01,0xff,0x01,0xff +000aa8 01ff3900 DCB 0x01,0xff,0x39,0x00 +000aac 029f0439 DCB 0x02,0x9f,0x04,0x39 +000ab0 0013b300 DCB 0x00,0x13,0xb3,0x00 +000ab4 00100030 DCB 0x00,0x10,0x00,0x30 +000ab8 500070b0 DCB 0x50,0x00,0x70,0xb0 +000abc 00d0f011 DCB 0x00,0xd0,0xf0,0x11 +000ac0 307012f0 DCB 0x30,0x70,0x12,0xf0 +000ac4 70390015 DCB 0x70,0x39,0x00,0x15 +000ac8 b423f070 DCB 0xb4,0x23,0xf0,0x70 +000acc 34f0f067 DCB 0x34,0xf0,0xf0,0x67 +000ad0 f0f08af0 DCB 0xf0,0xf0,0x8a,0xf0 +000ad4 f0cdf0f0 DCB 0xf0,0xcd,0xf0,0xf0 +000ad8 eff0f00f DCB 0xef,0xf0,0xf0,0x0f +000adc ff390002 DCB 0xff,0x39,0x00,0x02 +000ae0 9f053900 DCB 0x9f,0x05,0x39,0x00 +000ae4 15b50fff DCB 0x15,0xb5,0x0f,0xff +000ae8 07ff0333 DCB 0x07,0xff,0x03,0x33 +000aec 01470146 DCB 0x01,0x47,0x01,0x46 +000af0 00cd0066 DCB 0x00,0xcd,0x00,0x66 +000af4 003a0014 DCB 0x00,0x3a,0x00,0x14 +000af8 00083900 DCB 0x00,0x08,0x39,0x00 +000afc 15b60000 DCB 0x15,0xb6,0x00,0x00 +000b00 00000000 DCB 0x00,0x00,0x00,0x00 +000b04 00000000 DCB 0x00,0x00,0x00,0x00 +000b08 00000000 DCB 0x00,0x00,0x00,0x00 +000b0c 00000000 DCB 0x00,0x00,0x00,0x00 +000b10 00003900 DCB 0x00,0x00,0x39,0x00 +000b14 029f0539 DCB 0x02,0x9f,0x05,0x39 +000b18 0002f980 DCB 0x00,0x02,0xf9,0x80 +000b1c 390004ff DCB 0x39,0x00,0x04,0xff +000b20 00000139 DCB 0x00,0x00,0x01,0x39 +000b24 00029f06 DCB 0x00,0x02,0x9f,0x06 +000b28 390003ff DCB 0x39,0x00,0x03,0xff +000b2c 00013900 DCB 0x00,0x01,0x39,0x00 +000b30 05fe0100 DCB 0x05,0xfe,0x01,0x00 +000b34 00003900 DCB 0x00,0x00,0x39,0x00 +000b38 16f10200 DCB 0x16,0xf1,0x02,0x00 +000b3c 4523c12c DCB 0x45,0x23,0xc1,0x2c +000b40 3394f344 DCB 0x33,0x94,0xf3,0x44 +000b44 107545c7 DCB 0x10,0x75,0x45,0xc7 +000b48 0f557ceb DCB 0x0f,0x55,0x7c,0xeb +000b4c 664aa039 DCB 0x66,0x4a,0xa0,0x39 +000b50 0012f267 DCB 0x00,0x12,0xf2,0x67 +000b54 f77c886b DCB 0xf7,0x7c,0x88,0x6b +000b58 d69a3c07 DCB 0xd6,0x9a,0x3c,0x07 +000b5c abc727bb DCB 0xab,0xc7,0x27,0xbb +000b60 84e6b0e6 DCB 0x84,0xe6,0xb0,0xe6 +000b64 390016f3 DCB 0x39,0x00,0x16,0xf3 +000b68 02004522 DCB 0x02,0x00,0x45,0x22 +000b6c acde23f3 DCB 0xac,0xde,0x23,0xf3 +000b70 98349920 DCB 0x98,0x34,0x99,0x20 +000b74 4462a345 DCB 0x44,0x62,0xa3,0x45 +000b78 f35d56ba DCB 0xf3,0x5d,0x56,0xba +000b7c 0b390012 DCB 0x0b,0x39,0x00,0x12 +000b80 f46664da DCB 0xf4,0x66,0x64,0xda +000b84 78ba1689 DCB 0x78,0xba,0x16,0x89 +000b88 6f1d9abf DCB 0x6f,0x1d,0x9a,0xbf +000b8c 0aaa5dac DCB 0x0a,0xaa,0x5d,0xac +000b90 a0ac3900 DCB 0xa0,0xac,0x39,0x00 +000b94 16f50200 DCB 0x16,0xf5,0x02,0x00 +000b98 e93381dd DCB 0xe9,0x33,0x81,0xdd +000b9c 4419b445 DCB 0x44,0x19,0xb4,0x45 +000ba0 d53c5598 DCB 0xd5,0x3c,0x55,0x98 +000ba4 e96661dd DCB 0xe9,0x66,0x61,0xdd +000ba8 77439e39 DCB 0x77,0x43,0x9e,0x39 +000bac 0012f678 DCB 0x00,0x12,0xf6,0x78 +000bb0 f98b9a8e DCB 0xf9,0x8b,0x9a,0x8e +000bb4 03ab7449 DCB 0x03,0xab,0x74,0x49 +000bb8 cc1470cd DCB 0xcc,0x14,0x70,0xcd +000bbc dc3ed03e DCB 0xdc,0x3e,0xd0,0x3e +000bc0 390002ff DCB 0x39,0x00,0x02,0xff +000bc4 01390005 DCB 0x01,0x39,0x00,0x05 +000bc8 fe010100 DCB 0xfe,0x01,0x01,0x00 +000bcc 00390016 DCB 0x00,0x39,0x00,0x16 +000bd0 f1000001 DCB 0xf1,0x00,0x00,0x01 +000bd4 127e6423 DCB 0x12,0x7e,0x64,0x23 +000bd8 bd8a33ad DCB 0xbd,0x8a,0x33,0xad +000bdc ed446490 DCB 0xed,0x44,0x64,0x90 +000be0 55238156 DCB 0x55,0x23,0x81,0x56 +000be4 d42c3900 DCB 0xd4,0x2c,0x39,0x00 +000be8 12f26671 DCB 0x12,0xf2,0x66,0x71 +000bec f378ca27 DCB 0xf3,0x78,0xca,0x27 +000bf0 897e2b9a DCB 0x89,0x7e,0x2b,0x9a +000bf4 cb1aaa66 DCB 0xcb,0x1a,0xaa,0x66 +000bf8 b5a0b539 DCB 0xb5,0xa0,0xb5,0x39 +000bfc 0016f300 DCB 0x00,0x16,0xf3,0x00 +000c00 00011113 DCB 0x00,0x01,0x11,0x13 +000c04 e8235b0a DCB 0xe8,0x23,0x5b,0x0a +000c08 33206234 DCB 0x33,0x20,0x62,0x34 +000c0c eb0b44a3 DCB 0xeb,0x0b,0x44,0xa3 +000c10 fc55459f DCB 0xfc,0x55,0x45,0x9f +000c14 390012f4 DCB 0x39,0x00,0x12,0xf4 +000c18 56de5d77 DCB 0x56,0xde,0x5d,0x77 +000c1c 217278c5 DCB 0x21,0x72,0x78,0xc5 +000c20 5c89e52a DCB 0x5c,0x89,0xe5,0x2a +000c24 996db190 DCB 0x99,0x6d,0xb1,0x90 +000c28 b1390016 DCB 0xb1,0x39,0x00,0x16 +000c2c f5020008 DCB 0xf5,0x02,0x00,0x08 +000c30 23fd6834 DCB 0x23,0xfd,0x68,0x34 +000c34 9648446a DCB 0x96,0x48,0x44,0x6a +000c38 a6552a5a DCB 0xa6,0x55,0x2a,0x5a +000c3c 56f86467 DCB 0x56,0xf8,0x64,0x67 +000c40 bc1a3900 DCB 0xbc,0x1a,0x39,0x00 +000c44 12f67766 DCB 0x12,0xf6,0x77,0x66 +000c48 f089d83d DCB 0xf0,0x89,0xd8,0x3d +000c4c 9a9f59bb DCB 0x9a,0x9f,0x59,0xbb +000c50 0058bbac DCB 0x00,0x58,0xbb,0xac +000c54 fcb0fc39 DCB 0xfc,0xb0,0xfc,0x39 +000c58 0002ff01 DCB 0x00,0x02,0xff,0x01 +000c5c 390005fe DCB 0x39,0x00,0x05,0xfe +000c60 01020000 DCB 0x01,0x02,0x00,0x00 +000c64 390016f1 DCB 0x39,0x00,0x16,0xf1 +000c68 00000100 DCB 0x00,0x00,0x01,0x00 +000c6c 02031263 DCB 0x02,0x03,0x12,0x63 +000c70 c2330d53 DCB 0xc2,0x33,0x0d,0x53 +000c74 33a6f944 DCB 0x33,0xa6,0xf9,0x44 +000c78 61c05514 DCB 0x61,0xc0,0x55,0x14 +000c7c 5d390012 DCB 0x5d,0x39,0x00,0x12 +000c80 f2569c03 DCB 0xf2,0x56,0x9c,0x03 +000c84 67bf0f77 DCB 0x67,0xbf,0x0f,0x77 +000c88 58da8856 DCB 0x58,0xda,0x88,0x56 +000c8c 8f89c900 DCB 0x8f,0x89,0xc9,0x00 +000c90 90003900 DCB 0x90,0x00,0x39,0x00 +000c94 16f30000 DCB 0x16,0xf3,0x00,0x00 +000c98 01000203 DCB 0x01,0x00,0x02,0x03 +000c9c 02872722 DCB 0x02,0x87,0x27,0x22 +000ca0 83d1331b DCB 0x83,0xd1,0x33,0x1b +000ca4 7934de3a DCB 0x79,0x34,0xde,0x3a +000ca8 4490db39 DCB 0x44,0x90,0xdb,0x39 +000cac 0012f455 DCB 0x00,0x12,0xf4,0x55 +000cb0 14746629 DCB 0x14,0x74,0x66,0x29 +000cb4 7667ba2d DCB 0x76,0x67,0xba,0x2d +000cb8 77a2d388 DCB 0x77,0xa2,0xd3,0x88 +000cbc 08388038 DCB 0x08,0x38,0x80,0x38 +000cc0 390016f5 DCB 0x39,0x00,0x16,0xf5 +000cc4 02006122 DCB 0x02,0x00,0x61,0x22 +000cc8 62c3332a DCB 0x62,0xc3,0x33,0x2a +000ccc 9934df31 DCB 0x99,0x34,0xdf,0x31 +000cd0 445fbb55 DCB 0x44,0x5f,0xbb,0x55 +000cd4 228a56ec DCB 0x22,0x8a,0x56,0xec +000cd8 39390012 DCB 0x39,0x39,0x00,0x12 +000cdc f6667ded DCB 0xf6,0x66,0x7d,0xed +000ce0 78b70d88 DCB 0x78,0xb7,0x0d,0x88 +000ce4 5ce99970 DCB 0x5c,0xe9,0x99,0x70 +000ce8 b19aed2a DCB 0xb1,0x9a,0xed,0x2a +000cec a02a3900 DCB 0xa0,0x2a,0x39,0x00 +000cf0 02ff0139 DCB 0x02,0xff,0x01,0x39 +000cf4 0005fe01 DCB 0x00,0x05,0xfe,0x01 +000cf8 03000039 DCB 0x03,0x00,0x00,0x39 +000cfc 0016f100 DCB 0x00,0x16,0xf1,0x00 +000d00 00010002 DCB 0x00,0x01,0x00,0x02 +000d04 03000405 DCB 0x03,0x00,0x04,0x05 +000d08 0006f023 DCB 0x00,0x06,0xf0,0x23 +000d0c cd1634a6 DCB 0xcd,0x16,0x34,0xa6 +000d10 11445ea3 DCB 0x11,0x44,0x5e,0xa3 +000d14 390012f2 DCB 0x39,0x00,0x12,0xf2 +000d18 45db4256 DCB 0x45,0xdb,0x42,0x56 +000d1c db216666 DCB 0xdb,0x21,0x66,0x66 +000d20 d2773666 DCB 0xd2,0x77,0x36,0x66 +000d24 7796be70 DCB 0x77,0x96,0xbe,0x70 +000d28 be390016 DCB 0xbe,0x39,0x00,0x16 +000d2c f3000002 DCB 0xf3,0x00,0x00,0x02 +000d30 00050700 DCB 0x00,0x05,0x07,0x00 +000d34 0c0d1144 DCB 0x0c,0x0d,0x11,0x44 +000d38 80224ca8 DCB 0x80,0x22,0x4c,0xa8 +000d3c 33368734 DCB 0x33,0x36,0x87,0x34 +000d40 da293900 DCB 0xda,0x29,0x39,0x00 +000d44 12f44457 DCB 0x12,0xf4,0x44,0x57 +000d48 bf55498d DCB 0xbf,0x55,0x49,0x8d +000d4c 56d63766 DCB 0x56,0xd6,0x37,0x66 +000d50 97c367f0 DCB 0x97,0xc3,0x67,0xf0 +000d54 16701639 DCB 0x16,0x70,0x16,0x39 +000d58 0016f501 DCB 0x00,0x16,0xf5,0x01 +000d5c 001f1120 DCB 0x00,0x1f,0x11,0x20 +000d60 21331314 DCB 0x21,0x33,0x13,0x14 +000d64 333f6e34 DCB 0x33,0x3f,0x6e,0x34 +000d68 af0e448d DCB 0xaf,0x0e,0x44,0x8d +000d6c c9552173 DCB 0xc9,0x55,0x21,0x73 +000d70 390012f6 DCB 0x39,0x00,0x12,0xf6 +000d74 56a81b67 DCB 0x56,0xa8,0x1b,0x67 +000d78 c10b7756 DCB 0xc1,0x0b,0x77,0x56 +000d7c cc88396c DCB 0xcc,0x88,0x39,0x6c +000d80 889ecc80 DCB 0x88,0x9e,0xcc,0x80 +000d84 cc390002 DCB 0xcc,0x39,0x00,0x02 +000d88 ff013900 DCB 0xff,0x01,0x39,0x00 +000d8c 05fe0104 DCB 0x05,0xfe,0x01,0x04 +000d90 00003900 DCB 0x00,0x00,0x39,0x00 +000d94 16f10000 DCB 0x16,0xf1,0x00,0x00 +000d98 01000203 DCB 0x01,0x00,0x02,0x03 +000d9c 00041711 DCB 0x00,0x04,0x17,0x11 +000da0 50cf3376 DCB 0x50,0xcf,0x33,0x76 +000da4 c24475c3 DCB 0xc2,0x44,0x75,0xc3 +000da8 55195a39 DCB 0x55,0x19,0x5a,0x39 +000dac 0012f255 DCB 0x00,0x12,0xf2,0x55 +000db0 93f4668c DCB 0x93,0xf4,0x66,0x8c +000db4 d0770c7a DCB 0xd0,0x77,0x0c,0x7a +000db8 78dd0a88 DCB 0x78,0xdd,0x0a,0x88 +000dbc 3a618061 DCB 0x3a,0x61,0x80,0x61 +000dc0 390016f3 DCB 0x39,0x00,0x16,0xf3 +000dc4 00000100 DCB 0x00,0x00,0x01,0x00 +000dc8 02030004 DCB 0x02,0x03,0x00,0x04 +000dcc 05127b46 DCB 0x05,0x12,0x7b,0x46 +000dd0 33116534 DCB 0x33,0x11,0x65,0x34 +000dd4 fa4d4497 DCB 0xfa,0x4d,0x44,0x97 +000dd8 dd390012 DCB 0xdd,0x39,0x00,0x12 +000ddc f4551674 DCB 0xf4,0x55,0x16,0x74 +000de0 66064966 DCB 0x66,0x06,0x49,0x66 +000de4 81e97745 DCB 0x81,0xe9,0x77,0x45 +000de8 737797bf DCB 0x73,0x77,0x97,0xbf +000dec 70bf3900 DCB 0x70,0xbf,0x39,0x00 +000df0 16f50200 DCB 0x16,0xf5,0x02,0x00 +000df4 ec335657 DCB 0xec,0x33,0x56,0x57 +000df8 3358d934 DCB 0x33,0x58,0xd9,0x34 +000dfc ff384488 DCB 0xff,0x38,0x44,0x88 +000e00 d6553997 DCB 0xd6,0x55,0x39,0x97 +000e04 56d42339 DCB 0x56,0xd4,0x23,0x39 +000e08 0012f666 DCB 0x00,0x12,0xf6,0x66 +000e0c 5cc5776b DCB 0x5c,0xc5,0x77,0x6b +000e10 b478f268 DCB 0xb4,0x78,0xf2,0x68 +000e14 89d30499 DCB 0x89,0xd3,0x04,0x99 +000e18 35629062 DCB 0x35,0x62,0x90,0x62 +000e1c 390002ff DCB 0x39,0x00,0x02,0xff +000e20 01390005 DCB 0x01,0x39,0x00,0x05 +000e24 fe010500 DCB 0xfe,0x01,0x05,0x00 +000e28 00390016 DCB 0x00,0x39,0x00,0x16 +000e2c f1000001 DCB 0xf1,0x00,0x00,0x01 +000e30 00020300 DCB 0x00,0x02,0x03,0x00 +000e34 04050208 DCB 0x04,0x05,0x02,0x08 +000e38 6f23b9bf DCB 0x6f,0x23,0xb9,0xbf +000e3c 442ea145 DCB 0x44,0x2e,0xa1,0x45 +000e40 f7383900 DCB 0xf7,0x38,0x39,0x00 +000e44 12f25573 DCB 0x12,0xf2,0x55,0x73 +000e48 d76678b9 DCB 0xd7,0x66,0x78,0xb9 +000e4c 67fb6477 DCB 0x67,0xfb,0x64,0x77 +000e50 c7f58820 DCB 0xc7,0xf5,0x88,0x20 +000e54 51805139 DCB 0x51,0x80,0x51,0x39 +000e58 0016f300 DCB 0x00,0x16,0xf3,0x00 +000e5c 00010002 DCB 0x00,0x01,0x00,0x02 +000e60 03000405 DCB 0x03,0x00,0x04,0x05 +000e64 01063223 DCB 0x01,0x06,0x32,0x23 +000e68 aa2b34b0 DCB 0xaa,0x2b,0x34,0xb0 +000e6c 1b4469ad DCB 0x1b,0x44,0x69,0xad +000e70 390012f4 DCB 0x39,0x00,0x12,0xf4 +000e74 45f55156 DCB 0x45,0xf5,0x51,0x56 +000e78 f12e6670 DCB 0xf1,0x2e,0x66,0x70 +000e7c cf772c5a DCB 0xcf,0x77,0x2c,0x5a +000e80 7781aa70 DCB 0x77,0x81,0xaa,0x70 +000e84 aa390016 DCB 0xaa,0x39,0x00,0x16 +000e88 f50200ec DCB 0xf5,0x02,0x00,0xec +000e8c 3386b033 DCB 0x33,0x86,0xb0,0x33 +000e90 b1b234e8 DCB 0xb1,0xb2,0x34,0xe8 +000e94 0c445f9e DCB 0x0c,0x44,0x5f,0x9e +000e98 55237456 DCB 0x55,0x23,0x74,0x56 +000e9c bc013900 DCB 0xbc,0x01,0x39,0x00 +000ea0 12f66650 DCB 0x12,0xf6,0x66,0x50 +000ea4 b0775da1 DCB 0xb0,0x77,0x5d,0xa1 +000ea8 78e55788 DCB 0x78,0xe5,0x57,0x88 +000eac c0f1991f DCB 0xc0,0xf1,0x99,0x1f +000eb0 4f904f39 DCB 0x4f,0x90,0x4f,0x39 +000eb4 0002ff01 DCB 0x00,0x02,0xff,0x01 +000eb8 390005fe DCB 0x39,0x00,0x05,0xfe +000ebc 01060000 DCB 0x01,0x06,0x00,0x00 +000ec0 390016f1 DCB 0x39,0x00,0x16,0xf1 +000ec4 00000100 DCB 0x00,0x00,0x01,0x00 +000ec8 02030004 DCB 0x02,0x03,0x00,0x04 +000ecc 05000607 DCB 0x05,0x00,0x06,0x07 +000ed0 010f1834 DCB 0x01,0x0f,0x18,0x34 +000ed4 902145aa DCB 0x90,0x21,0x45,0xaa +000ed8 01390012 DCB 0x01,0x39,0x00,0x12 +000edc f2553aa8 DCB 0xf2,0x55,0x3a,0xa8 +000ee0 664d8e67 DCB 0x66,0x4d,0x8e,0x67 +000ee4 d73e77a5 DCB 0xd7,0x3e,0x77,0xa5 +000ee8 d078fb2b DCB 0xd0,0x78,0xfb,0x2b +000eec 802b3900 DCB 0x80,0x2b,0x39,0x00 +000ef0 16f30000 DCB 0x16,0xf3,0x00,0x00 +000ef4 01000203 DCB 0x01,0x00,0x02,0x03 +000ef8 00040500 DCB 0x00,0x04,0x05,0x00 +000efc 06070126 DCB 0x06,0x07,0x01,0x26 +000f00 ea3317ad DCB 0xea,0x33,0x17,0xad +000f04 44167039 DCB 0x44,0x16,0x70,0x39 +000f08 0012f445 DCB 0x00,0x12,0xf4,0x45 +000f0c ac1b55bd DCB 0xac,0x1b,0x55,0xbd +000f10 fb6645a7 DCB 0xfb,0x66,0x45,0xa7 +000f14 770f3377 DCB 0x77,0x0f,0x33,0x77 +000f18 5d8b708b DCB 0x5d,0x8b,0x70,0x8b +000f1c 390016f5 DCB 0x39,0x00,0x16,0xf5 +000f20 0200ec33 DCB 0x02,0x00,0xec,0x33 +000f24 86b333cc DCB 0x86,0xb3,0x33,0xcc +000f28 cd33cecf DCB 0xcd,0x33,0xce,0xcf +000f2c 442e7645 DCB 0x44,0x2e,0x76,0x45 +000f30 e958559f DCB 0xe9,0x58,0x55,0x9f +000f34 e1390012 DCB 0xe1,0x39,0x00,0x12 +000f38 f6662a97 DCB 0xf6,0x66,0x2a,0x97 +000f3c 77418278 DCB 0x77,0x41,0x82,0x78 +000f40 c83988a6 DCB 0xc8,0x39,0x88,0xa6 +000f44 d2990031 DCB 0xd2,0x99,0x00,0x31 +000f48 90313900 DCB 0x90,0x31,0x39,0x00 +000f4c 02ff0139 DCB 0x02,0xff,0x01,0x39 +000f50 0005fe01 DCB 0x00,0x05,0xfe,0x01 +000f54 07000039 DCB 0x07,0x00,0x00,0x39 +000f58 0016f100 DCB 0x00,0x16,0xf1,0x00 +000f5c 00010002 DCB 0x00,0x01,0x00,0x02 +000f60 03000405 DCB 0x03,0x00,0x04,0x05 +000f64 00060700 DCB 0x00,0x06,0x07,0x00 +000f68 08cb1306 DCB 0x08,0xcb,0x13,0x06 +000f6c 59446295 DCB 0x59,0x44,0x62,0x95 +000f70 390012f2 DCB 0x39,0x00,0x12,0xf2 +000f74 45eb6366 DCB 0x45,0xeb,0x63,0x66 +000f78 0b576793 DCB 0x0b,0x57,0x67,0x93 +000f7c 08776a99 DCB 0x08,0x77,0x6a,0x99 +000f80 77c0ef70 DCB 0x77,0xc0,0xef,0x70 +000f84 ef390016 DCB 0xef,0x39,0x00,0x16 +000f88 f3000001 DCB 0xf3,0x00,0x00,0x01 +000f8c 00020300 DCB 0x00,0x02,0x03,0x00 +000f90 04050006 DCB 0x04,0x05,0x00,0x06 +000f94 07000809 DCB 0x07,0x00,0x08,0x09 +000f98 12c8f334 DCB 0x12,0xc8,0xf3,0x34 +000f9c b5003900 DCB 0xb5,0x00,0x39,0x00 +000fa0 12f4444e DCB 0x12,0xf4,0x44,0x4e +000fa4 c65570bd DCB 0xc6,0x55,0x70,0xbd +000fa8 56f67066 DCB 0x56,0xf6,0x70,0x66 +000fac cffd771f DCB 0xcf,0xfd,0x77,0x1f +000fb0 52705239 DCB 0x52,0x70,0x52,0x39 +000fb4 0016f502 DCB 0x00,0x16,0xf5,0x02 +000fb8 00ec3354 DCB 0x00,0xec,0x33,0x54 +000fbc 6e336f70 DCB 0x6e,0x33,0x6f,0x70 +000fc0 33717234 DCB 0x33,0x71,0x72,0x34 +000fc4 e62f45ae DCB 0xe6,0x2f,0x45,0xae +000fc8 0f5559b7 DCB 0x0f,0x55,0x59,0xb7 +000fcc 390012f6 DCB 0x39,0x00,0x12,0xf6 +000fd0 56ee5b77 DCB 0x56,0xee,0x5b,0x77 +000fd4 0b517891 DCB 0x0b,0x51,0x78,0x91 +000fd8 05886c9d DCB 0x05,0x88,0x6c,0x9d +000fdc 88c7f880 DCB 0x88,0xc7,0xf8,0x80 +000fe0 f8390002 DCB 0xf8,0x39,0x00,0x02 +000fe4 ff013900 DCB 0xff,0x01,0x39,0x00 +000fe8 05fe0108 DCB 0x05,0xfe,0x01,0x08 +000fec 00003900 DCB 0x00,0x00,0x39,0x00 +000ff0 16f10000 DCB 0x16,0xf1,0x00,0x00 +000ff4 01000203 DCB 0x01,0x00,0x02,0x03 +000ff8 00040500 DCB 0x00,0x04,0x05,0x00 +000ffc 06070008 DCB 0x06,0x07,0x00,0x08 +001000 09000a55 DCB 0x09,0x00,0x0a,0x55 +001004 00787939 DCB 0x00,0x78,0x79,0x39 +001008 0012f234 DCB 0x00,0x12,0xf2,0x34 +00100c 8c685549 DCB 0x8c,0x68,0x55,0x49 +001010 9856d148 DCB 0x98,0x56,0xd1,0x48 +001014 66a9d067 DCB 0x66,0xa9,0xd0,0x67 +001018 fb277027 DCB 0xfb,0x27,0x70,0x27 +00101c 390016f3 DCB 0x39,0x00,0x16,0xf3 +001020 00000100 DCB 0x00,0x00,0x01,0x00 +001024 02030004 DCB 0x02,0x03,0x00,0x04 +001028 05000607 DCB 0x05,0x00,0x06,0x07 +00102c 00080901 DCB 0x00,0x08,0x09,0x01 +001030 0a1512d1 DCB 0x0a,0x15,0x12,0xd1 +001034 2a390012 DCB 0x2a,0x39,0x00,0x12 +001038 f43315d4 DCB 0xf4,0x33,0x15,0xd4 +00103c 44abf055 DCB 0x44,0xab,0xf0,0x55 +001040 26a96611 DCB 0x26,0xa9,0x66,0x11 +001044 30665987 DCB 0x30,0x66,0x59,0x87 +001048 60873900 DCB 0x60,0x87,0x39,0x00 +00104c 16f50200 DCB 0x16,0xf5,0x02,0x00 +001050 55225657 DCB 0x55,0x22,0x56,0x57 +001054 22d1fa33 DCB 0x22,0xd1,0xfa,0x33 +001058 10133314 DCB 0x10,0x13,0x33,0x14 +00105c 8c440168 DCB 0x8c,0x44,0x01,0x68 +001060 45b51639 DCB 0x45,0xb5,0x16,0x39 +001064 0012f655 DCB 0x00,0x12,0xf6,0x55 +001068 4bb1666b DCB 0x4b,0xb1,0x66,0x6b +00106c ab67de5c DCB 0xab,0x67,0xde,0x5c +001070 77bbdc88 DCB 0x77,0xbb,0xdc,0x88 +001074 072d802d DCB 0x07,0x2d,0x80,0x2d +001078 390002ff DCB 0x39,0x00,0x02,0xff +00107c 01390005 DCB 0x01,0x39,0x00,0x05 +001080 fe010900 DCB 0xfe,0x01,0x09,0x00 +001084 00390016 DCB 0x00,0x39,0x00,0x16 +001088 f1000001 DCB 0xf1,0x00,0x00,0x01 +00108c 00020300 DCB 0x00,0x02,0x03,0x00 +001090 04050006 DCB 0x04,0x05,0x00,0x06 +001094 07000809 DCB 0x07,0x00,0x08,0x09 +001098 000a0b00 DCB 0x00,0x0a,0x0b,0x00 +00109c 0c0f3900 DCB 0x0c,0x0f,0x39,0x00 +0010a0 12f20050 DCB 0x12,0xf2,0x00,0x50 +0010a4 5134f5b1 DCB 0x51,0x34,0xf5,0xb1 +0010a8 45f18256 DCB 0x45,0xf1,0x82,0x56 +0010ac de11663d DCB 0xde,0x11,0x66,0x3d +0010b0 5d605d39 DCB 0x5d,0x60,0x5d,0x39 +0010b4 0016f300 DCB 0x00,0x16,0xf3,0x00 +0010b8 00010002 DCB 0x00,0x01,0x00,0x02 +0010bc 03000405 DCB 0x03,0x00,0x04,0x05 +0010c0 00060700 DCB 0x00,0x06,0x07,0x00 +0010c4 0809000a DCB 0x08,0x09,0x00,0x0a +0010c8 0b000c0d DCB 0x0b,0x00,0x0c,0x0d +0010cc 390012f4 DCB 0x39,0x00,0x12,0xf4 +0010d0 02a83734 DCB 0x02,0xa8,0x37,0x34 +0010d4 7f08445a DCB 0x7f,0x08,0x44,0x5a +0010d8 d4553860 DCB 0xd4,0x55,0x38,0x60 +0010dc 559cb850 DCB 0x55,0x9c,0xb8,0x50 +0010e0 b8390016 DCB 0xb8,0x39,0x00,0x16 +0010e4 f5000001 DCB 0xf5,0x00,0x00,0x01 +0010e8 00020301 DCB 0x00,0x02,0x03,0x01 +0010ec e2251249 DCB 0xe2,0x25,0x12,0x49 +0010f0 7622f8f9 DCB 0x76,0x22,0xf8,0xf9 +0010f4 333aae44 DCB 0x33,0x3a,0xae,0x44 +0010f8 1c643900 DCB 0x1c,0x64,0x39,0x00 +0010fc 12f64596 DCB 0x12,0xf6,0x45,0x96 +001100 1056ca0d DCB 0x10,0x56,0xca,0x0d +001104 6652ab77 DCB 0x66,0x52,0xab,0x77 +001108 0c2b7764 DCB 0x0c,0x2b,0x77,0x64 +00110c 88708839 DCB 0x88,0x70,0x88,0x39 +001110 0002ff01 DCB 0x00,0x02,0xff,0x01 +001114 3900029f DCB 0x39,0x00,0x02,0x9f +001118 05390002 DCB 0x05,0x39,0x00,0x02 +00111c f9003900 DCB 0xf9,0x00,0x39,0x00 +001120 04ff0000 DCB 0x04,0xff,0x00,0x00 +001124 00390002 DCB 0x00,0x39,0x00,0x02 +001128 9f063900 DCB 0x9f,0x06,0x39,0x00 +00112c 03ff0000 DCB 0x03,0xff,0x00,0x00 +001130 3900029f DCB 0x39,0x00,0x02,0x9f +001134 07390008 DCB 0x07,0x39,0x00,0x08 +001138 b2040404 DCB 0xb2,0x04,0x04,0x04 +00113c 04040098 DCB 0x04,0x04,0x00,0x98 +001140 390008b3 DCB 0x39,0x00,0x08,0xb3 +001144 15151515 DCB 0x15,0x15,0x15,0x15 +001148 04009a39 DCB 0x04,0x00,0x9a,0x39 +00114c 0008b420 DCB 0x00,0x08,0xb4,0x20 +001150 20202004 DCB 0x20,0x20,0x20,0x04 +001154 00963900 DCB 0x00,0x96,0x39,0x00 +001158 08b60404 DCB 0x08,0xb6,0x04,0x04 +00115c 04040402 DCB 0x04,0x04,0x04,0x02 +001160 60390008 DCB 0x60,0x39,0x00,0x08 +001164 b7040404 DCB 0xb7,0x04,0x04,0x04 +001168 04040260 DCB 0x04,0x04,0x02,0x60 +00116c 390021b9 DCB 0x39,0x00,0x21,0xb9 +001170 01020304 DCB 0x01,0x02,0x03,0x04 +001174 05060708 DCB 0x05,0x06,0x07,0x08 +001178 090a0b0c DCB 0x09,0x0a,0x0b,0x0c +00117c 0d0e0f10 DCB 0x0d,0x0e,0x0f,0x10 +001180 00000000 DCB 0x00,0x00,0x00,0x00 +001184 00000000 DCB 0x00,0x00,0x00,0x00 +001188 00000000 DCB 0x00,0x00,0x00,0x00 +00118c 00000000 DCB 0x00,0x00,0x00,0x00 +001190 390021ba DCB 0x39,0x00,0x21,0xba +001194 01020304 DCB 0x01,0x02,0x03,0x04 +001198 05060708 DCB 0x05,0x06,0x07,0x08 +00119c 090a0b0c DCB 0x09,0x0a,0x0b,0x0c +0011a0 0d0e0f10 DCB 0x0d,0x0e,0x0f,0x10 +0011a4 11121314 DCB 0x11,0x12,0x13,0x14 +0011a8 15000000 DCB 0x15,0x00,0x00,0x00 +0011ac 00000000 DCB 0x00,0x00,0x00,0x00 +0011b0 00000000 DCB 0x00,0x00,0x00,0x00 +0011b4 390021bb DCB 0x39,0x00,0x21,0xbb +0011b8 01020304 DCB 0x01,0x02,0x03,0x04 +0011bc 05060708 DCB 0x05,0x06,0x07,0x08 +0011c0 090a0b0c DCB 0x09,0x0a,0x0b,0x0c +0011c4 0d0e0f10 DCB 0x0d,0x0e,0x0f,0x10 +0011c8 11121314 DCB 0x11,0x12,0x13,0x14 +0011cc 15161718 DCB 0x15,0x16,0x17,0x18 +0011d0 191a1b1c DCB 0x19,0x1a,0x1b,0x1c +0011d4 1d1e1f20 DCB 0x1d,0x1e,0x1f,0x20 +0011d8 390021bd DCB 0x39,0x00,0x21,0xbd +0011dc 01020304 DCB 0x01,0x02,0x03,0x04 +0011e0 00000000 DCB 0x00,0x00,0x00,0x00 +0011e4 00000000 DCB 0x00,0x00,0x00,0x00 +0011e8 00000000 DCB 0x00,0x00,0x00,0x00 +0011ec 00000000 DCB 0x00,0x00,0x00,0x00 +0011f0 00000000 DCB 0x00,0x00,0x00,0x00 +0011f4 00000000 DCB 0x00,0x00,0x00,0x00 +0011f8 00000000 DCB 0x00,0x00,0x00,0x00 +0011fc 390021be DCB 0x39,0x00,0x21,0xbe +001200 01020304 DCB 0x01,0x02,0x03,0x04 +001204 00000000 DCB 0x00,0x00,0x00,0x00 +001208 00000000 DCB 0x00,0x00,0x00,0x00 +00120c 00000000 DCB 0x00,0x00,0x00,0x00 +001210 00000000 DCB 0x00,0x00,0x00,0x00 +001214 00000000 DCB 0x00,0x00,0x00,0x00 +001218 00000000 DCB 0x00,0x00,0x00,0x00 +00121c 00000000 DCB 0x00,0x00,0x00,0x00 +001220 39001fc0 DCB 0x39,0x00,0x1f,0xc0 +001224 007a7a00 DCB 0x00,0x7a,0x7a,0x00 +001228 7a7a006a DCB 0x7a,0x7a,0x00,0x6a +00122c 4600261a DCB 0x46,0x00,0x26,0x1a +001230 000f0b00 DCB 0x00,0x0f,0x0b,0x00 +001234 0b000000 DCB 0x0b,0x00,0x00,0x00 +001238 00000000 DCB 0x00,0x00,0x00,0x00 +00123c 00000000 DCB 0x00,0x00,0x00,0x00 +001240 00003900 DCB 0x00,0x00,0x39,0x00 +001244 1fc1009a DCB 0x1f,0xc1,0x00,0x9a +001248 9a009a9a DCB 0x9a,0x00,0x9a,0x9a +00124c 006a4600 DCB 0x00,0x6a,0x46,0x00 +001250 261a000f DCB 0x26,0x1a,0x00,0x0f +001254 0b000b00 DCB 0x0b,0x00,0x0b,0x00 +001258 00000000 DCB 0x00,0x00,0x00,0x00 +00125c 00000000 DCB 0x00,0x00,0x00,0x00 +001260 00000000 DCB 0x00,0x00,0x00,0x00 +001264 39001fc2 DCB 0x39,0x00,0x1f,0xc2 +001268 00969600 DCB 0x00,0x96,0x96,0x00 +00126c 9696006a DCB 0x96,0x96,0x00,0x6a +001270 4600261b DCB 0x46,0x00,0x26,0x1b +001274 000f0b00 DCB 0x00,0x0f,0x0b,0x00 +001278 0b000000 DCB 0x0b,0x00,0x00,0x00 +00127c 00000000 DCB 0x00,0x00,0x00,0x00 +001280 00000000 DCB 0x00,0x00,0x00,0x00 +001284 00003900 DCB 0x00,0x00,0x39,0x00 +001288 07c41030 DCB 0x07,0xc4,0x10,0x30 +00128c 1c001c1c DCB 0x1c,0x00,0x1c,0x1c +001290 390007c5 DCB 0x39,0x00,0x07,0xc5 +001294 22606022 DCB 0x22,0x60,0x60,0x22 +001298 60603900 DCB 0x60,0x60,0x39,0x00 +00129c 29d60fff DCB 0x29,0xd6,0x0f,0xff +0012a0 07ff0333 DCB 0x07,0xff,0x03,0x33 +0012a4 01470146 DCB 0x01,0x47,0x01,0x46 +0012a8 00cd0066 DCB 0x00,0xcd,0x00,0x66 +0012ac 003a0014 DCB 0x00,0x3a,0x00,0x14 +0012b0 00080001 DCB 0x00,0x08,0x00,0x01 +0012b4 00000000 DCB 0x00,0x00,0x00,0x00 +0012b8 00000000 DCB 0x00,0x00,0x00,0x00 +0012bc 00000000 DCB 0x00,0x00,0x00,0x00 +0012c0 00000000 DCB 0x00,0x00,0x00,0x00 +0012c4 00003900 DCB 0x00,0x00,0x39,0x00 +0012c8 15d703ff DCB 0x15,0xd7,0x03,0xff +0012cc 01ff0000 DCB 0x01,0xff,0x00,0x00 +0012d0 000003ff DCB 0x00,0x00,0x03,0xff +0012d4 01ff0000 DCB 0x01,0xff,0x00,0x00 +0012d8 000003ff DCB 0x00,0x00,0x03,0xff +0012dc 01ff3900 DCB 0x01,0xff,0x39,0x00 +0012e0 029f0c39 DCB 0x02,0x9f,0x0c,0x39 +0012e4 0009b4f0 DCB 0x00,0x09,0xb4,0xf0 +0012e8 c0c01b1b DCB 0xc0,0xc0,0x1b,0x1b +0012ec 00001639 DCB 0x00,0x00,0x16,0x39 +0012f0 00029f08 DCB 0x00,0x02,0x9f,0x08 +0012f4 390004b2 DCB 0x39,0x00,0x04,0xb2 +0012f8 10000239 DCB 0x10,0x00,0x02,0x39 +0012fc 0002b411 DCB 0x00,0x02,0xb4,0x11 +001300 390008b5 DCB 0x39,0x00,0x08,0xb5 +001304 000201ff DCB 0x00,0x02,0x01,0xff +001308 2040c039 DCB 0x20,0x40,0xc0,0x39 +00130c 0003b658 DCB 0x00,0x03,0xb6,0x58 +001310 03390037 DCB 0x03,0x39,0x00,0x37 +001314 b733ffff DCB 0xb7,0x33,0xff,0xff +001318 33ffff33 DCB 0x33,0xff,0xff,0x33 +00131c ffff33ff DCB 0xff,0xff,0x33,0xff +001320 ff33ffff DCB 0xff,0x33,0xff,0xff +001324 33ffff33 DCB 0x33,0xff,0xff,0x33 +001328 ffff33ff DCB 0xff,0xff,0x33,0xff +00132c ff33ffff DCB 0xff,0x33,0xff,0xff +001330 33ffff33 DCB 0x33,0xff,0xff,0x33 +001334 ffff33ff DCB 0xff,0xff,0x33,0xff +001338 ff33ffff DCB 0xff,0x33,0xff,0xff +00133c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001340 ffff33ff DCB 0xff,0xff,0x33,0xff +001344 ff33ffff DCB 0xff,0x33,0xff,0xff +001348 33ffff39 DCB 0x33,0xff,0xff,0x39 +00134c 0037b833 DCB 0x00,0x37,0xb8,0x33 +001350 ffff33ff DCB 0xff,0xff,0x33,0xff +001354 ff33ffff DCB 0xff,0x33,0xff,0xff +001358 33ffff33 DCB 0x33,0xff,0xff,0x33 +00135c ffff33ff DCB 0xff,0xff,0x33,0xff +001360 ff33ffff DCB 0xff,0x33,0xff,0xff +001364 33ffff33 DCB 0x33,0xff,0xff,0x33 +001368 ffff33ff DCB 0xff,0xff,0x33,0xff +00136c ff33ffff DCB 0xff,0x33,0xff,0xff +001370 33ffff33 DCB 0x33,0xff,0xff,0x33 +001374 ffff33ff DCB 0xff,0xff,0x33,0xff +001378 ff33ffff DCB 0xff,0x33,0xff,0xff +00137c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001380 ffff33ff DCB 0xff,0xff,0x33,0xff +001384 ff390037 DCB 0xff,0x39,0x00,0x37 +001388 b933ffff DCB 0xb9,0x33,0xff,0xff +00138c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001390 ffff33ff DCB 0xff,0xff,0x33,0xff +001394 ff33ffff DCB 0xff,0x33,0xff,0xff +001398 33ffff33 DCB 0x33,0xff,0xff,0x33 +00139c ffff33ff DCB 0xff,0xff,0x33,0xff +0013a0 ff33ffff DCB 0xff,0x33,0xff,0xff +0013a4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013a8 ffff33ff DCB 0xff,0xff,0x33,0xff +0013ac ff33ffff DCB 0xff,0x33,0xff,0xff +0013b0 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013b4 ffff33ff DCB 0xff,0xff,0x33,0xff +0013b8 ff33ffff DCB 0xff,0x33,0xff,0xff +0013bc 33ffff39 DCB 0x33,0xff,0xff,0x39 +0013c0 0037ba33 DCB 0x00,0x37,0xba,0x33 +0013c4 ffff33ff DCB 0xff,0xff,0x33,0xff +0013c8 ff33ffff DCB 0xff,0x33,0xff,0xff +0013cc 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013d0 ffff33ff DCB 0xff,0xff,0x33,0xff +0013d4 ff33ffff DCB 0xff,0x33,0xff,0xff +0013d8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013dc ffff33ff DCB 0xff,0xff,0x33,0xff +0013e0 ff33ffff DCB 0xff,0x33,0xff,0xff +0013e4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013e8 ffff33ff DCB 0xff,0xff,0x33,0xff +0013ec ff33ffff DCB 0xff,0x33,0xff,0xff +0013f0 33ffff33 DCB 0x33,0xff,0xff,0x33 +0013f4 ffff33ff DCB 0xff,0xff,0x33,0xff +0013f8 ff390037 DCB 0xff,0x39,0x00,0x37 +0013fc bb33ffff DCB 0xbb,0x33,0xff,0xff +001400 33ffff33 DCB 0x33,0xff,0xff,0x33 +001404 ffff33ff DCB 0xff,0xff,0x33,0xff +001408 ff33ffff DCB 0xff,0x33,0xff,0xff +00140c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001410 ffff33ff DCB 0xff,0xff,0x33,0xff +001414 ff33ffff DCB 0xff,0x33,0xff,0xff +001418 33ffff33 DCB 0x33,0xff,0xff,0x33 +00141c ffff33ff DCB 0xff,0xff,0x33,0xff +001420 ff33ffff DCB 0xff,0x33,0xff,0xff +001424 33ffff33 DCB 0x33,0xff,0xff,0x33 +001428 ffff33ff DCB 0xff,0xff,0x33,0xff +00142c ff33ffff DCB 0xff,0x33,0xff,0xff +001430 33ffff39 DCB 0x33,0xff,0xff,0x39 +001434 0037bc44 DCB 0x00,0x37,0xbc,0x44 +001438 2c224418 DCB 0x2c,0x22,0x44,0x18 +00143c 0e4300f4 DCB 0x0e,0x43,0x00,0xf4 +001440 33e6d834 DCB 0x33,0xe6,0xd8,0x34 +001444 d32c4422 DCB 0xd3,0x2c,0x44,0x22 +001448 18440e00 DCB 0x18,0x44,0x0e,0x00 +00144c 33f4e633 DCB 0x33,0xf4,0xe6,0x33 +001450 d8d3442c DCB 0xd8,0xd3,0x44,0x2c +001454 2244180e DCB 0x22,0x44,0x18,0x0e +001458 4300f433 DCB 0x43,0x00,0xf4,0x33 +00145c e6d834d3 DCB 0xe6,0xd8,0x34,0xd3 +001460 2c442218 DCB 0x2c,0x44,0x22,0x18 +001464 440e0033 DCB 0x44,0x0e,0x00,0x33 +001468 f4e633d8 DCB 0xf4,0xe6,0x33,0xd8 +00146c d3390037 DCB 0xd3,0x39,0x00,0x37 +001470 bd33ffff DCB 0xbd,0x33,0xff,0xff +001474 33ffff33 DCB 0x33,0xff,0xff,0x33 +001478 ffff33ff DCB 0xff,0xff,0x33,0xff +00147c ff33ffff DCB 0xff,0x33,0xff,0xff +001480 33ffff33 DCB 0x33,0xff,0xff,0x33 +001484 ffff33ff DCB 0xff,0xff,0x33,0xff +001488 ff33ffff DCB 0xff,0x33,0xff,0xff +00148c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001490 ffff33ff DCB 0xff,0xff,0x33,0xff +001494 ff33ffff DCB 0xff,0x33,0xff,0xff +001498 33ffff33 DCB 0x33,0xff,0xff,0x33 +00149c ffff33ff DCB 0xff,0xff,0x33,0xff +0014a0 ff33ffff DCB 0xff,0x33,0xff,0xff +0014a4 33ffff39 DCB 0x33,0xff,0xff,0x39 +0014a8 0037be33 DCB 0x00,0x37,0xbe,0x33 +0014ac ffff33ff DCB 0xff,0xff,0x33,0xff +0014b0 ff33ffff DCB 0xff,0x33,0xff,0xff +0014b4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014b8 ffff33ff DCB 0xff,0xff,0x33,0xff +0014bc ff33ffff DCB 0xff,0x33,0xff,0xff +0014c0 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014c4 ffff33ff DCB 0xff,0xff,0x33,0xff +0014c8 ff33ffff DCB 0xff,0x33,0xff,0xff +0014cc 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014d0 ffff33ff DCB 0xff,0xff,0x33,0xff +0014d4 ff33ffff DCB 0xff,0x33,0xff,0xff +0014d8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014dc ffff33ff DCB 0xff,0xff,0x33,0xff +0014e0 ff390037 DCB 0xff,0x39,0x00,0x37 +0014e4 bf33ffff DCB 0xbf,0x33,0xff,0xff +0014e8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014ec ffff33ff DCB 0xff,0xff,0x33,0xff +0014f0 ff33ffff DCB 0xff,0x33,0xff,0xff +0014f4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0014f8 ffff33ff DCB 0xff,0xff,0x33,0xff +0014fc ff33ffff DCB 0xff,0x33,0xff,0xff +001500 33ffff33 DCB 0x33,0xff,0xff,0x33 +001504 ffff33ff DCB 0xff,0xff,0x33,0xff +001508 ff33ffff DCB 0xff,0x33,0xff,0xff +00150c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001510 ffff33ff DCB 0xff,0xff,0x33,0xff +001514 ff33ffff DCB 0xff,0x33,0xff,0xff +001518 33ffff39 DCB 0x33,0xff,0xff,0x39 +00151c 0037c033 DCB 0x00,0x37,0xc0,0x33 +001520 ffff33ff DCB 0xff,0xff,0x33,0xff +001524 ff33ffff DCB 0xff,0x33,0xff,0xff +001528 33ffff33 DCB 0x33,0xff,0xff,0x33 +00152c ffff33ff DCB 0xff,0xff,0x33,0xff +001530 ff33ffff DCB 0xff,0x33,0xff,0xff +001534 33ffff33 DCB 0x33,0xff,0xff,0x33 +001538 ffff33ff DCB 0xff,0xff,0x33,0xff +00153c ff33ffff DCB 0xff,0x33,0xff,0xff +001540 33ffff33 DCB 0x33,0xff,0xff,0x33 +001544 ffff33ff DCB 0xff,0xff,0x33,0xff +001548 ff33ffff DCB 0xff,0x33,0xff,0xff +00154c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001550 ffff33ff DCB 0xff,0xff,0x33,0xff +001554 ff390037 DCB 0xff,0x39,0x00,0x37 +001558 c133ffff DCB 0xc1,0x33,0xff,0xff +00155c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001560 ffff33ff DCB 0xff,0xff,0x33,0xff +001564 ff33ffff DCB 0xff,0x33,0xff,0xff +001568 33ffff33 DCB 0x33,0xff,0xff,0x33 +00156c ffff33ff DCB 0xff,0xff,0x33,0xff +001570 ff33ffff DCB 0xff,0x33,0xff,0xff +001574 33ffff33 DCB 0x33,0xff,0xff,0x33 +001578 ffff33ff DCB 0xff,0xff,0x33,0xff +00157c ff33ffff DCB 0xff,0x33,0xff,0xff +001580 33ffff33 DCB 0x33,0xff,0xff,0x33 +001584 ffff33ff DCB 0xff,0xff,0x33,0xff +001588 ff33ffff DCB 0xff,0x33,0xff,0xff +00158c 33ffff39 DCB 0x33,0xff,0xff,0x39 +001590 0037c244 DCB 0x00,0x37,0xc2,0x44 +001594 2c224418 DCB 0x2c,0x22,0x44,0x18 +001598 0e4300f4 DCB 0x0e,0x43,0x00,0xf4 +00159c 33e6d834 DCB 0x33,0xe6,0xd8,0x34 +0015a0 d32c4422 DCB 0xd3,0x2c,0x44,0x22 +0015a4 18440e00 DCB 0x18,0x44,0x0e,0x00 +0015a8 33f4e633 DCB 0x33,0xf4,0xe6,0x33 +0015ac d8d3442c DCB 0xd8,0xd3,0x44,0x2c +0015b0 2244180e DCB 0x22,0x44,0x18,0x0e +0015b4 4300f433 DCB 0x43,0x00,0xf4,0x33 +0015b8 e6d834d3 DCB 0xe6,0xd8,0x34,0xd3 +0015bc 2c442218 DCB 0x2c,0x44,0x22,0x18 +0015c0 440e0033 DCB 0x44,0x0e,0x00,0x33 +0015c4 f4e633d8 DCB 0xf4,0xe6,0x33,0xd8 +0015c8 d3390037 DCB 0xd3,0x39,0x00,0x37 +0015cc c333ffff DCB 0xc3,0x33,0xff,0xff +0015d0 33ffff33 DCB 0x33,0xff,0xff,0x33 +0015d4 ffff33ff DCB 0xff,0xff,0x33,0xff +0015d8 ff33ffff DCB 0xff,0x33,0xff,0xff +0015dc 33ffff33 DCB 0x33,0xff,0xff,0x33 +0015e0 ffff33ff DCB 0xff,0xff,0x33,0xff +0015e4 ff33ffff DCB 0xff,0x33,0xff,0xff +0015e8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0015ec ffff33ff DCB 0xff,0xff,0x33,0xff +0015f0 ff33ffff DCB 0xff,0x33,0xff,0xff +0015f4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0015f8 ffff33ff DCB 0xff,0xff,0x33,0xff +0015fc ff33ffff DCB 0xff,0x33,0xff,0xff +001600 33ffff39 DCB 0x33,0xff,0xff,0x39 +001604 0037c433 DCB 0x00,0x37,0xc4,0x33 +001608 ffff33ff DCB 0xff,0xff,0x33,0xff +00160c ff33ffff DCB 0xff,0x33,0xff,0xff +001610 33ffff33 DCB 0x33,0xff,0xff,0x33 +001614 ffff33ff DCB 0xff,0xff,0x33,0xff +001618 ff33ffff DCB 0xff,0x33,0xff,0xff +00161c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001620 ffff33ff DCB 0xff,0xff,0x33,0xff +001624 ff33ffff DCB 0xff,0x33,0xff,0xff +001628 33ffff33 DCB 0x33,0xff,0xff,0x33 +00162c ffff33ff DCB 0xff,0xff,0x33,0xff +001630 ff33ffff DCB 0xff,0x33,0xff,0xff +001634 33ffff33 DCB 0x33,0xff,0xff,0x33 +001638 ffff33ff DCB 0xff,0xff,0x33,0xff +00163c ff390037 DCB 0xff,0x39,0x00,0x37 +001640 c533ffff DCB 0xc5,0x33,0xff,0xff +001644 33ffff33 DCB 0x33,0xff,0xff,0x33 +001648 ffff33ff DCB 0xff,0xff,0x33,0xff +00164c ff33ffff DCB 0xff,0x33,0xff,0xff +001650 33ffff33 DCB 0x33,0xff,0xff,0x33 +001654 ffff33ff DCB 0xff,0xff,0x33,0xff +001658 ff33ffff DCB 0xff,0x33,0xff,0xff +00165c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001660 ffff33ff DCB 0xff,0xff,0x33,0xff +001664 ff33ffff DCB 0xff,0x33,0xff,0xff +001668 33ffff33 DCB 0x33,0xff,0xff,0x33 +00166c ffff33ff DCB 0xff,0xff,0x33,0xff +001670 ff33ffff DCB 0xff,0x33,0xff,0xff +001674 33ffff39 DCB 0x33,0xff,0xff,0x39 +001678 0037c633 DCB 0x00,0x37,0xc6,0x33 +00167c ffff33ff DCB 0xff,0xff,0x33,0xff +001680 ff33ffff DCB 0xff,0x33,0xff,0xff +001684 33ffff33 DCB 0x33,0xff,0xff,0x33 +001688 ffff33ff DCB 0xff,0xff,0x33,0xff +00168c ff33ffff DCB 0xff,0x33,0xff,0xff +001690 33ffff33 DCB 0x33,0xff,0xff,0x33 +001694 ffff33ff DCB 0xff,0xff,0x33,0xff +001698 ff33ffff DCB 0xff,0x33,0xff,0xff +00169c 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016a0 ffff33ff DCB 0xff,0xff,0x33,0xff +0016a4 ff33ffff DCB 0xff,0x33,0xff,0xff +0016a8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016ac ffff33ff DCB 0xff,0xff,0x33,0xff +0016b0 ff390037 DCB 0xff,0x39,0x00,0x37 +0016b4 c733ffff DCB 0xc7,0x33,0xff,0xff +0016b8 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016bc ffff33ff DCB 0xff,0xff,0x33,0xff +0016c0 ff33ffff DCB 0xff,0x33,0xff,0xff +0016c4 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016c8 ffff33ff DCB 0xff,0xff,0x33,0xff +0016cc ff33ffff DCB 0xff,0x33,0xff,0xff +0016d0 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016d4 ffff33ff DCB 0xff,0xff,0x33,0xff +0016d8 ff33ffff DCB 0xff,0x33,0xff,0xff +0016dc 33ffff33 DCB 0x33,0xff,0xff,0x33 +0016e0 ffff33ff DCB 0xff,0xff,0x33,0xff +0016e4 ff33ffff DCB 0xff,0x33,0xff,0xff +0016e8 33ffff39 DCB 0x33,0xff,0xff,0x39 +0016ec 0037c844 DCB 0x00,0x37,0xc8,0x44 +0016f0 2c224418 DCB 0x2c,0x22,0x44,0x18 +0016f4 0e4300f4 DCB 0x0e,0x43,0x00,0xf4 +0016f8 33e6d834 DCB 0x33,0xe6,0xd8,0x34 +0016fc d32c4422 DCB 0xd3,0x2c,0x44,0x22 +001700 18440e00 DCB 0x18,0x44,0x0e,0x00 +001704 33f4e633 DCB 0x33,0xf4,0xe6,0x33 +001708 d8d3442c DCB 0xd8,0xd3,0x44,0x2c +00170c 2244180e DCB 0x22,0x44,0x18,0x0e +001710 4300f433 DCB 0x43,0x00,0xf4,0x33 +001714 e6d834d3 DCB 0xe6,0xd8,0x34,0xd3 +001718 2c442218 DCB 0x2c,0x44,0x22,0x18 +00171c 440e0033 DCB 0x44,0x0e,0x00,0x33 +001720 f4e633d8 DCB 0xf4,0xe6,0x33,0xd8 +001724 d339000a DCB 0xd3,0x39,0x00,0x0a +001728 c916333d DCB 0xc9,0x16,0x33,0x3d +00172c 01000fff DCB 0x01,0x00,0x0f,0xff +001730 00003900 DCB 0x00,0x00,0x39,0x00 +001734 02caf039 DCB 0x02,0xca,0xf0,0x39 +001738 0006cb00 DCB 0x00,0x06,0xcb,0x00 +00173c 017c4200 DCB 0x01,0x7c,0x42,0x00 +001740 390005cc DCB 0x39,0x00,0x05,0xcc +001744 0001001f DCB 0x00,0x01,0x00,0x1f +001748 390004cd DCB 0x39,0x00,0x04,0xcd +00174c 00010039 DCB 0x00,0x01,0x00,0x39 +001750 0021ce00 DCB 0x00,0x21,0xce,0x00 +001754 2500a901 DCB 0x25,0x00,0xa9,0x01 +001758 9c030804 DCB 0x9c,0x03,0x08,0x04 +00175c f407650a DCB 0xf4,0x07,0x65,0x0a +001760 620dee12 DCB 0x62,0x0d,0xee,0x12 +001764 0c16c11c DCB 0x0c,0x16,0xc1,0x1c +001768 1021fc28 DCB 0x10,0x21,0xfc,0x28 +00176c 872fb537 DCB 0x87,0x2f,0xb5,0x37 +001770 863fff39 DCB 0x86,0x3f,0xff,0x39 +001774 000ccffc DCB 0x00,0x0c,0xcf,0xfc +001778 01ffffff DCB 0x01,0xff,0xff,0xff +00177c ffffba4e DCB 0xff,0xff,0xba,0x4e +001780 ed003900 DCB 0xed,0x00,0x39,0x00 +001784 35d00000 DCB 0x35,0xd0,0x00,0x00 +001788 01f1ec23 DCB 0x01,0xf1,0xec,0x23 +00178c e4dc45d7 DCB 0xe4,0xdc,0x45,0xd7 +001790 de67cbc2 DCB 0xde,0x67,0xcb,0xc2 +001794 89c0c4ab DCB 0x89,0xc0,0xc4,0xab +001798 c2bccdb5 DCB 0xc2,0xbc,0xcd,0xb5 +00179c abefaab4 DCB 0xab,0xef,0xaa,0xb4 +0017a0 000001fa DCB 0x00,0x00,0x01,0xfa +0017a4 f123ebe4 DCB 0xf1,0x23,0xeb,0xe4 +0017a8 45e3eb67 DCB 0x45,0xe3,0xeb,0x67 +0017ac dbd189ce DCB 0xdb,0xd1,0x89,0xce +0017b0 d0abccc8 DCB 0xd0,0xab,0xcc,0xc8 +0017b4 cdc1baef DCB 0xcd,0xc1,0xba,0xef +0017b8 b9b83900 DCB 0xb9,0xb8,0x39,0x00 +0017bc 35d10000 DCB 0x35,0xd1,0x00,0x00 +0017c0 01fff023 DCB 0x01,0xff,0xf0,0x23 +0017c4 e8e345e1 DCB 0xe8,0xe3,0x45,0xe1 +0017c8 e567d7cc DCB 0xe5,0x67,0xd7,0xcc +0017cc 89ced5ab DCB 0x89,0xce,0xd5,0xab +0017d0 cecacdc4 DCB 0xce,0xca,0xcd,0xc4 +0017d4 bdefb9b7 DCB 0xbd,0xef,0xb9,0xb7 +0017d8 000001f1 DCB 0x00,0x00,0x01,0xf1 +0017dc eb23e1dd DCB 0xeb,0x23,0xe1,0xdd +0017e0 45d0d067 DCB 0x45,0xd0,0xd0,0x67 +0017e4 bfb1899d DCB 0xbf,0xb1,0x89,0x9d +0017e8 8aab7862 DCB 0x8a,0xab,0x78,0x62 +0017ec cd4930ef DCB 0xcd,0x49,0x30,0xef +0017f0 14063900 DCB 0x14,0x06,0x39,0x00 +0017f4 35d20000 DCB 0x35,0xd2,0x00,0x00 +0017f8 01f5ee23 DCB 0x01,0xf5,0xee,0x23 +0017fc e8e145d6 DCB 0xe8,0xe1,0x45,0xd6 +001800 d467bfb6 DCB 0xd4,0x67,0xbf,0xb6 +001804 89a699ab DCB 0x89,0xa6,0x99,0xab +001808 8875cd60 DCB 0x88,0x75,0xcd,0x60 +00180c 47ef2905 DCB 0x47,0xef,0x29,0x05 +001810 000001f4 DCB 0x00,0x00,0x01,0xf4 +001814 ef23e7e1 DCB 0xef,0x23,0xe7,0xe1 +001818 45d7d467 DCB 0x45,0xd7,0xd4,0x67 +00181c c2b689a4 DCB 0xc2,0xb6,0x89,0xa4 +001820 91ab7a63 DCB 0x91,0xab,0x7a,0x63 +001824 cd513bef DCB 0xcd,0x51,0x3b,0xef +001828 1e013900 DCB 0x1e,0x01,0x39,0x00 +00182c 35d30000 DCB 0x35,0xd3,0x00,0x00 +001830 01ffec23 DCB 0x01,0xff,0xec,0x23 +001834 e3d945d1 DCB 0xe3,0xd9,0x45,0xd1 +001838 d667c1b7 DCB 0xd6,0x67,0xc1,0xb7 +00183c 89b4beab DCB 0x89,0xb4,0xbe,0xab +001840 b3abcda4 DCB 0xb3,0xab,0xcd,0xa4 +001844 9aef99a1 DCB 0x9a,0xef,0x99,0xa1 +001848 0000110b DCB 0x00,0x00,0x11,0x0b +00184c fc23f5e4 DCB 0xfc,0x23,0xf5,0xe4 +001850 45dfe467 DCB 0x45,0xdf,0xe4,0x67 +001854 cdc589bf DCB 0xcd,0xc5,0x89,0xbf +001858 cdabb7b4 DCB 0xcd,0xab,0xb7,0xb4 +00185c cdaaa4ef DCB 0xcd,0xaa,0xa4,0xef +001860 a6a53900 DCB 0xa6,0xa5,0x39,0x00 +001864 35d40000 DCB 0x35,0xd4,0x00,0x00 +001868 1102f223 DCB 0x11,0x02,0xf2,0x23 +00186c e9e045dc DCB 0xe9,0xe0,0x45,0xdc +001870 dd67ccc2 DCB 0xdd,0x67,0xcc,0xc2 +001874 89c4d0ab DCB 0x89,0xc4,0xd0,0xab +001878 bfb9cdb3 DCB 0xbf,0xb9,0xcd,0xb3 +00187c acefa8a5 DCB 0xac,0xef,0xa8,0xa5 +001880 00001216 DCB 0x00,0x00,0x12,0x16 +001884 20342830 DCB 0x20,0x34,0x28,0x30 +001888 56313878 DCB 0x56,0x31,0x38,0x78 +00188c 2f299a19 DCB 0x2f,0x29,0x9a,0x19 +001890 10abffed DCB 0x10,0xab,0xff,0xed +001894 cdd6bcef DCB 0xcd,0xd6,0xbc,0xef +001898 afb23900 DCB 0xaf,0xb2,0x39,0x00 +00189c 35d50000 DCB 0x35,0xd5,0x00,0x00 +0018a0 12333634 DCB 0x12,0x33,0x36,0x34 +0018a4 3f455649 DCB 0x3f,0x45,0x56,0x49 +0018a8 4e784748 DCB 0x4e,0x78,0x47,0x48 +0018ac 9a3f3cbc DCB 0x9a,0x3f,0x3c,0xbc +0018b0 3029dd15 DCB 0x30,0x29,0xdd,0x15 +0018b4 feefdebe DCB 0xfe,0xef,0xde,0xbe +0018b8 00001218 DCB 0x00,0x00,0x12,0x18 +0018bc 26343139 DCB 0x26,0x34,0x31,0x39 +0018c0 563d4278 DCB 0x56,0x3d,0x42,0x78 +0018c4 3b389a2d DCB 0x3b,0x38,0x9a,0x2d +0018c8 22bc0e0a DCB 0x22,0xbc,0x0e,0x0a +0018cc cdf8e0ef DCB 0xcd,0xf8,0xe0,0xef +0018d0 c9b93900 DCB 0xc9,0xb9,0x39,0x00 +0018d4 35d68000 DCB 0x35,0xd6,0x80,0x00 +0018d8 02d90834 DCB 0x02,0xd9,0x08,0x34 +0018dc 131a46e9 DCB 0x13,0x1a,0x46,0xe9 +0018e0 3c78768c DCB 0x3c,0x78,0x76,0x8c +0018e4 9aa4bebc DCB 0x9a,0xa4,0xbe,0xbc +0018e8 ced8ded7 DCB 0xce,0xd8,0xde,0xd7 +0018ec d7f1f416 DCB 0xd7,0xf1,0xf4,0x16 +0018f0 800002cf DCB 0x80,0x00,0x02,0xcf +0018f4 01340a1a DCB 0x01,0x34,0x0a,0x1a +0018f8 46ee4478 DCB 0x46,0xee,0x44,0x78 +0018fc 7b909aac DCB 0x7b,0x90,0x9a,0xac +001900 c7bcd5d8 DCB 0xc7,0xbc,0xd5,0xd8 +001904 dee3edf0 DCB 0xde,0xe3,0xed,0xf0 +001908 f4fc3900 DCB 0xf4,0xfc,0x39,0x00 +00190c 1bd78000 DCB 0x1b,0xd7,0x80,0x00 +001910 02f11b34 DCB 0x02,0xf1,0x1b,0x34 +001914 272a46ff DCB 0x27,0x2a,0x46,0xff +001918 5d7894ad DCB 0x5d,0x78,0x94,0xad +00191c 9ac7dcbc DCB 0x9a,0xc7,0xdc,0xbc +001920 e9e9dee7 DCB 0xe9,0xe9,0xde,0xe7 +001924 e4f1f406 DCB 0xe4,0xf1,0xf4,0x06 +001928 390012d8 DCB 0x39,0x00,0x12,0xd8 +00192c 8096918d DCB 0x80,0x96,0x91,0x8d +001930 8b8a9690 DCB 0x8b,0x8a,0x96,0x90 +001934 8e879096 DCB 0x8e,0x87,0x90,0x96 +001938 92858f94 DCB 0x92,0x85,0x8f,0x94 +00193c 96390002 DCB 0x96,0x39,0x00,0x02 +001940 9f093900 DCB 0x9f,0x09,0x39,0x00 +001944 03b29c09 DCB 0x03,0xb2,0x9c,0x09 +001948 390009b3 DCB 0x39,0x00,0x09,0xb3 +00194c 00000000 DCB 0x00,0x00,0x00,0x00 +001950 80808080 DCB 0x80,0x80,0x80,0x80 +001954 390010b4 DCB 0x39,0x00,0x10,0xb4 +001958 76ffdd43 DCB 0x76,0xff,0xdd,0x43 +00195c 84483247 DCB 0x84,0x48,0x32,0x47 +001960 2211850d DCB 0x22,0x11,0x85,0x0d +001964 00ac0139 DCB 0x00,0xac,0x01,0x39 +001968 0023c000 DCB 0x00,0x23,0xc0,0x00 +00196c 0001649c DCB 0x00,0x01,0x64,0x9c +001970 c8185552 DCB 0xc8,0x18,0x55,0x52 +001974 729ab85a DCB 0x72,0x9a,0xb8,0x5a +001978 e0f42658 DCB 0xe0,0xf4,0x26,0x58 +00197c 00000164 DCB 0x00,0x00,0x01,0x64 +001980 9cc81855 DCB 0x9c,0xc8,0x18,0x55 +001984 52729ab8 DCB 0x52,0x72,0x9a,0xb8 +001988 5ae0f426 DCB 0x5a,0xe0,0xf4,0x26 +00198c 5839001d DCB 0x58,0x39,0x00,0x1d +001990 c1fff5ed DCB 0xc1,0xff,0xf5,0xed +001994 e5ddd6d0 DCB 0xe5,0xdd,0xd6,0xd0 +001998 d0cd0fc5 DCB 0xd0,0xcd,0x0f,0xc5 +00199c c3c3c300 DCB 0xc3,0xc3,0xc3,0x00 +0019a0 0f13161a DCB 0x0f,0x13,0x16,0x1a +0019a4 2023252d DCB 0x20,0x23,0x25,0x2d +0019a8 002d2d2d DCB 0x00,0x2d,0x2d,0x2d +0019ac 2d39001d DCB 0x2d,0x39,0x00,0x1d +0019b0 c2fff5ed DCB 0xc2,0xff,0xf5,0xed +0019b4 e5ddd6d3 DCB 0xe5,0xdd,0xd6,0xd3 +0019b8 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +0019bc c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +0019c0 0f15151b DCB 0x0f,0x15,0x15,0x1b +0019c4 202f3535 DCB 0x20,0x2f,0x35,0x35 +0019c8 00383838 DCB 0x00,0x38,0x38,0x38 +0019cc 3839001d DCB 0x38,0x39,0x00,0x1d +0019d0 c3fff5ed DCB 0xc3,0xff,0xf5,0xed +0019d4 e5ded6d3 DCB 0xe5,0xde,0xd6,0xd3 +0019d8 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +0019dc c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +0019e0 0f13151b DCB 0x0f,0x13,0x15,0x1b +0019e4 202f3535 DCB 0x20,0x2f,0x35,0x35 +0019e8 00383838 DCB 0x00,0x38,0x38,0x38 +0019ec 3839001d DCB 0x38,0x39,0x00,0x1d +0019f0 c4fff5ed DCB 0xc4,0xff,0xf5,0xed +0019f4 e5ded6d3 DCB 0xe5,0xde,0xd6,0xd3 +0019f8 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +0019fc c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001a00 0f13151b DCB 0x0f,0x13,0x15,0x1b +001a04 202f3535 DCB 0x20,0x2f,0x35,0x35 +001a08 00383838 DCB 0x00,0x38,0x38,0x38 +001a0c 3839001d DCB 0x38,0x39,0x00,0x1d +001a10 c5fff5ed DCB 0xc5,0xff,0xf5,0xed +001a14 e5ddd6d3 DCB 0xe5,0xdd,0xd6,0xd3 +001a18 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001a1c c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001a20 0f15151b DCB 0x0f,0x15,0x15,0x1b +001a24 202f3535 DCB 0x20,0x2f,0x35,0x35 +001a28 00383838 DCB 0x00,0x38,0x38,0x38 +001a2c 3839001d DCB 0x38,0x39,0x00,0x1d +001a30 c6fff5ed DCB 0xc6,0xff,0xf5,0xed +001a34 e8e0d6d3 DCB 0xe8,0xe0,0xd6,0xd3 +001a38 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001a3c c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001a40 0f15151b DCB 0x0f,0x15,0x15,0x1b +001a44 202f3535 DCB 0x20,0x2f,0x35,0x35 +001a48 00383838 DCB 0x00,0x38,0x38,0x38 +001a4c 3839001d DCB 0x38,0x39,0x00,0x1d +001a50 c7fff5ed DCB 0xc7,0xff,0xf5,0xed +001a54 e8e0d6d3 DCB 0xe8,0xe0,0xd6,0xd3 +001a58 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001a5c c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001a60 0f15151b DCB 0x0f,0x15,0x15,0x1b +001a64 202f3535 DCB 0x20,0x2f,0x35,0x35 +001a68 00383838 DCB 0x00,0x38,0x38,0x38 +001a6c 3839001d DCB 0x38,0x39,0x00,0x1d +001a70 c8fff5ed DCB 0xc8,0xff,0xf5,0xed +001a74 e8e0d6d3 DCB 0xe8,0xe0,0xd6,0xd3 +001a78 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001a7c c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001a80 0f15151b DCB 0x0f,0x15,0x15,0x1b +001a84 202f3535 DCB 0x20,0x2f,0x35,0x35 +001a88 00383838 DCB 0x00,0x38,0x38,0x38 +001a8c 3839001d DCB 0x38,0x39,0x00,0x1d +001a90 c9fff5ed DCB 0xc9,0xff,0xf5,0xed +001a94 e8e0d6d3 DCB 0xe8,0xe0,0xd6,0xd3 +001a98 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001a9c c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001aa0 0f15151b DCB 0x0f,0x15,0x15,0x1b +001aa4 202f3535 DCB 0x20,0x2f,0x35,0x35 +001aa8 00383838 DCB 0x00,0x38,0x38,0x38 +001aac 3839001d DCB 0x38,0x39,0x00,0x1d +001ab0 cafff5ed DCB 0xca,0xff,0xf5,0xed +001ab4 e5ddd6d3 DCB 0xe5,0xdd,0xd6,0xd3 +001ab8 cdc90fc9 DCB 0xcd,0xc9,0x0f,0xc9 +001abc c0c0c000 DCB 0xc0,0xc0,0xc0,0x00 +001ac0 0f15151b DCB 0x0f,0x15,0x15,0x1b +001ac4 202f3535 DCB 0x20,0x2f,0x35,0x35 +001ac8 00383838 DCB 0x00,0x38,0x38,0x38 +001acc 3839001d DCB 0x38,0x39,0x00,0x1d +001ad0 cbfff3f0 DCB 0xcb,0xff,0xf3,0xf0 +001ad4 e8ddd8d5 DCB 0xe8,0xdd,0xd8,0xd5 +001ad8 d0cd0fc5 DCB 0xd0,0xcd,0x0f,0xc5 +001adc c3c3c300 DCB 0xc3,0xc3,0xc3,0x00 +001ae0 0815181f DCB 0x08,0x15,0x18,0x1f +001ae4 2023252d DCB 0x20,0x23,0x25,0x2d +001ae8 002d2d2d DCB 0x00,0x2d,0x2d,0x2d +001aec 2d39001d DCB 0x2d,0x39,0x00,0x1d +001af0 ccfff3f0 DCB 0xcc,0xff,0xf3,0xf0 +001af4 e8ddd8d5 DCB 0xe8,0xdd,0xd8,0xd5 +001af8 d0cd0fc5 DCB 0xd0,0xcd,0x0f,0xc5 +001afc c3c3c300 DCB 0xc3,0xc3,0xc3,0x00 +001b00 080f121f DCB 0x08,0x0f,0x12,0x1f +001b04 2023252d DCB 0x20,0x23,0x25,0x2d +001b08 002d2d2d DCB 0x00,0x2d,0x2d,0x2d +001b0c 2d39001d DCB 0x2d,0x39,0x00,0x1d +001b10 cdfff3f0 DCB 0xcd,0xff,0xf3,0xf0 +001b14 e8ddd8d5 DCB 0xe8,0xdd,0xd8,0xd5 +001b18 d0cd0fc5 DCB 0xd0,0xcd,0x0f,0xc5 +001b1c c3c3c300 DCB 0xc3,0xc3,0xc3,0x00 +001b20 0817181f DCB 0x08,0x17,0x18,0x1f +001b24 2023252d DCB 0x20,0x23,0x25,0x2d +001b28 002d2d2d DCB 0x00,0x2d,0x2d,0x2d +001b2c 2d39001d DCB 0x2d,0x39,0x00,0x1d +001b30 cefff3f0 DCB 0xce,0xff,0xf3,0xf0 +001b34 e8ddd8d5 DCB 0xe8,0xdd,0xd8,0xd5 +001b38 d0cd0fc5 DCB 0xd0,0xcd,0x0f,0xc5 +001b3c c3c3c300 DCB 0xc3,0xc3,0xc3,0x00 +001b40 0817181f DCB 0x08,0x17,0x18,0x1f +001b44 2023252d DCB 0x20,0x23,0x25,0x2d +001b48 002d2d2d DCB 0x00,0x2d,0x2d,0x2d +001b4c 2d39001d DCB 0x2d,0x39,0x00,0x1d +001b50 cffff5f3 DCB 0xcf,0xff,0xf5,0xf3 +001b54 edded8cd DCB 0xed,0xde,0xd8,0xcd +001b58 c8cf0fcd DCB 0xc8,0xcf,0x0f,0xcd +001b5c c5c3c300 DCB 0xc5,0xc3,0xc3,0x00 +001b60 080d0f12 DCB 0x08,0x0d,0x0f,0x12 +001b64 1517181d DCB 0x15,0x17,0x18,0x1d +001b68 001f2025 DCB 0x00,0x1f,0x20,0x25 +001b6c 2d39001d DCB 0x2d,0x39,0x00,0x1d +001b70 d1fff5f3 DCB 0xd1,0xff,0xf5,0xf3 +001b74 edded8cd DCB 0xed,0xde,0xd8,0xcd +001b78 c8cf0fcd DCB 0xc8,0xcf,0x0f,0xcd +001b7c c5c3c300 DCB 0xc5,0xc3,0xc3,0x00 +001b80 080d0f12 DCB 0x08,0x0d,0x0f,0x12 +001b84 1517181d DCB 0x15,0x17,0x18,0x1d +001b88 001f2025 DCB 0x00,0x1f,0x20,0x25 +001b8c 2d39001d DCB 0x2d,0x39,0x00,0x1d +001b90 d2fff5f3 DCB 0xd2,0xff,0xf5,0xf3 +001b94 edded8cd DCB 0xed,0xde,0xd8,0xcd +001b98 c8cf0fcd DCB 0xc8,0xcf,0x0f,0xcd +001b9c c5c3c300 DCB 0xc5,0xc3,0xc3,0x00 +001ba0 080d0f12 DCB 0x08,0x0d,0x0f,0x12 +001ba4 1517181d DCB 0x15,0x17,0x18,0x1d +001ba8 001f2025 DCB 0x00,0x1f,0x20,0x25 +001bac 2d39001d DCB 0x2d,0x39,0x00,0x1d +001bb0 d3fff5f3 DCB 0xd3,0xff,0xf5,0xf3 +001bb4 edded8cd DCB 0xed,0xde,0xd8,0xcd +001bb8 c8cf0fcd DCB 0xc8,0xcf,0x0f,0xcd +001bbc c5c3c300 DCB 0xc5,0xc3,0xc3,0x00 +001bc0 080d0f12 DCB 0x08,0x0d,0x0f,0x12 +001bc4 1517181d DCB 0x15,0x17,0x18,0x1d +001bc8 001f2025 DCB 0x00,0x1f,0x20,0x25 +001bcc 2d39001d DCB 0x2d,0x39,0x00,0x1d +001bd0 d4fff5f3 DCB 0xd4,0xff,0xf5,0xf3 +001bd4 edded8cd DCB 0xed,0xde,0xd8,0xcd +001bd8 c8cf0fcd DCB 0xc8,0xcf,0x0f,0xcd +001bdc c5c3c300 DCB 0xc5,0xc3,0xc3,0x00 +001be0 0f120f12 DCB 0x0f,0x12,0x0f,0x12 +001be4 1517181d DCB 0x15,0x17,0x18,0x1d +001be8 001f2025 DCB 0x00,0x1f,0x20,0x25 +001bec 2d390011 DCB 0x2d,0x39,0x00,0x11 +001bf0 d517f9fe DCB 0xd5,0x17,0xf9,0xfe +001bf4 fd050000 DCB 0xfd,0x05,0x00,0x00 +001bf8 0017f9f8 DCB 0x00,0x17,0xf9,0xf8 +001bfc fe000000 DCB 0xfe,0x00,0x00,0x00 +001c00 00390011 DCB 0x00,0x39,0x00,0x11 +001c04 d618f5f8 DCB 0xd6,0x18,0xf5,0xf8 +001c08 03000000 DCB 0x03,0x00,0x00,0x00 +001c0c 0017ebed DCB 0x00,0x17,0xeb,0xed +001c10 ef000000 DCB 0xef,0x00,0x00,0x00 +001c14 0039000d DCB 0x00,0x39,0x00,0x0d +001c18 d7050080 DCB 0xd7,0x05,0x00,0x80 +001c1c 0080af00 DCB 0x00,0x80,0xaf,0x00 +001c20 80008003 DCB 0x80,0x00,0x80,0x03 +001c24 ff390011 DCB 0xff,0x39,0x00,0x11 +001c28 d8202020 DCB 0xd8,0x20,0x20,0x20 +001c2c 20202020 DCB 0x20,0x20,0x20,0x20 +001c30 20202020 DCB 0x20,0x20,0x20,0x20 +001c34 20202020 DCB 0x20,0x20,0x20,0x20 +001c38 20390006 DCB 0x20,0x39,0x00,0x06 +001c3c ee301000 DCB 0xee,0x30,0x10,0x00 +001c40 10ff3900 DCB 0x10,0xff,0x39,0x00 +001c44 029f0a39 DCB 0x02,0x9f,0x0a,0x39 +001c48 000cb21f DCB 0x00,0x0c,0xb2,0x1f +001c4c 00100100 DCB 0x00,0x10,0x01,0x00 +001c50 07000000 DCB 0x07,0x00,0x00,0x00 +001c54 11003900 DCB 0x11,0x00,0x39,0x00 +001c58 2bb31010 DCB 0x2b,0xb3,0x10,0x10 +001c5c 00101000 DCB 0x00,0x10,0x10,0x00 +001c60 00000000 DCB 0x00,0x00,0x00,0x00 +001c64 00000000 DCB 0x00,0x00,0x00,0x00 +001c68 00000000 DCB 0x00,0x00,0x00,0x00 +001c6c 00000010 DCB 0x00,0x00,0x00,0x10 +001c70 10001010 DCB 0x10,0x00,0x10,0x10 +001c74 00000000 DCB 0x00,0x00,0x00,0x00 +001c78 00003f00 DCB 0x00,0x00,0x3f,0x00 +001c7c 00000000 DCB 0x00,0x00,0x00,0x00 +001c80 003f0000 DCB 0x00,0x3f,0x00,0x00 +001c84 39002bb4 DCB 0x39,0x00,0x2b,0xb4 +001c88 00000000 DCB 0x00,0x00,0x00,0x00 +001c8c 3f000000 DCB 0x3f,0x00,0x00,0x00 +001c90 0000003f DCB 0x00,0x00,0x00,0x3f +001c94 00000000 DCB 0x00,0x00,0x00,0x00 +001c98 00003f00 DCB 0x00,0x00,0x3f,0x00 +001c9c 00000000 DCB 0x00,0x00,0x00,0x00 +001ca0 003f0000 DCB 0x00,0x3f,0x00,0x00 +001ca4 00000000 DCB 0x00,0x00,0x00,0x00 +001ca8 3f000000 DCB 0x3f,0x00,0x00,0x00 +001cac 0000003f DCB 0x00,0x00,0x00,0x3f +001cb0 00003900 DCB 0x00,0x00,0x39,0x00 +001cb4 2bb50000 DCB 0x2b,0xb5,0x00,0x00 +001cb8 00000000 DCB 0x00,0x00,0x00,0x00 +001cbc 00101000 DCB 0x00,0x10,0x10,0x00 +001cc0 10100000 DCB 0x10,0x10,0x00,0x00 +001cc4 10100010 DCB 0x10,0x10,0x00,0x10 +001cc8 10000000 DCB 0x10,0x00,0x00,0x00 +001ccc 00000000 DCB 0x00,0x00,0x00,0x00 +001cd0 00000000 DCB 0x00,0x00,0x00,0x00 +001cd4 00003f00 DCB 0x00,0x00,0x3f,0x00 +001cd8 00000000 DCB 0x00,0x00,0x00,0x00 +001cdc 003f0000 DCB 0x00,0x3f,0x00,0x00 +001ce0 39000cbe DCB 0x39,0x00,0x0c,0xbe +001ce4 001fff13 DCB 0x00,0x1f,0xff,0x13 +001ce8 910f0400 DCB 0x91,0x0f,0x04,0x00 +001cec 2480ff39 DCB 0x24,0x80,0xff,0x39 +001cf0 00029f0b DCB 0x00,0x02,0x9f,0x0b +001cf4 39000ab2 DCB 0x39,0x00,0x0a,0xb2 +001cf8 013f3f0f DCB 0x01,0x3f,0x3f,0x0f +001cfc 3f0f5f0f DCB 0x3f,0x0f,0x5f,0x0f +001d00 0f390031 DCB 0x0f,0x39,0x00,0x31 +001d04 b9320000 DCB 0xb9,0x32,0x00,0x00 +001d08 0000006b DCB 0x00,0x00,0x00,0x6b +001d0c 54241cb0 DCB 0x54,0x24,0x1c,0xb0 +001d10 14c85c24 DCB 0x14,0xc8,0x5c,0x24 +001d14 1cb0ff00 DCB 0x1c,0xb0,0xff,0x00 +001d18 00000000 DCB 0x00,0x00,0x00,0x00 +001d1c 000000ff DCB 0x00,0x00,0x00,0xff +001d20 00000000 DCB 0x00,0x00,0x00,0x00 +001d24 00000000 DCB 0x00,0x00,0x00,0x00 +001d28 ff000000 DCB 0xff,0x00,0x00,0x00 +001d2c 00000000 DCB 0x00,0x00,0x00,0x00 +001d30 00000000 DCB 0x00,0x00,0x00,0x00 +001d34 00390031 DCB 0x00,0x39,0x00,0x31 +001d38 ba320000 DCB 0xba,0x32,0x00,0x00 +001d3c 00000054 DCB 0x00,0x00,0x00,0x54 +001d40 69241cb0 DCB 0x69,0x24,0x1c,0xb0 +001d44 14c85c24 DCB 0x14,0xc8,0x5c,0x24 +001d48 1cb0ff00 DCB 0x1c,0xb0,0xff,0x00 +001d4c 00000000 DCB 0x00,0x00,0x00,0x00 +001d50 000000ff DCB 0x00,0x00,0x00,0xff +001d54 00000000 DCB 0x00,0x00,0x00,0x00 +001d58 00000000 DCB 0x00,0x00,0x00,0x00 +001d5c ff000000 DCB 0xff,0x00,0x00,0x00 +001d60 00000000 DCB 0x00,0x00,0x00,0x00 +001d64 00000000 DCB 0x00,0x00,0x00,0x00 +001d68 00390031 DCB 0x00,0x39,0x00,0x31 +001d6c bc320000 DCB 0xbc,0x32,0x00,0x00 +001d70 0000004b DCB 0x00,0x00,0x00,0x4b +001d74 4b241cb0 DCB 0x4b,0x24,0x1c,0xb0 +001d78 14d16524 DCB 0x14,0xd1,0x65,0x24 +001d7c 1cb0ff00 DCB 0x1c,0xb0,0xff,0x00 +001d80 00000000 DCB 0x00,0x00,0x00,0x00 +001d84 000000ff DCB 0x00,0x00,0x00,0xff +001d88 00000000 DCB 0x00,0x00,0x00,0x00 +001d8c 00000000 DCB 0x00,0x00,0x00,0x00 +001d90 ff000000 DCB 0xff,0x00,0x00,0x00 +001d94 00000000 DCB 0x00,0x00,0x00,0x00 +001d98 00000000 DCB 0x00,0x00,0x00,0x00 +001d9c 00390031 DCB 0x00,0x39,0x00,0x31 +001da0 be320000 DCB 0xbe,0x32,0x00,0x00 +001da4 00000025 DCB 0x00,0x00,0x00,0x25 +001da8 25201c33 DCB 0x25,0x20,0x1c,0x33 +001dac 00000000 DCB 0x00,0x00,0x00,0x00 +001db0 2525ff00 DCB 0x25,0x25,0xff,0x00 +001db4 00000000 DCB 0x00,0x00,0x00,0x00 +001db8 000000ff DCB 0x00,0x00,0x00,0xff +001dbc 00000000 DCB 0x00,0x00,0x00,0x00 +001dc0 00000000 DCB 0x00,0x00,0x00,0x00 +001dc4 ff000000 DCB 0xff,0x00,0x00,0x00 +001dc8 00000000 DCB 0x00,0x00,0x00,0x00 +001dcc 00000000 DCB 0x00,0x00,0x00,0x00 +001dd0 00390014 DCB 0x00,0x39,0x00,0x14 +001dd4 c68f0404 DCB 0xc6,0x8f,0x04,0x04 +001dd8 0404ffff DCB 0x04,0x04,0xff,0xff +001ddc ffff0022 DCB 0xff,0xff,0x00,0x22 +001de0 22222200 DCB 0x22,0x22,0x22,0x00 +001de4 1e1e1e1e DCB 0x1e,0x1e,0x1e,0x1e +001de8 390014c7 DCB 0x39,0x00,0x14,0xc7 +001dec 0f040404 DCB 0x0f,0x04,0x04,0x04 +001df0 04ffffff DCB 0x04,0xff,0xff,0xff +001df4 ff002222 DCB 0xff,0x00,0x22,0x22 +001df8 2222001e DCB 0x22,0x22,0x00,0x1e +001dfc 1e1e1e39 DCB 0x1e,0x1e,0x1e,0x39 +001e00 0010c8f9 DCB 0x00,0x10,0xc8,0xf9 +001e04 0505b0e0 DCB 0x05,0x05,0xb0,0xe0 +001e08 b050baf0 DCB 0xb0,0x50,0xba,0xf0 +001e0c b0e0b020 DCB 0xb0,0xe0,0xb0,0x20 +001e10 d0503900 DCB 0xd0,0x50,0x39,0x00 +001e14 029f0d39 DCB 0x02,0x9f,0x0d,0x39 +001e18 0010b225 DCB 0x00,0x10,0xb2,0x25 +001e1c 10210102 DCB 0x10,0x21,0x01,0x02 +001e20 10000016 DCB 0x10,0x00,0x00,0x16 +001e24 10000001 DCB 0x10,0x00,0x00,0x01 +001e28 aa903900 DCB 0xaa,0x90,0x39,0x00 +001e2c 02b3b039 DCB 0x02,0xb3,0xb0,0x39 +001e30 000db500 DCB 0x00,0x0d,0xb5,0x00 +001e34 24070100 DCB 0x24,0x07,0x01,0x00 +001e38 00000020 DCB 0x00,0x00,0x00,0x20 +001e3c 04ee2139 DCB 0x04,0xee,0x21,0x39 +001e40 0004b602 DCB 0x00,0x04,0xb6,0x02 +001e44 12223900 DCB 0x12,0x22,0x39,0x00 +001e48 05b720f0 DCB 0x05,0xb7,0x20,0xf0 +001e4c c0e03900 DCB 0xc0,0xe0,0x39,0x00 +001e50 0db820f0 DCB 0x0d,0xb8,0x20,0xf0 +001e54 c0e020f0 DCB 0xc0,0xe0,0x20,0xf0 +001e58 c0e020f0 DCB 0xc0,0xe0,0x20,0xf0 +001e5c c0e03900 DCB 0xc0,0xe0,0x39,0x00 +001e60 05b90101 DCB 0x05,0xb9,0x01,0x01 +001e64 01013900 DCB 0x01,0x01,0x39,0x00 +001e68 03ba0000 DCB 0x03,0xba,0x00,0x00 +001e6c 390002bb DCB 0x39,0x00,0x02,0xbb +001e70 01390015 DCB 0x01,0x39,0x00,0x15 +001e74 bc0fff07 DCB 0xbc,0x0f,0xff,0x07 +001e78 ff033301 DCB 0xff,0x03,0x33,0x01 +001e7c 47014600 DCB 0x47,0x01,0x46,0x00 +001e80 cd006600 DCB 0xcd,0x00,0x66,0x00 +001e84 3a001400 DCB 0x3a,0x00,0x14,0x00 +001e88 08390006 DCB 0x08,0x39,0x00,0x06 +001e8c bd020002 DCB 0xbd,0x02,0x00,0x02 +001e90 065b3900 DCB 0x06,0x5b,0x39,0x00 +001e94 0cc70000 DCB 0x0c,0xc7,0x00,0x00 +001e98 00000000 DCB 0x00,0x00,0x00,0x00 +001e9c 0000002a DCB 0x00,0x00,0x00,0x2a +001ea0 00390002 DCB 0x00,0x39,0x00,0x02 +001ea4 48033900 DCB 0x48,0x03,0x39,0x00 +001ea8 01113900 DCB 0x01,0x11,0x39,0x00 +001eac 0351000f DCB 0x03,0x51,0x00,0x0f +001eb0 39000253 DCB 0x39,0x00,0x02,0x53 +001eb4 e0390001 DCB 0xe0,0x39,0x00,0x01 +001eb8 35390002 DCB 0x35,0x39,0x00,0x02 +001ebc 9f043900 DCB 0x9f,0x04,0x39,0x00 +001ec0 0eb50017 DCB 0x0e,0xb5,0x00,0x17 +001ec4 271b1700 DCB 0x27,0x1b,0x17,0x00 +001ec8 7575103b DCB 0x75,0x75,0x10,0x3b +001ecc 08a84839 DCB 0x08,0xa8,0x48,0x39 +001ed0 0012be00 DCB 0x00,0x12,0xbe,0x00 +001ed4 cfffffff DCB 0xcf,0xff,0xff,0xff +001ed8 3fffffff DCB 0x3f,0xff,0xff,0xff +001edc 3fffffff DCB 0x3f,0xff,0xff,0xff +001ee0 3fffffff DCB 0x3f,0xff,0xff,0xff +001ee4 39002ee9 DCB 0x39,0x00,0x2e,0xe9 +001ee8 ffffffff DCB 0xff,0xff,0xff,0xff +001eec ffffffff DCB 0xff,0xff,0xff,0xff +001ef0 ff00ffff DCB 0xff,0x00,0xff,0xff +001ef4 ff3f3f33 DCB 0xff,0x3f,0x3f,0x33 +001ef8 ffff33ff DCB 0xff,0xff,0x33,0xff +001efc ff33ffff DCB 0xff,0x33,0xff,0xff +001f00 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f04 ffff33ff DCB 0xff,0xff,0x33,0xff +001f08 ff33ffff DCB 0xff,0x33,0xff,0xff +001f0c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f10 ffff33ff DCB 0xff,0xff,0x33,0xff +001f14 ff39001c DCB 0xff,0x39,0x00,0x1c +001f18 ea33ffff DCB 0xea,0x33,0xff,0xff +001f1c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f20 ffff33ff DCB 0xff,0xff,0x33,0xff +001f24 ff33ffff DCB 0xff,0x33,0xff,0xff +001f28 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f2c ffff33ff DCB 0xff,0xff,0x33,0xff +001f30 ff33ffff DCB 0xff,0x33,0xff,0xff +001f34 39002eeb DCB 0x39,0x00,0x2e,0xeb +001f38 ffffff00 DCB 0xff,0xff,0xff,0x00 +001f3c ffff00ff DCB 0xff,0xff,0x00,0xff +001f40 ff00ffff DCB 0xff,0x00,0xff,0xff +001f44 ff3f3f33 DCB 0xff,0x3f,0x3f,0x33 +001f48 ffff33ff DCB 0xff,0xff,0x33,0xff +001f4c ff33ffff DCB 0xff,0x33,0xff,0xff +001f50 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f54 ffff33ff DCB 0xff,0xff,0x33,0xff +001f58 ff33ffff DCB 0xff,0x33,0xff,0xff +001f5c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f60 ffff33ff DCB 0xff,0xff,0x33,0xff +001f64 ff39001c DCB 0xff,0x39,0x00,0x1c +001f68 ec33ffff DCB 0xec,0x33,0xff,0xff +001f6c 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f70 ffff33ff DCB 0xff,0xff,0x33,0xff +001f74 ff33ffff DCB 0xff,0x33,0xff,0xff +001f78 33ffff33 DCB 0x33,0xff,0xff,0x33 +001f7c ffff33ff DCB 0xff,0xff,0x33,0xff +001f80 ff33ffff DCB 0xff,0x33,0xff,0xff +001f84 39002eed DCB 0x39,0x00,0x2e,0xed +001f88 ffffff00 DCB 0xff,0xff,0xff,0x00 +001f8c ffff00ff DCB 0xff,0xff,0x00,0xff +001f90 ff00ffff DCB 0xff,0x00,0xff,0xff +001f94 ff3f3f33 DCB 0xff,0x3f,0x3f,0x33 +001f98 ffff33ff DCB 0xff,0xff,0x33,0xff +001f9c ff33ffff DCB 0xff,0x33,0xff,0xff +001fa0 33ffff33 DCB 0x33,0xff,0xff,0x33 +001fa4 ffff33ff DCB 0xff,0xff,0x33,0xff +001fa8 ff33ffff DCB 0xff,0x33,0xff,0xff +001fac 33ffff33 DCB 0x33,0xff,0xff,0x33 +001fb0 ffff33ff DCB 0xff,0xff,0x33,0xff +001fb4 ff39001c DCB 0xff,0x39,0x00,0x1c +001fb8 ee33ffff DCB 0xee,0x33,0xff,0xff +001fbc 33ffff33 DCB 0x33,0xff,0xff,0x33 +001fc0 ffff33ff DCB 0xff,0xff,0x33,0xff +001fc4 ff33ffff DCB 0xff,0x33,0xff,0xff +001fc8 33ffff33 DCB 0x33,0xff,0xff,0x33 +001fcc ffff33ff DCB 0xff,0xff,0x33,0xff +001fd0 ff33ffff DCB 0xff,0x33,0xff,0xff +001fd4 39000af8 DCB 0x39,0x00,0x0a,0xf8 +001fd8 1ee0e0e0 DCB 0x1e,0xe0,0xe0,0xe0 +001fdc 00181500 DCB 0x00,0x18,0x15,0x00 +001fe0 e039000a DCB 0xe0,0x39,0x00,0x0a +001fe4 f9e11815 DCB 0xf9,0xe1,0x18,0x15 +001fe8 00f0f8f0 DCB 0x00,0xf0,0xf8,0xf0 +001fec ee003900 DCB 0xee,0x00,0x39,0x00 +001ff0 0afa1ee0 DCB 0x0a,0xfa,0x1e,0xe0 +001ff4 e0e00018 DCB 0xe0,0xe0,0x00,0x18 +001ff8 1500e039 DCB 0x15,0x00,0xe0,0x39 +001ffc 00029f05 DCB 0x00,0x02,0x9f,0x05 +002000 39000db4 DCB 0x39,0x00,0x0d,0xb4 +002004 020f3e00 DCB 0x02,0x0f,0x3e,0x00 +002008 00100600 DCB 0x00,0x10,0x06,0x00 +00200c 0002408d DCB 0x00,0x02,0x40,0x8d +002010 390029e6 DCB 0x39,0x00,0x29,0xe6 +002014 0fff07ff DCB 0x0f,0xff,0x07,0xff +002018 03330147 DCB 0x03,0x33,0x01,0x47 +00201c 014600cd DCB 0x01,0x46,0x00,0xcd +002020 0066003a DCB 0x00,0x66,0x00,0x3a +002024 00140008 DCB 0x00,0x14,0x00,0x08 +002028 00000000 DCB 0x00,0x00,0x00,0x00 +00202c 00000000 DCB 0x00,0x00,0x00,0x00 +002030 00000000 DCB 0x00,0x00,0x00,0x00 +002034 00000000 DCB 0x00,0x00,0x00,0x00 +002038 00000000 DCB 0x00,0x00,0x00,0x00 +00203c 39001fe7 DCB 0x39,0x00,0x1f,0xe7 +002040 00000000 DCB 0x00,0x00,0x00,0x00 +002044 00000000 DCB 0x00,0x00,0x00,0x00 +002048 00000000 DCB 0x00,0x00,0x00,0x00 +00204c 00000000 DCB 0x00,0x00,0x00,0x00 +002050 00000000 DCB 0x00,0x00,0x00,0x00 +002054 00000000 DCB 0x00,0x00,0x00,0x00 +002058 00000000 DCB 0x00,0x00,0x00,0x00 +00205c 00003900 DCB 0x00,0x00,0x39,0x00 +002060 29e80fff DCB 0x29,0xe8,0x0f,0xff +002064 0fff0fff DCB 0x0f,0xff,0x0f,0xff +002068 0fff0fff DCB 0x0f,0xff,0x0f,0xff +00206c 0cf00971 DCB 0x0c,0xf0,0x09,0x71 +002070 0754048c DCB 0x07,0x54,0x04,0x8c +002074 03010000 DCB 0x03,0x01,0x00,0x00 +002078 00000000 DCB 0x00,0x00,0x00,0x00 +00207c 00000000 DCB 0x00,0x00,0x00,0x00 +002080 00000000 DCB 0x00,0x00,0x00,0x00 +002084 00000000 DCB 0x00,0x00,0x00,0x00 +002088 00003900 DCB 0x00,0x00,0x39,0x00 +00208c 1fe90000 DCB 0x1f,0xe9,0x00,0x00 +002090 00000000 DCB 0x00,0x00,0x00,0x00 +002094 00000000 DCB 0x00,0x00,0x00,0x00 +002098 00000000 DCB 0x00,0x00,0x00,0x00 +00209c 00000000 DCB 0x00,0x00,0x00,0x00 +0020a0 00000000 DCB 0x00,0x00,0x00,0x00 +0020a4 00000000 DCB 0x00,0x00,0x00,0x00 +0020a8 00000000 DCB 0x00,0x00,0x00,0x00 +0020ac 07020100 DCB 0x07,0x02,0x01,0x00 +0020b0 08020100 DCB 0x08,0x02,0x01,0x00 +0020b4 02020100 DCB 0x02,0x02,0x01,0x00 +0020b8 03010202 DCB 0x03,0x01,0x02,0x02 + + AREA ||.data||, DATA, ALIGN=2 + + g_rx_ctrl_handle + DCD 0x00000000 + g_tx_ctrl_handle + DCD 0x00000000 + panel_display_done +000008 00 DCB 0x00 + sg_system_resume +000009 00 DCB 0x00 + sg_system_suspend +00000a 00 DCB 0x00 + sg_exit_idle_mode_flag +00000b 00 DCB 0x00 + g_resolution_change +00000c 00000000 DCB 0x00,0x00,0x00,0x00 + pps_renew_flag + DCD 0x00000000 + pwr_rst_flag + DCD 0x00000000 + rd_51_val +000018 0000 DCB 0x00,0x00 + rd_51_val2 +00001a 0000 DCB 0x00,0x00 + pps +00001c 11000089 DCB 0x11,0x00,0x00,0x89 +000020 30800bb0 DCB 0x30,0x80,0x0b,0xb0 +000024 054000bb DCB 0x05,0x40,0x00,0xbb +000028 02a002a0 DCB 0x02,0xa0,0x02,0xa0 +00002c 02000250 DCB 0x02,0x00,0x02,0x50 +000030 00201439 DCB 0x00,0x20,0x14,0x39 +000034 0009000c DCB 0x00,0x09,0x00,0x0c +000038 00850070 DCB 0x00,0x85,0x00,0x70 +00003c 180010f0 DCB 0x18,0x00,0x10,0xf0 +000040 030c2000 DCB 0x03,0x0c,0x20,0x00 +000044 060b0b33 DCB 0x06,0x0b,0x0b,0x33 +000048 0e1c2a38 DCB 0x0e,0x1c,0x2a,0x38 +00004c 46546269 DCB 0x46,0x54,0x62,0x69 +000050 7077797b DCB 0x70,0x77,0x79,0x7b +000054 7d7e0102 DCB 0x7d,0x7e,0x01,0x02 +000058 01000940 DCB 0x01,0x00,0x09,0x40 +00005c 09be19fc DCB 0x09,0xbe,0x19,0xfc +000060 19fa19f8 DCB 0x19,0xfa,0x19,0xf8 +000064 1a381a78 DCB 0x1a,0x38,0x1a,0x78 +000068 1ab62af6 DCB 0x1a,0xb6,0x2a,0xf6 +00006c 2b342b74 DCB 0x2b,0x34,0x2b,0x74 +000070 3b746bf4 DCB 0x3b,0x74,0x6b,0xf4 +000074 00000000 DCB 0x00,0x00,0x00,0x00 +000078 00000000 DCB 0x00,0x00,0x00,0x00 +00007c 00000000 DCB 0x00,0x00,0x00,0x00 +000080 00000000 DCB 0x00,0x00,0x00,0x00 +000084 00000000 DCB 0x00,0x00,0x00,0x00 +000088 00000000 DCB 0x00,0x00,0x00,0x00 +00008c 00000000 DCB 0x00,0x00,0x00,0x00 +000090 00000000 DCB 0x00,0x00,0x00,0x00 +000094 00000000 DCB 0x00,0x00,0x00,0x00 +000098 00000000 DCB 0x00,0x00,0x00,0x00 + pps_fhd +00009c 11000089 DCB 0x11,0x00,0x00,0x89 +0000a0 308008c4 DCB 0x30,0x80,0x08,0xc4 +0000a4 03f000bb DCB 0x03,0xf0,0x00,0xbb +0000a8 01f801f8 DCB 0x01,0xf8,0x01,0xf8 +0000ac 020001f8 DCB 0x02,0x00,0x01,0xf8 +0000b0 00201182 DCB 0x00,0x20,0x11,0x82 +0000b4 0007000c DCB 0x00,0x07,0x00,0x0c +0000b8 00850096 DCB 0x00,0x85,0x00,0x96 +0000bc 180010f0 DCB 0x18,0x00,0x10,0xf0 +0000c0 030c2000 DCB 0x03,0x0c,0x20,0x00 +0000c4 060b0b33 DCB 0x06,0x0b,0x0b,0x33 +0000c8 0e1c2a38 DCB 0x0e,0x1c,0x2a,0x38 +0000cc 46546269 DCB 0x46,0x54,0x62,0x69 +0000d0 7077797b DCB 0x70,0x77,0x79,0x7b +0000d4 7d7e0102 DCB 0x7d,0x7e,0x01,0x02 +0000d8 01000940 DCB 0x01,0x00,0x09,0x40 +0000dc 09be19fc DCB 0x09,0xbe,0x19,0xfc +0000e0 19fa19f8 DCB 0x19,0xfa,0x19,0xf8 +0000e4 1a381a78 DCB 0x1a,0x38,0x1a,0x78 +0000e8 1ab62af6 DCB 0x1a,0xb6,0x2a,0xf6 +0000ec 2b342b74 DCB 0x2b,0x34,0x2b,0x74 +0000f0 3b746bf4 DCB 0x3b,0x74,0x6b,0xf4 +0000f4 00000000 DCB 0x00,0x00,0x00,0x00 +0000f8 00000000 DCB 0x00,0x00,0x00,0x00 +0000fc 00000000 DCB 0x00,0x00,0x00,0x00 +000100 00000000 DCB 0x00,0x00,0x00,0x00 +000104 00000000 DCB 0x00,0x00,0x00,0x00 +000108 00000000 DCB 0x00,0x00,0x00,0x00 +00010c 00000000 DCB 0x00,0x00,0x00,0x00 +000110 00000000 DCB 0x00,0x00,0x00,0x00 +000114 00000000 DCB 0x00,0x00,0x00,0x00 +000118 00000000 DCB 0x00,0x00,0x00,0x00 + value_51H +00011c 00 DCB 0x00 + value_51L +00011d 00 DCB 0x00 + reg53_E8_fg +00011e 00 DCB 0x00 + +;*** Start embedded assembler *** + +#line 1 "..\\..\\src\\app\\P8P\\p8p_demo.c" + AREA ||.rev16_text||, CODE + THUMB + EXPORT |__asm___10_p8p_demo_c_pps____REV16| +#line 467 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h" +|__asm___10_p8p_demo_c_pps____REV16| PROC +#line 468 + + rev16 r0, r0 + bx lr + ENDP + AREA ||.revsh_text||, CODE + THUMB + EXPORT |__asm___10_p8p_demo_c_pps____REVSH| +#line 482 +|__asm___10_p8p_demo_c_pps____REVSH| PROC +#line 483 + + revsh r0, r0 + bx lr + ENDP + +;*** End embedded assembler *** diff --git a/project/WL668/Listings/startup_armcm0.lst b/project/WL668/Listings/startup_armcm0.lst new file mode 100644 index 0000000..cbbd37b --- /dev/null +++ b/project/WL668/Listings/startup_armcm0.lst @@ -0,0 +1,1333 @@ + + + +ARM Macro Assembler Page 1 + + + 1 00000000 ;/****************************************************** + ********************//** + 2 00000000 ; * @file startup_ARMCM0.s + 3 00000000 ; * @brief CMSIS Core Device Startup File for + 4 00000000 ; * ARMCM0 Device + 5 00000000 ; * @version V5.4.0 + 6 00000000 ; * @date 12. December 2018 + 7 00000000 ; ****************************************************** + ************************/ + 8 00000000 ;/* + 9 00000000 ; * Copyright (c) 2009-2018 Arm Limited. All rights rese + rved. + 10 00000000 ; * + 11 00000000 ; * SPDX-License-Identifier: Apache-2.0 + 12 00000000 ; * + 13 00000000 ; * Licensed under the Apache License, Version 2.0 (the + License); you may + 14 00000000 ; * not use this file except in compliance with the Lice + nse. + 15 00000000 ; * You may obtain a copy of the License at + 16 00000000 ; * + 17 00000000 ; * www.apache.org/licenses/LICENSE-2.0 + 18 00000000 ; * + 19 00000000 ; * Unless required by applicable law or agreed to in wr + iting, software + 20 00000000 ; * distributed under the License is distributed on an A + S IS BASIS, WITHOUT + 21 00000000 ; * WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. + 22 00000000 ; * See the License for the specific language governing + permissions and + 23 00000000 ; * limitations under the License. + 24 00000000 ; */ + 25 00000000 + 26 00000000 ;//-------- <<< Use Configuration Wizard in Context Menu + >>> ------------------ + 27 00000000 + 28 00000000 + 29 00000000 ; Stack Configuration + 30 00000000 ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> + 31 00000000 ; + 32 00000000 + 33 00000000 00001000 + Stack_Size + EQU 0x00001000 + 34 00000000 + 35 00000000 AREA STACK, NOINIT, READWRITE, ALIGN +=3 + 36 00000000 __stack_limit + 37 00000000 Stack_Mem + SPACE Stack_Size + 38 00001000 __initial_sp + 39 00001000 + 40 00001000 + 41 00001000 ; Heap Configuration + 42 00001000 ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> + 43 00001000 ; + 44 00001000 + 45 00001000 00000C00 + + + +ARM Macro Assembler Page 2 + + + Heap_Size + EQU 0x00000C00 + 46 00001000 + 47 00001000 IF Heap_Size != 0 + ; Heap is provided + 48 00001000 AREA HEAP, NOINIT, READWRITE, ALIGN= +3 + 49 00000000 __heap_base + 50 00000000 Heap_Mem + SPACE Heap_Size + 51 00000C00 __heap_limit + 52 00000C00 ENDIF + 53 00000C00 + 54 00000C00 + 55 00000C00 PRESERVE8 + 56 00000C00 THUMB + 57 00000C00 + 58 00000C00 + 59 00000C00 ; Vector Table Mapped to Address 0 at Reset + 60 00000C00 + 61 00000C00 AREA RESET, DATA, READONLY + 62 00000000 EXPORT __Vectors + 63 00000000 EXPORT __Vectors_End + 64 00000000 EXPORT __Vectors_Size + 65 00000000 + 66 00000000 00000000 + __Vectors + DCD __initial_sp ; Top of Stack + + 67 00000004 00000000 DCD Reset_Handler + ; Reset Handler + + 68 00000008 00000000 DCD NMI_Handler ; -14 NMI Handler + 69 0000000C 00000000 DCD HardFault_Handler ; -13 Hard Fa + ult Handler + 70 00000010 00000000 DCD 0 ; Reserved + 71 00000014 00000000 DCD 0 ; Reserved + 72 00000018 00000000 DCD 0 ; Reserved + 73 0000001C 00000000 DCD 0 ; Reserved + 74 00000020 00000000 DCD 0 ; Reserved + 75 00000024 00000000 DCD 0 ; Reserved + 76 00000028 00000000 DCD 0 ; Reserved + 77 0000002C 00000000 DCD SVC_Handler ; -5 SVCall Handle + r + 78 00000030 00000000 DCD 0 ; Reserved + 79 00000034 00000000 DCD 0 ; Reserved + 80 00000038 00000000 DCD PendSV_Handler ; -2 PendSV Han + dler + 81 0000003C 00000000 DCD SysTick_Handler ; -1 SysTick H + andler + 82 00000040 + 83 00000040 + 84 00000040 ; Interrupts + 85 00000040 00000000 DCD VIDC_IRQn_Handler + ; 0 Interrupt 0 + 86 00000044 00000000 DCD LCDC_IRQn_Handler + ; 1 Interrupt 1 + 87 00000048 00000000 DCD MIPI_RX_IRQn_Handler + ; 2 Interrupt 2 + + + +ARM Macro Assembler Page 3 + + + 88 0000004C 00000000 DCD MIPI_TX_IRQn_Handler + ; 3 Interrupt 3 + 89 00000050 00000000 DCD MEMC_IRQn_Handler + ; 4 Interrupt 4 + 90 00000054 00000000 DCD VPRE_IRQn_Handler + ; 5 Interrupt 5 + 91 00000058 00000000 DCD FLSCTRL_IRQn_Handler + ; 6 Interrupt 6 + 92 0000005C 00000000 DCD DMA_IRQn_Handler + ; 7 Interrupt 7 + 93 00000060 00000000 DCD TIMER0_IRQn_Handler + ; 8 Interrupt 8 + 94 00000064 00000000 DCD TIMER1_IRQn_Handler + ; 9 Interrupt 9 + 95 00000068 00000000 DCD TIMER2_IRQn_Handler + ; 10 Interrupt 10 + + 96 0000006C 00000000 DCD TIMER3_IRQn_Handler + ; 11 Interrupt 11 + + 97 00000070 00000000 DCD WDG_IRQn_Handler + ; 12 Interrupt 12 + + 98 00000074 00000000 DCD UART_IRQn_Handler + ; 13 Interrupt 13 + + 99 00000078 00000000 DCD I2C0_IRQn_Handler + ; 14 Interrupt 14 + + 100 0000007C 00000000 DCD I2C1_IRQn_Handler + ; 15 Interrupt 15 + + 101 00000080 00000000 DCD SPIS_IRQn_Handler + ; 16 Interrupt 16 + + 102 00000084 00000000 DCD SPIM_IRQn_Handler + ; 17 Interrupt 17 + + 103 00000088 00000000 DCD VPRE1_IRQn_Handler + ; 18 Interrupt 18 + + 104 0000008C 00000000 DCD I2C2_IRQn_Handler + ; 19 Interrupt 19 + + 105 00000090 00000000 DCD OTP_IRQn_Handler + ; 20 Interrupt 20 + + 106 00000094 00000000 DCD SWIRE_IRQn_Handler + ; 21 Interrupt 21 + + 107 00000098 00000000 DCD PVD_IRQn_Handler + ; 22 Interrupt 22 + + 108 0000009C 00000000 DCD AP_NRESET_IRQn_Handler + ; 23 Interrupt 23 + + 109 000000A0 00000000 DCD EXTI_INT0_IRQn_Handler + ; 24 Interrupt 24 + + + + +ARM Macro Assembler Page 4 + + + 110 000000A4 00000000 DCD EXTI_INT1_IRQn_Handler + ; 25 Interrupt 25 + + 111 000000A8 00000000 DCD EXTI_INT2_IRQn_Handler + ; 26 Interrupt 26 + + 112 000000AC 00000000 DCD EXTI_INT3_IRQn_Handler + ; 27 Interrupt 27 + + 113 000000B0 00000000 DCD EXTI_INT4_IRQn_Handler + ; 28 Interrupt 28 + + 114 000000B4 00000000 DCD EXTI_INT5_IRQn_Handler + ; 29 Interrupt 29 + + 115 000000B8 00000000 DCD EXTI_INT6_IRQn_Handler + ; 30 Interrupt 30 + + 116 000000BC 00000000 DCD EXTI_INT7_IRQn_Handler + ; 31 Interrupt 31 + + 117 000000C0 + 118 000000C0 SPACE ( 0 * 4) ; Interrupts 10 .. + 31 are left out + 119 000000C0 + 120 000000C0 __Vectors_End + 121 000000C0 000000C0 + __Vectors_Size + EQU __Vectors_End - __Vectors + 122 000000C0 E000E180 + _NVIC_ICER0 + EQU 0xE000E180 ;清中断使能寄 + 存器地址 + 123 000000C0 E000E280 + _NVIC_ICPR0 + EQU 0xE000E280 ;清中断pending + 存器地址 + 124 000000C0 + 125 000000C0 AREA |.text|, CODE, READONLY + 126 00000000 + 127 00000000 ; Reset Handler + 128 00000000 + 129 00000000 Reset_Handler + PROC + 130 00000000 EXPORT Reset_Handler [WEAK +] + 131 00000000 IMPORT __main + 132 00000000 + 133 00000000 ;清中断使能和pending ——开始—— + 134 00000000 B672 CPSID I ; 屏蔽中断 + 135 00000002 4819 LDR R0, =_NVIC_ICER0 + 136 00000004 4919 LDR R1, =_NVIC_ICPR0 + 137 00000006 4A1A LDR R2, =0xFFFFFFFF + 138 00000008 2301 MOVS R3, #1 ; 设置循环次 + M0只有1组(32 + )中断,故只 + 要循环1次 + 139 0000000A _irq_clear + 140 0000000A ;CBZ R3, _irq_clear_end + + + +ARM Macro Assembler Page 5 + + + 141 0000000A 2B00 CMP R3,#0 ; 循环次数等 + 0,跳转到_irq_ + clear_end + 142 0000000C D103 BNE _irq_clear_end + 143 0000000E 6002 STR R2, [R0] ;,#4 ; NVIC_ICE + R0 - 清 enable IRQ + 寄存器 + 144 00000010 600A STR R2, [R1] ;,#4 ; NVIC_ICP + R0 - 清 pending IR + Q 寄存器 + 145 00000012 3B01 SUBS R3, #1 ; 循环数自减1 + + 146 00000014 E7F9 B _irq_clear + 147 00000016 _irq_clear_end + 148 00000016 ;清中断使能和pending ——结束—— + 149 00000016 B662 CPSIE I ; 开启中断 + 150 00000018 4816 LDR R0, =__main + 151 0000001A 4700 BX R0 + 152 0000001C ENDP + 153 0000001C + 154 0000001C + 155 0000001C ; Macro to define default exception/interrupt handlers. + 156 0000001C ; Default handler are weak symbols with an endless loop. + + 157 0000001C ; They can be overwritten by real handlers. + 158 0000001C MACRO + 159 0000001C Set_Default_Handler + $Handler_Name + 160 0000001C $Handler_Name + PROC + 161 0000001C EXPORT $Handler_Name [WEAK +] + 162 0000001C B . + 163 0000001C ENDP + 164 0000001C MEND + 165 0000001C + 166 0000001C + 167 0000001C ; Default exception/interrupt handler + 168 0000001C + 169 0000001C Set_Default_Handler + NMI_Handler + 160 0000001C NMI_Handler + PROC + 161 0000001C EXPORT NMI_Handler [WEAK] + 162 0000001C E7FE B . + 163 0000001E ENDP + 170 0000001E Set_Default_Handler + HardFault_Handler + 160 0000001E HardFault_Handler + PROC + 161 0000001E EXPORT HardFault_Handler [ +WEAK] + 162 0000001E E7FE B . + 163 00000020 ENDP + 171 00000020 Set_Default_Handler + SVC_Handler + 160 00000020 SVC_Handler + PROC + 161 00000020 EXPORT SVC_Handler [WEAK] + + + +ARM Macro Assembler Page 6 + + + 162 00000020 E7FE B . + 163 00000022 ENDP + 172 00000022 Set_Default_Handler + PendSV_Handler + 160 00000022 PendSV_Handler + PROC + 161 00000022 EXPORT PendSV_Handler [WEA +K] + 162 00000022 E7FE B . + 163 00000024 ENDP + 173 00000024 Set_Default_Handler + SysTick_Handler + 160 00000024 SysTick_Handler + PROC + 161 00000024 EXPORT SysTick_Handler [WE +AK] + 162 00000024 E7FE B . + 163 00000026 ENDP + 174 00000026 + 175 00000026 Set_Default_Handler + VIDC_IRQn_Handler + 160 00000026 VIDC_IRQn_Handler + PROC + 161 00000026 EXPORT VIDC_IRQn_Handler [ +WEAK] + 162 00000026 E7FE B . + 163 00000028 ENDP + 176 00000028 Set_Default_Handler + LCDC_IRQn_Handler + 160 00000028 LCDC_IRQn_Handler + PROC + 161 00000028 EXPORT LCDC_IRQn_Handler [ +WEAK] + 162 00000028 E7FE B . + 163 0000002A ENDP + 177 0000002A Set_Default_Handler + MIPI_RX_IRQn_Handler + 160 0000002A MIPI_RX_IRQn_Handler + PROC + 161 0000002A EXPORT MIPI_RX_IRQn_Handler + [WEAK] + 162 0000002A E7FE B . + 163 0000002C ENDP + 178 0000002C Set_Default_Handler + MIPI_TX_IRQn_Handler + 160 0000002C MIPI_TX_IRQn_Handler + PROC + 161 0000002C EXPORT MIPI_TX_IRQn_Handler + [WEAK] + 162 0000002C E7FE B . + 163 0000002E ENDP + 179 0000002E Set_Default_Handler + MEMC_IRQn_Handler + 160 0000002E MEMC_IRQn_Handler + PROC + 161 0000002E EXPORT MEMC_IRQn_Handler [ +WEAK] + 162 0000002E E7FE B . + 163 00000030 ENDP + + + +ARM Macro Assembler Page 7 + + + 180 00000030 Set_Default_Handler + VPRE_IRQn_Handler + 160 00000030 VPRE_IRQn_Handler + PROC + 161 00000030 EXPORT VPRE_IRQn_Handler [ +WEAK] + 162 00000030 E7FE B . + 163 00000032 ENDP + 181 00000032 Set_Default_Handler + FLSCTRL_IRQn_Handler + 160 00000032 FLSCTRL_IRQn_Handler + PROC + 161 00000032 EXPORT FLSCTRL_IRQn_Handler + [WEAK] + 162 00000032 E7FE B . + 163 00000034 ENDP + 182 00000034 Set_Default_Handler + DMA_IRQn_Handler + 160 00000034 DMA_IRQn_Handler + PROC + 161 00000034 EXPORT DMA_IRQn_Handler [W +EAK] + 162 00000034 E7FE B . + 163 00000036 ENDP + 183 00000036 Set_Default_Handler + TIMER0_IRQn_Handler + 160 00000036 TIMER0_IRQn_Handler + PROC + 161 00000036 EXPORT TIMER0_IRQn_Handler + [WEAK] + 162 00000036 E7FE B . + 163 00000038 ENDP + 184 00000038 Set_Default_Handler + TIMER1_IRQn_Handler + 160 00000038 TIMER1_IRQn_Handler + PROC + 161 00000038 EXPORT TIMER1_IRQn_Handler + [WEAK] + 162 00000038 E7FE B . + 163 0000003A ENDP + 185 0000003A + 186 0000003A Set_Default_Handler + TIMER2_IRQn_Handler + 160 0000003A TIMER2_IRQn_Handler + PROC + 161 0000003A EXPORT TIMER2_IRQn_Handler + [WEAK] + 162 0000003A E7FE B . + 163 0000003C ENDP + 187 0000003C Set_Default_Handler + TIMER3_IRQn_Handler + 160 0000003C TIMER3_IRQn_Handler + PROC + 161 0000003C EXPORT TIMER3_IRQn_Handler + [WEAK] + 162 0000003C E7FE B . + 163 0000003E ENDP + 188 0000003E Set_Default_Handler + WDG_IRQn_Handler + + + +ARM Macro Assembler Page 8 + + + 160 0000003E WDG_IRQn_Handler + PROC + 161 0000003E EXPORT WDG_IRQn_Handler [W +EAK] + 162 0000003E E7FE B . + 163 00000040 ENDP + 189 00000040 Set_Default_Handler + UART_IRQn_Handler + 160 00000040 UART_IRQn_Handler + PROC + 161 00000040 EXPORT UART_IRQn_Handler [ +WEAK] + 162 00000040 E7FE B . + 163 00000042 ENDP + 190 00000042 Set_Default_Handler + I2C0_IRQn_Handler + 160 00000042 I2C0_IRQn_Handler + PROC + 161 00000042 EXPORT I2C0_IRQn_Handler [ +WEAK] + 162 00000042 E7FE B . + 163 00000044 ENDP + 191 00000044 Set_Default_Handler + I2C1_IRQn_Handler + 160 00000044 I2C1_IRQn_Handler + PROC + 161 00000044 EXPORT I2C1_IRQn_Handler [ +WEAK] + 162 00000044 E7FE B . + 163 00000046 ENDP + 192 00000046 Set_Default_Handler + SPIS_IRQn_Handler + 160 00000046 SPIS_IRQn_Handler + PROC + 161 00000046 EXPORT SPIS_IRQn_Handler [ +WEAK] + 162 00000046 E7FE B . + 163 00000048 ENDP + 193 00000048 Set_Default_Handler + SPIM_IRQn_Handler + 160 00000048 SPIM_IRQn_Handler + PROC + 161 00000048 EXPORT SPIM_IRQn_Handler [ +WEAK] + 162 00000048 E7FE B . + 163 0000004A ENDP + 194 0000004A Set_Default_Handler + VPRE1_IRQn_Handler + 160 0000004A VPRE1_IRQn_Handler + PROC + 161 0000004A EXPORT VPRE1_IRQn_Handler +[WEAK] + 162 0000004A E7FE B . + 163 0000004C ENDP + 195 0000004C Set_Default_Handler + I2C2_IRQn_Handler + 160 0000004C I2C2_IRQn_Handler + PROC + 161 0000004C EXPORT I2C2_IRQn_Handler [ + + + +ARM Macro Assembler Page 9 + + +WEAK] + 162 0000004C E7FE B . + 163 0000004E ENDP + 196 0000004E + 197 0000004E Set_Default_Handler + OTP_IRQn_Handler + 160 0000004E OTP_IRQn_Handler + PROC + 161 0000004E EXPORT OTP_IRQn_Handler [W +EAK] + 162 0000004E E7FE B . + 163 00000050 ENDP + 198 00000050 Set_Default_Handler + SWIRE_IRQn_Handler + 160 00000050 SWIRE_IRQn_Handler + PROC + 161 00000050 EXPORT SWIRE_IRQn_Handler +[WEAK] + 162 00000050 E7FE B . + 163 00000052 ENDP + 199 00000052 Set_Default_Handler + PVD_IRQn_Handler + 160 00000052 PVD_IRQn_Handler + PROC + 161 00000052 EXPORT PVD_IRQn_Handler [W +EAK] + 162 00000052 E7FE B . + 163 00000054 ENDP + 200 00000054 Set_Default_Handler + AP_NRESET_IRQn_Handler + 160 00000054 AP_NRESET_IRQn_Handler + PROC + 161 00000054 EXPORT AP_NRESET_IRQn_Handler + [WEAK] + 162 00000054 E7FE B . + 163 00000056 ENDP + 201 00000056 Set_Default_Handler + EXTI_INT0_IRQn_Handler + 160 00000056 EXTI_INT0_IRQn_Handler + PROC + 161 00000056 EXPORT EXTI_INT0_IRQn_Handler + [WEAK] + 162 00000056 E7FE B . + 163 00000058 ENDP + 202 00000058 Set_Default_Handler + EXTI_INT1_IRQn_Handler + 160 00000058 EXTI_INT1_IRQn_Handler + PROC + 161 00000058 EXPORT EXTI_INT1_IRQn_Handler + [WEAK] + 162 00000058 E7FE B . + 163 0000005A ENDP + 203 0000005A Set_Default_Handler + EXTI_INT2_IRQn_Handler + 160 0000005A EXTI_INT2_IRQn_Handler + PROC + 161 0000005A EXPORT EXTI_INT2_IRQn_Handler + [WEAK] + 162 0000005A E7FE B . + + + +ARM Macro Assembler Page 10 + + + 163 0000005C ENDP + 204 0000005C Set_Default_Handler + EXTI_INT3_IRQn_Handler + 160 0000005C EXTI_INT3_IRQn_Handler + PROC + 161 0000005C EXPORT EXTI_INT3_IRQn_Handler + [WEAK] + 162 0000005C E7FE B . + 163 0000005E ENDP + 205 0000005E Set_Default_Handler + EXTI_INT4_IRQn_Handler + 160 0000005E EXTI_INT4_IRQn_Handler + PROC + 161 0000005E EXPORT EXTI_INT4_IRQn_Handler + [WEAK] + 162 0000005E E7FE B . + 163 00000060 ENDP + 206 00000060 Set_Default_Handler + EXTI_INT5_IRQn_Handler + 160 00000060 EXTI_INT5_IRQn_Handler + PROC + 161 00000060 EXPORT EXTI_INT5_IRQn_Handler + [WEAK] + 162 00000060 E7FE B . + 163 00000062 ENDP + 207 00000062 + 208 00000062 Set_Default_Handler + EXTI_INT6_IRQn_Handler + 160 00000062 EXTI_INT6_IRQn_Handler + PROC + 161 00000062 EXPORT EXTI_INT6_IRQn_Handler + [WEAK] + 162 00000062 E7FE B . + 163 00000064 ENDP + 209 00000064 Set_Default_Handler + EXTI_INT7_IRQn_Handler + 160 00000064 EXTI_INT7_IRQn_Handler + PROC + 161 00000064 EXPORT EXTI_INT7_IRQn_Handler + [WEAK] + 162 00000064 E7FE B . + 163 00000066 ENDP + 210 00000066 00 00 ALIGN + 211 00000068 + 212 00000068 + 213 00000068 ; User setup Stack & Heap + 214 00000068 + 215 00000068 IF :LNOT::DEF:__MICROLIB + 217 ENDIF + 218 00000068 + 219 00000068 EXPORT __stack_limit + 220 00000068 EXPORT __initial_sp + 221 00000068 IF Heap_Size != 0 + ; Heap is provided + 222 00000068 EXPORT __heap_base + 223 00000068 EXPORT __heap_limit + 224 00000068 ENDIF + 225 00000068 + 226 00000068 END + + + +ARM Macro Assembler Page 11 + + + E000E180 + E000E280 + FFFFFFFF + 00000000 +Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M0 --apcs=interw +ork --depend=.\objects\startup_armcm0.d -o.\objects\startup_armcm0.o -I.\RTE\_W +L668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Inclu +de -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\ +Include --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 528 +" --predefine="_RTE_ SETA 1" --predefine="ARMCM0 SETA 1" --list=.\listings\star +tup_armcm0.lst ..\..\src\board\startup\startup_ARMCM0.s + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +STACK 00000000 + +Symbol: STACK + Definitions + At line 35 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: STACK unused +Stack_Mem 00000000 + +Symbol: Stack_Mem + Definitions + At line 37 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: Stack_Mem unused +__initial_sp 00001000 + +Symbol: __initial_sp + Definitions + At line 38 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 66 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 220 in file ..\..\src\board\startup\startup_ARMCM0.s + +__stack_limit 00000000 + +Symbol: __stack_limit + Definitions + At line 36 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 219 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: __stack_limit used once +4 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +HEAP 00000000 + +Symbol: HEAP + Definitions + At line 48 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: HEAP unused +Heap_Mem 00000000 + +Symbol: Heap_Mem + Definitions + At line 50 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: Heap_Mem unused +__heap_base 00000000 + +Symbol: __heap_base + Definitions + At line 49 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 222 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: __heap_base used once +__heap_limit 00000C00 + +Symbol: __heap_limit + Definitions + At line 51 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 223 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: __heap_limit used once +4 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +RESET 00000000 + +Symbol: RESET + Definitions + At line 61 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: RESET unused +__Vectors 00000000 + +Symbol: __Vectors + Definitions + At line 66 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 62 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 121 in file ..\..\src\board\startup\startup_ARMCM0.s + +__Vectors_End 000000C0 + +Symbol: __Vectors_End + Definitions + At line 120 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 63 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 121 in file ..\..\src\board\startup\startup_ARMCM0.s + +3 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Relocatable symbols + +.text 00000000 + +Symbol: .text + Definitions + At line 125 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + None +Comment: .text unused +AP_NRESET_IRQn_Handler 00000054 + +Symbol: AP_NRESET_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 200 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 108 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 200 in file ..\..\src\board\startup\startup_ARMCM0.s + +DMA_IRQn_Handler 00000034 + +Symbol: DMA_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 182 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 92 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 182 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT0_IRQn_Handler 00000056 + +Symbol: EXTI_INT0_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 201 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 109 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 201 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT1_IRQn_Handler 00000058 + +Symbol: EXTI_INT1_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 202 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 110 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 202 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT2_IRQn_Handler 0000005A + +Symbol: EXTI_INT2_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 203 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + + + +ARM Macro Assembler Page 2 Alphabetic symbol ordering +Relocatable symbols + + At line 111 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 203 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT3_IRQn_Handler 0000005C + +Symbol: EXTI_INT3_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 204 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 112 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 204 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT4_IRQn_Handler 0000005E + +Symbol: EXTI_INT4_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 205 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 113 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 205 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT5_IRQn_Handler 00000060 + +Symbol: EXTI_INT5_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 206 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 114 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 206 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT6_IRQn_Handler 00000062 + +Symbol: EXTI_INT6_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 208 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 115 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 208 in file ..\..\src\board\startup\startup_ARMCM0.s + +EXTI_INT7_IRQn_Handler 00000064 + +Symbol: EXTI_INT7_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 209 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 116 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 209 in file ..\..\src\board\startup\startup_ARMCM0.s + + + + +ARM Macro Assembler Page 3 Alphabetic symbol ordering +Relocatable symbols + +FLSCTRL_IRQn_Handler 00000032 + +Symbol: FLSCTRL_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 181 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 91 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 181 in file ..\..\src\board\startup\startup_ARMCM0.s + +HardFault_Handler 0000001E + +Symbol: HardFault_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 170 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 69 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 170 in file ..\..\src\board\startup\startup_ARMCM0.s + +I2C0_IRQn_Handler 00000042 + +Symbol: I2C0_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 190 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 99 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 190 in file ..\..\src\board\startup\startup_ARMCM0.s + +I2C1_IRQn_Handler 00000044 + +Symbol: I2C1_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 191 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 100 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 191 in file ..\..\src\board\startup\startup_ARMCM0.s + +I2C2_IRQn_Handler 0000004C + +Symbol: I2C2_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 195 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 104 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 195 in file ..\..\src\board\startup\startup_ARMCM0.s + +LCDC_IRQn_Handler 00000028 + +Symbol: LCDC_IRQn_Handler + Definitions + + + +ARM Macro Assembler Page 4 Alphabetic symbol ordering +Relocatable symbols + + At line 160 in macro Set_Default_Handler + at line 176 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 86 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 176 in file ..\..\src\board\startup\startup_ARMCM0.s + +MEMC_IRQn_Handler 0000002E + +Symbol: MEMC_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 179 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 89 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 179 in file ..\..\src\board\startup\startup_ARMCM0.s + +MIPI_RX_IRQn_Handler 0000002A + +Symbol: MIPI_RX_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 177 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 87 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 177 in file ..\..\src\board\startup\startup_ARMCM0.s + +MIPI_TX_IRQn_Handler 0000002C + +Symbol: MIPI_TX_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 178 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 88 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 178 in file ..\..\src\board\startup\startup_ARMCM0.s + +NMI_Handler 0000001C + +Symbol: NMI_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 169 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 68 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 169 in file ..\..\src\board\startup\startup_ARMCM0.s + +OTP_IRQn_Handler 0000004E + +Symbol: OTP_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 197 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 105 in file ..\..\src\board\startup\startup_ARMCM0.s + + + +ARM Macro Assembler Page 5 Alphabetic symbol ordering +Relocatable symbols + + At line 161 in macro Set_Default_Handler + at line 197 in file ..\..\src\board\startup\startup_ARMCM0.s + +PVD_IRQn_Handler 00000052 + +Symbol: PVD_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 199 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 107 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 199 in file ..\..\src\board\startup\startup_ARMCM0.s + +PendSV_Handler 00000022 + +Symbol: PendSV_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 172 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 80 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 172 in file ..\..\src\board\startup\startup_ARMCM0.s + +Reset_Handler 00000000 + +Symbol: Reset_Handler + Definitions + At line 129 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 67 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 130 in file ..\..\src\board\startup\startup_ARMCM0.s + +SPIM_IRQn_Handler 00000048 + +Symbol: SPIM_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 193 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 102 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 193 in file ..\..\src\board\startup\startup_ARMCM0.s + +SPIS_IRQn_Handler 00000046 + +Symbol: SPIS_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 192 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 101 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 192 in file ..\..\src\board\startup\startup_ARMCM0.s + +SVC_Handler 00000020 + +Symbol: SVC_Handler + + + +ARM Macro Assembler Page 6 Alphabetic symbol ordering +Relocatable symbols + + Definitions + At line 160 in macro Set_Default_Handler + at line 171 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 77 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 171 in file ..\..\src\board\startup\startup_ARMCM0.s + +SWIRE_IRQn_Handler 00000050 + +Symbol: SWIRE_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 198 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 106 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 198 in file ..\..\src\board\startup\startup_ARMCM0.s + +SysTick_Handler 00000024 + +Symbol: SysTick_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 173 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 81 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 173 in file ..\..\src\board\startup\startup_ARMCM0.s + +TIMER0_IRQn_Handler 00000036 + +Symbol: TIMER0_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 183 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 93 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 183 in file ..\..\src\board\startup\startup_ARMCM0.s + +TIMER1_IRQn_Handler 00000038 + +Symbol: TIMER1_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 184 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 94 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 184 in file ..\..\src\board\startup\startup_ARMCM0.s + +TIMER2_IRQn_Handler 0000003A + +Symbol: TIMER2_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 186 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + + + +ARM Macro Assembler Page 7 Alphabetic symbol ordering +Relocatable symbols + + At line 95 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 186 in file ..\..\src\board\startup\startup_ARMCM0.s + +TIMER3_IRQn_Handler 0000003C + +Symbol: TIMER3_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 187 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 96 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 187 in file ..\..\src\board\startup\startup_ARMCM0.s + +UART_IRQn_Handler 00000040 + +Symbol: UART_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 189 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 98 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 189 in file ..\..\src\board\startup\startup_ARMCM0.s + +VIDC_IRQn_Handler 00000026 + +Symbol: VIDC_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 175 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 85 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 175 in file ..\..\src\board\startup\startup_ARMCM0.s + +VPRE1_IRQn_Handler 0000004A + +Symbol: VPRE1_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 194 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 103 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 194 in file ..\..\src\board\startup\startup_ARMCM0.s + +VPRE_IRQn_Handler 00000030 + +Symbol: VPRE_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 180 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 90 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 180 in file ..\..\src\board\startup\startup_ARMCM0.s + + + + +ARM Macro Assembler Page 8 Alphabetic symbol ordering +Relocatable symbols + +WDG_IRQn_Handler 0000003E + +Symbol: WDG_IRQn_Handler + Definitions + At line 160 in macro Set_Default_Handler + at line 188 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 97 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 161 in macro Set_Default_Handler + at line 188 in file ..\..\src\board\startup\startup_ARMCM0.s + +_irq_clear 0000000A + +Symbol: _irq_clear + Definitions + At line 139 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 146 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: _irq_clear used once +_irq_clear_end 00000016 + +Symbol: _irq_clear_end + Definitions + At line 147 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 142 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: _irq_clear_end used once +41 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +Absolute symbols + +Heap_Size 00000C00 + +Symbol: Heap_Size + Definitions + At line 45 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 47 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 50 in file ..\..\src\board\startup\startup_ARMCM0.s + At line 221 in file ..\..\src\board\startup\startup_ARMCM0.s + +Stack_Size 00001000 + +Symbol: Stack_Size + Definitions + At line 33 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 37 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: Stack_Size used once +_NVIC_ICER0 E000E180 + +Symbol: _NVIC_ICER0 + Definitions + At line 122 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 135 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: _NVIC_ICER0 used once +_NVIC_ICPR0 E000E280 + +Symbol: _NVIC_ICPR0 + Definitions + At line 123 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 136 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: _NVIC_ICPR0 used once +__Vectors_Size 000000C0 + +Symbol: __Vectors_Size + Definitions + At line 121 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 64 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: __Vectors_Size used once +5 symbols + + + +ARM Macro Assembler Page 1 Alphabetic symbol ordering +External symbols + +__main 00000000 + +Symbol: __main + Definitions + At line 131 in file ..\..\src\board\startup\startup_ARMCM0.s + Uses + At line 150 in file ..\..\src\board\startup\startup_ARMCM0.s +Comment: __main used once +1 symbol +394 symbols in table diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.axf b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.axf new file mode 100644 index 0000000..e85de55 Binary files /dev/null and b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.axf differ diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.bin b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.bin new file mode 100644 index 0000000..8a031ef Binary files /dev/null and b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.bin differ diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.build_log.htm b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.build_log.htm new file mode 100644 index 0000000..5b33201 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.build_log.htm @@ -0,0 +1,77 @@ + + +
+

Vision Build Log

+

Tool Versions:

+IDE-Version: Vision V5.28.0.0 +Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: HAHA Markin, HAHA, LIC=VGXG8-3CKFQ-63XMB-246PQ-J4CUG-RTS7K + +Tool Versions: +Toolchain: MDK-ARM Plus Version: 5.28.0.0 +Toolchain Path: C:\Keil_v5\ARM\ARMCC\Bin +C Compiler: Armcc.exe V5.06 update 6 (build 750) +Assembler: Armasm.exe V5.06 update 6 (build 750) +Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) +Library Manager: ArmAr.exe V5.06 update 6 (build 750) +Hex Converter: FromElf.exe V5.06 update 6 (build 750) +CPU DLL: SARMCM3.DLL V5.28.0.0 +Dialog DLL: DARMCM1.DLL V1.19.2.0 +Target DLL: UL2CM3.DLL V1.162.16.0 +Dialog DLL: TARMCM1.DLL V1.14.1.0 + +

Project:

+D:\Custom\\WL668_Pixel 8 Pro_TM667_ICNA3508(RAMLESS)_ CST6656S_OLED\Դ\WL668_GOOGLEP8P_TM667_ICNA3508_OLED_FHD_20240315\WL668_GOOGLEP8P_TM667_ICNA3508_20240306_5608\project\WL668\WL668.uvprojx +Project File Date: 04/01/2024 + +

Output:

+*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' +Rebuild target 'WL668' +creating preprocessor file for main.c... +compiling main.c... +creating preprocessor file for p8p_demo.c... +compiling p8p_demo.c... +..\..\src\app\P8P\p8p_demo.c(131): warning: #550-D: variable "sg_exit_idle_mode_flag" was set but never used + static bool sg_exit_idle_mode_flag = false; +..\..\src\app\P8P\p8p_demo.c(134): warning: #177-D: variable "pps_renew_flag" was declared but never referenced + static uint32_t pps_renew_flag = 0; +..\..\src\app\P8P\p8p_demo.c(135): warning: #177-D: variable "pwr_rst_flag" was declared but never referenced + static uint32_t pwr_rst_flag = 0; +..\..\src\app\P8P\p8p_demo.c(149): warning: #177-D: function "app_mipi_rx_start_cb" was declared but never referenced + static void app_mipi_rx_start_cb(void *data); +..\..\src\app\P8P\p8p_demo.c(459): warning: #177-D: variable "reg53_E8_fg" was declared but never referenced + static bool reg53_E8_fg=0; +..\..\src\app\P8P\p8p_demo.c(538): warning: #177-D: function "ap_dcs_set_exit_idle_mode" was declared but never referenced + static bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +..\..\src\app\P8P\p8p_demo.c(563): warning: #177-D: function "soft_te_timer_init" was declared but never referenced + static void soft_te_timer_init() +..\..\src\app\P8P\p8p_demo.c: 7 warnings, 0 errors +creating preprocessor file for board.c... +compiling board.c... +assembling startup_ARMCM0.s... +linking... +Program Size: Code=37316 RO-data=9156 RW-data=1040 ZI-data=11608 +FromELF: creating hex file... +After Build - User command #1: fromelf --bin -o .\Objects\WL668_P8P_TM667_ICNA3508_20240401.bin .\Objects\WL668_P8P_TM667_ICNA3508_20240401.axf +".\Objects\WL668_P8P_TM667_ICNA3508_20240401.axf" - 0 Error(s), 7 Warning(s). + +

Software Packages used:

+ +Package Vendor: ARM + http://www.keil.com/pack/ARM.CMSIS.5.5.1.pack + ARM.CMSIS.5.5.1 + CMSIS (Cortex Microcontroller Software Interface Standard) + * Component: CORE Version: 5.2.0 + +

Collection of Component include folders:

+ .\RTE\_WL668 + C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include + C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include + +

Collection of Component Files used:

+ + * Component: ARM::CMSIS:CORE:5.2.0 +Build Time Elapsed: 00:00:02 +
+ + diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.hex b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.hex new file mode 100644 index 0000000..d8b2f0d --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.hex @@ -0,0 +1,2931 @@ +:020000040001F9 +:1000000068310700D5000100F1000100A90B0100D3 +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000F5000100DA +:100030000000000000000000F7000100750E010044 +:10004000B50E0100F10B0100451001008D0D0100FE +:10005000F10C0100ED0E010007010100FD0A010095 +:100060008D0E0100970E0100A10E0100AB0E0100E4 +:1000700013010100A913010017010100190101007A +:100080001B0101001D010100D10E01002101010031 +:1000900023010100450E010027010100E10A0100D2 +:1000A000590B0100630B01006D0B0100770B010080 +:1000B000810B01008B0B0100950B01009F0B0100D0 +:1000C0000348854600F0CEFC0048004761870100E8 +:1000D0006831070072B6194819491A4A0123002BE2 +:1000E00003D102600A60013BF9E762B61648004797 +:1000F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D8 +:10010000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C7 +:10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 +:10012000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A7 +:10013000FEE7FEE7FEE7FEE7FEE7000080E100E005 +:1001400080E200E0FFFFFFFFC100010030B50B4679 +:10015000014600202022012409E00D46D5409D42A1 +:1001600005D31D469540491B254695404019154627 +:10017000521E002DF1DC30BD70B50024254600284C +:1001800001DA01244042002901DA01254942FFF742 +:10019000DDFFAC4200D04042002C00D0494270BD8F +:1001A00003460B439B0703D009E008C9121F08C090 +:1001B000042AFAD203E00B780370401C491C521E3B +:1001C000F9D27047D2B201E00270401C491EFBD246 +:1001D00070470022F6E710B513460A460446194652 +:1001E000FFF7F0FF204610BD421C0178401C00299B +:1001F000FBD1801A7047F8B502464A40D40F42003E +:100200004B0052085B089A4202D202460846114649 +:100210004A0023D0C30D4A00DDB2120EAD1A202DC4 +:1002200035DA49020126490AF6058A19002C00D060 +:10023000524220214F1B1146B9402A411018C20DCD +:100240009A4221D0002C17D0012D08DCDA05801A43 +:10025000D20F8019D207DBB200F0C0FAF8BDDA0580 +:10026000801A012340001B06C01880185A428018CB +:10027000CA0F1043490007E04908C2071143DA05D5 +:10028000801A80194008801800F0A0FAF8BD6100BB +:100290000122511A001BF7E70122D2075140AAE7B9 +:1002A0000122D2075040A6E7024670B54A40D30F5C +:1002B000DB0740002DD04A002AD0010E140E0002A8 +:1002C00012020919400A520A8418E50104465443EF +:1002D000000A120A2E045043A4194219200CC543E7 +:1002E000AA18120C0125AD03521C521912047F39B1 +:1002F000240400D0521C104301D44000491EC2B255 +:100300000C06C0092018401C4008802A02D003E0D7 +:10031000002070BD40084000002900DA002018438A +:1003200070BD70B502464A40D50F40004A00ED0747 +:1003300040085208002814D0002A12D0C40DD30D52 +:1003400041020120C0055202490A520AE41A091862 +:1003500012187D34914201D3641C00E04900002C46 +:1003600001DA002070BD0023914201D3891A0343B2 +:10037000400849000028F7D100290AD0914202D153 +:100380000121C90705E0914201D2012101E00121CB +:10039000C943E005C018401900F018FA70BD4200CA +:1003A00005D04200120E52428A4201DB0020704703 +:1003B000C905081870470000F0B5074608465840C0 +:1003C00087B0C00F049048000E4659004008490805 +:1003D000BC1A884105D2384631461E4617460B46A0 +:1003E00002465800400810434CD0300D03904005A1 +:1003F0005900400D490D0590401A0290402872DACC +:1004000018030121000B090508430190049800928C +:10041000002805D0019952420020884100920190A5 +:10042000029840210A1A0199009800F09BF90546AC +:100430000C466B4607CB00F0B6F9C0197141039A20 +:100440000E0D0023D71756401A467A40164344D063 +:10045000049A002A2DD0029A012A039A15DC12056B +:10046000C01A914101263605001C7141D20F059E2C +:10047000D2070093019202962A46234600F0F4F92F +:1004800007B0F0BD38463146FAE71605224A0F4656 +:10049000B218C01AB74101210905001C4F410018CC +:1004A0007F41114618187941E20F10436D196441DC +:1004B00013E0E2076D0815436408C2071443039A6A +:1004C00001261205C01A91413605001C7141CE0764 +:1004D000400830434908C01851412A46234600F0DD +:1004E000B6F9CDE7FFE7049801224000C117121AC0 +:1004F00000238B4104983146C417381AA141EEE716 +:1005000030B40124E407634030BC55E730B4012423 +:10051000E407614030BC4FE70000E0FFF0B51FB4D6 +:1005200088B00B990998002448400999C00F4900E8 +:1005300049080991C0070B990090490049080B919F +:1005400009990898A64608431CD00B990A980843B5 +:1005500018D0099801244000420D4800410D099827 +:1005600024050003000B204309900B980003000BA7 +:1005700020430B9050181C4940180022019014464B +:10058000104605E0002001460DB0F0BD032801DA59 +:10059000034600E003239C46C11A0AAE0AE05F004E +:1005A00008ADED5B4F00F75B7D430027AA187C4147 +:1005B000491C5B1E6145F2DD410004AB5A52210427 +:1005C000120C0A43240C401C0828DFDB019802901F +:1005D0000099704601910090059B049A079906982E +:1005E00000F042F9D0E700000DFCFFFF10B500223B +:1005F0009623114600F0F2F810BD00000EB5054933 +:100600000291002100910A460B46019100F02CF95D +:1006100003B000BD33040000410040020122400A43 +:10062000D205090E80187F2901DA0020704796292B +:1006300003DC9622511AC8407047963988407047AB +:100640004A0009030123090B1B051943094B10B587 +:10065000520D9A4201DA002010BD064B34339A4203 +:1006600003DC9A1A00F08EF810BD03495118884037 +:1006700010BD0000FF030000CDFBFFFFC20FD2073B +:10068000400040080BD0C10D0723DB01C918400210 +:100690000905400A1143C208400711437047002072 +:1006A00001467047CB0FDB07490010B549080246E9 +:1006B0000A4307D00A0D07240903E401090B121BA2 +:1006C000002A01DC002010BDC900440F0C43C1000A +:1006D000E018D205801800F079F810BD0122D20789 +:1006E000002800DB101A002900DB511A81427047F4 +:1006F0000122D207002800DB101A002900DB511A62 +:1007000088427047F0B51FB40646002082B0054607 +:100710004024019100901BE0019922460F4630468B +:1007200000F030F8049A059B801A994110D31046C6 +:100730001946224600F016F8361A8F4101972246D4 +:1007400001200021009F00F00DF838184D41009065 +:100750002046641E0028DFDC019B009829463246B3 +:1007600007B0F0BD10B5202A04DB0146203A9140C5 +:10077000002010BD914020239C1A0346E3401943FA +:10078000904010BD10B5202A04DB0846203AD04026 +:10079000002110BD0B46D340D0402024A21A914026 +:1007A0000843194610BD10B5202A06DBCB170846B2 +:1007B000203A1041C1170B4306E00B461341D040CD +:1007C0002024A21A91400843194610BD002904DADA +:1007D000401C490001D140084000704770B400241B +:1007E000050C05D11024000402D1002921D01124C8 +:1007F000050E01D100020834050F01D10001241DAE +:10080000850F01D18000A41C002801DB4000641C7E +:10081000002908D020252E1B0D46F540A14000D010 +:1008200001212943084301061B1B000ADB1D02D5D9 +:10083000002070BC7047DB05181880180029F8DA12 +:10084000401C4900F5D170BC40084000704710B50D +:10085000002B08DA0024401C614192185B411A43C6 +:1008600001D14008400010BDF0B51FB482B005466C +:100870000C0003D0084600F099FB02E000F096FB64 +:1008800020300246009021462846FFF76BFF049B6C +:10089000059A04460F4618431143084314D01846DE +:1008A00010431BD0009840210A1A18460599FFF7FB +:1008B00069FF05460E46009A05990498FFF752FF16 +:1008C000084305D0012004E02046394607B0F0BDBA +:1008D0000020C11705430E432C43374300990E985F +:1008E0006305401A7905E40A00220C43FD0A0A3028 +:1008F00002D500200146E9E70105101969410C9C69 +:100900000D9D00196941FFF7A2FFDFE7F0B50C4626 +:100910005C4085B0E40FE40703944C0000266408B3 +:1009200059009446490802460296224321D0624665 +:100930000A431ED06200570D4A000E032303550DD3 +:10094000012402462C492405781B1B0B360B40184A +:1009500023432643614600901C46501AB44103D3FA +:100960000098401C009002E0921800985B4100281B +:1009700003DA0020014605B0F0BD00200121090581 +:100980000746864611E064461D46141BB54106D352 +:100990006546521BB341744607430C43A646CD0738 +:1009A00040084908284392185B4105460D43EAD1A7 +:1009B0001046184313D06046194650407140084312 +:1009C00006D06046101AB34106D20122002306E089 +:1009D00000220123DB0702E00122D24353100098DA +:1009E00074460105381C6141029C039D0019694150 +:1009F000FFF72DFFBFE70000FD0300004A000903D9 +:100A00000123090B1B0519430A4B10B5520D9A42DD +:100A100002DA0020014610BD064B34339A4203DC53 +:100A20009A1AFFF7AFFE10BD034BD218FFF79AFEDC +:100A300010BD0000FF030000CDFBFFFF10B5002933 +:100A400004DB0124E40740428C412146002B04DBF7 +:100A50001C460123DB075242A341994200D1904238 +:100A600010BD0000064C0125064E05E0E36807CCEA +:100A70002B430C3C98471034B442F7D3FFF724FBC8 +:100A800068B5010088B5010070B58C180578401C68 +:100A90006B075B0F01D10378401C2A1106D1027845 +:100AA000401C03E006780E70401C491C5B1EF9D107 +:100AB0002B0705D40023521E0DD40B70491CFAE7F6 +:100AC0000378401CCB1A921C03E01D780D70491C62 +:100AD0005B1C521EF9D5A142D8D3002070BD000086 +:100AE00010B505480168002901D00020884717206B +:100AF00003F0BAFE10BD000010020700F8B5134F56 +:100B0000002416E038194079410111480D18686831 +:100B100000280DD0284602F023F9C6B2002E07D0D7 +:100B20006A683146284690473146284602F00CF95B +:100B3000641C3879A042E5DC064938680968084237 +:100B4000DED1072003F090FEF8BD0000F42007007E +:100B50007C0207000054004010B5002002F066FE41 +:100B600010BD10B5012002F061FE10BD10B50220CD +:100B700002F05CFE10BD10B5032002F057FE10BD60 +:100B800010B5042002F052FE10BD10B5052002F091 +:100B90004DFE10BD10B5062002F048FE10BD10B588 +:100BA000072002F043FE10BDB42303A205A10220DA +:100BB00008F026FAFEE700006472765F636F6D6DE1 +:100BC0006F6E00005B25735D20282530346429207A +:100BD000456E74657220686172646661756C74201C +:100BE000696E746572727570742E0D0A00000000D3 +:100BF0007CB51D4D2C68A86804401C4EA00702D58A +:100C0000716800208847E0070CD017484038406BD7 +:100C10001749096901910090164B17A219A10220EA +:100C200008F0EEF9200706D5124B13A25B1D24A194 +:100C3000022008F0E5F9F068002807D0E10605D5A4 +:100C400009498039096B002900D18047B068002824 +:100C500002D0610700D580476868204368600120A2 +:100C600003F002FE7CBD000080080040C8010700C0 +:100C7000000C00401203000068616C5F7673796EAF +:100C8000630000005B25735D202825303464292033 +:100C90004C4344433A4C4344435F494E545F4442BF +:100CA00055465F554E444552554E212025642C6DC6 +:100CB000656D635F72656164202578200000000027 +:100CC0005B25735D20282530346429204C43444340 +:100CD0003A4C4344435F494E545F5352435F445040 +:100CE0004948414C545F494E545F4D534B210000DD +:100CF00010B5002003F056F8002802D0002003F0C1 +:100D00001FF8012003F04EF8002802D0012003F064 +:100D100017F8022003F046F8002802D0022003F062 +:100D20000FF8032003F03EF8002802D0032003F060 +:100D300007F8042003F036F8002802D0042002F05F +:100D4000FFFF052003F02EF8002802D0052002F056 +:100D5000F7FF062003F026F8002802D0062002F054 +:100D6000EFFF072003F01EF8002802D0072002F052 +:100D7000E7FF082003F016F8002802D0082002F050 +:100D8000DFFF042003F070FD10BD00007CB5114AA8 +:100D9000D06B104D40352C686968AE68084208D0A9 +:100DA000D16B019100900C4B0CA20EA1022008F017 +:100DB00027F9344209D02868EF2301909B0007A24D +:100DC00014A10094022008F01BF9032003F04CFD4D +:100DD0007CBD000080040040B70300007461755FB3 +:100DE0006C6F67005B25735D2028253034642920F3 +:100DF000696E745F7374305B3078253038785D616C +:100E00006674657220726561645B3078253038786D +:100E10005D0A00005B25735D20282530346429209D +:100E2000696E745F7374315B3078253038785D613A +:100E30006674657220726561645B3078253038783D +:100E40005D0A000010B5152003F00EFD074881680B +:100E5000C90709D0816801221143816004480168F3 +:100E6000002901D00020884710BD0000006C004020 +:100E70001402070004480168491C01604168002908 +:100E800001D00020084770470002070010B500207D +:100E900003F078FD10BD10B5012003F073FD10BD07 +:100EA00010B5022003F06EFD10BD10B5032003F055 +:100EB00069FD10BD10B505480168002901D000206A +:100EC0008847002003F0D0FC10BD00007802070026 +:100ED00010B505484168002901D00020884712203C +:100EE00003F0C2FC10BD00007002070070B50020C6 +:100EF00003F0B4F9002805D0012006F0CBFA012058 +:100F000003F05EF90E2003F0A9F9002820D0144D5B +:100F10006868002818D03C3016D001F055FF044610 +:100F2000104E3068A0420FD0002C03D0012001F0F9 +:100F300093FE08E06868C030C07A02280CD0012017 +:100F4000000401F089FE34600120800303F038F9C9 +:100F5000052003F089FC70BD002001F07DFEF2E762 +:100F600098060700D80107000FB410B503A9044B79 +:100F7000044A029800F0BCFB10BC08BC04B018473F +:100F80001D5101000C04070037B514460846064BF6 +:100F90006A46214600F0ACFB04466946002000F09A +:100FA0002AF820463EBD0000F70F01002021020C68 +:100FB00001D010211046020A01D01046083902095A +:100FC00001D01046091F820801D01046891E420830 +:100FD00001D0881E7047081A704730B47446641EEA +:100FE0002578641CAB4200D21D46635D5B00E318AC +:100FF00030BC184770470A68531C0B60107070476C +:1010000001FEF7FE40106110766F4E17032F0A0B9A +:1010100090F486AE3756000000000000000000018A +:1010200056000000980507000000000000000001C5 +:101030000001000040000040040004001000050111 +:1010400000000000F8B5584BDC68584F3968574825 +:101050008030066B0846564D304319D0554A002063 +:10106000506058600120506058602878032805D0EF +:101070000091514B51A253A107F0C2FF28780328D9 +:1010800006D04D4B4DA25B1C58A1009607F0B8FF4F +:10109000A0070AD52878032807D0396AA72300912A +:1010A0009B0046A25BA107F0ABFF644E60070AD528 +:1010B0002878032807D03168152300915B013FA2EF +:1010C0005FA107F09DFF20070AD52878032807D0E5 +:1010D000316AA92300919B0038A263A107F090FF19 +:1010E000E0060CD52878032809D054494031096816 +:1010F00055230091DB0031A265A107F081FFE003D9 +:101100000AD52878032807D03969AB2300919B00C2 +:101110002AA26AA107F074FFA0030AD52878032841 +:1011200007D0396B2B2300911B0124A26CA107F07F +:1011300067FF600317D5316948070AD52878032867 +:1011400011D057230091DB001CA26EA107F058FFBD +:1011500009E02878032806D0AF2300919B0017A24E +:1011600073A107F04DFF20030AD52878032807D084 +:10117000316B114B00912B3310A277A107F040FF88 +:1011800060020CD52878032809D02C4980310969E0 +:10119000094B0091303309A278A107F031FF0220FA +:1011A00003F062FBF8BD000000280040002A004068 +:1011B0006C02070000290040960200006473695F1A +:1011C000727800005B25735D202825303464292067 +:1011D0004453495F52585F4552525F5048595F46E9 +:1011E0004154414C5B307825785D0A005B25735D86 +:1011F00020282530346429204453495F52585F45E4 +:1012000052525F4552525F5250545B307825785DA0 +:101210000A0000005B25735D2028253034642920F6 +:101220004453495F52585F4552525F4453495F46A9 +:101230004154414C5B307825785D0A00402A0040DB +:101240005B25735D20282530346429204453495F91 +:1012500052585F4552525F4444495F464154414CA5 +:101260005B307825785D0A005B25735D202825308A +:10127000346429204453495F52585F4552525F49B4 +:1012800050495F464154414C5B307825785D0A00F7 +:101290005B25735D20282530346429204453495F41 +:1012A00052585F4552525F4649464F5F464154414E +:1012B0004C5B307825785D0A000000005B25735D8B +:1012C00020282530346429204453495F52585F4513 +:1012D00052525F5048595B307825785D0A00000013 +:1012E0005B25735D20282530346429204453495FF1 +:1012F00052585F4552525F4453495B307825785DC0 +:101300000A0000005B25735D202825303464292005 +:10131000436F6D7072657373696F6E5F656E206386 +:1013200068616E67655B307825785D0A00000000B3 +:101330005B25735D20282530346429204453495FA0 +:1013400052585F494E545F53545F4444495B307870 +:1013500025785D0A000000005B25735D202825309C +:10136000346429204453495F52585F4552525F49C3 +:1013700050495B307825785D0A0000005B25735D7D +:1013800020282530346429204453495F52585F4552 +:1013900052525F52585F54524947474552535B304F +:1013A0007825785D0A000000FEB55A48C16880685B +:1013B0000291019000240021574880680207120F13 +:1013C000564880680007000F002A00D01146002808 +:1013D00001D001240146A00001AA15586869C0B2D5 +:1013E000AA681206920F4E4E022905D0042934D065 +:1013F000062963D00C292FD1002A0FD0302060435A +:10140000871907E0E86F800713D501222146284697 +:1014100003F05EFCB8880028F4D10AE03020604375 +:1014200080198088002804D001222146284603F034 +:101430004FFC3020604383199888002862D1002235 +:101440000221284603F084FBCA209862DA69002A48 +:1014500058D0196A986A904754E0002A0FD030207B +:101460006043871907E0B889002813D0002221467D +:10147000284603F02DFCE86F0007F4D40AE0302082 +:10148000604380198089002804D000222146284624 +:1014900003F01EFC3020604383199889002831D165 +:1014A00000228121284603F053FBCB20D862DA6961 +:1014B000002A27D0196AD86A904723E0022805D06D +:1014C000802803D0082801D004281BD120463021D1 +:1014D00048438619B089002808D0284603F004FB49 +:1014E000F269002A02D0D120316A9047B0880028E2 +:1014F00008D0284603F012FBF269002A02D0CF2060 +:10150000316A904707A0006800906846005703F0D2 +:10151000ABF9FEBDF4B30100006800400098004044 +:10152000042107000D0D0000002809DBC106C90ECB +:101530000120884003490860BFF34F8FBFF36F8FCE +:101540007047000080E100E0002805DBC106C90EFD +:1015500001208840014908607047000000E100E078 +:1015600002E008C8121F08C1002AFAD17047002003 +:1015700001E001C1121F002AFBD17047F0B51FB472 +:1015800086B00998089A030D0021024314D05148EF +:10159000514A1818504305141198012810981AD070 +:1015A000281A401C00264D4F4D4900960191049089 +:1015B000002812DA444211E01198012449A30128BD +:1015C00001D11098C1430698119A84600360C260EB +:1015D00041600BB0F0BD4042E4E704462105002025 +:1015E0003F4A001C51410391029012E0E00707D0EE +:1015F00032463B4601990098FEF790FF019100901A +:1016000032463B4610461946FEF788FF06460F460F +:101610006410002CEAD10498039B0028029A0999CF +:10162000089806DAFEF77AFF019B009AFEF776FF2C +:1016300005E0FFF76BF9019B009AFFF767F9044695 +:101640000E460022284BFFF7F9F903D80020C043CB +:10165000014607E00022254B20463146FEF7ACFE4E +:10166000FFF7CCF9102409E0002C0ADB0A22002342 +:10167000FFF748F8079B30321A55641E02460A43AA +:10168000F2D11122641C079B121B1C19119B012B08 +:1016900003D0012308430ED10AE0084304D01120EF +:1016A00010900020119077E71098151A6D1E0BE02E +:1016B0001098824202DD00236D1C03E0824201DAB1 +:1016C00000236D1E002BEED0069811998260C16038 +:1016D00030C07EE701FCFFFF104D00000000144009 +:1016E0000000F03F300000000000F0430000E03F49 +:1016F000FFB597B00646002518E2252877D10024CB +:101700002746FD49049400E00443761C327801200A +:10171000203A90400842F7D130782A280ED0022291 +:10172000307801463039092916D804990A235943DB +:10173000303940181443761C0490F1E7189802C819 +:1017400004911890002904DA012040030443484220 +:10175000049002200443761C30782E2814D10420F3 +:1017600004437078761C2A2809D11898761C80C802 +:10177000189009E00A214F43303FC719761C307892 +:10178000014630390929F5D930786C2810D006DCAB +:101790004C281AD068280ED06A2817D104E0742883 +:1017A00013D07A2812D110E00120400504430CE048 +:1017B0000121090501E0032109050C4371788142EB +:1017C00003D1012000052418761C761C3078119076 +:1017D00066280BD013DC58287DD009DC00287BD08C +:1017E0004528F6D04628F4D047281AD1A5E118E0BC +:1017F000632835D0642870D0652812D19DE1702807 +:101800006CD008DC6728F1D069287BD06E280DD019 +:101810006F2806D1BAE073282ED0752871D07828A9 +:1018200059D01A9A199990476D1C7EE16002400FB9 +:10183000022809D003280DD00428189801680DD07B +:101840000D60001D189070E11898EA1701680D608E +:101850004A60F6E7189801680D80F2E70D70F0E72E +:1018600018986A4601781172001D18900020507275 +:1018700002A80090012005E0189802C818900020E6 +:101880000091C04361070DD5002101E00199491C79 +:101890000191B94212DA8142F8DB009A515C0029C9 +:1018A000F4D10BE0002101E00199491C0191814232 +:1018B000FADB019A0099895C0029F5D10199049815 +:1018C0001A9B471A21463846199A00F097FA01994F +:1018D000401945180BE04FE02CE113E04EE0009872 +:1018E00000990078491C00911A9A1999904701981B +:1018F000401E0190401CF2D1214638461A9B199A8D +:1019000010E137E00A200021009001916002410FB0 +:10191000022907D0189A01CA1892C21794460329BF +:1019200008D00AE01898C01DC108C90005C918915F +:10193000944607E000B2C2179446042902D140B28F +:10194000C1178C4600226146944506DA0A460021FA +:10195000404291418C462D2102E0210504D52B21E6 +:101960006A461173012103E0E10701D02021F7E766 +:10197000029155E00A200AE0102008E010200090B3 +:101980000021042004430191082703E008200021DE +:10199000019100906002410F022907D0189A01CAF4 +:1019A000189200229446032908D008E01898C01D18 +:1019B000C108C90005C91891944603E080B2042902 +:1019C00000D1C0B200210291210729D511997029B7 +:1019D00006D0009A1021019B4A401A4305D00EE020 +:1019E00040216A461173012108E06146014306D097 +:1019F00030216A4611731199517302210291009AA4 +:101A00000821019B4A401A430AD16146014301D192 +:101A1000610705D530216A46117301217F1E0291AD +:101A20001199582904D035A10E910DA90D910DE001 +:101A300037A1F9E76146019B009AFEF763FE0E9B12 +:101A40008C469B5C0D9A521E0D92137061460143A9 +:101A5000F0D10D9805A9081A20300190600703D530 +:101A600001200004844300E001270198874201DD42 +:101A7000381A00E0002001990090411802980918D6 +:101A80000498401A0490E00306D421461A9B199A40 +:101A9000049800F0B3F94519002706E003A81A9A44 +:101AA000C05D199990476D1C7F1C02988742F5DB39 +:101AB000E0030CD521461A9B199A049800F09EF970 +:101AC000451904E01A9A3020199990476D1C009925 +:101AD000481E00900029F5DC08E00D980D9900786B +:101AE000491C0D911A9A199990476D1C0199481E2D +:101AF00001900029F1DC63E1092801003031323323 +:101B00003435363738396162636465660000000039 +:101B10003031323334353637383941424344454623 +:101B20000000000000F05AF94519761C30780028B2 +:101B300000D0E2E528461BB0F0BD600700D40627C0 +:101B40001898C01DC108C90048680A680831C30F49 +:101B5000DB071891190001D09CA108E0210501D5EF +:101B60009BA104E0E10701D09AA100E09AA1430003 +:101B700011985B08109165280CD006DC452809D027 +:101B800046281DD0472841D141E0662818D0672853 +:101B90003CD13CE00021112F01DB112000E0781C3A +:101BA0000191009008A911A8FFF7E8FC139905918D +:101BB0000021119A15927F1C12980197009150E014 +:101BC0000120C00703900120019008A9009711A8E7 +:101BD000FFF7D4FC139A149905920022119B0092EE +:101BE00012981593059A0192002901D0104602E03F +:101BF000791C40180190381A01D5019804E0404240 +:101C0000401E0090781C0190C01B029043E0012F01 +:101C100000DA01270021112F01DD112000E03846F4 +:101C20000191009008A911A8FFF7A8FC139905914C +:101C3000119A0021129815920091019721070CD456 +:101C40000599B94201DB019900E00191012904DD08 +:101C5000159A491E515C302906D0B84201DA011D9F +:101C600005DA0121029115E00199491EEDE70028EE +:101C700005DC0099411800910199091A03E0019AC5 +:101C8000411C914200DD01910099401A401C0290D4 +:101C90000120C0070390200706D4029901988142D1 +:101CA00002DB0020C043029000206946C87707AFDE +:101CB000012103980337C907884224D002201190DC +:101CC0002B201290039800280CDA404203902D201C +:101CD000129007E00A210398FEF738FA30317F1E90 +:101CE000039039701199481E11900029F2DC039875 +:101CF0000028EFD1791E1298087030782021084012 +:101D00004530BF1E387006A8C01BC01D0390109838 +:101D10000078002800D00120019941180298C017CE +:101D20000918039809180498401A401E0490E0030B +:101D300006D421461A9B199A049800F05FF84519B9 +:101D400010980078002803D01A9A199990476D1CB2 +:101D5000E00324D521461A9B199A049800F04EF806 +:101D600045191CE00098002807DB00990598884277 +:101D700003DD1598405C199901E0199930201A9AF1 +:101D8000904700986D1C401C00900298401E0290E5 +:101D9000002804D11A9A2E20199990476D1C019998 +:101DA000481E01900029DDDC05E038781A9A7F1C76 +:101DB000199990476D1C0399481E03900029F4DC83 +:101DC00021461A9B199A0498ACE600002D000000E9 +:101DD0002B0000002000000000000000F8B50446C1 +:101DE00000251E461746880404D405E03946202005 +:101DF000B0476D1C641EF9D52846F8BDFFB50446F2 +:101E0000002581B01E46C80301D5302700E02027F9 +:101E1000880404D505E038460399B0476D1C641E5C +:101E2000F9D5284605B0F0BDF0B58DB006460C4694 +:101E30001746042C0DD1202060210A220323009292 +:101E40000191029000221C213D48006803F052FEDF +:101E500073E0A12C20D1F620212125222B230993E8 +:101E60000A920B910C9006201121AA22F3230593CC +:101E70000692079108900120C6210C22212302928C +:101E800001930092039104900D2300221C212C4801 +:101E9000006803F02FFE50E0DA2C09D10A2001235C +:101EA0000022212100902648006803F023FE44E030 +:101EB000DB2C09D168200123002221210090204839 +:101EC000006803F017FE38E0DC2C09D1072001235D +:101ED0000022212100901A48006803F00BFE2CE03C +:101EE000D62C11D1862061218522EA23019302920A +:101EF00003910490F020052300221C21009010483B +:101F0000006803F0F7FD18E00D48006803F0FAF9E7 +:101F10000546002001230246212100900848006860 +:101F200003F0E8FD00BFDD2306A207A10020019514 +:101F3000009407F065F800BF00BF01200DB0F0BDB0 +:101F400000000700703870005B25735D2028253085 +:101F500034642920725B25785D205B25645D2065F3 +:101F600072722121212121210A0000007CB5054641 +:101F70000C46E06800782249088008460078000690 +:101F8000000C0880E0684078098808431C490880F4 +:101F900008460088002803D104201A4908801FE061 +:101FA00017480088002812DD154800881649884225 +:101FB0000DDC13490988091F144A51430846124988 +:101FC000091FFEF7D9F8001D0E49088008E00C48EB +:101FD00000880D49884203DB0C48001D0949088030 +:101FE0000848007807490988091251230322009103 +:101FF00001900021392004F017F901207CBD000078 +:10200000180007001A000700FF070000FB09000086 +:1020100038B504460D4600BF06480078FF236533F7 +:1020200005A206A10090002006F0EAFF00BF0120F3 +:1020300038BD000008000700703870005B25735D34 +:10204000202825303464292064697370206F666607 +:102050002025640A0000000070B504460D461548AE +:102060000078002814D0802213491448006803F037 +:1020700025FD1248006803F0FDFD00200D490870A1 +:1020800000BFFF233D330EA20EA106F0B9FF00BF33 +:10209000292302220021052004F0C6F800BFFF23F7 +:1020A000433307A20EA1002006F0AAFF00BF0120C3 +:1020B00070BD00000C0007009C0007000000070036 +:1020C000703870005B25735D20282530346429202A +:1020D0007070735F7570646174655F310D0A000024 +:1020E0005B25735D20282530346429206469737072 +:1020F000206F6E200A00000070B504460D462823AC +:1021000001220021052004F08FF801211448006805 +:1021100003F0B0FF0A2000F0E5FC002006F0EEF826 +:102120000A2000F0DFFC102301220021052004F02A +:102130007BF8142000F0D6FC0021082004F09AFC63 +:1021400001220849104604F03BFC00BFFF23A433E2 +:1021500005A206A1002006F053FF00BF012070BDBC +:102160000400070001220100703870005B25735DD8 +:102170002028253034642920656E74657220736CC4 +:10218000656570206D6F64650A00000070B50446D7 +:102190000D4600BFFF23BD3303A204A1002006F0BB +:1021A0002FFF00BF012070BD703870005B25735D8C +:1021B00020282530346429206578697420736C6583 +:1021C0006570206D6F6465200A00000070B50546DB +:1021D0000C46A06801280ED1E0680078012805D1DE +:1021E00000210648006803F045FF04E0032103488E +:1021F000006803F03FFF012070BD000004000700ED +:1022000010B5044600BF084B08A209A1002006F043 +:10221000F7FE00BF01200F49087002220021084686 +:1022200004F0CEFB10BD0000E20600007038700024 +:102230005B25735D202825303464292061705F722E +:1022400073746E5F70756C6C5F646F776E5F6362E2 +:102250000A0000000A00070010B5044601200449E6 +:10226000087002220021084604F0AAFB10BD0000FD +:1022700009000700FEB506460C460025E068057813 +:10228000302D0CD1FF20CF211122972300920191F4 +:10229000029004220021392003F0C6FF0DE0202D1A +:1022A0000BD1FF20CF2100229723009201910290B1 +:1022B00004220021392003F0B7FF0120FEBD10B534 +:1022C00000F03CF800BF05F0BAFF0028FBD000F09A +:1022D0000DF806F041F801220821002006F07AF8F6 +:1022E00000F0BCF800F03AF910BD00001FB5054B36 +:1022F0000FCB6C460FC404242146684604F0EEFA66 +:102300001FBD000070B3010010B500F09DFA09492F +:10231000094806F0DFFB0121082004F034FB5A20B5 +:1023200000F0E0FB012005F0E9FF1F2006F040F877 +:1023300010BD0000289301004620000010B5394868 +:102340000068002803D102F053FF364908601520C9 +:102350008001344909680860BB20000131490968DF +:1023600048608720C0002F49096888604B204001E1 +:102370002C490968C86002202A49096808740120AC +:10238000284909684874002026490968887404218E +:102390002448006820308174224800682030C174CD +:1023A000012120480068203001751E480068203057 +:1023B00041751D481B49096888631C491948006814 +:1023C0008030C1631A4917480068803001640421D5 +:1023D0001448006881830121124800681830017395 +:1023E000144910480068803041640E48006820306D +:1023F000407D012805D180220F490A48006803F07A +:102400005DFB0848006802F08DFF0648006803F095 +:1024100001FC00BF094B0AA20AA1002006F0F0FD52 +:1024200000BF10BD0000070000105E5FC8920100F1 +:10243000291E0100A18701001C0007004D060000B5 +:10244000703870005B25735D2028253034642920A6 +:10245000727820696E6974210A0D000010B5354844 +:102460000068002803D103F053FD324908600021C1 +:10247000304800682030017604212E480068203062 +:10248000017502212B48006820304176012129483E +:102490000068203081760120264909688861132070 +:1024A00024490968C8610C20224909680862012092 +:1024B0002049096848621B201E49096888624D202E +:1024C0001C490968C862152080011A49096808601A +:1024D000BB2000011749096848608720C0001549E2 +:1024E000096888604B20400112490968C8600220D1 +:1024F00010490968087401200E49096848740020D1 +:102500000C49096888740C480A4909680863094835 +:10251000006803F065FD00221146104603F0A6FD99 +:1025200000BF064B06A207A1002006F069FD00BF10 +:1025300010BD000004000700000068427B06000098 +:10254000703870005B25735D2028253034642920A5 +:10255000747820696E6974210A0D000010B5FFF7C8 +:10256000D3FE1C48006803F08BFD00211948006869 +:1025700003F080FD012018490870164800680068C3 +:102580008721C90088420CD1802214491448006870 +:1025900003F094FA1248006803F06CFB0020114924 +:1025A0000870502000F09EFA142000F09BFA2923B6 +:1025B00001220021052003F037FE1F2005F0F8FE60 +:1025C00000BF094B09A20AA1002006F019FD00BFB7 +:1025D00010BD000004000700080007009C00070071 +:1025E000000007000C000700CB06000070387000E8 +:1025F0005B25735D202825303464292074785F734F +:1026000074617274200A000010B50E48007800282A +:102610000DD000BF0C4B0DA20DA1002006F0F0FC68 +:1026200000BF022000F048F800200649087010485A +:102630000078002805D0022000F01CF800200C498A +:10264000087010BD0A000700910700007038700084 +:102650005B25735D20282530346429206170705F0C +:1026600073797374656D5F70726F636573730A005D +:102670000900070010B5044605F0DCFDFFF71FFE5A +:1026800000BF044B04A205A1002006F0B9FC00BF66 +:1026900010BD00003C070000703870005B25735DC2 +:1026A000202825303464292073797374656D207275 +:1026B0006573756D650A000038B5054631480068D8 +:1026C00003F01CFD2F48006803F03EFC2E48006814 +:1026D00003F0B8FA2C48006802F0CAFD002103207C +:1026E00004F051F900202949087005F0E7FD0420A5 +:1026F00005F0ADFD002D0FD100222549012004F089 +:102700005FF905F060FD00BFED23DB0021A222A1EF +:10271000002006F075FC33E0012D24D100BF274BCB +:102720001CA227A1002006F06BFC00BF0221112093 +:1027300005F092FD05F04CFD0446112C03D101205B +:10274000284908700EE000BF1C4B0E3311A226A1D1 +:102750000020009406F054FC00BF00220C49012028 +:1027600004F02EF90CE00321022005F017FD00BF54 +:10277000124B163307A22BA1002006F041FC00BF2C +:1027800038BD000004000700000007000800070033 +:1027900059220100703870005B25735D20282530B8 +:1027A000346429205057525F4E4F524D414C5F5375 +:1027B0004C4545505F4D4F44450A00006C070000F2 +:1027C0005B25735D20282530346429205057525FE3 +:1027D00053544F505F534C4545505F4D4F44450A4D +:1027E00000000000090007005B25735D20282530EC +:1027F0003464292077616B6575705F696F2025648B +:10280000204649584D4520746F7563682077616B89 +:1028100065757020636F6E7665727420746F2041E9 +:10282000500A00005B25735D202825303464292080 +:102830005057525F444545505F534C4545505F4D9E +:102840004F44450A0000000010B50121072004F0A4 +:1028500011F90A2000F046F90021072004F00AF9D6 +:102860000A2000F03FF90121072004F003F9282095 +:1028700000F038F910BD000010B5044805F0CAFD9D +:102880000021E120400206F0A1FB10BD00B4C40409 +:10289000F8B54A002B4B520DD6182B4A0C4605466C +:1028A000142E2BDA002E12DA284BFDF785FD0022BC +:1028B0001346FEF7C3F840D2002C03DA0124E407E4 +:1028C00000253AE02046284337D0214C14E0214F20 +:1028D0000B46F7403B402B4331D01C4BFDF76CFDC2 +:1028E00000221346FEF7AAF827D2002C03DD0120B0 +:1028F0000005F0400419BC4300251EE0332E1EDC09 +:1029000033460027143BFF43DF40384217D00F4BBC +:10291000FDF7FCFD00221346FEF790F80DD2002CC7 +:102920000ADD142E0CD03420811B01208840401970 +:10293000A84200D2641C0546BD4321462846F8BD86 +:10294000641CF9E701FCFFFF9C7500883CE4377EBE +:102950000000F03FFFFF0F000FB406990098884277 +:102960000BD107990198884207D1089902988842AB +:1029700003D109990398884202D0002004B070471F +:102980000120FBE77CB56424134D1FE0082001F013 +:1029900065FC002801D001207CBD28684007800F1D +:1029A00014D00E48406929680091019048230CA278 +:1029B0000FA1022006F024FB01F0FAFB022001F037 +:1029C000FFFB042001F0FCFB00207CBD2046641EC0 +:1029D000E4B20028DAD17CBD002000400021004094 +:1029E00068616C5F696E746C5F6463730000000003 +:1029F0005B25735D20282530346429206572205BB7 +:102A000025785D5B25785D200A00000030B513490C +:102A1000C87A0A7A904201D1002030BD887AFF221C +:102A200019320F4B5043C01802461832C2608A7ADE +:102A3000FF2519356A43D2180124FF320132D475BB +:102A40000B7A8A7A5B1E9A4202D100228A7201E0D6 +:102A5000521C8A72CA7A521CCA7230BDE820070022 +:102A60008810070004480F21017200214172817211 +:102A7000C172012070470000E82007000E48C17AAB +:102A8000002910D0417AFF23193359430B4B002200 +:102A9000C918FF310131CA75037A417A5B1E994228 +:102AA00003D1427203E000207047491C4172C17A91 +:102AB000491EC17201207047E820070088100700F6 +:102AC0000648C17A002906D0407AFF2119314843CF +:102AD000034940187047002070470000E8200700B5 +:102AE0008810070010B5044603E07D20C00000F008 +:102AF00005F82046641E0028F7D110BD10B500224D +:102B0000084B1978022800D210BD05E00A4600BF24 +:102B10001346521E002BFBD10346401E002BF5D15D +:102B200000BFF1E70C02070010B501F031FC10BD49 +:102B30000D4A002903D0916801439160704701015B +:102B40000DD50121C906884393688343936090683B +:102B5000C002800FF2D190688843906070479168FE +:102B600081439160704700000080004010B511481B +:102B700001680906890F40684006C20F0E480F4BD6 +:102B80000F4C022902D0012906D00AE00D48596AEB +:102B9000A14206D10C4804E00C48596AA14200D178 +:102BA0000B485106090E002900D10121FDF7CEFA8C +:102BB00010BD00000080004000B4C4040084004048 +:102BC0004004200300A3E11180B2E60E00C2EB0B2B +:102BD000C037F4090249C8600020C860704700008F +:102BE0000080004010B5010AC2B2074803680C24F7 +:102BF000A34389000B4303604168E30399435204F4 +:102C00001143416010BD000000800040024A53683B +:102C100083430B43536070470080004030B501028E +:102C20000A0E0104090EC3B20A4804688501AC43C8 +:102C300052051443046002684401A24309050A4393 +:102C4000026041680722520291435A0211434160D7 +:102C500030BD00000080004030B501020A0E0104C2 +:102C6000090EC3B2094804688515AC431202144327 +:102C7000046042683024A24309010A43426041686B +:102C800008229143DA001143416030BD00800040CA +:102C900010B5010AC2B207480368C414A343C902AD +:102CA0000B4303604168831499431203114341604D +:102CB00010BD00000080004010B5010AC2B20748F4 +:102CC00003688414A34309030B430360416803238F +:102CD000DB039943D2031143416010BD00800040E3 +:102CE000012181400348C2680A43C260C2688A4326 +:102CF000C26070470080004010B5010AC2B20748A8 +:102D00000368C024A34389010B4303604168402347 +:102D1000994392011143416010BD000000800040C2 +:102D200010B5010AC2B2074803680415A34389021B +:102D30000B4303604168FF2381339943D201114360 +:102D4000416010BD0080004009070078090F800035 +:102D5000814002484268114341607047005400407E +:102D600001788900024A1268007CCA40104070470E +:102D70000054004004488068800104D50348016A7B +:102D800049084900016270470080004080240040EB +:102D900010B50A4B9B689B010FD5094BC900491C14 +:102DA0009200114300040143D8070143054A106A09 +:102DB00098430843106201F027FB10BD00800040DB +:102DC0000D0007808024004005488068800101D400 +:102DD000FF2070470348006A4003400F704700001F +:102DE000008000408024004005492022002803D0B4 +:102DF000086A904308627047086A10430862704787 +:102E000080240040FFB585B00F9D109C0F460799A8 +:102E1000059800F09DF802902846FDF7E7FB384E34 +:102E200001463046FDF77DFA03900E98FDF7DEFB74 +:102E300001463046FDF775FA01460398FDF771FA31 +:102E40003049FDF731FA0490012C47D007990598D5 +:102E500000F0A6F804462846FDF7C8FB284E0146B8 +:102E60003046FDF75EFA05460E98FDF7BFFB0146BA +:102E70003046FDF756FA01903846FDF7B7FB064697 +:102E80000898FDF7B3FB07460299FDF70DFA1E49B6 +:102E9000FDF7B1F92946FDF707FA3146FDF741FA8A +:102EA000054638460199FDF7FFF92146FDF739FA45 +:102EB000064631462846FDF71BFC12D2314628460D +:102EC000049CFDF7E9F90199FDF72BFA2146FDF77E +:102ED00092F98121C905FDF78EF907E00124A407C5 +:102EE000B9E78121C9050498FDF785F9FDF7C6FB0F +:102EF0000022064BFDF760FAFDF7A2FB09B0F0BD1A +:102F0000286B6E4E0000A0410000C0400000E03F72 +:102F100010B50424002809D0022001F0A5FC0121ED +:102F2000022001F0F7FC0948046010BD022001F006 +:102F30009BFC0021022001F0EDFC0448803004607D +:102F4000BFF34F8FBFF36F8F10BD000000E100E0B3 +:102F500000B50246002902D07F20C00500BD0C4804 +:102F60001300FEF73AF80B07080B07070D0F0807C9 +:102F700007110700F2E70120800700BD054800BDEA +:102F8000054800BD054800BDFF20800500BD0000CC +:102F900000004040000010400000704000009040E1 +:102FA000002901D004487047072802D07F20C005BF +:102FB00070470120800770470000C0400248406908 +:102FC000C007C00F7047000000280040024880681A +:102FD0004006C00F704700000028004001484069CB +:102FE000000C704700280040034901200860486039 +:102FF0000249486070470000002900400028004056 +:1030000005490A15002803D0486B104348637047F0 +:10301000486B904348637047802A004030B5074CA6 +:10302000A568ED08ED00401E054304200543A5609A +:103030008800510008431843206130BD002800403B +:10304000024901220A61486170470000002B0040DC +:1030500005494022002803D08868104388607047E3 +:10306000886890438860704700280040014A8018B3 +:103070000160704700280040024A10600020506044 +:1030800091607047002C004005490822002803D0B9 +:1030900088681043886070478868904388607047EC +:1030A00000280040034A91683023994300010143FE +:1030B0009160704700280040074A50600648C038B9 +:1030C000002904D0416801221143416070474168E2 +:1030D0004908490041607047002B004005498A14A7 +:1030E000002803D088681043886070478868904340 +:1030F0008860704700280040FEB50C4616463649E9 +:10310000FDF724F8354988470546032001903448E7 +:1031100000F012FF324FA8793F1D43004422314D89 +:103120003946381FA8478B201B232222009039469E +:10313000381F2D4FB8472E492C4808602C4840387E +:103140004269D208D200324342610020032E05D9E1 +:10315000F61E032E01D2304600E00320244B803BB4 +:103160009A690326B606B243800602439A61214853 +:103170000860002C23D0E00705D0194901238522DF +:10318000091D081FA847A00705D515490123552289 +:10319000091D081FA847600705D5114900234522CE +:1031A000091D081FA847200705D50D4900239522B2 +:1031B000091D081FA847E00601D502200190084C10 +:1031C0003522241D261F21463046019BA847214653 +:1031D000304600F0B9FEFEBD40420F000130020053 +:1031E000182900400132020001330200CDAB341235 +:1031F0008084004068245713034900200860486019 +:103200000249486070470000002900400028004043 +:103210008901014310020143180401430148C162BE +:10322000704700004004004049000143107800024C +:103230000143507840020143907880020143D078E6 +:10324000C002014310790003014350794003014358 +:10325000907980030143D07900040143107A40043F +:103260000143507A80040143907AC0040143D07A2C +:10327000000601430148816270470000400400409D +:1032800001490863704700004004004006490028D7 +:1032900004D0C86A01221043C8627047C86A400857 +:1032A0004000C8627047000000040040014A5060BE +:1032B00091607047C00400400904014301488161E6 +:1032C0007047000000040040024BD8601002084321 +:1032D0001861704700040040027881785200114361 +:1032E0004278C3789200DB0000791A431143000151 +:1032F00001430148416170470004004001494862B0 +:1033000070470000400400400148406B70470000D7 +:103310004004004001494863704700000004004039 +:1033200005490222002803D04869104348617047CC +:10333000486990434861704780040040064900286E +:1033400004D0486901221043486170474869400829 +:103350004000486170470000800400400902401EA0 +:103360000143014841627047800400401849486A9F +:103370008007800F401C0A6BD20709D0012809D0B2 +:1033800002280BD0032811D0042818D00020704741 +:1033900000207047086BC006C00F7047086B902173 +:1033A000084201D00120704700207047086B292196 +:1033B0000901084201D00120704700207047086BC6 +:1033C000A9210901084201D001207047002070475F +:1033D0008004004000B50F490300FDF7FEFD050421 +:1033E000080C10141800086B4007C00F00BD086BD4 +:1033F000C006C00F00BD086B0006C00F00BD086B03 +:103400008005C00F00BD086B0005C00F00BD002087 +:1034100000BD000080040040FEB550210A22504348 +:103420004F30FCF793FE441E601C502148430A2194 +:10343000FCF78CFE02904749029888470646E00652 +:10344000C00E0190E005070F803743490298884776 +:10345000054601F015FB414800F06EFD3F49012390 +:103460004522091D3E4C081FA0473C490123352237 +:10347000091D081FA047394901239522091D081F6E +:10348000A047B079354943004422091D081FA047D1 +:103490003249802002231422091D0090314E081F5A +:1034A000B0472E492C231522091D081FA0472B4980 +:1034B00090231622091D081FA047284930231922EE +:1034C000091D081FA047254909231722091D081FA8 +:1034D000A04722491822091D0097081F019BB047E9 +:1034E0002B791E49C02003431222091D081FA04743 +:1034F000A8781A49C300687910224000034380204D +:103500000343091D081FA04714491122091DEB7828 +:10351000081FA047114980234222091D081FA04708 +:103520000E4980235222091D081FA0470B49802302 +:103530008222091D081FA047084980239222091DE5 +:10354000081FA047002001F0BBFA01F0A9FA029879 +:10355000FEBD00000130020001310200B404004051 +:103560000132020001330200C2788378120413434F +:10357000044A9361037940791B04000603430B431B +:10358000D3617047800400400149012048607047C2 +:103590000004004030B5049D039C89000143D8001D +:1035A000014320010143680001430248C1620263F4 +:1035B00030BD00000004004005490A14002803D073 +:1035C000886B104388637047886B904388637047AB +:1035D0000004004003498A68120A120202438A600A +:1035E000704700000004004010B50824002809D0EE +:1035F000032001F039F90B4804600121032001F098 +:1036000089F910BD0021032001F084F905488030BC +:103610000460BFF34F8FBFF36F8F032001F024F9D5 +:1036200010BD000000E100E0044A9168FF231B0286 +:10363000994300020143916070470000000400407C +:10364000034BD8630248403001604260704700007D +:1036500000040040074A1161016991604169D1602D +:103660000168516141689161C168D16180681062EF +:103670007047000040040040014900204860704746 +:103680000004004001880A0441680A4307498A632C +:103690008268CA630549C26840310A6002694A60AB +:1036A00042698A608069C860704700004004004039 +:1036B000384A936B9B089B000343936308789315E8 +:1036C000002803D0906B1843906302E0906B9843FE +:1036D0009063487801235B02002803D0906B184365 +:1036E000906302E0906B98439063887801239B027B +:1036F000002803D0906B1843906302E0906B9843CE +:103700009063C8780123DB02002803D0906B184334 +:10371000906302E0906B984390630B790120000363 +:10372000002B03D0936B0343936302E0936B8343BB +:103730009363487901235B03002803D0906B1843FF +:10374000906302E0906B98439063887901239B0417 +:10375000002803D0906B1843906302E0906B98436D +:103760009063CB791020002B03D0936B03439363BA +:1037700002E0936B83439363097A0120C00300291D +:1037800003D0916B014391637047916B81439163C7 +:10379000704700000004004010B50446002020607F +:1037A00001218807FFF7C4F9204600F010F8A0684F +:1037B000072109040843A060A0688107FCD14003E9 +:1037C00004D5A068012189040843A06010BD4168A8 +:1037D0000722120411434160704770B504460E463B +:1037E0001546012000F0BCFB60687106C009C001ED +:1037F000490E084360600121204600F00BF8A068E4 +:103800008003FCD5E0682860A068012149040843D2 +:10381000A06070BD002904D001680122114301603D +:1038200070470168490849000160704710B50446B7 +:103830000648E2008158002902D01018001D884770 +:10384000183460B201F010F810BD000048100700F5 +:103850000149086070470000100207001838034B48 +:10386000C0001950C01802717047000048100700CE +:1038700070B50446E006C00E01258540002908D039 +:10388000002C01DB0A4805600121204601F042F8C6 +:1038900070BD0021204601F03DF8002CF8DB044803 +:1038A00080300560BFF34F8FBFF36F8F70BD000096 +:1038B00000E100E00122064B8240002903D0186A93 +:1038C000104318627047186A9043186270470000EE +:1038D0000070004010B5034C9200A35883430B4383 +:1038E000A35010BD007000400122064B8240002909 +:1038F00003D0586810435860704758689043586028 +:10390000704700004070004007490A688B149A43D2 +:103910000A60818842880905120200781143014338 +:1039200002480163704700000008004000090040A1 +:10393000084A116B084B0004194001431163054804 +:1039400040380268C1048A43026002680A43026088 +:103950007047000040080040FFFF00F010B5044829 +:103960004168FF2211434160012000F07DFF10BD3E +:103970008008004010B50B490A6802231A430A6008 +:103980000422002803D008681043086002E0086899 +:1039900090430860086801221043086000F09EFD13 +:1039A00010BD00000008004009040143D007014396 +:1039B0000148C16370470000400800404278017828 +:1039C000520011438278C3789200DB001A431143FE +:1039D0000279120111434279520111438279C0796F +:1039E00092011143C001014301488160704700000A +:1039F0008008004010B5084B5C68012282401443E7 +:103A00005C60002903D098681043986010BD9868E6 +:103A10009043986010BD0000800800400B020343F3 +:103A20001004034308060343014843637047000042 +:103A300000080040828B511AC28B120411430F4AB6 +:103A40001160016ACA080188C908C9050A430C49FE +:103A50000A61426AD2084A610279002A08D0806865 +:103A6000064AC008803A10620868CA141043086009 +:103A70000868012292041043086070470009004062 +:103A8000000800400249CA68101AC8607047000068 +:103A90004008004070B505460C4616461D2000F053 +:103AA000D1F82104084829430163816B3205090BD1 +:103AB0000903120D11438163034840380168021362 +:103AC0001143016070BD00004008004010B5094A74 +:103AD00053689415A3435360074A002804D0106A22 +:103AE00001231843106203E0106A4008400010628E +:103AF000516210BD00080040800900400C490A686E +:103B0000CB139A430A600B498A680378120A12029F +:103B10001A438A60407801221207002803D088687F +:103B20001043886070478868904388607047000041 +:103B3000000800408009004015490A68CB139A43E9 +:103B40000A6014498A68FF231B029A4343781B02C8 +:103B50001A438A608A68104B1A4043881B051B0968 +:103B60001A438A60027801235B07002A03D08A681F +:103B70001A438A6002E08A689A438A608288C08811 +:103B80001205120D0005000A02430A617047000089 +:103B90000008004080090040FFFF00F007490A02CA +:103BA000002807D008681043086008680A1310430B +:103BB000086070470868904308607047000800403C +:103BC00005490822002803D00868104308607047A0 +:103BD00008689043086070470008004005490A687B +:103BE0008B139A430A60018840880003014302480E +:103BF000C1607047000800408009004007490A681A +:103C00000B159A430A604A13002803D00868104332 +:103C100008607047086890430860704700080040DB +:103C2000074B0121202804D21A6881408A431A6078 +:103C300070475A68203881408A435A6070470000B4 +:103C400000080040074B0121202804D21A68814057 +:103C50000A431A6070475A68203881400A435A6004 +:103C6000704700000008004010B50224002808D06A +:103C7000FFF774FE0A4804600121084600F04AFE7E +:103C800010BD0021012000F045FE05488030046091 +:103C9000BFF34F8FBFF36F8FFFF760FE10BD0000C3 +:103CA00000E100E005494A03002803D008681043FA +:103CB000086070470868904308607047000800403B +:103CC000054A136B1B0B1B0303431363906B000B21 +:103CD00000030843906370474008004002480168B1 +:103CE000C2041143016070470008004010B50D493F +:103CF0000A6802239A430A600422002803D0086855 +:103D00001043086002E008689043086008680122D8 +:103D1000D20510430860086852101043086000F094 +:103D2000DDFB10BD00080040044A516803235B021C +:103D30009943400201435160704700000008004071 +:103D400003494A68012383401A434A6070470000D0 +:103D5000000C004010B51024002809D0042000F009 +:103D600083FD0121042000F0D5FD0948046010BD49 +:103D7000042000F079FD0021042000F0CBFD044870 +:103D800080300460BFF34F8FBFF36F8F10BD000012 +:103D900000E100E0024801684213114301607047EE +:103DA000000C00400449496801228240114201D0C0 +:103DB0000120704700207047000C00400248006856 +:103DC0008007C00F70470000000C004010B5054A86 +:103DD000116853019943C0030143116000F0C2FB15 +:103DE00010BD0000000C0040034A116830239943C5 +:103DF0000001014311607047000C0040034A9169C3 +:103E0000034B00041940014391617047000C0040CE +:103E1000FFFF00F005498022002803D00868104306 +:103E2000086070470868904308607047000C0040C5 +:103E300003490A685208520002430A6070470000B2 +:103E4000000C0040044A11680123DB049943C004BC +:103E50000143116070470000000C004005498A14BE +:103E6000002803D008681043086070470868904332 +:103E700008607047000C0040090301430348026AD0 +:103E8000520B52030A43026270470000000C0040CC +:103E9000044B00040907084303490A6A9A43024392 +:103EA0000A6270470000FF1F000C004010B5092394 +:103EB0009B0140028901084303490A689A4302436F +:103EC0000A6000F04FFB10BD000C004009030143E5 +:103ED0000348C268520B52030A43C2607047000095 +:103EE000000C0040034A116802239943400001433B +:103EF00011607047000C004010B5084A914200D98B +:103F00001146074A13680424A34380000343136047 +:103F10009069000C00040843906110BDFF0300008D +:103F2000000C00400349CA691203120B000502434A +:103F3000CA617047000C004001684908490001222D +:103F4000114391430160704701230A681B041A431F +:103F5000120A12020A60016802229143016070474E +:103F6000094B08491960084980394A14002803D0D0 +:103F700088691043886102E088699043886103483A +:103F800018607047CDAB341280840040682457130A +:103F900010B50F4B0D4919600D4980390A690D4C58 +:103FA00022400A610A4A8024403A002803D0D0689F +:103FB0002043D06002E0D068A043D06048690C2262 +:103FC0009043001D48610448186010BDCDAB341209 +:103FD00080840040777F777768245713094A084820 +:103FE00010600848803841690C23994308314161C9 +:103FF0000169054B194001610448106070470000D9 +:10400000CDAB341280840040777F777768245713D4 +:10401000F1B5002000F0BCF81E4948690C2290431D +:104020000830486188698B15184388611A4A94687A +:10403000D80190600869194D284008618869150108 +:10404000284388611568486A844616680427BE4379 +:10405000166013484862134E00983060114840388B +:1040600006689E430660066847153E43066030BFFB +:1040700015606046486294608A69D80282438A610A +:10408000886998438861074800210160012000F099 +:104090007FF8F8BD0084004000800040777F77778C +:1040A0005F04C0034088004000B5002000F070F8B5 +:1040B000054841690C229143114341610349416222 +:1040C000012000F065F800BD008400404004C003FA +:1040D00002484069C006C00F7047000000840040DD +:1040E00010B50246002000F053F8064B596907242A +:1040F000E402A143D00201435961012000F048F8D5 +:1041000010BD00000084004010B50246002000F001 +:104110003FF8064B596903242402A14310020143CE +:104120005961012000F034F810BD00000084004007 +:104130000849074A0A60074A803A012804D006481D +:10414000506206480860704705485062F9E7000071 +:10415000CDAB3412808400404004C0036824571360 +:104160004004200300B50246002000F011F8074982 +:104170000423002A03D088681843886002E0886816 +:1041800098438860012000F003F800BD408400409F +:104190000449002802D004480860704703480860BA +:1041A000704700008084004068245713CDAB341260 +:1041B0000248012181610721016070470020004011 +:1041C00001490860704700000020004010B5002839 +:1041D00014D0052000F048FB122000F045FB01211F +:1041E000052000F097FB0121122000F093FB052031 +:1041F000FDF7AAF91220FDF7A7F910BD052000F080 +:1042000033FB122000F030FB0021052000F082FB80 +:104210000021122000F07EFB0520FDF785F9122019 +:10422000FDF782F910BD0000044B09020143044868 +:1042300042689A430A43426070470000031F00002F +:104240004020004004494A6809680A40024201D0FF +:104250000120704700207047002000400449096891 +:1042600001228240114201D0012070470020704796 +:104270000020004003490A68000492B202430A6029 +:1042800070470000402000400904014301480160DC +:10429000704700004020004001494860704700001E +:1042A000700207008901014310020143180601430F +:1042B00001484161704700000020004010B509022C +:1042C000014310040143180601430248016300F052 +:1042D00091F910BD00200040074902680A62426857 +:1042E0004A6282688A62C268CA620349026980318E +:1042F0000A6140694861704700200040054A002972 +:1043000003D0516801435160704751688143516047 +:104310007047000000200040044A516807231B0436 +:104320009943000401435160704700004020004061 +:10433000F0B505ADE0CD0C4C4900014390000143C0 +:10434000D80001432801014370010143B801014332 +:104350000898C0020143099840020143034AD06B08 +:10436000A0430843D063F0BD7F0A00000020004056 +:1043700009040143014841637047000000200040E8 +:104380000904014301488163704700000020004098 +:1043900038B51A4C2046FFF7FFF96A465C212046E3 +:1043A000FFF71BFA00980023820F1549002A03D05B +:1043B0008001800D086009E00204920F03D080059F +:1043C000800D086002E0002800D10B60112208680F +:1043D000120300280ED051680A4D8C05AC4209D05A +:1043E0008905890D814205D00F2109030843D0605A +:1043F000002038BDD360012038BD0000009000408F +:10440000680207000000C07F38B52849086AC00765 +:104410003CD02748112302680024D0071B03002842 +:104420000CD00C62D96801200143D96000905F2351 +:1044300020A223A1002004F0E3FDFEE71B48803802 +:104440000068000F0C2810D00A281DD310071DD5B6 +:104450000C62D96808200143D96000906E2315A230 +:1044600017A1002004F0CCFDFEE750060ED50C622B +:10447000D96840200143D960009067230DA210A1A4 +:10448000002004F0BDFDFEE7002801D0012038BD6A +:104490000C62D96848200143D9600090742305A2BA +:1044A00007A1002004F0ACFDFEE7000080240040DE +:1044B00068020700636869705F696E666F000000DC +:1044C0005B25735D2028253034642920686172647F +:1044D0006661756C7420307825780A0038B5154906 +:1044E00008681122C4051448002312030068002C38 +:1044F0000FDAC0051CD50B60FF20D16801300143E5 +:10450000D1600090D2230DA20FA1002004F078FD0D +:10451000FEE7C0060CD50B60D16810200143D160C6 +:104520000090DA2305A208A1002004F069FDFEE74F +:10453000012038BD00080040680207006368697008 +:104540005F696E666F0000005B25735D2028253073 +:1045500034642920686172646661756C74203078F7 +:1045600025780A0038B5174811220068002443074F +:1045700012031549002B11DA0B680525ED012B42BA +:104580000CD00C60D16804200143D16000909823C6 +:104590000EA211A1002004F033FDFEE780060FD526 +:1045A0000868C0030CD50C60D06820210843D06097 +:1045B0000091A02305A208A1002004F021FDFEE740 +:1045C000012038BD68020700000C00406368697074 +:1045D0005F696E666F0000005B25735D20282530E3 +:1045E00034642920686172646661756C7420307867 +:1045F00025780A0038B5274A106B8001810F2648BC +:10460000112300241B03006803290ED0C5051BD508 +:104610001463D96890150143D9600090B5231FA297 +:1046200021A1002004F0ECFCFEE7C5060CD51463C4 +:10463000D96810200143D9600090AE2317A21AA1B7 +:10464000002004F0DDFCFEE7050701D5012905D0B7 +:10465000800501D500290ED0012038BD1463D9682A +:1046600008200143D9600090BD230CA20EA10020B8 +:1046700004F0C6FCFEE714630120D9684002014340 +:10468000D9600090C52305A207A1002004F0B8FC62 +:10469000FEE70000002000406802070063686970C0 +:1046A0005F696E666F0000005B25735D2028253012 +:1046B00034642920686172646661756C7420307896 +:1046C00025780A0038B51E48112301680024080621 +:1046D0001B031C4A002806DA50698004800F012859 +:1046E0001ED003281CD0880727D590690005000D2F +:1046F00091690902090D2D256D01A8421DD3AF2036 +:104700000001814219D39461D96802200143D96024 +:1047100000908C230CA20FA1002004F071FCFEE796 +:104720005461D96880200143D9600090812306A29A +:1047300008A1002004F064FCFEE7012038BD000061 +:104740006802070000100040636869705F696E6668 +:104750006F0000005B25735D20282530346429201C +:10476000686172646661756C7420307825780A001F +:1047700011200003C168002901D10149C1607047BF +:104780005A5A000005490422002803D088681043C3 +:10479000886070478868904388607047006C00406C +:1047A0000148406870470000006C00400149086003 +:1047B000704700001402070009020143100401437E +:1047C000180601430148016070470000006C00407A +:1047D00070B5012676050E4C0225002809D00D483B +:1047E00006600121152000F095F8A0682843A0601C +:1047F00070BDA068A843A0600021152000F08AF8D1 +:10480000044880300660BFF34F8FBFF36F8F70BDD9 +:10481000006C004000E100E005490822002803D0B8 +:104820008868104388607047886890438860704744 +:10483000006C00400149486070470000006C004077 +:1048400005491022002803D088681043886070470B +:104850008868904388607047006C004001490020E0 +:10486000486170470088004010B500280BDB064AFD +:10487000136901210C468440A3431361C006C00E96 +:1048800081400248016010BD0088004080E200E0E5 +:104890000006074AD16907231B0699430143D161EA +:1048A00003484030016882151143016070470000E1 +:1048B000008800400246183AD2B2182808DB90005F +:1048C0000322824081400348836993430B43836101 +:1048D00070470000008800400246183AD2B21828FB +:1048E00009DB50001018072282408140024BD86932 +:1048F00090430843D8617047008800408002044A12 +:10490000516803239B0299430143516070470000A3 +:1049100000880040002807DB0122064B8240002966 +:1049200003D05869104358617047586990435861E3 +:10493000704700000088004010B50246104600F0A5 +:1049400019F8083251B20022C2600846FFF78CFF06 +:1049500010BD00B50A4600F00DF8002A04D04168E9 +:1049600001221143416000BD41684908490041608E +:1049700000BD000014214843014908587047000059 +:104980001802070070B505462846FFF7D5FF2846F0 +:104990001421484309494418207C002807D10021EC +:1049A000284600F02DF80021284600F009F8A168FB +:1049B000002901D0E068884770BD00001802070098 +:1049C00070B502460D461046FFF7D4FF044614208A +:1049D00042430848101841790748491C4143074899 +:1049E0000068FBF7B3FB01466943A160002020602B +:1049F00070BD00001802070040420F0008020700C7 +:104A000070B50246083254B20830C006C00E012507 +:104A10008540002908D0002C01DB0A4805600121EF +:104A20002046FFF777FF70BD00212046FFF772FF99 +:104A3000002CF8DB034880300560BFF34F8FBFF3D5 +:104A40006F8F70BD00E100E030B503460A4618469E +:104A5000FFF790FF510044680E25AC430C434460BF +:104A60001420434301481818427130BD1802070052 +:104A700014225043014A801801747047180207003D +:104A80000648016A490849000162016A022291430D +:104A90000162416B01221143416370478004004071 +:104AA0000648016A042211430162016A012211438E +:104AB0000162016A022211430162704780040040D2 +:104AC00008494A6B02231A434A6388638A6B881336 +:104AD00002438A634A6B9A434A638A6B82438A63BE +:104AE000704700008004004030B50546284600F0BD +:104AF00073F8044600221521284600F029F82846BC +:104B000000F004F93020444303480021201881813B +:104B1000CB21C16230BD00000421070030B505463D +:104B2000284600F059F8044600229221284600F059 +:104B30000FF8284600F0F8F83020444303480021DD +:104B400020188180CA21816230BD00000421070045 +:104B5000002A03D042680A434260704742688A4391 +:104B60004260704710B5002804D00120C007FDF74F +:104B7000DFFF10BD4020FDF7DBFF10BDF8B50F468D +:104B800000F02AF8044612A00068009001256E4645 +:104B9000002F0BD03057002804DBC106C90E8D4012 +:104BA0000C490D600121FFF7B5FEF8BD305700211B +:104BB000FFF7B0FE30570028F7DBC006C00E854077 +:104BC000044880300560BFF34F8FBFF36F8FF8BD8F +:104BD0000D0D000000E100E00CB50146074805C8D6 +:104BE0000192009000206A468300D3588B4204D083 +:104BF000401CC0B20228F7D300200CBDF4B3010062 +:104C000070B504460D462046FFF7E6FF0121FFF789 +:104C1000A9FF697E2020002907D021690143216175 +:104C2000206940218843206102E02169814321619C +:104C3000A87E0226002803D020693043206102E0CC +:104C40002069B0432061297E1020002903D021690A +:104C50000143216102E021698143216120462A68E4 +:104C6000696800F07CF8E06800090001E060287ADB +:104C7000297C8000C9000843E9680843E060A06817 +:104C80003043A060A06804210843A060687E00282B +:104C900002D1287DC00703D0A06801210843A0608D +:104CA000A06830218843297D8906890F09010843BE +:104CB000A060A068C0218843297D0906890F890169 +:104CC0000843A06001212046FFF758FF70BD000097 +:104CD00010B50D4C302359430B19002A09D06258E6 +:104CE000127802606058401C60509888401E98807E +:104CF00010BD0068996808709868401C9860988991 +:104D0000401E988110BD00000421070010B5044624 +:104D10002046FFF761FFA06804218843A060A068D7 +:104D200002210843A06010BD10B504462046FFF7DD +:104D300053FFA06802218843A060A06804210843B3 +:104D4000A06010BD07E0C36F9B07FCD50B78491C22 +:104D50000360521E92B2002AF5D101207047F8B5C7 +:104D600004460E461746002C21D0002E1FD0002FDF +:104D70001DD031013846FBF7E9F905463146384682 +:104D8000FBF7E4F90107090FE06FC007FCD1E26807 +:104D900080200243E260EAB222602A04120E6260BE +:104DA000C0221151E1688143E1600120F8BD00207B +:104DB000F8BD0000F8B505460E461746002D1BD07D +:104DC0002846FFF709FF302148430C494418302199 +:104DD0002046FBF7FEF9CB20E062CA20A062E66124 +:104DE0002762A8680006800F20342071A86880061A +:104DF000800F60710120F8BD0020F8BD042107007C +:104E0000012181400148016070470000001000400E +:104E10000649002804D0C86801221043C8607047C2 +:104E2000C86840084000C86070470000001000409B +:104E300010B50124002809D00020FFF715FD01213D +:104E40000020FFF767FD0948046010BD0020FFF750 +:104E50000BFD00210846FFF75DFD0448803004602B +:104E6000BFF34F8FBFF36F8F10BD000000E100E074 +:104E7000094A5368012181400B4201D0012000E022 +:104E80000020002806D01068084201D00120704799 +:104E90000020704700207047001000400449096856 +:104EA00001228240114201D001207047002070474A +:104EB0000010004030B5039D074C40000904084332 +:104EC0005104084399040843E9040843034A11695B +:104ED000A1430143116130BD02000F0000100040EA +:104EE000014908607047000078020700014901206D +:104EF000886070470010004005490A02002803D06E +:104F00004869104348617047486990434861704759 +:104F10000010004010B50724640441784A048178E9 +:104F2000C9040A4308494B69A34313434B61007802 +:104F30004A02002803D008691043086110BD0869BF +:104F40009043086110BD0000001000400FB4694696 +:104F50008889C989134A09030843D06100981062FF +:104F600008A9887F002804D00599516204999162AC +:104F700003E00499516205999162116904239943F0 +:104F800008AB5B7F9B00194311616B4619790029BF +:104F900001D1002803D00298C9070843106304B068 +:104FA0007047000000100040014908617047000090 +:104FB0000011004030B50B071B0F1407240F1025FC +:104FC000002900DA2B43002A00DA2C43190301439D +:104FD000200501430148C16030BD000000110040C0 +:104FE00070B50C07240F15072D0F1026002900DAC5 +:104FF0003443002A00DA35432103014328050143E5 +:10500000D80701430148816070BD000000110040D5 +:10501000054A002903D05168014351607047516827 +:10502000814351607047000000100040034A5169FD +:1050300013149943800301435161704700100040ED +:10504000044BC0008902084303490A699A4302439A +:105050000A617047080C0000001000400149086018 +:105060007047000000170040044A516903231B03E6 +:105070009943000301435161704700000010004054 +:105080000149C861704700000013004001490862EF +:10509000704700000013004009040143D00701439A +:1050A0000148016070470000001300400149486258 +:1050B00070470000001300400149886270470000FB +:1050C0000013004070B5064B1C69F025AC4312017B +:1050D00014431C61090301439961FFF7F3FA70BDA2 +:1050E00000100040427801231B040B49002A03D022 +:1050F0004A691A434A6102E04A699A434A61007860 +:1051000001221205002803D0086910430861704786 +:1051100008699043086170470010004073B50D4660 +:10512000094C0A480078022805D101226946204628 +:1051300003F0A8FF05E0012269460448007803F067 +:105140008FFA00987CBD00001C100100AC01070024 +:10515000022003F078F8FDF7B2F800BF084B09A26F +:1051600009A1002003F04CFF00BF08E000BF0F487A +:10517000006800F05DF80028F9D1FDF745FAF5E781 +:10518000C5070000703870005B25735D202825304E +:10519000346429207038702064656D6F20696E69F1 +:1051A0007420646F6E65200A000000000000070094 +:1051B00070B50E4949684A7E002A15D00A46403229 +:1051C0009379D2791B029C18002C0DD04D68604356 +:1051D0002946FAF7BBFFC117890F0818800880001D +:1051E00068432146FAF7B2FF70BD00009806070039 +:1051F00010B50E4C207A012816D02046D021C03898 +:10520000FAF7E7FF012222720220207300212046D4 +:105210004038016441640320A0720B206073204673 +:10522000A0380274203810BD002010BDD004070043 +:1052300010B504460D48A04214D1C030007A0028B1 +:1052400010D0FDF73DFC014608000DD0486900284C +:1052500004D04268002A01D020469047FDF70EFC9A +:10526000012010BD002010BD002010BD100407005B +:1052700010B52049814234D10846C030007A002858 +:105280002FD001F0F3FC04282DD0FDF773FD002092 +:10529000FDF73EFE0020FEF799FF0020FFF7C8FD56 +:1052A0000020FEF757FD0D20FDF71AFD00211248E2 +:1052B000FDF73EFC01F0EAFC022816D00120002197 +:1052C0008005FDF735FCF5208004FDF783FC0B48D5 +:1052D000012101700A494160042001F0ADFD012067 +:1052E00010BD002010BD012010BDE5208004FDF799 +:1052F00071FCECE7100407000020940B200107006C +:10530000C0E1E40010B50649814207D10846C0302B +:10531000007A002802D0FDF761FE10BD002010BD0C +:105320001004070070B504462648A04237D1C030AB +:10533000007A002833D0204600F04AF8204601F0D9 +:10534000ABFC204600F0C4F8204600F0D3F935202D +:10535000005D002828D0254640352879697900026B +:105360004018297A6A7A0902891800281CD0002975 +:105370001AD0FAF7EBFE451E80222146134B3C3132 +:1053800011489847012200212846FDF701FDC92058 +:10539000005D012805D90120FDF726FD04E000206D +:1053A00070BD0020FDF720FD204600F047FA2046A2 +:1053B00000F00AF9012001F03FFDFFF7D9F90120C3 +:1053C00070BD0000100407000024004001370200F7 +:1053D000FEB501256D0201240021019121020091F9 +:1053E000024640321379127A934201D1012600E03D +:1053F0000026074620377A7D1640CB231B5C002B06 +:105400000DD0022B04D0002E38D00124240435E026 +:105410000120FEF78DFE002E30D000242EE0002A61 +:1054200009D0234B826B9A4224D8224B224C9A42B9 +:1054300014D90D461EE0806B204A904201D90C46DB +:1054400007E01D4C1E4AFF34904201D90D4600E092 +:105450001C4DB87C042811D101910FE01A4B9A42DF +:1054600006D9407C002801D00D4603E0154D01E02F +:10547000FF250235002E01D0012424040121134808 +:10548000FDF756FB787D002803D001214806FDF783 +:105490004FFB2846FDF730FC2046FDF7DDFB019869 +:1054A000FDF73EFC0098FDF7F3FB0120FEBD000078 +:1054B000002F6859008C86470100010000105E5FD4 +:1054C00000CA9A3B010200000008AF2F0020D40D53 +:1054D000FEB504463548A04215D1C030007A0028F8 +:1054E00011D0002500200190FDF740FB0090304FC7 +:1054F00000987968FAF72AFE0646617C204620303B +:10550000002902D005E00020FEBD817C072900D1E2 +:1055100001250023C07C1A460121FDF77FFDF0B272 +:10552000FDF78EFD607C002804D12A4620460099B4 +:1055300000F058FB2646C036B27AA18AA06BFDF770 +:10554000DBFD307BFDF7AEFD0120FDF781FD002D79 +:1055500001D0012000E00020FDF796FD0198FDF745 +:10556000BDFDAD2013498000FDF780FD7878FDF783 +:1055700047FD717A81208000002903D00E49FDF794 +:1055800075FD02E00D49FDF771FD0D480099FAF730 +:10559000DDFD01460B48FAF7D9FD0121FDF78CFD31 +:1055A0000120FDF7B5FC0120FEBD0000100407003E +:1055B0002001070002020000FFFFFF0F01010101AF +:1055C00000CA9A3B00E1F50510B592B00446484880 +:1055D000A04218D1C030007A002814D002F0FEFAA0 +:1055E000FEF726FC01A802F0FFFA02F0F7FA002805 +:1055F0000CD010A8C078002849D001220021104604 +:10560000FEF754FC48E0002012B010BD207C0300DF +:10561000FBF7E3FC050406080A0A2000002004E06A +:10562000012002E0022000E00320FEF7CFFB207CF7 +:10563000002811D010A84078002819D00021082097 +:10564000FEF71AFC00210820FEF722FC0220FEF7DC +:10565000CBFB21E00020D7E70120FEF7C5FB0021AE +:105660000420FEF709FC00210420FEF711FC13E0E2 +:105670000320FEF7B9FB00210420FEF7FDFB00210B +:105680000420FEF705FC1820FEF74CFC04E0002285 +:1056900011461046FEF70AFC09210020FEF72CFCFB +:1056A0000120FEF71FFC10A84078FEF7CBFB10A8E6 +:1056B0008078FEF7AFFBA07E01280AD0032808D02F +:1056C0006846408AFEF79AFB10A88078012805D02A +:1056D00008E06846008AFEF791FBF5E70121022009 +:1056E000FEF7F4FB0120FEF735FB01208CE70000FC +:1056F00010040700F0B59FB004464D48A04221D1E8 +:10570000C030007A00281DD0002500201E901D907A +:105710001C901B901A900120199001276068410885 +:1057200018918008179006A802F05EFA26462036E7 +:10573000B07C042811D0052807D0072807D00628F8 +:1057400009D00AE000201FB0F0BD012505E00325C7 +:1057500001201D9001E001250027707D012804D162 +:10576000607C002801D101201A9000222B461146AE +:105770001046FEF7A3FD607C002809D101201E9091 +:1057800002F02CFA00280BD001212020FEF7B6FDF4 +:1057900010A8C07D00281BD00220FEF7BDFD1AE036 +:1057A000207C01280AD002280DD0032801D004282B +:1057B000EED11A210320FEF737FDE9E7042102208C +:1057C000FEF732FDE4E702210120FEF72DFDDFE7C1 +:1057D0000420FEF7A1FD1C991998049703901D98C9 +:1057E0001B9A019100900292627C707D1E9B1A9917 +:1057F000FEF79EFD21680020491EFEF7B9FD616895 +:105800000020491EFEF7BCFD17991898FEF73CFDD5 +:1058100001210848FEF772FD0120FEF7D7FC06487B +:105820000078002801D001F033FF01208BE7000051 +:10583000100407000742640020010700F0B5A5B07E +:1058400004469A48A04216D1C030007A002812D0EF +:1058500001202390012501262290002021902090F4 +:10586000934800681F90204620302490007900283B +:1058700004D0678C03E0002025B0F0BD002700288D +:1058800001D0E08B00E000201E900DA802F0ACF9E2 +:105890002498807C072807D108202190002023909D +:1058A00018A9087701204877A07E012819D003287D +:1058B00017D010A909882068884200D9002510A9AE +:1058C00049886068884200D90026002F00D0002552 +:1058D0001E98002800D0002618A8407D01280DD071 +:1058E0000EE010A949882068884200D9002510A937 +:1058F000098860688842E8D90026E6E700202290FF +:1059000061682068219AFFF7DDFB607C002806D1E2 +:105910002198082803D101210846FFF791FB342282 +:1059200011A96846FAF73CFC0DA80FC8FFF70EFB5B +:1059300018A8807CFFF7E0FA2298009033462A46A8 +:1059400000202399FFF7B6FA20A8FFF7E3FA1FA873 +:10595000FFF7C8FBA07EFFF787FB002D01D0002ECC +:105960004DD1A07E534E01284DD003284BD010A816 +:1059700001882068491EC01B401E0003FAF7E6FBA1 +:10598000FAF73CFE00223346FAF716FDFAF758FE06 +:10599000054610A8418862681E98491E101A401ECC +:1059A0000003FAF7D3FBFAF729FE00223346FAF791 +:1059B00003FDFAF745FE014600222846FFF76CFB7F +:1059C0002046C03005463C4E407BB0470C90687B7B +:1059D000B047074600250C98EE008059FFF750FBB2 +:1059E0000C9830184068FFF751FBB859FFF75EFB81 +:1059F000F0194068FFF760FB6D1C202DEBDB23984E +:105A0000002826D043E010A841882068491EC01B0A +:105A1000401E0003FAF79AFBFAF7F0FD0022334626 +:105A2000FAF7CAFCFAF70CFE054610A8018862686E +:105A30001E98491E101A401E0003FAF787FBFAF75A +:105A4000DDFD00223346FAF7B7FCFAF7F9FD01460F +:105A5000B2E71748816840680C910B900725002336 +:105A6000ED432A4608211846FFF7BAFA08222946CC +:105A70000020FFF79FFA0B98FFF796FA0C98FFF7B4 +:105A800093FA0B98FFF790FA0C98FFF78DFA207EA7 +:105A9000FFF7CCFA0020FFF7E1FA01210846FFF7F3 +:105AA000B7FA0120FFF7C4F90120E5E6100407006A +:105AB00080B301000000E03F0136020030B50C4B1E +:105AC000834207D1C0331B7A002B03D0802A03D92D +:105AD000002030BD002030BD002304E0C418CD5CA0 +:105AE000203425775B1C9342F8D3012030BD0000A1 +:105AF000100407000FB4FEB508460CA9029108A9CE +:105B00000A7B11280AD0122808D0212806D0222882 +:105B100004D01A2822D01C2820D052E000230024D0 +:105B2000022A0BD90092284B28A22C49022003F00C +:105B300067FA0020FEBC08BC04B01847002106E04C +:105B4000029D40CD0295CD00AE403443491C9142A8 +:105B5000F6DB22460A99FEF7A5FB32E0012101910E +:105B6000002508A9097B89088C46491C8E4622E03D +:105B70000024AC450FD191071CD000239707BF0F1D +:105B800006E0029940C90291D9008E4034435B1C63 +:105B90009F42F6DC0CE002990C684B681B02234321 +:105BA0000C8926041E430B7B10311C0634430291E2 +:105BB0000B490C616D1CAE45DADC019B0A99FEF7BE +:105BC00071FB0120B6E70000C204000068616C5F51 +:105BD0006473695F72785F6374726C0004B401006F +:105BE000002000403EB5836BDB08019302920091D8 +:105BF000044620340368627DE17CA07CFDF702F955 +:105C00000146207D002803D00120FDF735FA3EBD76 +:105C10000020FAE710B50A4981420ED10846C0308B +:105C2000007A002809D00120FFF7F2F8FDF7DCF92F +:105C3000022001F001F9012010BD002010BD00007C +:105C40001004070010B50A4981420ED10846C03041 +:105C5000007A002809D00020FFF7DAF8FDF7CCFA27 +:105C6000032001F0E9F8012010BD002010BD000064 +:105C70001004070010B50649814207D1C031097AE6 +:105C8000002903D000F002FF012010BD002010BD4C +:105C900010040700F0B589B006460D460024032025 +:105CA0000290304620300890C07D022803D20F2792 +:105CB000CB20019003E00527FF20C3300190306B1B +:105CC00073490790FAF72DFB0799FAF794FA3063B6 +:105CD0000120B061F0610A203062F0680A3004905F +:105CE0000898007DFAF782FC00906869FAF77EFC5C +:105CF0002968FAF7D9FA0099FAF713FBFAF7BEFC0C +:105D0000FCF7C6FDFAF79CFC0146C81CC2190198B5 +:105D10001018029A89180591C919069103940499DB +:105D20004843FAF763FC316BFAF7BEFA5949FAF7C0 +:105D3000F8FAFAF7A3FCFCF7ABFDFAF781FC04468E +:105D40005549E000884707460898C17D022903D2DB +:105D500038797A79801806E038797A79FB78801872 +:105D6000BA78D2188018069A1018BB2C0BD90229C1 +:105D700009D24A4B4AA24CA10220009403F040F9F8 +:105D8000002009B0F0BDBB2C0CD908990120C875C2 +:105D9000424B43A29B1D4EA1022003F031F9FF2488 +:105DA0000598CC300399A142B8D1E1006960AC609C +:105DB000AF6504994843FAF719FC07465349204652 +:105DC0004843FAF713FC3946FAF7ABFA3063089800 +:105DD000007D6043FAF70AFC2968FAF7A2FAFAF79D +:105DE0004DFCFCF755FDFAF72BFC3221FAF7C4F90C +:105DF000024632204243002900D000E0002014185F +:105E0000C82C01D9FF242D3400F038FE022800D11F +:105E1000FA24EC600220A862A0002018A968FAF712 +:105E200095F9471EEF62286928630899897F002940 +:105E300007D00899097F002903D041004018400885 +:105E40002863B269AA61F369EB61F0682862316A7C +:105E500049086962D21840181018FAF7C7FB316B6D +:105E6000FAF722FA064629486043FAF7BFFB3146A3 +:105E7000FAF757FAFAF702FCFCF70AFDFAF7E0FB2B +:105E8000801E296BC01B401A6863012079E700005F +:105E90000000C8420024744901300200DB04000005 +:105EA0007478206374726C005B25735D2028253044 +:105EB000346429206C616E655F627974655F636C20 +:105EC0006B206F766572666C6F775B25645D0A0088 +:105ED0005B25735D20282530346429206C616E6554 +:105EE0005F627974655F636C6B2072652D63616CB2 +:105EF00063756C61746520696E20636C6B20616CE6 +:105F0000776179732068730A0000000040420F0037 +:105F100010B50B4C607D012810D020465C21203844 +:105F2000FAF757F9204607492038016300214164F8 +:105F30008164012060752046203810BD002010BD0E +:105F4000000507000000704210B5194981422CD1AC +:105F500008462030407D002827D000211548FCF756 +:105F6000E7FD154C607B002804D00120002180054E +:105F7000FCF7DEFD0D20C004FCF72CFE042000F031 +:105F8000F7FF0021084600F05BFE0120A071E071E0 +:105F900020726072A07200202073207004485C217F +:105FA0005C30FAF716F9012010BD002010BD00008A +:105FB000E00407000000280C4401070010B5FDF7BD +:105FC000FDFE002808D00020FDF78CFFFDF7E2FE63 +:105FD0000120FDF787FF10BDFDF7DCFE10BD0000BE +:105FE00070B505461A48A84218D12030407D0028D7 +:105FF00014D0284600F0BCFE04461649164800F0AE +:106000001FFE00F02BF8002C0AD0114928465C3105 +:1060100000F01FFA002803D0012402E0002070BD28 +:106020000024284600F068F9094928465C3101F04F +:10603000EAFE284601F0C8FEFDF798F90028FBD0DB +:10604000FDF7A2FA012000F093FF204670BD00008A +:10605000E0040700E18001007D86010010B5012108 +:106060000148FCF765FD10BD0000280C10B5FDF7D8 +:10607000D5FC10BD10B5084600F0EEFE10BD0000C6 +:106080003EB504461B48A0420FD12030407D002879 +:106090000BD0FDF7F1FAA07CFDF73CF90120FDF7EC +:1060A000F5F8A07C012802D00CE000203EBD0021C4 +:1060B0000091019102916A460846FDF7B5F801206A +:1060C000FDF736FC01F08AFD012806D10A48407B25 +:1060D000002802D10E20FDF7B5FDFDF755FA01208D +:1060E000FDF75CFD204601F05BFF022000F040FF61 +:1060F00001203EBDE00407004401070010B50C4933 +:10610000814213D108462030407D00280ED0FDF793 +:10611000E5FD0020FDF7A8FD0020FDF765FAFDF77D +:10612000ABFA032000F024FF012010BD002010BDB9 +:10613000E0040700FFB583B004460D461E4600F09C +:10614000A5FD022807D000F0A1FD012803D03548A5 +:10615000807800280DD00295132C0DD0232C0BD065 +:10616000052C09D0152C07D0292C21D0392C1FD073 +:1061700055E0002007B0F0BD0598002811D0012897 +:1061800008D002284BD1737832782046029900F06B +:10619000B3F944E0327800232046029900F0ACF9CC +:1061A0003DE000231A462046029900F0A5F936E0AA +:1061B000FDF7AAF84007FBD50598800801900598DF +:1061C0008007800F009000250DE000200021AB002B +:1061D0005A18B25CCF00BA401043491C0429F7DBBF +:1061E000FDF74EF86D1C01988542EED3009800280B +:1061F0000FD000210020AB0005E01A18B25CC500EA +:10620000AA401143401C009A9042F6D30846FDF77D +:1062100037F800232046059A029900F06DF9012015 +:10622000A8E70000440107000FB4FEB506460F467C +:1062300000F02CFD022807D000F028FD012803D033 +:106240002C48807800280FD00BA801900020132E36 +:106250000FD0232E0DD0052E0BD0152E09D0292EB0 +:1062600021D0392E1FD042E00020FEBC08BC04B073 +:106270001847009008A8027A022A01D90020F4E702 +:1062800000206B4605E001990C78091D01911C5412 +:10629000401C9042F7DB6846437802783946304626 +:1062A00000F02AF923E00025FDF72EF84007FBD582 +:1062B00013E0ECB200202D1D08E0019904C9019102 +:1062C000A107C90E8A401043641CE4B2AC4201DA53 +:1062D0009C42F2D3FCF7D4FF254608A8037A9D42DE +:1062E000E7DB027A00233946304600F005F9012049 +:1062F000BBE700004401070070B590B0817C044604 +:1063000000250126203400291FD1684686720671B7 +:1063100045718571C57105724572C5720573E07D61 +:10632000002807D068468572067146718671C6716D +:1063300006724672607E01A9FDF7BAF90020FDF7EA +:106340003BF91C210020FCF7B7FF2C48817E08A8F0 +:10635000017541758175C175017641768176C17689 +:10636000017741778177C17700210DAA0846FCF7B4 +:106370005BFF0120FCF7CEFF207D2821FCF7EEFF1C +:106380000521207F002803D0A07F002800D108210C +:10639000207E0022FCF798FF0B9508A805740BA837 +:1063A000FCF79AFF01230096002219461846019631 +:1063B000FDF7F0F80020FCF769FF0A20FDF70AF965 +:1063C0002020FDF731F91C2104A8F9F702FF04A8E9 +:1063D000FDF758F90120FCF7B1FF0020E17D02290B +:1063E00000D10120FCF79CFF05490020FCF75EFF6F +:1063F0000120FDF7F9F810B070BD0000000507009E +:10640000801F040010B588B004461C22094901A869 +:10641000F9F7C6FE3221E068F9F798FE800001A97D +:106420000858FCF7FBFB204603491830884708B0A2 +:1064300010BD0000A8B301000142020010B50446DF +:106440000021A06DFDF790F86068FCF7E5FF606043 +:1064500010BD70B504460D462946204600F06CF884 +:10646000A07C00280FD029462046FFF713FC0446E5 +:106470006869FCF743FF2846FFF7E0FF2846FFF76F +:10648000C1FF204670BD2946204600F09FF8002835 +:1064900006D0284600F006F8002801D00124EAE7DB +:1064A0000024E8E770B50446E16CA06C656D236DCF +:1064B00042185B19D5180D4A904208D8914206D867 +:1064C0000B48854203D80B49206B884201D9002034 +:1064D00070BD002211466069FDF7B2F820462946DA +:1064E0003830FDF7B7F8012070BD0000FF01000053 +:1064F000FF3F0000FF070000F8B504460D461646B2 +:106500001F46FCF701FFC007FBD03B463246294639 +:106510002046FCF77DFE0748807D002808D000F06B +:10652000B5FB022804D00120FCF754FF0028FAD064 +:10653000F8BD00000005070070B504460D4626466C +:106540002036B07F002806D1307F002803D00020FD +:106550000121890701E000201B49FAF7A3F8286010 +:10656000A0682861A0686861A0684000B17F002928 +:1065700028D0317F002925D0216C6961266C2E61DD +:106580004034217C002901D0E1890818A17D00292F +:1065900001D0A18A081871007118814206D3814286 +:1065A00010D11821F9F7D2FD00290BD0F017400FB8 +:1065B0008019C108C900700701D0082000E0002040 +:1065C0000818286170BD000000000840F0B593B0C5 +:1065D00005460C46002603200890284620301290DD +:1065E000007DFAF703F8074611906069F9F7FEFF9E +:1065F00021681091F9F758FE3946F9F792FEFAF73B +:106600003DF8FCF745F9FAF71BF8079000200690D3 +:10661000119FE86AF9F7EAFF1099F9F745FE394644 +:10662000F9F77FFEFAF72AF8FCF732F9FAF708F8DB +:1066300007461298C07D0F90012802D10F200690C6 +:10664000CB270F98022803D105200690FF27C337D8 +:10665000E969A869EA684018296A89184018099008 +:1066600011980190686AF9F7C1FF1099F9F71CFEBB +:106670000199F9F756FEFAF701F8FCF709F9F9F76D +:10668000DFFF059011980190A86AF9F7AFFF109904 +:10669000F9F70AFE0199F9F744FEF9F7EFFFFCF765 +:1066A000F7F8F9F7CDFF04900599049809180798B1 +:1066B0000818C11CCA190699511803910F99834FE4 +:1066C000002921D0089940180E900B96099903983B +:1066D0004843F9F78BFF296BF9F7E6FD7B49F9F79A +:1066E00020FEF9F7CBFFFCF7D3F8F9F7A9FF064630 +:1066F0007749F00088470746397978790818129960 +:10670000C97D022917D01AE0099903984843F9F77F +:106710006DFF296BF9F7C8FD3946F9F702FEF9F765 +:10672000ADFFFCF7B5F8F9F78BFF06466849F000B6 +:10673000884707461AE0BA78FB78D21810180E9AE4 +:106740001218069810180390BB2E01D9012925D0E4 +:10675000BB2E08D912980121C175FF260E98DA3098 +:1067600003900F2006900B98B042AED11298007D96 +:106770007043F9F73BFF2168F9F7D3FDF9F77EFF86 +:10678000FCF786F8F9F75CFFE0603221F9F7F4FCDA +:10679000024632204243002903D003E0002013B018 +:1067A000F0BD00201018E060C82802D9FF202D306D +:1067B000E06000F063F9022801D1FA20E060F00007 +:1067C0006060A660A765079820650498E064059856 +:1067D000A06407990398411A0498091A0598081AA1 +:1067E0006065A869A063E869E063E8682064286AD6 +:1067F0006064099903984843F9F7F8FE074635485D +:106800007043F9F7F3FE3946F9F78BFD074609980F +:10681000F9F7ECFE39460D90F9F746FD01902D4849 +:10682000E7687843F9F7E2FE0C900199F9F779FDF2 +:10683000F9F724FFFCF72CF8F9F702FF02900D9806 +:10684000296BF9F731FD01460C98F9F76AFDF9F764 +:1068500015FFFCF71DF8F9F7F3FE02990818420836 +:106860000A920220A062B80038183146F9F76EFC8F +:10687000411EE162206920630A9A921E511A091A88 +:1068800061631299897F002907D01299097F002935 +:1068900003D04100401840082063A869A061E8695E +:1068A000E061E8682062286A606201F0ADF90828BA +:1068B00009D3E16AA06AE3684018216B099A41187C +:1068C000054801F015FA012069E700000024744929 +:1068D0000130020040420F009D85010070B5054661 +:1068E0000E4600240BE0A00041198A78002A09D046 +:1068F000012A0BD04978285C00F08AF8641CB44265 +:10690000F1DB70BD285C00F033F8F7E7C978285C4C +:1069100000F039F8F2E7000010B5044A8000821850 +:106920000A201056FCF7A4FF10BD0000800F0200E3 +:10693000F8B505460F460D48A9000C180A26A657BB +:1069400000212846FCF7B6FF0221284600F060F837 +:10695000E17A3046FDF7AEFF39463046FDF7BCFF21 +:106960000A202056FDF780FFF8BD0000800F0200CE +:1069700010B5044600212046FCF79CFF022120466A +:1069800000F046F810BD10B504462046FCF7ACFFF9 +:1069900001212046FCF78EFF0221204600F038F846 +:1069A00010BD000010B5054B8200D2180A23D35643 +:1069B00002461846FCF752FF10BD0000800F02008F +:1069C00070B5044608461546FCF742FF2846FDF719 +:1069D0005FFF0125ED05002C09D00C48056017204C +:1069E000FDF742FF01211720FDF794FF70BD002144 +:1069F0001720FDF78FFF1720FDF736FF0348803083 +:106A00000560BFF34F8FBFF36F8F70BD00E100E0F3 +:106A100010B5174A80008018027A0720242A08D36C +:106A2000243A5300D218904091400322FCF752FFC1 +:106A300010BD182A08D3183A5300D218904091403C +:106A40000222FCF747FF10BD0C2A08D30C3A530072 +:106A5000D218904091400122FCF73CFF10BD53003A +:106A6000D218904091400022FCF734FF10BD000086 +:106A7000800F020010B5FCF737FF10BD02484068D8 +:106A8000C030C07A7047000098060700F0B58BB0A0 +:106A9000044651490F2008600025504EB78BF08BFB +:106AA0000A9021461A22183102A8F9F779FB616988 +:106AB0002069019100900FCC00F046FEB08BB842E7 +:106AC00003D1F18B0A98814200D001250020FEF706 +:106AD0009FF9FEF70BFA424F002D73D0B878786813 +:106AE000FEF720FC0020FDF7FDF97868B9684068E2 +:106AF00048607868B968006808600024002500F0E4 +:106B0000BBF886B2B868817C002906D18189028BE6 +:106B1000808B89186438081886B27868FFF77AF88D +:106B20002D480169490849000161387800283ED0A4 +:106B30007868C07E072809D12A4801680122D20559 +:106B4000914301600168920011430160012000053A +:106B5000FDF736FB20480F21016023E022488442E4 +:106B60001BD11E2D04D07868807C002807D00AE055 +:106B70001E4B1FA221A1002002F042FA1CE02F4868 +:106B8000426BB242FCD10869012210430861FFF751 +:106B900015FA00246D1CADB204E0641CA4B20120FF +:106BA000FBF7ACFF0C4908684007D7D504E00A485A +:106BB00001690122114301610849B86801F06AFDC9 +:106BC00006E0FFE77868FEF7ADFB7868FFF722F88C +:106BD00001200BB0F0BD000000100040C00F070006 +:106BE00098060700000C0040983A0000440400009A +:106BF00068616C5F7673796E630000005B25735D7E +:106C000020282530346429207761726E696E6721EF +:106C1000206E6F74206461746120726563656976AB +:106C20006564206166746572207265736F6C75743B +:106C3000696F6E206368616E67650A0040080040F6 +:106C4000014A9060D1607047C801070010B5282143 +:106C50000448F9F7BEFA44210348F9F7BAFA0120CB +:106C600010BD000098060700C00F070001484078DB +:106C7000704700009806070003490869002802D100 +:106C80004868C068C838704798060700014880788F +:106C9000704700009806070070B58AB004462E4D74 +:106CA0006868A0420AD06C60E17E2C48072908D0B1 +:106CB0002B494160287B002806D033E000200AB031 +:106CC00070BD28494160F5E72646A96818360029B5 +:106CD0001BD0182202A8F9F763FA616920690090B5 +:106CE000019120460FC8FBF737FE00281AD11A225F +:106CF000314602A8F9F754FA6169206900900191C0 +:106D000020460FC800F020FD0CE01A22314602A8F0 +:106D1000F9F746FA616920690090019120460FC891 +:106D200000F012FD00F070FF082803D3207C61689A +:106D300000F09EFF204600F051F9002028702862E4 +:106D400068620948FDF7A8FA0848FEF7C9F8FBF79A +:106D500089FE0120B3E7000098060700C80107007C +:106D6000558B0100D18B01001D880100FD900100B1 +:106D700030B591B005462F4804214175816800293E +:106D800002D0002011B030BD85604468002C3BD09B +:106D90001822294602A8F9F703FA616920690090D0 +:106DA0000C2001912018017825790B4641780902C1 +:106DB0000B438178C07809040B4300060343082085 +:106DC000201801780A46417809020A438178C07880 +:106DD00009040A432946657900062D022943A5794D +:106DE00002432D04E0792943000625780143284613 +:106DF00065782D022843A578E4782D0428432406DD +:106E00002043FBF7A9FD12E0007B00280FD11C21D5 +:106E10000AA8F9F7DEF91A220AA902A8F9F7C0F9B7 +:106E200069692869019100900FCD00F08DFC012067 +:106E3000A8E700009806070010B506494870042826 +:106E400007D1FFF703FF00F0DFFE082801D300F0B1 +:106E5000E1FE10BD98060700F8B505464048417DA3 +:106E6000A94201D10120F8BD3D4845753D48016961 +:106E7000426989188269C06910180C181D20FCF736 +:106E8000CFFE00210120FCF7B5FD0020FCF7E6FF56 +:106E90001D20FCF7D7FE002D08D00020FDF722F8BA +:106EA000022D15D0032D27D00120F8BD0120FDF7BC +:106EB00019F82B484068C07E072802D12A48416A49 +:106EC0008162FFF7D9FE0021FCF7FAFE0120F8BD30 +:106ED00003212046F9F73AF90D46290001D0032095 +:106EE000451B60000321F9F731F907461C48066984 +:106EF000002E0ED166080CE0E507ED0F6708184874 +:106F00000669002E02D16100601886080220FCF795 +:106F10005DFF39463046FCF7D3FE304610490A384B +:106F200088618F837A19CA834968C97E07290CD082 +:106F300001222146FCF738FD0120FCF78FFF0121DB +:106F40000846FCF757FD0120F8BD0848416906488E +:106F50008162012221460020FCF726FDECE70000BB +:106F6000980607004008004000100040C00F0700CE +:106F700070B50446154D042C04D0022C0BD0012C06 +:106F800015D021E0FFF762FE00F03EFE08281BD37B +:106F900000F054FE18E02878012802D10E20FCF7FA +:106FA0003FFE0B48016B0206114301630CE0686869 +:106FB000C07E072808D10748006AC1080648416119 +:106FC0000168021311430160AC7070BD98060700A0 +:106FD00080090040C00F070000080040FCB516A162 +:106FE00006C9019200910021154D6A460127535CA4 +:106FF000DB00EF54491C0629F9D38030C16B00290E +:1070000017D000220F494E6880360AE05B58DB003B +:10701000EF54F36BC46B5B186158C90049194B609E +:10702000521C11460C246143C36B0C1D1C59002CCF +:10703000ECD10120FCBD00002A3A3C2C2B3B000087 +:10704000C006070098060700F3B589B0074600257B +:10705000C7480A9940680E0C8030036C0A98000AF1 +:10706000002B05D0062F18D0142F16D0242F14D0A3 +:10707000052F1BD0132F19D0062F17D0142F15D082 +:10708000152F48D0232F46D0242F44D0392F78D025 +:10709000292F76D000200BB0F0BDC1B20022242FE2 +:1070A00000D1F2B2F8B298470020F4E7C5B2284602 +:1070B00000F034FB044620001FD0207A002801D0C5 +:1070C000AC480BE0FBF7A2FC002805D1A8484068BB +:1070D000FEF7AEF8FBF79AFC002805D0002181608E +:1070E000076045604461D6E7FF232133A2A2A6A131 +:1070F000022001F085FF0020CDE7062F01D0142FDC +:1071000007D1FF232F339CA2A9A10220009501F0F3 +:1071100077FF0020BFE7C5B2284600F0FFFA04461B +:10712000200021D0207A002801D092480BE0FBF704 +:107130006DFC002805D18E484068FEF779F8FBF712 +:1071400065FC002807D00121816007604560C168A7 +:107150000E7044619FE7FF234C3387A28AA102206F +:1071600001F04EFF002096E7242F07D1FF235B3369 +:1071700081A28FA10220009501F042FF00208AE742 +:10718000FFE70A980002060C0496002E0ED0FBF7CB +:107190001DFF002815D0761C301D80080690FBF7D7 +:1071A000F1FB00281ED08C48056924E00A98FF23D3 +:1071B0000090693370A289A1002001F021FF002016 +:1071C00069E7761E301D8008069006980499FF2313 +:1071D00000910290703368A201968A49002001F064 +:1071E0000FFFDCE70A98FF2300907E3362A286A19E +:1071F000002001F005FFE8B20790079800F08EFA32 +:107200000590059800287AD0FF2E78D80598007A46 +:10721000002801D0574C0BE0FBF7F8FB0446200098 +:1072200006D153484068FEF703F8FBF7EFFB04462E +:10723000002C75D0A6602760079860600598606193 +:10724000032E01D9032200E03246002006E0411C53 +:10725000CB002946D940E3681954401C9042F6D32C +:1072600001271EE0FBF78EFB002823D05A48056952 +:10727000B800A1680890081A411C042901D904200B +:1072800000E0401C8446002008E0C2002946D140AE +:10729000E368089A9B18421E9954401C6045F4D339 +:1072A0007F1C06988742DDD3604904980840032874 +:1072B00012D025E05E48406947490968079B0A9A51 +:1072C0000193009202910390FF23AF332AA259A1A8 +:1072D000022001F095FEE7E7FBF778FE00280FD0CB +:1072E000E168B01E0D542904090EE268761E91551E +:1072F000E268125C12020A432282A0600DE016E0EE +:10730000FBF764FE002808D0E168B01E0A5C120298 +:10731000761E895D0A432282A0602046BBE6FFE715 +:10732000FF23C33314A218A1002001F069FE012439 +:107330000F4D294E0AE0FBF725FB00280BD03069E2 +:10734000297D002901D0FBF79BFF641C069884422D +:10735000F1D300209FE607990A98FF23019100903E +:10736000D43305A23FA1022001F04AFEF1E700005C +:1073700098060700DC01070068616C5F696E746C39 +:107380005F646373000000005B25735D2028253077 +:1073900034642920616C6C6F6320646174612062C5 +:1073A0007566666572206572726F720A0000000071 +:1073B0005B25735D20282530346429207265616463 +:1073C000205B307825785D206E6F20726573706F5A +:1073D0006E7365210A000000002000405B25735D8C +:1073E00020282530346429207061636B657420681F +:1073F0006561646572206572726F725B25785D0AE3 +:1074000000000000D8B401005B25735D2028253002 +:10741000346429205B307825785D67657420646367 +:10742000732074696D656F75740A00000300008035 +:10743000002100405B25735D20282530346429201D +:107440005B307825785D5B307825785D2074696DD8 +:1074500065206F7574205B25785D5B25785D200A5B +:10746000000000005B25735D20282530346429204E +:107470005B307825785D6463735B307825785D20B8 +:1074800067657420646174612074696D656F7574DB +:10749000320A000010B51E4C14E02069C2B20A2A5C +:1074A00016D001461046FFF7CFFD0146080008D070 +:1074B0004869027A002A04D0164A43685268104686 +:1074C000984700200028E8D10A20134A022318E038 +:1074D00000F024F8F5E75169194201D0012100E0DC +:1074E000002100290BD121684907890F09D0FCF739 +:1074F0005FFE0220FCF764FE0420FCF761FE012021 +:1075000010BD0146401EC0B20029E4D1C5E700000D +:10751000002000409806070000210040F0B5A3B00D +:107520000446802103A8F8F754FE2002050C802DA4 +:107530000BD97D233CA240490220009501F060FD5B +:10754000FCF736FE002023B0F0BDE81C87080024BD +:1075500003AE08E0FBF716FA00280DD037480069A3 +:10756000A1007050641CBC42F4D3354C6068002804 +:107570000AD0002300201BE08D232BA231A1022082 +:1075800001F03EFD0020DEE7942327A235A1022072 +:1075900001F036FD0020D6E701463C3162680E4618 +:1075A000575C03A9095C8F4201D091550123401C0F +:1075B000A842F1D360680646403001794279090259 +:1075C000891802918178C278090289180191002BEB +:1075D0001ED0017A407A090209180298F8F7B6FD20 +:1075E000471E2036707D002803D101214806FBF795 +:1075F0009FFAFBF7E3FC6168352250543C31234B82 +:10760000802221489847012200213846FBF7C0FB21 +:1076100060688030446C002C04D0E9B203A8019B60 +:10762000029AA04701208EE768616C5F696E746CF6 +:107630005F6463730000000020B50100002000407B +:10764000980607005B25735D2028253034642920C7 +:1076500050505320676574206461746120666169CD +:107660006C0A00005B25735D2028253034642920D6 +:107670007669642073796E63206E6F7420696E6919 +:107680007420210A0000000000240040013702009D +:10769000F0B587B0064600240C21009100253A225F +:1076A000182101A8F8F78EFD002E2AD12BE01948E9 +:1076B000E100415C012902D02146641C02E0641C07 +:1076C0001FE0641CFF2C03DCE200825C002AF8D07F +:1076D0000098854217DA621EE80F431958084000E7 +:1076E000281A00015B109F000B4E01AB86408140C1 +:1076F0000830DB598240B34311430B4301A8C35107 +:107700006D1CFF2CD3DD01A8FCF7E6FD012007B0BE +:10771000F0BD0000C0060700FFFF000008494968EF +:10772000002901D0064870470649C0000A5C012ABA +:1077300004D14018406841680029F4D10020704706 +:10774000F4010700C00607000FB4F0B58BB0442168 +:10775000B648F8F73EFD1A2216A902A8F8F720FD50 +:10776000149815990090019110A80FC800F004FA20 +:10777000AE4C00272034E07F25462035002802D07B +:10778000A07F00281AD010A8807E002816D1E878A3 +:10779000072813D0022811D06777607F8726F6006C +:1077A000002876D010A8807E01280AD0032808D0AF +:1077B00012991098884227D2109826E0012060770D +:1077C000EBE712991198884201D2119800E01298C3 +:1077D000B04206D812991198884201D2119E00E059 +:1077E000129E13991098884201D2109900E01399C3 +:1077F00005200002814225D813991098884201D2B1 +:1078000010981FE013981DE0129819267601B042D7 +:1078100006D812991098884201D2109E00E0129E5C +:1078200013991198884201D2119900E013996D20A3 +:107830000001814206D813991198884201D211980B +:1078400000E0139818A9097C002909D00390149826 +:10785000159900900296019110A80FC800F0ECF85D +:10786000F117890F89198E08B600C117890F0818FA +:1078700080088000FDF79CFC71007118CA17520F38 +:107880005118CA080321D2004907714302D00821C8 +:1078900001E01DE0002152181146012341431B0560 +:1078A000994207D810A9897E002903D110A9097E21 +:1078B000002902D00121697000E06F705B498E8160 +:1078C000C8810A600F614B61594888600F715EE0A2 +:1078D000A07F00285BD112991098884201D210989D +:1078E00000E01298B04206D812991098884201D24E +:1078F000109E00E0129E13991198884201D21199AE +:1079000000E013994B48814206D813991198884298 +:1079100001D2119800E013980390149815990090E3 +:107920000296019110A80FC800F086F8F117890F90 +:1079300089198E08B600C117890F081880088000C1 +:10794000FDF736FC71007118CA17520F5118CA089A +:107950000321D2004907714301D0082100E0002132 +:10796000521813460121434349058B4203D810A9FD +:10797000097E002902D00121697000E06F702B4957 +:107980008E81C8810A600F61980888600F71274D49 +:10799000A889A883E889E8832869286268696862F9 +:1079A00018A8007910A900280FD02A4601201C32FF +:1079B000059206901422091D6846F8F7F1FB17A8F6 +:1079C00007C8109B00F06AF829E018A8807B0028FF +:1079D00025D0164814220C300590091D06976846DC +:1079E000F8F7DEFB19A90A22023108A8F8F7D8FB3C +:1079F00008A807C8109B00F051F810A9488D28630B +:107A0000C88CE862098D1398401A401E686310A95B +:107A1000898D1298401A401EA863012020770BB070 +:107A2000F0BC08BC012004B018470000C00F0700DC +:107A3000FFFF1F00140A00000FB4F8B50C9F0D9D46 +:107A40004B24E400FFF71AF8022801D1FF24F53493 +:107A50001048466830462036717D002915D0806B6D +:107A60000D49F8F773FBF17C4843C008079A069963 +:107A7000784351436843F8F769FB0146A14204D9B2 +:107A800028466043F8F762FB05462846F8BC08BC68 +:107A900004B018479806070040420F000FB4FEB527 +:107AA000119C34484078012840D00126314F684667 +:107AB000403F008CFD8B0E996843F8F747FB80B27E +:107AC00002906846408C0E996843F8F73FFB85B2F8 +:107AD0006846808CBF8B0D997843F8F737FB80B2EE +:107AE00001906846C08C0D997843F8F72FFB80B25F +:107AF000009031460298F8F729FB704387B231466F +:107B00002846F8F723FB704382B20198C508ED00C0 +:107B10000098C008C0008446129B20886188002B12 +:107B200006D0401B2080C81B608008E00426BDE70B +:107B30006346EB18C01A2080B818081A60803146D6 +:107B40003846F8F703FB0B49403909684843690098 +:107B50006918401861680918616006492039497F31 +:107B6000002902D0A1680818A060FEBC08BC04B0BF +:107B700018470000001007000FB46846C17E0123BB +:107B80001548002906D0C170C1780022012915D9F5 +:107B9000837014E06A46517C927C914206D10029A0 +:107BA00002D00421C170EFE7C370EDE7002902D0D5 +:107BB0000321C170E8E70221C170E5E78270064841 +:107BC0002038062904D0C2778277012004B070479C +:107BD000C3778277F9E7000000100700014880783A +:107BE000704700000010070010B544220149F8F763 +:107BF000D7FA10BDC00F070010B544220149F8F7AD +:107C0000CFFA10BDC00F07000148C07870470000D0 +:107C10000010070010B5074801214175017506499C +:107C20002038C1630021016241622020FCF766FB1D +:107C3000012010BD24100700C18E01000249002060 +:107C400048610120704700000410070010B5054886 +:107C500040680549496B054A89B2D26B80B29047AA +:107C6000012010BD00210040400800400410070022 +:107C700070B506460D4600212020FCF73FFB44214D +:107C80001948F8F7A6FA00F043F8174C2562267752 +:107C9000002060622063FFF7B7FF0122092802D1AC +:107CA0002046403002701048217F022503232030F7 +:107CB00001290FD0022910D0032911D004290FD097 +:107CC000427502750948E06301212020FCF716FB8C +:107CD000012070BD43750575F4E745750275F1E740 +:107CE000052141750375EDE704100700C18E010001 +:107CF00010B5034C21606260A3606061012010BD7B +:107D00000410070001494862704700000410070092 +:107D100070B5FAF72BFFF8F771FC0D460446094AD7 +:107D2000094BF8F7FBFBF8F78BFC084EB0622046D6 +:107D30002946074A074BF8F7F1FBF8F781FCF06298 +:107D4000012070BD3BDF4F8D976E923F04100700FE +:107D500079E9263108AC8C3FF8B504461648007B1B +:107D6000FBF72EFF002526464036707C134F002877 +:107D700004D021464C310020B847F589F07D002819 +:107D800005D0214652310120B847B08A4519204616 +:107D900020300646807F012800D16D082846FBF779 +:107DA00071FEB07F002805D00549606C8847054901 +:107DB000A06C8847F8BD000044010700013D0200A7 +:107DC000013E02000140020010B594B00446204676 +:107DD00000F052F82046FFF7BFFF03A8FFF70CFFA3 +:107DE00003A800F0EFF801216A46117100205071DC +:107DF0009071D171029001A8FBF7E0FD0120FBF723 +:107E000033FF14B010BD70B505460C46E068203550 +:107E1000A97F002917D0297F002914D001212068CB +:107E2000F8F7BDFA0646287DA168414348000818C6 +:107E3000F8F7DCFB3146F8F774FAF8F71FFCFAF7AD +:107E400027FDF8F7FDFB642804D2FF200230FAF783 +:107E500033FF70BD962803D20120FAF72DFF70BDC5 +:107E6000C82804D2FF200130FAF726FF70BD002099 +:107E7000FAF722FF70BD000030B593B0044601A8A8 +:107E8000FFF7BAFE10A84079404D012832D00A20F1 +:107E9000FBF7D8FE01A9204600F0B2F83B483C4968 +:107EA00014308847A879002828D00C20FBF7CAFE98 +:107EB000E879002826D01020FBF7C4FE297A687ADA +:107EC000014202D1002922D025E00F20FBF7BAFEA3 +:107ED0000D20FBF7A5FE2034207F002830D0607FE6 +:107EE00010AAD072A07F90720821117200281AD0B7 +:107EF000032019E0E878FBF781FECBE72548FBF784 +:107F000003FDD5E72348801DFBF768FED6E721482F +:107F10001230FBF7F3FD687A0028D9D11D480A30EA +:107F2000FBF70AFED4E7002010A9487217481A4B45 +:107F30006A7912A9383098470220FBF7F5FE05E070 +:107F40000820FBF77FFE0220FBF7EEFEA87A002850 +:107F500017D02820FBF776FE10A8007800280ED056 +:107F60000D980C99000401430C4841620F9A0E9938 +:107F7000120411438162016842151143016013B07C +:107F800030BDE87A2969FBF7A1FDE5E74401070068 +:107F9000013A02002C100100013B020000080040E1 +:107FA00010B50446FFF71AFE012803D0A07CFBF7AA +:107FB0009DFE10BDFFF728FE0828FAD2A07CFBF733 +:107FC000D9FC10BD10B50446FEF756FE0021002274 +:107FD000FBF760FD00212046FBF72CFDFFF7FEFDBF +:107FE000002803D00020FBF75DFE10BD2034607F29 +:107FF000002803D00020FBF755FE10BD0120FAE752 +:10800000F3B583B00746002500263C464034607C2B +:10801000002801D0E08900E00020E17D002901D0A6 +:10802000A18A00E000213E22D35D284A002B12697C +:1080300017D05300D218101A401A41080498808BA8 +:10804000884211D0401E0003491EF8F77FF8F8F768 +:10805000D5FA00221E4BF8F7AFF9F8F7F1FA85B21E +:1080600005E0101A411AE9E70420FBF7EBFD04983C +:10807000F968C08B81420ED0401E491E0003F8F7FC +:1080800065F8F8F7BBFA0022114BF8F795F9F8F705 +:10809000D7FA86B202E00520FBF7D4FD0D48694609 +:1080A000007908728D80CE80207E002800D00120CB +:1080B000094988470146094A01A89047354302D13A +:1080C0000620FBF7BFFD05B0F0BD00003C05070032 +:1080D0000000E03F440107000134020001390200C2 +:1080E00010B52C48047DE007C00F00280ED01020EA +:1080F0002040002807D128480068012109030843CF +:108100002549086002E02348FBF7FEFB02202040DF +:1081100000280FD020202040002807D11E480068EA +:108120000121090408431C49086003E01948801D27 +:10813000FBF754FD0420204000280FD040202040B1 +:10814000002807D1144800680121C90308431249D7 +:10815000086003E00F481230FBF7D0FC08202040F5 +:1081600000280FD040202040002807D10A4800688E +:108170000121C90308430849086003E005480A30A3 +:10818000FBF7DAFC03490020087500210420FBF707 +:1081900031FC10BD2C1001000008004010B5044651 +:1081A000022908D00020FBF7DDFF022C07D00020B9 +:1081B000FBF7EEFE10BD0120FBF7D4FFF5E7012031 +:1081C000FBF7E6FE10BD10B5FBF708FF10BD000081 +:1081D00070B5154D69684808CA07144901D00843AD +:1081E00000E08843FBF714FF0024012631460846CF +:1081F0006A68A040104210D02046173040B20028D4 +:1082000008DBC206D20E9140094A1160BFF34F8FBE +:10821000BFF36F8F0021FCF77DFB641C082CE5DDAC +:1082200000206860287870BDA401070000010000EC +:1082300080E100E010B5FBF737FF012010BD10B55D +:10824000FBF746FF10BD10B5FBF75EFF10BD10B584 +:10825000FBF746FF10BD0000F8B504460D460127A8 +:10826000134E112C1AD000212046FEF755FB29464B +:108270002046FEF75DFB0F492046FEF793FB0121E8 +:108280002046FEF749FB0C49A0004018807A1738B9 +:1082900087407068074377600120F8BD2A4605498A +:1082A0000120FEF78DFB706838437060F4E7000032 +:1082B000A4010700658C0100800F020010B50020AA +:1082C000FCF786FA0020FCF75DFA0020FCF76EFA56 +:1082D0000E20FAF705FD012000218003FAF728FCA3 +:1082E000054C6078002806D0207800F02DF9042095 +:1082F00020700020607010BDA001070010B5154C63 +:10830000002815D00020FCF787FA607800280ED0EE +:10831000FCF746FA002803D06078FCF791FA02E0F7 +:108320000020FCF78DFA01212078FCF712FB10BD2C +:108330000120FCF771FA6078002806D0002120782F +:10834000FCF707FB0020FCF77BFA0020FCF740FA63 +:1083500010BD0000A001070010B505214906114815 +:10836000FAF754FC01218803FAF7E2FB002104200C +:10837000FEF74EFB0C487D21C9000068F7F7E6FECA +:108380000A2148430949F7F7E1FE03460246014640 +:10839000FCF712FA0120FCF73FFA0120FCF7F2F992 +:1083A00010BD00000000F0FF08020700007102008D +:1083B00010B50446002C04D005494878FCF740FA73 +:1083C00002E00020FCF73CFA2046FCF733FA10BD2F +:1083D000A0010700F8B504460F4615460C4E042CC4 +:1083E00011D22046FCF78AFA3470204600F0C4F817 +:1083F0000121204600F0CEF87D20C00039464143DF +:108400002046FCF7DDFA75702846FCF719FAF8BD2E +:10841000A001070010B504460020FBF789FE2046A6 +:1084200000F06AF82C4A2B4810602B494039086943 +:1084300040004008086108690223984308614869C0 +:1084400008231843486148698B15184348614869F7 +:10845000E02398436030486148695B0198430323F7 +:108460009B02C01848611C48803803695B005B08A8 +:108470000361C36A194C1B0CA34204D0C36A2404D1 +:108480009BB21B19C3620B690120C00303430B613C +:10849000134911600121FAF74BFBFCF7DFF9FAF7FA +:1084A00043FB04211820FEF7B3FA02211720FEF740 +:1084B000AFFA0D480B4901600C4941600C498160DD +:1084C0000C4AC2600B4A403A02610A0A4261816169 +:1084D000C16110BDCDAB3412808400403303000075 +:1084E000682457134080008000E400E08000804052 +:1084F000808080808080408010B50E4908600E49E1 +:108500000E4C884206D1FF200230FAF76BFB09209F +:1085100020700DE00A49884205D10A48FAF762FB4B +:108520000F20207004E00020FAF75CFB0720207089 +:10853000012010BD0802070000E1F5050C0207004C +:1085400080D1F0080102000010B504460021204649 +:10855000FCF756FA00212046FCF78AFA0021204653 +:10856000FCF7F7F90934E0B2FAF7BAFB0120A040B2 +:108570000021FAF7DDFA10BD10B504462146093195 +:10858000012088400121FAF7D3FA00212046FCF7A8 +:108590005BFA10BD10B5FCF76BFA10BD70B505465F +:1085A000094C2846216BF8F799F801D8002070BDD6 +:1085B000FEF76CFB064625630348FDF711FD3046C8 +:1085C000FEF7D6FC012070BDE004070030B589B08D +:1085D0000C46204906C901920091800069460D5859 +:1085E0001C2102A8F7F7F5FD1B48006802902068DF +:1085F000039060790590A0796A461076207910740E +:108600000798012108430790079802210843079023 +:108610000798042108430790079830218843079062 +:108620000798C02188430790002108AA51709170D3 +:10863000117002A92846FCF7E3FA2846E268A1680F +:10864000FCF7B8FB0548A1680161E168416109B028 +:1086500030BD0000C4B3010008020700B0010700EC +:108660001CB5054B5C691B690194009380006B4647 +:108670001858FCF767FB1CBDC4B3010010B50449D2 +:108680000120487000210220FBF7B4F910BD000062 +:1086900044010700F0B585B00C460021039102911A +:1086A0008168C0680190A68BE58B01273F03009786 +:1086B000B14202D1012003900DE0701E0003491E5B +:1086C000F7F744FDF7F79AFF0022214BF7F774FE06 +:1086D000F7F7B6FF07460198A84202D101200290A1 +:1086E0000EE00199681E0003491EF7F72FFDF7F70A +:1086F00085FF0022164BF7F75FFEF7F7A1FF00900A +:108700002B04334303980101029840010143702573 +:1087100010480268AA430A43216A2588C908ED085F +:10872000ED050D430C4E7668F67E072E01D0616A8A +:10873000C908009C24043C43084E33600260056174 +:108740004161F462016832131143016005B0F0BD6C +:108750000000E03F000800409806070000090040C4 +:10876000FAF78AF80BE0FCF7F3FC00BF172304A22A +:1087700005A1002000F044FC00BF00BFFEE7F2E7C7 +:108780007461755F6C6F67005B25735D2028253011 +:10879000346429203636382044656D6F0A000000A5 +:1087A000F8B506460F4614461D461948006800688D +:1087B000A04204D1164800684068A84220D0012198 +:1087C00014480068FDF756FC114800680460104822 +:1087D0000068456001210E48006820304175012085 +:1087E0000D4908702D200001844205D90948006810 +:1087F000046008480068456005480068FDF73AFADB +:10880000002104480068FDF735FC0120F8BD000098 +:1088100000000700040007000C000700F0B585B059 +:108820002020FBF70FFD00280DD07148407F002865 +:1088300002D000F06DF901E0FFF708FA2020FBF705 +:10884000BFFC05B0F0BD6B4C2046FBF7FBFC6A4F4C +:108850006A4D6B4E002819D0686931683A6BFF2366 +:10886000009201910290553366A269A1022000F0A6 +:10887000C7FBF06B1F21090488430321090440183A +:10888000F06300F095FC2046FBF79AFC6D4C352018 +:108890006168405C01281ED16B48406800281AD0EE +:1088A000C031497A012908D90020FCF7B1FA00F05B +:1088B0007FFC0120FCF7ACFA0DE0696932683B6B84 +:1088C0000193029203910090FF236E334DA25F4902 +:1088D000022000F095FB8020FBF7B4FC002811D0AB +:1088E000FFF792F908280AD30120FAF727FDA068BC +:1088F000807CFBF73FF800218020FBF7FFFC802005 +:10890000FBF75EFC01277F053846FBF79BFC002840 +:1089100011D04F48C06B6268617D127CFF230092CA +:10892000019102908D3337A24AA1002000F068FB2C +:108930003846FBF745FC01273F053846FBF782FC2C +:1089400000280BD03846FBF73BFC226A002A05D0F2 +:10895000A08CC00702D00021012090470127FF040E +:108960003846FBF76FFC002816D0FFF74DF90828B2 +:108970000FD3686800216268526801E001466868A8 +:108980008242FBD9481CFFF7BDF900213846FBF7AE +:10899000B5FC3846FBF714FC0620FBF753FC002817 +:1089A0000FD0FBF705FC0620FBF70AFC686931686D +:1089B000FF2300910190B53312A230A1002000F0F6 +:1089C0001FFB31680124A405214201D0012100E0F0 +:1089D0000021002900D134E7FF23C73309A231A1C8 +:1089E000002000F00DFB2046FBF7EAFB29E7000022 +:1089F000E00F070000020400802A00400021004030 +:108A00000020004068616C5F7673796E630000003F +:108A10005B25735D20282530346429207278206618 +:108A200069666F206572725B307825785D207330DF +:108A30005B307825785D2073315B307825785D2058 +:108A40000A00000098060700C024004048B4010056 +:108A5000400800405B25735D2028253034642920C0 +:108A60006672616D652064726F70207761726E202E +:108A70005B25642025642025785D0A005B25735DF5 +:108A80002028253034642920706B74206275666656 +:108A9000657220657272205B25785D5B25785D0AC2 +:108AA000000000005B25735D2028253034642920F8 +:108AB000525842525F494E54454E5F494E54454EBE +:108AC0005F4449535F4552525F504F532121210A61 +:108AD00000000000FEB507460D46002414E0285DA6 +:108AE0000290601C285C0190A01C2E5CE01C2818E1 +:108AF00000903246009B01990298FDF71BFBA019DC +:108B0000C41C3220F9F7FAFFBC42E8D3FEBD0000D6 +:108B100070B50D4D296A2A88C808D208D2051043BD +:108B20000A4B1E690A4C864208D1686A6062A062DC +:108B3000C008104318611869586170BD6162A16274 +:108B400018611869586170BDC00F07000008004027 +:108B50000010004070B5194A546B194D1948AE69A0 +:108B600043131949A64215D9184A1478002C08D085 +:108B70000968090304D501681943016000201070D9 +:108B800070BD04681C43046008680003F8D4012029 +:108B9000107070BD0C680126F60434430C60016847 +:108BA00019430160A88BE98B8842F2D0936B834212 +:108BB00001D1916370BD906370BD0000400800401A +:108BC00098060700000C004000200040C801070084 +:108BD000F0B51E48456B1E4908680003C00F0A68BF +:108BE0008B011A430A601B490A6904231A430A616C +:108BF000194A4F139669194A194CAE420AD90028EE +:108C000007D0002060700869184308611068384375 +:108C10001060F0BD15680126F605B54315601568AE +:108C2000B60035431560002801D0012060706078DF +:108C3000002803D008691843086102E008699843D6 +:108C40000861106838431060F0BD00004008004023 +:108C5000002000400010004098060700000C004073 +:108C6000C80107000449002802D000780870704746 +:108C70001120087070470000A4010700F0B591B002 +:108C8000044601252D052846FBF79AFA224A10686A +:108C9000284201D0012100E000210029F7D01F4A1D +:108CA00055681F4F396AA14208D350688842FCD3E7 +:108CB000506801E0044650688142FBD9641C684654 +:108CC000FEF792FF02980099401CF7F73FFA42081E +:108CD0006846C189386A5043F7F738FA4519114890 +:108CE000016940690E18204670437968F7F72EFA3B +:108CF000A84201D82D1A01E0201A45192846FBF791 +:108D0000B9FA7868611B48432146F7F71FFA8019C2 +:108D1000386111B0F0BD000000200040002100408B +:108D2000041007004008004010B5044800690449D9 +:108D30004A7D097D5043F7F709FA10BD0021004034 +:108D400024100700F8B50C46FFF7EEFF0646254D48 +:108D5000E86AB04244D2A86AB04241D9287F0028CC +:108D60000BD0214801680903C90F026883011A4327 +:108D70000260002901D0002000E0012000282FD04F +:108D8000A869F7F733FC07463046F7F72FFC39465A +:108D9000F7F7C7FA0646E868F7F728FC3146F7F711 +:108DA00083FAF7F76BFC0022104BF7F705FBF7F798 +:108DB00047FC2968401A2969A14201D2801C07E0BA +:108DC000A14205D94908A14201D2801E00E0801CC1 +:108DD000074988600649403908680A13104308604B +:108DE000F8BD000004100700002000400000E03F34 +:108DF0004008004070B5FFF797FF234CE16A8142BD +:108E000041D2A16A81423ED9207F204D01280DD058 +:108E1000022817D003281ED004281CD000210846A1 +:108E2000FBF702FA206900281CD01EE00421022072 +:108E3000FBF7FAF9606803214000F7F787F9206132 +:108E4000E56313E002210120FBF7EEF960684008BA +:108E50002061E5630AE0EB230DA20FA1022000F0E0 +:108E6000CFF803E0606840082061E563A56B680007 +:108E7000000E08D06068F7F7B9FB2946F7F714FA37 +:108E8000F7F7CAFB206170BD04100700458D010093 +:108E900068616C5F737673005B25735D20282530F5 +:108EA00034642920313434202620313630487A2069 +:108EB0006E6F7420737570706F727421200A0000D9 +:108EC000F8B506463D4C206B082802D2401C2063B2 +:108ED000F8BDFFF729FF0546F9F748FEF7F786FBCF +:108EE00007462846F7F782FB3946F7F71AFA07468E +:108EF000E06AA842ECD2A06AA842E9D9606A0028D8 +:108F000003D1206AB0423BD26662FDF7BFFE022861 +:108F1000DED16669002EDBD07F203946C005F7F729 +:108F200000FAB04766683046F7F760FB00902449C6 +:108F3000A0684843F7F75AFB3946F7F7B5F90099A7 +:108F4000F7F7EFF9F7F79AFBF9F7A2FCF7F778FBD9 +:108F5000E060A5612168401A1A49886019484038C4 +:108F600001680213114301601748E0631348403061 +:108F7000007800280ED0A08C80B2FFF77FFE10E0B2 +:108F80000124E4042046FBF71BF901212046FBF7EE +:108F9000B5F9F8BD207F01280BD0606A4008FBF7C7 +:108FA00069F98020FBF70CF901218020FBF7A6F975 +:108FB000F8BD701EFBF75EF9F3E700000410070030 +:108FC00040420F0040080040F58D01007FB5054686 +:108FD0000C46022C03DB0220084908700DE00095C6 +:108FE0000321684641710021817101716946204663 +:108FF000FFF7ECFA0148047000BF7FBDAC01070029 +:109000000FB470B5C2B00446FF21013102A8F7F7D2 +:10901000E0F8184D287BA04204DD42B070BC08BCCB +:1090200004B018474798F7F7DFF8FF2800D9F4E7AE +:1090300048A801901048007802280ED102A8019A91 +:109040004799F7F7A1FF02A8F7F7CEF886B23246A4 +:1090500002A9284600F016F808E00848019A479946 +:10906000F7F792FF054906A0F7F77EFF0020019071 +:1090700000BFD2E71C100100AC01070098050700F3 +:109080000A257300F7B50446164635460027FF202B +:109090000130854200DD054620884019FF2101315D +:1090A000884215DD2088081A87B22288A1688818AE +:1090B0003A460199F7F774F8EA1B019BD919A068A1 +:1090C000F7F76EF820884019FF380138208009E052 +:1090D0002288A16888182A460199F7F761F8208844 +:1090E000401920802088FF2801DD00202080A188F1 +:1090F00069430846F9F702FDFEBD00003EB50020B9 +:10910000FBF7B6FE234C002811D02078002807D1A9 +:1091100001202070A078022802D10E20FAF780FDED +:1091200000210120FBF774FF0020FBF769FE0220FD +:10913000FBF79EFE002802D00220FBF761FE012013 +:10914000FBF796FE00280BD0226A002A05D0A08CDF +:10915000800702D50021022090470120FBF750FE36 +:109160000320FBF79BFE002812D00B4CA16860681F +:109170002268009202910190084B09A20B4900203D +:10918000FFF73EFF0320FBF73BFE0020C0432060BB +:109190003EBD00009806070080100040FB02000062 +:1091A00068616C5F7673796E6300000094B40100AF +:1091B000F0B58BB03E484168C920405C022804D914 +:1091C0003C4A002050603C4A50603C484568066A72 +:1091D000476A826A0A92C26A0992384A80321369DF +:1091E000089352690792026B0692426B0592826B5A +:1091F0000492C06B0390314840300268029240688C +:1092000001902E48C0300068009000242031487D35 +:10921000002801D02A48046A1720F9F761FD1820B8 +:10922000F9F75EFD1920F9F75BFDFBF75FFE2348B8 +:109230004560066247620A9981620999C1621F49C5 +:10924000089A80310A61079A4A6106990163039975 +:10925000C1631A49029A40310A60019A4A60059A2C +:109260004263049A8263154A0098C0321060FF205E +:1092700012308860002088600D4D35206968405CA0 +:10928000002807D00E4804620D483C3180220D4B67 +:10929000803898476868C030407A022804D9054968 +:1092A000012048600449486001200BB0F0BD000077 +:1092B00098060700002900400028004000200040D8 +:1092C00080240040013702002900000059200100DD +:1092D0000000000028000000112001000100000033 +:1092E000510000006D1F010000000000530000004D +:1092F000752201000100000010000000F9200100AB +:1093000001000000110000008D210100010000009B +:1093100060000000CD2101000100000000000000FD +:1093200000000000000000003900039CA5A53900E2 +:1093300003FD5A5A3900029F0F390002B300390069 +:1093400002D7113900029F01390004B25A04AF3923 +:109350000024B300BA00140C2200BA30142C000010 +:10936000BA90144C0000000000000000BA00140C79 +:10937000441C1C1C1C1C390013CD061F1F060009B1 +:1093800000961F032800961F09460096390002D058 +:1093900001390003E24620390003EA040B390009D1 +:1093A000EE40382828282828C23900029F023900B8 +:1093B0001AB200C9321011121200087821111413C8 +:1093C000111111111111112121111A39000EB400BE +:1093D000008C00000000002525252525390007B553 +:1093E00000303030302A390014B605000011111158 +:1093F0001C081C2121212121212121212139001199 +:10940000B700000000001500060603060603060666 +:109410000339000EB80000007328732873287328DE +:109420007328390009B900005000000F0F003900FF +:109430000EBA0EFFFFFF0054004404440404003938 +:10944000001ABB005A91915A005A91915A005A91B0 +:10945000915A005A91915A003C78783C390005BEE7 +:109460005B17045B390011BF0C8FFF100007000A67 +:109470000120000000000000390011C10521221D5B +:109480001F1E2001303132333D3D3D3D390011C2B8 +:109490000521221D1F1E2001303132333D3D3D3D4F +:1094A00039000AC311600040004000000039001A72 +:1094B000C4000C01000000000000000000000008D3 +:1094C000001F1F00000D00000000390011D2000035 +:1094D00013000013000017000017000017003900E8 +:1094E0000EC7000404040400040404040004043946 +:1094F000000EC800B1B1B1B100B1B1B1B100B1B1AC +:1095000039001BC600000F00001100000090000091 +:1095100000000800020000000000550101003900B1 +:109520001BCB000000000000000000000000000055 +:1095300090929092009092909200909239001BCC61 +:109540000076FF76FF0076FF76FF0076FF000000D2 +:1095500000000000000000000000390013D74DC3D8 +:10956000207A3300020200F7F7F4A9A9AEF0000058 +:10957000390029D800047622FF00047622FF000477 +:109580007622FF00047622FF00047622FF9076FF09 +:109590009076FF9076FF9076FF9076FF39000CD999 +:1095A0001040100010001000100010390004E000FE +:1095B0000060390006E1430011600D390033E21507 +:1095C000003942241500394224150039422415007F +:1095D0003942241500394224150039422415003936 +:1095E000422415003942241500394224150039421D +:1095F00024390004ED000180390012EE040000005F +:1096000000000000003088882900000000390006B2 +:10961000EF00858887873900029F03390021B21146 +:10962000000089308009600438000C021C021C0212 +:1096300000020E0020011F0007000C08BB087A3949 +:109640000021B3180010F0030C2000060B0B330EA2 +:109650001C2A38465462697077797B7D7E0102014D +:10966000000940390019B409BE19FC19FA19F81A91 +:10967000381A781AB62AF62B342B743B746BF439EB +:109680000002C011390002C182390003C200C03992 +:109690000006C61100000101390002E20139000292 +:1096A0009F04390004B2018000390013B300001098 +:1096B0000030500070B000D0F011307012F07039EE +:1096C0000015B423F07034F0F067F0F08AF0F0CDBC +:1096D000F0F0EFF0F00FFF390008B60120000FF0B6 +:1096E0001006390003B991C1390003BA01003900ED +:1096F0000ABB000008000000F20000390029C10F79 +:10970000FF07FF03330147014600CD0066003A0022 +:10971000140008000000000000000000000000002D +:1097200000000000000000390015C203FF01FF0027 +:1097300000000003FF01FF0000000003FF01FF39EC +:109740000004C30008B8390014C500208841CF4F79 +:109750004F0048532921282A052F00200F390025C2 +:10976000C64B00900002D50002CB011043000A0056 +:1097700000000000000000000000000000000000E9 +:109780000000000000390005C84848535339000361 +:10979000C98888390029CC191919191919191919E1 +:1097A0001919191919191919191919191919191929 +:1097B00019191919191919191919191919191939F9 +:1097C0000033CD1919191919191919191919191954 +:1097D00019191919191919191919191919191919F9 +:1097E00019191919191919191919191919191919E9 +:1097F0001919191919390029CE191919191919190D +:1098000019191919191919191919191919191919C8 +:1098100019191919191919191919191919191919B8 +:1098200019390033CF1919191919191919191919D1 +:109830001919191919191919191919191919191998 +:109840001919191919191919191919191919191988 +:1098500019191919191919390029D01919191919AA +:109860001919191919191919191919191919191968 +:109870001919191919191919191919191919191958 +:10988000191919390033D11919191919191919196F +:109890001919191919191919191919191919191938 +:1098A0001919191919191919191919191919191928 +:1098B000191919191919191919390029D219191948 +:1098C0001919191919191919191919191919191908 +:1098D00019191919191919191919191919191919F8 +:1098E0001919191919390033D3191919191919190D +:1098F00019191919191919191919191919191919D8 +:1099000019191919191919191919191919191919C7 +:109910001919191919191919191919390029D421DD +:109920002121212121212121212121212121212127 +:109930002121212121212121212121212121212117 +:1099400021212121212121390033D521212121214A +:1099500021212121212121212121212121212121F7 +:1099600021212121212121212121212121212121E7 +:1099700021212121212121212121212121390029D8 +:10998000D621212121212121212121212121212112 +:1099900021212121212121212121212121212121B7 +:1099A000212121212121212121390033D7212121E8 +:1099B0002121212121212121212121212121212197 +:1099C0002121212121212121212121212121212187 +:1099D000212121212121212121212121212121395F +:1099E0000029D821212121212121212121212121C9 +:1099F0002121212121212121212121212121212157 +:109A00002121212121212121212121390033D92185 +:109A10002121212121212121212121212121212136 +:109A20002121212121212121212121212121212126 +:109A30002121212121212121212121212121212116 +:109A400021390029DD21212121212121212121214B +:109A500021212121212121212121212121212121F6 +:109A600021212121212121212121212121390033DD +:109A7000DE21212121212121212121212121212119 +:109A800021212121212121212121212121212121C6 +:109A900021212121212121212121212121212121B6 +:109AA000212121390029DF23150F0B0B0B0B0B0B89 +:109AB0000B0B0B0B0B0B0B0B0B0B0B2618120E0EC1 +:109AC0000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E398B +:109AD0000033E0281A14101010101010101010107D +:109AE00010101010101010281A1410101010101050 +:109AF0001010101010101010101010212121212111 +:109B00002121212121390029E123150F0B0B0B0BFA +:109B10000B0B0B0B0B0B0B0B0B0B0B0B0B26181266 +:109B20000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E55 +:109B30000E390033E2281A141010101010101010F3 +:109B4000101010101010101010281A1410101010EF +:109B500010101010101010101010101010212121D2 +:109B600021212121212121390029E323150F0B0B6C +:109B70000B0B0B0B0B0B0B0B0B0B0B0B0B0B0B261A +:109B800018120E0E0E0E0E0E0E0E0E0E0E0E0E0EE7 +:109B90000E0E0E390033E4281A1410101010101095 +:109BA0001010101010101010101010281A1410108F +:109BB0001010101010101010101010101010102194 +:109BC000212121212121212121390029E523150FDE +:109BD0000B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0BD5 +:109BE0000B2618120E0E0E0E0E0E0E0E0E0E0E0E72 +:109BF0000E0E0E0E0E390033E6281A141010101037 +:109C000010101010101010101010101010281A142E +:109C10001010101010101010101010101010101044 +:109C200010212121212121212121213900029F05FB +:109C3000390007B22420050FFFFF390009B3A00047 +:109C4000280000003FFF39000DB4020E3E00001056 +:109C500006000002500F390015B50FFF07FF033350 +:109C60000147014600CD0066003A001400083900A3 +:109C700015B603FF01FF0000000003FF01FF000015 +:109C8000000003FF01FF390009B800000000131FA6 +:109C9000306E390029E000000000000000000000E4 +:109CA00000000000000000000000000000000000B4 +:109CB000000000000000000000000000000039006B +:109CC00029E100000000000000000000000000008A +:109CD0000000000000000000000000000000000084 +:109CE00000000000000000000000390015E2000044 +:109CF0000000000000000000000000000000000064 +:109D00000000390029E301E101E101E101E101FF86 +:109D100001FF01FF01FF01FF01FF01E101E101E19D +:109D200001E101FF01FF01FF01FF01FF01FF390018 +:109D300029E401E101E101E101E101FF01FF01FF8E +:109D400001FF01FF01FF01E101E101E101E101FF8B +:109D500001FF01FF01FF01FF01FF390015E501FFD0 +:109D600001FF01FF01FF01FF01FF01FF01FF01FFF3 +:109D700001FF3900029F04390013B30000100030C6 +:109D8000500070B000D0F011307012F07039001532 +:109D9000B423F07034F0F067F0F08AF0F0CDF0F01A +:109DA000EFF0F00FFF3900029F05390015B50FFFE6 +:109DB00007FF03330147014600CD0066003A001457 +:109DC0000008390015B60000000000000000000087 +:109DD000000000000000000000003900029F05396B +:109DE0000002F980390004FF0000013900029F06DB +:109DF000390003FF0001390005FE010000003900B1 +:109E000016F102004523C12C3394F344107545C765 +:109E10000F557CEB664AA0390012F267F77C886B1D +:109E2000D69A3C07ABC727BB84E6B0E6390016F3E9 +:109E300002004522ACDE23F3983499204462A34506 +:109E4000F35D56BA0B390012F46664DA78BA1689F3 +:109E50006F1D9ABF0AAA5DACA0AC390016F50200CE +:109E6000E93381DD4419B445D53C5598E96661DD97 +:109E700077439E390012F678F98B9A8E03AB7449BA +:109E8000CC1470CDDC3ED03E390002FF0139000514 +:109E9000FE01010000390016F1000001127E64236A +:109EA000BD8A33ADED44649055238156D42C3900DE +:109EB00012F26671F378CA27897E2B9ACB1AAA66AA +:109EC000B5A0B5390016F30000011113E8235B0AB1 +:109ED00033206234EB0B44A3FC55459F390012F448 +:109EE00056DE5D77217278C55C89E52A996DB1905F +:109EF000B1390016F502000823FD68349648446A1B +:109F0000A6552A5A56F86467BC1A390012F67766C5 +:109F1000F089D83D9A9F59BB0058BBACFCB0FC39C6 +:109F20000002FF01390005FE01020000390016F1B0 +:109F30000000010002031263C2330D5333A6F9443B +:109F400061C055145D390012F2569C0367BF0F774C +:109F500058DA88568F89C9009000390016F300003E +:109F6000010002030287272283D1331B7934DE3AB2 +:109F70004490DB390012F455147466297667BA2DC3 +:109F800077A2D38808388038390016F5020061229C +:109F900062C3332A9934DF31445FBB55228A56ECC1 +:109FA00039390012F6667DED78B70D885CE9997055 +:109FB000B19AED2AA02A390002FF01390005FE01FD +:109FC000030000390016F10000010002030004053F +:109FD0000006F023CD1634A611445EA3390012F218 +:109FE00045DB4256DB216666D27736667796BE70D1 +:109FF000BE390016F3000002000507000C0D1144E5 +:10A0000080224CA833368734DA29390012F44457B9 +:10A01000BF55498D56D6376697C367F01670163907 +:10A020000016F501001F112021331314333F6E3445 +:10A03000AF0E448DC9552173390012F656A81B671F +:10A04000C10B7756CC88396C889ECC80CC39000205 +:10A05000FF01390005FE01040000390016F100007F +:10A06000010002030004171150CF3376C24475C3B8 +:10A0700055195A390012F25593F4668CD0770C7A40 +:10A0800078DD0A883A618061390016F3000001002A +:10A090000203000405127B4633116534FA4D4497E0 +:10A0A000DD390012F45516746606496681E9774574 +:10A0B000737797BF70BF390016F50200EC3356571F +:10A0C0003358D934FF384488D655399756D4233974 +:10A0D0000012F6665CC5776BB478F26889D3049990 +:10A0E00035629062390002FF01390005FE0105006A +:10A0F00000390016F1000001000203000405020807 +:10A100006F23B9BF442EA145F738390012F25573B9 +:10A11000D76678B967FB6477C7F5882051805139D5 +:10A120000016F300000100020300040501063223BB +:10A13000AA2B34B01B4469AD390012F445F55156D1 +:10A14000F12E6670CF772C5A7781AA70AA39001643 +:10A15000F50200EC3386B033B1B234E80C445F9EB4 +:10A1600055237456BC01390012F66650B0775DA1D4 +:10A1700078E55788C0F1991F4F904F390002FF01D1 +:10A18000390005FE01060000390016F1000001004B +:10A190000203000405000607010F1834902145AAA8 +:10A1A00001390012F2553AA8664D8E67D73E77A561 +:10A1B000D078FB2B802B390016F30000010002033E +:10A1C0000004050006070126EA3317AD441670396E +:10A1D0000012F445AC1B55BDFB6645A7770F3377DE +:10A1E0005D8B708B390016F50200EC3386B333CCEF +:10A1F000CD33CECF442E7645E958559FE139001234 +:10A20000F6662A9777418278C83988A6D2990031B4 +:10A210009031390002FF01390005FE0107000039C5 +:10A220000016F1000001000203000405000607000B +:10A2300008CB130659446295390012F245EB636668 +:10A240000B57679308776A9977C0EF70EF3900165C +:10A25000F3000001000203000405000607000809DE +:10A2600012C8F334B500390012F4444EC65570BD1F +:10A2700056F67066CFFD771F527052390016F50200 +:10A2800000EC33546E336F7033717234E62F45AE89 +:10A290000F5559B7390012F656EE5B770B5178918E +:10A2A00005886C9D88C7F880F8390002FF013900E5 +:10A2B00005FE01080000390016F10000010002034C +:10A2C000000405000607000809000A5500787939DE +:10A2D0000012F2348C6855499856D14866A9D06767 +:10A2E000FB277027390016F3000001000203000469 +:10A2F00005000607000809010A1512D12A390012C3 +:10A30000F43315D444ABF05526A96611306659874D +:10A310006087390016F502005522565722D1FA33CC +:10A32000101333148C44016845B516390012F655E4 +:10A330004BB1666BAB67DE5C77BBDC88072D802D8D +:10A34000390002FF01390005FE010900003900163D +:10A35000F1000001000203000405000607000809DF +:10A36000000A0B000C0F390012F200505134F5B105 +:10A3700045F18256DE11663D5D605D390016F300E1 +:10A380000001000203000405000607000809000A96 +:10A390000B000C0D390012F402A837347F08445A20 +:10A3A000D4553860559CB850B8390016F5000001F6 +:10A3B00000020301E22512497622F8F9333AAE444D +:10A3C0001C64390012F645961056CA0D6652AB77DA +:10A3D0000C2B7764887088390002FF013900029FD6 +:10A3E00005390002F900390004FF000000390002BD +:10A3F0009F06390003FF00003900029F073900085B +:10A40000B204040404040098390008B315151515A6 +:10A4100004009A390008B420202020040096390056 +:10A4200008B604040404040260390008B7040404F4 +:10A4300004040260390021B901020304050607087B +:10A44000090A0B0C0D0E0F100000000000000000A8 +:10A450000000000000000000390021BA01020304DE +:10A4600005060708090A0B0C0D0E0F101112131424 +:10A47000150000000000000000000000390021BBB2 +:10A480000102030405060708090A0B0C0D0E0F1044 +:10A490001112131415161718191A1B1C1D1E1F2034 +:10A4A000390021BD0102030400000000000000008B +:10A4B000000000000000000000000000000000009C +:10A4C00000000000390021BE01020304000000006A +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000039001FC0007A7A0060 +:10A4F0007A7A006A4600261A000F0B000B00000053 +:10A500000000000000000000000039001FC1009A98 +:10A510009A009A9A006A4600261A000F0B000B0058 +:10A5200000000000000000000000000039001FC211 +:10A53000009696009696006A4600261B000F0B00B8 +:10A540000B000000000000000000000000003900C7 +:10A5500007C410301C001C1C390007C52260602293 +:10A560006060390029D60FFF07FF0333014701461A +:10A5700000CD0066003A0014000800010000000051 +:10A580000000000000000000000000000000390092 +:10A5900015D703FF01FF0000000003FF01FF0000CB +:10A5A000000003FF01FF3900029F0C390009B4F0DD +:10A5B000C0C01B1B0000163900029F08390004B2FE +:10A5C000100002390002B411390008B5000201FF81 +:10A5D0002040C0390003B65803390037B733FFFFB6 +:10A5E00033FFFF33FFFF33FFFF33FFFF33FFFF3343 +:10A5F000FFFF33FFFF33FFFF33FFFF33FFFF33FF67 +:10A60000FF33FFFF33FFFF33FFFF33FFFF33FFFF56 +:10A6100033FFFF390037B833FFFF33FFFF33FFFF4E +:10A6200033FFFF33FFFF33FFFF33FFFF33FFFF3302 +:10A63000FFFF33FFFF33FFFF33FFFF33FFFF33FF26 +:10A64000FF33FFFF33FFFF33FFFF33FFFF390037D7 +:10A65000B933FFFF33FFFF33FFFF33FFFF33FFFF4C +:10A6600033FFFF33FFFF33FFFF33FFFF33FFFF33C2 +:10A67000FFFF33FFFF33FFFF33FFFF33FFFF33FFE6 +:10A68000FF33FFFF33FFFF390037BA33FFFF33FFDC +:10A69000FF33FFFF33FFFF33FFFF33FFFF33FFFFC6 +:10A6A00033FFFF33FFFF33FFFF33FFFF33FFFF3382 +:10A6B000FFFF33FFFF33FFFF33FFFF33FFFF33FFA6 +:10A6C000FF390037BB33FFFF33FFFF33FFFF33FF9B +:10A6D000FF33FFFF33FFFF33FFFF33FFFF33FFFF86 +:10A6E00033FFFF33FFFF33FFFF33FFFF33FFFF3342 +:10A6F000FFFF33FFFF33FFFF33FFFF390037BC4459 +:10A700002C2244180E4300F433E6D834D32C4422D0 +:10A7100018440E0033F4E633D8D3442C2244180EE8 +:10A720004300F433E6D834D32C442218440E0033CB +:10A73000F4E633D8D3390037BD33FFFF33FFFF339F +:10A74000FFFF33FFFF33FFFF33FFFF33FFFF33FF15 +:10A75000FF33FFFF33FFFF33FFFF33FFFF33FFFF05 +:10A7600033FFFF33FFFF33FFFF33FFFF33FFFF39BB +:10A770000037BE33FFFF33FFFF33FFFF33FFFF33ED +:10A78000FFFF33FFFF33FFFF33FFFF33FFFF33FFD5 +:10A79000FF33FFFF33FFFF33FFFF33FFFF33FFFFC5 +:10A7A00033FFFF33FFFF33FFFF390037BF33FFFFB6 +:10A7B00033FFFF33FFFF33FFFF33FFFF33FFFF3371 +:10A7C000FFFF33FFFF33FFFF33FFFF33FFFF33FF95 +:10A7D000FF33FFFF33FFFF33FFFF33FFFF33FFFF85 +:10A7E00033FFFF390037C033FFFF33FFFF33FFFF75 +:10A7F00033FFFF33FFFF33FFFF33FFFF33FFFF3331 +:10A80000FFFF33FFFF33FFFF33FFFF33FFFF33FF54 +:10A81000FF33FFFF33FFFF33FFFF33FFFF39003705 +:10A82000C133FFFF33FFFF33FFFF33FFFF33FFFF72 +:10A8300033FFFF33FFFF33FFFF33FFFF33FFFF33F0 +:10A84000FFFF33FFFF33FFFF33FFFF33FFFF33FF14 +:10A85000FF33FFFF33FFFF390037C2442C22441877 +:10A860000E4300F433E6D834D32C442218440E00AF +:10A8700033F4E633D8D3442C2244180E4300F43387 +:10A88000E6D834D32C442218440E0033F4E633D8EF +:10A89000D3390037C333FFFF33FFFF33FFFF33FFED +:10A8A000FF33FFFF33FFFF33FFFF33FFFF33FFFFB4 +:10A8B00033FFFF33FFFF33FFFF33FFFF33FFFF3370 +:10A8C000FFFF33FFFF33FFFF33FFFF390037C43390 +:10A8D000FFFF33FFFF33FFFF33FFFF33FFFF33FF84 +:10A8E000FF33FFFF33FFFF33FFFF33FFFF33FFFF74 +:10A8F00033FFFF33FFFF33FFFF33FFFF33FFFF3330 +:10A90000FFFF33FFFF390037C533FFFF33FFFF334E +:10A91000FFFF33FFFF33FFFF33FFFF33FFFF33FF43 +:10A92000FF33FFFF33FFFF33FFFF33FFFF33FFFF33 +:10A9300033FFFF33FFFF33FFFF33FFFF33FFFF39E9 +:10A940000037C633FFFF33FFFF33FFFF33FFFF3313 +:10A95000FFFF33FFFF33FFFF33FFFF33FFFF33FF03 +:10A96000FF33FFFF33FFFF33FFFF33FFFF33FFFFF3 +:10A9700033FFFF33FFFF33FFFF390037C733FFFFDC +:10A9800033FFFF33FFFF33FFFF33FFFF33FFFF339F +:10A99000FFFF33FFFF33FFFF33FFFF33FFFF33FFC3 +:10A9A000FF33FFFF33FFFF33FFFF33FFFF33FFFFB3 +:10A9B00033FFFF390037C8442C2244180E4300F4FB +:10A9C00033E6D834D32C442218440E0033F4E63353 +:10A9D000D8D3442C2244180E4300F433E6D834D3A1 +:10A9E0002C442218440E0033F4E633D8D339000A3D +:10A9F000C916333D01000FFF0000390002CAF039CB +:10AA00000006CB00017C4200390005CC0001001F8C +:10AA1000390004CD000100390021CE002500A90134 +:10AA20009C030804F407650A620DEE120C16C11CA3 +:10AA30001021FC28872FB537863FFF39000CCFFC4B +:10AA400001FFFFFFFFFFBA4EED00390035D00000D7 +:10AA500001F1EC23E4DC45D7DE67CBC289C0C4AB8F +:10AA6000C2BCCDB5ABEFAAB4000001FAF123EBE410 +:10AA700045E3EB67DBD189CED0ABCCC8CDC1BAEF13 +:10AA8000B9B8390035D1000001FFF023E8E345E112 +:10AA9000E567D7CC89CED5ABCECACDC4BDEFB9B7AB +:10AAA000000001F1EB23E1DD45D0D067BFB1899D06 +:10AAB0008AAB7862CD4930EF1406390035D20000F8 +:10AAC00001F5EE23E8E145D6D467BFB689A699AB78 +:10AAD0008875CD6047EF2905000001F4EF23E7E119 +:10AAE00045D7D467C2B689A491AB7A63CD513BEF09 +:10AAF0001E01390035D3000001FFEC23E3D945D115 +:10AB0000D667C1B789B4BEABB3ABCDA49AEF99A158 +:10AB10000000110BFC23F5E445DFE467CDC589BFD8 +:10AB2000CDABB7B4CDAAA4EFA6A5390035D40000AB +:10AB30001102F223E9E045DCDD67CCC289C4D0AB69 +:10AB4000BFB9CDB3ACEFA8A5000012162034283051 +:10AB5000563138782F299A1910ABFFEDCDD6BCEFBE +:10AB6000AFB2390035D50000123336343F4556496F +:10AB70004E7847489A3F3CBC3029DD15FEEFDEBEDB +:10AB80000000121826343139563D42783B389A2D50 +:10AB900022BC0E0ACDF8E0EFC9B9390035D68000E5 +:10ABA00002D90834131A46E93C78768C9AA4BEBCC4 +:10ABB000CED8DED7D7F1F416800002CF01340A1ABE +:10ABC00046EE44787B909AACC7BCD5D8DEE3EDF076 +:10ABD000F4FC39001BD7800002F11B34272A46FF02 +:10ABE0005D7894AD9AC7DCBCE9E9DEE7E4F1F406F0 +:10ABF000390012D88096918D8B8A96908E87909688 +:10AC000092858F94963900029F09390003B29C09FE +:10AC1000390009B30000000080808080390010B442 +:10AC200076FFDD43844832472211850D00AC01399F +:10AC30000023C0000001649CC8185552729AB85A8B +:10AC4000E0F42658000001649CC8185552729AB866 +:10AC50005AE0F4265839001DC1FFF5EDE5DDD6D0E8 +:10AC6000D0CD0FC5C3C3C3000F13161A2023252D43 +:10AC7000002D2D2D2D39001DC2FFF5EDE5DDD6D3BC +:10AC8000CDC90FC9C0C0C0000F15151B202F353509 +:10AC9000003838383839001DC3FFF5EDE5DED6D36E +:10ACA000CDC90FC9C0C0C0000F13151B202F3535EB +:10ACB000003838383839001DC4FFF5EDE5DED6D34D +:10ACC000CDC90FC9C0C0C0000F13151B202F3535CB +:10ACD000003838383839001DC5FFF5EDE5DDD6D32D +:10ACE000CDC90FC9C0C0C0000F15151B202F3535A9 +:10ACF000003838383839001DC6FFF5EDE8E0D6D306 +:10AD0000CDC90FC9C0C0C0000F15151B202F353588 +:10AD1000003838383839001DC7FFF5EDE8E0D6D3E4 +:10AD2000CDC90FC9C0C0C0000F15151B202F353568 +:10AD3000003838383839001DC8FFF5EDE8E0D6D3C3 +:10AD4000CDC90FC9C0C0C0000F15151B202F353548 +:10AD5000003838383839001DC9FFF5EDE8E0D6D3A2 +:10AD6000CDC90FC9C0C0C0000F15151B202F353528 +:10AD7000003838383839001DCAFFF5EDE5DDD6D387 +:10AD8000CDC90FC9C0C0C0000F15151B202F353508 +:10AD9000003838383839001DCBFFF3F0E8DDD8D55E +:10ADA000D0CD0FC5C3C3C3000815181F2023252D00 +:10ADB000002D2D2D2D39001DCCFFF3F0E8DDD8D569 +:10ADC000D0CD0FC5C3C3C300080F121F2023252DEC +:10ADD000002D2D2D2D39001DCDFFF3F0E8DDD8D548 +:10ADE000D0CD0FC5C3C3C3000817181F2023252DBE +:10ADF000002D2D2D2D39001DCEFFF3F0E8DDD8D527 +:10AE0000D0CD0FC5C3C3C3000817181F2023252D9D +:10AE1000002D2D2D2D39001DCFFFF5F3EDDED8CD02 +:10AE2000C8CF0FCDC5C3C300080D0F121517181DCD +:10AE3000001F20252D39001DD1FFF5F3EDDED8CD03 +:10AE4000C8CF0FCDC5C3C300080D0F121517181DAD +:10AE5000001F20252D39001DD2FFF5F3EDDED8CDE2 +:10AE6000C8CF0FCDC5C3C300080D0F121517181D8D +:10AE7000001F20252D39001DD3FFF5F3EDDED8CDC1 +:10AE8000C8CF0FCDC5C3C300080D0F121517181D6D +:10AE9000001F20252D39001DD4FFF5F3EDDED8CDA0 +:10AEA000C8CF0FCDC5C3C3000F120F121517181D41 +:10AEB000001F20252D390011D517F9FEFD050000D2 +:10AEC0000017F9F8FE00000000390011D618F5F857 +:10AED000030000000017EBEDEF0000000039000D4B +:10AEE000D70500800080AF0080008003FF3900118B +:10AEF000D82020202020202020202020202020209A +:10AF000020390006EE30100010FF3900029F0A3988 +:10AF1000000CB21F001001000700000011003900F2 +:10AF20002BB3101000101000000000000000000003 +:10AF300000000000000000101000101000000000D1 +:10AF400000003F0000000000003F000039002BB46B +:10AF5000000000003F0000000000003F0000000073 +:10AF600000003F0000000000003F00000000000063 +:10AF70003F0000000000003F000039002BB500003A +:10AF80000000000000101000101000001010001051 +:10AF900010000000000000000000000000003F0062 +:10AFA00000000000003F000039000CBE001FFF132E +:10AFB000910F04002480FF3900029F0B39000AB270 +:10AFC000013F3F0F3F0F5F0F0F390031B9320000D3 +:10AFD0000000006B54241CB014C85C241CB0FF009B +:10AFE00000000000000000FF000000000000000062 +:10AFF000FF000000000000000000000000390031E8 +:10B00000BA3200000000005469241CB014C85C244B +:10B010001CB0FF0000000000000000FF0000000066 +:10B0200000000000FF000000000000000000000021 +:10B0300000390031BC3200000000004B4B241CB032 +:10B0400014D165241CB0FF0000000000000000FFC8 +:10B050000000000000000000FF00000000000000F1 +:10B060000000000000390031BE3200000000002066 +:10B0700020201C33000000002020FF000000000002 +:10B08000000000FF0000000000000000FF000000C2 +:10B09000000000000000000000390014C68F040406 +:10B0A0000404FFFFFFFF0022222222001E1E1E1E9C +:10B0B000390014C70F04040404FFFFFFFF0022221D +:10B0C0002222001E1E1E1E390010C8F90505B0E020 +:10B0D000B050BAF0B0E0B020D0503900029F0D3926 +:10B0E0000010B2251021010210000016100000010E +:10B0F000AA90390002B3B039000DB5002407010051 +:10B100000000002004EE21390004B60212223900AA +:10B1100005B720F0C0E039000DB820F0C0E020F005 +:10B12000C0E020F0C0E0390005B90101010139009B +:10B1300003BA0000390002BB01390015BC0FFF073C +:10B14000FF03330147014600CD0066003A001400BA +:10B1500008390006BD020002065B39000CC700007A +:10B16000000000000000002A0039000248033900F6 +:10B17000011139000253E0390001353900029F0402 +:10B1800039000EB50017271B17007575103B08A86E +:10B1900048390012BE00CFFFFFFF3FFFFFFF3FFF18 +:10B1A000FFFF3FFFFFFF39002EE9FFFFFFFFFFFF1B +:10B1B000FFFFFF00FFFFFF3F3F33FFFF33FFFF3382 +:10B1C000FFFF33FFFF33FFFF33FFFF33FFFF33FF8B +:10B1D000FF33FFFF33FFFF39001CEA33FFFF33FF6C +:10B1E000FF33FFFF33FFFF33FFFF33FFFF33FFFF6B +:10B1F00033FFFF33FFFF39002EEBFFFFFF00FFFFA0 +:10B2000000FFFF00FFFFFF3F3F33FFFF33FFFF3330 +:10B21000FFFF33FFFF33FFFF33FFFF33FFFF33FF3A +:10B22000FF33FFFF33FFFF39001CEC33FFFF33FF19 +:10B23000FF33FFFF33FFFF33FFFF33FFFF33FFFF1A +:10B2400033FFFF33FFFF39002EEDFFFFFF00FFFF4D +:10B2500000FFFF00FFFFFF3F3F33FFFF33FFFF33E0 +:10B26000FFFF33FFFF33FFFF33FFFF33FFFF33FFEA +:10B27000FF33FFFF33FFFF39001CEE33FFFF33FFC7 +:10B28000FF33FFFF33FFFF33FFFF33FFFF33FFFFCA +:10B2900033FFFF33FFFF39000AF81EE0E0E000183B +:10B2A0001500E039000AF9E1181500F0F8F0EE0099 +:10B2B00039000AFA1EE0E0E000181500E03900024B +:10B2C0009F0539000DB4020F3E0000100600000279 +:10B2D000408D390029E60FFF07FF03330147014680 +:10B2E00000CD0066003A00140008000000000000D5 +:10B2F0000000000000000000000000000000390015 +:10B300001FE7000000000000000000000000000037 +:10B31000000000000000000000000000000000002D +:10B32000390029E80FFF0FFF0FFF0FFF0FFF0CF091 +:10B3300009710754048C03010000000000000000A4 +:10B3400000000000000000000000000039001FE9BC +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700007020100080201000202010003010202AB +:10B38000010100003BB4AD07EBB5ED001E0000006D +:10B390001E0000001E000000040000001E0000004F +:10B3A0003C0000003C00000000000100040100001F +:10B3B0000201000002000000000100000000000087 +:10B3C0000000000000680040009800400068004055 +:10B3D000009800400068004000980040006800406D +:10B3E000009800400068004000980040006800405D +:10B3F000009800400068004000980040006800404D +:10B40000009800405B25735D202825303464292096 +:10B410006461746120747970652069732073686F4A +:10B42000727420726573706F6E73652120636D6432 +:10B430005F636F756E745B25645D206F7665722047 +:10B4400073697A650A0000005B25735D202825304A +:10B4500034642920445343204552525B3078257888 +:10B460005D204552525F5250545B307825785D2004 +:10B470005258425220737461747573305B30782572 +:10B48000785D20737461747573315B307825785DF5 +:10B49000200A00005B25735D2028253034642920B4 +:10B4A00076696463206572726F72202173746174AF +:10B4B0007573305B307825785D3B73746174757398 +:10B4C000315B307825785D3B737461747573325BE2 +:10B4D000307825785D210A005B25735D20282530B2 +:10B4E000346429206E6F20637263207261775F700D +:10B4F0006172616D5F6C656E3D25642C7061726177 +:10B500006D5F6C656E6774683D256420726561646B +:10B510005F726567735F74696D65733D25640A00CA +:10B520005B25735D20282530346429206572726F95 +:10B5300072212120707073206C656E677468203AE8 +:10B54000202564202C6D61782073697A65206973E9 +:10B5500020313238202120666C75736820706B743E +:10B56000206275660A00000088B50100000007002F +:10B5700010040000880A0100F4B60100100407005E +:10B58000582D00006E150100011C22111008893091 +:10B59000800BB005401CBB02A00211130250142006 +:10B5A00014391209120C12851370181610F0030CBE +:10B5B000201016060B0B330E1C2A38465462697095 +:10B5C00077797B7D7E010201001B28094009BE19A5 +:10B5D000FC19FA19F81A381A781AB62AF62B342BED +:10B5E000743B746BF449801508C403F017BB01F871 +:10B5F00001F8021301F8142011823A07800A5E96BE +:10B60000804132010419C0E1E41AFF0149272A01EF +:10B6100001512BE0A50F091149E9101C011010057B +:10B62000A2024BFC031B89183204721A99290914CF +:10B63000A9B13949B10C1CC00E0733C5B4C4040804 +:10B640001258BA401041125C0310400912600310F6 +:10B65000400A12640324400BDA04B5F9A0E9C6E1FC +:10B66000041D0203020B1C030240031E040F041DF1 +:10B67000050C0C0B1C0601C0031F070512011C055D +:10B680000603A41301061F010501020201D22912BB +:10B690001A02081C030506071B03041A1968180977 +:10B6A00004040507080808FF012A061B2E010106ED +:10B6B00006070919661D070805061C191D2A090930 +:10B6C00018100909FFFF0A050604080A0A02FF0B01 +:10B6D00004132E010B0BFF0C1B2E0C0CFFFF0D098E +:10B6E0002E0D0DFFFF0E091F0E0EFFFF0F043D1163 +:04B6F000195A4100A2 +:04000005000100C135 +:00000001FF diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.htm b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.htm new file mode 100644 index 0000000..06d8127 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.htm @@ -0,0 +1,3969 @@ + + +Static Call Graph - [.\Objects\WL668_P8P_TM667_ICNA3508_20240401.axf] +
+

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


+

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Apr 03 15:42:24 2024 +

+

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

+Call chain for Maximum Stack Depth:

+main ⇒ google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +

+

+Mutually Recursive functions +

  • NMI_Handler   ⇒   NMI_Handler
    +
  • SVC_Handler   ⇒   SVC_Handler
    +
  • PendSV_Handler   ⇒   PendSV_Handler
    +
  • FLSCTRL_IRQn_Handler   ⇒   FLSCTRL_IRQn_Handler
    +
  • WDG_IRQn_Handler   ⇒   WDG_IRQn_Handler
    +
  • I2C0_IRQn_Handler   ⇒   I2C0_IRQn_Handler
    +
  • I2C1_IRQn_Handler   ⇒   I2C1_IRQn_Handler
    +
  • SPIS_IRQn_Handler   ⇒   SPIS_IRQn_Handler
    +
  • SPIM_IRQn_Handler   ⇒   SPIM_IRQn_Handler
    +
  • I2C2_IRQn_Handler   ⇒   I2C2_IRQn_Handler
    +
  • OTP_IRQn_Handler   ⇒   OTP_IRQn_Handler
    +
  • PVD_IRQn_Handler   ⇒   PVD_IRQn_Handler
    + +

    +

    +Function Pointers +

      +
    • AP_NRESET_IRQn_Handler from drv_gpio.o(i.AP_NRESET_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • DMA_IRQn_Handler from drv_dma.o(i.DMA_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT0_IRQn_Handler from drv_gpio.o(i.EXTI_INT0_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT1_IRQn_Handler from drv_gpio.o(i.EXTI_INT1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT2_IRQn_Handler from drv_gpio.o(i.EXTI_INT2_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT3_IRQn_Handler from drv_gpio.o(i.EXTI_INT3_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT4_IRQn_Handler from drv_gpio.o(i.EXTI_INT4_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT5_IRQn_Handler from drv_gpio.o(i.EXTI_INT5_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT6_IRQn_Handler from drv_gpio.o(i.EXTI_INT6_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT7_IRQn_Handler from drv_gpio.o(i.EXTI_INT7_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • FLSCTRL_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • HardFault_Handler from drv_common.o(i.HardFault_Handler) referenced from startup_armcm0.o(RESET) +
    • I2C0_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • I2C1_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • I2C2_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • LCDC_IRQn_Handler from hal_internal_vsync.o(i.LCDC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MEMC_IRQn_Handler from drv_memc.o(i.MEMC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MIPI_RX_IRQn_Handler from drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MIPI_TX_IRQn_Handler from drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • NMI_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • OTP_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • PVD_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • PendSV_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • Reset_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SPIM_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SPIS_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SVC_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SWIRE_IRQn_Handler from drv_swire.o(i.SWIRE_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • SysTick_Handler from drv_common.o(i.SysTick_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER0_IRQn_Handler from drv_timer.o(i.TIMER0_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER1_IRQn_Handler from drv_timer.o(i.TIMER1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER2_IRQn_Handler from drv_timer.o(i.TIMER2_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER3_IRQn_Handler from drv_timer.o(i.TIMER3_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • UART_IRQn_Handler from drv_uart.o(i.UART_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VIDC_IRQn_Handler from drv_vidc.o(i.VIDC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VPRE1_IRQn_Handler from drv_rxbr.o(i.VPRE1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VPRE_IRQn_Handler from hal_internal_dcs.o(i.VPRE_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • WDG_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_armcm0.o(.text) +
    • _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0vsprintf) +
    • ap_dcs_read from p8p_demo.o(i.ap_dcs_read) referenced from p8p_demo.o(i.app_mipi_rx_init) +
    • ap_dcs_set_backlight from p8p_demo.o(i.ap_dcs_set_backlight) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_display_off from p8p_demo.o(i.ap_dcs_set_display_off) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_display_on from p8p_demo.o(i.ap_dcs_set_display_on) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_enter_sleep_mode from p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_exit_sleep_mode from p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_frame_change from p8p_demo.o(i.ap_dcs_set_frame_change) referenced from p8p_demo.o(.constdata) +
    • ap_rstn_pull_down_cb from p8p_demo.o(i.ap_rstn_pull_down_cb) referenced from p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) +
    • ap_rstn_pull_high_cb from p8p_demo.o(i.ap_rstn_pull_high_cb) referenced from p8p_demo.o(i.app_system_suspend) +
    • ap_set_FPS_53 from p8p_demo.o(i.ap_set_FPS_53) referenced from p8p_demo.o(.constdata) +
    • fputc from tau_log.o(i.fputc) referenced from printfa.o(i.__0printf) +
    • hal_nonshadow_func_update from hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    • hal_tx_frame_rate_adjust from hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) +
    • hal_vsync_func_update from hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) +
    • pps_update_handle from p8p_demo.o(i.pps_update_handle) referenced from p8p_demo.o(i.app_mipi_rx_init) +
    • rxbr_irq1_callback from hal_internal_vsync.o(i.rxbr_irq1_callback) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • soft_gen_te from hal_internal_vsync.o(i.soft_gen_te) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • soft_gen_te_double_buffer from hal_internal_vsync.o(i.soft_gen_te_double_buffer) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • stop_sleep_cb from hal_pwr.o(i.stop_sleep_cb) referenced from hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) +
    • svs_sync_handle from hal_internal_svs.o(i.svs_sync_handle) referenced from hal_internal_svs.o(i.svs_wait_fr_stab) +
    • svs_wait_fr_stab from hal_internal_svs.o(i.svs_wait_fr_stab) referenced from hal_internal_svs.o(i.svs_wait_start) +
    • svs_wait_start from hal_internal_svs.o(i.svs_wait_start) referenced from hal_internal_svs.o(i.hal_intl_svs_deinit_rx) +
    • svs_wait_start from hal_internal_svs.o(i.svs_wait_start) referenced from hal_internal_svs.o(i.hal_intl_svs_init_rx) +
    • vidc_callback from hal_internal_vsync.o(i.vidc_callback) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    +

    +Global Symbols +

    +

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) +
    [Address Reference Count : 1]

    • startup_armcm0.o(.text) +
    +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) + +

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

    [Calls]

    • >>   __scatterload +
    + +

    __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

    [Called By]

    • >>   __scatterload +
    + +

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) + +

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) + +

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) + +

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) + +

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) + +

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

    • startup_armcm0.o(RESET) +
    +

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

    [Calls]

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

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

    [Calls]

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

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

    [Calls]

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

    FLSCTRL_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    WDG_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C0_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C1_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    SPIS_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    SPIM_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C2_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    OTP_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    PVD_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) + +

    __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   drv_dsi_tx_phy_test_setup +
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_timing_info_update +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_set_up_phy +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_swire_init +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   svs_wait_fr_stab +
    • >>   svs_get_rel_intv +
    • >>   svs_direct_mode_setting +
    • >>   hal_intl_fb_edge_resize +
    • >>   hal_intl_fb_check_bandwidth +
    • >>   ha_intl_fb_check_pu_size +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   drv_timer_set_compare_val +
    • >>   __aeabi_idivmod +
    • >>   drv_uart_set_baud_rate +
    • >>   _printf_core +
    + +

    __aeabi_idiv (Thumb, 0 bytes, Stack size 16 bytes, idiv.o(.text), UNUSED) + +

    __aeabi_idivmod (Thumb, 40 bytes, Stack size 16 bytes, idiv.o(.text)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = __aeabi_idivmod ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   ap_dcs_set_backlight +
    + +

    __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) +

    [Called By]

    • >>   hal_intl_fb_cal_fb_info +
    • >>   tau_log_push_log +
    + +

    __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) +

    [Called By]

    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   hal_internal_vsync_init_tx +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_intl_fb_cal_fb_info +
    + +

    __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) + +

    __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) +

    [Called By]

    • >>   hal_intl_dcs_set_auto_hw_filter +
    • >>   _memset$wrapper +
    • >>   __aeabi_memclr +
    + +

    __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_memset +
    + +

    __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

    [Called By]

    • >>   hal_internal_vsync_init_tx +
    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_tx_ctrl_create_handle +
    • >>   hal_dsi_rx_ctrl_create_handle +
    • >>   tau_log_printf +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   hal_internal_vsync_deinit +
    • >>   drv_uart_trans_create_handle +
    • >>   hal_uart_init +
    + +

    __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_memset +
    + +

    strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) +

    [Called By]

    • >>   tau_log_printf +
    + +

    __aeabi_fadd (Thumb, 162 bytes, Stack size 24 bytes, fadd.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = __aeabi_fadd ⇒ _float_epilogue +
    +
    [Calls]
    • >>   _float_round +
    • >>   _float_epilogue +
    +
    [Called By]
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   __aeabi_fsub +
    • >>   __aeabi_frsub +
    + +

    __aeabi_fsub (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue +
    +
    [Calls]
    • >>   __aeabi_fadd +
    +
    [Called By]
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    __aeabi_frsub (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_fadd +
    + +

    __aeabi_fmul (Thumb, 122 bytes, Stack size 16 bytes, fmul.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_fmul +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    __aeabi_fdiv (Thumb, 124 bytes, Stack size 16 bytes, fdiv.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_fdiv +
    +
    [Calls]
    • >>   _float_round +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    + +

    __ARM_scalbnf (Thumb, 24 bytes, Stack size 0 bytes, fscalb.o(.text)) +

    [Called By]

    • >>   hal_lcdc_init_clk +
    + +

    scalbnf (Thumb, 0 bytes, Stack size 0 bytes, fscalb.o(.text), UNUSED) + +

    __aeabi_dadd (Thumb, 328 bytes, Stack size 48 bytes, dadd.o(.text)) +

    [Stack]

    • Max Depth = 104
    • Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_lasr +
    • >>   __aeabi_llsl +
    • >>   _double_round +
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   svs_sync_handle +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   __aeabi_drsub +
    • >>   ceil +
    • >>   __aeabi_dsub +
    • >>   _fp_digits +
    + +

    __aeabi_dsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_dadd +
    + +

    __aeabi_drsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text)) +

    [Stack]

    • Max Depth = 112
    • Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_dadd +
    +
    [Called By]
    • >>   ceil +
    + +

    __aeabi_dmul (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text)) +

    [Stack]

    • Max Depth = 128
    • Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   _fp_digits +
    + +

    __aeabi_ui2f (Thumb, 14 bytes, Stack size 8 bytes, ffltui.o(.text)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = __aeabi_ui2f ⇒ _float_epilogue +
    +
    [Calls]
    • >>   _float_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    __aeabi_ui2d (Thumb, 24 bytes, Stack size 16 bytes, dfltui.o(.text)) +

    [Stack]

    • Max Depth = 72
    • Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_vsync_reset_lcdc_scaler +
    + +

    __aeabi_f2uiz (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text)) +

    [Called By]

    • >>   svs_wait_fr_stab +
    + +

    __aeabi_d2uiz (Thumb, 50 bytes, Stack size 8 bytes, dfixui.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_d2uiz ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_llsr +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    • >>   hal_vsync_reset_lcdc_scaler +
    + +

    __aeabi_f2d (Thumb, 40 bytes, Stack size 0 bytes, f2d.o(.text)) +

    [Called By]

    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    + +

    __aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_d2f +
    +
    [Calls]
    • >>   _float_round +
    +
    [Called By]
    • >>   hal_dsi_tx_timing_info_update +
    + +

    __aeabi_cfcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cfcmple.o(.text), UNUSED) + +

    __aeabi_cfcmple (Thumb, 20 bytes, Stack size 0 bytes, cfcmple.o(.text)) +

    [Called By]

    • >>   hal_tx_frame_rate_adjust +
    + +

    __aeabi_cfrcmple (Thumb, 20 bytes, Stack size 0 bytes, cfrcmple.o(.text)) +

    [Called By]

    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    __aeabi_uldivmod (Thumb, 96 bytes, Stack size 48 bytes, uldiv.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    +
    [Called By]
    • >>   _printf_core +
    • >>   _fp_digits +
    + +

    __aeabi_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_llsl +
    +
    [Called By]
    • >>   __aeabi_dadd +
    • >>   __aeabi_uldivmod +
    • >>   _double_epilogue +
    • >>   __aeabi_d2ulz +
    + +

    _ll_shift_l (Thumb, 0 bytes, Stack size 8 bytes, llshl.o(.text), UNUSED) + +

    __aeabi_llsr (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_llsr +
    +
    [Called By]
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_uldivmod +
    • >>   _double_epilogue +
    • >>   __aeabi_d2ulz +
    + +

    _ll_ushift_r (Thumb, 0 bytes, Stack size 8 bytes, llushr.o(.text), UNUSED) + +

    __aeabi_lasr (Thumb, 38 bytes, Stack size 8 bytes, llsshr.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_lasr +
    +
    [Called By]
    • >>   __aeabi_dadd +
    + +

    _ll_sshift_r (Thumb, 0 bytes, Stack size 8 bytes, llsshr.o(.text), UNUSED) + +

    __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED) + +

    _float_round (Thumb, 16 bytes, Stack size 0 bytes, fepilogue.o(.text)) +

    [Called By]

    • >>   __aeabi_fdiv +
    • >>   __aeabi_fadd +
    • >>   __aeabi_d2f +
    + +

    _float_epilogue (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = _float_epilogue +
    +
    [Called By]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fadd +
    + +

    _double_round (Thumb, 26 bytes, Stack size 8 bytes, depilogue.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = _double_round +
    +
    [Called By]
    • >>   __aeabi_dadd +
    • >>   _double_epilogue +
    • >>   __aeabi_ddiv +
    + +

    _double_epilogue (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text)) +

    [Stack]

    • Max Depth = 56
    • Call Chain = _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __ARM_clz +
    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    • >>   _double_round +
    +
    [Called By]
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_dmul +
    + +

    __aeabi_ddiv (Thumb, 234 bytes, Stack size 40 bytes, ddiv.o(.text), UNUSED) +

    [Calls]

    • >>   _double_round +
    +
    [Called By]
    • >>   _fp_digits +
    + +

    __aeabi_d2ulz (Thumb, 54 bytes, Stack size 8 bytes, dfixul.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    +
    [Called By]
    • >>   _fp_digits +
    + +

    __aeabi_cdrcmple (Thumb, 38 bytes, Stack size 0 bytes, cdrcmple.o(.text)) +

    [Called By]

    • >>   ceil +
    • >>   _fp_digits +
    + +

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

    [Calls]

    • >>   __main_after_scatterload +
    +
    [Called By]
    • >>   _main_scatterload +
    + +

    __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) + +

    __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) + +

    __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) + +

    AP_NRESET_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_gpio.o(i.AP_NRESET_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = AP_NRESET_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    DMA_IRQn_Handler (Thumb, 78 bytes, Stack size 24 bytes, drv_dma.o(i.DMA_IRQn_Handler)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = DMA_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_dma_clear_status +
    • >>   drv_dma_get_int_source +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT0_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT0_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT0_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT1_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT1_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT2_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT2_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT2_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT3_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT3_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT3_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT4_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT4_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT4_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT5_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT5_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT5_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT6_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT6_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT6_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT7_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT7_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT7_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    HardFault_Handler (Thumb, 14 bytes, Stack size 0 bytes, drv_common.o(i.HardFault_Handler)) +

    [Stack]

    • Max Depth = 336
    • Call Chain = HardFault_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    LCDC_IRQn_Handler (Thumb, 118 bytes, Stack size 24 bytes, hal_internal_vsync.o(i.LCDC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = LCDC_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    MEMC_IRQn_Handler (Thumb, 154 bytes, Stack size 8 bytes, drv_memc.o(i.MEMC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = MEMC_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_memc_get_status +
    • >>   drv_memc_clear_status +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    MIPI_TX_IRQn_Handler (Thumb, 70 bytes, Stack size 24 bytes, drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = MIPI_TX_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    SWIRE_IRQn_Handler (Thumb, 38 bytes, Stack size 8 bytes, drv_swire.o(i.SWIRE_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = SWIRE_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    SysTick_Handler (Thumb, 20 bytes, Stack size 0 bytes, drv_common.o(i.SysTick_Handler)) +
    [Address Reference Count : 1]

    • startup_armcm0.o(RESET) +
    +

    TIMER0_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER0_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER0_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER1_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER1_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER2_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER2_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER2_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER3_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER3_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER3_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VIDC_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_vidc.o(i.VIDC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = VIDC_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VPRE1_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_rxbr.o(i.VPRE1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = VPRE1_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VPRE_IRQn_Handler (Thumb, 116 bytes, Stack size 16 bytes, hal_internal_dcs.o(i.VPRE_IRQn_Handler)) +

    [Stack]

    • Max Depth = 544
    • Call Chain = VPRE_IRQn_Handler ⇒ hal_intl_dcs_rx_receive_packet ⇒ hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_crgu_set_dsc_clk +
    • >>   drv_dsc_dec_get_nslc +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   drv_rxbr_get_status0 +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    __0printf (Thumb, 24 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

    [Calls]

    • >>   _printf_core +
    + +

    __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = __2printf +
    +
    [Called By]
    • >>   tau_log_printf +
    + +

    __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    __0vsprintf (Thumb, 30 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) +

    [Calls]

    • >>   _sputc +
    • >>   _printf_core +
    + +

    __1vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    __2vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    __c89vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = vsprintf +
    +
    [Called By]
    • >>   tau_log_printf +
    + +

    __ARM_clz (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz)) +

    [Called By]

    • >>   _double_epilogue +
    + +

    __ARM_common_switch8 (Thumb, 26 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.__ARM_common_switch8)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __ARM_common_switch8 +
    +
    [Called By]
    • >>   drv_dsi_tx_phy_status_stopstate +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   drv_dsi_rx_get_color_bpp +
    + +

    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) + +

    MIPI_RX_IRQn_Handler (Thumb, 354 bytes, Stack size 24 bytes, drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = MIPI_RX_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    UART_IRQn_Handler (Thumb, 364 bytes, Stack size 32 bytes, drv_uart.o(i.UART_IRQn_Handler)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = UART_IRQn_Handler ⇒ drv_uart_abort_send ⇒ drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_uart_config_int +
    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    • >>   drv_uart_int_trans_handle +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) + +

    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) + +

    app_display_init (Thumb, 44 bytes, Stack size 8 bytes, p8p_demo.o(i.app_display_init)) +

    [Stack]

    • Max Depth = 640
    • Call Chain = app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_set_timer +
    • >>   hal_swire_init +
    • >>   hal_pwr_get_vcc_power_ready +
    • >>   app_gpio_init +
    • >>   app_mipi_tx_start +
    • >>   app_mipi_tx_init +
    • >>   app_mipi_rx_init +
    +
    [Called By]
    • >>   app_system_resume +
    • >>   google_p8p_demo +
    + +

    app_gpio_init (Thumb, 22 bytes, Stack size 24 bytes, p8p_demo.o(i.app_gpio_init)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = app_gpio_init ⇒ hal_gpio_config_pad ⇒ hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_config_pad +
    +
    [Called By]
    • >>   app_display_init +
    + +

    board_Init (Thumb, 20 bytes, Stack size 8 bytes, board.o(i.board_Init)) +

    [Stack]

    • Max Depth = 140
    • Call Chain = board_Init ⇒ tau_log_init ⇒ hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   tau_log_init +
    • >>   hal_system_init +
    +
    [Called By]
    • >>   main +
    + +

    ceil (Thumb, 180 bytes, Stack size 24 bytes, ceil.o(i.ceil)) +

    [Stack]

    • Max Depth = 136
    • Call Chain = ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_dadd +
    • >>   __aeabi_drsub +
    • >>   __aeabi_cdrcmple +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   svs_wait_start +
    + +

    dcs_packet_fifo_alloc (Thumb, 80 bytes, Stack size 12 bytes, dcs_packet_fifo.o(i.dcs_packet_fifo_alloc)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = dcs_packet_fifo_alloc +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    dcs_packet_fifo_init (Thumb, 18 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_fifo_init)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    dcs_packet_free_fifo_header (Thumb, 60 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_free_fifo_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    + +

    dcs_packet_get_fifo_header (Thumb, 26 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_get_fifo_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    + +

    delayMs (Thumb, 24 bytes, Stack size 8 bytes, tau_delay.o(i.delayMs)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = delayMs ⇒ delayUs +
    +
    [Calls]
    • >>   delayUs +
    +
    [Called By]
    • >>   app_tx_panel_reset +
    • >>   app_mipi_tx_start +
    • >>   app_init_panel +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    delayUs (Thumb, 40 bytes, Stack size 8 bytes, tau_delay.o(i.delayUs)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = delayUs +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   delayMs +
    • >>   send_panel_init_code +
    • >>   tau_log_push_log +
    + +

    drv_common_system_init (Thumb, 8 bytes, Stack size 8 bytes, drv_common.o(i.drv_common_system_init)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = drv_common_system_init ⇒ drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_se_init +
    +
    [Called By]
    • >>   hal_system_init +
    + +

    drv_crgu_enable_clock (Thumb, 54 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_enable_clock)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init_clk +
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   hal_system_init +
    • >>   hal_timer_init +
    • >>   hal_swire_init +
    • >>   hal_swire_deinit +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_timer_deinit +
    • >>   drv_uart_enable_clk +
    • >>   drv_efuse_enter_inactive +
    + +

    drv_crgu_get_rxbr_clk (Thumb, 70 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_get_rxbr_clk)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_crgu_get_rxbr_clk ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   svs_wait_start +
    + +

    drv_crgu_reset_modules (Thumb, 10 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_reset_modules)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_crgu_set_ahb_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_ahb_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_ahb_clk +
    +
    [Called By]
    • >>   hal_system_updata_sysclk +
    + +

    drv_crgu_set_clock_div (Thumb, 12 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_set_clock_div)) +

    [Called By]

    • >>   hal_swire_init +
    + +

    drv_crgu_set_dpi_clk (Thumb, 54 bytes, Stack size 12 bytes, drv_crgu.o(i.drv_crgu_set_dpi_clk)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_crgu_set_dpi_clk +
    +
    [Called By]
    • >>   hal_dsi_tx_init_dpi_timing +
    + +

    drv_crgu_set_dsc_clk (Thumb, 52 bytes, Stack size 12 bytes, drv_crgu.o(i.drv_crgu_set_dsc_clk)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_crgu_set_dsc_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   VPRE_IRQn_Handler +
    + +

    drv_crgu_set_fb_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_fb_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_fb_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_crgu_set_lcdc_clk (Thumb, 36 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_lcdc_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_lcdc_clk +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    + +

    drv_crgu_set_reset (Thumb, 20 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_set_reset)) +

    [Called By]

    • >>   hal_swire_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   vpre_err_reset +
    • >>   hal_timer_deinit +
    + +

    drv_crgu_set_rxbr_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_rxbr_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_rxbr_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_crgu_set_vidc_clk (Thumb, 36 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_vidc_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_vidc_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_dma_clear_status (Thumb, 20 bytes, Stack size 0 bytes, drv_dma.o(i.drv_dma_clear_status)) +

    [Called By]

    • >>   DMA_IRQn_Handler +
    + +

    drv_dsc_dec_disable (Thumb, 20 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_disable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_dsc_dec_enable (Thumb, 44 bytes, Stack size 8 bytes, drv_dsc_dec.o(i.drv_dsc_dec_enable)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_dsc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_intl_dcs_rx_receive_pps +
    + +

    drv_dsc_dec_get_nslc (Thumb, 22 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_get_nslc)) +

    [Called By]

    • >>   VPRE_IRQn_Handler +
    + +

    drv_dsc_dec_set_irqen (Thumb, 24 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_set_irqen)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init +
    + +

    drv_dsi_rx_calc_ipi_tx_delay (Thumb, 252 bytes, Stack size 56 bytes, drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_fadd +
    • >>   __aeabi_f2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_fsub +
    • >>   __aeabi_cfrcmple +
    • >>   drv_dsi_rx_get_color_pcc +
    • >>   drv_dsi_rx_get_color_bpp +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    + +

    drv_dsi_rx_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_dsi_rx.o(i.drv_dsi_rx_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_dsi_rx_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_dsi_rx_get_compression_en (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en)) +

    [Called By]

    • >>   hal_intl_dcs_rx_receive_pps +
    + +

    drv_dsi_rx_get_ddi_crc_en (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en)) +

    [Called By]

    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_dsi_rx_get_max_ret_size (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_get_max_ret_size +
    + +

    drv_dsi_rx_power_up (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_power_up)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_start +
    + +

    drv_dsi_rx_set_check_crc (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ctrl_cfg (Thumb, 32 bytes, Stack size 12 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_rx_set_ctrl_cfg +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ddi_cfg (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ddi_crc_en (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_inten (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_inten)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ipi_cfg (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    + +

    drv_dsi_rx_set_ipi_ycbcr_frmt (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_lane_swap (Thumb, 16 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_resp_cnt (Thumb, 32 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_tear_resp_en (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_up_phy (Thumb, 224 bytes, Stack size 32 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_dsi_rx_set_up_phy ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_phy_test_lock +
    • >>   drv_phy_test_clear +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_shut_down (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_shut_down)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_stop +
    + +

    drv_dsi_tx_command_header (Thumb, 18 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_header)) +

    [Called By]

    • >>   hal_dsi_tx_send_cmd +
    + +

    drv_dsi_tx_command_mode_cfg (Thumb, 82 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_command_put_payload (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_dsi_tx_config_eotp (Thumb, 26 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_config_eotp)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_config_int (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_config_int)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_lpcmd_time (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_mode (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_polarity (Thumb, 32 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_edpi_cmd_size (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size)) +

    [Called By]

    • >>   hal_dsi_tx_init_timing +
    + +

    drv_dsi_tx_get_cmd_status (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status)) +

    [Called By]

    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    + +

    drv_dsi_tx_mode (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_phy_clock_lane_auto_lp (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_phy_clock_lane_req_hs (Thumb, 26 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   rxbr_irq1_callback +
    + +

    drv_dsi_tx_phy_lane_mode (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_phy_status_ready (Thumb, 100 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init +
    + +

    drv_dsi_tx_phy_status_stopstate (Thumb, 62 bytes, Stack size 4 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   hal_dsi_tx_send_cmd +
    + +

    drv_dsi_tx_phy_test_setup (Thumb, 314 bytes, Stack size 32 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_dsi_tx_phy_test_setup ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_tx_phy_test_write_code +
    • >>   drv_tx_phy_test_exit +
    • >>   drv_tx_phy_test_enter +
    • >>   drv_phy_test_clear +
    +
    [Called By]
    • >>   hal_dsi_tx_init_phy_cfg +
    + +

    drv_dsi_tx_phy_time_cfg (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_phy_cfg +
    + +

    drv_dsi_tx_powerup (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_powerup)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_init +
    + +

    drv_dsi_tx_response_mode (Thumb, 30 bytes, Stack size 12 bytes, drv_dsi_tx.o(i.drv_dsi_tx_response_mode)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_tx_response_mode +
    +
    [Called By]
    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_bta_ack (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_esc_div (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_int (Thumb, 58 bytes, Stack size 8 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_dsi_tx_set_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_dsi_tx_set_time_out_div (Thumb, 18 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_video_chunk (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk)) +

    [Called By]

    • >>   hal_dsi_tx_init_vid_timing +
    + +

    drv_dsi_tx_set_video_timing (Thumb, 30 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing)) +

    [Called By]

    • >>   hal_dsi_tx_init_vid_timing +
    + +

    drv_dsi_tx_shutdown (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_shutdown)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_timeout_cfg (Thumb, 38 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_video_mode_cfg (Thumb, 226 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_efuse_enter_inactive (Thumb, 54 bytes, Stack size 8 bytes, drv_efuse.o(i.drv_efuse_enter_inactive)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_efuse_enter_inactive +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_efuse_int_enable +
    +
    [Called By]
    • >>   drv_se_init +
    + +

    drv_efuse_int_enable (Thumb, 12 bytes, Stack size 0 bytes, drv_efuse.o(i.drv_efuse_int_enable)) +

    [Called By]

    • >>   drv_efuse_enter_inactive +
    + +

    drv_efuse_read (Thumb, 58 bytes, Stack size 16 bytes, drv_efuse.o(i.drv_efuse_read)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_efuse_read +
    +
    [Calls]
    • >>   drv_pwr_efuse_pd +
    • >>   drv_efuse_read_req +
    +
    [Called By]
    • >>   drv_se_init +
    + +

    drv_efuse_read_req (Thumb, 24 bytes, Stack size 0 bytes, drv_efuse.o(i.drv_efuse_read_req)) +

    [Called By]

    • >>   drv_efuse_read +
    + +

    drv_gpio_register_ap_reset_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_register_ap_reset_callback)) +

    [Called By]

    • >>   hal_gpio_set_ap_reset_int +
    + +

    drv_gpio_register_callback (Thumb, 14 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_register_callback)) +

    [Called By]

    • >>   hal_gpio_reg_eint_cb +
    + +

    drv_gpio_set_int (Thumb, 62 bytes, Stack size 16 bytes, drv_gpio.o(i.drv_gpio_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_gpio_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_gpio_ctrl_eint +
    + +

    drv_gpio_set_ioe (Thumb, 26 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_set_ioe)) +

    [Called By]

    • >>   hal_gpio_init_output +
    • >>   hal_gpio_init_input +
    • >>   hal_gpio_init_eint +
    + +

    drv_gpio_set_mode (Thumb, 16 bytes, Stack size 8 bytes, drv_gpio.o(i.drv_gpio_set_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_gpio_set_mode +
    +
    [Called By]
    • >>   hal_gpio_set_mode +
    + +

    drv_lcdc_bcsa_config (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_bcsa_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_cfg_int_frame (Thumb, 34 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_cfg_int_frame)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_lcdc_cmd_start (Thumb, 46 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_cmd_start)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_lcdc +
    +
    [Called By]
    • >>   hal_lcdc_start +
    • >>   rxbr_irq1_callback +
    + +

    drv_lcdc_config_acc_command_mode (Thumb, 14 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_acc_command_mode)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_config_int (Thumb, 50 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_int)) +

    [Called By]

    • >>   hal_lcdc_init_cfg +
    + +

    drv_lcdc_config_int_single (Thumb, 34 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_config_int_single)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_lcdc_config_int_single +
    +
    [Called By]
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_vsync_func_update +
    • >>   hal_nonshadow_func_update +
    + +

    drv_lcdc_config_overwrite_rgb (Thumb, 18 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_set_overwrite_rgb +
    + +

    drv_lcdc_config_src_parameter (Thumb, 72 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_src_parameter)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_crop_hact (Thumb, 10 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_crop_hact)) +

    [Called By]

    • >>   hal_lcdc_displayproc_config +
    + +

    drv_lcdc_ctrl_flow (Thumb, 50 bytes, Stack size 16 bytes, drv_lcdc.o(i.drv_lcdc_ctrl_flow)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_lcdc_ctrl_flow +
    +
    [Calls]
    • >>   drv_lcdc_function_enable +
    +
    [Called By]
    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_dith_config (Thumb, 40 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_dith_config)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_lcdc_dith_config +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_edge_dect_config (Thumb, 50 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_edge_dect_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_edge_enh_config (Thumb, 86 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_edge_enh_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_enable_shadow_reg (Thumb, 32 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_enable_shadow_reg)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_lcdc_endianness_config (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_endianness_config)) +

    [Called By]

    • >>   hal_lcdc_displayproc_config +
    + +

    drv_lcdc_fc_config (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_fc_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_fldc_config (Thumb, 32 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_fldc_config)) +

    [Called By]

    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_function_disable (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_function_disable)) +

    [Called By]

    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_lcdc_postproc_config +
    • >>   vidc_callback +
    + +

    drv_lcdc_function_enable (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_function_enable)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    • >>   drv_lcdc_ctrl_flow +
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_lcdc_postproc_config +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_lcdc_set_int (Thumb, 54 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_set_int)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = drv_lcdc_set_int ⇒ drv_lcdc_clear_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_lcdc_clear_int +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_lcdc_set_prefetch (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_set_prefetch)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_set_tear_line (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_set_tear_line)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_stop_display (Thumb, 12 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_stop_display)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_lcdc_vid_hw_start (Thumb, 56 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_vid_hw_start)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_lcdc_vid_hw_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_lcdc +
    +
    [Called By]
    • >>   hal_lcdc_start +
    + +

    drv_lcdc_vintp_mode_config (Thumb, 18 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_vintp_mode_config)) +

    [Called By]

    • >>   hal_lcdc_postproc_config +
    + +

    drv_memc_clear_status (Thumb, 14 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_clear_status)) +

    [Called By]

    • >>   MEMC_IRQn_Handler +
    + +

    drv_memc_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_memc_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_memc_gen_a_tear_signal (Thumb, 12 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_gen_a_tear_signal)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    + +

    drv_memc_get_status (Thumb, 20 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_get_status)) +

    [Called By]

    • >>   MEMC_IRQn_Handler +
    + +

    drv_memc_get_tear_mode (Thumb, 10 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_get_tear_mode)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    + +

    drv_memc_rate_transfer_sel (Thumb, 22 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_rate_transfer_sel)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_memc +
    +
    [Called By]
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_sel_vsync (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_sel_vsync)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_active_height (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_active_height)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_circ_mode_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_circ_mode_enable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_data_mode (Thumb, 14 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_data_mode)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_double_buffer (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_double_buffer)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_frame_drop_select (Thumb, 24 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_frame_drop_select)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_memc_set_fs_en_conditions (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_fs_en_conditions)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_lcdc_st_conditions (Thumb, 20 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_lcdc_st_conditions)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_ltpo_mode (Thumb, 28 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_set_ltpo_mode)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_memc_set_ltpo_mode ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_memc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_ltpo_pu_thres (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_ltpo_pu_thres)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_tear_mode (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_tear_mode)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    + +

    drv_memc_set_tear_waveform (Thumb, 36 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_set_tear_waveform)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_memc_set_tear_waveform +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_vidc_sync_cnt (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_vidc_sync_cnt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_phy_test_clear (Thumb, 16 bytes, Stack size 0 bytes, drv_phy_common.o(i.drv_phy_test_clear)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    • >>   drv_dsi_rx_set_up_phy +
    + +

    drv_phy_test_lock (Thumb, 24 bytes, Stack size 0 bytes, drv_phy_common.o(i.drv_phy_test_lock)) +

    [Called By]

    • >>   drv_dsi_rx_set_up_phy +
    + +

    drv_pwr_efuse_pd (Thumb, 36 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_efuse_pd)) +

    [Called By]

    • >>   drv_efuse_read +
    + +

    drv_pwr_enter_deep_sleep_mode (Thumb, 60 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_enter_deep_sleep_mode +
    +
    [Called By]
    • >>   hal_pwr_enter_deep_sleep_mode +
    + +

    drv_pwr_enter_sleep_mode_ex (Thumb, 34 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex)) +

    [Called By]

    • >>   hal_pwr_enter_normal_sleep_mode +
    + +

    drv_pwr_enter_stop_sleep_mode (Thumb, 132 bytes, Stack size 24 bytes, drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = drv_pwr_enter_stop_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_enter_stop_sleep_mode +
    + +

    drv_pwr_exit_sleep_mode (Thumb, 32 bytes, Stack size 4 bytes, drv_pwr.o(i.drv_pwr_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_pwr_exit_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_exit_sleep_mode +
    + +

    drv_pwr_get_power_ready_st (Thumb, 10 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_get_power_ready_st)) +

    [Called By]

    • >>   hal_pwr_get_vcc_power_ready +
    + +

    drv_pwr_set_breath_screen_power_sel (Thumb, 34 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_set_breath_screen_power_sel +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_set_sleep_mode_power +
    + +

    drv_pwr_set_digit_power_sel (Thumb, 34 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_set_digit_power_sel)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_set_digit_power_sel +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_set_main_power +
    + +

    drv_pwr_set_pll_clk (Thumb, 30 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_set_pll_clk)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   hal_system_init +
    + +

    drv_pwr_set_wakeup_type (Thumb, 40 bytes, Stack size 4 bytes, drv_pwr.o(i.drv_pwr_set_wakeup_type)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_pwr_set_wakeup_type +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_enter_deep_sleep_mode +
    + +

    drv_pwr_write_lock (Thumb, 18 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_write_lock)) +

    [Called By]

    • >>   drv_pwr_set_wakeup_type +
    • >>   drv_pwr_set_digit_power_sel +
    • >>   drv_pwr_set_breath_screen_power_sel +
    • >>   drv_pwr_exit_sleep_mode +
    • >>   drv_pwr_enter_stop_sleep_mode +
    + +

    drv_rxbr_clear_pkt_buffer (Thumb, 12 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer)) +

    [Called By]

    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   check_pkt_buf_rev +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_clear_status0 (Thumb, 6 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_clear_status0)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   svs_wait_start +
    • >>   svs_direct_mode_setting +
    • >>   VPRE_IRQn_Handler +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   check_pkt_buf_rev +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_enable_irq (Thumb, 90 bytes, Stack size 8 bytes, drv_rxbr.o(i.drv_rxbr_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_rxbr_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    • >>   __NVIC_EnableIRQ +
    • >>   __NVIC_DisableIRQ +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_rxbr_frame_drop_cfg (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_frame_drop_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   svs_wait_fr_stab +
    + +

    drv_rxbr_hline_rcv1_cfg (Thumb, 14 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg)) +

    [Called By]

    • >>   svs_wait_start +
    • >>   svs_direct_mode_setting +
    + +

    drv_rxbr_hline_rcv_cfg (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_register_irq1_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_register_irq1_callback)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    drv_rxbr_set_ack_pkt_header (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    + +

    drv_rxbr_set_color_format (Thumb, 24 bytes, Stack size 8 bytes, drv_rxbr.o(i.drv_rxbr_set_color_format)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_rxbr_set_color_format ⇒ drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_rxbr +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_filter_regs (Thumb, 32 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_filter_regs)) +

    [Called By]

    • >>   hal_intl_dcs_set_auto_hw_filter +
    + +

    drv_rxbr_set_inten (Thumb, 22 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_inten)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   svs_wait_start +
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_svs_deinit_rx +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_set_ltpo_drop_th (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_cfg (Thumb, 56 bytes, Stack size 20 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_cfg)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_rxbr_set_usr_cfg +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_col (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_col)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_row (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_row)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_se_init (Thumb, 106 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_init)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_efuse_read +
    • >>   drv_efuse_enter_inactive +
    +
    [Called By]
    • >>   drv_common_system_init +
    + +

    drv_se_set_dsc (Thumb, 162 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_dsc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_dsc_dec_enable +
    + +

    drv_se_set_lcdc (Thumb, 88 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_lcdc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_lcdc_vid_hw_start +
    • >>   drv_lcdc_cmd_start +
    + +

    drv_se_set_memc (Thumb, 96 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_memc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_memc_set_ltpo_mode +
    • >>   drv_memc_rate_transfer_sel +
    + +

    drv_se_set_rxbr (Thumb, 158 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_rxbr)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_rxbr_set_color_format +
    + +

    drv_se_set_vidc (Thumb, 122 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_vidc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_vidc_set_src_parameter +
    + +

    drv_se_start_rx (Thumb, 16 bytes, Stack size 0 bytes, drv_se.o(i.drv_se_start_rx)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init +
    + +

    drv_swire_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_enable)) +

    [Called By]

    • >>   hal_swire_init +
    • >>   hal_swire_deinit +
    + +

    drv_swire_get_pulse_count (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_get_pulse_count)) +

    [Called By]

    • >>   hal_swire_enable +
    + +

    drv_swire_register_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_register_callback)) +

    [Called By]

    • >>   hal_swire_deinit +
    + +

    drv_swire_set_bit_time (Thumb, 18 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_bit_time)) +

    [Called By]

    • >>   hal_swire_init +
    + +

    drv_swire_set_int (Thumb, 64 bytes, Stack size 16 bytes, drv_swire.o(i.drv_swire_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_swire_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_swire_enable +
    • >>   hal_swire_deinit +
    + +

    drv_swire_set_power_down (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_power_down)) +

    [Called By]

    • >>   hal_swire_init +
    • >>   hal_swire_enable +
    + +

    drv_swire_set_pulse_count (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_pulse_count)) +

    [Called By]

    • >>   hal_swire_set_pulse +
    + +

    drv_swire_set_trig_mode (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_trig_mode)) +

    [Called By]

    • >>   hal_swire_set_timer +
    • >>   hal_swire_set_pulse +
    • >>   hal_swire_enable +
    + +

    drv_sys_cfg_clear_all_int (Thumb, 8 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int)) +

    [Called By]

    • >>   hal_system_init +
    + +

    drv_sys_cfg_clear_pending (Thumb, 32 bytes, Stack size 8 bytes, drv_sys_cfg.o(i.drv_sys_cfg_clear_pending)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   drv_dsi_tx_set_int +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   SWIRE_IRQn_Handler +
    • >>   AP_NRESET_IRQn_Handler +
    • >>   drv_gpio_handle_int +
    • >>   VPRE_IRQn_Handler +
    • >>   LCDC_IRQn_Handler +
    • >>   hal_gpio_init_eint +
    • >>   UART_IRQn_Handler +
    • >>   DMA_IRQn_Handler +
    • >>   VIDC_IRQn_Handler +
    • >>   VPRE1_IRQn_Handler +
    • >>   MEMC_IRQn_Handler +
    • >>   drv_lcdc_clear_int +
    • >>   MIPI_TX_IRQn_Handler +
    • >>   MIPI_RX_IRQn_Handler +
    • >>   drv_timer_clear_status_flags +
    + +

    drv_sys_cfg_sel_ap_rst_trig (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig)) +

    [Called By]

    • >>   hal_gpio_set_ap_reset_int +
    + +

    drv_sys_cfg_sel_gpio_group (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group)) +

    [Called By]

    • >>   hal_gpio_init_eint +
    + +

    drv_sys_cfg_sel_int_trig (Thumb, 32 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig)) +

    [Called By]

    • >>   hal_gpio_init_eint +
    + +

    drv_sys_cfg_sel_swire_timer (Thumb, 18 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer)) +

    [Called By]

    • >>   hal_swire_set_timer +
    + +

    drv_sys_cfg_set_int (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_set_int)) +

    [Called By]

    • >>   drv_lcdc_set_int +
    • >>   drv_dsi_tx_set_int +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   hal_pwr_enter_stop_sleep_mode +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   drv_timer_set_int +
    • >>   drv_swire_set_int +
    • >>   drv_gpio_set_int +
    • >>   drv_uart_enable_int +
    + +

    drv_timer_enable (Thumb, 32 bytes, Stack size 4 bytes, drv_timer.o(i.drv_timer_enable)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_timer_enable +
    +
    [Calls]
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_swire_enable +
    • >>   hal_timer_deinit +
    + +

    drv_timer_get_instance (Thumb, 10 bytes, Stack size 0 bytes, drv_timer.o(i.drv_timer_get_instance)) +

    [Called By]

    • >>   drv_timer_set_prescaler +
    • >>   drv_timer_set_compare_val +
    • >>   drv_timer_enable +
    • >>   drv_timer_clear_status_flags +
    + +

    drv_timer_set_compare_val (Thumb, 50 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_set_compare_val)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_set_int (Thumb, 68 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_timer_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_timer_deinit +
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_set_prescaler (Thumb, 36 bytes, Stack size 12 bytes, drv_timer.o(i.drv_timer_set_prescaler)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_timer_set_prescaler +
    +
    [Calls]
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_timer_init +
    + +

    drv_timer_set_repeat (Thumb, 12 bytes, Stack size 0 bytes, drv_timer.o(i.drv_timer_set_repeat)) +

    [Called By]

    • >>   hal_timer_set_repeat +
    • >>   hal_timer_deinit +
    + +

    drv_tx_phy_test_enter (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_enter)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_tx_phy_test_exit (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_exit)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_tx_phy_test_write_code (Thumb, 34 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_write_code)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_uart_abort_recv (Thumb, 46 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_abort_recv)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_uart_abort_recv ⇒ drv_uart_reset_rx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_reset_rx_fifo +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_config_int +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_abort_send (Thumb, 46 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_abort_send)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_uart_abort_send ⇒ drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_reset_tx_fifo +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_config_int +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_config_int (Thumb, 20 bytes, Stack size 0 bytes, drv_uart.o(i.drv_uart_config_int)) +

    [Called By]

    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_enable_int (Thumb, 84 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_enable_int)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_enable_int ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_get_instance (Thumb, 36 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_get_instance)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_trans_create_handle +
    • >>   drv_uart_init +
    • >>   drv_uart_reset_tx_fifo +
    • >>   drv_uart_reset_rx_fifo +
    • >>   drv_uart_enable_int +
    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    + +

    drv_uart_init (Thumb, 206 bytes, Stack size 16 bytes, drv_uart.o(i.drv_uart_init)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_uart_set_baud_rate +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_enable_int +
    • >>   drv_uart_enable_clk +
    +
    [Called By]
    • >>   hal_uart_init +
    + +

    drv_uart_reset_rx_fifo (Thumb, 28 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_reset_rx_fifo)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_uart_reset_rx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_abort_recv +
    + +

    drv_uart_reset_tx_fifo (Thumb, 28 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_reset_tx_fifo)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_abort_send +
    + +

    drv_uart_send_blocking (Thumb, 26 bytes, Stack size 0 bytes, drv_uart.o(i.drv_uart_send_blocking)) +

    [Called By]

    • >>   hal_uart_send_blocking +
    + +

    drv_uart_set_baud_rate (Thumb, 84 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_set_baud_rate)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_trans_create_handle (Thumb, 72 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_trans_create_handle)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_trans_create_handle ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   hal_uart_init +
    + +

    drv_vidc_clear_irq (Thumb, 10 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_clear_irq)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_enable (Thumb, 26 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_enable)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   rxbr_irq1_callback +
    + +

    drv_vidc_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_vidc.o(i.drv_vidc_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_vidc_get_int_source (Thumb, 40 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_get_int_source)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_get_irq_status (Thumb, 20 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_get_irq_status)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_init_module_enable (Thumb, 36 bytes, Stack size 12 bytes, drv_vidc.o(i.drv_vidc_init_module_enable)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_vidc_init_module_enable +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_register_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_register_callback)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    drv_vidc_reset (Thumb, 8 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_reset)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   vpre_err_reset +
    + +

    drv_vidc_set_circ_mode_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_circ_mode_enable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_dither_config (Thumb, 50 bytes, Stack size 8 bytes, drv_vidc.o(i.drv_vidc_set_dither_config)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_vidc_set_dither_config +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_dst_parameter (Thumb, 86 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_dst_parameter)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_set_dst_parameter +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_honly_hcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hinitb (Thumb, 38 bytes, Stack size 12 bytes, drv_vidc.o(i.drv_vidc_set_honly_hinitb)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_vidc_set_honly_hinitb +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hinitr (Thumb, 42 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_honly_hinitr)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_set_honly_hinitr +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_irqen (Thumb, 22 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_irqen)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   vidc_callback +
    + +

    drv_vidc_set_mirror (Thumb, 16 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_mirror)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_pentile_swap (Thumb, 20 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_pentile_swap)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_pu_ctrl (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_pu_ctrl)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_rotation (Thumb, 18 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_rotation)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_hcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_hcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_hcoef1 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_hcoef1)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_step (Thumb, 14 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_step)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_vcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_vcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_vcoef1 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_vcoef1)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_src_parameter (Thumb, 28 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_src_parameter)) +

    [Stack]

    • Max Depth = 368
    • Call Chain = drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_vidc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_vintp_config (Thumb, 52 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_vintp_config)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    fputc (Thumb, 42 bytes, Stack size 24 bytes, tau_log.o(i.fputc)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = fputc ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_uart_send_blocking +
    • >>   tau_log_push_log +
    +
    [Address Reference Count : 1]
    • printfa.o(i.__0printf) +
    +

    google_p8p_demo (Thumb, 48 bytes, Stack size 0 bytes, p8p_demo.o(i.google_p8p_demo)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_pwr_set_main_power +
    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    • >>   app_display_init +
    • >>   app_system_process +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   main +
    + +

    hal_dsi_rx_ctrl_create_handle (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_create_handle +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_dcs_async_handler (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_dcs_async_handler +
    +
    [Calls]
    • >>   dcs_packet_get_fifo_header +
    • >>   dcs_packet_free_fifo_header +
    +
    [Called By]
    • >>   google_p8p_demo +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    hal_dsi_rx_ctrl_deinit (Thumb, 132 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_deinit ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   hal_internal_vsync_get_rx_state +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   drv_dsc_dec_disable +
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_reset_modules +
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_rx_ctrl_get_max_ret_size (Thumb, 28 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_get_max_ret_size +
    +
    [Calls]
    • >>   drv_dsi_rx_get_max_ret_size +
    +
    [Called By]
    • >>   ap_dcs_read +
    + +

    hal_dsi_rx_ctrl_init (Thumb, 158 bytes, Stack size 16 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init)) +

    [Stack]

    • Max Depth = 552
    • Call Chain = hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_init_rx +
    • >>   drv_se_start_rx +
    • >>   drv_dsc_dec_set_irqen +
    • >>   drv_dsc_dec_enable +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_pre_init_pps (Thumb, 50 bytes, Stack size 12 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = hal_dsi_rx_ctrl_pre_init_pps +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   app_mipi_rx_init +
    • >>   ap_dcs_set_display_on +
    + +

    hal_dsi_rx_ctrl_send_ack_cmd (Thumb, 210 bytes, Stack size 48 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd)) +

    [Stack]

    • Max Depth = 384
    • Call Chain = hal_dsi_rx_ctrl_send_ack_cmd ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_rxbr_set_ack_pkt_header +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   ap_dcs_read +
    + +

    hal_dsi_rx_ctrl_start (Thumb, 42 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_start ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   drv_vidc_enable +
    • >>   drv_dsi_rx_power_up +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_stop (Thumb, 42 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_stop ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   drv_vidc_enable +
    • >>   drv_dsi_rx_shut_down +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_rx_ctrl_toggle_resolution (Thumb, 28 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution)) +

    [Stack]

    • Max Depth = 624
    • Call Chain = hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_sync_input_resolution_change +
    +
    [Called By]
    • >>   pps_update_handle +
    • >>   app_mipi_tx_start +
    • >>   ap_dcs_set_display_on +
    + +

    hal_dsi_tx_ctrl_create_handle (Thumb, 48 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_create_handle +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_deinit (Thumb, 102 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_dsi_tx_ctrl_deinit ⇒ hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_sync_register_lcdc_cb +
    • >>   drv_crgu_reset_modules +
    • >>   drv_crgu_enable_clock +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_tx_ctrl_gen_a_tear_signal (Thumb, 34 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_gen_a_tear_signal +
    +
    [Calls]
    • >>   drv_memc_get_tear_mode +
    • >>   drv_memc_gen_a_tear_signal +
    • >>   drv_memc_set_tear_mode +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    + +

    hal_dsi_tx_ctrl_init (Thumb, 110 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init)) +

    [Stack]

    • Max Depth = 424
    • Call Chain = hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_vsync_init_tx +
    • >>   hal_internal_sync_register_lcdc_cb +
    • >>   drv_dsi_tx_powerup +
    • >>   drv_dsi_tx_phy_status_ready +
    • >>   hal_lcdc_init_clk +
    • >>   hal_lcdc_init_cfg +
    • >>   hal_dsi_tx_init_timing +
    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_init_clk +
    +
    [Called By]
    • >>   hal_tx_frame_rate_adjust +
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_set_overwrite_rgb (Thumb, 8 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_set_overwrite_rgb +
    +
    [Calls]
    • >>   drv_lcdc_config_overwrite_rgb +
    +
    [Called By]
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_set_tear_mode (Thumb, 10 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tear_mode +
    +
    [Called By]
    • >>   pps_update_handle +
    • >>   app_mipi_tx_start +
    • >>   ap_dcs_set_frame_change +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_dsi_tx_ctrl_start (Thumb, 116 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = hal_dsi_tx_ctrl_start ⇒ hal_lcdc_start ⇒ drv_lcdc_vid_hw_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   drv_lcdc_function_enable +
    • >>   drv_lcdc_enable_shadow_reg +
    • >>   drv_lcdc_cfg_int_frame +
    • >>   drv_dsi_tx_shutdown +
    • >>   drv_dsi_tx_powerup +
    • >>   drv_dsi_tx_mode +
    • >>   drv_dsi_tx_config_eotp +
    • >>   drv_dsi_tx_command_mode_cfg +
    • >>   hal_lcdc_start +
    • >>   hal_intl_fb_get_memc_flow_mode +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    + +

    hal_dsi_tx_ctrl_stop (Thumb, 52 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_dsi_tx_ctrl_stop ⇒ hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   drv_lcdc_stop_display +
    • >>   drv_lcdc_set_int +
    • >>   drv_dsi_tx_shutdown +
    • >>   drv_dsi_tx_set_int +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_tx_ctrl_write_array_cmd (Thumb, 238 bytes, Stack size 48 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd)) +

    [Stack]

    • Max Depth = 84
    • Call Chain = hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   send_panel_init_code +
    + +

    hal_dsi_tx_ctrl_write_cmd (Thumb, 202 bytes, Stack size 48 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd)) +

    [Stack]

    • Max Depth = 84
    • Call Chain = hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   ap_set_FPS_53 +
    • >>   ap_dcs_set_enter_sleep_mode +
    • >>   ap_dcs_set_display_on +
    • >>   ap_dcs_set_backlight +
    + +

    hal_gpio_config_pad (Thumb, 58 bytes, Stack size 16 bytes, hal_gpio.o(i.hal_gpio_config_pad)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_gpio_config_pad ⇒ hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_init_output +
    • >>   hal_gpio_set_mode +
    • >>   hal_gpio_init_input +
    +
    [Called By]
    • >>   app_gpio_init +
    + +

    hal_gpio_ctrl_eint (Thumb, 18 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_ctrl_eint)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_ctrl_eint ⇒ drv_gpio_set_int +
    +
    [Calls]
    • >>   drv_gpio_set_int +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_init_eint (Thumb, 58 bytes, Stack size 24 bytes, hal_gpio.o(i.hal_gpio_init_eint)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_gpio_init_eint ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_sys_cfg_sel_int_trig +
    • >>   drv_sys_cfg_sel_gpio_group +
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_init_input (Thumb, 22 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_init_input)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_init_input ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   hal_gpio_config_pad +
    + +

    hal_gpio_init_output (Thumb, 28 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_init_output)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    • >>   drv_gpio_set_output_data +
    +
    [Called By]
    • >>   hal_gpio_config_pad +
    • >>   app_system_suspend +
    • >>   app_init_panel +
    + +

    hal_gpio_reg_eint_cb (Thumb, 22 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_reg_eint_cb)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_gpio_reg_eint_cb +
    +
    [Calls]
    • >>   drv_gpio_register_callback +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_set_ap_reset_int (Thumb, 76 bytes, Stack size 16 bytes, hal_gpio.o(i.hal_gpio_set_ap_reset_int)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_set_ap_reset_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_sel_ap_rst_trig +
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_gpio_register_ap_reset_callback +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    • >>   app_system_suspend +
    • >>   ap_rstn_pull_high_cb +
    • >>   ap_rstn_pull_down_cb +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_gpio_set_mode (Thumb, 94 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_set_mode)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_mode +
    +
    [Called By]
    • >>   hal_system_init +
    • >>   hal_swire_init +
    • >>   hal_gpio_init_output +
    • >>   hal_gpio_config_pad +
    • >>   hal_gpio_init_input +
    • >>   hal_gpio_init_eint +
    + +

    hal_gpio_set_output_data (Thumb, 8 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_set_output_data)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_gpio_set_output_data +
    +
    [Calls]
    • >>   drv_gpio_set_output_data +
    +
    [Called By]
    • >>   app_tx_panel_reset +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_internal_sync_get_hight_performan_mode (Thumb, 10 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode)) +

    [Called By]

    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_intl_fb_check_bandwidth +
    + +

    hal_internal_sync_input_resolution_change (Thumb, 330 bytes, Stack size 64 bytes, hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change)) +

    [Stack]

    • Max Depth = 616
    • Call Chain = hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_get_sync_line +
    • >>   drv_vidc_enable +
    • >>   drv_memc_set_tear_mode +
    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   delayUs +
    • >>   tau_log_printf +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   drv_vidc_reset +
    • >>   drv_rxbr_clear_status0 +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    + +

    hal_internal_sync_register_lcdc_cb (Thumb, 8 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_deinit +
    + +

    hal_internal_vsync_deinit (Thumb, 22 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.hal_internal_vsync_deinit)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_vsync_set_rx_state +
    + +

    hal_internal_vsync_get_rx_state (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    hal_internal_vsync_get_sync_line (Thumb, 16 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_lcdc_timinggen_config +
    • >>   hal_internal_sync_input_resolution_change +
    + +

    hal_internal_vsync_get_tx_state (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state)) +

    [Called By]

    • >>   hal_tx_frame_rate_adjust +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   svs_wait_start +
    + +

    hal_internal_vsync_init_rx (Thumb, 190 bytes, Stack size 56 bytes, hal_internal_vsync.o(i.hal_internal_vsync_init_rx)) +

    [Stack]

    • Max Depth = 216
    • Call Chain = hal_internal_vsync_init_rx ⇒ hal_intl_svs_init_rx ⇒ hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   hal_intl_dcs_init_sw_fltr +
    • >>   drv_vidc_register_callback +
    • >>   drv_rxbr_register_irq1_callback +
    • >>   dcs_packet_fifo_init +
    • >>   check_mipi_rx_tx_video_info +
    • >>   hal_intl_fb_get_user_flow +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_internal_vsync_init_tx (Thumb, 194 bytes, Stack size 80 bytes, hal_internal_vsync.o(i.hal_internal_vsync_init_tx)) +

    [Stack]

    • Max Depth = 220
    • Call Chain = hal_internal_vsync_init_tx ⇒ hal_intl_fb_cal_fb_info ⇒ hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_cal_fb_info +
    • >>   check_mipi_rx_tx_video_info +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_internal_vsync_set_rx_state (Thumb, 28 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_intl_svs_deinit_rx +
    • >>   hal_internal_vsync_deinit +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    hal_internal_vsync_set_tear_mode (Thumb, 262 bytes, Stack size 24 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode)) +

    [Stack]

    • Max Depth = 384
    • Call Chain = hal_internal_vsync_set_tear_mode ⇒ drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_get_sync_line +
    • >>   drv_lcdc_function_enable +
    • >>   drv_lcdc_function_disable +
    • >>   drv_lcdc_config_int_single +
    • >>   drv_memc_set_tear_mode +
    • >>   drv_memc_rate_transfer_sel +
    • >>   drv_memc_set_frame_drop_select +
    • >>   drv_lcdc_set_tear_line +
    • >>   drv_lcdc_config_acc_command_mode +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    + +

    hal_internal_vsync_set_tx_state (Thumb, 92 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   drv_lcdc_function_disable +
    • >>   hal_intl_svs_deinit_tx +
    • >>   hal_internal_vsync_deinit +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Called By]
    • >>   hal_tx_frame_rate_adjust +
    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_deinit +
    + +

    hal_intl_dcs_init_sw_fltr (Thumb, 90 bytes, Stack size 28 bytes, hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = hal_intl_dcs_init_sw_fltr +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    + +

    hal_intl_dcs_set_auto_hw_filter (Thumb, 130 bytes, Stack size 48 bytes, hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter)) +

    [Stack]

    • Max Depth = 48
    • Call Chain = hal_intl_dcs_set_auto_hw_filter +
    +
    [Calls]
    • >>   drv_rxbr_set_filter_regs +
    • >>   __aeabi_memset +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    hal_intl_fb_cal_fb_info (Thumb, 738 bytes, Stack size 80 bytes, hal_internal_fb.o(i.hal_intl_fb_cal_fb_info)) +

    [Stack]

    • Max Depth = 140
    • Call Chain = hal_intl_fb_cal_fb_info ⇒ hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_flow_control_adapter +
    • >>   hal_intl_fb_edge_resize +
    • >>   hal_intl_fb_check_bandwidth +
    • >>   ha_intl_fb_check_pu_size +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_memcpy4 +
    • >>   __aeabi_memcpy +
    +
    [Called By]
    • >>   hal_internal_vsync_init_tx +
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_internal_sync_input_resolution_change +
    + +

    hal_intl_fb_get_memc_flow_mode (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    • >>   hal_lcdc_start +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    hal_intl_fb_get_rx_fb_info (Thumb, 12 bytes, Stack size 8 bytes, hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_fb_get_rx_fb_info +
    +
    [Calls]
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   svs_direct_mode_setting +
    + +

    hal_intl_fb_get_tx_fb_info (Thumb, 12 bytes, Stack size 8 bytes, hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_fb_get_tx_fb_info +
    +
    [Calls]
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    • >>   hal_lcdc_init_cfg +
    + +

    hal_intl_fb_get_user_flow (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_fb.o(i.hal_intl_fb_get_user_flow)) +

    [Called By]

    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_lcdc_start +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_intl_svs_init_rx +
    • >>   rxbr_irq1_callback +
    + +

    hal_intl_svs_deinit_rx (Thumb, 32 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_deinit_rx)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   drv_rxbr_set_inten +
    +
    [Called By]
    • >>   hal_internal_vsync_set_rx_state +
    + +

    hal_intl_svs_deinit_tx (Thumb, 10 bytes, Stack size 0 bytes, hal_internal_svs.o(i.hal_intl_svs_deinit_tx)) +

    [Called By]

    • >>   hal_internal_vsync_set_tx_state +
    + +

    hal_intl_svs_handle (Thumb, 24 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_handle +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    hal_intl_svs_init_rx (Thumb, 120 bytes, Stack size 16 bytes, hal_internal_svs.o(i.hal_intl_svs_init_rx)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = hal_intl_svs_init_rx ⇒ hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   drv_rxbr_set_inten +
    • >>   hal_intl_fb_get_user_flow +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    + +

    hal_intl_svs_init_tx (Thumb, 16 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_init_tx)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_init_tx +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    + +

    hal_intl_svs_set_rx_vtt (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt)) +

    [Called By]

    • >>   rxbr_irq1_callback +
    + +

    hal_intl_svs_update_rxbr_clk (Thumb, 52 bytes, Stack size 16 bytes, hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk)) +

    [Stack]

    • Max Depth = 144
    • Call Chain = hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_crgu_get_rxbr_clk +
    • >>   __aeabi_ui2d +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_dmul +
    +
    [Called By]
    • >>   hal_intl_svs_init_rx +
    + +

    hal_lcdc_displayproc_config (Thumb, 94 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_lcdc_displayproc_config +
    +
    [Calls]
    • >>   drv_lcdc_endianness_config +
    • >>   drv_lcdc_crop_hact +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_lcdc_postproc_config (Thumb, 276 bytes, Stack size 88 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config)) +

    [Stack]

    • Max Depth = 232
    • Call Chain = hal_lcdc_postproc_config ⇒ hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   drv_lcdc_vintp_mode_config +
    • >>   drv_lcdc_function_enable +
    • >>   drv_lcdc_function_disable +
    • >>   drv_lcdc_fldc_config +
    • >>   drv_lcdc_fc_config +
    • >>   drv_lcdc_edge_enh_config +
    • >>   drv_lcdc_edge_dect_config +
    • >>   drv_lcdc_dith_config +
    • >>   drv_lcdc_bcsa_config +
    • >>   hal_lcdc_upscaler_config +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_lcdc_upscaler_config (Thumb, 202 bytes, Stack size 40 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config)) +

    [Stack]

    • Max Depth = 144
    • Call Chain = hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_lcdc_function_enable +
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    + +

    hal_nonshadow_func_update (Thumb, 180 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_nonshadow_func_update ⇒ drv_lcdc_config_int_single +
    +
    [Calls]
    • >>   drv_lcdc_fc_config +
    • >>   drv_lcdc_edge_enh_config +
    • >>   drv_lcdc_edge_dect_config +
    • >>   drv_lcdc_config_int_single +
    • >>   drv_lcdc_bcsa_config +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    +

    hal_pwr_enter_deep_sleep_mode (Thumb, 42 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_enter_deep_sleep_mode ⇒ drv_pwr_enter_deep_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_set_wakeup_type +
    • >>   drv_pwr_enter_deep_sleep_mode +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_enter_normal_sleep_mode (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_pwr_enter_normal_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_enter_sleep_mode_ex +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_enter_stop_sleep_mode (Thumb, 88 bytes, Stack size 16 bytes, hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_pwr_enter_stop_sleep_mode ⇒ drv_pwr_enter_stop_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_enter_stop_sleep_mode +
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_exit_sleep_mode (Thumb, 10 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = hal_pwr_exit_sleep_mode ⇒ drv_pwr_exit_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_exit_sleep_mode +
    +
    [Called By]
    • >>   app_system_resume +
    + +

    hal_pwr_get_vcc_power_ready (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_get_vcc_power_ready)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_pwr_get_vcc_power_ready +
    +
    [Calls]
    • >>   drv_pwr_get_power_ready_st +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_pwr_set_main_power (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_set_main_power)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_set_main_power ⇒ drv_pwr_set_digit_power_sel +
    +
    [Calls]
    • >>   drv_pwr_set_digit_power_sel +
    +
    [Called By]
    • >>   google_p8p_demo +
    + +

    hal_pwr_set_sleep_mode_power (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_set_sleep_mode_power)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_set_sleep_mode_power ⇒ drv_pwr_set_breath_screen_power_sel +
    +
    [Calls]
    • >>   drv_pwr_set_breath_screen_power_sel +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_set_stop_sleep_wakeup_pin (Thumb, 86 bytes, Stack size 24 bytes, hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = hal_pwr_set_stop_sleep_wakeup_pin ⇒ hal_gpio_init_eint ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_gpio_reg_eint_cb +
    • >>   hal_gpio_init_eint +
    • >>   hal_gpio_ctrl_eint +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_swire_deinit (Thumb, 60 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_deinit)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_swire_deinit ⇒ hal_timer_deinit ⇒ drv_timer_set_int +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_enable_clock +
    • >>   hal_timer_deinit +
    • >>   drv_swire_set_int +
    • >>   drv_swire_register_callback +
    • >>   drv_swire_enable +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_swire_enable (Thumb, 86 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_enable)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_swire_enable ⇒ drv_swire_set_int +
    +
    [Calls]
    • >>   drv_timer_enable +
    • >>   drv_swire_set_trig_mode +
    • >>   drv_swire_set_power_down +
    • >>   drv_swire_set_int +
    • >>   drv_swire_get_pulse_count +
    +
    [Called By]
    • >>   app_init_panel +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_swire_init (Thumb, 74 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_init)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_swire_init ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_swire_set_power_down +
    • >>   drv_swire_set_bit_time +
    • >>   drv_swire_enable +
    • >>   drv_crgu_set_clock_div +
    • >>   hal_gpio_set_mode +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_swire_set_pulse (Thumb, 32 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_set_pulse)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_swire_set_pulse +
    +
    [Calls]
    • >>   drv_swire_set_trig_mode +
    • >>   drv_swire_set_pulse_count +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   app_init_panel +
    + +

    hal_swire_set_timer (Thumb, 60 bytes, Stack size 24 bytes, hal_swire.o(i.hal_swire_set_timer)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_swire_set_timer ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_timer_init +
    • >>   hal_timer_set_repeat +
    • >>   drv_timer_set_compare_val +
    • >>   drv_sys_cfg_sel_swire_timer +
    • >>   drv_swire_set_trig_mode +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_system_init (Thumb, 192 bytes, Stack size 8 bytes, hal_system.o(i.hal_system_init)) +

    [Stack]

    • Max Depth = 48
    • Call Chain = hal_system_init ⇒ drv_common_system_init ⇒ drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_pwr_set_pll_clk +
    • >>   drv_crgu_enable_clock +
    • >>   drv_sys_cfg_clear_all_int +
    • >>   drv_common_system_init +
    • >>   hal_system_updata_sysclk +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   board_Init +
    + +

    hal_system_updata_sysclk (Thumb, 60 bytes, Stack size 8 bytes, hal_system.o(i.hal_system_updata_sysclk)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_system_updata_sysclk ⇒ drv_crgu_set_ahb_clk +
    +
    [Calls]
    • >>   drv_crgu_set_ahb_clk +
    +
    [Called By]
    • >>   hal_system_init +
    + +

    hal_timer_deinit (Thumb, 48 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_deinit)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_timer_deinit ⇒ drv_timer_set_int +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_enable_clock +
    • >>   drv_timer_set_repeat +
    • >>   drv_timer_set_int +
    • >>   drv_timer_enable +
    +
    [Called By]
    • >>   hal_swire_deinit +
    + +

    hal_timer_init (Thumb, 28 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_init)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = hal_timer_init ⇒ drv_timer_set_prescaler +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_timer_set_prescaler +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    + +

    hal_timer_set_repeat (Thumb, 8 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_set_repeat)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_timer_set_repeat +
    +
    [Calls]
    • >>   drv_timer_set_repeat +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    + +

    hal_uart_init (Thumb, 134 bytes, Stack size 48 bytes, hal_uart.o(i.hal_uart_init)) +

    [Stack]

    • Max Depth = 100
    • Call Chain = hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_uart_trans_create_handle +
    • >>   drv_uart_init +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   tau_log_init +
    + +

    hal_uart_send_blocking (Thumb, 24 bytes, Stack size 16 bytes, hal_uart.o(i.hal_uart_send_blocking)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_uart_send_blocking +
    +
    [Calls]
    • >>   drv_uart_send_blocking +
    +
    [Called By]
    • >>   fputc +
    + +

    hal_vsync_func_update (Thumb, 18 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_vsync_func_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_vsync_func_update ⇒ drv_lcdc_config_int_single +
    +
    [Calls]
    • >>   drv_lcdc_config_int_single +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    +

    hal_vsync_reset_lcdc_scaler (Thumb, 188 bytes, Stack size 40 bytes, hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler)) +

    [Stack]

    • Max Depth = 144
    • Call Chain = hal_vsync_reset_lcdc_scaler ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    + +

    main (Thumb, 32 bytes, Stack size 0 bytes, main.o(i.main)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = main ⇒ google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   google_p8p_demo +
    • >>   board_Init +
    +
    [Address Reference Count : 1]
    • entry9a.o(.ARM.Collect$$$$0000000B) +
    +

    tau_log_init (Thumb, 48 bytes, Stack size 32 bytes, tau_log.o(i.tau_log_init)) +

    [Stack]

    • Max Depth = 132
    • Call Chain = tau_log_init ⇒ hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_uart_init +
    +
    [Called By]
    • >>   board_Init +
    + +

    tau_log_printf (Thumb, 116 bytes, Stack size 296 bytes, tau_log.o(i.tau_log_printf)) +

    [Stack]

    • Max Depth = 336
    • Call Chain = tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_push_log +
    • >>   strlen +
    • >>   __aeabi_memclr4 +
    • >>   vsprintf +
    • >>   __2printf +
    +
    [Called By]
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    • >>   app_system_suspend +
    • >>   app_system_resume +
    • >>   app_system_process +
    • >>   app_mipi_tx_start +
    • >>   app_mipi_tx_init +
    • >>   app_mipi_rx_init +
    • >>   ap_rstn_pull_down_cb +
    • >>   ap_dcs_set_exit_sleep_mode +
    • >>   ap_dcs_set_enter_sleep_mode +
    • >>   ap_dcs_set_display_on +
    • >>   ap_dcs_set_display_off +
    • >>   ap_dcs_read +
    • >>   google_p8p_demo +
    • >>   main +
    • >>   drv_se_set_dsc +
    • >>   HardFault_Handler +
    • >>   svs_wait_fr_stab +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    • >>   check_pkt_buf_rev +
    • >>   LCDC_IRQn_Handler +
    • >>   vidc_callback +
    • >>   rxbr_irq1_callback +
    • >>   MIPI_TX_IRQn_Handler +
    • >>   MIPI_RX_IRQn_Handler +
    • >>   drv_se_set_vidc +
    • >>   drv_se_set_rxbr +
    • >>   drv_se_set_memc +
    • >>   drv_se_set_lcdc +
    + +

    tau_log_push_log (Thumb, 118 bytes, Stack size 32 bytes, tau_log.o(i.tau_log_push_log)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   delayUs +
    • >>   __aeabi_memcpy +
    +
    [Called By]
    • >>   tau_log_printf +
    • >>   fputc +
    +

    +

    +Local Symbols +

    +

    ap_dcs_read (Thumb, 280 bytes, Stack size 72 bytes, p8p_demo.o(i.ap_dcs_read)) +

    [Stack]

    • Max Depth = 456
    • Call Chain = ap_dcs_read ⇒ hal_dsi_rx_ctrl_send_ack_cmd ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    • >>   hal_dsi_rx_ctrl_get_max_ret_size +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_mipi_rx_init) +
    +

    ap_dcs_set_backlight (Thumb, 146 bytes, Stack size 24 bytes, p8p_demo.o(i.ap_dcs_set_backlight)) +

    [Stack]

    • Max Depth = 108
    • Call Chain = ap_dcs_set_backlight ⇒ hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   __aeabi_idivmod +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_display_off (Thumb, 34 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_display_off)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = ap_dcs_set_display_off ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_display_on (Thumb, 90 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_display_on)) +

    [Stack]

    • Max Depth = 640
    • Call Chain = ap_dcs_set_display_on ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_enter_sleep_mode (Thumb, 104 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_enter_sleep_mode)) +

    [Stack]

    • Max Depth = 408
    • Call Chain = ap_dcs_set_enter_sleep_mode ⇒ hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_enable +
    • >>   hal_gpio_set_output_data +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   delayMs +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_exit_sleep_mode (Thumb, 28 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = ap_dcs_set_exit_sleep_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_frame_change (Thumb, 46 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_frame_change)) +

    [Stack]

    • Max Depth = 408
    • Call Chain = ap_dcs_set_frame_change ⇒ hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_rstn_pull_down_cb (Thumb, 38 bytes, Stack size 8 bytes, p8p_demo.o(i.ap_rstn_pull_down_cb)) +

    [Stack]

    • Max Depth = 344
    • Call Chain = ap_rstn_pull_down_cb ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) +
    +

    ap_rstn_pull_high_cb (Thumb, 22 bytes, Stack size 8 bytes, p8p_demo.o(i.ap_rstn_pull_high_cb)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = ap_rstn_pull_high_cb ⇒ hal_gpio_set_ap_reset_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_system_suspend) +
    +

    ap_set_FPS_53 (Thumb, 74 bytes, Stack size 32 bytes, p8p_demo.o(i.ap_set_FPS_53)) +

    [Stack]

    • Max Depth = 116
    • Call Chain = ap_set_FPS_53 ⇒ hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    app_init_panel (Thumb, 42 bytes, Stack size 8 bytes, p8p_demo.o(i.app_init_panel)) +

    [Stack]

    • Max Depth = 124
    • Call Chain = app_init_panel ⇒ send_panel_init_code ⇒ hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_swire_set_pulse +
    • >>   hal_swire_enable +
    • >>   hal_gpio_init_output +
    • >>   delayMs +
    • >>   send_panel_init_code +
    • >>   app_tx_panel_reset +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    + +

    app_mipi_rx_init (Thumb, 232 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_rx_init)) +

    [Stack]

    • Max Depth = 560
    • Call Chain = app_mipi_rx_init ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_dsi_rx_ctrl_create_handle +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_mipi_tx_init (Thumb, 214 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_tx_init)) +

    [Stack]

    • Max Depth = 432
    • Call Chain = app_mipi_tx_init ⇒ hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_overwrite_rgb +
    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_create_handle +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_mipi_tx_start (Thumb, 118 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_tx_start)) +

    [Stack]

    • Max Depth = 632
    • Call Chain = app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_set_pulse +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   delayMs +
    • >>   app_init_panel +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_system_process (Thumb, 60 bytes, Stack size 8 bytes, p8p_demo.o(i.app_system_process)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   app_system_suspend +
    • >>   app_system_resume +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   google_p8p_demo +
    + +

    app_system_resume (Thumb, 30 bytes, Stack size 8 bytes, p8p_demo.o(i.app_system_resume)) +

    [Stack]

    • Max Depth = 648
    • Call Chain = app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_pwr_exit_sleep_mode +
    • >>   app_display_init +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_system_process +
    + +

    app_system_suspend (Thumb, 202 bytes, Stack size 16 bytes, p8p_demo.o(i.app_system_suspend)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = app_system_suspend ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_deinit +
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    • >>   hal_pwr_set_sleep_mode_power +
    • >>   hal_pwr_enter_stop_sleep_mode +
    • >>   hal_pwr_enter_normal_sleep_mode +
    • >>   hal_pwr_enter_deep_sleep_mode +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_gpio_init_output +
    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_system_process +
    + +

    app_tx_panel_reset (Thumb, 46 bytes, Stack size 8 bytes, p8p_demo.o(i.app_tx_panel_reset)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = app_tx_panel_reset ⇒ delayMs ⇒ delayUs +
    +
    [Calls]
    • >>   hal_gpio_set_output_data +
    • >>   delayMs +
    +
    [Called By]
    • >>   app_init_panel +
    + +

    pps_update_handle (Thumb, 110 bytes, Stack size 24 bytes, p8p_demo.o(i.pps_update_handle)) +

    [Stack]

    • Max Depth = 648
    • Call Chain = pps_update_handle ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_mipi_rx_init) +
    +

    send_panel_init_code (Thumb, 58 bytes, Stack size 32 bytes, p8p_demo.o(i.send_panel_init_code)) +

    [Stack]

    • Max Depth = 116
    • Call Chain = send_panel_init_code ⇒ hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   delayUs +
    +
    [Called By]
    • >>   app_init_panel +
    + +

    hal_dsi_rx_ctrl_init_clk (Thumb, 222 bytes, Stack size 32 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = hal_dsi_rx_ctrl_init_clk ⇒ drv_crgu_set_dsc_clk +
    +
    [Calls]
    • >>   drv_pwr_set_pll_clk +
    • >>   drv_crgu_set_vidc_clk +
    • >>   drv_crgu_set_rxbr_clk +
    • >>   drv_crgu_set_fb_clk +
    • >>   drv_crgu_set_dsc_clk +
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_dsi_rx (Thumb, 218 bytes, Stack size 32 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx)) +

    [Stack]

    • Max Depth = 216
    • Call Chain = hal_dsi_rx_ctrl_init_dsi_rx ⇒ hal_dsi_rx_ctrl_set_ipi_cfg ⇒ drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_dsi_rx_set_up_phy +
    • >>   drv_dsi_rx_set_tear_resp_en +
    • >>   drv_dsi_rx_set_resp_cnt +
    • >>   drv_dsi_rx_set_lane_swap +
    • >>   drv_dsi_rx_set_ipi_ycbcr_frmt +
    • >>   drv_dsi_rx_set_inten +
    • >>   drv_dsi_rx_set_ddi_crc_en +
    • >>   drv_dsi_rx_set_ddi_cfg +
    • >>   drv_dsi_rx_set_ctrl_cfg +
    • >>   drv_dsi_rx_set_check_crc +
    • >>   drv_dsi_rx_enable_irq +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_memc (Thumb, 294 bytes, Stack size 80 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc)) +

    [Stack]

    • Max Depth = 440
    • Call Chain = hal_dsi_rx_ctrl_init_memc ⇒ drv_memc_set_ltpo_mode ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   drv_memc_set_vidc_sync_cnt +
    • >>   drv_memc_set_tear_waveform +
    • >>   drv_memc_set_tear_mode +
    • >>   drv_memc_set_ltpo_pu_thres +
    • >>   drv_memc_set_ltpo_mode +
    • >>   drv_memc_set_lcdc_st_conditions +
    • >>   drv_memc_set_fs_en_conditions +
    • >>   drv_memc_set_double_buffer +
    • >>   drv_memc_set_data_mode +
    • >>   drv_memc_set_circ_mode_enable +
    • >>   drv_memc_set_active_height +
    • >>   drv_memc_sel_vsync +
    • >>   drv_memc_rate_transfer_sel +
    • >>   drv_memc_enable_irq +
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_rxbr (Thumb, 314 bytes, Stack size 144 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr)) +

    [Stack]

    • Max Depth = 504
    • Call Chain = hal_dsi_rx_ctrl_init_rxbr ⇒ drv_rxbr_set_color_format ⇒ drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_intl_dcs_set_auto_hw_filter +
    • >>   drv_rxbr_set_usr_row +
    • >>   drv_rxbr_set_usr_col +
    • >>   drv_rxbr_set_usr_cfg +
    • >>   drv_rxbr_set_ltpo_drop_th +
    • >>   drv_rxbr_set_inten +
    • >>   drv_rxbr_set_color_format +
    • >>   drv_rxbr_hline_rcv_cfg +
    • >>   drv_rxbr_frame_drop_cfg +
    • >>   drv_rxbr_enable_irq +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_vidc (Thumb, 624 bytes, Stack size 168 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc)) +

    [Stack]

    • Max Depth = 536
    • Call Chain = hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   drv_vidc_set_vintp_config +
    • >>   drv_vidc_set_src_parameter +
    • >>   drv_vidc_set_scld_vcoef1 +
    • >>   drv_vidc_set_scld_vcoef0 +
    • >>   drv_vidc_set_scld_step +
    • >>   drv_vidc_set_scld_hcoef1 +
    • >>   drv_vidc_set_scld_hcoef0 +
    • >>   drv_vidc_set_rotation +
    • >>   drv_vidc_set_pu_ctrl +
    • >>   drv_vidc_set_pentile_swap +
    • >>   drv_vidc_set_mirror +
    • >>   drv_vidc_set_irqen +
    • >>   drv_vidc_set_honly_hinitr +
    • >>   drv_vidc_set_honly_hinitb +
    • >>   drv_vidc_set_honly_hcoef0 +
    • >>   drv_vidc_set_dst_parameter +
    • >>   drv_vidc_set_dither_config +
    • >>   drv_vidc_set_circ_mode_enable +
    • >>   drv_vidc_init_module_enable +
    • >>   drv_vidc_enable_irq +
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_memcpy4 +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_set_ipi_cfg (Thumb, 48 bytes, Stack size 24 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg)) +

    [Stack]

    • Max Depth = 184
    • Call Chain = hal_dsi_rx_ctrl_set_ipi_cfg ⇒ drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_dsi_rx_set_ipi_cfg +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    hal_dsi_tx_cmd_mode_cal_timing (Thumb, 506 bytes, Stack size 56 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_fadd +
    • >>   __aeabi_f2d +
    • >>   __aeabi_d2uiz +
    • >>   tau_log_printf +
    • >>   __aeabi_idivmod +
    • >>   __aeabi_uidivmod +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_ctrl_init_clk (Thumb, 12 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_init_clk +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_cfg (Thumb, 258 bytes, Stack size 80 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg)) +

    [Stack]

    • Max Depth = 96
    • Call Chain = hal_dsi_tx_init_cfg ⇒ drv_dsi_tx_set_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_dsi_tx_video_mode_cfg +
    • >>   drv_dsi_tx_timeout_cfg +
    • >>   drv_dsi_tx_set_time_out_div +
    • >>   drv_dsi_tx_set_int +
    • >>   drv_dsi_tx_set_esc_div +
    • >>   drv_dsi_tx_set_bta_ack +
    • >>   drv_dsi_tx_response_mode +
    • >>   drv_dsi_tx_phy_lane_mode +
    • >>   drv_dsi_tx_phy_clock_lane_req_hs +
    • >>   drv_dsi_tx_phy_clock_lane_auto_lp +
    • >>   drv_dsi_tx_mode +
    • >>   drv_dsi_tx_dpi_polarity +
    • >>   drv_dsi_tx_dpi_mode +
    • >>   drv_dsi_tx_dpi_lpcmd_time +
    • >>   drv_dsi_tx_config_int +
    • >>   drv_dsi_tx_config_eotp +
    • >>   drv_dsi_tx_command_mode_cfg +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_dpi_timing (Thumb, 46 bytes, Stack size 40 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_dsi_tx_init_dpi_timing ⇒ drv_crgu_set_dpi_clk +
    +
    [Calls]
    • >>   drv_crgu_set_dpi_clk +
    • >>   __aeabi_memcpy4 +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_init_phy_cfg (Thumb, 22 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_dsi_tx_init_phy_cfg ⇒ drv_dsi_tx_phy_test_setup ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_dsi_tx_phy_time_cfg +
    • >>   drv_dsi_tx_phy_test_setup +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_init_timing (Thumb, 82 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing)) +

    [Stack]

    • Max Depth = 408
    • Call Chain = hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_tx_edpi_cmd_size +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_timing_info_update +
    • >>   hal_dsi_tx_init_vid_timing +
    • >>   hal_dsi_tx_init_phy_cfg +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_vid_timing (Thumb, 70 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_dsi_tx_init_vid_timing +
    +
    [Calls]
    • >>   drv_dsi_tx_set_video_timing +
    • >>   drv_dsi_tx_set_video_chunk +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_send_cmd (Thumb, 58 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_phy_status_stopstate +
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_header +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    + +

    hal_dsi_tx_timing_info_update (Thumb, 142 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = hal_dsi_tx_timing_info_update ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_d2f +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_vid_mode_cal_timing (Thumb, 766 bytes, Stack size 96 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing)) +

    [Stack]

    • Max Depth = 232
    • Call Chain = hal_dsi_tx_vid_mode_cal_timing ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_f2d +
    • >>   __aeabi_d2uiz +
    • >>   hal_intl_svs_init_tx +
    • >>   hal_intl_fb_get_user_flow +
    • >>   __aeabi_idivmod +
    • >>   __aeabi_uidivmod +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_lcdc_init_cfg (Thumb, 62 bytes, Stack size 88 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg)) +

    [Stack]

    • Max Depth = 320
    • Call Chain = hal_lcdc_init_cfg ⇒ hal_lcdc_postproc_config ⇒ hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   drv_lcdc_set_int +
    • >>   drv_lcdc_config_int +
    • >>   hal_lcdc_postproc_config +
    • >>   hal_lcdc_displayproc_config +
    • >>   hal_lcdc_timinggen_config +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_lcdc_init_clk (Thumb, 112 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk)) +

    [Stack]

    • Max Depth = 152
    • Call Chain = hal_lcdc_init_clk ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_crgu_set_lcdc_clk +
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_f2d +
    • >>   __ARM_scalbnf +
    • >>   __aeabi_d2uiz +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_lcdc_start (Thumb, 36 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_start)) +

    [Stack]

    • Max Depth = 368
    • Call Chain = hal_lcdc_start ⇒ drv_lcdc_vid_hw_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_vid_hw_start +
    • >>   drv_lcdc_cmd_start +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_start +
    + +

    hal_lcdc_timinggen_config (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_lcdc_timinggen_config ⇒ drv_lcdc_ctrl_flow +
    +
    [Calls]
    • >>   hal_internal_vsync_get_sync_line +
    • >>   drv_lcdc_set_prefetch +
    • >>   drv_lcdc_ctrl_flow +
    • >>   drv_lcdc_config_src_parameter +
    • >>   hal_intl_fb_get_memc_flow_mode +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_tx_frame_rate_adjust (Thumb, 44 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust)) +

    [Stack]

    • Max Depth = 440
    • Call Chain = hal_tx_frame_rate_adjust ⇒ hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tx_state +
    • >>   __aeabi_cfcmple +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   hal_dsi_tx_ctrl_init +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) +
    +

    drv_gpio_set_output_data (Thumb, 26 bytes, Stack size 0 bytes, hal_gpio.o(i.drv_gpio_set_output_data)) +

    [Called By]

    • >>   hal_gpio_set_output_data +
    • >>   hal_gpio_init_output +
    + +

    stop_sleep_cb (Thumb, 18 bytes, Stack size 0 bytes, hal_pwr.o(i.stop_sleep_cb)) +
    [Address Reference Count : 1]

    • hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) +
    +

    check_mipi_rx_tx_video_info (Thumb, 44 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.check_mipi_rx_tx_video_info)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = check_mipi_rx_tx_video_info +
    +
    [Called By]
    • >>   hal_internal_vsync_init_tx +
    • >>   hal_internal_vsync_init_rx +
    + +

    drv_rxbr_get_int_source (Thumb, 20 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.drv_rxbr_get_int_source)) +

    [Called By]

    • >>   rxbr_irq1_callback +
    + +

    rxbr_irq1_callback (Thumb, 466 bytes, Stack size 40 bytes, hal_internal_vsync.o(i.rxbr_irq1_callback)) +

    [Stack]

    • Max Depth = 400
    • Call Chain = rxbr_irq1_callback ⇒ drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_cmd_start +
    • >>   drv_dsi_tx_phy_clock_lane_req_hs +
    • >>   drv_vidc_enable +
    • >>   drv_rxbr_set_inten +
    • >>   tau_log_printf +
    • >>   hal_intl_svs_set_rx_vtt +
    • >>   hal_intl_svs_handle +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    • >>   vpre_err_reset +
    • >>   soft_double_buffer_update +
    • >>   drv_rxbr_get_int_source +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    soft_double_buffer_update (Thumb, 56 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.soft_double_buffer_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = soft_double_buffer_update +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    soft_gen_te (Thumb, 102 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.soft_gen_te)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = soft_gen_te +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    soft_gen_te_double_buffer (Thumb, 122 bytes, Stack size 20 bytes, hal_internal_vsync.o(i.soft_gen_te_double_buffer)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = soft_gen_te_double_buffer +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    vidc_callback (Thumb, 150 bytes, Stack size 24 bytes, hal_internal_vsync.o(i.vidc_callback)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = vidc_callback ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_function_disable +
    • >>   drv_vidc_set_irqen +
    • >>   tau_log_printf +
    • >>   drv_vidc_get_irq_status +
    • >>   drv_vidc_get_int_source +
    • >>   drv_vidc_clear_irq +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    vpre_err_reset (Thumb, 254 bytes, Stack size 64 bytes, hal_internal_vsync.o(i.vpre_err_reset)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = vpre_err_reset +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_vidc_reset +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    check_pkt_buf_rev (Thumb, 84 bytes, Stack size 24 bytes, hal_internal_dcs.o(i.check_pkt_buf_rev)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = check_pkt_buf_rev ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_rxbr_get_status0 +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_rxbr_get_status0 (Thumb, 20 bytes, Stack size 0 bytes, hal_internal_dcs.o(i.drv_rxbr_get_status0)) +

    [Called By]

    • >>   VPRE_IRQn_Handler +
    • >>   check_pkt_buf_rev +
    + +

    hal_intl_dcs_rx_get_dcs_packet_data (Thumb, 806 bytes, Stack size 64 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data)) +

    [Stack]

    • Max Depth = 424
    • Call Chain = hal_intl_dcs_rx_get_dcs_packet_data ⇒ check_pkt_buf_rev ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    • >>   tau_log_printf +
    • >>   drv_dsi_rx_get_ddi_crc_en +
    • >>   dcs_packet_fifo_alloc +
    • >>   hal_intl_dcs_sw_filter_handle +
    • >>   check_pkt_buf_rev +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_packet +
    + +

    hal_intl_dcs_rx_receive_packet (Thumb, 122 bytes, Stack size 8 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet)) +

    [Stack]

    • Max Depth = 528
    • Call Chain = hal_intl_dcs_rx_receive_packet ⇒ hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    +
    [Called By]
    • >>   VPRE_IRQn_Handler +
    + +

    hal_intl_dcs_rx_receive_pps (Thumb, 268 bytes, Stack size 160 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps)) +

    [Stack]

    • Max Depth = 520
    • Call Chain = hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_rx_get_compression_en +
    • >>   drv_dsc_dec_enable +
    • >>   drv_crgu_enable_clock +
    • >>   tau_log_printf +
    • >>   check_pkt_buf_rev +
    • >>   drv_rxbr_clear_pkt_buffer +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_packet +
    + +

    hal_intl_dcs_sw_filter_handle (Thumb, 36 bytes, Stack size 0 bytes, hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle)) +

    [Called By]

    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    ha_intl_fb_check_pu_size (Thumb, 58 bytes, Stack size 16 bytes, hal_internal_fb.o(i.ha_intl_fb_check_pu_size)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = ha_intl_fb_check_pu_size ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_check_bandwidth (Thumb, 92 bytes, Stack size 40 bytes, hal_internal_fb.o(i.hal_intl_fb_check_bandwidth)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_intl_fb_check_bandwidth ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_edge_resize (Thumb, 214 bytes, Stack size 48 bytes, hal_internal_fb.o(i.hal_intl_fb_edge_resize)) +

    [Stack]

    • Max Depth = 60
    • Call Chain = hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_flow_control_adapter (Thumb, 94 bytes, Stack size 16 bytes, hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_intl_fb_flow_control_adapter +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    svs_direct_mode_setting (Thumb, 154 bytes, Stack size 88 bytes, hal_internal_svs.o(i.svs_direct_mode_setting)) +

    [Stack]

    • Max Depth = 100
    • Call Chain = svs_direct_mode_setting ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   drv_rxbr_hline_rcv1_cfg +
    • >>   drv_rxbr_clear_status0 +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   svs_wait_start +
    + +

    svs_get_rel_intv (Thumb, 20 bytes, Stack size 8 bytes, hal_internal_svs.o(i.svs_get_rel_intv)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = svs_get_rel_intv ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    svs_sync_handle (Thumb, 158 bytes, Stack size 24 bytes, hal_internal_svs.o(i.svs_sync_handle)) +

    [Stack]

    • Max Depth = 128
    • Call Chain = svs_sync_handle ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_f2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   svs_get_rel_intv +
    +
    [Address Reference Count : 1]
    • hal_internal_svs.o(i.svs_wait_fr_stab) +
    +

    svs_wait_fr_stab (Thumb, 148 bytes, Stack size 16 bytes, hal_internal_svs.o(i.svs_wait_fr_stab)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = svs_wait_fr_stab ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   drv_rxbr_frame_drop_cfg +
    • >>   tau_log_printf +
    • >>   __aeabi_f2uiz +
    • >>   svs_get_rel_intv +
    • >>   __aeabi_uidivmod +
    +
    [Address Reference Count : 1]
    • hal_internal_svs.o(i.svs_wait_start) +
    +

    svs_wait_start (Thumb, 250 bytes, Stack size 24 bytes, hal_internal_svs.o(i.svs_wait_start)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = svs_wait_start ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_f2d +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   drv_rxbr_set_inten +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   __aeabi_d2uiz +
    • >>   drv_rxbr_hline_rcv1_cfg +
    • >>   svs_get_rel_intv +
    • >>   svs_direct_mode_setting +
    • >>   drv_rxbr_clear_status0 +
    • >>   ceil +
    +
    [Address Reference Count : 2]
    • hal_internal_svs.o(i.hal_intl_svs_deinit_rx) +
    • hal_internal_svs.o(i.hal_intl_svs_init_rx) +
    +

    drv_gpio_handle_int (Thumb, 30 bytes, Stack size 8 bytes, drv_gpio.o(i.drv_gpio_handle_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   EXTI_INT7_IRQn_Handler +
    • >>   EXTI_INT6_IRQn_Handler +
    • >>   EXTI_INT5_IRQn_Handler +
    • >>   EXTI_INT4_IRQn_Handler +
    • >>   EXTI_INT3_IRQn_Handler +
    • >>   EXTI_INT2_IRQn_Handler +
    • >>   EXTI_INT1_IRQn_Handler +
    • >>   EXTI_INT0_IRQn_Handler +
    + +

    drv_timer_clear_status_flags (Thumb, 26 bytes, Stack size 8 bytes, drv_timer.o(i.drv_timer_clear_status_flags)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_timer_clear_status_flags ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_handle_interrupt (Thumb, 54 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_handle_interrupt)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_set_int +
    • >>   drv_timer_set_compare_val +
    • >>   drv_timer_clear_status_flags +
    +
    [Called By]
    • >>   TIMER3_IRQn_Handler +
    • >>   TIMER2_IRQn_Handler +
    • >>   TIMER1_IRQn_Handler +
    • >>   TIMER0_IRQn_Handler +
    + +

    drv_dsi_rx_get_color_bpp (Thumb, 62 bytes, Stack size 4 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_rx_get_color_bpp ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    drv_dsi_rx_get_color_pcc (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc)) +

    [Called By]

    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    drv_lcdc_clear_int (Thumb, 20 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_clear_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_lcdc_clear_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   drv_lcdc_set_int +
    + +

    __NVIC_DisableIRQ (Thumb, 26 bytes, Stack size 0 bytes, drv_rxbr.o(i.__NVIC_DisableIRQ)) +

    [Called By]

    • >>   drv_rxbr_enable_irq +
    + +

    __NVIC_EnableIRQ (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.__NVIC_EnableIRQ)) +

    [Called By]

    • >>   drv_rxbr_enable_irq +
    + +

    drv_dma_get_int_source (Thumb, 16 bytes, Stack size 0 bytes, drv_dma.o(i.drv_dma_get_int_source)) +

    [Called By]

    • >>   DMA_IRQn_Handler +
    + +

    drv_uart_enable_clk (Thumb, 24 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_enable_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_uart_enable_clk +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_int_trans_handle (Thumb, 54 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_int_trans_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_uart_int_trans_handle +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    _fp_digits (Thumb, 344 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) +

    [Calls]

    • >>   __aeabi_dadd +
    • >>   __aeabi_dmul +
    • >>   __aeabi_cdrcmple +
    • >>   __aeabi_uldivmod +
    • >>   __aeabi_ddiv +
    • >>   __aeabi_d2ulz +
    +
    [Called By]
    • >>   _printf_core +
    + +

    _printf_core (Thumb, 1754 bytes, Stack size 128 bytes, printfa.o(i._printf_core), UNUSED) +

    [Calls]

    • >>   __aeabi_uidivmod +
    • >>   __aeabi_uldivmod +
    • >>   _printf_pre_padding +
    • >>   _printf_post_padding +
    • >>   _fp_digits +
    +
    [Called By]
    • >>   __0vsprintf +
    • >>   __0printf +
    + +

    _printf_post_padding (Thumb, 32 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) +

    [Called By]

    • >>   _printf_core +
    + +

    _printf_pre_padding (Thumb, 44 bytes, Stack size 40 bytes, printfa.o(i._printf_pre_padding), UNUSED) +

    [Called By]

    • >>   _printf_core +
    + +

    _sputc (Thumb, 10 bytes, Stack size 0 bytes, printfa.o(i._sputc)) +

    [Called By]

    • >>   __0vsprintf +
    +
    [Address Reference Count : 1]
    • printfa.o(i.__0vsprintf) +

    +

    +Undefined Global Symbols +


    diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.lnp b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.lnp new file mode 100644 index 0000000..4f2c228 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.lnp @@ -0,0 +1,10 @@ +--cpu Cortex-M0 +".\objects\main.o" +".\objects\p8p_demo.o" +"..\..\src\sdk\CVWL668\lib\CVWL668.lib" +".\objects\board.o" +".\objects\startup_armcm0.o" +--library_type=microlib --strict --scatter ".\Objects\WL668_P8P_TM667_ICNA3508_20240401.sct" +--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers +--list ".\Listings\WL668_P8P_TM667_ICNA3508_20240401.map" -o .\Objects\WL668_P8P_TM667_ICNA3508_20240401.axf \ No newline at end of file diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.sct b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.sct new file mode 100644 index 0000000..8775845 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.sct @@ -0,0 +1,16 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM2 0x00010000 0x00010000 { ; load region size_region + ER_IROM2 0x00010000 0x00010000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x00070000 0x00008000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.axf b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.axf new file mode 100644 index 0000000..dcc0206 Binary files /dev/null and b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.axf differ diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.bin b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.bin new file mode 100644 index 0000000..49d6b53 Binary files /dev/null and b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.bin differ diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.build_log.htm b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.build_log.htm new file mode 100644 index 0000000..b20326a --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.build_log.htm @@ -0,0 +1,79 @@ + + +
    +

    Vision Build Log

    +

    Tool Versions:

    +IDE-Version: Vision V5.28.0.0 +Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. +License Information: HAHA Markin, HAHA, LIC=VGXG8-3CKFQ-63XMB-246PQ-J4CUG-RTS7K + +Tool Versions: +Toolchain: MDK-ARM Plus Version: 5.28.0.0 +Toolchain Path: C:\Keil_v5\ARM\ARMCC\Bin +C Compiler: Armcc.exe V5.06 update 6 (build 750) +Assembler: Armasm.exe V5.06 update 6 (build 750) +Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) +Library Manager: ArmAr.exe V5.06 update 6 (build 750) +Hex Converter: FromElf.exe V5.06 update 6 (build 750) +CPU DLL: SARMCM3.DLL V5.28.0.0 +Dialog DLL: DARMCM1.DLL V1.19.2.0 +Target DLL: UL2CM3.DLL V1.162.16.0 +Dialog DLL: TARMCM1.DLL V1.14.1.0 + +

    Project:

    +D:\Custom\\WL668_Pixel 8 Pro_TM667_ICNA3508(RAMLESS)_ CST6656S_OLED\Դ\WL668_GOOGLEP8P_TM667_ICNA3508_OLED_FHD_20240315\WL668_GOOGLEP8P_TM667_ICNA3508_20240306_5608\project\WL668\WL668.uvprojx +Project File Date: 04/07/2024 + +

    Output:

    +*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' +Rebuild target 'WL668' +creating preprocessor file for main.c... +compiling main.c... +creating preprocessor file for p8p_demo.c... +compiling p8p_demo.c... +..\..\src\app\P8P\p8p_demo.c(473): warning: #186-D: pointless comparison of unsigned integer with zero + if((rd_51_val >=0x00)&&(rd_51_val <= 0xFFF) ){ +..\..\src\app\P8P\p8p_demo.c(131): warning: #550-D: variable "sg_exit_idle_mode_flag" was set but never used + static bool sg_exit_idle_mode_flag = false; +..\..\src\app\P8P\p8p_demo.c(134): warning: #177-D: variable "pps_renew_flag" was declared but never referenced + static uint32_t pps_renew_flag = 0; +..\..\src\app\P8P\p8p_demo.c(135): warning: #177-D: variable "pwr_rst_flag" was declared but never referenced + static uint32_t pwr_rst_flag = 0; +..\..\src\app\P8P\p8p_demo.c(149): warning: #177-D: function "app_mipi_rx_start_cb" was declared but never referenced + static void app_mipi_rx_start_cb(void *data); +..\..\src\app\P8P\p8p_demo.c(459): warning: #177-D: variable "reg53_E8_fg" was declared but never referenced + static bool reg53_E8_fg=0; +..\..\src\app\P8P\p8p_demo.c(533): warning: #177-D: function "ap_dcs_set_exit_idle_mode" was declared but never referenced + static bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +..\..\src\app\P8P\p8p_demo.c(558): warning: #177-D: function "soft_te_timer_init" was declared but never referenced + static void soft_te_timer_init() +..\..\src\app\P8P\p8p_demo.c: 8 warnings, 0 errors +creating preprocessor file for board.c... +compiling board.c... +assembling startup_ARMCM0.s... +linking... +Program Size: Code=37772 RO-data=9272 RW-data=1048 ZI-data=11632 +FromELF: creating hex file... +After Build - User command #1: fromelf --bin -o .\Objects\WL668_P8P_TM667_ICNA3508_20240407.bin .\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf +".\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf" - 0 Error(s), 8 Warning(s). + +

    Software Packages used:

    + +Package Vendor: ARM + http://www.keil.com/pack/ARM.CMSIS.5.5.1.pack + ARM.CMSIS.5.5.1 + CMSIS (Cortex Microcontroller Software Interface Standard) + * Component: CORE Version: 5.2.0 + +

    Collection of Component include folders:

    + .\RTE\_WL668 + C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include + C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include + +

    Collection of Component Files used:

    + + * Component: ARM::CMSIS:CORE:5.2.0 +Build Time Elapsed: 00:00:02 +
    + + diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.hex b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.hex new file mode 100644 index 0000000..0a8ceed --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.hex @@ -0,0 +1,2966 @@ +:020000040001F9 +:1000000088310700D5000100F1000100C10B01009B +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000F5000100DA +:100030000000000000000000F70001008D0E01002C +:10004000CD0E0100090C010045100100A50D0100B5 +:10005000090D0100050F010007010100150B01004A +:10006000A50E0100AF0E0100B90E0100C30E010084 +:1000700013010100A913010017010100190101007A +:100080001B0101001D010100E90E01002101010019 +:10009000230101005D0E010027010100F90A0100A2 +:1000A000710B01007B0B0100850B01008F0B010020 +:1000B000990B0100A30B0100AD0B0100B70B010070 +:1000C0000348854600F0DAFC0048004755880100E7 +:1000D0008831070072B6194819491A4A0123002BC2 +:1000E00003D102600A60013BF9E762B61648004797 +:1000F000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7D8 +:10010000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7C7 +:10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 +:10012000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A7 +:10013000FEE7FEE7FEE7FEE7FEE7000080E100E005 +:1001400080E200E0FFFFFFFFC100010030B50B4679 +:10015000014600202022012409E00D46D5409D42A1 +:1001600005D31D469540491B254695404019154627 +:10017000521E002DF1DC30BD70B50024254600284C +:1001800001DA01244042002901DA01254942FFF742 +:10019000DDFFAC4200D04042002C00D0494270BD8F +:1001A00003460B439B0703D009E008C9121F08C090 +:1001B000042AFAD203E00B780370401C491C521E3B +:1001C000F9D27047D2B201E00270401C491EFBD246 +:1001D00070470022F6E710B513460A460446194652 +:1001E000FFF7F0FF204610BD421C0178401C00299B +:1001F000FBD1801A704730B504460020034600E06A +:100200005B1C934203D2E05CCD5C401BF8D030BD58 +:10021000F8B502464A40D40F42004B0052085B0832 +:100220009A4202D20246084611464A0023D0C30D24 +:100230004A00DDB2120EAD1A202D35DA4902012630 +:10024000490AF6058A19002C00D0524220214F1B82 +:100250001146B9402A411018C20D9A4221D0002CF3 +:1002600017D0012D08DCDA05801AD20F8019D207C9 +:10027000DBB200F0BFFAF8BDDA05801A01234000B6 +:100280001B06C01880185A428018CA0F1043490034 +:1002900007E04908C2071143DA05801A80194008AF +:1002A000801800F09FFAF8BD61000122511A001B6E +:1002B000F7E70122D2075140AAE70122D2075040B6 +:1002C000A6E7024670B54A40D30FDB0740002DD0A9 +:1002D0004A002AD0010E140E000212020919400A27 +:1002E000520A8418E50104465443000A120A2E04F7 +:1002F0005043A4194219200CC543AA18120C012519 +:10030000AD03521C521912047F39240400D0521C30 +:10031000104301D44000491EC2B20C06C009201887 +:10032000401C4008802A02D003E0002070BD400835 +:100330004000002900DA0020184370BD70B5024665 +:100340004A40D50F40004A00ED07400852080028F7 +:1003500014D0002A12D0C40DD30D41020120C005D3 +:100360005202490A520AE41A091812187D349142BD +:1003700001D3641C00E04900002C01DA002070BDAC +:100380000023914201D3891A034340084900002801 +:10039000F7D100290AD0914202D10121C90705E015 +:1003A000914201D2012101E00121C943E005C018B9 +:1003B000401900F017FA70BD420005D04200120E3D +:1003C00052428A4201DB00207047C9050818704775 +:1003D000F0B507460846584087B0C00F0490480063 +:1003E0000E46590040084908BC1A884105D23846D3 +:1003F00031461E4617460B46024658004008104339 +:100400004CD0300D039040055900400D490D05902A +:10041000401A0290402872DA18030121000B0905E6 +:100420000843019004980092002805D00199524297 +:100430000020884100920190029840210A1A0199F7 +:10044000009800F09BF905460C466B4607CB00F080 +:10045000B6F9C0197141039A0E0D0023D717564003 +:100460001A467A40164344D0049A002A2DD0029AA4 +:10047000012A039A15DC1205C01A9141012636059E +:10048000001C7141D20F059ED20700930192029683 +:100490002A46234600F0F4F907B0F0BD384631464D +:1004A000FAE71605224A0F46B218C01AB7410121D1 +:1004B0000905001C4F4100187F4111461818794169 +:1004C000E20F10436D19644113E0E2076D08154314 +:1004D0006408C2071443039A01261205C01A914109 +:1004E0003605001C7141CE07400830434908C0184A +:1004F00051412A46234600F0B6F9CDE7FFE70498BC +:1005000001224000C117121A00238B410498314682 +:10051000C417381AA141EEE730B40124E407634060 +:1005200030BC55E730B40124E407614030BC4FE7EC +:100530000000E0FFF0B51FB488B00B9909980024C3 +:1005400048400999C00F490049080991C0070B9913 +:100550000090490049080B9109990898A64608435C +:100560001CD00B990A98084318D009980124400020 +:10057000420D4800410D099824050003000B20435B +:1005800009900B980003000B20430B9050181C4956 +:100590004018002201901446104605E00020014654 +:1005A0000DB0F0BD032801DA034600E003239C46AA +:1005B000C11A0AAE0AE05F0008ADED5B4F00F75BC1 +:1005C0007D430027AA187C41491C5B1E6145F2DD72 +:1005D000410004AB5A522104120C0A43240C401C63 +:1005E0000828DFDB01980290009970460191009085 +:1005F000059B049A0799069800F042F9D0E700009D +:100600000DFCFFFF10B500229623114600F0F2F812 +:1006100010BD00000EB505490291002100910A4667 +:100620000B46019100F02CF903B000BD330400002B +:10063000410040020122400AD205090E80187F299C +:1006400001DA00207047962903DC9622511AC8402F +:1006500070479639884070474A0009030123090B07 +:100660001B051943094B10B5520D9A4201DA0020BF +:1006700010BD064B34339A4203DC9A1A00F08EF810 +:1006800010BD03495118884010BD0000FF03000051 +:10069000CDFBFFFFC20FD207400040080BD0C10DB9 +:1006A0000723DB01C91840020905400A1143C208AB +:1006B000400711437047002001467047CB0FDB070E +:1006C000490010B5490802460A4307D00A0D07241D +:1006D0000903E401090B121B002A01DC002010BDF4 +:1006E000C900440F0C43C100E018D205801800F087 +:1006F00079F810BD0122D207002800DB101A00296A +:1007000000DB511A814270470122D207002800DB2A +:10071000101A002900DB511A88427047F0B51FB447 +:100720000646002082B005464024019100901BE05F +:10073000019922460F46304600F030F8049A059B96 +:10074000801A994110D310461946224600F016F837 +:10075000361A8F410197224601200021009F00F0A8 +:100760000DF838184D4100902046641E0028DFDC4B +:10077000019B00982946324607B0F0BD10B5202AEB +:1007800004DB0146203A9140002010BD9140202317 +:100790009C1A0346E3401943904010BD10B5202A2F +:1007A00004DB0846203AD040002110BD0B46D34060 +:1007B000D0402024A21A91400843194610BD10B51C +:1007C000202A06DBCB170846203A1041C1170B43FD +:1007D00006E00B461341D0402024A21A9140084362 +:1007E000194610BD002904DA401C490001D1400817 +:1007F0004000704770B40024050C05D1102400049B +:1008000002D1002921D01124050E01D100020834A3 +:10081000050F01D10001241D850F01D18000A41C0A +:10082000002801DB4000641C002908D020252E1B75 +:100830000D46F540A14000D001212943084301069F +:100840001B1B000ADB1D02D5002070BC7047DB05B6 +:10085000181880180029F8DA401C4900F5D170BC3E +:1008600040084000704710B5002B08DA0024401CF7 +:10087000614192185B411A4301D14008400010BD0C +:10088000F0B51FB482B005460C0003D0084600F056 +:1008900091FB02E000F08EFB2030024600902146E2 +:1008A0002846FFF76BFF049B059A04460F46184342 +:1008B0001143084314D0184610431BD00098402120 +:1008C0000A1A18460599FFF769FF05460E46009A71 +:1008D00005990498FFF752FF084305D0012004E072 +:1008E0002046394607B0F0BD0020C11705430E432E +:1008F0002C43374300990E986305401A7905E40AA2 +:1009000000220C43FD0A0A3002D500200146E9E727 +:100910000105101969410C9C0D9D00196941FFF7F3 +:10092000A2FFDFE7F0B50C465C4085B0E40FE407BA +:1009300003944C0000266408590094464908024676 +:100940000296224321D062460A431ED06200570D10 +:100950004A000E032303550D012402462C492405A9 +:10096000781B1B0B360B401823432643614600902F +:100970001C46501AB44103D30098401C009002E07A +:10098000921800985B41002803DA0020014605B068 +:10099000F0BD0020012109050746864611E06446A6 +:1009A0001D46141BB54106D36546521BB341744620 +:1009B00007430C43A646CD07400849082843921830 +:1009C0005B4105460D43EAD11046184313D06046FB +:1009D000194650407140084306D06046101AB34192 +:1009E00006D20122002306E000220123DB0702E0F9 +:1009F0000122D2435310009874460105381C61410E +:100A0000029C039D00196941FFF72DFFBFE700001D +:100A1000FD0300004A0009030123090B1B051943CC +:100A20000A4B10B5520D9A4202DA0020014610BD61 +:100A3000064B34339A4203DC9A1AFFF7AFFE10BD1F +:100A4000034BD218FFF79AFE10BD0000FF03000011 +:100A5000CDFBFFFF10B5002904DB0124E407404271 +:100A60008C412146002B04DB1C460123DB0752424C +:100A7000A341994200D1904210BD0000064C0125CF +:100A8000064E05E0E36807CC2B430C3C9847103436 +:100A9000B442F7D3FFF718FBA4B70100C4B70100B5 +:100AA00070B58C180578401C6B075B0F01D103787B +:100AB000401C2A1106D10278401C03E006780E7013 +:100AC000401C491C5B1EF9D12B0705D40023521E84 +:100AD0000DD40B70491CFAE70378401CCB1A921C0A +:100AE00003E01D780D70491C5B1C521EF9D5A14214 +:100AF000D8D3002070BD000010B50548016800295A +:100B000001D000208847172003F094FE10BD00009C +:100B100018020700F8B5134F002416E03819407981 +:100B2000410111480D18686800280DD0284602F0D0 +:100B300011F9C6B2002E07D06A68314628469047A0 +:100B40003146284602F0FAF8641C3879A042E5DC08 +:100B50000649386809680842DED1072003F06AFEBA +:100B6000F8BD00001821070084020700005400406F +:100B700010B5002002F054FE10BD10B5012002F0A7 +:100B80004FFE10BD10B5022002F04AFE10BD10B598 +:100B9000032002F045FE10BD10B5042002F040FE17 +:100BA00010BD10B5052002F03BFE10BD10B50620AB +:100BB00002F036FE10BD10B5072002F031FE10BD68 +:100BC000B42303A205A1022008F0FEFAFEE700000C +:100BD0006472765F636F6D6D6F6E00005B25735D91 +:100BE0002028253034642920456E746572206861A0 +:100BF00072646661756C7420696E7465727275706A +:100C0000742E0D0A000000007CB51D4D2C68A868EC +:100C100004401C4EA00702D5716800208847E007F9 +:100C20000DD017484038406B17490969732301916B +:100C30000090DB0015A218A1022008F0C5FA2007D9 +:100C400005D5244B11A224A1022008F0BDFAF068BA +:100C5000002807D0E10605D509498039096B00292C +:100C600000D18047B068002802D0610700D58047D6 +:100C7000686820436860012003F0DCFD7CBD000053 +:100C800080080040D4010700000C004068616C5FE0 +:100C90007673796E630000005B25735D2028253034 +:100CA000346429204C4344433A4C4344435F494E07 +:100CB000545F444255465F554E444552554E21209F +:100CC00025642C6D656D635F7265616420257820F5 +:100CD000000000009D0300005B25735D2028253087 +:100CE000346429204C4344433A4C4344435F494EC7 +:100CF000545F5352435F44504948414C545F494EFE +:100D0000545F4D534B21000010B5002003F044F810 +:100D1000002802D0002003F00DF8012003F03CF879 +:100D2000002802D0012003F005F8022003F034F877 +:100D3000002802D0022002F0FDFF032003F02CF86F +:100D4000002802D0032002F0F5FF042003F024F86D +:100D5000002802D0042002F0EDFF052003F01CF86B +:100D6000002802D0052002F0E5FF062003F014F869 +:100D7000002802D0062002F0DDFF072003F00CF867 +:100D8000002802D0072002F0D5FF082003F004F865 +:100D9000002802D0082002F0CDFF042003F04AFD15 +:100DA00010BD00007CB5114AD06B104D40352C6849 +:100DB0006968AE68084208D0D16B019100900C4B75 +:100DC0000CA20EA1022008F0FFF9344209D02868D5 +:100DD000EF2301909B0007A214A10094022008F0C9 +:100DE000F3F9032003F026FD7CBD000080040040E1 +:100DF000B70300007461755F6C6F67005B25735DFE +:100E00002028253034642920696E745F7374305B48 +:100E10003078253038785D6166746572207265615E +:100E2000645B3078253038785D0A00005B25735D9F +:100E30002028253034642920696E745F7374315B17 +:100E40003078253038785D6166746572207265612E +:100E5000645B3078253038785D0A000010B51520C5 +:100E600003F0E8FC07488168C90709D081680122BE +:100E70001143816004480168002901D0002088479F +:100E800010BD0000006C00401C020700044801680F +:100E9000491C01604168002901D0002008477047C3 +:100EA0000802070010B5002003F052FD10BD10B578 +:100EB000012003F04DFD10BD10B5022003F048FDE8 +:100EC00010BD10B5032003F043FD10BD10B505485B +:100ED0000168002901D000208847002003F0AAFC07 +:100EE00010BD00008002070010B5054841680029C8 +:100EF00001D000208847122003F09CFC10BD0000A8 +:100F00007802070010B5002003F0A2F9002805D0F0 +:100F1000012006F013FB012003F04CF90E2003F032 +:100F200097F900281AD0114C6068002812D03C3084 +:100F300010D001F043FF002803D0012001F086FE0D +:100F400008E06068C030C07A02280BD0012000049D +:100F500001F07CFE0120800303F02CF9052003F052 +:100F600069FC10BD002001F071FEF3E7A006070048 +:100F70000FB410B503A9044B044A029800F0B8FB63 +:100F800010BC08BC04B01847E95001001404070065 +:100F900037B514460846064B6A46214600F0A8FBC2 +:100FA00004466946002000F03FFF20463EBD000099 +:100FB000291E01002021020C01D010211046020A36 +:100FC00001D010460839020901D01046091F8208D5 +:100FD00001D01046891E420801D0881E7047081AA9 +:100FE000704730B47446641E2578641CAB4200D24E +:100FF0001D46635D5B00E31830BC18477047000076 +:1010000001FEF7FE4010611072614D180F330A01A6 +:1010100098E685AB006000000000000000000001C1 +:1010200056000000A00507000000000000000001BD +:101030000001000040000040040004001000050111 +:1010400000000000F8B5584BDC68584F3968574825 +:101050008030066B0846564D304319D0554A002063 +:10106000506058600120506058602878032805D0EF +:101070000091514B51A253A108F0A6F828780328FB +:1010800006D04D4B4DA25B1C58A1009608F09CF871 +:10109000A0070AD52878032807D0396AA72300912A +:1010A0009B0046A25BA108F08FF8644E60070AD54A +:1010B0002878032807D03168152300915B013FA2EF +:1010C0005FA108F081F820070AD52878032807D007 +:1010D000316AA92300919B0038A263A108F074F83B +:1010E000E0060CD52878032809D054494031096816 +:1010F00055230091DB0031A265A108F065F8E003FB +:101100000AD52878032807D03969AB2300919B00C2 +:101110002AA26AA108F058F8A0030AD52878032863 +:1011200007D0396B2B2300911B0124A26CA108F07E +:101130004BF8600317D5316948070AD5287803288A +:1011400011D057230091DB001CA26EA108F03CF8DF +:1011500009E02878032806D0AF2300919B0017A24E +:1011600073A108F031F820030AD52878032807D0A6 +:10117000316B114B00912B3310A277A108F024F8AA +:1011800060020CD52878032809D02C4980310969E0 +:10119000094B0091303309A278A108F015F802201C +:1011A00003F048FBF8BD000000280040002A004082 +:1011B0007402070000290040960200006473695F12 +:1011C000727800005B25735D202825303464292067 +:1011D0004453495F52585F4552525F5048595F46E9 +:1011E0004154414C5B307825785D0A005B25735D86 +:1011F00020282530346429204453495F52585F45E4 +:1012000052525F4552525F5250545B307825785DA0 +:101210000A0000005B25735D2028253034642920F6 +:101220004453495F52585F4552525F4453495F46A9 +:101230004154414C5B307825785D0A00402A0040DB +:101240005B25735D20282530346429204453495F91 +:1012500052585F4552525F4444495F464154414CA5 +:101260005B307825785D0A005B25735D202825308A +:10127000346429204453495F52585F4552525F49B4 +:1012800050495F464154414C5B307825785D0A00F7 +:101290005B25735D20282530346429204453495F41 +:1012A00052585F4552525F4649464F5F464154414E +:1012B0004C5B307825785D0A000000005B25735D8B +:1012C00020282530346429204453495F52585F4513 +:1012D00052525F5048595B307825785D0A00000013 +:1012E0005B25735D20282530346429204453495FF1 +:1012F00052585F4552525F4453495B307825785DC0 +:101300000A0000005B25735D202825303464292005 +:10131000436F6D7072657373696F6E5F656E206386 +:1013200068616E67655B307825785D0A00000000B3 +:101330005B25735D20282530346429204453495FA0 +:1013400052585F494E545F53545F4444495B307870 +:1013500025785D0A000000005B25735D202825309C +:10136000346429204453495F52585F4552525F49C3 +:1013700050495B307825785D0A0000005B25735D7D +:1013800020282530346429204453495F52585F4552 +:1013900052525F52585F54524947474552535B304F +:1013A0007825785D0A000000FEB55A48C16880685B +:1013B0000291019000240021574880680207120F13 +:1013C000564880680007000F002A00D01146002808 +:1013D00001D001240146A00001AA15586869C0B2D5 +:1013E000AA681206920F4E4E022905D0042934D065 +:1013F000062963D00C292FD1002A0FD0302060435A +:10140000871907E0E86F800713D501222146284697 +:1014100003F044FCB8880028F4D10AE0302060438F +:1014200080198088002804D001222146284603F034 +:1014300035FC3020604383199888002862D100224F +:101440000221284603F06AFBCA209862DA69002A62 +:1014500058D0196A986A904754E0002A0FD030207B +:101460006043871907E0B889002813D0002221467D +:10147000284603F013FCE86F0007F4D40AE030209C +:10148000604380198089002804D000222146284624 +:1014900003F004FC3020604383199889002831D17F +:1014A00000228121284603F039FBCB20D862DA697B +:1014B000002A27D0196AD86A904723E0022805D06D +:1014C000802803D0082801D004281BD120463021D1 +:1014D00048438619B089002808D0284603F0EAFA64 +:1014E000F269002A02D0D120316A9047B0880028E2 +:1014F00008D0284603F0F8FAF269002A02D0CF207B +:10150000316A904707A0006800906846005703F0D2 +:1015100091F9FEBD78B601000068004000980040D7 +:10152000282107000D0D0000002809DBC106C90EA7 +:101530000120884003490860BFF34F8FBFF36F8FCE +:101540007047000080E100E0002805DBC106C90EFD +:1015500001208840014908607047000000E100E078 +:1015600002E008C8121F08C1002AFAD17047002003 +:1015700001E001C1121F002AFBD17047F0B51FB472 +:1015800086B00998089A030D0021024314D05148EF +:10159000514A1818504305141198012810981AD070 +:1015A000281A401C00264D4F4D4900960191049089 +:1015B000002812DA444211E01198012449A30128BD +:1015C00001D11098C1430698119A84600360C260EB +:1015D00041600BB0F0BD4042E4E704462105002025 +:1015E0003F4A001C51410391029012E0E00707D0EE +:1015F00032463B4601990098FEF79CFF019100900E +:1016000032463B4610461946FEF794FF06460F4603 +:101610006410002CEAD10498039B0028029A0999CF +:10162000089806DAFEF786FF019B009AFEF782FF14 +:1016300005E0FFF777F9019B009AFFF773F904467D +:101640000E460022284BFFF705FA03D80020C043BE +:10165000014607E00022254B20463146FEF7B8FE42 +:10166000FFF7D8F9102409E0002C0ADB0A22002336 +:10167000FFF754F8079B30321A55641E02460A439E +:10168000F2D11122641C079B121B1C19119B012B08 +:1016900003D0012308430ED10AE0084304D01120EF +:1016A00010900020119077E71098151A6D1E0BE02E +:1016B0001098824202DD00236D1C03E0824201DAB1 +:1016C00000236D1E002BEED0069811998260C16038 +:1016D00030C07EE701FCFFFF104D00000000144009 +:1016E0000000F03F300000000000F0430000E03F49 +:1016F000FFB597B00646002518E2252877D10024CB +:101700002746FD49049400E00443761C327801200A +:10171000203A90400842F7D130782A280ED0022291 +:10172000307801463039092916D804990A235943DB +:10173000303940181443761C0490F1E7189802C819 +:1017400004911890002904DA012040030443484220 +:10175000049002200443761C30782E2814D10420F3 +:1017600004437078761C2A2809D11898761C80C802 +:10177000189009E00A214F43303FC719761C307892 +:10178000014630390929F5D930786C2810D006DCAB +:101790004C281AD068280ED06A2817D104E0742883 +:1017A00013D07A2812D110E00120400504430CE048 +:1017B0000121090501E0032109050C4371788142EB +:1017C00003D1012000052418761C761C3078119076 +:1017D00066280BD013DC58287DD009DC00287BD08C +:1017E0004528F6D04628F4D047281AD1A5E118E0BC +:1017F000632835D0642870D0652812D19DE1702807 +:101800006CD008DC6728F1D069287BD06E280DD019 +:101810006F2806D1BAE073282ED0752871D07828A9 +:1018200059D01A9A199990476D1C7EE16002400FB9 +:10183000022809D003280DD00428189801680DD07B +:101840000D60001D189070E11898EA1701680D608E +:101850004A60F6E7189801680D80F2E70D70F0E72E +:1018600018986A4601781172001D18900020507275 +:1018700002A80090012005E0189802C818900020E6 +:101880000091C04361070DD5002101E00199491C79 +:101890000191B94212DA8142F8DB009A515C0029C9 +:1018A000F4D10BE0002101E00199491C0191814232 +:1018B000FADB019A0099895C0029F5D10199049815 +:1018C0001A9B471A21463846199A00F097FA01994F +:1018D000401945180BE04FE02CE113E04EE0009872 +:1018E00000990078491C00911A9A1999904701981B +:1018F000401E0190401CF2D1214638461A9B199A8D +:1019000010E137E00A200021009001916002410FB0 +:10191000022907D0189A01CA1892C21794460329BF +:1019200008D00AE01898C01DC108C90005C918915F +:10193000944607E000B2C2179446042902D140B28F +:10194000C1178C4600226146944506DA0A460021FA +:10195000404291418C462D2102E0210504D52B21E6 +:101960006A461173012103E0E10701D02021F7E766 +:10197000029155E00A200AE0102008E010200090B3 +:101980000021042004430191082703E008200021DE +:10199000019100906002410F022907D0189A01CAF4 +:1019A000189200229446032908D008E01898C01D18 +:1019B000C108C90005C91891944603E080B2042902 +:1019C00000D1C0B200210291210729D511997029B7 +:1019D00006D0009A1021019B4A401A4305D00EE020 +:1019E00040216A461173012108E06146014306D097 +:1019F00030216A4611731199517302210291009AA4 +:101A00000821019B4A401A430AD16146014301D192 +:101A1000610705D530216A46117301217F1E0291AD +:101A20001199582904D035A10E910DA90D910DE001 +:101A300037A1F9E76146019B009AFEF76FFE0E9B06 +:101A40008C469B5C0D9A521E0D92137061460143A9 +:101A5000F0D10D9805A9081A20300190600703D530 +:101A600001200004844300E001270198874201DD42 +:101A7000381A00E0002001990090411802980918D6 +:101A80000498401A0490E00306D421461A9B199A40 +:101A9000049800F0B3F94519002706E003A81A9A44 +:101AA000C05D199990476D1C7F1C02988742F5DB39 +:101AB000E0030CD521461A9B199A049800F09EF970 +:101AC000451904E01A9A3020199990476D1C009925 +:101AD000481E00900029F5DC08E00D980D9900786B +:101AE000491C0D911A9A199990476D1C0199481E2D +:101AF00001900029F1DC63E1092801003031323323 +:101B00003435363738396162636465660000000039 +:101B10003031323334353637383941424344454623 +:101B20000000000000F05AF94519761C30780028B2 +:101B300000D0E2E528461BB0F0BD600700D40627C0 +:101B40001898C01DC108C90048680A680831C30F49 +:101B5000DB071891190001D09CA108E0210501D5EF +:101B60009BA104E0E10701D09AA100E09AA1430003 +:101B700011985B08109165280CD006DC452809D027 +:101B800046281DD0472841D141E0662818D0672853 +:101B90003CD13CE00021112F01DB112000E0781C3A +:101BA0000191009008A911A8FFF7E8FC139905918D +:101BB0000021119A15927F1C12980197009150E014 +:101BC0000120C00703900120019008A9009711A8E7 +:101BD000FFF7D4FC139A149905920022119B0092EE +:101BE00012981593059A0192002901D0104602E03F +:101BF000791C40180190381A01D5019804E0404240 +:101C0000401E0090781C0190C01B029043E0012F01 +:101C100000DA01270021112F01DD112000E03846F4 +:101C20000191009008A911A8FFF7A8FC139905914C +:101C3000119A0021129815920091019721070CD456 +:101C40000599B94201DB019900E00191012904DD08 +:101C5000159A491E515C302906D0B84201DA011D9F +:101C600005DA0121029115E00199491EEDE70028EE +:101C700005DC0099411800910199091A03E0019AC5 +:101C8000411C914200DD01910099401A401C0290D4 +:101C90000120C0070390200706D4029901988142D1 +:101CA00002DB0020C043029000206946C87707AFDE +:101CB000012103980337C907884224D002201190DC +:101CC0002B201290039800280CDA404203902D201C +:101CD000129007E00A210398FEF738FA30317F1E90 +:101CE000039039701199481E11900029F2DC039875 +:101CF0000028EFD1791E1298087030782021084012 +:101D00004530BF1E387006A8C01BC01D0390109838 +:101D10000078002800D00120019941180298C017CE +:101D20000918039809180498401A401E0490E0030B +:101D300006D421461A9B199A049800F05FF84519B9 +:101D400010980078002803D01A9A199990476D1CB2 +:101D5000E00324D521461A9B199A049800F04EF806 +:101D600045191CE00098002807DB00990598884277 +:101D700003DD1598405C199901E0199930201A9AF1 +:101D8000904700986D1C401C00900298401E0290E5 +:101D9000002804D11A9A2E20199990476D1C019998 +:101DA000481E01900029DDDC05E038781A9A7F1C76 +:101DB000199990476D1C0399481E03900029F4DC83 +:101DC00021461A9B199A0498ACE600002D000000E9 +:101DD0002B0000002000000000000000F8B50446C1 +:101DE00000251E461746880404D405E03946202005 +:101DF000B0476D1C641EF9D52846F8BDFFB50446F2 +:101E0000002581B01E46C80301D5302700E02027F9 +:101E1000880404D505E038460399B0476D1C641E5C +:101E2000F9D5284605B0F0BD0A68531C0B60107048 +:101E300070470000F0B58DB006460C461746042CDE +:101E40000DD1202060210A220323009201910290EB +:101E500000221C213D48006803F03AFE73E0A12CEB +:101E600020D1F620212125222B2309930A920B91C0 +:101E70000C9006201121AA22F323059306920791C4 +:101E800008900120C6210C22212302920193009286 +:101E9000039104900D2300221C212C48006803F0BC +:101EA00017FE50E0DA2C09D10A200123002221215B +:101EB00000902648006803F00BFE44E0DB2C09D1BB +:101EC000682001230022212100902048006803F0AF +:101ED000FFFD38E0DC2C09D107200123002221215D +:101EE00000901A48006803F0F3FD2CE0D62C11D1C5 +:101EF000862061218522EA230193029203910490B6 +:101F0000F020052300221C2100901048006803F0F7 +:101F1000DFFD18E00D48006803F0DAF905460020FF +:101F200001230246212100900848006803F0D0FDFB +:101F300000BFDD2306A207A100200195009407F051 +:101F400043F900BF00BF01200DB0F0BD0000070045 +:101F5000703870005B25735D20282530346429209B +:101F6000725B25785D205B25645D2065727221219E +:101F7000212121210A0000007CB505460C46E068BD +:101F800000781E490880084600780006000C08808A +:101F9000E0684078098808431849088008460088A6 +:101FA000002812DB08460088154988420DDC1349D9 +:101FB0000988C439134A514308461149CE39FEF7FE +:101FC000DBF8001D1049088008E00C4800880C4927 +:101FD000884203DD0B48001D0B4908800A48007841 +:101FE0000949098809125123032200910190002117 +:101FF000392004F013F901207CBD0000180007000F +:10200000FF0F0000FB0900001A00070038B5044666 +:102010000D4600BF06480078FF23653305A206A1E0 +:102020000090002007F0D0F800BF012038BD00006C +:1020300008000700703870005B25735D202825308C +:102040003464292064697370206F66662025640AF1 +:102050000000000070B504460D46154800780028C1 +:1020600014D0802213491448006803F015FD12486B +:10207000006803F0EDFD00200D49087000BFFF234C +:102080003D330EA20EA107F09FF800BF29230222C4 +:102090000021052004F0C2F800BFFF23433307A24C +:1020A0000EA1002007F090F800BF012070BD0000D5 +:1020B0000C0007009C00070000000700703870004B +:1020C0005B25735D20282530346429207070735F90 +:1020D0007570646174655F310D0A00005B25735D86 +:1020E000202825303464292064697370206F6E20A5 +:1020F0000A00000070B504460D4628230122002185 +:10210000052004F08BF801211448006803F0A2FFB9 +:102110000A2000F0E1FC002006F060F90A2000F03F +:10212000DBFC102301220021052004F077F81420A5 +:1021300000F0D2FC0021082004F096FC012208499E +:10214000104604F039FC00BFFF23A43305A206A10A +:10215000002007F039F800BF012070BD040007001F +:10216000FD210100703870005B25735D202825304B +:1021700034642920656E74657220736C6565702007 +:102180006D6F64650A00000070B504460D4600BF1F +:10219000FF23BD3303A204A1002007F015F800BF00 +:1021A000012070BD703870005B25735D20282530DC +:1021B000346429206578697420736C656570206DBE +:1021C0006F6465200A00000070B505460C46A068E3 +:1021D00001280ED1E0680078182805D100210648B2 +:1021E000006803F037FF04E003210348006803F0B0 +:1021F00031FF012070BD00000400070010B5044647 +:1022000000BF084B08A209A1002006F0DDFF00BFB7 +:1022100001200F49087002220021084604F0CCFB7F +:1022200010BD0000DC060000703870005B25735D97 +:10223000202825303464292061705F7273746E5FCA +:1022400070756C6C5F646F776E5F63620A0000008C +:102250000A00070010B50446012004490870022254 +:102260000021084604F0A8FB10BD0000090007008B +:10227000FEB506460C460025E0680578302D0CD1E9 +:10228000FF20CF2111229723009201910290042276 +:102290000021392003F0C2FF0DE0202D0BD1FF20DB +:1022A000CF21002297230092019102900422002165 +:1022B000392003F0B3FF0120FEBD10B500F03CF85B +:1022C00000BF06F02CF80028FBD000F00DF806F057 +:1022D000B3F801220821002006F0ECF800F0BCF869 +:1022E00000F03AF910BD00001FB5054B0FCB6C464E +:1022F0000FC404242146684604F0ECFA1FBD000018 +:102300003CB5010010B500F099FA0949094806F0FA +:1023100079FC0121082004F032FB5A2000F0DCFB9C +:10232000012006F05BF81F2006F0B2F810BD000097 +:10233000F09401004C20000010B5394800680028D6 +:1023400003D102F03BFF3649086015208001344973 +:1023500009680860BB20000131490968486087208E +:10236000C0002F49096888604B2040012C4909684A +:10237000C86002202A4909680874012028490968B0 +:10238000487400202649096888740421244800689C +:1023900020308174224800682030C1740121204817 +:1023A0000068203001751E480068203041751D48C6 +:1023B0001B49096888631C49194800688030C1635B +:1023C0001A4917480068803001640C2114480068DD +:1023D00081830121124800681830017314491048A4 +:1023E0000068803041640E4800682030407D01283C +:1023F00005D180220F490A48006803F04DFB0848C8 +:10240000006802F075FF0648006803F0F1FB00BFAA +:10241000094B0AA20AA1002006F0D6FE00BF10BD9B +:102420000000070000105E5F90940100351E01005F +:10243000958801001C0007004706000070387000F6 +:102440005B25735D2028253034642920727820694B +:102450006E6974210A0D000010B535480068002827 +:1024600003D103F045FD324908600021304800687F +:102470002030017604212E480068203001750221A9 +:102480002B4800682030417601212948006820301F +:10249000817601202649096888611320244909684A +:1024A000C8610C2022490968086201202049096896 +:1024B00048621B201E49096888624D201C49096832 +:1024C000C862152080011A4909680860BB20000114 +:1024D0001749096848608720C00015490968886065 +:1024E0004B20400112490968C86002201049096860 +:1024F000087401200E490968487400200C490968D5 +:1025000088740C480A49096808630948006803F0A0 +:1025100057FD00221146104603F098FD00BF064B00 +:1025200006A207A1002006F04FFE00BF10BD00006C +:102530000400070000006842750600007038700053 +:102540005B25735D20282530346429207478206948 +:102550006E6974210A0D000010B5FFF7D3FE1A480A +:10256000006803F07DFD00211748006803F072FD4C +:102570000120164908701448006800683F210901CD +:1025800088420CD1802212491248006803F084FA74 +:102590001048006803F05CFB00200F4908705020D1 +:1025A00000F09AFA292301220021052003F036FECB +:1025B0001F2005F06DFF00BF084B09A209A10020F4 +:1025C00006F002FE00BF10BD04000700080007006F +:1025D0009C000700000007000C000700C506000073 +:1025E000703870005B25735D202825303464292005 +:1025F00074785F7374617274200A000010B50E481D +:10260000007800280DD000BF0C4B0DA20DA10020BA +:1026100006F0DAFD00BF022000F048F8002006496D +:10262000087010480078002805D0022000F01CF83F +:1026300000200C49087010BD0A0007008B0700003D +:10264000703870005B25735D2028253034642920A4 +:102650006170705F73797374656D5F70726F6365BD +:1026600073730A000900070010B5044605F052FE16 +:10267000FFF723FE00BF044B04A205A1002006F0D3 +:10268000A3FD00BF10BD00003607000070387000C9 +:102690005B25735D20282530346429207379737499 +:1026A000656D20726573756D650A000038B5054665 +:1026B0003148006803F01CFD2F48006803F034FC2B +:1026C0002E48006803F0ACFA2C48006802F0B6FD12 +:1026D0000021032004F053F900202949087005F077 +:1026E0005DFE042005F023FE002D0ED100222549B9 +:1026F000012004F061F905F0D6FD00BF224B23A2B2 +:1027000023A1002006F060FD34E0012D25D100BF9B +:102710001D4B1B1D1DA227A1002006F055FD00BF6B +:102720000221112005F008FE05F0C2FD0446112C1F +:1027300003D10120284908700EE000BF124B12336C +:1027400012A226A10020009406F03EFD00BF002248 +:102750000C49012004F030F90CE00321022005F0BF +:102760008DFD00BF084B1A3308A22BA1002006F0F4 +:102770002BFD00BF38BD000004000700000007006B +:102780000800070055220100620700007038700041 +:102790005B25735D20282530346429205057525F13 +:1027A0004E4F524D414C5F534C4545505F4D4F4449 +:1027B000450A00005B25735D2028253034642920FC +:1027C0005057525F53544F505F534C4545505F4DE7 +:1027D0004F44450A00000000090007005B25735DB7 +:1027E000202825303464292077616B6575705F6916 +:1027F0006F202564204649584D4520746F756368E5 +:102800002077616B65757020636F6E7665727420DA +:10281000746F2041500A00005B25735D202825302D +:10282000346429205057525F444545505F534C450E +:1028300045505F4D4F44450A0000000010B501218E +:10284000072004F011F90A2000F046F900210720C2 +:1028500004F00AF90A2000F03FF90121072004F0F2 +:1028600003F9282000F038F910BD000010B5044825 +:1028700005F040FE0021E120400206F08BFC10BD77 +:1028800000B4C404F8B54A002B4B520DD6182B4A9D +:102890000C460546142E2BDA002E12DA284BFDF7D3 +:1028A00097FD00221346FEF7D5F840D2002C03DA3C +:1028B0000124E40700253AE02046284337D0214C84 +:1028C00014E0214F0B46F7403B402B4331D01C4BCB +:1028D000FDF77EFD00221346FEF7BCF827D2002C40 +:1028E00003DD01200005F0400419BC4300251EE073 +:1028F000332E1EDC33460027143BFF43DF403842B3 +:1029000017D00F4BFDF70EFE00221346FEF7A2F87C +:102910000DD2002C0ADD142E0CD03420811B012096 +:1029200088404019A84200D2641C0546BD43214698 +:102930002846F8BD641CF9E701FCFFFF9C75008880 +:102940003CE4377E0000F03FFFFF0F000FB4069914 +:10295000009888420BD107990198884207D10899BD +:102960000298884203D109990398884202D0002036 +:1029700004B070470120FBE77CB56424134D1FE0D1 +:10298000082001F065FC002801D001207CBD2868EA +:102990004007800F14D00E484069296800910190CB +:1029A00048230CA20FA1022006F00EFC01F0FAFB56 +:1029B000022001F0FFFB042001F0FCFB00207CBDA5 +:1029C0002046641EE4B20028DAD17CBD002000401D +:1029D0000021004068616C5F696E746C5F646373B2 +:1029E000000000005B25735D202825303464292019 +:1029F0006572205B25785D5B25785D200A0000000C +:102A000030B51349C87A0A7A904201D1002030BD0E +:102A1000887AFF2219320F4B5043C01802461832F1 +:102A2000C2608A7AFF2519356A43D2180124FF3221 +:102A30000132D4750B7A8A7A5B1E9A4202D1002247 +:102A40008A7201E0521C8A72CA7A521CCA7230BD64 +:102A50000C210700AC10070004480F21017200216F +:102A600041728172C1720120704700000C21070081 +:102A70000E48C17A002910D0417AFF2319335943F7 +:102A80000B4B0022C918FF310131CA75037A417A14 +:102A90005B1E994203D1427203E000207047491C3B +:102AA0004172C17A491EC172012070470C21070092 +:102AB000AC1007000648C17A002906D0407AFF21F1 +:102AC00019314843034940187047002070470000FF +:102AD0000C210700AC10070010B5044603E07D2070 +:102AE000C00000F005F82046641E0028F7D110BD94 +:102AF00010B50022084B1978022800D210BD05E05D +:102B00000A4600BF1346521E002BFBD10346401E4F +:102B1000002BF5D100BFF1E71402070010B501F05A +:102B200031FC10BD0D4A002903D09168014391602A +:102B3000704701010DD50121C9068843936883437D +:102B400093609068C002800FF2D1906888439060D3 +:102B50007047916881439160704700000080004099 +:102B600010B5114801680906890F40684006C20F78 +:102B70000E480F4B0F4C022902D0012906D00AE063 +:102B80000D48596AA14206D10C4804E00C48596A24 +:102B9000A14200D10B485106090E002900D10121A4 +:102BA000FDF7D4FA10BD00000080004000B4C4045A +:102BB000008400404004200300A3E11180B2E60E2F +:102BC00000C2EB0BC037F4090249C8600020C8609E +:102BD000704700000080004010B5010AC2B20748EB +:102BE00003680C24A34389000B4303604168E3039B +:102BF000994352041143416010BD00000080004021 +:102C0000024A536883430B4353607047008000407F +:102C100030B501020A0E0104090EC3B20A48046865 +:102C20008501AC4352051443046002684401A24389 +:102C300009050A43026041680722520291435A0281 +:102C40001143416030BD00000080004030B50102FA +:102C50000A0E0104090EC3B2094804688515AC4385 +:102C600012021443046042683024A24309010A435B +:102C70004260416808229143DA001143416030BD4F +:102C80000080004010B5010AC2B207480368C414AE +:102C9000A343C9020B4303604168831499431203A1 +:102CA0001143416010BD00000080004010B5010AD2 +:102CB000C2B2074803688414A34309030B430360AB +:102CC00041680323DB039943D2031143416010BDE4 +:102CD00000800040012181400348C2680A43C2606D +:102CE000C2688A43C26070470080004010B5010A84 +:102CF000C2B207480368C024A34389010B430360A1 +:102D000041684023994392011143416010BD000086 +:102D10000080004010B5010AC2B2074803680415DC +:102D2000A34389020B4303604168FF238133994326 +:102D3000D2011143416010BD0080004009070078B6 +:102D4000090F80008140024842681143416070478A +:102D50000054004001788900024A1268007CCA4091 +:102D6000104070470054004004488068800104D53A +:102D70000348016A49084900016270470080004029 +:102D80008024004010B50A4B9B689B010FD5094B6E +:102D9000C900491C9200114300040143D8070143B4 +:102DA000054A106A98430843106201F027FB10BDE2 +:102DB000008000400D0007808024004005488068A6 +:102DC000800101D4FF2070470348006A4003400F90 +:102DD0007047000000800040802400400549202208 +:102DE000002803D0086A904308627047086A1043BD +:102DF0000862704780240040FFB585B00F9D109C8D +:102E00000F460799059800F09DF802902846FDF7B7 +:102E1000F9FB384E01463046FDF790FA03900E98C4 +:102E2000FDF7F0FB01463046FDF788FA01460398AE +:102E3000FDF784FA3049FDF744FA0490012C47D09D +:102E40000799059800F0A6F804462846FDF7DAFB36 +:102E5000284E01463046FDF771FA05460E98FDF7FB +:102E6000D1FB01463046FDF769FA01903846FDF77F +:102E7000C9FB06460898FDF7C5FB07460299FDF712 +:102E800020FA1E49FDF7C4F92946FDF71AFA314622 +:102E9000FDF754FA054638460199FDF712FA214626 +:102EA000FDF74CFA064631462846FDF72DFC12D2B6 +:102EB00031462846049CFDF7FCF90199FDF73EFADE +:102EC0002146FDF7A5F98121C905FDF7A1F907E024 +:102ED0000124A407B9E78121C9050498FDF798F9F1 +:102EE000FDF7D8FB0022064BFDF772FAFDF7B4FBA5 +:102EF00009B0F0BD286B6E4E0000A0410000C0403C +:102F00000000E03F10B50424002809D0022001F0A1 +:102F100091FC0121022001F0E3FC0948046010BD8E +:102F2000022001F087FC0021022001F0D9FC0448B6 +:102F300080300460BFF34F8FBFF36F8F10BD000070 +:102F400000E100E000B50246002902D07F20C00564 +:102F500000BD0C481300FEF744F80B07080B0707E9 +:102F60000D0F080707110700F2E70120800700BDD9 +:102F7000054800BD054800BD054800BDFF2080058F +:102F800000BD000000004040000010400000704004 +:102F900000009040002901D004487047072802D063 +:102FA0007F20C00570470120800770470000C040A7 +:102FB00002484069C007C00F704700000028004069 +:102FC000024880684006C00F70470000002800409B +:102FD00001484069000C7047002800400349012067 +:102FE00008604860024948607047000000290040BE +:102FF0000028004005490A15002803D0486B1043FB +:1030000048637047486B904348637047802A00408C +:1030100030B5074CA568ED08ED00401E05430420BF +:103020000543A5608800510008431843206130BD66 +:1030300000280040024901220A61486170470000EF +:10304000002B004005494022002803D08868104327 +:103050008860704788689043886070470028004007 +:10306000014A80180160704700280040024A106041 +:103070000020506091607047002C004005490822F4 +:10308000002803D0886810438860704788689043A0 +:103090008860704700280040034A916830239943B4 +:1030A000000101439160704700280040074A5060CA +:1030B0000648C038002904D041680122114341600C +:1030C000704741684908490041607047002B004043 +:1030D00005498A14002803D0886810438860704727 +:1030E000886890438860704700280040FEB50C4611 +:1030F00016463649FDF72AF8354988470546032024 +:103100000190344800F012FF324FA8793F1D430070 +:103110004422314D3946381FA8478B201B232222D9 +:1031200000903946381F2D4FB8472E492C4808606B +:103130002C4840384269D208D20032434261002014 +:10314000032E05D9F61E032E01D2304600E00320DF +:10315000244B803B9A690326B606B243800602439D +:103160009A6121480860002C23D0E00705D0194956 +:1031700001238522091D081FA847A00705D5154969 +:1031800001235522091D081FA847600705D51149CD +:1031900000234522091D081FA847200705D50D4912 +:1031A00000239522091D081FA847E00601D502202B +:1031B0000190084C3522241D261F21463046019BD4 +:1031C000A8472146304600F0B9FEFEBD40420F0040 +:1031D00001300200182900400132020001330200D0 +:1031E000CDAB34128084004068245713034900207B +:1031F00008604860024948607047000000290040AC +:1032000000280040890101431002014318040143D2 +:103210000148C1627047000040040040490001437A +:1032200010780002014350784002014390788002F8 +:103230000143D078C0020143107900030143507963 +:1032400040030143907980030143D0790004014396 +:10325000107A40040143507A80040143907AC004FC +:103260000143D07A000601430148816270470000A3 +:1032700040040040014908637047000040040040DA +:103280000649002804D0C86A01221043C86270476A +:10329000C86A40084000C86270470000000400404F +:1032A000014A506091607047C00400400904014326 +:1032B000014881617047000000040040024BD86063 +:1032C00010020843186170470004004002788178BA +:1032D000520011434278C3789200DB0000791A4310 +:1032E000114300010143014841617047000400405F +:1032F0000149486270470000400400400148406BAB +:1033000070470000400400400149486370470000D6 +:103310000004004005490222002803D048691043F8 +:103320004861704748699043486170478004004095 +:103330000649002804D048690122104348617047BB +:103340004869400840004861704700008004004020 +:103350000902401E01430148416270478004004059 +:103360001849486A8007800F401C0A6BD20709D0B1 +:10337000012809D002280BD0032811D0042818D026 +:103380000020704700207047086BC006C00F7047D0 +:10339000086B9021084201D001207047002070473F +:1033A000086B29210901084201D001207047002043 +:1033B0007047086BA9210901084201D0012070471C +:1033C000002070478004004000B50F490300FDF75E +:1033D00008FE0504080C10141800086B4007C00F05 +:1033E00000BD086BC006C00F00BD086B0006C00F13 +:1033F00000BD086B8005C00F00BD086B0005C00F45 +:1034000000BD002000BD000080040040FEB550213A +:103410000A2250434F30FCF799FE441E601C502195 +:1034200048430A21FCF792FE0290474902988847D8 +:103430000646E006C00E0190E005070F80374349BD +:1034400002988847054601F001FB414800F06EFDF7 +:103450003F4901234522091D3E4C081FA0473C4916 +:1034600001233522091D081FA04739490123952250 +:10347000091D081FA047B079354943004422091DA2 +:10348000081FA0473249802002231422091D009002 +:10349000314E081FB0472E492C231522091D081F45 +:1034A000A0472B4990231622091D081FA047284931 +:1034B00030231922091D081FA04725490923172277 +:1034C000091D081FA04722491822091D0097081F3F +:1034D000019BB0472B791E49C02003431222091DCE +:1034E000081FA047A8781A49C30068791022400035 +:1034F000034380200343091D081FA04714491122DC +:10350000091DEB78081FA047114980234222091D9D +:10351000081FA0470E4980235222091D081FA047FB +:103520000B4980238222091D081FA04708498023D8 +:103530009222091D081FA047002001F0A7FA01F000 +:1035400095FA0298FEBD0000013002000131020030 +:10355000B40400400132020001330200C2788378D3 +:1035600012041343044A9361037940791B04000653 +:1035700003430B43D361704780040040014901209D +:10358000486070470004004030B5049D039C8900EA +:103590000143D80001432001014368000143024870 +:1035A000C162026330BD00000004004005490A14F6 +:1035B000002803D0886B104388637047886B904362 +:1035C000886370470004004003498A68120A1202A7 +:1035D00002438A60704700000004004010B50824D0 +:1035E000002809D0032001F025F90B4804600121CF +:1035F000032001F075F910BD0021032001F070F9DE +:10360000054880300460BFF34F8FBFF36F8F0320F6 +:1036100001F010F910BD000000E100E0044A9168DB +:10362000FF231B0299430002014391607047000091 +:1036300000040040034BD863024840300160426000 +:103640007047000000040040074A11610169916061 +:103650004169D1600168516141689161C168D1617E +:10366000806810627047000040040040014900205B +:10367000486070470004004001880A0441680A431A +:1036800007498A638268CA630549C26840310A6093 +:1036900002694A6042698A608069C86070470000B8 +:1036A00040040040384A936B9B089B00034393639C +:1036B00008789315002803D0906B1843906302E0BC +:1036C000906B98439063487801235B02002803D0F5 +:1036D000906B1843906302E0906B984390638878F6 +:1036E00001239B02002803D0906B1843906302E0F3 +:1036F000906B98439063C8780123DB02002803D0C5 +:10370000906B1843906302E0906B984390630B7941 +:1037100001200003002B03D0936B0343936302E06B +:10372000936B83439363487901235B03002803D0A1 +:10373000906B1843906302E0906B98439063887994 +:1037400001239B04002803D0906B1843906302E090 +:10375000906B98439063CB791020002B03D0936B30 +:103760000343936302E0936B83439363097A0120DD +:10377000C003002903D0916B014391637047916BA3 +:1037800081439163704700000004004010B5044677 +:103790000020206001218807FFF7C4F9204600F0CF +:1037A00010F8A068072109040843A060A0688107F9 +:1037B000FCD1400304D5A068012189040843A0601E +:1037C00010BD41680722120411434160704770B573 +:1037D00004460E461546012000F0BCFB60687106E9 +:1037E000C009C001490E084360600121204600F075 +:1037F0000BF8A0688003FCD5E0682860A068012170 +:1038000049040843A06070BD002904D0016801226A +:103810001143016070470168490849000160704721 +:1038200010B504460648E2008158002902D010185D +:10383000001D8847183460B200F0FCFF10BD000086 +:103840006C1007000149086070470000180207006B +:103850001838034BC0001950C0180271704700009F +:103860006C10070070B50446E006C00E01258540C7 +:10387000002908D0002C01DB0A4805600121204600 +:1038800001F02EF870BD0021204601F029F8002C2F +:10389000F8DB044880300560BFF34F8FBFF36F8FB4 +:1038A00070BD000000E100E00122064B82400029CB +:1038B00003D0186A104318627047186A9043186260 +:1038C000704700000070004010B5034C9200A358F0 +:1038D00083430B43A35010BD007000400122064BF0 +:1038E0008240002903D058681043586070475868D8 +:1038F00090435860704700004070004007490A68D4 +:103900008B149A430A608188428809051202007864 +:103910001143014302480163704700000008004062 +:1039200000090040084A116B084B0004194001438C +:103930001163054840380268C1048A430260026886 +:103940000A4302607047000040080040FFFF00F09B +:1039500010B504484168FF2211434160012000F086 +:1039600069FF10BD8008004010B50B490A680223AA +:103970001A430A600422002803D008681043086034 +:1039800002E008689043086008680122104308605C +:1039900000F09EFD10BD0000000800400904014336 +:1039A000D00701430148C163704700004008004050 +:1039B00042780178520011438278C3789200DB008C +:1039C0001A43114302791201114342795201114302 +:1039D0008279C07992011143C0010143014881609D +:1039E000704700008008004010B5084B5C68012259 +:1039F000824014435C60002903D0986810439860AB +:103A000010BD98689043986010BD00008008004089 +:103A10000B020343100403430806034301484363B6 +:103A20007047000000080040828B511AC28B1204BC +:103A300011430F4A1160016ACA080188C908C90503 +:103A40000A430C490A61426AD2084A610279002A93 +:103A500008D08068064AC008803A10620868CA1414 +:103A60001043086008680122920410430860704700 +:103A700000090040000800400249CA68101AC860E6 +:103A8000704700004008004070B505460C461646D9 +:103A90001D2000F0D1F82104084829430163816BFF +:103AA0003205090B0903120D1143816303484038A5 +:103AB000016802131143016070BD0000400800401E +:103AC00010B5094A53689415A3435360074A002868 +:103AD00004D0106A01231843106203E0106A400802 +:103AE00040001062516210BD000800408009004093 +:103AF0000C490A68CB139A430A600B498A68037819 +:103B0000120A12021A438A60407801221207002822 +:103B100003D0886810438860704788689043886045 +:103B200070470000000800408009004015490A68FD +:103B3000CB139A430A6014498A68FF231B029A43F5 +:103B400043781B021A438A608A68104B1A404388E4 +:103B50001B051B091A438A60027801235B07002AB0 +:103B600003D08A681A438A6002E08A689A438A60AE +:103B70008288C0881205120D0005000A02430A61FE +:103B8000704700000008004080090040FFFF00F07F +:103B900007490A02002807D008681043086008682F +:103BA0000A13104308607047086890430860704724 +:103BB0000008004005490822002803D00868104387 +:103BC000086070470868904308607047000800402C +:103BD00005490A688B139A430A60018840880003EC +:103BE00001430248C160704700080040800900405E +:103BF00007490A680B159A430A604A13002803D044 +:103C00000868104308607047086890430860704770 +:103C100000080040074B0121202804D21A68814087 +:103C20008A431A6070475A68203881408A435A6034 +:103C30007047000000080040074B0121202804D2F3 +:103C40001A6881400A431A6070475A6820388140D8 +:103C50000A435A60704700000008004010B5022473 +:103C6000002808D0FFF774FE0A48046001210846C6 +:103C700000F036FE10BD0021012000F031FE0548A5 +:103C800080300460BFF34F8FBFF36F8FFFF760FE8C +:103C900010BD000000E100E005494A03002803D000 +:103CA00008681043086070470868904308607047D0 +:103CB00000080040054A136B1B0B1B0303431363EF +:103CC000906B000B0003084390637047400800406E +:103CD00002480168C20411430160704700080040B7 +:103CE00010B50D490A6802239A430A60042200288D +:103CF00003D008681043086002E008689043086039 +:103D000008680122D2051043086008685210104369 +:103D1000086000F0DDFB10BD00080040044A516857 +:103D200003235B0299434002014351607047000046 +:103D30000008004003494A68012383401A434A604F +:103D400070470000000C004010B51024002809D076 +:103D5000042000F06FFD0121042000F0C1FD09489E +:103D6000046010BD042000F065FD0021042000F077 +:103D7000B7FD044880300460BFF34F8FBFF36F8FEF +:103D800010BD000000E100E0024801684213114349 +:103D900001607047000C00400449496801228240DC +:103DA000114201D00120704700207047000C0040F4 +:103DB000024800688007C00F70470000000C0040F8 +:103DC00010B5054A116853019943C00301431160BE +:103DD00000F0C2FB10BD0000000C0040034A116857 +:103DE000302399430001014311607047000C0040EB +:103DF000034A9169034B00041940014391617047E4 +:103E0000000C0040FFFF00F005498022002803D08D +:103E1000086810430860704708689043086070475E +:103E2000000C004003490A685208520002430A602D +:103E300070470000000C0040044A11680123DB04B5 +:103E40009943C0040143116070470000000C00401A +:103E500005498A14002803D0086810430860704799 +:103E60000868904308607047000C00400903014354 +:103E70000348026A520B52030A4302627047000071 +:103E8000000C0040044B00040907084303490A6A78 +:103E90009A4302430A6270470000FF1F000C004073 +:103EA00010B509239B0140028901084303490A68B0 +:103EB0009A4302430A6000F04FFB10BD000C004023 +:103EC000090301430348C268520B52030A43C2600C +:103ED00070470000000C0040034A11680223994318 +:103EE0004000014311607047000C004010B5084AC3 +:103EF000914200D91146074A13680424A343800065 +:103F0000034313609069000C00040843906110BDE6 +:103F1000FF030000000C00400349CA691203120BA2 +:103F200000050243CA617047000C0040016849085F +:103F300049000122114391430160704701230A683F +:103F40001B041A43120A12020A60016802229143FA +:103F500001607047094B08491960084980394A14C3 +:103F6000002803D088691043886102E08869904383 +:103F70008861034818607047CDAB341280840040DC +:103F80006824571310B50F4B0D4919600D4980393E +:103F90000A690D4C22400A610A4A8024403A0028EE +:103FA00003D0D0682043D06002E0D068A043D06046 +:103FB00048690C229043001D48610448186010BDF8 +:103FC000CDAB341280840040777F77776824571315 +:103FD000094A084810600848803841690C23994311 +:103FE000083141610169054B1940016104481060C5 +:103FF00070470000CDAB341280840040777F777724 +:1040000068245713F1B5002000F0BCF81E49486938 +:104010000C2290430830486188698B1518438861E9 +:104020001A4A9468D80190600869194D28400861BF +:1040300088691501284388611568486A84461668AE +:104040000427BE43166013484862134E0098306040 +:104050001148403806689E430660066847153E438F +:10406000066030BF15606046486294608A69D80275 +:1040700082438A618869984388610748002101600A +:10408000012000F07FF8F8BD00840040008000406F +:10409000777F77775F04C0034088004000B5002039 +:1040A00000F070F8054841690C22914311434161C9 +:1040B00003494162012000F065F800BD0084004022 +:1040C0004004C00302484069C006C00F70470000AA +:1040D0000084004010B50246002000F053F8064B63 +:1040E00059690724E402A143D00201435961012028 +:1040F00000F048F810BD00000084004010B50246F2 +:10410000002000F03FF8064B596903242402A14324 +:10411000100201435961012000F034F810BD000085 +:10412000008400400849074A0A60074A803A01288B +:1041300004D006485062064808607047054850623F +:10414000F9E70000CDAB3412808400404004C00386 +:10415000682457134004000300B50246002000F015 +:1041600011F807490423002A03D08868184388609F +:1041700002E0886898438860012000F003F800BDE1 +:10418000408400400449002802D004480860704779 +:10419000034808607047000080840040682457137B +:1041A000CDAB3412024801218161072101607047C3 +:1041B00000200040014908607047000000200040D6 +:1041C00010B5002814D0052000F034FB122000F0B8 +:1041D00031FB0121052000F083FB0121122000F0BA +:1041E0007FFB0520FDF7B0F91220FDF7ADF910BDFA +:1041F000052000F01FFB122000F01CFB0021052011 +:1042000000F06EFB0021122000F06AFB0520FDF794 +:104210008BF91220FDF788F910BD0000044B09024C +:104220000143044842689A430A43426070470000D1 +:10423000031F00004020004004494A6809680A4002 +:10424000024201D00120704700207047002000404A +:104250000449096801228240114201D001207047BF +:10426000002070470020004003490A68000492B211 +:1042700002430A60704700004020004009040143E7 +:10428000014801607047000040200040014948603B +:1042900070470000780207008901014310020143C2 +:1042A00018060143014841617047000000200040AA +:1042B00010B50902014310040143180601430248E6 +:1042C000016300F07DF910BD00200040074902683D +:1042D0000A6242684A6282688A62C268CA620349A4 +:1042E000026980310A6140694861704700200040DE +:1042F000054A002903D05168014351607047516855 +:10430000814351607047000000200040044A51681A +:1043100007231B04994300040143516070470000C8 +:1043200040200040F0B505ADE0CD0C4C4900014304 +:1043300090000143D800014328010143700101436B +:10434000B80101430898C0020143099840020143A3 +:10435000034AD06BA0430843D063F0BD7F0A00003E +:1043600000200040090401430148416370470000F8 +:1043700000200040090401430148816370470000A8 +:104380000020004038B51A4C2046FFF7FFF96A4676 +:104390005C212046FFF71BFA00980023820F154985 +:1043A000002A03D08001800D086009E00204920F0A +:1043B00003D08005800D086002E0002800D10B606A +:1043C00011220868120300280ED051680A4D8C058E +:1043D000AC4209D08905890D814205D00F2109031E +:1043E0000843D060002038BDD360012038BD0000F4 +:1043F00000900040700207000000C07F38B52849D7 +:10440000086AC0073CD02748112302680024D0075F +:104410001B0300280CD00C62D96801200143D9602D +:1044200000905F2320A223A1002004F0CDFEFEE730 +:104430001B4880380068000F0C2810D00A281DD3B4 +:1044400010071DD50C62D96808200143D96000907F +:104450006E2315A217A1002004F0B6FEFEE7500659 +:104460000ED50C62D96840200143D96000906723C3 +:104470000DA210A1002004F0A7FEFEE7002801D045 +:10448000012038BD0C62D96848200143D9600090F2 +:10449000742305A207A1002004F096FEFEE70000A9 +:1044A0008024004070020700636869705F696E666F +:1044B0006F0000005B25735D2028253034642920BF +:1044C000686172646661756C7420307825780A00C2 +:1044D00038B5154908681122C40514480023120391 +:1044E0000068002C0FDAC0051CD50B60FF20D168D6 +:1044F00001300143D1600090D3230DA20FA1002011 +:1045000004F062FEFEE7C0060CD50B60D1681020F7 +:104510000143D1600090DB2305A208A1002004F034 +:1045200053FEFEE7012038BD00080040700207007E +:10453000636869705F696E666F0000005B25735D7C +:104540002028253034642920686172646661756CA6 +:104550007420307825780A0008B50D480078800668 +:1045600013D50C480168C9030FD500210160112142 +:104570000903CA6820200243CA600090A12306A252 +:1045800008A1002004F020FEFEE7012008BD000085 +:1045900070020700000C0040636869705F696E6616 +:1045A0006F0000005B25735D2028253034642920CE +:1045B000686172646661756C7420307825780A00D1 +:1045C00038B5274A106B8001810F2648112300243B +:1045D0001B03006803290ED0C5051BD51463D968D9 +:1045E00090150143D9600090B6231FA221A100209D +:1045F00004F0EAFDFEE7C5060CD51463D968102067 +:104600000143D9600090AF2317A21AA1002004F043 +:10461000DBFDFEE7050701D5012905D0800501D5A1 +:1046200000290ED0012038BD1463D9680820014349 +:10463000D9600090BE230CA20EA1002004F0C4FD9E +:10464000FEE714630120D96840020143D96000905D +:10465000C62305A207A1002004F0B6FDFEE7000076 +:104660000020004070020700636869705F696E6631 +:104670006F0000005B25735D2028253034642920FD +:10468000686172646661756C7420307825780A0000 +:1046900038B51E4811230168002408061B031C4A74 +:1046A000002806DA50698004800F01281ED00328F4 +:1046B0001CD0880727D590690005000D9169090273 +:1046C000090D2D256D01A8421DD3AF2000018142A7 +:1046D00019D39461D96802200143D96000908C23DA +:1046E0000CA20FA1002004F06FFDFEE75461D96811 +:1046F00080200143D9600090812306A208A10020F8 +:1047000004F062FDFEE7012038BD000070020700E2 +:1047100000100040636869705F696E666F0000009A +:104720005B25735D2028253034642920686172641C +:104730006661756C7420307825780A0011200003BA +:10474000C168002901D10149C16070475A5A00006F +:1047500005490422002803D0886810438860704708 +:104760008868904388607047006C0040014840684A +:1047700070470000006C004001490860704700006D +:104780001C020700090201431004014318060143FB +:104790000148016070470000006C004070B50126C0 +:1047A00076050E4C0225002809D00D48066001212F +:1047B000152000F095F8A0682843A06070BDA0689F +:1047C000A843A0600021152000F08AF8044880303A +:1047D0000660BFF34F8FBFF36F8F70BD006C00405A +:1047E00000E100E005490822002803D08868104352 +:1047F000886070478868904388607047006C00400C +:104800000149486070470000006C004005491022D3 +:10481000002803D0886810438860704788689043F8 +:1048200088607047006C0040014900204861704773 +:104830000088004010B500280BDB064A13690121EF +:104840000C468440A3431361C006C00E8140024859 +:10485000016010BD0088004080E200E00006074AC9 +:10486000D16907231B0699430143D16103484030B6 +:104870000168821511430160704700000088004004 +:104880000246183AD2B2182808DB90000322824070 +:1048900081400348836993430B4383617047000061 +:1048A000008800400246183AD2B2182809DB5000AE +:1048B0001018072282408140024BD8699043084378 +:1048C000D8617047008800408002044A5168032381 +:1048D0009B029943014351607047000000880040EB +:1048E000002807DB0122064B8240002903D05869CB +:1048F00010435861704758699043586170470000F1 +:104900000088004010B50246104600F019F8083241 +:1049100051B20022C2600846FFF78CFF10BD00B5FF +:104920000A4600F00DF8002A04D041680122114324 +:10493000416000BD416849084900416000BD000078 +:10494000142148430149085870470000200207001D +:1049500070B505462846FFF7D5FF28461421484381 +:1049600009494418207C002807D10021284600F07E +:104970002DF80021284600F009F8A168002901D08F +:10498000E068884770BD00002002070070B502464D +:104990000D461046FFF7D4FF044614204243084852 +:1049A000101841790748491C414307480068FBF744 +:1049B000CDFB01466943A1600020206070BD00006E +:1049C0002002070040420F001002070070B50246A7 +:1049D000083254B20830C006C00E012585400029B7 +:1049E00008D0002C01DB0A48056001212046FFF7B2 +:1049F00077FF70BD00212046FFF772FF002CF8DB27 +:104A0000034880300560BFF34F8FBFF36F8F70BDD9 +:104A100000E100E030B503460A461846FFF790FF74 +:104A2000510044680E25AC430C43446014204343BA +:104A300001481818427130BD20020700142250436B +:104A4000014A801801747047200207000648016A75 +:104A5000490849000162016A022291430162416BE7 +:104A60000122114341637047800400400648016AF7 +:104A7000042211430162016A012211430162016AA9 +:104A800002221143016270478004004008494A6BCA +:104A900002231A434A6388638A6B881302438A633A +:104AA0004A6B9A434A638A6B82438A637047000069 +:104AB0008004004030B50546284600F073F80446EF +:104AC00000221521284600F029F8284600F004F9B4 +:104AD000302044430348002120188181CB21C1624A +:104AE00030BD00002821070030B50546284600F0FB +:104AF00059F8044600229221284600F00FF8284673 +:104B000000F0F8F830204443034800212018818049 +:104B1000CA21816230BD000028210700002A03D08D +:104B200042680A434260704742688A434260704765 +:104B300010B5002804D00120C007FDF7F3FF10BD19 +:104B40004020FDF7EFFF10BDF8B50F4600F02AF842 +:104B5000044612A00068009001256E46002F0BD07D +:104B60003057002804DBC106C90E8D400C490D608A +:104B70000121FFF7B5FEF8BD30570021FFF7B0FE69 +:104B800030570028F7DBC006C00E8540044880304F +:104B90000560BFF34F8FBFF36F8FF8BD0D0D0000A1 +:104BA00000E100E00CB50146074805C801920090FD +:104BB00000206A468300D3588B4204D0401CC0B208 +:104BC0000228F7D300200CBD78B6010070B504466A +:104BD0000D462046FFF7E6FF0121FFF7A9FF697E9A +:104BE0002020002907D0216901432161206940214B +:104BF0008843206102E0216981432161A87E022669 +:104C0000002803D020693043206102E02069B043CE +:104C10002061297E1020002903D0216901432161F0 +:104C200002E021698143216120462A68696800F019 +:104C30007CF8E06800090001E060287A297C8000A7 +:104C4000C9000843E9680843E060A0683043A060F9 +:104C5000A06804210843A060687E002802D1287D56 +:104C6000C00703D0A06801210843A060A0683021DC +:104C70008843297D8906890F09010843A060A0683F +:104C8000C0218843297D0906890F89010843A06056 +:104C900001212046FFF758FF70BD000010B50D4CF4 +:104CA000302359430B19002A09D062581278026048 +:104CB0006058401C60509888401E988010BD006865 +:104CC000996808709868401C98609889401E98817F +:104CD00010BD00002821070010B504462046FFF74C +:104CE00061FFA06804218843A060A06802210843F6 +:104CF000A06010BD10B504462046FFF753FFA06822 +:104D000002218843A060A06804210843A06010BD70 +:104D100007E0C36F9B07FCD50B78491C0360521E4C +:104D200092B2002AF5D101207047F8B504460E462C +:104D30001746002C21D0002E1FD0002F1DD031018E +:104D40003846FBF703FA054631463846FBF7FEF9CD +:104D50000107090FE06FC007FCD1E2688020024321 +:104D6000E260EAB222602A04120E6260C02211518F +:104D7000E1688143E1600120F8BD0020F8BD00003A +:104D8000F8B505460E461746002D1BD02846FFF7FE +:104D900009FF302148430C49441830212046FBF7D5 +:104DA00018FACB20E062CA20A062E6612762A868F8 +:104DB0000006800F20342071A8688006800F607183 +:104DC0000120F8BD0020F8BD282107000121814005 +:104DD00001480160704700000010004006490028AB +:104DE00004D0C86801221043C8607047C8684008F2 +:104DF0004000C860704700000010004010B501245A +:104E0000002809D00020FFF715FD01210020FFF741 +:104E100067FD0948046010BD0020FFF70BFD00216D +:104E20000846FFF75DFD044880300460BFF34F8FF4 +:104E3000BFF36F8F10BD000000E100E0094A536826 +:104E4000012181400B4201D0012000E00020002818 +:104E500006D01068084201D001207047002070473A +:104E60000020704700100040044909680122824078 +:104E7000114201D00120704700207047001000400F +:104E800030B5039D074C4000090408435104084312 +:104E900099040843E9040843034A1169A143014303 +:104EA000116130BD02000F00001000400149086090 +:104EB00070470000800207000149012088607047A8 +:104EC0000010004005490A02002803D04869104339 +:104ED000486170474869904348617047001000403E +:104EE00010B50724640441784A048178C9040A4350 +:104EF00008494B69A34313434B6100784A020028D9 +:104F000003D008691043086110BD08699043086127 +:104F100010BD0000001000400FB469468889C9899F +:104F2000134A09030843D0610098106208A9887FDA +:104F3000002804D0059951620499916203E0049914 +:104F400051620599916211690423994308AB5B7F13 +:104F50009B00194311616B461979002901D1002882 +:104F600003D00298C9070843106304B070470000DB +:104F70000010004001490861704700000011004026 +:104F800030B50B071B0F1407240F1025002900DA7A +:104F90002B43002A00DA2C43190301432005014367 +:104FA0000148C16030BD00000011004070B50C0721 +:104FB000240F15072D0F1026002900DA3443002A8C +:104FC00000DA35432103014328050143D807014393 +:104FD0000148816070BD000000110040054A0029B1 +:104FE00003D051680143516070475168814351605B +:104FF0007047000000100040034A516913149943A0 +:10500000800301435161704700100040044BC00011 +:105010008902084303490A699A4302430A617047B7 +:10502000080C0000001000400149086070470000B3 +:1050300000170040044A516903231B0399430003EE +:105040000143516170470000001000400149C861F0 +:1050500070470000001300400149086270470000DB +:105060000013004009040143D007014301480160D7 +:10507000704700000013004001494862704700007B +:10508000001300400149886270470000001300408F +:1050900070B5064B1C69F025AC43120114431C612A +:1050A000090301439961FFF7F3FA70BD0010004056 +:1050B000427801231B040B49002A03D04A691A4392 +:1050C0004A6102E04A699A434A6100780122120566 +:1050D000002803D0086910430861704708699043AD +:1050E000086170470010004073B50D46094C0A482E +:1050F0000078022805D101226946204604F0A6F86E +:1051000005E0012269460448007803F019FB009885 +:105110007CBD00001C100100B8010700022003F054 +:1051200002F9FDF7CAF800BF084B09A209A1002047 +:1051300004F04AF800BF08E000BF0F48006800F024 +:105140005DF80028F9D1FDF759FAF5E7BF0700002F +:10515000703870005B25735D202825303464292069 +:105160007038702064656D6F20696E697420646F9B +:105170006E65200A000000000000070070B50E49AF +:1051800049684A7E002A15D00A4640329379D2797E +:105190001B029C18002C0DD04D6860432946FAF77D +:1051A000D5FFC117890F0818800880006843214681 +:1051B000FAF7CCFF70BD0000A006070010B50E4C3A +:1051C000207A012816D02046D021C038FBF701F8FC +:1051D00001222272022020730021204640380164FF +:1051E00041640320A0720B2060732046A038027433 +:1051F000203810BD002010BDD804070010B50446AB +:105200000D48A04214D1C030007A002810D0FDF71C +:1052100051FC014608000DD04869002804D04268BE +:10522000002A01D020469047FDF722FC012010BD46 +:10523000002010BD002010BD1804070010B5204943 +:10524000814234D10846C030007A00282FD001F0C6 +:1052500007FD04282DD0FDF787FD0020FDF752FE45 +:105260000020FEF7ADFF0020FFF7C8FD0020FEF78D +:105270006BFD0D20FDF72EFD00211248FDF752FCBD +:1052800001F0FEFC022816D0012000218005FDF768 +:1052900049FCF5208004FDF797FC0B4801210170C3 +:1052A0000A494160042001F0C9FD012010BD002021 +:1052B00010BD012010BDE5208004FDF785FCECE762 +:1052C000180407000020940B20010700C0E1E4004F +:1052D00010B50649814207D10846C030007A00283F +:1052E00002D0FDF775FE10BD002010BD18040700A8 +:1052F00070B504462648A04237D1C030007A002855 +:1053000033D0204600F04AF8204601F0BFFC20468A +:1053100000F0C4F8204600F0DBF93520005D0028DD +:1053200028D0254640352879697900024018297A25 +:105330006A7A0902891800281CD000291AD0FAF7C5 +:1053400005FF451E80222146134B3C3111489847EA +:10535000012200212846FDF715FDC920005D012826 +:1053600005D90120FDF73AFD04E0002070BD0020C2 +:10537000FDF734FD204600F04FFA204600F012F908 +:10538000012001F05BFDFFF7D9F9012070BD00009D +:10539000180407000024004001370200FEB5012573 +:1053A0006D02012400210191210200910246403248 +:1053B0001379127A934201D1012600E000260746B4 +:1053C00020377A7D1640CB231B5C002B0DD0022B9F +:1053D00004D0002E38D00124240435E00120FEF74B +:1053E000A1FE002E30D000242EE0002A09D0234B4D +:1053F000826B9A4224D8224B224C9A4214D90D46F1 +:105400001EE0806B204A904201D90C4607E01D4CFB +:105410001E4AFF34904201D90D4600E01C4DB87C75 +:10542000042811D101910FE01A4B9A4206D9407C11 +:10543000002801D00D4603E0154D01E0FF2502359F +:10544000002E01D00124240401211348FDF76AFB3A +:10545000787D002803D001214806FDF763FB28462C +:10546000FDF744FC2046FDF7F1FB0198FDF752FCE7 +:105470000098FDF707FC0120FEBD0000002F6859D1 +:10548000008C86470100010000105E5F00CA9A3B55 +:10549000010200000008AF2F0020D40DFEB5044625 +:1054A0003848A04215D1C030007A002811D000251C +:1054B00000200190FDF754FB0090334F009879686D +:1054C000FAF744FE0646617C20462030002902D0CF +:1054D00005E00020FEBD817C072900D101250023C5 +:1054E000C07C1A460121FDF793FDF0B2FDF7A2FD45 +:1054F000607C002804D12A462046009900F060FB19 +:105500002646C036B27AA18AA06BFDF7EFFD307B4C +:10551000FDF7C2FD0120FDF795FD002D01D0012012 +:1055200000E00020FDF7AAFD0198FDF7D1FDAD20B8 +:1055300016498000FDF794FD7878FDF75BFD727ADF +:10554000812013498000002A0AD0124BA26B9A4294 +:1055500002D9FDF785FD05E00F49FDF781FD01E06A +:10556000FDF77EFD0D480099FAF7F0FD01460C4865 +:10557000FAF7ECFD0121FDF799FD0120FDF7C2FCD2 +:105580000120FEBD180407002001070002020000F0 +:1055900001010101004E72538F07070700CA9A3BB1 +:1055A00000E1F50510B592B004464848A04218D174 +:1055B000C030007A002814D002F080FBFEF732FCE5 +:1055C00001A802F081FB02F079FB00280CD010A8A2 +:1055D000C078002849D0012200211046FEF760FC67 +:1055E00048E0002012B010BD207C0300FBF7F9FC5E +:1055F000050406080A0A2000002004E0012002E059 +:10560000022000E00320FEF7DBFB207C002811D005 +:1056100010A84078002819D000210820FEF726FCA9 +:1056200000210820FEF72EFC0220FEF7D7FB21E028 +:105630000020D7E70120FEF7D1FB00210420FEF770 +:1056400015FC00210420FEF71DFC13E00320FEF7EB +:10565000C5FB00210420FEF709FC00210420FEF711 +:1056600011FC1820FEF758FC04E0002211461046F9 +:10567000FEF716FC09210020FEF738FC0120FEF79A +:105680002BFC10A84078FEF7D7FB10A88078FEF717 +:10569000BBFBA07E01280AD0032808D06846408AB8 +:1056A000FEF7A6FB10A88078012805D008E0684620 +:1056B000008AFEF79DFBF5E701210420FEF700FCC0 +:1056C0000120FEF741FB01208CE7000018040700D1 +:1056D000F0B59FB004464D48A04221D1C030007AB9 +:1056E00000281DD0002500201E901D901C901B90AE +:1056F0001A900120199001276068410818918008CC +:10570000179006A802F0E0FA26462036B07C04285E +:1057100011D0052807D0072807D0062809D00AE0AD +:1057200000201FB0F0BD012505E0032501201D90DC +:1057300001E001250027707D012804D1607C00284C +:1057400001D101201A9000222B4611461046FEF787 +:10575000AFFD607C002809D101201E9002F0AEFA56 +:1057600000280BD001212020FEF7C2FD10A8C07D2B +:1057700000281BD00220FEF7C9FD1AE0207C01287A +:105780000AD002280DD0032801D00428EED11A2116 +:105790000320FEF743FDE9E704210220FEF73EFD6A +:1057A000E4E702210120FEF739FDDFE70420FEF7E0 +:1057B000ADFD1C991998049703901D981B9A0191AF +:1057C00000900292627C707D1E9B1A99FEF7AAFDE2 +:1057D00021680020491EFEF7C5FD61680020491EB2 +:1057E000FEF7C8FD17991898FEF748FD01210848F3 +:1057F000FEF77EFD0120FEF7E3FC06480078002856 +:1058000001D001F099FF01208BE700001804070088 +:105810000742640020010700F0B5A5B004469A488D +:10582000A04216D1C030007A002812D00120239067 +:1058300001250126229000202190209093480068A5 +:105840001F902046203024900079002804D0678CD7 +:1058500003E0002025B0F0BD0027002801D0E08B38 +:1058600000E000201E900DA802F02EFA2498807C03 +:10587000072807D1082021900020239018A9087735 +:1058800001204877A07E012819D0032817D010A93D +:1058900009882068884200D9002510A949886068D5 +:1058A000884200D90026002F00D000251E9800282D +:1058B00000D0002618A8407D01280DD00EE010A9C8 +:1058C00049882068884200D9002510A909886068A5 +:1058D0008842E8D90026E6E7002022906168206827 +:1058E000219AFFF7D5FB607C002806D12198082873 +:1058F00003D101210846FFF789FB342211A968462C +:10590000FAF74EFC0DA80FC8FFF706FB18A8807C1D +:10591000FFF7D8FA2298009033462A4600202399B0 +:10592000FFF7AEFA20A8FFF7DBFA1FA8FFF7C0FBCE +:10593000A07EFFF77FFB002D01D0002E4DD1A07E71 +:10594000534E01284DD003284BD010A80188206861 +:10595000491EC01B401E0003FAF7F8FBFAF75AFE77 +:1059600000223346FAF734FDFAF776FE054610A812 +:10597000418862681E98491E101A401E0003FAF7FB +:10598000E5FBFAF747FE00223346FAF721FDFAF766 +:1059900063FE014600222846FFF764FB2046C03024 +:1059A00005463C4E407BB0470C90687BB0470746AD +:1059B00000250C98EE008059FFF748FB0C98301832 +:1059C0004068FFF749FBB859FFF756FBF0194068EC +:1059D000FFF758FB6D1C202DEBDB2398002826D009 +:1059E00043E010A841882068491EC01B401E0003E8 +:1059F000FAF7ACFBFAF70EFE00223346FAF7E8FCA2 +:105A0000FAF72AFE054610A8018862681E98491E0A +:105A1000101A401E0003FAF799FBFAF7FBFD00226B +:105A20003346FAF7D5FCFAF717FE0146B2E71748F6 +:105A3000816840680C910B9007250023ED432A46AE +:105A400008211846FFF7B2FA082229460020FFF77E +:105A500097FA0B98FFF78EFA0C98FFF78BFA0B98D2 +:105A6000FFF788FA0C98FFF785FA207EFFF7C4FA53 +:105A70000020FFF7D9FA01210846FFF7AFFA01200D +:105A8000FFF7BCF90120E5E6180407004CB501005A +:105A90000000E03F0136020030B50C4B834207D1D5 +:105AA000C0331B7A002B03D0802A03D9002030BDDD +:105AB000002030BD002304E0C418CD5C20342577DD +:105AC0005B1C9342F8D3012030BD0000180407008E +:105AD0000FB4FEB508460CA9029108A90A7B11284B +:105AE0000AD0122808D0212806D0222804D01A284B +:105AF00022D01C2820D052E000230024022A0BD9F7 +:105B00000092284B28A22C49022003F05DFB0020C4 +:105B1000FEBC08BC04B01847002106E0029D40CD41 +:105B20000295CD00AE403443491C9142F6DB22463B +:105B30000A99FEF7B1FB32E001210191002508A985 +:105B4000097B89088C46491C8E4622E00024AC451E +:105B50000FD191071CD000239707BF0F06E00299D1 +:105B600040C90291D9008E4034435B1C9F42F6DC51 +:105B70000CE002990C684B681B0223430C89260435 +:105B80001E430B7B10311C06344302910B490C6100 +:105B90006D1CAE45DADC019B0A99FEF77DFB012006 +:105BA000B6E70000CC04000068616C5F6473695F55 +:105BB00072785F6374726C0088B601000020004048 +:105BC0003EB5836BDB0801930292009104462034BA +:105BD0000368627DE17CA07CFDF70EF90146207D23 +:105BE000002803D00120FDF741FA3EBD0020FAE76E +:105BF00010B50A4981420ED10846C030007A00280B +:105C000009D00120FFF7EAF8FDF7E8F9022001F0DA +:105C100015F9012010BD002010BD00001804070078 +:105C200010B50A4981420ED10846C030007A0028DA +:105C300009D00020FFF7D2F8FDF7D8FA032001F0D1 +:105C4000FDF8012010BD002010BD00001804070061 +:105C500010B50649814207D1C031097A002903D025 +:105C600000F00EFF012010BD002010BD1804070039 +:105C7000F0B58BB006460D46002403200390304655 +:105C800020300A90C07D022803D20F27CB2002903B +:105C900003E00527FF20C3300290306B7449099060 +:105CA000FAF74CFB0999FAF7B3FA30630120B061B7 +:105CB000F0610A203062F0680A3005900A98007D91 +:105CC000FAF7A0FC01906869FAF79CFC2968FAF7DA +:105CD000F8FA0199FAF732FBFAF7DCFCFCF7D2FD8F +:105CE000FAF7BAFC0146C81CC21902981018039AA8 +:105CF00089180791C9190891049405994843FAF73E +:105D000081FC316BFAF7DDFA5A49FAF717FBFAF71B +:105D1000C1FCFCF7B7FDFAF79FFC04465649E000CA +:105D2000884707460A98C17D022903D238797A79D3 +:105D3000801806E038797A79FB788018BA78D2181A +:105D40008018089A1018BB2C0BD9022909D24B4B8A +:105D50004BA24DA10220009403F036FA00200BB0B4 +:105D6000F0BDBB2C0CD90A990120C875434B44A245 +:105D70009B1D4FA1022003F027FAFF240798CC3087 +:105D80000499A142B8D1E1006960AC60AF650599A2 +:105D90004843FAF737FC0746544920464843FAF788 +:105DA00031FC3946FAF7CAFA30630A98007D60433D +:105DB000FAF728FC2968FAF7C1FAFAF76BFCFCF746 +:105DC00061FDFAF749FC3221FAF7D6F90246322092 +:105DD0004243002900D000E000201418C82C01D94B +:105DE000FF242D3400F044FE022800D1F024EC60A2 +:105DF0000220A862A0002018A968FAF7A7F9401E9F +:105E0000E86206902F692F63B369AB61F169E961BC +:105E1000F2682A62306A4008686259181018081837 +:105E2000FAF7F0FB316BFAF74CFA06462F4860435D +:105E3000FAF7E8FB3146FAF781FAFAF72BFCFCF7A0 +:105E400021FDFAF709FC01460698891E081AC01BB5 +:105E500068630A98807F002807D00A98007F00288E +:105E600003D07800381840082863012077E7000045 +:105E70000000C8420024744901300200DB04000025 +:105E80007478206374726C005B25735D2028253064 +:105E9000346429206C616E655F627974655F636C40 +:105EA0006B206F766572666C6F775B25645D0A00A8 +:105EB0005B25735D20282530346429206C616E6574 +:105EC0005F627974655F636C6B2072652D63616CD2 +:105ED00063756C61746520696E20636C6B20616C06 +:105EE000776179732068730A0000000040420F0058 +:105EF00010B50B4C607D012810D020465C21203865 +:105F0000FAF767F920460749203801630021416408 +:105F10008164012060752046203810BD002010BD2E +:105F2000080507000000704210B5194981422CD1C4 +:105F300008462030407D002827D000211548FCF776 +:105F4000F1FD154C607B002804D001200021800564 +:105F5000FCF7E8FD0D20C004FCF736FE042001F03C +:105F600073F80021084600F065FE0120A071E07181 +:105F700020726072A07200202073207004485C219F +:105F80005C30FAF726F9012010BD002010BD00009A +:105F9000E80407000000280C5001070010B5FDF7C9 +:105FA00007FF002808D00020FDF796FFFDF7ECFE64 +:105FB0000120FDF791FF10BDFDF7E6FE10BD0000CA +:105FC00070B505461A48A84218D12030407D0028F7 +:105FD00014D0284600F0CEFE04461649164800F0BC +:105FE00029FE00F02BF8002C0AD0114928465C311C +:105FF00000F02BFA002803D0012402E0002070BD3D +:106000000024284600F072F9094928465C3101F065 +:106010006AFF284601F048FFFDF7A2F90028FBD0EF +:10602000FDF7ACFA012001F00FF8204670BD00002A +:10603000E8040700C18101005D87010010B501215E +:106040000148FCF76FFD10BD0000280C10B5FDF7EE +:10605000DFFC10BD10B5084600F000FF10BD0000C9 +:106060003EB504462048A0420ED12030407D002895 +:106070000AD0FDF7FBFAA07CFDF746F90020372196 +:10608000095D022902D002E000203EBD0120FDF79B +:1060900041F90120FDF7F4F8A07C01280BD1002084 +:1060A00000900190029000216A460846FDF7B6F87C +:1060B0000120FDF737FC01F001FE012806D10B4855 +:1060C000407B002802D10E20FDF7B6FDFDF756FA01 +:1060D0000120FDF75DFD204601F0D2FF022000F017 +:1060E000B3FF01203EBD0000E80407005001070097 +:1060F00010B50C49814213D108462030407D00285C +:106100000ED0FDF7E5FD0020FDF7A8FD0020FDF70E +:1061100065FAFDF7ABFA032000F096FF012010BDF1 +:10612000002010BDE8040700FFB583B004460D460B +:106130001E4600F0A5FD022807D000F0A1FD0128B1 +:1061400003D03548807800280DD00295132C0DD04F +:10615000232C0BD0052C09D0152C07D0292C21D0AD +:10616000392C1FD055E0002007B0F0BD059800285D +:1061700011D0012808D002284BD1737832782046FC +:10618000029900F0B5F944E03278002320460299E4 +:1061900000F0AEF93DE000231A462046029900F0D7 +:1061A000A7F936E0FDF7AAF84007FBD50598800867 +:1061B000019005988007800F009000250DE00020D9 +:1061C0000021AB005A18B25CCF00BA401043491C02 +:1061D0000429F7DBFDF74EF86D1C01988542EED3DC +:1061E000009800280FD000210020AB0005E01A180D +:1061F000B25CC500AA401143401C009A9042F6D3FD +:106200000846FDF737F800232046059A029900F06A +:106210006FF90120A8E70000500107000FB4FEB598 +:1062200006460F4600F02CFD022807D000F028FD9E +:10623000012803D02C48807800280FD00BA80190AB +:106240000020132E0FD0232E0DD0052E0BD0152E8F +:1062500009D0292E21D0392E1FD042E00020FEBCCB +:1062600008BC04B01847009008A8027A022A01D995 +:106270000020F4E700206B4605E001990C78091D29 +:1062800001911C54401C9042F7DB68464378027829 +:106290003946304600F02CF923E00025FDF72EF8B2 +:1062A0004007FBD513E0ECB200202D1D08E001995A +:1062B00004C90191A107C90E8A401043641CE4B2CD +:1062C000AC4201DA9C42F2D3FCF7D4FF254608A881 +:1062D000037A9D42E7DB027A00233946304600F01C +:1062E00007F90120BBE700005001070070B590B02E +:1062F000817C044600250126203400291FD16846F0 +:106300008672067145718571C57105724572C572D7 +:106310000573E07D002807D06846857206714671D6 +:106320008671C67106724672607E01A9FDF7BAF9E0 +:106330000020FDF73BF91C210020FCF7B7FF2A489D +:10634000817E08A8017541758175C1750176417618 +:106350008176C176017741778177C17700210DAAD7 +:106360000846FCF75BFF0120FCF7CEFF207D2821CB +:10637000FCF7EEFF0521207F002803D0A07F002836 +:1063800000D10821207E0022FCF798FF0B9508A879 +:1063900005740BA8FCF79AFF01230096002219460A +:1063A00018460196FDF7F0F80020FCF769FF0A2077 +:1063B000FDF70AF92020FDF731F91C2104A8F9F7AF +:1063C00008FF04A8FDF758F90120FCF7B1FF0120F0 +:1063D000FCF7A0FF05490020FCF762FF0120FDF754 +:1063E000FDF810B070BD000008050700801F040014 +:1063F00030B587B004461C220C496846F9F7D0FE38 +:106400003221E068F9F7A2FE800069460D5800F0DD +:106410002FFB022800D100252846FCF7F9FB204677 +:1064200003491830884707B030BD000074B501003B +:106430000142020010B504460021A06DFDF78EF860 +:106440006068FCF7E3FF606010BD70B504460D4660 +:106450002946204600F06CF8A07C00280FD0294681 +:106460002046FFF705FC04466869FCF741FF284613 +:10647000FFF7E0FF2846FFF7BBFF204670BD294627 +:10648000204600F09FF8002806D0284600F006F8C5 +:10649000002801D00124EAE70024E8E770B50446AB +:1064A000E16CA06C656D236D42185B19D5180D4A1F +:1064B000904208D8914206D80B48854203D80B4930 +:1064C000206B884201D9002070BD0022114660690E +:1064D000FDF7B0F8204629463830FDF7B5F8012021 +:1064E00070BD0000FF010000FF3F0000FF0700003B +:1064F000F8B504460D4616461F46FCF7FFFEC007DA +:10650000FBD03B46324629462046FCF77BFE074837 +:10651000807D002808D000F0B3FB022804D00120C1 +:10652000FCF752FF0028FAD0F8BD0000080507006C +:1065300070B504460D4626462036B07F002806D1A9 +:10654000307F002803D000200121890701E00020CE +:106550001B49FAF7B3F82860A0682861A068686151 +:10656000A0684000B17F002928D0317F002925D0C4 +:10657000216C6961266C2E614034217C002901D098 +:10658000E1890818A17D002901D0A18A08187100AD +:106590007118814206D3814210D11821F9F7D6FD36 +:1065A00000290BD0F017400F8019C108C9007007EF +:1065B00001D0082000E000200818286170BD00000C +:1065C00000000840F0B593B005460C4600260320B5 +:1065D0000890284620301290007DFAF713F80746FD +:1065E00011906069FAF70EF821681091F9F769FEC9 +:1065F0003946F9F7A3FEFAF74DF8FCF743F9FAF735 +:106600002BF8079000200690119FE86AF9F7FAFF2F +:106610001099F9F756FE3946F9F790FEFAF73AF86D +:10662000FCF730F9FAF718F807461298C07D0F907A +:10663000012802D10F200690CB270F98022803D102 +:1066400005200690FF27C337E969A869EA68401862 +:10665000296A89184018099011980190686AF9F719 +:10666000D1FF1099F9F72DFE0199F9F767FEFAF7B6 +:1066700011F8FCF707F9F9F7EFFF05901198019071 +:10668000A86AF9F7BFFF1099F9F71BFE0199F9F70E +:1066900055FEF9F7FFFFFCF7F5F8F9F7DDFF049079 +:1066A00005990498091807980818C11CCA19069971 +:1066B000511803910F99834F002921D00899401850 +:1066C0000E900B96099903984843F9F79BFF296BA5 +:1066D000F9F7F7FD7B49F9F731FEF9F7DBFFFCF736 +:1066E000D1F8F9F7B9FF06467749F0008847074621 +:1066F0003979787908181299C97D022917D01AE0DA +:10670000099903984843F9F77DFF296BF9F7D9FDFB +:106710003946F9F713FEF9F7BDFFFCF7B3F8F9F7BF +:106720009BFF06466849F000884707461AE0BA789A +:10673000FB78D21810180E9A1218069810180390A9 +:10674000BB2E01D9012925D0BB2E08D912980121D1 +:10675000C175FF260E98DA3003900F2006900B9833 +:10676000B042AED11298007D7043F9F74BFF21681B +:10677000F9F7E4FDF9F78EFFFCF784F8F9F76CFF01 +:10678000E0603221F9F7F8FC02463220424300294A +:1067900003D003E0002013B0F0BD00201018E0602B +:1067A000C82802D9FF202D30E06000F061F90228EE +:1067B00001D1F020E060F0006060A660A765079856 +:1067C00020650498E0640598A06407990398411A2D +:1067D0000498091A0598081A6065A869A063E86911 +:1067E000E063E8682064286A606409990398484374 +:1067F000F9F708FF074635487043F9F703FF3946B4 +:10680000F9F79CFD07460998F9F7FCFE39460D900B +:10681000F9F757FD01902D48E7687843F9F7F2FE44 +:106820000C900199F9F78AFDF9F734FFFCF72AF883 +:10683000F9F712FF02900D98296BF9F742FD014616 +:106840000C98F9F77BFDF9F725FFFCF71BF8F9F732 +:1068500003FF0299081842080A920220A062B800B9 +:1068600038183146F9F772FC411EE1622069206355 +:106870000A9A921E511A091A61631299897F002996 +:1068800007D01299097F002903D041004018400821 +:106890002063A869A061E869E061E8682062286A6D +:1068A000606201F021FA082809D3E16AA06AE3686E +:1068B0004018216B099A4118054801F089FA012016 +:1068C00069E70000002474490130020040420F00D3 +:1068D0007D86010070B505460E4600240BE0A00041 +:1068E00041198A78002A09D0012A0BD04978285CFE +:1068F00000F08AF8641CB442F1DB70BD285C00F043 +:1069000033F8F7E7C978285C00F039F8F2E70000BF +:1069100010B5044A800082180A201056FCF7A2FF26 +:1069200010BD0000800F0200F8B505460F460D4867 +:10693000A9000C180A26A65700212846FCF7B4FF28 +:106940000221284600F060F8E17A3046FDF798FF12 +:1069500039463046FDF7A6FF0A202056FDF76AFFAC +:10696000F8BD0000800F020010B50446002120464B +:10697000FCF79AFF0221204600F046F810BD10B542 +:1069800004462046FCF7AAFF01212046FCF78CFFB5 +:106990000221204600F038F810BD000010B5054B6C +:1069A0008200D2180A23D35602461846FCF750FF3D +:1069B00010BD0000800F020070B504460846154661 +:1069C000FCF740FF2846FDF749FF0125ED05002CA7 +:1069D00009D00C4805601720FDF72CFF0121172076 +:1069E000FDF77EFF70BD00211720FDF779FF17200E +:1069F000FDF720FF034880300560BFF34F8FBFF3E2 +:106A00006F8F70BD00E100E010B5164A8000125C87 +:106A10000720242A08D3243A5300D21890409140EA +:106A20000322FCF751FF10BD182A08D3183A53006F +:106A3000D218904091400222FCF746FF10BD0C2A6C +:106A400008D30C3A5300D218904091400122FCF731 +:106A50003BFF10BD5300D218904091400022FCF73C +:106A600033FF10BD90B5010010B5FCF737FF10BD26 +:106A700002484068C030C07A70470000A006070096 +:106A8000F0B58BB0044652490F2008600025514EE6 +:106A9000B78BF08B0A9021461A22183102A8F9F719 +:106AA0007FFB61692069019100900FCC00F0A0FE8E +:106AB000B08BB84203D1F18B0A98814200D00125F6 +:106AC0000020FEF78BF9FEF7F7F9434F002D76D043 +:106AD000B878787D09907868FEF70AFC012000F00C +:106AE000BDF97868B968406848607868B968006836 +:106AF00008600024002500F0B9F886B2B868817CEF +:106B0000002906D18189028B808B89186438081886 +:106B100086B231484068FFF76BF82D4F386940085E +:106B2000400038612C48007800283AD02A48406854 +:106B3000C07E072805D12848283040697862786AE5 +:106B4000B86201200005FDF735FB0F20386024E016 +:106B5000224884421CD11E2D05D01F484068807CED +:106B6000002807D00AE01E4B1EA221A1002002F03F +:106B70002BFB1AE02E48416BB142FCD13869012150 +:106B800008433861FFF70AFA00246D1CADB204E037 +:106B9000641CA4B20120FBF7ABFF38684007D7D5CF +:106BA00003E038690121084338610B4809498068CE +:106BB00001F0E0FD099800F051F906E0FFE7786880 +:106BC000FEF796FB7868FFF713F801200BB0F0BDD5 +:106BD00000100040E40F0700A0060700983A0000EC +:106BE000DE04000068616C5F7673796E63000000FC +:106BF0005B25735D20282530346429207761726E0F +:106C0000696E6721206E6F74206461746120726503 +:106C10006365697665642061667465722072657368 +:106C20006F6C7574696F6E206368616E67650A00CA +:106C300040080040014A9060D1607047D4010700CD +:106C400010B528210448F9F7C4FA44210348F9F79C +:106C5000C0FA012010BD0000A0060700E40F0700E5 +:106C60000148407870470000A00607000349086902 +:106C7000002802D14868C068C8387047A0060700DD +:106C80000148807870470000A006070070B58AB000 +:106C90000446324D6868A04204D06C60E07E05284E +:106CA00003D004E000200AB070BD0721E176287B04 +:106CB00000282DD12646A968183600291BD0182295 +:106CC00002A8F9F76DFA61692069009001912046E8 +:106CD0000FC8FBF73BFE00281AD11A22314602A842 +:106CE000F9F75EFA616920690090019120460FC8AA +:106CF00000F07EFD0CE01A22314602A8F9F750FAA6 +:106D0000616920690090019120460FC800F070FD74 +:106D10006868C17E124807291AD01249416000F004 +:106D2000E3FF082803D3207C616801F011F82046B6 +:106D300000F0B6F900202870286268620A48FDF762 +:106D4000A5FA0A48FEF7B2F8FBF786FE0120AAE78B +:106D50000749416002F03CF8E1E70000A0060700A7 +:106D6000D4010700858C010011890100C592010042 +:106D7000F18C010030B591B005462F4806214175D0 +:106D80008168002902D0002011B030BD85604468C0 +:106D9000002C3BD01822294602A8F9F701FA6169B4 +:106DA000206900900C2001912018017825790B466C +:106DB000417809020B438178C07809040B4300062F +:106DC00003430820201801780A46417809020A4343 +:106DD0008178C07809040A432946657900062D02A6 +:106DE0002943A57902432D04E0792943000625783B +:106DF0000143284665782D022843A578E4782D04C0 +:106E0000284324062043FBF7A1FD12E0007B002865 +:106E10000FD11C210AA8F9F7DCF91A220AA902A845 +:106E2000F9F7BEF969692869019100900FCD00F06A +:106E3000DFFC0120A8E70000A006070010B5064906 +:106E40004870042807D1FFF7FBFE00F04DFF08282B +:106E500001D300F04FFF10BDA0060700FEB50546A8 +:106E60006848417DA94201D10120FEBD65484575B4 +:106E700065480169426989188269C06910180C184F +:106E80000020FDF729F81D20FCF7C4FE0021012099 +:106E9000FCF7AAFD0020FCF7DBFF1D20FCF7CCFE71 +:106EA000002D09D0022D23D0032D35D0042D3ED046 +:106EB000052D3CD00120FEBD0120FDF70DF8514805 +:106EC0004068C07E07280CD14E49504828314A6995 +:106ED0004262426A82624C48C96840380161016975 +:106EE0004161FFF7C3FE0021FCF7E4FE0120FEBD77 +:106EF00003212046F9F72AF90F46390001D0032073 +:106F0000C71B60000321F9F721F905463D480669D2 +:106F1000002E46D1660844E0E707FF0F65083948B0 +:106F20000669002E3DD161006018860839E06000D6 +:106F300005210190F9F70AF905460026A9190198DB +:106F40004900471A03213846F9F716F900291BD0E2 +:106F5000761C062EF2DB2B480669002E1BD0610042 +:106F600060180521F9F7F2F8B0421AD9284B29A286 +:106F70002BA10020009602F027F9E100081B0A214E +:106F8000F9F7E4F806460CE003213846F9F7F4F87F +:106F9000AD19471BDFE7E100081B0A21F9F7D6F816 +:106FA000064629463046FCF785FE304615490A3824 +:106FB00088618D83EA19CA834968C97E06290ED083 +:106FC000072915D001222146FCF7E8FC0120FCF737 +:106FD0003FFF01210846FCF707FD0120FEBD01200F +:106FE000FCF77AFF012221460020FCF7D7FCF4E7EA +:106FF0001448416905488162012221460020FCF7BE +:10700000CDFCE3E7A0060700400800400010004068 +:107010009505000068616C5F7673796E630000000F +:107020005B25735D202825303464292073796E63D5 +:10703000206C696E655B25645D206572726F7220DD +:107040000A000000E40F070070B50446124D042C3E +:1070500004D0022C0BD0012C15D01AE0FFF7F0FD64 +:1070600000F042FE082814D300F058FE11E0287802 +:10707000012802D10E20FCF7CDFD0848016B020665 +:107080001143016305E06868C07E072801D101F063 +:107090009FFEAC7070BD0000A00607008009004094 +:1070A000FCB516A106C9019200910021154D6A4652 +:1070B0000127535CDB00EF54491C0629F9D38030CB +:1070C000C16B002917D000220F494E6880360AE0B4 +:1070D0005B58DB00EF54F36BC46B5B186158C9005D +:1070E00049194B60521C11460C246143C36B0C1DA3 +:1070F0001C59002CECD10120FCBD00002A3A3C2C8C +:107100002B3B0000E4060700A0060700F3B589B09A +:1071100007460025C1480A9940680E0C8030036C70 +:107120000A98000A002B05D0062F18D0142F16D06D +:10713000242F14D0052F1BD0132F19D0062F17D0B2 +:10714000142F15D0152F48D0232F46D0242F44D0EC +:10715000392F78D0292F76D000200BB0F0BDC1B2E6 +:107160000022242F00D1F2B2F8B298470020F4E7B1 +:10717000C5B2284600F026FB044620001FD0207A26 +:10718000002801D0A6480BE0FBF73AFC002805D107 +:10719000A2484068FEF732F8FBF732FC002805D021 +:1071A00000218160076045604461D6E7FF231F33FB +:1071B0009CA2A0A1022002F007F80020CDE7062F34 +:1071C00001D0142F07D1FF232D3396A2A3A10220B3 +:1071D000009501F0F9FF0020BFE7C5B2284600F096 +:1071E000F1FA0446002C21D0207A002801D08C48E6 +:1071F0000BE0FBF705FC002805D188484068FDF747 +:10720000FDFFFBF7FDFB002807D00121816007602F +:107210004560C1680E7044619FE7FF234A3381A235 +:1072200084A1022001F0D0FF002096E7242F07D18F +:10723000FF2359337BA289A10220009501F0C4FFEE +:1072400000208AE7FFE70A980002060C0496002E49 +:107250000ED0FBF7B5FE002815D0761C301D800837 +:107260000690FBF789FB002812D08648056918E0D4 +:107270000A98FF23009067336AA283A1002001F0DF +:10728000A3FF002069E7761E301D80080690E8E71E +:107290000A98FF2300907C3362A285A1002001F0B0 +:1072A00093FFE8B20790079800F08CFA05900598D4 +:1072B00000287AD0FF2E78D80598007A002801D0CF +:1072C000574C0BE0FBF79CFB0446200006D15348CB +:1072D0004068FDF793FFFBF793FB0446002C75D045 +:1072E000A66027600798606005986061032E01D949 +:1072F000032200E03246002006E0411CCB00294674 +:10730000D940E3681954401C9042F6D301271EE08F +:10731000FBF732FB002823D05A480569B800A16862 +:107320000890081A411C042901D9042000E0401CDF +:107330008446002008E0C2002946D140E368089A4C +:107340009B18421E9954401C6045F4D37F1C06983C +:107350008742DDD35F4904980840032812D025E016 +:107360005D48416947480068079B0A9A019300926B +:1073700003910290FF23AD332AA258A1022001F00D +:1073800023FFE7E7FBF71CFE00280FD0E168B01EE3 +:107390000D542904090EE268761E9155E268125CCC +:1073A00012020A432282A0600DE016E0FBF708FEFD +:1073B000002808D0E168B01E0A5C1202761E895DC2 +:1073C0000A432282A0602046C7E6FFE7FF23C133BD +:1073D00014A218A1002001F0F7FE01240F4D294E40 +:1073E0000AE0FBF7C9FA00280BD03069297D002993 +:1073F00001D0FBF73FFF641C06988442F1D30020C4 +:10740000ABE607990A98FF2301910090D23305A2B9 +:107410003EA1022001F0D8FEF1E70000A00607001F +:10742000E401070068616C5F696E746C5F6463738C +:10743000000000005B25735D20282530346429207E +:10744000616C6C6F6320646174612062756666654F +:1074500072206572726F720A000000005B25735D16 +:10746000202825303464292072656164205B3078DF +:1074700025785D206E6F20726573706F6E73652165 +:107480000A000000002000405B25735D20282530A5 +:10749000346429207061636B65742068656164657C +:1074A00072206572726F725B25785D0A00000000C1 +:1074B0005B25735D20282530346429205B307825D6 +:1074C000785D676574206463732074696D656F759A +:1074D000740A000003000080002100405B25735DFA +:1074E00020282530346429205B307825785D5B3096 +:1074F0007825785D2074696D65206F7574205B2533 +:10750000785D5B25785D200A000000005B25735DD7 +:1075100020282530346429205B307825785D646329 +:10752000735B307825785D206765742064617461D1 +:107530002074696D656F7574320A000010B51E4CB9 +:1075400014E02069C2B20A2A16D001461046FFF79D +:10755000DDFD0146080008D04869027A002A04D0FF +:10756000164A436852681046984700200028E8D120 +:107570000A20134A022318E000F024F8F5E75169C5 +:10758000194201D0012100E0002100290BD121681E +:107590004907890F09D0FCF705FE0220FCF70AFE17 +:1075A0000420FCF707FE012010BD0146401EC0B2BA +:1075B0000029E4D1C5E7000000200040A006070034 +:1075C00000210040F0B5A3B00446802103A8F8F7DD +:1075D00000FE2002050C802D0BD97D233CA24049E2 +:1075E0000220009501F0F0FDFCF7DCFD002023B047 +:1075F000F0BDE81C8608002403AF08E0FBF7BCF9E7 +:10760000002835D037480069A1007850641CB44286 +:10761000F4D3354E7068002832D000243C302A461E +:1076200003A9F8F7E8FD002806D0012470682A466F +:107630003C3003A9F8F7B4FD706807464030017983 +:1076400042790902891802918178C2780902891861 +:107650000191002C2FD0017A407A09020918029872 +:10766000F8F774FD441E2037787D002810D013E011 +:107670008D2317A21DA1022001F0A6FD0020B6E770 +:10768000942313A221A1022001F09EFD0020AEE769 +:1076900001214806FBF746FAFBF78AFC71683522A0 +:1076A00050543C31234B802221489847012200212D +:1076B0002046FBF767FB70688030446C002C04D0D8 +:1076C000E9B203A8019B029AA04701208FE70000BE +:1076D00068616C5F696E746C5F64637300000000C6 +:1076E0005CB7010000200040A00607005B25735D29 +:1076F0002028253034642920505053206765742099 +:1077000064617461206661696C0A00005B25735DC9 +:1077100020282530346429207669642073796E63CB +:10772000206E6F7420696E697420210A00000000C9 +:107730000024004001370200F0B587B0064600245F +:107740000C21009100253A22182101A8F8F73AFDF2 +:10775000002E2AD12BE01948E100415C012902D01A +:107760002146641C02E0641C1FE0641CFF2C03DC47 +:10777000E200825C002AF8D00098854217DA621E87 +:10778000E80F431958084000281A00015B109F00B9 +:107790000B4E01AB864081400830DB598240B34339 +:1077A00011430B4301A8C3516D1CFF2CD3DD01A86D +:1077B000FCF78CFD012007B0F0BD0000E4060700D7 +:1077C000FFFF000008494968002901D006487047BA +:1077D0000649C0000A5C012A04D14018406841688B +:1077E0000029F4D100207047FC010700E4060700DF +:1077F0000FB4F0B58BB04421C048F8F7EAFC1A2268 +:1078000016A902A8F8F7CCFC1498159900900191DC +:1078100010A80FC800F018FAB84C00272034E07FF9 +:1078200025462035002802D0A07F00281AD010A8B5 +:10783000807E002816D1E878072813D0022811D0BE +:107840006777607F8726F600002876D010A8807EB4 +:1078500001280AD0032808D010991298814227D213 +:10786000109826E001206077EBE712991198884282 +:1078700001D2119800E01298B04206D812991198DE +:10788000884201D2119E00E0129E139910988842FE +:1078900001D2109900E0139905200002814225D8F9 +:1078A00013991098884201D210981FE013981DE098 +:1078B000129819267601B04206D81299109888427B +:1078C00001D2109E00E0129E13991198884201D2B5 +:1078D000119900E013996D200001814206D8139997 +:1078E0001198884201D2119800E0139818A9097CD8 +:1078F000002909D0039014981599009002960191DF +:1079000010A80FC800F000F9F117890F89198E0827 +:10791000B600C117890F081880088000FDF72EFCFB +:1079200071007118CA17520F5118CA080321D200EA +:107930004907714302D0082101E01DE000215218DF +:107940001146012341431B05994207D810A9897E9E +:10795000002903D110A9097E002902D001216970F4 +:1079600000E06F7065498E81C8810A600F614B61CC +:10797000634888600F7173E0A07F002870D112996E +:107980001098884201D2109800E012988721C9000F +:10799000884201D90E4606E012991098884201D219 +:1079A000109E00E0129E13991198884201D21198FE +:1079B00000E013985349884201D9084606E013991C +:1079C0001198884201D2119800E0139803901498FE +:1079D000159900900296019110A80FC800F094F834 +:1079E000F117890F89198E08B600C117890F081879 +:1079F0008008800018A9497C01290AD1872610989F +:107A0000F600B04200D8109E3E481199814200D83D +:107A10001198FDF7B3FB71007118CA17520F511876 +:107A2000CA080321D2004907714301D0082100E0B0 +:107A30000021521813460121434349058B4203D8C4 +:107A400010A9097E002902D00121697000E06F7041 +:107A50002A498E81C8810A600F61980888600F7179 +:107A6000264DA889A883E889E8832869286268697F +:107A7000686218A8007910A900280FD02A460120B2 +:107A80001C32059206901422091D6846F8F788FBFF +:107A900017A807C8109B00F069F829E018A8807B98 +:107AA000002825D0154814220C300590091D069792 +:107AB0006846F8F775FB19A90A22023108A8F8F7F9 +:107AC0006FFB08A807C8109B00F050F810A9488D5C +:107AD0002863C88CE862098D1398401A401E6863B9 +:107AE00010A9898D1298401A401EA86301202077A2 +:107AF0000BB0F0BC08BC012004B01847E40F07002D +:107B0000FFFF1F00140A00000FB4F8B50C9F0D9D75 +:107B10004B24E400FEF7ACFF022801D1FF24F5342A +:107B20001048466830462036717D002915D0806B9C +:107B30000D49F8F70BFBF17C4843C008079A0699FA +:107B4000784351436843F8F701FB0146A14204D949 +:107B500028466043F8F7FAFA05462846F8BC08BC00 +:107B600004B01847A006070040420F000FB4FEB54E +:107B7000119C34484078012840D00126314F684696 +:107B8000403F008CFD8B0E996843F8F7DFFA80B216 +:107B900002906846408C0E996843F8F7D7FA85B290 +:107BA0006846808CBF8B0D997843F8F7CFFA80B286 +:107BB00001906846C08C0D997843F8F7C7FA80B2F7 +:107BC000009031460298F8F7C1FA704387B2314607 +:107BD0002846F8F7BBFA704382B20198C508ED0059 +:107BE0000098C008C0008446129B20886188002B42 +:107BF00006D0401B2080C81B608008E00426BDE73B +:107C00006346EB18C01A2080B818081A6080314605 +:107C10003846F8F79BFA0B49403909684843690030 +:107C20006918401861680918616006492039497F60 +:107C3000002902D0A1680818A060FEBC08BC04B0EE +:107C400018470000241007000FB410B508A8C17829 +:107C500001231948002906D0C170C2780024012AE6 +:107C600015D9837014E06A46517E927E914206D106 +:107C7000002902D00421C170EFE7C370EDE70029AD +:107C800002D00321C170E8E70221C170E5E78470EA +:107C900009492039062A04D0CC778C77052A03D0ED +:107CA00004E0CB778C7701E00721C17010BC08BCE1 +:107CB000012004B018470000241007000148807814 +:107CC000704700002410070010B544220149F8F75E +:107CD00067FA10BDE40F070010B544220149F8F718 +:107CE0005FFA10BDE40F07000148C078704700003C +:107CF0002410070010B50748012141750175064998 +:107D00002038C1630021016241622020FCF7F0FAB3 +:107D1000012010BD48100700899001000249002091 +:107D200048610120704700002810070010B5054881 +:107D300040680549496B054A89B2D26B80B29047C9 +:107D4000012010BD0021004040080040281007001D +:107D500070B506460D4600212020FCF7C9FA4421E3 +:107D60001948F8F736FA00F043F8174C25622677E1 +:107D7000002060622063FFF7B7FF0122092802D1CB +:107D80002046403002701048217F02250323203016 +:107D900001290FD0022910D0032911D004290FD0B6 +:107DA000427502750948E06301212020FCF7A0FA22 +:107DB000012070BD43750575F4E745750275F1E75F +:107DC000052141750375EDE7281007008990010032 +:107DD00010B5034C21606260A3606061012010BD9A +:107DE000281007000149486270470000281007006A +:107DF00070B5FAF7B5FEF8F70DFC0D460446094AD2 +:107E0000094BF8F797FBF8F727FC084EB0622046BD +:107E10002946074A074BF8F78DFBF8F71DFCF0627F +:107E2000012070BD3BDF4F8D976E923F28100700F9 +:107E300079E9263108AC8C3FF8B504461648007B3A +:107E4000FBF7B8FE002526464036707C134F00280D +:107E500004D021464C310020B847F589F07D002838 +:107E600005D0214652310120B847B08A4519204635 +:107E700020300646807F012800D16D082846FBF798 +:107E8000FBFDB07F002805D00549606C8847054997 +:107E9000A06C8847F8BD000050010700013D0200BA +:107EA000013E02000140020010B594B00446204695 +:107EB00000F052F82046FFF7BFFF03A8FFF70CFFC2 +:107EC00003A800F0EFF801216A46117100205071FB +:107ED0009071D171029001A8FBF76AFD0120FBF7B8 +:107EE000BDFE14B010BD70B505460C46E0682035E7 +:107EF000A97F002917D0297F002914D001212068EB +:107F0000F8F75AFA0646287DA16841434800081848 +:107F1000F8F778FB3146F8F711FAF8F7BBFBFAF7F8 +:107F2000B1FCF8F799FB642804D2FF200230FAF77D +:107F3000BDFE70BD962803D20120FAF7B7FE70BDD2 +:107F4000C82804D2FF200130FAF7B0FE70BD00202F +:107F5000FAF7ACFE70BD000030B593B0044601A83E +:107F6000FFF7BAFE10A84079404D012832D00A2010 +:107F7000FBF762FE01A9204600F0B2F83B483C49FD +:107F800014308847A879002828D00C20FBF754FE2D +:107F9000E879002826D01020FBF74EFE297A687A6F +:107FA000014202D1002922D025E00F20FBF744FE38 +:107FB0000D20FBF72FFE2034207F002830D0607F7B +:107FC00010AAD072A07F90720821117200281AD0D6 +:107FD000032019E0E878FBF70BFECBE72548FBF719 +:107FE0008DFCD5E72348801DFBF7F2FDD6E721483D +:107FF0001230FBF77DFD687A0028D9D11D480A3080 +:10800000FBF794FDD4E7002010A9487217481A4BDB +:108010006A7912A9383098470220FBF77FFE05E005 +:108020000820FBF709FE0220FBF778FEA87A00285B +:1080300017D02820FBF700FE10A8007800280ED0EB +:108040000D980C99000401430C4841620F9A0E9957 +:10805000120411438162016842151143016013B09B +:1080600030BDE87A2969FBF72BFDE5E750010700F1 +:10807000013A02002C100100013B02000008004000 +:1080800010B50446FFF71AFE012803D0A07CFBF7C9 +:1080900027FE10BDFFF728FE0928FAD0A07CFBF7C9 +:1080A00063FC10BD10B50446FEF7E0FD0021002280 +:1080B000FBF7EAFC00212046FBF7B6FCFFF7FEFDCC +:1080C000002803D00020FBF7E7FD10BD2034607FBF +:1080D000002803D00020FBF7DFFD10BD0120FAE7E8 +:1080E000F3B583B00746002500263C464034607C4B +:1080F000002801D0E08900E00020E17D002901D0C6 +:10810000A18A00E000213E22D35D284A002B12699B +:1081100017D05300D218101A401A41080498808BC7 +:10812000884211D0401E0003491EF8F70FF8F8F7F7 +:1081300071FA00221E4BF8F74BF9F8F78DFA85B269 +:1081400005E0101A411AE9E70420FBF775FD0498D1 +:10815000F968C08B81420ED0401E491E0003F7F71C +:10816000F5FFF8F757FA0022114BF8F731F9F8F755 +:1081700073FA86B202E00520FBF75EFD0D48694602 +:10818000007908728D80CE80207E002800D00120EA +:10819000094988470146094A01A89047354302D159 +:1081A0000620FBF749FD05B0F0BD000044050700BF +:1081B0000000E03F500107000134020001390200D5 +:1081C00010B52C48047DE007C00F00280ED0102009 +:1081D0002040002807D128480068012109030843EE +:1081E0002549086002E02348FBF788FB0220204075 +:1081F00000280FD020202040002807D11E4800680A +:108200000121090408431C49086003E01948801D46 +:10821000FBF7DEFC0420204000280FD04020204047 +:10822000002807D1144800680121C90308431249F6 +:10823000086003E00F481230FBF75AFC082020408A +:1082400000280FD040202040002807D10A480068AD +:108250000121C90308430849086003E005480A30C2 +:10826000FBF764FC03490020087500210420FBF79C +:10827000BBFB10BD2C1001000008004010B50446E7 +:10828000022908D00020FBF767FF022C07D000204E +:10829000FBF778FE10BD0120FBF75EFFF5E701203C +:1082A000FBF770FE10BD10B5FBF792FE10BD00008D +:1082B00070B5154D69684808CA07144901D00843CC +:1082C00000E08843FBF79EFE002401263146084665 +:1082D0006A68A040104210D02046173040B20028F3 +:1082E00008DBC206D20E9140094A1160BFF34F8FDE +:1082F000BFF36F8F0021FCF7F3FA641C082CE5DD57 +:1083000000206860287870BDB001070000010000FF +:1083100080E100E010B5FBF7C1FE012010BD10B5F3 +:10832000FBF7D0FE10BD10B5FBF7E8FE10BD10B591 +:10833000FBF7D0FE10BD0000F8B504460D4601273E +:10834000134E112C1AD000212046FEF7E1FA2946DF +:108350002046FEF7E9FA0F492046FEF71FFB0121F0 +:108360002046FEF7D5FA0C49A0004018807A17384D +:1083700087407068074377600120F8BD2A460549A9 +:108380000120FEF719FB706838437060F4E70000C5 +:10839000B00107002D8E0100800F020010B50020F3 +:1083A000FCF7FCF90020FCF7D3F90020FCF7E4F916 +:1083B0000E20FAF78FFC012000218003FAF7B2FBB0 +:1083C000054C6078002806D0207800F02DF90420B4 +:1083D00020700020607010BDAC01070010B5154C76 +:1083E000002815D00020FCF7FDF9607800280ED099 +:1083F000FCF7BCF9002803D06078FCF707FA02E02C +:108400000020FCF703FA01212078FCF788FA10BD60 +:108410000120FCF7E7F96078002806D000212078D9 +:10842000FCF77DFA0020FCF7F1F90020FCF7B6F923 +:1084300010BD0000AC01070010B505214906114828 +:10844000FAF7DEFB01218803FAF76CFB0021042018 +:10845000FEF7DAFA0C487D21C9000068F7F776FECE +:108460000A2148430949F7F771FE034602460146CF +:10847000FCF788F90120FCF7B5F90120FCF768F951 +:1084800010BD00000000F0FF1002070000710200A4 +:1084900010B50446002C04D005494878FCF7B6F91D +:1084A00002E00020FCF7B2F92046FCF7A9F910BD64 +:1084B000AC010700F8B504460F4615460C4E042CD7 +:1084C00011D22046FCF700FA3470204600F0C4F8C0 +:1084D0000121204600F0CEF87D20C00039464143FE +:1084E0002046FCF753FA75702846FCF78FF9F8BD63 +:1084F000AC01070010B504460020FBF713FE204630 +:1085000000F06AF82C4A2B4810602B494039086962 +:1085100040004008086108690223984308614869DF +:1085200008231843486148698B1518434861486916 +:10853000E02398436030486148695B019843032316 +:108540009B02C01848611C48803803695B005B08C7 +:108550000361C36A194C1B0CA34204D0C36A2404F0 +:108560009BB21B19C3620B690120C00303430B615B +:10857000134911600121FAF7D5FAFCF755F9FAF71A +:10858000CDFA04211820FEF73FFA02211720FEF74A +:108590003BFA0D480B4901600C4941600C49816070 +:1085A0000C4AC2600B4A403A02610A0A4261816188 +:1085B000C16110BDCDAB3412808400403303000094 +:1085C000682457134080008000E400E08000804071 +:1085D000808080808080408010B50E4908600E4900 +:1085E0000E4C884206D1FF200230FAF7F5FA092036 +:1085F00020700DE00A49884205D10A48FAF7ECFAE2 +:108600000F20207004E00020FAF7E6FA072020701F +:10861000012010BD1002070000E1F505140207005B +:1086200080D1F0080102000010B504460021204668 +:10863000FCF7CCF900212046FCF700FA0021204687 +:10864000FCF76DF90934E0B2FAF744FB0120A040D1 +:108650000021FAF767FA10BD10B50446214609312A +:10866000012088400121FAF75DFA00212046FCF73D +:10867000D1F910BD10B5FCF7E1F910BD70B5054694 +:10868000094C2846216BF8F735F801D8002070BD59 +:10869000FEF7F6FA064625630348FDF791FC3046DF +:1086A000FEF7D2FC012070BDE804070030B589B0A8 +:1086B0000C46204906C901920091800069460D5878 +:1086C0001C2102A8F7F785FD1B480068029020686E +:1086D000039060790590A0796A461076207910742D +:1086E0000798012108430790079802210843079043 +:1086F0000798042108430790079830218843079082 +:108700000798C02188430790002108AA51709170F2 +:10871000117002A92846FCF759FA2846E268A168B8 +:10872000FCF72EFB0548A1680161E168416109B0D1 +:1087300030BD000048B6010010020700BC01070070 +:108740001CB5054B5C691B690194009380006B4666 +:108750001858FCF7DDFA1CBD48B6010010B50449F5 +:108760000120487000210220FBF73EF910BD0000F7 +:1087700050010700F0B587B00C4600210691059125 +:108780008168C0680490A58BE68B01273F0303979F +:10879000A94202D1012006900DE0681E0003491E87 +:1087A000F7F7D4FCF7F736FF0022264BF7F710FE59 +:1087B000F7F752FF07460498B04202D10120059016 +:1087C0000EE00499701E0003491EF7F7BFFCF7F78F +:1087D00021FF00221B4BF7F7FBFDF7F73DFF03904E +:1087E0003004284302900698059900014901084386 +:1087F0007021154A12688A4302430192206AC50813 +:1088000020882E46C008C005064310484068C07E38 +:10881000072813D0606AC5080398010439430C4B3C +:10882000029818600848019A026006614561D962A1 +:10883000016802131143016007B0F0BD00F0C8FAEF +:10884000EAE700000000E03F00080040A006070043 +:1088500000090040FAF70AF80BE0FCF75FFC00BFE4 +:10886000172304A205A1002000F0AEFC00BF00BF4A +:10887000FEE7F2E77461755F6C6F67005B25735DFF +:1088800020282530346429203636382044656D6F21 +:108890000A000000F8B506460F4614461D46194862 +:1088A00000680068A04204D1164800684068A842E9 +:1088B00020D0012114480068FDF7CCFB1148006866 +:1088C000046010480068456001210E4800682030AF +:1088D000417501200D4908702D200001844205D901 +:1088E0000948006804600848006845600548006859 +:1088F000FDF7AEF9002104480068FDF7ABFB01204D +:10890000F8BD000000000700040007000C0007008D +:10891000F0B585B02020FBF78FFC00280DD07848FB +:10892000407F002802D000F08BF901E0FFF7FEF94C +:108930002020FBF73FFC05B0F0BD7248FBF77CFC44 +:10894000714D724E002821D0B46B776B3068049063 +:108950006969039100F010FDFF23AD336CA26FA194 +:1089600002200197009400F02FFC734A03990498A9 +:10897000126BFF23009202910190AE3364A26FA1AB +:10898000022000F021FC5F48FBF714FC784C3520F6 +:108990006168405C01281FD17648406800281BD0E0 +:1089A000C031497A012908D90020FCF717FA00F0F4 +:1089B000E3FC0120FCF712FA0EE0696932685E4BB5 +:1089C0001B6B0193029203910090FF23C33350A2CB +:1089D0006949022000F0F8FB8020FBF72DFC0028FD +:1089E00011D0FFF781F908280AD30120FAF7A0FC7B +:1089F000A068807CFAF7B8FF00218020FBF778FCA4 +:108A00008020FBF7D7FB01277F053846FBF714FCD6 +:108A1000002811D05948C06B6268617D127CFF2329 +:108A2000009201910290E23339A255A1002000F09A +:108A3000CBFB3846FBF7BEFB01273F053846FBF76B +:108A4000FBFB00280BD03846FBF7B4FB226A002A58 +:108A500005D0A08CC00702D000210120904701273B +:108A6000FF043846FBF7E8FB00281FD0FFF73CF96E +:108A700008280FD3696800206268526801E0084640 +:108A800069688A42FBD9401CFFF7ACF900213846DF +:108A9000FBF72EFC226A002A05D0A08C400702D5E5 +:108AA0000021042090473846FBF784FB0620FBF7A3 +:108AB000C3FB00280ED0FBF775FB0620FBF77AFB03 +:108AC0006869316800910190374B11A237A10020ED +:108AD00000F07AFB31680124A405214201D0012174 +:108AE00000E00021002900D125E72F4B08A2123316 +:108AF00038A1002000F068FB2046FBF75BFB1AE77B +:108B00000410070000020400002100400020004083 +:108B100068616C5F7673796E630000005B25735D3E +:108B2000202825303464292070616765202578204D +:108B3000636F6C2025780A00802A00405B25735DF6 +:108B400020282530346429207278206669666F20D9 +:108B50006572725B307825785D2073305B307825E4 +:108B6000785D2073315B307825785D200A00000045 +:108B7000A0060700C0240040CCB601004008004019 +:108B80005B25735D20282530346429206672616D71 +:108B9000652064726F70207761726E205B2564209F +:108BA00025642025785D0A000D0200005B25735DB9 +:108BB0002028253034642920706B74206275666625 +:108BC000657220657272205B25785D5B25785D0A91 +:108BD000000000005B25735D2028253034642920C7 +:108BE000525842525F494E54454E5F494E54454E8D +:108BF0005F4449535F4552525F504F532121210A30 +:108C000000000000FEB507460D46002414E0285D74 +:108C10000290601C285C0190A01C2E5CE01C2818AF +:108C200000903246009B01990298FDF77DFAA01949 +:108C3000C41C3220F9F75CFFBC42E8D3FEBD000043 +:108C400070B50D4D296A2A88C808D208D20510438C +:108C50000A4B1E690A4C864208D1686A6062A062AB +:108C6000C008104318611869586170BD6162A16243 +:108C700018611869586170BDE40F070000080040D2 +:108C80000010004010B51548436B1548164984691B +:108C9000144842139C4215D9144B1C78002C08D060 +:108CA0000968090304D501681143016000201870A8 +:108CB00010BD04681443046008680003F8D4012060 +:108CC000187010BD0B680124E40423430B60016895 +:108CD0001143016000F098F810BD0000400800400A +:108CE000A0060700000C004000200040D40107004F +:108CF00070B53248456B324801680903CE0F0168F0 +:108D00008201114301602F4CA068A84203D320794F +:108D1000E07000F079F801210022002E0ED0A0783A +:108D200020716070E378834206D1002802D0A270DF +:108D3000227010E0A170FBE721700CE0E07863780E +:108D4000984206D1002802D0A270227003E0A170E0 +:108D5000FBE723712170207980000019C168174852 +:108D60004038016101694161227817480421002AD5 +:108D700008D0A278920012195269426202698A43AD +:108D8000026106E062694262A269826202690A4384 +:108D900002610E4801680122D2059143A278D205F2 +:108DA000114301600168012252061143016001680C +:108DB000421311430160A56070BD000040080040EF +:108DC00000200040C806070000100040000C0040D2 +:108DD00010B51C210A48F7F7FCF90A48084A016A4D +:108DE000CB080188C908C9050B43D360436ADB0877 +:108DF0000B431361016951614069906110BD00002E +:108E0000C8060700E40F07000649888BC98B884213 +:108E100004D0054A936B834201D1916370479063FC +:108E200070470000A00607004008004004490028E1 +:108E300002D0007808707047112008707047000059 +:108E4000B0010700F0B591B0044601252D05284674 +:108E5000FBF7B0F9224A1068284201D0012100E056 +:108E600000210029F7D01F4A55681F4F396AA142D7 +:108E700008D350688842FCD3506801E0044650682B +:108E80008142FBD9641C6846FEF71EFF02980099D8 +:108E9000401CF7F75BF942086846C189386A5043BD +:108EA000F7F754F945191148016940690E18204631 +:108EB00070437968F7F74AF9A84201D82D1A01E002 +:108EC000201A45192846FBF7CFF97868611B4843FB +:108ED0002146F7F73BF98019386111B0F0BD000069 +:108EE00000200040002100402810070040080040FA +:108EF00010B50448006904494A7D097D5043F7F7DD +:108F000025F910BD0021004048100700F8B50C46B7 +:108F1000FFF7EEFF0646254DE86AB04244D2A86A44 +:108F2000B04241D9287F00280BD0214801680903AD +:108F3000C90F026883011A430260002901D0002092 +:108F400000E0012000282FD0A869F7F75BFB074657 +:108F50003046F7F757FB3946F7F7F0F90646E86869 +:108F6000F7F750FB3146F7F7ACF9F7F793FB002220 +:108F7000104BF7F72DFAF7F76FFB2968401A2969AC +:108F8000A14201D2801C07E0A14205D94908A142B3 +:108F900001D2801E00E0801C0749886006494039E4 +:108FA00008680A1310430860F8BD00002810070085 +:108FB000002000400000E03F4008004070B5FFF78F +:108FC00097FF234CE16A814241D2A16A81423ED996 +:108FD000207F204D01280DD0022817D003281ED055 +:108FE00004281CD000210846FBF718F92069002846 +:108FF0001CD01EE004210220FBF710F96068032159 +:109000004000F7F7A3F82061E56313E00221012097 +:10901000FBF704F9606840082061E5630AE0EB2390 +:109020000DA20FA1022000F0CFF803E06068400815 +:109030002061E563A56B6800000E08D06068F7F753 +:10904000E1FA2946F7F73DF9F7F7F2FA206170BD2A +:10905000281007000D8F010068616C5F7376730044 +:109060005B25735D20282530346429203134342079 +:109070002620313630487A206E6F742073757070F8 +:109080006F727421200A0000F8B506463D4C206B33 +:10909000082802D2401C2063F8BDFFF729FF0546CF +:1090A000F9F75EFDF7F7AEFA07462846F7F7AAFA92 +:1090B0003946F7F743F90746E06AA842ECD2A06ABE +:1090C000A842E9D9606A002803D1206AB0423BD2A5 +:1090D0006662FDF7D5FD0228DED16669002EDBD081 +:1090E0007F203946C005F7F729F9B0476668304652 +:1090F000F7F788FA00902449A0684843F7F782FA06 +:109100003946F7F7DEF80099F7F718F9F7F7C2FADA +:10911000F9F7B8FBF7F7A0FAE060A5612168401AFB +:109120001A498860194840380168021311430160E8 +:109130001748E06313484030007800280ED0A08C18 +:1091400080B2FFF77FFE10E00124E4042046FBF725 +:1091500031F801212046FBF7CBF8F8BD207F01282C +:109160000BD0606A4008FBF77FF88020FBF722F8FD +:1091700001218020FBF7BCF8F8BD701EFBF774F8E6 +:10918000F3E700002810070040420F0040080040AD +:10919000BD8F01007FB505460C46022C03DB022083 +:1091A000084908700DE000950321684641710021CF +:1091B0008171017169462046FFF778FA0148047011 +:1091C00000BF7FBDB80107000FB470B5C2B0044640 +:1091D000FF21013102A8F6F7FCFF184D287BA042C1 +:1091E00004DD42B070BC08BC04B018474798F6F7DD +:1091F000FBFFFF2800D9F4E748A801901048007849 +:1092000002280ED102A8019A4799F7F7C1FE02A8D9 +:10921000F6F7EAFF86B2324602A9284600F016F8B1 +:1092200008E00848019A4799F7F7B2FE054906A0F9 +:10923000F7F79EFE0020019000BFD2E71C1001004E +:10924000B8010700A00507000A257300F7B504461A +:10925000164635460027FF200130854200DD0546D1 +:1092600020884019FF210131884215DD2088081A25 +:1092700087B22288A16888183A460199F6F790FFCC +:10928000EA1B019BD919A068F6F78AFF20884019CC +:10929000FF380138208009E02288A16888182A4612 +:1092A0000199F6F77DFF2088401920802088FF284B +:1092B00001DD00202080A18869430846F9F718FCE9 +:1092C000FEBD00003EB50020FBF7B8FD234C002892 +:1092D00011D02078002807D101202070A078022822 +:1092E00002D10E20FAF796FC00210120FBF776FE52 +:1092F0000020FBF76BFD0220FBF7A0FD002802D049 +:109300000220FBF763FD0120FBF798FD00280BD03E +:10931000226A002A05D0A08C800702D500210220F5 +:1093200090470120FBF752FD0320FBF79DFD00282D +:1093300012D00B4CA16860682268009202910190E3 +:10934000084B09A20B490020FFF73EFF0320FBF763 +:109350003DFD0020C04320603EBD0000A006070088 +:10936000801000408103000068616C5F7673796E45 +:109370006300000018B70100F0B58BB03E484168AB +:10938000C920405C022804D93C4A002050603C4A75 +:1093900050603C484568066A476A826A0A92C26A17 +:1093A0000992384A80321369089352690792026B16 +:1093B0000692426B0592826B0492C06B0390314817 +:1093C000403002680292406801902E48C030006828 +:1093D000009000242031487D002801D02A48046AEA +:1093E0001720F9F777FC1820F9F774FC1920F9F722 +:1093F00071FCFBF761FD23484560066247620A99EC +:1094000081620999C1621F49089A80310A61079AED +:109410004A61069901630399C1631A49029A40316E +:109420000A60019A4A60059A4263049A8263154A67 +:109430000098C0321060FF201230886000208860E1 +:109440000D4D35206968405C002807D00E48046245 +:109450000D483C3180220D4B803898476868C030F9 +:10946000407A022804D9054901204860044948602F +:1094700001200BB0F0BD0000A0060700002900404D +:1094800000280040002000408024004001370200F6 +:109490002900000055200100000000002800000005 +:1094A0000D2001000100000051000000791F0100A3 +:1094B00000000000530000007122010001000000C4 +:1094C00010000000F5200100010000001100000064 +:1094D000892101000100000060000000C921010095 +:1094E000010000000000000000000000000000007B +:1094F0003900039CA5A5390003FD5A5A3900029F83 +:109500000F390002B300390002D7113900029F0160 +:10951000390004B25A04AF390024B300BA00140C65 +:109520002200BA30142C0000BA90144C0000000045 +:1095300000000000BA00140C441C1C1C1C1C390048 +:1095400013CD061F1F06000900961F032800961F53 +:1095500009460096390002D001390003E24620395D +:109560000003EA040B390009EE403828282828288F +:10957000C23900029F0239001AB200C9321011121A +:109580001200087821111413111111111111112158 +:1095900021111A39000EB400008C000000000025D3 +:1095A00025252525390007B500303030302A39000F +:1095B00014B60500001111111C081C2121212121C4 +:1095C0002121212121390011B700000000001500E0 +:1095D00006060306060306060339000EB80000005F +:1095E00073287328732873287328390009B9000079 +:1095F0005000000F0F0039000EBA0EFFFFFF00549D +:109600000044044404040039001ABB005A91915AE2 +:10961000005A91915A005A91915A005A91915A00C8 +:109620003C78783C390005BE5B17045B390011BFFC +:109630000C8FFF100007000A01200000000000004E +:10964000390011C10521221D1F1E20013031323386 +:109650003D3D3D3D390011C20521221D1F1E200147 +:10966000303132333D3D3D3D39000AC31160004089 +:10967000004000000039001AC4000C010000000086 +:109680000000000000000008001F1F00000D000087 +:109690000000390011D20000130000130000170071 +:1096A00000170000170039000EC70004040404006E +:1096B0000404040400040439000EC800B1B1B1B1BF +:1096C00000B1B1B1B100B1B139001BC600000F004B +:1096D00000110000009000000000080002000000DF +:1096E00000005501010039001BCB00000000000004 +:1096F0000000000000000000909290920090929074 +:109700009200909239001BCC0076FF76FF0076FF26 +:1097100076FF0076FF00000000000000000000005F +:109720000000390013D74DC3207A3300020200F73E +:10973000F7F4A9A9AEF00000390029D80004762278 +:10974000FF00047622FF00047622FF00047622FF49 +:1097500000047622FF9076FF9076FF9076FF907659 +:10976000FF9076FF39000CD9104010001000100057 +:10977000100010390004E0000060390006E14300E9 +:1097800011600D390033E2150039422415003942C9 +:109790002415003942241500394224150039422489 +:1097A0001500394224150039422415003942241588 +:1097B000003942241500394224390004ED000180AB +:1097C000390012EE0400000000000000003088881C +:1097D0002900000000390006EF00858887873900DE +:1097E000029F03390021B211000089308009600412 +:1097F00038000C021C021C0200020E0020011F0097 +:1098000007000C08BB087A390021B3180010F003D8 +:109810000C2000060B0B330E1C2A3846546269706C +:1098200077797B7D7E010201000940390019B40976 +:10983000BE19FC19FA19F81A381A781AB62AF62B32 +:10984000342B743B746BF4390002C011390002C12F +:1098500082390003C200C0390006C61100000101B0 +:10986000390002E2013900029F04390004B201808C +:1098700000390013B30000100030500070B000D069 +:10988000F011307012F070390015B423F07034F01C +:10989000F067F0F08AF0F0CDF0F0EFF0F00FFF3964 +:1098A0000008B60120000FF01006390003B991C17D +:1098B000390003BA010039000ABB000008000000AB +:1098C000F20000390029C10FFF07FF0333014701F0 +:1098D0004600CD0066003A001400080000000000B9 +:1098E000000000000000000000000000000000393F +:1098F0000015C203FF01FF0000000003FF01FF008D +:1099000000000003FF01FF390004C30008B839005C +:1099100014C500208841CF4F4F0048532921282AE1 +:10992000052F00200F390025C64B00900002D500FE +:1099300002CB011043000A000000000000000000FC +:1099400000000000000000000000000000390005D9 +:10995000C848485353390003C98888390029CC19AD +:109960001919191919191919191919191919191967 +:109970001919191919191919191919191919191957 +:1099800019191919191919390033CD191919191972 +:109990001919191919191919191919191919191937 +:1099A0001919191919191919191919191919191927 +:1099B0001919191919191919191919191939002900 +:1099C000CE19191919191919191919191919191952 +:1099D00019191919191919191919191919191919F7 +:1099E000191919191919191919390033CF19191910 +:1099F00019191919191919191919191919191919D7 +:109A000019191919191919191919191919191919C6 +:109A10001919191919191919191919191919193996 +:109A20000029D019191919191919191919191919F8 +:109A30001919191919191919191919191919191996 +:109A40001919191919191919191919390033D119AD +:109A50001919191919191919191919191919191976 +:109A60001919191919191919191919191919191966 +:109A70001919191919191919191919191919191956 +:109A800019390029D2191919191919191919191976 +:109A90001919191919191919191919191919191936 +:109AA0001919191919191919191919191939003305 +:109AB000D31919191919191919191919191919195C +:109AC0001919191919191919191919191919191906 +:109AD00019191919191919191919191919191919F6 +:109AE000191919390029D4212121212121212121CC +:109AF0002121212121212121212121212121212156 +:109B0000212121212121212121212121212121392D +:109B10000033D52121212121212121212121212190 +:109B20002121212121212121212121212121212125 +:109B30002121212121212121212121212121212115 +:109B40002121212121390029D62121212121212151 +:109B500021212121212121212121212121212121F5 +:109B600021212121212121212121212121212121E5 +:109B700021390033D7212121212121212121212116 +:109B800021212121212121212121212121212121C5 +:109B900021212121212121212121212121212121B5 +:109BA00021212121212121390029D82121212121EF +:109BB0002121212121212121212121212121212195 +:109BC0002121212121212121212121212121212185 +:109BD000212121390033D9212121212121212121B4 +:109BE0002121212121212121212121212121212165 +:109BF0002121212121212121212121212121212155 +:109C0000212121212121212121390029DD21212189 +:109C10002121212121212121212121212121212134 +:109C20002121212121212121212121212121212124 +:109C30002121212121390033DE212121212121214E +:109C40002121212121212121212121212121212104 +:109C500021212121212121212121212121212121F4 +:109C60002121212121212121212121390029DF2325 +:109C7000150F0B0B0B0B0B0B0B0B0B0B0B0B0B0B26 +:109C80000B0B0B2618120E0E0E0E0E0E0E0E0E0ED7 +:109C90000E0E0E0E0E0E0E390033E0281A141010A0 +:109CA000101010101010101010101010101010289C +:109CB0001A14101010101010101010101010101096 +:109CC00010101021212121212121212121390029B8 +:109CD000E123150F0B0B0B0B0B0B0B0B0B0B0B0BD8 +:109CE0000B0B0B0B0B2618120E0E0E0E0E0E0E0E7D +:109CF0000E0E0E0E0E0E0E0E0E390033E2281A1442 +:109D00001010101010101010101010101010101053 +:109D100010281A141010101010101010101010101D +:109D20001010101010212121212121212121213960 +:109D30000029E323150F0B0B0B0B0B0B0B0B0B0B62 +:109D40000B0B0B0B0B0B0B2618120E0E0E0E0E0E22 +:109D50000E0E0E0E0E0E0E0E0E0E0E390033E428F1 +:109D60001A141010101010101010101010101010E5 +:109D7000101010281A1410101010101010101010BD +:109D8000101010101010102121212121212121213A +:109D900021390029E523150F0B0B0B0B0B0B0B0BBC +:109DA0000B0B0B0B0B0B0B0B0B2618120E0E0E0EC8 +:109DB0000E0E0E0E0E0E0E0E0E0E0E0E0E39003381 +:109DC000E6281A1410101010101010101010101097 +:109DD0001010101010281A1410101010101010105D +:109DE00010101010101010101021212121212121FC +:109DF0002121213900029F05390007B22420050FD7 +:109E0000FFFF390009B3A000280000003FFF390020 +:109E10000DB4020E3E00001006000002500F390083 +:109E200015B50FFF07FF03330147014600CD00665C +:109E3000003A00140008390015B603FF01FF0000C6 +:109E4000000003FF01FF0000000003FF01FF3900D5 +:109E500009B800000000131F306E390029E000002F +:109E600000000000000000000000000000000000F2 +:109E700000000000000000000000000000000000E2 +:109E8000000000000000390029E10000000000008F +:109E900000000000000000000000000000000000C2 +:109EA00000000000000000000000000000000000B2 +:109EB0000000390015E20000000000000000000072 +:109EC00000000000000000000000390029E301E16B +:109ED00001E101E101E101FF01FF01FF01FF01FFDC +:109EE00001FF01E101E101E101E101FF01FF01FFEA +:109EF00001FF01FF01FF390029E401E101E101E176 +:109F000001E101FF01FF01FF01FF01FF01FF01E18D +:109F100001E101E101E101FF01FF01FF01FF01FF9B +:109F200001FF390015E501FF01FF01FF01FF01FFFE +:109F300001FF01FF01FF01FF01FF3900029F04390A +:109F40000013B30000100030500070B000D0F011CA +:109F5000307012F070390015B423F07034F0F067EF +:109F6000F0F08AF0F0CDF0F0EFF0F00FFF390002E2 +:109F70009F05390015B50FFF07FF03330147014661 +:109F800000CD0066003A00140008390015B6000044 +:109F900000000000000000000000000000000000C1 +:109FA00000003900029F05390002F980390004FFE2 +:109FB0000000013900029F06390003FF000139004B +:109FC00005FE01000000390016F102004523C12CF6 +:109FD0003394F344107545C70F557CEB664AA0399E +:109FE0000012F267F77C886BD69A3C07ABC727BB99 +:109FF00084E6B0E6390016F302004522ACDE23F316 +:10A00000983499204462A345F35D56BA0B39001287 +:10A01000F46664DA78BA16896F1D9ABF0AAA5DAC35 +:10A02000A0AC390016F50200E93381DD4419B445CE +:10A03000D53C5598E96661DD77439E390012F67884 +:10A04000F98B9A8E03AB7449CC1470CDDC3ED03EB4 +:10A05000390002FF01390005FE0101000039001638 +:10A06000F1000001127E6423BD8A33ADED4464909B +:10A0700055238156D42C390012F26671F378CA2721 +:10A08000897E2B9ACB1AAA66B5A0B5390016F300C3 +:10A0900000011113E8235B0A33206234EB0B44A365 +:10A0A000FC55459F390012F456DE5D77217278C564 +:10A0B0005C89E52A996DB190B1390016F502000866 +:10A0C00023FD68349648446AA6552A5A56F86467B0 +:10A0D000BC1A390012F67766F089D83D9A9F59BBB1 +:10A0E0000058BBACFCB0FC390002FF01390005FE92 +:10A0F00001020000390016F10000010002031263A2 +:10A10000C2330D5333A6F94461C055145D390012B2 +:10A11000F2569C0367BF0F7758DA88568F89C900BB +:10A120009000390016F30000010002030287272285 +:10A1300083D1331B7934DE3A4490DB390012F45575 +:10A14000147466297667BA2D77A2D38808388038C8 +:10A15000390016F50200612262C3332A9934DF31D7 +:10A16000445FBB55228A56EC39390012F6667DED04 +:10A1700078B70D885CE99970B19AED2AA02A390068 +:10A1800002FF01390005FE01030000390016F1004D +:10A1900000010002030004050006F023CD1634A6DA +:10A1A00011445EA3390012F245DB4256DB2166669C +:10A1B000D27736667796BE70BE390016F30000027D +:10A1C000000507000C0D114480224CA8333687345B +:10A1D000DA29390012F44457BF55498D56D63766EF +:10A1E00097C367F0167016390016F501001F11208D +:10A1F00021331314333F6E34AF0E448DC955217390 +:10A20000390012F656A81B67C10B7756CC88396CFB +:10A21000889ECC80CC390002FF01390005FE010484 +:10A220000000390016F100000100020300041711BC +:10A2300050CF3376C24475C355195A390012F255BE +:10A2400093F4668CD0770C7A78DD0A883A61806165 +:10A25000390016F3000001000203000405127B46DA +:10A2600033116534FA4D4497DD390012F4551674F4 +:10A270006606496681E97745737797BF70BF3900F5 +:10A2800016F50200EC3356573358D934FF3844885A +:10A29000D655399756D423390012F6665CC5776BCC +:10A2A000B478F26889D3049935629062390002FF6C +:10A2B00001390005FE01050000390016F10000011A +:10A2C00000020300040502086F23B9BF442EA14514 +:10A2D000F738390012F25573D76678B967FB64779F +:10A2E000C7F58820518051390016F30000010002A3 +:10A2F0000300040501063223AA2B34B01B4469ADC8 +:10A30000390012F445F55156F12E6670CF772C5A6C +:10A310007781AA70AA390016F50200EC3386B033B3 +:10A32000B1B234E80C445F9E55237456BC01390029 +:10A3300012F66650B0775DA178E55788C0F1991F95 +:10A340004F904F390002FF01390005FE0106000061 +:10A35000390016F1000001000203000405000607A1 +:10A36000010F1834902145AA01390012F2553AA87C +:10A37000664D8E67D73E77A5D078FB2B802B3900B2 +:10A3800016F3000001000203000405000607012681 +:10A39000EA3317AD441670390012F445AC1B55BDB5 +:10A3A000FB6645A7770F33775D8B708B390016F509 +:10A3B0000200EC3386B333CCCD33CECF442E76457A +:10A3C000E958559FE1390012F6662A97774182785D +:10A3D000C83988A6D29900319031390002FF01397D +:10A3E0000005FE01070000390016F100000100021F +:10A3F000030004050006070008CB130659446295C4 +:10A40000390012F245EB63660B57679308776A9938 +:10A4100077C0EF70EF390016F3000001000203006F +:10A42000040500060700080912C8F334B500390016 +:10A4300012F4444EC65570BD56F67066CFFD771FB8 +:10A44000527052390016F50200EC33546E336F70BF +:10A4500033717234E62F45AE0F5559B7390012F6F5 +:10A4600056EE5B770B51789105886C9D88C7F88014 +:10A47000F8390002FF01390005FE0108000039002B +:10A4800016F10000010002030004050006070008A1 +:10A4900009000A55007879390012F2348C68554960 +:10A4A0009856D14866A9D067FB277027390016F364 +:10A4B000000001000203000405000607000809016E +:10A4C0000A1512D12A390012F43315D444ABF055D1 +:10A4D00026A96611306659876087390016F5020093 +:10A4E0005522565722D1FA33101333148C44016885 +:10A4F00045B516390012F6554BB1666BAB67DE5C9D +:10A5000077BBDC88072D802D390002FF013900055B +:10A51000FE01090000390016F100000100020300ED +:10A520000405000607000809000A0B000C0F39009B +:10A5300012F200505134F5B145F18256DE11663DFC +:10A540005D605D390016F3000001000203000405A0 +:10A55000000607000809000A0B000C0D390012F470 +:10A5600002A837347F08445AD4553860559CB850F7 +:10A57000B8390016F500000100020301E225124976 +:10A580007622F8F9333AAE441C64390012F6459647 +:10A590001056CA0D6652AB770C2B776488708839D9 +:10A5A0000002FF013900029F05390002F90039005D +:10A5B00004FF0000003900029F06390003FF00007D +:10A5C0003900029F07390008B2040404040400980B +:10A5D000390008B31515151504009A390008B42080 +:10A5E000202020040096390008B604040404040264 +:10A5F00060390008B704040404040260390021B97A +:10A600000102030405060708090A0B0C0D0E0F10C2 +:10A61000000000000000000000000000000000003A +:10A62000390021BA0102030405060708090A0B0CC8 +:10A630000D0E0F1011121314150000000000000081 +:10A6400000000000390021BB0102030405060708D1 +:10A65000090A0B0C0D0E0F101112131415161718F2 +:10A66000191A1B1C1D1E1F20390021BD01020304E5 +:10A6700000000000000000000000000000000000DA +:10A68000000000000000000000000000390021BEB2 +:10A6900001020304000000000000000000000000B0 +:10A6A00000000000000000000000000000000000AA +:10A6B00039001FC0007A7A007A7A006A4600261AAA +:10A6C000000F0B000B000000000000000000000065 +:10A6D000000039001FC1009A9A009A9A006A460049 +:10A6E000261A000F0B000B00000000000000000005 +:10A6F0000000000039001FC2009696009696006A7E +:10A700004600261B000F0B000B000000000000009D +:10A71000000000000000390007C410301C001C1CA1 +:10A72000390007C5226060226060390029D60FFF1A +:10A7300007FF03330147014600CD0066003A0014CD +:10A740000008000100000000000000000000000000 +:10A75000000000000000390015D703FF01FF0000D2 +:10A76000000003FF01FF0000000003FF01FF3900AC +:10A77000029F0C390009B4F0C0C01B1B0000163941 +:10A7800000029F08390004B2100002390002B4111F +:10A79000390008B5000201FF2040C0390003B65857 +:10A7A00003390037B733FFFF33FFFF33FFFF33FFBA +:10A7B000FF33FFFF33FFFF33FFFF33FFFF33FFFFA5 +:10A7C00033FFFF33FFFF33FFFF33FFFF33FFFF3361 +:10A7D000FFFF33FFFF33FFFF33FFFF390037B8338D +:10A7E000FFFF33FFFF33FFFF33FFFF33FFFF33FF75 +:10A7F000FF33FFFF33FFFF33FFFF33FFFF33FFFF65 +:10A8000033FFFF33FFFF33FFFF33FFFF33FFFF3320 +:10A81000FFFF33FFFF390037B933FFFF33FFFF334B +:10A82000FFFF33FFFF33FFFF33FFFF33FFFF33FF34 +:10A83000FF33FFFF33FFFF33FFFF33FFFF33FFFF24 +:10A8400033FFFF33FFFF33FFFF33FFFF33FFFF39DA +:10A850000037BA33FFFF33FFFF33FFFF33FFFF3310 +:10A86000FFFF33FFFF33FFFF33FFFF33FFFF33FFF4 +:10A87000FF33FFFF33FFFF33FFFF33FFFF33FFFFE4 +:10A8800033FFFF33FFFF33FFFF390037BB33FFFFD9 +:10A8900033FFFF33FFFF33FFFF33FFFF33FFFF3390 +:10A8A000FFFF33FFFF33FFFF33FFFF33FFFF33FFB4 +:10A8B000FF33FFFF33FFFF33FFFF33FFFF33FFFFA4 +:10A8C00033FFFF390037BC442C2244180E4300F4F8 +:10A8D00033E6D834D32C442218440E0033F4E63344 +:10A8E000D8D3442C2244180E4300F433E6D834D392 +:10A8F0002C442218440E0033F4E633D8D339003701 +:10A90000BD33FFFF33FFFF33FFFF33FFFF33FFFF95 +:10A9100033FFFF33FFFF33FFFF33FFFF33FFFF330F +:10A92000FFFF33FFFF33FFFF33FFFF33FFFF33FF33 +:10A93000FF33FFFF33FFFF390037BE33FFFF33FF25 +:10A94000FF33FFFF33FFFF33FFFF33FFFF33FFFF13 +:10A9500033FFFF33FFFF33FFFF33FFFF33FFFF33CF +:10A96000FFFF33FFFF33FFFF33FFFF33FFFF33FFF3 +:10A97000FF390037BF33FFFF33FFFF33FFFF33FFE4 +:10A98000FF33FFFF33FFFF33FFFF33FFFF33FFFFD3 +:10A9900033FFFF33FFFF33FFFF33FFFF33FFFF338F +:10A9A000FFFF33FFFF33FFFF33FFFF390037C033B3 +:10A9B000FFFF33FFFF33FFFF33FFFF33FFFF33FFA3 +:10A9C000FF33FFFF33FFFF33FFFF33FFFF33FFFF93 +:10A9D00033FFFF33FFFF33FFFF33FFFF33FFFF334F +:10A9E000FFFF33FFFF390037C133FFFF33FFFF3372 +:10A9F000FFFF33FFFF33FFFF33FFFF33FFFF33FF63 +:10AA0000FF33FFFF33FFFF33FFFF33FFFF33FFFF52 +:10AA100033FFFF33FFFF33FFFF33FFFF33FFFF3908 +:10AA20000037C2442C2244180E4300F433E6D834D5 +:10AA3000D32C442218440E0033F4E633D8D3442CEC +:10AA40002244180E4300F433E6D834D32C442218A1 +:10AA5000440E0033F4E633D8D3390037C333FFFF55 +:10AA600033FFFF33FFFF33FFFF33FFFF33FFFF33BE +:10AA7000FFFF33FFFF33FFFF33FFFF33FFFF33FFE2 +:10AA8000FF33FFFF33FFFF33FFFF33FFFF33FFFFD2 +:10AA900033FFFF390037C433FFFF33FFFF33FFFFBE +:10AAA00033FFFF33FFFF33FFFF33FFFF33FFFF337E +:10AAB000FFFF33FFFF33FFFF33FFFF33FFFF33FFA2 +:10AAC000FF33FFFF33FFFF33FFFF33FFFF39003753 +:10AAD000C533FFFF33FFFF33FFFF33FFFF33FFFFBC +:10AAE00033FFFF33FFFF33FFFF33FFFF33FFFF333E +:10AAF000FFFF33FFFF33FFFF33FFFF33FFFF33FF62 +:10AB0000FF33FFFF33FFFF390037C633FFFF33FF4B +:10AB1000FF33FFFF33FFFF33FFFF33FFFF33FFFF41 +:10AB200033FFFF33FFFF33FFFF33FFFF33FFFF33FD +:10AB3000FFFF33FFFF33FFFF33FFFF33FFFF33FF21 +:10AB4000FF390037C733FFFF33FFFF33FFFF33FF0A +:10AB5000FF33FFFF33FFFF33FFFF33FFFF33FFFF01 +:10AB600033FFFF33FFFF33FFFF33FFFF33FFFF33BD +:10AB7000FFFF33FFFF33FFFF33FFFF390037C844C8 +:10AB80002C2244180E4300F433E6D834D32C44224C +:10AB900018440E0033F4E633D8D3442C2244180E64 +:10ABA0004300F433E6D834D32C442218440E003347 +:10ABB000F4E633D8D339000AC916333D01000FFF3C +:10ABC0000000390002CAF0390006CB00017C4200C7 +:10ABD000390005CC0001001F390004CD0001003907 +:10ABE0000021CE002500A9019C030804F407650A92 +:10ABF000620DEE120C16C11C1021FC28872FB537F0 +:10AC0000863FFF39000CCFFC01FFFFFFFFFFBA4E6C +:10AC1000ED00390035D0000001F1EC23E4DC45D72C +:10AC2000DE67CBC289C0C4ABC2BCCDB5ABEFAAB4A2 +:10AC3000000001FAF123EBE445E3EB67DBD189CEB9 +:10AC4000D0ABCCC8CDC1BAEFB9B8390035D100000E +:10AC500001FFF023E8E345E1E567D7CC89CED5AB2A +:10AC6000CECACDC4BDEFB9B7000001F1EB23E1DDE1 +:10AC700045D0D067BFB1899D8AAB7862CD4930EFAE +:10AC80001406390035D2000001F5EE23E8E145D67F +:10AC9000D467BFB689A699AB8875CD6047EF290503 +:10ACA000000001F4EF23E7E145D7D467C2B689A4D9 +:10ACB00091AB7A63CD513BEF1E01390035D30000D3 +:10ACC00001FFEC23E3D945D1D667C1B789B4BEAB48 +:10ACD000B3ABCDA49AEF99A10000110BFC23F5E4CE +:10ACE00045DFE467CDC589BFCDABB7B4CDAAA4EF2E +:10ACF000A6A5390035D400001102F223E9E045DCB5 +:10AD0000DD67CCC289C4D0ABBFB9CDB3ACEFA8A5C9 +:10AD10000000121620342830563138782F299A191D +:10AD200010ABFFEDCDD6BCEFAFB2390035D500008A +:10AD3000123336343F4556494E7847489A3F3CBC1B +:10AD40003029DD15FEEFDEBE000012182634313941 +:10AD5000563D42783B389A2D22BC0E0ACDF8E0EFE2 +:10AD6000C9B9390035D6800002D90834131A46E92A +:10AD70003C78768C9AA4BEBCCED8DED7D7F1F41638 +:10AD8000800002CF01340A1A46EE44787B909AACD8 +:10AD9000C7BCD5D8DEE3EDF0F4FC39001BD780004A +:10ADA00002F11B34272A46FF5D7894AD9AC7DCBCBC +:10ADB000E9E9DEE7E4F1F406390012D88096918DD6 +:10ADC0008B8A96908E87909692858F949639000202 +:10ADD0009F09390003B29C09390009B30000000043 +:10ADE00080808080390010B476FFDD43844832478C +:10ADF0002211850D00AC01390023C0000001649CC4 +:10AE0000C8185552729AB85AE0F4265800000164E6 +:10AE10009CC8185552729AB85AE0F4265839001D49 +:10AE2000C1FFF5EDE5DDD6D0D0CD0FC5C3C3C3005E +:10AE30000F13161A2023252D002D2D2D2D39001D21 +:10AE4000C2FFF5EDE5DDD6D3CDC90FC9C0C0C00046 +:10AE50000F15151B202F3535003838383839001DAF +:10AE6000C3FFF5EDE5DED6D3CDC90FC9C0C0C00024 +:10AE70000F13151B202F3535003838383839001D91 +:10AE8000C4FFF5EDE5DED6D3CDC90FC9C0C0C00003 +:10AE90000F13151B202F3535003838383839001D71 +:10AEA000C5FFF5EDE5DDD6D3CDC90FC9C0C0C000E3 +:10AEB0000F15151B202F3535003838383839001D4F +:10AEC000C6FFF5EDE8E0D6D3CDC90FC9C0C0C000BC +:10AED0000F15151B202F3535003838383839001D2F +:10AEE000C7FFF5EDE8E0D6D3CDC90FC9C0C0C0009B +:10AEF0000F15151B202F3535003838383839001D0F +:10AF0000C8FFF5EDE8E0D6D3CDC90FC9C0C0C00079 +:10AF10000F15151B202F3535003838383839001DEE +:10AF2000C9FFF5EDE8E0D6D3CDC90FC9C0C0C00058 +:10AF30000F15151B202F3535003838383839001DCE +:10AF4000CAFFF5EDE5DDD6D3CDC90FC9C0C0C0003D +:10AF50000F15151B202F3535003838383839001DAE +:10AF6000CBFFF3F0E8DDD8D5D0CD0FC5C3C3C30008 +:10AF70000815181F2023252D002D2D2D2D39001DDE +:10AF8000CCFFF3F0E8DDD8D5D0CD0FC5C3C3C300E7 +:10AF9000080F121F2023252D002D2D2D2D39001DCA +:10AFA000CDFFF3F0E8DDD8D5D0CD0FC5C3C3C300C6 +:10AFB0000817181F2023252D002D2D2D2D39001D9C +:10AFC000CEFFF3F0E8DDD8D5D0CD0FC5C3C3C300A5 +:10AFD0000817181F2023252D002D2D2D2D39001D7C +:10AFE000CFFFF5F3EDDED8CDC8CF0FCDC5C3C3007D +:10AFF000080D0F121517181D001F20252D39001DD3 +:10B00000D1FFF5F3EDDED8CDC8CF0FCDC5C3C3005A +:10B01000080D0F121517181D001F20252D39001DB2 +:10B02000D2FFF5F3EDDED8CDC8CF0FCDC5C3C30039 +:10B03000080D0F121517181D001F20252D39001D92 +:10B04000D3FFF5F3EDDED8CDC8CF0FCDC5C3C30018 +:10B05000080D0F121517181D001F20252D39001D72 +:10B06000D4FFF5F3EDDED8CDC8CF0FCDC5C3C300F7 +:10B070000F120F121517181D001F20252D39001152 +:10B08000D517F9FEFD0500000017F9F8FE000000D5 +:10B0900000390011D618F5F8030000000017EBED99 +:10B0A000EF0000000039000DD70500800080AF00E0 +:10B0B00080008003FF390011D8202020202020208C +:10B0C000202020202020202020390006EE301000F3 +:10B0D00010FF3900029F0A39000CB21F0010010056 +:10B0E00007000000110039002BB3101000101000F1 +:10B0F0000000000000000000000000000000001040 +:10B10000100010100000000000003F0000000000D0 +:10B11000003F000039002BB4000000003F00000099 +:10B120000000003F0000000000003F0000000000A1 +:10B13000003F0000000000003F0000000000003F52 +:10B14000000039002BB500000000000000101000C6 +:10B15000101000001010001010000000000000008F +:10B160000000000000003F0000000000003F000061 +:10B1700039000CBE001FFF13910F04002480FF391B +:10B1800000029F0B39000AB2013F3F0F3F0F5F0FD4 +:10B190000F390031B93200000000006B54241CB09C +:10B1A00014C85C241CB0FF0000000000000000FF79 +:10B1B0000000000000000000FF0000000000000090 +:10B1C0000000000000390031BA32000000000054D5 +:10B1D00069241CB014C85C241CB0FF0000000000EF +:10B1E000000000FF0000000000000000FF00000061 +:10B1F000000000000000000000390031BC320000F7 +:10B200000000004B4B241CB014D165241CB0FF007F +:10B2100000000000000000FF00000000000000002F +:10B22000FF000000000000000000000000390031B5 +:10B23000BE3200000000002525201C330000000065 +:10B240002525FF0000000000000000FF00000000B6 +:10B2500000000000FF0000000000000000000000EF +:10B2600000390014C68F04040404FFFFFFFF00220E +:10B27000222222001E1E1E1E390014C70F040404C1 +:10B2800004FFFFFFFF0022222222001E1E1E1E3985 +:10B290000010C8F90505B0E0B050BAF0B0E0B02039 +:10B2A000D0503900029F0D390010B2251021010243 +:10B2B0001000001610000001AA90390002B3B03946 +:10B2C000000DB500240701000000002004EE213924 +:10B2D0000004B6021222390005B720F0C0E03900A0 +:10B2E0000DB820F0C0E020F0C0E020F0C0E0390050 +:10B2F00005B901010101390003BA0000390002BBA0 +:10B3000001390015BC0FFF07FF0333014701460059 +:10B31000CD0066003A00140008390006BD020002A4 +:10B32000065B39000CC70000000000000000002A86 +:10B330000039000248033900011139000351000FA0 +:10B3400039000253E0390001353900029F04390009 +:10B350000EB50017271B17007575103B08A8483954 +:10B360000012BE00CFFFFFFF3FFFFFFF3FFFFFFFC9 +:10B370003FFFFFFF39002EE9FFFFFFFFFFFFFFFF49 +:10B38000FF00FFFFFF3F3F33FFFF33FFFF33FFFFB0 +:10B3900033FFFF33FFFF33FFFF33FFFF33FFFF3385 +:10B3A000FFFF33FFFF39001CEA33FFFF33FFFF339A +:10B3B000FFFF33FFFF33FFFF33FFFF33FFFF33FF99 +:10B3C000FF33FFFF39002EEBFFFFFF00FFFF00FF01 +:10B3D000FF00FFFFFF3F3F33FFFF33FFFF33FFFF60 +:10B3E00033FFFF33FFFF33FFFF33FFFF33FFFF3335 +:10B3F000FFFF33FFFF39001CEC33FFFF33FFFF3348 +:10B40000FFFF33FFFF33FFFF33FFFF33FFFF33FF48 +:10B41000FF33FFFF39002EEDFFFFFF00FFFF00FFAE +:10B42000FF00FFFFFF3F3F33FFFF33FFFF33FFFF0F +:10B4300033FFFF33FFFF33FFFF33FFFF33FFFF33E4 +:10B44000FFFF33FFFF39001CEE33FFFF33FFFF33F5 +:10B45000FFFF33FFFF33FFFF33FFFF33FFFF33FFF8 +:10B46000FF33FFFF39000AF81EE0E0E00018150086 +:10B47000E039000AF9E1181500F0F8F0EE003900A3 +:10B480000AFA1EE0E0E000181500E03900029F050E +:10B4900039000DB4020F3E00001006000002408D7E +:10B4A000390029E60FFF07FF03330147014600CDAE +:10B4B0000066003A001400080000000000000000D0 +:10B4C00000000000000000000000000039001FE73D +:10B4D000000000000000000000000000000000006C +:10B4E0000000000000000000000000000000390023 +:10B4F00029E80FFF0FFF0FFF0FFF0FFF0CF009717F +:10B500000754048C0301000000000000000000004C +:10B510000000000000000000000039001FE90000EA +:10B52000000000000000000000000000000000001B +:10B530000000000000000000000000000702010001 +:10B5400008020100020201000301020201010000E1 +:10B550003BB4AD07EBB5ED001E0000001E0000007F +:10B560001E000000040000001E0000003C0000005F +:10B570003C00000000000100040100000201000086 +:10B5800002000000000100000000000000000000B8 +:10B59000020218000302190006021A0007021B002B +:10B5A00008021C000E021D000F021E0010021F00E8 +:10B5B000090218010002190101021A0118021B01F7 +:10B5C00019021C011B021D011A021E0124021F0187 +:10B5D000250218020402190227021A020C021B0299 +:10B5E0000D021C0205021D0212021E021C021F0295 +:10B5F0001D0218032802190300001001001802069A +:10B6000010030800040800050310060318070110C2 +:10B610000808000900000A00080B05000C05080DC9 +:10B6200005180E05100F0600100608110118120665 +:10B630001813030014030815010816040817041052 +:10B64000180418190100000000680040009800402C +:10B6500000680040009800400068004000980040EA +:10B6600000680040009800400068004000980040DA +:10B6700000680040009800400068004000980040CA +:10B6800000680040009800405B25735D202825304D +:10B690003464292064617461207479706520697351 +:10B6A0002073686F727420726573706F6E7365219A +:10B6B00020636D645F636F756E745B25645D206FDE +:10B6C0007665722073697A650A0000005B25735DF8 +:10B6D0002028253034642920445343204552525BAE +:10B6E000307825785D204552525F5250545B307857 +:10B6F00025785D20525842522073746174757330FE +:10B700005B307825785D20737461747573315B30BC +:10B710007825785D200A00005B25735D20282530A0 +:10B720003464292076696463206572726F72202107 +:10B73000737461747573305B307825785D3B737416 +:10B7400061747573315B307825785D3B7374617417 +:10B750007573325B307825785D210A005B25735D57 +:10B7600020282530346429206572726F72212120CF +:10B77000707073206C656E677468203A20256420B1 +:10B780002C6D61782073697A6520697320313238B5 +:10B79000202120666C75736820706B74206275665A +:10B7A0000A000000C4B701000000070018040000F0 +:10B7B000A00A010030B9010018040700702D000034 +:10B7C0006E150100011C221110088930800BB00594 +:10B7D000401CBB02A002111302501420143912099C +:10B7E000120C12851370181610F0030C2010160698 +:10B7F0000B0B330E1C2A38465462697077797B7DB7 +:10B800007E010201001B28094009BE19FC19FA1922 +:10B81000F81A381A781AB62AF62B342B743B746B44 +:10B82000F449801508C403F017BB01F801F80213AE +:10B8300001F8142011823A07800A5E968041320195 +:10B840000419C0E1E41AFF01D90C19332A0101518E +:10B850002BE0A50F091155E9101C01101005A202DB +:10B860004BFC031B89183204721A9929012D0C1301 +:10B87000E40E07E491C5B4C404081258BA4010415C +:10B88000125C0310400912600310400A1264032482 +:10B89000400BBA04820911A0021D03041D02030219 +:10B8A0000B1C030240031E040F041D050C0C0B1C93 +:10B8B0000601C0031F070512011C050603A413019E +:10B8C000061F010501020201D229121A02081C03F7 +:10B8D0000506071B03041A1968180904040507085C +:10B8E0000808FF012A061B2E010106060709196632 +:10B8F0001D070805061C191D2A090918100909FF4A +:10B90000FF0A050604080A0A02FF0B04132E010BA6 +:10B910000BFF0C1B2E0C0CFFFF0D092E0D0DFFFF56 +:10B920000E091F0E0EFFFF0F043D11195A410000B2 +:04000005000100C135 +:00000001FF diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.htm b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.htm new file mode 100644 index 0000000..98733da --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.htm @@ -0,0 +1,4007 @@ + + +Static Call Graph - [.\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf] +
    +

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


    +

    #<CALLGRAPH># ARM Linker, 5060750: Last Updated: Tue Apr 09 11:46:48 2024 +

    +

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

    +Call chain for Maximum Stack Depth:

    +main ⇒ google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +

    +

    +Mutually Recursive functions +

  • NMI_Handler   ⇒   NMI_Handler
    +
  • SVC_Handler   ⇒   SVC_Handler
    +
  • PendSV_Handler   ⇒   PendSV_Handler
    +
  • FLSCTRL_IRQn_Handler   ⇒   FLSCTRL_IRQn_Handler
    +
  • WDG_IRQn_Handler   ⇒   WDG_IRQn_Handler
    +
  • I2C0_IRQn_Handler   ⇒   I2C0_IRQn_Handler
    +
  • I2C1_IRQn_Handler   ⇒   I2C1_IRQn_Handler
    +
  • SPIS_IRQn_Handler   ⇒   SPIS_IRQn_Handler
    +
  • SPIM_IRQn_Handler   ⇒   SPIM_IRQn_Handler
    +
  • I2C2_IRQn_Handler   ⇒   I2C2_IRQn_Handler
    +
  • OTP_IRQn_Handler   ⇒   OTP_IRQn_Handler
    +
  • PVD_IRQn_Handler   ⇒   PVD_IRQn_Handler
    + +

    +

    +Function Pointers +

      +
    • AP_NRESET_IRQn_Handler from drv_gpio.o(i.AP_NRESET_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • DMA_IRQn_Handler from drv_dma.o(i.DMA_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT0_IRQn_Handler from drv_gpio.o(i.EXTI_INT0_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT1_IRQn_Handler from drv_gpio.o(i.EXTI_INT1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT2_IRQn_Handler from drv_gpio.o(i.EXTI_INT2_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT3_IRQn_Handler from drv_gpio.o(i.EXTI_INT3_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT4_IRQn_Handler from drv_gpio.o(i.EXTI_INT4_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT5_IRQn_Handler from drv_gpio.o(i.EXTI_INT5_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT6_IRQn_Handler from drv_gpio.o(i.EXTI_INT6_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • EXTI_INT7_IRQn_Handler from drv_gpio.o(i.EXTI_INT7_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • FLSCTRL_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • HardFault_Handler from drv_common.o(i.HardFault_Handler) referenced from startup_armcm0.o(RESET) +
    • I2C0_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • I2C1_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • I2C2_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • LCDC_IRQn_Handler from hal_internal_vsync.o(i.LCDC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MEMC_IRQn_Handler from drv_memc.o(i.MEMC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MIPI_RX_IRQn_Handler from drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • MIPI_TX_IRQn_Handler from drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • NMI_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • OTP_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • PVD_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • PendSV_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • Reset_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SPIM_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SPIS_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SVC_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • SWIRE_IRQn_Handler from drv_swire.o(i.SWIRE_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • SysTick_Handler from drv_common.o(i.SysTick_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER0_IRQn_Handler from drv_timer.o(i.TIMER0_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER1_IRQn_Handler from drv_timer.o(i.TIMER1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER2_IRQn_Handler from drv_timer.o(i.TIMER2_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • TIMER3_IRQn_Handler from drv_timer.o(i.TIMER3_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • UART_IRQn_Handler from drv_uart.o(i.UART_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VIDC_IRQn_Handler from drv_vidc.o(i.VIDC_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VPRE1_IRQn_Handler from drv_rxbr.o(i.VPRE1_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • VPRE_IRQn_Handler from hal_internal_dcs.o(i.VPRE_IRQn_Handler) referenced from startup_armcm0.o(RESET) +
    • WDG_IRQn_Handler from startup_armcm0.o(.text) referenced from startup_armcm0.o(RESET) +
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_armcm0.o(.text) +
    • _sputc from printfa.o(i._sputc) referenced from printfa.o(i.__0vsprintf) +
    • ap_dcs_read from p8p_demo.o(i.ap_dcs_read) referenced from p8p_demo.o(i.app_mipi_rx_init) +
    • ap_dcs_set_backlight from p8p_demo.o(i.ap_dcs_set_backlight) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_display_off from p8p_demo.o(i.ap_dcs_set_display_off) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_display_on from p8p_demo.o(i.ap_dcs_set_display_on) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_enter_sleep_mode from p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_exit_sleep_mode from p8p_demo.o(i.ap_dcs_set_exit_sleep_mode) referenced from p8p_demo.o(.constdata) +
    • ap_dcs_set_frame_change from p8p_demo.o(i.ap_dcs_set_frame_change) referenced from p8p_demo.o(.constdata) +
    • ap_rstn_pull_down_cb from p8p_demo.o(i.ap_rstn_pull_down_cb) referenced from p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) +
    • ap_rstn_pull_high_cb from p8p_demo.o(i.ap_rstn_pull_high_cb) referenced from p8p_demo.o(i.app_system_suspend) +
    • ap_set_FPS_53 from p8p_demo.o(i.ap_set_FPS_53) referenced from p8p_demo.o(.constdata) +
    • fputc from tau_log.o(i.fputc) referenced from printfa.o(i.__0printf) +
    • hal_nonshadow_func_update from hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    • hal_tx_frame_rate_adjust from hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) +
    • hal_vsync_func_update from hal_dsi_tx_ctrl.o(i.hal_vsync_func_update) referenced from hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    • main from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) +
    • pps_update_handle from p8p_demo.o(i.pps_update_handle) referenced from p8p_demo.o(i.app_mipi_rx_init) +
    • rxbr_irq1_callback from hal_internal_vsync.o(i.rxbr_irq1_callback) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • soft_gen_te from hal_internal_vsync.o(i.soft_gen_te) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • soft_gen_te_double_buffer from hal_internal_vsync.o(i.soft_gen_te_double_buffer) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    • stop_sleep_cb from hal_pwr.o(i.stop_sleep_cb) referenced from hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) +
    • svs_sync_handle from hal_internal_svs.o(i.svs_sync_handle) referenced from hal_internal_svs.o(i.svs_wait_fr_stab) +
    • svs_wait_fr_stab from hal_internal_svs.o(i.svs_wait_fr_stab) referenced from hal_internal_svs.o(i.svs_wait_start) +
    • svs_wait_start from hal_internal_svs.o(i.svs_wait_start) referenced from hal_internal_svs.o(i.hal_intl_svs_deinit_rx) +
    • svs_wait_start from hal_internal_svs.o(i.svs_wait_start) referenced from hal_internal_svs.o(i.hal_intl_svs_init_rx) +
    • vidc_callback from hal_internal_vsync.o(i.vidc_callback) referenced from hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    +

    +Global Symbols +

    +

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) +
    [Address Reference Count : 1]

    • startup_armcm0.o(.text) +
    +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) + +

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

    [Calls]

    • >>   __scatterload +
    + +

    __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

    [Called By]

    • >>   __scatterload +
    + +

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) + +

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) + +

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) + +

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) + +

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) + +

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

    • startup_armcm0.o(RESET) +
    +

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

    [Calls]

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

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

    [Calls]

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

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

    [Calls]

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

    FLSCTRL_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    WDG_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C0_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C1_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    SPIS_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    SPIM_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    I2C2_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    OTP_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    PVD_IRQn_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_armcm0.o(.text)) +

    [Calls]

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

    __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) + +

    __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = __aeabi_uidivmod +
    +
    [Called By]
    • >>   drv_dsi_tx_phy_test_setup +
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_timing_info_update +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_set_up_phy +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_swire_init +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   svs_wait_fr_stab +
    • >>   svs_get_rel_intv +
    • >>   svs_direct_mode_setting +
    • >>   hal_intl_fb_edge_resize +
    • >>   hal_intl_fb_check_bandwidth +
    • >>   ha_intl_fb_check_pu_size +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   drv_timer_set_compare_val +
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   __aeabi_idivmod +
    • >>   drv_uart_set_baud_rate +
    • >>   _printf_core +
    + +

    __aeabi_idiv (Thumb, 0 bytes, Stack size 16 bytes, idiv.o(.text), UNUSED) + +

    __aeabi_idivmod (Thumb, 40 bytes, Stack size 16 bytes, idiv.o(.text)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = __aeabi_idivmod ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   ap_dcs_set_backlight +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    __aeabi_memcpy (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text)) +

    [Called By]

    • >>   hal_intl_fb_cal_fb_info +
    • >>   tau_log_push_log +
    + +

    __aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text)) +

    [Called By]

    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   hal_internal_vsync_init_tx +
    + +

    __aeabi_memcpy8 (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED) + +

    __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) +

    [Called By]

    • >>   hal_intl_dcs_set_auto_hw_filter +
    • >>   _memset$wrapper +
    • >>   __aeabi_memclr +
    + +

    __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_memset +
    + +

    __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_tx_ctrl_create_handle +
    • >>   hal_dsi_rx_ctrl_create_handle +
    • >>   tau_log_printf +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   hal_internal_vsync_deinit +
    • >>   soft_pro_motion_init +
    • >>   drv_uart_trans_create_handle +
    • >>   hal_uart_init +
    • >>   hal_internal_vsync_init_tx +
    + +

    __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) + +

    _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_memset +
    + +

    strlen (Thumb, 14 bytes, Stack size 0 bytes, strlen.o(.text)) +

    [Called By]

    • >>   tau_log_printf +
    + +

    memcmp (Thumb, 26 bytes, Stack size 12 bytes, memcmp.o(.text)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = memcmp +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_pps +
    + +

    __aeabi_fadd (Thumb, 162 bytes, Stack size 24 bytes, fadd.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = __aeabi_fadd ⇒ _float_epilogue +
    +
    [Calls]
    • >>   _float_round +
    • >>   _float_epilogue +
    +
    [Called By]
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   __aeabi_fsub +
    • >>   __aeabi_frsub +
    + +

    __aeabi_fsub (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = __aeabi_fsub ⇒ __aeabi_fadd ⇒ _float_epilogue +
    +
    [Calls]
    • >>   __aeabi_fadd +
    +
    [Called By]
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    __aeabi_frsub (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_fadd +
    + +

    __aeabi_fmul (Thumb, 122 bytes, Stack size 16 bytes, fmul.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_fmul +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    __aeabi_fdiv (Thumb, 124 bytes, Stack size 16 bytes, fdiv.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_fdiv +
    +
    [Calls]
    • >>   _float_round +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    + +

    __ARM_scalbnf (Thumb, 24 bytes, Stack size 0 bytes, fscalb.o(.text)) +

    [Called By]

    • >>   hal_lcdc_init_clk +
    + +

    scalbnf (Thumb, 0 bytes, Stack size 0 bytes, fscalb.o(.text), UNUSED) + +

    __aeabi_dadd (Thumb, 328 bytes, Stack size 48 bytes, dadd.o(.text)) +

    [Stack]

    • Max Depth = 104
    • Call Chain = __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_lasr +
    • >>   __aeabi_llsl +
    • >>   _double_round +
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   svs_sync_handle +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   __aeabi_drsub +
    • >>   ceil +
    • >>   __aeabi_dsub +
    • >>   _fp_digits +
    + +

    __aeabi_dsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_dadd +
    + +

    __aeabi_drsub (Thumb, 12 bytes, Stack size 8 bytes, dadd.o(.text)) +

    [Stack]

    • Max Depth = 112
    • Call Chain = __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_dadd +
    +
    [Called By]
    • >>   ceil +
    + +

    __aeabi_dmul (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text)) +

    [Stack]

    • Max Depth = 128
    • Call Chain = __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   _fp_digits +
    + +

    __aeabi_ui2f (Thumb, 14 bytes, Stack size 8 bytes, ffltui.o(.text)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = __aeabi_ui2f ⇒ _float_epilogue +
    +
    [Calls]
    • >>   _float_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    __aeabi_ui2d (Thumb, 24 bytes, Stack size 16 bytes, dfltui.o(.text)) +

    [Stack]

    • Max Depth = 72
    • Call Chain = __aeabi_ui2d ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   _double_epilogue +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_vsync_reset_lcdc_scaler +
    + +

    __aeabi_f2uiz (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text)) +

    [Called By]

    • >>   svs_wait_fr_stab +
    + +

    __aeabi_d2uiz (Thumb, 50 bytes, Stack size 8 bytes, dfixui.o(.text)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = __aeabi_d2uiz ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_llsr +
    +
    [Called By]
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    • >>   hal_vsync_reset_lcdc_scaler +
    + +

    __aeabi_f2d (Thumb, 40 bytes, Stack size 0 bytes, f2d.o(.text)) +

    [Called By]

    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    • >>   svs_wait_start +
    • >>   svs_sync_handle +
    + +

    __aeabi_d2f (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_d2f +
    +
    [Calls]
    • >>   _float_round +
    +
    [Called By]
    • >>   hal_dsi_tx_timing_info_update +
    + +

    __aeabi_cfcmpeq (Thumb, 0 bytes, Stack size 0 bytes, cfcmple.o(.text), UNUSED) + +

    __aeabi_cfcmple (Thumb, 20 bytes, Stack size 0 bytes, cfcmple.o(.text)) +

    [Called By]

    • >>   hal_tx_frame_rate_adjust +
    + +

    __aeabi_cfrcmple (Thumb, 20 bytes, Stack size 0 bytes, cfrcmple.o(.text)) +

    [Called By]

    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    __aeabi_uldivmod (Thumb, 96 bytes, Stack size 48 bytes, uldiv.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    +
    [Called By]
    • >>   _printf_core +
    • >>   _fp_digits +
    + +

    __aeabi_llsl (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_llsl +
    +
    [Called By]
    • >>   __aeabi_dadd +
    • >>   __aeabi_uldivmod +
    • >>   _double_epilogue +
    • >>   __aeabi_d2ulz +
    + +

    _ll_shift_l (Thumb, 0 bytes, Stack size 8 bytes, llshl.o(.text), UNUSED) + +

    __aeabi_llsr (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_llsr +
    +
    [Called By]
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_uldivmod +
    • >>   _double_epilogue +
    • >>   __aeabi_d2ulz +
    + +

    _ll_ushift_r (Thumb, 0 bytes, Stack size 8 bytes, llushr.o(.text), UNUSED) + +

    __aeabi_lasr (Thumb, 38 bytes, Stack size 8 bytes, llsshr.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __aeabi_lasr +
    +
    [Called By]
    • >>   __aeabi_dadd +
    + +

    _ll_sshift_r (Thumb, 0 bytes, Stack size 8 bytes, llsshr.o(.text), UNUSED) + +

    __I$use$fp (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED) + +

    _float_round (Thumb, 16 bytes, Stack size 0 bytes, fepilogue.o(.text)) +

    [Called By]

    • >>   __aeabi_fadd +
    • >>   __aeabi_d2f +
    • >>   __aeabi_fdiv +
    + +

    _float_epilogue (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = _float_epilogue +
    +
    [Called By]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fadd +
    + +

    _double_round (Thumb, 26 bytes, Stack size 8 bytes, depilogue.o(.text)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = _double_round +
    +
    [Called By]
    • >>   __aeabi_dadd +
    • >>   _double_epilogue +
    • >>   __aeabi_ddiv +
    + +

    _double_epilogue (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text)) +

    [Stack]

    • Max Depth = 56
    • Call Chain = _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __ARM_clz +
    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    • >>   _double_round +
    +
    [Called By]
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_dmul +
    + +

    __aeabi_ddiv (Thumb, 234 bytes, Stack size 40 bytes, ddiv.o(.text), UNUSED) +

    [Calls]

    • >>   _double_round +
    +
    [Called By]
    • >>   _fp_digits +
    + +

    __aeabi_d2ulz (Thumb, 54 bytes, Stack size 8 bytes, dfixul.o(.text), UNUSED) +

    [Calls]

    • >>   __aeabi_llsr +
    • >>   __aeabi_llsl +
    +
    [Called By]
    • >>   _fp_digits +
    + +

    __aeabi_cdrcmple (Thumb, 38 bytes, Stack size 0 bytes, cdrcmple.o(.text)) +

    [Called By]

    • >>   ceil +
    • >>   _fp_digits +
    + +

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

    [Calls]

    • >>   __main_after_scatterload +
    +
    [Called By]
    • >>   _main_scatterload +
    + +

    __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) + +

    __decompress (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) + +

    __decompress1 (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED) + +

    AP_NRESET_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_gpio.o(i.AP_NRESET_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = AP_NRESET_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    DMA_IRQn_Handler (Thumb, 78 bytes, Stack size 24 bytes, drv_dma.o(i.DMA_IRQn_Handler)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = DMA_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_dma_clear_status +
    • >>   drv_dma_get_int_source +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT0_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT0_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT0_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT1_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT1_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT2_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT2_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT2_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT3_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT3_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT3_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT4_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT4_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT4_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT5_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT5_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT5_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT6_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT6_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT6_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    EXTI_INT7_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_gpio.o(i.EXTI_INT7_IRQn_Handler)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = EXTI_INT7_IRQn_Handler ⇒ drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_gpio_handle_int +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    HardFault_Handler (Thumb, 14 bytes, Stack size 0 bytes, drv_common.o(i.HardFault_Handler)) +

    [Stack]

    • Max Depth = 336
    • Call Chain = HardFault_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    LCDC_IRQn_Handler (Thumb, 118 bytes, Stack size 24 bytes, hal_internal_vsync.o(i.LCDC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = LCDC_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    MEMC_IRQn_Handler (Thumb, 154 bytes, Stack size 8 bytes, drv_memc.o(i.MEMC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = MEMC_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_memc_get_status +
    • >>   drv_memc_clear_status +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    MIPI_TX_IRQn_Handler (Thumb, 70 bytes, Stack size 24 bytes, drv_dsi_tx.o(i.MIPI_TX_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = MIPI_TX_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    SWIRE_IRQn_Handler (Thumb, 38 bytes, Stack size 8 bytes, drv_swire.o(i.SWIRE_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = SWIRE_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    SysTick_Handler (Thumb, 20 bytes, Stack size 0 bytes, drv_common.o(i.SysTick_Handler)) +
    [Address Reference Count : 1]

    • startup_armcm0.o(RESET) +
    +

    TIMER0_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER0_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER0_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER1_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER1_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER2_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER2_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER2_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    TIMER3_IRQn_Handler (Thumb, 10 bytes, Stack size 8 bytes, drv_timer.o(i.TIMER3_IRQn_Handler)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = TIMER3_IRQn_Handler ⇒ drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_handle_interrupt +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VIDC_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_vidc.o(i.VIDC_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = VIDC_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VPRE1_IRQn_Handler (Thumb, 22 bytes, Stack size 8 bytes, drv_rxbr.o(i.VPRE1_IRQn_Handler)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = VPRE1_IRQn_Handler ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    VPRE_IRQn_Handler (Thumb, 104 bytes, Stack size 8 bytes, hal_internal_dcs.o(i.VPRE_IRQn_Handler)) +

    [Stack]

    • Max Depth = 536
    • Call Chain = VPRE_IRQn_Handler ⇒ hal_intl_dcs_rx_receive_packet ⇒ hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_crgu_set_dsc_clk +
    • >>   drv_dsc_dec_get_nslc +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   drv_rxbr_get_status0 +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    __0printf (Thumb, 24 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) +

    [Calls]

    • >>   _printf_core +
    + +

    __1printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = __2printf +
    +
    [Called By]
    • >>   tau_log_printf +
    + +

    __c89printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    printf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0printf), UNUSED) + +

    __0vsprintf (Thumb, 30 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) +

    [Calls]

    • >>   _sputc +
    • >>   _printf_core +
    + +

    __1vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    __2vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    __c89vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf), UNUSED) + +

    vsprintf (Thumb, 0 bytes, Stack size 24 bytes, printfa.o(i.__0vsprintf)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = vsprintf +
    +
    [Called By]
    • >>   tau_log_printf +
    + +

    __ARM_clz (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz)) +

    [Called By]

    • >>   _double_epilogue +
    + +

    __ARM_common_switch8 (Thumb, 26 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.__ARM_common_switch8)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = __ARM_common_switch8 +
    +
    [Called By]
    • >>   drv_dsi_tx_phy_status_stopstate +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   drv_dsi_rx_get_color_bpp +
    + +

    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) + +

    MIPI_RX_IRQn_Handler (Thumb, 354 bytes, Stack size 24 bytes, drv_dsi_rx.o(i.MIPI_RX_IRQn_Handler)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = MIPI_RX_IRQn_Handler ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    UART_IRQn_Handler (Thumb, 364 bytes, Stack size 32 bytes, drv_uart.o(i.UART_IRQn_Handler)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = UART_IRQn_Handler ⇒ drv_uart_abort_send ⇒ drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_uart_config_int +
    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    • >>   drv_uart_int_trans_handle +
    +
    [Address Reference Count : 1]
    • startup_armcm0.o(RESET) +
    +

    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) + +

    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) + +

    app_display_init (Thumb, 44 bytes, Stack size 8 bytes, p8p_demo.o(i.app_display_init)) +

    [Stack]

    • Max Depth = 640
    • Call Chain = app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_set_timer +
    • >>   hal_swire_init +
    • >>   hal_pwr_get_vcc_power_ready +
    • >>   app_gpio_init +
    • >>   app_mipi_tx_start +
    • >>   app_mipi_tx_init +
    • >>   app_mipi_rx_init +
    +
    [Called By]
    • >>   app_system_resume +
    • >>   google_p8p_demo +
    + +

    app_gpio_init (Thumb, 22 bytes, Stack size 24 bytes, p8p_demo.o(i.app_gpio_init)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = app_gpio_init ⇒ hal_gpio_config_pad ⇒ hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_config_pad +
    +
    [Called By]
    • >>   app_display_init +
    + +

    board_Init (Thumb, 20 bytes, Stack size 8 bytes, board.o(i.board_Init)) +

    [Stack]

    • Max Depth = 140
    • Call Chain = board_Init ⇒ tau_log_init ⇒ hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   tau_log_init +
    • >>   hal_system_init +
    +
    [Called By]
    • >>   main +
    + +

    ceil (Thumb, 180 bytes, Stack size 24 bytes, ceil.o(i.ceil)) +

    [Stack]

    • Max Depth = 136
    • Call Chain = ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_dadd +
    • >>   __aeabi_drsub +
    • >>   __aeabi_cdrcmple +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   svs_wait_start +
    + +

    dcs_packet_fifo_alloc (Thumb, 80 bytes, Stack size 12 bytes, dcs_packet_fifo.o(i.dcs_packet_fifo_alloc)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = dcs_packet_fifo_alloc +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    dcs_packet_fifo_init (Thumb, 18 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_fifo_init)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    dcs_packet_free_fifo_header (Thumb, 60 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_free_fifo_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    + +

    dcs_packet_get_fifo_header (Thumb, 26 bytes, Stack size 0 bytes, dcs_packet_fifo.o(i.dcs_packet_get_fifo_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    + +

    delayMs (Thumb, 24 bytes, Stack size 8 bytes, tau_delay.o(i.delayMs)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = delayMs ⇒ delayUs +
    +
    [Calls]
    • >>   delayUs +
    +
    [Called By]
    • >>   app_tx_panel_reset +
    • >>   app_mipi_tx_start +
    • >>   app_init_panel +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    delayUs (Thumb, 40 bytes, Stack size 8 bytes, tau_delay.o(i.delayUs)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = delayUs +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   delayMs +
    • >>   send_panel_init_code +
    • >>   tau_log_push_log +
    + +

    drv_common_system_init (Thumb, 8 bytes, Stack size 8 bytes, drv_common.o(i.drv_common_system_init)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = drv_common_system_init ⇒ drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_se_init +
    +
    [Called By]
    • >>   hal_system_init +
    + +

    drv_crgu_enable_clock (Thumb, 54 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_enable_clock)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init_clk +
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   hal_system_init +
    • >>   hal_timer_init +
    • >>   hal_swire_init +
    • >>   hal_swire_deinit +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_timer_deinit +
    • >>   drv_uart_enable_clk +
    • >>   drv_efuse_enter_inactive +
    + +

    drv_crgu_get_rxbr_clk (Thumb, 70 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_get_rxbr_clk)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_crgu_get_rxbr_clk ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   svs_wait_start +
    + +

    drv_crgu_reset_modules (Thumb, 10 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_reset_modules)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_crgu_set_ahb_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_ahb_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_ahb_clk +
    +
    [Called By]
    • >>   hal_system_updata_sysclk +
    + +

    drv_crgu_set_clock_div (Thumb, 12 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_set_clock_div)) +

    [Called By]

    • >>   hal_swire_init +
    + +

    drv_crgu_set_dpi_clk (Thumb, 54 bytes, Stack size 12 bytes, drv_crgu.o(i.drv_crgu_set_dpi_clk)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_crgu_set_dpi_clk +
    +
    [Called By]
    • >>   hal_dsi_tx_init_dpi_timing +
    + +

    drv_crgu_set_dsc_clk (Thumb, 52 bytes, Stack size 12 bytes, drv_crgu.o(i.drv_crgu_set_dsc_clk)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_crgu_set_dsc_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   VPRE_IRQn_Handler +
    + +

    drv_crgu_set_fb_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_fb_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_fb_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_crgu_set_lcdc_clk (Thumb, 36 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_lcdc_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_lcdc_clk +
    +
    [Called By]
    • >>   hal_lcdc_init_clk +
    + +

    drv_crgu_set_reset (Thumb, 20 bytes, Stack size 0 bytes, drv_crgu.o(i.drv_crgu_set_reset)) +

    [Called By]

    • >>   hal_swire_deinit +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   vpre_err_reset +
    • >>   hal_timer_deinit +
    + +

    drv_crgu_set_rxbr_clk (Thumb, 34 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_rxbr_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_rxbr_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_crgu_set_vidc_clk (Thumb, 36 bytes, Stack size 8 bytes, drv_crgu.o(i.drv_crgu_set_vidc_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_crgu_set_vidc_clk +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_clk +
    + +

    drv_dma_clear_status (Thumb, 20 bytes, Stack size 0 bytes, drv_dma.o(i.drv_dma_clear_status)) +

    [Called By]

    • >>   DMA_IRQn_Handler +
    + +

    drv_dsc_dec_disable (Thumb, 20 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_disable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_dsc_dec_enable (Thumb, 44 bytes, Stack size 8 bytes, drv_dsc_dec.o(i.drv_dsc_dec_enable)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_dsc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_intl_dcs_rx_receive_pps +
    + +

    drv_dsc_dec_get_nslc (Thumb, 22 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_get_nslc)) +

    [Called By]

    • >>   VPRE_IRQn_Handler +
    + +

    drv_dsc_dec_set_irqen (Thumb, 24 bytes, Stack size 0 bytes, drv_dsc_dec.o(i.drv_dsc_dec_set_irqen)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init +
    + +

    drv_dsi_rx_calc_ipi_tx_delay (Thumb, 252 bytes, Stack size 56 bytes, drv_dsi_rx.o(i.drv_dsi_rx_calc_ipi_tx_delay)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fadd +
    • >>   __aeabi_f2d +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_fsub +
    • >>   __aeabi_cfrcmple +
    • >>   drv_dsi_rx_get_color_pcc +
    • >>   drv_dsi_rx_get_color_bpp +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    + +

    drv_dsi_rx_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_dsi_rx.o(i.drv_dsi_rx_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_dsi_rx_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_dsi_rx_get_compression_en (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_compression_en)) +

    [Called By]

    • >>   hal_intl_dcs_rx_receive_pps +
    + +

    drv_dsi_rx_get_ddi_crc_en (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_ddi_crc_en)) +

    [Called By]

    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_dsi_rx_get_max_ret_size (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_max_ret_size)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_get_max_ret_size +
    + +

    drv_dsi_rx_power_up (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_power_up)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_start +
    + +

    drv_dsi_rx_set_check_crc (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_check_crc)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ctrl_cfg (Thumb, 32 bytes, Stack size 12 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ctrl_cfg)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_rx_set_ctrl_cfg +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ddi_cfg (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ddi_crc_en (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ddi_crc_en)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_inten (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_inten)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_ipi_cfg (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    + +

    drv_dsi_rx_set_ipi_ycbcr_frmt (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_ipi_ycbcr_frmt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_lane_swap (Thumb, 16 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_lane_swap)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_resp_cnt (Thumb, 32 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_resp_cnt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_tear_resp_en (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_tear_resp_en)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_set_up_phy (Thumb, 224 bytes, Stack size 32 bytes, drv_dsi_rx.o(i.drv_dsi_rx_set_up_phy)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_dsi_rx_set_up_phy ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_phy_test_lock +
    • >>   drv_phy_test_clear +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    drv_dsi_rx_shut_down (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_shut_down)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_stop +
    + +

    drv_dsi_tx_command_header (Thumb, 18 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_header)) +

    [Called By]

    • >>   hal_dsi_tx_send_cmd +
    + +

    drv_dsi_tx_command_mode_cfg (Thumb, 82 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_mode_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_command_put_payload (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_command_put_payload)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_dsi_tx_config_eotp (Thumb, 26 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_config_eotp)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_config_int (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_config_int)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_lpcmd_time (Thumb, 10 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_lpcmd_time)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_mode (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_dpi_polarity (Thumb, 32 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_dpi_polarity)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_edpi_cmd_size (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_edpi_cmd_size)) +

    [Called By]

    • >>   hal_dsi_tx_init_timing +
    + +

    drv_dsi_tx_get_cmd_status (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_get_cmd_status)) +

    [Called By]

    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    + +

    drv_dsi_tx_mode (Thumb, 6 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_phy_clock_lane_auto_lp (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_auto_lp)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_phy_clock_lane_req_hs (Thumb, 26 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_clock_lane_req_hs)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    • >>   rxbr_irq1_callback +
    + +

    drv_dsi_tx_phy_lane_mode (Thumb, 12 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_lane_mode)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_phy_status_ready (Thumb, 100 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_status_ready)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init +
    + +

    drv_dsi_tx_phy_status_stopstate (Thumb, 62 bytes, Stack size 4 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_status_stopstate)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   hal_dsi_tx_send_cmd +
    + +

    drv_dsi_tx_phy_test_setup (Thumb, 314 bytes, Stack size 32 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_test_setup)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_dsi_tx_phy_test_setup ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_tx_phy_test_write_code +
    • >>   drv_tx_phy_test_exit +
    • >>   drv_tx_phy_test_enter +
    • >>   drv_phy_test_clear +
    +
    [Called By]
    • >>   hal_dsi_tx_init_phy_cfg +
    + +

    drv_dsi_tx_phy_time_cfg (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_phy_time_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_phy_cfg +
    + +

    drv_dsi_tx_powerup (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_powerup)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_init +
    + +

    drv_dsi_tx_response_mode (Thumb, 30 bytes, Stack size 12 bytes, drv_dsi_tx.o(i.drv_dsi_tx_response_mode)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_tx_response_mode +
    +
    [Called By]
    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_bta_ack (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_bta_ack)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_esc_div (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_esc_div)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_int (Thumb, 58 bytes, Stack size 8 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_dsi_tx_set_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_dsi_tx_set_time_out_div (Thumb, 18 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_time_out_div)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_set_video_chunk (Thumb, 14 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_video_chunk)) +

    [Called By]

    • >>   hal_dsi_tx_init_vid_timing +
    + +

    drv_dsi_tx_set_video_timing (Thumb, 30 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_set_video_timing)) +

    [Called By]

    • >>   hal_dsi_tx_init_vid_timing +
    + +

    drv_dsi_tx_shutdown (Thumb, 8 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_shutdown)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_dsi_tx_timeout_cfg (Thumb, 38 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_timeout_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_dsi_tx_video_mode_cfg (Thumb, 226 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_dsi_tx_video_mode_cfg)) +

    [Called By]

    • >>   hal_dsi_tx_init_cfg +
    + +

    drv_efuse_enter_inactive (Thumb, 54 bytes, Stack size 8 bytes, drv_efuse.o(i.drv_efuse_enter_inactive)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_efuse_enter_inactive +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_efuse_int_enable +
    +
    [Called By]
    • >>   drv_se_init +
    + +

    drv_efuse_int_enable (Thumb, 12 bytes, Stack size 0 bytes, drv_efuse.o(i.drv_efuse_int_enable)) +

    [Called By]

    • >>   drv_efuse_enter_inactive +
    + +

    drv_efuse_read (Thumb, 58 bytes, Stack size 16 bytes, drv_efuse.o(i.drv_efuse_read)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_efuse_read +
    +
    [Calls]
    • >>   drv_pwr_efuse_pd +
    • >>   drv_efuse_read_req +
    +
    [Called By]
    • >>   drv_se_init +
    + +

    drv_efuse_read_req (Thumb, 24 bytes, Stack size 0 bytes, drv_efuse.o(i.drv_efuse_read_req)) +

    [Called By]

    • >>   drv_efuse_read +
    + +

    drv_gpio_register_ap_reset_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_register_ap_reset_callback)) +

    [Called By]

    • >>   hal_gpio_set_ap_reset_int +
    + +

    drv_gpio_register_callback (Thumb, 14 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_register_callback)) +

    [Called By]

    • >>   hal_gpio_reg_eint_cb +
    + +

    drv_gpio_set_int (Thumb, 62 bytes, Stack size 16 bytes, drv_gpio.o(i.drv_gpio_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_gpio_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_gpio_ctrl_eint +
    + +

    drv_gpio_set_ioe (Thumb, 26 bytes, Stack size 0 bytes, drv_gpio.o(i.drv_gpio_set_ioe)) +

    [Called By]

    • >>   hal_gpio_init_output +
    • >>   hal_gpio_init_input +
    • >>   hal_gpio_init_eint +
    + +

    drv_gpio_set_mode (Thumb, 16 bytes, Stack size 8 bytes, drv_gpio.o(i.drv_gpio_set_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_gpio_set_mode +
    +
    [Called By]
    • >>   hal_gpio_set_mode +
    + +

    drv_lcdc_bcsa_config (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_bcsa_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_cfg_int_frame (Thumb, 34 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_cfg_int_frame)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_lcdc_cmd_start (Thumb, 46 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_cmd_start)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_lcdc +
    +
    [Called By]
    • >>   hal_lcdc_start +
    • >>   rxbr_irq1_callback +
    + +

    drv_lcdc_config_acc_command_mode (Thumb, 14 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_acc_command_mode)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_config_int (Thumb, 50 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_int)) +

    [Called By]

    • >>   hal_lcdc_init_cfg +
    + +

    drv_lcdc_config_int_single (Thumb, 34 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_config_int_single)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_lcdc_config_int_single +
    +
    [Called By]
    • >>   hal_vsync_func_update +
    • >>   hal_nonshadow_func_update +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_config_overwrite_rgb (Thumb, 18 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_overwrite_rgb)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_set_overwrite_rgb +
    + +

    drv_lcdc_config_src_parameter (Thumb, 72 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_config_src_parameter)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_crop_hact (Thumb, 10 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_crop_hact)) +

    [Called By]

    • >>   hal_lcdc_displayproc_config +
    + +

    drv_lcdc_ctrl_flow (Thumb, 50 bytes, Stack size 16 bytes, drv_lcdc.o(i.drv_lcdc_ctrl_flow)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_lcdc_ctrl_flow +
    +
    [Calls]
    • >>   drv_lcdc_function_enable +
    +
    [Called By]
    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_dith_config (Thumb, 40 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_dith_config)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_lcdc_dith_config +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_edge_dect_config (Thumb, 50 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_edge_dect_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_edge_enh_config (Thumb, 86 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_edge_enh_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_enable_shadow_reg (Thumb, 32 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_enable_shadow_reg)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_start +
    + +

    drv_lcdc_endianness_config (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_endianness_config)) +

    [Called By]

    • >>   hal_lcdc_displayproc_config +
    + +

    drv_lcdc_fc_config (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_fc_config)) +

    [Called By]

    • >>   hal_nonshadow_func_update +
    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_fldc_config (Thumb, 32 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_fldc_config)) +

    [Called By]

    • >>   hal_lcdc_postproc_config +
    + +

    drv_lcdc_function_disable (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_function_disable)) +

    [Called By]

    • >>   hal_lcdc_postproc_config +
    • >>   vidc_callback +
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_function_enable (Thumb, 30 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_function_enable)) +

    [Called By]

    • >>   drv_lcdc_ctrl_flow +
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_lcdc_postproc_config +
    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_set_int (Thumb, 54 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_set_int)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = drv_lcdc_set_int ⇒ drv_lcdc_clear_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_lcdc_clear_int +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_lcdc_set_prefetch (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_set_prefetch)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    + +

    drv_lcdc_set_tear_line (Thumb, 24 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_set_tear_line)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_lcdc_stop_display (Thumb, 12 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_stop_display)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_stop +
    + +

    drv_lcdc_vid_hw_start (Thumb, 56 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_vid_hw_start)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_lcdc_vid_hw_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_lcdc +
    +
    [Called By]
    • >>   hal_lcdc_start +
    + +

    drv_lcdc_vintp_mode_config (Thumb, 18 bytes, Stack size 0 bytes, drv_lcdc.o(i.drv_lcdc_vintp_mode_config)) +

    [Called By]

    • >>   hal_lcdc_postproc_config +
    + +

    drv_memc_clear_status (Thumb, 14 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_clear_status)) +

    [Called By]

    • >>   MEMC_IRQn_Handler +
    + +

    drv_memc_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_memc_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_memc_gen_a_tear_signal (Thumb, 12 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_gen_a_tear_signal)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    + +

    drv_memc_get_status (Thumb, 20 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_get_status)) +

    [Called By]

    • >>   MEMC_IRQn_Handler +
    + +

    drv_memc_get_tear_mode (Thumb, 10 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_get_tear_mode)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    + +

    drv_memc_rate_transfer_sel (Thumb, 22 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_rate_transfer_sel)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_memc_rate_transfer_sel ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_memc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_sel_vsync (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_sel_vsync)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_active_height (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_active_height)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_circ_mode_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_circ_mode_enable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_data_mode (Thumb, 14 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_data_mode)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_double_buffer (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_double_buffer)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_frame_drop_select (Thumb, 24 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_frame_drop_select)) +

    [Called By]

    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_memc_set_fs_en_conditions (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_fs_en_conditions)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_lcdc_st_conditions (Thumb, 20 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_lcdc_st_conditions)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_ltpo_mode (Thumb, 28 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_set_ltpo_mode)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_memc_set_ltpo_mode ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_memc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_ltpo_pu_thres (Thumb, 18 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_ltpo_pu_thres)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_tear_mode (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_tear_mode)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    drv_memc_set_tear_waveform (Thumb, 36 bytes, Stack size 8 bytes, drv_memc.o(i.drv_memc_set_tear_waveform)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_memc_set_tear_waveform +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_memc_set_vidc_sync_cnt (Thumb, 16 bytes, Stack size 0 bytes, drv_memc.o(i.drv_memc_set_vidc_sync_cnt)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_memc +
    + +

    drv_phy_test_clear (Thumb, 16 bytes, Stack size 0 bytes, drv_phy_common.o(i.drv_phy_test_clear)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    • >>   drv_dsi_rx_set_up_phy +
    + +

    drv_phy_test_lock (Thumb, 24 bytes, Stack size 0 bytes, drv_phy_common.o(i.drv_phy_test_lock)) +

    [Called By]

    • >>   drv_dsi_rx_set_up_phy +
    + +

    drv_pwr_efuse_pd (Thumb, 36 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_efuse_pd)) +

    [Called By]

    • >>   drv_efuse_read +
    + +

    drv_pwr_enter_deep_sleep_mode (Thumb, 60 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_enter_deep_sleep_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_enter_deep_sleep_mode +
    +
    [Called By]
    • >>   hal_pwr_enter_deep_sleep_mode +
    + +

    drv_pwr_enter_sleep_mode_ex (Thumb, 34 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_enter_sleep_mode_ex)) +

    [Called By]

    • >>   hal_pwr_enter_normal_sleep_mode +
    + +

    drv_pwr_enter_stop_sleep_mode (Thumb, 132 bytes, Stack size 24 bytes, drv_pwr.o(i.drv_pwr_enter_stop_sleep_mode)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = drv_pwr_enter_stop_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_enter_stop_sleep_mode +
    + +

    drv_pwr_exit_sleep_mode (Thumb, 32 bytes, Stack size 4 bytes, drv_pwr.o(i.drv_pwr_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_pwr_exit_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_exit_sleep_mode +
    + +

    drv_pwr_get_power_ready_st (Thumb, 10 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_get_power_ready_st)) +

    [Called By]

    • >>   hal_pwr_get_vcc_power_ready +
    + +

    drv_pwr_set_breath_screen_power_sel (Thumb, 34 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_set_breath_screen_power_sel)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_set_breath_screen_power_sel +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_set_sleep_mode_power +
    + +

    drv_pwr_set_digit_power_sel (Thumb, 34 bytes, Stack size 8 bytes, drv_pwr.o(i.drv_pwr_set_digit_power_sel)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_pwr_set_digit_power_sel +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_set_main_power +
    + +

    drv_pwr_set_pll_clk (Thumb, 30 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_set_pll_clk)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   hal_system_init +
    + +

    drv_pwr_set_wakeup_type (Thumb, 40 bytes, Stack size 4 bytes, drv_pwr.o(i.drv_pwr_set_wakeup_type)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_pwr_set_wakeup_type +
    +
    [Calls]
    • >>   drv_pwr_write_lock +
    +
    [Called By]
    • >>   hal_pwr_enter_deep_sleep_mode +
    + +

    drv_pwr_write_lock (Thumb, 18 bytes, Stack size 0 bytes, drv_pwr.o(i.drv_pwr_write_lock)) +

    [Called By]

    • >>   drv_pwr_set_wakeup_type +
    • >>   drv_pwr_set_digit_power_sel +
    • >>   drv_pwr_set_breath_screen_power_sel +
    • >>   drv_pwr_exit_sleep_mode +
    • >>   drv_pwr_enter_stop_sleep_mode +
    + +

    drv_rxbr_clear_pkt_buffer (Thumb, 12 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_clear_pkt_buffer)) +

    [Called By]

    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   check_pkt_buf_rev +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_clear_status0 (Thumb, 6 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_clear_status0)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   svs_wait_start +
    • >>   svs_direct_mode_setting +
    • >>   VPRE_IRQn_Handler +
    • >>   hal_intl_dcs_rx_receive_packet +
    • >>   check_pkt_buf_rev +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_enable_irq (Thumb, 90 bytes, Stack size 8 bytes, drv_rxbr.o(i.drv_rxbr_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_rxbr_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    • >>   __NVIC_EnableIRQ +
    • >>   __NVIC_DisableIRQ +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_rxbr_frame_drop_cfg (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_frame_drop_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   svs_wait_fr_stab +
    + +

    drv_rxbr_hline_rcv1_cfg (Thumb, 14 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_hline_rcv1_cfg)) +

    [Called By]

    • >>   svs_wait_start +
    • >>   svs_direct_mode_setting +
    + +

    drv_rxbr_hline_rcv_cfg (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_hline_rcv_cfg)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_register_irq1_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_register_irq1_callback)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    drv_rxbr_set_ack_pkt_header (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_ack_pkt_header)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    + +

    drv_rxbr_set_color_format (Thumb, 24 bytes, Stack size 8 bytes, drv_rxbr.o(i.drv_rxbr_set_color_format)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = drv_rxbr_set_color_format ⇒ drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_rxbr +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_filter_regs (Thumb, 32 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_filter_regs)) +

    [Called By]

    • >>   hal_intl_dcs_set_auto_hw_filter +
    + +

    drv_rxbr_set_inten (Thumb, 22 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_inten)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   svs_wait_start +
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_svs_deinit_rx +
    • >>   rxbr_irq1_callback +
    + +

    drv_rxbr_set_ltpo_drop_th (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_ltpo_drop_th)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_cfg (Thumb, 56 bytes, Stack size 20 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_cfg)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_rxbr_set_usr_cfg +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_col (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_col)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_rxbr_set_usr_row (Thumb, 10 bytes, Stack size 0 bytes, drv_rxbr.o(i.drv_rxbr_set_usr_row)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    drv_se_init (Thumb, 106 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_init)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_efuse_read +
    • >>   drv_efuse_enter_inactive +
    +
    [Called By]
    • >>   drv_common_system_init +
    + +

    drv_se_set_dsc (Thumb, 162 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_dsc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_dsc_dec_enable +
    + +

    drv_se_set_lcdc (Thumb, 88 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_lcdc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_lcdc_cmd_start +
    • >>   drv_lcdc_vid_hw_start +
    + +

    drv_se_set_memc (Thumb, 54 bytes, Stack size 8 bytes, drv_se.o(i.drv_se_set_memc)) +

    [Stack]

    • Max Depth = 344
    • Call Chain = drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_memc_set_ltpo_mode +
    • >>   drv_memc_rate_transfer_sel +
    + +

    drv_se_set_rxbr (Thumb, 158 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_rxbr)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_rxbr_set_color_format +
    + +

    drv_se_set_vidc (Thumb, 122 bytes, Stack size 16 bytes, drv_se.o(i.drv_se_set_vidc)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   drv_vidc_set_src_parameter +
    + +

    drv_se_start_rx (Thumb, 16 bytes, Stack size 0 bytes, drv_se.o(i.drv_se_start_rx)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init +
    + +

    drv_swire_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_enable)) +

    [Called By]

    • >>   hal_swire_init +
    • >>   hal_swire_deinit +
    + +

    drv_swire_get_pulse_count (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_get_pulse_count)) +

    [Called By]

    • >>   hal_swire_enable +
    + +

    drv_swire_register_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_register_callback)) +

    [Called By]

    • >>   hal_swire_deinit +
    + +

    drv_swire_set_bit_time (Thumb, 18 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_bit_time)) +

    [Called By]

    • >>   hal_swire_init +
    + +

    drv_swire_set_int (Thumb, 64 bytes, Stack size 16 bytes, drv_swire.o(i.drv_swire_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_swire_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_swire_enable +
    • >>   hal_swire_deinit +
    + +

    drv_swire_set_power_down (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_power_down)) +

    [Called By]

    • >>   hal_swire_init +
    • >>   hal_swire_enable +
    + +

    drv_swire_set_pulse_count (Thumb, 6 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_pulse_count)) +

    [Called By]

    • >>   hal_swire_set_pulse +
    + +

    drv_swire_set_trig_mode (Thumb, 24 bytes, Stack size 0 bytes, drv_swire.o(i.drv_swire_set_trig_mode)) +

    [Called By]

    • >>   hal_swire_set_timer +
    • >>   hal_swire_set_pulse +
    • >>   hal_swire_enable +
    + +

    drv_sys_cfg_clear_all_int (Thumb, 8 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_clear_all_int)) +

    [Called By]

    • >>   hal_system_init +
    + +

    drv_sys_cfg_clear_pending (Thumb, 32 bytes, Stack size 8 bytes, drv_sys_cfg.o(i.drv_sys_cfg_clear_pending)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   drv_dsi_tx_set_int +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   AP_NRESET_IRQn_Handler +
    • >>   drv_gpio_handle_int +
    • >>   VPRE_IRQn_Handler +
    • >>   LCDC_IRQn_Handler +
    • >>   hal_gpio_init_eint +
    • >>   UART_IRQn_Handler +
    • >>   DMA_IRQn_Handler +
    • >>   VIDC_IRQn_Handler +
    • >>   VPRE1_IRQn_Handler +
    • >>   MEMC_IRQn_Handler +
    • >>   drv_lcdc_clear_int +
    • >>   MIPI_TX_IRQn_Handler +
    • >>   MIPI_RX_IRQn_Handler +
    • >>   drv_timer_clear_status_flags +
    • >>   SWIRE_IRQn_Handler +
    + +

    drv_sys_cfg_sel_ap_rst_trig (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_ap_rst_trig)) +

    [Called By]

    • >>   hal_gpio_set_ap_reset_int +
    + +

    drv_sys_cfg_sel_gpio_group (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_gpio_group)) +

    [Called By]

    • >>   hal_gpio_init_eint +
    + +

    drv_sys_cfg_sel_int_trig (Thumb, 32 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_int_trig)) +

    [Called By]

    • >>   hal_gpio_init_eint +
    + +

    drv_sys_cfg_sel_swire_timer (Thumb, 18 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_sel_swire_timer)) +

    [Called By]

    • >>   hal_swire_set_timer +
    + +

    drv_sys_cfg_set_int (Thumb, 30 bytes, Stack size 0 bytes, drv_sys_cfg.o(i.drv_sys_cfg_set_int)) +

    [Called By]

    • >>   drv_dsi_tx_set_int +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   hal_pwr_enter_stop_sleep_mode +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   drv_timer_set_int +
    • >>   drv_swire_set_int +
    • >>   drv_gpio_set_int +
    • >>   drv_lcdc_set_int +
    • >>   drv_uart_enable_int +
    + +

    drv_timer_enable (Thumb, 32 bytes, Stack size 4 bytes, drv_timer.o(i.drv_timer_enable)) +

    [Stack]

    • Max Depth = 4
    • Call Chain = drv_timer_enable +
    +
    [Calls]
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_swire_enable +
    • >>   hal_timer_deinit +
    + +

    drv_timer_get_instance (Thumb, 10 bytes, Stack size 0 bytes, drv_timer.o(i.drv_timer_get_instance)) +

    [Called By]

    • >>   drv_timer_set_prescaler +
    • >>   drv_timer_set_compare_val +
    • >>   drv_timer_enable +
    • >>   drv_timer_clear_status_flags +
    + +

    drv_timer_set_compare_val (Thumb, 50 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_set_compare_val)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_set_int (Thumb, 68 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_set_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_timer_set_int +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   hal_timer_deinit +
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_set_prescaler (Thumb, 36 bytes, Stack size 12 bytes, drv_timer.o(i.drv_timer_set_prescaler)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_timer_set_prescaler +
    +
    [Calls]
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   hal_timer_init +
    + +

    drv_timer_set_repeat (Thumb, 12 bytes, Stack size 0 bytes, drv_timer.o(i.drv_timer_set_repeat)) +

    [Called By]

    • >>   hal_timer_set_repeat +
    • >>   hal_timer_deinit +
    + +

    drv_tx_phy_test_enter (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_enter)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_tx_phy_test_exit (Thumb, 28 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_exit)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_tx_phy_test_write_code (Thumb, 34 bytes, Stack size 0 bytes, drv_dsi_tx.o(i.drv_tx_phy_test_write_code)) +

    [Called By]

    • >>   drv_dsi_tx_phy_test_setup +
    + +

    drv_uart_abort_recv (Thumb, 46 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_abort_recv)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_uart_abort_recv ⇒ drv_uart_reset_rx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_reset_rx_fifo +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_config_int +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_abort_send (Thumb, 46 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_abort_send)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = drv_uart_abort_send ⇒ drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_reset_tx_fifo +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_config_int +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_config_int (Thumb, 20 bytes, Stack size 0 bytes, drv_uart.o(i.drv_uart_config_int)) +

    [Called By]

    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    • >>   UART_IRQn_Handler +
    + +

    drv_uart_enable_int (Thumb, 84 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_enable_int)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_enable_int ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_get_instance (Thumb, 36 bytes, Stack size 12 bytes, drv_uart.o(i.drv_uart_get_instance)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_trans_create_handle +
    • >>   drv_uart_init +
    • >>   drv_uart_reset_tx_fifo +
    • >>   drv_uart_reset_rx_fifo +
    • >>   drv_uart_enable_int +
    • >>   drv_uart_abort_send +
    • >>   drv_uart_abort_recv +
    + +

    drv_uart_init (Thumb, 206 bytes, Stack size 16 bytes, drv_uart.o(i.drv_uart_init)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_uart_set_baud_rate +
    • >>   drv_uart_get_instance +
    • >>   drv_uart_enable_int +
    • >>   drv_uart_enable_clk +
    +
    [Called By]
    • >>   hal_uart_init +
    + +

    drv_uart_reset_rx_fifo (Thumb, 28 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_reset_rx_fifo)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_uart_reset_rx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_abort_recv +
    + +

    drv_uart_reset_tx_fifo (Thumb, 28 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_reset_tx_fifo)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = drv_uart_reset_tx_fifo ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_get_instance +
    +
    [Called By]
    • >>   drv_uart_abort_send +
    + +

    drv_uart_send_blocking (Thumb, 26 bytes, Stack size 0 bytes, drv_uart.o(i.drv_uart_send_blocking)) +

    [Called By]

    • >>   hal_uart_send_blocking +
    + +

    drv_uart_set_baud_rate (Thumb, 84 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_set_baud_rate)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_trans_create_handle (Thumb, 72 bytes, Stack size 24 bytes, drv_uart.o(i.drv_uart_trans_create_handle)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = drv_uart_trans_create_handle ⇒ drv_uart_get_instance +
    +
    [Calls]
    • >>   drv_uart_get_instance +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_uart_init +
    + +

    drv_vidc_clear_irq (Thumb, 10 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_clear_irq)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_enable (Thumb, 26 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_enable)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   rxbr_irq1_callback +
    + +

    drv_vidc_enable_irq (Thumb, 58 bytes, Stack size 8 bytes, drv_vidc.o(i.drv_vidc_enable_irq)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_enable_irq ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    drv_vidc_get_int_source (Thumb, 40 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_get_int_source)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_get_irq_status (Thumb, 20 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_get_irq_status)) +

    [Called By]

    • >>   vidc_callback +
    + +

    drv_vidc_init_module_enable (Thumb, 36 bytes, Stack size 12 bytes, drv_vidc.o(i.drv_vidc_init_module_enable)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_vidc_init_module_enable +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_register_callback (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_register_callback)) +

    [Called By]

    • >>   hal_internal_vsync_init_rx +
    + +

    drv_vidc_reset (Thumb, 8 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_reset)) +

    [Called By]

    • >>   hal_internal_sync_input_resolution_change +
    • >>   vpre_err_reset +
    + +

    drv_vidc_set_circ_mode_enable (Thumb, 24 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_circ_mode_enable)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_dither_config (Thumb, 50 bytes, Stack size 8 bytes, drv_vidc.o(i.drv_vidc_set_dither_config)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_vidc_set_dither_config +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_dst_parameter (Thumb, 86 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_dst_parameter)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_set_dst_parameter +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_honly_hcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hinitb (Thumb, 38 bytes, Stack size 12 bytes, drv_vidc.o(i.drv_vidc_set_honly_hinitb)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_vidc_set_honly_hinitb +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_honly_hinitr (Thumb, 42 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_honly_hinitr)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_vidc_set_honly_hinitr +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_irqen (Thumb, 22 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_irqen)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   vidc_callback +
    + +

    drv_vidc_set_mirror (Thumb, 16 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_mirror)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_pentile_swap (Thumb, 20 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_pentile_swap)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_pu_ctrl (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_pu_ctrl)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_rotation (Thumb, 18 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_rotation)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_hcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_hcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_hcoef1 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_hcoef1)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_step (Thumb, 14 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_step)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_vcoef0 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_vcoef0)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_scld_vcoef1 (Thumb, 6 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_scld_vcoef1)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_src_parameter (Thumb, 28 bytes, Stack size 16 bytes, drv_vidc.o(i.drv_vidc_set_src_parameter)) +

    [Stack]

    • Max Depth = 368
    • Call Chain = drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_se_set_vidc +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    drv_vidc_set_vintp_config (Thumb, 52 bytes, Stack size 0 bytes, drv_vidc.o(i.drv_vidc_set_vintp_config)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_init_vidc +
    + +

    fputc (Thumb, 42 bytes, Stack size 24 bytes, tau_log.o(i.fputc)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = fputc ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_uart_send_blocking +
    • >>   tau_log_push_log +
    +
    [Address Reference Count : 1]
    • printfa.o(i.__0printf) +
    +

    google_p8p_demo (Thumb, 48 bytes, Stack size 0 bytes, p8p_demo.o(i.google_p8p_demo)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_pwr_set_main_power +
    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    • >>   app_display_init +
    • >>   app_system_process +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   main +
    + +

    hal_dsi_rx_ctrl_create_handle (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_create_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_create_handle +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_dcs_async_handler (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_dcs_async_handler)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_dcs_async_handler +
    +
    [Calls]
    • >>   dcs_packet_get_fifo_header +
    • >>   dcs_packet_free_fifo_header +
    +
    [Called By]
    • >>   google_p8p_demo +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    hal_dsi_rx_ctrl_deinit (Thumb, 132 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_deinit)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_deinit ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   hal_internal_vsync_get_rx_state +
    • >>   drv_vidc_enable_irq +
    • >>   drv_rxbr_enable_irq +
    • >>   drv_memc_enable_irq +
    • >>   drv_dsi_rx_enable_irq +
    • >>   drv_dsc_dec_disable +
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_reset_modules +
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_rx_ctrl_get_max_ret_size (Thumb, 28 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_get_max_ret_size)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_rx_ctrl_get_max_ret_size +
    +
    [Calls]
    • >>   drv_dsi_rx_get_max_ret_size +
    +
    [Called By]
    • >>   ap_dcs_read +
    + +

    hal_dsi_rx_ctrl_init (Thumb, 158 bytes, Stack size 16 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init)) +

    [Stack]

    • Max Depth = 552
    • Call Chain = hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_init_rx +
    • >>   drv_se_start_rx +
    • >>   drv_dsc_dec_set_irqen +
    • >>   drv_dsc_dec_enable +
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    • >>   hal_dsi_rx_ctrl_init_clk +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_pre_init_pps (Thumb, 50 bytes, Stack size 12 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_pre_init_pps)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = hal_dsi_rx_ctrl_pre_init_pps +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   app_mipi_rx_init +
    • >>   ap_dcs_set_display_on +
    + +

    hal_dsi_rx_ctrl_send_ack_cmd (Thumb, 210 bytes, Stack size 48 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_send_ack_cmd)) +

    [Stack]

    • Max Depth = 384
    • Call Chain = hal_dsi_rx_ctrl_send_ack_cmd ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_rxbr_set_ack_pkt_header +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   ap_dcs_read +
    + +

    hal_dsi_rx_ctrl_start (Thumb, 42 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_start)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_start ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   drv_vidc_enable +
    • >>   drv_dsi_rx_power_up +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   app_mipi_rx_init +
    + +

    hal_dsi_rx_ctrl_stop (Thumb, 42 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_stop)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_dsi_rx_ctrl_stop ⇒ hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   drv_vidc_enable +
    • >>   drv_dsi_rx_shut_down +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_rx_ctrl_toggle_resolution (Thumb, 28 bytes, Stack size 8 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_toggle_resolution)) +

    [Stack]

    • Max Depth = 624
    • Call Chain = hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_sync_input_resolution_change +
    +
    [Called By]
    • >>   pps_update_handle +
    • >>   app_mipi_tx_start +
    • >>   ap_dcs_set_display_on +
    + +

    hal_dsi_tx_ctrl_create_handle (Thumb, 48 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_create_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_create_handle +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_deinit (Thumb, 102 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_deinit)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_dsi_tx_ctrl_deinit ⇒ hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   drv_crgu_reset_modules +
    • >>   drv_crgu_enable_clock +
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_sync_register_lcdc_cb +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_tx_ctrl_gen_a_tear_signal (Thumb, 34 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_gen_a_tear_signal)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_gen_a_tear_signal +
    +
    [Calls]
    • >>   drv_memc_set_tear_mode +
    • >>   drv_memc_get_tear_mode +
    • >>   drv_memc_gen_a_tear_signal +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    + +

    hal_dsi_tx_ctrl_init (Thumb, 110 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init)) +

    [Stack]

    • Max Depth = 432
    • Call Chain = hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_tx_powerup +
    • >>   drv_dsi_tx_phy_status_ready +
    • >>   hal_lcdc_init_clk +
    • >>   hal_lcdc_init_cfg +
    • >>   hal_dsi_tx_init_timing +
    • >>   hal_dsi_tx_init_cfg +
    • >>   hal_dsi_tx_ctrl_init_clk +
    • >>   hal_internal_vsync_set_tx_state +
    • >>   hal_internal_vsync_init_tx +
    • >>   hal_internal_sync_register_lcdc_cb +
    +
    [Called By]
    • >>   hal_tx_frame_rate_adjust +
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_set_overwrite_rgb (Thumb, 8 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_overwrite_rgb)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_set_overwrite_rgb +
    +
    [Calls]
    • >>   drv_lcdc_config_overwrite_rgb +
    +
    [Called By]
    • >>   app_mipi_tx_init +
    + +

    hal_dsi_tx_ctrl_set_tear_mode (Thumb, 10 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_set_tear_mode)) +

    [Stack]

    • Max Depth = 376
    • Call Chain = hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_internal_vsync_set_tear_mode +
    +
    [Called By]
    • >>   pps_update_handle +
    • >>   app_mipi_tx_start +
    • >>   ap_dcs_set_frame_change +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_dsi_tx_ctrl_start (Thumb, 134 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_start)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = hal_dsi_tx_ctrl_start ⇒ hal_lcdc_start ⇒ drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_enable_shadow_reg +
    • >>   drv_lcdc_cfg_int_frame +
    • >>   drv_dsi_tx_shutdown +
    • >>   drv_dsi_tx_powerup +
    • >>   drv_dsi_tx_phy_clock_lane_auto_lp +
    • >>   drv_dsi_tx_mode +
    • >>   drv_dsi_tx_config_eotp +
    • >>   drv_dsi_tx_command_mode_cfg +
    • >>   hal_lcdc_start +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_internal_vsync_set_tx_state +
    • >>   drv_lcdc_function_enable +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    + +

    hal_dsi_tx_ctrl_stop (Thumb, 52 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_stop)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_dsi_tx_ctrl_stop ⇒ hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   drv_dsi_tx_shutdown +
    • >>   drv_dsi_tx_set_int +
    • >>   hal_internal_vsync_set_tx_state +
    • >>   drv_lcdc_stop_display +
    • >>   drv_lcdc_set_int +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_dsi_tx_ctrl_write_array_cmd (Thumb, 238 bytes, Stack size 48 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_array_cmd)) +

    [Stack]

    • Max Depth = 84
    • Call Chain = hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   send_panel_init_code +
    + +

    hal_dsi_tx_ctrl_write_cmd (Thumb, 202 bytes, Stack size 48 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_write_cmd)) +

    [Stack]

    • Max Depth = 84
    • Call Chain = hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   ap_set_FPS_53 +
    • >>   ap_dcs_set_enter_sleep_mode +
    • >>   ap_dcs_set_display_on +
    • >>   ap_dcs_set_backlight +
    + +

    hal_gpio_config_pad (Thumb, 58 bytes, Stack size 16 bytes, hal_gpio.o(i.hal_gpio_config_pad)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_gpio_config_pad ⇒ hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_init_output +
    • >>   hal_gpio_set_mode +
    • >>   hal_gpio_init_input +
    +
    [Called By]
    • >>   app_gpio_init +
    + +

    hal_gpio_ctrl_eint (Thumb, 18 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_ctrl_eint)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_ctrl_eint ⇒ drv_gpio_set_int +
    +
    [Calls]
    • >>   drv_gpio_set_int +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_init_eint (Thumb, 58 bytes, Stack size 24 bytes, hal_gpio.o(i.hal_gpio_init_eint)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_gpio_init_eint ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_sys_cfg_sel_int_trig +
    • >>   drv_sys_cfg_sel_gpio_group +
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_init_input (Thumb, 22 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_init_input)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_init_input ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   hal_gpio_config_pad +
    + +

    hal_gpio_init_output (Thumb, 28 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_init_output)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_init_output ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_ioe +
    • >>   hal_gpio_set_mode +
    • >>   drv_gpio_set_output_data +
    +
    [Called By]
    • >>   hal_gpio_config_pad +
    • >>   app_system_suspend +
    • >>   app_init_panel +
    + +

    hal_gpio_reg_eint_cb (Thumb, 22 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_reg_eint_cb)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_gpio_reg_eint_cb +
    +
    [Calls]
    • >>   drv_gpio_register_callback +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    + +

    hal_gpio_set_ap_reset_int (Thumb, 76 bytes, Stack size 16 bytes, hal_gpio.o(i.hal_gpio_set_ap_reset_int)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_gpio_set_ap_reset_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_set_int +
    • >>   drv_sys_cfg_sel_ap_rst_trig +
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_gpio_register_ap_reset_callback +
    +
    [Called By]
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    • >>   app_system_suspend +
    • >>   ap_rstn_pull_high_cb +
    • >>   ap_rstn_pull_down_cb +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_gpio_set_mode (Thumb, 92 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_set_mode)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_gpio_set_mode +
    +
    [Called By]
    • >>   hal_system_init +
    • >>   hal_swire_init +
    • >>   hal_gpio_init_output +
    • >>   hal_gpio_config_pad +
    • >>   hal_gpio_init_input +
    • >>   hal_gpio_init_eint +
    + +

    hal_gpio_set_output_data (Thumb, 8 bytes, Stack size 8 bytes, hal_gpio.o(i.hal_gpio_set_output_data)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_gpio_set_output_data +
    +
    [Calls]
    • >>   drv_gpio_set_output_data +
    +
    [Called By]
    • >>   app_tx_panel_reset +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_internal_sync_get_hight_performan_mode (Thumb, 10 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_sync_get_hight_performan_mode)) +

    [Called By]

    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_intl_fb_check_bandwidth +
    + +

    hal_internal_sync_input_resolution_change (Thumb, 336 bytes, Stack size 64 bytes, hal_internal_vsync.o(i.hal_internal_sync_input_resolution_change)) +

    [Stack]

    • Max Depth = 616
    • Call Chain = hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_vidc_enable +
    • >>   hal_dsi_tx_ctrl_gen_a_tear_signal +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   delayUs +
    • >>   tau_log_printf +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   drv_vidc_reset +
    • >>   drv_rxbr_clear_status0 +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   hal_internal_vsync_get_sync_line +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    + +

    hal_internal_sync_register_lcdc_cb (Thumb, 8 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_sync_register_lcdc_cb)) +

    [Called By]

    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_deinit +
    + +

    hal_internal_vsync_deinit (Thumb, 22 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.hal_internal_vsync_deinit)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_set_tx_state +
    + +

    hal_internal_vsync_get_rx_state (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_rx_state)) +

    [Called By]

    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    hal_internal_vsync_get_sync_line (Thumb, 16 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_sync_line)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_internal_vsync_set_tear_mode +
    + +

    hal_internal_vsync_get_tx_state (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.hal_internal_vsync_get_tx_state)) +

    [Called By]

    • >>   hal_tx_frame_rate_adjust +
    • >>   hal_dsi_tx_send_cmd +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   svs_wait_start +
    + +

    hal_internal_vsync_init_rx (Thumb, 206 bytes, Stack size 56 bytes, hal_internal_vsync.o(i.hal_internal_vsync_init_rx)) +

    [Stack]

    • Max Depth = 216
    • Call Chain = hal_internal_vsync_init_rx ⇒ hal_intl_svs_init_rx ⇒ hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_svs_init_rx +
    • >>   hal_intl_fb_cal_fb_info +
    • >>   hal_intl_dcs_init_sw_fltr +
    • >>   drv_vidc_register_callback +
    • >>   drv_rxbr_register_irq1_callback +
    • >>   dcs_packet_fifo_init +
    • >>   soft_pro_motion_init +
    • >>   check_mipi_rx_tx_video_info +
    • >>   hal_intl_fb_get_user_flow +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_internal_vsync_init_tx (Thumb, 194 bytes, Stack size 80 bytes, hal_internal_vsync.o(i.hal_internal_vsync_init_tx)) +

    [Stack]

    • Max Depth = 220
    • Call Chain = hal_internal_vsync_init_tx ⇒ hal_intl_fb_cal_fb_info ⇒ hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_cal_fb_info +
    • >>   check_mipi_rx_tx_video_info +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_internal_vsync_set_rx_state (Thumb, 28 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_rx_state)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_internal_vsync_set_rx_state ⇒ hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   hal_intl_svs_deinit_rx +
    • >>   hal_internal_vsync_deinit +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_dsi_rx_ctrl_deinit +
    + +

    hal_internal_vsync_set_tear_mode (Thumb, 424 bytes, Stack size 32 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_tear_mode)) +

    [Stack]

    • Max Depth = 368
    • Call Chain = hal_internal_vsync_set_tear_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_config_int_single +
    • >>   drv_memc_set_tear_mode +
    • >>   tau_log_printf +
    • >>   drv_memc_set_frame_drop_select +
    • >>   drv_lcdc_set_tear_line +
    • >>   drv_lcdc_config_acc_command_mode +
    • >>   hal_internal_vsync_get_sync_line +
    • >>   drv_lcdc_function_enable +
    • >>   drv_lcdc_function_disable +
    • >>   __aeabi_idivmod +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    + +

    hal_internal_vsync_set_tx_state (Thumb, 78 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.hal_internal_vsync_set_tx_state)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_internal_vsync_set_tx_state ⇒ hal_internal_vsync_deinit +
    +
    [Calls]
    • >>   hal_intl_svs_deinit_tx +
    • >>   hal_internal_vsync_deinit +
    • >>   soft_pro_motion_init +
    • >>   hal_intl_fb_get_user_flow +
    • >>   drv_lcdc_function_disable +
    +
    [Called By]
    • >>   hal_tx_frame_rate_adjust +
    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_deinit +
    + +

    hal_intl_dcs_init_sw_fltr (Thumb, 90 bytes, Stack size 28 bytes, hal_internal_dcs.o(i.hal_intl_dcs_init_sw_fltr)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = hal_intl_dcs_init_sw_fltr +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    + +

    hal_intl_dcs_set_auto_hw_filter (Thumb, 130 bytes, Stack size 48 bytes, hal_internal_dcs.o(i.hal_intl_dcs_set_auto_hw_filter)) +

    [Stack]

    • Max Depth = 48
    • Call Chain = hal_intl_dcs_set_auto_hw_filter +
    +
    [Calls]
    • >>   drv_rxbr_set_filter_regs +
    • >>   __aeabi_memset +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    + +

    hal_intl_fb_cal_fb_info (Thumb, 780 bytes, Stack size 80 bytes, hal_internal_fb.o(i.hal_intl_fb_cal_fb_info)) +

    [Stack]

    • Max Depth = 140
    • Call Chain = hal_intl_fb_cal_fb_info ⇒ hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_flow_control_adapter +
    • >>   hal_intl_fb_edge_resize +
    • >>   hal_intl_fb_check_bandwidth +
    • >>   ha_intl_fb_check_pu_size +
    • >>   __aeabi_memcpy +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_internal_vsync_init_tx +
    + +

    hal_intl_fb_get_memc_flow_mode (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_fb.o(i.hal_intl_fb_get_memc_flow_mode)) +

    [Called By]

    • >>   hal_lcdc_timinggen_config +
    • >>   hal_lcdc_start +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   hal_dsi_tx_ctrl_start +
    + +

    hal_intl_fb_get_rx_fb_info (Thumb, 12 bytes, Stack size 8 bytes, hal_internal_fb.o(i.hal_intl_fb_get_rx_fb_info)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_fb_get_rx_fb_info +
    +
    [Calls]
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_vidc +
    • >>   hal_dsi_rx_ctrl_init_rxbr +
    • >>   hal_dsi_rx_ctrl_init_memc +
    • >>   svs_direct_mode_setting +
    + +

    hal_intl_fb_get_tx_fb_info (Thumb, 12 bytes, Stack size 8 bytes, hal_internal_fb.o(i.hal_intl_fb_get_tx_fb_info)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_fb_get_tx_fb_info +
    +
    [Calls]
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    • >>   hal_lcdc_init_cfg +
    + +

    hal_intl_fb_get_user_flow (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_fb.o(i.hal_intl_fb_get_user_flow)) +

    [Called By]

    • >>   hal_lcdc_start +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_internal_vsync_set_rx_state +
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_intl_svs_init_rx +
    • >>   rxbr_irq1_callback +
    • >>   hal_internal_vsync_set_tx_state +
    + +

    hal_intl_svs_deinit_rx (Thumb, 32 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_deinit_rx)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_deinit_rx +
    +
    [Calls]
    • >>   drv_rxbr_set_inten +
    +
    [Called By]
    • >>   hal_internal_vsync_set_rx_state +
    + +

    hal_intl_svs_deinit_tx (Thumb, 10 bytes, Stack size 0 bytes, hal_internal_svs.o(i.hal_intl_svs_deinit_tx)) +

    [Called By]

    • >>   hal_internal_vsync_set_tx_state +
    + +

    hal_intl_svs_handle (Thumb, 24 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_handle +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    hal_intl_svs_init_rx (Thumb, 120 bytes, Stack size 16 bytes, hal_internal_svs.o(i.hal_intl_svs_init_rx)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = hal_intl_svs_init_rx ⇒ hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   hal_intl_svs_update_rxbr_clk +
    • >>   drv_rxbr_set_inten +
    • >>   hal_intl_fb_get_user_flow +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    + +

    hal_intl_svs_init_tx (Thumb, 16 bytes, Stack size 8 bytes, hal_internal_svs.o(i.hal_intl_svs_init_tx)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_intl_svs_init_tx +
    +
    [Called By]
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    + +

    hal_intl_svs_set_rx_vtt (Thumb, 6 bytes, Stack size 0 bytes, hal_internal_svs.o(i.hal_intl_svs_set_rx_vtt)) +

    [Called By]

    • >>   rxbr_irq1_callback +
    + +

    hal_intl_svs_update_rxbr_clk (Thumb, 52 bytes, Stack size 16 bytes, hal_internal_svs.o(i.hal_intl_svs_update_rxbr_clk)) +

    [Stack]

    • Max Depth = 144
    • Call Chain = hal_intl_svs_update_rxbr_clk ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_crgu_get_rxbr_clk +
    • >>   __aeabi_ui2d +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_dmul +
    +
    [Called By]
    • >>   hal_intl_svs_init_rx +
    + +

    hal_lcdc_displayproc_config (Thumb, 94 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_displayproc_config)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_lcdc_displayproc_config +
    +
    [Calls]
    • >>   drv_lcdc_endianness_config +
    • >>   drv_lcdc_crop_hact +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_lcdc_postproc_config (Thumb, 276 bytes, Stack size 88 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_postproc_config)) +

    [Stack]

    • Max Depth = 232
    • Call Chain = hal_lcdc_postproc_config ⇒ hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_lcdc_fc_config +
    • >>   drv_lcdc_edge_enh_config +
    • >>   drv_lcdc_edge_dect_config +
    • >>   drv_lcdc_dith_config +
    • >>   drv_lcdc_bcsa_config +
    • >>   hal_lcdc_upscaler_config +
    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   drv_lcdc_vintp_mode_config +
    • >>   drv_lcdc_function_enable +
    • >>   drv_lcdc_function_disable +
    • >>   drv_lcdc_fldc_config +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_lcdc_upscaler_config (Thumb, 202 bytes, Stack size 40 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_upscaler_config)) +

    [Stack]

    • Max Depth = 144
    • Call Chain = hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   drv_lcdc_function_enable +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_lcdc_postproc_config +
    + +

    hal_nonshadow_func_update (Thumb, 180 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_nonshadow_func_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_nonshadow_func_update ⇒ drv_lcdc_config_int_single +
    +
    [Calls]
    • >>   drv_lcdc_fc_config +
    • >>   drv_lcdc_edge_enh_config +
    • >>   drv_lcdc_edge_dect_config +
    • >>   drv_lcdc_config_int_single +
    • >>   drv_lcdc_bcsa_config +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    +

    hal_pwr_enter_deep_sleep_mode (Thumb, 42 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_enter_deep_sleep_mode)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_enter_deep_sleep_mode ⇒ drv_pwr_enter_deep_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_set_wakeup_type +
    • >>   drv_pwr_enter_deep_sleep_mode +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_enter_normal_sleep_mode (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_enter_normal_sleep_mode)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_pwr_enter_normal_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_enter_sleep_mode_ex +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_enter_stop_sleep_mode (Thumb, 88 bytes, Stack size 16 bytes, hal_pwr.o(i.hal_pwr_enter_stop_sleep_mode)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = hal_pwr_enter_stop_sleep_mode ⇒ drv_pwr_enter_stop_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_enter_stop_sleep_mode +
    • >>   drv_sys_cfg_set_int +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_exit_sleep_mode (Thumb, 10 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = hal_pwr_exit_sleep_mode ⇒ drv_pwr_exit_sleep_mode +
    +
    [Calls]
    • >>   drv_pwr_exit_sleep_mode +
    +
    [Called By]
    • >>   app_system_resume +
    + +

    hal_pwr_get_vcc_power_ready (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_get_vcc_power_ready)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_pwr_get_vcc_power_ready +
    +
    [Calls]
    • >>   drv_pwr_get_power_ready_st +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_pwr_set_main_power (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_set_main_power)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_set_main_power ⇒ drv_pwr_set_digit_power_sel +
    +
    [Calls]
    • >>   drv_pwr_set_digit_power_sel +
    +
    [Called By]
    • >>   google_p8p_demo +
    + +

    hal_pwr_set_sleep_mode_power (Thumb, 8 bytes, Stack size 8 bytes, hal_pwr.o(i.hal_pwr_set_sleep_mode_power)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_pwr_set_sleep_mode_power ⇒ drv_pwr_set_breath_screen_power_sel +
    +
    [Calls]
    • >>   drv_pwr_set_breath_screen_power_sel +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_pwr_set_stop_sleep_wakeup_pin (Thumb, 86 bytes, Stack size 24 bytes, hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = hal_pwr_set_stop_sleep_wakeup_pin ⇒ hal_gpio_init_eint ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_gpio_reg_eint_cb +
    • >>   hal_gpio_init_eint +
    • >>   hal_gpio_ctrl_eint +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_swire_deinit (Thumb, 60 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_deinit)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = hal_swire_deinit ⇒ hal_timer_deinit ⇒ drv_timer_set_int +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_enable_clock +
    • >>   hal_timer_deinit +
    • >>   drv_swire_set_int +
    • >>   drv_swire_register_callback +
    • >>   drv_swire_enable +
    +
    [Called By]
    • >>   app_system_suspend +
    + +

    hal_swire_enable (Thumb, 86 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_enable)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_swire_enable ⇒ drv_swire_set_int +
    +
    [Calls]
    • >>   drv_timer_enable +
    • >>   drv_swire_set_trig_mode +
    • >>   drv_swire_set_power_down +
    • >>   drv_swire_set_int +
    • >>   drv_swire_get_pulse_count +
    +
    [Called By]
    • >>   app_init_panel +
    • >>   ap_dcs_set_enter_sleep_mode +
    + +

    hal_swire_init (Thumb, 74 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_init)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_swire_init ⇒ hal_gpio_set_mode ⇒ drv_gpio_set_mode +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_swire_set_power_down +
    • >>   drv_swire_set_bit_time +
    • >>   drv_swire_enable +
    • >>   drv_crgu_set_clock_div +
    • >>   hal_gpio_set_mode +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_swire_set_pulse (Thumb, 32 bytes, Stack size 8 bytes, hal_swire.o(i.hal_swire_set_pulse)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_swire_set_pulse +
    +
    [Calls]
    • >>   drv_swire_set_trig_mode +
    • >>   drv_swire_set_pulse_count +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    • >>   app_init_panel +
    + +

    hal_swire_set_timer (Thumb, 60 bytes, Stack size 24 bytes, hal_swire.o(i.hal_swire_set_timer)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_swire_set_timer ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_timer_init +
    • >>   hal_timer_set_repeat +
    • >>   drv_timer_set_compare_val +
    • >>   drv_sys_cfg_sel_swire_timer +
    • >>   drv_swire_set_trig_mode +
    +
    [Called By]
    • >>   app_display_init +
    + +

    hal_system_init (Thumb, 192 bytes, Stack size 8 bytes, hal_system.o(i.hal_system_init)) +

    [Stack]

    • Max Depth = 48
    • Call Chain = hal_system_init ⇒ drv_common_system_init ⇒ drv_se_init ⇒ drv_efuse_read +
    +
    [Calls]
    • >>   drv_pwr_set_pll_clk +
    • >>   drv_crgu_enable_clock +
    • >>   drv_sys_cfg_clear_all_int +
    • >>   drv_common_system_init +
    • >>   hal_system_updata_sysclk +
    • >>   hal_gpio_set_mode +
    +
    [Called By]
    • >>   board_Init +
    + +

    hal_system_updata_sysclk (Thumb, 60 bytes, Stack size 8 bytes, hal_system.o(i.hal_system_updata_sysclk)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_system_updata_sysclk ⇒ drv_crgu_set_ahb_clk +
    +
    [Calls]
    • >>   drv_crgu_set_ahb_clk +
    +
    [Called By]
    • >>   hal_system_init +
    + +

    hal_timer_deinit (Thumb, 48 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_deinit)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_timer_deinit ⇒ drv_timer_set_int +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_crgu_enable_clock +
    • >>   drv_timer_set_repeat +
    • >>   drv_timer_set_int +
    • >>   drv_timer_enable +
    +
    [Called By]
    • >>   hal_swire_deinit +
    + +

    hal_timer_init (Thumb, 28 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_init)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = hal_timer_init ⇒ drv_timer_set_prescaler +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    • >>   drv_timer_set_prescaler +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    + +

    hal_timer_set_repeat (Thumb, 8 bytes, Stack size 8 bytes, hal_timer.o(i.hal_timer_set_repeat)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_timer_set_repeat +
    +
    [Calls]
    • >>   drv_timer_set_repeat +
    +
    [Called By]
    • >>   hal_swire_set_timer +
    + +

    hal_uart_init (Thumb, 134 bytes, Stack size 48 bytes, hal_uart.o(i.hal_uart_init)) +

    [Stack]

    • Max Depth = 100
    • Call Chain = hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_uart_trans_create_handle +
    • >>   drv_uart_init +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   tau_log_init +
    + +

    hal_uart_send_blocking (Thumb, 24 bytes, Stack size 16 bytes, hal_uart.o(i.hal_uart_send_blocking)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_uart_send_blocking +
    +
    [Calls]
    • >>   drv_uart_send_blocking +
    +
    [Called By]
    • >>   fputc +
    + +

    hal_vsync_func_update (Thumb, 18 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_vsync_func_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_vsync_func_update ⇒ drv_lcdc_config_int_single +
    +
    [Calls]
    • >>   drv_lcdc_config_int_single +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init) +
    +

    hal_vsync_reset_lcdc_scaler (Thumb, 206 bytes, Stack size 48 bytes, hal_internal_vsync.o(i.hal_vsync_reset_lcdc_scaler)) +

    [Stack]

    • Max Depth = 152
    • Call Chain = hal_vsync_reset_lcdc_scaler ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   soft_pro_motion_init +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_internal_sync_input_resolution_change +
    + +

    main (Thumb, 32 bytes, Stack size 0 bytes, main.o(i.main)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = main ⇒ google_p8p_demo ⇒ app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   google_p8p_demo +
    • >>   board_Init +
    +
    [Address Reference Count : 1]
    • entry9a.o(.ARM.Collect$$$$0000000B) +
    +

    tau_log_init (Thumb, 48 bytes, Stack size 32 bytes, tau_log.o(i.tau_log_init)) +

    [Stack]

    • Max Depth = 132
    • Call Chain = tau_log_init ⇒ hal_uart_init ⇒ drv_uart_init ⇒ drv_uart_set_baud_rate ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_uart_init +
    +
    [Called By]
    • >>   board_Init +
    + +

    tau_log_printf (Thumb, 116 bytes, Stack size 296 bytes, tau_log.o(i.tau_log_printf)) +

    [Stack]

    • Max Depth = 336
    • Call Chain = tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_push_log +
    • >>   vsprintf +
    • >>   __2printf +
    • >>   strlen +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    • >>   hal_internal_sync_input_resolution_change +
    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    • >>   app_system_suspend +
    • >>   app_system_resume +
    • >>   app_system_process +
    • >>   app_mipi_tx_start +
    • >>   app_mipi_tx_init +
    • >>   app_mipi_rx_init +
    • >>   ap_rstn_pull_down_cb +
    • >>   ap_dcs_set_exit_sleep_mode +
    • >>   ap_dcs_set_enter_sleep_mode +
    • >>   ap_dcs_set_display_on +
    • >>   ap_dcs_set_display_off +
    • >>   ap_dcs_read +
    • >>   google_p8p_demo +
    • >>   main +
    • >>   drv_se_set_dsc +
    • >>   HardFault_Handler +
    • >>   svs_wait_fr_stab +
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    • >>   check_pkt_buf_rev +
    • >>   LCDC_IRQn_Handler +
    • >>   vidc_callback +
    • >>   rxbr_irq1_callback +
    • >>   hal_internal_vsync_set_tear_mode +
    • >>   MIPI_TX_IRQn_Handler +
    • >>   MIPI_RX_IRQn_Handler +
    • >>   drv_se_set_vidc +
    • >>   drv_se_set_rxbr +
    • >>   drv_se_set_memc +
    • >>   drv_se_set_lcdc +
    + +

    tau_log_push_log (Thumb, 118 bytes, Stack size 32 bytes, tau_log.o(i.tau_log_push_log)) +

    [Stack]

    • Max Depth = 40
    • Call Chain = tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   delayUs +
    • >>   __aeabi_memcpy +
    +
    [Called By]
    • >>   tau_log_printf +
    • >>   fputc +
    +

    +

    +Local Symbols +

    +

    ap_dcs_read (Thumb, 280 bytes, Stack size 72 bytes, p8p_demo.o(i.ap_dcs_read)) +

    [Stack]

    • Max Depth = 456
    • Call Chain = ap_dcs_read ⇒ hal_dsi_rx_ctrl_send_ack_cmd ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_rx_ctrl_send_ack_cmd +
    • >>   hal_dsi_rx_ctrl_get_max_ret_size +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_mipi_rx_init) +
    +

    ap_dcs_set_backlight (Thumb, 130 bytes, Stack size 24 bytes, p8p_demo.o(i.ap_dcs_set_backlight)) +

    [Stack]

    • Max Depth = 108
    • Call Chain = ap_dcs_set_backlight ⇒ hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   __aeabi_idivmod +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_display_off (Thumb, 34 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_display_off)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = ap_dcs_set_display_off ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_display_on (Thumb, 90 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_display_on)) +

    [Stack]

    • Max Depth = 640
    • Call Chain = ap_dcs_set_display_on ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_enter_sleep_mode (Thumb, 104 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_enter_sleep_mode)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = ap_dcs_set_enter_sleep_mode ⇒ hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_enable +
    • >>   hal_gpio_set_output_data +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   delayMs +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_exit_sleep_mode (Thumb, 28 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_exit_sleep_mode)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = ap_dcs_set_exit_sleep_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_dcs_set_frame_change (Thumb, 46 bytes, Stack size 16 bytes, p8p_demo.o(i.ap_dcs_set_frame_change)) +

    [Stack]

    • Max Depth = 392
    • Call Chain = ap_dcs_set_frame_change ⇒ hal_dsi_tx_ctrl_set_tear_mode ⇒ hal_internal_vsync_set_tear_mode ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    ap_rstn_pull_down_cb (Thumb, 38 bytes, Stack size 8 bytes, p8p_demo.o(i.ap_rstn_pull_down_cb)) +

    [Stack]

    • Max Depth = 344
    • Call Chain = ap_rstn_pull_down_cb ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    • >>   tau_log_printf +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.ap_dcs_set_enter_sleep_mode) +
    +

    ap_rstn_pull_high_cb (Thumb, 22 bytes, Stack size 8 bytes, p8p_demo.o(i.ap_rstn_pull_high_cb)) +

    [Stack]

    • Max Depth = 32
    • Call Chain = ap_rstn_pull_high_cb ⇒ hal_gpio_set_ap_reset_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   hal_gpio_set_ap_reset_int +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_system_suspend) +
    +

    ap_set_FPS_53 (Thumb, 74 bytes, Stack size 32 bytes, p8p_demo.o(i.ap_set_FPS_53)) +

    [Stack]

    • Max Depth = 116
    • Call Chain = ap_set_FPS_53 ⇒ hal_dsi_tx_ctrl_write_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(.constdata) +
    +

    app_init_panel (Thumb, 42 bytes, Stack size 8 bytes, p8p_demo.o(i.app_init_panel)) +

    [Stack]

    • Max Depth = 124
    • Call Chain = app_init_panel ⇒ send_panel_init_code ⇒ hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_swire_set_pulse +
    • >>   hal_swire_enable +
    • >>   hal_gpio_init_output +
    • >>   delayMs +
    • >>   send_panel_init_code +
    • >>   app_tx_panel_reset +
    +
    [Called By]
    • >>   app_mipi_tx_start +
    + +

    app_mipi_rx_init (Thumb, 232 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_rx_init)) +

    [Stack]

    • Max Depth = 560
    • Call Chain = app_mipi_rx_init ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_rx_ctrl_start +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   hal_dsi_rx_ctrl_init +
    • >>   hal_dsi_rx_ctrl_create_handle +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_mipi_tx_init (Thumb, 214 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_tx_init)) +

    [Stack]

    • Max Depth = 440
    • Call Chain = app_mipi_tx_init ⇒ hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_overwrite_rgb +
    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_dsi_tx_ctrl_create_handle +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_mipi_tx_start (Thumb, 112 bytes, Stack size 8 bytes, p8p_demo.o(i.app_mipi_tx_start)) +

    [Stack]

    • Max Depth = 632
    • Call Chain = app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_set_pulse +
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_start +
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    • >>   hal_dsi_rx_ctrl_pre_init_pps +
    • >>   delayMs +
    • >>   app_init_panel +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_display_init +
    + +

    app_system_process (Thumb, 60 bytes, Stack size 8 bytes, p8p_demo.o(i.app_system_process)) +

    [Stack]

    • Max Depth = 656
    • Call Chain = app_system_process ⇒ app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   app_system_suspend +
    • >>   app_system_resume +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   google_p8p_demo +
    + +

    app_system_resume (Thumb, 30 bytes, Stack size 8 bytes, p8p_demo.o(i.app_system_resume)) +

    [Stack]

    • Max Depth = 648
    • Call Chain = app_system_resume ⇒ app_display_init ⇒ app_mipi_tx_start ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_pwr_exit_sleep_mode +
    • >>   app_display_init +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_system_process +
    + +

    app_system_suspend (Thumb, 202 bytes, Stack size 16 bytes, p8p_demo.o(i.app_system_suspend)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = app_system_suspend ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_swire_deinit +
    • >>   hal_pwr_set_stop_sleep_wakeup_pin +
    • >>   hal_pwr_set_sleep_mode_power +
    • >>   hal_pwr_enter_stop_sleep_mode +
    • >>   hal_pwr_enter_normal_sleep_mode +
    • >>   hal_pwr_enter_deep_sleep_mode +
    • >>   hal_gpio_set_ap_reset_int +
    • >>   hal_gpio_init_output +
    • >>   hal_dsi_tx_ctrl_stop +
    • >>   hal_dsi_tx_ctrl_deinit +
    • >>   hal_dsi_rx_ctrl_stop +
    • >>   hal_dsi_rx_ctrl_deinit +
    • >>   tau_log_printf +
    +
    [Called By]
    • >>   app_system_process +
    + +

    app_tx_panel_reset (Thumb, 46 bytes, Stack size 8 bytes, p8p_demo.o(i.app_tx_panel_reset)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = app_tx_panel_reset ⇒ delayMs ⇒ delayUs +
    +
    [Calls]
    • >>   hal_gpio_set_output_data +
    • >>   delayMs +
    +
    [Called By]
    • >>   app_init_panel +
    + +

    pps_update_handle (Thumb, 110 bytes, Stack size 24 bytes, p8p_demo.o(i.pps_update_handle)) +

    [Stack]

    • Max Depth = 648
    • Call Chain = pps_update_handle ⇒ hal_dsi_rx_ctrl_toggle_resolution ⇒ hal_internal_sync_input_resolution_change ⇒ hal_dsi_rx_ctrl_init ⇒ hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_set_tear_mode +
    • >>   hal_dsi_rx_ctrl_toggle_resolution +
    +
    [Address Reference Count : 1]
    • p8p_demo.o(i.app_mipi_rx_init) +
    +

    send_panel_init_code (Thumb, 58 bytes, Stack size 32 bytes, p8p_demo.o(i.send_panel_init_code)) +

    [Stack]

    • Max Depth = 116
    • Call Chain = send_panel_init_code ⇒ hal_dsi_tx_ctrl_write_array_cmd ⇒ hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    • >>   delayUs +
    +
    [Called By]
    • >>   app_init_panel +
    + +

    hal_dsi_rx_ctrl_init_clk (Thumb, 222 bytes, Stack size 32 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_clk)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = hal_dsi_rx_ctrl_init_clk ⇒ drv_crgu_set_dsc_clk +
    +
    [Calls]
    • >>   drv_pwr_set_pll_clk +
    • >>   drv_crgu_set_vidc_clk +
    • >>   drv_crgu_set_rxbr_clk +
    • >>   drv_crgu_set_fb_clk +
    • >>   drv_crgu_set_dsc_clk +
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_dsi_rx (Thumb, 232 bytes, Stack size 32 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_dsi_rx)) +

    [Stack]

    • Max Depth = 216
    • Call Chain = hal_dsi_rx_ctrl_init_dsi_rx ⇒ hal_dsi_rx_ctrl_set_ipi_cfg ⇒ drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_dsi_rx_set_up_phy +
    • >>   drv_dsi_rx_set_tear_resp_en +
    • >>   drv_dsi_rx_set_resp_cnt +
    • >>   drv_dsi_rx_set_lane_swap +
    • >>   drv_dsi_rx_set_ipi_ycbcr_frmt +
    • >>   drv_dsi_rx_set_inten +
    • >>   drv_dsi_rx_set_ddi_crc_en +
    • >>   drv_dsi_rx_set_ddi_cfg +
    • >>   drv_dsi_rx_set_ctrl_cfg +
    • >>   drv_dsi_rx_set_check_crc +
    • >>   drv_dsi_rx_enable_irq +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   hal_dsi_rx_ctrl_set_ipi_cfg +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_memc (Thumb, 294 bytes, Stack size 80 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_memc)) +

    [Stack]

    • Max Depth = 432
    • Call Chain = hal_dsi_rx_ctrl_init_memc ⇒ drv_memc_set_ltpo_mode ⇒ drv_se_set_memc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   drv_memc_set_vidc_sync_cnt +
    • >>   drv_memc_set_tear_waveform +
    • >>   drv_memc_set_tear_mode +
    • >>   drv_memc_set_ltpo_pu_thres +
    • >>   drv_memc_set_ltpo_mode +
    • >>   drv_memc_set_lcdc_st_conditions +
    • >>   drv_memc_set_fs_en_conditions +
    • >>   drv_memc_set_double_buffer +
    • >>   drv_memc_set_data_mode +
    • >>   drv_memc_set_circ_mode_enable +
    • >>   drv_memc_set_active_height +
    • >>   drv_memc_sel_vsync +
    • >>   drv_memc_rate_transfer_sel +
    • >>   drv_memc_enable_irq +
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_rxbr (Thumb, 314 bytes, Stack size 144 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_rxbr)) +

    [Stack]

    • Max Depth = 504
    • Call Chain = hal_dsi_rx_ctrl_init_rxbr ⇒ drv_rxbr_set_color_format ⇒ drv_se_set_rxbr ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_intl_dcs_set_auto_hw_filter +
    • >>   drv_rxbr_set_usr_row +
    • >>   drv_rxbr_set_usr_col +
    • >>   drv_rxbr_set_usr_cfg +
    • >>   drv_rxbr_set_ltpo_drop_th +
    • >>   drv_rxbr_set_inten +
    • >>   drv_rxbr_set_color_format +
    • >>   drv_rxbr_hline_rcv_cfg +
    • >>   drv_rxbr_frame_drop_cfg +
    • >>   drv_rxbr_enable_irq +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_init_vidc (Thumb, 624 bytes, Stack size 168 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_init_vidc)) +

    [Stack]

    • Max Depth = 536
    • Call Chain = hal_dsi_rx_ctrl_init_vidc ⇒ drv_vidc_set_src_parameter ⇒ drv_se_set_vidc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   drv_vidc_set_vintp_config +
    • >>   drv_vidc_set_src_parameter +
    • >>   drv_vidc_set_scld_vcoef1 +
    • >>   drv_vidc_set_scld_vcoef0 +
    • >>   drv_vidc_set_scld_step +
    • >>   drv_vidc_set_scld_hcoef1 +
    • >>   drv_vidc_set_scld_hcoef0 +
    • >>   drv_vidc_set_rotation +
    • >>   drv_vidc_set_pu_ctrl +
    • >>   drv_vidc_set_pentile_swap +
    • >>   drv_vidc_set_mirror +
    • >>   drv_vidc_set_irqen +
    • >>   drv_vidc_set_honly_hinitr +
    • >>   drv_vidc_set_honly_hinitb +
    • >>   drv_vidc_set_honly_hcoef0 +
    • >>   drv_vidc_set_dst_parameter +
    • >>   drv_vidc_set_dither_config +
    • >>   drv_vidc_set_circ_mode_enable +
    • >>   drv_vidc_init_module_enable +
    • >>   drv_vidc_enable_irq +
    • >>   __aeabi_ui2d +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   __aeabi_uidivmod +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init +
    + +

    hal_dsi_rx_ctrl_set_ipi_cfg (Thumb, 48 bytes, Stack size 24 bytes, hal_dsi_rx_ctrl.o(i.hal_dsi_rx_ctrl_set_ipi_cfg)) +

    [Stack]

    • Max Depth = 184
    • Call Chain = hal_dsi_rx_ctrl_set_ipi_cfg ⇒ drv_dsi_rx_calc_ipi_tx_delay ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_dsi_rx_set_ipi_cfg +
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    +
    [Called By]
    • >>   hal_dsi_rx_ctrl_init_dsi_rx +
    + +

    hal_dsi_tx_cmd_mode_cal_timing (Thumb, 510 bytes, Stack size 64 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_cmd_mode_cal_timing)) +

    [Stack]

    • Max Depth = 400
    • Call Chain = hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_fadd +
    • >>   __aeabi_f2d +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_d2uiz +
    • >>   tau_log_printf +
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_idivmod +
    • >>   __aeabi_uidivmod +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_ctrl_init_clk (Thumb, 12 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_ctrl_init_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = hal_dsi_tx_ctrl_init_clk +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_cfg (Thumb, 250 bytes, Stack size 80 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_cfg)) +

    [Stack]

    • Max Depth = 96
    • Call Chain = hal_dsi_tx_init_cfg ⇒ drv_dsi_tx_set_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_dsi_tx_video_mode_cfg +
    • >>   drv_dsi_tx_timeout_cfg +
    • >>   drv_dsi_tx_set_time_out_div +
    • >>   drv_dsi_tx_set_int +
    • >>   drv_dsi_tx_set_esc_div +
    • >>   drv_dsi_tx_set_bta_ack +
    • >>   drv_dsi_tx_response_mode +
    • >>   drv_dsi_tx_phy_lane_mode +
    • >>   drv_dsi_tx_phy_clock_lane_req_hs +
    • >>   drv_dsi_tx_phy_clock_lane_auto_lp +
    • >>   drv_dsi_tx_mode +
    • >>   drv_dsi_tx_dpi_polarity +
    • >>   drv_dsi_tx_dpi_mode +
    • >>   drv_dsi_tx_dpi_lpcmd_time +
    • >>   drv_dsi_tx_config_int +
    • >>   drv_dsi_tx_config_eotp +
    • >>   drv_dsi_tx_command_mode_cfg +
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_dpi_timing (Thumb, 58 bytes, Stack size 40 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_dpi_timing)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_dsi_tx_init_dpi_timing ⇒ drv_crgu_set_dpi_clk +
    +
    [Calls]
    • >>   drv_crgu_set_dpi_clk +
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_uidivmod +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_init_phy_cfg (Thumb, 22 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_phy_cfg)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_dsi_tx_init_phy_cfg ⇒ drv_dsi_tx_phy_test_setup ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_dsi_tx_phy_time_cfg +
    • >>   drv_dsi_tx_phy_test_setup +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_init_timing (Thumb, 82 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_timing)) +

    [Stack]

    • Max Depth = 416
    • Call Chain = hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_tx_edpi_cmd_size +
    • >>   hal_dsi_tx_vid_mode_cal_timing +
    • >>   hal_dsi_tx_timing_info_update +
    • >>   hal_dsi_tx_init_vid_timing +
    • >>   hal_dsi_tx_init_phy_cfg +
    • >>   hal_dsi_tx_init_dpi_timing +
    • >>   hal_dsi_tx_cmd_mode_cal_timing +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_dsi_tx_init_vid_timing (Thumb, 70 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_init_vid_timing)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = hal_dsi_tx_init_vid_timing +
    +
    [Calls]
    • >>   drv_dsi_tx_set_video_timing +
    • >>   drv_dsi_tx_set_video_chunk +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_send_cmd (Thumb, 58 bytes, Stack size 24 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_send_cmd)) +

    [Stack]

    • Max Depth = 36
    • Call Chain = hal_dsi_tx_send_cmd ⇒ drv_dsi_tx_phy_status_stopstate ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   drv_dsi_tx_phy_status_stopstate +
    • >>   drv_dsi_tx_get_cmd_status +
    • >>   drv_dsi_tx_command_header +
    • >>   hal_internal_vsync_get_tx_state +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_write_cmd +
    • >>   hal_dsi_tx_ctrl_write_array_cmd +
    + +

    hal_dsi_tx_timing_info_update (Thumb, 142 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_timing_info_update)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = hal_dsi_tx_timing_info_update ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_d2f +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_dsi_tx_vid_mode_cal_timing (Thumb, 766 bytes, Stack size 96 bytes, hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing)) +

    [Stack]

    • Max Depth = 232
    • Call Chain = hal_dsi_tx_vid_mode_cal_timing ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_f2d +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_d2uiz +
    • >>   hal_intl_svs_init_tx +
    • >>   hal_intl_fb_get_user_flow +
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_idivmod +
    • >>   __aeabi_uidivmod +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_init_timing +
    + +

    hal_lcdc_init_cfg (Thumb, 62 bytes, Stack size 88 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_init_cfg)) +

    [Stack]

    • Max Depth = 320
    • Call Chain = hal_lcdc_init_cfg ⇒ hal_lcdc_postproc_config ⇒ hal_lcdc_upscaler_config ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_lcdc_config_int +
    • >>   hal_lcdc_postproc_config +
    • >>   hal_lcdc_displayproc_config +
    • >>   hal_lcdc_timinggen_config +
    • >>   hal_intl_fb_get_tx_fb_info +
    • >>   drv_lcdc_set_int +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_lcdc_init_clk (Thumb, 112 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_init_clk)) +

    [Stack]

    • Max Depth = 152
    • Call Chain = hal_lcdc_init_clk ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   drv_crgu_set_lcdc_clk +
    • >>   __aeabi_ui2f +
    • >>   __aeabi_f2d +
    • >>   __ARM_scalbnf +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_d2uiz +
    • >>   ceil +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_init +
    + +

    hal_lcdc_start (Thumb, 36 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_start)) +

    [Stack]

    • Max Depth = 368
    • Call Chain = hal_lcdc_start ⇒ drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_cmd_start +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_intl_fb_get_user_flow +
    • >>   drv_lcdc_vid_hw_start +
    +
    [Called By]
    • >>   hal_dsi_tx_ctrl_start +
    + +

    hal_lcdc_timinggen_config (Thumb, 60 bytes, Stack size 8 bytes, hal_dsi_tx_ctrl.o(i.hal_lcdc_timinggen_config)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_lcdc_timinggen_config ⇒ drv_lcdc_ctrl_flow +
    +
    [Calls]
    • >>   drv_lcdc_ctrl_flow +
    • >>   drv_lcdc_config_src_parameter +
    • >>   hal_intl_fb_get_memc_flow_mode +
    • >>   hal_internal_vsync_get_sync_line +
    • >>   drv_lcdc_set_prefetch +
    +
    [Called By]
    • >>   hal_lcdc_init_cfg +
    + +

    hal_tx_frame_rate_adjust (Thumb, 44 bytes, Stack size 16 bytes, hal_dsi_tx_ctrl.o(i.hal_tx_frame_rate_adjust)) +

    [Stack]

    • Max Depth = 448
    • Call Chain = hal_tx_frame_rate_adjust ⇒ hal_dsi_tx_ctrl_init ⇒ hal_dsi_tx_init_timing ⇒ hal_dsi_tx_cmd_mode_cal_timing ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   __aeabi_cfcmple +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   hal_dsi_tx_ctrl_init +
    • >>   hal_internal_vsync_set_tx_state +
    +
    [Address Reference Count : 1]
    • hal_dsi_tx_ctrl.o(i.hal_dsi_tx_vid_mode_cal_timing) +
    +

    drv_gpio_set_output_data (Thumb, 26 bytes, Stack size 0 bytes, hal_gpio.o(i.drv_gpio_set_output_data)) +

    [Called By]

    • >>   hal_gpio_set_output_data +
    • >>   hal_gpio_init_output +
    + +

    stop_sleep_cb (Thumb, 18 bytes, Stack size 0 bytes, hal_pwr.o(i.stop_sleep_cb)) +
    [Address Reference Count : 1]

    • hal_pwr.o(i.hal_pwr_set_stop_sleep_wakeup_pin) +
    +

    check_mipi_rx_tx_video_info (Thumb, 44 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.check_mipi_rx_tx_video_info)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = check_mipi_rx_tx_video_info +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_internal_vsync_init_tx +
    + +

    drv_rxbr_get_int_source (Thumb, 20 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.drv_rxbr_get_int_source)) +

    [Called By]

    • >>   rxbr_irq1_callback +
    + +

    rxbr_irq1_callback (Thumb, 496 bytes, Stack size 40 bytes, hal_internal_vsync.o(i.rxbr_irq1_callback)) +

    [Stack]

    • Max Depth = 400
    • Call Chain = rxbr_irq1_callback ⇒ drv_lcdc_cmd_start ⇒ drv_se_set_lcdc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_lcdc_cmd_start +
    • >>   drv_dsi_tx_phy_clock_lane_req_hs +
    • >>   drv_vidc_enable +
    • >>   drv_rxbr_set_inten +
    • >>   tau_log_printf +
    • >>   hal_intl_svs_set_rx_vtt +
    • >>   hal_intl_svs_handle +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    • >>   vpre_err_reset +
    • >>   soft_double_buffer_update +
    • >>   drv_rxbr_get_int_source +
    • >>   hal_intl_fb_get_user_flow +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    soft_double_buffer_update (Thumb, 56 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.soft_double_buffer_update)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = soft_double_buffer_update +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    soft_gen_te (Thumb, 86 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.soft_gen_te)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = soft_gen_te +
    +
    [Calls]
    • >>   soft_tear_adjust_line +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    soft_gen_te_double_buffer (Thumb, 202 bytes, Stack size 16 bytes, hal_internal_vsync.o(i.soft_gen_te_double_buffer)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = soft_gen_te_double_buffer +
    +
    [Calls]
    • >>   soft_tear_adjust_line +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    soft_pro_motion_init (Thumb, 46 bytes, Stack size 8 bytes, hal_internal_vsync.o(i.soft_pro_motion_init)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = soft_pro_motion_init +
    +
    [Calls]
    • >>   __aeabi_memclr4 +
    +
    [Called By]
    • >>   hal_internal_vsync_init_rx +
    • >>   hal_vsync_reset_lcdc_scaler +
    • >>   hal_internal_vsync_set_tx_state +
    + +

    soft_tear_adjust_line (Thumb, 26 bytes, Stack size 0 bytes, hal_internal_vsync.o(i.soft_tear_adjust_line)) +

    [Called By]

    • >>   soft_gen_te_double_buffer +
    • >>   soft_gen_te +
    + +

    vidc_callback (Thumb, 150 bytes, Stack size 24 bytes, hal_internal_vsync.o(i.vidc_callback)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = vidc_callback ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_vidc_set_irqen +
    • >>   tau_log_printf +
    • >>   drv_vidc_get_irq_status +
    • >>   drv_vidc_get_int_source +
    • >>   drv_vidc_clear_irq +
    • >>   drv_lcdc_function_disable +
    +
    [Address Reference Count : 1]
    • hal_internal_vsync.o(i.hal_internal_vsync_init_rx) +
    +

    vpre_err_reset (Thumb, 254 bytes, Stack size 64 bytes, hal_internal_vsync.o(i.vpre_err_reset)) +

    [Stack]

    • Max Depth = 64
    • Call Chain = vpre_err_reset +
    +
    [Calls]
    • >>   drv_crgu_set_reset +
    • >>   drv_vidc_reset +
    +
    [Called By]
    • >>   rxbr_irq1_callback +
    + +

    check_pkt_buf_rev (Thumb, 84 bytes, Stack size 24 bytes, hal_internal_dcs.o(i.check_pkt_buf_rev)) +

    [Stack]

    • Max Depth = 360
    • Call Chain = check_pkt_buf_rev ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   tau_log_printf +
    • >>   drv_rxbr_get_status0 +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    drv_rxbr_get_status0 (Thumb, 20 bytes, Stack size 0 bytes, hal_internal_dcs.o(i.drv_rxbr_get_status0)) +

    [Called By]

    • >>   VPRE_IRQn_Handler +
    • >>   check_pkt_buf_rev +
    + +

    hal_intl_dcs_rx_get_dcs_packet_data (Thumb, 782 bytes, Stack size 64 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_get_dcs_packet_data)) +

    [Stack]

    • Max Depth = 424
    • Call Chain = hal_intl_dcs_rx_get_dcs_packet_data ⇒ check_pkt_buf_rev ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_tx_command_put_payload +
    • >>   hal_dsi_rx_ctrl_dcs_async_handler +
    • >>   tau_log_printf +
    • >>   drv_dsi_rx_get_ddi_crc_en +
    • >>   dcs_packet_fifo_alloc +
    • >>   hal_intl_dcs_sw_filter_handle +
    • >>   check_pkt_buf_rev +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_packet +
    + +

    hal_intl_dcs_rx_receive_packet (Thumb, 122 bytes, Stack size 8 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_packet)) +

    [Stack]

    • Max Depth = 528
    • Call Chain = hal_intl_dcs_rx_receive_packet ⇒ hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   hal_intl_dcs_rx_receive_pps +
    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    • >>   drv_rxbr_clear_status0 +
    • >>   drv_rxbr_clear_pkt_buffer +
    +
    [Called By]
    • >>   VPRE_IRQn_Handler +
    + +

    hal_intl_dcs_rx_receive_pps (Thumb, 266 bytes, Stack size 160 bytes, hal_internal_dcs.o(i.hal_intl_dcs_rx_receive_pps)) +

    [Stack]

    • Max Depth = 520
    • Call Chain = hal_intl_dcs_rx_receive_pps ⇒ drv_dsc_dec_enable ⇒ drv_se_set_dsc ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   drv_dsi_rx_get_compression_en +
    • >>   drv_dsc_dec_enable +
    • >>   drv_crgu_enable_clock +
    • >>   tau_log_printf +
    • >>   check_pkt_buf_rev +
    • >>   drv_rxbr_clear_pkt_buffer +
    • >>   __aeabi_uidivmod +
    • >>   memcmp +
    • >>   __aeabi_memclr4 +
    • >>   __aeabi_memcpy4 +
    +
    [Called By]
    • >>   hal_intl_dcs_rx_receive_packet +
    + +

    hal_intl_dcs_sw_filter_handle (Thumb, 36 bytes, Stack size 0 bytes, hal_internal_dcs.o(i.hal_intl_dcs_sw_filter_handle)) +

    [Called By]

    • >>   hal_intl_dcs_rx_get_dcs_packet_data +
    + +

    ha_intl_fb_check_pu_size (Thumb, 58 bytes, Stack size 16 bytes, hal_internal_fb.o(i.ha_intl_fb_check_pu_size)) +

    [Stack]

    • Max Depth = 28
    • Call Chain = ha_intl_fb_check_pu_size ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_check_bandwidth (Thumb, 92 bytes, Stack size 40 bytes, hal_internal_fb.o(i.hal_intl_fb_check_bandwidth)) +

    [Stack]

    • Max Depth = 52
    • Call Chain = hal_intl_fb_check_bandwidth ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_internal_sync_get_hight_performan_mode +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_edge_resize (Thumb, 214 bytes, Stack size 48 bytes, hal_internal_fb.o(i.hal_intl_fb_edge_resize)) +

    [Stack]

    • Max Depth = 60
    • Call Chain = hal_intl_fb_edge_resize ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    hal_intl_fb_flow_control_adapter (Thumb, 110 bytes, Stack size 24 bytes, hal_internal_fb.o(i.hal_intl_fb_flow_control_adapter)) +

    [Stack]

    • Max Depth = 24
    • Call Chain = hal_intl_fb_flow_control_adapter +
    +
    [Called By]
    • >>   hal_intl_fb_cal_fb_info +
    + +

    svs_direct_mode_setting (Thumb, 154 bytes, Stack size 88 bytes, hal_internal_svs.o(i.svs_direct_mode_setting)) +

    [Stack]

    • Max Depth = 100
    • Call Chain = svs_direct_mode_setting ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   hal_intl_fb_get_rx_fb_info +
    • >>   drv_rxbr_hline_rcv1_cfg +
    • >>   drv_rxbr_clear_status0 +
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   svs_wait_start +
    + +

    svs_get_rel_intv (Thumb, 20 bytes, Stack size 8 bytes, hal_internal_svs.o(i.svs_get_rel_intv)) +

    [Stack]

    • Max Depth = 20
    • Call Chain = svs_get_rel_intv ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   __aeabi_uidivmod +
    +
    [Called By]
    • >>   svs_wait_start +
    • >>   svs_wait_fr_stab +
    • >>   svs_sync_handle +
    + +

    svs_sync_handle (Thumb, 158 bytes, Stack size 24 bytes, hal_internal_svs.o(i.svs_sync_handle)) +

    [Stack]

    • Max Depth = 128
    • Call Chain = svs_sync_handle ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_f2d +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_dadd +
    • >>   __aeabi_d2uiz +
    • >>   svs_get_rel_intv +
    +
    [Address Reference Count : 1]
    • hal_internal_svs.o(i.svs_wait_fr_stab) +
    +

    svs_wait_fr_stab (Thumb, 148 bytes, Stack size 16 bytes, hal_internal_svs.o(i.svs_wait_fr_stab)) +

    [Stack]

    • Max Depth = 352
    • Call Chain = svs_wait_fr_stab ⇒ tau_log_printf ⇒ tau_log_push_log ⇒ delayUs +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   drv_rxbr_frame_drop_cfg +
    • >>   tau_log_printf +
    • >>   __aeabi_f2uiz +
    • >>   svs_get_rel_intv +
    • >>   __aeabi_uidivmod +
    +
    [Address Reference Count : 1]
    • hal_internal_svs.o(i.svs_wait_start) +
    +

    svs_wait_start (Thumb, 250 bytes, Stack size 24 bytes, hal_internal_svs.o(i.svs_wait_start)) +

    [Stack]

    • Max Depth = 160
    • Call Chain = svs_wait_start ⇒ ceil ⇒ __aeabi_drsub ⇒ __aeabi_dadd ⇒ _double_epilogue ⇒ __aeabi_llsr +
    +
    [Calls]
    • >>   __aeabi_ui2f +
    • >>   __aeabi_fmul +
    • >>   __aeabi_f2d +
    • >>   hal_internal_vsync_get_tx_state +
    • >>   drv_rxbr_set_inten +
    • >>   drv_crgu_get_rxbr_clk +
    • >>   __aeabi_fdiv +
    • >>   __aeabi_d2uiz +
    • >>   drv_rxbr_hline_rcv1_cfg +
    • >>   svs_get_rel_intv +
    • >>   svs_direct_mode_setting +
    • >>   drv_rxbr_clear_status0 +
    • >>   ceil +
    +
    [Address Reference Count : 2]
    • hal_internal_svs.o(i.hal_intl_svs_deinit_rx) +
    • hal_internal_svs.o(i.hal_intl_svs_init_rx) +
    +

    drv_gpio_handle_int (Thumb, 30 bytes, Stack size 8 bytes, drv_gpio.o(i.drv_gpio_handle_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_gpio_handle_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   EXTI_INT7_IRQn_Handler +
    • >>   EXTI_INT6_IRQn_Handler +
    • >>   EXTI_INT5_IRQn_Handler +
    • >>   EXTI_INT4_IRQn_Handler +
    • >>   EXTI_INT3_IRQn_Handler +
    • >>   EXTI_INT2_IRQn_Handler +
    • >>   EXTI_INT1_IRQn_Handler +
    • >>   EXTI_INT0_IRQn_Handler +
    + +

    drv_timer_clear_status_flags (Thumb, 26 bytes, Stack size 8 bytes, drv_timer.o(i.drv_timer_clear_status_flags)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_timer_clear_status_flags ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    • >>   drv_timer_get_instance +
    +
    [Called By]
    • >>   drv_timer_handle_interrupt +
    + +

    drv_timer_handle_interrupt (Thumb, 54 bytes, Stack size 16 bytes, drv_timer.o(i.drv_timer_handle_interrupt)) +

    [Stack]

    • Max Depth = 44
    • Call Chain = drv_timer_handle_interrupt ⇒ drv_timer_set_compare_val ⇒ __aeabi_uidivmod +
    +
    [Calls]
    • >>   drv_timer_set_int +
    • >>   drv_timer_set_compare_val +
    • >>   drv_timer_clear_status_flags +
    +
    [Called By]
    • >>   TIMER3_IRQn_Handler +
    • >>   TIMER2_IRQn_Handler +
    • >>   TIMER1_IRQn_Handler +
    • >>   TIMER0_IRQn_Handler +
    + +

    drv_dsi_rx_get_color_bpp (Thumb, 62 bytes, Stack size 4 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_color_bpp)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = drv_dsi_rx_get_color_bpp ⇒ __ARM_common_switch8 +
    +
    [Calls]
    • >>   __ARM_common_switch8 +
    +
    [Called By]
    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    drv_dsi_rx_get_color_pcc (Thumb, 24 bytes, Stack size 0 bytes, drv_dsi_rx.o(i.drv_dsi_rx_get_color_pcc)) +

    [Called By]

    • >>   drv_dsi_rx_calc_ipi_tx_delay +
    + +

    drv_lcdc_clear_int (Thumb, 20 bytes, Stack size 8 bytes, drv_lcdc.o(i.drv_lcdc_clear_int)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = drv_lcdc_clear_int ⇒ drv_sys_cfg_clear_pending +
    +
    [Calls]
    • >>   drv_sys_cfg_clear_pending +
    +
    [Called By]
    • >>   drv_lcdc_set_int +
    + +

    __NVIC_DisableIRQ (Thumb, 26 bytes, Stack size 0 bytes, drv_rxbr.o(i.__NVIC_DisableIRQ)) +

    [Called By]

    • >>   drv_rxbr_enable_irq +
    + +

    __NVIC_EnableIRQ (Thumb, 18 bytes, Stack size 0 bytes, drv_rxbr.o(i.__NVIC_EnableIRQ)) +

    [Called By]

    • >>   drv_rxbr_enable_irq +
    + +

    drv_dma_get_int_source (Thumb, 16 bytes, Stack size 0 bytes, drv_dma.o(i.drv_dma_get_int_source)) +

    [Called By]

    • >>   DMA_IRQn_Handler +
    + +

    drv_uart_enable_clk (Thumb, 24 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_enable_clk)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_uart_enable_clk +
    +
    [Calls]
    • >>   drv_crgu_enable_clock +
    +
    [Called By]
    • >>   drv_uart_init +
    + +

    drv_uart_int_trans_handle (Thumb, 54 bytes, Stack size 8 bytes, drv_uart.o(i.drv_uart_int_trans_handle)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = drv_uart_int_trans_handle +
    +
    [Called By]
    • >>   UART_IRQn_Handler +
    + +

    _fp_digits (Thumb, 344 bytes, Stack size 64 bytes, printfa.o(i._fp_digits), UNUSED) +

    [Calls]

    • >>   __aeabi_dadd +
    • >>   __aeabi_dmul +
    • >>   __aeabi_cdrcmple +
    • >>   __aeabi_uldivmod +
    • >>   __aeabi_ddiv +
    • >>   __aeabi_d2ulz +
    +
    [Called By]
    • >>   _printf_core +
    + +

    _printf_core (Thumb, 1754 bytes, Stack size 128 bytes, printfa.o(i._printf_core), UNUSED) +

    [Calls]

    • >>   __aeabi_uidivmod +
    • >>   __aeabi_uldivmod +
    • >>   _printf_pre_padding +
    • >>   _printf_post_padding +
    • >>   _fp_digits +
    +
    [Called By]
    • >>   __0vsprintf +
    • >>   __0printf +
    + +

    _printf_post_padding (Thumb, 32 bytes, Stack size 24 bytes, printfa.o(i._printf_post_padding), UNUSED) +

    [Called By]

    • >>   _printf_core +
    + +

    _printf_pre_padding (Thumb, 44 bytes, Stack size 40 bytes, printfa.o(i._printf_pre_padding), UNUSED) +

    [Called By]

    • >>   _printf_core +
    + +

    _sputc (Thumb, 10 bytes, Stack size 0 bytes, printfa.o(i._sputc)) +

    [Called By]

    • >>   __0vsprintf +
    +
    [Address Reference Count : 1]
    • printfa.o(i.__0vsprintf) +

    +

    +Undefined Global Symbols +


    diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.lnp b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.lnp new file mode 100644 index 0000000..62b1259 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.lnp @@ -0,0 +1,10 @@ +--cpu Cortex-M0 +".\objects\main.o" +".\objects\p8p_demo.o" +"..\..\src\sdk\CVWL668\lib\CVWL668.lib" +".\objects\board.o" +".\objects\startup_armcm0.o" +--library_type=microlib --strict --scatter ".\Objects\WL668_P8P_TM667_ICNA3508_20240407.sct" +--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers +--list ".\Listings\WL668_P8P_TM667_ICNA3508_20240407.map" -o .\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf \ No newline at end of file diff --git a/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.sct b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.sct new file mode 100644 index 0000000..8775845 --- /dev/null +++ b/project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.sct @@ -0,0 +1,16 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM2 0x00010000 0x00010000 { ; load region size_region + ER_IROM2 0x00010000 0x00010000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x00070000 0x00008000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/project/WL668/Objects/WL668_WL668.dep b/project/WL668/Objects/WL668_WL668.dep new file mode 100644 index 0000000..656b544 --- /dev/null +++ b/project/WL668/Objects/WL668_WL668.dep @@ -0,0 +1,70 @@ +Dependencies for Project 'WL668', Target 'WL668': (DO NOT MODIFY !) +F (..\..\src\app\main.c)(0x660A99AE)(--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 -o .\objects\main.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\main.crf --depend .\objects\main.d) +I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5CEB79E2) +I (..\..\src\app\test_cfg_global.h)(0x660A9B22) +I (..\..\src\app\P8P\p8p_demo.h)(0x660A9B17) +I (..\..\src\common\tau_log.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5CEB79E4) +I (..\..\src\sdk\include\M0\ArmCM0.h)(0x65E142C4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h)(0x5C8B5FF6) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h)(0x5B971444) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h)(0x5BBD6B7A) +I (..\..\src\sdk\include\hal_system.h)(0x65E142C4) +I (..\..\src\common\tau_common.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x5CEB79D6) +I (..\..\src\sdk\include\hal_gpio.h)(0x65E142C4) +I (..\..\src\common\tau_device_datatype.h)(0x65E142C4) +I (..\..\src\board\board.h)(0x65E142C4) +I (..\..\src\app\module_demo\module_demo_main.h)(0x6513C194) +F (..\..\src\app\P8P\p8p_demo.c)(0x6614B87F)(--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 -o .\objects\p8p_demo.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\p8p_demo.crf --depend .\objects\p8p_demo.d) +I (..\..\src\app\P8P\p8p_demo.h)(0x660A9B17) +I (..\..\src\sdk\include\M0\ArmCM0.h)(0x65E142C4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h)(0x5C8B5FF6) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5CEB79E2) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h)(0x5B971444) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h)(0x5BBD6B7A) +I (..\..\src\common\tau_device_datatype.h)(0x65E142C4) +I (..\..\src\common\tau_common.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x5CEB79D6) +I (..\..\src\common\tau_log.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5CEB79E4) +I (..\..\src\common\tau_operations.h)(0x65E142C4) +I (..\..\src\common\tau_delay.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_dsi_rx_ctrl.h)(0x65E142C4) +I (..\..\src\common\tau_dsi_datatype.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_dsi_tx_ctrl.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_gpio.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_swire.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_timer.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_system.h)(0x65E142C4) +I (..\..\src\app\test_cfg_global.h)(0x660A9B22) +I (..\..\src\sdk\include\hal_pwr.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_pwm.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_crc.h)(0x65E6BB1A) +F (..\..\src\sdk\CVWL668\lib\CVWL668.lib)(0x65E142A8)() +F (..\..\src\board\board.c)(0x66120E49)(--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 -o .\objects\board.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\board.crf --depend .\objects\board.d) +I (..\..\src\board\board.h)(0x65E142C4) +I (..\..\src\sdk\include\hal_system.h)(0x65E142C4) +I (..\..\src\common\tau_common.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\math.h)(0x5CEB79D6) +I (..\..\src\sdk\include\hal_gpio.h)(0x65E142C4) +I (..\..\src\common\tau_device_datatype.h)(0x65E142C4) +I (..\..\src\common\tau_log.h)(0x65E142C4) +I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5CEB79E2) +I (C:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5CEB79E4) +I (..\..\src\sdk\include\M0\ArmCM0.h)(0x65E142C4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h)(0x5C8B5FF6) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h)(0x5B971444) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h)(0x5C8F4DD4) +I (C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h)(0x5BBD6B7A) +F (..\..\src\board\startup\startup_ARMCM0.s)(0x65E142C4)(--cpu Cortex-M0 --li -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_WL668 -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include --pd "__UVISION_VERSION SETA 528" --pd "_RTE_ SETA 1" --pd "ARMCM0 SETA 1" --list .\listings\startup_armcm0.lst --xref -o .\objects\startup_armcm0.o --depend .\objects\startup_armcm0.d) diff --git a/project/WL668/Objects/board.__i b/project/WL668/Objects/board.__i new file mode 100644 index 0000000..b2cdcc8 --- /dev/null +++ b/project/WL668/Objects/board.__i @@ -0,0 +1,6 @@ +--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\objects\board.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\board.crf --depend .\objects\board.d "..\..\src\board\board.c" \ No newline at end of file diff --git a/project/WL668/Objects/board.crf b/project/WL668/Objects/board.crf new file mode 100644 index 0000000..f9ffac5 Binary files /dev/null and b/project/WL668/Objects/board.crf differ diff --git a/project/WL668/Objects/board.d b/project/WL668/Objects/board.d new file mode 100644 index 0000000..7b9216a --- /dev/null +++ b/project/WL668/Objects/board.d @@ -0,0 +1,17 @@ +.\objects\board.o: ..\..\src\board\board.c +.\objects\board.o: ..\..\src\board\board.h +.\objects\board.o: ..\..\src\sdk\include\hal_system.h +.\objects\board.o: ..\..\src\common\tau_common.h +.\objects\board.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +.\objects\board.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h +.\objects\board.o: ..\..\src\sdk\include\hal_gpio.h +.\objects\board.o: ..\..\src\common\tau_device_datatype.h +.\objects\board.o: ..\..\src\common\tau_log.h +.\objects\board.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +.\objects\board.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +.\objects\board.o: ..\..\src\sdk\include\M0\ArmCM0.h +.\objects\board.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h +.\objects\board.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h +.\objects\board.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h +.\objects\board.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h +.\objects\board.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h diff --git a/project/WL668/Objects/board.o b/project/WL668/Objects/board.o new file mode 100644 index 0000000..66c7837 Binary files /dev/null and b/project/WL668/Objects/board.o differ diff --git a/project/WL668/Objects/main.__i b/project/WL668/Objects/main.__i new file mode 100644 index 0000000..91389a0 --- /dev/null +++ b/project/WL668/Objects/main.__i @@ -0,0 +1,6 @@ +--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\objects\main.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\main.crf --depend .\objects\main.d "..\..\src\app\main.c" \ No newline at end of file diff --git a/project/WL668/Objects/main.crf b/project/WL668/Objects/main.crf new file mode 100644 index 0000000..a84681b Binary files /dev/null and b/project/WL668/Objects/main.crf differ diff --git a/project/WL668/Objects/main.d b/project/WL668/Objects/main.d new file mode 100644 index 0000000..3f8e952 --- /dev/null +++ b/project/WL668/Objects/main.d @@ -0,0 +1,22 @@ +.\objects\main.o: ..\..\src\app\main.c +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdio.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdlib.h +.\objects\main.o: ..\..\src\app\test_cfg_global.h +.\objects\main.o: ..\..\src\app\P8P\p8p_demo.h +.\objects\main.o: ..\..\src\common\tau_log.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +.\objects\main.o: ..\..\src\sdk\include\M0\ArmCM0.h +.\objects\main.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h +.\objects\main.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h +.\objects\main.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h +.\objects\main.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h +.\objects\main.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h +.\objects\main.o: ..\..\src\sdk\include\hal_system.h +.\objects\main.o: ..\..\src\common\tau_common.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h +.\objects\main.o: ..\..\src\sdk\include\hal_gpio.h +.\objects\main.o: ..\..\src\common\tau_device_datatype.h +.\objects\main.o: ..\..\src\board\board.h +.\objects\main.o: ..\..\src\app\module_demo\module_demo_main.h diff --git a/project/WL668/Objects/main.o b/project/WL668/Objects/main.o new file mode 100644 index 0000000..7c58743 Binary files /dev/null and b/project/WL668/Objects/main.o differ diff --git a/project/WL668/Objects/p8p_demo.__i b/project/WL668/Objects/p8p_demo.__i new file mode 100644 index 0000000..71b66f4 --- /dev/null +++ b/project/WL668/Objects/p8p_demo.__i @@ -0,0 +1,6 @@ +--c99 --gnu -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections --asm --interleave --asm_dir ".\\Listings\\" -I ..\..\src -I ..\..\src\board -I ..\..\src\common -I ..\..\src\sdk\include -I ..\..\src\sdk\include\M0 -I ..\..\src\app -I ..\..\src\app\S8 -I ..\..\src\app\touch -I ..\..\src\app\module_demo -I ..\..\src\app\P8P +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +-D__UVISION_VERSION="528" -D_RTE_ -DARMCM0 +-o .\objects\p8p_demo.o --list_dir ".\\Listings\\" --list --omf_browse .\objects\p8p_demo.crf --depend .\objects\p8p_demo.d "..\..\src\app\P8P\p8p_demo.c" \ No newline at end of file diff --git a/project/WL668/Objects/p8p_demo.crf b/project/WL668/Objects/p8p_demo.crf new file mode 100644 index 0000000..491d190 Binary files /dev/null and b/project/WL668/Objects/p8p_demo.crf differ diff --git a/project/WL668/Objects/p8p_demo.d b/project/WL668/Objects/p8p_demo.d new file mode 100644 index 0000000..e930289 --- /dev/null +++ b/project/WL668/Objects/p8p_demo.d @@ -0,0 +1,28 @@ +.\objects\p8p_demo.o: ..\..\src\app\P8P\p8p_demo.c +.\objects\p8p_demo.o: ..\..\src\app\P8P\p8p_demo.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\M0\ArmCM0.h +.\objects\p8p_demo.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\core_cm0.h +.\objects\p8p_demo.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +.\objects\p8p_demo.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_version.h +.\objects\p8p_demo.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_compiler.h +.\objects\p8p_demo.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include\cmsis_armcc.h +.\objects\p8p_demo.o: C:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include\system_ARMCM0.h +.\objects\p8p_demo.o: ..\..\src\common\tau_device_datatype.h +.\objects\p8p_demo.o: ..\..\src\common\tau_common.h +.\objects\p8p_demo.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\math.h +.\objects\p8p_demo.o: ..\..\src\common\tau_log.h +.\objects\p8p_demo.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\string.h +.\objects\p8p_demo.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdarg.h +.\objects\p8p_demo.o: ..\..\src\common\tau_operations.h +.\objects\p8p_demo.o: ..\..\src\common\tau_delay.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_dsi_rx_ctrl.h +.\objects\p8p_demo.o: ..\..\src\common\tau_dsi_datatype.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_dsi_tx_ctrl.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_gpio.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_swire.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_timer.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_system.h +.\objects\p8p_demo.o: ..\..\src\app\test_cfg_global.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_pwr.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_pwm.h +.\objects\p8p_demo.o: ..\..\src\sdk\include\hal_crc.h diff --git a/project/WL668/Objects/p8p_demo.o b/project/WL668/Objects/p8p_demo.o new file mode 100644 index 0000000..bb3f1a4 Binary files /dev/null and b/project/WL668/Objects/p8p_demo.o differ diff --git a/project/WL668/Objects/startup_armcm0._ia b/project/WL668/Objects/startup_armcm0._ia new file mode 100644 index 0000000..77d6d22 --- /dev/null +++ b/project/WL668/Objects/startup_armcm0._ia @@ -0,0 +1,6 @@ +--cpu Cortex-M0 --li -g --apcs=interwork --pd "__MICROLIB SETA 1" +-I.\RTE\_WL668 +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include +-IC:\Users\Markin\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include +--pd "__UVISION_VERSION SETA 528" --pd "_RTE_ SETA 1" --pd "ARMCM0 SETA 1" +--list .\listings\startup_armcm0.lst --xref -o .\objects\startup_armcm0.o --depend .\objects\startup_armcm0.d "..\..\src\board\startup\startup_ARMCM0.s" \ No newline at end of file diff --git a/project/WL668/Objects/startup_armcm0.d b/project/WL668/Objects/startup_armcm0.d new file mode 100644 index 0000000..8dfed58 --- /dev/null +++ b/project/WL668/Objects/startup_armcm0.d @@ -0,0 +1 @@ +.\objects\startup_armcm0.o: ..\..\src\board\startup\startup_ARMCM0.s diff --git a/project/WL668/Objects/startup_armcm0.o b/project/WL668/Objects/startup_armcm0.o new file mode 100644 index 0000000..a763d5d Binary files /dev/null and b/project/WL668/Objects/startup_armcm0.o differ diff --git a/project/WL668/RTE/_WL668/RTE_Components.h b/project/WL668/RTE/_WL668/RTE_Components.h new file mode 100644 index 0000000..c72cd70 --- /dev/null +++ b/project/WL668/RTE/_WL668/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'WL668' + * Target: 'WL668' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM0.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/project/WL668/WL668.BAT b/project/WL668/WL668.BAT new file mode 100644 index 0000000..123124e --- /dev/null +++ b/project/WL668/WL668.BAT @@ -0,0 +1,15 @@ +SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Program Files\ImageMagick-7.1.0-Q16-HDRI;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\Tools\;C:\Program Files\nodejs\;D:\Tools\platform-tools;%Android%;C:\Program Files\Git\cmd;C:\Users\Markin\AppData\Local\Programs\Python\Python312\Scripts\;C:\Users\Markin\AppData\Local\Programs\Python\Python312\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\Markin\AppData\Local\Microsoft\WindowsApps;C:\Users\Markin\AppData\Roaming\npm;D:\Tools\platform-tools_r34.0.1-windows\platform-tools;C:\Users\Markin\AppData\Local\Programs\Microsoft VS Code\bin +SET CPU_TYPE=ARMCM0 +SET CPU_VENDOR=ARM +SET UV2_TARGET=WL668 +SET CPU_CLOCK=0x00B71B00 +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via "listings\main._ip" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via "listings\p8p_demo._ip" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\p8p_demo.__i" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via "listings\board._ip" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\board.__i" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\startup_armcm0._ia" +"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\WL668_P8P_TM667_ICNA3508_20240407.lnp" +"C:\Keil_v5\ARM\ARMCC\Bin\fromelf.exe" ".\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf" --i32combined --output ".\Objects\WL668_P8P_TM667_ICNA3508_20240407.hex" +fromelf --bin -o .\Objects\WL668_P8P_TM667_ICNA3508_20240407.bin .\Objects\WL668_P8P_TM667_ICNA3508_20240407.axf diff --git a/project/WL668/WL668.uvguix.Markin b/project/WL668/WL668.uvguix.Markin new file mode 100644 index 0000000..ae4f678 --- /dev/null +++ b/project/WL668/WL668.uvguix.Markin @@ -0,0 +1,1914 @@ + + + + -6.1 + +
    ### uVision Project, (C) Keil Software
    + + + + + + + + + + 38003 + Registers + 150 96 + + + 346 + Code Coverage + 994 160 + + + 204 + Performance Analyzer + 1154 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 85 85 85 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 304 + 512 + 1776 + 1320 + + + + 0 + + 1307 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000050000000000000001000000C9443A5C437573746F6D5CB4B4D0C55C574C3636385F506978656C20382050726F5F544D3636375F49434E41333530382852414D4C455353295F2043535436363536535F4F4C45445CB5F7CAD4B4FAC2EB5C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F4F4C45445F4648445F32303234303331355C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F32303234303330365FBCE6C8DD353630385C7372635C6170705C5038505C7038705F64656D6F2E63000000000A7038705F64656D6F2E6300000000C5D4F200FFFFFFFFC9443A5C437573746F6D5CB4B4D0C55C574C3636385F506978656C20382050726F5F544D3636375F49434E41333530382852414D4C455353295F2043535436363536535F4F4C45445CB5F7CAD4B4FAC2EB5C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F4F4C45445F4648445F32303234303331355C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F32303234303330365FBCE6C8DD353630385C7372635C6170705C5038505C7038705F64656D6F2E68000000000A7038705F64656D6F2E6800000000FFDC7800FFFFFFFFCC443A5C437573746F6D5CB4B4D0C55C574C3636385F506978656C20382050726F5F544D3636375F49434E41333530382852414D4C455353295F2043535436363536535F4F4C45445CB5F7CAD4B4FAC2EB5C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F4F4C45445F4648445F32303234303331355C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F32303234303330365FBCE6C8DD353630385C7372635C6170705C746573745F6366675F676C6F62616C2E680000000011746573745F6366675F676C6F62616C2E6800000000BECEA100FFFFFFFFC1443A5C437573746F6D5CB4B4D0C55C574C3636385F506978656C20382050726F5F544D3636375F49434E41333530382852414D4C455353295F2043535436363536535F4F4C45445CB5F7CAD4B4FAC2EB5C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F4F4C45445F4648445F32303234303331355C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F32303234303330365FBCE6C8DD353630385C7372635C6170705C6D61696E2E6300000000066D61696E2E6300000000F0A0A100FFFFFFFFC4443A5C437573746F6D5CB4B4D0C55C574C3636385F506978656C20382050726F5F544D3636375F49434E41333530382852414D4C455353295F2043535436363536535F4F4C45445CB5F7CAD4B4FAC2EB5C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F4F4C45445F4648445F32303234303331355C574C3636385F474F4F474C455038505F544D3636375F49434E41333530385F32303234303330365FBCE6C8DD353630385C7372635C626F6172645C626F6172642E630000000007626F6172642E6300000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000040100006600000000080000B2030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 040100004F00000090050000DE000000 + + + 16 + 040100006600000090050000F5000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000FD00000082030000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000FD00000082030000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000FD00000082030000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000FD00000082030000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000B3030000000800002E040000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001602000090050000B9020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B6030000FD07000015040000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 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 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000FD00000082030000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B6030000FD07000015040000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B6030000FD07000015040000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B6030000FD07000015040000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000B6030000FD07000015040000 + + + 16 + D80A0000EF000000F40B00002C030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 07010000660000008D050000C5000000 + + + 16 + D80A0000EF000000A00D00007E010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 93040000660000008D0500000D020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002E0400000008000041040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000002D0200008D050000A0020000 + + + 16 + D80A0000EF000000D80B0000C8010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF04010000DE00000090050000E2000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000040100006600000090050000F5000000040100004F00000090050000DE0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF8C0400004F0000009004000026020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000009004000066000000900500003D020000900400004F000000900500002602000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF000100004F000000040100009B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000000010000B2030000000000004F000000000100009B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000012020000900500001602000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002D02000090050000D0020000000000001602000090050000B902000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000016020000CC020000B902000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000009B030000000800009F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000B60300000008000045040000000000009F030000000800002E0400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2903 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001561705F6463735F636C6F636B5F706F735F666C6167960000000000000010001561705F6463735F636C6F636B5F706F735F666C6167127365745F6261636B6C696768745F5461736B09426F617264547970650E61705F626F6F7475705F666C61670E456E7465725F416F645F466C61671E68616C5F74657374626F785F72785F6669666F5F647261775F706978656C126170705F73797374656D5F70726F636573730B6C6F675F6C6576656C5F6510414D4F4C45445F49434E4133353038200F6170705F72785F6576656E745F63621270616E656C5F646973706C61795F646F6E650D6C696E655F7765696768745F650B675F73776972655F6F7574126170705F7365745F6463735F68775F61636B0A41505F54455F3630687A1D68616C5F6473695F72785F6374726C5F6372656174655F68616E646C6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 970 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000005574C3636389600000000000000010005574C363638000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 2048 + 1152 + + + + + + 1 + 0 + + 100 + 0 + + ..\..\src\app\P8P\p8p_demo.c + 55 + 1627 + 1651 + 1 + + 0 + + + ..\..\src\app\P8P\p8p_demo.h + 19 + 1 + 6 + 1 + + 0 + + + ..\..\src\app\test_cfg_global.h + 25 + 1 + 36 + 1 + + 0 + + + ..\..\src\app\main.c + 14 + 1 + 11 + 1 + + 0 + + + ..\..\src\board\board.c + 0 + 1 + 32 + 1 + + 0 + + + + +
    diff --git a/project/WL668/WL668.uvoptx b/project/WL668/WL668.uvoptx new file mode 100644 index 0000000..d22d640 --- /dev/null +++ b/project/WL668/WL668.uvoptx @@ -0,0 +1,272 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + WL668 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 7 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + + + + + 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 + + + + + + + + + + + + + app + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\src\app\main.c + main.c + 0 + 0 + + + 1 + 2 + 1 + 1 + 0 + 0 + ..\..\src\app\P8P\p8p_demo.c + p8p_demo.c + 0 + 0 + + + + + driver + 0 + 0 + 0 + 0 + + 2 + 3 + 4 + 0 + 0 + 0 + ..\..\src\sdk\CVWL668\lib\CVWL668.lib + CVWL668.lib + 0 + 0 + + + + + board + 0 + 0 + 0 + 0 + + 3 + 4 + 1 + 0 + 0 + 0 + ..\..\src\board\board.c + board.c + 0 + 0 + + + + + startup + 0 + 0 + 0 + 0 + + 4 + 5 + 2 + 0 + 0 + 0 + ..\..\src\board\startup\startup_ARMCM0.s + startup_ARMCM0.s + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/project/WL668/WL668.uvprojx b/project/WL668/WL668.uvprojx new file mode 100644 index 0000000..beac7ba --- /dev/null +++ b/project/WL668/WL668.uvprojx @@ -0,0 +1,461 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + WL668 + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0 + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + WL668_P8P_TM667_ICNA3508_20240407 + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 1 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin -o .\Objects\@L.bin .\Objects\@L.axf + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 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 + 1 + 1 + "Cortex-M0" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 16 + 1 + 1 + 0 + 0 + 4 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x2000 + + + 1 + 0x10000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x70000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\src;..\..\src\board;..\..\src\common;..\..\src\sdk\include;..\..\src\sdk\include\M0;..\..\src\app;..\..\src\app\S8;..\..\src\app\touch;..\..\src\app\module_demo;..\..\src\app\P8P + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + + app + + + main.c + 1 + ..\..\src\app\main.c + + + p8p_demo.c + 1 + ..\..\src\app\P8P\p8p_demo.c + + + + + driver + + + CVWL668.lib + 4 + ..\..\src\sdk\CVWL668\lib\CVWL668.lib + + + + + board + + + board.c + 1 + ..\..\src\board\board.c + + + + + startup + + + startup_ARMCM0.s + 2 + ..\..\src\board\startup\startup_ARMCM0.s + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + RTE\Device\ARMCM0\startup_ARMCM0.s + + + + + + RTE\Device\ARMCM0\system_ARMCM0.c + + + + + + + +
    diff --git a/project/WL668T/WL668T.uvoptx b/project/WL668T/WL668T.uvoptx new file mode 100644 index 0000000..d331fc9 --- /dev/null +++ b/project/WL668T/WL668T.uvoptx @@ -0,0 +1,472 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + WL668T + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 7 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + + + + + + + + + + + BIN\UL2CM3.DLL + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + + + + + 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 + + + + + + + + + + + + + app + 1 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\src\app\main.c + main.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\src\app\touch\app_tp_transfer.c + app_tp_transfer.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\src\app\S8\app_tp_for_custom_s8.c + app_tp_for_custom_s8.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\src\app\S8\s8_demo.c + s8_demo.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\src\app\Mi12Lite\Mi12Lite.c + Mi12Lite.c + 0 + 0 + + + + + driver + 1 + 0 + 0 + 0 + + 2 + 6 + 4 + 0 + 0 + 0 + ..\..\src\sdk\CVWL668T\lib\CVWL668T.lib + CVWL668T.lib + 0 + 0 + + + + + board + 1 + 0 + 0 + 0 + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\src\board\board.c + board.c + 0 + 0 + + + + + startup + 1 + 0 + 0 + 0 + + 4 + 8 + 2 + 0 + 0 + 0 + ..\..\src\board\startup\startup_ARMCM0.s + startup_ARMCM0.s + 0 + 0 + + + + + modules_demo + 0 + 0 + 0 + 0 + + 5 + 9 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_crc.c + demo_hal_crc.c + 0 + 0 + + + 5 + 10 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_dsi_rx.c + demo_hal_dsi_rx.c + 0 + 0 + + + 5 + 11 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_dsi_tx.c + demo_hal_dsi_tx.c + 0 + 0 + + + 5 + 12 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_flash.c + demo_hal_flash.c + 0 + 0 + + + 5 + 13 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_gpio.c + demo_hal_gpio.c + 0 + 0 + + + 5 + 14 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_i2c.c + demo_hal_i2c.c + 0 + 0 + + + 5 + 15 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_spi.c + demo_hal_spi.c + 0 + 0 + + + 5 + 16 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_pwm.c + demo_hal_pwm.c + 0 + 0 + + + 5 + 17 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_pwr.c + demo_hal_pwr.c + 0 + 0 + + + 5 + 18 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_swire.c + demo_hal_swire.c + 0 + 0 + + + 5 + 19 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_uart.c + demo_hal_uart.c + 0 + 0 + + + 5 + 20 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\demo_hal_wdg.c + demo_hal_wdg.c + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + ..\..\src\app\module_demo\module_demo_main.c + module_demo_main.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/project/WL668T/WL668T.uvprojx b/project/WL668T/WL668T.uvprojx new file mode 100644 index 0000000..43ba80b --- /dev/null +++ b/project/WL668T/WL668T.uvprojx @@ -0,0 +1,546 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + WL668T + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 + + + ARMCM0 + ARM + ARM.CMSIS.5.5.1 + http://www.keil.com/pack/ + IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) + 0 + $$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + WL668T_demo + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 1 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin -o .\Objects\@L.bin .\Objects\@L.axf + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0 + SARMCM3.DLL + + TARMCM1.DLL + -pCM0 + + + + 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 + 1 + 1 + "Cortex-M0" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 16 + 1 + 1 + 0 + 0 + 4 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x20000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x2000 + + + 1 + 0x10000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x70000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\src;..\..\src\board;..\..\src\common;..\..\src\sdk\include;..\..\src\sdk\include\M0;..\..\src\app;..\..\src\app\S8;..\..\src\app\touch;..\..\src\app\module_demo;..\..\src\app\Mi12Lite + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + + + + + + + + + + app + + + main.c + 1 + ..\..\src\app\main.c + + + app_tp_transfer.c + 1 + ..\..\src\app\touch\app_tp_transfer.c + + + app_tp_for_custom_s8.c + 1 + ..\..\src\app\S8\app_tp_for_custom_s8.c + + + s8_demo.c + 1 + ..\..\src\app\S8\s8_demo.c + + + Mi12Lite.c + 1 + ..\..\src\app\Mi12Lite\Mi12Lite.c + + + + + driver + + + CVWL668T.lib + 4 + ..\..\src\sdk\CVWL668T\lib\CVWL668T.lib + + + + + board + + + board.c + 1 + ..\..\src\board\board.c + + + + + startup + + + startup_ARMCM0.s + 2 + ..\..\src\board\startup\startup_ARMCM0.s + + + + + modules_demo + + + demo_hal_crc.c + 1 + ..\..\src\app\module_demo\demo_hal_crc.c + + + demo_hal_dsi_rx.c + 1 + ..\..\src\app\module_demo\demo_hal_dsi_rx.c + + + demo_hal_dsi_tx.c + 1 + ..\..\src\app\module_demo\demo_hal_dsi_tx.c + + + demo_hal_flash.c + 1 + ..\..\src\app\module_demo\demo_hal_flash.c + + + demo_hal_gpio.c + 1 + ..\..\src\app\module_demo\demo_hal_gpio.c + + + demo_hal_i2c.c + 1 + ..\..\src\app\module_demo\demo_hal_i2c.c + + + demo_hal_spi.c + 1 + ..\..\src\app\module_demo\demo_hal_spi.c + + + demo_hal_pwm.c + 1 + ..\..\src\app\module_demo\demo_hal_pwm.c + + + demo_hal_pwr.c + 1 + ..\..\src\app\module_demo\demo_hal_pwr.c + + + demo_hal_swire.c + 1 + ..\..\src\app\module_demo\demo_hal_swire.c + + + demo_hal_uart.c + 1 + ..\..\src\app\module_demo\demo_hal_uart.c + + + demo_hal_wdg.c + 1 + ..\..\src\app\module_demo\demo_hal_wdg.c + + + module_demo_main.c + 1 + ..\..\src\app\module_demo\module_demo_main.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + RTE\Device\ARMCM0\startup_ARMCM0.s + + + + + + RTE\Device\ARMCM0\system_ARMCM0.c + + + + + + + +
    diff --git a/project/请先读我(已更新20230927).txt b/project/请先读我(已更新20230927).txt new file mode 100644 index 0000000..9bb028c --- /dev/null +++ b/project/请先读我(已更新20230927).txt @@ -0,0 +1,11 @@ +1. 此目录下所有project文件仅为链接文件(使用宏定义和库文件区分) + +2. 强烈建议将不使用的芯片型号文件夹删除,仅保留使用的芯片型号文件夹,以免串烧导致芯片烧坏 + +3. 如若更换芯片,仅需将提供的原工程下特定型号文件夹拷贝到模板工程,删除原芯片project下原型号文件夹,重新编译即可 + 如原来使用668芯片,后面更换为668T芯片,仅需把客户工程project下668文件夹删除,重新从提供的源工程下的668T文件夹拷贝到客户工程project下,打开重新编译即可 + +注:SDK每次更新会在demo.c中增加代码或注释,请自行阅读。 + + +第三代产品包括:WL668,668T,468 \ No newline at end of file diff --git a/src/app/P8P/p8p_demo.c b/src/app/P8P/p8p_demo.c new file mode 100644 index 0000000..a35286f --- /dev/null +++ b/src/app/P8P/p8p_demo.c @@ -0,0 +1,2000 @@ +/******************************************************************************* +* +* File: p8p_demo.c +* Description: 系统测试文件 +* Version: V0.1 +* Date: 2020-02-22 +* Author: Tempest + *******************************************************************************/ +#include "p8p_demo.h" +#include "ArmCM0.h" +#include "tau_device_datatype.h" +#include "tau_log.h" +#include "tau_operations.h" +#include "tau_common.h" +#include "tau_delay.h" +#include "hal_dsi_rx_ctrl.h" +#include "hal_dsi_tx_ctrl.h" +#include "hal_swire.h" +#include "hal_timer.h" +#include "hal_system.h" +#include "hal_gpio.h" +#include "test_cfg_global.h" +#include "hal_pwr.h" +#include "hal_pwm.h" +#include "hal_crc.h" + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "p8p" + +#if _DEMO_GOOGLE_P8P_EN + +/******************** FEATURE开关 ********************/ +#define TOUCH_ENABLE false /* Touch转换开关 */ +#define RX_START_WITHOUT_RST true /* 不等待AP RESET直接启动RX,仅作为调试使用 */ +#define RX_WAIT_TEAR_ON false /* 等待AP_TEAR_ON */ +#define RX_RESOLUTION_CHANGE_ENABLE true /* 支持分辨率切换开关, AP存在分辨率切换时需要打开 */ +#define RX_READ_HW_ACK false /* AP DCS读命令使用硬件回复 */ +#define TX_START_AFTER_APRST false /* 等待AP_reset 后做Panel初始化, 用于热拔插电源不稳定导致初始化失败 */ +#define TX_USE_CMD_MODE false /* command mode输出开关 配置为True时需要把TD TE与 AP TE 接一起*/ +#define TX_CMD_MODE_WITHOUT_TE false /* 屏端TE直接输出给AP,Scaler不看TE信号,AP每输入一帧输出一帧(C2C 60Hz->60Hz) */ +#define AP_SWIRE_OUTPUT true /* swire信号输出,OLED项目配置 */ +#define ANALOG_PWM_OUTPUT false /* 模拟PWM 调光开关 */ +#define SHARE_FLASH_ENABLE false /* 共享flash开关 */ +/*****************************************************/ + +/******************** 输出屏幕选择 ********************/ +#define AMOLED_ICNA3508 1 /* 4lane FHD Panel */ +/*****************************************************/ + +/****************** 系统相关参数配置 ******************/ +#define MAIN_POWER_SELECT PWR_SEL_VCC /* 主供电电源选择 */ +#define SLEEP_MODE_POWER PWR_SLEEP_IN_IOV18 //PWR_SLEEP_IN_TP18 /* 息屏电源选择 */ +#define SLEEP_MODE_SELECT PWR_DEEP_SLEEP_MODE //PWR_DEEP_SLEEP_MODE //PWR_NORMAL_SLEEP_MODE // /* sleep mode 配置 */ +#define SWIRE_DEFAULT_PULSE 31 // 41 //31 /* SWIRE 波形配置 */ +#define PWM_FREQUENCY 30000 /* PWM输出频率30Khz */ +#define PWM_DUTY_STEP 255 /* PWM调光阶数255阶 */ +/*****************************************************/ + +/********************RX 基本参数配置*******************/ +//AP MIPI数据信息 +/* 输入分辨率 */ +#define INPUT_WIDTH 1344 +#define INPUT_HEIGHT 2992 +/* 输入 MIPI lane rate,需要正确配置,可50M step调整 */ +#define INPUT_MIPI_LANE_RATE 1600000000 +/* 输入图像格式 */ +#define INPUT_COLOR_MODE DSI_RGB888 +/* 输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) */ +#define INPUT_DATA_MODE DSI_DATA_CMD_MODE +/* 输入mipi lane数量(DSI_RX_LANE_x x为1-4) */ +#define INPUT_MIPI_LANE_NUM DSI_LANE_4 +/* 输入为video mode 时数据格式 */ +#define INPUT_VIDEO_MODEL DSI_NONBURST_EVENT +/* 输入虚拟通道(0-3) */ +#define INPUT_VC DSI_VC_0 +/* 输入的帧率(60/90/120/144Hz) */ +#define INPUT_FRAME_RATE DSI_FRAME_RATE_120HZ +/* 输入数据是否DSC压缩 */ +#define INPUT_COMPRESS true +/*****************************************************/ + +/********************TX 基本参数配置*******************/ +#if AMOLED_ICNA3508 +//almoled NT37280输出MIPI数据信息 +/* 输出分辨率配置 */ +#define OUTPUT_WIDTH 1080 +#define OUTPUT_HEIGHT 2400 +/* 输出虚拟通道(0-3) */ +#define OUTPUT_VC DSI_VC_0 +/* 输出mipi lane数量(DSI_RX_LANE_x x为1-4) */ +#define OUTPUT_LANE_NUMBER DSI_LANE_4 +/* 输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) */ +#if TX_USE_CMD_MODE +#define OUTPUT_DATA_MODE DSI_DATA_CMD_MODE +#else +#define OUTPUT_DATA_MODE DSI_DATA_VIDEO_MODE +#endif +/* 输出为video mode时的数据格式 */ +#define OUTPUT_VIDEO_MODEL DSI_BURST_MODE +/* 输出 VSA */ +#define OUTPUT_VSA 1 //1 +/* 输出 VBP */ +#define OUTPUT_VBP 19 //19 +/* 输出 VBP */ +#define OUTPUT_VFP 12 //12 +/* 输出 VSA */ +#define OUTPUT_HSA 1 +/* 输出 HBP */ +#define OUTPUT_HBP 27 +/* 输出 HFP */ +#define OUTPUT_HFP 77 +/* 初始化模式命令传输类型 LP/HS */ +#define TX_INIT_TYPE DSI_CMD_TX_LP +#endif +/******************************************************/ + +#if TOUCH_ENABLE +#include "app_tp_transfer.h" +#endif + +/* 全局handle */ +static hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = NULL; +static hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = NULL; + +/* 屏初始化完成标志位 */ +static bool panel_display_done = false; +static bool sg_system_resume = false; +static bool sg_system_suspend = false; +static bool sg_exit_idle_mode_flag = false; + +static volatile bool g_resolution_change = false; +static uint32_t pps_renew_flag = 0; +static uint32_t pwr_rst_flag = 0; + +#if RX_WAIT_TEAR_ON +static bool sg_ap_set_tear_on = false; +#endif +#if TX_START_AFTER_APRST +static bool sg_tx_start_in_process = false; +#endif + +uint16_t rd_51_val,rd_51_val2; + +/* AP reset 回调函数声明 */ +static void ap_rstn_pull_high_cb(void *data); +static void ap_rstn_pull_down_cb(void *data); +static void app_mipi_rx_start_cb(void *data); + + +/*************************DCS 命令处理函数 BEGIN*************************/ +#if RX_READ_HW_ACK +/** +* @brief 配置AP硬件回读 +* @param none +* @retval none +*/ +static void app_set_dcs_hw_ack() +{ + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE0, DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, 0xFA, 1, 0x00); +} +#endif +/** +* @brief ap 读回调函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +{ + if (dcs_cmd == 0x04) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 3, 0x0A,0x60,0x20); + } + else if (dcs_cmd == 0xa1) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 13, 0x0C,0x21,0x0C,0xC6,0x01,0xF3,0xAA,0x11,0x06,0x2B,0x25,0x21,0xF6); + } + else if (dcs_cmd == 0xDA) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x0A); + } + else if (dcs_cmd == 0xDB) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x68); + } + else if (dcs_cmd == 0xDC) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0x07); + } + else if (dcs_cmd == 0xD6) + { + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_LONG_RESPONSE, + DSI_VC_0, + 5, 0xF0, 0xEA, 0x85, 0x61, 0x86); + } + else + { + uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle); + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, 0); + TAU_LOGD("r[%x] [%d] err!!!!!!\n", dcs_cmd, return_size); + } + +// TAU_LOGD("r %x\n",dcs_cmd); + return true; +} + +uint8_t pps[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x0B,0xB0, + 0x05,0x40,0x00,0xBB,0x02,0xA0,0x02,0xA0, + 0x02,0x00,0x02,0x50,0x00,0x20,0x14,0x39, + 0x00,0x09,0x00,0x0C,0x00,0x85,0x00,0x70, + 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, + 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, + 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, + 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, + 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, + 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, + 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +uint8_t pps_fhd[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x08,0xC4, + 0x03,0xF0,0x00,0xBB,0x01,0xF8,0x01,0xF8, + 0x02,0x00,0x01,0xF8,0x00,0x20,0x11,0x82, + 0x00,0x07,0x00,0x0C,0x00,0x85,0x00,0x96, + 0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00, + 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38, + 0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B, + 0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, + 0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8, + 0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6, + 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + + +#if RX_RESOLUTION_CHANGE_ENABLE +/* PPS update callback 用于分辨率切换case */ +static bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height) +{ +// for (uint8_t i =0; i< 128; i++) +// { +// TAU_LOGD("PPS_0A[i]=[0x%02X]\n",i,pps[i]); +// } + + /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ + // hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); + if (pic_width != g_rx_ctrl_handle->base_info.src_w || pic_height != g_rx_ctrl_handle->base_info.src_h) + { + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); + /* PPS Update 且分辨率发生变化 */ + g_rx_ctrl_handle->base_info.src_w = pic_width; + g_rx_ctrl_handle->base_info.src_h = pic_height; + /* 注意部分基板更新PPS前不发 Compression Mode Command的情况 */ + g_rx_ctrl_handle->compress_en = true; + g_resolution_change = true; + if(pic_width > 720) + { + g_tx_ctrl_handle->base_info.src_w = pic_width; + g_tx_ctrl_handle->base_info.src_h = pic_height; + } +// hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x22); // ic刷黑处理 +// delayMs(5); + +// hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + // hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x13); // 退出刷黑 + } + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + //TAU_LOGD("PPS Update[%d][%d] [%d][%d]\n", pic_width, pic_height, g_rx_ctrl_handle->base_info.src_w, g_rx_ctrl_handle->base_info.src_h); + return true; +} +#endif + + + +/** +* @brief ap display on处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + + if(g_resolution_change) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + g_resolution_change = false; + TAU_LOGD("pps_update_1\r\n"); + } +// TAU_LOGD("disp on"); +// if (start_display_on == false){ + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x29); +// } + TAU_LOGD("disp on \n"); + return true; +} + + +void REG_51_OFF_output(uint16_t REG_51_VALUE) +{ + uint8_t i; + uint16_t REG_51; + + + + for (i =0; i< 50; i++) + { + REG_51=REG_51_VALUE*(50-i)/50; + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, REG_51>>8, REG_51&0x00FF);; + delayMs(17); + // TAU_LOGD("reg_51_off[0x%04X]\n",REG_51); + } + +} + +/** +* @brief ap display off处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ +#if ANALOG_PWM_OUTPUT + hal_pwm_enable(false); +#endif + + TAU_LOGD("disp off %d\n", panel_display_done); + return true; +} + + +/***************************************************************************** +*GPIO发送swire波形 +*flag: =0, SWIRE=0; =1,仅发送SWIRE信号; =2, 先置高再发SWIRE信号 +*num: 发几个脉冲 +*注意FLAG=1时无GPIO初始化!!!!!! +*****************************************************************************/ +void Gpio_swire_output(uint8_t flag, uint8_t num) +{ + uint8_t ii; + + if (flag) + { + if (flag ==2) + { + hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); + delayMs(2); + } + for (ii =0; ii< num; ii++) + { + hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_LOW); + delayUs(10); + hal_gpio_set_output_data(IO_PAD_AP_SWIRE, IO_LVL_HIGH); + delayUs(9); + } + } + else + { + hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_LOW); + } +} + + + +/** +* @brief ap enter sleep mode处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x28); + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_STOP_MODE); + delayMs(10); + + // delayMs(10); +#if AP_SWIRE_OUTPUT + /* Swire close */ + hal_swire_enable(false); + delayMs(10); + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x10); + delayMs(20); + /* AVDD_EN close*/ + hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_LOW); +#endif + /* Wait AP reset down*/ + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_down_cb, DETECT_LOW_LVL); + // sg_system_suspend=true; + TAU_LOGD("enter sleep mode\n"); +// delayMs(500); + return true; +} + +/** +* @brief ap exit sleep mode处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ +//#if AP_SWIRE_OUTPUT +// /* AVDD 上电, 用于解决息屏开屏PPS不更新问题 */ +// hal_gpio_set_output_data(IO_PAD_AP_PWMEN, IO_LVL_HIGH); +//#endif + +#if TX_START_AFTER_APRST + if (panel_display_done == false) + { + sg_tx_start_in_process = true; + } +#endif + + TAU_LOGD("exit sleep mode \n"); + + return true; +} + + + +/** +* @brief 调光处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ + +uint8_t value_51H,value_51L; +static bool reg53_E8_fg=0; +static bool ap_dcs_set_backlight(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + //手机端0xC4~CEB(2043) 映射0x9FF +#if 0 + value_51H = dcs_packet->packet_param[0]; + value_51L = dcs_packet->packet_param[1]; + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, value_51H, value_51L); +#else + rd_51_val = dcs_packet->packet_param[0]; + rd_51_val <<=8; + rd_51_val |= dcs_packet->packet_param[1]; + +// rd_51_val2 = (rd_51_val-0x04)*2555/2043+0x04; //0x9FF max + if((rd_51_val >=0x00)&&(rd_51_val <= 0xFFF) ){ + + rd_51_val2 = (rd_51_val-0xC4)*2555/3889+0x04; //0x9FF max + + } + else if(rd_51_val >0xFFF) { + + rd_51_val2 = 0x9FF; + + } + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, rd_51_val2>>8, rd_51_val2&0x00FF); +#endif + // TAU_LOGD("AP_51[0x%04X],IC_51[0x%04X]\n",rd_51_val,rd_51_val2); + return true; +} + +#if RX_WAIT_TEAR_ON +/** +* @brief ap set tear on 处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_tear_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + TAU_LOGD("ap_set_tear_on\n"); + sg_ap_set_tear_on = true; + if (panel_display_done == false) + { + TAU_LOGD("gen a tear\n"); + hal_dsi_tx_ctrl_gen_a_tear_signal(); + } + else + { + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + } + return true; +} + +/** +* @brief ap set tear off 处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_tear_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + TAU_LOGD("ap_set_tear_off \n"); + sg_ap_set_tear_on = false; + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_USER_MODE); + return true; +} +#endif + +/** +* @brief 护眼模式回调函数 +* @param rx_ctrl_handle: dsi rx handle; +* dcs packet: dcs_packet +* @retval true/false +*/ +static bool ap_dcs_set_exit_idle_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + sg_exit_idle_mode_flag = true; + hal_dsi_rx_ctrl_set_hw_cmd_filter(g_rx_ctrl_handle, HAL_RX_DCS_FILTER_B, 0x2C, 0x2C); + TAU_LOGD("exit idle mode,skip 0x2C\n"); + return true; +} + +#define TE_TIMER TIMER_NUM2 +static void soft_te_timer_cb(void *data) +{ + /* + S8 的屏接的是TP1.8V, AC 启动后需要等到TP1.8 起来后再初始化屏, 所以在TP 起来前需要通过软件产生TE给手机,避免手机卡死 + */ +// if (panel_display_done == false) +// { + hal_dsi_tx_ctrl_gen_a_tear_signal(); + hal_timer_start(TE_TIMER, 8, soft_te_timer_cb, NULL); +// } +// else +// { +// hal_dsi_rx_ctrl_set_hw_tear_mode(g_rx_ctrl_handle); +// } +} + +static void soft_te_timer_init() +{ +// TAU_LOGD("soft_te_timer_init"); + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); + hal_timer_init(TE_TIMER); + hal_timer_start(TE_TIMER, 1, soft_te_timer_cb, NULL); +} + +/** +* @brief 帧率切换处理函数 +* @param handler:rx_ctrl_handle +* dcs_packet: dcs 命令 +* @retval true/false +*/ +static bool ap_dcs_set_frame_change(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + if (dcs_packet->param_length == 1) + { + if (dcs_packet->packet_param[0] == 0x18) + { + // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle,TE_USER_MODE); + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + } + else + { + // soft_te_timer_init(); + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_120HZ_MODE); + } + } + // TAU_LOGD("frame_change %x ,size %d, data %d\n", dcs_packet->dcs_command, dcs_packet->param_length, dcs_packet->packet_param[0]); + return true; +} + +static bool ap_set_FPS_53(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + uint8_t value_53 =0; + + value_53 = dcs_packet->packet_param[0]; + + if(value_53 == 0x30) // AP FPS ON + { + + hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x11, 0xCF, 0xFF); // DDIC FPS ON + + } + else if(value_53 == 0x20) // AP FPS OFF + { + + hal_dsi_tx_ctrl_write_cmd( 0x39, 0, 4, 0x97, 0x00, 0xCF, 0xFF); // DDIC FPS OFF + + + } + +// TAU_LOGD("B1[%x]", value_b1); + return true; +} + +/*************************DCS 命令处理函数 END*************************/ + +/* 客制化DCS command 处理函数表格 */ +static const hal_dcs_execute_entry_t g_cus_rx_dcs_execute_table[] = +{ + {DCS_SET_DISPLAY_ON, ap_dcs_set_display_on, false}, + {DCS_SET_DISPLAY_OFF, ap_dcs_set_display_off, true}, + {0x51, ap_dcs_set_backlight, false}, + {0x53, ap_set_FPS_53, true}, //FPS Switch: P6P-0xB1; P7P-0x53 + {DCS_ENTER_SLEEP_MODE, ap_dcs_set_enter_sleep_mode, true}, + {DCS_EXIT_SLEEP_MODE, ap_dcs_set_exit_sleep_mode, true}, + {0x60, ap_dcs_set_frame_change, true}, +#if RX_WAIT_TEAR_ON + {DCS_SET_TEAR_ON, ap_dcs_set_tear_on, true}, + {DCS_SET_TEAR_OFF, ap_dcs_set_tear_off, true}, +#endif + {0, NULL, false} //{0,NULL,false} 数组最后一个固定成员,作为table结尾的判断标准 +}; + +/** +* @brief panel reset +* @param none +* @retval none +*/ +static void app_tx_panel_reset(void) +{ +#if SHARE_FLASH_ENABLE + hal_flash_share_mode(true); +#endif + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); + delayMs(10); + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_LOW); + delayMs(10); + hal_gpio_set_output_data(IO_PAD_TD_RSTN, IO_LVL_HIGH); + delayMs(40); +} + +#if PANEL_INIT_CODE_ARRAY +static void send_panel_init_code(uint32_t size, uint8_t * data) +{ + uint32_t data_offeset = 0; + uint8_t data_type; + uint8_t vc; + uint8_t data_size; + uint8_t * p_data; + + while(data_offeset < size) + { + data_type = data[data_offeset]; + vc = data[data_offeset + 1]; + data_size = data[data_offeset + 2]; + p_data = &data[data_offeset + 3]; + hal_dsi_tx_ctrl_write_array_cmd(data_type, vc, data_size, p_data); + data_offeset = data_offeset + data_size + 3; + delayUs(50); + } +} + +const uint8_t panel_init_code[] = { +#if 1 +0x39,0,3,0x9C,0xA5,0xA5, +0x39,0,3,0xFD,0x5A,0x5A, +0x39,0,2,0x9F,0x0F, +0x39,0,2,0xB3,0x00, +0x39,0,2,0xD7,0x11, +0x39,0,2,0x9F,0x01, +0x39,0,4,0xB2,0x5A,0x04,0xAF, +0x39,0,36,0xB3,0x00,0xBA,0x00,0x14,0x0C,0x22,0x00,0xBA,0x30,0x14,0x2C,0x00,0x00,0xBA,0x90,0x14,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x00,0x14,0x0C,0x44,0x1C,0x1C,0x1C,0x1C,0x1C, +0x39,0,19,0xCD,0x06,0x1F,0x1F,0x06,0x00,0x09,0x00,0x96,0x1F,0x03,0x28,0x00,0x96,0x1F,0x09,0x46,0x00,0x96, +0x39,0,2,0xD0,0x01, +0x39,0,3,0xE2,0x46,0x20, +0x39,0,3,0xEA,0x04,0x0B, +0x39,0,9,0xEE,0x40,0x38,0x28,0x28,0x28,0x28,0x28,0xC2,//add for ICNA5608 +0x39,0,2,0x9F,0x02, +0x39,0,26,0xB2,0x00,0xC9,0x32,0x10,0x11,0x12,0x12,0x00,0x08,0x78,0x21,0x11,0x14,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x11,0x1A, +0x39,0,14,0xB4,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x25,0x25,0x25, +0x39,0,7,0xB5,0x00,0x30,0x30,0x30,0x30,0x2A, +0x39,0,20,0xB6,0x05,0x00,0x00,0x11,0x11,0x11,0x1C,0x08,0x1C,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,17,0xB7,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x03, +0x39,0,14,0xB8,0x00,0x00,0x00,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28, +0x39,0,9,0xB9,0x00,0x00,0x50,0x00,0x00,0x0F,0x0F,0x00, +0x39,0,14,0xBA,0x0E,0xFF,0xFF,0xFF,0x00,0x54,0x00,0x44,0x04,0x44,0x04,0x04,0x00, +0x39,0,26,0xBB,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x3C,0x78,0x78,0x3C, +0x39,0,5,0xBE,0x5B,0x17,0x04,0x5B, +0x39,0,17,0xBF,0x0C,0x8F,0xFF,0x10,0x00,0x07,0x00,0x0A,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,17,0xC1,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,17,0xC2,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,10,0xC3,0x11,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00, +0x39,0,26,0xC4,0x00,0x0C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x1F,0x1F,0x00,0x00,0x0D,0x00,0x00,0x00,0x00, +0x39,0,17,0xD2,0x00,0x00,0x13,0x00,0x00,0x13,0x00,0x00,0x17,0x00,0x00,0x17,0x00,0x00,0x17,0x00, +0x39,0,14,0xC7,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04, +0x39,0,14,0xC8,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1, +0x39,0,27,0xC6,0x00,0x00,0x0f,0x00,0x00,0x11,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x55,0x01,0x01,0x00, +0x39,0,27,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92, +0x39,0,27,0xCC,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x33,0x00,0x02,0x02,0x00,0xF7,0xF7,0xF4,0xA9,0xA9,0xAE,0xF0,0x00,0x00, +0x39,0,41,0xD8,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF, +0x39,0,12,0xD9,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0x39,0,4,0xE0,0x00,0x00,0x60, +0x39,0,6,0xE1,0x43,0x00,0x11,0x60,0x0D, +0x39,0,51,0xE2,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24, +0x39,0,4,0xED,0x00,0x01,0x80, +0x39,0,18,0xEE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x88,0x88,0x29,0x00,0x00,0x00,0x00, +0x39,0,6,0xEF,0x00,0x85,0x88,0x87,0x87, +0x39,0,2,0x9F,0x03, +0x39,0,33,0xB2,0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x0C,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E,0x00,0x20,0x01,0x1F,0x00,0x07,0x00,0x0C,0x08,0xBB,0x08,0x7A, +0x39,0,33,0xB3,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +0x39,0,25,0xB4,0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +0x39,0,2,0xC0,0x11, +0x39,0,2,0xC1,0x82, +0x39,0,3,0xC2,0x00,0xC0, +0x39,0,6,0xC6,0x11,0x00,0x00,0x01,0x01, +0x39,0,2,0xE2,0x01, +0x39,0,2,0x9F,0x04, +0x39,0,4,0xB2,0x01,0x80,0x00, +0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +0x39,0,8,0xB6,0x01,0x20,0x00,0x0F,0xF0,0x10,0x06, +0x39,0,3,0xB9,0x91,0xC1, +0x39,0,3,0xBA,0x01,0x00, +0x39,0,10,0xBB,0x00,0x00,0x08,0x00,0x00,0x00,0xF2,0x00,0x00, +0x39,0,41,0xC1,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xC2,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,4,0xC3,0x00,0x08,0xB8, +0x39,0,20,0xC5,0x00,0x20,0x88,0x41,0xCF,0x4F,0x4F,0x00,0x48,0x53,0x29,0x21,0x28,0x2A,0x05,0x2F,0x00,0x20,0x0F, +0x39,0,37,0xC6,0x4B,0x00,0x90,0x00,0x02,0xD5,0x00,0x02,0xCB,0x01,0x10,0x43,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,5,0xC8,0x48,0x48,0x53,0x53, +0x39,0,3,0xC9,0x88,0x88, +0x39,0,41,0xCC,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCD,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xCE,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCF,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD1,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD2,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD3,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD4,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD6,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD8,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD9,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDD,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xDE,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDF,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE0,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE1,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE2,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE3,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE4,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE5,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE6,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,2,0x9F,0x05, +0x39,0,7,0xB2,0x24,0x20,0x05,0x0F,0xFF,0xFF, +0x39,0,9,0xB3,0xA0,0x00,0x28,0x00,0x00,0x00,0x3F,0xFF, +0x39,0,13,0xB4,0x02,0x0E,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x50,0x0F, +0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,9,0xB8,0x00,0x00,0x00,0x00,0x13,0x1F,0x30,0x6E, +0x39,0,41,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE3,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,41,0xE4,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,21,0xE5,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +#if 1 // renew +0x39,0,2,0x9F, 0x04, +0x39,0,19,0xB3, 0x00, 0x00, 0x10, 0x00, 0x30, 0x50, 0x00, 0x70, 0xB0, 0x00, 0xD0, 0xF0, 0x11, 0x30, 0x70, 0x12, 0xF0, 0x70, +0x39,0,21,0xB4, 0x23, 0xF0, 0x70, 0x34, 0xF0, 0xF0, 0x67, 0xF0, 0xF0, 0x8A, 0xF0, 0xF0, 0xCD, 0xF0, 0xF0, 0xEF, 0xF0, 0xF0, 0x0F, 0xFF, +0x39,0,2,0x9F, 0x05, +0x39,0,21,0xB5, 0x0F, 0xFF, 0x07, 0xFF, 0x03, 0x33, 0x01, 0x47, 0x01, 0x46, 0x00, 0xCD, 0x00, 0x66, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x08, +0x39,0,21,0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x80, +0x39,0,4,0xFF,0x00,0x00,0x01, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x01, +0x39,0,5,0xFE,0x01,0x00,0x00,0x00, +0x39,0,22,0xF1,0x02,0x00,0x45,0x23,0xC1,0x2C,0x33,0x94,0xF3,0x44,0x10,0x75,0x45,0xC7,0x0F,0x55,0x7C,0xEB,0x66,0x4A,0xA0, +0x39,0,18,0xF2,0x67,0xF7,0x7C,0x88,0x6B,0xD6,0x9A,0x3C,0x07,0xAB,0xC7,0x27,0xBB,0x84,0xE6,0xB0,0xE6, +0x39,0,22,0xF3,0x02,0x00,0x45,0x22,0xAC,0xDE,0x23,0xF3,0x98,0x34,0x99,0x20,0x44,0x62,0xA3,0x45,0xF3,0x5D,0x56,0xBA,0x0B, +0x39,0,18,0xF4,0x66,0x64,0xDA,0x78,0xBA,0x16,0x89,0x6F,0x1D,0x9A,0xBF,0x0A,0xAA,0x5D,0xAC,0xA0,0xAC, +0x39,0,22,0xF5,0x02,0x00,0xE9,0x33,0x81,0xDD,0x44,0x19,0xB4,0x45,0xD5,0x3C,0x55,0x98,0xE9,0x66,0x61,0xDD,0x77,0x43,0x9E, +0x39,0,18,0xF6,0x78,0xF9,0x8B,0x9A,0x8E,0x03,0xAB,0x74,0x49,0xCC,0x14,0x70,0xCD,0xDC,0x3E,0xD0,0x3E, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x01,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x12,0x7E,0x64,0x23,0xBD,0x8A,0x33,0xAD,0xED,0x44,0x64,0x90,0x55,0x23,0x81,0x56,0xD4,0x2C, +0x39,0,18,0xF2,0x66,0x71,0xF3,0x78,0xCA,0x27,0x89,0x7E,0x2B,0x9A,0xCB,0x1A,0xAA,0x66,0xB5,0xA0,0xB5, +0x39,0,22,0xF3,0x00,0x00,0x01,0x11,0x13,0xE8,0x23,0x5B,0x0A,0x33,0x20,0x62,0x34,0xEB,0x0B,0x44,0xA3,0xFC,0x55,0x45,0x9F, +0x39,0,18,0xF4,0x56,0xDE,0x5D,0x77,0x21,0x72,0x78,0xC5,0x5C,0x89,0xE5,0x2A,0x99,0x6D,0xB1,0x90,0xB1, +0x39,0,22,0xF5,0x02,0x00,0x08,0x23,0xFD,0x68,0x34,0x96,0x48,0x44,0x6A,0xA6,0x55,0x2A,0x5A,0x56,0xF8,0x64,0x67,0xBC,0x1A, +0x39,0,18,0xF6,0x77,0x66,0xF0,0x89,0xD8,0x3D,0x9A,0x9F,0x59,0xBB,0x00,0x58,0xBB,0xAC,0xFC,0xB0,0xFC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x02,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x12,0x63,0xC2,0x33,0x0D,0x53,0x33,0xA6,0xF9,0x44,0x61,0xC0,0x55,0x14,0x5D, +0x39,0,18,0xF2,0x56,0x9C,0x03,0x67,0xBF,0x0F,0x77,0x58,0xDA,0x88,0x56,0x8F,0x89,0xC9,0x00,0x90,0x00, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x02,0x87,0x27,0x22,0x83,0xD1,0x33,0x1B,0x79,0x34,0xDE,0x3A,0x44,0x90,0xDB, +0x39,0,18,0xF4,0x55,0x14,0x74,0x66,0x29,0x76,0x67,0xBA,0x2D,0x77,0xA2,0xD3,0x88,0x08,0x38,0x80,0x38, +0x39,0,22,0xF5,0x02,0x00,0x61,0x22,0x62,0xC3,0x33,0x2A,0x99,0x34,0xDF,0x31,0x44,0x5F,0xBB,0x55,0x22,0x8A,0x56,0xEC,0x39, +0x39,0,18,0xF6,0x66,0x7D,0xED,0x78,0xB7,0x0D,0x88,0x5C,0xE9,0x99,0x70,0xB1,0x9A,0xED,0x2A,0xA0,0x2A, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x03,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0xF0,0x23,0xCD,0x16,0x34,0xA6,0x11,0x44,0x5E,0xA3, +0x39,0,18,0xF2,0x45,0xDB,0x42,0x56,0xDB,0x21,0x66,0x66,0xD2,0x77,0x36,0x66,0x77,0x96,0xBE,0x70,0xBE, +0x39,0,22,0xF3,0x00,0x00,0x02,0x00,0x05,0x07,0x00,0x0C,0x0D,0x11,0x44,0x80,0x22,0x4C,0xA8,0x33,0x36,0x87,0x34,0xDA,0x29, +0x39,0,18,0xF4,0x44,0x57,0xBF,0x55,0x49,0x8D,0x56,0xD6,0x37,0x66,0x97,0xC3,0x67,0xF0,0x16,0x70,0x16, +0x39,0,22,0xF5,0x01,0x00,0x1F,0x11,0x20,0x21,0x33,0x13,0x14,0x33,0x3F,0x6E,0x34,0xAF,0x0E,0x44,0x8D,0xC9,0x55,0x21,0x73, +0x39,0,18,0xF6,0x56,0xA8,0x1B,0x67,0xC1,0x0B,0x77,0x56,0xCC,0x88,0x39,0x6C,0x88,0x9E,0xCC,0x80,0xCC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x04,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x17,0x11,0x50,0xCF,0x33,0x76,0xC2,0x44,0x75,0xC3,0x55,0x19,0x5A, +0x39,0,18,0xF2,0x55,0x93,0xF4,0x66,0x8C,0xD0,0x77,0x0C,0x7A,0x78,0xDD,0x0A,0x88,0x3A,0x61,0x80,0x61, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x12,0x7B,0x46,0x33,0x11,0x65,0x34,0xFA,0x4D,0x44,0x97,0xDD, +0x39,0,18,0xF4,0x55,0x16,0x74,0x66,0x06,0x49,0x66,0x81,0xE9,0x77,0x45,0x73,0x77,0x97,0xBF,0x70,0xBF, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x56,0x57,0x33,0x58,0xD9,0x34,0xFF,0x38,0x44,0x88,0xD6,0x55,0x39,0x97,0x56,0xD4,0x23, +0x39,0,18,0xF6,0x66,0x5C,0xC5,0x77,0x6B,0xB4,0x78,0xF2,0x68,0x89,0xD3,0x04,0x99,0x35,0x62,0x90,0x62, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x05,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x02,0x08,0x6F,0x23,0xB9,0xBF,0x44,0x2E,0xA1,0x45,0xF7,0x38, +0x39,0,18,0xF2,0x55,0x73,0xD7,0x66,0x78,0xB9,0x67,0xFB,0x64,0x77,0xC7,0xF5,0x88,0x20,0x51,0x80,0x51, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x01,0x06,0x32,0x23,0xAA,0x2B,0x34,0xB0,0x1B,0x44,0x69,0xAD, +0x39,0,18,0xF4,0x45,0xF5,0x51,0x56,0xF1,0x2E,0x66,0x70,0xCF,0x77,0x2C,0x5A,0x77,0x81,0xAA,0x70,0xAA, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB0,0x33,0xB1,0xB2,0x34,0xE8,0x0C,0x44,0x5F,0x9E,0x55,0x23,0x74,0x56,0xBC,0x01, +0x39,0,18,0xF6,0x66,0x50,0xB0,0x77,0x5D,0xA1,0x78,0xE5,0x57,0x88,0xC0,0xF1,0x99,0x1F,0x4F,0x90,0x4F, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x06,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x0F,0x18,0x34,0x90,0x21,0x45,0xAA,0x01, +0x39,0,18,0xF2,0x55,0x3A,0xA8,0x66,0x4D,0x8E,0x67,0xD7,0x3E,0x77,0xA5,0xD0,0x78,0xFB,0x2B,0x80,0x2B, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x26,0xEA,0x33,0x17,0xAD,0x44,0x16,0x70, +0x39,0,18,0xF4,0x45,0xAC,0x1B,0x55,0xBD,0xFB,0x66,0x45,0xA7,0x77,0x0F,0x33,0x77,0x5D,0x8B,0x70,0x8B, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB3,0x33,0xCC,0xCD,0x33,0xCE,0xCF,0x44,0x2E,0x76,0x45,0xE9,0x58,0x55,0x9F,0xE1, +0x39,0,18,0xF6,0x66,0x2A,0x97,0x77,0x41,0x82,0x78,0xC8,0x39,0x88,0xA6,0xD2,0x99,0x00,0x31,0x90,0x31, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x07,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0xCB,0x13,0x06,0x59,0x44,0x62,0x95, +0x39,0,18,0xF2,0x45,0xEB,0x63,0x66,0x0B,0x57,0x67,0x93,0x08,0x77,0x6A,0x99,0x77,0xC0,0xEF,0x70,0xEF, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x12,0xC8,0xF3,0x34,0xB5,0x00, +0x39,0,18,0xF4,0x44,0x4E,0xC6,0x55,0x70,0xBD,0x56,0xF6,0x70,0x66,0xCF,0xFD,0x77,0x1F,0x52,0x70,0x52, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x54,0x6E,0x33,0x6F,0x70,0x33,0x71,0x72,0x34,0xE6,0x2F,0x45,0xAE,0x0F,0x55,0x59,0xB7, +0x39,0,18,0xF6,0x56,0xEE,0x5B,0x77,0x0B,0x51,0x78,0x91,0x05,0x88,0x6C,0x9D,0x88,0xC7,0xF8,0x80,0xF8, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x08,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x55,0x00,0x78,0x79, +0x39,0,18,0xF2,0x34,0x8C,0x68,0x55,0x49,0x98,0x56,0xD1,0x48,0x66,0xA9,0xD0,0x67,0xFB,0x27,0x70,0x27, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x01,0x0A,0x15,0x12,0xD1,0x2A, +0x39,0,18,0xF4,0x33,0x15,0xD4,0x44,0xAB,0xF0,0x55,0x26,0xA9,0x66,0x11,0x30,0x66,0x59,0x87,0x60,0x87, +0x39,0,22,0xF5,0x02,0x00,0x55,0x22,0x56,0x57,0x22,0xD1,0xFA,0x33,0x10,0x13,0x33,0x14,0x8C,0x44,0x01,0x68,0x45,0xB5,0x16, +0x39,0,18,0xF6,0x55,0x4B,0xB1,0x66,0x6B,0xAB,0x67,0xDE,0x5C,0x77,0xBB,0xDC,0x88,0x07,0x2D,0x80,0x2D, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x09,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0F, +0x39,0,18,0xF2,0x00,0x50,0x51,0x34,0xF5,0xB1,0x45,0xF1,0x82,0x56,0xDE,0x11,0x66,0x3D,0x5D,0x60,0x5D, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0D, +0x39,0,18,0xF4,0x02,0xA8,0x37,0x34,0x7F,0x08,0x44,0x5A,0xD4,0x55,0x38,0x60,0x55,0x9C,0xB8,0x50,0xB8, +0x39,0,22,0xF5,0x00,0x00,0x01,0x00,0x02,0x03,0x01,0xE2,0x25,0x12,0x49,0x76,0x22,0xF8,0xF9,0x33,0x3A,0xAE,0x44,0x1C,0x64, +0x39,0,18,0xF6,0x45,0x96,0x10,0x56,0xCA,0x0D,0x66,0x52,0xAB,0x77,0x0C,0x2B,0x77,0x64,0x88,0x70,0x88, +0x39,0,2,0xFF,0x01, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x00, +0x39,0,4,0xFF,0x00,0x00,0x00, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x00, +#else // GAMMA correct for reddish +0x39,0,2,0x9F, 0x04, +0x39,0,19,0xB3, 0x00, 0x00, 0x10, 0x00, 0x30, 0x50, 0x00, 0x70, 0xB0, 0x00, 0xD0, 0xF0, 0x11, 0x30, 0x70, 0x12, 0xF0, 0x70, +0x39,0,21,0xB4, 0x23, 0xF0, 0x70, 0x34, 0xF0, 0xF0, 0x67, 0xF0, 0xF0, 0x8A, 0xF0, 0xF0, 0xCD, 0xF0, 0xF0, 0xEF, 0xF0, 0xF0, 0x0F, 0xFF, +0x39,0,2,0x9F, 0x05, +0x39,0,21,0xB5, 0x0F, 0xFF, 0x07, 0xFF, 0x03, 0x33, 0x01, 0x47, 0x01, 0x46, 0x00, 0xCD, 0x00, 0x66, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x08, +0x39,0,21,0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x39,0,2,0x9F, 0x05, +0x39,0,2,0xF9, 0x80, +0x39,0,4,0xFF, 0x00, 0x00, 0x01, +0x39,0,2,0x9F, 0x06, +0x39,0,3,0xFF, 0x00, 0x01, +0x39,0,5,0xFE, 0x01, 0x00, 0x00, 0x00, +0x39,0,22,0xF1, 0x02, 0x00, 0x4C, 0x23, 0xB9, 0x2D, 0x34, 0x8F, 0x26, 0x44, 0x5E, 0x94, 0x45, 0xEF, 0x3F, 0x56, 0xC3, 0x31, 0x66, 0x91, 0xE4, +0x39,0,18,0xF2, 0x77, 0x32, 0xBF, 0x89, 0xA9, 0x12, 0x9A, 0x74, 0x35, 0xAB, 0xF2, 0x4E, 0xBC, 0xAD, 0x0C, 0xC0, 0x0C, +0x39,0,22,0xF3, 0x02, 0x00, 0x59, 0x22, 0x9E, 0xE9, 0x33, 0x31, 0xAE, 0x34, 0xE6, 0x15, 0x44, 0x68, 0xB3, 0x55, 0x2D, 0x93, 0x56, 0xEC, 0x3C, +0x39,0,18,0xF4, 0x67, 0x84, 0x07, 0x78, 0xDB, 0x39, 0x89, 0x8F, 0x2F, 0x9A, 0xCA, 0x16, 0xAA, 0x61, 0xAC, 0xA0, 0xAC, +0x39,0,22,0xF5, 0x03, 0x00, 0x11, 0x33, 0x82, 0xF0, 0x44, 0x4F, 0xE9, 0x55, 0x28, 0x5F, 0x56, 0xC3, 0x1C, 0x67, 0xAC, 0x22, 0x77, 0x86, 0xE1, +0x39,0,18,0xF6, 0x88, 0x33, 0xC9, 0x9A, 0xC4, 0x38, 0xAB, 0xAA, 0x75, 0xCC, 0x36, 0x95, 0xCD, 0xF9, 0x5D, 0xD0, 0x5D, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x01, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0xC0, 0x22, 0x02, 0xAD, 0x33, 0x1E, 0xBD, 0x34, 0xF9, 0x2D, 0x44, 0x86, 0xD2, 0x55, 0x4C, 0xB2, 0x66, 0x0B, 0x5C, +0x39,0,18,0xF2, 0x67, 0xA4, 0x23, 0x78, 0xF8, 0x58, 0x89, 0xAC, 0x4D, 0x9A, 0xE5, 0x34, 0xAA, 0x7D, 0xC8, 0xA0, 0xC8, +0x39,0,22,0xF3, 0x00, 0x00, 0x56, 0x12, 0x80, 0x22, 0x23, 0x91, 0x2D, 0x33, 0x6B, 0x9F, 0x34, 0xF6, 0x3F, 0x45, 0xB7, 0x19, 0x55, 0x6C, 0xB7, +0x39,0,18,0xF4, 0x56, 0xFB, 0x73, 0x77, 0x37, 0x8D, 0x78, 0xDB, 0x69, 0x89, 0xED, 0x2C, 0x99, 0x67, 0xA2, 0x90, 0xA2, +0x39,0,22,0xF5, 0x02, 0x00, 0x89, 0x33, 0x0E, 0x83, 0x34, 0xE3, 0x7B, 0x44, 0xB7, 0xED, 0x55, 0x4C, 0x9E, 0x66, 0x25, 0x96, 0x67, 0xF5, 0x4B, +0x39,0,18,0xF6, 0x78, 0x98, 0x1F, 0x99, 0x01, 0x65, 0x9A, 0xC1, 0x74, 0xBB, 0x1D, 0x6E, 0xBC, 0xBB, 0x0D, 0xC0, 0x0D, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x02, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x01, 0x02, 0x58, 0x23, 0x3C, 0x00, 0x33, 0x42, 0x77, 0x34, 0xD0, 0x17, 0x44, 0x89, 0xE7, 0x55, 0x33, 0x79, +0x39,0,18,0xF2, 0x56, 0xB8, 0x26, 0x67, 0xDA, 0x27, 0x77, 0x71, 0xF1, 0x88, 0x63, 0x9C, 0x89, 0xD1, 0x04, 0x90, 0x04, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0xA0, 0x12, 0x9D, 0x6B, 0x22, 0xAB, 0xE2, 0x33, 0x3C, 0x86, 0x34, 0xF9, 0x52, 0x44, 0x9F, 0xE1, +0x39,0,18,0xF4, 0x55, 0x1C, 0x82, 0x66, 0x2C, 0x75, 0x67, 0xB8, 0x2E, 0x77, 0x98, 0xCB, 0x78, 0xFA, 0x27, 0x80, 0x27, +0x39,0,22,0xF5, 0x01, 0x00, 0xF9, 0x22, 0x7F, 0xEC, 0x33, 0x46, 0xCE, 0x44, 0x08, 0x37, 0x44, 0x8E, 0xD6, 0x55, 0x4F, 0xB4, 0x66, 0x08, 0x54, +0x39,0,18,0xF6, 0x67, 0x99, 0x0E, 0x78, 0xCE, 0x21, 0x88, 0x6C, 0xF7, 0x99, 0x72, 0xAE, 0x9A, 0xE7, 0x27, 0xA0, 0x27, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x03, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0x60, 0x22, 0x1F, 0x83, 0x23, 0xFF, 0x56, 0x34, 0xCD, 0x29, 0x44, 0x72, 0xB1, +0x39,0,18,0xF2, 0x45, 0xE8, 0x4A, 0x56, 0xE6, 0x29, 0x66, 0x68, 0xD4, 0x77, 0x35, 0x61, 0x77, 0x8E, 0xB6, 0x70, 0xB6, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0x1E, 0x12, 0xAC, 0x01, 0x22, 0x75, 0xC6, 0x33, 0x3E, 0x98, 0x34, 0xE1, 0x21, +0x39,0,18,0xF4, 0x44, 0x56, 0xB3, 0x55, 0x47, 0x86, 0x56, 0xC1, 0x26, 0x66, 0x82, 0xAB, 0x66, 0xD3, 0xF9, 0x60, 0xF9, +0x39,0,22,0xF5, 0x02, 0x00, 0x48, 0x22, 0x49, 0x4A, 0x23, 0xAD, 0x2C, 0x33, 0x61, 0x90, 0x34, 0xDF, 0x24, 0x44, 0x91, 0xEB, 0x55, 0x36, 0x7A, +0x39,0,18,0xF6, 0x56, 0xB7, 0x20, 0x67, 0xCA, 0x12, 0x77, 0x54, 0xC7, 0x88, 0x30, 0x5E, 0x88, 0x8B, 0xBA, 0x80, 0xBA, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x04, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0xFC, 0x23, 0xDF, 0x46, 0x34, 0xC5, 0x17, 0x44, 0x8F, 0xE4, 0x55, 0x2C, 0x69, +0x39,0,18,0xF2, 0x55, 0xA0, 0xFF, 0x66, 0x97, 0xD7, 0x77, 0x14, 0x7D, 0x78, 0xDA, 0x08, 0x88, 0x31, 0x59, 0x80, 0x59, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01, 0x04, 0xE2, 0x22, 0x76, 0xCF, 0x33, 0x3E, 0x90, 0x44, 0x04, 0x5D, 0x44, 0xA2, 0xDE, +0x39,0,18,0xF4, 0x55, 0x12, 0x6C, 0x56, 0xFF, 0x3C, 0x66, 0x75, 0xD9, 0x77, 0x31, 0x58, 0x77, 0x7D, 0xA3, 0x70, 0xA3, +0x39,0,22,0xF5, 0x03, 0x00, 0x0D, 0x33, 0x0E, 0x0F, 0x33, 0x69, 0xF1, 0x44, 0x24, 0x52, 0x44, 0x9E, 0xDF, 0x55, 0x4B, 0xA1, 0x56, 0xED, 0x2E, +0x39,0,18,0xF6, 0x66, 0x6A, 0xD0, 0x77, 0x72, 0xB6, 0x78, 0xF7, 0x65, 0x88, 0xCB, 0xF9, 0x99, 0x23, 0x4D, 0x90, 0x4D, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x05, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x02, 0x6F, 0x81, 0x33, 0x64, 0xD1, 0x44, 0x5E, 0xBE, 0x55, 0x0A, 0x4B, +0x39,0,18,0xF2, 0x55, 0x82, 0xE3, 0x66, 0x80, 0xC3, 0x67, 0xFF, 0x6A, 0x77, 0xC6, 0xF1, 0x88, 0x19, 0x42, 0x80, 0x42, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x12, 0x70, 0x2A, 0x23, 0xDE, 0x45, 0x34, 0xCD, 0x2D, 0x44, 0x79, 0xB9, +0x39,0,18,0xF4, 0x45, 0xF0, 0x4D, 0x56, 0xE5, 0x25, 0x66, 0x5F, 0xC2, 0x77, 0x1B, 0x42, 0x77, 0x69, 0x8E, 0x70, 0x8E, +0x39,0,22,0xF5, 0x03, 0x00, 0x13, 0x33, 0x32, 0x33, 0x33, 0x34, 0xC7, 0x34, 0xFE, 0x2E, 0x44, 0x80, 0xC3, 0x55, 0x30, 0x8A, 0x56, 0xD7, 0x1B, +0x39,0,18,0xF6, 0x66, 0x56, 0xBC, 0x77, 0x60, 0xA6, 0x78, 0xE4, 0x52, 0x88, 0xB5, 0xE3, 0x99, 0x0E, 0x38, 0x90, 0x38, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x06, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x13, 0x79, 0x0C, 0x34, 0xF3, 0x70, 0x45, 0xCB, 0x0F, +0x39,0,18,0xF2, 0x55, 0x4D, 0xB5, 0x66, 0x58, 0x9D, 0x67, 0xDA, 0x46, 0x77, 0xA5, 0xD2, 0x78, 0xF9, 0x21, 0x80, 0x21, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x12, 0xAA, 0x86, 0x33, 0x58, 0xD1, 0x44, 0x29, 0x71, +0x39,0,18,0xF4, 0x45, 0xAF, 0x16, 0x55, 0xB9, 0xFB, 0x66, 0x38, 0xA0, 0x67, 0xF9, 0x22, 0x77, 0x47, 0x6D, 0x70, 0x6D, +0x39,0,22,0xF5, 0x02, 0x00, 0x4D, 0x22, 0x4E, 0x4F, 0x33, 0xB7, 0xB8, 0x33, 0xB9, 0xF1, 0x44, 0x49, 0x92, 0x55, 0x05, 0x63, 0x55, 0xB4, 0xFA, +0x39,0,18,0xF6, 0x66, 0x38, 0xA0, 0x77, 0x44, 0x8B, 0x78, 0xC9, 0x38, 0x88, 0x9A, 0xC9, 0x89, 0xF2, 0x1B, 0x90, 0x1B, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x07, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x0E, 0x33, 0x37, 0xFB, 0x44, 0x6B, 0xBD, +0x39,0,18,0xF2, 0x55, 0x00, 0x6E, 0x66, 0x19, 0x5F, 0x67, 0x9E, 0x0A, 0x77, 0x68, 0x90, 0x77, 0xBB, 0xE1, 0x70, 0xE1, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x01, 0x08, 0x11, 0x23, 0xA3, 0x52, 0x34, 0xBE, 0x13, +0x39,0,18,0xF4, 0x44, 0x56, 0xC6, 0x55, 0x71, 0xB8, 0x56, 0xF8, 0x61, 0x66, 0xBC, 0xE4, 0x77, 0x0B, 0x2E, 0x70, 0x2E, +0x39,0,22,0xF5, 0x02, 0x00, 0x6C, 0x22, 0x6D, 0x6E, 0x23, 0x6F, 0xAE, 0x33, 0xAF, 0xB0, 0x44, 0x03, 0x4E, 0x45, 0xC6, 0x26, 0x55, 0x79, 0xC3, +0x39,0,18,0xF6, 0x66, 0x02, 0x6D, 0x77, 0x12, 0x57, 0x78, 0x95, 0x02, 0x88, 0x62, 0x8F, 0x88, 0xB7, 0xDF, 0x80, 0xDF, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x08, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x23, 0xAE, 0x8C, +0x39,0,18,0xF2, 0x44, 0x01, 0x95, 0x55, 0x4C, 0x93, 0x56, 0xD5, 0x43, 0x66, 0x9F, 0xC8, 0x67, 0xEF, 0x12, 0x70, 0x12, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x01, 0x0A, 0x22, 0x22, 0x3E, 0xDE, +0x39,0,18,0xF4, 0x33, 0x4A, 0xDD, 0x44, 0x97, 0xDD, 0x55, 0x1E, 0x92, 0x56, 0xF0, 0x1A, 0x66, 0x41, 0x65, 0x60, 0x65, +0x39,0,22,0xF5, 0x00, 0x00, 0xF4, 0x00, 0xF5, 0xF6, 0x02, 0xF7, 0xC8, 0x22, 0xC9, 0xCA, 0x33, 0x41, 0x93, 0x44, 0x18, 0x79, 0x45, 0xCC, 0x0F, +0x39,0,18,0xF6, 0x55, 0x4F, 0xBE, 0x66, 0x66, 0xA8, 0x67, 0xE4, 0x49, 0x77, 0xA2, 0xCB, 0x78, 0xF2, 0x17, 0x80, 0x17, +0x39,0,2,0xFF, 0x01, +0x39,0,5,0xFE, 0x01, 0x09, 0x00, 0x00, +0x39,0,22,0xF1, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x00, 0x0C, 0x0D, +0x39,0,18,0xF2, 0x03, 0x59, 0x2C, 0x44, 0x69, 0xBE, 0x55, 0x03, 0x72, 0x56, 0xD6, 0x00, 0x66, 0x27, 0x4A, 0x60, 0x4A, +0x39,0,22,0xF3, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x00, 0x04, 0x05, 0x00, 0x06, 0x07, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x0B, 0x00, 0x0C, 0x0D, +0x39,0,18,0xF4, 0x12, 0x4C, 0x8A, 0x33, 0xA6, 0xFC, 0x44, 0x42, 0xB3, 0x55, 0x11, 0x3C, 0x55, 0x67, 0x91, 0x50, 0x91, +0x39,0,22,0xF5, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x02, 0x04, 0x02, 0x22, 0x03, 0x04, 0x22, 0x71, 0xD8, 0x33, 0x5F, 0xC5, 0x44, 0x18, 0x62, +0x39,0,18,0xF6, 0x45, 0x9F, 0x06, 0x55, 0xB3, 0xF7, 0x66, 0x36, 0x9D, 0x67, 0xF4, 0x18, 0x77, 0x3C, 0x5E, 0x70, 0x5E, +0x39,0,2,0xFF, 0x01, +0x39,0,2,0x9F, 0x05, +0x39,0,2,0xF9, 0x00, +0x39,0,4,0xFF, 0x00, 0x00, 0x00, +0x39,0,2,0x9F, 0x06, +0x39,0,3,0xFF, 0x00, 0x00, +#endif +0x39,0,2,0x9F,0x07, +//0x39,0,8,0xB2,0x10,0x10,0x10,0x10,0x04,0x00,0x98, +0x39,0,8,0xB2,0x04,0x04,0x04,0x04,0x04,0x00,0x98, +0x39,0,8,0xB3,0x15,0x15,0x15,0x15,0x04,0x00,0x9A, +0x39,0,8,0xB4,0x20,0x20,0x20,0x20,0x04,0x00,0x96, +0x39,0,8,0xB6,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,8,0xB7,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,33,0xB9,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBB,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, +0x39,0,33,0xBD,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBE,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC0,0x00,0x7A,0x7A,0x00,0x7A,0x7A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC1,0x00,0x9A,0x9A,0x00,0x9A,0x9A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC2,0x00,0x96,0x96,0x00,0x96,0x96,0x00,0x6A,0x46,0x00,0x26,0x1B,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,7,0xC4,0x10,0x30,0x1C,0x00,0x1C,0x1C, +0x39,0,7,0xC5,0x22,0x60,0x60,0x22,0x60,0x60, +0x39,0,41,0xD6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xD7,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,2,0x9F,0x0C, +0x39,0,9,0xB4,0xF0,0xC0,0xC0,0x1B,0x1B,0x00,0x00,0x16, +0x39,0,2,0x9F,0x08, +0x39,0,4,0xB2,0x10,0x00,0x02, +0x39,0,2,0xB4,0x11, +0x39,0,8,0xB5,0x00,0x02,0x01,0xFF,0x20,0x40,0xC0, +0x39,0,3,0xB6,0x58,0x03, +0x39,0,55,0xB7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB8,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB9,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBB,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBC,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xBD,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC0,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC1,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC2,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xC3,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC4,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC5,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC6,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC8,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,10,0xC9,0x16,0x33,0x3D,0x01,0x00,0x0F,0xFF,0x00,0x00, +0x39,0,2,0xCA,0xF0, +0x39,0,6,0xCB,0x00,0x01,0x7C,0x42,0x00, +0x39,0,5,0xCC,0x00,0x01,0x00,0x1F, +0x39,0,4,0xCD,0x00,0x01,0x00, +0x39,0,33,0xCE,0x00,0x25,0x00,0xA9,0x01,0x9C,0x03,0x08,0x04,0xF4,0x07,0x65,0x0A,0x62,0x0D,0xEE,0x12,0x0C,0x16,0xC1,0x1C,0x10,0x21,0xFC,0x28,0x87,0x2F,0xB5,0x37,0x86,0x3F,0xFF, +0x39,0,12,0xCF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0x4E,0xED,0x00, +0x39,0,53,0xD0,0x00,0x00,0x01,0xF1,0xEC,0x23,0xE4,0xDC,0x45,0xD7,0xDE,0x67,0xCB,0xC2,0x89,0xC0,0xC4,0xAB,0xC2,0xBC,0xCD,0xB5,0xAB,0xEF,0xAA,0xB4,0x00,0x00,0x01,0xFA,0xF1,0x23,0xEB,0xE4,0x45,0xE3,0xEB,0x67,0xDB,0xD1,0x89,0xCE,0xD0,0xAB,0xCC,0xC8,0xCD,0xC1,0xBA,0xEF,0xB9,0xB8, +0x39,0,53,0xD1,0x00,0x00,0x01,0xFF,0xF0,0x23,0xE8,0xE3,0x45,0xE1,0xE5,0x67,0xD7,0xCC,0x89,0xCE,0xD5,0xAB,0xCE,0xCA,0xCD,0xC4,0xBD,0xEF,0xB9,0xB7,0x00,0x00,0x01,0xF1,0xEB,0x23,0xE1,0xDD,0x45,0xD0,0xD0,0x67,0xBF,0xB1,0x89,0x9D,0x8A,0xAB,0x78,0x62,0xCD,0x49,0x30,0xEF,0x14,0x06, +0x39,0,53,0xD2,0x00,0x00,0x01,0xF5,0xEE,0x23,0xE8,0xE1,0x45,0xD6,0xD4,0x67,0xBF,0xB6,0x89,0xA6,0x99,0xAB,0x88,0x75,0xCD,0x60,0x47,0xEF,0x29,0x05,0x00,0x00,0x01,0xF4,0xEF,0x23,0xE7,0xE1,0x45,0xD7,0xD4,0x67,0xC2,0xB6,0x89,0xA4,0x91,0xAB,0x7A,0x63,0xCD,0x51,0x3B,0xEF,0x1E,0x01, +0x39,0,53,0xD3,0x00,0x00,0x01,0xFF,0xEC,0x23,0xE3,0xD9,0x45,0xD1,0xD6,0x67,0xC1,0xB7,0x89,0xB4,0xBE,0xAB,0xB3,0xAB,0xCD,0xA4,0x9A,0xEF,0x99,0xA1,0x00,0x00,0x11,0x0B,0xFC,0x23,0xF5,0xE4,0x45,0xDF,0xE4,0x67,0xCD,0xC5,0x89,0xBF,0xCD,0xAB,0xB7,0xB4,0xCD,0xAA,0xA4,0xEF,0xA6,0xA5, +0x39,0,53,0xD4,0x00,0x00,0x11,0x02,0xF2,0x23,0xE9,0xE0,0x45,0xDC,0xDD,0x67,0xCC,0xC2,0x89,0xC4,0xD0,0xAB,0xBF,0xB9,0xCD,0xB3,0xAC,0xEF,0xA8,0xA5,0x00,0x00,0x12,0x16,0x20,0x34,0x28,0x30,0x56,0x31,0x38,0x78,0x2F,0x29,0x9A,0x19,0x10,0xAB,0xFF,0xED,0xCD,0xD6,0xBC,0xEF,0xAF,0xB2, +0x39,0,53,0xD5,0x00,0x00,0x12,0x33,0x36,0x34,0x3F,0x45,0x56,0x49,0x4E,0x78,0x47,0x48,0x9A,0x3F,0x3C,0xBC,0x30,0x29,0xDD,0x15,0xFE,0xEF,0xDE,0xBE,0x00,0x00,0x12,0x18,0x26,0x34,0x31,0x39,0x56,0x3D,0x42,0x78,0x3B,0x38,0x9A,0x2D,0x22,0xBC,0x0E,0x0A,0xCD,0xF8,0xE0,0xEF,0xC9,0xB9, +0x39,0,53,0xD6,0x80,0x00,0x02,0xD9,0x08,0x34,0x13,0x1A,0x46,0xE9,0x3C,0x78,0x76,0x8C,0x9A,0xA4,0xBE,0xBC,0xCE,0xD8,0xDE,0xD7,0xD7,0xF1,0xF4,0x16,0x80,0x00,0x02,0xCF,0x01,0x34,0x0A,0x1A,0x46,0xEE,0x44,0x78,0x7B,0x90,0x9A,0xAC,0xC7,0xBC,0xD5,0xD8,0xDE,0xE3,0xED,0xF0,0xF4,0xFC, +0x39,0,27,0xD7,0x80,0x00,0x02,0xF1,0x1B,0x34,0x27,0x2A,0x46,0xFF,0x5D,0x78,0x94,0xAD,0x9A,0xC7,0xDC,0xBC,0xE9,0xE9,0xDE,0xE7,0xE4,0xF1,0xF4,0x06, +0x39,0,18,0xD8,0x80,0x96,0x91,0x8D,0x8B,0x8A,0x96,0x90,0x8E,0x87,0x90,0x96,0x92,0x85,0x8F,0x94,0x96, +0x39,0,2,0x9F,0x09, +0x39,0,3,0xB2,0x9C,0x09, +0x39,0,9,0xB3,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80, +0x39,0,16,0xB4,0x76,0xFF,0xDD,0x43,0x84,0x48,0x32,0x47,0x22,0x11,0x85,0x0D,0x00,0xAC,0x01, +0x39,0,35,0xC0,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58, +0x39,0,29,0xC1,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD0,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x0F,0x13,0x16,0x1A,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xC2,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC3,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC4,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC5,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC6,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC7,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC8,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC9,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCA,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCB,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x15,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCC,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x0F,0x12,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCD,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCE,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCF,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD1,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD2,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD3,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD4,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x0F,0x12,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,17,0xD5,0x17,0xF9,0xFE,0xFD,0x05,0x00,0x00,0x00,0x17,0xF9,0xF8,0xFE,0x00,0x00,0x00,0x00, +0x39,0,17,0xD6,0x18,0xF5,0xF8,0x03,0x00,0x00,0x00,0x00,0x17,0xEB,0xED,0xEF,0x00,0x00,0x00,0x00, +0x39,0,13,0xD7,0x05,0x00,0x80,0x00,0x80,0xAF,0x00,0x80,0x00,0x80,0x03,0xFF, +0x39,0,17,0xD8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x39,0,6,0xEE,0x30,0x10,0x00,0x10,0xFF, +0x39,0,2,0x9F,0x0A, +0x39,0,12,0xB2,0x1F,0x00,0x10,0x01,0x00,0x07,0x00,0x00,0x00,0x11,0x00, +0x39,0,43,0xB3,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB4,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,12,0xBE,0x00,0x1F,0xFF,0x13,0x91,0x0F,0x04,0x00,0x24,0x80,0xFF, +0x39,0,2,0x9F,0x0B, //Middle circle setting REG 0xBE +0x39,0,10,0xB2,0x01,0x3F,0x3F,0x0F,0x3F,0x0F,0x5F,0x0F,0x0F, +0x39,0,49,0xB9,0x32,0x00,0x00,0x00,0x00,0x00,0x6B,0x54,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBA,0x32,0x00,0x00,0x00,0x00,0x00,0x54,0x69,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBC,0x32,0x00,0x00,0x00,0x00,0x00,0x4b,0x4b,0x24,0x1C,0xB0,0x14,0xD1,0x65,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBE,0x32,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x20,0x1C,0x33,0x00,0x00,0x00,0x00,0x25,0x25,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,20,0xC6,0x8F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,20,0xC7,0x0F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,16,0xC8,0xF9,0x05,0x05,0xB0,0xE0,0xB0,0x50,0xBA,0xF0,0xB0,0xE0,0xB0,0x20,0xD0,0x50, +0x39,0,2,0x9F,0x0D, +0x39,0,16,0xB2,0x25,0x10,0x21,0x01,0x02,0x10,0x00,0x00,0x16,0x10,0x00,0x00,0x01,0xAA,0x90, +0x39,0,2,0xB3,0xB0, +0x39,0,13,0xB5,0x00,0x24,0x07,0x01,0x00,0x00,0x00,0x00,0x20,0x04,0xEE,0x21, +0x39,0,4,0xB6,0x02,0x12,0x22, +0x39,0,5,0xB7,0x20,0xF0,0xC0,0xE0, +0x39,0,13,0xB8,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0, +0x39,0,5,0xB9,0x01,0x01,0x01,0x01, +0x39,0,3,0xBA,0x00,0x00, +0x39,0,2,0xBB,0x01, +0x39,0,21,0xBC,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,6,0xBD,0x02,0x00,0x02,0x06,0x5B, +0x39,0,12,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00, +0x39,0,2,0x48,0x03, //0x03:120hz 0x23:60hz +0x39,0,1,0x11, +0x39,0,3,0x51,0x00,0x0F, +0x39,0,2,0x53,0xE0, +0x39,0,1,0x35, +//0x39,0,1,0x29, +#endif +#if 0 //AMOLED_ICNA3508_gamma_correct --old version +0x39,0,3,0x9C,0xA5,0xA5, +0x39,0,3,0xFD,0x5A,0x5A, +0x39,0,2,0x9F,0x0F, +0x39,0,2,0xB3,0x00, +0x39,0,2,0xD7,0x11, +0x39,0,2,0x9F,0x01, +0x39,0,4,0xB2,0x5A,0x04,0xAF, +0x39,0,36,0xB3,0x00,0xBA,0x00,0x14,0x0C,0x22,0x00,0xBA,0x30,0x14,0x2C,0x00,0x00,0xBA,0x90,0x14,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBA,0x00,0x14,0x0C,0x44,0x1C,0x1C,0x1C,0x1C,0x1C, +0x39,0,19,0xCD,0x06,0x1F,0x1F,0x06,0x00,0x09,0x00,0x96,0x1F,0x03,0x28,0x00,0x96,0x1F,0x09,0x46,0x00,0x96, +0x39,0,2,0xD0,0x01, +0x39,0,3,0xE2,0x46,0x20, +0x39,0,3,0xEA,0x04,0x0B, +0x39,0,9,0xEE,0x40,0x38,0x28,0x28,0x28,0x28,0x28,0xC2,//add for ICNA5608 +0x39,0,2,0x9F,0x02, +0x39,0,26,0xB2,0x00,0xC9,0x32,0x10,0x11,0x12,0x12,0x00,0x08,0x78,0x21,0x11,0x14,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x11,0x1A, +0x39,0,14,0xB4,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x00,0x25,0x25,0x25,0x25,0x25, +0x39,0,7,0xB5,0x00,0x30,0x30,0x30,0x30,0x2A, +0x39,0,20,0xB6,0x05,0x00,0x00,0x11,0x11,0x11,0x1C,0x08,0x1C,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +//0x39,0,17,0xB7,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x06,0x06,0x03,0x06,0x06,0x03,0x06,0x06,0x03, +0x39,0,17,0xB7,0x05,0x00,0x15,0x00,0x00,0x15,0x70,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, //ver2.0 +0x39,0,14,0xB8,0x00,0x00,0x00,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28,0x73,0x28, +0x39,0,9,0xB9,0x00,0x00,0x50,0x00,0x00,0x0F,0x0F,0x00, +0x39,0,14,0xBA,0x0E,0xFF,0xFF,0xFF,0x00,0x54,0x00,0x44,0x04,0x44,0x04,0x04,0x00, +0x39,0,26,0xBB,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x5A,0x91,0x91,0x5A,0x00,0x3C,0x78,0x78,0x3C, +0x39,0,5,0xBE,0x5B,0x17,0x04,0x5B, +0x39,0,17,0xBF,0x0C,0x8F,0xFF,0x10,0x00,0x07,0x00,0x0A,0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,17,0xC1,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,17,0xC2,0x05,0x21,0x22,0x1D,0x1F,0x1E,0x20,0x01,0x30,0x31,0x32,0x33,0x3D,0x3D,0x3D,0x3D, +0x39,0,10,0xC3,0x11,0x60,0x00,0x40,0x00,0x40,0x00,0x00,0x00, +0x39,0,26,0xC4,0x00,0x0C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x1F,0x1F,0x00,0x00,0x0D,0x00,0x00,0x00,0x00, +0x39,0,17,0xD2,0x00,0x00,0x13,0x00,0x00,0x13,0x00,0x00,0x17,0x00,0x00,0x17,0x00,0x00,0x17,0x00, +0x39,0,14,0xC7,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x04,0x00,0x04,0x04, +0x39,0,14,0xC8,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1,0xB1,0xB1,0x00,0xB1,0xB1, +0x39,0,27,0xC6,0x00,0x00,0x0f,0x00,0x00,0x11,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x55,0x01,0x01,0x00, +0x39,0,27,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92,0x90,0x92,0x00,0x90,0x92, +0x39,0,27,0xCC,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x76,0xff,0x00,0x76,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +//0x39,0,19,0xD7,0x49,0xC3,0x20,0x7A,0x44,0x00,0x04,0x04,0x00,0xF9,0xF9,0xF4,0xAB,0xA9,0xAE,0xF0,0x00,0x00, +//0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x53,0x00,0x66,0x02,0x00,0xCC,0xF7,0xF4,0xCC,0xA9,0xAE,0xF0,0x00,0x00, //功耗高 +0x39,0,19,0xD7,0x4D,0xC3,0x20,0x7A,0x53,0x00,0x66,0x02,0x00,0xCC,0xF7,0xF4,0xCC,0xA9,0xAE,0xF0,0x00,0x00, +0x39,0,41,0xD8,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x00,0x04,0x76,0x22,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF,0x90,0x76,0xFF, +0x39,0,12,0xD9,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0x39,0,4,0xE0,0x00,0x00,0x60, +0x39,0,6,0xE1,0x43,0x00,0x11,0x60,0x0D, +0x39,0,51,0xE2,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24,0x15,0x00,0x39,0x42,0x24, +0x39,0,4,0xED,0x00,0x01,0x80, +0x39,0,18,0xEE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x88,0x88,0x29,0x00,0x00,0x00,0x00, +0x39,0,6,0xEF,0x00,0x85,0x88,0x87,0x87, +0x39,0,2,0x9F,0x03, +0x39,0,33,0xB2,0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x0C,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E,0x00,0x20,0x01,0x1F,0x00,0x07,0x00,0x0C,0x08,0xBB,0x08,0x7A, +0x39,0,33,0xB3,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40, +0x39,0,25,0xB4,0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4, +0x39,0,2,0xC0,0x11, +0x39,0,2,0xC1,0x82, +0x39,0,3,0xC2,0x00,0xC0, +0x39,0,6,0xC6,0x11,0x00,0x00,0x01,0x01, +0x39,0,2,0xE2,0x01, +0x39,0,2,0x9F,0x04, +0x39,0,4,0xB2,0x01,0x80,0x00, +0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +0x39,0,8,0xB6,0x01,0x20,0x00,0x0F,0xF0,0x10,0x06, +//0x39,0,3,0xB9,0x91,0xC1, +0x39,0,3,0xB9,0x90,0xC1, +0x39,0,3,0xBA,0x01,0x00, +0x39,0,10,0xBB,0x00,0x00,0x08,0x00,0x00,0x00,0xF2,0x00,0x00, +0x39,0,41,0xC1,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xC2,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,4,0xC3,0x00,0x08,0xB8, +0x39,0,20,0xC5,0x00,0x20,0x88,0x41,0xCF,0x4F,0x4F,0x00,0x48,0x53,0x29,0x21,0x28,0x2A,0x05,0x2F,0x00,0x20,0x0F, +0x39,0,37,0xC6,0x4B,0x00,0x90,0x00,0x02,0xD5,0x00,0x02,0xCB,0x01,0x10,0x43,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,5,0xC8,0x48,0x48,0x53,0x53, +0x39,0,3,0xC9,0x88,0x88, +0x39,0,41,0xCC,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCD,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xCE,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xCF,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD1,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD2,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,51,0xD3,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, +0x39,0,41,0xD4,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD5,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD6,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD7,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xD8,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xD9,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDD,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,51,0xDE,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xDF,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE0,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE1,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE2,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE3,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE4,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,41,0xE5,0x23,0x15,0x0F,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x26,0x18,0x12,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, +0x39,0,51,0xE6,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x1A,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21, +0x39,0,2,0x9F,0x05, +0x39,0,7,0xB2,0x24,0x20,0x05,0x0F,0xFF,0xFF, +0x39,0,9,0xB3,0xA0,0x00,0x28,0x00,0x00,0x00,0x3F,0xFF, +0x39,0,13,0xB4,0x02,0x0E,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x50,0x0F, +0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,9,0xB8,0x00,0x00,0x00,0x00,0x13,0x1F,0x30,0x6E, +0x39,0,41,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE3,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,41,0xE4,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xE1,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,21,0xE5,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF,0x01,0xFF, +0x39,0,2,0x9F,0x04, +0x39,0,19,0xB3,0x00,0x00,0x10,0x00,0x30,0x50,0x00,0x70,0xB0,0x00,0xD0,0xF0,0x11,0x30,0x70,0x12,0xF0,0x70, +0x39,0,21,0xB4,0x23,0xF0,0x70,0x34,0xF0,0xF0,0x67,0xF0,0xF0,0x8A,0xF0,0xF0,0xCD,0xF0,0xF0,0xEF,0xF0,0xF0,0x0F,0xFF, +0x39,0,2,0x9F,0x05, +0x39,0,21,0xB5,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,21,0xB6,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x80, +0x39,0,4,0xFF,0x00,0x00,0x01, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x01, +0x39,0,5,0xFE,0x01,0x00,0x00,0x00, +0x39,0,22,0xF1,0x02,0x00,0x45,0x23,0xC1,0x2C,0x33,0x94,0xF3,0x44,0x10,0x75,0x45,0xC7,0x0F,0x55,0x7C,0xEB,0x66,0x4A,0xA0, +0x39,0,18,0xF2,0x67,0xF7,0x7C,0x88,0x6B,0xD6,0x9A,0x3C,0x07,0xAB,0xC7,0x27,0xBB,0x84,0xE6,0xB0,0xE6, +0x39,0,22,0xF3,0x02,0x00,0x45,0x22,0xAC,0xDE,0x23,0xF3,0x98,0x34,0x99,0x20,0x44,0x62,0xA3,0x45,0xF3,0x5D,0x56,0xBA,0x0B, +0x39,0,18,0xF4,0x66,0x64,0xDA,0x78,0xBA,0x16,0x89,0x6F,0x1D,0x9A,0xBF,0x0A,0xAA,0x5D,0xAC,0xA0,0xAC, +0x39,0,22,0xF5,0x02,0x00,0xE9,0x33,0x81,0xDD,0x44,0x19,0xB4,0x45,0xD5,0x3C,0x55,0x98,0xE9,0x66,0x61,0xDD,0x77,0x43,0x9E, +0x39,0,18,0xF6,0x78,0xF9,0x8B,0x9A,0x8E,0x03,0xAB,0x74,0x49,0xCC,0x14,0x70,0xCD,0xDC,0x3E,0xD0,0x3E, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x01,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x12,0x7E,0x64,0x23,0xBD,0x8A,0x33,0xAD,0xED,0x44,0x64,0x90,0x55,0x23,0x81,0x56,0xD4,0x2C, +0x39,0,18,0xF2,0x66,0x71,0xF3,0x78,0xCA,0x27,0x89,0x7E,0x2B,0x9A,0xCB,0x1A,0xAA,0x66,0xB5,0xA0,0xB5, +0x39,0,22,0xF3,0x00,0x00,0x01,0x11,0x13,0xE8,0x23,0x5B,0x0A,0x33,0x20,0x62,0x34,0xEB,0x0B,0x44,0xA3,0xFC,0x55,0x45,0x9F, +0x39,0,18,0xF4,0x56,0xDE,0x5D,0x77,0x21,0x72,0x78,0xC5,0x5C,0x89,0xE5,0x2A,0x99,0x6D,0xB1,0x90,0xB1, +0x39,0,22,0xF5,0x02,0x00,0x08,0x23,0xFD,0x68,0x34,0x96,0x48,0x44,0x6A,0xA6,0x55,0x2A,0x5A,0x56,0xF8,0x64,0x67,0xBC,0x1A, +0x39,0,18,0xF6,0x77,0x66,0xF0,0x89,0xD8,0x3D,0x9A,0x9F,0x59,0xBB,0x00,0x58,0xBB,0xAC,0xFC,0xB0,0xFC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x02,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x12,0x63,0xC2,0x33,0x0D,0x53,0x33,0xA6,0xF9,0x44,0x61,0xC0,0x55,0x14,0x5D, +0x39,0,18,0xF2,0x56,0x9C,0x03,0x67,0xBF,0x0F,0x77,0x58,0xDA,0x88,0x56,0x8F,0x89,0xC9,0x00,0x90,0x00, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x02,0x87,0x27,0x22,0x83,0xD1,0x33,0x1B,0x79,0x34,0xDE,0x3A,0x44,0x90,0xDB, +0x39,0,18,0xF4,0x55,0x14,0x74,0x66,0x29,0x76,0x67,0xBA,0x2D,0x77,0xA2,0xD3,0x88,0x08,0x38,0x80,0x38, +0x39,0,22,0xF5,0x02,0x00,0x61,0x22,0x62,0xC3,0x33,0x2A,0x99,0x34,0xDF,0x31,0x44,0x5F,0xBB,0x55,0x22,0x8A,0x56,0xEC,0x39, +0x39,0,18,0xF6,0x66,0x7D,0xED,0x78,0xB7,0x0D,0x88,0x5C,0xE9,0x99,0x70,0xB1,0x9A,0xED,0x2A,0xA0,0x2A, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x03,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0xF0,0x23,0xCD,0x16,0x34,0xA6,0x11,0x44,0x5E,0xA3, +0x39,0,18,0xF2,0x45,0xDB,0x42,0x56,0xDB,0x21,0x66,0x66,0xD2,0x77,0x36,0x66,0x77,0x96,0xBE,0x70,0xBE, +0x39,0,22,0xF3,0x00,0x00,0x02,0x00,0x05,0x07,0x00,0x0C,0x0D,0x11,0x44,0x80,0x22,0x4C,0xA8,0x33,0x36,0x87,0x34,0xDA,0x29, +0x39,0,18,0xF4,0x44,0x57,0xBF,0x55,0x49,0x8D,0x56,0xD6,0x37,0x66,0x97,0xC3,0x67,0xF0,0x16,0x70,0x16, +0x39,0,22,0xF5,0x01,0x00,0x1F,0x11,0x20,0x21,0x33,0x13,0x14,0x33,0x3F,0x6E,0x34,0xAF,0x0E,0x44,0x8D,0xC9,0x55,0x21,0x73, +0x39,0,18,0xF6,0x56,0xA8,0x1B,0x67,0xC1,0x0B,0x77,0x56,0xCC,0x88,0x39,0x6C,0x88,0x9E,0xCC,0x80,0xCC, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x04,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x17,0x11,0x50,0xCF,0x33,0x76,0xC2,0x44,0x75,0xC3,0x55,0x19,0x5A, +0x39,0,18,0xF2,0x55,0x93,0xF4,0x66,0x8C,0xD0,0x77,0x0C,0x7A,0x78,0xDD,0x0A,0x88,0x3A,0x61,0x80,0x61, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x12,0x7B,0x46,0x33,0x11,0x65,0x34,0xFA,0x4D,0x44,0x97,0xDD, +0x39,0,18,0xF4,0x55,0x16,0x74,0x66,0x06,0x49,0x66,0x81,0xE9,0x77,0x45,0x73,0x77,0x97,0xBF,0x70,0xBF, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x56,0x57,0x33,0x58,0xD9,0x34,0xFF,0x38,0x44,0x88,0xD6,0x55,0x39,0x97,0x56,0xD4,0x23, +0x39,0,18,0xF6,0x66,0x5C,0xC5,0x77,0x6B,0xB4,0x78,0xF2,0x68,0x89,0xD3,0x04,0x99,0x35,0x62,0x90,0x62, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x05,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x02,0x08,0x6F,0x23,0xB9,0xBF,0x44,0x2E,0xA1,0x45,0xF7,0x38, +0x39,0,18,0xF2,0x55,0x73,0xD7,0x66,0x78,0xB9,0x67,0xFB,0x64,0x77,0xC7,0xF5,0x88,0x20,0x51,0x80,0x51, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x01,0x06,0x32,0x23,0xAA,0x2B,0x34,0xB0,0x1B,0x44,0x69,0xAD, +0x39,0,18,0xF4,0x45,0xF5,0x51,0x56,0xF1,0x2E,0x66,0x70,0xCF,0x77,0x2C,0x5A,0x77,0x81,0xAA,0x70,0xAA, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB0,0x33,0xB1,0xB2,0x34,0xE8,0x0C,0x44,0x5F,0x9E,0x55,0x23,0x74,0x56,0xBC,0x01, +0x39,0,18,0xF6,0x66,0x50,0xB0,0x77,0x5D,0xA1,0x78,0xE5,0x57,0x88,0xC0,0xF1,0x99,0x1F,0x4F,0x90,0x4F, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x06,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x0F,0x18,0x34,0x90,0x21,0x45,0xAA,0x01, +0x39,0,18,0xF2,0x55,0x3A,0xA8,0x66,0x4D,0x8E,0x67,0xD7,0x3E,0x77,0xA5,0xD0,0x78,0xFB,0x2B,0x80,0x2B, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x01,0x26,0xEA,0x33,0x17,0xAD,0x44,0x16,0x70, +0x39,0,18,0xF4,0x45,0xAC,0x1B,0x55,0xBD,0xFB,0x66,0x45,0xA7,0x77,0x0F,0x33,0x77,0x5D,0x8B,0x70,0x8B, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x86,0xB3,0x33,0xCC,0xCD,0x33,0xCE,0xCF,0x44,0x2E,0x76,0x45,0xE9,0x58,0x55,0x9F,0xE1, +0x39,0,18,0xF6,0x66,0x2A,0x97,0x77,0x41,0x82,0x78,0xC8,0x39,0x88,0xA6,0xD2,0x99,0x00,0x31,0x90,0x31, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x07,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0xCB,0x13,0x06,0x59,0x44,0x62,0x95, +0x39,0,18,0xF2,0x45,0xEB,0x63,0x66,0x0B,0x57,0x67,0x93,0x08,0x77,0x6A,0x99,0x77,0xC0,0xEF,0x70,0xEF, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x12,0xC8,0xF3,0x34,0xB5,0x00, +0x39,0,18,0xF4,0x44,0x4E,0xC6,0x55,0x70,0xBD,0x56,0xF6,0x70,0x66,0xCF,0xFD,0x77,0x1F,0x52,0x70,0x52, +0x39,0,22,0xF5,0x02,0x00,0xEC,0x33,0x54,0x6E,0x33,0x6F,0x70,0x33,0x71,0x72,0x34,0xE6,0x2F,0x45,0xAE,0x0F,0x55,0x59,0xB7, +0x39,0,18,0xF6,0x56,0xEE,0x5B,0x77,0x0B,0x51,0x78,0x91,0x05,0x88,0x6C,0x9D,0x88,0xC7,0xF8,0x80,0xF8, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x08,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x55,0x00,0x78,0x79, +0x39,0,18,0xF2,0x34,0x8C,0x68,0x55,0x49,0x98,0x56,0xD1,0x48,0x66,0xA9,0xD0,0x67,0xFB,0x27,0x70,0x27, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x01,0x0A,0x15,0x12,0xD1,0x2A, +0x39,0,18,0xF4,0x33,0x15,0xD4,0x44,0xAB,0xF0,0x55,0x26,0xA9,0x66,0x11,0x30,0x66,0x59,0x87,0x60,0x87, +0x39,0,22,0xF5,0x02,0x00,0x55,0x22,0x56,0x57,0x22,0xD1,0xFA,0x33,0x10,0x13,0x33,0x14,0x8C,0x44,0x01,0x68,0x45,0xB5,0x16, +0x39,0,18,0xF6,0x55,0x4B,0xB1,0x66,0x6B,0xAB,0x67,0xDE,0x5C,0x77,0xBB,0xDC,0x88,0x07,0x2D,0x80,0x2D, +0x39,0,2,0xFF,0x01, +0x39,0,5,0xFE,0x01,0x09,0x00,0x00, +0x39,0,22,0xF1,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0F, +0x39,0,18,0xF2,0x00,0x50,0x51,0x34,0xF5,0xB1,0x45,0xF1,0x82,0x56,0xDE,0x11,0x66,0x3D,0x5D,0x60,0x5D, +0x39,0,22,0xF3,0x00,0x00,0x01,0x00,0x02,0x03,0x00,0x04,0x05,0x00,0x06,0x07,0x00,0x08,0x09,0x00,0x0A,0x0B,0x00,0x0C,0x0D, +0x39,0,18,0xF4,0x02,0xA8,0x37,0x34,0x7F,0x08,0x44,0x5A,0xD4,0x55,0x38,0x60,0x55,0x9C,0xB8,0x50,0xB8, +0x39,0,22,0xF5,0x00,0x00,0x01,0x00,0x02,0x03,0x01,0xE2,0x25,0x12,0x49,0x76,0x22,0xF8,0xF9,0x33,0x3A,0xAE,0x44,0x1C,0x64, +0x39,0,18,0xF6,0x45,0x96,0x10,0x56,0xCA,0x0D,0x66,0x52,0xAB,0x77,0x0C,0x2B,0x77,0x64,0x88,0x70,0x88, +0x39,0,2,0xFF,0x01, +0x39,0,2,0x9F,0x05, +0x39,0,2,0xF9,0x00, +0x39,0,4,0xFF,0x00,0x00,0x00, +0x39,0,2,0x9F,0x06, +0x39,0,3,0xFF,0x00,0x00, +0x39,0,2,0x9F,0x07, +//0x39,0,8,0xB2,0x10,0x10,0x10,0x10,0x04,0x00,0x98, +0x39,0,8,0xB2,0x04,0x04,0x04,0x04,0x04,0x00,0x98, +0x39,0,8,0xB3,0x15,0x15,0x15,0x15,0x04,0x00,0x9A, +0x39,0,8,0xB4,0x20,0x20,0x20,0x20,0x04,0x00,0x96, +0x39,0,8,0xB6,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,8,0xB7,0x04,0x04,0x04,0x04,0x04,0x02,0x60, +0x39,0,33,0xB9,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBA,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBB,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, +0x39,0,33,0xBD,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,33,0xBE,0x01,0x02,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC0,0x00,0x7A,0x7A,0x00,0x7A,0x7A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC1,0x00,0x9A,0x9A,0x00,0x9A,0x9A,0x00,0x6A,0x46,0x00,0x26,0x1A,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xC2,0x00,0x96,0x96,0x00,0x96,0x96,0x00,0x6A,0x46,0x00,0x26,0x1B,0x00,0x0F,0x0B,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,7,0xC4,0x10,0x30,0x1C,0x00,0x1C,0x1C, +0x39,0,7,0xC5,0x22,0x60,0x60,0x22,0x60,0x60, +0x39,0,41,0xD6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,21,0xD7,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF,0x00,0x00,0x00,0x00,0x03,0xFF,0x01,0xFF, +0x39,0,2,0x9F,0x0C, +0x39,0,9,0xB4,0xF0,0xC0,0xC0,0x1B,0x1B,0x00,0x00,0x16, +0x39,0,2,0x9F,0x08, +0x39,0,4,0xB2,0x10,0x00,0x02, +0x39,0,2,0xB4,0x11, +0x39,0,8,0xB5,0x00,0x02,0x01,0xFF,0x20,0x40,0xC0, +0x39,0,3,0xB6,0x58,0x03, +0x39,0,55,0xB7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB8,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xB9,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBB,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBC,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xBD,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xBF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC0,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC1,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC2,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,55,0xC3,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC4,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC5,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC6,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC7,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,55,0xC8,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3,0x44,0x2C,0x22,0x44,0x18,0x0E,0x43,0x00,0xF4,0x33,0xE6,0xD8,0x34,0xD3,0x2C,0x44,0x22,0x18,0x44,0x0E,0x00,0x33,0xF4,0xE6,0x33,0xD8,0xD3, +0x39,0,10,0xC9,0x16,0x33,0x3D,0x01,0x00,0x0F,0xFF,0x00,0x00, +0x39,0,2,0xCA,0xF0, +0x39,0,6,0xCB,0x00,0x01,0x7C,0x42,0x00, +0x39,0,5,0xCC,0x00,0x01,0x00,0x1F, +0x39,0,4,0xCD,0x00,0x01,0x00, +0x39,0,33,0xCE,0x00,0x25,0x00,0xA9,0x01,0x9C,0x03,0x08,0x04,0xF4,0x07,0x65,0x0A,0x62,0x0D,0xEE,0x12,0x0C,0x16,0xC1,0x1C,0x10,0x21,0xFC,0x28,0x87,0x2F,0xB5,0x37,0x86,0x3F,0xFF, +0x39,0,12,0xCF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xBA,0x4E,0xED,0x00, +0x39,0,53,0xD0,0x00,0x00,0x01,0xF1,0xEC,0x23,0xE4,0xDC,0x45,0xD7,0xDE,0x67,0xCB,0xC2,0x89,0xC0,0xC4,0xAB,0xC2,0xBC,0xCD,0xB5,0xAB,0xEF,0xAA,0xB4,0x00,0x00,0x01,0xFA,0xF1,0x23,0xEB,0xE4,0x45,0xE3,0xEB,0x67,0xDB,0xD1,0x89,0xCE,0xD0,0xAB,0xCC,0xC8,0xCD,0xC1,0xBA,0xEF,0xB9,0xB8, +0x39,0,53,0xD1,0x00,0x00,0x01,0xFF,0xF0,0x23,0xE8,0xE3,0x45,0xE1,0xE5,0x67,0xD7,0xCC,0x89,0xCE,0xD5,0xAB,0xCE,0xCA,0xCD,0xC4,0xBD,0xEF,0xB9,0xB7,0x00,0x00,0x01,0xF1,0xEB,0x23,0xE1,0xDD,0x45,0xD0,0xD0,0x67,0xBF,0xB1,0x89,0x9D,0x8A,0xAB,0x78,0x62,0xCD,0x49,0x30,0xEF,0x14,0x06, +0x39,0,53,0xD2,0x00,0x00,0x01,0xF5,0xEE,0x23,0xE8,0xE1,0x45,0xD6,0xD4,0x67,0xBF,0xB6,0x89,0xA6,0x99,0xAB,0x88,0x75,0xCD,0x60,0x47,0xEF,0x29,0x05,0x00,0x00,0x01,0xF4,0xEF,0x23,0xE7,0xE1,0x45,0xD7,0xD4,0x67,0xC2,0xB6,0x89,0xA4,0x91,0xAB,0x7A,0x63,0xCD,0x51,0x3B,0xEF,0x1E,0x01, +0x39,0,53,0xD3,0x00,0x00,0x01,0xFF,0xEC,0x23,0xE3,0xD9,0x45,0xD1,0xD6,0x67,0xC1,0xB7,0x89,0xB4,0xBE,0xAB,0xB3,0xAB,0xCD,0xA4,0x9A,0xEF,0x99,0xA1,0x00,0x00,0x11,0x0B,0xFC,0x23,0xF5,0xE4,0x45,0xDF,0xE4,0x67,0xCD,0xC5,0x89,0xBF,0xCD,0xAB,0xB7,0xB4,0xCD,0xAA,0xA4,0xEF,0xA6,0xA5, +0x39,0,53,0xD4,0x00,0x00,0x11,0x02,0xF2,0x23,0xE9,0xE0,0x45,0xDC,0xDD,0x67,0xCC,0xC2,0x89,0xC4,0xD0,0xAB,0xBF,0xB9,0xCD,0xB3,0xAC,0xEF,0xA8,0xA5,0x00,0x00,0x12,0x16,0x20,0x34,0x28,0x30,0x56,0x31,0x38,0x78,0x2F,0x29,0x9A,0x19,0x10,0xAB,0xFF,0xED,0xCD,0xD6,0xBC,0xEF,0xAF,0xB2, +0x39,0,53,0xD5,0x00,0x00,0x12,0x33,0x36,0x34,0x3F,0x45,0x56,0x49,0x4E,0x78,0x47,0x48,0x9A,0x3F,0x3C,0xBC,0x30,0x29,0xDD,0x15,0xFE,0xEF,0xDE,0xBE,0x00,0x00,0x12,0x18,0x26,0x34,0x31,0x39,0x56,0x3D,0x42,0x78,0x3B,0x38,0x9A,0x2D,0x22,0xBC,0x0E,0x0A,0xCD,0xF8,0xE0,0xEF,0xC9,0xB9, +0x39,0,53,0xD6,0x80,0x00,0x02,0xD9,0x08,0x34,0x13,0x1A,0x46,0xE9,0x3C,0x78,0x76,0x8C,0x9A,0xA4,0xBE,0xBC,0xCE,0xD8,0xDE,0xD7,0xD7,0xF1,0xF4,0x16,0x80,0x00,0x02,0xCF,0x01,0x34,0x0A,0x1A,0x46,0xEE,0x44,0x78,0x7B,0x90,0x9A,0xAC,0xC7,0xBC,0xD5,0xD8,0xDE,0xE3,0xED,0xF0,0xF4,0xFC, +0x39,0,27,0xD7,0x80,0x00,0x02,0xF1,0x1B,0x34,0x27,0x2A,0x46,0xFF,0x5D,0x78,0x94,0xAD,0x9A,0xC7,0xDC,0xBC,0xE9,0xE9,0xDE,0xE7,0xE4,0xF1,0xF4,0x06, +0x39,0,18,0xD8,0x80,0x96,0x91,0x8D,0x8B,0x8A,0x96,0x90,0x8E,0x87,0x90,0x96,0x92,0x85,0x8F,0x94,0x96, +0x39,0,2,0x9F,0x09, +0x39,0,3,0xB2,0x9C,0x09, +0x39,0,9,0xB3,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80, +0x39,0,16,0xB4,0x76,0xFF,0xDD,0x43,0x84,0x48,0x32,0x47,0x22,0x11,0x85,0x0D,0x00,0xAC,0x01, +0x39,0,35,0xC0,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58,0x00,0x00,0x01,0x64,0x9C,0xC8,0x18,0x55,0x52,0x72,0x9A,0xB8,0x5A,0xE0,0xF4,0x26,0x58, +0x39,0,29,0xC1,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD0,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x0F,0x13,0x16,0x1A,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xC2,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC3,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC4,0xFF,0xF5,0xED,0xE5,0xDE,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x13,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC5,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC6,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC7,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC8,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xC9,0xFF,0xF5,0xED,0xE8,0xE0,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCA,0xFF,0xF5,0xED,0xE5,0xDD,0xD6,0xD3,0xCD,0xC9,0x0F,0xC9,0xC0,0xC0,0xC0,0x00,0x0F,0x15,0x15,0x1B,0x20,0x2F,0x35,0x35,0x00,0x38,0x38,0x38,0x38, +0x39,0,29,0xCB,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x15,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCC,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x0F,0x12,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCD,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCE,0xFF,0xF3,0xF0,0xE8,0xDD,0xD8,0xD5,0xD0,0xCD,0x0F,0xC5,0xC3,0xC3,0xC3,0x00,0x08,0x17,0x18,0x1F,0x20,0x23,0x25,0x2D,0x00,0x2D,0x2D,0x2D,0x2D, +0x39,0,29,0xCF,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD1,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD2,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD3,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x08,0x0D,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,29,0xD4,0xFF,0xF5,0xF3,0xED,0xDE,0xD8,0xCD,0xC8,0xCF,0x0F,0xCD,0xC5,0xC3,0xC3,0x00,0x0F,0x12,0x0F,0x12,0x15,0x17,0x18,0x1D,0x00,0x1F,0x20,0x25,0x2D, +0x39,0,17,0xD5,0x17,0xF9,0xFE,0xFD,0x05,0x00,0x00,0x00,0x17,0xF9,0xF8,0xFE,0x00,0x00,0x00,0x00, +0x39,0,17,0xD6,0x18,0xF5,0xF8,0x03,0x00,0x00,0x00,0x00,0x17,0xEB,0xED,0xEF,0x00,0x00,0x00,0x00, +0x39,0,13,0xD7,0x05,0x00,0x80,0x00,0x80,0xAF,0x00,0x80,0x00,0x80,0x03,0xFF, +0x39,0,17,0xD8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, +0x39,0,6,0xEE,0x30,0x10,0x00,0x10,0xFF, +0x39,0,2,0x9F,0x0A, +0x39,0,12,0xB2,0x1F,0x00,0x10,0x01,0x00,0x07,0x00,0x00,0x00,0x11,0x00, +0x39,0,43,0xB3,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB4,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,43,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, +0x39,0,12,0xBE,0x00,0x1F,0xFF,0x13,0x91,0x0F,0x04,0x00,0x24,0x80,0xFF, +0x39,0,2,0x9F,0x0B, +0x39,0,10,0xB2,0x01,0x3F,0x3F,0x0F,0x3F,0x0F,0x5F,0x0F,0x0F, +0x39,0,49,0xB9,0x32,0x00,0x00,0x00,0x00,0x00,0x6B,0x54,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBA,0x32,0x00,0x00,0x00,0x00,0x00,0x54,0x69,0x24,0x1C,0xB0,0x14,0xC8,0x5C,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBC,0x32,0x00,0x00,0x00,0x00,0x00,0x4b,0x4b,0x24,0x1C,0xB0,0x14,0xD1,0x65,0x24,0x1C,0xB0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,49,0xBE,0x32,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x1C,0x33,0x00,0x00,0x00,0x00,0x20,0x20,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,20,0xC6,0x8F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,20,0xC7,0x0F,0x04,0x04,0x04,0x04,0xFF,0xFF,0xFF,0xFF,0x00,0x22,0x22,0x22,0x22,0x00,0x1E,0x1E,0x1E,0x1E, +0x39,0,16,0xC8,0xF9,0x05,0x05,0xB0,0xE0,0xB0,0x50,0xBA,0xF0,0xB0,0xE0,0xB0,0x20,0xD0,0x50, +0x39,0,2,0x9F,0x0D, +0x39,0,16,0xB2,0x25,0x10,0x21,0x01,0x02,0x10,0x00,0x00,0x16,0x10,0x00,0x00,0x01,0xAA,0x90, +0x39,0,2,0xB3,0xB0, +0x39,0,13,0xB5,0x00,0x24,0x07,0x01,0x00,0x00,0x00,0x00,0x20,0x04,0xEE,0x21, +0x39,0,4,0xB6,0x02,0x12,0x22, +0x39,0,5,0xB7,0x20,0xF0,0xC0,0xE0, +0x39,0,13,0xB8,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0,0x20,0xF0,0xC0,0xE0, +0x39,0,5,0xB9,0x01,0x01,0x01,0x01, +0x39,0,3,0xBA,0x00,0x00, +0x39,0,2,0xBB,0x01, +0x39,0,21,0xBC,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08, +0x39,0,6,0xBD,0x02,0x00,0x02,0x06,0x5B, +0x39,0,12,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2A,0x00, +0x39,0,2,0x48,0x03, //00 cmd 0x03 vdo +//// bist mode +//0x39,0,2,0x9F,0x01, +////0x39,0,5,0xC6,0x01,0x20,0x18,0x02, +//0x39,0,3,0xC6,0x03,0x08, +0x39,0,1,0x11, +//0x39,0,3,0x51,0x00,0x00, +0x39,0,2,0x53,0xE0, +0x39,0,1,0x35, +//0x39,0,1,0x29, + +#endif +#if DDIC_FPS_SETTING +0x39,0,2,0x9F,0x04, +0x39,0,14,0xB5,0x00,0x17,0x27,0x1B,0x17,0x00,0x75,0x75,0x10,0x3B,0x08,0xA8,0x48, // 0x3B,0x10,0xB8,0x40,(美版ANDROID 13放久过后指纹解会失效) +//1226 0x3B,0x08,0xA8,0x48(ANDROID 13+++/14+++) 0x3B,0x10,0xA8,0x50(ANDROID 13++/14++) 0x3B,0x00,0xAF,0x58(ANDROID 13++/14+) +//1225 0x3B,0x08,0xA0,0x48(ANDROID 13+++/14++) 0x3B,0x10,0xA8,0x48(ANDROID 13++/14++) 0x3B,0x10,0xA8,0x4F(ANDROID 13++/14++) 0x3B,0x10,0xA0,0x48(ANDROID 13++/14++) 0x3B,0x10,0xB0,0x4F(ANDROID 13++/14+) , 0x3B,0x10,0xB8,0x4F(ANDROID 13++/14+) 0x3B,0x18,0xB8,0x4F(ANDROID 13++/14) 0x3B,0x08,0x98,0x2F(ANDROID 13++/14-); 0x3B,0x28,0xB8,0x4F(ANDROID 13++/14--); , 0x3B,0x20,0xB0,0x40 (ANDROID 13/14 JP NG) +//1222 0x2B,0xF0,0x98,0x7F(ALL OK) 0x2B,0xF0,0x98,0x2F (ALL OK 2nd) 0x2B,0xF0,0x98,0x00, (ALL OK 3rd )0x2B,0xF0,0x9F,0x3F 0x2B,0xDF,0x8F,0x4F(ANDROID 12 FAIL ) +//1214 0x2B,0xFF,0x9F,0x5F 0x2B,0xFF,0xCF,0x5F +//ANDROID 14 0x2B,0xF0,0x90,0x20 秒解 LAST VERSION 0x3B,0x3F,0xDF,0x6F +// 1211 fail FOR ALL VERSION 0x3B,0x3F,0xEF,0x6F; 0x3B,0x2F,0xDF,0x5F; 0x3B,0x1F,0xCF,0x4F; 0x3B,0x1F,0xCF,0x4F; 0x3B,0x0F,0xBF,0x3F; 0x2B,0xFF,0xAF,0x3F +0x39,0,18,0xBE,0x00,0xCF,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF, +0x39,0,46,0xE9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEA,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,46,0xEB,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEC,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,46,0xED,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x3F,0x3F,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,28,0xEE,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF,0x33,0xFF,0xFF, +0x39,0,10,0xF8,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +0x39,0,10,0xF9,0xE1,0x18,0x15,0x00,0xF0,0xF8,0xF0,0xEE,0x00, +0x39,0,10,0xFA,0x1E,0xE0,0xE0,0xE0,0x00,0x18,0x15,0x00,0xE0, +0x39,0,2,0x9F,0x05, +0x39,0,13,0xB4,0x02,0x0F,0x3E,0x00,0x00,0x10,0x06,0x00,0x00,0x02,0x40,0x8D, +0x39,0,41,0xE6,0x0F,0xFF,0x07,0xFF,0x03,0x33,0x01,0x47,0x01,0x46,0x00,0xCD,0x00,0x66,0x00,0x3A,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,41,0xE8,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0F,0xFF,0x0C,0xF0,0x09,0x71,0x07,0x54,0x04,0x8C,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +//0x39,0,41,0xE8,0x01,0xFF,0x00,0x1F,0x00,0x2F,0x00,0x1F,0x00,0x1F,0x0C,0xF0,0x09,0x71,0x07,0x54,0x04,0x8C,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x39,0,31,0xE9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + + +#endif +}; + +#endif + + +/** +* @brief panel init +* @param none +* @retval none +*/ +static void app_init_panel(void) +{ + /* reset panel*/ + app_tx_panel_reset(); +#if PANEL_INIT_CODE_ARRAY + send_panel_init_code(sizeof(panel_init_code), (uint8_t *) panel_init_code); +#endif + hal_gpio_init_output(IO_PAD_AP_PWMEN, IO_LVL_HIGH); + delayMs(90); +#if AP_SWIRE_OUTPUT + hal_swire_enable(true); + hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +#endif +// hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_HIGH); +// Gpio_swire_output(2, 40); + +// TAU_LOGD("Panel init!\n\r"); +} + +#if TX_CMD_MODE_WITHOUT_TE +/** +* @brief MIPI RX事件处理函数,demo code 用于command mode 输出发送数据(模式1) +* @param event:RX事件 +* @param data: user data +* @retval none +*/ +static void app_rx_event_cb(hal_rx_event_e event, void *data) +{ + if (panel_display_done && event == HAL_RX_LINE_EVENT) + { + hal_dsi_tx_ctrl_gen_a_frame(); + } +} +#endif + +#if TX_USE_CMD_MODE +/** +* @brief TE引脚作为GPIO 输入回调函数,demo code 用于command mode 输出发送数据(模式2) +* @param none +* @retval none +*/ +static void app_tx_cmd_panel_te_cb(void *data) +{ + if (panel_display_done) + { + //delayUs(25); /* 撕裂调试 */ + hal_dsi_tx_ctrl_gen_a_frame(); + } +} + +/** +* @brief 注册屏端TE信号输入引脚回调函数 +* @param pad :TE输入pad +* @param trig:触发中断沿配置 +* @retval none +*/ +static void app_tx_cmd_app_init_panel_te_int(io_pad_e pad, sys_cfg_trigger_e trig) +{ + /*1.关闭中断*/ + hal_gpio_ctrl_eint(pad, DISABLE); + + /*2.中断初始化*/ + hal_gpio_init_eint(pad, trig); + + /*3.注册回调*/ + hal_gpio_reg_eint_cb(pad, app_tx_cmd_panel_te_cb); + + /*4.使能中断*/ + hal_gpio_ctrl_eint(pad, ENABLE); +} +#endif + +/** +* @brief mipi rx 初始化 +* @param none +* @retval none +*/ +static void app_mipi_rx_init(void) +{ + if (g_rx_ctrl_handle == NULL) + { + /* 创建rx ctrl handle */ + g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); + } + /* 配置参数 */ + g_rx_ctrl_handle->base_info.src_w = INPUT_WIDTH; + g_rx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; + g_rx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; + g_rx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; + g_rx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; + g_rx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; + g_rx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; + g_rx_ctrl_handle->rx_color_mode = INPUT_COLOR_MODE; + g_rx_ctrl_handle->rx_lanes = INPUT_MIPI_LANE_NUM; + g_rx_ctrl_handle->rx_nonburst_models = INPUT_VIDEO_MODEL; /* 可不配置 */ + g_rx_ctrl_handle->compress_en = INPUT_COMPRESS; + g_rx_ctrl_handle->rx_hsclk_rate = INPUT_MIPI_LANE_RATE; + g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table; /* 注册 DCS处理列表 */ + g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read; /* 注册dsc read 回调函数,可选,此函数为空时由cus_dcs_entry_table执行 */ +// g_rx_ctrl_handle->hight_performan_mode=HIGHT_PERFORMAN_L2; + g_rx_ctrl_handle->extra_info.crop_info.top =12; //4 8 的倍数 + g_rx_ctrl_handle->extra_info.crop_info.enable=1; +#if RX_RESOLUTION_CHANGE_ENABLE + g_rx_ctrl_handle->pps_update_entry = pps_update_handle; +#endif + /* 提前预置PPS, AP 有PPS cmd也会更新 */ + if (g_rx_ctrl_handle->compress_en == true) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); + } + + /* 初始化rx ctrl */ + hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); + +#if RX_READ_HW_ACK + /* 配置硬件回复 */ + app_set_dcs_hw_ack(); +#endif + +#if TX_CMD_MODE_WITHOUT_TE + /* 注册接收一帧帧头事件回调,每接收一帧数据TX再往外发一帧 */ + //hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_FS_EVENT, true, NULL); + /* 注册接收第0行数据事件,接收到数据后再往外发送数据,确保不撕裂 */ + uint32_t line = 0; + hal_dsi_rx_ctrl_register_callback(g_rx_ctrl_handle, app_rx_event_cb, HAL_RX_LINE_EVENT, true, &line); +#endif + +#if RX_START_WITHOUT_RST + /* 等待ap reset置位再启动rx,否则容易收到错误数据 */ + hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +#else + /* 注册RX start callback,确认RX LP11时再启动RX,防止接收错误数据 */ + hal_gpio_set_ap_reset_int(ENABLE, app_mipi_rx_start_cb, DETECT_HIGH_LVL); +#endif + TAU_LOGD("rx init!\n\r"); +} + +/** +* @brief mipi tx 初始化 +* @param none +* @retval none +*/ +static void app_mipi_tx_init(void) +{ + if (g_tx_ctrl_handle == NULL) + { + g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle(); + } + g_tx_ctrl_handle->channel_id = OUTPUT_VC; + g_tx_ctrl_handle->lane_num = OUTPUT_LANE_NUMBER; + g_tx_ctrl_handle->vid_mode = OUTPUT_VIDEO_MODEL; + g_tx_ctrl_handle->cmd_tx_type = TX_INIT_TYPE; + g_tx_ctrl_handle->dpi_vsa = OUTPUT_VSA; + g_tx_ctrl_handle->dpi_vbp = OUTPUT_VBP; + g_tx_ctrl_handle->dpi_vfp = OUTPUT_VFP; + g_tx_ctrl_handle->dpi_hsa = OUTPUT_HSA; + g_tx_ctrl_handle->dpi_hbp = OUTPUT_HBP; + g_tx_ctrl_handle->dpi_hfp = OUTPUT_HFP; + g_tx_ctrl_handle->base_info.src_w = INPUT_WIDTH; + g_tx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; + g_tx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; + g_tx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; + g_tx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; + g_tx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; + g_tx_ctrl_handle->base_info.dst_mode = OUTPUT_DATA_MODE; + g_tx_ctrl_handle->tx_frame_rate=58; +// g_tx_ctrl_handle->tx_lane_lp = 2; + + /* 初始化屏时每一条LP CMD都退出LPDT 再进入发送下一条 */ + /* 解决FT8720 TDDI 显示翻转问题 */ + // g_tx_ctrl_handle->lp_exit_lpdt = true; + + hal_dsi_tx_ctrl_init(g_tx_ctrl_handle); +// hal_dsi_tx_ctrl_set_cus_sync_line(g_tx_ctrl_handle,1200); //1200 + + /* FIXME set tear on*/ + // hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); + + /* AP 没有发送数据时默认的显示颜色, 量产为0 0 0(黑色), 配置其他颜色仅为debug使用 */ + hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0x00); + TAU_LOGD("tx init!\n\r"); +} + +#if !RX_START_WITHOUT_RST +/** +* @brief mipi rx start函数,开启AP RSTN等待启动配置后使用 +* @param none +* @retval none +*/ +static void app_mipi_rx_start_cb(void *data) +{ + /* RX start */ + hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); + /* close cb */ + hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_HIGH_LVL); + TAU_LOGD("rx start\n"); +} +#endif + +void Panel_CCM(void) +{ + ccm_coef_t ccm; + ccm.coef_c00 = 255; // 260 + ccm.coef_c01 = 0; + ccm.coef_c02 = 0; + ccm.coef_c10 = 0; + ccm.coef_c11 = 246; // 247 + ccm.coef_c12 = 0; + ccm.coef_c20 = 0; + ccm.coef_c21 = 0; + ccm.coef_c22 = 247; //248 + + hal_dsi_tx_ctrl_set_ccm(&ccm); +} + + +/** +* @brief mipi tx 启动 +* @param none +* @retval none +*/ +static void app_mipi_tx_start(void) +{ + // TAU_LOGD("tx_start \n"); + /* Init panel */ + app_init_panel(); + /* TX start */ + hal_dsi_tx_ctrl_start(g_tx_ctrl_handle); + +#if RX_WAIT_TEAR_ON + te_mode_e default_te = sg_ap_set_tear_on ? TE_60HZ_MODE : TE_USER_MODE; + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, default_te); +#else + hal_dsi_tx_ctrl_set_tear_mode(g_tx_ctrl_handle, TE_60HZ_MODE); +#endif + + panel_display_done = true; + if(g_tx_ctrl_handle->base_info.src_w==1008) + { + hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps_fhd, 128); + hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); + g_resolution_change = false; + // TAU_LOGD("pps_update!!\r\n"); + } + // soft_te_timer_init(); + delayMs(80); +// Panel_CCM(); +// delayMs(20); + /* Display on */ + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); + +#if AP_SWIRE_OUTPUT + hal_swire_set_pulse(SWIRE_DEFAULT_PULSE); +#endif + +#if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) + // hal_dsi_tx_ctrl_gen_a_frame(); /* FIXME */ + app_tx_cmd_app_init_panel_te_int(IO_PIN_14, DETECT_RISING_EDGE); /* 注册屏端TE中断 */ +#endif + + TAU_LOGD("tx_start \n"); +} + +/** +* @brief ap rstn 拉高中断回调,用于息屏唤醒 +* @param none +* @retval none +*/ +static void ap_rstn_pull_high_cb(void *data) +{ + /* system resume begin */ + sg_system_resume = true; + /* 关闭AP reset检查 */ + hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +} + +/** +* @brief ap rstn 拉高中断回调,用于息屏待机 +* @param none +* @retval none +*/ +static void ap_rstn_pull_down_cb(void *data) +{ + TAU_LOGD("ap_rstn_pull_down_cb\n"); + sg_system_suspend = true; + /* 关闭AP reset检查 */ + hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_RISING_EDGE); +// TAU_LOGD("ap_rstn_pull_down_cb\n"); +} + +/** +* @brief GPIO初始化配置,根据实际原理图提前配置IO功能以及状态,默认功能可不配置 +* TP相关I2C/SPI 在tp_transfer.c,也可以挪到此函数初始化 +* @param none +* @retval none +*/ +void app_gpio_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PIN_8, PIN8_MODE_GPIO7, IO_IOE_OUTPUT, IO_LVL_LOW},/* PIN_8(TD_RSTN), GPIO,输出,低电平 */ + {IO_PIN_17, PIN17_MODE_GPIO8, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_17(PWMEN), GPIO,输出,低电平 */ + {IO_PIN_16, PIN16_MODE_GPIO2, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_16(AP_INT),GPIO,输出,低电平 */ +#if (TX_USE_CMD_MODE & (!TX_CMD_MODE_WITHOUT_TE)) + {IO_PIN_14, PIN14_MODE_GPIO24, IO_IOE_INPUT, IO_LVL_NONE}, /* PIN_29(AP_TE), cmd mode输出, 并且看屏TE,配置AP TE为GPIO输入 */ +#endif + {IO_PIN_29, PIN29_MODE_TEAR, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_29(AP_TE), 硬件TEAR输出模式 */ + + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + + +/** +* @brief 显示相关模块初始化,包括MIPI RX/TX/PWM/SWIRE/GPIO等 +* @param none +* @retval none +*/ +void app_display_init(void) +{ + /* mipi rx初始化 */ + app_mipi_rx_init(); + /* VCC 主供电,等待VCC Power Ready,此时RX初始化完成可以响应MIPI命令 */ + if (MAIN_POWER_SELECT == PWR_SEL_VCC) + { + + while (hal_pwr_get_vcc_power_ready() == false); + } + + /* GPIO 初始化 */ + app_gpio_init(); +//TAU_LOGD("app_gpio_init \n"); + /* 背光初始化 */ +#if AP_SWIRE_OUTPUT + hal_swire_init(); /* swire init */ + hal_swire_set_timer(TIMER_NUM0, 8, true); /* swire连续发送,绑定timer进行发送 */ +#endif +#if ANALOG_PWM_OUTPUT + if (hal_pwm_init(PWM_FREQUENCY, PWM_DUTY_STEP)) + { + hal_pwm_enable(true); + hal_pwm_set_elvcc_output(true); + } +#endif + + /* mipi tx 初始化*/ + app_mipi_tx_init(); +// soft_te_timer_init(); +#if TX_START_AFTER_APRST + TAU_LOGD("wait exit sleep mode\n"); +#else + app_mipi_tx_start(); +#endif +} + +/** +* @brief 系统resume +* @param sleep_mode: sleep 模式 +* @retval none +*/ +static void app_system_resume(pwr_sleep_mode_e sleep_mode) +{ + /* 退出sleep mode, 电源切换 */ + hal_pwr_exit_sleep_mode(); + + /* display resume */ + app_display_init(); + +#if TOUCH_ENABLE + /* touch resume */ + app_tp_write_other_operations(NULL, 0); +#endif + TAU_LOGD("system resume\n"); +} + +/** +* @brief 系统suspend,进入sleep mode +* @param sleep_mode: sleep 模式 +* @retval none +*/ +static void app_system_suspend(pwr_sleep_mode_e sleep_mode) +{ +// TAU_LOGD("SLEEP_MODE\n"); + /* 关闭图像通路 */ + hal_dsi_tx_ctrl_stop(g_tx_ctrl_handle); + hal_dsi_tx_ctrl_deinit(g_tx_ctrl_handle); + hal_dsi_rx_ctrl_stop(g_rx_ctrl_handle); + hal_dsi_rx_ctrl_deinit(g_rx_ctrl_handle); + + /* Tear拉低 */ + hal_gpio_init_output(IO_PAD_AP_TE, IO_LVL_LOW); + panel_display_done = false; +#if RX_WAIT_TEAR_ON + sg_ap_set_tear_on = false; +#endif + + /* 关闭外设 比如Swire/I2C/Flash 等 */ +#if AP_SWIRE_OUTPUT + hal_swire_deinit(); +#endif +#if ANALOG_PWM_OUTPUT + hal_pwm_deinit(); +#endif + +#if SHARE_FLASH_ENABLE + hal_flash_share_mode(false); +#endif + + /* 切换TP18 供电 */ + hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); + + if (sleep_mode == PWR_NORMAL_SLEEP_MODE) + { + /* normal sleep mode, MCU可以正常工作 */ + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); + hal_pwr_enter_normal_sleep_mode(); + TAU_LOGD("PWR_NORMAL_SLEEP_MODE\n"); + } + else if (sleep_mode == PWR_STOP_SLEEP_MODE) + { + TAU_LOGD("PWR_STOP_SLEEP_MODE\n"); + + /* 注册对应 wakeup IO */ + hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_RSTN, WUP_RISING_EDGE); + //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_SPIS_CSN, WUP_FALLING_EDGE); + //hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_TD_INT, WUP_FALLING_EDGE); + io_pad_e wakeup_io = hal_pwr_enter_stop_sleep_mode(); + if (wakeup_io == IO_PAD_AP_RSTN) + { + sg_system_resume = true; + } + else + { + /* Not impletmented */ + TAU_LOGD("wakeup_io %d FIXME touch wakeup convert to AP\n", wakeup_io); + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_HIGH_LVL); + } + } + else + { + /* deep sleep mode,配置AP RSTN 上升沿,TD INT 下降沿唤醒 */ + hal_pwr_enter_deep_sleep_mode(WUP_RISING_EDGE, WUP_FALLING_EDGE); + TAU_LOGD("PWR_DEEP_SLEEP_MODE\n"); + } + +} + +/** +* @brief 系统process处理函数,处理待机唤醒等 +* @param none +* @retval none +*/ +static void app_system_process(void) +{ + + if (sg_system_suspend) + { + TAU_LOGD("app_system_process\n"); + /* 系统进入sleep mode */ + app_system_suspend(SLEEP_MODE_SELECT); + sg_system_suspend = false; + } + + if (sg_system_resume) + { + /* 系统退出sleep mode */ + app_system_resume(SLEEP_MODE_SELECT); + sg_system_resume = false; + } + +#if TX_START_AFTER_APRST + if (sg_tx_start_in_process) + { + app_mipi_tx_start(); + sg_tx_start_in_process = false; + } +#endif +} + + + +/** +* @brief mi12 lite demo 主函数 +* @param none +* @retval none +*/ +void google_p8p_demo(void) +{ +// hal_gpio_set_high_impedance(IO_PIN_14); +// TAU_LOGD("p6p demo reset flag=%d \n", hal_pwr_get_reset_flag()); + + /* 电源选择,上电只需要选择一次 */ + hal_pwr_set_main_power(MAIN_POWER_SELECT); /* 切换供电*/ +// if (MAIN_POWER_SELECT == PWR_SEL_VCC) +// { +// while (hal_pwr_get_vcc_power_ready() == false); +// } + /* 显示模块初始 */ + app_display_init(); + + /* touch 相关模块初始化 */ +#if TOUCH_ENABLE + /* TP 初始化 */ + app_tp_init(); + app_tp_phone_clear_reset_on(); + /* 与屏的TP 模块通讯并初始化 */ + app_tp_transfer_screen_start(); +#endif + + TAU_LOGD("p8p demo init done \n"); + + while (1) + { + + ///hal_dsi_tx_ctrl_set_vpg(1, TX_VPG_H_COLOR, true); +#if TOUCH_ENABLE + /* 等待屏TP中断上报做TP协议转换,注意接口实现不可阻塞!否则会影响sleep mode */ + app_tp_transfer_screen_int(); +#endif + /* DCS 命令异步处理 */ + while (hal_dsi_rx_ctrl_dcs_async_handler(g_rx_ctrl_handle)); + + /* 系统事件处理(sleep mode) */ + app_system_process(); + } +} +#endif diff --git a/src/app/P8P/p8p_demo.h b/src/app/P8P/p8p_demo.h new file mode 100644 index 0000000..5e78fcd --- /dev/null +++ b/src/app/P8P/p8p_demo.h @@ -0,0 +1,21 @@ +/******************************************************************************* +* Copyright (C) 2019-2022, TAU Systems (R),All Rights Reserved. +* +* File: P8P.h +* Description GOOGLE P8P DEMO file +* Version V0.1 +* Date 2023-12-25 +* Author Markin +*******************************************************************************/ +#ifndef __GOOGLE_P8P_DEMO_H__ +#define __GOOGLE_P8P_DEMO_H__ + + +#define PANEL_INIT_CODE_ARRAY 1 +#define DDIC_FPS_SETTING 1 + + + +void google_p8p_demo(void); + +#endif diff --git a/src/app/draw_mode/draw_mode_lib.c b/src/app/draw_mode/draw_mode_lib.c new file mode 100644 index 0000000..9ea817b --- /dev/null +++ b/src/app/draw_mode/draw_mode_lib.c @@ -0,0 +1,288 @@ +/******************************************************************************* +* +* File: draw_mode_lib.c +* Description 画点模式下,提供画线、画圆、画矩阵等函数 +* Version V0.1 +* Date 2022-6-21 +* Author Tempest +*******************************************************************************/ +#include "tau_log.h" +#include "tau_operations.h" +#include "tau_common.h" +#include "tau_delay.h" +#include "hal_dsi_rx_ctrl.h" + +#define FONT_SIZE 50 //如需要显示其他字体大小,按照新的大小重新取模后更新到字库并修改该宏即可 + +/* + *字库软件使用pctolcd2002 + *关键配置:字宽&字高=50;点阵格式:阴码;取模走向:顺向;取模方式:逐列式;每行显示数据:点阵=16,索引=8; + *以下是对“你好”的取模 + * + */static const unsigned char font_50x50[][FONT_SIZE * FONT_SIZE] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xF8, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x1F, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x1F, 0x01, 0xFE, 0x00, 0x10, 0x00, 0x00, 0xFE, 0x01, 0xF8, 0x00, 0x10, 0x00, 0x07, + 0xFC, 0x00, 0xE0, 0x00, 0x10, 0x00, 0x1F, 0xE4, 0x00, 0x40, 0x00, 0x18, 0x00, 0x1F, 0x84, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x04, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x04, 0x7F, 0xFF, 0xFF, 0xFE, 0x00, + 0x00, 0x04, 0x7F, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0x1C, 0x00, 0x00, 0x00, 0x00, + 0x05, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x1F, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*"你"0*/ + }, + + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x07, 0xC0, 0x18, + 0x00, 0x00, 0x01, 0x00, 0x7F, 0xC0, 0x10, 0x00, 0x00, 0x01, 0x07, 0xFE, 0x40, 0x30, 0x00, 0x00, + 0x01, 0xFF, 0xE0, 0x20, 0x60, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x20, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, + 0x00, 0x21, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x17, 0x80, 0x00, 0x0F, 0xC1, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x3F, 0xEC, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xF8, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x80, + 0x07, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x40, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, + 0x1C, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x1F, 0x00, + 0x00, 0x81, 0x80, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x81, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x83, 0x40, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*"好"0*/ + }, +}; + +/** + * @brief 带颜色画线函数(直线、斜线) + * @param x1,y1 起点坐标 + * @param x2,y2 终点坐标 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @return none + */ +void lcd_draw_colorLine(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data) +{ + uint16_t i = 0; + int16_t delta_x = 0, delta_y = 0; + int8_t incx = 0, incy = 0; + uint16_t distance = 0; + uint16_t t = 0; + uint16_t x = 0, y = 0; + uint16_t x_temp = 0, y_temp = 0; + + if (y1 == y2) + { + /* 快速画水平线 */ + if (x1 < x2) + { + for (i = x1; i < x2; i++) + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, i, y1, red_data, green_data, blue_data); + } + } + else + { + for (i = x2; i < x1; i++) + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, i, y1, red_data, green_data, blue_data); + } + } + return; + } + else + { + /* 画斜线(Bresenham算法) */ + /* 计算两点之间在x和y方向的间距,得到画笔在x和y方向的步进值 */ + delta_x = x2 - x1; + delta_y = y2 - y1; + if (delta_x > 0) + { + //斜线(从左到右) + incx = 1; + } + else if (delta_x == 0) + { + //垂直斜线(竖线) + incx = 0; + } + else + { + //斜线(从右到左) + incx = -1; + delta_x = -delta_x; + } + if (delta_y > 0) + { + //斜线(从左到右) + incy = 1; + } + else if (delta_y == 0) + { + //水平斜线(水平线) + incy = 0; + } + else + { + //斜线(从右到左) + incy = -1; + delta_y = -delta_y; + } + + /* 计算画笔打点距离(取两个间距中的最大值) */ + if (delta_x > delta_y) + { + distance = delta_x; + } + else + { + distance = delta_y; + } + + /* 开始打点 */ + x = x1; + y = y1; + //第一个点无效,所以t的次数加一 + for (t = 0; t <= distance + 1; t++) + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x, y, red_data, green_data, blue_data); + + /* 判断离实际值最近的像素点 */ + x_temp += delta_x; + if (x_temp > distance) + { + //x方向越界,减去距离值,为下一次检测做准备 + x_temp -= distance; + //在x方向递增打点 + x += incx; + + } + y_temp += delta_y; + if (y_temp > distance) + { + //y方向越界,减去距离值,为下一次检测做准备 + y_temp -= distance; + //在y方向递增打点 + y += incy; + } + } + } +} + +/** + * @breif 带颜色画矩形函数 + * @param x1,y1: 矩形起始点 + * @param x2,y2 : 矩形终点 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @retval none + */ +void lcd_draw_colorRect(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data) +{ + lcd_draw_colorLine(rx_ctrl_handle, x1, y1, x2, y1, red_data, green_data, blue_data); + lcd_draw_colorLine(rx_ctrl_handle, x1, y1, x1, y2, red_data, green_data, blue_data); + lcd_draw_colorLine(rx_ctrl_handle, x1, y2, x2, y2, red_data, green_data, blue_data); + lcd_draw_colorLine(rx_ctrl_handle, x2, y1, x2, y2, red_data, green_data, blue_data); +} + +/** + * @breif 带颜色画圆函数 + * @param x1,x2: 圆心坐标 + * @param r: 半径 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @retval none + */ +void lcd_draw_colorcircle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x, uint16_t y, uint16_t r, uint8_t red_data, uint8_t green_data, uint8_t blue_data) +{ + int a, b, num; + a = 0; + b = r; + /* 如果圆在屏幕可见区域外,直接退出 */ + if ((x - r < 0) || (x + r > rx_ctrl_handle->base_info.dst_w) || (y - r < 0) || (y + r > rx_ctrl_handle->base_info.dst_h)) + { + TAU_LOGD("circle outof size \n"); + return; + } + while (2 * b * b >= r * r) + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x + a, y - b, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x - a, y - b, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x - a, y + b, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x + a, y + b, red_data, green_data, blue_data); + + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x + b, y + a, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x + b, y - a, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x - b, y - a, red_data, green_data, blue_data); + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x - b, y + a, red_data, green_data, blue_data); + + a++; + num = (a * a + b * b) - r * r; + if (num > 0) + { + b--; + a--; + } + } +} + +/** + * @brief 带颜色输出字体 + * @param x,y: 屏幕的位置 + * @param index: 字所在数组的位置 + * @param font_color: 字的颜色,0xRRGGBB + * @param back_color: 背景颜色,0xRRGGBB + * @return none + */ +void lcd_draw_chinese(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x, uint16_t y, uint16_t index, uint32_t font_color, uint16_t back_color) +{ + uint32_t temp, i, j, size = FONT_SIZE; + uint32_t y0 = y; + uint32_t csize = (size * size) / 8; //得到字体一个字符对应点阵集所占的字节数 + for (i = 0; i < csize; i++) + { + temp = font_50x50[index][i]; + for (j = 0; j < 8; j++) + { + if (temp & 0x80) + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x, y, (font_color >> 16) & 0xFF, (font_color >> 8) & 0xFF, font_color & 0xFF); + } + else + { + hal_dsi_rx_ctrl_set_pixel_data(rx_ctrl_handle, x, y, (back_color >> 16) & 0xFF, (back_color >> 8) & 0xFF, back_color & 0xFF); + } + temp <<= 1; + y++; + if ((y - y0) == size) + { + y = y0; + x++; + break; + } + } + } +} + diff --git a/src/app/draw_mode/draw_mode_lib.h b/src/app/draw_mode/draw_mode_lib.h new file mode 100644 index 0000000..b8eed7a --- /dev/null +++ b/src/app/draw_mode/draw_mode_lib.h @@ -0,0 +1,56 @@ +/******************************************************************************* +* +* +* File: draw_mode_lib.h +* Description draw mode 函数申明 +* Version V0.1 +* Date 2022-06-21 +* Author Tempest +*******************************************************************************/ +#ifndef __DRAW_MODE_H__ +#define __DRAW_MODE_H__ + + +/** + * @brief 带颜色画线函数(直线、斜线) + * @param x1,y1: 起点坐标 + * @param x2,y2: 终点坐标 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @return none + */ +void lcd_draw_colorLine(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data); + +/** + * @breif 带颜色画矩形函数 + * @param x1,y1: 矩形起始点 + * @param x2,y2 : 矩形终点 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @retval none + */ +void lcd_draw_colorRect(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data); + +/** + * @breif 带颜色画圆函数 + * @param x,y: 圆心坐标 + * @param r: 半径 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @retval none + */ +void lcd_draw_colorcircle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x, uint16_t y, uint16_t r, uint8_t red_data, uint8_t green_data, uint8_t blue_data); + +/** + * @brief 带颜色输出字体 + * @param x,y: 屏幕的位置 + * @param index: 字所在数组的位置 + * @param font_color: 字的颜色,0xRRGGBB + * @param back_color: 背景颜色,0xRRGGBB + * @return none + */ +void lcd_draw_chinese(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x, uint16_t y, uint16_t index, uint32_t font_color, uint16_t back_color); +#endif diff --git a/src/app/main.c b/src/app/main.c new file mode 100644 index 0000000..c470c3a --- /dev/null +++ b/src/app/main.c @@ -0,0 +1,26 @@ +#include +#include +#include +#include "test_cfg_global.h" +#include "tau_log.h" +#include "hal_system.h" +#include "board.h" +#include "module_demo_main.h" +int main() +{ + board_Init(); + + while (1) + { +#if _MODULE_DEMO_ENABLE + module_demo_main(); +#endif + + +#if _DEMO_GOOGLE_P8P_EN + google_p8p_demo(); +#endif + TAU_LOGD("668 Demo\n"); + while (1); + } +} diff --git a/src/app/module_demo/README.txt b/src/app/module_demo/README.txt new file mode 100644 index 0000000..ed6980f --- /dev/null +++ b/src/app/module_demo/README.txt @@ -0,0 +1 @@ +module_demo:存放hal层给客户的demo code,每个客户都需要release \ No newline at end of file diff --git a/src/app/module_demo/demo_hal_crc.c b/src/app/module_demo/demo_hal_crc.c new file mode 100644 index 0000000..e675e8c --- /dev/null +++ b/src/app/module_demo/demo_hal_crc.c @@ -0,0 +1,137 @@ +/******************************************************************************* +* +* +* File: demo_hal_crc.c +* Description: crc demo源文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "demo_hal_crc.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "crc-log" + +/* CRC计算方式,0-CPU方式; 1-DMA方式 */ +#define CRC_DMA_CAL_EN (1) + +/* for max total of test elements */ +#define CRC_ELEMENT_MAX_TATOL (32u) +/* for crc initial POL regs value */ +#define CRC_32_POL_VALUE0 (0x04C11DB7u) +#define CRC_16_POL_VALUE0 (0x8005u) +/* for crc calculate in crc software calculate */ +#define CRC_SEED_VALUE_0 (0u) +#define CRC_SEED_VALUE_F (0xFFFFu) + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ +#if CRC_DMA_CAL_EN +/* all the one element value crc calculate for software crc */ +static uint32_t sg_crc32_arry[CRC_ELEMENT_MAX_TATOL] = +{ + 0x00000000, 0xFFFFFFFF, 0xAAAAAAAA, 0xEEEEEEEE, 0x55555555, 0x66666666, 0x11111111, 0x77777777, + 0x12345678, 0x456789AB, 0x89ABCDEF, 0x3456789A, 0x6789ABCD, 0x9ABCDEF0, 0xBCDEF012, 0xFEDCAB98, + 0x5a5aa5a5, 0x37377373, 0x98988989, 0x76767676, 0x41233214, 0x67433467, 0x91DF91DF, 0x76347634, + 0x46378912, 0x57351059, 0xABFC9483, 0x837204AF, 0x41057DBA, 0x893CD024, 0x56378105, 0xFA34610B, +}; +#else +/* all the one element value crc calculate for software crc */ +static uint16_t sg_crc16_element_arry[CRC_ELEMENT_MAX_TATOL] = +{ + 0x0000, 0xFFFF, 0xAAAA, 0x2222, 0x3333, 0xDDDD, 0x9999, 0x8888, + 0x1234, 0x5678, 0x9ABC, 0x2345, 0x4567, 0xABCD, 0xCDEF, 0x789A, + 0x5a5a, 0x2323, 0x6868, 0x5aa5, 0x7887, 0x8558, 0x6336, 0xAFAF, + 0x3194, 0x7853, 0x7733, 0x76DE, 0x89CA, 0x7401, 0x7392, 0xD2A8, +}; +#endif +/******************************************************************************* +* 4.Global function prototypes +*******************************************************************************/ +#if CRC_DMA_CAL_EN +/** +* @brief DMA计算CRC值回调函数 +* @param calculate_result: CRC计算结果 +* @retval None +*/ +void demo_crc_dma_callback(uint32_t calculate_result) +{ + TAU_LOGD("dma demo[0x%x]\n", calculate_result); +} + +/** +* @brief DMA计算CRC值 +* @param None +* @retval true or false +*/ +bool demo_crc_array_dma_cal(void) +{ + crc_ctrl_handle_t crc_cfg_para = + { + CRC_32_POL_VALUE0, + CRC_SEED_VALUE_0, + CRC_32_BIT_PROTOCOL, + CRC_FXOR_ENABLE, + CRC_REV_ONLY_BITS_TRANSPOSE, + CRC_REV_ONLY_BITS_TRANSPOSE + }; + + hal_crc_dma_init(&crc_cfg_para, demo_crc_dma_callback, sg_crc32_arry, CRC_ELEMENT_MAX_TATOL); + + hal_crc_dma_start(); + + return true; +} +#else +/** +* @brief CPU阻塞式计算CRC值 +* @param None +* @retval true or false +*/ +bool demo_crc_array_cal(void) +{ + crc_ctrl_handle_t crc_cfg_para = + { + CRC_16_POL_VALUE0, + CRC_SEED_VALUE_F, + CRC_16_BIT_PROTOCOL, + CRC_FXOR_ENABLE, + CRC_REV_BOTH_TRANSPOSE, + CRC_REV_BOTH_TRANSPOSE + }; + + hal_crc_init(&crc_cfg_para); + uint32_t output_crc = hal_crc_cal(sg_crc16_element_arry, CRC_ELEMENT_MAX_TATOL); + TAU_LOGD("cpu demo[0x%x]\n", output_crc); + + return true; +} +#endif + +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_hal_crc_case(void) +{ + TAU_LOGD("HAL CRC DEMO.\n"); + +#if CRC_DMA_CAL_EN + demo_crc_array_dma_cal(); // DMA方式计算 +#else + demo_crc_array_cal(); // CPU方式计算 +#endif + +} + diff --git a/src/app/module_demo/demo_hal_crc.h b/src/app/module_demo/demo_hal_crc.h new file mode 100644 index 0000000..3fd8652 --- /dev/null +++ b/src/app/module_demo/demo_hal_crc.h @@ -0,0 +1,41 @@ +/******************************************************************************* +* +* +* File: demo_hal_crc.h +* Description: crc demo头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_crc.h" +#include "tau_delay.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifndef _DEMO_HAL_CRC_H_ +#define _DEMO_HAL_CRC_H_ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_hal_crc_case(void); + +#endif //_DEMO_HAL_CRC_H_ diff --git a/src/app/module_demo/demo_hal_dsi_rx.c b/src/app/module_demo/demo_hal_dsi_rx.c new file mode 100644 index 0000000..925de61 --- /dev/null +++ b/src/app/module_demo/demo_hal_dsi_rx.c @@ -0,0 +1,212 @@ +/******************************************************************************* +* +* +* File: demo_hal_dsi_rx.c +* Description: dsi rx 测试文件 +* Version: V0.1 +* Date: 2020-06-12 +* Author: lzy + *******************************************************************************/ + +#include "tau_device_datatype.h" +#include "tau_log.h" +#include "tau_operations.h" +#include "tau_common.h" +#include "hal_dsi_rx_ctrl.h" + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_dsi_rx" + +//客户可配参数 +//输入配置 +#define INPUT_WIDTH 720 +#define INPUT_HEIGHT 1280 +//输入 MIPI lane rate,video mode 下需要计算delay, command mode可以不设置或者随便设置 +#define INPUT_MIPI_LANE_RATE 481000000 +//输入图像格式 +#define INPUT_COLOR_MODE DSI_RGB888 +//输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) +#define INPUT_DATA_MODE DSI_DATA_VIDEO_MODE +//输入mipi lane数量(DSI_RX_LANE_x x为1-4) +#define INPUT_MIPI_LANE_NUM DSI_LANE_4 +//输入为video mode 时数据格式 +#define INPUT_VIDEO_MODEL DSI_NONBURST_EVENT +//输入虚拟通道(0-3) +#define INPUT_VC DSI_VC_0 +//输入的帧率(60/90/120/144Hz) +#define INPUT_FRAME_RATE DSI_FRAME_RATE_60HZ +//输入数据是否DSC压缩 +#define INPUT_COMPRESS false + +//输出配置 +#define OUTPUT_WIDTH 720 +#define OUTPUT_HEIGHT 1280 + +static hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = NULL; + +//客制化DCS处理函数 +static bool cus_dsc_execute(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) +{ + TAU_LOGD("cus_dsc_execute DCS[0x%x]\n", dcs_packet->dcs_command); + for (int i = 0; i < dcs_packet->param_length; i ++) + { + TAU_LOGD("cus_dsc_execute param[%d]:0x%x\n", i, dcs_packet->packet_param[i]); + } + +#if 0 + /* ack long cmd */ + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_GEN_LONG_RESPONSE, + DSI_VC_0, + 5, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5); +#else + /* ack short cmd */ + hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, + DSI_VC_0, + 1, + 0xC1); +#endif + return true; +} + +static bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param) +{ + if (dcs_cmd == 0xaa) + { + uint8_t cmd[] = {DSI_ACK_DT_DCS_LONG_RESPONSE, + 212, 0, 1, + 0x21, 0x07, 0x2C, 0x27, 0x2B, 0x7A, 0x78, 0x7A, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x71, 0xE8, 0x36, 0x2A, 0x2E, 0x07, 0x89, 0x17, + 0x8B, 0x84, 0x28, 0x26, 0x6D, 0xEB, 0x12, 0x34, + 0x79, 0x78, 0x79, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7C, 0x67, 0x6E, 0x6c, 0x8A, 0x5B, 0x71, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7d, 0x68, 0x61, 0xd9, 0x1A, 0x5B, 0xa7, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7e, 0x69, 0x63, 0xe9, 0x3c, 0x5B, 0xfE, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7f, 0x60, 0x3E, 0x6f, 0x9b, 0x5B, 0x45, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x70, 0x61, 0x4E, 0xc9, 0xdA, 0x5B, 0x69, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x71, 0x63, 0xaE, 0x88, 0x0A, 0x5B, 0x30, 0x00, + 0x12, 0x34, 0x56, 0x78, 0x9a, 0xab, 0xcd, 0xef, + 0x11, 0x22, 0x33, 0x44, 0x0A, 0x5B, 0x30, 0x00, + 0x12, 0x34, 0x56, 0x78, 0x9a, 0xab, 0xcd, 0xef, + 0x7f, 0x60, 0x3E, 0x6f, 0x9b, 0x5B, 0x45, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7f, 0x60, 0x3E, 0x6f, 0x9b, 0x5B, 0x45, 0x00, + 0x7D, 0x7D, 0x7E, 0x7F, 0x7E, 0x7E, 0x7F, 0x7F, + 0x71, 0xE8, 0x36, 0x2A, 0x2E, 0x07, 0x89, 0x17, + 0x8B, 0x84, 0x28, 0x26, 0x6D, 0xEB, 0x12, 0x34, + 0x11, 0x22, 0x33, 0x44 + }; + /*长包超128字节发送*/ + hal_dsi_rx_ctrl_ack_long_cmd(g_rx_ctrl_handle, sizeof(cmd) / sizeof(uint8_t), cmd); + } + else if (dcs_cmd == 0xFE) + { + uint16_t return_size; + return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle); + if (return_size == 3) + { + uint8_t cmd[] = {DSI_ACK_DT_DCS_LONG_RESPONSE, 3, 0, 1, 0x40, 0x00, 0x03}; + + hal_dsi_rx_ctrl_ack_long_cmd(g_rx_ctrl_handle, sizeof(cmd) / sizeof(uint8_t), cmd); + } + else if (return_size == 32) + { + + uint8_t cmd[] = {DSI_ACK_DT_DCS_LONG_RESPONSE, + 32, 0, 1, 0x01, 0xc4, 0x01, 0xcd, 0x01, 0xfb, 0x55, 0x55, + 0x55, 0x4e, 0x4c, 0x4e, 0x2e, 0x2d, 0x31, 0x30, + 0x30, 0x38, 0x49, 0x42, 0x49, 0x3c, 0x39, 0x47, + 0x01, 0x07, 0x2b, 0xfa, 0x22, 0x19, 0x32, 0x02 + }; + + hal_dsi_rx_ctrl_ack_long_cmd(g_rx_ctrl_handle, sizeof(cmd) / sizeof(uint8_t), cmd); + } + } + + TAU_LOGD("r %x\n", dcs_cmd); + return true; +} + + +static const hal_dcs_execute_entry_t g_cus_rx_dcs_execute_table[] = +{ + {0x83, cus_dsc_execute, false}, //cus dcs 0x83, 处理函数为cus_dsc_execute,不需要立即运行,在while里异步即可 + {0, NULL, false} //{0,NULL,false} 数组最后一个固定成员,作为table结尾的判断标准 +}; + +static void open_mipi_rx() +{ + if (g_rx_ctrl_handle == NULL) + { + g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); + } + + g_rx_ctrl_handle->base_info.src_w = INPUT_WIDTH; + g_rx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; + g_rx_ctrl_handle->base_info.dst_w = OUTPUT_WIDTH; + g_rx_ctrl_handle->base_info.dst_h = OUTPUT_HEIGHT; + g_rx_ctrl_handle->base_info.src_frate = INPUT_FRAME_RATE; + g_rx_ctrl_handle->base_info.src_mode = INPUT_DATA_MODE; + g_rx_ctrl_handle->rx_color_mode = INPUT_COLOR_MODE; + g_rx_ctrl_handle->rx_lanes = INPUT_MIPI_LANE_NUM; + g_rx_ctrl_handle->rx_nonburst_models = INPUT_VIDEO_MODEL; + g_rx_ctrl_handle->compress_en = INPUT_COMPRESS; + g_rx_ctrl_handle->rx_hsclk_rate = INPUT_MIPI_LANE_RATE; + g_rx_ctrl_handle->extra_info.flow_control_mode = FC_AUTO_MODE; + g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table; + g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read; + + /*PIN28~PIN19依次为21c03*/ + g_rx_ctrl_handle->rx_lane_swap = RX_LANE_SWAP_2103; + + /* 对 lane0~lane3 以及clk lane 进行PN交换*/ + g_rx_ctrl_handle->base_info.pn_swap = RX_LANE_0_PN_SWAP | RX_LANE_1_PN_SWAP | RX_LANE_2_PN_SWAP | RX_LANE_3_PN_SWAP | RX_LANE_CLK_PN_SWAP; + + if (g_rx_ctrl_handle->compress_en == true) + { + //hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128); + } + hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); +#if 0 + //使用盒子发送读命令 0xA,0xB,0xC,0xD,0xE,0xF,0x1E,0x1D + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE0, DSI_ACK_DT_DCS_SHORT_RESPONSE_1B, 0x0F, 1, 0xab); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE1, DSI_ACK_DT_DCS_SHORT_RESPONSE_2B, 0x0e, 2, 0xef, 0xcd); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE2, DSI_ACK_DT_GEN_SHORT_RESPONSE_1B, 0x0a, 1, 0x12); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE3, DSI_ACK_DT_GEN_SHORT_RESPONSE_2B, 0x0b, 2, 0x34, 0x56); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE4, DSI_ACK_DT_DCS_LONG_RESPONSE, 0x0c, 4, 0x12, 0x34, 0x56, 0x78); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE5, DSI_ACK_DT_GEN_LONG_RESPONSE, 0x0d, 4, 0xab, 0xcd, 0xef, 0x9a); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE6, DSI_ACK_DT_GEN_LONG_RESPONSE, 0x1e, 8, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8); + hal_dsi_rx_ctrl_set_auto_ack(g_rx_ctrl_handle, HAL_RX_QRESP_CODE7, DSI_ACK_DT_DCS_LONG_RESPONSE, 0x1d, 8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10); +#endif + hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +} + +/** +* @brief test system 主函数 +* @param none +* @retval none +*/ +void demo_hal_dsi_rx_case() +{ + open_mipi_rx(); + TAU_LOGD("open_mipi_rx done !\n"); + while (1) + { + hal_dsi_rx_ctrl_dcs_async_handler(g_rx_ctrl_handle); + } +} diff --git a/src/app/module_demo/demo_hal_dsi_rx.h b/src/app/module_demo/demo_hal_dsi_rx.h new file mode 100644 index 0000000..18d9ad1 --- /dev/null +++ b/src/app/module_demo/demo_hal_dsi_rx.h @@ -0,0 +1,22 @@ +/******************************************************************************* +* +* +* File: demo_hal_dsi_rx.h +* Description: dsi rx 测试头文件 +* Version: V0.1 +* Date: 2020-06-12 +* Author: lzy + *******************************************************************************/ + +#ifndef __DEMO_HAL_DSI_RX_H__ +#define __DEMO_HAL_DSI_RX_H__ + +/** +* @brief test system 主函数 +* @param none +* @retval none +*/ +void demo_hal_dsi_rx_case(void); + +#endif + diff --git a/src/app/module_demo/demo_hal_dsi_tx.c b/src/app/module_demo/demo_hal_dsi_tx.c new file mode 100644 index 0000000..4aa1c85 --- /dev/null +++ b/src/app/module_demo/demo_hal_dsi_tx.c @@ -0,0 +1,389 @@ +/******************************************************************************* +* +* +* File: demo_hal_dsi_tx.c +* Description: dsi_tx demo源文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "demo_hal_dsi_tx.h" +#if AMOLED_NT37280 +#include "hal_swire.h" +#endif + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "tx-log" + +#define DEMO_TX_VPG_EN (0) // 只适用于video模式输入video模式输出 +#define DEMO_RX_GEN_PATTERN (0) // TX VPG和RX pattern不建议同时打开 +#define DEMO_CCM_EN (0) // 基于RX pattern数据通路进行CCM调整 +#define DEMO_ENDIAN_EN (0) // RGB大小端配置 +#define DEMO_OVERWRITE_EN (0) // Overwrite功能配置 +#define DEMO_EDGE_DECT_EN (0) // 边缘检测功能配置 +#define DEMO_EDGE_ENHANCE_EN (0) // 边缘增强功能配置 +#define DEMO_FC_EN (0) // false color功能配置 +#define DEMO_BCS_EN (0) // BCS调整功能配置 +#define DEMO_BTA_LP_EN (0) // LP模式下BTA使用 +#define DEMO_BTA_HS_EN (0) // HS传输过程中BTA使用 + + +/* base_info输入端信息 */ +#define INPUT_WIDTH (1440) +#define INPUT_HEIGHT (2960) +#define INPUT_SRC_FRATE DSI_FRAME_RATE_60HZ +/* 输出数据格式(DSI_DATA_CMD_MODE , DSI_DATA_VIDEO_MODE) */ +#define DSI_INPUT_DATA_MODE DSI_DATA_VIDEO_MODE +#define DSI_OUTPUT_DATA_MODE DSI_DATA_VIDEO_MODE +/* vid模式选择 */ +#define OUTPUT_VID_SEL_MODE DSI_BURST_MODE +/* 虚拟通道(0-3) */ +#define VIRTUAL_CHANNEL DSI_VC_0 +/* TD_RSTN pin脚使用定义宏 */ +#define PIN_TD_RSTN IO_PAD_TD_RSTN + +#if DEMO_RX_GEN_PATTERN +/*输入mipi lane数量(DSI_RX_LANE_x x为1-4)*/ +#define INPUT_MIPI_LANE_NUM DSI_LANE_4 +/*输入图像格式*/ +#define INPUT_COLOR_MODE DSI_RGB888 +/*video mode输入时数据格式*/ +#define INPUT_VIDEO_MODEL DSI_NONBURST_EVENT +/*输入MIPI lane rate,video mode下需要计算delay,command mode可以不设置或者随便设置*/ +#define INPUT_MIPI_LANE_RATE (1200000000) +/*IPI pattern fps*/ +#define PATTERN_FPS (60) +#endif + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ +static hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = NULL; +#if DEMO_RX_GEN_PATTERN +static hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = NULL; +static uint8_t g_rx_pattern_sel = 0; // 0:Vertical mode ; 1:Horizontal mode +#endif +static bool panel_init = false; + +#if DEMO_BTA_LP_EN +static uint8_t bta_ack_data = 0; +#endif + +#if DEMO_BTA_HS_EN +static bool sg_bta_need_flag = true; +#endif +/******************************************************************************* +* 4.Global function prototypes +*******************************************************************************/ +#if AMOLED_NT37280 +/** +* @brief timer回调函数用于swire输出 +* @param data: 回调参数 +* @retval 无 +*/ +static void demo_tx_timer_callback(void *data) +{ + hal_swire_set_waveform(12, 12, 12, 12); + hal_swire_set_pulse(32); +} + +/** +* @brief 打开屏背光 +* @param 无 +* @retval 无 +*/ +static void demo_tx_panel_backlight_on(void) +{ + hal_gpio_init_output(IO_PAD_AP_PWMEN, IO_LVL_HIGH); + hal_swire_init(); + hal_swire_enable(true); + + hal_swire_set_waveform(12, 12, 12, 12); + hal_swire_set_pulse(36); + + hal_timer_init(TIMER_NUM1); + hal_timer_start(TIMER_NUM1, 16, demo_tx_timer_callback, NULL); + +} +#endif + +/** +* @brief PANEL初始化 +* @param None +* @retval None +**/ +void demo_panel_init(void) +{ +#if AMOLED_NT37280 + demo_tx_panel_backlight_on(); +#endif + + /*初始化TD_RSTN并产生屏端复位信号*/ + hal_gpio_init_output(PIN_TD_RSTN, IO_LVL_HIGH); + hal_gpio_set_output_data(PIN_TD_RSTN, IO_LVL_HIGH); + delayMs(10); + hal_gpio_set_output_data(PIN_TD_RSTN, IO_LVL_LOW); + delayMs(10); + hal_gpio_set_output_data(PIN_TD_RSTN, IO_LVL_HIGH); + delayMs(10); + + /*bta read register*/ +#if DEMO_BTA_LP_EN + hal_dsi_tx_ctrl_read_cmd(0x06, 0, 0xDA, 1, &bta_ack_data); + TAU_LOGD("DA[0x%x]\n", bta_ack_data); +#endif + + /*initial code*/ +#if LCD_PT628_CSOT + TAU_LOGD("LCD_PT628_CSOT pannel init\n"); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xBF, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xC0, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x00, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 4, 0xFF, 0x87, 0x56, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x00, 0x80); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0xFF, 0x87, 0x56); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x00, 0xE8); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xC0, 0x20); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x00, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 4, 0xFF, 0x87, 0x56, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x00, 0x80); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0xFF, 0x87, 0x56); + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x11); + delayMs(120); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x35, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, 0x0F, 0xFF); + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); + +#elif AMOLED_NT37280 + TAU_LOGD("AMOLED_NT37280 pannel init\n"); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFF, 0xE0); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFB, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x18, 0x80); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x1A, 0x15); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x73, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x89, 0x7F); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x0D, 0x9B); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x46, 0x17); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFF, 0xF0); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFB, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x54, 0x03); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x9C, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFF, 0x20); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFB, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x34, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x35, 0x66); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x36, 0x66); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFF, 0x10); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xFB, 0x01); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x88, 0x07); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 5, 0x2A, 0x00, 0x00, 0x04, 0x37); + hal_dsi_tx_ctrl_write_cmd(0x39, 0, 5, 0x2B, 0x00, 0x00, 0x08, 0xE7); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x7F, 0x07); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xE9, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xBF, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0xC0, 0x00); + hal_dsi_tx_ctrl_write_cmd(0x15, 0, 2, 0x35, 0x00); //TE 35=00是标准60Hz; 35=01是有很多小信号 + hal_dsi_tx_ctrl_write_cmd(0x29, 0, 3, 0x51, 0x0F, 0xFF); //CABC + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x11); + delayMs(120); + hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x29); + delayMs(10); +#endif + +} + +/** +* @brief RX初始化和开启 +* @param None +* @retval None +**/ +static void demo_open_mipi_rx(void) +{ + /*RX demo详细请参考demo_hal_dsi_rx*/ +#if DEMO_RX_GEN_PATTERN + /* 创建rx ctrl handle */ + if (g_rx_ctrl_handle == NULL) + { + g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); + } + g_rx_ctrl_handle->base_info.src_w = INPUT_WIDTH; + g_rx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; + g_rx_ctrl_handle->base_info.dst_w = __DPI_HACT; + g_rx_ctrl_handle->base_info.dst_h = __DPI_VACT; + g_rx_ctrl_handle->rx_hsclk_rate = INPUT_MIPI_LANE_RATE; + g_rx_ctrl_handle->base_info.src_frate = INPUT_SRC_FRATE; + g_rx_ctrl_handle->base_info.src_mode = DSI_INPUT_DATA_MODE; + g_rx_ctrl_handle->rx_color_mode = INPUT_COLOR_MODE; + g_rx_ctrl_handle->rx_lanes = INPUT_MIPI_LANE_NUM; + g_rx_ctrl_handle->rx_nonburst_models = INPUT_VIDEO_MODEL; + + /* 初始化rx ctrl */ + hal_dsi_rx_ctrl_init(g_rx_ctrl_handle); + + /* 配置RX video pattern */ + hal_dsi_rx_ctrl_enable_test_pattern(g_rx_ctrl_handle, g_rx_pattern_sel, true, PATTERN_FPS); + + /* 启动rx ctrl */ + hal_dsi_rx_ctrl_start(g_rx_ctrl_handle); +#endif + +} + +/** +* @brief TX初始化和开启 +* @param None +* @retval None +**/ +static void demo_open_mipi_tx(void) +{ + /*创建TX实例*/ + if (g_tx_ctrl_handle == NULL) + { + g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle(); + } + g_tx_ctrl_handle->lane_num = _LANE_NUMBER; + g_tx_ctrl_handle->channel_id = VIRTUAL_CHANNEL; + g_tx_ctrl_handle->vid_mode = OUTPUT_VID_SEL_MODE; + g_tx_ctrl_handle->cmd_tx_type = _CMD_TYPE; + g_tx_ctrl_handle->dpi_vsa = __DPI_VSA; + g_tx_ctrl_handle->dpi_vbp = __DPI_VBP; + g_tx_ctrl_handle->dpi_vfp = __DPI_VFP; + g_tx_ctrl_handle->dpi_hsa = __DPI_HSA; + g_tx_ctrl_handle->dpi_hbp = __DPI_HBP; + g_tx_ctrl_handle->dpi_hfp = __DPI_HFP; + g_tx_ctrl_handle->base_info.src_w = INPUT_WIDTH; + g_tx_ctrl_handle->base_info.src_h = INPUT_HEIGHT; + g_tx_ctrl_handle->base_info.dst_w = __DPI_HACT; + g_tx_ctrl_handle->base_info.dst_h = __DPI_VACT; + g_tx_ctrl_handle->base_info.src_frate = INPUT_SRC_FRATE; + g_tx_ctrl_handle->base_info.src_mode = DSI_INPUT_DATA_MODE; + g_tx_ctrl_handle->base_info.dst_mode = DSI_OUTPUT_DATA_MODE; + +#if LCD_PT628_CSOT //RGBG玻璃匹配RGB Driver IC + //remap规则参数, 此款玻璃remapl_rule/remapr_rule使用同一规则; 如果玻璃存在两个规则需要支持,请定义两个数组分别配置remapl_rule/remapr_rule + remap_rule_t remap_rule = + { + 9, 11, 12, 8, 7, 10, 4, 5, 6, 2, 1, 3, + 20, 19, 22, 21, 23, 24, 14, 13, 15, 16, 17, 18 + }; + g_tx_ctrl_handle->pentile_info.pentile_24b = true; // 是否RGB驱动IC搭配RGBG玻璃使用 + g_tx_ctrl_handle->pentile_info.pentile_reverse_en = true; // 是否需要使用芯片本身行反转功能 + g_tx_ctrl_handle->pentile_info.pentile_enable = true; // 是否RGBG格式的数据传输 + g_tx_ctrl_handle->pentile_info.remapl_rule = &remap_rule; // reamp规则1 + g_tx_ctrl_handle->pentile_info.remapr_rule = &remap_rule; // reamp规则2 + g_tx_ctrl_handle->pentile_info.rgb_hact = 900; // 如果是RGB驱动IC搭配RGBG玻璃使用,此处配置RGB驱动IC的分辨率;dst_w按玻璃分辨率进行配置 + /* RGBG 屏幕补黑配置,此款玻璃两块补黑区域均参与子像素重排*/ + g_tx_ctrl_handle->pentile_info.blank_info0.blank_en = 1; // 是否使用补黑区域0 + g_tx_ctrl_handle->pentile_info.blank_info0.remap_en = 1; // 补黑区域0是否参与remap重排 + g_tx_ctrl_handle->pentile_info.blank_info0.st_col = 0; // 补黑区域0起始位置,按有效子像素序号进行计算 + g_tx_ctrl_handle->pentile_info.blank_info0.width = 12; // 补黑区域0补黑宽度,按子像素级计算 + g_tx_ctrl_handle->pentile_info.blank_info1.blank_en = 1; // 是否使用补黑区域1 + g_tx_ctrl_handle->pentile_info.blank_info1.remap_en = 1; // 补黑区域1是否参与remap重排 + g_tx_ctrl_handle->pentile_info.blank_info1.st_col = 1248; // 补黑区域1起始位置,按有效子像素序号进行计算,必须大于补黑区域0的起始位置 + g_tx_ctrl_handle->pentile_info.blank_info1.width = 216; // 补黑区域1补黑宽度,按子像素级计算 +#endif + +#if DEMO_ENDIAN_EN + hal_dsi_tx_ctrl_set_endianness(DPI_ENDIAN_BGR);// 默认RGB输出,可以更改为BGR 需要在初始化之前调用 +#endif + + /*调用初始化接口进行TX初始化*/ + hal_dsi_tx_ctrl_init(g_tx_ctrl_handle); + + /*屏幕初始化,复位时序和发送initial code*/ + if (!panel_init) + { + demo_panel_init(); + panel_init = true; + } + +#if DEMO_TX_VPG_EN /*使用TX VPG测试TX是否正常工作*/ + hal_dsi_tx_ctrl_set_vpg(true, TX_VPG_V_COLOR, false); +#endif + + /*tx start开始传输高速数据*/ + hal_dsi_tx_ctrl_start(g_tx_ctrl_handle); + + /*可选功能配置,在任意时刻均可调用 start*/ +#if DEMO_CCM_EN + ccm_coef_t coef; + coef.coef_c00 = 0x1f3; + coef.coef_c01 = 0xf3a; + coef.coef_c02 = 0xfd3; + coef.coef_c10 = 0xf9c; + coef.coef_c11 = 0x19c; + coef.coef_c12 = 0xfca; + coef.coef_c20 = 0x27; + coef.coef_c21 = 0xf46; + coef.coef_c22 = 0x193; + hal_dsi_tx_ctrl_set_ccm(&coef); +#endif + +#if DEMO_OVERWRITE_EN + hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0xFF); //蓝色图形数据输出 参数为R/G/B灰度值 + hal_dsi_tx_ctrl_overwrite_enable(true); //开启overwrite功能 + /*........*/ + //hal_dsi_tx_ctrl_overwrite_enable(false); //需要关闭overwrite功能时调用 +#endif + +#if DEMO_EDGE_DECT_EN + dsi_tx_edge_dect_t edge_dect_para = {0x10, true}; + hal_dsi_tx_ctrl_set_edge_dect(&edge_dect_para, true); +#endif + +#if DEMO_EDGE_ENHANCE_EN + dsi_tx_edge_enh_t edge_enh_para = {true, 64, 4, 64, 0}; + hal_dsi_tx_ctrl_set_edge_enhance(&edge_enh_para, true); +#endif + +#if DEMO_FC_EN + dsi_tx_fc_t fc_para = {64, 64}; + hal_dsi_tx_ctrl_set_fc(&fc_para, true); +#endif + +#if DEMO_BCS_EN + dsi_tx_bcs_t bcs_cfg = {0x00, 0x10, 0x10}; // 参数含义:{明亮度,对比度,饱和度} + hal_dsi_tx_ctrl_set_bcs(&bcs_cfg, true); +#endif + /*可选功能配置,在任意时刻均可调用 end*/ + +} + +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_dsi_tx_case(void) +{ + TAU_LOGD("DSI TX DEMO.\n"); + demo_open_mipi_rx(); + demo_open_mipi_tx(); + + while (1) + { +#if DEMO_BTA_HS_EN + if (sg_bta_need_flag) //当需要进行BTA回读的时候置标志位,等待Vporch阶段进行BTA回读获取有效数据 + { + uint8_t bta_data = 0; + if (hal_dsi_tx_ctrl_vporch_bta_opera(0x06, 0xDA, 1, &bta_data)) + { + //Vporch阶段进行BTA回读获取到有效数据,关闭本次回读流程 + sg_bta_need_flag = false; + TAU_LOGD("hs bta[0x%x]\n", bta_data); + } + } +#endif + } + +} + diff --git a/src/app/module_demo/demo_hal_dsi_tx.h b/src/app/module_demo/demo_hal_dsi_tx.h new file mode 100644 index 0000000..3d93371 --- /dev/null +++ b/src/app/module_demo/demo_hal_dsi_tx.h @@ -0,0 +1,77 @@ +/******************************************************************************* +* +* +* File: demo_hal_dsi_tx.h +* Description: dsi-tx demo头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_dsi_tx_ctrl.h" +#include "hal_dsi_rx_ctrl.h" +#include "tau_delay.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifndef _DEMO_HAL_DSI_TX_H_ +#define _DEMO_HAL_DSI_TX_H_ + +#define LCD_PT628_CSOT (1) //4lane RGBG-1242x2699 RGB-900X2688 +#define AMOLED_NT37280 (0) //4lane 1080X2280 + +#if LCD_PT628_CSOT + +#define _LANE_NUMBER (4) //数据lane的个数 +#define _CMD_TYPE (DSI_CMD_TX_LP) //0-HS,1-LP; + +#define __DPI_VSA (16) //VSYNC宽度 +#define __DPI_VBP (16) //VSYNC后的无效像素 +#define __DPI_VACT (2688) //玻璃V分辨率定义 +#define __DPI_VFP (123 ) //VSYNC前的无效像素 + +#define __DPI_HSA (6) //HSYNC宽度 +#define __DPI_HBP (18) //HSYNC后的无效像素 +#define __DPI_HACT (1242) //玻璃H分辨率定义 +#define __DPI_HFP (32) //HSYNC前的无效像素 + +#elif AMOLED_NT37280 + +#define _LANE_NUMBER (4) //数据lane的个数 +#define _CMD_TYPE (DSI_CMD_TX_LP) //0-HS,1-LP; + +#define __DPI_VSA (4) //VSYNC宽度 +#define __DPI_VBP (28) //VSYNC后的无效像素 +#define __DPI_VACT (2280) //V分辨率定义 +#define __DPI_VFP (10) //VSYNC前的无效像素 + +#define __DPI_HSA (8) //HSYNC宽度 +#define __DPI_HBP (16) //HSYNC后的无效像素 +#define __DPI_HACT (1080) //H分辨率定义 +#define __DPI_HFP (36) //HSYNC前的无效像素 + +#endif + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_dsi_tx_case(void); + +#endif diff --git a/src/app/module_demo/demo_hal_flash.c b/src/app/module_demo/demo_hal_flash.c new file mode 100644 index 0000000..4843e0e --- /dev/null +++ b/src/app/module_demo/demo_hal_flash.c @@ -0,0 +1,218 @@ +/******************************************************************************* +* Copyright (C) 2021-2022, All Rights Reserved. +* +* File: test_hal_flash.c +* Description: hal_flash 测试用例源文件 +* Version: V0.1 +* Date: 2022-04-21 +* Author: RANDY + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "demo_hal_flash.h" +#include "hal_flash.h" +#include "tau_delay.h" +#include "tau_log.h" +#include "tau_common.h" +#include "test_cfg_global.h" + +#if _MODULE_DEMO_FLASH_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_flash" + +#define TEST_DATA_SIZE 32 + +#define DATA_BLOCK_SIZE (64*1024) +#define DATA_PAGE_SIZE 1024 + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +static fls_ops_cfg_t *fls_ops_cfg; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/************************************************************************** +* @name : +* @brief +* @param +* @retval +**************************************************************************/ + +void test_hal_flash_get_public_region_test(void) +{ + uint8_t test_data[TEST_DATA_SIZE] = 0; + TAU_LOGD("test get data public\n"); + + fls_ops_cfg->flash_block = 7;//固定值 + fls_ops_cfg->flash_page = 0;//0-32 + fls_ops_cfg->page_offset_addr = 0; + fls_ops_cfg->data_size = TEST_DATA_SIZE; + fls_ops_cfg->user_data = test_data; + + hal_flash_init(); + + //1 读数据 + hal_flash_public_region_ops(FLASH_PUBLIC_READ, fls_ops_cfg); + + for (uint8_t i = 0; i < TEST_DATA_SIZE; i++) + { + TAU_LOGD("read data[%d]=0x%x ", i, test_data[i]); + } + + //2 写数据 + for (uint32_t i = 0; i < TEST_DATA_SIZE; i++) + { + test_data[i] = i; + } + + hal_flash_public_region_ops(FLASH_PUBLIC_WRITE, fls_ops_cfg); + + //3 回读 + for (uint32_t i = 0; i < TEST_DATA_SIZE; i++) + { + test_data[i] = 0; + } + + hal_flash_public_region_ops(FLASH_PUBLIC_READ, fls_ops_cfg); + + //4 对比 + for (uint8_t i = 0; i < TEST_DATA_SIZE; i++) + { + TAU_LOGD("read data[%d]=0x%x ", i, test_data[i]); + } + +} + + + +// 验证flash UID的读取,16byte的UID +void test_flash_uid_read(void) +{ + uint8_t get_id[16] = {0}; + + TAU_LOGD("test_flash_uid_read begin \n"); + + hal_flash_init(); + + hal_flash_read_uid(get_id, 16); + //不同的IC,ID不一样,存在0x00或者0xFF的情况 + for (uint8_t i = 0; i < 16; i++) + { + TAU_LOGD("read ID [%d]=0x%X \n", i, get_id[i]); + } +} + + +/** +* @brief 获取user_data的数据个数 +* @param 无 +* @retval bool 无 +*/ +void get_user_data_size(void) +{ + uint32_t user_data_size = 0; + + TAU_LOGD("test get data addr\n"); + + user_data_size = hal_flash_get_user_data_size(); + + TAU_LOGD("user_data size 0x%x \n", user_data_size); +} + + +void test_hal_flash_get_user_region_test(void) +{ + uint8_t user_data[32]; + uint32_t user_address = 0; //需要读取数据的位置 + uint32_t user_data_size = 0; + + TAU_LOGD("test get data addr\n"); + //读取user data 0地址 + user_address = 0; + + fls_ops_cfg->flash_block = user_address / DATA_BLOCK_SIZE; + fls_ops_cfg->flash_page = (user_address % DATA_BLOCK_SIZE) / DATA_PAGE_SIZE; + fls_ops_cfg->page_offset_addr = user_address % DATA_PAGE_SIZE; + fls_ops_cfg->data_size = 16; + fls_ops_cfg->user_data = user_data; + hal_flash_user_region_ops(FLASH_USERDATA_READ, fls_ops_cfg); + for (uint8_t i = 0; i < 2; i++) + { + TAU_LOGD("user_data[%d]=0x%x ", i, user_data[i]); + } + + //读取user data 0x6000地址 + user_address = 0x6000; + + fls_ops_cfg->flash_block = user_address / DATA_BLOCK_SIZE; + fls_ops_cfg->flash_page = (user_address % DATA_BLOCK_SIZE) / DATA_PAGE_SIZE; + fls_ops_cfg->page_offset_addr = user_address % DATA_PAGE_SIZE; + fls_ops_cfg->data_size = 16; + fls_ops_cfg->user_data = user_data; + hal_flash_user_region_ops(FLASH_USERDATA_READ, fls_ops_cfg); + for (uint8_t i = 0; i < 2; i++) + { + TAU_LOGD("user_data[%d]=0x%x ", i, user_data[i]); + } +} + + +/** +* @brief 获取user_data的绝对起始地址 的接口测试 +* @param 无 +* @retval bool 无 +*/ + +void demo_hal_flash(void) +{ + uint8_t case_sel = 2; + + switch (case_sel) + { + case 1: + test_hal_flash_get_public_region_test(); + break; + + case 2: + test_hal_flash_get_user_region_test(); + break; + + case 3: + test_flash_uid_read(); + break; + + case 4: + get_user_data_size(); + break; + + case 5: + //测试共享flash接口,需要外接SPI主机测试 + TAU_LOGI("test TMON \n"); + hal_flash_share_mode(true); + break; + + default: + break; + } + + +} + + + +#endif + diff --git a/src/app/module_demo/demo_hal_flash.h b/src/app/module_demo/demo_hal_flash.h new file mode 100644 index 0000000..849440b --- /dev/null +++ b/src/app/module_demo/demo_hal_flash.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* Copyright (C) 2021-2022, All Rights Reserved. +* +* File: test_hal_flash.h +* Description: hal_flash测试用例头文件 +* Version: V0.1 +* Date: 2023-07-17 +* Author: Kevin + *******************************************************************************/ +#ifndef __DEMO_HAL_FLASH_H__ +#define __DEMO_HAL_FLASH_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_flash(void); + +#endif /* __TEST_HAL_FLASH_H__ */ + diff --git a/src/app/module_demo/demo_hal_gpio.c b/src/app/module_demo/demo_hal_gpio.c new file mode 100644 index 0000000..208b4d2 --- /dev/null +++ b/src/app/module_demo/demo_hal_gpio.c @@ -0,0 +1,268 @@ +/******************************************************************************* +* +* +* File: demo_gpio.c +* Description: GPIO测试用例源文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: kevin + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_gpio.h" +#include "tau_delay.h" +#include "tau_log.h" +#include "test_cfg_global.h" + +#if _DEMO_GPIO_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "gpio-log" + +//output +#define GPIO_OUT_TEST 1 +#define GPIO_OUT_IN_CONNECT 0 + +//input +#define GPIO_IN_INT_SINGLE 0 +//IO mode init +#define GPIO_MODE_INIT 0 + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ +static bool s_gpio_callback_flag = false; +static sys_cfg_trigger_e s_gpio_trig = DETECT_HIGH_LVL; +static io_pad_e s_gpio_demo_pad1 = IO_PAD_AP_TPRSTN; +static io_pad_e s_gpio_demo_pad2 = IO_PAD_AP_PWMEN; + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/************************************************************************** +* @name : demo_gpio_callback +* @brief : 测试回调函数 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void demo_gpio_callback(void *data) +{ + gpio_int_e type = *(gpio_int_e *)data; + gpio_int_e int_type = hal_gpio_get_int_type(s_gpio_demo_pad1); + + TAU_LOGI("demo_gpio_callback type:%d, int_type:%d, s_gpio_trig:%d\r\n", type, int_type, s_gpio_trig); + + hal_gpio_ctrl_eint(s_gpio_demo_pad1, DISABLE); + + if (DETECT_HIGH_LVL == s_gpio_trig) + { + hal_gpio_set_output_data(s_gpio_demo_pad2, IO_LVL_LOW); + } + else if (DETECT_LOW_LVL == s_gpio_trig) + { + hal_gpio_set_output_data(s_gpio_demo_pad2, IO_LVL_HIGH); + } + + switch (s_gpio_trig) + { + case DETECT_HIGH_LVL: + s_gpio_trig = DETECT_LOW_LVL; + break; + + case DETECT_LOW_LVL: + s_gpio_trig = DETECT_RISING_EDGE; + break; + + case DETECT_RISING_EDGE: + s_gpio_trig = DETECT_FALLING_EDGE; + break; + + default: + return; + } + + s_gpio_callback_flag = true; +} + +/************************************************************************** +* @name : demo_gpio_int +* @brief : gpio测试中断通用配置 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void demo_gpio_int(io_pad_e pad, sys_cfg_trigger_e trig) +{ + /*1.关闭中断*/ + hal_gpio_ctrl_eint(pad, DISABLE); + + /*2.中断初始化*/ + hal_gpio_init_eint(pad, trig); + + /*3.注册回调*/ + hal_gpio_reg_eint_cb(pad, demo_gpio_callback); + + /*4.使能中断*/ + hal_gpio_ctrl_eint(pad, ENABLE); +} + +/************************************************************************** +* @name : demo_gpio_out_case +* @brief : gpio output功能测试 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void demo_gpio_out_case(void) +{ + gpio_level_e flag = IO_LVL_LOW; + + TAU_LOGI("demo_gpio_out_case\r\n"); + + hal_gpio_init_output(s_gpio_demo_pad1, flag); + while (1) + { + delayMs(10); + flag = (flag == IO_LVL_LOW) ? IO_LVL_HIGH : IO_LVL_LOW; + hal_gpio_set_output_data(s_gpio_demo_pad1, flag); + } +} + +/************************************************************************** +* @name : demo_gpio_in_case +* @brief : gpio input功能测试 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void demo_gpio_in_case(void) +{ + gpio_level_e flag = IO_LVL_LOW; + + TAU_LOGI("demo_gpio_in_case\r\n"); + + hal_gpio_init_input(s_gpio_demo_pad1); + hal_gpio_init_output(s_gpio_demo_pad2, flag); + while (1) + { + delayMs(10); + flag = (flag == IO_LVL_LOW) ? IO_LVL_HIGH : IO_LVL_LOW; + hal_gpio_set_output_data(s_gpio_demo_pad2, flag); + } +} + +/************************************************************************** +* @name : demo_gpio_int_single +* @brief : gpio input配置单个中断 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void demo_gpio_int_single(void) +{ + sys_cfg_trigger_e trig = s_gpio_trig; + + TAU_LOGI("demo_gpio_int_single trig:%d\r\n", trig); + + if (DETECT_HIGH_LVL == s_gpio_trig || DETECT_RISING_EDGE == s_gpio_trig) + { + hal_gpio_init_output(s_gpio_demo_pad2, IO_LVL_LOW); + } + else if (DETECT_LOW_LVL == s_gpio_trig || DETECT_FALLING_EDGE == s_gpio_trig) + { + hal_gpio_init_output(s_gpio_demo_pad2, IO_LVL_HIGH); + } + + demo_gpio_int(s_gpio_demo_pad1, trig); + + if (DETECT_HIGH_LVL == s_gpio_trig || DETECT_RISING_EDGE == s_gpio_trig) + { + delayMs(100); + hal_gpio_set_output_data(s_gpio_demo_pad2, IO_LVL_HIGH); + } + else if (DETECT_LOW_LVL == s_gpio_trig || DETECT_FALLING_EDGE == s_gpio_trig) + { + delayMs(100); + hal_gpio_set_output_data(s_gpio_demo_pad2, IO_LVL_LOW); + } +} + +/** +* @brief GPIO初始化配置,根据实际原理图提前配置IO功能以及状态,默认功能可不配置 +* TP相关I2C/SPI 在tp_transfer.c +* @param none +* @retval none +*/ +static void demo_gpio_init(void) +{ + io_pad_attr_t attrs[] = + { + //1.配置成GPIO 输出 + {IO_PIN_8, PIN8_MODE_GPIO7, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_8(TD_RSTN), GPIO,输出,低电平 */ + {IO_PIN_17, PIN17_MODE_GPIO8, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_17(PWMEN), GPIO,输出,低电平 */ + {IO_PIN_16, PIN16_MODE_GPIO2, IO_IOE_OUTPUT, IO_LVL_LOW}, /* PIN_16(AP_INT),GPIO,输出,低电平 */ + + //2.配置成GPIO 输入 + {IO_PIN_29, PIN29_MODE_GPIO3, IO_IOE_INPUT, IO_LVL_NONE}, /* PIN_29(AP_TE), GPIO,输入 */ + + //3.配置UART TX + {IO_PIN_2, PIN2_MODE_UART0_TX, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_2(UART0_TX), UART,TX */ + + //4.配置I2C + {IO_PIN_5, PIN5_MODE_I2C1_SCL, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_5(TD_SPIM_CLK), I2C,SCL */ + {IO_PIN_6, PIN6_MODE_I2C1_SDA, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_6(TD_SPIM_CSN), I2C,SDA */ + + //5.配置SPIS + {IO_PIN_30, PIN30_MODE_SPIS_MISO, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_30(AP_SPIS_MISO), SPIS,MISO */ + {IO_PIN_31, PIN31_MODE_SPIS_CSN, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_31(AP_SPIS_CSN), SPIS,CSN */ + {IO_PIN_32, PIN32_MODE_SPIS_SCLK, IO_IOE_NONE, IO_LVL_NONE}, /* PIN_32(AP_SPIS_CLK), SPIS,CLK */ + {IO_PIN_33, PIN33_MODE_SPIS_MOSI, IO_IOE_NONE, IO_LVL_NONE} /* PIN_33(AP_SPIS_MOSI), SPIS,MOSI */ + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + + +/************************************************************************** +* @name : demo_gpio_case +* @brief : 测试用例 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +void demo_gpio_case(void) +{ + s_gpio_callback_flag = true; + +#if GPIO_IN_INT_SINGLE + while (1) + { + if (s_gpio_callback_flag) + { + s_gpio_callback_flag = false; + demo_gpio_int_single(); + } + } +#elif GPIO_OUT_TEST + demo_gpio_out_case(); +#elif GPIO_OUT_IN_CONNECT + demo_gpio_in_case(); +#elif GPIO_MODE_INIT + demo_gpio_init(); +#endif +} + +#endif + diff --git a/src/app/module_demo/demo_hal_gpio.h b/src/app/module_demo/demo_hal_gpio.h new file mode 100644 index 0000000..c961cd8 --- /dev/null +++ b/src/app/module_demo/demo_hal_gpio.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* +* +* File: demo_gpio.h +* Description: GPIO测试用例头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: kevin + *******************************************************************************/ +#ifndef __DEMO_GPIO_H__ +#define __DEMO_GPIO_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_gpio_case(void); + +#endif /* __DEMO_GPIO_H__ */ + diff --git a/src/app/module_demo/demo_hal_i2c.c b/src/app/module_demo/demo_hal_i2c.c new file mode 100644 index 0000000..356b484 --- /dev/null +++ b/src/app/module_demo/demo_hal_i2c.c @@ -0,0 +1,412 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_i2ci.c +* Description: i2c demo code +* Version: V0.1 +* Date: 2023-07-27 +* Author: swx + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_i2c_master.h" +#include "hal_i2c_slave.h" +#include "demo_hal_i2c.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" + +#if _MODULE_DEMO_I2C_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_i2c" +#define BUFFER_SIZE 10 // 以10个数据为例 + +#define CHECK_TRANS_RESULT(src, dst, size) \ + for(uint32_t check_num = 0; check_num < size; check_num ++) \ + {\ + if(src[check_num] != dst[check_num])\ + {\ + TAU_LOGD("src[%d] = %x, dst[%d] = %x , error!!\n",check_num,src[check_num],check_num,dst[check_num]);\ + return false;\ + }\ + }\ + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ +static uint8_t i2cm_read_buffer[BUFFER_SIZE]; +static uint8_t i2cs_read_buffer[BUFFER_SIZE]; +static uint8_t i2cs_write_buffer[BUFFER_SIZE]; + + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief i2c master的IO初始化 +* @param none +* @retval none +*/ +static void i2cm_io_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PAD_TD_SPIM_CLK, PIN5_MODE_I2C1_SCL, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_TD_SPIM_CSN, PIN6_MODE_I2C1_SDA, IO_IOE_NONE, IO_LVL_HIGH} + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + +/** +* @brief i2c slave的IO初始化 +* @param none +* @retval none +*/ +static void i2cs_io_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PAD_AP_SPIS_CLK, PIN32_MODE_I2C02_SCL, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_AP_SPIS_CSN, PIN31_MODE_I2C02_SDA, IO_IOE_NONE, IO_LVL_HIGH} + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + +/** +* @brief i2c slave的中断回调服务函数 +* @param index: I2Cx index +* @param int_status: 中断事件 +* @param recieve_num: 接收到的packet数 +* @retval none +*/ +static void i2cs_callback(i2c_index_e index, hal_i2cs_event_e int_status, size_t recieve_num) +{ + /* 收到READ_REQ中断 */ + if (int_status == I2CS_EVENT_READ) + { + /* 更新I2CS的txbuffer,将i2cs_write_buffer的数据发送给主机 */ + hal_i2cs_update_tx_buffer(index, i2cs_write_buffer, BUFFER_SIZE, false); + } + /* 收到stop中断 */ + else if (int_status == I2CS_EVENT_STOP) + { + if (recieve_num > 0) + { + /* 将读到的值写到i2cs_write_buffer中 */ + for (int i = 0; i < recieve_num; i++) + i2cs_write_buffer[i] = i2cs_read_buffer[i]; + } + /* 更新I2CS的rxbuffer */ + hal_i2cs_update_rx_buffer(index, i2cs_read_buffer, BUFFER_SIZE); + } +} + +/** +* @brief i2c master初始化 +* @param index: I2Cx index +* @param addr: 从机地址 +* @param addr_bits: 从机地址位数 +* @param speed: 主机速率设置 +* @retval none +*/ +void i2cm_init(i2c_index_e index, uint16_t addr, uint8_t addr_bits, uint32_t speed) +{ + /* I2CS的IO初始化 */ + i2cm_io_init(); + + /* I2CM初始化 */ + hal_i2cm_init(index, addr, addr_bits, speed); +} + +/** +* @brief i2c slave初始化 +* @param index: I2Cx index +* @param addr: 从机自身地址 +* @param addr_bits: 从机地址位数 +* @retval none +*/ +void i2cs_init(i2c_index_e index, uint16_t addr, uint8_t addr_bits) +{ + /* I2CS的IO初始化 */ + i2cs_io_init(); + + /* I2CS的初始化 */ + hal_i2cs_init(index, addr, addr_bits); + + /* I2CS注册回调函函数 */ + hal_i2cs_register_callback(index, i2cs_callback); + + /* I2CS设置初始读写buffer */ + hal_i2cs_update_rx_buffer(index, i2cs_read_buffer, BUFFER_SIZE); + hal_i2cs_update_tx_buffer(index, i2cs_write_buffer, BUFFER_SIZE, false); + + /* I2CS启动 */ + hal_i2cs_start(index); +} + +/** +* @brief i2c master去初始化 +* @param index: I2Cx index +* @retval none +*/ +void i2cm_deinit(i2c_index_e index) +{ + hal_i2cm_deinit(index); +} + +/** +* @brief i2c slave去初始化 +* @param index: I2Cx index +* @retval none +*/ +void i2cs_deinit(i2c_index_e index) +{ + hal_i2cs_stop(index); + hal_i2cs_deinit(index); +} + +/** +* @brief i2c case buffer初始化 +* @param none +* @retval none +*/ +static void i2c_case_buffer_init(void) +{ + TAU_LOGD("i2c_case_buffer_init\n"); + /* init buffer */ + uint8_t i = 0 ; + for (i = 0; i < BUFFER_SIZE; i ++) + { + i2cm_read_buffer[i] = 0; + i2cs_read_buffer[i] = 0; + i2cs_write_buffer[i] = 0; + } +} + +/** +* @brief 芯片I2CM与I2CS对接,验证I2CM用CPU方式传输数据的正确性 +* @param +* @retval bool true/false +*/ +static bool hal_i2c_cpu_transfer_case(void) +{ + uint8_t write_buffer[10] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}; + uint8_t addr_bit = 7; + uint32_t speed = 400000; + uint16_t addr = 0x50; + + /* I2CM初始化,I2C1+目标地址0x50+7位地址+400k传输速率 */ + i2cm_init(I2C_INDEX_1, addr, addr_bit, speed); + + /* I2CS初始化,I2C0+本机地址0x50+7位地址 */ + i2cs_init(I2C_INDEX_0, addr, addr_bit); + + /* buffer初始化 */ + i2c_case_buffer_init(); + + /* I2CM写write_buffer数据到0x50地址的从机 */ + if (hal_i2cm_write(I2C_INDEX_1, write_buffer, BUFFER_SIZE) != true) + { + TAU_LOGD("I2CM CPU write data fail!\n"); + return false; + } + TAU_LOGD("tx: %x %x %x %x %x %x %x %x %x %x\n", write_buffer[0], write_buffer[1], write_buffer[2], \ + write_buffer[3], write_buffer[4], write_buffer[5], write_buffer[6], write_buffer[7], write_buffer[8], \ + write_buffer[9]); + + /* I2CM向地址为0x50的从机读取BUFFER_SIZE个数据,此case中,寄存器addr和size为0,可自行添加 */ + if (hal_i2cm_read(I2C_INDEX_1, 0, 0, i2cm_read_buffer, BUFFER_SIZE) != true) + { + TAU_LOGD("I2CM CPU read data fail!\n"); + return false; + } + TAU_LOGD("rx: %x %x %x %x %x %x %x %x %x %x\n", i2cm_read_buffer[0], i2cm_read_buffer[1], \ + i2cm_read_buffer[2], i2cm_read_buffer[3], i2cm_read_buffer[4], i2cm_read_buffer[5], \ + i2cm_read_buffer[6], i2cm_read_buffer[7], i2cm_read_buffer[8], i2cm_read_buffer[9]); + + /* 检查传输结果,I2CM发出去的数据是否与接收到的数据一致 */ + CHECK_TRANS_RESULT(write_buffer, i2cm_read_buffer, BUFFER_SIZE); + + /* I2CM && I2CS去初始化 */ + i2cs_deinit(I2C_INDEX_0); + i2cm_deinit(I2C_INDEX_1); + TAU_LOGD("hal_i2c_cpu_transfer_case done!\n"); + return true; +} + + +/** +* @brief 芯片I2CM与I2CS对接,验证I2CM用DMA方式传输数据的正确性 +* @param +* @retval bool true/false +*/ +static bool hal_i2c_dma_transfer_case(void) +{ + uint8_t write_buffer[10] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29}; + uint8_t addr_bit = 7; + uint32_t speed = 400000; + uint16_t addr = 0x50; + + /* I2CM初始化,I2C1+目标地址0x50+7位地址+400k传输速率 */ + i2cm_init(I2C_INDEX_1, addr, addr_bit, speed); + + /* I2CS初始化,I2C0+本机地址0x50+7位地址 */ + i2cs_init(I2C_INDEX_0, addr, addr_bit); + + /* buffer初始化 */ + i2c_case_buffer_init(); + + /* I2CM写write_buffer数据到0x50地址的从机 */ + hal_i2cm_dma_write(I2C_INDEX_1, write_buffer, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("tx: %x %x %x %x %x %x %x %x %x %x\n", write_buffer[0], write_buffer[1], write_buffer[2], \ + write_buffer[3], write_buffer[4], write_buffer[5], write_buffer[6], write_buffer[7], write_buffer[8], \ + write_buffer[9]); + + /* I2CM向地址为0x50的从机读取BUFFER_SIZE个数据,此case中,寄存器addr和size为0,可自行添加 */ + hal_i2cm_dma_read(I2C_INDEX_1, 0, 0, i2cm_read_buffer, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("rx: %x %x %x %x %x %x %x %x %x %x\n", i2cm_read_buffer[0], i2cm_read_buffer[1], \ + i2cm_read_buffer[2], i2cm_read_buffer[3], i2cm_read_buffer[4], i2cm_read_buffer[5], \ + i2cm_read_buffer[6], i2cm_read_buffer[7], i2cm_read_buffer[8], i2cm_read_buffer[9]); + + /* 检查传输结果,I2CM发出去的数据是否与接收到的数据一致 */ + CHECK_TRANS_RESULT(write_buffer, i2cm_read_buffer, BUFFER_SIZE); + + /* I2CM && I2CS去初始化 */ + i2cs_deinit(I2C_INDEX_0); + i2cm_deinit(I2C_INDEX_1); + TAU_LOGD("hal_i2c_dma_transfer_case done!\n"); + return true; +} + +/** +* @brief 芯片I2CM与I2CS对接,验证双slave通信的正确性 +* @param +* @retval bool true/false +*/ +static bool hal_i2c_double_slave_case(void) +{ + uint16_t i2cs1_addr = 0x50; + uint8_t i2cs1_addrbit = 7; + uint16_t i2cs2_addr = 0x120; + uint8_t i2cs2_addrbit = 10; + uint32_t speed = 400000; + uint8_t write_buffer1[10] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}; + uint8_t write_buffer2[10] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29}; + + /* I2CM初始化,I2C1+目标地址0x50+7位地址+400k传输速率 */ + i2cm_init(I2C_INDEX_1, i2cs1_addr, i2cs1_addrbit, speed); + + /* I2CS初始化,I2C0+本机地址0x50+7位地址 */ + i2cs_init(I2C_INDEX_0, i2cs1_addr, i2cs1_addrbit); + + /* I2CS初始化,I2C2+本机地址0x120+10位地址 */ + i2cs_init(I2C_INDEX_2, i2cs2_addr, i2cs2_addrbit); + + /* I2CM写write_buffer1数据到0x50地址的从机 */ + hal_i2cm_dma_write(I2C_INDEX_1, write_buffer1, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("tx: %x %x %x %x %x %x %x %x %x %x\n", write_buffer1[0], write_buffer1[1], write_buffer1[2], \ + write_buffer1[3], write_buffer1[4], write_buffer1[5], write_buffer1[6], write_buffer1[7], write_buffer1[8], \ + write_buffer1[9]); + + /* I2CM向地址为0x50的从机读取BUFFER_SIZE个数据,此case中,寄存器addr和size为0,可自行添加 */ + hal_i2cm_dma_read(I2C_INDEX_1, 0, 0, i2cm_read_buffer, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("rx: %x %x %x %x %x %x %x %x %x %x\n", i2cm_read_buffer[0], i2cm_read_buffer[1], \ + i2cm_read_buffer[2], i2cm_read_buffer[3], i2cm_read_buffer[4], i2cm_read_buffer[5], \ + i2cm_read_buffer[6], i2cm_read_buffer[7], i2cm_read_buffer[8], i2cm_read_buffer[9]); + + /* 检查传输结果,I2CM发出去的数据是否与接收到的数据一致 */ + CHECK_TRANS_RESULT(write_buffer1, i2cm_read_buffer, BUFFER_SIZE); + + /* 修改I2CM的目标从机地址为10位地址的0x120 */ + hal_i2cm_set_slave_addr(I2C_INDEX_1, i2cs2_addr, i2cs2_addrbit); + + /* I2CM写write_buffer2数据到0x120地址的从机 */ + hal_i2cm_dma_write(I2C_INDEX_1, write_buffer2, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("tx: %x %x %x %x %x %x %x %x %x %x\n", write_buffer2[0], write_buffer2[1], write_buffer2[2], \ + write_buffer2[3], write_buffer2[4], write_buffer2[5], write_buffer2[6], write_buffer2[7], write_buffer2[8], \ + write_buffer2[9]); + + /* I2CM向地址为0x120的从机读取BUFFER_SIZE个数据,此case中,寄存器addr和size为0,可自行添加 */ + hal_i2cm_dma_read(I2C_INDEX_1, 0, 0, i2cm_read_buffer, BUFFER_SIZE); + + /* 等待I2CM传输完成 */ + while (!hal_i2cm_get_transfer_complete(I2C_INDEX_1)); + TAU_LOGD("rx: %x %x %x %x %x %x %x %x %x %x\n", i2cm_read_buffer[0], i2cm_read_buffer[1], \ + i2cm_read_buffer[2], i2cm_read_buffer[3], i2cm_read_buffer[4], i2cm_read_buffer[5], \ + i2cm_read_buffer[6], i2cm_read_buffer[7], i2cm_read_buffer[8], i2cm_read_buffer[9]); + + /* 检查传输结果,I2CM发出去的数据是否与接收到的数据一致 */ + CHECK_TRANS_RESULT(write_buffer2, i2cm_read_buffer, BUFFER_SIZE); + + /* I2CM && I2CS去初始化 */ + i2cm_deinit(I2C_INDEX_1); + i2cs_deinit(I2C_INDEX_0); + i2cs_deinit(I2C_INDEX_2); + TAU_LOGD("hal_i2c_double_slave_case done!\n"); + return true; +} + +/** +* @brief i2c demo case +* @param none +* @retval none +*/ +void demo_hal_i2c(void) +{ + /* I2C DMA传输case */ + if (!hal_i2c_dma_transfer_case()) + { + i2cs_deinit(I2C_INDEX_0); + i2cm_deinit(I2C_INDEX_1); + TAU_LOGD("hal_i2c_dma_transfer_case fail!\n"); + } + + /* 双slave传输case */ + if (!hal_i2c_double_slave_case()) + { + i2cm_deinit(I2C_INDEX_1); + i2cs_deinit(I2C_INDEX_0); + i2cs_deinit(I2C_INDEX_2); + TAU_LOGD("hal_i2c_double_slave_case fail!\n"); + } + + /* I2C CPU传输case */ + if (!hal_i2c_cpu_transfer_case()) + { + i2cs_deinit(I2C_INDEX_0); + i2cm_deinit(I2C_INDEX_1); + TAU_LOGD("hal_i2c_cpu_transfer_case fail!\n"); + } + + TAU_LOGD("i2c case done\n"); +} +#endif + diff --git a/src/app/module_demo/demo_hal_i2c.h b/src/app/module_demo/demo_hal_i2c.h new file mode 100644 index 0000000..4ecb600 --- /dev/null +++ b/src/app/module_demo/demo_hal_i2c.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_i2c.h +* Description: demo i2c 头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: swx +*******************************************************************************/ +#ifndef __DEMO_HAL_I2C_H__ +#define __DEMO_HAL_I2C_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_i2c(void); + +#endif /* __DEMO_HAL_I2C_H__ */ diff --git a/src/app/module_demo/demo_hal_pwm.c b/src/app/module_demo/demo_hal_pwm.c new file mode 100644 index 0000000..617a92e --- /dev/null +++ b/src/app/module_demo/demo_hal_pwm.c @@ -0,0 +1,125 @@ +/******************************************************************************* +* +* +* File: demo_hal_pwm.c +* Description: pwm demo code +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "stdarg.h" +#include "stdlib.h" +#include "stdio.h" +#include "test_cfg_global.h" +#include "hal_pwm.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" +#include "demo_hal_pwm.h" + +#if _MODULE_DEMO_PWM_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_pwm" + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 数字PWM输出demo +* @param +* @retval bool true/false +*/ +bool demo_digital_pwm_output(void) +{ + /* GPIO 初始化,配置PIN15输出PWM, PWM可配置从PIN2/PIN13/PIN15/PIN17/PIN36输出 */ + hal_gpio_set_mode(IO_PIN_15, PIN15_MODE_PWMO); + //hal_gpio_set_mode(IO_PIN_17, PIN17_MODE_PWMO); + + /* PWM 初始化 ,配置为30K 255阶 */ + if (hal_pwm_init(30000, 255)) + { + /* PWM enable */ + hal_pwm_enable(true); + uint8_t i = 0; + while (i != 255) + { + /* PWM 配置占空比, 从1/255开始到100%*/ + hal_pwm_set_duty(i); + delayMs(20); + i++; + } + } + + /* PWM disable */ + hal_pwm_enable(false); + /* PWM deinit */ + hal_pwm_deinit(); + TAU_LOGD("demo_digital_pwm_output done\n"); + return true; +} + +/** +* @brief 模拟PWM输出demo +* @param +* @retval bool true/false +*/ +bool demo_analog_pwm_output_with_vcc(void) +{ + /* 模拟PWM,可选择不从数字IO输出PWM,也可以选择从数字IO输出 */ + hal_gpio_set_mode(IO_PIN_15, PIN15_MODE_PWMO); + //hal_gpio_set_mode(IO_PIN_17, PIN17_MODE_PWMO); + + /* PWM 初始化 ,配置为30K 255阶 */ + if (hal_pwm_init(30000, 255)) + { + /* PWM enable */ + hal_pwm_enable(true); + /* ELVCC 接入3-6V的电源,PWM 配置从ELVCC调试后的电源 */ + hal_pwm_set_elvcc_output(true); + + uint8_t i = 0; + while (i != 255) + { + hal_pwm_set_duty(i); + delayMs(20); + i++; + } + } + + /* PWM disable */ + hal_pwm_enable(false); + /* PWM deinit */ + hal_pwm_deinit(); + TAU_LOGD("demo_digital_pwm_output done\n"); + return true; +} + +/** +* @brief pwm demo case +* @param none +* @retval none +*/ +void demo_hal_pwm(void) +{ + TAU_LOGD("pwm dmeo \n"); + //demo_digital_pwm_output(); + demo_analog_pwm_output_with_vcc(); +} +#endif diff --git a/src/app/module_demo/demo_hal_pwm.h b/src/app/module_demo/demo_hal_pwm.h new file mode 100644 index 0000000..c9e9770 --- /dev/null +++ b/src/app/module_demo/demo_hal_pwm.h @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_pwm.h +* Description: demo pwm 头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ +#ifndef __DEMO_HAL_PWM_H__ +#define __DEMO_HAL_PWM_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_pwm(void); + +#endif /* __DEMO_HAL_PWM_H__ */ + diff --git a/src/app/module_demo/demo_hal_pwr.c b/src/app/module_demo/demo_hal_pwr.c new file mode 100644 index 0000000..1042343 --- /dev/null +++ b/src/app/module_demo/demo_hal_pwr.c @@ -0,0 +1,218 @@ +/******************************************************************************* +* +* +* File: demo_hal_pwr.c +* Description: pwr demo code +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "stdarg.h" +#include "stdlib.h" +#include "stdio.h" +#include "test_cfg_global.h" +#include "hal_pwr.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" +#include "demo_hal_pwr.h" + +#if _MODULE_DEMO_PWR_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_pwr" + +#define MAIN_POWER_SELECT PWR_SEL_VCC /* 主供电电源选择 */ +#define SLEEP_MODE_POWER PWR_SLEEP_IN_TP18 /* 息屏电源选择 */ + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +static bool sg_system_resume = false; + +static void ap_rstn_pull_high_cb(void *data) +{ + TAU_LOGD("AP RSTN !\n"); + /* system resume begin */ + sg_system_resume = true; + /* 关闭AP reset检查 */ + hal_gpio_set_ap_reset_int(DISABLE, NULL, DETECT_HIGH_LVL); +} + +/** +* @brief normal sleep mode demo +* @param +* @retval bool true/false +*/ +static bool demo_normal_sleep_mode() +{ + /* 主电源供电选择 */ + hal_pwr_set_main_power(MAIN_POWER_SELECT); + + if (MAIN_POWER_SELECT == PWR_SEL_VCC) + { + while (hal_pwr_get_vcc_power_ready() == false); + } + + /* system 正常启动 */ + + /* sustem suspend */ + /* 关闭外设/图像通路 */ + + /* 息屏电源供电选择 */ + hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); + + /* enter deep sleep mode */ + TAU_LOGD("enter stop mode now\n"); + + /* normal sleep mode, MCU可以正常工作 */ + hal_gpio_set_ap_reset_int(ENABLE, ap_rstn_pull_high_cb, DETECT_RISING_EDGE); + + hal_pwr_enter_normal_sleep_mode(); + while (1) + { + /* normal sleep mode 下外设模块正常,打印正常,SWD通讯正常 */ + TAU_LOGD("wait ap rstn\n"); + if (sg_system_resume) + { + break; + } + delayMs(1000); + } + + /* 退出sleep mode */ + hal_pwr_exit_sleep_mode(); + /* system resume */ + TAU_LOGD("system resum\n"); + return true; +} + +/** +* @brief stop sleep mode demo +* @param +* @retval bool true/false +*/ +static bool demo_stop_sleep_mode() +{ + /* 主电源供电选择 */ + hal_pwr_set_main_power(MAIN_POWER_SELECT); + + if (MAIN_POWER_SELECT == PWR_SEL_VCC) + { + while (hal_pwr_get_vcc_power_ready() == false); + } + + /* system 正常启动 */ + + /* sustem suspend */ + /* 关闭外设/图像通路 */ + + /* 息屏电源供电选择 */ + hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); + + /* enter deep sleep mode */ + while (1) + { + + TAU_LOGD("enter stop mode now\n"); + + /* 等待打印完成 */ + delayMs(200); /* 实际使用不需要延时 */ + + /* 配置唤醒AP RSTN 、SPIS CS、TD INT 唤醒*/ + hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_RSTN, WUP_RISING_EDGE); + hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_AP_SPIS_CSN, WUP_FALLING_EDGE); + hal_pwr_set_stop_sleep_wakeup_pin(IO_PAD_TD_INT, WUP_FALLING_EDGE); + delayMs(1000); /* 实际使用不需要延时 */ + /* 进入stop sleep mode, MCU停止运行,SWD无法通讯 */ + io_pad_e wakeup_io = hal_pwr_enter_stop_sleep_mode(); + + TAU_LOGD("stop sleep mode wake up by io %d\n", wakeup_io); + + if (wakeup_io == IO_PAD_AP_RSTN) + { + TAU_LOGD("AP RSTN reset, system resume\n"); + break; + } + else + { + TAU_LOGD("Touch process\n"); + /* 处理touchu 事件 处理完成后继续进入sleep mode*/ + } + } + + /* 退出sleep mode */ + hal_pwr_exit_sleep_mode(); + /* system resume */ + TAU_LOGD("system resum\n"); + return true; +} + +/** +* @brief deep sleep mode demo +* @param +* @retval bool true/false +*/ +static bool demo_deep_sleep_mode() +{ + pwr_reset_flag_e reset_flag = hal_pwr_get_reset_flag(); + TAU_LOGD("wakeup flag %d\n", reset_flag); + if (reset_flag == RF_TDINT_WAKEUP) + { + /* TD_INT reset, 处理触摸事件, 唤醒AP 等待AP RSTN*/ + TAU_LOGD("TD_INT reset\n"); + } + /* 主电源供电选择 */ + hal_pwr_set_main_power(MAIN_POWER_SELECT); + + if (MAIN_POWER_SELECT == PWR_SEL_VCC) + { + while (hal_pwr_get_vcc_power_ready() == false); + } + + /* system 正常启动 */ + + /* enter deep sleep mode */ + TAU_LOGD("enter deep mode now\n"); + + /* 息屏电源供电选择 */ + hal_pwr_set_sleep_mode_power(SLEEP_MODE_POWER); + + /* deep sleep mode,配置AP RSTN 上升沿,TD INT 下降沿唤醒 */ + hal_pwr_enter_deep_sleep_mode(WUP_RISING_EDGE, WUP_FALLING_EDGE); + /* 数字完全掉电,SWD无法通讯,唤醒后芯片重启 */ + return true; +} + +/** +* @brief pwr demo case +* @param none +* @retval none +*/ +void demo_hal_pwr(void) +{ + TAU_LOGD("pwr dmeo \n"); + /* normal sleep mode demo */ + demo_normal_sleep_mode(); + /* stop sleep mode demo */ + demo_stop_sleep_mode(); + /* deep sleep mode demo */ + demo_deep_sleep_mode(); +} +#endif diff --git a/src/app/module_demo/demo_hal_pwr.h b/src/app/module_demo/demo_hal_pwr.h new file mode 100644 index 0000000..c1edefb --- /dev/null +++ b/src/app/module_demo/demo_hal_pwr.h @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_pwr.h +* Description: demo pwr 头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ +#ifndef __DEMO_HAL_PWR_H__ +#define __DEMO_HAL_PWR_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_pwr(void); + +#endif /* __DEMO_HAL_PWR_H__ */ + diff --git a/src/app/module_demo/demo_hal_spi.c b/src/app/module_demo/demo_hal_spi.c new file mode 100644 index 0000000..ec5c2aa --- /dev/null +++ b/src/app/module_demo/demo_hal_spi.c @@ -0,0 +1,485 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_spi.c +* Description: spi demo code +* Version: V0.1 +* Date: 2023-07-27 +* Author: swx +*******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_spi_master.h" +#include "hal_spi_slave.h" +#include "demo_hal_spi.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" + +#if _MODULE_DEMO_SPI_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_spi" + +#define BUFFER_SIZE 255 + +#define CHECK_TRANS_RESULT(src, dst, size) \ + for(uint32_t check_num = 0; check_num < size; check_num ++) \ + {\ + if(src[check_num] != dst[check_num])\ + {\ + TAU_LOGD("src[%d] = %x, dst[%d] = %x , error!!\n",check_num,src[check_num],check_num,dst[check_num]);\ + return false;\ + }\ + }\ + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ +bool spis_hw_miss_flag = false; + +/*SPIS硬件回复功能32组回复数据*/ +uint8_t spis_hw_header_data0[] = {0xf0, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d}; +uint8_t spis_hw_header_data1[] = {0xf1, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}; +uint8_t spis_hw_header_data2[] = {0xf2, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29}; +uint8_t spis_hw_header_data3[] = {0xf3, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39}; +uint8_t spis_hw_header_data4[] = {0xf4, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49}; +uint8_t spis_hw_header_data5[] = {0xf5, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59}; +uint8_t spis_hw_header_data6[] = {0xf6, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69}; +uint8_t spis_hw_header_data7[] = {0xf7, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79}; +uint8_t spis_hw_header_data8[] = {0xf8, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89}; +uint8_t spis_hw_header_data9[] = {0xf9, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99}; +uint8_t spis_hw_header_data10[] = {0xfa, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9}; +uint8_t spis_hw_header_data11[] = {0xfb, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9}; +uint8_t spis_hw_header_data12[] = {0xfc, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9}; +uint8_t spis_hw_header_data13[] = {0xfd, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9}; +uint8_t spis_hw_header_data14[] = {0xfe, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9}; +uint8_t spis_hw_header_data15[] = {0xff, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9}; +uint8_t spis_hw_header_data16[] = {0xf0, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91}; +uint8_t spis_hw_header_data17[] = {0xf1, 0x22, 0x31, 0x42, 0x52, 0x62, 0x72, 0x82, 0x92}; +uint8_t spis_hw_header_data18[] = {0xf2, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, 0x83, 0x93}; +uint8_t spis_hw_header_data19[] = {0xf3, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, 0x84, 0x94}; +uint8_t spis_hw_header_data20[] = {0xf4, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09}; +uint8_t spis_hw_header_data21[] = {0xf5, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19}; +uint8_t spis_hw_header_data22[] = {0xf6, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29}; +uint8_t spis_hw_header_data23[] = {0xf7, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39}; +uint8_t spis_hw_header_data24[] = {0xf8, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49}; +uint8_t spis_hw_header_data25[] = {0xf9, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59}; +uint8_t spis_hw_header_data26[] = {0xfa, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69}; +uint8_t spis_hw_header_data27[] = {0xfb, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79}; +uint8_t spis_hw_header_data28[] = {0xfc, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89}; +uint8_t spis_hw_header_data29[] = {0xfd, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99}; +uint8_t spis_hw_header_data30[] = {0xfe, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89}; +uint8_t spis_hw_header_data31[] = {0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xf0, 0x13, 0xff}; + +static hal_spis_hw_ack_info_t spis_hw_test_header[32] = +{ + /*序号_匹配值_匹配长度_使能_回复延时_回复数据的地址_回复数据长度 */ + {0, {0x01, 0x02, 0x03, 0x04}, 0, 1, 0, spis_hw_header_data0, sizeof(spis_hw_header_data0) / sizeof(uint8_t) - 1}, + {1, {0x05, 0x06, 0x07, 0x08}, 1, 1, 1, spis_hw_header_data1, sizeof(spis_hw_header_data1) / sizeof(uint8_t) - 1}, + {2, {0x09, 0x0a, 0x0b, 0x0c}, 2, 1, 2, spis_hw_header_data2, sizeof(spis_hw_header_data2) / sizeof(uint8_t) - 1}, + {3, {0x0d, 0x0e, 0x0f, 0x10}, 3, 1, 3, spis_hw_header_data3, sizeof(spis_hw_header_data3) / sizeof(uint8_t) - 1}, + {4, {0x11, 0x12, 0x13, 0x14}, 0, 1, 4, spis_hw_header_data4, sizeof(spis_hw_header_data4) / sizeof(uint8_t) - 1}, + {5, {0x15, 0x16, 0x17, 0x18}, 1, 1, 5, spis_hw_header_data5, sizeof(spis_hw_header_data5) / sizeof(uint8_t) - 1}, + {6, {0x19, 0x1a, 0x1b, 0x1c}, 2, 1, 6, spis_hw_header_data6, sizeof(spis_hw_header_data6) / sizeof(uint8_t) - 1}, + {7, {0x1d, 0x1e, 0x1f, 0x20}, 3, 1, 7, spis_hw_header_data7, sizeof(spis_hw_header_data7) / sizeof(uint8_t) - 1}, + {8, {0x21, 0x22, 0x23, 0x24}, 0, 1, 8, spis_hw_header_data8, sizeof(spis_hw_header_data8) / sizeof(uint8_t) - 1}, + {9, {0x25, 0x26, 0x27, 0x28}, 1, 1, 9, spis_hw_header_data9, sizeof(spis_hw_header_data9) / sizeof(uint8_t) - 1}, + {10, {0x29, 0x2a, 0x2b, 0x2c}, 2, 1, 10, spis_hw_header_data10, sizeof(spis_hw_header_data10) / sizeof(uint8_t) - 1}, + {11, {0x2d, 0x2e, 0x2f, 0x30}, 3, 1, 0, spis_hw_header_data11, sizeof(spis_hw_header_data11) / sizeof(uint8_t) - 1}, + {12, {0x31, 0x32, 0x33, 0x34}, 0, 1, 1, spis_hw_header_data12, sizeof(spis_hw_header_data12) / sizeof(uint8_t) - 1}, + {13, {0x35, 0x36, 0x37, 0x38}, 1, 1, 2, spis_hw_header_data13, sizeof(spis_hw_header_data13) / sizeof(uint8_t) - 1}, + {14, {0x39, 0x3a, 0x3b, 0x3c}, 2, 1, 3, spis_hw_header_data14, sizeof(spis_hw_header_data14) / sizeof(uint8_t) - 1}, + {15, {0x3d, 0x3e, 0x3f, 0x40}, 3, 1, 4, spis_hw_header_data15, sizeof(spis_hw_header_data15) / sizeof(uint8_t) - 1}, + {16, {0x41, 0x42, 0x43, 0x44}, 0, 1, 5, spis_hw_header_data16, sizeof(spis_hw_header_data16) / sizeof(uint8_t) - 1}, + {17, {0x45, 0x46, 0x47, 0x48}, 1, 1, 6, spis_hw_header_data17, sizeof(spis_hw_header_data17) / sizeof(uint8_t) - 1}, + {18, {0x49, 0x4a, 0x4b, 0x4c}, 2, 1, 7, spis_hw_header_data18, sizeof(spis_hw_header_data18) / sizeof(uint8_t) - 1}, + {19, {0x4d, 0x4e, 0x4f, 0x50}, 3, 1, 8, spis_hw_header_data19, sizeof(spis_hw_header_data19) / sizeof(uint8_t) - 1}, + {20, {0x51, 0x52, 0x53, 0x54}, 0, 1, 9, spis_hw_header_data20, sizeof(spis_hw_header_data20) / sizeof(uint8_t) - 1}, + {21, {0x55, 0x56, 0x57, 0x58}, 1, 1, 10, spis_hw_header_data21, sizeof(spis_hw_header_data21) / sizeof(uint8_t) - 1}, + {22, {0x59, 0x5a, 0x5b, 0x5c}, 2, 1, 11, spis_hw_header_data22, sizeof(spis_hw_header_data22) / sizeof(uint8_t) - 1}, + {23, {0x5d, 0x5e, 0x5f, 0x60}, 3, 1, 12, spis_hw_header_data23, sizeof(spis_hw_header_data23) / sizeof(uint8_t) - 1}, + {24, {0x61, 0x62, 0x63, 0x64}, 0, 1, 13, spis_hw_header_data24, sizeof(spis_hw_header_data24) / sizeof(uint8_t) - 1}, + {25, {0x65, 0x66, 0x67, 0x68}, 1, 1, 14, spis_hw_header_data25, sizeof(spis_hw_header_data25) / sizeof(uint8_t) - 1}, + {26, {0x69, 0x6a, 0x6b, 0x6c}, 2, 1, 15, spis_hw_header_data26, sizeof(spis_hw_header_data26) / sizeof(uint8_t) - 1}, + {27, {0x6d, 0x6e, 0x6f, 0x70}, 3, 1, 11, spis_hw_header_data27, sizeof(spis_hw_header_data27) / sizeof(uint8_t) - 1}, + {28, {0x71, 0x72, 0x73, 0x74}, 0, 1, 12, spis_hw_header_data28, sizeof(spis_hw_header_data28) / sizeof(uint8_t) - 1}, + {29, {0x75, 0x76, 0x77, 0x78}, 1, 1, 13, spis_hw_header_data29, sizeof(spis_hw_header_data29) / sizeof(uint8_t) - 1}, + {30, {0x79, 0x7a, 0x7b, 0x7c}, 2, 1, 12, spis_hw_header_data30, sizeof(spis_hw_header_data30) / sizeof(uint8_t) - 1}, + {31, {0x7d, 0x7e, 0x7f, 0x80}, 3, 1, 14, spis_hw_header_data31, sizeof(spis_hw_header_data31) / sizeof(uint8_t) - 1}, +}; + +static uint8_t spim_write_buffer[BUFFER_SIZE] = {0}; +static uint8_t spim_read_buffer[BUFFER_SIZE] = {0}; +static uint8_t spis_read_buffer[BUFFER_SIZE] = {0}; +static uint8_t spis_write_buffer[BUFFER_SIZE] = {0}; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/** +* @brief spi master IO初始化 +* @param none +* @retval +*/ +static void spim_io_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PAD_TD_SPIM_CLK, PIN5_MODE_SPIM_SCLK, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_TD_SPIM_CSN, PIN6_MODE_SPIM_CSN, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_TD_SPIM_MISO, PIN7_MODE_SPIM_MISO, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_TD_SPIM_MOSI, PIN4_MODE_SPIM_MOSI, IO_IOE_NONE, IO_LVL_HIGH} + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + +/** +* @brief spi slave IO初始化 +* @param none +* @retval +*/ +static void spis_io_init(void) +{ + io_pad_attr_t attrs[] = + { + {IO_PAD_AP_SPIS_CLK, PIN32_MODE_SPIS_SCLK, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_AP_SPIS_CSN, PIN31_MODE_SPIS_CSN, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_AP_SPIS_MISO, PIN30_MODE_SPIS_MISO, IO_IOE_NONE, IO_LVL_HIGH}, + {IO_PAD_AP_SPIS_MOSI, PIN33_MODE_SPIS_MOSI, IO_IOE_NONE, IO_LVL_HIGH} + }; + uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t); + hal_gpio_config_pad(attrs, size); +} + +/** +* @brief spi slave中断回调函数 +* @param event:SPIS收到的中断事件 +* @param packet_info: SPIS收到的数据packet +* @retval +*/ +void spis_callback(hal_spis_event_e event, hal_spis_packet_info_t *packet_info) +{ + /* 收到CS_RISE中断 */ + if (event == SPIS_EVENT_RCV_CS_RISE) + { + /* 更新SPIS的txbuffer和rxbuffer */ + hal_spis_update_rx_buffer(spis_read_buffer, BUFFER_SIZE); + hal_spis_update_tx_buffer(spis_write_buffer, BUFFER_SIZE, true); + } + /* 收到CS_FALL中断 */ + else if (event == SPIS_EVENT_RCV_CS_FALL) + { + //TAU_LOGD("spis_test SPIS_EVENT_RCV_CS_FALL\n"); + } + /* 收到数据接收指定阈值中断 */ + else if (event == SPIS_EVENT_RCV_CNT) + { + //TAU_LOGD("spis_test SPIS_EVENT_RCV_CNT\n"); + } + /* 收到数据接收完全中断 */ + else if (event == SPIS_EVENT_RCV_FULL) + { + //TAU_LOGD("spis_test SPIS_EVENT_RCV_CNT\n"); + } +} + +/** +* @brief spi slave硬件快速回复功能中断回调函数 +* @param event:SPIS收到的中断事件 +* @param packet_info: SPIS收到的数据packet +* @retval +*/ +void spis_hw_callback(hal_spis_event_e event, hal_spis_packet_info_t *packet_info) +{ + /* 收到CS_RISE中断 */ + if (event == SPIS_EVENT_RCV_CS_RISE) + { + /* 产生了ALL_MISS中断的标记 */ + if (spis_hw_miss_flag) + { + /* 使能SPIS硬件快速回复功能,默认回复值为0xE0 */ + hal_spis_set_hw_ack_enable(ENABLE, 0xE0); + spis_hw_miss_flag = false; + } + /* SPIS更新读写buffer */ + hal_spis_update_tx_buffer(spis_hw_header_data31, sizeof(spis_hw_header_data31) / sizeof(uint8_t), true); + hal_spis_update_rx_buffer(spis_read_buffer, BUFFER_SIZE); + } + + /* 收到ALL_MISS中断 */ + if (event == SPIS_EVENT_ALL_MISS) + { + /* 关闭SPIS硬件快速回复功能,默认回复值为0xF0 */ + hal_spis_set_hw_ack_enable(DISABLE, 0xf0); + spis_hw_miss_flag = true; + TAU_LOGE("All miss intr test\n"); + } +} + +/** +* @brief 获取随机值函数 +* @param range_begin: 随机值范围起始 +* @param renge_end: 随机值范围结束 +* @retval uint32_t : 范围内随机值 +*/ +uint32_t unit_case_get_rand(uint32_t range_begin, uint32_t renge_end) +{ + uint32_t range = 1; + if (renge_end > range_begin) + { + range = renge_end - range_begin + 1; + } + else + { + TAU_LOGE("rand range[%d ~ %d] error! default set to 1\n"); + } + return (uint32_t)((rand() % range) + range_begin); +} + +/** +* @brief spi master和slave的发送/接收buffer初始化 +* @param none +* @retval +*/ +static bool spi_case_rand_buffer(bool spim_en, bool spis_en) +{ + TAU_LOGD("spi_case_rand_buffer\n"); + /* read buffer默认初始化为0, tx buffer 初始为随机数 */ + uint8_t i = 0 ; + uint32_t count = BUFFER_SIZE; + for (i = 0; i < count; i ++) + { + spis_read_buffer[i] = 0; + spim_read_buffer[i] = 0; + if (spim_en) + { + spim_write_buffer[i] = unit_case_get_rand(0, 255); + } + if (spis_en) + { + spis_write_buffer[i] = unit_case_get_rand(0, 255); + } + } + return true; +} + + +/** +* @brief 芯片SPIM与SPIS对接,验证基础传输数据的正确性 +* @param +* @retval bool true/false +*/ +static bool hal_spi_base_case(void) +{ + uint32_t speed = 400000; + uint8_t cpha = 0; + uint8_t cpol = 0; + + /* 随机buffer值 */ + spi_case_rand_buffer(true, true); + + /* SPIS IO初始化 */ + spis_io_init(); + /* SPIS初始化,相位0+极性0 */ + hal_spis_init(cpha, cpol); + /* SPIS设置初始读写buffer */ + hal_spis_update_rx_buffer(spis_read_buffer, BUFFER_SIZE); + hal_spis_update_tx_buffer(spis_write_buffer, BUFFER_SIZE, true); + /* SPIS注册回调函函数,这里开启了CS_RISE、CS_FALL、RX_CNT、RX_FULL中断,RX_CNT阈值设置为100 */ + hal_spis_register_callback(spis_callback, SPIS_EVENT_RCV_CS_RISE | SPIS_EVENT_RCV_CS_FALL | SPIS_EVENT_RCV_CNT | SPIS_EVENT_RCV_FULL, 100); + /* SPIS启动 */ + hal_spis_start(); + + /* SPIM IOc初始化 */ + spim_io_init(); + /* SPIM初始化,400k传输速率+相位0+极性0 */ + hal_spim_init(speed, cpha, cpol); + + TAU_LOGD("base trans para cpha[%d] cpol[%d] speed[%d] \n", cpha, cpol, speed); + + /* 测试 SPIM CPU读写 */ + hal_spim_read(spim_write_buffer, BUFFER_SIZE, spim_read_buffer, BUFFER_SIZE); + /* SPIM 写完,检查 SPIS RX buffer 是否等于 SPIM TX buffer*/ + CHECK_TRANS_RESULT(spim_write_buffer, spis_read_buffer, BUFFER_SIZE); + /* SPIM 读完,检查 SPIS TX buffer 是否等于 SPIM RX buffer*/ + CHECK_TRANS_RESULT(spis_write_buffer, spim_read_buffer, BUFFER_SIZE); + + /* 随机buffer值 */ + spi_case_rand_buffer(true, false); + + /* 测试 SPIM CPU写 */ + hal_spim_write(spim_write_buffer, BUFFER_SIZE); + /* SPIM 写完,检查 SPIS RX buffer 是否等于 SPIM TX buffer*/ + CHECK_TRANS_RESULT(spim_write_buffer, spis_read_buffer, BUFFER_SIZE); + + /* 传输完成,关闭SPI */ + hal_spis_stop(); + hal_spis_deinit(); + hal_spim_deinit(); + + TAU_LOGD("hal_spi_base_case done!\n"); + return true; +} + + +/** +* @brief 芯片SPIM与SPIS对接, 验证SPIS 硬件快速回复传输功能 +* @param +* @retval bool true/false +*/ +static bool hal_spis_hw_case(void) +{ + uint32_t speed = 400000; + uint8_t cpha = 0; + uint8_t cpol = 0; + uint8_t write_buffer[30] = {0x9e, 0xa0, 0x00, 0x01, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x8a, 0x1b, 0x1c, 0x5d, 0x7e, 0x4f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x30, 0x31, 0x32, 0x33 + }; + /* SPIS IO初始化 */ + spis_io_init(); + /* SPIS初始化,相位0+极性0 */ + hal_spis_init(cpha, cpol); + + /* SPIS设置初始读buffer */ + hal_spis_update_rx_buffer(spis_read_buffer, BUFFER_SIZE); + /* SPIS设置初始写buffer */ + hal_spis_update_tx_buffer(spis_hw_header_data31, sizeof(spis_hw_header_data31) / sizeof(uint8_t), true); + /* SPIS注册回调函函数,这里开启了CS_RISE和ALL_MISS中断 */ + hal_spis_register_callback(spis_hw_callback, SPIS_EVENT_RCV_CS_RISE | SPIS_EVENT_ALL_MISS, 0); + + /* 设置SPIS硬件快速回复参数 */ + hal_spis_set_hw_ack_info(spis_hw_test_header, (sizeof(spis_hw_test_header) / sizeof(hal_spis_hw_ack_info_t))); + /* 使能SPIS硬件快速回复功能,默认回复值为0xE0 */ + hal_spis_set_hw_ack_enable(ENABLE, 0xE0); + /* SPIS启动 */ + hal_spis_start(); + + /* SPIM IO初始化 */ + spim_io_init(); + /* SPIM初始化,400k传输速率+相位0+极性0 */ + hal_spim_init(speed, cpha, cpol); + + /* 32组硬件快速回复功能参数demo */ + for (int k = 0; k < 32; k++) + { + /* write_buffer前4个字节设置为每组参数的匹配值 */ + for (int j = 0; j < 4; j++) + { + write_buffer[j] = spis_hw_test_header[k].cmp_data[j]; + } + + /* 将第11组和第14组的write_buffer[0]自加,这样匹配不到后就会产生ALL_MISS中断 */ + if ((k == 10) || (k == 13)) + { + write_buffer[0]++; + } + + /* FLUSH SPIM FIFO */ + hal_spim_flush(); + /* SPIM发送30个write_buffer数据给SPIS,并读取SPIS的30个数据到spim_read_buffer */ + hal_spim_read(write_buffer, 30, spim_read_buffer, 30); + + /* 等待SPIM传输完成 */ + while (!hal_spim_get_transfer_complete()); + + printf("SPIM_TX:"); + for (int i = 0; i < 30; i++) + { + printf("%02x ", spis_read_buffer[i]); + } + printf("\n"); + printf("SPIM_RX:"); + for (int i = 0; i < 30; i++) + { + printf("%02x ", spim_read_buffer[i]); + } + printf("\n"); + + /* 以下是校验SPIS的硬件快速回复数据是否正确 */ + int index = spis_hw_test_header[k].delay_clk + 1 + spis_hw_test_header[k].cmp_len + 1; + printf("CMP_LEN:%d, DELAY_CLK:%d\n", spis_hw_test_header[k].cmp_len, spis_hw_test_header[k].delay_clk); + bool flag = true; + for (int i = 0; i < spis_hw_test_header[k].ack_length; i++) + { + if (spis_hw_test_header[k].ack_address[i] == spim_read_buffer[index + i]) + { + if (flag) + { + printf("Group[%d] OK\n", k); + flag = false; + } + + continue; + } + else + { + if ((k == 10) || (k == 13)) + { + if (flag) + { + printf("Group[%d] All_miss init test\n", k); + flag = false; + } + continue; + } + else + { + printf("Header_addr[%d]:%02x Header_addr[%d]:%02x ", i, spis_hw_test_header[k].ack_address[i], index + i, spim_read_buffer[index + i]); + printf("Group[%d] error\n", k); + return false; + } + } + } + printf("\n"); + } + + /* 传输完成,关闭SPI */ + hal_spis_stop(); + hal_spis_deinit(); + hal_spim_deinit(); + TAU_LOGD("hal_spis_hw_case done!\n"); + return true; +} + +/** +* @brief spi demo case +* @param none +* @retval none +*/ +void demo_hal_spi(void) +{ + /* 基础传输case */ + if (!hal_spi_base_case()) + { + hal_spis_stop(); + hal_spis_deinit(); + hal_spim_deinit(); + TAU_LOGD("hal_spi_base_case fail!\n"); + } + + /* SPIS硬件快速回复功能case */ + if (!hal_spis_hw_case()) + { + hal_spis_stop(); + hal_spis_deinit(); + hal_spim_deinit(); + TAU_LOGD("hal_spis_hw_case fail!\n"); + } + + TAU_LOGD("spi case done\n"); +} +#endif diff --git a/src/app/module_demo/demo_hal_spi.h b/src/app/module_demo/demo_hal_spi.h new file mode 100644 index 0000000..cd1db2b --- /dev/null +++ b/src/app/module_demo/demo_hal_spi.h @@ -0,0 +1,37 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_spi.h +* Description: demo spi 头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: swx +*******************************************************************************/ +#ifndef __DEMO_HAL_SPI_H__ +#define __DEMO_HAL_SPI_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_spi(void); + +#endif /* __DEMO_HAL_SPI_H__ */ + + diff --git a/src/app/module_demo/demo_hal_swire.c b/src/app/module_demo/demo_hal_swire.c new file mode 100644 index 0000000..b8c45be --- /dev/null +++ b/src/app/module_demo/demo_hal_swire.c @@ -0,0 +1,140 @@ +/******************************************************************************* +* +* +* File: demo_hal_swire.c +* Description: swire demo code +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "stdarg.h" +#include "stdlib.h" +#include "stdio.h" +#include "test_cfg_global.h" +#include "hal_swire.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" +#include "demo_hal_swire.h" + +#if _MODULE_DEMO_SWIRE_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "demo_hal_swire" + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief swire 手动产生波形 demo +* @param +* @retval bool true/false +*/ +static bool demo_hal_swire_gen_swire_manual(void) +{ + /* 配置PIN15为SWIRE 输出*/ + hal_gpio_set_mode(IO_PAD_AP_SWIRE, PIN15_MODE_SWIRE); + /* swire 初始化 */ + hal_swire_init(); + /* 启动swire, Swire引脚信号拉高 */ + hal_swire_enable(true); + delayMs(100); + /* 配置pulse 为36,产生36个脉冲波形后保持拉高 */ + hal_swire_set_pulse(36); + delayMs(100); + /* 配置pulse 为25,产生25个脉冲波形后保持拉高 */ + hal_swire_set_pulse(25); + delayMs(100); + /* 关闭swire, Swire引脚信号拉低 */ + hal_swire_enable(false); + /* swire去初始化 */ + hal_swire_deinit(); + return true; +} + +/** +* @brief swire 自动产生波形 demo +* @param +* @retval bool true/false +*/ +static bool demo_hal_swire_gen_swire_auto(void) +{ + /* 配置PIN15为SWIRE 输出*/ + hal_gpio_set_mode(IO_PAD_AP_SWIRE, PIN15_MODE_SWIRE); + /* swire 初始化 */ + hal_swire_init(); + hal_swire_set_timer(TIMER_NUM0, 16, true); + + /* 启动swire, Swire引脚信号拉高,每个16ms发送一次swire信号 */ + hal_swire_enable(true); + + /*保持每16ms输出36个脉冲,持续100ms*/ + hal_swire_set_pulse(36); /* 使用timer情况下pulse配置为0时实际输出255个脉冲, 可以在enable之前或者enable前后配置发送正确波形,消除255脉冲问题 */ + delayMs(100); + + /* 配置pulse 为25,保持每16ms输出36个脉冲,持续100ms */ + hal_swire_set_pulse(25); + + /* 关闭swire, Swire引脚信号拉低 */ + hal_swire_enable(false); + /* swire去初始化 */ + hal_swire_deinit(); + return true; +} + +/** +* @brief swire 配置波形形状demo +* @param +* @retval bool true/false +*/ +static bool demo_hal_swire_set_swire_waveform(void) +{ + /* 配置PIN15为SWIRE 输出*/ + hal_gpio_set_mode(IO_PAD_AP_SWIRE, PIN15_MODE_SWIRE); + /* swire 初始化 */ + hal_swire_init(); + /* 配置波形,持续时间50us */ + hal_swire_set_waveform(50, 50, 50, 50); + /* 启动swire, Swire引脚信号拉高 */ + hal_swire_enable(true); + delayMs(100); + /* 配置pulse 为36,产生36个脉冲波形后保持拉高 */ + hal_swire_set_pulse(36); + delayMs(100); + /* 关闭swire, Swire引脚信号拉低 */ + hal_swire_enable(false); + /* swire去初始化 */ + hal_swire_deinit(); + return true; +} + + +/** +* @brief swire demo case +* @param none +* @retval none +*/ +void demo_hal_swire(void) +{ + TAU_LOGD("swire dmeo \n"); + demo_hal_swire_gen_swire_manual(); + //demo_hal_swire_gen_swire_auto(); + //demo_hal_swire_set_swire_waveform(); +} +#endif diff --git a/src/app/module_demo/demo_hal_swire.h b/src/app/module_demo/demo_hal_swire.h new file mode 100644 index 0000000..c39f949 --- /dev/null +++ b/src/app/module_demo/demo_hal_swire.h @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_swire.h +* Description: demo swire 头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: jaya + *******************************************************************************/ +#ifndef __DEMO_HAL_SWIRE_H__ +#define __DEMO_HAL_SWIRE_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_swire(void); + +#endif /* __DEMO_HAL_SWIRE_H__ */ + diff --git a/src/app/module_demo/demo_hal_timer.c b/src/app/module_demo/demo_hal_timer.c new file mode 100644 index 0000000..7abe963 --- /dev/null +++ b/src/app/module_demo/demo_hal_timer.c @@ -0,0 +1,136 @@ +/******************************************************************************* +* +* +* File: demo_hal_timer.c +* Description: timer demo源文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_timer.h" +#include "hal_gpio.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "timer-log" + +#define TIMER_DEMO_NORMAL 0 //定时器常规使用,循环超时 +#define TIMER_DEMO_RESTART 1 //中断重启定时器 + +#define TIMER_SEL TIMER_NUM0 //timer0-3 都ok + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ +static io_pad_e sg_timer_io_pad = IO_PAD_GPIO1; +static gpio_level_e sg_timer_io_lvl = IO_LVL_LOW; +#if TIMER_DEMO_RESTART +static uint16_t sg_timer_count = 1; +#endif + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +#if TIMER_DEMO_RESTART +/** +* @brief 重新循环中断回调函数 +* @param None +* @retval None +*/ +static void demo_timer_restart_callback(void *data) +{ + /* 翻转GPIO */ + sg_timer_io_lvl = (sg_timer_io_lvl ? IO_LVL_LOW : IO_LVL_HIGH); + hal_gpio_set_output_data(sg_timer_io_pad, sg_timer_io_lvl); + + /* 重新启动定时器 */ + sg_timer_count = sg_timer_count * 10; + if (sg_timer_count > 100) + { + sg_timer_count = 1; + } + hal_timer_start(TIMER_SEL, sg_timer_count * 10, demo_timer_restart_callback, NULL); +} + +/** +* @brief 重新中断例程初始化 +* @param None +* @retval None +*/ +static void demo_timer_case_restart(void) +{ + /*重新初始化定时器*/ + hal_timer_init(TIMER_SEL); + hal_timer_set_repeat(TIMER_SEL, false); + + /*初始化GPIO低电平*/ + hal_gpio_init_output(sg_timer_io_pad, sg_timer_io_lvl); + + /*更新当前timer测试参数*/ + hal_timer_start(TIMER_SEL, sg_timer_count * 10, demo_timer_restart_callback, NULL); +} +#endif + +#if TIMER_DEMO_NORMAL +/** +* @brief 多次循环中断回调函数 +* @param None +* @retval None +*/ +static void demo_timer_normal_callback(void *data) +{ + /* 翻转GPIO */ + sg_timer_io_lvl = (sg_timer_io_lvl ? IO_LVL_LOW : IO_LVL_HIGH); + hal_gpio_set_output_data(sg_timer_io_pad, sg_timer_io_lvl); +} + +/** +* @brief 重新中断例程初始化 +* @param None +* @retval None +*/ +static void demo_timer_case_normal(void) +{ + /*重新初始化定时器*/ + hal_timer_init(TIMER_SEL); + hal_timer_set_repeat(TIMER_SEL, true); + + /*初始化GPIO低电平*/ + hal_gpio_init_output(sg_timer_io_pad, sg_timer_io_lvl); + + /*更新当前timer测试参数*/ + hal_timer_start(TIMER_SEL, 10, demo_timer_normal_callback, NULL); +} +#endif + +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_timer_case(void) +{ + TAU_LOGI("start test\r\n"); + +#if TIMER_DEMO_NORMAL + demo_timer_case_normal(); // 10ms定时进行IO电平翻转 +#elif TIMER_DEMO_RESTART + demo_timer_case_restart(); +#endif + + TAU_LOGI("end test\r\n"); +} + diff --git a/src/app/module_demo/demo_hal_timer.h b/src/app/module_demo/demo_hal_timer.h new file mode 100644 index 0000000..0de0f1d --- /dev/null +++ b/src/app/module_demo/demo_hal_timer.h @@ -0,0 +1,39 @@ +/******************************************************************************* +* +* +* File: demo_hal_timer.h +* Description: timer demo头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ +#ifndef __DEMO_TIMER_H__ +#define __DEMO_TIMER_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_timer_case(void); + +#endif /* __DEMO_TIMER_H__ */ diff --git a/src/app/module_demo/demo_hal_uart.c b/src/app/module_demo/demo_hal_uart.c new file mode 100644 index 0000000..c4cf64e --- /dev/null +++ b/src/app/module_demo/demo_hal_uart.c @@ -0,0 +1,648 @@ +/******************************************************************************* +* +* +* File: demo_hal_uart.c +* Description: 测试说明:将电脑端USB转串口分别连接UART0,1测试 +* Version: V0.1 +* Date: 2023-07-09 +* Author: kc + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "stdarg.h" +#include "stdlib.h" +#include "stdio.h" +#include "test_cfg_global.h" +#include "hal_uart.h" +#include "hal_gpio.h" +#include "tau_log.h" +#include "tau_delay.h" +#include "demo_hal_uart.h" + +#if _MODULE_DEMO_UART_EN +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "uart-log" + +#define UART_TEST_AUTO 1 + +#define TEST_UART_BAUDRATE 115200 + +/******************************************************************************* +* 3.Global function and Global variable declarations +*******************************************************************************/ + +/** + * @brief 测试case + */ +typedef enum +{ + UART_CASE_BLOCKING = 0, + UART_CASE_NONE_BLOCKING, + UART_CASE_DMA, + UART_CASE_MAX, + UART_CASE_LOOP_BACK, + UART_CASE_DEINIT, +} uart_case_e; + +typedef void (*unit_test_func)(); +typedef struct unit_test_entry_t +{ + char case_name[128]; /* Case名称 */ + unit_test_func case_func; /* Case处理函数 */ +} unit_test_entry_t; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ +static char sg_uart_log[256] = {0}; +static char sg_uart_send_buff[1024] = {0}; +static char sg_uart_recv_buff[1024] = {0}; +static uart_case_e sg_uart_case = UART_CASE_BLOCKING; +static hal_uart_num_e sg_uart_cur_num = HAL_UART_0; +volatile static bool sg_uart_case_done = true; +static hal_uart_config_t s_huart; + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void STRFMT(const char *fmt, ...) +{ + va_list ap;//初始化指向可变参数列表的指针 + //将第一个可变参数的地址付给ap,即ap指向可变参数列表的开始 + va_start(ap, fmt); + //将参数fmt、ap指向的可变参数一起转换成格式化字符串,放string数组中,其作用同sprintf(),只是参数类型不同 + vsprintf(sg_uart_log, fmt, ap); + va_end(ap); //ap付值为0,没什么实际用处,主要是为程序健壮性 +} + +#define TEST_LOG(num,format,...) \ + do { \ + STRFMT(format, ##__VA_ARGS__); \ + hal_uart_send_blocking(num, (uint8_t *)sg_uart_log, strlen(sg_uart_log)); \ + } while (0) +/************************************************************************** +* @name : TEST_UART_PinMux_Init +* @brief : UART 脚位功能初始化 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_mode_init(void) +{ + //UART 0 + hal_gpio_set_mode(IO_PAD_UART0_TX, PIN2_MODE_UART0_TX); + hal_gpio_set_mode(IO_PAD_UART0_RX, PIN36_MODE_UART0_RX); + //UART 1 只有唯一一组 + //hal_gpio_set_mode(IO_PAD_UART1_TX, PIN14_MODE_UART1_TX); + //hal_gpio_set_mode(IO_PAD_TD_TP_RESX, PIN13_MODE_UART1_RX); +} + +/************************************************************************** +* @name : test_uart_deinit +* @brief : uart注销 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_common_deinit(hal_uart_num_e num) +{ + delayMs(500); + hal_uart_deinit(num); +} + +/************************************************************************** +* @name : test_uart_normal_init +* @brief : uart 普通模式初始化 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_common_init(hal_uart_num_e num) +{ + hal_uart_config_t huart = {0}; + huart.baudrate = TEST_UART_BAUDRATE; + huart.data_width = HAL_UART_DATAWIDTH_8; + huart.parity = HAL_UART_PARITY_NO; + huart.stopbits = HAL_UART_STOPBIT_1; + hal_uart_init(num, &huart); +} + +/** +* @brief 获取端口号 +* @param 无 +* @retval 无 +*/ +static char test_uart_get_input_str(hal_uart_num_e num) +{ + char str = 0; + hal_uart_recv_blocking(num, (uint8_t *)&str, 1); + return str; +} + +/** +* @brief 获取输入字符串个数 +* @param 无 +* @retval 无 +*/ +static uint32_t test_uart_get_input_num(hal_uart_num_e num) +{ + uint32_t recv = 0; + char str[10] = {0}; + uint8_t i = 0; + + TEST_LOG(num, "input recv num and space to exit:"); + + while (1) + { + hal_uart_recv_blocking(num, (uint8_t *)&str[i], 1); + if (str[i] >= '0' && str[i] <= '9') + { + TEST_LOG(num, "%c", (char)str[i]); + i++; + } + else if (str[i] == 32) + { + str[i] = 0; + TEST_LOG(num, "\n"); + break; + } + } + + recv = atol(str); + return recv; +} + +/** +* @brief 复位uart所在PAD为GPIO mode +* @param 无 +* @retval 无 +*/ +static void test_uart_reset_uart_mode(void) +{ + hal_gpio_init_input(IO_PAD_AP_SPIS_MOSI); + hal_gpio_init_input(IO_PAD_UART0_TX); + hal_gpio_init_input(IO_PAD_AP_SPIS_MISO); + hal_gpio_init_input(IO_PAD_UART0_RX); + hal_gpio_init_input(IO_PAD_AP_TPRSTN); + hal_gpio_init_input(IO_PAD_AP_PWMEN); + hal_gpio_init_input(IO_PAD_TD_SPIM_MOSI); + hal_gpio_init_input(IO_PAD_UART1_TX); + hal_gpio_init_input(IO_PAD_TD_TP_RESX); +} + +/** +* @brief 在UART2上设置UART1的TX和RX PAD +* @param 无 +* @retval 无 +*/ +static void test_uart_set_uart_mode(void) +{ + char str = 0; + hal_uart_num_e uart_org_num = sg_uart_cur_num; + + TEST_LOG(uart_org_num, "select UART(0/1):\n"); + TEST_LOG(uart_org_num, "Enter:"); + str = test_uart_get_input_str(uart_org_num); + TEST_LOG(uart_org_num, "%c\n\n", str); + sg_uart_cur_num = (hal_uart_num_e)(str - '0'); + + if (HAL_UART_1 == sg_uart_cur_num) /* 测试UART1 */ + { + //sel tx + TEST_LOG(uart_org_num, "select UART1 TX:\n"); + TEST_LOG(uart_org_num, "0:IO_PAD_UART1_TX->PIN14_MODE_UART1_TX\n"); + //sel rx + TEST_LOG(uart_org_num, "select UART1 RX:\n"); + TEST_LOG(uart_org_num, "0:IO_PAD_TD_TP_RESX->PIN13_MODE_UART1_RX\n"); + TEST_LOG(uart_org_num, "change the connect pin and press space to continue \n"); + delayMs(200); + + test_uart_reset_uart_mode(); + hal_gpio_set_mode(IO_PAD_UART1_TX, PIN14_MODE_UART1_TX); + hal_gpio_set_mode(IO_PAD_TD_TP_RESX, PIN13_MODE_UART1_RX); + hal_uart_deinit(HAL_UART_0); + test_uart_common_init(HAL_UART_1); + } + else + { + uint8_t sel_tx, sel_rx; + //sel tx + TEST_LOG(uart_org_num, "select UART0 TX:\n"); + TEST_LOG(uart_org_num, "0:IO_PAD_UART0_TX->PIN2_MODE_UART0_TX\n"); + TEST_LOG(uart_org_num, "1:IO_PAD_AP_SPIS_MOSI->PIN33_MODE_UART0_TX \n"); + TEST_LOG(uart_org_num, "2:IO_PAD_TD_SPIM_MOSI->PIN4_MODE_UART0_TX\n"); + TEST_LOG(uart_org_num, "Enter:"); + str = test_uart_get_input_str(uart_org_num); + TEST_LOG(uart_org_num, "%c\n\n", str); + sel_tx = str - '0'; + + //sel rx + TEST_LOG(uart_org_num, "select UART0 RX:\n"); + TEST_LOG(uart_org_num, "0:IO_PAD_UART0_RX->PIN36_MODE_UART0_RX\n"); + TEST_LOG(uart_org_num, "1:IO_PAD_AP_SPIS_MISO->PIN30_MODE_UART0_RX\n"); + TEST_LOG(uart_org_num, "2:IO_PAD_AP_TPRSTN->PIN18_MODE_UART0_RX\n"); + TEST_LOG(uart_org_num, "3:IO_PAD_AP_PWMEN->PIN17_MODE_UART0_RX\n"); + TEST_LOG(uart_org_num, "4:IO_PAD_UART1_TX->PIN14_MODE_UART0_RX\n"); + TEST_LOG(uart_org_num, "Enter:"); + str = test_uart_get_input_str(uart_org_num); + TEST_LOG(uart_org_num, "%c\n\n", str); + sel_rx = str - '0'; + + TEST_LOG(uart_org_num, "change the connect pin and press space to continue \n"); + delayMs(500); + test_uart_reset_uart_mode(); + + switch (sel_tx) + { + case 0: + hal_gpio_set_mode(IO_PAD_UART0_TX, PIN2_MODE_UART0_TX); + break; + + case 1: + hal_gpio_set_mode(IO_PAD_AP_SPIS_MOSI, PIN33_MODE_UART0_TX); + break; + + case 2: + hal_gpio_set_mode(IO_PAD_TD_SPIM_MOSI, PIN4_MODE_UART0_TX); + break; + + default: + break; + } + + switch (sel_rx) + { + case 0: + hal_gpio_set_mode(IO_PAD_UART0_RX, PIN36_MODE_UART0_RX); + break; + + case 1: + hal_gpio_set_mode(IO_PAD_AP_SPIS_MISO, PIN30_MODE_UART0_RX); + break; + + case 2: + hal_gpio_set_mode(IO_PAD_AP_TPRSTN, PIN18_MODE_UART0_RX); + break; + + case 3: + hal_gpio_set_mode(IO_PAD_AP_PWMEN, PIN17_MODE_UART0_RX); + break; + + case 4: + hal_gpio_set_mode(IO_PAD_UART1_TX, PIN14_MODE_UART0_RX); + break; + + default: + break; + } + hal_uart_deinit(HAL_UART_1); + test_uart_common_init(HAL_UART_0); + } + while (1) + { + str = test_uart_get_input_str(sg_uart_cur_num); + if (str == 32) + { + break; + } + } +} + +/** +* @brief 是否重复 +* @param 无 +* @retval 无 +*/ +static bool test_uart_sel_continue() +{ + uint8_t str = 0; + delayMs(500); + test_uart_common_deinit(sg_uart_cur_num); + test_uart_common_init(sg_uart_cur_num); + TEST_LOG(sg_uart_cur_num, " y repeat \n"); + TEST_LOG(sg_uart_cur_num, " n exit \n"); + while (1) + { + str = test_uart_get_input_str(sg_uart_cur_num); + switch (str) + { + case 'y': + TEST_LOG(sg_uart_cur_num, "y\n"); + return true; + + case 'n': + TEST_LOG(sg_uart_cur_num, "n\n"); + return false; + + default: + continue; + } + } +} + +/************************************************************************** +* @name : test_uart_blocking +* @brief : UART TX,RX阻塞读写。 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_blocking(void) +{ + uint32_t recv = 0; + delayMs(500); + test_uart_common_deinit(sg_uart_cur_num); + test_uart_common_init(sg_uart_cur_num); + delayMs(500); + TEST_LOG(sg_uart_cur_num, "test uart%d start.\n", sg_uart_cur_num); + + //test recv + recv = test_uart_get_input_num(sg_uart_cur_num); + TEST_LOG(sg_uart_cur_num, "input %d char one time:\n", recv); + memset(sg_uart_recv_buff, 0, recv + 1); + if (!hal_uart_recv_blocking(sg_uart_cur_num, (uint8_t *)sg_uart_recv_buff, recv)) + { + TEST_LOG(sg_uart_cur_num, "an error has occurred!\n"); + } + TEST_LOG(sg_uart_cur_num, "%s\n", sg_uart_recv_buff); + + //test send + TEST_LOG(sg_uart_cur_num, "send:\n"); + strcpy(sg_uart_send_buff, sg_uart_recv_buff); + if (!hal_uart_send_blocking(sg_uart_cur_num, (uint8_t *)sg_uart_send_buff, strlen(sg_uart_send_buff))) + { + TEST_LOG(sg_uart_cur_num, "an error has occurred!\n"); + } + + TEST_LOG(sg_uart_cur_num, "\n"); + + sg_uart_case_done = true; +} + +/************************************************************************** +* @name : test_uart_trans_cb +* @brief : 用户回调函数 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_trans_cb(status_t status, void *user_data) +{ + switch (status) + { + case STATUS_UART_RX_IDLE: + case STATUS_UART_TX_IDLE: + *(bool *)user_data = true; + break; + + default: + break; + } +} + +/************************************************************************** +* @name : test_uart_none_blocking +* @brief : UART TX,RX非阻塞读写。 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_none_blocking(void) +{ + uint32_t recv = 0; + volatile bool int_done = false; + delayMs(500); + test_uart_common_deinit(sg_uart_cur_num); + s_huart.baudrate = TEST_UART_BAUDRATE; + s_huart.data_width = HAL_UART_DATAWIDTH_8; + s_huart.parity = HAL_UART_PARITY_NO; + s_huart.stopbits = HAL_UART_STOPBIT_1; + s_huart.callback = test_uart_trans_cb; + s_huart.user_data = &int_done; + hal_uart_init(sg_uart_cur_num, &s_huart); + delayMs(500); + TEST_LOG(sg_uart_cur_num, "test uart%d start...\n", sg_uart_cur_num); + TEST_LOG(sg_uart_cur_num, "input and output 10 char:\n"); + int_done = false; + memset(sg_uart_recv_buff, 0, recv + 1); + while (!hal_uart_recv_none_blocking(sg_uart_cur_num, (uint8_t *)sg_uart_recv_buff, 10)) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done); + + //test send + int_done = false; + strcpy(sg_uart_send_buff, sg_uart_recv_buff); + while (!hal_uart_send_none_blocking(sg_uart_cur_num, (uint8_t *)sg_uart_send_buff, strlen(sg_uart_send_buff))) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done); + + TEST_LOG(sg_uart_cur_num, "\n"); + + sg_uart_case_done = true; +} + + +/************************************************************************** +* @name : test_uart_dma_transmit +* @brief : UART DMA读写测试 +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +static void test_uart_dma_transmit(void) +{ + uint32_t recv = 0; + char str = 0; + bool int_done = false; + + while (1) + { + TEST_LOG(sg_uart_cur_num, "test uart%d start...\n", sg_uart_cur_num); + recv = test_uart_get_input_num(sg_uart_cur_num); + TEST_LOG(sg_uart_cur_num, "please input %d char once:\n", recv); + + test_uart_common_deinit(sg_uart_cur_num); + s_huart.baudrate = TEST_UART_BAUDRATE; + s_huart.data_width = HAL_UART_DATAWIDTH_8; + s_huart.parity = HAL_UART_PARITY_NO; + s_huart.stopbits = HAL_UART_STOPBIT_1; + s_huart.callback = test_uart_trans_cb; + s_huart.user_data = &int_done; + hal_uart_init(sg_uart_cur_num, &s_huart); + + int_done = false; + memset(sg_uart_recv_buff, 0, recv + 1); + while (!hal_uart_dma_recv(sg_uart_cur_num, (uint8_t *)sg_uart_recv_buff, recv)) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done) + { + delayMs(500); + }; + + TEST_LOG(sg_uart_cur_num, "%s\n", sg_uart_recv_buff); + TEST_LOG(sg_uart_cur_num, "please input %d char twice:\n", recv); + + int_done = false; + memset(sg_uart_recv_buff, 0, recv + 1); + while (!hal_uart_dma_recv(sg_uart_cur_num, (uint8_t *)sg_uart_recv_buff, recv)) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done) + { + delayMs(100); + //TEST_LOG("recv dma not done!!!\n"); + }; + TEST_LOG(sg_uart_cur_num, "%s\n", sg_uart_recv_buff); + + int_done = false; + strcpy(sg_uart_send_buff, "uart dma tx test comp once!\n"); + while (!hal_uart_dma_send(sg_uart_cur_num, (uint8_t *)sg_uart_send_buff, strlen(sg_uart_send_buff))) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done); + + int_done = false; + strcpy(sg_uart_send_buff, "uart dma tx test comp twice!\n"); + while (!hal_uart_dma_send(sg_uart_cur_num, (uint8_t *)sg_uart_send_buff, strlen(sg_uart_send_buff))) + { + //TEST_LOG(sg_uart_cur_num, "device busy!\n"); + } + while (!int_done); + + if (sg_uart_cur_num == HAL_UART_0) + { + hal_uart_dma_path_close(HAL_UART0_DMA_PATH_TX); + hal_uart_dma_path_close(HAL_UART0_DMA_PATH_RX); + //TEST_LOG(sg_uart_cur_num, "close uart0 dma channel\n"); + } + else + { + hal_uart_dma_path_close(HAL_UART1_DMA_PATH_TX); + hal_uart_dma_path_close(HAL_UART1_DMA_PATH_RX); + //TEST_LOG(sg_uart_cur_num, "close uart1 dma channel\n"); + } + delayMs(500); + /* 用普通方式初始化uart */ + test_uart_common_deinit(sg_uart_cur_num); + test_uart_common_init(sg_uart_cur_num); + + TEST_LOG(sg_uart_cur_num, "0:continue\n"); + TEST_LOG(sg_uart_cur_num, "1:exit\n"); + TEST_LOG(sg_uart_cur_num, "Enter:"); + while (1) + { + str = test_uart_get_input_str(sg_uart_cur_num); + if ('0' == str) + { + TEST_LOG(sg_uart_cur_num, "%c\n", str); + break; + } + else if ('1' == str) + { + TEST_LOG(sg_uart_cur_num, "%c\n", str); + sg_uart_case_done = true; + return; + } + } + } +} + + +static const unit_test_entry_t sg_uart_unit_test_table[] = +{ + {"blocking case ...", test_uart_blocking}, + {"none blocking case ...", test_uart_none_blocking}, + {"dma trans case ...", test_uart_dma_transmit}, + {"end", NULL}, +}; + +#if UART_TEST_AUTO +/** +* @brief uart测试用例切换 +* @param 无 +* @retval 无 +*/ +static void test_uart_auto_case(void) +{ + for (sg_uart_case = UART_CASE_BLOCKING; sg_uart_case < UART_CASE_MAX; sg_uart_case++) + { + TEST_LOG(sg_uart_cur_num, "%s\n", sg_uart_unit_test_table[sg_uart_case].case_name); + + sg_uart_case_done = false; + + /*配置并启动定时器*/ + sg_uart_unit_test_table[sg_uart_case].case_func(); + + /*等待超时中断*/ + while (!sg_uart_case_done); + + TEST_LOG(sg_uart_cur_num, "test case pass \n"); + TEST_LOG(sg_uart_cur_num, "\n"); + } +} +#else +/** +* @brief uart测试用例切换 +* @param 无 +* @retval 无 +*/ +static void test_uart_unit_case(uint8_t case_num) +{ + TEST_LOG(sg_uart_cur_num, "%s\n", sg_uart_unit_test_table[case_num].case_name); + + sg_uart_case_done = false; + + /*配置并启动定时器*/ + sg_uart_unit_test_table[case_num].case_func(); + + /*等待超时中断*/ + while (!sg_uart_case_done); + + TEST_LOG(sg_uart_cur_num, "test case pass!!\n"); +} +#endif + +/************************************************************************** +* @name : demo_hal_uart_case +* @brief : +* @param[in] : +* @return : +* @retval : +**************************************************************************/ +void demo_hal_uart_case(void) +{ + test_uart_common_init(sg_uart_cur_num); + test_uart_mode_init(); + while (1) + { + test_uart_set_uart_mode(); + +#if UART_TEST_AUTO + test_uart_auto_case(); +#else + test_uart_unit_case(sg_uart_case); +#endif + + if (!test_uart_sel_continue()) + { + break; + } + } + TEST_LOG(sg_uart_cur_num, "uart test done!\n"); +} +#endif diff --git a/src/app/module_demo/demo_hal_uart.h b/src/app/module_demo/demo_hal_uart.h new file mode 100644 index 0000000..30dd036 --- /dev/null +++ b/src/app/module_demo/demo_hal_uart.h @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright (C) 2020-2023, tau Systems (R),All Rights Reserved. +* +* File: demo_hal_uart.h +* Description: hal uart测试用例头文件 +* Version: V0.1 +* Date: 2023-07-09 +* Author: kc + *******************************************************************************/ +#ifndef __DEMO_HAL_UART_H__ +#define __DEMO_HAL_UART_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "test_cfg_global.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +void demo_hal_uart_case(void); + +#endif /* __DEMO_HAL_UART_H__ */ + diff --git a/src/app/module_demo/demo_hal_wdg.c b/src/app/module_demo/demo_hal_wdg.c new file mode 100644 index 0000000..aeaa1c7 --- /dev/null +++ b/src/app/module_demo/demo_hal_wdg.c @@ -0,0 +1,135 @@ +/******************************************************************************* +* +* +* File: demo_hal_wdg.c +* Description: watch dog demo源文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "hal_wdg.h" +#include "hal_gpio.h" +#include "tau_delay.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "wdg-log" + +#define WDG_CASE_RST 0 //复位模式 +#define WDG_CASE_INTR 1 //中断模式 + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ +#if WDG_CASE_INTR +static io_pad_e sg_wdg_io_pad = IO_PAD_GPIO1; +static gpio_level_e sg_wdg_io_lvl = IO_LVL_LOW; +/* 循环喂狗 */ +static uint8_t sg_feed_cnt = 0; +#endif + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +#if WDG_CASE_RST +/** +* @brief 复位模式测试 +* @param 无 +* @retval 无 +*/ +static void demo_wdg_case_rst_mode(void) +{ + TAU_LOGI("reset start...\n"); + + /* WDG初始化复位模式 */ + hal_wdg_init(); + + /* 启动 */ + hal_wdg_start(WDG_MODE_RESET, 5000); +} +#endif + +#if WDG_CASE_INTR +/** +* @brief 测试回调函数 +* @param 无 +* @retval 无 +*/ +static void demo_wdg_callback(void *data) +{ + /* 翻转GPIO */ + sg_wdg_io_lvl = (sg_wdg_io_lvl ? IO_LVL_LOW : IO_LVL_HIGH); + hal_gpio_set_output_data(sg_wdg_io_pad, sg_wdg_io_lvl); + sg_feed_cnt++; + + if (sg_feed_cnt > 10) + { + hal_wdg_stop(); + } +} + +/** +* @brief 中断模式测试 +* @param 无 +* @retval 无 +*/ +static void demo_wdg_case_int_mode(void) +{ + TAU_LOGI("int start...\n"); + + /* WDG初始化 */ + hal_wdg_init(); + + /* 设置循环超时 */ + hal_wdg_set_repeat(true); + + /* 设置回调函数 */ + hal_wdg_register_callback(demo_wdg_callback, NULL); + + /*初始化GPIO低状态*/ + hal_gpio_init_output(sg_wdg_io_pad, sg_wdg_io_lvl); + + /* 设置中断模式 */ + hal_wdg_start(WDG_MODE_INTERRUPT, 200); + + + while (sg_feed_cnt < 6) + { + sg_feed_cnt++; + hal_wdg_kick_dog(); + delayMs(150); + TAU_LOGI("feed [%d]th done\n", sg_feed_cnt); + } + +} +#endif + +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_wdg_case(void) +{ + TAU_LOGI("demo_wdg_case\r\n"); + +#if WDG_CASE_RST + demo_wdg_case_rst_mode(); +#elif WDG_CASE_INTR + demo_wdg_case_int_mode(); +#endif +} + diff --git a/src/app/module_demo/demo_hal_wdg.h b/src/app/module_demo/demo_hal_wdg.h new file mode 100644 index 0000000..64dd430 --- /dev/null +++ b/src/app/module_demo/demo_hal_wdg.h @@ -0,0 +1,40 @@ +/******************************************************************************* +* +* +* File: demo_hal_wdg.h +* Description: watch dog demo头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ +#ifndef __DEMO_WDG_H__ +#define __DEMO_WDG_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief demo测试接口函数 +* @param None +* @retval None +*/ +void demo_wdg_case(void); + +#endif /* __DEMO_WDG_H__ */ + diff --git a/src/app/module_demo/module_demo_main.c b/src/app/module_demo/module_demo_main.c new file mode 100644 index 0000000..59b4f51 --- /dev/null +++ b/src/app/module_demo/module_demo_main.c @@ -0,0 +1,69 @@ +/******************************************************************************* +* +* File: ap_demo_main.c +* Description: ap demo main file +* Version: V0.1 +* Date: 2022-04-15 +* Author: Jaya + *******************************************************************************/ + +#include +#include +#include +#include "module_demo_main.h" + +void module_demo_main() +{ +#if _MODULE_DEMO_DSI_TX_EN + demo_dsi_tx_case(); +#endif + +#if _MODULE_DEMO_DSI_RX_EN + demo_hal_dsi_rx_case(); +#endif + +#if _MODULE_DEMO_TIMER_EN + demo_timer_case(); +#endif + +#if _MODULE_DEMO_WDG_EN + demo_wdg_case(); +#endif + +#if _MODULE_DEMO_GPIO_EN + demo_gpio_case(); +#endif + +#if _MODULE_DEMO_SWIRE_EN + demo_hal_swire(); +#endif + +#if _MODULE_DEMO_SPI_EN + demo_hal_spi(); +#endif + +#if _MODULE_DEMO_I2C_EN + demo_hal_i2c(); +#endif + +#if _MODULE_DEMO_FLASH_EN + demo_hal_flash(); +#endif + +#if _MODULE_DEMO_PWM_EN + demo_hal_pwm(); +#endif + +#if _MODULE_DEMO_PWR_EN + demo_hal_pwr(); +#endif + +#if _MODULE_DEMO_UART_EN + demo_hal_uart_case(); +#endif + +#if _MODULE_DEMO_CRC_EN + demo_hal_crc_case(); +#endif + +} diff --git a/src/app/module_demo/module_demo_main.h b/src/app/module_demo/module_demo_main.h new file mode 100644 index 0000000..a01138f --- /dev/null +++ b/src/app/module_demo/module_demo_main.h @@ -0,0 +1,68 @@ +/******************************************************************************* +* +* File: module_demo_main.h +* Description: module demo main file +* Version: V0.1 +* Date: 2023-07-27 +* Author: Jaya + *******************************************************************************/ + +#ifndef __MODULE_DEMO_MAIN_H__ +#define __MODULE_DEMO_MAIN_H__ +#include "test_cfg_global.h" + +#if _MODULE_DEMO_DSI_TX_EN +#include "demo_hal_dsi_tx.h" +#endif + +#if _MODULE_DEMO_DSI_RX_EN +#include "demo_hal_dsi_rx.h" +#endif + +#if _MODULE_DEMO_TIMER_EN +#include "demo_hal_timer.h" +#endif + +#if _MODULE_DEMO_WDG_EN +#include "demo_hal_wdg.h" +#endif + +#if _MODULE_DEMO_GPIO_EN +#include "demo_hal_gpio.h" +#endif + +#if _MODULE_DEMO_SWIRE_EN +#include "demo_hal_swire.h" +#endif + +#if _MODULE_DEMO_SPI_EN +#include "demo_hal_spi.h" +#endif + +#if _MODULE_DEMO_I2C_EN +#include "demo_hal_i2c.h" +#endif + +#if _MODULE_DEMO_FLASH_EN +#include "demo_hal_flash.h" +#endif + +#if _MODULE_DEMO_PWM_EN +#include "demo_hal_pwm.h" +#endif + +#if _MODULE_DEMO_PWR_EN +#include "demo_hal_pwr.h" +#endif + +#if _MODULE_DEMO_UART_EN +#include "demo_hal_uart.h" +#endif + +#if _MODULE_DEMO_CRC_EN +#include "demo_hal_crc.h" +#endif + +void module_demo_main(void); + +#endif /* __MODULE_DEMO_MAIN_H__ */ diff --git a/src/app/test_cfg_global.h b/src/app/test_cfg_global.h new file mode 100644 index 0000000..2d6e8f0 --- /dev/null +++ b/src/app/test_cfg_global.h @@ -0,0 +1,39 @@ +/******************************************************************************* +* +* File: test_cfg_global.h +* Description: 测试用例全局配置头文件 +* Version: V0.1 +* Date: 2021-05-01 +* Author: kevin + *******************************************************************************/ + +#ifndef __TEST_GLOBAL_CONFIG_H__ +#define __TEST_GLOBAL_CONFIG_H__ +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +/* 模块demo 宏定义 */ +#define _MODULE_DEMO_ENABLE 0 +#define _MODULE_DEMO_TIMER_EN 0 +#define _MODULE_DEMO_DSI_TX_EN 0 +#define _MODULE_DEMO_DSI_RX_EN 0 +#define _MODULE_DEMO_PWM_EN 0 +#define _MODULE_DEMO_SWIRE_EN 0 +#define _MODULE_DEMO_WDG_EN 0 +#define _MODULE_DEMO_GPIO_EN 0 +#define _MODULE_DEMO_I2C_EN 0 +#define _MODULE_DEMO_SPI_EN 0 +#define _MODULE_DEMO_PWR_EN 0 +/* ap demo 宏定义 */ +#define _DEMO_GOOGLE_P8P_EN 1 + + +#if _DEMO_GOOGLE_P8P_EN + #include "p8p_demo.h" +#endif +#endif + diff --git a/src/board/board.c b/src/board/board.c new file mode 100644 index 0000000..ed06fd5 --- /dev/null +++ b/src/board/board.c @@ -0,0 +1,31 @@ +/******************************************************************************* +* +* +* File: board.c +* Description 板级文件 +* Version V0.1 +* Date 2023-07-23 +* Author lzy +*******************************************************************************/ +#include "board.h" +#include "hal_system.h" +#include "hal_gpio.h" +#include "ArmCM0.h" +#include "tau_log.h" + +/** +* @brief 系统板级初始化,配置系统时钟,调试log输出 +* @param none +* @retval none +*/ +void board_Init(void) +{ + /* system init ,配置MCU时钟 */ + hal_system_init(HAL_SYSCLK_80M); + + /* 使用SWD口作为Debug Log输出,可配置成Uart方式 */ + tau_log_init(115200, LOG_PORT_UART0); + + /* systick init,根据需要配置 */ + //hal_system_enable_systick(1); +} diff --git a/src/board/board.h b/src/board/board.h new file mode 100644 index 0000000..16c7b2a --- /dev/null +++ b/src/board/board.h @@ -0,0 +1,21 @@ +/******************************************************************************* +* +* +* File: board.h +* Description: baord 初始化头文件 +* Version: V0.1 +* Date: 2020-01-08 +* Author: lzy + *******************************************************************************/ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +/** +* @brief 系统板级初始化,配置系统时钟,调试log输出 +* @param none +* @retval none +*/ +void board_Init(void); + +#endif diff --git a/src/board/startup/startup_ARMCM0.s b/src/board/startup/startup_ARMCM0.s new file mode 100644 index 0000000..947bb24 --- /dev/null +++ b/src/board/startup/startup_ARMCM0.s @@ -0,0 +1,226 @@ +;/**************************************************************************//** +; * @file startup_ARMCM0.s +; * @brief CMSIS Core Device Startup File for +; * ARMCM0 Device +; * @version V5.4.0 +; * @date 12. December 2018 +; ******************************************************************************/ +;/* +; * Copyright (c) 2009-2018 Arm Limited. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00001000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +__stack_limit +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000C00 + + IF Heap_Size != 0 ; Heap is provided + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + ENDIF + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; -14 NMI Handler + DCD HardFault_Handler ; -13 Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; -5 SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; -2 PendSV Handler + DCD SysTick_Handler ; -1 SysTick Handler + + + ; Interrupts + DCD VIDC_IRQn_Handler ; 0 Interrupt 0 + DCD LCDC_IRQn_Handler ; 1 Interrupt 1 + DCD MIPI_RX_IRQn_Handler ; 2 Interrupt 2 + DCD MIPI_TX_IRQn_Handler ; 3 Interrupt 3 + DCD MEMC_IRQn_Handler ; 4 Interrupt 4 + DCD VPRE_IRQn_Handler ; 5 Interrupt 5 + DCD FLSCTRL_IRQn_Handler ; 6 Interrupt 6 + DCD DMA_IRQn_Handler ; 7 Interrupt 7 + DCD TIMER0_IRQn_Handler ; 8 Interrupt 8 + DCD TIMER1_IRQn_Handler ; 9 Interrupt 9 + DCD TIMER2_IRQn_Handler ; 10 Interrupt 10 + DCD TIMER3_IRQn_Handler ; 11 Interrupt 11 + DCD WDG_IRQn_Handler ; 12 Interrupt 12 + DCD UART_IRQn_Handler ; 13 Interrupt 13 + DCD I2C0_IRQn_Handler ; 14 Interrupt 14 + DCD I2C1_IRQn_Handler ; 15 Interrupt 15 + DCD SPIS_IRQn_Handler ; 16 Interrupt 16 + DCD SPIM_IRQn_Handler ; 17 Interrupt 17 + DCD VPRE1_IRQn_Handler ; 18 Interrupt 18 + DCD I2C2_IRQn_Handler ; 19 Interrupt 19 + DCD OTP_IRQn_Handler ; 20 Interrupt 20 + DCD SWIRE_IRQn_Handler ; 21 Interrupt 21 + DCD PVD_IRQn_Handler ; 22 Interrupt 22 + DCD AP_NRESET_IRQn_Handler ; 23 Interrupt 23 + DCD EXTI_INT0_IRQn_Handler ; 24 Interrupt 24 + DCD EXTI_INT1_IRQn_Handler ; 25 Interrupt 25 + DCD EXTI_INT2_IRQn_Handler ; 26 Interrupt 26 + DCD EXTI_INT3_IRQn_Handler ; 27 Interrupt 27 + DCD EXTI_INT4_IRQn_Handler ; 28 Interrupt 28 + DCD EXTI_INT5_IRQn_Handler ; 29 Interrupt 29 + DCD EXTI_INT6_IRQn_Handler ; 30 Interrupt 30 + DCD EXTI_INT7_IRQn_Handler ; 31 Interrupt 31 + + SPACE ( 0 * 4) ; Interrupts 10 .. 31 are left out + +__Vectors_End +__Vectors_Size EQU __Vectors_End - __Vectors +_NVIC_ICER0 EQU 0xE000E180 ;清中断使能寄存器地址 +_NVIC_ICPR0 EQU 0xE000E280 ;清中断pending寄存器地址 + + AREA |.text|, CODE, READONLY + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + +;清中断使能和pending ——开始—— + CPSID I ; 屏蔽中断 + LDR R0, =_NVIC_ICER0 + LDR R1, =_NVIC_ICPR0 + LDR R2, =0xFFFFFFFF + MOVS R3, #1 ; 设置循环次数 M0只有1组(32个)中断,故只需要循环1次 +_irq_clear + ;CBZ R3, _irq_clear_end + CMP R3,#0 ; 循环次数等于0,跳转到_irq_clear_end + BNE _irq_clear_end + STR R2, [R0] ;,#4 ; NVIC_ICER0 - 清 enable IRQ 寄存器 + STR R2, [R1] ;,#4 ; NVIC_ICPR0 - 清 pending IRQ 寄存器 + SUBS R3, #1 ; 循环数自减1 + B _irq_clear +_irq_clear_end +;清中断使能和pending ——结束—— + CPSIE I ; 开启中断 + LDR R0, =__main + BX R0 + ENDP + + +; Macro to define default exception/interrupt handlers. +; Default handler are weak symbols with an endless loop. +; They can be overwritten by real handlers. + MACRO + Set_Default_Handler $Handler_Name +$Handler_Name PROC + EXPORT $Handler_Name [WEAK] + B . + ENDP + MEND + + +; Default exception/interrupt handler + + Set_Default_Handler NMI_Handler + Set_Default_Handler HardFault_Handler + Set_Default_Handler SVC_Handler + Set_Default_Handler PendSV_Handler + Set_Default_Handler SysTick_Handler + + Set_Default_Handler VIDC_IRQn_Handler + Set_Default_Handler LCDC_IRQn_Handler + Set_Default_Handler MIPI_RX_IRQn_Handler + Set_Default_Handler MIPI_TX_IRQn_Handler + Set_Default_Handler MEMC_IRQn_Handler + Set_Default_Handler VPRE_IRQn_Handler + Set_Default_Handler FLSCTRL_IRQn_Handler + Set_Default_Handler DMA_IRQn_Handler + Set_Default_Handler TIMER0_IRQn_Handler + Set_Default_Handler TIMER1_IRQn_Handler + + Set_Default_Handler TIMER2_IRQn_Handler + Set_Default_Handler TIMER3_IRQn_Handler + Set_Default_Handler WDG_IRQn_Handler + Set_Default_Handler UART_IRQn_Handler + Set_Default_Handler I2C0_IRQn_Handler + Set_Default_Handler I2C1_IRQn_Handler + Set_Default_Handler SPIS_IRQn_Handler + Set_Default_Handler SPIM_IRQn_Handler + Set_Default_Handler VPRE1_IRQn_Handler + Set_Default_Handler I2C2_IRQn_Handler + + Set_Default_Handler OTP_IRQn_Handler + Set_Default_Handler SWIRE_IRQn_Handler + Set_Default_Handler PVD_IRQn_Handler + Set_Default_Handler AP_NRESET_IRQn_Handler + Set_Default_Handler EXTI_INT0_IRQn_Handler + Set_Default_Handler EXTI_INT1_IRQn_Handler + Set_Default_Handler EXTI_INT2_IRQn_Handler + Set_Default_Handler EXTI_INT3_IRQn_Handler + Set_Default_Handler EXTI_INT4_IRQn_Handler + Set_Default_Handler EXTI_INT5_IRQn_Handler + + Set_Default_Handler EXTI_INT6_IRQn_Handler + Set_Default_Handler EXTI_INT7_IRQn_Handler + ALIGN + + +; User setup Stack & Heap + + IF :LNOT::DEF:__MICROLIB + IMPORT __use_two_region_memory + ENDIF + + EXPORT __stack_limit + EXPORT __initial_sp + IF Heap_Size != 0 ; Heap is provided + EXPORT __heap_base + EXPORT __heap_limit + ENDIF + + END diff --git a/src/common/tau_common.h b/src/common/tau_common.h new file mode 100644 index 0000000..48d8ac2 --- /dev/null +++ b/src/common/tau_common.h @@ -0,0 +1,222 @@ +/******************************************************************************* +* +* +* File: tau_common.h +* Description 通用数据类型相关定义头文件 +* Version V0.1 +* Date 2020-09-07 +* Author lzy + *******************************************************************************/ + +#ifndef __TAU_COMMON_H +#define __TAU_COMMON_H + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "stdint.h" +#include "math.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +/** + * \name 通用常量定义 + * @{ + */ +//#define ENABLE 1 +//#define DISABLE 0 + +#define ON 1 +#define OFF 0 + +#define NONE 0 +#define EOS '\0' + +/* +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif +*/ + +#ifndef __cplusplus +#define true 1 +#define false 0 +#define bool _Bool +#endif /* ifndef __cplusplus */ + +#ifndef NULL +#define NULL ((void *)0) +#endif + +#define TAU_LITTLE_ENDIAN 1234 /**< \brief 小端模式 */ +#define TAU_BIG_ENDIAN 3412 /**< \brief 大端模式 */ + +/** @} */ + +/******************************************************************************/ + +/** + * \name 常用宏定义 + * @{ + */ + +#ifdef __cplusplus +#define __I volatile /*!< Defines 'read only' permissions */ +#else +#define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +#define TAU_INLINE inline +#define TAU_STATIC_INLINE static inline +#define TAU_STATIC static +#define TAU_CONST const +#define TAU_EXTERN extern + +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) + +/** + * \brief 求结构体成员的偏移 + * \attention 不同平台上,由于成员大小和内存对齐等原因, + * 同一结构体成员的偏移可能是不一样的 + * + * \par 示例 + * \code + * struct my_struct { + * int m1; + * char m2; + * }; + * int offset_m2; + * + * offset_m2 = TAU_OFFSET(struct my_struct, m2); + * \endcode + */ +#define TAU_OFFSET(structure, member) ((uint32_t)(&(((structure *)0)->member))) + +/** @} */ + +/** + * \brief 通过结构体成员指针获取包含该结构体成员的结构体 + * + * \param ptr 指向结构体成员的指针 + * \param type 结构体类型 + * \param member 结构体中该成员的名称 + * + * \par 示例 + * \code + * struct my_struct = { + * int m1; + * char m2; + * }; + * struct my_struct my_st; + * char *p_m2 = &my_st.m2; + * struct my_struct *p_st = TAU_CONTAINER_OF(p_m2, struct my_struct, m2); + * \endcode + */ +#define TAU_CONTAINER_OF(ptr, type, member) \ + ((type *)((char *)(ptr)-TAU_OFFSET(type, member))) + +/** + * \brief 计算结构体成员的大小 + * + * \code + * struct a = { + * uint32_t m1; + * uint32_t m2; + * }; + * int size_m2; + * + * size_m2 = TAU_MEMBER_SIZE(a, m2); //size_m2 = 4 + * \endcode + */ +#define TAU_MEMBER_SIZE(structure, member) (sizeof(((structure *)0)->member)) + +/** + * \brief 计算数组元素个数 + * + * \code + * int a[] = {0, 1, 2, 3}; + * int element_a = TAU_NELEMENTS(a); // element_a = 4 + * \endcode + */ +#define TAU_NELEMENTS(array) (sizeof(array) / sizeof((array)[0])) + +/** + * \brief 向上舍入 + * + * \param x 被运算的数 + * \param align 对齐因素 + * + * \code + * int size = TAU_ROUND_UP(15, 4); // size = 16 + * \endcode + */ +#define TAU_ROUND_UP(x, align) (((int)(x)/(align))*(align) + (((int)(x)%(align)) ? (align) : 0)) + +/** + * \brief 向下舍入 + * + * \param x 被运算的数 + * \param align 对齐因素 + * + * \code + * int size = TAU_ROUND_DOWN(15, 4); // size = 12 + * \endcode + */ +#define TAU_ROUND_DOWN(x, align) (((int)(x)/(align))*(align)) + +/** \brief 倍数向上舍入 */ +#define TAU_DIV_ROUND_UP(n, d) (((n) + (d)-1) / (d)) + +/** + * \brief 测试是否对齐 + * + * \param x 被运算的数 + * \param align 对齐因素,必须为2的乘方 + * + * \code + * if (TAU_ALIGNED(x, 4) { + * ; // x对齐 + * } else { + * ; // x不对齐 + * } + * \endcode + */ +#define TAU_ALIGNED(x, align) (((int)(x) & (align - 1)) == 0) + +/** \brief 将1字节BCD数据转换为16进制数据 */ +#define TAU_BCD_TO_HEX(val) (((val)&0x0f) + ((val) >> 4) * 10) + +/** \brief 将1字节16进制数据转换为BCD数据 */ +#define TAU_HEX_TO_BCD(val) ((((val) / 10) << 4) + (val) % 10) + +/** + * \brief 向上取整 + */ +#define TAU_CEIL(val) ceil(val) + + +/*! @brief Construct the version number for drivers. */ +#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix)) + + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/*!< @brief 用于返回状态和错误 */ +typedef uint32_t status_t; + +/* \brief 通用回调函数指针定义 */ +typedef void (*fcb_type)(void *data); + +typedef void (*uart_trans_cb)(status_t status, void *user_data); + +typedef void (*flash_trans_cb)(status_t status, void *user_data); +#endif /* __TAU_COMMON_H */ diff --git a/src/common/tau_delay.h b/src/common/tau_delay.h new file mode 100644 index 0000000..b4a64ca --- /dev/null +++ b/src/common/tau_delay.h @@ -0,0 +1,34 @@ +/** + * File Name: tau_delay.h + * + * + * + * Author: Fortsense 3D Firmware Team + * + * Date: 2020/12/04 + * + * Project: Taurus + * + * Description: + * + * HISTORY: +**/ +#ifndef _DELAY_H_ +#define _DELAY_H_ +#include "stdint.h" + +/** +* @brief delay ms 函数,误差2%以内 +* @param ms:delay时长 +* @retval none +*/ +void delayMs(uint32_t ms); + +/** +* @brief delay us 函数,误差2%以内 +* @param us:delay时长 +* @retval none +*/ +void delayUs(uint32_t us); + +#endif diff --git a/src/common/tau_device_datatype.h b/src/common/tau_device_datatype.h new file mode 100644 index 0000000..bfce3bc --- /dev/null +++ b/src/common/tau_device_datatype.h @@ -0,0 +1,229 @@ +/******************************************************************************* + * + * + * File: tau_device_datatype.h + * Description device datatype + * Version V0.1 + * Date 2020-12-04 + * Author kevin + *******************************************************************************/ + +#ifndef _TAU_DEVICE_DATATYPE_H_ +#define _TAU_DEVICE_DATATYPE_H_ + + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ + +#include "stdint.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/*! @brief 计算组状态码 */ +#define MAKE_STATUS(group, code) ((((group)*100) + (code))) + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/*! @brief 分组状态值 */ +enum _status_groups +{ + STATUS_GROUP_GENERIC = 0, + STATUS_GROUP_I2C = 1, + STATUS_GROUP_UART = 2, + STATUS_GROUP_SPI = 3, + STATUS_GROUP_TIMER = 4, +}; + +/*! @brief 常用状态码 */ +enum _generic_status +{ + STATUS_SUCCESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 0), + STATUS_FAIL = MAKE_STATUS(STATUS_GROUP_GENERIC, 1), + STATUS_READ_ONLY = MAKE_STATUS(STATUS_GROUP_GENERIC, 2), + STATUS_OUT_OF_RANGE = MAKE_STATUS(STATUS_GROUP_GENERIC, 3), + STATUS_INVALID_ARGUMENT = MAKE_STATUS(STATUS_GROUP_GENERIC, 4), + STATUS_TIME_OUT = MAKE_STATUS(STATUS_GROUP_GENERIC, 5), + STATUS_NO_TRANSFER_IN_PROGRESS = MAKE_STATUS(STATUS_GROUP_GENERIC, 6), +}; + +/** +* @brief UART状态枚举定义 +* +*/ +typedef enum +{ + STATUS_UART_TX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 0), /*!< Transmitter is busy. */ + STATUS_UART_RX_BUSY = MAKE_STATUS(STATUS_GROUP_UART, 1), /*!< Receiver is busy. */ + STATUS_UART_TX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 2), /*!< USART transmitter is idle. */ + STATUS_UART_RX_IDLE = MAKE_STATUS(STATUS_GROUP_UART, 3), /*!< USART receiver is idle. */ + STATUS_UART_TX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 7), /*!< Error happens on txFIFO. */ + STATUS_UART_RX_ERR = MAKE_STATUS(STATUS_GROUP_UART, 9), /*!< Error happens on rxFIFO. */ + STATUS_UART_RX_RING_BUFF_OVERRUN = MAKE_STATUS(STATUS_GROUP_UART, 8), /*!< Error happens on rx ring buffer */ + STATUS_UART_NOISE_ERR = MAKE_STATUS(STATUS_GROUP_UART, 10), /*!< USART noise error. */ + STATUS_UART_FRAMING_ERR = MAKE_STATUS(STATUS_GROUP_UART, 11), /*!< USART framing error. */ + STATUS_UART_PARITY_ERR = MAKE_STATUS(STATUS_GROUP_UART, 12), /*!< USART parity error. */ + STATUS_UART_BAUDRATE_NOT_SPT = MAKE_STATUS(STATUS_GROUP_UART, 13), /*!< Baudrate is not support in current clock source */ +} uart_status_e; + +/*! + * @brief timer状态 + */ +typedef enum +{ + STATUS_TIMER_IDLE = MAKE_STATUS(STATUS_GROUP_TIMER, 0), /*!< 空闲 */ + STATUS_TIMER_RUNNING = MAKE_STATUS(STATUS_GROUP_TIMER, 1), /*!< 运行中 */ + STATUS_TIMER_TIMEOUT = MAKE_STATUS(STATUS_GROUP_TIMER, 2), /*!< 超时 */ +} timer_status_e; + +/*! + * @brief system触发事件(中断/复位)模式 + */ +typedef enum +{ + DETECT_HIGH_LVL = 0, + DETECT_LOW_LVL, + DETECT_RISING_EDGE, + DETECT_FALLING_EDGE, + DETECT_DOUBLE_EDGE +} sys_cfg_trigger_e; + +/** +* @brief GPIO interrupt type +*/ +typedef enum +{ + TIMER_NUM0 = 0, + TIMER_NUM1, + TIMER_NUM2, + TIMER_NUM3, + TIMER_NUM_MAX +} timer_num_e; + +/** +* @brief GPIO interrupt type +*/ +typedef enum +{ + GPIO_INT_EXTI_INT0 = 0, + GPIO_INT_EXTI_INT1, + GPIO_INT_EXTI_INT2, + GPIO_INT_EXTI_INT3, + GPIO_INT_EXTI_INT4, + GPIO_INT_EXTI_INT5, + GPIO_INT_EXTI_INT6, + GPIO_INT_EXTI_INT7, + GPIO_INT_MAX +} gpio_int_e; + +/*! @brief PWMI中断类型 */ +typedef enum _pwm_int_type +{ + PWM_INT_HIGH_OVERFLOW = 0, + PWM_INT_LOW_OVERFLOW, + PWM_INT_TOTAL_OVERFLOW, + PWM_INT_HIGH_DONE, + PWM_INT_LOW_DONE, + PWM_INT_TOTAL_DONE, + PWM_INT_MAX +} pwm_int_type_e; + +/** +* @brief I2C chose +*/ +typedef enum +{ + I2C_SELECT_0 = 0, //常用slave + I2C_SELECT_1, //常用master +} i2c_select_e; + +/*! + * @brief 传输速度 + * @note + */ +typedef enum _i2c_rate +{ + I2C_RATE_STANDARD = 1, //100kHz + I2C_RATE_FAST, //400kHz + I2C_RATE_HIGH, //1MHz +} i2c_rate_e; + +/*! + * @brief I2C Index + * @note + */ +typedef enum +{ + I2C_INDEX_0, + I2C_INDEX_1, + I2C_INDEX_2, + I2C_INDEX_MAX +} i2c_index_e; + +/*! + * @brief DMA channel type + * @note + */ +typedef enum +{ + AHB_DMA_CH0, + AHB_DMA_CH1, + AHB_DMA_CH2, + AHB_DMA_CH3, + AHB_DMA_CH4, + AHB_DMA_CH5, + AHB_DMA_CH6, + AHB_DMA_CH7, + AHB_DMA_CH_NUM +} dma_channel_type_e; + +/*! @brief Type used for all status and error return values. */ + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} function_state_e; + +/** +* @brief The reversal types of the bit order of the input/output data +*/ +typedef enum +{ + CRC_REV_NO_TRANSPOSE = 0, /*!< No transposition */ + CRC_REV_ONLY_BITS_TRANSPOSE, /*!< Bits in bytes are transposed; bytes are not transposed */ + CRC_REV_BOTH_TRANSPOSE, /*!< Both bits in bytes and bytes are transposed */ + CRC_REV_ONLY_BYTES_TRANSPOSE, /*!< Only bytes are transposed; no bits in a byte are transposed */ +} crc_reversal_type_e; + +/** +* @brief Complement Read Of CRC Data Register +*/ +typedef enum +{ + CRC_FXOR_DISABLE = 0, /*!< No XOR on reading */ + CRC_FXOR_ENABLE, /*!< Invert or complement the read value of the CRC Data register */ +} crc_fxor_function_e; + +/** +* @brief width of CRC protocol (polynomial) +*/ +typedef enum +{ + CRC_16_BIT_PROTOCOL = 0, /*!< 0: 16-bit CRC protocol */ + CRC_32_BIT_PROTOCOL, /*!< 1: 32-bit CRC protocol */ +} crc_protocol_type_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +#endif + diff --git a/src/common/tau_dsi_datatype.h b/src/common/tau_dsi_datatype.h new file mode 100644 index 0000000..fb301c9 --- /dev/null +++ b/src/common/tau_dsi_datatype.h @@ -0,0 +1,405 @@ +/******************************************************************************* +* +* +* File: tau_dsi_datatype.h +* Description: mipi dsi 通用头文件 +* Version: V0.1 +* Date: 2021-01-13 +* Author: lzy + *******************************************************************************/ + +#ifndef __MIPI_DSI_COMMON_H__ +#define __MIPI_DSI_COMMON_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#define DSC_PPS_SIZE 128 + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief Data Types for Peripheral-sourced Packets,From Mipi DSI Spec +*/ +typedef enum +{ + DSI_ACK_DT_ERROR = 0x02, + DSI_ACK_DT_EOTP = 0x08, + DSI_ACK_DT_GEN_SHORT_RESPONSE_1B = 0x11, + DSI_ACK_DT_GEN_SHORT_RESPONSE_2B = 0x12, + DSI_ACK_DT_GEN_LONG_RESPONSE = 0x1A, + DSI_ACK_DT_DCS_LONG_RESPONSE = 0x1C, + DSI_ACK_DT_DCS_SHORT_RESPONSE_1B = 0x21, + DSI_ACK_DT_DCS_SHORT_RESPONSE_2B = 0x22, + DSI_ACK_DT_MAX +} dsi_ack_data_type_e; + +/** +* @brief Software handle data types +*/ +typedef enum +{ + DSI_RECV_DT_PPS = 0x0A, //Picture Parameter Set + DSI_RECV_DT_GEN_WRITE_1B = 0x13, //Generic Short WRITE, 1 parameter + DSI_RECV_DT_GEN_WRITE_2B = 0x23, //Generic Short WRITE, 2 parameters + DSI_RECV_DT_GEN_READ_0B = 0x04, //Generic READ, no parameters + DSI_RECV_DT_GEN_READ_1B = 0x14, //Generic READ, 1 parameter + DSI_RECV_DT_GEN_READ_2B = 0x24, //Generic READ, 2 parameters + DSI_RECV_DT_DCS_WRITE_0B = 0x05, //DCS Short WRITE, no parameters + DSI_RECV_DT_DCS_WRITE_1B = 0x15, //DCS Short WRITE, 1 parameter + DSI_RECV_DT_DCS_READ_0B = 0x06, //DCS READ, no parameters + DSI_RECV_DT_GEN_WRITE_LONG = 0x29, //Generic Long Write + DSI_RECV_DT_DCS_WRITE_LONG = 0x39, //DCS Long Write/write_LUT Command Packet + DSI_RECV_DT_MAX +} dsi_data_type_e; + +typedef enum +{ + DCS_ENTER_IDLE_MODE = 0x39, + DCS_ENTER_INVERT_MODE = 0x21, + DCS_ENTER_NORMAL_MODE = 0x13, + DCS_ENTER_PARTIAL_MODE = 0x12, + DCS_ENTER_SLEEP_MODE = 0x10, + DCS_EXIT_IDLE_MODE = 0x38, + DCS_EXIT_INVERT_MODE = 0x20, + DCS_EXIT_SLEEP_MODE = 0x11, + DCS_GET_3D_CONTROL = 0x3F, + DCS_GET_ADDRESS_MODE = 0x0B, + DCS_GET_BLUE_CHANNEL = 0x08, + DCS_GET_COMPRESSION_MODE = 0x03, + DCS_GET_DIAGNOSTIC_RESULT = 0x0F, + DCS_GET_DISPLAY_MODE = 0x0D, + DCS_GET_GREEN_CHANNEL = 0x07, + DCS_GET_PIXEL_FORMAT = 0x0C, + DCS_GET_POWER_MODE = 0x0A, + DCS_GET_RED_CHANNEL = 0x06, + DCS_GET_SCANLINE = 0x45, + DCS_GET_SIGNAL_MODE = 0x0E, + DCS_NOP = 0x00, + DCS_READ_DDB_CONTINUE = 0xA8, + DCS_READ_DDB_START = 0xA1, + DCS_READ_MEMORY_CONTINUE = 0x3E, + DCS_READ_MEMORY_START = 0x2E, + DCS_SET_3D_CONTROL = 0x3D, + DCS_SET_ADDRESS_MODE = 0x36, + DCS_SET_COLUMN_ADDRESS = 0x2A, + DCS_SET_DISPLAY_OFF = 0x28, + DCS_SET_DISPLAY_ON = 0x29, + DCS_SET_GAMMA_CURVE = 0x26, + DCS_SET_PAGE_ADDRESS = 0x2B, + DCS_SET_PARTIAL_COLUMNS = 0x31, + DCS_SET_PARTIAL_ROWS = 0x30, + DCS_SET_PIXEL_FORMAT = 0x3A, + DCS_SET_SCROLL_AREA = 0x33, + DCS_SET_SCROLL_START = 0x37, + DCS_SET_TEAR_OFF = 0x34, + DCS_SET_TEAR_ON = 0x35, + DCS_SET_TEAR_SCANLINE = 0x44, + DCS_SET_VSYNC_TIMING = 0x40, + DCS_SOFT_RESET = 0x01, + DCS_WRITE_LUT = 0x2D, + DCS_WRITE_MEMORY_CONTINUE = 0x3C, + DCS_WRITE_MEMORY_START = 0x2C +} dsi_dcs_cmd_type_e; + +/** +* @brief video data transfer mode +*/ +typedef enum +{ + DSI_DATA_VIDEO_MODE = 0, + DSI_DATA_CMD_MODE = 1, + DSI_DATA_MODE_MAX +} dsi_video_data_mode_e; + +/** +* @brief dsi virtual channel +*/ +typedef enum +{ + DSI_VC_0 = 0, + DSI_VC_1 = 1, + DSI_VC_2 = 2, + DSI_VC_3 = 3, + DSI_VC_MAX +} dsi_virtual_channel_e; + +/** +* @brief video data mode +*/ +typedef enum +{ + DSI_FRAME_RATE_60HZ = 0, + DSI_FRAME_RATE_90HZ = 1, + DSI_FRAME_RATE_120HZ = 2, + DSI_FRAME_RATE_144HZ = 3, + DSI_FRAME_RATE_160HZ = 4, + DSI_FRAME_RATE_MAX +} dsi_video_frame_rate_e; + +/** +* @brief dsi rx color coding +*/ +typedef enum +{ + DSI_RGB565 = 1, + DSI_RGB666 = 2, /*!< 18 bbp(18bits per pixel) */ + DSI_RGB666_LOOSELY = 3, /*!< 24 bbp(24bits per pixel) */ + DSI_RGB888 = 4, /*!< 24 bbp(24bits per pixel) */ + DSI_RGB10_10_10 = 5, + DSI_RGB12_12_12 = 6, + DSI_YCbCr422_16 = 7, + DSI_PENTILE_16 = DSI_YCbCr422_16, + DSI_YCbCr422_20_LOOSELY = 8, + DSI_YCbCr422_24 = 9, + DSI_YCbCr420_12 = 10, + DSI_DSC_STREAM = 11, + DSI_COLOR_CODE_MAX +} dsi_color_code_e; + +/** +* @brief dsi endianness type +*/ +typedef enum +{ + DPI_ENDIAN_RGB = 0, + DPI_ENDIAN_BGR +} dsi_endianness_e; + +/** +* @brief mipi lane number +*/ +typedef enum +{ + DSI_LANE_1 = 1, + DSI_LANE_2 = 2, + DSI_LANE_3 = 3, + DSI_LANE_4 = 4, + DSI_LANE_NUME_MAX +} dsi_lane_nume_e; + +/** +* @brief video mode +*/ +typedef enum +{ + DSI_NONBURST_PULSE = 0, + DSI_NONBURST_EVENT = 1, + DSI_BURST_MODE = 2, + DSI_VIDEO_MODE_MAX +} dsi_video_mode_type_e; + +/** +* @brief panel init cmd transfer type +*/ +typedef enum +{ + DSI_CMD_TX_HS = 0, + DSI_CMD_TX_LP = 1 +} dsi_tx_cmd_tx_type_e; + +/** +* @brief angle of rotation +*/ +typedef enum +{ + VIDOE_ROT_ANGLE_0 = 0, /* 不旋转 */ + VIDOE_ROT_ANGLE_90 = 1, /* 旋转90度 */ + VIDOE_ROT_ANGLE_180 = 2, /* 旋转180度 */ + VIDOE_ROT_ANGLE_270 = 3, /* 转转270度 */ + VIDOE_ROT_ANGLE_MAX +} video_rotate_angle_e; + +/** +* @brief mipi rx lane swap +软件配置 PIN28&PIN27 PIN26&PIN25 PIN24&PIN23 PIN22&PIN21 PIN20&PIN19 +RX_LANE_SWAP_0123 D0P&D0N D1P&D1N CLKP&CLKN D2P&D2N D3P&D3N +RX_LANE_SWAP_3210 D3P&D3N D2P&D2N CLKP&CLKN D1P&D1N D0P&D0N +RX_LANE_SWAP_2103(default) D2P&D2N D1P&D1N CLKP&CLKN D0P&D0N D3P&D3N +RX_LANE_SWAP_3012 D3P&D3N D0P&D0N CLKP&CLKN D1P&D1N D2P&D2N +*/ +typedef enum +{ + RX_LANE_SWAP_0123 = 0x0, + RX_LANE_SWAP_3210 = 0x1, + RX_LANE_SWAP_2103 = 0x2, + RX_LANE_SWAP_DEFAULT_ORDER = 0x2, /* 默认原理图为2103顺序 */ + RX_LANE_SWAP_3012 = 0x3, + RX_LANE_SWAP_MAX +} dsi_rx_lane_swap_e; + +/** +* @brief mipi P/N lane swap flag +* eg: pn_swap = RX_LANE_0_PN_SWAP | RX_LANE_CLK_PN_SWAP; +* 表示 lane0 与 CLK 的P跟N交换,其他lane不变。 +* 注意这里的lane表示的是进行完lane swap的lane,如lane swap配置RX_LANE_SWAP_3012,再配置RX_LANE_0_PN_SWAP则表示PIN26&PIN25进行PN交换,由D0P&D0N变成D0N&D0P +*/ +typedef enum +{ + RX_LANE_0_PN_SWAP = 0x1, + RX_LANE_1_PN_SWAP = 0x2, + RX_LANE_2_PN_SWAP = 0x4, + RX_LANE_3_PN_SWAP = 0x8, + RX_LANE_CLK_PN_SWAP = 0x10 +} dsi_rx_lane_pn_swap_e; + +/** +* @brief error processing level +*/ +typedef enum +{ + ERR_HANDLE_NONE = 0, + ERR_HANDLE_L1 = 1, + ERR_HANDLE_L2 = 2, + ERR_HANDLE_L3 = 3, + ERR_HANDLE_MAX +} hal_err_handle_level_e; + +/** +* @brief flow control mode +*/ +typedef enum +{ + FC_AUTO_MODE = 0, /* 自动匹配模式,根据base info配置匹配1-4 */ + FC_V2V_NORMAL_MODE = 1, /* Video to Video 模式转换 */ + FC_V2C_NORMAL_MODE = 2, /* Video to Command 模式转换 */ + FC_C2V_NORMAL_MODE = 3, /* Command to Video 模式转换 */ + FC_C2C_NORMAL_MODE = 4, /* Command to Command 模式转换 */ + FC_PRO_MOTION_MODE = 6, /* 自适应帧率转换(LTPO模式) */ + FC_PRO_MOTION_MODE_2 = 5, /* 自适应帧率转换(LTPO模式) */ + FC_PRO_MOTION_WITH_PU_MODE = 7, /* 自适应帧率带PU */ + FC_V2V_AUTO_SYCN_MODE = 8, /* Video to Video 软件同步 */ + FC_V2V_DIRECT_MODE = 9, /* Video to Video 直通模式 */ + FC_MODE_MAX +} flow_control_mode_e; + +/** +* @brief transform 基本信息 +*/ +typedef struct +{ + uint16_t top; + uint16_t bottom; + uint16_t left; + uint16_t right; + bool enable; +} pic_edge_info_t; + +/** +* @brief transform 基本信息 +*/ +typedef struct +{ + uint32_t src_w; /* mipi rx 接收的 width */ + uint32_t src_h; /* mipi rx 接收的 height */ + uint32_t dst_w; /* mipi tx 发送的 width */ + uint32_t dst_h; /* mipi tx 发送的 height */ + dsi_video_frame_rate_e src_frate; /* mipi rx 接收的frame rate */ + dsi_video_data_mode_e src_mode; /* mipi rx 接收video 数据传输模式(video/cmd mode) */ + dsi_video_data_mode_e dst_mode; /* mipi tx 输出video 数据传输模式(video/cmd mode) */ + uint16_t pn_swap; /* mipi P/N swap标志位, rx可配置/tx暂不支持 */ +} dsi_base_trans_info_t; + +/** +* @brief transform 基本信息 +*/ +typedef struct +{ + bool mirror_en; /* 对video 做水平镜像标志位 */ + bool pu_optimize; /* 用于优化PU显示效果,默认为false;true:优化PU显示显示效果,高功耗;false:普通PU模式,低功耗 */ + video_rotate_angle_e rot_angle; /* 对video 做旋转的角度 */ + flow_control_mode_e flow_control_mode; /* 图像数据流控制模式 */ + pic_edge_info_t crop_info; /* 图像边缘裁剪配置 not impletmented */ + pic_edge_info_t blank_info; /* 图像边缘补黑配置 not impletmented */ + bool bw_optimize; /* 带宽自动检查,默认打开 */ + uint8_t pq_type; /* picture quality,参数为 pq_type_e */ +} dsi_base_extra_info_t; + +/** +* @brief ccm系数 +*/ +typedef struct +{ + uint32_t coef_c00; + uint32_t coef_c01; + uint32_t coef_c02; + uint32_t coef_c10; + uint32_t coef_c11; + uint32_t coef_c12; + uint32_t coef_c20; + uint32_t coef_c21; + uint32_t coef_c22; +} ccm_coef_t; + +/** +* @brief hight performan mode level +*/ +typedef enum +{ + HIGHT_PERFORMAN_NONE = 0, + HIGHT_PERFORMAN_L1 = 1, + HIGHT_PERFORMAN_L2 = 2, + HIGHT_PERFORMAN_MAX +} hight_performan_mode_e; + +/** +* @brief TX False color去伪彩参数结构体 +*/ +typedef struct +{ + uint16_t edgemedslope; + uint16_t desatslope; +} dsi_tx_fc_t; + +/** +* @brief TX 边缘增强参数结构体 +*/ +typedef struct +{ + bool y_enh_method; + uint8_t enhance_str; + uint16_t enhance_slope; + uint16_t boundscale_low; + uint16_t boundscale_high; +} dsi_tx_edge_enh_t; + +/** +* @brief TX 边缘检测参数结构体 +*/ +typedef struct +{ + uint8_t edge_thr; + bool use_large_kernel; +} dsi_tx_edge_dect_t; + +/** +* @brief TX bcsa 参数结构体 +*/ +typedef struct +{ + int8_t brightness; /* 亮度调整, 范围-127 - 127 */ + uint16_t contrast; /* 对比度调整,范围0 - 4095 */ + uint16_t saturation; /* 饱和度调整,范围0 - 4095 */ +} dsi_tx_bcs_t; + +/** +* @brief partial display 参数结构体 +*/ +typedef struct +{ + uint32_t st_line; /*部分显示起始行位置*/ + uint32_t st_col; /*部分显示起始列位置*/ + uint32_t end_line; /*部分显示结束行位置*/ + uint32_t end_col; /*部分显示结束列位置*/ + uint8_t value_r; /*部分显示背景色R值*/ + uint8_t value_g; /*部分显示背景色G值*/ + uint8_t value_b; /*部分显示背景色B值*/ +} dsi_tx_par_dis_t; + +#endif //__MIPI_DSI_COMMON_H__ diff --git a/src/common/tau_log.h b/src/common/tau_log.h new file mode 100644 index 0000000..15e94a8 --- /dev/null +++ b/src/common/tau_log.h @@ -0,0 +1,100 @@ +/******************************************************************************* +* +* +* File: tau_log.h +* Description log file +* Version V0.1 +* Date 2020-12-08 +* Author linyw +*******************************************************************************/ +#ifndef _TAU_LOG_H_ +#define _TAU_LOG_H_ + + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include +#include +#include +#include "ArmCM0.h" +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "tau_log" +#define LOG_CURREN_LEVEL kLOG_LEVEL_DBG /* 配置打印等级 TODO:每个模块可配置打印等级 */ +#define LOG_BUF_SIZE (256) /* 配置打印缓存的大小 */ + +/* + * Using the following three macros for conveniently logging. + */ +#define TAU_LOGD(format,...) \ + do { \ + tau_log_printf(kLOG_LEVEL_DBG, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ + } while (0) + +#define TAU_LOGI(format,...) \ + do { \ + tau_log_printf(kLOG_LEVEL_INF, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ + } while (0) + +#define TAU_LOGE(format,...) \ + do { \ + tau_log_printf(kLOG_LEVEL_ERR, "[%s] (%04d) " format, LOG_TAG, __LINE__, ##__VA_ARGS__); \ + } while (0) + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief log打印等级枚举 +* +*/ +typedef enum +{ + kLOG_LEVEL_DBG = 0, + kLOG_LEVEL_INF, + kLOG_LEVEL_ERR, + kLOG_LEVEL_NONE /* 不打印任何参数 */ +} log_level_e; + +/** +* @brief log打印端口枚举 +* +*/ +typedef enum +{ + LOG_PORT_UART0, /* 使用串口输出打印 */ + LOG_PORT_UART1, /* 使用串口输出打印 */ + LOG_PORT_SWD, /* 使用swd输出打印 */ + LOG_PORT_UNKNOWN +} log_port_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 初始化log系统 +* @param baud_rate 波特率 +* @param log_port 打印端口选择 +* @retval none +*/ +void tau_log_init(uint32_t baud_rate, log_port_e log_port); + +/** +* @brief 初始化log系统 +* @param baud_rate 波特率 +* @param log_port 打印端口选择 +* @retval none +*/ +void tau_log_printf(log_level_e log_lv, const char *fmt, ...); + +#endif diff --git a/src/common/tau_operations.h b/src/common/tau_operations.h new file mode 100644 index 0000000..c7b2ba3 --- /dev/null +++ b/src/common/tau_operations.h @@ -0,0 +1,229 @@ +/******************************************************************************* +* +* +* File: tau_operations.h +* Description 位操作与字节操作相关定义头文件 +* Version V0.1 +* Date 2020-09-07 +* Author lzy + *******************************************************************************/ +#ifndef __TAU_BYTEOPS_H +#define __TAU_BYTEOPS_H + +/** + * \name 通用位常数定义 + * @{ + */ + +/** \brief 长整数位数 */ +#ifndef TAU_BITS_PER_LONG +#define TAU_BITS_PER_LONG 32 +#endif + +/** \brief 字节位数 */ +#define TAU_BITS_PER_BYTE 8 + +/** @} */ + + +/******************************************************************************/ + +/** + * \name 通用位操作 + * @{ + */ + +/** \brief bit移位 + * TAU_BIT(2) is 0x4 + */ +#define TAU_BIT(bit) (1u << (bit)) + +/** \brief 值移位 + * TAU_SBF(0xFF, 8) is 0xff00 + */ +#define TAU_SBF(value, field) ((value) << (field)) + +/** \brief bit置位 + * TAU_BIT_SET(0, 8) is 0x100 + */ +#define TAU_BIT_SET(data, bit) ((data) |= TAU_BIT(bit)) + +/** \brief bit清零 + * TAU_BIT_CLR(0xFF, 2) is 0xfb + */ +#define TAU_BIT_CLR(data, bit) ((data) &= ~TAU_BIT(bit)) + +/** \brief bit置位, 根据 mask 指定的位 + * TAU_BIT_SET_MASK(0xF0F0, 0xF00) is 0xfff0 + */ +#define TAU_BIT_SET_MASK(data, mask) ((data) |= (mask)) + +/** \brief bit清零, 根据 mask 指定的位 + * TAU_BIT_CLR_MASK(0xFFFF, 0xFF00) is 0xff + */ +#define TAU_BIT_CLR_MASK(data, mask) ((data) &= ~(mask)) + +/** \brief bit翻转 + * TAU_BIT_TOGGLE(0xFFFF, 0) is 0xfffe + * TAU_BIT_TOGGLE(0x0000, 1) is 0x2 + */ +#define TAU_BIT_TOGGLE(data, bit) ((data) ^= TAU_BIT(bit)) + +/** \brief bit修改 + * TAU_BIT_MODIFY(0, 8, 1) is 0x100 + * TAU_BIT_MODIFY(0xFFFF, 1, 0) is 0xfffd + */ +#define TAU_BIT_MODIFY(data, bit, value) \ + ((value) ? TAU_BIT_SET(data, bit) : TAU_BIT_CLR(data, bit)) + +/** \brief 测试bit是否置位 + * TAU_BIT_ISSET(0xF0F1, 1) is 0 + * TAU_BIT_ISSET(0xF0F2, 1) is 2 + */ +#define TAU_BIT_ISSET(data, bit) ((data) & TAU_BIT(bit)) + +/** \brief 获取bit值 + * TAU_BIT_GET(0xF0F1, 1) is 0 + * TAU_BIT_GET(0xF0F2, 1) is 1 + */ +#define TAU_BIT_GET(data, bit) (TAU_BIT_ISSET(data, bit) ? 1 : 0) + +/** \brief 检测bit值 + * TAU_BIT_CHECK(0xF5FF, 4) is 1 + */ +#define TAU_BIT_CHECK(data, bit) \ + (((data) & TAU_BIT(bit)) ? 1 : 0) + +/** \brief 获取 n bits 掩码值 + * TAU_BITS_MASK(2) is 0x3 + */ +#define TAU_BITS_MASK(n) (~((~0u) << (n))) + +/** \brief 获取位段值 + * TAU_BITS_GET(0xF5FF, 0x0F00, 8) is 0x5 + */ +#define TAU_BITS_GET(data, mask, pos) \ + (((data) & (mask)) >> (pos)) + +/** \brief 获取位段值 + * TAU_BITS_CHECK(0xF5FF, 0x0F00) is 1 + */ +#define TAU_BITS_CHECK(data, mask) \ + (((data) & (mask)) ? 1 : 0) + +/** \brief 修改位段值 + * TAU_BITS_MODIFY(0xF5FF, 0x0FF0, 0x8A0) is 0xF8AF +*/ +#define TAU_BITS_MODIFY(data, clear_mask, set_mask) \ + (data) = (((data) & (~(clear_mask))) | (set_mask)) + +/** \brief 设置位段值 + * TAU_WRITE_REG32(0x05FF, 0xFFFA) is 0xFFFA +*/ +#define TAU_WRITE_REG32(data, value) ((data) = (value)) + +/** \brief 设置位段值 + * TAU_RAED_REG32(0x05FF) is 0x05FF +*/ +#define TAU_RAED_REG32(data) (data) + + +/** @} */ + +/******************************************************************************/ + +/** + * \brief 取2-byte整数的高位byte + * + * \par 示例 + * \code + * uint16_t a = 0x1234; + * uint16_t b; + * + * b = TAU_MSB(a); //b=0x12 + * \endcode + */ +#define TAU_MSB(x) (((x) >> 8) & 0xff) + +/** + * \brief 取2-byte整数的低位byte + * + * \par 示例 + * \code + * uint16_t a = 0x1234; + * uint16_t b; + * + * b = TAU_LSB(a); //b=0x34 + * \endcode + */ +#define TAU_LSB(x) ((x) & 0xff) + +/** + * \brief 取2-word整数的高位word + * + * \par 示例 + * \code + * uint32_t a = 0x12345678; + * uint32_t b; + * + * b = TAU_MSW(a); //b=0x1234 + * \endcode + */ +#define TAU_MSW(x) (((x) >> 16) & 0xffff) + +/** + * \brief 取2-word整数的低位word + * + * \par 示例 + * \code + * uint32_t a = 0x12345678; + * uint32_t b; + * + * b = TAU_LSW(a); //b=0x5678 + * \endcode + */ +#define TAU_LSW(x) ((x) & 0xffff) + +/** + * \brief 交换32-bit整数的高位word和低位word + * + * \par 示例 + * \code + * uint32_t a = 0x12345678; + * uint32_t b; + * + * b = TAU_WORDSWAP(a); //b=0x56781234 + * \endcode + */ +#define TAU_WORDSWAP(x) (TAU_MSW(x) | (TAU_LSW(x) << 16)) + +/** + * \brief 交换32-bit整数的字节顺序 + * + * \par 示例 + * \code + * uint32_t a = 0x12345678; + * uint32_t b; + * + * b = TAU_LONGSWAP(a); //b=0x78563412 + * \endcode + */ +#define TAU_LONGSWAP(x) ((TAU_LLSB(x) << 24) | \ + (TAU_LNLSB(x) << 16) | \ + (TAU_LNMSB(x) << 8) | \ + (TAU_LMSB(x))) + +#define TAU_LLSB(x) ((x) & 0xff) /**< \brief 取32bit整数第1个字节 */ +#define TAU_LNLSB(x) (((x) >> 8) & 0xff) /**< \brief 取32bit整数第2个字节 */ +#define TAU_LNMSB(x) (((x) >> 16) & 0xff) /**< \brief 取32bit整数第3个字节 */ +#define TAU_LMSB(x) (((x) >> 24) & 0xff) /**< \brief 取32bit整数第4个字节 */ +#define TAU_LNSB(x,n) (((x) >> ((n) * 8) ) & 0xff) /**< \brief 取32bit整数第n个字节 ,参数 0 - 3*/ + +/** + * @} + */ + +#endif /* __TAU_BYTEOPS_H */ + +/* end of file */ + diff --git a/src/sdk/CVWL468/lib/CVWL468.lib b/src/sdk/CVWL468/lib/CVWL468.lib new file mode 100644 index 0000000..db7f8bc Binary files /dev/null and b/src/sdk/CVWL468/lib/CVWL468.lib differ diff --git a/src/sdk/CVWL668/lib/CVWL668.lib b/src/sdk/CVWL668/lib/CVWL668.lib new file mode 100644 index 0000000..8224cc3 Binary files /dev/null and b/src/sdk/CVWL668/lib/CVWL668.lib differ diff --git a/src/sdk/CVWL668T/lib/CVWL668T.lib b/src/sdk/CVWL668T/lib/CVWL668T.lib new file mode 100644 index 0000000..e27af89 Binary files /dev/null and b/src/sdk/CVWL668T/lib/CVWL668T.lib differ diff --git a/src/sdk/include/M0/ArmCM0.h b/src/sdk/include/M0/ArmCM0.h new file mode 100644 index 0000000..5cf8fc1 --- /dev/null +++ b/src/sdk/include/M0/ArmCM0.h @@ -0,0 +1,184 @@ +/**************************************************************************//** + * @file ARMCM0.h + * @brief CMSIS Core Peripheral Access Layer Header File for + * ARMCM0 Device + * @version V5.3.1 + * @date 09. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ARMCM0_H +#define ARMCM0_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* ------------------------- Interrupt Number Definition ------------------------ */ + +typedef enum IRQn +{ + /* ------------------- Processor Exceptions Numbers ----------------------------- */ + NonMaskableInt_IRQn = -14, /* 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /* 3 HardFault Interrupt */ + SVCall_IRQn = -5, /* 11 SV Call Interrupt */ + PendSV_IRQn = -2, /* 14 Pend SV Interrupt */ + SysTick_IRQn = -1, /* 15 System Tick Interrupt */ + + /* ------------------- Processor Interrupt Numbers ------------------------------ */ + VIDC_IRQn = 0, + LCDC_IRQn = 1, + MIPI_RX_IRQn = 2, + MIPI_TX_IRQn = 3, + MEMC_IRQn = 4, + VPRE_IRQn = 5, + FLSCTRL_IRQn = 6, + DMA_IRQn = 7, + TIMER0_IRQn = 8, + TIMER1_IRQn = 9, + TIMER2_IRQn = 10, + TIMER3_IRQn = 11, + WDG_IRQn = 12, + UART_IRQn = 13, + I2C0_IRQn = 14, + I2C1_IRQn = 15, + SPIS_IRQn = 16, + SPIM_IRQn = 17, + VPRE1_IRQn = 18, + I2C2_IRQn = 19, + OTP_IRQn = 20, + SWIRE_IRQn = 21, + PVD_IRQn = 22, + AP_NRESET_IRQn = 23, + EXTI_INT0_IRQn = 24, + EXTI_INT1_IRQn = 25, + EXTI_INT2_IRQn = 26, + EXTI_INT3_IRQn = 27, + EXTI_INT4_IRQn = 28, + EXTI_INT5_IRQn = 29, + EXTI_INT6_IRQn = 30, + EXTI_INT7_IRQn = 31 + /* Interrupts 10 .. 31 are left out */ +} IRQn_Type; + + +/* ================================================================================ */ +/* ================ Processor and Core Peripheral Section ================ */ +/* ================================================================================ */ + +/* ------- Start of section using anonymous unions and disabling warnings ------- */ +#if defined (__CC_ARM) +#pragma push +#pragma anon_unions +#elif defined (__ICCARM__) +#pragma language=extended +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wc11-extensions" +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#elif defined (__GNUC__) +/* anonymous unions are enabled by default */ +#elif defined (__TMS470__) +/* anonymous unions are enabled by default */ +#elif defined (__TASKING__) +#pragma warning 586 +#elif defined (__CSMC__) +/* anonymous unions are enabled by default */ +#else +#warning Not supported compiler type +#endif + +/* -------- Configuration of Core Peripherals ----------------------------------- */ +#define __CM0_REV 0x0000U /* Core revision r0p0 */ +#define __MPU_PRESENT 0U /* no MPU present */ +#define __VTOR_PRESENT 0U /* no VTOR present */ +#define __NVIC_PRIO_BITS 2U /* Number of Bits used for Priority Levels */ //20220228 +#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */ + +#define __FPU_PRESENT 0U /* Set to 1 if FPU is present */ +#define __FPU_DP 0U /* single precision FPU */ +#define __ICACHE_PRESENT 0U /* Set to 1 if I-CACHE is present */ +#define __DCACHE_PRESENT 0U /* Set to 1 if D-CACHE is present */ +#define __DSP_PRESENT 0U /* no DSP extension present */ + +#include "core_cm0.h" /* Processor and core peripherals */ +#include "system_ARMCM0.h" /* System Header */ + +/* -------- End of section using anonymous unions and disabling warnings -------- */ +#if defined (__CC_ARM) +#pragma pop +#elif defined (__ICCARM__) +/* leave anonymous unions enabled */ +#elif (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +#pragma clang diagnostic pop +#elif defined (__GNUC__) +/* anonymous unions are enabled by default */ +#elif defined (__TMS470__) +/* anonymous unions are enabled by default */ +#elif defined (__TASKING__) +#pragma warning restore +#elif defined (__CSMC__) +/* anonymous unions are enabled by default */ +#else +#warning Not supported compiler type +#endif + +/* In HS mode and when the DMA is used, all variables and data structures dealing + with the DMA during the transaction process should be 4-bytes aligned */ +#define DMA_WORD_ALIGN_EN +#ifdef DMA_WORD_ALIGN_EN +#if defined (__GNUC__) /* GNU Compiler */ +#define __ALIGN_END __attribute__ ((aligned (4))) +#define __ALIGN_BEGIN +#else +#define __ALIGN_END +#if defined (__CC_ARM) /* ARM Compiler */ +#define __ALIGN_BEGIN __align(4) +#elif defined (__ICCARM__) /* IAR Compiler */ +#define __ALIGN_BEGIN +#elif defined (__TASKING__) /* TASKING Compiler */ +#define __ALIGN_BEGIN __align(4) +#endif /* __CC_ARM */ +#endif /* __GNUC__ */ +#else + +#define __ALIGN_BEGIN +#define __ALIGN_END + +#define __ALIGN_END_1 __attribute__ ((aligned (1))) +#endif /* DMA_WORD_ALIGN_EN */ + +/* __packed keyword used to decrease the data type alignment to 1-byte */ +#if defined (__CC_ARM) /* ARM Compiler */ +#define __packed __packed +#elif defined (__ICCARM__) /* IAR Compiler */ +#define __packed __packed +#elif defined ( __GNUC__ ) /* GNU Compiler */ +#define __packed __attribute__ ((__packed__)) +#define __weak __attribute__((weak)) +#elif defined (__TASKING__) /* TASKING Compiler */ +#define __packed __unaligned +#endif /* __CC_ARM */ + +#ifdef __cplusplus +} +#endif + +#endif /* ARMCM0_H */ diff --git a/src/sdk/include/hal_crc.h b/src/sdk/include/hal_crc.h new file mode 100644 index 0000000..41865cc --- /dev/null +++ b/src/sdk/include/hal_crc.h @@ -0,0 +1,114 @@ +/******************************************************************************* +* +* +* File: hal_crc.h +* Description: hal crc ͷ�ļ� +* Version: V0.1 +* Date: 2023-07-27 +* Author: zzf + *******************************************************************************/ +#ifndef __HAL_CRC_H +#define __HAL_CRC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Exported constant and macro definitions +*******************************************************************************/ + +/******************************************************************************* +* 3.Exported structures, unions and enumerations +*******************************************************************************/ +/** +* @brief crc calculation unit structure +*/ +typedef struct +{ + uint32_t polynomial_value; + uint32_t initial_seed_value; + crc_protocol_type_e crc_protocol; + crc_fxor_function_e crc_foxr; + crc_reversal_type_e crc_reversal_in; + crc_reversal_type_e crc_reversal_out; +} crc_ctrl_handle_t; + +/** +* @brief crc dma callback function define +*/ +typedef void (*crc_dma_callback)(uint32_t crc_result); + +/******************************************************************************* +* 4.Exported variable declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Exported function declarations +*******************************************************************************/ +/** +* @brief The initialization for CRC calculation unit +* @param crc_ctrl_handle: configuration parameters in initialization +* @retval true or false +**/ +bool hal_crc_init(const crc_ctrl_handle_t *crc_ctrl_handle); + +/** +* @brief The initialization for CRC calculation unit +* @param None +* @retval true or false +**/ +bool hal_crc_deinit(void); + +/** +* @brief Reset CRC calculation unit and DR to CRCR_INIT value +* @param None +* @retval true or false +**/ +bool hal_crc_reset(void); + +/** +* @brief Get the result of CRC calculation uint +* @param buffer_address: 16-bit or 32-bit crc calculate buffer address +* @param buffer_length: the length of buffer +* @retval 32-bit crc calculate result +**/ +uint32_t hal_crc_cal(const void *buffer_address, uint32_t buffer_length); + +/** +* @brief initial DMA transfer +* @param crc_ctrl_handle: configuration parameters in initialization +* @param buffer_address: 16-bit or 32-bit crc calculate buffer address +* @param buffer_length: the length of buffer(0~65535) +* @param cb_func: dma interrupt callback function to get the result of crc calculation +* @retval true or false +**/ +bool hal_crc_dma_init(const crc_ctrl_handle_t *crc_ctrl_handle, crc_dma_callback cb_func, const void *buffer_address, uint16_t buffer_length); + +/** +* @brief deinitial DMA transfer +* @param None +* @retval true or false +**/ +bool hal_crc_dma_deinit(void); + +/** +* @brief start DMA transfer +* @param None +* @retval true or false +**/ +bool hal_crc_dma_start(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __HAL_CRC_H */ + +/***************** (C) COPYRIGHT ISP Systems (R) END OF FILE ******************/ diff --git a/src/sdk/include/hal_dsi_rx_ctrl.h b/src/sdk/include/hal_dsi_rx_ctrl.h new file mode 100644 index 0000000..6a5014a --- /dev/null +++ b/src/sdk/include/hal_dsi_rx_ctrl.h @@ -0,0 +1,523 @@ +/******************************************************************************* +* +* +* File: hal_dsi_rx_ctrl.h +* Description: hal mipi dsi rx path control 头文件 +* Version: V0.1 +* Date: 2021-04-06 +* Author: lzy + *******************************************************************************/ +#ifndef __HAL_DSI_RX_CTRL_H__ +#define __HAL_DSI_RX_CTRL_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_dsi_datatype.h" +#include "tau_common.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +#define RX_DCS_QUEUE_MAX_SIZE 20 /* DCS存储队列长度 */ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +typedef struct hal_dcs_execute_entry_t hal_dcs_execute_entry_t; + +typedef struct hal_dcs_packet_t hal_dcs_packet_t; + +typedef struct hal_dsi_rx_ctrl_handle_t hal_dsi_rx_ctrl_handle_t; + +/* DCS CMD 回调函数, 注册进cus_dcs_entry_table里, 匹配对应的DCS 后回调*/ +typedef bool (*hal_dsi_rx_ctrl_dcs_execute)(hal_dsi_rx_ctrl_handle_t *rx_handle, hal_dcs_packet_t *dcs_packet); + +/* AP 读cmd 回调, 需要快速回CMD 时可注册, 为NULL 时DSC 读指令与写指令经过parse后由cus_dcs_entry_table回调 */ +typedef bool (*hal_dsi_rx_ctrl_read_entry)(uint8_t data_type, uint8_t dcs_cmd, uint8_t param); + +/* AP PPS 更新回调,参数为PPS 以及从PPS 里解析出来的picture width/height, 用于分辨率切换, 不注册该接口时内部处理PPS */ +typedef bool (*hal_dsi_rx_ctrl_pps_entry)(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height); + +/** +* @brief hal_rx_event_e select +*/ +typedef enum hal_rx_event_e +{ + HAL_RX_FS_EVENT = 0x1, /* Frame start event */ + HAL_RX_LINE_EVENT = 0x2, /* Frame receive line event */ + HAL_RX_END_EVENT = 0x4, /* Frame end event */ +} hal_rx_event_e; + +/** +* @brief rx pq filter index +* 默认使用linear,特殊场景使用OPT filter +* RX_FLT_OPT_0最模糊,边缘最平滑,index越大越清晰,边缘锯齿会加重 +*/ +typedef enum +{ + RX_FLT_OPT_0 = 0, + RX_FLT_OPT_1 = 1, + RX_FLT_OPT_2 = 2, + RX_FLT_OPT_3 = 3, + RX_FLT_OPT_4 = 4, + RX_FLT_OPT_5 = 5, + RX_FLT_OPT_6 = 6, + RX_FLT_OPT_7 = 7, + RX_FLT_OPT_8 = 8, + RX_FLT_OPT_9 = 9, + RX_FLT_OPT_10 = 10, + RX_FLT_LINEAR = 11, + RX_FLT_MAX +} hal_dsi_rx_pq_filter_e; + +/* RX debug 回调函数,用于获取frame start 等功能debug */ +typedef void (*hal_dsi_rx_ctrl_event_entry)(hal_rx_event_e event, void *data); + +/** +* @brief dsi rx ctrl handle struct +*/ +typedef struct hal_dsi_rx_ctrl_handle_t +{ + dsi_base_trans_info_t base_info; /* mipi video 转换基本信息 */ + dsi_base_extra_info_t extra_info; /* 新增旋转、镜像配置 */ + dsi_color_code_e rx_color_mode; /* 输入color mode */ + dsi_lane_nume_e rx_lanes; /* mipi data lane */ + dsi_video_mode_type_e rx_nonburst_models; /* transmission packet sequences */ + bool compress_en; /* DSC 压缩标志 */ + uint32_t rx_hsclk_rate; /* mipi 高速信号lane rate */ + uint8_t rx_dsc_pps[DSC_PPS_SIZE]; /* DSC 压缩PPS参数 */ + const hal_dcs_execute_entry_t *cus_dcs_entry_table; /* DCS处理函数列表 */ + hal_dsi_rx_ctrl_read_entry rx_dcs_read_entry; /* Host读指令数据函数,为NULL时由rx_dcs_queue注册cmd处理 */ + hal_dsi_rx_ctrl_pps_entry pps_update_entry; /* PPS Update 时回调函数,用于分辨率切换更新PPS,为NULL时内部处理 */ + bool used; /* handle使用标志位 */ + hal_err_handle_level_e err_handler_level; /* RX接收错误的时候对模块做reset等级, 等级越高reset模块越多 */ + uint8_t rx_strength; /* 用于调节RX信号强度,仅适用于开启内阻校准模式,档位0~7,默认3 */ + hight_performan_mode_e hight_performan_mode; /* 高性能模式等级,参考hight_performan_mode_e */ + dsi_rx_lane_swap_e rx_lane_swap; /* lane swap default order is 2103*/ + hal_dsi_rx_pq_filter_e rx_pq_index; /* 画质调整滤波器,默认为linear最优效果,特殊场景使用OPT filter */ +} hal_dsi_rx_ctrl_handle_t; + +/** +* @brief DCS command execute entry +*/ +typedef struct hal_dcs_execute_entry_t +{ + uint32_t dcs_command; /* DCS command */ + hal_dsi_rx_ctrl_dcs_execute execute_func; /* command 对应处理函数 */ + bool immediately_func; /* 执行机制:true-在中断里立即执行,false-加入DCS队列异步执行 */ +} hal_dcs_execute_entry_t; + +/** +* @brief 存储 DCS packet 结构体 +*/ +typedef struct hal_dcs_packet_t +{ + uint32_t data_type; /* data type */ + uint32_t dcs_command; /* dcs command */ + uint32_t param_length; /* dcs param length */ + uint8_t *packet_param; /* dcs param */ + uint16_t crc_data; /* dcs crc */ + const hal_dcs_execute_entry_t *dcs_execute_entry; /* dcs packet 处理函数入口*/ +} hal_dcs_packet_t; + +/** +* @brief video mode 下 RX pattern参数结构体 +*/ +typedef struct +{ + uint32_t ipi_pg_hsa; + uint32_t ipi_pg_hbp; + uint32_t ipi_pg_hfp; + uint32_t ipi_pg_vsa; + uint32_t ipi_pg_vbp; + uint32_t ipi_pg_vfp; + uint32_t frame_rate; +} hal_dsi_rx_ipi_pg_t; + + +/** +* @brief dcs command filter select +*/ +typedef enum +{ + HAL_RX_DCS_FILTER_0 = 0x0, + HAL_RX_DCS_FILTER_1 = 0x1, + HAL_RX_DCS_FILTER_2 = 0x2, + HAL_RX_DCS_FILTER_3 = 0x3, + HAL_RX_DCS_FILTER_4 = 0x4, + HAL_RX_DCS_FILTER_5 = 0x5, + HAL_RX_DCS_FILTER_6 = 0x6, + HAL_RX_DCS_FILTER_7 = 0x7, + HAL_RX_DCS_FILTER_8 = 0x8, + HAL_RX_DCS_FILTER_9 = 0x9, + HAL_RX_DCS_FILTER_A = 0xA, + HAL_RX_DCS_FILTER_B = 0xB, + HAL_RX_DCS_FILTER_MAX +} hal_rx_dcs_filter_sel_e; + + +/** +* @brief dcs command filter select +*/ +typedef enum +{ + HAL_RX_QRESP_CODE0 = 0, + HAL_RX_QRESP_CODE1 = 1, + HAL_RX_QRESP_CODE2 = 2, + HAL_RX_QRESP_CODE3 = 3, + HAL_RX_QRESP_CODE4 = 4, + HAL_RX_QRESP_CODE5 = 5, + HAL_RX_QRESP_CODE6 = 6, + HAL_RX_QRESP_CODE7 = 7, + HAL_RX_QRESP_MAX +} hal_rx_dcs_qresp_e; + +/** +* @brief pentile source color format +*/ +typedef enum +{ + PENTILE_SRC_FORMAT_RGB = 0x0, + PENTILE_SRC_FORMAT_BGR = 0x1, + PENTILE_SRC_FORMAT_RGBG_BGRG = 0x8, + PENTILE_SRC_FORMAT_GBGR_GRGB = 0x9, + PENTILE_SRC_FORMAT_BGRG_RGBG = 0xA, + PENTILE_SRC_FORMAT_GRGB_GBGR = 0xB, + PENTILE_SRC_FORMAT_RGBG_RGBG = 0xC, + PENTILE_SRC_FORMAT_GBGR_GBGR = 0xD, + PENTILE_SRC_FORMAT_BGRG_BGRG = 0xE, + PENTILE_SRC_FORMAT_GRGB_GRGB = 0xF, + PENTILE_SRC_FORMAT_MAX +} pentile_src_format_e; + +/** +* @brief 设置RX CLK +*/ +typedef enum +{ + RX_CLK_100M = 0, + RX_CLK_150M = 1, + RX_CLK_200M = 2, + RX_CLK_300M = 3, + RX_CLK_40M = 4, + RX_CLK_80M = 5, + RX_CLK_MAX +} hal_rx_clk_e; + +/** +* @brief pq_type_e select +*/ +typedef enum +{ + PQ_TYPE_DEFAULT = 0x0, + PQ_TYPE_LIMIT = 0x1, + PQ_TYPE_MAX +} pq_type_e; + +/** +* @brief 线的粗细 +*/ +typedef enum +{ + LINE_WEIGHT_FINE = 0, + LINE_WEIGHT_MEDIUM = 1, + LINE_WEIGHT_BOLD = 2, + LINE_WEIGHT_MAX +} line_weight_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/** +* @brief 创建dsi rx ctrl handle (释放时需调用hal_dsi_rx_ctrl_release_handle) +* @param none +* @retval dsi rx handle +*/ +hal_dsi_rx_ctrl_handle_t *hal_dsi_rx_ctrl_create_handle(void); + +/** +* @brief 释放dsi rx ctrl handle +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_release_handle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 设置rx ctrl handle 里的 PPS 参数 +* @param rx_ctrl_handle: dsi rx handle +* @param pps: pps 参数 +* @param pps_size: pps 参数长度 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_pre_init_pps(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pps[], uint32_t pps_size); + +/** +* @brief 初始化dsi rx 模块 +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief dsi rx 模块去初始化 +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_deinit(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 启动dsi rx +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_start(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 重新配置dsi rx参数并恢复状态 (debug使用, 重新配置rx_ctrl_handle参数后调用该接口重启) +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_restart(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 停止dsi rx +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_stop(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 手动设置RX clk,一般RX CLK 由底层自动计算,用于特殊video mode场景出现FIFO FULL情况调试使用 +* @param rxbr_clk: rx clk, 需要大于hs_lane_rate/8 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_set_rx_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_clk_e rxbr_clk); + +/** +* @brief 发送 MIPI HOST的读响应 CMD +* @param rx_ctrl_handle: dsi rx handle +* @param data_type: data type +* @param vc: virtual channel +* @param cmd_count: ack command 的长度 +* @param ... : 需要发送的command(数量与cmd_count 配置一致) +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_send_ack_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_ack_data_type_e data_type, dsi_virtual_channel_e vc, uint8_t cmd_count, ...); + +/** +* @brief 使用数组方式回复短包,与hal_dsi_rx_ctrl_send_ack_cmd功能一致 +* @param rx_ctrl_handle: dsi rx handle +* @param data_size: 数组长度,固定为4 +* @param data: 回复cmd数据,数据排列有严格规定: +* data[0]:DI(data type) +* data[1]:data 0 +* data[2]:data 1 +* data[3]:内部pkt type,短包固定为0 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_ack_short_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]); + +/** +* @brief 使用数组方式回复长包,与hal_dsi_rx_ctrl_send_ack_cmd功能一致 +* @param rx_ctrl_handle: dsi rx handle +* @param data_size: 数组长度,为Word Count + header长度 (header固定为4) +* @param data: 回复cmd数据,数据排列有严格规定: +* data[0]:DI(data type) +* data[1]:wc 0 (Word Count 低八位) +* data[2]:wc 1 (Word Count 高八位) +* data[3]:内部pkt type,长包固定为1 +* data[N]:长包数据 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_ack_long_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t data_size, uint8_t data[]); + +/** +* @brief 异步处理DSC接口,执行cus_dcs_entry_table里对应DCS immediately_func为false的函数 +* @param rx_ctrl_handle: dsi rx handle +* @retval true - 正常处理1个DSC , false - 无DSC 处理 +*/ +bool hal_dsi_rx_ctrl_dcs_async_handler(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 使用硬件filter丢弃不需要处理的CMD,避免MCU资源被无效CMD占用 +* @param rx_ctrl_handle: dsi rx handle +* @param filter_number: filter 编号(0-7) +* @param cmd_start: 需要丢弃command code起始位 +* @param cmd_end: 需要丢弃command code终止位 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_set_hw_cmd_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, + hal_rx_dcs_filter_sel_e filter_number, + uint32_t cmd_start, uint32_t cmd_end); + +/** +* @brief 使用内置pattern代替mipi输入(用于测试) +* @param rx_ctrl_handle: dsi rx handle +* @param pg_orient: pattern 方向(0:Vertical mode ; 1:Horizontal mode) +* @param enable: 开启/关闭pattern +* @param frame_rate: pattern 帧率 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_enable_test_pattern(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pg_orient, bool enable, int frame_rate); + + +/** +* @brief 获取AP 配置 BTA回复数据最大size +* @param rx_ctrl_handle: dsi rx handle +* @retval 返回数据大小 +*/ +uint32_t hal_dsi_rx_ctrl_get_max_ret_size(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 获取AP Compression Mode Command配置,默认为0,谨慎使用 +* @param rx_ctrl_handle: dsi rx handle +* @retval AP 配置compressen_en +*/ +bool hal_dsi_rx_ctrl_get_compressen_en(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 输入分辨率切换接口 +* @param rx_ctrl_handle: dsi rx handle +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_toggle_resolution(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +/** +* @brief 配置 RX escape clk +* @param rx_ctrl_handle: dsi rx handle +* @param esc_clk: escape clk 单位Hz,10000000时回CMD为10Mhz +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_set_cus_esc_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t esc_clk); + +/** +* @brief 自动计算并配置硬件filter +* @param rx_ctrl_handle: dsi rx handle +* @param enable: 启动/关闭 硬件filter +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_set_auto_hw_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable); + +/* +* @brief 输入帧率修改(针对video mode) +* @param rx_ctrl_handle: dsi rx handle +* @param frame_rate:frame rate +*/ +bool hal_dsi_rx_ctrl_toggle_input_frame_rate(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_video_frame_rate_e frame_rate); + +/* +* @brief 注册写命令的回调函数,用于特殊命令序列时写命令的处理. + 可配合hal_dsi_rx_ctrl_set_auto_hw_filter关闭hw filter用于获取所有软件CMD +* @param rx_ctrl_handle: dsi rx handle +* @param 写命令处理函数 +* @retval none +*/ +void hal_dsi_rx_ctrl_register_write_cmd_entry(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_dcs_execute execute_func); + +/** +* @brief 配置硬件自动回复命令 +* 最大回复长度64,AP需要配置set_max_return_size后并且对比一直才会自动回复,不需要软件再参与 +* 应用于所有回复固定数据的场景 +* @param RXBR: registers struct +* @param qresp_number: qresp 编号(0-7) +* @param data_type: 需要回复的读命令的datatype +* @param cmd_code: 需要回复的读命令 +* @param cmd_count: 需要回复的命令的大小,长包最大size为64,与set_max_return_size一致才会回复 +* @param ...: 需要回复的参数 +* @retval true/false +*/ +bool hal_dsi_rx_ctrl_set_auto_ack(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_dcs_qresp_e qresp_number, dsi_ack_data_type_e data_type, uint32_t cmd_code, uint8_t cmd_count, ...); + +/* +* @brief 初始化画点模式 +* @param rx_ctrl_handle: dsi rx handle +* @param draw_en: 画点模式使能 +* @param pxl_init_en: 是否对全屏数据赋值,true:使用init_value赋值,false:使用上一帧数据作为初始值 +* @param color_mode: 画点模式数据源格式见dsi_color_code_e +* @param init_value: 全屏初始化数据,bit[23:16]--R,bit[15:8]--G,bit[7:0]--B +* @retval none +*/ +void hal_dsi_rx_ctrl_draw_mode_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool draw_en, bool pxl_init_en, dsi_color_code_e color_mode, uint32_t init_value); + +/* +* @brief 配置像素颜色 +* @param rx_ctrl_handle: dsi rx handle +* @param x: 像素点的x 坐标 +* @param y: 像素点的y 坐标 +* @param red_data: 像素点R分量 +* @param green_data: 像素点G分量 +* @param blue_data: 像素点B分量 +* @retval none +*/ +void hal_dsi_rx_ctrl_set_pixel_data(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, int x, int y, uint8_t red_data, uint8_t green_data, uint8_t blue_data); + + +/** +* @brief video mode下强制将数据设置为特定的color mode,具体type见dsi_color_code_e +* @param rx_ctrl_handle: dsi rx handle +* @param enable: 使能强制数据模式 +* @param frc_vid_code: 强制的数据格式 +* @retval none +*/ +void hal_dsi_rx_ctrl_force_video_crtl(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable, dsi_color_code_e frc_vid_code); + +/** +* @brief 注册RX 事件回调函数 +* @param rx_ctrl_handle: dsi rx handle +* @param event_cb: 回调函数 +* @param event_mask: 接收事件掩码,见hal_rx_event_e(eg:HAL_RX_FS_EVENT|HAL_RX_LINE_EVENT) +* @param enable: 事件回调开关 +* @param user_data: 预留扩展参数,不同事件事件配置不同参数 +* @retval none +*/ +void hal_dsi_rx_ctrl_register_callback(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_dsi_rx_ctrl_event_entry event_cb, uint32_t event_mask, bool enable, void *user_data); + +/** +* @brief 配置是否打开长包CRC检查 +* @param rx_ctrl_handle: dsi rx handle +* @param enable: 开启或者屏蔽CRC检测 +* @retval none +*/ +void hal_dsi_rx_ctrl_set_check_crc(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, bool enable); + +/** +* @brief 配置rx log 等级 +* @param rx_drv_level: rx log等级见枚举log_level_e +* @retval none +*/ +void hal_dsi_rx_ctrl_set_log_level(log_level_e rx_drv_level); + +/** + * @brief 带颜色画线函数(直线、斜线) + * @param x1,y1 起点坐标 + * @param x2,y2 终点坐标 + * @param red_data: 像素点R分量 + * @param green_data: 像素点G分量 + * @param blue_data: 像素点B分量 + * @param line_weight: 线粗 + * @return none + */ +void hal_dsi_rx_ctrl_draw_line(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t red_data, uint8_t green_data, uint8_t blue_data, line_weight_e line_weight); + +/** + * @brief 设置需要获取pixel的坐标 + * @param cap_x: 抓取pixel的x坐标 + * @param cap_y: 抓取pixel的y坐标 + * @return none + */ +void hal_dsi_rx_ctrl_set_cap_pixel_pos(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint16_t x0, uint16_t y0); + +/** + * @brief 获取指定坐标颜色,必须先设置获取颜色的坐标 + * @return 返回指定坐标颜色 + */ +uint32_t hal_dsi_rx_ctrl_get_cap_pixel_color(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle); + +#endif //__HAL_DSI_RX_CTRL_H__ diff --git a/src/sdk/include/hal_dsi_tx_ctrl.h b/src/sdk/include/hal_dsi_tx_ctrl.h new file mode 100644 index 0000000..1f4bdf3 --- /dev/null +++ b/src/sdk/include/hal_dsi_tx_ctrl.h @@ -0,0 +1,349 @@ +/******************************************************************************* +* +* +* File: hal_dsi_tx_ctrl.h +* Description: hal mipi dsi tx 头文件 +* Version: V0.1 +* Date: 2021-04-23 +* Author: jaya + *******************************************************************************/ +#ifndef __HAL_DSI_TX_CTRL_H__ +#define __HAL_DSI_TX_CTRL_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_dsi_datatype.h" +#include "tau_device_datatype.h" +#include "hal_gpio.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief blank display configure type +*/ +typedef struct +{ + uint16_t st_col; /* 补黑区域起始坐标,RGBG格式以子像素计数*/ + uint16_t width; /* 补黑区域宽度,RGBG格式以子像素计数*/ + uint8_t remap_en; /* 补黑区域是否参与子像素重排*/ + uint8_t blank_en; /* 补黑区域开关*/ +} blank_disp_t; + +/** +* @brief pentile remap rule configuration type in rom code +*/ +typedef uint8_t (remap_rule_t)[24]; + +/** +* @brief 客制化MIPI TX参数结构体 +*/ +typedef struct +{ + bool pentile_enable; /* 是否pentile输出*/ + bool pentile_reverse_en; /* 是否打开芯片本身行翻转功能*/ + bool pentile_24b; /* 是否以RGB IC搭配RGBG玻璃*/ + uint32_t rgb_hact; /* RGB IC搭配RGBG玻璃使用时IC水平方向分辨率*/ + remap_rule_t *remapl_rule; /* RGB IC搭配RGBG玻璃使用时remap规则1*/ + remap_rule_t *remapr_rule; /* RGB IC搭配RGBG玻璃使用时remap规则2*/ + blank_disp_t blank_info0; /* 补黑参数配置信息*/ + blank_disp_t blank_info1; /* 补黑参数配置信息*/ +} dsi_tx_pent_info_t; + +/** +* @brief MIPI TX clk/data lane是否自动进LP控制枚举类型 +* 不同driver IC spec不同,对Lane rate范围要求也不同 +* 无法点亮时可尝试替换不同的模式 +*/ +typedef enum +{ + ALWAYS_HS = 0, // vid输出默认此模式,仅VSA自动进LP; cmd输出暂不支持此模式 + ONLY_DATA_LANE_AUTO_LP = 1, // cmd输出默认此模式,data lane行间自动进LP, clk保持HS + CLK_DATA_LANE_AUTO_LP = 2, // data/clk lane行间自动进LP +} dsi_tx_lane_lp_e; + +/** +* @brief tx pq filter index +* 默认使用OPT +*/ +typedef enum +{ + TX_FLT_OPT = 0, + TX_FLT_LINEAR = 1, + TX_FLT_MAX +} hal_dsi_tx_pq_filter_e; + +/** +* @brief 客制化MIPI TX参数结构体 +*/ +typedef struct +{ + dsi_base_trans_info_t base_info; /* mipi video 转换基本信息 */ + uint32_t dpi_vsa; /* DPI VSA*/ + uint32_t dpi_vbp; /* DPI VBP*/ + uint32_t dpi_vfp; /* DPI VFP*/ + uint32_t dpi_hsa; /* DPI HSA*/ + uint32_t dpi_hbp; /* DPI HBP*/ + uint32_t dpi_hfp; /* DPI HFP*/ + float tx_frame_rate; /* 默认60Hz输出,不建议配置为其他,仅作为debug使用 */ + uint8_t lane_num; /* TX 使用的 lane 数量*/ + bool used; /* handle使用标志位 内部自动更新状态,不需要操作*/ + bool lp_exit_lpdt; /* 每一条LP CMD都退出LPDT */ + dsi_tx_lane_lp_e tx_lane_lp; /* clk/data lane是否自动进LP模式配置 */ + dsi_virtual_channel_e channel_id; /* 虚拟通道ID,默认为0*/ + dsi_video_mode_type_e vid_mode; /* video输出时选择输出的vid模式种类 */ + dsi_tx_cmd_tx_type_e cmd_tx_type; /* 初始化模式传输命令方式,0:HS; 1:LP */ + dsi_tx_pent_info_t pentile_info; /* pentile屏基本信息 */ + hal_dsi_tx_pq_filter_e tx_pq_index; /* 画质调整滤波器,默认为OPT最优效果 */ +} hal_dsi_tx_ctrl_handle_t; + +/** +* @brief TE 信号产生模式 +*/ +typedef enum +{ + TE_60HZ_MODE = 0, + TE_USER_MODE = 1, /* 底层不产生TE, 由hal_dsi_tx_ctrl_gen_a_tear_signal 接口产生 */ + TE_STOP_MODE = 1, + TE_90HZ_MODE = 2, + TE_120HZ_MODE = 3, + TE_144HZ_MODE = 4, + TE_160HZ_MODE = 5, + TE_MODE_MAX +} te_mode_e; + +/** +* @brief dpi tx vpg style +*/ +typedef enum +{ + TX_VPG_V_COLOR = 0, + TX_VPG_H_COLOR = 1, + TX_VPG_V_BER = 2, + TX_VPG_FLICKER = 3, + TX_VPG_MAX +} dsi_tx_vpg_style_e; + +/** +* @brief MIPI TX初始化 +* @param tx_ctrl_handle: MIPI TX实例 +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_init(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +/** +* @brief MIPI TX反初始化 +* @param tx_ctrl_handle: MIPI TX实例 +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_deinit(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +/** +* @brief MIPI TX创建实例 +* @param None +* @retval tx_ctrl_handle: MIPI TX实例 +*/ +hal_dsi_tx_ctrl_handle_t *hal_dsi_tx_ctrl_create_handle(void); + +/** +* @brief MIPI TX释放实例 +* @param tx_ctrl_handle: MIPI TX实例 +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_release_handle(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +/** +* @brief MIPI TX开始运行 +* @param tx_ctrl_handle: MIPI TX实例 +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_start(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +/** +* @brief MIPI TX停止运行 +* @param tx_ctrl_handle: MIPI TX实例 +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_stop(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +/** +* @brief MIPI TX接收命令 +* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +* @param cmd: DCS指令 +* @param size: 读取数据长度 +* @param data: 数据存放地址 +* @retval None +*/ +void hal_dsi_tx_ctrl_read_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd, uint8_t size, uint8_t *data); + +/** +* @brief video高速数据传输时V porch阶段进行bta回读接口 +* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +* @param cmd: DCS指令 +* @param size: 读取数据长度 +* @param data: 数据存放地址 +* @retval true-BTA回复获取有效,false-BTA回复未获得 +* @attention 需要考虑V porch时长是否足够size长度的寄存器回读,否则造成TX数据通路出错 +*/ +bool hal_dsi_tx_ctrl_vporch_bta_opera(uint8_t data_type, uint8_t cmd, uint8_t size, uint8_t *data); + +/** +* @brief MIPI TX发送命令 +* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +* @param cmd_count: 可变参数个数 +* @param ...: 可变参数 +* @retval true-command发送正常;false-TX当前状态不能发送command +*/ +bool hal_dsi_tx_ctrl_write_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd_count, ...); + +/** +* @brief MIPI TX发送命令 +* @param data_type: 数据类型,参考枚举类型dsi_data_type_e +* @param vc: 虚拟通道编号,参考枚举类型dsi_virtual_channel_e +* @param size: data个数 +* @param data: data数组 +* @retval true-command发送正常;false-TX当前状态不能发送command +*/ +bool hal_dsi_tx_ctrl_write_array_cmd(uint8_t data_type, uint8_t vc, uint8_t size, const uint8_t *data); + +/** +* @brief 切换至 LP cmd发送模式 +* @param enable: true-进行cmd发送;false-结束LP cmd发送 +* @retval None +* @attention 应用场景:AP enter sleep后传输发送LP cmd +*/ +void hal_dsi_tx_ctrl_cmd_mode(bool enable); + +/** +* @brief 设置TX escape mode时钟 +* @param esc_clk: escape clk 单位Hz,10000000时CMD为10Mhz +* @retval None +*/ +void hal_dsi_tx_ctrl_set_escape_clock_div(uint32_t esc_clk); + +/** +* @brief 设置RGB或BGR +* @param endianness: 选择RGB或BGR显示,参考dsi_endianness_e +* @attention 接口需要在初始化接口hal_dsi_tx_ctrl_init调用前才能生效 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_endianness(dsi_endianness_e endianness); + +/** +* @brief 设置CCM参数 +* @param coef: 客制化参数,参考结构体ccm_coef_t +* @retval None +*/ +void hal_dsi_tx_ctrl_set_ccm(ccm_coef_t *ccm); + +/** +* @brief 设置边缘检测算法参数 +* @param edge_dect_para: 边缘检测算法参数,参考 dsi_tx_edge_dect_t;关闭模块时可以传参NULL +* @param edge_dect_en: 是否开启边缘检测模块 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_edge_dect(dsi_tx_edge_dect_t *edge_dect_para, bool edge_dect_en); + +/** +* @brief 设置边缘增强效果算法参数 +* @param edge_enh_para: 边缘增强算法参数,参考 dsi_tx_edge_enh_t;关闭模块时可以传参NULL +* @param edge_enh_en: 是否开启边缘增强模块 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_edge_enhance(dsi_tx_edge_enh_t *edge_enh_para, bool edge_enh_en); + +/** +* @brief 设置False Color remove算法参数 +* @param fc_para: false color参数,参考 dsi_tx_fc_t;关闭模块时可以传参NULL +* @param fc_en: 是否开启false color配置模块 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_fc(dsi_tx_fc_t *fc_para, bool fc_en); + +/** +* @brief 设置bcs参数 +* @param bcs_para: 明亮度/对比度/饱和度,参考 dsi_tx_bcs_t;关闭模块时可以传参NULL +* @param bcs_en: 是否开启bcs配置模块 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_bcs(dsi_tx_bcs_t *bcs_para, bool bcs_en); + +/** +* @brief 设置复写颜色 +* @param R: RGB的R分量 +* @param G: RGB的G分量 +* @param B: RGB的B分量 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_overwrite_rgb(uint8_t R, uint8_t G, uint8_t B); + +/** +* @brief 打开overwrite功能 +* @param enable: true-打开overwrite; false-关闭overwrite +* @retval None +*/ +void hal_dsi_tx_ctrl_overwrite_enable(bool enable); + +/** +* @brief 设置部分显示 +* @param enable: true-打开partial显示; false-关闭partial显示 +* @param par_disp_cfg display区域和背景色设置,参考 dsi_tx_par_dis_t; 关闭模块功能时可以传参NULL +* @retval None +*/ +void hal_dsi_tx_ctrl_partial_disp_enable(bool enable, dsi_tx_par_dis_t *par_disp_cfg); + +/** +* @brief 控制TX VPG的输出 +* @param vpg_en: 使能VPG +* @param style: VPG的样式 +* @param vpg_hline_adj: false-正常情况使用,true-VPG显示滚动情况下使用 +* @attention vpg_hline_adj此参数只能解决带宽余量相差不大的情况,如果带宽需求超出过多,依然无法解决带宽不足引起的VPG显示滚动问题 +* @retval None +*/ +void hal_dsi_tx_ctrl_set_vpg(bool vpg_en, dsi_tx_vpg_style_e style, bool vpg_hline_adj); + +/** +* @brief 配置TE模式 +* @param tx_ctrl_handle: dsi tx handle +* @param te: te mode +* @retval None +*/ +void hal_dsi_tx_ctrl_set_tear_mode(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, te_mode_e te); + +/** +* @brief 生成一个TE信号 +* @param None +* @retval None +*/ +void hal_dsi_tx_ctrl_gen_a_tear_signal(void); + +/** +* @brief command mode输出模式下产生一帧数据 +* @param None +* @retval None +*/ +bool hal_dsi_tx_ctrl_gen_a_frame(void); + +/** +* @brief 配置输入输出同步行数,用于调整图像撕裂问题 +* @param tx_ctrl_handle: dsi tx handle +* @param line_num: 同步行号,范围1 ~ output height +* @retval true/false +*/ +bool hal_dsi_tx_ctrl_set_cus_sync_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, uint32_t line_num); + +/** +* @brief 获取TX当前显示行号 +* @param tx_ctrl_handle: dsi tx handle +* @retval 当前显示行号,包括vsa + vbp + vactive + vfp +*/ +uint32_t hal_dsi_tx_ctrl_get_disp_line(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle); + +#endif //__HAL_DSI_TX_CTRL_H__ diff --git a/src/sdk/include/hal_flash.h b/src/sdk/include/hal_flash.h new file mode 100644 index 0000000..0375dcd --- /dev/null +++ b/src/sdk/include/hal_flash.h @@ -0,0 +1,139 @@ +/******************************************************************************* +* +* +* File: hal_system.h +* Description hal 通用系统接口头文件 +* Version V0.1 +* Date 2023-03-03 +* Author kevin + *******************************************************************************/ +#ifndef __HAL_FLASH_H__ +#define __HAL_FLASH_H__ +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +typedef struct +{ + uint8_t flash_block; + uint8_t flash_page; + uint16_t data_size; + uint16_t page_offset_addr; + uint8_t *user_data; +} fls_ops_cfg_t; + +/** +* @brief 用户空间的操作 +*/ +typedef enum +{ + FLASH_USERDATA_READ, +} fls_userdata_ops_e; + + +/** +* @brief 公共区域的操作 +*/ +typedef enum +{ + FLASH_PUBLIC_READ, + FLASH_PUBLIC_WRITE, + FLASH_PUBLIC_ERASE_4K, + FLASH_PUBLIC_ERASE_32K +} fls_public_ops_e; + + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/** +* @brief 初始化flash 模块,使用完flash模块后需要deinit用于节省功耗 +* @param +* @retval bool 无 +*/ +void hal_flash_init(void); + +/** +* @brief 关闭flash 模块 +* @param +* @retval bool 无 +*/ +void hal_flash_deinit(void); + + +/** +* @brief flash ctl读取flash-uid操作 +* @param UID[16] 存放UID的数组,UID最大长度为16 +* @param UID 数组长度(最大16) +* @retval +*/ +void hal_flash_read_uid(uint8_t *UID, uint8_t size); + +/** +* @brief 发送0xAB指令控制flash退出deep sleep power mode +* @param none +* @retval null +*/ +void hal_flash_release_power_down(void); + +/** +* @brief 发送0xB9指令控制flash进入deep sleep power mode +* @param none +* @retval null +*/ +void hal_flash_power_down(void); + +/** +* @brief 配置共享flash开关(使用过后注意关闭,常开功耗会增加) +* @param enable:true:可通过F_SPI访问内部flash , false:不可通过F_SPI访问内部flash +* @retval true/false +*/ +bool hal_flash_share_mode(bool enable); + +/** +* @brief 获取user_data的个数 +* @param +* @retval 数据个数 +*/ +uint32_t hal_flash_get_user_data_size(void); + +/** +* @brief Flash user data区域,该区域由烧录器烧录,软件只读,不可写。 + Size从hal_flash_get_user_data_size接口获取 +* @param ops:选择操作的方式:读 + cfg: flash_block: flash block = userdata偏移地址/64K + flash_page: flash page = (userdata偏移地址%/64K)/1K + page_offset_addr: userdata偏移地址%block(1K),flash page内偏移地址(0-1023) + data_size: 读取数据的总长度 (0-1023) + user_data: 读取的数据 +* @retval 无 +*/ +void hal_flash_user_region_ops(fls_userdata_ops_e ops, fls_ops_cfg_t *cfg); + + +/** +* @brief Flash公共区域,可读写、擦除,大小32KB +* @param ops:选择操作的方式:读/写/擦除 + cfg: flash_block:固定为0 + flash_page:0-31 (总共32KB) + page_offset_addr: flash page内偏移地址(0-1023) + data_size: 需要操作数据的总长度 (0-1023) + user_data: 需要操作的数据 +* @retval 无 +*/ +void hal_flash_public_region_ops(fls_public_ops_e ops, fls_ops_cfg_t *cfg); +#endif //__HAL_FLASH_H__ diff --git a/src/sdk/include/hal_gpio.h b/src/sdk/include/hal_gpio.h new file mode 100644 index 0000000..75607c8 --- /dev/null +++ b/src/sdk/include/hal_gpio.h @@ -0,0 +1,725 @@ +/******************************************************************************* +* +* +* File: hal_gpio.h +* Description: gpio HAL层头文件 +* Version: V0.1 +* Date: 2023-07-27 +* Author: kevin + *******************************************************************************/ +#ifndef __HAL_GPIO_H__ +#define __HAL_GPIO_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ +/** +* @brief GPIO pin +*/ +typedef enum +{ + /*以GPIO命名PIN*/ + IO_PAD_GPIO0 = 0, + IO_PAD_GPIO1, + IO_PAD_GPIO2, + IO_PAD_GPIO3, + IO_PAD_GPIO4, + IO_PAD_GPIO5, + IO_PAD_GPIO6, + IO_PAD_GPIO7, + IO_PAD_GPIO8, + IO_PAD_GPIO9, + IO_PAD_GPIO10, + IO_PAD_GPIO11, + IO_PAD_GPIO12, + IO_PAD_GPIO13, + IO_PAD_GPIO14, + IO_PAD_GPIO15, + IO_PAD_GPIO16, + IO_PAD_GPIO17, + IO_PAD_GPIO18, + IO_PAD_GPIO19, + IO_PAD_GPIO20, + IO_PAD_GPIO21, + IO_PAD_GPIO22, + IO_PAD_GPIO23, + IO_PAD_GPIO24, + IO_PAD_GPIO25, + + /*以实际PAD NAME命名PIN*/ + IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0, + IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1, + IO_PAD_AP_INT = IO_PAD_GPIO2, + IO_PAD_AP_TE = IO_PAD_GPIO3, + IO_PAD_AP_SWIRE = IO_PAD_GPIO4, + IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5, + IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6, + IO_PAD_TD_RSTN = IO_PAD_GPIO7, + IO_PAD_AP_PWMEN = IO_PAD_GPIO8, + IO_PAD_AP_SPIS_CLK = IO_PAD_GPIO9, + IO_PAD_AP_SPIS_CSN = IO_PAD_GPIO10, + IO_PAD_TD_FC_CLK = IO_PAD_GPIO11, + IO_PAD_TD_FC_CSN = IO_PAD_GPIO12, + IO_PAD_TD_FC_IO0 = IO_PAD_GPIO13, + IO_PAD_TD_FC_IO1 = IO_PAD_GPIO14, + IO_PAD_SWD_CLK = IO_PAD_GPIO15, + IO_PAD_SWD_DIO = IO_PAD_GPIO16, + IO_PAD_AP_RSTN = IO_PAD_GPIO17, + IO_PAD_UART0_TX = IO_PAD_GPIO18, + IO_PAD_TD_SPIM_CLK = IO_PAD_GPIO19, + IO_PAD_TD_SPIM_CSN = IO_PAD_GPIO20, + IO_PAD_AP_TPRSTN = IO_PAD_GPIO21, + IO_PAD_TD_INT = IO_PAD_GPIO22, + IO_PAD_TD_TP_RESX = IO_PAD_GPIO23, + IO_PAD_UART1_TX = IO_PAD_GPIO24, + IO_PAD_UART0_RX = IO_PAD_GPIO25, + + IO_PAD_MAX, + + + /*以实际引脚序号命名PIN*/ + IO_PIN_1 = IO_PAD_SWD_CLK, + IO_PIN_2 = IO_PAD_UART0_TX, + IO_PIN_3 = IO_PAD_SWD_DIO, + IO_PIN_4 = IO_PAD_TD_SPIM_MOSI, + IO_PIN_5 = IO_PAD_TD_SPIM_CLK, + IO_PIN_6 = IO_PAD_TD_SPIM_CSN, + IO_PIN_7 = IO_PAD_TD_SPIM_MISO, + IO_PIN_8 = IO_PAD_TD_RSTN, + IO_PIN_9 = IO_PAD_TD_FC_CSN, + IO_PIN_10 = IO_PAD_TD_FC_CLK, + IO_PIN_11 = IO_PAD_TD_FC_IO0, + IO_PIN_12 = IO_PAD_TD_FC_IO1, + IO_PIN_13 = IO_PAD_TD_TP_RESX, + IO_PIN_14 = IO_PAD_UART1_TX, + IO_PIN_15 = IO_PAD_AP_SWIRE, + IO_PIN_16 = IO_PAD_AP_INT, + IO_PIN_17 = IO_PAD_AP_PWMEN, + IO_PIN_18 = IO_PAD_AP_TPRSTN, + + IO_PIN_29 = IO_PAD_AP_TE, + IO_PIN_30 = IO_PAD_AP_SPIS_MISO, + IO_PIN_31 = IO_PAD_AP_SPIS_CSN, + IO_PIN_32 = IO_PAD_AP_SPIS_CLK, + IO_PIN_33 = IO_PAD_AP_SPIS_MOSI, + IO_PIN_34 = IO_PAD_AP_RSTN, + IO_PIN_35 = IO_PAD_TD_INT, + IO_PIN_36 = IO_PAD_UART0_RX, + +} io_pad_e; + + +/* +芯片引脚 | 默认mode | 可选mode +---------------------------------------------------------------- +IO_PIN_1 | IO_PAD_SWCLK, | PIN1_MODE_SWDCLK + | | PIN1_MODE_GPIO15 +---------------------------------------------------------------- +IO_PIN_2 | IO_PAD_UART0_TX, | PIN2_MODE_UART0_TX + | | PIN2_MODE_PWMO + | | PIN2_MODE_GPIO18 + | | PIN2_MODE_PWMI + | | PIN2_MODE_TEAR1 +---------------------------------------------------------------- +IO_PIN_3 | IO_PAD_SWDIO, | PIN3_MODE_SWDIO + | | PIN3_MODE_GPIO16 +---------------------------------------------------------------- +IO_PIN_4 | IO_PAD_TD_SPIM_MOSI, | PIN4_MODE_SPIM_MOSI + | | PIN4_MODE_I2C02_SDA + | | PIN4_MODE_GPIO6 + | | PIN4_MODE_UART0_TX +---------------------------------------------------------------- +IO_PIN_5 | IO_PAD_TD_SPIM_CLK, | PIN5_MODE_SPIM_SCLK + | | PIN5_MODE_I2C1_SCL + | | PIN5_MODE_GPIO19 +---------------------------------------------------------------- +IO_PIN_6 | IO_PAD_TD_SPIM_CSN, | PIN6_MODE_SPIM_CSN + | | PIN6_MODE_I2C1_SDA + | | PIN6_MODE_GPIO20 +---------------------------------------------------------------- +IO_PIN_7 | IO_PAD_TD_SPIM_MISO, | PIN7_MODE_SPIM_MISO + | | PIN7_MODE_I2C02_SCL + | | PIN7_MODE_GPIO5 +---------------------------------------------------------------- +IO_PIN_8 | IO_PAD_TD_RSTN, | PIN8_MODE_GPIO7 + | | PIN8_MODE_I2C02_SDA +---------------------------------------------------------------- +IO_PIN_9 | IO_PAD_TD_FC_CSN, | PIN9_MODE_TSPIS_CSN + | | PIN9_MODE_GPIO12 +---------------------------------------------------------------- +IO_PIN_10 | IO_PAD_TD_FC_CLK, | PIN10_MODE_TSPIS_CLK + | | PIN10_MODE_GPIO11 +---------------------------------------------------------------- +IO_PIN_11 | IO_PAD_TD_FC_IO0, | PIN11_MODE_TSPIS_IO0 + | | PIN11_MODE_GPIO13 + | | PIN11_MODE_I2C02_SDA +---------------------------------------------------------------- +IO_PIN_12 | IO_PAD_TD_FC_IO1, | PIN12_MODE_TSPIS_IO1 + | | PIN12_MODE_GPIO14 + | | PIN12_MODE_I2C02_SCL +---------------------------------------------------------------- +IO_PIN_13 | IO_PAD_TD_TP_RESX, | PIN13_MODE_GPIO23 + | | PIN13_MODE_PWMO + | | PIN13_MODE_UART1_RX + | | PIN13_MODE_UART1_RX +---------------------------------------------------------------- +IO_PIN_14 | IO_PAD_UART1_TX, | PIN14_MODE_GPIO24 + | | PIN14_MODE_UART0_RX + | | PIN14_MODE_UART1_TX + | | +---------------------------------------------------------------- +IO_PIN_15 | IO_PAD_AP_SWIRE, | PIN15_MODE_SWIRE + | | PIN15_MODE_PWMO + | | PIN15_MODE_GPIO4 +---------------------------------------------------------------- +IO_PIN_16 | IO_PAD_AP_INT, | PIN16_MODE_GPIO2 +---------------------------------------------------------------- +IO_PIN_17 | IO_PAD_AP_PWMEN, | PIN17_MODE_UART0_RX + | | PIN17_MODE_GPIO8 + | | PIN17_MODE_PWMO +---------------------------------------------------------------- +IO_PIN_18 | IO_PAD_AP_TPRSTN, | PIN18_MODE_UART0_RX + | | PIN18_MODE_GPIO21 + | | PIN18_MODE_I2C02_SCL +---------------------------------------------------------------- +IO_PIN_29 | IO_PAD_AP_TE, | PIN29_MODE_JTAG_TRSTN + | | PIN29_MODE_TEAR + | | PIN29_MODE_GPIO3 +---------------------------------------------------------------- +IO_PIN_30 | IO_PAD_AP_SPIS_MISO, | PIN30_MODE_JTAG_TDO + | | PIN30_MODE_SPIS_MISO + | | PIN30_MODE_GPIO0 + | | PIN30_MODE_UART0_RX + | | PIN30_MODE_I2C1_SCL +---------------------------------------------------------------- +IO_PIN_31 | IO_PAD_AP_SPIS_CSN, | PIN31_MODE_JTAG_TMS + | | PIN31_MODE_SPIS_CSN + | | PIN31_MODE_GPIO10 + | | PIN31_MODE_I2C02_SDA +---------------------------------------------------------------- +IO_PIN_32 | IO_PAD_AP_SPIS_CLK, | PIN32_MODE_JTAG_TCK + | | PIN32_MODE_SPIS_SCLK + | | PIN32_MODE_GPIO9 + | | PIN32_MODE_I2C02_SCL +---------------------------------------------------------------- +IO_PIN_33 | IO_PAD_AP_SPIS_MOSI, | PIN33_MODE_JTAG_TDI + | | PIN33_MODE_SPIS_MOSI + | | PIN33_MODE_GPIO1 + | | PIN33_MODE_UART0_TX + | | PIN33_MODE_I2C1_SDA_0 +---------------------------------------------------------------- +IO_PIN_34 | IO_PAD_AP_RSTN, | PIN34_MODE_GPIO17 +---------------------------------------------------------------- +IO_PIN_35 | IO_PAD_TD_INT, | PIN35_MODE_GPIO22 +---------------------------------------------------------------- +IO_PIN_36 | IO_PAD_UART0_RX, | PIN36_MODE_UART0_RX + | | PIN36_MODE_PWMO + | | PIN36_MODE_GPIO25 +---------------------------------------------------------------- +*/ + + +/** +* @brief PIN1 IO_PAD_SWD_CLK 可选的mode +*/ +typedef enum +{ + PIN1_MODE_SWDCLK = 0, + PIN1_MODE_GPIO15 = 2, +} pin1_mode_e; + + +/** +* @brief PIN2 PAD_UART0_TX可选的mode +*/ +typedef enum +{ + PIN2_MODE_UART0_TX = 0, + PIN2_MODE_PWMO = 1, + PIN2_MODE_GPIO18 = 2, + PIN2_MODE_PWMI = 3, + PIN2_MODE_TEAR1 = 4, +} pin2_mode_e; + +/** +* @brief PIN3 IO_PAD_SWD_DIO 可选的mode +*/ +typedef enum +{ + PIN3_MODE_SWDIO = 0, + PIN3_MODE_GPIO16 = 2, +} pin3_mode_e; + + +/** +* @brief PIN4 PAD_TD_SPIM_MOSI可选的mode +*/ +typedef enum +{ + PIN4_MODE_SPIM_MOSI = 0, + PIN4_MODE_I2C02_SDA = 1, + PIN4_MODE_GPIO6 = 2, + PIN4_MODE_UART0_TX = 3, +} pin4_mode_e; + +/** +* @brief PIN5 PAD_TD_SPIM_CLK可选的mode +*/ +typedef enum +{ + PIN5_MODE_SPIM_SCLK = 0, + PIN5_MODE_I2C1_SCL = 1, + PIN5_MODE_GPIO19 = 2, +} pin5_mode_e; + +/** +* @brief PIN6 PAD_TD_SPIM_CSN可选的mode +*/ +typedef enum +{ + PIN6_MODE_SPIM_CSN = 0, + PIN6_MODE_I2C1_SDA = 1, + PIN6_MODE_GPIO20 = 2, +} pin6_mode_e; + +/** +* @brief PIN7 PAD_TD_SPIM_MISO可选的mode +*/ +typedef enum +{ + PIN7_MODE_SPIM_MISO = 0, + PIN7_MODE_I2C02_SCL = 1, + PIN7_MODE_GPIO5 = 2, +} pin7_mode_e; + +/** +* @brief PIN8 PAD_TD_RSTN可选的mode +*/ +typedef enum +{ + PIN8_MODE_GPIO7 = 2, + PIN8_MODE_I2C02_SDA = 3, +} pin8_mode_e; + +/** +* @brief PIN9 PAD_TD_FC_CSN可选的mode +*/ +typedef enum +{ + PIN9_MODE_TSPIS_CSN = 0, + PIN9_MODE_GPIO12 = 2, +} pin9_mode_e; + +/** +* @brief PIN10 PAD_TD_FC_CLK可选的mode +*/ +typedef enum +{ + PIN10_MODE_TSPIS_CLK = 0, + PIN10_MODE_GPIO11 = 2, +} pin10_mode_e; + + +/** +* @brief PIN11 PAD_TD_FC_IO0可选的mode +*/ +typedef enum +{ + PIN11_MODE_TSPIS_IO0 = 0, + PIN11_MODE_GPIO13 = 2, + PIN11_MODE_I2C02_SDA = 3, +} pin11_mode_e; + +/** +* @brief PIN12 PAD_TD_FC_IO1可选的mode +*/ +typedef enum +{ + PIN12_MODE_TSPIS_IO1 = 0, + PIN12_MODE_GPIO14 = 2, + PIN12_MODE_I2C02_SCL = 3, +} pin12_mode_e; + +/** +* @brief PIN13 PAD_TD_TP_RESX可选的mode +*/ +typedef enum +{ + PIN13_MODE_GPIO23 = 2, + PIN13_MODE_PWMO = 3, + PIN13_MODE_UART1_RX = 4, +} pin13_mode_e; + +/** +* @brief PIN14 PAD_UART1_TX可选的mode +*/ +typedef enum +{ + PIN14_MODE_GPIO24 = 2, + PIN14_MODE_UART0_RX = 3, + PIN14_MODE_UART1_TX = 4, +} pin14_mode_e; + + + +/** +* @brief PIN15 PAD_AP_SWIRE可选的mode +*/ +typedef enum +{ + PIN15_MODE_SWIRE = 0, + PIN15_MODE_PWMO = 1, + PIN15_MODE_GPIO4 = 2, +} pin15_mode_e; + +/** +* @brief PIN16 IO_PAD_AP_INT 可选的mode +*/ +typedef enum +{ + PIN16_MODE_GPIO2 = 2, +} pin16_mode_e; + +/** +* @brief PIN17 PAD_AP_PWMEN可选的mode +*/ +typedef enum +{ + PIN17_MODE_UART0_RX = 1, + PIN17_MODE_GPIO8 = 2, + PIN17_MODE_PWMO = 3, +} pin17_mode_e; + +/** +* @brief PIN18 IO_PAD_AP_TPRSTN 可选的mode +*/ +typedef enum +{ + PIN18_MODE_UART0_RX = 0, + PIN18_MODE_GPIO21 = 2, + PIN18_MODE_I2C02_SCL = 3, +} pin18_mode_e; + + +//---------- + +/** +* @brief PIN29 IO_PAD_AP_TE 可选的mode +*/ +typedef enum +{ + PIN29_MODE_JTAG_TRSTN = 0, + PIN29_MODE_TEAR = 1, + PIN29_MODE_GPIO3 = 2, +} pin29_mode_e; + + +/** +* @brief PIN30 IO_PAD_AP_SPIS_MISO 可选的mode +*/ +typedef enum +{ + PIN30_MODE_JTAG_TDO = 0, + PIN30_MODE_SPIS_MISO = 1, + PIN30_MODE_GPIO0 = 2, + PIN30_MODE_UART0_RX = 3, + PIN30_MODE_I2C1_SCL = 6, +} pin30_mode_e; + +/** +* @brief PIN31 IO_PAD_AP_SPIS_CSN 可选的mode +*/ +typedef enum +{ + PIN31_MODE_JTAG_TMS = 0, + PIN31_MODE_SPIS_CSN = 1, + PIN31_MODE_GPIO10 = 2, + PIN31_MODE_I2C02_SDA = 3, +} pin31_mode_e; + +/** +* @brief PIN32 IO_PAD_AP_SPIS_CLK 可选的mode +*/ +typedef enum +{ + PIN32_MODE_JTAG_TCK = 0, + PIN32_MODE_SPIS_SCLK = 1, + PIN32_MODE_GPIO9 = 2, + PIN32_MODE_I2C02_SCL = 3, +} pin32_mode_e; + +/** +* @brief PIN33 IO_PAD_AP_SPIS_MOSI 可选的mode +*/ +typedef enum +{ + PIN33_MODE_JTAG_TDI = 0, + PIN33_MODE_SPIS_MOSI = 1, + PIN33_MODE_GPIO1 = 2, + PIN33_MODE_UART0_TX = 3, + PIN33_MODE_I2C1_SDA_0 = 6, +} pin33_mode_e; + +/** +* @brief PIN34 PAD_AP_RST可选的mode +*/ +typedef enum +{ + PIN34_MODE_GPIO17 = 2, +} pin34_mode_e; + + +/** +* @brief PIN35 PAD_TD_INT可选的mode +*/ +typedef enum +{ + PIN35_MODE_GPIO22 = 2, +} pin35_mode_e; + + +/** +* @brief PIN36 PAD_UART_RX可选的mode +*/ +typedef enum +{ + PIN36_MODE_UART0_RX = 0, + PIN36_MODE_PWMO = 1, + PIN36_MODE_GPIO25 = 2, +} pin36_mode_e; + + + +//------------------------------------------------------------------------- +/** +* @brief PAD_SFC_CLK可选的mode 内部PAD +*/ +typedef enum +{ + IO_MODE_INTER_FC_CLK = 0, + IO_MODE_TSPIS_CLK_EN = 2, +} pad_sfc_clk_mode_e; + +/** +* @brief PAD_SFC_CSN可选的mode 内部PAD +*/ +typedef enum +{ + IO_MODE_INTER_FC_CSN = 0, + IO_MODE_TSPIS_CSN_EN = 2, +} pad_sfc_csn_mode_e; + +/** +* @brief PAD_SFC_IO0可选的mode 内部PAD +*/ +typedef enum +{ + IO_MODE_INTER_FC_IO0 = 0, + IO_MODE_TSPIS_IO0_EN = 2, +} pad_sfc_io0_mode_e; + +/** +* @brief PAD_SFC_IO1可选的mode 内部PAD +*/ +typedef enum +{ + IO_MODE_INTER_FC_IO1 = 0, + IO_MODE_TSPIS_IO1_EN = 2, +} pad_sfc_io1_mode_e; + +/** +* @brief PAD电压转换速率 +*/ +typedef enum +{ + IO_SLEW_RATE_SLOW = 0, + IO_SLEW_RATE_FAST = 1, +} pad_slew_rate_e; + +/******************************************************************************* +* IOE +*******************************************************************************/ +/** +* @brief GPIO io方向 +*/ +typedef enum +{ + IO_IOE_INPUT = 0, + IO_IOE_OUTPUT, + IO_IOE_NONE +} gpio_ioe_e; + +/** +* @brief GPIO level +*/ +typedef enum +{ + IO_LVL_LOW = 0, + IO_LVL_HIGH, + IO_LVL_NONE +} gpio_level_e; + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief PAD与MODE的MAP结构体 +*/ +typedef struct +{ + io_pad_e pad; + uint8_t mode; + gpio_ioe_e ioe; + gpio_level_e lvl; +} io_pad_attr_t; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 配置指定PAD为GPIO mode,方向为input,指定中断触发方式 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param trig:4种中断触发方式,参考枚举类型sys_cfg_trigger_e +* @retval 无 +*/ +void hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig); + +/** +* @brief 注册GPIO中断回调函数 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param cb_func:回调函数地址 +* @param data:回调函数参数地址 +* @retval 无 +*/ +void hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func); + +/** +* @brief 开关GPIO中断 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param state:开关控制 +* @retval 无 +*/ +void hal_gpio_ctrl_eint(io_pad_e pad, bool state); + +/** +* @brief 获取GPIO中断类型 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @retval 无 +*/ +gpio_int_e hal_gpio_get_int_type(io_pad_e pad); + +/** +* @brief 配置指定PAD为GPIO mode,方向为output,指定初始电平 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param lvl:初始电平,参考枚举类型gpio_level_e +* @retval 无 +*/ +void hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl); + +/** +* @brief 封装设置输出接口 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param lvl:初始电平,参考枚举类型gpio_level_e +* @retval 无 +*/ +void hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl); + +/** +* @brief 配置指定PAD为GPIO mode,方向为input +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @retval 无 +*/ +void hal_gpio_init_input(io_pad_e pad); + +/** +* @brief 读取输入电平 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @retval 无 +*/ +gpio_level_e hal_gpio_get_input_data(io_pad_e pad); + +/** +* @brief 设置io mode +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param mode:工作模式,参考各PAD对应的mode枚举类型 +* @retval 无 +*/ +void hal_gpio_set_mode(io_pad_e pad, uint8_t mode); + +/** +* @brief 设置io 为高阻态 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @retval 无 +*/ +void hal_gpio_set_high_impedance(io_pad_e pad); + +/** +* @brief 获取指定PAD的默认上拉、下拉状态 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param up_enable:默认上拉状态 +* @param down_enable:默认下拉状态 +* @retval 无 +*/ +void hal_gpio_get_pull_state(io_pad_e pad, bool *up_enable, bool *down_enable); + +/** +* @brief 配置指定PAD的默认上拉、下拉状态 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param up_enable:默认上拉状态 +* @param down_enable:默认下拉状态 +* @retval 无 +*/ +void hal_gpio_set_pull_state(io_pad_e pad, bool up_enable, bool down_enable); + +/** +* @brief 配置指定PAD是否为施密特触发 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param st_enable:1为施密特触发,0为正常触发 +* @retval 无 +*/ +void hal_gpio_set_schmitt_trigger(io_pad_e pad, bool st_enable); + +/** +* @brief 配置指定PAD的驱动能力 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param strength:驱动强度,取值为0~3 +* @retval 无 +*/ +void hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength); + +/** +* @brief 配置指定PAD的电压转换速率 +* @param pad:GPIO序号,参考枚举类型gpio_pad_e +* @param rate:驱动强度,取值为0~3 +* @retval 无 +*/ +void hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate); + +/** +* @brief 配置AP_RSTN引脚中断 +* @param enable: 中断开关 +* @param cb_func:回调函数 +* @param trig:触发模式 +* @retval 无 +*/ +void hal_gpio_set_ap_reset_int(bool enable, fcb_type cb_func, sys_cfg_trigger_e trig); + +/** +* @brief 批量设置IO参数 +* @param attrs: PAD属性 +* @param size: 数组成员个数 +* @retval 无 +*/ +void hal_gpio_config_pad(io_pad_attr_t *attrs, uint8_t size); + +#endif /* __HAL_GPIO_H__ */ diff --git a/src/sdk/include/hal_i2c_master.h b/src/sdk/include/hal_i2c_master.h new file mode 100644 index 0000000..5e352da --- /dev/null +++ b/src/sdk/include/hal_i2c_master.h @@ -0,0 +1,134 @@ +/******************************************************************************* +* Copyright (C) 2021-2025, All Rights Reserved. +* +* File: hal_i2c_master.h +* Description hal i2c master模块接口头文件 +* Version V0.1 +* Date 2023-07-27 +* Author swx +*******************************************************************************/ +#ifndef __HAL_I2C_MASTER_H__ +#define __HAL_I2C_MASTER_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" +#include "string.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief hal_i2cm_init +* @param index: I2Cx index +* @param slave_addr: 从机地址 +* @param addr_bits: 从机地址位数 +* @param i2c_m_speed_hz: 主机速率设置 +* @retval none +*/ +void hal_i2cm_init(i2c_index_e index, uint16_t slave_addr, uint8_t addr_bits, uint32_t i2cm_speed_hz); + +/** +* @brief hal_i2cm_deinit +* @param index: I2Cx index +* @retval none +*/ +void hal_i2cm_deinit(i2c_index_e index); + +/** +* @brief hal_i2cm_set_slave_addr +* @param index: I2Cx index +* @param slave_addr: 从机地址 +* @param addr_bits: 从机地址位数 +* @retval none +*/ +void hal_i2cm_set_slave_addr(i2c_index_e index, uint16_t slave_addr, uint8_t addr_bits); + +/** +* @brief i2c master 发送数据 +* @param index: I2Cx index +* @param tx_buffer: 发送数据buffer +* @param tx_size: 发送数据个数 +* @retval true/false: 成功/失败 +*/ +bool hal_i2cm_write(i2c_index_e index, const uint8_t *tx_buffer, uint32_t tx_size); + +/** +* @brief i2c master 接收数据 +* @param index: I2Cx index +* @param reg_address:寄存器地址 +* @param reg_size: 寄存器地址size +* @param rx_buffer: 接收数据buffer +* @param rx_size: 接收数据个数 +* @retval true/false: 成功/失败 +*/ +bool hal_i2cm_read(i2c_index_e index, uint32_t reg_address, size_t reg_size, uint8_t *rx_buffer, size_t rx_size); + +/** +* @brief i2c master 多地址参数接收数据 +* @param index: I2Cx index +* @param reg_address:寄存器地址 +* @param reg_size: 寄存器地址size +* @param rx_buffer: 接收数据buffer +* @param rx_size: 接收数据个数 +* @retval true/false: 成功/失败 +*/ +bool hal_i2cm_multi_params_read(i2c_index_e index, uint8_t *reg_address, size_t reg_size, uint8_t *rx_buffer, size_t rx_size); + +/** +* @brief i2c master dma 发送数据 +* @param index: I2Cx index +* @param tx_buffer: 发送数据buffer +* @param tx_size: 发送数据个数 +* @retval true: 数据已排入 DMA 通道,但不一定全部发送 +* false:发送出错,需要重新调用函数发送 +*/ +bool hal_i2cm_dma_write(i2c_index_e index, const uint8_t *tx_buffer, uint32_t tx_size); + +/** +* @brief i2c master dma 接收数据 +* @param index: I2Cx index +* @param reg_address:寄存器地址 +* @param reg_size: 寄存器地址size +* @param rx_buffer: 接收数据buffer +* @param rx_size: 接收数据个数 +* @retval true:寄存器地址发送成功,并已配置DMA接收通道,但不一定完成接收 +* false:接收出错,需要重新调用函数接收 +*/ +bool hal_i2cm_dma_read(i2c_index_e index, uint32_t reg_address, size_t reg_size, uint8_t *rx_buffer, size_t rx_size); + +/** +* @brief i2c master dma 多地址参数接收数据 +* @param index: I2Cx index +* @param reg_address:寄存器地址 +* @param reg_size: 寄存器地址size +* @param rx_buffer: 接收数据buffer +* @param rx_size: 接收数据个数 +* @retval true:寄存器地址发送成功,并已配置DMA接收通道,但不一定完成接收 +* false:接收出错,需要重新调用函数接收 +*/ +bool hal_i2cm_multi_params_dma_read(i2c_index_e index, uint8_t *reg_address, size_t reg_size, uint8_t *rx_buffer, size_t rx_size); + +/** +* @brief 获取 i2c master 发送状态 +* @param index: I2Cx index +* @retval true/false +*/ +bool hal_i2cm_get_transfer_complete(i2c_index_e index); + +#endif /* __HAL_I2C_MASTER_H__*/ + diff --git a/src/sdk/include/hal_i2c_slave.h b/src/sdk/include/hal_i2c_slave.h new file mode 100644 index 0000000..eaa69a9 --- /dev/null +++ b/src/sdk/include/hal_i2c_slave.h @@ -0,0 +1,156 @@ +/******************************************************************************* +* Copyright (C) 2021-2025, All Rights Reserved. +* +* File: hal_i2c_slave.h +* Description hal i2c slave模块接口头文件 +* Version V0.1 +* Date 2023-07-27 +* Author swx +*******************************************************************************/ +#ifndef __HAL_I2C_SLAVE_H__ +#define __HAL_I2C_SLAVE_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" +#include "string.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief i2cs event packet info +*/ +typedef struct hal_i2cs_packet_info_t +{ + uint8_t *rx_buffer; /* 接收buffer */ + uint32_t rx_buffer_size; /* 接收buffer size */ + const uint8_t *tx_buffer; /* 发送buffer */ + uint32_t tx_buffer_size; /* 发送buffer size */ + bool tx_circle; /* 发送circle mode */ + uint32_t packet_size; /* packet size : READ、RST、STOP中断事件时整个传输过程中I2CM发送packet的总量 */ +} hal_i2cs_packet_info_t; + +/** +* @brief i2cs event +*/ +typedef enum +{ + I2CS_EVENT_READ = 0, //发生 读请求 中断 + I2CS_EVENT_RST, //发生 restart 中断 + I2CS_EVENT_STOP //发生 stop 中断 +} hal_i2cs_event_e; + +typedef void (*hal_i2cs_cb)(i2c_index_e index, hal_i2cs_event_e event, size_t receive_num); + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief hal_i2cs_init +* @param index: I2Cx index +* @param slave_addr: 从机地址 +* @param addr_bits: 从机地址位数 +* @retval none +*/ +void hal_i2cs_init(i2c_index_e index, uint16_t slave_addr, uint8_t addr_bits); + +/** +* @brief hal_i2cs_deinit +* @param index: I2Cx index +* @retval none +*/ +void hal_i2cs_deinit(i2c_index_e index); + +/** +* @brief hal_i2cs_set_continue_transfer +* @param index: I2Cx index +* @param status: true/false +* @retval none +*/ +void hal_i2cs_set_continue_transfer(i2c_index_e index, bool status); + +/** +* @brief 获取i2c slave发送成功字节数 +* 注意这是通信过程i2c slave发送的数据量,如果更新了i2c slave的tx_buffer,则清零 +* @param index: I2Cx index +* @retval 发送总字节数 +*/ +uint32_t hal_i2cs_get_tx_cnt(i2c_index_e index); + +/** +* @brief 获取 i2c slave 接收数量 +* 注意这是通信过程i2c slave接收的数据量,如果更新了i2c slave的rx_buffer,则清零 +* @param index: I2Cx index +* @retval 数据接收数量 +*/ +uint32_t hal_i2cs_get_rx_cnt(i2c_index_e index); + +/** +* @brief 清零 i2c slave 接收数量 +* @param index: I2Cx index +* @retval none +*/ +void hal_i2cs_rx_cnt_clear(i2c_index_e index); + +/** +* @brief 获取 i2c slave 发送状态 +* @param index: I2Cx index +* @retval true:数据发送完成 +* false:数据还在发送 +*/ +bool hal_i2cs_get_write_complete(i2c_index_e index); + +/** +* @brief i2c slave 注册回调函数 +* @param index: I2Cx index +* @param cb:call back +* @retval +*/ +void hal_i2cs_register_callback(i2c_index_e index, hal_i2cs_cb cb); + +/** +* @brief i2c slave 配置接收buffer, 底层自动接收数据后调用callback +* @param index: I2Cx index +* @param rx_buffer:自动模式数据接收buffer +* @param rx_size: 自动模式数据接收buffer size +* @retval none +*/ +void hal_i2cs_update_rx_buffer(i2c_index_e index, uint8_t *rx_buffer, size_t rx_size); + +/** +* @brief i2c slave 配置自动发送buffer +* @param index: I2Cx index +* @param tx_buffer:自动模式数据发送buffer +* @param tx_size: 自动模式数据发收buffer size +* @param circle:circle mode,重复发送buffer的数据 +* @retval none +*/ +void hal_i2cs_update_tx_buffer(i2c_index_e index, const uint8_t *tx_buffer, uint32_t tx_size, bool circle); + +/** +* @brief i2c slave 启动 +* @param index: I2Cx index +* @retval none +*/ +void hal_i2cs_start(i2c_index_e index); + +/** +* @brief i2c slave 停止 +* @param index: I2Cx index +* @retval none +*/ +void hal_i2cs_stop(i2c_index_e index); + +#endif /* __HAL_I2C_SLAVE_H__*/ + diff --git a/src/sdk/include/hal_pwm.h b/src/sdk/include/hal_pwm.h new file mode 100644 index 0000000..cc8f876 --- /dev/null +++ b/src/sdk/include/hal_pwm.h @@ -0,0 +1,82 @@ +/******************************************************************************* +* +* +* File: hal_pwm.h +* Description: pwm HAL层头文件 +* Version: V0.1 +* Date: 2021-03-17 +* Author: jaya + *******************************************************************************/ +#ifndef __HAL_PWM_H__ +#define __HAL_PWM_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief pwm 初始化 +* @param frequency: PWM 频率 < 30000 (30K) +* @param duty_step: 占空比调试阶数,与硬件相关,不能超过硬件限制(建议配置255) + 最大阶数 = (1000000000/130)/frequency,常见如下 + frequency, max step(最大step可配置) + { 30000, 255 } + { 4000, 1923} + { 3000, 2564} +* @retval true/false +*/ +bool hal_pwm_init(uint32_t frequency, uint32_t duty_step); + +/** +* @brief pwm 启动停止控制 +* @param enable: 启动/停止 +* @retval none +*/ +void hal_pwm_enable(bool enable); + +/** +* @brief pwm 设置占空比 +* @param duty_ratio: 占空比,范围为0 - duty_step(hal_pwm_init配置的参数) +* @retval none +*/ +void hal_pwm_set_duty(uint32_t duty_ratio); + +/** +* @brief pwm 配置从elvcc直接输出背光电源 +* @param enable: ELVCC输出启停 +* @retval none +*/ +bool hal_pwm_set_elvcc_output(bool enable); + +/** +* @brief 配置elvcc PWM 驱动背光能力,范围 0 - 15, capactiy为15时驱动能力最强,ELVCC输出电流最大 +* @param capacity: 0 - 15,hal_pwm_set_elvcc_output配置时会恢复默认值15 +* @retval none +*/ +void hal_pwm_set_elvcc_capacity(uint8_t capacity); + +/** +* @brief pwm 去初始化 +* @param none +* @retval true/false +*/ +bool hal_pwm_deinit(void); + +#endif /* __HAL_PWM_H__ */ diff --git a/src/sdk/include/hal_pwr.h b/src/sdk/include/hal_pwr.h new file mode 100644 index 0000000..3572bc8 --- /dev/null +++ b/src/sdk/include/hal_pwr.h @@ -0,0 +1,325 @@ +/******************************************************************************* +* +* +* File: hal_pwr.h +* Description: pwr hal层头文件 +* Version: V0.1 +* Date: 2023-07-21 +* Author: lyw + *******************************************************************************/ +#ifndef __HAL_PWR_H__ +#define __HAL_PWR_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" +#include "hal_gpio.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief IC主供电电源选择 +*/ +typedef enum +{ + PWR_SEL_IOV18 = 0, /* IC选择IOV18主供电(默认值) */ + PWR_SEL_TP18 = 1, /* IC选择TP18主供电 */ + PWR_SEL_VCC = 2, /* IC选择VCC主供电 */ + PWR_SEL_VDD13CP = 3, /* IC选择VDD13CP外接电源主供电*/ +} pwr_main_power_sel_e; + +/** +* @brief Sleep mode 供电模式 +*/ +typedef enum +{ + PWR_SLEEP_IN_NON = 0, /* Sleep Mode期间无外部供电(默认值) */ + PWR_SLEEP_IN_TP18 = 1, /* Sleep Mode期间TP18有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_VCC = 2, /* Sleep Mode期间VCC有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_VCC_TP18 = 3, /* Sleep Mode期间TP18与VCC有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_IOV18 = 4, /* Sleep Mode期间IOV18有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_IOV18_TP18 = 5, /* Sleep Mode期间IOV18与TP18有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_IOV18_VCC = 6, /* Sleep Mode期间IOV18与VCC有电,其他电源掉电或不存在 */ + PWR_SLEEP_IN_IOV18_VCC_TP18 = 7, /* Sleep Mode期间IOV18、TP18、VCC均有电,其他电源掉电或不存在 */ +} pwr_sleep_power_sel_e; + +/** +* @brief sleep mode 唤醒沿配置 +*/ +typedef enum +{ + WUP_RISING_EDGE = 2, /* 上升沿唤醒 */ + WUP_FALLING_EDGE = 3 /* 下降沿唤醒 */ +} pwr_wakeup_trigger_e; + +/** +* @brief 软件启动原因 +*/ +typedef enum +{ + RF_POWER_ON = 0, /* Power On,正常上电 */ + RF_CORE_RST = 1, /* 软件reset, 调用NVIC_SystemReset产生reset */ + RF_WDT_RST = 2, /* WDT reset */ + RF_CHIP_RST = 3, /* Chip reset,调用hal_system_reset_chip产生的reset */ + RF_APRSTN_WAKEUP = 4, /* deep sleep mode 下AP_RSTN reset */ + RF_TDINT_WAKEUP = 5 /* deep sleep mode 下TD_INT reset */ +} pwr_reset_flag_e; + +/** +* @brief pwr sleep mode type +* 不同sleep mode具体应用场景见《PWR说明文档》 +*/ +typedef enum +{ + PWR_NORMAL_SLEEP_MODE = 0, /* 待机下需要处理外设(I2C)等事件使用,调用hal_pwr_enter_normal_sleep_mode 进入,hal_pwr_exit_sleep_mode退出 */ + PWR_STOP_SLEEP_MODE = 1, /* 待机下需要通过任意GPIO唤醒时使用此模式,进入之前关闭所有模块以及MCU,通过hal_pwr_set_stop_sleep_wakeup_pin 注册GPIO中唤醒源,调用hal_pwr_enter_stop_sleep_mode 进入,hal_pwr_exit_sleep_mode退出 */ + PWR_DEEP_SLEEP_MODE = 2 /* 待机下只需要通过AP RSTN跟TD INT引脚唤醒使用时使用此模式,调用hal_pwr_enter_deep_sleep_mode 唤醒后重启,通过hal_pwr_get_reset_flag确定唤醒源 */ +} pwr_sleep_mode_e; + +/*! @brief HV LDO输出电压配置*/ +typedef enum _pwr_hv_ldo_e +{ + HV_LDO_0 = 0, /*1.20V*/ + HV_LDO_1 = 1, /*1.26V*/ + HV_LDO_2 = 2, /*1.32V*/ + HV_LDO_3 = 3, /*1.38V*/ + HV_LDO_4 = 4, /*1.44V*/ + HV_LDO_5 = 5, /*1.50V*/ + HV_LDO_6 = 6, /*1.56V*/ + HV_LDO_7 = 7, /*1.62V*/ + HV_LDO_8 = 8, /*1.68V*/ + HV_LDO_9 = 9, /*1.74V*/ + HV_LDO_10 = 10, /*1.80V*/ + HV_LDO_11 = 11, /*1.86V*/ + HV_LDO_12 = 12, /*2.04V*/ + HV_LDO_13 = 13, /*2.46V*/ + HV_LDO_14 = 14, /*3.00V*/ + HV_LDO_15 = 15, /*3.30V*/ +} pwr_hv_ldo_e; + +/*! @brief LDO 13S输出电压配置*/ +typedef enum _pwr_ldo_13s_e +{ + LDO_13S_0 = 0, /*1.22V*/ + LDO_13S_1 = 1, /*1.25V*/ + LDO_13S_2 = 2, /*1.27V*/ + LDO_13S_3 = 3, /*1.30V*/ + LDO_13S_4 = 4, /*1.33V*/ + LDO_13S_5 = 5, /*1.37V*/ + LDO_13S_6 = 6, /*1.40V*/ + LDO_13S_7 = 7, /*1.43V*/ +} pwr_ldo_13s_e; + +/*! @brief LDO 18S输出电压配置*/ +typedef enum _pwr_ldo_18s_e +{ + LDO_18S_0 = 0, /*1.61V*/ + LDO_18S_1 = 1, /*1.64V*/ + LDO_18S_2 = 2, /*1.67V*/ + LDO_18S_3 = 3, /*1.70V*/ + LDO_18S_4 = 4, /*1.74V*/ + LDO_18S_5 = 5, /*1.77V*/ + LDO_18S_6 = 6, /*1.80V*/ + LDO_18S_7 = 7, /*1.83V*/ +} pwr_ldo_18s_e; + +/*! @brief PWR PVD index */ +typedef enum +{ + PVD_IOVCC = 3, + PVD_VCI = 15, +} pwr_pvd_index_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief IC主供电选择,如果是配置vcc主供电,可通过hal_pwr_get_vcc_power_ready获取电源状态 +* 注:上电只能配置一次,不可随意切换 +* @param power_sel 主供电选择,见枚举描述 +* @retval none +*/ +void hal_pwr_set_main_power(pwr_main_power_sel_e power_sel); + +/** +* @brief 获取VCC电源稳定状态,使用hal_pwr_set_main_power切换电源后,通过此接口获取电源稳定状态 +* eg: 使用hal_pwr_set_main_power切换至VCC主供电,在VCC电源接口上电之前,此接口返回值为false +* @param None +* @retval true-电源切换完成 false-电源未切换完成 +*/ +bool hal_pwr_get_vcc_power_ready(void); + +/** +* @brief 配置VCC开关,芯片启动默认打开VCC CP,不存在VCC的情况下可关闭 +* @param enable: true:打开CP, false:关闭CP +* @retval none +*/ +void hal_pwr_set_vcc_enable(bool enable); + +/** +* @brief sleep mode 期间电源情况配置 +* 调用sleep mode之前配置,根据配置情况在sleep mode自动切换电源 +* exit sleep mode后切换回hal_pwr_set_main_power的电源 +* @param powerin =000 息屏期间状态,IOV18掉电0,VCC掉电0,TP18也掉电0; +* @retval none +*/ +void hal_pwr_set_sleep_mode_power(pwr_sleep_power_sel_e power_sel); + +/** +* @brief 进入normal sleep mode 模式(详细使用方法见《PWR说明文档》) +* 待机下需要处理外设(I2C)等事件使用,图像通路关闭,MCU&外设正常运行 +* 调用hal_pwr_exit_sleep_mode退出 +* @param none +* @retval bool true/false +*/ +bool hal_pwr_enter_normal_sleep_mode(void); + +/** +* @brief 进入stop sleep mode 模式(详细使用方法见《PWR说明文档》) +* 待机下需要通过任意GPIO唤醒时使用此模式,进入之前关闭所有模块,通过hal_pwr_set_stop_sleep_wakeup_pin 注册GPIO中唤醒源。 +* 调用此接口后MCU会停止运行,等待中断唤醒后该函数才返回,调用hal_pwr_exit_sleep_mode真正退出stop sleep mode +* @param none +* @retval io_pad_e:唤醒接口 +*/ +io_pad_e hal_pwr_enter_stop_sleep_mode(void); + +/** +* @brief 注册 stop sleep mode 唤醒IO (详细使用方法见文档) +* @param pad :Pin name +* @param trig:唤醒触发模式 +* @retval true/false +*/ +bool hal_pwr_set_stop_sleep_wakeup_pin(io_pad_e pad, pwr_wakeup_trigger_e trig); + +/** +* @brief 进入deep sleep mode 模式, 等待AP_RSTN 或者TD_INT 唤醒 +* 待机下只需要通过AP RSTN跟TD INT引脚唤醒使用时使用此模式,唤醒后重启,通过hal_pwr_get_reset_flag确定唤醒源 +* 注意, 如果需要使用deep sleep mode,TD INT引脚不能悬空,必须有上拉或者下拉保证确定电平,否则会导致误唤醒 +* @param polarity true:上升沿唤醒 false:下降沿唤醒 +* @retval none +*/ +void hal_pwr_enter_deep_sleep_mode(pwr_wakeup_trigger_e ap_rstn_trig, pwr_wakeup_trigger_e td_int_trig); + +/** +* @brief 退出sleep mode, normal/stop sleep mode都需要通过此接口退出 +* @param none +* @retval true/false +*/ +bool hal_pwr_exit_sleep_mode(void); + +/** +* @brief 获取系统复位原因 +* @param none +* @retval reset flag,见pwr_reset_flag_e +*/ +pwr_reset_flag_e hal_pwr_get_reset_flag(void); + +/** +* @brief 打开ELVCC作为供电电源 +* @param none +* @retval +*/ +void hal_pwr_elvcc_ldo_en(bool enable); + + +/** +* @brief +* @param HV LDO输出电压配置 + =0000:1.20V, + =0001:1.26V, + =0010:1.32V, + =0011:1.38V, + =0100:1.44V, + =0101:1.50V, + =0110:1.56V, + =0111:1.62V, + =1000:1.68V, + =1001:1.74V, + =1010:1.80V, + =1011:1.86V, + =1100:2.04V, + =1101:2.46V, + =1110:3.00V, + =1111:3.30V +* @retval none +*/ +void hal_pwr_elvcc_vol_set(pwr_hv_ldo_e voltage); + +/** +* @brief +* @param LDO18_S模块使能控制,=0关闭,默认关闭;=1开启 +* @retval none +*/ +void hal_pwr_ldo18s_en(bool enable); + + +/** +* @brief +* @param LDO18_S输出电压配置, + 000=1.61V + 001=1.64V + 010=1.67V + 011=1.70V + 100=1.74V + 101=1.77V + 110=1.80V + 111=1.83V +* @retval none +*/ +void hal_pwr_ldo18s_set(pwr_ldo_18s_e voltage); + +/** +* @brief +* @param LDO13_S模块使能控制,=0关闭,默认关闭;=1开启 +* @retval none +*/ +void hal_pwr_ldo13s_en(bool enable); + + +/** +* @brief +* @param LDO13_S输出电压配置, + 000=1.22V, + 001=1.25V, + 010=1.27V, + 011=1.30V, + 100=1.33V, + 101=1.37V, + 110=1.40V, + 111=1.43V +* @retval none +*/ +void hal_pwr_ldo13s_set(pwr_ldo_13s_e voltage); + +/** +* @brief PVD(电源检查)开关接口, +* PVD默认均为打开,注意!电源切换(如主供电切换,进出sleep mode)必须打开PVD! +* @param index: PVD选择 IOVCC/VCI +* @param enable: PVD开关 +* @retval none +*/ +void hal_pwr_set_pvd(pwr_pvd_index_e index, bool enable); + +/** +* @brief 使能TP18给VDD18供电 +* @warning info!!! 1:进入休眠的电源要选择TP18供电 eg: hal_pwr_set_sleep_mode_power(PWR_SLEEP_IN_TP18); +* @warning info!!! 2:唤醒之后,关闭改使能 eg: hal_pwr_sw_tp18_en(DISENABLE); +* @param enable: +* @retval none +*/ +void hal_pwr_sw_tp18_en(bool enable); + + + +#endif /* __HAL_PWR_H__ */ diff --git a/src/sdk/include/hal_spi_master.h b/src/sdk/include/hal_spi_master.h new file mode 100644 index 0000000..931ef5a --- /dev/null +++ b/src/sdk/include/hal_spi_master.h @@ -0,0 +1,93 @@ +/******************************************************************************* +* Copyright (C) 2021-2025, All Rights Reserved. +* +* File: hal_spi_master.h +* Description hal spi masrer模块头文件 +* Version V0.1 +* Date 2023-07-27 +* Author swx +*******************************************************************************/ +#ifndef __HAL_SPI_MASTER_H__ +#define __HAL_SPI_MASTER_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" +#include "string.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/** +* @brief 初始化spi master 模块 +* @param speed: 传输速度 +* @param cpha: 相位配置 +* @param cpol: 极性配置 +* @retval none +*/ +void hal_spim_init(uint32_t speed, uint8_t cpha, uint8_t cpol); + +/** +* @brief spi master 去初始化 +* @param none +* @retval none +*/ +void hal_spim_deinit(void); + +/** +* @brief spi master自定义CS脚 +* @param none +* @retval none +*/ +void hal_spim_set_csio_byself(bool enable); + +/** +* @brief 获取dma tx 传输状态 +* @param none +* @retval true:传输完成, false:传输数据中,不可操作spim接口 +*/ +bool hal_spim_get_transfer_complete(void); + +/** +* @brief spim flush fifo +* @param none +* @retval none +*/ +void hal_spim_flush(void); + +/** +* @brief spim 发送数据,函数返回即传输完成,阻塞函数 +* @param tx_buffer:tx buffer地址 +* @param tx_size: tx size +* @retval none +*/ +void hal_spim_write(const uint8_t *data_buffer, uint32_t data_size); + +/** +* @brief spi master读写数据,函数返回即传输完成,阻塞函数 +* @param cmd : 传输过程汇总需要发送command的地址 +* @param cmd_size: 传输过程汇总需要发送command的数据长度 +* @param rx_buffer:rx buffer地址 +* @param rx_size: rx buffer size +* @retval none +*/ +void hal_spim_read(const uint8_t *cmd, uint32_t cmd_size, uint8_t *data_buffer, uint32_t data_size); + + +#endif + diff --git a/src/sdk/include/hal_spi_slave.h b/src/sdk/include/hal_spi_slave.h new file mode 100644 index 0000000..97b90ba --- /dev/null +++ b/src/sdk/include/hal_spi_slave.h @@ -0,0 +1,217 @@ +/******************************************************************************* +* Copyright (C) 2021-2025, All Rights Reserved. +* +* File: hal_spi_slave.h +* Description hal spi slave 模块头文件 +* Version V0.1 +* Date 2023-07-27 +* Author swx +*******************************************************************************/ +#ifndef __HAL_SPI_SLAVE_H__ +#define __HAL_SPI_SLAVE_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_dsi_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief spi slave event type +*/ +typedef enum +{ + SPIS_EVENT_RCV_FULL = 0x2, /* 数据接收完全 */ + SPIS_EVENT_RCV_CNT = 0x4, /* 数据接收指定阈值 */ + SPIS_EVENT_RCV_CS_RISE = 0x40, /* CS上升沿 */ + SPIS_EVENT_RCV_CS_FALL = 0x80, /* CS下降沿 */ + SPIS_EVENT_ALL_MISS = 0X100, /* ALL MISS中断*/ +} hal_spis_event_e; + +/** +* @brief spi 硬件快速回复配置结构体 +*/ +typedef struct hal_spis_hw_ack_info_t +{ + uint8_t index; + uint8_t cmp_data[4]; /* 匹配最长4byte */ + uint8_t cmp_len; /* 0 - 3 */ + bool cmp_en; /* 匹配enable */ + uint8_t delay_clk; /* 匹配成功后延迟数据恢复的clk数量,最小设置0,延迟1 clk */ + uint8_t *ack_address; /* 匹配成功回复数据地址 */ + uint32_t ack_length; /* 匹配成功回复数据长度 */ +} hal_spis_hw_ack_info_t; + +/** +* @brief spi 事件 packet info +*/ +typedef struct hal_spis_packet_info_t +{ + uint8_t *rx_buffer; /* 接收buffer */ + uint32_t rx_buffer_size; /* 接收buffer size */ + const uint8_t *tx_buffer; /* 发送buffer */ + uint32_t tx_buffer_size; /* 发送buffer size */ + bool tx_circle; /* 发送circle mode */ + uint32_t packet_size; /* packet size : RCV FULL事件 = rx buffer size, CS_RISE事件时为整个传输过程中SPIM发送packet的总量 */ +} hal_spis_packet_info_t; + +typedef void (*hal_spis_cb)(hal_spis_event_e event, hal_spis_packet_info_t *packet_info); + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/* +SPIS启动流程: +1:hal_spis_init +2:hal_spis_update_rx_buffer & hal_spis_update_tx_buffer +3:hal_spis_register_callback +4:hal_spis_start +等待回调函数并从packet_info获取数据 + +Event: +SPI_EVENT_RCV_FULL,表示RX buffer接收满 , packet_info.packet_size = rx_buffer_size +SPI_EVENT_RCV_CS_HIGH,表示CS 拉高,一帧传输数据结束,此时packet_info.packet_size 为当前packet传输的所有byte数量 + +有可能存在只有SPI_EVENT_RCV_CS_HIGH而没有SPI_EVENT_RCV_FULL的情况,此时表示SPIM发送的数据不足于填满RX buffer +eg: rx_buffer_size = 10, SPIM实际只发送了2byte数据 + +接收到SPI_EVENT_RCV_CS_HIGH后可通过hal_spis_update_tx_buffer更新下一帧需要发送的数据 +也可以通过hal_spis_update_rx_buffer更新接收数据的buffer + +*/ + +/** +* @brief 初始化spi slave 模块 +* @param cpha: 相位配置 +* @param cpol: 极性配置 +* @param +* @retval none +*/ +void hal_spis_init(uint8_t cpha, uint8_t cpol); + +/** +* @brief spi slave 模块去初始化 +* @param none +* @retval none +*/ +void hal_spis_deinit(void); + +/** +* @brief spi slave 注册回调函数 +* @param cb:call back +* @param event_mask:接收事件掩码(eg:SPIS_EVENT_RCV_FULL|SPIS_EVENT_RCV_CS_RISE) +* @param data_intcnt:SPIS_EVENT_RCV_CNT事件触发参数,当rx buffer接收到data_intcnt数据时.产生RCV_CNT事件 +* @retval +*/ +void hal_spis_register_callback(hal_spis_cb cb, uint32_t event_mask, uint16_t data_intcnt); + +/** +* @brief spi slave 设置RX DMA传输数据中断阈值 +* @param data_intcnt:SPIS_EVENT_RCV_CNT事件触发参数,当rx buffer接收到data_intcnt数据时.产生RCV_CNT事件 +* @retval none +*/ +void hal_spis_set_rx_dma_intcnt(uint16_t data_intcnt); + +/** +* @brief spi slave 配置接收buffer, 底层自动接收数据后调用callback +* @param buffer:自动模式数据接收buffer +* @param size: 自动模式数据接收buffer size +* @retval +*/ +void hal_spis_update_rx_buffer(uint8_t *buffer, uint32_t size); + +/** +* @brief spi slave 配置自动发送buffer +* @param buffer:自动模式数据发送buffer +* @param size: 自动模式数据发收buffer size +* @param circle:circle mode,重复发送buffer的数据 +* @retval +*/ +void hal_spis_update_tx_buffer(const uint8_t *buffer, uint32_t size, bool circle); + +/** +* @brief spi slave 启动 +* @param none +* @retval +*/ +void hal_spis_start(void); + +/** +* @brief spi slave 停止 +* @param none +* @retval true/false +*/ +void hal_spis_stop(void); + +/** +* @brief spi slave flush fifo +* @param none +* @retval true/false +*/ +void hal_spis_flush(void); + +/** +* @brief 获取SPIS busy状态 +* @param none +* @retval true: CS拉低状态, false:CS拉高状态 +*/ +bool hal_spis_busy(void); + +/** +* @brief 读取rx fifo缓冲数据 +* @param buffer:读取数据的缓冲区 +* @param count:需要读取的字节数 +* @retval uint8_t:实际读取的字节数 +*/ +uint8_t hal_spis_read_data(uint8_t *buffer, uint8_t count); + +/** +* @brief spi slave cpu写一个数据 +* @param data:写的数据 +* @retval true/false +*/ +bool hal_spis_write_data(uint8_t data); + +/** +* @brief 获取rx fifo状态 +* @param none +* @retval true/false +*/ +bool hal_spis_get_rxfifo(void); + +/** +* @brief 设置SPIS硬件快速回复功能使能状态 +* @param en:硬件快速回复功能使能 +* @param header_default:硬件快速回复功能的默认回复值 +* @retval none +*/ +void hal_spis_set_hw_ack_enable(bool en, uint8_t header_default); + +/** +* @brief 获取SPIS硬件快速回复功能使能状态 +* @param void +* @retval bool +*/ +bool hal_spis_get_hw_ack_enable(void); + +/** +* @brief 设置SPIS硬件快速回复header参数 +* @param info:spi硬件快速回复配置结构体数组 +* @param size:设置size组参数 +* @retval none +*/ +void hal_spis_set_hw_ack_info(hal_spis_hw_ack_info_t *info, uint8_t size); + +#endif /* __HAL_SPI_SLAVE_H__*/ + diff --git a/src/sdk/include/hal_swire.h b/src/sdk/include/hal_swire.h new file mode 100644 index 0000000..2d5ff35 --- /dev/null +++ b/src/sdk/include/hal_swire.h @@ -0,0 +1,90 @@ +/******************************************************************************* +* +* +* File: hal_swire.h +* Description: swire HAL层头文件 +* Version: V0.1 +* Date: 2021-03-17 +* Author: jaya + *******************************************************************************/ +#ifndef __HAL_SWIRE_H__ +#define __HAL_SWIRE_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief SWIRE初始化 +* @param 无 +* @retval 无 +*/ +void hal_swire_init(void); + +/** +* @brief SWIRE去初始化 +* @param 无 +* @retval 无 +*/ +void hal_swire_deinit(void); + +/** +* @brief 配置SWIRE波形 +* @param start_time:起始时长,单位us +* @param stop_time:结束时长,单位us,必须大于300us +* @param high_time:高电平时长,单位us +* @param low_time:低电平时长,单位us +* @retval 无 +*/ +void hal_swire_set_waveform(uint32_t start_time, uint32_t stop_time, + uint32_t high_time, uint32_t low_time); + + +/** +* @brief 配置SWIRE脉冲个数 +* @param pulse:脉冲数 +* @retval 无 +*/ +void hal_swire_set_pulse(uint32_t pulse); + +/** +* @brief 开关swire输出,不绑定timer的情况下,每次调用hal_swire_set_pulse产生一个swire波形 +* @param state:开关控制 +* @retval 无 +*/ +void hal_swire_enable(bool state); + +/** +* @brief 配置swire选择的timer +* @param timer_num_e index:定时器编号 +* @param uint32_t ms:超时时间 +* @param repeat :是否重复 +* @retval 无 +*/ +void hal_swire_set_timer(timer_num_e index, uint32_t ms, bool repeat); + +/** +* @brief 注册回调函数,每次swire 发送完成后会产生回调 +* @param cb_func:回调函数地址 +* @retval 无 +*/ +void hal_swire_register_callback(fcb_type cb_func); + +#endif /* __HAL_SWIRE_H__ */ diff --git a/src/sdk/include/hal_system.h b/src/sdk/include/hal_system.h new file mode 100644 index 0000000..26df5c5 --- /dev/null +++ b/src/sdk/include/hal_system.h @@ -0,0 +1,114 @@ +/******************************************************************************* +* +* +* File: hal_system.h +* Description hal 通用系统接口头文件 +* Version V0.1 +* Date 2021-05-21 +* Author lzy + *******************************************************************************/ +#ifndef __HAL_SYSTEM_H__ +#define __HAL_SYSTEM_H__ +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_common.h" +#include "hal_gpio.h" +#include "tau_log.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief 系统时钟配置 +*/ +typedef enum +{ + HAL_SYSCLK_80M = 80000000, + HAL_SYSCLK_100M = 100000000, + HAL_SYSCLK_150M = 150000000 +} hal_system_clk_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ + +/** +* @brief system 初始化 +* @param sysclk:系统时钟 +* @retval none +*/ +void hal_system_init(hal_system_clk_e sysclk); + +/** +* @brief mcu进入idle模式,等待中断唤醒 +* @param disable_systick: 进入idle时是否关闭systick(退出idle 恢复systick) +* @retval none +*/ +void hal_system_idle_mode(bool disable_systick); + +/** +* @brief 注册systick回调函数 +* @param cb_func:回调函数地址 +* @retval 无 +*/ +void hal_system_register_systick_cb(fcb_type cb_func); + +/** +* @brief 启动sys tickt +* @param ms: sys tickt 间隔, 范围1-10ms +* @retval true/false +*/ +bool hal_system_enable_systick(uint8_t ms); + +/** +* @brief 获取systickt +* @param none +* @retval 当前systickt值 +*/ +bool hal_system_disable_systick(void); + +/** +* @brief 获取systickt +* @param none +* @retval 当前systickt值 +*/ +uint32_t hal_system_get_tick(void); + +/** +* @brief reset chip +* @param none +* @retval none +*/ +void hal_system_reset_chip(void); + +/** +* @brief 获取上位机设置的debug state(debug only) +* @param none +* @retval debug state +*/ +uint32_t hal_system_get_debug_state(void); + +/** +* @brief clear debug state(debug only) +* @param none +* @retval none +*/ +void hal_system_clear_debug_state(void); + +/** +* @brief 更新MCU时钟 +* @param sysclk:系统时钟 +* @retval true/false +*/ +bool hal_system_updata_sysclk(hal_system_clk_e sysclk); + +#endif //__HAL_SYSTEM_H__ diff --git a/src/sdk/include/hal_timer.h b/src/sdk/include/hal_timer.h new file mode 100644 index 0000000..f73566b --- /dev/null +++ b/src/sdk/include/hal_timer.h @@ -0,0 +1,92 @@ +/******************************************************************************* +* +* +* File: hal_timer.h +* Description: timer HAL层头文件 +* Version: V0.1 +* Date: 2021-03-16 +* Author: jaya + *******************************************************************************/ +#ifndef __HAL_TIMER_H__ +#define __HAL_TIMER_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 指定定时器初始化 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @retval None +*/ +void hal_timer_init(timer_num_e index); + +/** +* @brief 指定定时器反初始化 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @retval None +*/ +void hal_timer_deinit(timer_num_e index); + +/** +* @brief 启动指定定时器 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @param ms:超时时间,单位ms。由于应用场景一般是ms级别的,应用开发不需要计数具体时针数, + 故直接输入时间,在接口内部换算成时钟数进行寄存器设置。 +* @param cb_func:回调函数地址,不需要则填NULL +* @param data:回调函数的参数地址,不需要则填NULL +* @retval None +*/ +void hal_timer_start(timer_num_e index, uint32_t ms, fcb_type cb_func, void *data); + +/** +* @brief 启动指定定时器 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @param us:超时时间,单位us。由于应用场景一般是us级别的,应用开发不需要计数具体时针数, + 故直接输入时间,在接口内部换算成时钟数进行寄存器设置。 +* @param cb_func:回调函数地址,不需要则填NULL +* @param data:回调函数的参数地址,不需要则填NULL +* @retval None +*/ +void hal_timer_start_ex(timer_num_e index, uint32_t us, fcb_type cb_func, void *data); + +/** +* @brief 停止指定定时器 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @retval None +*/ +void hal_timer_stop(timer_num_e index); + +/** +* @brief 设置定时器是否循环超时 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @param bool enable:循环超时使能 +* @retval None +*/ +void hal_timer_set_repeat(timer_num_e index, bool repeat); + +/** +* @brief 获取指定指示器状态 +* @param index:实例序号(0~3),参考枚举类型timer_num_e +* @retval 参考timer_status_e +*/ +timer_status_e hal_timer_get_status(timer_num_e index); + +#endif /* __HAL_TIMER_H__ */ diff --git a/src/sdk/include/hal_uart.h b/src/sdk/include/hal_uart.h new file mode 100644 index 0000000..4760521 --- /dev/null +++ b/src/sdk/include/hal_uart.h @@ -0,0 +1,164 @@ +/******************************************************************************* +* +* +* File: hal_uart.h +* Description +* Version V0.1 +* Date 2021-11-24 +* Author kc +*******************************************************************************/ + +#ifndef __HAL_UART_H__ +#define __HAL_UART_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/** +* @brief UART停止位 +*/ +typedef enum +{ + HAL_UART_STOPBIT_1 = 0, + HAL_UART_STOPBIT_1P5 = 1, + HAL_UART_STOPBIT_2 = 1 +} hal_uart_stopbit_e; + +/** +* @brief UART极性 +*/ +typedef enum +{ + HAL_UART_PARITY_NO = 0, + HAL_UART_PARITY_ODD = 0x01, + HAL_UART_PARITY_EVEN = 0x03, +} hal_uart_parity_e; + +/** +* @brief UART数据宽度 +*/ +typedef enum +{ + HAL_UART_DATAWIDTH_5 = 0, + HAL_UART_DATAWIDTH_6 = 1, + HAL_UART_DATAWIDTH_7 = 2, + HAL_UART_DATAWIDTH_8 = 3 +} hal_uart_datawidth_e; + +/** +* @brief UART编号 +*/ +typedef enum +{ + HAL_UART_0, + HAL_UART_1, + HAL_UART_MAX +} hal_uart_num_e; + +typedef struct +{ + uint32_t baudrate; + hal_uart_stopbit_e stopbits; + hal_uart_datawidth_e data_width; + hal_uart_parity_e parity; + uart_trans_cb callback; + void *user_data; +} hal_uart_config_t; + +/** +* @brief UART DMA 通道TX/RX方向选择 +*/ +typedef enum +{ + HAL_UART0_DMA_PATH_TX, + HAL_UART0_DMA_PATH_RX, + HAL_UART1_DMA_PATH_TX, + HAL_UART1_DMA_PATH_RX, + HAL_UART_DMA_PATH_MAX +} hal_uart_dma_path_e; +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 初始化设置uart 传输的波特率、位宽等参数 +* @param hal_uart_config_t +* @retval hal_uart_status +*/ +void hal_uart_init(hal_uart_num_e num, hal_uart_config_t *huart); + +/** +* @brief 关闭uart口 +* @retval 无 +*/ +void hal_uart_deinit(hal_uart_num_e num); + +/** +* @brief 阻塞式发送数据 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval hal_uart_status +*/ +bool hal_uart_send_blocking(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief 阻塞式接收数据 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval hal_uart_status +*/ +bool hal_uart_recv_blocking(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief 中断非阻塞式发送数据 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval 状态 +*/ +bool hal_uart_send_none_blocking(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief 中断非阻塞式接收数据 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval hal_uart_status +*/ +bool hal_uart_recv_none_blocking(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief 使用DMA通道发送数据 +* @param num: 串口编号 串口0或串口1 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval true or false +*/ +bool hal_uart_dma_send(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief 使用DMA接收数据 +* @param num: 串口编号 串口0或串口1 +* @param pdata:传输数据指针 +* @param size:传输数据大小 +* @retval true or false +*/ +bool hal_uart_dma_recv(hal_uart_num_e num, uint8_t *pdata, uint16_t size); + +/** +* @brief UART DMA通道不再使用后关闭释放UART DMA资源 +* @param path:TX通道或RX通道 +* @retval void +*/ +void hal_uart_dma_path_close(hal_uart_dma_path_e path); +#endif /* __HAL_UART_H__ */ diff --git a/src/sdk/include/hal_wdg.h b/src/sdk/include/hal_wdg.h new file mode 100644 index 0000000..8e40ee3 --- /dev/null +++ b/src/sdk/include/hal_wdg.h @@ -0,0 +1,94 @@ +/******************************************************************************* +* +* +* File: hal_wdg.h +* Description: wdg HAL层头文件 +* Version: V0.1 +* Date: 2021-03-16 +* Author: jaya + *******************************************************************************/ +#ifndef __HAL_WDG_H__ +#define __HAL_WDG_H__ + +/******************************************************************************* +* 1.Included files +*******************************************************************************/ +#include "tau_device_datatype.h" +#include "tau_common.h" + + +/******************************************************************************* +* 2.Global constant and macro definitions using #define +*******************************************************************************/ + +/******************************************************************************* +* 3.Global structures, unions and enumerations using typedef +*******************************************************************************/ +/*! + * @brief watch dog模式 + */ +typedef enum +{ + WDG_MODE_RESET = 0, //复位模式,跑飞复位 + WDG_MODE_INTERRUPT = 1 //中断模式,跑飞进入中断 +} wdg_mode_e; + +/******************************************************************************* +* 4.Global variable extern declarations +*******************************************************************************/ + +/******************************************************************************* +* 5.Global function prototypes +*******************************************************************************/ +/** +* @brief 看门狗初始化 +* @param 无 +* @retval 无 +*/ +void hal_wdg_init(void); + +/** +* @brief 看门狗反初始化 +* @param 无 +* @retval 无 +*/ +void hal_wdg_deinit(void); + +/** +* @brief 启动看门狗 +* @param wdg_mode_e modeSel: 复位或中断模式 +* @param uint32_t load: 超时时间,单位ms +* @retval 无 +*/ +void hal_wdg_start(wdg_mode_e modeSel, uint32_t load); + +/** +* @brief 停止看门狗 +* @param 无 +* @retval 无 +*/ +void hal_wdg_stop(void); + +/** +* @brief 设置WDG是否循环超时 +* @param enable:循环超时使能 +* @retval 无 +*/ +void hal_wdg_set_repeat(bool repeat); + +/** +* @brief 注册中断回调函数 +* @param cb_func:回调函数地址 +* @param data:回调参数地址 +* @retval 无 +*/ +void hal_wdg_register_callback(fcb_type cb_func, void *data); + +/** +* @brief 喂狗 +* @param 无 +* @retval 无 +*/ +void hal_wdg_kick_dog(void); + +#endif /* __HAL_WDG_H__ */ diff --git a/src/sdk/sdk_version.h b/src/sdk/sdk_version.h new file mode 100644 index 0000000..398c0e5 --- /dev/null +++ b/src/sdk/sdk_version.h @@ -0,0 +1 @@ +#define SDK_REVISION 6000 \ No newline at end of file