From 040008f37aea549a123ae0195a1ee14e6649eb88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E7=BE=8E=E6=99=AF?= Date: Tue, 9 Apr 2024 18:08:12 +0800 Subject: [PATCH] First version --- project/WL468/WL468.uvguix.Felix | 1914 +++ project/WL468/WL468.uvoptx | 505 + project/WL468/WL468.uvprojx | 546 + .../WL668_P8P_TM667_ICNA3508_20240401.map | 3994 ++++++ .../WL668_P8P_TM667_ICNA3508_20240407.map | 4044 ++++++ project/WL668/Listings/board._ip | 6 + project/WL668/Listings/board.i | 4677 +++++++ project/WL668/Listings/board.lst | 6596 +++++++++ project/WL668/Listings/board.txt | 57 + project/WL668/Listings/main._ip | 6 + project/WL668/Listings/main.i | 6424 +++++++++ project/WL668/Listings/main.lst | 8825 ++++++++++++ project/WL668/Listings/main.txt | 84 + project/WL668/Listings/p8p_demo._ip | 6 + project/WL668/Listings/p8p_demo.i | 8325 ++++++++++++ project/WL668/Listings/p8p_demo.lst | 11121 ++++++++++++++++ project/WL668/Listings/p8p_demo.txt | 4611 +++++++ project/WL668/Listings/startup_armcm0.lst | 1333 ++ .../WL668_P8P_TM667_ICNA3508_20240401.axf | Bin 0 -> 212232 bytes .../WL668_P8P_TM667_ICNA3508_20240401.bin | Bin 0 -> 46836 bytes ..._P8P_TM667_ICNA3508_20240401.build_log.htm | 77 + .../WL668_P8P_TM667_ICNA3508_20240401.hex | 2931 ++++ .../WL668_P8P_TM667_ICNA3508_20240401.htm | 3969 ++++++ .../WL668_P8P_TM667_ICNA3508_20240401.lnp | 10 + .../WL668_P8P_TM667_ICNA3508_20240401.sct | 16 + .../WL668_P8P_TM667_ICNA3508_20240407.axf | Bin 0 -> 214236 bytes .../WL668_P8P_TM667_ICNA3508_20240407.bin | Bin 0 -> 47408 bytes ..._P8P_TM667_ICNA3508_20240407.build_log.htm | 79 + .../WL668_P8P_TM667_ICNA3508_20240407.hex | 2966 +++++ .../WL668_P8P_TM667_ICNA3508_20240407.htm | 4007 ++++++ .../WL668_P8P_TM667_ICNA3508_20240407.lnp | 10 + .../WL668_P8P_TM667_ICNA3508_20240407.sct | 16 + project/WL668/Objects/WL668_WL668.dep | 70 + project/WL668/Objects/board.__i | 6 + project/WL668/Objects/board.crf | Bin 0 -> 50241 bytes project/WL668/Objects/board.d | 17 + project/WL668/Objects/board.o | Bin 0 -> 55068 bytes project/WL668/Objects/main.__i | 6 + project/WL668/Objects/main.crf | Bin 0 -> 59688 bytes project/WL668/Objects/main.d | 22 + project/WL668/Objects/main.o | Bin 0 -> 62844 bytes project/WL668/Objects/p8p_demo.__i | 6 + project/WL668/Objects/p8p_demo.crf | Bin 0 -> 91850 bytes project/WL668/Objects/p8p_demo.d | 28 + project/WL668/Objects/p8p_demo.o | Bin 0 -> 140216 bytes project/WL668/Objects/startup_armcm0._ia | 6 + project/WL668/Objects/startup_armcm0.d | 1 + project/WL668/Objects/startup_armcm0.o | Bin 0 -> 7496 bytes project/WL668/RTE/_WL668/RTE_Components.h | 21 + project/WL668/WL668.BAT | 15 + project/WL668/WL668.uvguix.Markin | 1914 +++ project/WL668/WL668.uvoptx | 272 + project/WL668/WL668.uvprojx | 461 + project/WL668T/WL668T.uvoptx | 472 + project/WL668T/WL668T.uvprojx | 546 + project/请先读我(已更新20230927).txt | 11 + src/app/P8P/p8p_demo.c | 2000 +++ src/app/P8P/p8p_demo.h | 21 + src/app/draw_mode/draw_mode_lib.c | 288 + src/app/draw_mode/draw_mode_lib.h | 56 + src/app/main.c | 26 + src/app/module_demo/README.txt | 1 + src/app/module_demo/demo_hal_crc.c | 137 + src/app/module_demo/demo_hal_crc.h | 41 + src/app/module_demo/demo_hal_dsi_rx.c | 212 + src/app/module_demo/demo_hal_dsi_rx.h | 22 + src/app/module_demo/demo_hal_dsi_tx.c | 389 + src/app/module_demo/demo_hal_dsi_tx.h | 77 + src/app/module_demo/demo_hal_flash.c | 218 + src/app/module_demo/demo_hal_flash.h | 35 + src/app/module_demo/demo_hal_gpio.c | 268 + src/app/module_demo/demo_hal_gpio.h | 35 + src/app/module_demo/demo_hal_i2c.c | 412 + src/app/module_demo/demo_hal_i2c.h | 35 + src/app/module_demo/demo_hal_pwm.c | 125 + src/app/module_demo/demo_hal_pwm.h | 36 + src/app/module_demo/demo_hal_pwr.c | 218 + src/app/module_demo/demo_hal_pwr.h | 36 + src/app/module_demo/demo_hal_spi.c | 485 + src/app/module_demo/demo_hal_spi.h | 37 + src/app/module_demo/demo_hal_swire.c | 140 + src/app/module_demo/demo_hal_swire.h | 36 + src/app/module_demo/demo_hal_timer.c | 136 + src/app/module_demo/demo_hal_timer.h | 39 + src/app/module_demo/demo_hal_uart.c | 648 + src/app/module_demo/demo_hal_uart.h | 36 + src/app/module_demo/demo_hal_wdg.c | 135 + src/app/module_demo/demo_hal_wdg.h | 40 + src/app/module_demo/module_demo_main.c | 69 + src/app/module_demo/module_demo_main.h | 68 + src/app/test_cfg_global.h | 39 + src/board/board.c | 31 + src/board/board.h | 21 + src/board/startup/startup_ARMCM0.s | 226 + src/common/tau_common.h | 222 + src/common/tau_delay.h | 34 + src/common/tau_device_datatype.h | 229 + src/common/tau_dsi_datatype.h | 405 + src/common/tau_log.h | 100 + src/common/tau_operations.h | 229 + src/sdk/CVWL468/lib/CVWL468.lib | Bin 0 -> 704314 bytes src/sdk/CVWL668/lib/CVWL668.lib | Bin 0 -> 705458 bytes src/sdk/CVWL668T/lib/CVWL668T.lib | Bin 0 -> 704386 bytes src/sdk/include/M0/ArmCM0.h | 184 + src/sdk/include/hal_crc.h | 114 + src/sdk/include/hal_dsi_rx_ctrl.h | 523 + src/sdk/include/hal_dsi_tx_ctrl.h | 349 + src/sdk/include/hal_flash.h | 139 + src/sdk/include/hal_gpio.h | 725 + src/sdk/include/hal_i2c_master.h | 134 + src/sdk/include/hal_i2c_slave.h | 156 + src/sdk/include/hal_pwm.h | 82 + src/sdk/include/hal_pwr.h | 325 + src/sdk/include/hal_spi_master.h | 93 + src/sdk/include/hal_spi_slave.h | 217 + src/sdk/include/hal_swire.h | 90 + src/sdk/include/hal_system.h | 114 + src/sdk/include/hal_timer.h | 92 + src/sdk/include/hal_uart.h | 164 + src/sdk/include/hal_wdg.h | 94 + src/sdk/sdk_version.h | 1 + 121 files changed, 92718 insertions(+) create mode 100644 project/WL468/WL468.uvguix.Felix create mode 100644 project/WL468/WL468.uvoptx create mode 100644 project/WL468/WL468.uvprojx create mode 100644 project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240401.map create mode 100644 project/WL668/Listings/WL668_P8P_TM667_ICNA3508_20240407.map create mode 100644 project/WL668/Listings/board._ip create mode 100644 project/WL668/Listings/board.i create mode 100644 project/WL668/Listings/board.lst create mode 100644 project/WL668/Listings/board.txt create mode 100644 project/WL668/Listings/main._ip create mode 100644 project/WL668/Listings/main.i create mode 100644 project/WL668/Listings/main.lst create mode 100644 project/WL668/Listings/main.txt create mode 100644 project/WL668/Listings/p8p_demo._ip create mode 100644 project/WL668/Listings/p8p_demo.i create mode 100644 project/WL668/Listings/p8p_demo.lst create mode 100644 project/WL668/Listings/p8p_demo.txt create mode 100644 project/WL668/Listings/startup_armcm0.lst create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.axf create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.bin create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.build_log.htm create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.hex create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.htm create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.lnp create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240401.sct create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.axf create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.bin create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.build_log.htm create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.hex create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.htm create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.lnp create mode 100644 project/WL668/Objects/WL668_P8P_TM667_ICNA3508_20240407.sct create mode 100644 project/WL668/Objects/WL668_WL668.dep create mode 100644 project/WL668/Objects/board.__i create mode 100644 project/WL668/Objects/board.crf create mode 100644 project/WL668/Objects/board.d create mode 100644 project/WL668/Objects/board.o create mode 100644 project/WL668/Objects/main.__i create mode 100644 project/WL668/Objects/main.crf create mode 100644 project/WL668/Objects/main.d create mode 100644 project/WL668/Objects/main.o create mode 100644 project/WL668/Objects/p8p_demo.__i create mode 100644 project/WL668/Objects/p8p_demo.crf create mode 100644 project/WL668/Objects/p8p_demo.d create mode 100644 project/WL668/Objects/p8p_demo.o create mode 100644 project/WL668/Objects/startup_armcm0._ia create mode 100644 project/WL668/Objects/startup_armcm0.d create mode 100644 project/WL668/Objects/startup_armcm0.o create mode 100644 project/WL668/RTE/_WL668/RTE_Components.h create mode 100644 project/WL668/WL668.BAT create mode 100644 project/WL668/WL668.uvguix.Markin create mode 100644 project/WL668/WL668.uvoptx create mode 100644 project/WL668/WL668.uvprojx create mode 100644 project/WL668T/WL668T.uvoptx create mode 100644 project/WL668T/WL668T.uvprojx create mode 100644 project/请先读我(已更新20230927).txt create mode 100644 src/app/P8P/p8p_demo.c create mode 100644 src/app/P8P/p8p_demo.h create mode 100644 src/app/draw_mode/draw_mode_lib.c create mode 100644 src/app/draw_mode/draw_mode_lib.h create mode 100644 src/app/main.c create mode 100644 src/app/module_demo/README.txt create mode 100644 src/app/module_demo/demo_hal_crc.c create mode 100644 src/app/module_demo/demo_hal_crc.h create mode 100644 src/app/module_demo/demo_hal_dsi_rx.c create mode 100644 src/app/module_demo/demo_hal_dsi_rx.h create mode 100644 src/app/module_demo/demo_hal_dsi_tx.c create mode 100644 src/app/module_demo/demo_hal_dsi_tx.h create mode 100644 src/app/module_demo/demo_hal_flash.c create mode 100644 src/app/module_demo/demo_hal_flash.h create mode 100644 src/app/module_demo/demo_hal_gpio.c create mode 100644 src/app/module_demo/demo_hal_gpio.h create mode 100644 src/app/module_demo/demo_hal_i2c.c create mode 100644 src/app/module_demo/demo_hal_i2c.h create mode 100644 src/app/module_demo/demo_hal_pwm.c create mode 100644 src/app/module_demo/demo_hal_pwm.h create mode 100644 src/app/module_demo/demo_hal_pwr.c create mode 100644 src/app/module_demo/demo_hal_pwr.h create mode 100644 src/app/module_demo/demo_hal_spi.c create mode 100644 src/app/module_demo/demo_hal_spi.h create mode 100644 src/app/module_demo/demo_hal_swire.c create mode 100644 src/app/module_demo/demo_hal_swire.h create mode 100644 src/app/module_demo/demo_hal_timer.c create mode 100644 src/app/module_demo/demo_hal_timer.h create mode 100644 src/app/module_demo/demo_hal_uart.c create mode 100644 src/app/module_demo/demo_hal_uart.h create mode 100644 src/app/module_demo/demo_hal_wdg.c create mode 100644 src/app/module_demo/demo_hal_wdg.h create mode 100644 src/app/module_demo/module_demo_main.c create mode 100644 src/app/module_demo/module_demo_main.h create mode 100644 src/app/test_cfg_global.h create mode 100644 src/board/board.c create mode 100644 src/board/board.h create mode 100644 src/board/startup/startup_ARMCM0.s create mode 100644 src/common/tau_common.h create mode 100644 src/common/tau_delay.h create mode 100644 src/common/tau_device_datatype.h create mode 100644 src/common/tau_dsi_datatype.h create mode 100644 src/common/tau_log.h create mode 100644 src/common/tau_operations.h create mode 100644 src/sdk/CVWL468/lib/CVWL468.lib create mode 100644 src/sdk/CVWL668/lib/CVWL668.lib create mode 100644 src/sdk/CVWL668T/lib/CVWL668T.lib create mode 100644 src/sdk/include/M0/ArmCM0.h create mode 100644 src/sdk/include/hal_crc.h create mode 100644 src/sdk/include/hal_dsi_rx_ctrl.h create mode 100644 src/sdk/include/hal_dsi_tx_ctrl.h create mode 100644 src/sdk/include/hal_flash.h create mode 100644 src/sdk/include/hal_gpio.h create mode 100644 src/sdk/include/hal_i2c_master.h create mode 100644 src/sdk/include/hal_i2c_slave.h create mode 100644 src/sdk/include/hal_pwm.h create mode 100644 src/sdk/include/hal_pwr.h create mode 100644 src/sdk/include/hal_spi_master.h create mode 100644 src/sdk/include/hal_spi_slave.h create mode 100644 src/sdk/include/hal_swire.h create mode 100644 src/sdk/include/hal_system.h create mode 100644 src/sdk/include/hal_timer.h create mode 100644 src/sdk/include/hal_uart.h create mode 100644 src/sdk/include/hal_wdg.h create mode 100644 src/sdk/sdk_version.h 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 0000000000000000000000000000000000000000..e85de55f99c51b649d605ad78a3359ab6bab615d GIT binary patch literal 212232 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 d>+A9ODf;^Pc|87#SbwOksKoaNL_9K*{C_|O1# + +
+

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 0000000000000000000000000000000000000000..dcc0206fe54675141ea482220ac935ceb88bf627 GIT binary patch literal 214236 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 F{|7so;g|pb literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..49d6b53c2df67170aac187969ef7ad11678f9a12 GIT binary patch literal 47408 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%0DAt= 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 + +
    +

    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 0000000000000000000000000000000000000000..f9ffac550e5a5ae2482fc9441f9982378142f073 GIT binary patch literal 50241 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7c58743f357bae1c906aa7e9c8172f00f4c9cc9e GIT binary patch literal 62844 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 T;HXQ(znwn{6tzRe!a; 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 If~tD|1V_83?f?J) literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..db7f8bc4e0d6fc56093da7ca124d3f71d118f2db GIT binary patch literal 704314 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%0Aiss=?=}@Y=#0RN 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 VbW%rKc&DWQgXr5PB*0ec{s(^w`qKaa literal 0 HcmV?d00001 diff --git a/src/sdk/CVWL668/lib/CVWL668.lib b/src/sdk/CVWL668/lib/CVWL668.lib new file mode 100644 index 0000000000000000000000000000000000000000..8224cc3dd3874b410e740bed9198fe324b4470a5 GIT binary patch literal 705458 zcmd?S3t$}8c`truwUSoyL$dr@%d$O^WwSQ6SUoJu1gIYNBKZNtc7O!KYPGxaF4kkc zl5E)+5Cn(~dB}t$vT0L?Cb=d}Q~!PAmXeT~G|46Oao3QvIJCV>lg1=zb7^mrkdTZ2 zzwbL|W@lz+g&_Rf+xs7TH2Xcych33FcfRwOGw0M^6G=xC*OgzT+pnMnl)tTib-ig* zV@osh^p*=z^fMtwZumdv{?(mA{2y{_k93N6?f%MPp}n2^A3iCxcW`^=T_>i!*Pa!g zw{v%w2+zB5-}P6*^H%qXJA~)$+)tepp0~O$AiwYQ{@))Ep0~J*7S)M=*L&=wDEhzQ z{>!ID(M;~2yeW#NxxLjt6mNNVd4%`fz7ISsyuZo)xu=D9ruU0?2=6<&|K}p%eV6az zC7%}muJ;G77R7G&z|ErgKjVFVt0;cA?w^#1;o?_)l>^k``tE(f6M>h_e4=cX{od z;y=wj^sp#@JNJhdiE``x`17LNdVk>|QC|2Cha)3{;c&QdV>l5R2**Z};q-VoI+`8` zN5jqWP0hiLts6lP@7!{8W2<;O?7OI66EyI6M>{IhY)cCfbBEo=9|Gcwl&F zZ#X&_b0v->hSQ_2)Mz>$8I2?5L$QH)Uf5W41i3pj6jcoAe2#c>C^?#sPDc)g2a-cB zB8f6M9E*ot1IC9UeFO3EXnbTeoQjN&#?wQ2!uyBQ(RlbkG8P{WN7JJNc?^5w$ZRAP zP9?|VD23sH;rxU%&+uR>9UmEq4~66T(GbUAWIUY4b0m2ofI!Y!IF%a7OISL- zH#velA$0=-eJHlV90$`$lnV+JNgGWca$y{ZM@9;k9I`bUN#_>~@)`@1y||gm2yz-3 z8yzNwya-KV;$XNxIe=WavgGuh8qQY$35h1+6n{GE9)4^j93P2>qXX_qKEi3yNLZL@Y8IagCm;u3OCR${Za|O4jVe}% z4+S+mFgBVT9&&RHqoyZ`ZE9|AX>E&7>q!c-!;_5c4X5^_PNj1hH`$?3s*+|JO@ga; zFsLzm-8ayCQJo?(=XnApZ8RQ9qe|@^isZ^D7kV@tOOB-M-ov2Us+@rwJ`hjK>LR^I zUaZLUXp($0$t}QxoW^XG!jPVhyH+%VOg7aQ%~`q?AB_&?rG;w%Y@EHS%|lv4#$$Wq z;aEJHtH62G_z;|SG{4L!0#x#3WM~Mk%{6}1uSg2cWndT;F_t{w%G95$pVqi@%1-a? za}CI)>uOGvv;(QV`JrsJ%Z$xhyA0%k6r6t|+&3Bt52xZTwk!=Hl1@hsxfZACS2+~} z(O8ttVjyxTl^%xM86N6S$`mpUPHfbbFqVQ62gsG@LJSQLjU*zmVK~S!w3%ZmxEWbM z2e`PcShF7x>R1%FD9B;6%wYfFwQp=~~L-nRUffT~&K}DBc0g0pD2x_Y|Cq_~0 zCViCY3oZE3@aUnGOuC6pjSUQh(W zBojf)4X?=Qv#=8)mQEf>qMtJ|nvM_c9Zlqf5jBzAn+PWdQ}LKtF-)1JJ(?JqoUlFj zB*rbDgdd3}29u-EOgg!DuWJ2FX(I#igVN8N1>4F6n{0}r7a<${@TPb))*syzb1B}p z=2nFafrD@jrYDr}U<5i-MQ&o))>%i4q9PwnM}|iF*=z?>194TBOtwoL92*!-a&s{_ z5{~7Gw~_5J+acE6K;%F?9Ertbmw{uGX)~3z!Bo}=GovbOY;4@rzp>RtS8vIjQx(!~ zQ`JbAv_P%Astibs#F2+_;*_&MH_@u9kzCi6L%a9tB#DK>)1t*Q3Ie_#Nr2lJO%9Er ztE)=HLN?tY%NQ~IAVborP!9UW`caU%V2Xl#D2k!nO|0A0!9h5fXuNe}e}8{pzE-E< zQtBiL7Htw}X-o+;O^5)>Wo&Fzc3llbeBeM7sfeT^(WEO$c?l!!jj~>hq>{N>)D~-O zZj1K0S;kv)BQNL)LEa$gP>p*G40NY3yKd^)5$@Uf-l1?e4~?XrIhaKS4EGO=jYv<# zVBuQEWK%^9nRSIBwu=!o1bv4_;sgC$v`lcVETDvq%Ce!cd1Exz;x^8dm1P=cXau?4 z<(k_O*wTnBK}fJwCWdW!m-Pr8bQ)h+EQ2|%`5s|km28-JeF(KF(YzHX0U)tnMR63OE)4Lc^LuWMw5fespN16;l45G9?XqU znq=+{pN#^1Vvq^qfZilpu1Ga4~&j)WjPdjS)#i=bfhp2u!N+sUk@| zpi7-cp~_f59@kTcpd=l|wAkHz}qZSf5*YLr$|fKh2tQY}^@5tLEV=9nA|NTiu52~x?Y<0;GqaSc*Pvz}Ps zaD3dxg1TeoMs`uhFxsM)roSy3kF_+qWM(=(vMZkw_q zio<3YWm=4cEXL6!3mv`~Q+g;AIUv)snIkn%IKOK3S$nc%QVb^?~bR*B}ayG{>m;)4(@W(OPF_y4DFTf-p*+jF^_oF zXsiGW>YvRJ>}+Hb=v(4}zU^N0*oMZ`6pzU#%iUsv4hrQEk>uRJ3*A0<;=%yOQBVMx zJ7RDvZYGVolGxa%kxKMwlSK^nnGr|2nPHk3rkhukN|h}S7owb-uzKd9;dK8%WCZ>W z{VtkIY;tR6g5kn^T+#Xm&?ThF`Dp)M)H?!4M#oYL97122yIeal7L^@mFqzm}XinQi zb6E6YS<-HFJ22&k0k*20MCGYo6$>U>@Nz@ODEnKex~f@Aj)VqAcB^sJ7IH+wE1<%(sy{=@)b8BxWm+J2{lgL#wWsi8m*?o126K znT+KyG1Lz^a5tG4B|H2kEgC;W&L243?8mnCT znP62mBgX6))H-Vjs)TqmVJ$R588(q)HL)^!R0cCaCP|tpnRkxHZ}4QbNhNc5M-F93 z)#G(=86zuGreu~=zL=y+o3&o{29O=p`3)_tjcps_F3s#TT&mB&5|kgO-xlZ1AbL`^ zHo-u;@R@xLg9iqo-ck|9MrLNg1c4;IjJ|2&b zp(8L#Lkw~AO*^;Py#sY45j9>RfSH?#5lr$9jH>AugJQO%s_1QR@67OIApDxm{wB>v zr+8u*J4W#ilHSZ1{Xq4W*;E5s+h{o0(h`lu-8zIbVP_?v$%QC$2+e6B*~qsWo+|iY zd=NvH0nB!rldDEB)rc1giRQTwX>0^@lO)t=pE-WgmK&&khdeNh@jv_r83$vjtA^SUPhnn${+fEpQBi9L z!CsI~lYOpKa=$L2SkpXNj@DiF+9@(Z(?nZp_#l!*KFXMeONWt{#%7p&E;|Zi%?qL0 z@|b|JGEuP%Mv_A^8dDF1P92crB}xpzxum-=TQYqxvM-MAL@Jp}9R;VnSY|s|>cQ}6 z3bh>hFl?bwj*^XjPV0vL{?^9kP5DEM=^2$pNHG>CrV#l9#~gt)&3ee8q-!S|kvJ+E zwsM*;;z@BdFMCyf-B`@E2M!`R8;ozvIxESh3zeWW0KAft`c%lVzJX+vT1yfztQIOr zn%PL^Qf#~db(Mt|UYOxBEnN!X{8_}C1>|tzBL~Qd_igBJZHu-vxs=mP_*HSS?;(M* z#4KHWRJR;D*S(i$ImF{KGbONt&kYeIBO{%m$u`Y5{kajF3_(Qr)dQo_MVR8bKG33? z=x|(4@|q-b_OTEC%sNrjgm+&D5P;VK(FA&=uQA^5;^{EqHXSFFH4@(0u_N5I4IN`O zITefJ^(Q*h@sz^RBtW!J4vS4LeqAiOBk5Quf|o<)#Q3g5BfBYp?AWJ;C3@$aorUC> zv$IgBg76HV1(%zcvmjOK+2S2&N{`tXV?=8jU{Go&y>|?T*B_5=j5oTzNSKZfI^^hB z2v1pJH4mbra)tfx9dVL#q#Q-%UnvEbOtNV>HHdiioKtJ~mD?@p+7LPQn?Sb77Ar zou>jy6IO|#wjj7+0h`zW=(RvJyfL`3dBcX7i{qJwi%K7%)A9Xi`%+@_jt+ZQk#a-~ zkyL8nkTLsYAbIp?3|kGPYGO=KPIPnbNRUy9;3Q0(Y731Z%9yMi(pso>rkNOi$rv6Q z8#E;lU5&;JDP~2I`ExE+GuU#vCq7bgUvl&yR^yqn88?<5$)%UgBbi3_Wm93uB0Rde zwvfpoEJ_^2sy7=Jy-k%1Zt$!Ea-`w@en_;1!#o)`va}Y)8Yq=c4r4mvkPS&{f3z3c6ux& zovq~M)wca=E}Ix*=v^5-MuydTQ~8@l$^1*bQ^E>X26MH|gq2PWGIx)##uH1*;wFzA z?OCxjH>Kh*>ZXi>$^#=^yyfQ51S*?h&8Wph6q}WVw~T6vBQKQFw-JJjS5<2RW#Ql& zPWb(i7=}B%)|Msir>SQv>`)(PyYCQ2$o!U*L@TroW!IM7_Qqq&t-E`| zJvZzQx}zK2(M|5?W_NUpJ9>jVy44-M(T=8?%{n2g#j@>mvJcZKT;WZ$Wwn{fZuZg4 zHDBgTQa(>UiHhANHui6-{ov>sF>FZ>A$ZJUl&f@Yv`Pi<*V;C=wX{VFb_-m&lzS!` zDz{OWC=&*XRKu?bsE^31F(|1B223^#rH@t!rH2Rd@MzJJ!?8Rxi{?C8BPBtj2~@|# z@IcOrjoi|tNpqyRuek;5Y;f5>QJ99y%xyZ{7)0~WJ||8-OQj2qF5dECB{t;|m0G3= z@nN`#rLC#4L0XBML(`l~I5~U(19}?On*?gI$e-C|$NQnMaLQ1EF>~XH3tb48`4}T5 zlA4>BFr#!5=#94{kYkd@q&g;P3gE2*(dD&dgG|ISWrLiXF%yX2!_VF^&;W(+)y2}_#5G%`T30nQKT7+@P=)g&e_p*CgYrYjAUQJrmW zGgqB+eU4ThL{P`YTuB_=&=&7&X>@s?15Zv7OvkOfH(1cz$!>P8+o%F#si)C7RxK&B z8@*X8&Kx%~2Y1m-A*4F$uuG$22F_tFa~sU$8jBhGqZ^uHSf!fZBBAh%ycJ;1Wer1_ z0$Ic8AU|s~*Ujt8kXkNyq*X0w#EjQLn&eddW0eB63fP3$^tpFzqA2rd@7zP%i0B7l zxZoZTGz_#06A$3koEcJ@4=2Ou+F-Jq$-L|j)9C$;tu4(P-7IHXMrd}|Ej`W`V>!uI z?Qm4wn9&MD^kl{ir50G1m=i;4p$-KtIg{Bkmn)hjV`60G=h21XVs2qI@)J+ugHc%TC9LhjEVK4&xkS9mY8ZI;1%no5dz2f^0H5gtmyjoXYVLni?o9 zk<1~@v59TmA?1)IVKSa(0m4T8%TbJi&0**>Q;5OJ+MIlnq1IfQRaK4}d08P=)%Hgt zZ85ir7&QuY=YvMy*Rj(vu%u|2J<>;?0`m$-2aeY`nm9QVVcIB%wM^i#M@*n^K7@eM93zo+3s z7D>FZ2E;m*Y2Yk*A{1K{y)QL#VhSKi|2R77u9PIEnXKwEWRdC77oj6@^t4?=riKR& z4Gj+xlPf(PKY+?nm`0NTt^r3W4SAH@q&ktwe%&)gl<5;s9MdJ9=!Ft*&|DKwMEAt! zIvu%;8TCPRN0DK4yLe?k)~iG|_VvX!x_pE*18x`(=I+sYMd|$;~<=&?m%} z%1TJ1cWv#JSn()4*$xuY5mth>4o!}WTBBS@`R$RBM)m_}2CVHkg_KRtXkN+*Pm7t& zuBpKcvxxMiM@NRou*(Fy8KT&G_k^M9VCxweNNS8Mb8bcgiJv-PJfCeKb2Z0^Nqt18 z7zV?6A6m*8c$1!&F!|w~z12d}BwCJ|_)APvf?FCSj%CyAx8k)7c_48lj8!G_t4_mk zRrRHJZst;jc(f_f+8A`1O`QR^GGr1+1?C)Y11;Y)pb5jfYfdNea@p|gmYK4RymSwr z9qxl1E+Tpv7mxP$$J_>*Ghj#BFuj=*C}_=|1*RAI!+7!Lz{*~a1&JvRnVNZiUCq?|c+yQtGCuSlZQviXFd6o0x~Sg5(aZFs%i& z!sHRHFu6DrrX`=WJjY11TC!s7oD*(p3^up+_q#3Xl#5#maU%IUdT#0o@4VICeJVI6 zGXzBj@U98dE2#Ut7KW3mh{_}3Rg@K*w+9XBN`;_Oqrm}86CZQ(-ZBnqEQa@aX>xv6 znG|jy6;tME8IM@x+BT$dNKGYZ5f7Gg(NvpLFy;~|F;=u3J*%;yii2y8xj~C10w$=} ztX3gx9F!e3;b)QKo=YP@3O!_(Fi>M|0~bg9aQ}9Vkt`}V7eRz}kAf(NqJ4NLi5YTf zWrVKk8s&e%fdyV?r%4kX?|G1p0+MVc}x^Fh8t@ z>uc%j+YoelA7iN}Zk&eo?|wVhPlB+hjK13-^Gihz(eS~{yM=7HAZ6zk3XLCZMPQ-v z1h<<|+GZmhA0Ex=nL{xeEg%|5(Hm+SP&+B+=!MDzGKd@f-$-t8hs4Ku9TJ4F z!!!yP0c2Gs+u~IPR{30$DM)T^K*hq!;`(OJ8Yqf0Jya{@f+;pFUidv=%e8}pRu(1H zVilQmV&GI_qS~4~!n07fIFV+otheNoxMfDdG~sQ&{88z)kg46zSuIp#q2)UmMdvNM zP$4b;#Guf(J=Q8};MGPNjx>%9q-Zi0#op=o0(+Aqg}cGxR%lBM#CU>A0^b6H|+NWOhj1wg?h34x6@ zG*%jR&ap-ePh!q|DmIFh#%>N}JAFU&kBGu@uNtdN8NIDO8)e1ce9<_7`K{PoQQ5FY zFRDKJsc)t+a|06l-u`^Vr2+k zMT9n(cJAV2NwgdSsZM}INynfnnMBFGcOtaKh4QLq)wD7g2IIiNHPONqORQ3!eb1#_ zQY94&F5$N+xki`7?T$oaT{8vp!zJ3QDlb$&sgd_%GP(P)r5|>G<89Ss;&PJu2WYLQ zGXQpC;_ra1vrMcF+Kq`RmLVt;$hXH**hIx#Flj;a;vr+A*u={O;TT)$&N>c5L=Y z2=rb1fTvrVuhQrwGF3z7RH9Y3dnoYSgw(n6G7Zas)Ja%b)&QQFy5iv&Mc)i8y^I zZYM>t2AAi1t@AEQ7OaP6SWSnOL*q*TtR*o!UseLycFtAiD8u-~1mB*@EsD&%kP*eK zBn;oFagr|23{8t-(n)*Dfy1g`wVau&2fYcSeYkAWWkrmU?}K)XMW;E*)UzO?f#1Vu zNcOT!Dl((`@Fq$bbHN}3wB{sVWsFXZ$!Q>a3VBjRr9D@f%m`7~NqoU<%M@Eh;$U>Z zky#gOF{`P$XNye|>JvVD=nF^EefB7rz)Q%CA&!|M*%aGS?5J*X={>eDY3^$bVm2f1 zb%&~M?tG|jv~ZWE1h7s79k(ZtgSnvU7af@6FcDOcLmK6LhSCTXF_x)@}g zC^Tk~4(0}YjHJbAxmia>IqE&*EH-F##28N%9GlU~DKjdT9Ci#Vtk|e&=Le$%OtKP4 zwUbOVZM<}J^6VJ}2m9$ZS65+n=JT%}?P8XZh=Pq0r8OildQ2xfAvMMy#zsTQW%IMeuS zHi4pR(QDKPcVUSeV8TCM|TA*haXu1#c`rHg5S$=R{O7)S1b+@0mkLk^$&48lxu zt`8yomdPxW+-R39kxe-y&G1sog?V#pXMm-cHO^Mq6v-%22FV^=I~69C?26w9m>u~X z3I0?rPR=EZ1jf);wU21bAn1rtM;3jep{SgqFiDBwA^PBoKB}}Rgybm-^p`Iwu^Fd1dGK`f|y{gB()1VP)HCHoPzQOsHQON=8B%YWwgQ+ zW0-(&%Bz~rK`uIy>%TF7z9|^o)EIYJV4)Tr6<}1e0E&ueVCP&=62mhZsEe{AZ6Q#V zGd|a`BwB`|x@#R|=CGF9FOlYyM-GHzl)gZsxYK2c+44e;<_G21G-PfTb{1i3N-hJX znLG1UTw64{skLRJ+l!UA=2ki*fjrfhOM;2Azj4FPY>_efJ_Xa-{9a|ph)dsaIzEb& zK2F|&o;p3>H)6IEn^-)(E1(s7kzjwY-{l?SG+f+9P!b_S^rL9;u@WXbqC(+d0GMes z0A6#@p98VyCkHIQ%5f;9JONT33~4 zo>9H65^^h_IS&z)=e(gg-KRPiTsR*Thee<=!xBP1F(=cV6ajChGa=S$kUn`mQxJ~A z^3CD(p8GmmF8D$+{8b#@8(7aznUDOxbEH;ltGY=h-5%sX(?#t>F+o4mC%p8W)veWP zsq&tVUa!)Kj9Ehp{!#J#(XU+(H$)taB@uXNKR(nsAtlFt$ zNF?;hqmSrMmK`e%b$96}2>-y@y2pTdxXr{&oUNZ+F-iRGiRF{efq&WLv18p`%bEW} zXIFj-{2y61Wnd=GuAQuzY?u;($b}VCr#ff7P&4&Zr|*UOC+j%owNI|(=gurqOPT7u zU{J4@*b5ZK`+~uH4P%!wum9qTDZQG~>J8OQonOki3DMtsYrkE5v~%_M3|U6#WgNQt zBFS9*!ip)uVJLJP%c-@5F8w=aX#L5f$I3r4+1YSGKkYqM{O}h$D_&fgU4OD+YTXHO z+%u^?s-M39SZ(Oa$7`o36|tJnp4Cr_hac$trx#b9dF>e|=Ngl9u;vel^Voyn{Lv-- z$ypDV9lNc1#o4OrsnK*+s_}PWIL;om`!5m|A~w-3dyoIDX~h3r{XO zA=CQmk_XRzuCwG~VCjQrmz-EM)$X4-yJ)g{D(HXc?B{_GE`8{%|HMMZFPvOF)m}4k zcJbuW6N{&gc7EsL$1Ytycl?YuR1xxCS(d4&(`wsTlk-vbhcjZ;-Pu*4&aL_eZMC>+ zOQya1zQnOo&v)tXufOx&_%oL(U6 zG{#Er_0!%jU0UAVp1dhykI9!=%&|0fJsb6RYj-wwX?>UVDob3IDh^Q>N$3fZJ-b^= z;zmjc`f2Zdmwef3wt~T$+C*=nyX$o4&tF;yD-dD={%N98v{Stl^YOc0v|m2=G3ak$ zXajuCJmqudWO|Q?!0b$KLQHz=Rwe?WO0H>|KA+_1Z(O3dN<%euYkGWKlX?@gPRu#k z?w@_)m_Oui3so_HBj>p`(NSGC<*W9cXs;H5rQch2V-fryNpSMDSC@fD@|Aw?b1PpK z^PgDMBXhP~FP~hQ@J*GUEIZ-%AM>~SBZ)aDXMcLuZx=sWa@_mLqQ}Zk`c9B_d5~r! z#h+teG@J7Kd#}uM^Z>+WpexV$Li0E^mCsb3qg07<;}?7z=q2!{rKUgiur)}pM`Ba( z*Q=qsjY@aT@XRD7|L+D}+%5uv%&JiPhQOiZA>nEFuQ`0@;WE!LzX;T1#F}cBy=D1C zU2SOowrd*abx&Qd)rr~wOZ+y%Yk}g6(uPnU^%Tm&8JDCI7HtyJ&lk#B+vpK*p3_zh zdbD~`s~xZPKvSXirum1e4u8B;yMP*!6{|}_`o_a|FKYkul}q=CE9Yc9sN15UEu+=f zdpBfN+uIP#i28=CSX-7^x$XXaCp+t3s@qn#{bc8Yi*rKDvlILDt&^SF#o3|K?6U34 zw_a``Xii9EYj!+!#2c7*K|5ZNt=@JLwYwd5re)@Yin0rLXxYoFJR3xV#<6L&^Sdb* z6US6q1mh>nI0L7(gZRs zga>&?|4kD&q<4L+w6v7;Azt}eapk#3QRlm%3BS_B0=7Jkf$KBp>2SIEOkkGY=BlAz?{I)cP1}JUtB6 zLfYS4Qu?WteF~wT^OYO}HlBVC3HyiVmT4-hRXSw~#YpL|JUzkBQ}<|r@=Q^{mq~=$ zA2ukcNf}=@5fY5~*(FWIYH0Dp>^X#Z?cDD|S397qTBWOHY&FX#m!Xfbbh3INb}Y?ET~=rHBa~B5U=DJtWxRo( zUZ}2>W$~j+-df4^gG-)TnaBTeN$R`i#F8oRr-~+*O)WjC9T$_HNBfSX?q2?QHQRG- z0=@F(q_v3oYw-!ctaY_MX@8uWl5T;L*4UCX{Sl?V(#{wxk@WaE= zoYNK05tsk;#1VSdO~Jc_)`pNq)~U{^U%`J*-9sD#zCkqXxNz#8T{mcf9Z35&)Eo_I z=~;e$Y5Q_fL|n{S*UYie@8VG9>5ij)iRDv0%PXr3acLoe_K^5>j0uWE*WA#4*O}{Q zPbToUG$dBdp8Bbnct6o+qu14*pkGfh{Mr%;4c6%EfAaE5Xlr$*D@$>{b-J_}r0eXZ z#psc>CuSd?HCYPZ`p;c!L%v!+r`1=t2Ku73%wk)c&3~=Gb*VY#G0MQGz5n<_Hah;3 z{VlE4BZB8*q>-XF+Irs5w*@5}%;-WJ|rU+{TdLkx_4{_qzn0=kd|0(vt56Sc8orS>IkquR_{K zQ!~1E>jcGGdr_l zrKtC;opn(>8rT+iVqK3+HQKzd`o8Kt%3?ftT&(gvS$5Yk--kmzH6IPtWkvlLw^Up>UWz`=%1@R4X$2&lX#ck7_(kzi zNVu)$cRPRnx3htpo!FLG>RH(}``Bvl@~&BTRW{a?v~+on&+3_tk^GmoeD80y$7MX4 z{zvd9f8iCpcc5h!hs#LlqMdSEM!EfB{rEg;J=Y?)YmwWv$nDydnVPk=nHKbLJnMWH zmu#zkVi|HO9wQA>`z}^d8Yhs(ABm5(U)MEQ^Eu?Q(KD~hb5eV>JR}|y+~&{Ewy!I@ zShlVFiFwU)Z4y>_7ItaJQO6%MTH`mLd8ODry{Ea1eIaj8`S|_R_d=QZQj`{1c9rL( zJ|$B$No9e|X`^Na7}jy`e=@#on4J z;VJG~HdWm9RPv$D;tQ`QAL#U4XuI=t=M|aPYJ@k~rA=n>)Vsvwimm6HFwau!>#FRn z>CvXTqhji46f+9Izpr=eKJD?7opUn}?-Nt^cfOJ7-uG1RQKW?8{#xYMk!$-Fqx}FC zTyrwuW-j6&&K%cIF16QG2EOz1Q;F{A>xrXL88%Dp81#g{=szzC`A*)^y?NgqH-5GE zfqlR3ofE3@&i9m^tm#_Nb@NrLuk3L^h<$Wwv9*TtK zb$vMWuQfY*s=VcoH+7wFq_MMhKz8l2D(~7Z?a?MYo4VZNE)?1w-?2|SdAzeCbKgFZ zos|{%{mV?pK4}}I>%05D*7xhaH=ntGpE&U_%0u$M0sde1wyW|mc>W~O5&dQ2zNi5k zKU!>7gVaKTUtod+dZ=c zg)8yRnp5E|snB#E{Ao${vhE2MWsABoF446haZuf%@kHgha(ME&=9sVy?E%s0mj07C zjTt#Nep$bXU-r+O{6=gPR*pZ`S&$=(tX>ik=ymas$ffOjZUwpb=o{bPmbt(bg^!{j<40}a?J{+#!QEn_`NN7i+`){Bs>IqSh1rDSdQU?~CirK|MLDA50Dm=uz5(NtY`v zXvvk1tuROQQSADs<7F6a`KLSMpd**fl7Y zH{!k>cks)jq1f_O zrJm9vpVwFHEAf^3e7-VYxo=kKY~NfVcoqWT=%NyNH)I4L$C?h0YdU273n*fB(Tsh^ z{Cghoe3a(&XD-8U2*8ul-!cF214R##6!Es?)L7*FJ3LxpZ~R-;*exe^&?Qwcn1;tTI#Z9uAo|-~J9{TJ^V@)5&GoF@GRjKL4JM zS#KwOR=XhYFcZ7*nKqtp+jWrfcH+0%R1?R4_dBvFtDH}>oFfl-A1r$4?b^6i9}mn> zAGtc8U)R>Y3o_c@1sU%&9ag<==5)+VuhZGcBFK3=He$8+mpBcFbM^9V$|ApITrc29 z$NVE5^G6>jdk}9ZKUDJ3V$`6!zVXd({Wr#ovbja5@NXxrR{POe{@eGnR-ch&83%Lu z?UA<)i!;g;n z@4QXc4MBLW<@U*Dzx|#^=il{q>XfxU(9}-He4D(OXP2xHZ%3xJKSp|gJ7KN5n&AAs zb6r{Uwuk!%w!Gc!dFJis&05zfpYOz`ta&=73Z<(fUcRS)!yB?n^q#tp$W z`tIT3fva^4NU*kjpMG0Qta(E`cDpbT>(|pqOW0yZU%!56m=>aAfe{vwjf6*s!(&5O zX@}3CVv>lDY2y4T3^v`z=`eIE#bDp?zzC?ZWCY+?ia)r&cGITj#&!IswY8-Q&v4(J_*`UUkK>JO!!Vc*^vCHNk864S zST1^ouuhEfPrKBQT#YxbeSN{;`sUwAMUjy~rJ*Qmh~UC`YitcRt!u>j1>l)JgOOBp zDZy<(muEPBb*^k^k{E zr32j4H;g?Tok+Q;(utLuw(h|Z1_NWzs$K3LJ9Q6Pqb*{CAvzY_H#`jJ!1N3-RYWBh z{W&>NOZLz@&A#DrBJJ6^d&{11*Uh(VZ*6S@V)NB|s1DGld+Tq3S?t-ddE5G%@D;@# zRP8-oJ9hQ#+OwfyLqntbjS3Xs(_?09=D|0|49zj0nc&3b6H-lm7eRMS1_GM!t$zc&?}ivvoG?hbkOH9{Z)f3 z<~it9Oy6$OtC+sq0#o_X?1a1|-GFET647avMPBnA@)t0jW=!O@z(HTgbeb`c*Fpz< zkpo`rfc+evW-H|7chHwGz1<*-B@TKu(`f`LuWAQZUPoTy@U*>?9 zGk>lZwA?{o!StLxtZ>kErt4;UbO*iG0oOU;l^j0zVs)j1Ue9#u4a=+EL0`r6%?4Sl za?n>Z9TTPMTFvxa{g(6=gDfQ71hGJX?1^SM2s}vex>+U zE^&x*odaI)fEyg}RStQL4*DJ9qZavI@h_L}SFjhc6$woou)$_U;dO0AB3Cm==S8Af zY;nl@n}t$S{MVxiJM0lpS?EQOu*CukPmx$fklB@TLt zc+N&IbrdYOpZ=;aQ2x#+afXF2GzM2(F;+d-c#UZ0=SZ;_be zpu?Zr=yM(Px#DX!dWC~tA%4$BuXNBW#pgh$>PSA`BPzv%HvV}I{(0g!Pd?uR|KDiiU*O9X+2}P6 zdX3O*^kokEGV#hhYyOuz=*z{Q+UP4B^cCW98(nwMb#b?iUhAOOihDsPd!rdvkEj*5 z+xY7o{B`0Q8-1mNzEb#Y^m+%qUR102sLk<+dhtf3HUFy|{Hw&@+UTnt^wr|;L8tV$ zaQat^Z`k;+aPVIt{=h~LIOqZKK^uLIgT6+DZS=Jc`dV?Ljeezrex-OX=#*ZX$?%9P z#a6|i0bGRk$nKBViA@%|26}^nY38d)tatFQ$C6JFaQy^#k!Wzx8^lsY4>J8K2mLB6 zq^8g^jT)BR{i4G7P0y>uKLe(=jBbKo223+M2K*dgn!PgMKLt!84fqUTa=`}t1;Esw zGT_ewruN%_PXg90F!9%0VB#lTSozmk;QK%~E)7@lYbz4u0sFr-{2^6utz*c zjzeAZJhzM8il1gAt2~Y3Y4qQSpT^)-=&M9Plj;IOKrWI^YTi{L3;UwWJRrzVCql!U6xW1O7b+Jn4WB zJK&fDzR3Y!>wvFtz~v73->6{KMd^RZ0YB}4Pdeax9PphE_`MEzlLM}Ez&;23(^4aK zQok1*@K+u1=N#}O4tUT3?{>h~IAGlYmpkB}mDtnwiUa5la>3fwL4s{XyR}T2g z4)`+;_(KkO*a3gQ0dH}@K?l6t0nc*4Zxk7+mG=1$4)_HJ{51#sqyzql10Ht3yB+W* z2fV@o7dzmeK&Qq<`u(m0{<;JHk^_Fs0pII@lMeVM2aHbw&5PpK9dM}w{wXys>LUIZ z9q^wx;Ey@rgaht&zySw5#{vJd5jma||JNPxZ#&>44w%+-8W)A{GypsaUgdx-(`8Jz zBuCVN-`3y4{M-i+zWg>#BiI)@F4x4*>4|V}s^W=uGhr#^jxdqlR7*bH1XH; zyi(&aIq9jMV5DO!JuwN$<@6p+^b-8LLJZL}q|(==;jA6J{Q}p~T zO?;Z3n=}CvVVKhcJf{cGzaTu~`;L0DzBem-L_K;Hc*@s5(G!7LkH=JccfcMg9PFiz zp1`-!^Szqrrso?%^wG0NmGg~CpEoIeZq=k7@jOX6#D?8bxiGLva4Vw5dJ+~`6-KL4TWS@BY>A6$YBlrWTob%U0{K&^W^t?mWTjYoJ z7}mt+3E!)+KP|si#g8YKAD(}&=v*)QG*LqFL^V-K&zOq${jfWNA#XK3Z-HN;=TZ0% zJW0<`J?ojv9qD0vK|N&o2V{9rJ$jAe8`i|@^c>WLkK~~8b3TVOv4G%v;TP#S4u3~a zlrzaMUx}FkdM<-~(X$42ujqFwdRoyDCDSM92|sX(o`+CA^gIkZr{@t(JVnpDHSrQX z5zpV!6Y>0jo`~mFdLo`T72V^J^m2NFK9`=LucId-$LENmd_VL;&lLQJdUmVl4eGg@ zo@4O4^n@Skqvt5v7kVNyJTDHtjshmXLFG((rfHn=`=o!M@>okSo@@sr%AZ4ym+&8w z^^(G|AH81L|2k#=cyhf(A+X>3psELc+0Ib7t4Yp>kv@8UK$R<=T)*JQTCMckReb?J zw;zB{gHHbLi|WbgfZg~B{+gV>C{I9-BnS0a^hrIP6ICpC($(-Y|k<*PiY^xvlR|DbH=DIYdE%4s?ATj-pxhm;;* z)T{@Dqj){H$axvh`xJbuf^Syy^?#}C=Sct;EM`|5d|r~-&62M6#TM+zog*5 zRq%gN@ZTx;4h8?cg7+x+e<=843eGC{aRtAk;5!xk4+`#6@b?v*R`3rLoKo;VD)_8| zf2iOS3cjS^k1H6JtA+A;M!`Q)@G%AdSi#2?{1XKy6bz&0@J}chooj}_tl*z2__GTB zp9=0*@M{VlQ1HJf_(KZ*R|S7c!T(Farxg5e3jTzGf2QCe1^-IHKSw4TupX%)GKy`H z`^K=&N;Hg&rg7F9o(ba@)-pE8-9qJVpbbDI8yxGBu+(uc_WZ}f$C2TIG2XXvT0Z`; zO>KZr>mh|ZHyzVakVFTA6bOb54tb|mIu3g}7VJPc9RqKTD)$qQk53~g$2SdA?mVEv zDKbt0D$Ie++{p^cD{&jKv4GCmf@Jr1NW9>K9G_~GX=MXjU)?j#?q04 z@(6)xvdc_-QiOY|)Jehxh*$s~;l1dkAr{J-{QzEfSyUb9J6%~Pux6ZnG%enR(TWDF zL=R(ex3O(_vcYv5`3BxFy8%1Cj*P;&)7d-{kodll5s_@5-Fd@fSdNQh4Mzbx{XC_F zKV~+n=K<^>ibd({iVsjA`YpC6`|9g=#`lk*rqkF=fWuxZ}Cs(!N?N~%#d^fp^Ia((akNQoo+yJS#}~d znz+2C%Y~JqMT%*+>bQ|!t0+~+-AI&K?3!9Is8WUtoo&s`5N*b4>@jakA+yO$!I`)00?n}7M)Gvprg1zb@3%`wVyKfB)af6EHqu8jXk&i+9{dW427>pJmSGK~ zb6@{LhXWKoWdMH0c_ab1MaH(>xhx<~>M0oeIM`ET>6h6;kjtb)9h?U@7KK~-Y0tH>9l2u{Of8tp`8BRp!OU^N1BUXBBjPW%+z&5uXkTrhlsg}j z)NdfkV)KvE1eO&{MnzpEM+in6rDc&+@PyCl4+bS_;R8ht!?MJas~i?2r7<_2aio|I zOm&Z9`lD1`BB#B>&01iIKR0f%#O-zvEV(sXht4`lHH90 z&9UqGytJ#lJcv8j&d?b>gtd5E17+QupAV0x+Rhc*sO~1#>`hVHa#-{15)*}WP|`<+Kf;}C#&q%Vo?C_e8)ytHY)LNw(7 zs?VuIEhdrRfpiXb22M8ho4oyWuB9P0hA%gBK+{Y%lt4q6N9ptYb5HWbvshJrfSP*4XO3hJPxpblCJ>Y$~d4w?(Y%Zp4jK#Ups}D13aVg(pb07*yfzl+Ux)bbIRCYDUx|qaWP8JX zaWr)CFwcb0X*R~eS+3-P^jhZI<9hfZf~cZ`^fLN7t76Eu9^0^*gt`x2+y$knU=$-_p_9 zbD+s3Ta+Yo=K25g6xkBh);C<$D7u;&f}5}$vRYeSjBhaT z#eoM4ES7th;3s;+LMz3OD$PTS8$hBpJ2SnuV<82x(|QWJT5x;$m;7V=Zg=p}`UZnW zoW}1@7Te`r0~%iYo0q|-JLF+$3$L9p7!AI(LtYE`+6^W=4Zf`oJ}k9yl#%1s=cJO)eonfcJgr_0;Rs5jjpcwcHfzPen{>;I56Ziru3_Xl^Kj+{Z2j6BF zzWW_~Uj-kQlbDwwFYMs^Vx{17gYUP&r@Qd|wuA4h;9KXyhb4!$cwYry(87o0^Mxh2Ha>rqdp*L^UK^hd zJ~us=Iru8^o!n92jLXp9t3VLiu$QR?uxEn_PlNB94!$h--0T!f&1~}g3+?$e`;0Qhv^jLV3(5*fAfeYSwSS;~*0+VS-z@MR2PcpCCZaU{&4h0Vd^1Vk)8Lzlp5Fu?^>vJ^kY29F0@a!5@BSI`JrBN_q;Kxh znepwMA>Suw$oD<)%_P5dXgp@3zdOJ;lXCk4_`2CE7?+Ez5VGzM**ugpQsVG@WI~x7h(1x4?^tzIVuB~_!d>BfYSFl6& z4|;(q!cC%mxQ85kw}Owt_u>Z0aPZw465>`( z#=F46_Z|n|nd@`qfv&14Z@z=?DewhA@5PNSsLA&OR1Rx?vle;i;+cGZ>fn3T!bf&( z=;bpGzSqFl26``Ubd5~DdmMa$ZXtBgdvT*HWAfeR;OhooQ1PKlVe&OO_{PC!*bBM< zCLetlX3g(W@cEQHG{q+0521T2-=swznnaWDyo2u)_;e)?O_<3y<={JSiI?~d{n2-E z)_9+@#9M3O+v(tY$s(`L!iP_rZ1S?;GxWF8!dL9ztL(}7t9lFH5AfTXz5w`)@?B-& zd)C3%3qGSfR$KT!=ip0$PY13S_Z7Gey*!NH)_5l^d;tsJ9tYnU@cDr2#k~f%A+H6$ zt@54%pOL<`7CzFEmG3zVAB_nU7QUON;d{!$_ugsvp0n`noQCfu3*WA3_+GW}(fF*8{$986y>A*m z9}2&O_->nqFJa-Mwy%)>#w~oe zTllC?R)pKQj)L!28lb2P-2%R-?`!4DqVQj$j-w=o!OZEe-{=8eH7iRmrBcgyw=9j$I$^mTj=65_MNOev=J zlzP1{Vn(?A>D2Y-aldx%kuxPYH&xUZ=|z)4oOfM5dH!xspy-8)EB;*fOcrH}uehxL zS*-JYsy~Owr$%JJ3iwvPuHD= z(^tQ;ZuZ6U6Po_q7~b?h@%XYELFahtOQ-%K=soe7&ZjQCB9gsd?ES;Ik*3nn?jAiP z)3=FF_6$ZTx4oQVnNMq4oA`uYPpC=n>_RsyBeFtY;D2tNcJXrk`WE8!1jL2c>i?`ux%a(m8Q2o$-wH;#rg#7j6D_UjU_d@Dka>bDelk-=hUR z;$>8p(Q%!YklW7XkhVw&DNhV$Rsx2gx*aT@Uz8Bx2in?f(# z-g_6FZLH~{c7o62o}8o=l@_`_qNlvwdusOtNrq-Ss}*&1 zHpP16+!a0DBXr{V>TZe?XIXR3>$*RLlusnSEso+;d0*(+#m6dq{t4fN=nx(L=NIp+ zc(4C?Us3G~qNlW@%a`%hmSz`iTl|DyS^N=bYqwvlqI0vaq%+|^;bnc#?w0z{YL9Y0 zq|UY4o>HMt)cu|)%9ih*?T@D>YChQc%aVVpZn8j)u_;|yJuZ>cHzi*uj(FUq&OeIK1W+wK$XsdL4l z>h9B>{tL2<7G&gUyx!2Fo<&?%6iTcs&&=xyg!VKtgqoq%dr(hP&xm@-UuIGzEcv9R zNuB5+aN91N<6En79AtR`*csKixm;eA&lpc}?!hy39<%4sqDQ?rm01K9WV#ccNnb*n zJenw)d@kXg^c}e~RGI2Na#QN)k;zmtq@AYti_eH>%2?VjFI_(OEPQuGXc@fs3`g@U23lO&1m_L4WgqkU;!mVTedZ+aGm zMD6p!AIh``-xsU-!P%agZ=dz9`PqwK?EJ}#YeU+TTc?O?3p^>E2JGXS&~Z1N2aI|% zrqRjq>h$=^bF;ULHRTz2qq=g|$vl|~)BtZ*SrvY3wX%kg#>}h7cfEEsc8Wh&y7hjX z9bT#Gn>SP4sM2x{G^cibqelG_>HDO9 zknW?;PqZKP-B+jL&O$%N>CIVJ{TSz-)0ym49#l)_hl=dxb!C}_>q;|g*41V>!mjEpyp>md*KbT((3#>Gklx;86TR^z;HNo&ngOzov_e7AUN!lzB*Z|Ot@CO}us zfm~7h`{D!svwQx#c)Go^tEa}h<`*v$|6q+a^OJGXUQGHPRt%J zTc#ba+1*|<+4+l?6QQng&p7!Sif?6BtTOUFKl@K-g}#274`ICD){cLs^xJbEMsCT| ze6dse-fwsQ>x;y@D&#v|boh5VFTLzJEWH+CHT^3pKdEz*XYM=Vg&k)aqE&Ctb|IPiy=`HDRri(|iXe~=KiO_?fg!VtQ|6BV@(xG(kJ=&8bP1;!v^hwa# z?)&cXoz})W#_k(?c1%0aap1lK&mPbYb{xF#;Ijus?VK+do`<;gy93--7T4$#~mn;`iUA{m-#4WOW(-6C)8x7y0m)&rSIdq?cshI z}w(G@e#>1lbqlf@^zQ)T|rDWCt@ zn&+34oOrLl=y=7658f!&)Mk7q+Wm7UXMM8lMA4KSXRYCJ;9Ys+z>?6xp4WIBxarXN zA)mkM#J4dTT%4)SI>YAYyd;!RVXL!GkH3NOVx@oX$tr&djYTKF(x6?`P_AET@LjB$ z(rTX_yS#et)c1l#lcc3tQ)fEAbfF5Pz7&u8YPq%;nx|*B*FNqm$`qk==TobrSNgNP z&jmaeFYD`r*Dk`bL~rlsd;d$kbV`qVr?Ro)sZ+61XrZGT+Nv&|@>Tc7 zPbW`BUrlDCuO{?Z;LhGyE~llT4c#(5GPk9nGH&%Yh2~6BEZXGy?n{YrPVwx?{F3ub z&Y6;$)bt8=iz77H8Jr?}Ch0tFx_?gaUVe zCehK=Ez~%k{T4|#?pVP4!e!mV{x0>*Cou~nWv8Bbjwza=$Top|MiBnOtHuVEr`r#; z@6ZBG8QHdIPs$v;r~8_o1@Qc*4~ak^Gn-qSSMhswrjmcJIh;6*w%~$TQlV!P-dp*FO#0NllWAY=ytD{ZXNvSC*;mIY-G6>*6_?+4FRkpJSVow?zEs;? z#VJi37J-WwmUWji^d0mTDxd65FYd11cITn0C)W);k|<+N+1xaEtMe+(V$T1DEZ4 z@Whyq+Br&_hS8Yp^~%0+8QKE_Hh9p(;x=5=O8rqd8pTPiS3aY+^g=5+Skr%X>3^Y5 zS&H6>Sba^Xy`>i|rk2SbBk%r-Y7y|e_PV+kZx3u0S5_q#XLbpApX&DN4xe{w;*q1B z^D^zrMN!Xkij8BeTfWWs{ovW+Y-M#v^^Y#e(TsQMmx=R_+}Al5VR{hC;6uAQ_ISPzcuGd0kTeZ`Z*Kg?ZTqt2q*+ZuBi4a+OjU%)c z)Qe3X;py>gExTLmnl~m#JeB9xb$jp5mY%Pm(y7$-cJ#C^1iD2+t1TWN6W!nRxT5e&qm#D`<8Y~H|iWYH-Wxo|;S@saHiylqyP6;*2s8oJ~)PsLC zq15gbUd*%8TjT$iy|)3Zv#RgM&wcWCbDO4Vl9u!hZrZf8kd`D((-wse@#JAtrhRQbPQ2(FL zd3o+RC-=GBwy=$j1L?V+^ZlIfd40}vp7VU4bLg<2DSid~Q&5KLe-Mh*+L)pq`2#{* zjNh4XtPIQeF{w_mU&gXBsp;@K;NQaKVfU!MzEef)Kq-!?DH27oq9A?peLNm7jwj-? zib~=z9FYr5N+C+1-i05p4!(c3bp&BP;z2wwo*yrW7siWbrq5;e=(u(nX2xaSk2Nmq z;ArAjf^S>{ejM)!;;(ldi%n&~Z)7iy{wmZhU&$Ox`&1#G zaVh-RTyfw~{tbCI2DiqJxvy-Jdagcnv^tU|Bk;c_b?iS>a6|r$c{f4R=8C;RZ^e~I z(|>J!l^AO_S6p={?*^%BcW_;z;wm)S(de_={~a=aSETa?e5|@?Z=l<5bH(n?imQ)O zmwlbqq;(y0erTV8Zhg#UOCr8;2k~Qb#pP*Tn=3wj%~i+Vj?FXm?Y*P|i*g9hJQmL! zPkH|^PW7_`n=2*{72goQvFN74TMN1q6<2=g%YXhCxE3~7h~m<`qwFVa1LOV~KfLl! zc0vE~j2A1U&ZED+>}!2m>bT;#uXSD%$1?8NeU|s7q^OXSX@`q~Ba| zrQPRK!CuwqN7GM}$d7Tq!Vha~-dr&fTv2i0*vA}ojfdmm-is^naEUZ>y@u?*r0#{U zLcL+u=hfR#@YAEOH#=|VyY+TdWwiU~!&1-DUvsvO@?+FtmuK`i%46%PJq|r~nFf!s zOtub=$FF?-XP;AZ96Hwid!tPM3N<%4N*`h| zcaDvXoSu}M6pvn-e0yX6+I0i{mk1NEdUXo>{tWkwBv-E<9qYm_ao7NKWDNU#OpbL; zjrI==4v!A>E8(tz(E+(z@zlQTw7l&|7mJ! zY=F2gHFZX~n*{J6@Q$&;$qU-H11V#JGuCvD_3j?%o16%DtH4&lv~XE71`@V_=AN5p z$emIWqGL2QHOcaGljsTD3Q|1{8yZ)`Uimnx2%FaF8tRiZL>yhV`lh;u+WNZnYr)B0 zz@Aj!#2Ke?v&r$x$Hp&B|3XYuI`-)s?jK0X4U@TnO<3$>FU;ogJuNM=EKO_IUm_Gl zHaBiWk`t*B?9x7gs>aTbXuUp!?HZj*t{%(Y1pNcpS-3w-JF%bmH6hC$7CpK8yn2vk zc9-Pp4tq-!4|evB^^8Ni!|Cip>yM54q5b2-dk4llhe!KHrckS199P=8tuBI~cTd6I zlGzE|T}75|l$Vg3KU^i9+^(m0Y#&9P=kMIo+0}BvgOypj z&TXydtlo}2X*zLfceZTX(Xpd*-I{f4>h*72Km(l}VX<%xNkseh31xRb!jcF zU0vHcTFyUjYsZ<%)c|k3pkqhJdFOUru;qOEXRK>LPFuT>^Dg)*Hh!2w*iB|Op3ybO ziZNS7nhxEk1~Kp7J1kpFu9CSp@Nk~E9emDDmCN(w`BKh%kaGE+yg$oOVF=S~A|{8>`YIg)a-Jb8(f^S-29i6@`!;ZhIJ z@o<^cmtGer^W<}-oa&aJp zc#VfolkwB_f0`$+lk)WSTj$B^rTk%&JkDo#>#sq|`Rt=ygC}1r<$O+4Zmqc48DASc zyw1Z-9$xR^OT~6eUp~$+ZPl1#Kpw{L4Gs<)N`51rXYJ_HD)}2lk*Dv&{20_YyqIxu zAh{Mq6&j=a>9mx{X_`5aF^M_lR1@n+6x&oa^D$me?Ux#BEGUhc`u z#WF`;;mIpRo+GdH^LdX8#8T1f@Rxb~Wui^hPC){NA9MKnxB&VQ^f@izt-c|iY<1$I)_d~xqE*XTM={8ofYon>mjQDYVdNFSG^j8*2F$sK!T(gM_A@c~`@n^k{4j8l zg&zZsTlkNFi!J;SV6I0ReYXJPE*j#ifqAbq@=JlaABe$k17;Ued0a2H0rM8j{>bwF z4)6vGuK+eKhO2zGgWn{6N#)w{RNn78_zdv{2ftbTfrEcXyxYOe;xY$s78g4BOmT*T zTf{O4w~As1ZxR2($_Vqp2!ZWnhuxI^6J;IqXZ2cIK$IC!hr=-_SQBnO`> z3LJc%_(wKgn7{4fn+|@9_>6!jpBJdf9(Y>5AwxR8rMl&AU>t>pu~k@pT_JaSKqY}>&-^cus`C8tqj#FHAU{LU92(RhW7e}cHy;a7=EG-frH2Mfd*8nYW< z!)CEeW0l`UVwT1?O8H{(qMpArO1wmTQ{!fdPZWQm@jpv^lK6neUz0c~eplab`OID( ztP&S#%xCcOpjKJUL8kbpiKq4b;bFEUV*$36UffytffKTmo1ArF7V!#8=D z`>q+s_PWr+%^v3d-o}wX*TetDfk8XUzvtn<@bITRe3yr>^Dy`2Hjer)@NkQVPxEl4 zhyP7lzbcK?_Z<&^*~1Tc`1d?~y@z*u_&g6cdbrxd1s;9@c{Gms{c8_D?%`<2KvZ60p$@ChE4lVP1f=I>`5{4M+~4}a0acX)Wx!&^Oks)uKJ_yv0T(M0!HwKc^4< zU!xCwe@P$tV}GGO-ewY)!%Ch06+$HG?}=dr0{%!$&My*!Sl=b?iU~f?CoYT0J>nC) zW8!S$(U{z;G;v`}J|8BKN!DZVef12K*dCL6xCP%;^Cj|DG9G-{F5t^{nb!J091|B) zj(BVb#$)|cUnRru(CMK*W&3;t^}+BjU@r#x(0d*I55~kae8#(%KJ;*yO1v{BFQ>%q zG5HLa_>eCD2V!zQN6dLo0$8T^dojF`0Y<)-(nmeXe4~@M690h^=hFY8+B=o`ko^kv z)6H&U0SYK@K;BRz&e>5g}jGt?~ zqfLk9X1WWR5A^3Gee^Tt>uAyq81EW<-$DQPbv^FY?TSH1*5BnZxwk3%wXDZos@&|~ zTN&>XU4K``#0A86tA3b3yU6~A_8e#UjkqB>09y9rDgb2@ENa}cz;ZON03Nid?N0Nsq|5AGJVwRA%+jf z#9j1zV{%W@L|;riN<0=5e@Y+q{U!QnXU_8z6Bw81qkn&g{=S&_d-_8$@f>}$)ARJZ zW8xR|QI9XfXML9tW00(*kN$HaeTp{KA_UqK~QNMDWxKyW)d@dy)2YZar zM?UA%$GDx;zU&X@>h{OD-N0~++j4xwxP3Y?#_e{^m-P?+PGayc()>>P;CIsp|0DE~ z&NO}S@1qa?$LT}=C+LI!5Pk4v`+zUo2YlH+;QyuO%XR|)uQk6ghIrtY&HIAOA}}no#mVmHdn8gMS}=@E@QLy${ld-iPUf{3w0!o}iEW zNhC-{{|q`oX+2cv|vvKI`YAL7k%(u!7u!4NQhUM& zmuTFr@jF!i2{3pzlJ_2sf2r{e8o#LVH#GiNjo+#9ziIq#jsIQa_i6l+#@B279~xh! z@vk)gfX4r+@s%3Ctnm{X|61d(X#5+Ezpn9bHU2Y=g`UTJUgMa?k82!g{AG>vG{)e^ z>nF(9_!^B1H2yt}G1$rayIbQTjelR`xW@0*xLD&o8YeWqL*rQ*qf^NAOEmr?jc058 zh{m``WcvLY&(Zi}8kcE|L0;;ctMQ*`jKNvPe^lcNjUUh$7oU_L)_9)A&uBbf;0(PHb=2YBiT$H}U4v8j zN7-RpGT1*3j`!>t=#tjcJ^j0?}61ethgiO>hREXkz^zsW;&S~AH&JF8Fk9jI(e?97fpo^&d37} zcu$S=?9Z%G8$ZJunkTVi4?`R^t}<<@*CZ9*H9R^9JM|QfF&vo5nSi-+7mog&DUsP@ zI#KE+A*(Pow7;v*DWJ}ojM|@q9k;CSh{Q8SrL}w4<>SNLzcEv`EqTxQcn>lV$=aJ5 z8}A$H>YeQA8cV@!e`YqMGI<(sy6r6Ua~zV)6M-XSIQevM%5GgJCZv-CJ>#+!vuGHD zp|&dR_%2*#;kD%J8tls=#QDrUDeiYUhSNNGQ*-{nWmEVT zp{7QD`O_;Vd!}&q?XIrWI6hw(l;57<$4J-2-U$q<_&#KEUpjEGw~J{_P2k?b4P|FY zc!%qigYgUzk875Z)M&tO0?Y>!UFxRE0zv`C8w}!6@^CnbAf&Ie3Q=$66EJcAnHMD$$!zXLOQob1bNjbM{arX%UEL(Y zP~J{tm&83@q(f0Kd>J-4FxfZchC+WjfCH6@JR?2MtoXf>T?aCcp#WEc9NWTV2S-q4 zdfJi>9Nst3ucu?`!?Sb-24~XKw~QH@^nu)Z>W21BE0Q+{+(Tx@F?Wp_lK$bznRGdR z%L^{df8RK2c&G>Wopg|#nRVgx=Ppzs=9&1;Y=$&Fw)0-=$3;7IO`!kc){sGDg<sePuS>Mpq=%s!%Cfvo8IeGA+nf|Hs$b>Q9$i(DC3*TVh5rlK?BmB8W~VED7kt7lFcFd28KrjW)cHE zy~ABo!|2Q4TLBG&Hb_f&XGraD4223iaAZ6!_7xBAnMx-+$ScU?VG!REr$IydcfT#@ zZ0)FqoUV0>120}r@HJ1{+jy6jnSekvDQY%s*4n@T^}uCldxiD z=5TF&q^My-v}j$ls3B5RA6*++>aae#HtM5mqb|BO>Y{6-F0wW@Mpnkg$hz1VSrr>1 zYhpuWx7ZL_4;vz@VSQvRtdFdO^^tYZ6j=vNk#*1%SqJMP>tJ1E9juG2gLRR0&=^?< zjgfWG7+D8vBkN#oWF4%Htb>NgI%tTjgNDdDXo#$X`p7z{kF10G$U2Cuf^{5mhsH)n z_Nze`2+yM7Z#iq-J;hn=|ahbFjr?#dJavLjzZMCKh-laAp|{;h7x|w-X}+11Y(xh9JG9 zJJPdDCV~l`6*A*_9uds!ij#1Gs!-ckgo`)X9{6W2AFE|$K3LCKI#wcYSy(TEW|Ub= z#!4`}Lh?k=&YMFX{lJ2RG9{+%h|^es{!r}s`2IbTUH`9{go%e^xh zGnRU1QsgpkreH4dW(dc0lMh&#CF!Nz%yRcpGcyNEx|sztmUAO$>80EVg1wBJg(8QP z%yM`6HiDCJVUE*vjz%-%cni9j2zoJhrYO@w?o3v?_Vps}Op13^>T68)M2a$Gn@=$5 zmByJGXRaYdanz#jOsTb?n?a}+b7u(2!*_c%H9On4b#?66ym#%k znjJOUx72JteQQHQ%|)kgt*@`yfnOb4wrr`d>A0}wtvj~txS*-#>K!}J!6{@4t_N)2 zT65lx?VDS+)NDC(^M;!9x4dOT&Gz%R?ATDVW%HRGdmFr3)ETkYj9>FSIoUbty;`s= zo^d@HiaO07)|@)c#xI?E=NE4K(wSlJmzsWP>=}`Z-!=W%Jzi|aTYe#*SVfFh4F%yI zQKGPNTg;)iF%3Ed%clJ>E;;9n8Sv_ZW7%`;dX8#e-P7evfx2c@OxrHw3~!UC z?^*C_3<28YPJ>~KCftRU$@Ai0yz~eP%oXOuIkN0Rqx}6^H zMeyu;G3~p-UK#p^ zaVA}uS~|REF$kp$3BKW->G8JW`^h(3JXD8tr+B<~foJP8JeZg{>Ano!N`x6_(uHZC z!>hq}r!|HI-{|{mkJk>KJsubyOsgGzhrm06FylmY{gs)==LwHD3EpEy8GNIU zZO-ChIFqh!p0fSYFy!&tvU%O$RT&a|qmSPkl4r`r{fIL4(=k2Hnx?-Myhk(W06p<&wXbbJW+G z%&k3c&XM;Nc)66LvN|_jCwMvammGP|ftSnuBe^uU{0)JZOa30nk@rH5yvAj@rMoXj z-eWoPI0?&Cf9LA?ff-LWftPOpeDiyY$7=@fOGXG@OvgC`yugmXN{E9Pd%uaWWgsz1 z8UCuk!=ps#4z(Z*a(v<-_h}+8j=%rF^RCUit5uDYH^>`&) z)V!TMWGUp`;qkUwJUq&UyeW@&3wX>o_0c!^+vf3Z2XCe3v3!Qt;PD;Fkc$+L9za=yI`0DS>8Do?`n^C$jTqn zH~P9g-YwwOX?=La2zeVk-eXq&@JJByxQ~Qg-lxDb^;~K3{wdGpy=bM2DRQXqD;}@r ztaLqNsv7dR--MlREqIuU$$G(*G2|Wec&*@>{E=_!cqV@}7VmF8-qV)8^LQm^r}KBR#oOoc z7K8T^!l;jWO~1k?pH4X{F&St7ByW|)d$Y%@1<&+@Q!L&JkJkyFY2Q;V9zKP0(tQ9t z({8mE?-%%8j6dUAw+WF1VE$I)&y)k7lsUY9@J#;JSiDbpyxYMWLKyX(X7TVzo}=$& z@Zy?By(Zl;kC%ULI^BAU$2zdf(FmSt-v*1<=EFSxz$)C?V zVDUC);oV~KPS3)-%i_H$3-1Ao$N5QA{vNY&U{p#o}S;icI$|i+4^I-UAj7LrtW<$1EN$`AFVV77tw_lJ~5|!_P?G^A?X|Mb!22 zvc-E#7G4RIm~n&a-% z2Q1#(vhZ%Pco%2k-DUCKo`v^-#p}$%d(7fpl7;t_#d}8<-m@03D+}*=i`Sin_p-(7 z$-*l^=PZMq_pRP6yu}u;FAJ~M;`L|YZL)X+S$JD5-e4A9r^VZqg*RgHIG>2RJ`PyC z;ViscEZ%O5$7g~({26x_c;6{BDE)js7eO{}5*Nis_#mSlreD(02QQ_eC>;~xg9gAi zJQ~sON)3;#89OaWSHHe)V?$GYW7EcDvQCDmf9vb&nwpv*Z@`ILGQ2x+&6cfg=A3M* z<}MdTFY&XSfaCFe75ev|d{u}4 z;wR{zkK~_yP+V7)NS0kdF3$r$I43|j5l?=PB@xCyk=JohG*=zGqH4nv5Ao!5@=}kK zw9RYVEH+maw#Tck-PgR2@t!RD>YVD-L7b?*GL?Fqec>hKaZcOp_CFFORf!e%T_~zo z$}{W(?f>8kbx!%lHsvRhNtvIQ!u;g734Mlrp#8GPdCI*y*FH8w#VoViswi7o%90#RFhxTL+H`viG{e5_jesmF!>rEp&R!McL(FZ}Yn z_kQ7*WABCZ2jWQTk=e2qirP!6?%vleYvCu=@#de2c*_?bG9juim}|c*IPG4Sgr%B~ zHYx8cO4ghb|8~vkJ5Yw(n%~!)w^X%I6+)}R&_IWlAhaY5jpC1?wd z{3q%mXiLXpe~5~c)N#I_Ax;ofi9GDTTNo@9MZqEw4;G8kV2PL$oG8kIlSFZVRkdJ2 zECySqs$fxUL9jTsC|D9(7@QcZ2~LVF52}LvU_o$lurMeI76r3|#X&)^Bq$F~#IKX^ zt1540umD2=HU+5)3d{21A|J<(yLr^1wDyUs|MO0=&wg4Z@6@k+a_3APTtP98 zPfy2l+B8?QjN<@)Ecvl@l;@-)`-zjK(6JJKcH0IAO3P=%+@~luvp($fSvSX9hWM+X z)~~OtYxzGu#deOdS0#k@X7Jj z$d4Kmj_pM066C?Sh33cc9BhjHAzn{szp7a%&Ix_RLtoc7H2g0(^i`GjzxlM+u+lRg z^D3opobT!w(Z6xNt9fGV3kNCd$LFkPRz4BBIPh?u_zd{z(Js%E=XT&X9YLwGEY9&!{w6CnTm4dp1eZJd6!kL!jo5e@=Ec?PW#XE@G0U7 zOU`p7M>XcU3eS=3b#P!3mbM;wmc?bO2Cp5JrI^1NIqpa3KD~!aPTElZAPX zB%d_javR`WRmAZy7`+Y zuGI1&$YYR?0rU5{8ed@P=WexUICz0r=HP{**ujg$zoah_=wB?JaqtrHc?X{;?so7= z;wA?t#U2M&iyaPLDmFTJnK;S8I2X~u%f&xh3xeDg`g7^xlgpKA)oh%@}NNc2O_3%q4PKi_;<&_f#n&}HQ{r;*fW{n?%YzE>0S8x#CPvnd=VD;1)X)+CDnyJg#P>b?6%T*L z!}odkb`M|SVZOsKj_I`+0H2sP2F4Mm@0Ch!WnZ4_;ap$1f3O`AlS)rwRDBziz*;w- zrV>{xTQ;88!2XcfufAmnw(D~Yu2D8Ij9)|f^?JYeLt4+ZsvQ#GmFaYNyGg9p=O`eY z`DJ`5KcM+nYWa1lofFW*_D|fP&g-JTff(U39`d!6_$tL?{@DI@x(kW->hlo}DqDmE z{5FQezd-x!M~siEl=(E}-b4)jty*r*z*BFJDxIyDf zG{%c&86TZd%25dtcWKg8wcdQU$umJ|(-Vs|fJpOjFcFOZvdMb;6eQeVa@lAqFNQmXePOZ8w+ z;#b@;6y%9X*#hdrc3DW3Fj{thY5<>@bK|hEZoNj!`1N+?-9V{kV*doUHj|ypY?_u1 zle>1x{vvi`eb#-z>S23Y}@99a2H5spMZX1#w)~$xpIJCN}i$T-8pQ9llkpxKb%8{V+TYX+Wg@l5{C^?0;{Uz~xr*5gfjJd-Yt zMsf0Y8}N2ZpW*!r!XOI!!4ZJk47_i6yb@$QY4J=s9`SfQ$Ew@nnRGwo@ooW+&yL0! zeftn#=kIn1@E8?3qmQnqX;~6O;SmIsSpQ|$Mf-fkQjeu`1>bB zfQrx^!l29h2gf#Y_=jlXX^(docnl{GT{h%>+T-18@z8Zb-kl!r0q~d~>Z4wh?lm6o zG4NJu9`kK@10L@=OJBm`;b=Ffyf1=h%4>hWd78&7!AF9oyd{=C9L?qEs|2r3=Wn*f z`$zn?>zVsrm~_!JVL86)@j5LYR+B^CCq3RIc&1)hkEUMU@A2*e&y<6<#)dcP@$R+K z&F$$NDzq z@bxXWcnh-dYAqhuY@_sTvUrQK@U~h!&SRqVby~b7S$HEB@5C&;0~YV3EWBGRUNQ^s zE{j*4h4+BPTbhOUn8jmTMb*nw7Oy4??^%ntJPYr6i?<>R?`4a}IZIUjO3;~1|Ks%; z#anFgR#`mu#XS5OSBn6iO==v5AL;z>20o5X_c#Y!?F^4T^rcMrE;Pb~0q_m)w6z=L zR{-W8^WDIDd@i8A7*PM3?*=w*T-Ttuul(J>VRm5ayMfci`tZ8}+s<5Q`}mS%YfE8! zO;z_0ZONzQzarV)J>4BkPN&KqXPy4`k!v4Jd~{CRk~Xns*5TNlCDrXMCwGXYtySW- zds5RwVrAap$|E9K@ZbxND@*t3Zfbkzp;c{4qxv^i9lMj^VtLV#pNS1^Uuk~wAr-P` zao(LbocZFndxqw=i&aa$DL&jRzf|b%j=>I|aa8^i9S=QJe3JT23wiZR{TpcQvE=7| zqWXgR#$Y~jojAO*tz_x;mbqt(>O)m`r+S9Os^D-H^8C`{WjZAsFJGNb>7j=ww5{j$e8FRl+;P(u4 zKYv8Xx+!QAcdqCtS$0v&#|vU7ixsHjQJHX`~}sDKiJLsSCVPjdND1z zue(|QD$@Q?;fc>2o2K7t4XW(2Km2|v`@?CbKdi{1KYT8-KNK9P-?w+M-535XhraN+ z9Qwjzx-V>aB>yf^n}7IQ4~g4ZiyQC_%ZA4@hw@txwxzj7((M@2ZJWY38RC>cwg5 z@^8$$>FD#sx;5@0{McM^d0N-zioH7$6<2P?L&DLN)7JTkW73)Ziw-`E(6x;1!Ld|0 z@8I+#Hb71i4&%_+Va-@B*5th#`!}p!dt5byBZ-o4Z|q;YZlLcHff^%Ty&A`k;=Srr3WwlLOq{WC zaQT|;es-TJlQ^rfcG2=~7R9t7SoHaK}f+jgLyRNurIr{SdvPD~vezcl>| zve7XfNQT4DlIl=FtJKF{md)dPT3TdLn%1trL@0<{Zrq3zafUBWh@8Obr#O*sBDuN` zVY^1BlB>tobdL4zM)-u>0NiVUjF#mV=MDSvH|)#JF7n(&p0Dhz?$M{lFZS+?m3nxwVsqup&`+GM-(d~uE=FYx3A z;uJ?-=*bJkLPuWY$%{nb$m5M(MP?jrq`&Oo`Qncqe1dqNgR8{l4qhNGaqvRX;^0MM z9x&U7WuQ&*PXN+55I@uH$1$TE{jFDHjuEsm-lj3f1lkzaYRoa9JSY^4HRd%>8{;3M z{M65DxI8Epf37j-wX`Yzw1a1fyELwm@)GfGjX5W$P4Ty=Ogq}l{+WkA<>7lhe20hm z4%Rs8+vDN$J-org%RJ1z#*L%CmkoeV{38#4)5Cw};Xn59hdg|}ho?NucbdjA{WA@K zPkgjC$jGx?H@)6!fAK~ZHM>x|>yiJI1`mo7O(FboYeekZP58k_U_-#7;P8}}GkNEck zGvB$^Gm0kbd7M7#=>UDy({=PwPq)%X=43jk=Z_MjzV4%s`g#yP(_?)l`n5lxebmc* zh7aog09;7COWRJPQf0kWX^iz)iLriLN4=-(euKqciQl9#7Lz3gne~q?A{0JD;|7i2 ztT9NE|2rB3NZhP3Dof(c8ZXlrokZ%d*0@FET8+_ZrF=Ouaa^{|nCtE7l4qe=#<((2 zS;qD39q7X0v9>w0l=6IIKL*aFox~}^Jc@4u*2J$s=-<nMsyz&6eR|Xx_3g=J3A6%LdWRsbj>DQZJZ-{^SE>39g@Z{xqW)H){3Su-XX+ryGdx=$tU@-{sAu`VA9K!k4^1NhyEOL{yNoHlJ zHIS~pu8jkI{eyiQ`!iT3zcM@8KKYGvQfuTnsi^BcrWtS?sDx}EdAZ<-a-j|lRmP=K zs)hk8z#Hf+i5$Z$JmZ4X=C)F=BQ#mC3C_S~X_dXu!kGs&i$LWwN)e{`n%k&mvY6G& z279{nxcQoA;%E(J(L`ol^3^bxb<|}rn#H^+H>24TL9|cVd+n@cX*-GkLmNrXAM){M zocVpo<81)J$jCLn&+&MiKap#k;mxr11mRIbf^T>WJ$<#nof&xliZF=6a@-71mVx&J zk4KxP<_x?qdpz3gK9GSo?ePu;YOZgnrX1IJJf3C7xu|i7Cf%j@7fFTXI5&c~&Exfh zS0gp3e~doXy{+$N@a%dqysJSX4`S)=#1B5J7-!0XsjlRi@F&1)HNcYjJg&dw!fOX_ zYYzHu&yjZ|$8>87aol1rLH%i}; z9C?jJnQb3Ob$>BQrNBc~htB+_ji1Q_g_GbtW`w{-b_sr%zDQnO32Y>hNA}+>_+u3I z+q1wchHu>Aa@9}eh>1Y*;`sAz0bc?yg>dr7F}(SnzM%@0CV6O@koR-^w$q&kkLi$y zY=*qQ^LY1zSEqR>ddPdy<9!Fbn>CMmP5$okc-@uhaxg!JccsTW44%oKZA-b!<9)~C z;WcTfufyXV0j~;SEH9cStD@m^>8E>-{Dfly_cyLf7IzG_ zw7PbS)ji#JcPATvFrjSquoJHwL+Z4xp4go_i}4LUXyE|1e91a-CHFB_X($`8n6~&z z+klm8TfVwv*|ye}m6xz~`xi`iE6Yb%PQo6q@UXEaRP99Ty>wW&w9{kmbpFt5VrL($ z+T5%22OPjs@nBU9A!$wkPO|RF2@}S8cwco#Oj{=Eos;X5b5zX?iQ255MC)BF4$MT?}KNGZ$9-<$Kt$IKmXf0Sf$3QkD#=%i8`5| zmmVp^e$n$_U8(kiu1nUpZEl%^9fnOARQSh3yUjI8aS3bPmH(uBc@J{bOS?;!leUZn z(r&XZS#kDI%b_ZP7H7J#rDsmu-D~P^TDF-%4?Q$J6nvO1zfoJb8cA?xch7x2Ctprm zSW}O(GW9=ZoU_BS{m!!|TiJ+OHj9&pqi}WL+ID5HJ9|V_=<(Pi@?L9PKYqL#JDHwx z6nf%$@%(r}yf9u=R1z;$b2gJ7z%2G~uWY-v67lV}P1_6}Pu!y5waRn$@@7w$bKU6j z&fINyv8iPET<$rZK9sa{am~ZGZM?Jsw_1c}Zi|_Dv->3H?VBsEI&M4Ai=>`ovu(BW zbFQZc@c)>7q@J0=fbSJI+wJMwQ1`#XJW?0>*xUM5vyMzxf247wqP$@n`G##|Cfi8W zJNh_qd2TruenJ<+XG$T!kHEuuVkzYJhZDLyPo6L3oC_$I@5u|KocAr|3OsqCColBm zMN-atrgBA|JTB#&(owsc=Fj&&ijdSvpspK zl=J?lT&X9YBjvnzD>uiJmq~g09YmR!@3iM!4=)v5Yc-CxmQQQUwG-NIe#OD*iFvD( zbCpUtg)78|J$fFm#P zzjQrfJN849R3`SKS%Con$B;TCodC2I{q|Bd9d|# z+iR|PtCllO+JZI%Gl+l0w7un8vBAsm!>sXAUJ1-+&f7HqKdps1+KT>zgXamJ?`vEP zZ@E6<;1k5{4z3bcICz2RcJM;s+OjSZwT^tTD0lD@@lyH{LitVp&t()?%XU#;qm`{VvfhnFK` za{pWU*9$RD{~+FD(T5(|7EsQ2?DXaR^sV$vI>t|se*kSr{|dDZ zkU(SC5nrb3c~qx|`eQp&&g+tTdA$W^sdR>HIsvoCF>GBK?gk9IBZl>iduFf*gh3>BxSSjwof-)3Vf~oMMIZO^ z}I6R2m zre9m*TgPtqHL=JY8yrMMg_gFgv@GVjeZ%AElU?CH#JnOH#W&c^yu&crVXG0yIv?26 zgFtM1EsevwMyK|Kxk+0udqE*QChOmIq4lp^A%O93&-(iMjf3l(G8q59B01Xjx3N)l zb>Tbmu3h7)t~LDwy;Hlo24QqRP}5i+C0V;6QnD^m(hwzS*cd5kij=I4l+;B@>eoj~ zBI}?&vJN7vz*rJb7)xRdSQF?k@Z{A9Q*zyx*o*XtJtGho|M;Y`lb5~Cvpf!O1&FV2 z6`@UUC`;caESXL)9RDnlygfLWw+1@^SJBMdf<=C|B+_QX894bf{Y)X`~VZs&hT#Wcs~W^ ze9}0>$w$7{s6D1BV}&V^T2lpAkrj=Y<5H7<0z~q71ngq}EO=9!=Pd(l~@E$cn@Qe=b9g9mg zbakb$??N715z>i2M&bDNQShK5bkkVGc@U@uf4pYMLo~T|Wb?M4AVd=3PuGXYtS#LtcZ&J81FHB|_eb9`9!GIBqaqrf>51Yy7tJcf``iaKrn7 z$NQ+*3-5@D5+OOh*>*ERO9N&+YO%$Xb*A0Hb}4vr6;zPvw))yh;7{+^zF@;AaR zNxnaVi#GNwzi)Je@?CV_M93~TX^^y zDN&_IsZ|N&zpNKiLngm<_+i`Rz20nJu`~|bzZSnqIV-|z9c;9kx`pLFc%6SJ-PT^VNk34;E zvao>dkc$IxiY2El-e=ND;6XZ1+-G6h-nsI8afc%>@Z<%8`wtk$v+dpZg<_W@FY@F? zg6o6E<>5)sjUN|nTFz%c?wjb!i^H?XS)Vb;PXnL74W4i5kKu{**Jk1?`Lo3j9b78D z>fkxzPaIq(KIq`NVhor;Opmr(9S#np?HJ`tr94mEkNgnx9#31Y4{OXmNn5TPHD({= zK7zv`)LX0b2|{dneZE{ppYx*H{?NwSvS(wFZ$`tG*>q zK%QhcFw8zgVuM<@PpnsKe~Hu8H#7np&sALsNuYg=MGxJ!Jp#(3tF z7?Wfv$AhWFt2ADsF*=Qub0OilY)mjd%QxWzBYXS$^jVaaxr8h3>q+(W4NvaRK~t|^(MJb7EPWRNyb zP<4Rwjt6>rhr6bRvEeup#|v?_+1N&DZNOagb@dH2tsfj5?44<6kcAa(V9@YC;)OhR zZfB)pS1)#6)q?grbrzjQBF?3uUOT&@@Un1)@{&jgS?{zNUANO~{suVeMKts9U-dHl zXgAYB-d>eMXO*4|Z=Sbd*p%H~#JEIQ5N^^h3QLM(b7Pgk39+i!f*8kZ^XB=rd*dv` zegla@GeAvt#2y;=RwAqbXh)|w-!o`b%h=BSU~JLHmXDuVZ2 ztB#m0?p&<@x%yT09gfQeUUV!_P?G zh{dzt<@xCzuy~jnN9w!9;<4OO<-N<|@%@S6$zdDVxCg*1GMx^A=BNM8RD?og-HL>YMT%OtpFwQP>enwx@z4?ea~7dMCqoE}|L# z!IeEy*naI$N4!H^i~V@=B`c6|z|x$&WYF=oOM{lL^`*{w0%5WCW}Ga?*xZN3>_wyE z7N1kKk7w@1sw<_g^xic2NCzk8wOre+-i{zLbg4Z~O509oo4plh`=ydHw$QOpZ>w)x z*_QviERm8Jy)kgPj|uaDcSX&yj(94ar-HW9wvr6`s4cTDlc$(zQ0T40-|Oui496(r z@W_n!47t4X$iC+W$DNha`^7rngjBwochhPIe)qGA}{?SPac=@W}_Z6eK&rwl&7C-i#>V5 z)1MG;bMiOK!zCV`?cpl1)QZn{SMxQd$9Go=2M1x!Tcw;ceB~6LBff{pv2oNlVqw0! za&aIovgCYs^`mqWcp%IZ-?lK{UAgjn@kK{o;K>Wb-HyD_lNUN?Oy!9pPhKRhb>hc8 zd0Y%S@?uY3EZ*wK6P`RF&eL*w+&984-z;&4mU9{!gZxxr^;=;RU$s|>7r!LbujI2m z`E2=q$h21sPnQ2-&3Cy^!}lFrF23yG3h~Ddt`zTc@H}z3gXatG$!uIqoFMm9W)Sno zcWaz)r*R;-&P7N0TLjCXuej(2jBk9T+yFVh&xC0?!Z85*zB z_{|#AX!N+=z2P1>^K2v;$kz^i6T@R&z56EyMh30-ZBp!=eI&!Yw{0?vpTK21x=51D z>o@r^^p5Qv+qyc=f6HiByF7XZUvcO5T28&^kP6jFK2cwfWj?Zq#;UtgC@@Qow_Yi{ zER$bFhXR(*yr1M((Rh*9)i=0HeQVy88W`=zx47~hm&}AZzeEyQ%T$XufCHmxhOESp zAgeD#=96VaNk<3|3$nkS#+x~*T)j-gyCj)9zDCqX_m~iT2ATOVAMn$M`E2N~U%R2N zH`DjL>M);d>@4rwUbi33s@mk~TXPRVi9Wq8epJ4$Y^`Idla zePH@pzUmVv%y2IK#Ug0k*yefjKWQ&hQQ*z~(&$+>Aft3~vMhHt%KNRzresc$l_0 zyk&7^vFCXFLnMaaa05D|=9c6Srk9!gs9a1h?GkLd1@GxDG>FQ{5 zZzH?BCS9NRECjjmk|;#GQEsK>>*HM4u9v8E?*%WHbonka7kxFT@LYJ^;N?<|`@!3u zLwR2UFH<>QwCadzHsxn--+%OY&ERD^hvtXip(;Z6GA7R{yj;YzQosyN_8s=yuj9{t z$2fw=>y-%O92!}bJVX_b;LqmW4j$u^hb)A=+dSUA;4waV9COGeK7c=4-vi(!5k_7S z{tRyjzir-A7LR%iufyX#Z>7ulhR5;F*7u^NFWbA#$~o!sB1))lnWwMD;^Ai`uhHVM z9!>syeXSOc?+c@NJ1t(e?+W`ZUPTstlNPTs3-6G{<150b{M~Nx_}mr6yVv5uJTc_? z?^GWKk7utLXMVDd*l&&Fff$!EG3^YGK6oh;em*jPsR8f}k52%+(W{Lltn*gtGk?cc zzqWp(`jG9F->JTcXF#~{o$7_y@htsLby2&xbkWw$h4&2OJcv`~9PZxDw}w4K@rB(z z_Y7CJH79R7OTAxJk{9K>&iO}Tg@w<|?l=hPOEP5kktYh`&-^wS?}*jicGi>0gMxa@ z+t@P6!F$$r(ag-?E$a~8vUc-5W;4RlZ(W6Wg1G(Q?k9?#m?PhF0+&5fv{j`)E%S%> zr@hm?qPoE7g-&oZQs0;%HT}-Ewt9~IvM#3itMr$7Dt3J9bgz1&3!OM+CU%%P=lLk= zmw8`mw5A@J-&V5i{+^%p6edgB@|#8NoWnQ;MdmA>tZs|7sNeVBd~ngV52@d44jCMIlcZGYc~O`G(mearhf#+dy65@%}^wu$8xM^1}9wxDP63-YX#AMWqnfA@a% zdwQt)%9h2!K85xy4(`0+%%A=(zbWL|BXQI`&oE&Qrf+UWnN&-tf0u_POFdG)^|#eW zhM%mDH=DXE<(u&3tMDd#8fTLf99FHTzFJJm5T!-+u%JCzcS9R_U5`Lhu#@~r+Bhk^@F^2QJt*2HpPBm`dtd&U(RkTYkyMO0X*4V zs(Y16|KktUw<&E&oIP?7@8=7&b|qiYJadC9whZ|JkXXD`Zg&jYdbaL#?KWwQ0Gc$M_DABUdBh-=(-{5YQT zH|(;VEp_E$kCDCIRsYFuQ$f23zrF0f!?Ey{`cC{6>@uihCI0MdF;}|~&L3YX{Z}f( ztD%FFkpBt!IM%Y*ef4x%mi_5(uJHl((X@~K41ct3>&Hb_{*T$E=vitmUncj}_x>+9 zd&QcXAA4KBYE~)f>W?%^QIt1qQr@sh$z+qFdPg4zF3&y7MUl|Ogo^_Y=ZWuvA3ogT zN!R7)OF73^nYVZ-2-w_M88)eQj=ap1m&vn0()Bghlg|~io%rRRyj=X8 z9aFnJQQ^re#50b((vw$;FF5jfo_wD8oR-%jjXYR_xa~PVJo|=np8fJ3OJ7VZ5R(pG zC@yyJB6&8A$$t!%D%>B!xR_WXN*sKm_=UA-851Xo?>IOq{?x(Mg8P9Q7sJ~Ab4ZLGQ- z9EijE`s6)|HdITk>ym@wg+OC8jmz zJ%VS=n6qtE{8F(^%lZ7mvu5fvULkRrI7wrU@#Vo>F-K#SUb*-s3d-_w3@;BV#NTMl zF}pmdlxHnbuF{()&*A};jy6^Q-DlbS0W+r^^Yb1LbKhU%D1V!W&+_nU4_A4Z?=y{~ zzMmKXpZL2T{&Nrik%!;o;q=@`>EkzY#!)}tff+}<+yMB*uVmBaj2FhH?T}iF;C>Km zpeJ#Yveio5A_V&h{Z8%oYkxQWJFtH#{NMuhjx2Fd+ql8!`>@2jg-F7u9NkJ#Ke8wi z@5LYetC45=;7R^%il4Yf+t$HvqWlISnzhevCMH^+TVuwYyH$6Voqaes0yadI;xuo2Xam@=P3< zyGguN=eL9yjV;Rwy(@^}^SWle7+$3gmpp{m5WiEm2lSp!jC2ftzUD8c55Ck3zHG;v zbv_WURma;2KdiqG>3UkJ>jjaSpJ0{7Cu`fiw`tqGGc>+fW7rVZk^gp$TQo*zK~_Yt zS>sDIK3n5=XuMtHE{$PBDfM-0j6zD>qw%>K_iDUR<35eoX^c)P)5pak;}2+z!b?1; zF_%rcb8bT0%aPD1ZNhBxpc00a*p8#M@a&zK z&?hU%BKJ;B><8A?k`wAk3Ohh=Fv3b7AGnMK%XpALW>Zja%NChRHd{}pn}vCz)!$Ih zc>m=+;{(XVuDv~Ko0PCq*g|B~n0cy$j%;Dyc!W&1K$s-02~|smLAF(?ZatGHKenzj z%i#v2i>W4x?!cgE3eGiB); zoF%gk-BH7pJde#L%($s}Li>i6S)_*_OX%OoY*EBnJu-LcVb6-;T2g1aaam-~iaNYu zS(Kx_<-F#W&k+XL-mUdD&&IJBV4EfGsM~Vx=lg^sDt2qiV1A9sb#CU@oa$TV*QGe$ zr@W$a-u&0p4*P;Ytrrv`aXQX>`D|yL`F*y><8y_Pk!yZG6La-yz8ravftO2r#EWyQm(~a#&rCOM&AL4Z9=dAi%hMkJnfwL=xfT zp=mmf*Jp3>9!Q?(H$7eiVJ`D7en#c4_ zdGGOfHQ?209&Pmv?^chu6FgJia*H?W@eWw}?C%-Q^>`0}w*g^m@K=dHlWwEOdk#F) z5AaDq$Xn*|o(Ip=GrD3V?`4a}dNk?!`brk2^&v_mZ?VP0&q!Xa#aonxx5?sh?K>)e zTP@y_EWA#O$F=?_eIpj{q%6Dx7B88FcZd%)tct)j~Dn8mBf!h6c% zEziPx*5a+m!h7E0ot%aDvc==|6jhEAbQ05_S7qTXws@yx;niBaQ!O6*Hpgq@Hi6e` z-2gD0Nyo9l=6w{M?)x0TwKF{W;H6CXRjAxa1K=B;{5IqA;qd`|B2~CIVngQdc-F70 z%Xx3aFY)D(^&QVCm<6T3(*Dx`hN_8-g-%b>4?Zy`kg@=>-i1L%k6uxCp zUq|3uk$GFi%6W%XO!7+Q_a5Beuv_wjBl;YtY8AiiarI4v(kXPPoeTNh1u|UrNI`W+ zp*q_tR(-R~i`jp%r2VSuui}w~IZ9Nww-k5qS6*At7Srcl5v!Dxz88MWN)VR?&}&ZE z61BnMG>75X;PP-mN4t~r@H{F+e~IT+wasfQIXAy{?zfbrF{S)iweqh@J|Q-?ZEjI$ zDy8;QeCcr}&%GSyw9Ri@(pGMjAir&>WsWRC0lqLwwUo%;h4{Tsm#nBQ_Tgk(drN_o zoZ8mVwo#VT?C;2O!Rm-9z~%Lf@9FD1RlFX)`rzHpxU=!&crDGjvT!Uqk|q=IcS;?X z+g9RxcOA!Wgw%a3d9v#UFQbo12k)B3sk*r$T`mYX>e_uK*RK;esF*S-{r`vdSX3i* zE_Uoa_3QpOY_F&a{NHWE9#(s1`*kUP!*=}*+w~c?>#}F`sbR|b_h+1NhAt*t9C$cS z{1|+WqRQoY@_Z@hNUdDHCohn4-sO}l@Z^OaE|UDDp<{)>&0pNhPu!CiOF8dm$`y<6 zIps}wxKiA2$!Uje_N8Yq?XYjta)r|q<5nr>3W0J8m&m;tO&In4yFF=!-KC2I@th^6 z9rk4wrXBV>EKECWSDr7nIr0KeULa0$)VCy$H&m#z}zzSxr& zi|4eQULICn-25lxUVW@DJ{Mr8N%3V6)o+C#u=K~Ug2KJ}jEmv)r~M9|Bf1=1Cbl?u zuG~8@9lsp=2^z%oD#TBbIMZi)(@xgBCs8;MKSq5}&TE2pvfUc<8sJ`o=V{D7&%Flg zHRkMrcC?E$PD)%P3N%*w;^KMahx*xvX-E4B0_|uAd8dc3_3)^N?Y$Nmzr~Yt{~_Zj zFZ1wkj1WHMKl1R`J^U#T-{IjKJ)^~rWk;NnftZ&uITi8GZRo)4B}_!)ZLaGPrP08>cG-=fy85}UOhdIMxyVpM{} zD>R0kqQpxz21#OMPV!+-DlsZi;s%YAP~86zf})E^SJnkL zDk>nmrlPxESPhEeD(j-6KXzs1|2%U!XWq#<>1l!A%1`E#lX;){KJ%T+J2UUR@67vs z<%X&&J9hW<4h-(H_v4X_dCTgWQ`6S8>fHDeqz@<*tDptA=wMo;3{8Alu0`8Uxp1}9p zYHP7u$y8HUTm90W+TQw}RHh}TB&Of(R+o0?+MmYv-PDQKEtPgS+gr9Xh!s*iw5_lvJ&oz#G0xDAi`AWZU?^WwY{x_bRcDUYGB{$updK zj}k6`ne9>HWz_6ZdPDamoq`Dr{u29Ecs&c^XPh}Mc6hwL8X39f_+N2s>*Mve5kKP$ zZwvu8Z!hq6LxOL3pK^HL1->K&?*k662FmTZnqS8maCj}?Ri@C#^=LbPeE^Lqc&rDT zcRxU?a^xYLJWR)>3n4=$PYj@p?sWXjF){bMtl@!nM&|PPJ>N`tw`IutmkfDxP@pX) zbMVvUZwGjpX^7#HF=YYngOZWU>>U95rh$aqo><15j31^OfgAki{0D^mr(31TE z$EdP|tIic7lBJ#oFGVP$6yf(Yeh?+x#sW20Wm`p&BrgR25&Uf4e(+e&23tCM)R02!{c~j z^Y((rK0|#BH@pQ7kM{md{_>{aJ!bKEFOp8*w=JH%Pr^<2Ig5v?OsnrDi-*IsydVl; z%0WL}{-#?zd!K}xzefW?nnPqaU!= zW8aAr8#N^Oh9@Tg@@vRyLH4-ou`8A;vx<@9+f@v4Lx!~;yA&ddQ7Ftl& z)B^ve8OonPczX>)F7+L13M}}jf2^#fqr7EbLm+mkxHJ^#_{xsi8|UW#&FbLzS9Vke zKl$uyRU+4t>zc3D3f{dSImw(o-$HLNjV>u2lSh#C5Ae}Rth*z>nXDIcZVqt-G zK`-`;KVmLt9M^GgvarB9VZVjBj_Z{N#a53z%aLb^WgdC9BhMD|Jn|ezp5w6}M0;7@ z^h4tJ$tpqaa~*kZVx5*{;&ohqS zq+991C30;qDK8a#eq)>ut6#q|H#!LPi5cSC9z0Wg!GmXs!ya5Fb^|kr&4BB|8$B3_ zK|nd@4O|zdy(ePMLAWlw&4aVV*&duNDm*wxggrPUUPcnsHzxJvihtEu=?{y4)L5mT zC-{91^4Vu-U#XTrJFbh)a&W-GzcOU_}H_*p} ztQ+Y!3vnC$3xv2+`!fDI)h@W+%X|LtdcAH7pZ8eAERP@S$4FB6H|zCJ-1y6I+`IFc zi+{StP{MeL_0TgkHtV648ZU9yKhM(mG%be`x&B$MajnK?J+)5bh?ZkUC;6ysnLdET zW<7S9#%0LdYg<2+*R3}BN<0ix>>29n+i9#Z$?&$q7Urj$uu#t8+5R zT`g5=W8E;KAr}O#6;maWpZJ2d$*R=i471AACd-X+js)R&tFC$}D4A||Pv;2czQY~E zJ;uC>5-JlPw)n)?YSS#ccK7sk>_M76agkyv7G<$Mst1!c3DYC-E7f=I;t1oZ;|gbD z*|HM z?_kHSp31tkCPeDenh^PuUWoOydT;mlh^!{#gir4F9)i89s!mz5ZFq=@)-fs6?r9#O z(|9~GxB2|UH|G~VzWo$!jT%<1d1q-#{Ausg8@7po3h0unx4$3#}*(SgX$&-E4i zru%34%6zkZeq1FJYr1*)Z{Vt~Yb$}*SWF)i&K$o7lN!!zvbBVB1S4aRIexdp%(+L&QGNf{|xUZIJSA1uB7Cxa`auChWCV{@7-y5pK*A-X?TYmUL5#2 z{ERd8GK2uT9NPdmUpCH^_ZgFJ%n8ak~h_w^BRkXtS0ie0LON^+bkXq z)AG749@97Fb@dHfJlrCtWAJZ$YvtM4(3$NTnl z`TMrT&vER(A)0|EoZw2#sU$bHzoQw|k3geWH zll#J$t>+9VJlU_gaTGC*BlF3W$=1QE!0V|)N(0~RmF2KM1t zN1s}I?C9>sa}Dg^9%>sNXdCJ8?&*#7_i$Yg3zL`k^!E(n*$=*m9*@WR`8Z}*=Rn^O zr0Et#moKlcgLvxo(1DTR_{i{iOSTVm?&#?n9@=h=R*1a2w}+3y&cizlT|HsZ+7EIB z6|t+Qe|YE|41S#r9sdt3_3GjIe|e=>=YppcZ%p)er#vfft@FOM&g-u8s)o~LhEU6Y z%AUwzM&iYO2L~J+ba0k~vmKn{;E;oJ#h52QrQ#L~a~<_MjXAgDy6kQbPTmErk#gP* zD5r3q*x=~{0A9`hc=reN8nkZ*|Q(j3Qa+weKMLJySfj+4Rd?Y3ONSx0lw9{^en;TP#W7-uRA7J4^;$bwNV9fnSpD1BSVu^W&D2T34JhuOIo@B z$*g(ZqYtm9dc)1@jmhX(UQ6)`W^!%LeC8sl$0~0!P%WHzR|(|`Pcq1}9++5r zQ|}_G{B*VTc6ayoH1sS>vGg`2G5yNhn_#U>pA0r#wcum|bhDil=%ppwfK9Yk$&@|Zb{7wT$$$h zPR-&tEwHh_Oq@#dp8`wD!p8@>B|blAQVDuJf>t@q@sAze&EVZ*gqDnRUt}ra zYS5^7|HJdd^UNqk_d7~DO;fA-s;T;0c zl!N0{I^Mk&4^^3#_prsoVOrkf7H_I`pzm6|sn&shZt*Z>PMhw_7LVmlSKbgZW$LAP z3SODTv)6&-^#bvXs{*eSecd>7NZo9Y#+{2oe$xstJo*TZ8(tWRU2Xt;!{d|25lmC` zvPk53?-bU;sh0|mzb^7pL?)QUw#MGnBpMUzB7qivOq}5#UlsdCq-b4y9U0jh<{&II z?q3u*7HoZdpfTr_?>rfKXUxd)Qe@*v#XBS#%dw)7+j=1SMAUbyICxmZnnRax?L|}v z#^=d*0?QxG);{wRKPnbZhZWgrdA>PY=Red5&xbC%9IGWTx3)FUGCN2kf7322<7HBQJp&1qGBxI+2rKQ-Fe2Mw<- zs9lpvCE>$X zjU1Nx=C&$7T%mmRpZaXf8u|T#tRqDk*2mjdZQWMGT8V6%R4I0ykXM_6S9A0O59BvT zTC<<<-6n3`hju&dlJW}wy=)zGTSU}eBr962}4Lb5HCw`VA&vxQxJMtVU=e1S297i6Ka*oT& zg&cXVl#dxPo=AAh8jG)F$okrz1f0!Lox z$P2|ep8OR#xY)rJBG=+`?frlB9!EZB;M)7IJ=kvwDxaMN5uF}+$dQM{W{*7Ak>`qYJo2z34~sKA z@;pb5cjP_td`F%yej7kVX&1m=0B`+F6W{m93mkcYc*G+wbmWENvszw*Gy*t_Uj0Sl zQ(DeG0t*99(IYPuw^67a_fEXm!8;s$ zse?B-c%_4FyJ*zUZ@d~uj4Dnz;ujN$6AXg@?3l@|dmnZ^lAA{bq^l~Ucz|54fKJ}*BD7i zyjkN*;QMv@;T>8(Hq^-YS7_VeaUH*3t;tZIj6bMs+=o$V-PCur5TFR^8KnV0=7&7vT{Vk8+8TIqFH^D;C*mTUvY3rm#ZtT~#w)Z3%>4bwlUAw1_E*a^f zJ3EbJdfmHVNCCNW^TBW`OBEjP7>?pq{Q-|DdZn!=MH;nj!=r7~*JayUAiuV4FpZ=p zZJZiA&he}zC=1<7x(51(hPyk4J6M|CL(#V3p3z}>T)SKyr#4rwR}H(RG{%Li_Rt$wuM^C0U7$Vl~o8gFF{q zuvyX2)ze*Hn_{2XRJ`=t#OiC)8E9DAkXEuRt>n+g+yhVS5Wl6sE(^fcg`J0eogK8H zqB?T2Ppchj$qwZmUtMXU?^uEq9nO`eiY7aRMPxSRSn7nyanuR3#!y?L`baXw9y{&O zF_Y6OKF?G z#o-NuH=T;KGy0Y|yaSL|8WMcN<2TjumniT3IOd$rIK%sI1lYW1fVUeGe8c;(!)rjK z>5QnI;XMg#>)YtZoH+&W?;Kt??t^bP%HSJ)cR0M4!7ER}!&Kdq?sO3r@uVlz;%*ia>{TcEe2M@QS374+C zMWM`im!#qS4HO&QOzbdtXfg?Bj_-7M_kefU2*EZw_?*hLc`8{mO^6AUWfhL!i65gB z;WrANy|1xyhI$@{TW37qR6HahxG&e{Ra-pj;*Y#F4zJ$gp@}7UXE?l-77wR7!Q&Wa zr@IEc2;|Hkij&~|9>+GX8@v|HW4=uOe(3P-2k&0ZV|>H=n#0>RGsz2EyayfLE8uZ_ zVgB+g-iI7s^(3R)Egth>^ZG0v zpS_rRad~?!Ug;FPn=Kx%o9Xo3W$|!o((>-Nc&PHUyhkh^4%70UvUnW#)8+3Oi^n~v z>3A<#yg5_wUa@#{r{LuyQ|zy-e_l7!rCV(E9U`s$67`J=&;N>0Gxr|`)GpHswQH4jNwDuwhVfX%kh@qDVMMn5lC0)@ z{gn{4|L{E#;eSs>d(#tw%w$~OV*fFp)I!@NNzLl$&2NW*7EQw_otx4E{m$DKc78ia>U7GOIb(VvYI#l$0lTP|Ce`^nJQ1Yp^U<} z_LIG}pUmA)#&*%A1}EqL=j}-d?xwuh@8E!ggAUGeaJGYU92|0RZeqWQ%4Vs!+R7jI zD-CGO`5^Z{b$M{|4seZ>^Ug&%h4aKYjy~GDNH}aZ@M6FC2TRWVPc0S}*#ES`!rbrV zl?TOX9(k4{&ywGsH0jg!h&O(=_??;HffT?UpjVzFe(I5j9C=9mi$|X8$aBS`mYlXn z?(yJh;zkcH5OEJK6c>ANk+Ao7a6iy|kGw>@f^sm3=a2hm{>6j+@*5PCbGAa;Bj=+2 zh&cnI?U5>tdDW%uk$jCg8z}K-i~j>M`3mQV=QZZch5Ki|tFeloE53?wxJMwH1!|}X=6nC&?n{4C*=)#{{{93M94#>O1+Tt835y_ z)C)PHW^RjQhSKMsuh;u=qfPzX-+-(NKW_9SuGHAr9$Ba{ZY-r7nUnn48lSE)?m=JM z{sD}qt|bx`g!K$-kzR%+tv4i%jZiSz0*6<=lV3#W#_Mz5U}sIAn%+1gBu)XiTx^2O zVza`1$*;3BU~<_^)V_g^ZkWd#?uyE_Xp$|kw zZdmzoz^qFg?O@OPe`rX;MM9QVS4DS#EY~C>NbVGt~c%u&Q05GqG#u;840&IN;fm87| zI6UTqa}wi>KGuV+@1KEFSTdJ)8kA?k|m4em3s~@EA@Wb@4}hJAO9rCGg4+MxMP+ z#r|OP^3jQmKK5y&?^1_1-QuB03Enz~R}P*j2lX0#^$u?%cqV_$kKrwFc-`Q!zE}=> zoyz46TRap!t-k#h4~J=aw_7}Woytx39*bwMQ@Ol{EZ$V>RF7FamOEX&eB0u2tsx!n zIg4kndtu5f+ZjCRUIH&4eb_j2=&ob%M&Szq!%B`(Lt4nre#^-CL6$nousY*aU6340?qi1#JzjqE*o%BJe*z0qJ} z`R2np{_k876_Eq$CUT~Y&uVFGXxurgH8(c2fVM$?AZ8pX)7Bj#Ia%MS+)#X^QsWn4 zks@dO+3c+EYmsOa?ZFWTDFwq{Ff%c_mrq`plTZKx2U@S*HG#GwPL^N!`*;e(%ZEOdt-e&AT{ z9Rc|MaS;hV5MSqu{Nedv>-uPJG~DQ4?Hh-^i*>Lgf}d!ll@@?&ok1^eNT z-t<7Qd24H7B-AbzUby-5H@$dM_+UlzocU$7%1T8?ED~eA7Cy!GoCj`t7-|0crtqO_ zSBr7q!sJ>`(*c<|xqwR^>) z>|@t{z<<-en?6w1-4H6f;lWzukn+VBG{hQ1jiRBWx&^N*RGl+^2J?PRPF2>is+Ovn z#@J}*=#GaweG!pGeqp4cy>eoH%l_5n$4*_GH9imQeS3Mn!xN`&IQ2-y-72qhCYH3U z+WFbluN-TLVZE!Vp@XqS<*xEiKNy_oF2CnNmG6dVW6r;RCoo}Hc`ax&GH1Dm7$bY) z)#p_?O=`9P{_&!w_D$%f+I(<7M-cZA%>V-5O~wd|aM|syWBz%&%=uEzO@uFN;RMbWKT1 z&Z0TvC9SL4sVh_!csjDTL!L49y#x`didS_;JHxWP>c6U!Pd=ZcV?F!4EPl#=HAioK zAglSTmh6gEBiBa7BKEmrSXa5eeN9wUpNmp0^5i@}f|8Z_Mi=hMYhE>)>(6Vtc64ks zH<;HXvI9+_2xVa@32RBXX;E{}9+AD+zo_YBd;Cp{gA;oefxU3lhp$5Pj4t+9HGORK zxzWYJs;0{9NE35kG9ggAg~!S(!uJx-nIFDS)n6=DrF!l^sZ!pn%T{zWyR{`AtjamY zaQ;G7zNhJ{b`yuKrTk6R9Z{U`{j0_Is$>rdRpmb&MNcL#EAa&iqk(pHSZRMen$;X_ zS@oX#R{M^zt@X659qDQD#a72YP`;TsP`zCO2I1f(>p`Mj3wm{`($tT(h~;`y9c3wuHq^FFilKWmPPz<=W0<*iU3j;8?=(>O+`drW>Pp zxr^XK3q6-E?7l40GdMUf7~wpQj_ssmQ?NQX?yt@p_f^jrpEF_FL#S%HY*ED%Rii$P z9m;A`sKvL_pIzMK>&luy>%v&>lWp++xN1GP-sXzN-=d%8G)HBLMlpid9}C?(_Fhp{ zBe|iftfx!l2wZZgVfZwRGJB$%L%gb#+_7RfPslS>9L$|IEh2o8@cI7A;KG~?VGva*|sbo(zIZ%26GkT1BRDSw0i zP+2=__fCI%cE{R|?{)g3{!-L)dk#v&{QN?m@rk$LW}%Vi4mS~vFCM-Afr#pbu#-00 z(ug|tD=TC2JStfhGz`iS^NLM_n?+T{_(MCd+*yO#h{Xc8%Cau_^wPc~1DIp^J|g5* zW@vrjj^Lq^ov$tsxA|}N9sJDFZYd|bP3jumxGd5UZQSmwns;nBN+hc0j*r#0UgcX9 z`kp#38&_fT zcZf5x#t+{-mV>JR#;}9ye5bz}GwOhBgZMop0ii!%!hn>1ji*}rG z;PKG6Lf^_NY6@>SH5T4@!|Kqn=#KWz!<}QHqNcKrve+dZ@kcv4@9s3mtUB3uFkTiN zozc>?b4JU|*8Q>REvrlKT0P@?(>Iilit5mKZZtO#{Ejcmz9%AO@uEkA(dkXW_E1y= zUjDXEhUDR#Jr`Wil-I6!Y!AHh%JG=#;9i60hllZ_buDXm*0uPc_n!-W(d&HFeAdRp z(R){8ezRvHF8fIZjLI)57(YB3xuQM(lhOCB&OXMzd?Y?UUNmuc{14Ap#PcU6M!QB2 zS(1R1EV!Z~9@(=`h}mC?@?J_^LFbRoY6(`*n&Xkt+eFFit+>kiV;GM*vL`xmd?a=q za2U7%dGpQxR@SXeM@GMu#oQ5ZMbw-+QsaoI${RQR zeV^>7e)e}c>gYXmRVCwj8}E*`N9RY?h!@(BdnB(_jbxe=8EcBPpN}%o?L+ym#eJaN z2R9;|_haX`tcpGnY25Cw3Vv_pdJ);uzH&W&Eo-CMJJ#*EZb$gGFYm~`tzrGXy3$za zgIi-cxA}Kw-?n;Z)@|4A4Bj@jGjI_1P&NLj|F*`c@8FV_u^L$3J18n6wJq-vRX*HD z1$WGnxi6FdXUqR=M+;ikwr6*)>kQvTPqcFt($O@kQ>mz- zMCH}`@53>cIK^80Y91PH?ml(lXm|OiR*P?)(%f~~rQ#=LHIJ07tAW(E0O;FWP%;fW z2fW`Y3xz_tp>QZKCqINIHh8#`aC}nqdgx$Jvhy*OCBo^6)RpCdliAl-Y3blo^Hrr+ z@6WnEctha*+B#rIxb*5(d9sIRny-kZ^N*8t#{GLsuRf7-+VzYLzbBLzJ`FXl0S6~* z5znrt7ty4gdfL5JRntl5?ZYx}S1GHEI6jg3vCFty>p2EfXIY)>YYmsa2hHk)%4xUvnNr_1ugUUc`AO=q>wB}*k*KG%QZ2s$A> zb~!GVdQQ9?c3z%TdD(w5#vLLRyRB8KKbeJ-r9fv*8Y2Y|GjA*@}s>5sCC{nd-6+gN0xLx z;l+Lj2Sg$GoGmK{tDm0uK?i3^esc8Ba^%?#&XIiia7!kT`BKhVv~u~5e43PVR;t`IM_wT1obf4F;K&P|_=S$VNXq}& zM8|_CZ~YfbIqw>jD|X~1Ql6YamN@cKDQ_^*MX4j7F6EqcDmUGc&ye!XMvR>@-u%s! z^3@6XOetUQ-~<%2BtKc+S&qIkDd(M~a%GNuwv;E!Gux5Rk#f#Rl$+zo=Sn$e8_Laf zj!d*jcOay|`EZk`Afm}B}82Uj?FzJnJy z`WHI#X7NRCFw&0iz&xlipVaUjn2&of=fcXZfftZF^lf~)h&lTHU{6Q!PKFoz#q*Y& z@4yUOnD4+`Y+=3wC8xgH z@f{g&`Z?ksJ@Swv4~aWH@?1xrE3WX!!;U;G)_LT4jyzAC>5=C<@_do&kxz5v)5On` zgD+~oz>yb-$2{^vM_wpC;gJ_P@*;7gM_%m6i$&BUFLC50Vy#DB>c~sQe2;v(Bga|x z$Y(h68RBVcLt+3ng1zT=ra0=6&vN9m#9@!T%#oLgBapLwa?IkF7x#PkvmO3yaf9Y_ z4D-VV@oo=)j>DfLMm3*fnjc^LeV2zn*Wu3<+cp15$)78lJp6KpUoO^aKF2&i#=A2; z{8JqMDPpnaa}4y0Q^Z^k|5S&6syIdSIVSos9)>;qc@BS`$k%+1k$y2xWNE${k0K5~ zB3{;$gM;7)uz2V_zZK#)TFz^901HuG`F!!Lmh&9?AUAw9J}z+h3&i8e$q4vW;%_~8 zk@%1YpCPXH;4?*s2Um-A9=upA_TVL=)Pv6w|CNJ`YUjhV_8)n0t@x@3*NIPg@KSNB z2iJ=$J$RY8%!8MUCJ#PaEb`z6QRu-d#P5=mCDhM3;s+jluK1D%uN0r~;Pb>^c<}jR z$b;V|-s!=O;%y$hN-Xr?)gsS>n-VtfS%p6A+Wvl)sZF+zh0gh2DDH)vZG-KB?;P&- zV86Ir$FG9C*dGyFfqBe18S!c@XZ&KkgjNI0V}<97X}~|ZPX zU0>gJBaH7jK7;toANym8f1#M8<-C&foyPyb^?`B@le7u`C5<`f<~xmdY0NzEd+I|P zb52d0;H@5FSf zw*)rLcWBJ|EAf|zbsBTLEWwAxD>devwZuPNAd51+%~C!?d`FKTH%L5Fd|qRf-YoHH zt3LUT@Q{PM9DK2ZTOHis-~|qz>)?=spU1kaam@d>9sD^5A9CFFNlnV{~*Ln`u~PiYWm;8dsOrh zzmY!lHPc7@ZSegsBOUt4564I5uZ%u0$G0#_YcR*R@W1MJo#C5sj$_m#NtJt3IiHWLe@D=>H4O2hTI){MI(xN2SKHT|h3| z1LW%&4t;&}pA}+|KGMI6KJv4lKGMI1{9N)68@vQu9II$jKSc1`eV9%{7io%;CbYW;V9fF{r}MQhWytMe^0$b zAI8aFNsJfCE~XFpyR^KMKIFYxZrTm&jrqxD_=WnsUajBd4{*keaP+fkEnh?bFSLHt ztIQXCnJ@6}r2IF!{epLo#*fhl?@9Vd=UenqZnn?xk5s!1PY5B;-+u}L6*Apd=!1VM z>mBjsc|6khTVYmAd1@!cA~TjL`dqY|Y2Z#0f;e2>QM z8h=dVZjC>#@pg?rp>e0i_iEg)@qHSjGs^Tnsd1mipVD}n#`kMHsPU&Y-m39uG`>XR zzttF>TU(b(nD z;kJ0sVDG>nGHo{l_4?=53;Wwz7A_(Hy(=cz4$jQb7+My0WdeZ+K8jx`$${|E}S|zBUe$9cly~id~LvB?$&wI~f=sU=D`a zV>}Z|rTE4Upveo*yd2_r3NVuP^h*mqGDuwp5{yJANpz=#NH&|nE99s&GL+QdG^YgL zG7hA!FMS*zk-UsLvQJHY#(9?KCQMKHcaRvRNPo}OeUnUKCwPg$$+&j|WC9kwrrFsSSXM)rKH_+c3yIgg2RIUD& zk}c}!!bKk=3`Qk2UL}&_;Gr59gLI>eNB8h+RTwGyI#|&?SF}Y{GjOdu_4IY@c{@aC z;cwuau0 znx17V>L**t$}k2jW~I6Kq^Y%r73u1;VR>4~(zKGAbds~rPAg$cNO?xjPW$1gVEbfGO{JQjuS;dy)SYD}|G9-`?Om|JaM>XBu8}|8bH@~65uI<~q z2Vq=haJ$+4N^RS>Cv>M)?y+d7KG}vxdzpQ*jSm_F!L00@P;NLcUw*Q!q;&d>nX}4f z&zW0(%Bk}r74sJ?d;`DYhG(lmwO*Eutk5w_2ue6}yu;z~*{hL}Y>qz}@akJhA)eP7 zXLuVOeYCq=ZAkF_`nb;FMZqhxct&4=!`la*(LuU7-s9wtYbQl1^tC#?+rfJXKjTcg zT#II~slOKBd_#h7c)vvkY~D8T%2V*Z>hR)ecpr0kH-i^Rq3^v8@BTFT<9Flj{5=fb z^c4E)9NtrD^l=^9*7sfTex5=f*Dh?{7%J@X6uc)L-hr&t*#w9ycd`ehe!M13^w}4bJV)8%UkI1szPc#(C|w+3Ox8GR2Uz}ELTczuQh-|!AOy!vUW^YlWrwC`5Jvp&+uLWfzj)< zjJ$*Tm>zkQ|6cQqzNf&$U&0xEF7FwTjErP+{45j|Ct{1 z_b-4q2jRwrpPB@NZ&-Ob-_@a+DZ zj`tvVtUKe<@%|gUO!Bw6G&6l4&XD&*@V1!D!B3aJB^Y!w;avk>Cg=Cd8S=7cWLDnI z;AL_?Zp@JPHSjiOP%kAjGfQ_fc$w(C6TD37`4`}2(yr=eWtP8w@G@zCU(Qh9A2Z~g zgGo~+?d2NqGC99r056kz@z2gI-DdEn)Tal!Thj2psmDpvl)eid$4}$T@z)&QGvGaA zgdm%K`9<)|*h(D_pNjnn7<>2Q`0wyz6hQHD@Nj8Pxae6zM1WWph$Jrrf5hP(0FUA1 z-niC>p*q3i9!;Cq zUYE=thRg)7!r>hRuTks6(3Rj}yOBrVICxt$4?{?T_cMnVS&DR#2Fr^spWuDX;ccl; zwm)>K1n(h-cL{jZLw%gbnD%nJ!;6E*^F`iVi?_$&?X&ciTfEC0-XZWp2&2AJEMBX_ zI}Bb_^U&oJ`9rX${zA*t{wM02XYm#|yc+OKIZm5`*J$xL2Qu~I>f2)Rs;1zzTf9Y6 z@ZuKlj462gEZ&(@@D5tM>M3}KE#BfOcn?^-B~$RmEFOl;wDmV`@oJ{vO;|j1(X{$r zw0P)JX?fgaYuW+2R9aq<#bcXG*A5~U4_QddtFd@EOv`JucxO+++hXw=rr@<(ycJXM z;ui0mDR}!V-nmoo4q80UW75^%VT*U(6ubv4-uYAT#w_03rr?cRyv8Yb6BcjP6ucKL z-s&lM0w>k9zosd8MHX+(6ugMVTWj$+_G4<2a5dmv$CIEPE+x_xjyI;=}iqA~2 zKXTOnEAi2U-Tk7Yxh-FcKJnmFIlcus>+uM4{ONcrEajJ8L3@G9E-CFYBBzb~UvxCo zdfn)g@h^{tukc@W;}xr~dh&|vuDWq#?5f8{{L;>2(W4O(!Cw{qK3d?&%uXd(0m1mbMMM%b$C&yZWb3zx*iYaDP0S-CWo_y*Y1_ zuR?vdIHdiui0|Oi=5w0Qtq`{>iO>>dHQm?9xJAwQY~IAHb-p^tQ3CUqUV{ zW1Sd_l1kV7<|7s2L(^o*MMa+U$r{V~!?Et!yJt_F@?SL%ul9ZKyt&Z0(6@}TM^=CT zX_H>jQHFfJBHI&_Vf(WG@E!WBeP83eqq7f-Xy9Pk#>mzFgA5l{r%QXu?XV6W7>_lF zu4)WC=U-<**-3Nm+%!mmB6ciw}NR z+oWeGYlwciET5`}uWMWNMy|>}Sx@9Rdj36ieSVvIl}^|Wt@KM<#sw{3+EdUX7NM>x z#I39s-|dOIN`xfqO6a;WmOg!r=cAnAP2Tn-DpbvfoBf~4(rwItU+6Lwi*cB~8_SnS zZ<&r0Z5CH$8pot#$0;}(k}XSF+g7bCxFN7U)~vn`P=MNxu)9j9+CTeFVWRJt9%6jA zFYSCyeM#9)HGQcLeJNk&H)*|p>Ynri*^_*YxZ)Z1(%<6{_~8FWAw%LAR`;YVp0I z%K6Q{`_y^Q!gm6wC%*2woxTM>$eGi0UDtIx@5KKnXWdqKVc7?Y-W4itx)%0pi_lsk z70PCFPNXq-xI;uH;)mnDii#`RuZRq`4;~)$&!0ckG4$*ehp(6zEP6B!oBOfR;*Da_ z%yHkM;CKLSHMpqcSa@Put1r@W#krC8c-{ot_D&pS%cEc7$Ttzd|L7jtgss}!p0L3l zL5Znz(G)t5z>cocS%)K~vjIoG2|xZToj<=i;^>^#JbR-Lw#EZh)5n8V^TshkA5$eY zR@mc@`gGYRhlsS2$#GcM#~-UryF$@d=%0`y8#8I*xDEHC3B?z4X}iQhAc~!g;lE5ghQ@P3m?( zwRKwFBBhTz*>b6!_mk~2whkU=(k`a5So&JZP?TZ%uGLdM8#IpNuw?;x^zEfE`;M^G z=VNl6+PZj;%r>5|)D3(hy6n20DRu2V;r?Rh=Ur0A>tnrlpVW0_vTUnMhhZ@Mq|3*8 z;q~K0#{;{LUJo4{7cyzXQ?(&Hc7cwQuV?$5?RXt^HNTF!qOVbxJ^q@061bjc|K$4! zpUI;Qy(S$eJBHis@c24jyVYm6{n_brEy1*59R8Wu7fwFq%gCzm^3FH8RpDfLPyP(Q zW?RC^Or)|PoRGd{H~1~P!Di<)H%=$^O($AN7Y8cGm2-1J!ogOH2g4em2M5G#V2*vt z1sr)$$~iVG7j)!V4$gLPj)Ox|AFo}?g&cXVlyfeiT&^PzOF6Ia%7qsS>MHuyhO^A^;hD^ zOQoFm&&riL^68Fzx+93jqs)Oe_I3o4&o?5wxBd>7e6^?wq zl=C@|a`PSe0x9P`h;j=Yd8L%|K2*6%N4`+X`RqZtg^v6*Dc@(r7zw6%#)s1#T;7{(=YlrHudB2LggS9h6geiFm)GZ?=U6 zY%_VWU)mZpI%v!I|I0N9J{~%HZMg;=c~D$t@dF~uk!Lx!TC*K_wy5^R&vE2AqRb-? zIr5MQc;vZ`JXicjC|RBWEP8p%7Z(5Kk>@$`Jn^JQp6|%>#b-V8X^woFxYHvqaO4GI zzeir^$O}cEM_%N}i^O)1yx5T!du*}7622oZ5odbhmpbxNG2J7d?#QQ$KXS97b^+K@ z_tx(W@hgvfrX!yzzUPt8a^$nbS3L4EM_wjA=aJ8L*gk9>|JpChjK$mcrpx#9|s zyxftOi*}Fv6i0rFz}kJn1z;)8TR*3YT9165BcCUxd*l&E9udFKPN+xkt#ITO;u(*8 zz9XM6zTuHCaO4ZbgC2RMBd-*9dgKco`9g7xM}C?kKTYh>@|7q?0NV|`^>cbc9+C1Y zM_%Q~7di4pj{FQqen!F;Z;8}@rXxR7>_Yz71vno2#F+^`N8$jsXL$2lEw)+Z^@+2@ zxgK1Dj~gSRc0N%nay+A?-+LJwXc z&i3GQ#3>$pt_XPWO7ZWk2BrK3^R5;J1m7dT^t-)`M4x%RP9t*yO=YVyOqO z5wksbt$5X17xTg5;7>hxo%n_aw}{VraI5%;2d@|J@!$=j%Y!!xzQ<>rPizurdGKa2 z-GeU>|CPLCqy20VKlI=W#aBFdtN17|pJ%a{w9P!^!G6)L`4PyA{iln!dvKL_n+Gq# zQY46Q5&Vk%XNWn#Jm&L4#t&;by<&g0_#+dCqgU)dQ~U-8JT~|l9FS}9H*mlr8~jBa zFz*I`8V6jfU^Az_Am$^KorWK6JsVr_l@bR<8?NV+^O=5$KPzF&ozJRh`+12+o+IXH zyhh4H(zZI|^B#(}pZ^n`mw1Q7Veuo4ReE{iDUG92o-aP9G4FwB`}r=7t0XQEH)zaz zoDzSb==aEr#Je?C`in)Y#wvd$(iS@N!+R9kex9l23Zs-BJVU&Q@t^$pl0Q@YK;veK zXGz=Wlt(2l6Gye2_Yfs`S>jHOdCySdpCjI{G4Byd{By;S#=Ive@t2EEjd_ks{HKTw z8b>5PRV>w*bM6xVJTX(_^%BE&Jx(<9qi}`zp~jr!mtYIdKWWT4eFA8b|)64qoHndIv9ZaDjt=Ym~#M{%0Kg zw1dCm;LkbuZybEk!S8eMh=V&Fyw$;L9n8JR#xeg341iCZyccEvRp-`FXbahM{lops z904uBdI&T=2&i2W0 zwqx4pJ&pclY4tv|CPk3f0;jomk?(VF7pqY ztTG;KAalG4=PKLD;c&7YR3Y3C1J<%0r|I*ar_Xb~Pn~C^*P!#!NFTg(?Ld|X`CLsN z>iOODQO`1cl!MoiM0pB*^4dh(xg5{Kz|0SAV9R@QU^Zi5JUtwdoh2cnlGyQ*4?;wVY ze9DG7^bIro6>UTJ0-f$Ajgi@vkoyr?rgxuC?>3D;sqs}Be@f$wa_>jh*)fkm5`44J*P-6_zvOaFn_#usPk|h7A#y4vGcN%Zk`12Zn zSmTE^#-JkO|GmbSX#53@_iOwQ8sDJtBO0S|$oP+HyiemVYJ9uK|ETeu8joq*ukn{O z-l6fAHSW{+D;l?J{Fug_8h=&ey&8W_<7+hjy2gVVKd$k08b6_Nx5iIu9M||88XwU3 zDUG+G5uLQnUbBqQcI99UMyY5k5hg~5x{R6IN%9Vu-PPtw9hor`sEqY`g>DRGb`-`b zVY@RPn5mxJ#Klgt4Pk zvD~mLMvyC+`IHhSMJQQUG!~zvNyh4=LB~m=ewjAx-oh?y8sX&N$r+O+Oj*NH zlB$N4DcZ^BSGFVC3$;!`^Tvyswr$#(h9R|iPD_K4NVB4>v=gwV3(J(~d&49BG>ytb-PLw=Tc~pnh6GtA-BDE) zNg(ZhD(iI;qp89i=3ra*$gW*`qz()sFzN||Y!b=N1#4YN;MINw(lKSE!YgRmOP5*V z4k)*~j^}sy%E(`#)3aVtX zaxlVP-qufRt=+pi+TOuyfwCxV2XDo&l?Y|RL&GD=@U7BhIuc7IO^Mdlv?ZE*7aG!v zrAzDUmQ6MwIwcQgL(|yctgTIJ&axJ7$fb)_lh&YRZB1Hhjw{ldb6kA97t(fxWny?&d=N9Fl-EHsOeJQR z)}_qItX;e;@iR9&Fb2%SioUecvb&NQtAWmt+JYli8t z?bz1L(qhR_Dz>Te3Tct7*`yO{W{OU*XBKJ6k~2t8ASP)xwr7r$!sV=SQmC3S+QFXL z;$(p*!G3QBtQn#eF*!T50uwXCNns~F8?!W-%c7b*z2O!G1G~Nj{S^`uzIfn8W)x!lxS&e8c;K!^5MYl=|j4JUn8N&*+RwlRtjjl1mt- z{_x07K8tgC&m#jiZzBNPi*ZKZ(+=+u@Tv?6zTrLM@c7NK;S{{Tc6hWS+L(g3-{Bns zu1>+*;qV>FSR?C>Vi=sU;Z<)c1RmAAs-)q}S&MY=wRw+}qFY2!@&{S5Vmzr=Za zC=Kr^hxhX|yoViLITA|M?rDe0PM3CeQhQRJ+m0~fOuEAeu=QPnb>Buq zf^T?ugze#R{}snx;|z~swm#ay-EThIwUd9P&1Ys6rmNk7^PUaI_EsjnZViHw04 zGyuLi?ss^Pfp@PFf@k_~FL>r!LN$G}VDA-WxeLetgdd}z>cs}|FeE43D^+R_#M==9 zk>rKoFL8L&7peHvl-Id@)G>_qi_Y;S=9lRRN!%&^z zebeFH3?7Oi)5VaP;63c{9s-YZ5atgVx-VBTPki!d}natlzi}z87S8wsqv=imH*5P$qJl40Vzg-UR zcJSCfd46eY(C{`pyt^#k9E*3h!@I}g*>+~Y5rnZE^i4U&aBTBluy_>~?})?8uU6MB>YH!z{=(sH2QPv!@)qD{(v9QTPIoVO zrkz$=Jl?z5yn8I(LW@`L@SXy%5n)XCH2h4u%!92je{piW!eLroxy4&D1+UuToizn- zrNv{vOP9Zm7O!>+-gb*uHwCZH;w_zmx7XsaZqw!OW{bCM3f^57Z}}9w`z;cFSViFcnGFaMRa=}HMh zUVhZ~6#ZX6Uv$(L5fzO&L_S!EEjoH2CtupPHQZopZd5E1;|JD}V{9qf@v=9zM@3bR zw7%FLB}+uw+avAN#{#^3w6J+bbGgiGeuVN_o8#@GDsLRG{f>*pDyEDFi@E*^|AdGj zhZXVYSKHUTZ`H`PBf)C%bg(kGyP(21OkOIk2t4$hH{<9Pgf*+}Eu_GHRr=coU5%n#4a$>hgA*LEF4-Jgjqr^JYynJK5P z`o*{eG!5*E5A^r+51$jk$F3uUvA&+c$g(9h%OfLk?B?l-ERR%mj>P)9BWEwGSrpke zFwl2S1Qu7Z(JyjoefQF3JzbXxjTbM*79V_+d?X&nMwy}WR;*ZBTP^?9F0ZMp#@@W8 z$X!=_@C0oU@%x;mVG|p2hFL>EFI-&4$HWI=XglNBi8~wCSSO zi?%OYvTRAMK1Mt0+1}dU)i;7haU#*z^z4px^+>JI+_b4Csbx)D+osm0tru);T^(5r z@b-&aFKWGDbKAvhx6(gvSsik^rVTl7gRf%az!bt$+{yc0Orz=I&@{=NiFMDU!yES= z?00a$!9fRS!7#phexY<`Ir3~N=a{Qpwjy~~KDksuYb1Y~_>|@|l={xIu)zD6UhEfVS#sKcdBmP1 z3kRuOy-p3E%$&WXGxnhMU ze%O(R#ZoN~$@)PtvsRUSM;%mwD11oK0C0lx!CV!x<`fS7Y8zHk3&frkv{6Pof6}N<=zJUZ%`r915#ld_gWE|u3 zKEpU-bt|Ysh^^uYzJKj$@96Jr$KloL{DxPlXUz0@KEvzP-V{lo%f8o8issn`>b_Sb!)gU#a8c!Nh#c<10h93yqV50upf;IMHJz;CDWDp!h;r>{#uN5NL%r{bLQ9Nief12-gMW#aXpF=p#xn;g zFVh%-5~K2@yjJ6g#(01$<)>4w9^5To;lYcFu_3&y)RxGVk;vQ|pkAordriU{lz?XMy%Fo;8;FTq-=4N8 z-WAfqPX%6 zw3HRWhNs_hGwK;+&VqTfY6YrXK6-2GYFk#nytd)&p8Cn}RZYQ4|5nwT^v#o@%lRZy zwtd|i5n?KdRoI1|COcGYi3wJxF^Of@NJ7R^gM&9L1x@z~FE7#ctY9@5yy08#Q@sRW zO3kt74bQ-d?ETjn!}k2ww&OpkC&e~@TvapM=Fj!Vsoa2G%4WcW+$vE{W7)6|4B z$1wll;qh8+WF(v8f5ow_kJoZc0TPaL2)ZxhXY=+07g3;{;e7(w=G_j=`HgWV-CGb~ z^Bw`l)FI&v?@EN&yq^P)CRoXGaIR?c+5tGvHqPXa>peDa2LS8FIKyL@%{!7tAIy13 z9;WWn-47hn$Mj4&+&!n9yRWf$fYQ0Vmowz8M8-4G$Gtb1@VM7M6J7`fXPp|Ct{mII z%S7Ly4D~&ip}wkM>U4jP44b?%?|tCmFX7Dbe;~x>#UZ%M2rb!9actTSmE>b1#TGoT zV4F65l>Oyt{2)rW?Uz>6S^JS3ms z-H2nG_lU*Iws=Dh?-}s6AdLEQEZ(IKuevaqKjzEiuf^fjgV%^K>SKNkk9B0{k9##u zdD)K*Z-K+x3m)s0`tqmX-E8ruO~Jd%;-Tni)4ku~;V>=l5sSxsrYpx&7LV(#>3Gjr zJlt}n<-K6>aLbmK_lm`vJ_RoynK$)3!{WJX$mJkaS{=q5vP^8>#x){f2^*+(hDRT~ zxC!saO?=D%_=b1Zisf7oPPoJx^0L(5n60f{QLh$}kH3aoxlksU_{QvcxZ^i#$VEqm zT#e;dLw)i{{V&j=bHGE zp1tV5p59mUrJZ8YtZ^~Fuyu2E-}3OprI%3p+ntZ?ytJ(2k|#v#><#T(%Zr=yD?6IL zvNQjb@^^~r7moQNul)b)y$hUFN0~NWr@Lpmr{~sl0U8*f=K>iBml>`@Oky)L>C6zw zg`h@*PS2HY7?{pnU`R+Z5TcL}gSStTU8sBz`b7hK&nUr3CXM0dA|(O+Vsjv7PM zxW+YVcGnI6=dDxKT~*WFX@>BvuGDXO>OA#6=dJ6hb55PNs_;E}&P5l`y^xHEgtJ;( z!ibe$=f69?=cqfxW6^zt5d%Xv6yT33ep1Z&wFJCY*UbCP)p0i+TyllZ_ zgiS)&g!qI7E%E9FA;_BJ%NGpCXD`?iXMud|68OY1R#mfro&5J>Zyq~&NW9 zFtNWSn-LG(Nc&EHrp4Yx5_Ny_a7&PX2dDC;w!kWPgx%rG!p-g9KXtl##-axf9}+df z0{?s}cY%czxKEz0p10`ZhaZB3-N(-iJg&sV=2nWB_9`*$)?&gQwIZe`B1N(0_D>_ z54Yq*{iEIkr>oh%^@}zfzU@KL;seoBTc+FGSD}gI+ZS~lzFo*)J?7r$K0sP>_T^w7 z#~b6P=MO)RBVKmzTVFOkNwT*w^@n?^+j3AGK3k9sdAQ`(^fE#Iw&cWkrQ+w)KK5z(#`= zyKt^&^hum~5@&ku|AfDB`azr@zU+wqWd#GaTlM?cuIB6@iX zi?~1Gz2CZr-R<0uor$ZzuxQTV>qN<(I%UUM9REq===8$1vt4;bKaFgezW+Txjg+n{ zb$FYqb{+~Bj!qP5^KhOQk}cEse9)E#Lf?GlG-~XLMdgS6qTH;S;?=XS^oq0c<8{&5 zH}f5$QIcIq>8{4#ewPJ4|BCw{mASQ_?R$1n&f!Z%s(#CR3i~3-bWLNFsjo9YZ?b`o zp&l#*gR30N#qdXD_1dT900P(74b!#1xi5fsU3}vm=&s~MT=Ob7hGDDj!GJyPWb30o zV~kE)9Y!w#=xhRmSWX7RGGL*fAECZT)oF7@0*D#_SMQG4SU&WMQ+O!lDnd z;j6nU9&LQ%yGyQ&!GdUEoYh=hHz(x$tlc_u<5o>9GADF#ogEU3xI@7@Yg^;CJjWit zWB-ofCx__>?P%_TxOHRj#ym%!-@&ij=IMcD!`Ob$7cU#Vt9sJmX^B4NOQ-IwE<0SA zz<+-VmO;4`BmHiOEUCJB?Zx%gSBz9uwj8+Js$ydI+gN0zuDO@Zb;W;i%z4E6gya50 zms^34pKK*J5p?&Lwql;v zR#=c(@!Xc!<+-gVn0K8u$8|F34@OoX{Ed@z52j~ca%y?-tGcohn;8!Tdb>BTAB+Sp z3e4;Z%-z&J92kh+*d2%t1nTh-x-!tyJ2Vgp#5N96kAPx*TW5h$ho5Ty^yg>Gm3hxj zde^Bn@{q}fOO`QC;d6z_cFJ|T^TTJlZ(VwoOe>tY;kQq4x*rZp6WOY_S4T0sNg@hgMF5x17bEm-yr~ zt~B9ORKk6L>rl!H_)N-OEu#q6b;}v=!Kv1})OQxfSiRBB8-+Di7q`aZ0rTd?@PP}T zIc(D@tkQ=M8hD1l@_&78Lz}U7UUYLe*(brSYJK-+EbE9>|2E;n4wm?9!#ApqzTN>c zZAxR)wRGv?g%D>p=fbT&HZ*A1MaeZ^=*?w*A9Uc`*QUO%?n`?5`a8S5taUTaA!{`H zIyQiBwXx1+T@8Qv25Wl0|A#Ht^u$m-r!ryFSm$loG~=$ndRsQxIJmK+1pK1zO!T(N zgBabo6V75fb{N>n_nx8t)pkxp?&9*bQjF0tU0)8D%f6LHQgwMQm(#t#cDaV!&E?4? zyA8RA%jv#rJC7mH<8r!(+AhzKd%2vRBW&k20l8{BNPD^I{2cZL!KXIm zfc#^c{#=8ftL^RM#K^m@&&^h7=X(sfhc$`#sEs)=k{;0bc?Lg^RS7<|IR{4K9U9+j z@V!i~5k_s$fuXn2L|dl%%QyJ>>@iJVV8{#D-)izgLte-}1v!;>4NqSoqwhrAc__Xj zgI|=8EaViwla(0q61Gvu>3zY1{2E~SO@eTP zkV6c4Ih `op$6WOnlO&>o5dnfK?Bb-uxb1FpGb#vWJ@?I0er$w82IlD zywAY&U0XUj|AP|1Cw!%XY3~^Njwl_;XG#E{@Y~rsYW)ZLN2*sZZ1d!&I=yZtG7?=>4I>ocSj6i6pr(0oWP4O3yaC`6*iMNFGv`E z7ko!!@;o#n=4iDs*-&mL9!R^%zk#v60)LKt=>3N9pCupsSA_iE$p@dl@6!2HkHoJN zeu(@Hu%RS>4rBcyoZ1ud$cC2meVKfm{|)k??-_wzC~JNm`QQ(e4}FJ(|BML#KKao9 z3i%sxnV@|W-v^({shoV|m+oX<6cX88crOy=it-8*MmeEqxjzCwQNCfu0>GrNhJ5gO zJt01B6WVWoK=ZcSYnOOC8GBUlpAvqY{BFjcBOf2w{*C2|gW1=~#f;rImIexFevjl#h zz!!ovPFvH2b!M+^-h~HW{td2eU~5}Xw3lozg&`WOn#OQw(R#drcSZX#O~_tGKMk#Y z2(Rf8sZ%j7O+?r~j2HUO?&y~8HVhWN9fJ?`ry+5>L?p}p9$+v1pCVb(9x}OU0BjZq z`?saiN+Y?vNO}k54iffqyBMx)!*C^%zD1n(UKov?>5dCnHF;ogV6dOIF_>>}yg+u7 z{lgvod}jcAN&GsB;S6?17;GPE>+M_L7K7fw9!9J4Z;J7e?yi9-l(%&b_S==+PD9qB zqWiH}{uTvubI&x}0mw9x;j3sZDAfUe3Qs)WIYF%GUuOo3vctz8E}=vXB2gGAp(Xq= zYJwWv*4x+Kl@KG%ymGs+69UX6yEmH>oXltIMf)}$?&K$K9_Z~9r`Um-kt$4n zDI;A2ov`_p7QbWcfRhcY2OAo+@ef&v9T2cec619ye-Z&Gbm&xJXKWj-R&MT?K-W?C zaCherhOJ;v4Lf9MC0pOXEkM;*QrOEbUewUBY)QkivG%fA@zYz*E=s!-0CxUJvm3$x zx)tDIhC4Jsmxx$x9lLmlZV(%+Y}zEc7HQkAUcR>6{-!CfW%c9I*pAigcvEz$DJVvV zYA}q>G=tRcNXHUVb)qIqTIVMV$?iZ6p4NFr=cnx1qVvc0r{~2pGE)tfcOLHF)$M;7`H3+TgVS zr;3+s+whmjFWK?ZGp=+pee}Ml@=gHMNg-tN@OuXDb-YKX%E$jPc*D7v=S2|+C-vP0 ztj7DA+kSU4dGubP@`gS7JEqi!M|h3*a2g)HA3=n%5!=NH&`&t2FBOl*V5E~-dJG42 zj7NFyNFQD!5{~qdoZ1ojGG2e4{SJa4?qs|d01;2Ri@|G_0KSx&ypb$Kxb?NhQB1?TPTtus~(04U> z*`)7Y@KTk_7f_J0EGfD;c(RQUmd6hpyyw7+OCfkt2aOjv=tSWjF2TDyt~oMYybeD) z#fRT6@X$mO&IQ9+l2_tKZI^g-x%3*mb>P(^oOr~Myj2Eo7kCs8@z6CScmacVFL)FW z@sP{}kH$;X^gRIH>w-so8ShDhw-*Bdb%ICdOWqd^-dDkk2_Bkag15)u&7ErZ&y+qi zodmDL;592eR84|+sli(Zo-CI_g-7rCYJPjcljVXcOz5jNc!P>Q8UvB}HF>)fUReg- zy$Y{91MgvlHz5P>QH4iig6Y!tl){^of%lxkqx)t$eJ?9KG@Z1(HxwR?9i`Lfsz}xw zPD#rvS9mx~%d1g%(=zZDE4=9nkMbn%F*sz+;Jt-wOFDT-ZAaxbLdgJKkitnG`QXtd z!QJs1eg3=TEvT>84BZoU?u*mdxz{bM%ht}l1>?82yrV?y=)Vus~aR3!5_` z?hOSO-m~r5ZBrc&_}SdT`07ZwX*Rc^d}7j`Vvm2sGr}TGl{_T&7}v>)AASA!okyE1 zPqdJQ;FPL~pLKA%yYd4Q4zhjLe&3PeZ;|B7tJnpB#iO^*3y0~WJ#pW`(gQmhFL>5>VAiM=2ygw> zsnUZb2X;4F&z2luqooIqHs(H`2>B#JK3R6q$K}3*Y_#lPPJlUfG|qfJ5qe<8XxV{j zICJu>EtY+@;ES_`c7FDz0JC-=hB772vIG9l=51%Q^Wx5Zc5WRXPv-ZxD6u`0KkE4s zOO_qCp=3AspP96#_!|E+9%tpVtkr!(lOyh_v__|mvdT67l8{xsqG@W*!AAGpv|5x_sL6JN)GP8 zQ3S3C0VDmxII5}Y3CM4jAK%8!q9 zT7ke;%qsY*=c`u0b<}@3T@j~G&tT=a@fAP%=JA4075?oNH7_%Y-BD|uJYDnq#lDtM zq%IU#dIM~~C&WiK7PgY~x7%BqPI%n+=N=qxx~3`8L}6Cw!A92$wV^OaIicFnn}|uq z6KpI-9B&;jd0=r%aM-F1#;sZPS4Bd>ceB0!eP_`@TgS*T$3BGZmH75!k$!m*~09IHpH#EUiUJZ2sEy64x79XR1R!FGj8KM~m7zMEZ` z8xKwmjC^Zqc*Ha6n)TSJ&d{&?C#D2OzU=o*36Io=8u|gvpP$+l%R?-=u>1bb*1cPE<~ZZ7 z(Qo6(8g)bNQ)-Ulv|2`nY3>Of`;IqPS-fs+OI;INEhiG(*N@+RH2;C=p{}b~^?${_ z8hdKe!^HvKTYd*e?f$zwUtk|vWmQ%VtY9nr-VNWPf=hzq8%I4?B0}al0t1>TVMZ5Ec38SqoL16De z>jupBsLhL8fyz)YhiWU_)Y$52fR=Eu)q5bg+;hXFEzX0%h8?$k^ENALb*zZ4=y2U{ z%_)i3u`A<&kX03FD$Uu~_`VlTSN~+ulEX_A_TM?MPiONBVKsfx%4pO6#))8jbJ5(x z^An6;pQ;Qk<}wdt@kKKaUyzXf_*714d($Bg%^>;Sq8W!TY!#N!2ZHFW7Q}zCr#7-7 z+R|iIwz{uDd4Y#nPS0b`M3rDp8?{rn2B{CCv4kVn%h$cD!Ea)6D`2WM)-MG3o?ZG}C$C|^60@ur*JhYj2IEskE>nEXt1 z(z}p!^nN!UTkx*yxlX~zpW3c~{gYO{g$6D%@Km-<;ge1DCV|N#8|!urCr7cHxx84!Ymc`(F^YPD z;FEy#eI-#h2!M^Kjvefiikxh$FH|stjp!j@${w`=2jnG+oNTUjzKi`XnMAO$9<9P> zjvV%T$Vnfy39_+%LE~e6T8*E}UKD(4BMyw3e@WwGy;_a$X0#6$>8Cd1!07pX8XxP~ zYJ3m34Fr`tT3=O{=V|McI`LshmwVZ}HU0U9JfBV1|mb)CP(=%aTKyL)DQ8gPoec&{|5OdOxHNA$9ki{bWPKG ztRK{{m#-h2L_3z!+Fw?P40*U@CnBZ+-6{Ur<9Ite$Uj#SF1ltF91e9ytDBxMm_>x6PVUYCHw&S;D3hvxmXiS z;C~?>wwBL}a4KI1E@~=A?|ZS92lKM22+@(s+(0Y0}ChRM0_iFbj(?-sa9;Gn=LM0)>ptPpsf zz>NZ{Mx-2v1P0(3<6JyFOA*;PZCn*|q@E6L;s-Cf8OD3| z$ckz32`O1W4GqBfwWqfaV_LfDtB}K1QRqoSfDu+^0$F787*d+f;#`Uy29dBz?dxr8 z?`n_H@|$B*)7`bc8y2WEoj!%sHmvG^P36{T*I*nKRzwL6b zsxch5Wld+6#8yQ+YHHSW-!OzF^lNIcY;13|Lk@sRqgCxek6Wcu)kLD}Bd`wb?#CQk z)S+E`hS{n#u}o!>ImQMvwk?H8rc!?iTg+v;Ehd#uTixQton75ssZ24mpl7he{Ohr| z#OlFgET9uslPF|vV60!X`c~ah~%$?={g>13rYSN+e32ADOP61^G0^&ko0tsSeX^( zkmt@8@@u&765mg>X4IVu=1c@M=ykM;vk{?_wlEjW-={1iW>&3jRMG?C%Rvi|Oz+7m?_Th}BZVMK z8QBox6)WMwxHt}>tu8?b)gPTg*Go5eDB7f(Xxr4`RfM-);-SjfPw?CZ?+AE7!J~IDsc#g=YWiLUkJ3Z&;u1*k{>k9IuJDL2_1$mq-UN@z zf%H*4lDEy^c_t-!Xc7tD`wgBSJefXJO@c@7Noqa<;Dr%J@zT4ejJF!cDsM!Imqyvr z@%AY^%1=7pA%&O8cJZjfE6t$qgu=^YyBJq^yiB%>bqa5aqR+Gq41!1V4y2QZrfpy`l>9SQs&JA=KJGCw8U7L;VR|Ki zFM0I99^2ZV^**Zgi|Q9G43K;KHE^HE?OKPgYBo7ThjL`ERdS z3kw+@X8)HvgOcwGIc9s}!s=tLTO48SM9%;HDcet;fxSK@puJ2>4lG52# z;hFpMAF@CsTsthR6;YrgKVhTEol9eU4^w-mSXNU%&lx}B_I?j5b&guFQFP$v9d*@s zMssR%Me`k@_!@64%jkL zYLjVlwUPxU8}`IvmzMQZ|%Rab|usgOGkYk-M7>{WU?EfK2196 z|IgM2;k*ug?$vd?Ot+8A7NDl-SOA& zJ7SL{i#(+r5(&@SADy>9QtglA8&0R}HZ`B-A}5{2bnGy&)4(nR=NLHGz-|M3*n^0l zo?&d~G30p$_8K_fzy$^_G;ooDiw*2EaEXCS4P3_4PtQ)aD>LNf2A*KxiTr$erncQg zcAr)slMFncbt`hRA9}yQ^a@P&NUJrR9O-K2^5oNzjVH4jL*JKZ@JKq?gXq}74k>c7 zN1CT#vPYVzV6s2bk{qhTP2_(BvLN?qNGMd7dH9 zV^K}+HRN7)g(lB8|Zo_i6JjxU)1EKhP;&BsmaR>c^T{1(NgQrI7kqWu%5cSu_E^8X5K%iZjg0@FQ%?9FxwZ0pZs8wI9!KkO&N zR%_?yv*j8tU^N;pWIhcSvHwE*NT#ot{Zzv~7T0hI`~Ngt%I*@F?h&Qf_?f<+CH0lF zHVsc;Urct{;4^lQfwvp@Lk4a%aE*bby&{ss_5YRCvt41BkNZ#D2n11FzF?D#G-zf z$>;l{Yxg(YujxAR-f6dY@{0)X5_W{QiM1f_5c`%xUQ2RdsAk^V@gpBbk~A*hy%}pw z3S1*F=iMUY$ZUwh_uJ1{v^FG{j|l%Jk&c~WZP6P=_zvNJSoj|i{%+y#5&m7m|ETcy zq6{cL6grJ}dhZeWxL4ROB77x<-rC&k**0_$b72KwymN zQ++sKhq;)1DCc;Mz?TXPJ4P=s!ty|kSb`Qncuo*@QC3eKLXGL4AZ>wfuDC3E3=}K|prgm&up6Zm|uD<$) z0kYaM&Juz#d7w4Ns~ zaLTtSrESi!YGtBQ(sDMF{ULT<&#bA7DmFc*mol;i7M^3vtDDPEI%7+~7GZPx0VMxz ztupzZ;pq&bQd?ru%kKJEw2vF#wZ}wZ!X%6@A<89K?6VDffe%uvP0;yre-xSw;tP%P zAX@xSE+$GweMF-$qopT;KoMXsGK1Z*1Wjr8 zGG)mYuZD=WZUl+-OsOm)TiU4B(JBVpVcbhCLz0DvU$1H&)NnM5&W&0Q>2jcwpGW?T`e^OE4^jz(zKSjOO~fwBX!Br zw30<>C3Wc}i+PxjHH+)hNftGvm7HGu*iCsu=v&R4kT7j3IvqkmHZ(Y}?txGqpMiCF0lZg7$pn|&+R#nemc zA-j$t)EldVsq0P+@PpP?VJ8NPso{=VJAn%(>-KlXLX&_lfuRt&;HrjSYH65 zYGaKhXG_brUc5*I(R|H`v8qrvo&m;B^?hFmS5$tu%O%G`xC)7fZvNZ19HD@F)}b zOSG4fG`ydIqw;7?;#B$gXM?vd4exUX??4*fPJ?#{yj1npZSZJMl2qx#(1ex`8b3?L zqw4`tCCa57JU_5>vb}r);lz`}sB;Z{l1IG(@uXV}Ub6)7rOf2fUMkt}z6u^)o6@Dz z_hy#*E=Gp3iFYJR-cwofJSebi;#~z^i_9$ibosp(JgRf)((y*KjJF2kyV;~K0$w)h zJDR1wH?rh4pySUbecQ9-oyd~sa%UHBOP0L7S@Pm(cz2?m%etnzFULiWDo!|gywl+M z!Fxao!InB`9z6aM?$H9qMqt3c4k6w6(J4Os!XT-3?Tay>43&J`j`|4V5x&geT?`(L z?a_}ok~iDn^(y+%BoaK@n@o*&5WE27qz_e?;QbgGQhE0(`cRY!-ai?<2f(BLkMvRc zW%~Zs;61A7qj)55#Nd5Z(dSioA2N8)Df;piUdZ6Rr0`HRiFj!bGc~_2E4)I5H^Jb& zrtoM?U*_XaI9Bz&q43ms3qLk^e^PipMc>l~&jsUs*ufy-QcZK^p!&<^V?$Z)+#)8-U2;ms^zjy;UVh@ebol93p^?hN*}c^8L!D3 zRCt-@BkWRm^vxojzIzqk)C|0b6<$RK-lGZ+pEc6P`;@}N=Z>_z=M)}3m!##rtndOE zcyB1Y$_zXgDnZsqRR&(U!lSxMSI#vGuOFaz&lg*P_??@@&}PvM#KaGnD1E4Wukhi;EMa~{skxG4UP zIwIjDk9^$6Vluo2l{zE=e95DCXbkfXM8r&-#2Vd8(yY&$O&qX1BWj@zSGgeMlZ(o#q*ppZ(_RYsAM=i(` z`H6DIvAXtZh{`_Dyn01o&2<6#8WQMfkM??*otOJO(~h7?wer~+d$6)I=2Hb?iFA-oF{etLPwnt4 zl@`}P?ac~qKVA^(7%r}UaQEGg7oE@g@A6xfPrL4Fbbt4B^^`@E4^I`Px&1L#>yKNt z(=q$13M;?=;UwjcRr&+@AzB@HPH0W#6t0)TPq_b!%eOy9sAKo+&>`M7w?C#H*YZ4V ze=J?Q!rH$9eq9IJySn-VefSi`ciyU`hbg2zIe+T&TApZDoP)P1`#Q7&zQ?F77KF-H z*PMp9_Q_jkJ7!Do?+DXnrSYds)wH6$E$~)i=~694)lzF z-kF-FT|$@ZcISsFcW06}^%|h(&hgZjs$;x$u9nTdvn(4`*Ul8W5cF3xS4liwW;0u9 zc|*_tf>o47hR0vW@5p?mWU;55v1E(S&sjP@XUUwiWVeh?>ZA-emj)ga&SE-t7}&{X zgHO*SwsRVCmw|IQpY8#+%Q57+Tuyzn?Q#vdo6D)cwVm6Ld$^qL!?yDn@;ol5`>XBp z47r!fgHnvIt9t(P4P3za^ekk%0z+QN<#g|~U7;Z_GH|h>uh@|L3|zwbbf33f37e+X zU#Wp>*so{+S~!~H^kact2%|Yp-_@`~Qu%ibCm*%6gPJ+NoE=unQD9 z&2f5^2F|6!9EST9Omm!cxr;pjIXzp^Gk^o~TQz=;!OvkEGhx!aJt*#b@O zG2|ZR)8u)EJdgc`3RXB;Ls`#{m;FeS=Noc+4esRm1%|wUeO5ca(2y50`sOAbt)Z;P zU&Mwqd9ficW*^ezK11$fjhei~ke9HFg`BPtCwdA!{!%te$jP%H_u+t!CH^mG@*4-q ze+n#}g*i@7Yj`62qJ}ZYPs4t8lZGd=b`4Kqmuq+`o2TIlzD9F0{%Pz#l9ve5Kb`$p z!!y{|H5_1{*Kj4a5R30=3Xr_i8*ka0-Qy)xofOeog62FGy9M&r^ z^{F)H=e+{&rIWqlj(Q_{A(NFkR234j*e4nEJF*M+w6+FbPLm{wBOKvh8Tds5f5*UI zG4LY>zT3bf2Bx*kq@(z+HgJQ1X^m#-h(F1|mVy6GlHn8o2L}F*fxlwlhYXDAED1;Y zb|jFkf55=)22S2vZ2r3p`Ah@T_a*5lJ|%m6&W?8d%Q-t+?DfdJ8|-%O#heZL4(Z)y ze=qg+3i&3afx?05-P8+Q1K$x6Yjkg9Y$=7u#9H3{Vvf!Yj9p3LefBzibY7S+GT%e~ zX2uXT^WMf7lES=O?LDq(P7qx;r2hc<_&C7hM?CaBf#O+6KH|aj5#~iajpQSq7V;6# z8uAg(b>t(Sb>#1|*Rk^sGj=0k#DgFn&tCEoPZ5Q8iujN&df)Vpi1G;AbE7D|0TE8u zE2Wc{+pXe!$f-W4TqTdvMLbju^Mc3ukmnM$#DBRp7=c{AR^VoVS>z^<1`voT9xaSllMv?7>%rR9X z+PAr_FE*e|cH!>@Z38g9?>3hpw?&vV)7?HG<^{EN^=(z>4@pXUR~r`D9-}rk)X|Hn z6d5A6ryiu#N}o-}Xe6UyzAC%WNo%;LC()D_v1oZ>?vI`1gdR?z!SuEc6wlbab!}>I z<3sFYVj&65I!Y;s(OeTTGslRU&g-NZ3mxs98^@lEIWm;*b1|Jq>?|l3R)?LmT^Kxn zFl^?N$c)gg=s=2KmS9l{@VeJRl5(D#gp7)PV6c5~Xdubx?x*H8fN3{<{mIZS?00Av zZ%^-lT?1{Mo4QyMb!;2#ZsU`hD2z1IG$f&&f)Z7S40p%S!1>9t+VsF~oQz_pc_myM zO?pDsu_pOuBuo!i14$cAV!{&PZG-*on+Ko=Et2#|QO8ifm{em&y*`QwLzt0*Ccs;O zcxQy=V;)DD;K9;!^abEv^7?i#vS^crg5*t>-$ zrFp6L{YMSvSB)Bw=-JgfL`p*P?vP%rl#5ED>(Ra|n4$cRU_U#Xg?$T@plsvuLC$i2f|5xtp<plO*_n+?~XKmG`>Alls1B@GxM;zG|!B|0VC^2Jfrjc@&%4J=ayhGq+lfKu|@Nz|awo4Oz3yiB>62OzU@7}O4&*gTywO6&Mi6%kj%j>_PND1cN8mw4!i6W=;j<7z*B0?`8sFzo<;4^p zaU}0SL*EE^wUCoOG}#1?=98)VXrF|L;GyXxc$*EL4|dIxhpJBSE;D$;;Q56WHNP$3$$XG6_0jWy%DWD{T7*$P zN)%qT!5dNZm1W@VQ+RZLknx)O4kGJWq!kdzT$Dl;kN2d7;K8072L0>@OP0PTmQ+S!?F9a1{ruhq3E4)C4c*6>>G6OHB z@TxNKMid^k5m_GyPCP^4knKYN&DE3+-352lww>abyr)nJ3#bDUPV&eHFDAo(heRa+ z0wr%j{UTV#C*9lH%hxYmxR}%5e&32=DhS11KE#?7dwF*YY`=%Bq1@I$!xNpbo9|fB z5fJv5(1_GL)-;qe^v0>nAo=a79OT0}^y^a;H#y&N=c>wZ zNBE&|7%8`H`D55aLZ)cKN*1`fqkL;g$WiT_8K}4BPKsLr2mU+f`s1#-6XPvIo}t3l z_{QChR=l7k-YLpOiGTG_K4QEAykDNm3A79q4!x3ypVDBpwsgocvs!m|$`Xw6eI_XH zg&|icZ)M&UbWA_bl}9@Qq1hq#N_Qgc^$yDGyMBDtU4OIr?st>kZNHdR?|EeJyI()P z|EMcu&77BGTW(ja^hIisTC0+cqAq6tF+OAEdm=NgTE5}IM$dPzj_hvy6aHJHuF%zy z9gY9>LRUqETYNhXu!F%0ioekl2|cl=VZ+sYFOkb8m$X>XV6@1O9Xy)0af|UIjn?z? zrdXqaDVI&QV;zpPPi<+ccGJtk~_CV>SHi11(T3FQ8y7K0{n{DlO zdkH}PCT!j*_T13S)vst~9AP%w!u}}O zkSxGz7sQW5=}dR1j%!#h^t{T`TF(*5S(PtQo@C=cJNjUw_3TK6d-TD^oEKU>98G7V z2x;9N&TS1Y_e8v9z9vst+LiPCu+eu@UhMj-UiFg=I~rF!`yl>b`aPqnRTmyE zhP^v+oTD=Q(;FlBkmZTn^Dbs5au;ZiQHgU$UtI>a3~2K~>K88#%nH;mt!ue4u(@wA zFfbI0_4N-{2JrAgcKDa93T*V$I-U(y1UfP21aaCsz0i?6WY@A?vhL96h9ixyJ$nfM zfAKuAI@U~^^ zV+V<${zk)}Zm&cQO+h_OZV5J65l2}`lNFwXYrm`|SjUE0ZBhKt-jQQ;mT%OmdD*4! z{qp8xfmT)6w; zuPD1Ix$nn{vJH-vWjE0?nVPRmcH#7#Al)Z%@J`ut-^+E4Z~qQ8P5=20riq?k-w8YX z;j_>~&$ZI|a4;TQb$a%ct_ug*<;mmlI6W>;jwjdSb{BZ?qM(kM(0kXJv>P=al%BWG zN9OoFXAytk9f+Ua>&BaZDhru^9R3yA<>MP@cmHPl7Bs&v8}s~S3)?&AEjp_*!gs{L z^^3a}E$Qz3Aj2-+gy+rcine3bG~DU1%Gbap%a<>zpUeN@Hn?zZeciG};B>}@E@{G@ zuzPsk>N?;a;A{JO2HzXH8mK+iIdI7Wo~5mQ{Tq`FbF>VpAIHYpnA&`{!-;Rhxa;IM&hQqy+R_iBDl;9j!Z)bQaUG!@y3q1pGka1g9Z) zaXIzBwsRTs94=4Z^KuM%E|=3i*><^x+|A{5ueF`qkbAhC?xVKz81g(WPi8sKkbAkD z?q9a^8uENDr)Lk_E~jTX+Z7n{LM~6By#E*Y9QD)a3bwJfD3*lNT8B0&c@@Ap&Z1C{1?1 z#xFGZg?t|h;!_)RutK(5;};qHB6bJl#HTjtfFJ$Ji(Ncfo8UJCJJDYC@+x6hD{>3+Wr}_axtgxw3CyM8iR_ojCX9SdVsQ=o*_Sjt znLVK4DQu^Pr?QBKE4U3llFprl-IMh($mwi~#>WV&h6C&sDs15_48nW~n1ZO8kxl=H zHH;d;^+WOimpj=`5D8NsO#6ED3QT=2?d$O#fvJxr8~;lMraraQ;bt=g?&8?Pas;Ms zgKYfiJ1*&`K9ctJpg9$U7jvA?XuU$|$fkRvfoYv6=}5lDz|96;X5cvnHutG0G~_&S zB0`GqH!^bggnwz^=M0<}oDuv_8}hphe4~LsU|>E7D8eZInTDLcZAeFQB|F?EUb`O9 zUsJt$w=fof?^r2p+*|GULBcYe+5_>Z$0l2IipSe+fA1mN`E^20?SjtRPCoQdyC6*U zP3H&6hp|A5z|>Ai9w8t6Uh+dWU!F%kvchfOsU4ARJ5L8r;_2uS=>VQXa^Qs@bSm-PV!+Z{!xJ+hEM0?)tJkvoCu>iGjCAX{NtkW$_Oe2Dz0u>D^zZ2ytILkLggE6CVf;tksACZFp?;?|1r4dkP7@N`1|Zo<&N zmwX8Cg-`kpkl!TACn)AF^b4DQoL579_;biddT|P$gTT`Xj3VT6B!TGq(ZQoT12Mk0Cr zRSAqn&T+M{QC}@=)ZZmADs?fPw?g2n1a21iYJo2o_!@zi3%o|)1p;3yaJ|551zsfZ zdjwu0@OuTGC-D0OUMBE$0?!us{Q_SoFd7R_|E0*pxNYw7gpLKlX={nW_I_!Ut5J%i1Tzie%!i%0Nd2pCptlK8qyu$3F z9mF!@WXjEhBE8YgsLswU^=+L!>yzOq`%N%`@5j3ITDZL_f^7+3$LWcE6cTNsvpd>L z7U13O9Z|C1k8Z(k5=y|r9u*`dFm&(i?I)9E`_!IILrFb7P?MA_9E#qkprnp2^_(u4 z*d|zA@*LYRy@4C1qe&%(w6Kvw$C93<4V{Y@rm#=XhM&PqJ*^@3`E3(mz&=i6blU30 zzN-7#e7g3qJA&RvDgm;8w1d>X(GJo2MLQ@}pJ*FdC%PiDKQzR8UzkED`oRGhfniRaN3?4mWkEGx&Hh6yE@)W!hgGckW={-a`nZDm40HQ?sJpfQ3 zN$@4_S%Y^Z4eyHv?@{ntQs~=n@csneBPn?FZU9jteMj(;R*{0&W$>N??`R4h9_uxI zgBTn5P6{5i4>jH(3Zj4lgp=h$^Yc9jgBtEu<>r>C)x* zOl-8X(f1PK%_bj#ye!iPUMhXxMuudbD36E0lWmi*Jbu#PJq#YrPmoUP_(vSz5=*#2 z3}VRj@~=lIokIPgxrTc)22=b9ufdP58RDS`*a-9?s)Sny9)%N+IFi?6@VXQpE`bE^ z3WG;$+tW2o`p{$(ygGyTu%Zu5C&8mJJ2icefLABH3y#%zyTGG*B3_}w3*%Vj4T4Ag z3-M6Z34N^wkJcc+PVkBq9^IE!eHCZ~Ulu%yU#1VkFBKO1MgmiH$4OIVTG5;=KE2F7s#ORDTP<5@DQB1m*bE#t7QU^XR%W%s%J^~+N7-oXxVP4NfmW_A zUd?LehON-effL+b)eDD|#(&1rhFeQ$d{=@K73 zV0XxMx_%9d-4+&+_RtKrvamjnKJCtn%M{c-ZbhvsSbMg|F0XqWOr%AwDGgidusqj# z>yK{*eeJ&f_SOF4MPBQ`E4P21g(;Vcd-N%nrw&*(eEjn>=*(;cNA0!N$U`RMO}ic0 zg+MnwX@qtrI;c~VE`)=3!kCb5Na@nxvEJD-pqr_5R37Q#bz5$S+c1En8;W$4W;gz2 zIzN*EWsOucerqt;vSI9XqcCpk;>K+}VBS0|C^8sr@3k$_FosFv^?jWKZG(MnLz}z0 zdoW~6HeE1NTi?AIYn)&}eiIhuz>qx#-Zyph^$w6-SQ-<#rArqtggCQxT;I?jM&K`* zzpk%i13n83tW$ePoV}%|n|27kq^GaHv)jvBX}mtrgq{l<_zqlz9(QTOU%KU=n&a`; z@>$#bsmY*P?T&SC?n+%T=k5H?+xba5KQtTln(a*XSMun$>H`#>gmmmMu#^28_|$FM z&S}V9T%No|!BR}qpJSY#W5{#4oNh_B%QfU~E~i_j?c9dk!{y0t*<;AD_N0~`uc6PY ztp!RmdVi|%3k+OnV86CjDA~z9B+jR2bh4BC8x1Gl-kZ5RS+X`RW*e3GN#B1bPr=K- z#dPdozfk04C$~kx40du|3MM-_UG8F+Yw{dJp2IHGBvq_PrsKP6LNYla-#lpc|LnY$mtQniMMiHUce3uIn|d1x#Ux@ z6L04_zmV+_e2BsKv6zNS*n2fx$}ZM$8LQH8Ik%4>UF2vj+JCbT1)j*B)9@trInJ}+ z0m<%bM8giYRq&}iN*wvDQ(%g=#8Jp#BEjDuDZeF-0@euMBf<#(3iU}`YMHbaY>&Wn zjg#G&+!xrE=P6#_GF&eNUeKj0=*eL+Q6ern@eM4ZI?`1H}NVxIX zL231c>xbg;VgQ=b@4&kQjTd;Y5NmzHZxP|dBRP`Gycn#NxPij)K1$BM#V$EGB=hz)J<5Bk(eTQ3#w5C7fR+@N$7?35-W6E)NI{dl-)Kvd+&(OhmWC35~5hK&R&XA z3l{6$$=p*S#&5zw(P7a+UOLi}Az=hT59nB;ZxgNGh%&Mv<-fC|t!HR+rw9R|tGl;- z8w@zQV{D*p&5G4+O;?a9gKfO95SAHo!~$juo$c)%_1!&7Qe5N-|DUZ;*S2X}8?|6IKb!WDs<~?|L(~?pOihrc zB_&$FMmAc$CNtY!biR2>obzwuslLyTy#mj9GP3{MKa4K?AMIxA$}T z-Ti&ay%MqVdjQ?XrIW|>9ft0)bWbHm_be$RERUbTvC5-+8r=`2le|X}pz?MB}<6Rc#s_aaQycNF-#6ucV^9@&zrLqRg$Nk+Woz;tVrPVzp805x8EHlzEz zbad}0N9CpR$o4!{yg3Lbo;;7%ajzf+!pV3sTFQCy(Y`m0K9ff_^Q2!od3*r^1fHyW!t(eP9IHGM9Famr_9GmlC=%`nHBx+N#p5Nr1V1{(hu=5w zQ@`&W!N)|R;_(#kE;f%aU0*8isKO&%^dsIrgZE|d=sG8T)R#z}`8_kP=))6#g7Q~dnd!53|^c^*#@G^Zz9aebicT~I<@pcA}yWQY* zDh*s7QW;Tul|}n+HMx03Y&JV-Rr1wU=o=n%F?>tIq>o_G6>zeLeo``W?3E(+ zz_(CFHpX7h-Y1W_Tbz-C znunV9u>2+`zIp!4d9Z1XtE6d#y{j|wCGLFjxt~+iyyhWBPujp&X zye+QC?bahrYjVn)TwzC~**e^mm*d4+L@Ofhsx^-NO&@TO?mAIk>bZGz?u190N*#1= zW2CMI=UU#TMx5)Z+TZj8CeGw_Ce!{@`9n=lJM6UIR(`Ol)TyRDna5q=$7*KC5y^(An~2#M|^__{qo}_%GXrjOPTEk!7DBtUlOux0N~`*97oHdQMmGScG^a z6YNPwv$`{`bwd4Pt&xZ1XV%Q0C+VJ({@k;PckJg$^|=z=XWDqr?vrZf{L;NP zQ+~})s%n}s)HUvNNzZuW&3ta={L;PnOyZ@sBwYvxZtl3)Spz&@t6zYE!i6ijvzYXo*7L1bqU(y&7& zl#fq3`Bz^%sG0L8u?j=q-;*Ng@LgTU4tAF!Cp(KN3MM;?x0LY=va`_TE@Qo)97CSN zzNMX?Yshoi-)nNWA$PNnYjTev_pt4nJkOBl@%46O_Q}pdPrsL~*3Qp2+$FLrM5&LzrN>Td7hP;@4Uz7U`xsRRD1h2bJ^oU5 zk0viOl(g*eO|-0 zY`=zQC+u1%*up9&S8?AS10_3{3pDItAH(%YNuqla*|E@IDPg(?ksXU%uZa3gTL0)7 zP)JVq7_wtIDlqkFWXEzqV7iCU9>=$6IFCgHrh5dfe{_|=bWbRS9ZrM5RU8+v83I$E zUkbaNTn!ho-=O{}J$Cwv+4BNZA5ME5KPj-SuY`S0;2JJ3W%mher@xHdtntfPx5l5K z^pK?AjvK1Ds{+=p2lT%|NW3GANuR!%Ipztwms7`yjI|DfmaFKBk+3#UN7*K0!IYCTHvU_D+S&lFn!!QJG&k{*YTA^5_Tt=Wsa04 z*6w)QHBN-_0-Z>U8(@`G*q>k_7$ZEP&$_EHig!M7+h9=4rgI0^<=c;UtgBLDg3SkcxM= z5$|5$RPmC%7yc6VeGdcp60s)BufyQcx-hjVc&!HSr8N3z-3I(6;(aX*Z?eIob!MoJ zrIY1?*EUUG1KI_Zm2{H#8UjE~#2W)IRX(0Gcn8w(9yfS2Hjt{E|IXmiJ6NiCKW6YS zK#`Is-%&y5t`@vz3E)#6$(g*~EP3?Ks+My)eXnK7t3?H5qpvGV-k~gcFJ;N|V+=2w z^sUX3N9+D%qwhOe@;n$!Xtt}A|4&yRtFq+n%aZpTcr97PTj9#54`<1H6})WH zSLaEczFUzuS(cQ|LGaLI5>6g(L5Rv529MgHbW*k%0l2gi&JTM*iaUf5vOl9!sDH(< zg=VMN0^>T+7=}H#PdvgjW}(_MUajy{yT@vScO7^X59ynTpVVjaA_`Bn$1{1u3Xl4? zbozEHJhJIa$2*|#$mTK~?})<7w64jQ6<$RKecw`e(=za$S9oN!pDul`D!dsPcyB7a zKn9)%l_l$~G6T=A@TxNKY84*UX}WwgD7=~sycUHwGXw8Bg*Ph$FQV`+$iN#`c(oaL zyA|H-47>vhZ;ryFHtWPsx+CDNRxW6Hott*3zsE)KAo_CYB#(UPi^=ehqcIIg0AKRx zJ*I0@yEH?6dpp#niyLgq)VE(hrfva`FtL8jX7ohCe~evz0>3wpmtDnbCXO~t4sKgv zm9!N4BN1AA#opEL8^_pucYH&n9=rVQyPW=$-Dg)t!?r_>KYuB=wIPxh@ihMEq?_-d zm)HxDqFc*?Zyonk?hP%y(pS4Y&Sw6CExsb^|G>JPjgwBYs;B)Q#a^2Op-=d&d)5tm z=KA7SSbtpi)kf#ZPfUJsm|a*OZ>{jm{`VKxRJi8+^2JRRzIi`-u|4FOy)0g{>Pc2I z`HDz;sMXpt`Ofg+bt?z0>inT^54FTtVD})KGe7PLc(%;N9+xYvyC*+8%;q?`wm-i3 z!&9wR|GIlaR@I)#&&0le>R0SFfAJMR^WX1ZGmOytuie%WT7z@$iCI;o{h8QPr`Wz< zReKKSi8Xdu;H}5t}X- zkRQzr5Fysr+Z*T^>h1NiJU1K8D;{Axf{vEP2w7Uf9uwtA`;vNFc1Eg)t;&PJJDPTe zD~H+4R?Fkh=?H8myH|UM!=J~x!+c#Goa1c0BjOyk0tbRSo9+;Le8;ha>!3Bf(#mbU z#_!!wR1J&c4mM16YS*CeF^bQ3+}*koXFtG-s~-wZX<8YUx*X7Db7IGfU?J-o{xmBH zJrb;Lx;E?_zTUduU$&tLHlz7XWgXU_t=X!ybvs)}0-i+r*iW$D&+s1RSXmlj+n)*g zf_7fnu(LI21^vMdBgYWJ+mW+1FT#d*GEXQ@EFOmaLPM6^Ka;mgi|^uEhdh>DF=g9~ z(RKc=ZMzz$oLn>AQ*#F_ncweUbwl3h2mJSKd(RE66;rmYnSMv(A77%-$=h0|PrhM< z6;(}+>Kv zpLX5az&7lSc?0aLAEQ-~Kxb5UbtuO>BRRuXO;zY~!F!tS4Bv@-RE2g1%Ww?Myl$Pt z`KzzDuAf}7!8vQGLr_#-pfoZL92b1KqK>B||F=nk;H*ZgdtwN=dYa0Rw(M`2>A?#reX=MiD$58%5YW_{3{rmW>IxdSD8vEZnUf0- z+csG_h{xs1aeF)-vVhMek!9uPy6FH5NVz>ZxsXAaM+bR%r%!uxa$O#;*Ks=Eg&-?G z|8xO~3JOl2E~JCP!qcaV=%A?R^yy+3PA22}Iwa}O-NxRu{Z_|G<|6&sEhRSA?p@VG z?^WZqxm8;XJ%iJ8rdp;+oBy$Cpmz@GMscvBY&f~kF7TP?Dwm4jf0XOGWtZcl*0^=x z5f>UTuFkZtR_o7>e|&Q^R6X<0q8+IBjw`vI8?}1}g8qu;eDG0_Y^Hp4EMNG) zV9E#2?)dBX9hvbVi#+AhkR&`m-{bsz4|Bc;wTn*bn#Q=7-D;4i2Bt zG~_NWAC+Q^VC(vFxIB4J$uZ=)Tu%M7?Q#vdo6G4QVmr4X_i#DgpKa$cP@8uCe8PS3u!n`FrS z#`%6jKAFpt?Q60jpTgzI^iMJ5Q@K2OkDqGDE4V!QEKy;|r*Zj5W%9A#uU;S1xjflE zr?c;A*WU~S2MkVwi7mt>9B1<3RtiMB|qj{1Rnml&+WBRMyo~)9HC*AGu=>)^NB^VACm8Yx>|ZtcL_=PI*VPzF46G2Sha>PW_cREMB5+TVwbY-NoDXY_HOn??%TEsG#_h^h8^r?;zQ>? zcqNWX_H*(t#hL}CdpOO{S|sp%j&oV1z|?+eepbG~H5_}`e~SJp zz;Pb?xxn;HNAt5jConw&lw#fE`!rn0J}fYe!lE15KZUIln4Vcm z9aCAo!1Rn#>Zo8P0)Ld_X?$IDN?#4f)3tTBX#UqV2$zoVatYv%XI*Bk|HktP*$;W& zXU}``e$KWB^FC?scjXwN&xN?pd>H$i5%24?-HeT27XGW`-)5)Z`vu#6(;F7+Iz!Ja z$i1DIMn(Qpwq2I@3A;YLFaYKHN9;BAC_XAj@7KinkW;yk{s!`cwq2kD^TIe@A@IA! zye%~L#l&kD_zr@_x7?s5JtrHjqrX2SRjEjilL4h$@lH(f% zzFXj11inY$Edt*wFy@=pQM&IFxL4qh3mg;pZv@^f@Bx7%0v{B3Sm65w?h^PD0$(fe z0|H+q@ZSpDD)1)-{(!)r68JiS4+)G$%G3X#z^es5EO3v&4+(sQzz++288UxX^X%|G zo!A?_`-ZlTZCJpW@6{w$v=$a7l4Bc|7#poi4t95H>x~Z3Ht3i^V<<=nu|RZpVte%D zsZsL;F#`nW8JgtE!zm=)#@gPLJ8lG{ZztcpdPQ67nrk+n@haV&eVYdc?FE|cZJTBK zX~xiCfBR-+9n#ZRJGf3&YZI=IaY?(T2HHaVCeCnx906R@Q?*Ei7C*V99V zsq0IM`9|uxFuJ+3zneC+F;2p+&_+mSv>y{#)P==m{2fF61LpZ1(ZQ|Ju5LvKpV_Bj zx%xUL_H?vkHS1)`Xu6NR{kjo|w6>$#um=zo;6U5vp-l#Z%5n^yPf&B1t;imenm=v}8$FihbQPu+q<4Y)Cshu_5j3#D=u96PKl39DP~Z zUE`Of-7$S>L%KPYOP8dTEKDakKSL7>-lv_V`j@&${(63qiGAVih4KgNFkE=(dVBiV z{A3p`MAUoGU5U-tyX>JDI`VG1WYxP~vcnQ`nA;g0my%z=fp7lrWFEDiUUMD$H%KZkP?%!qL@LFa&shei# z@QTD}yrgte7c;^=4o#I5VJme$!@m>2losiv?zeb1r(k4yD}gJe2wSQ9A@)^WJ#^Hs zOFF5ed6rb&M&LRr!dB|Oj(t@(0^OPdx)%-q9tAEGzefz+a}K&s8@dw?y1zE!_Y3Ig zTaI*q+~L(zOGhcL4_-5EC(}EMBWikkprdzB>7;I-5x;w(lN@PfxHlO(nqR0+dWNk$ zhrTPS;XVc(l~w7aj@EHgbu_JqGmy9K&-898ia{C)tD zsypo9-`^X$TR_EBw#jNBEvMyMT`FeN~r$?%o1A zx<;z*Y3K^&^B#yI(Bg7&_bPNTu}>RBm%E+Nk$=c;?nrk)?9)c-dWBBGl(W7p5vA40gTcBI-A>0R{^OD{ldDJbAdh;&_ z9X&&&lh?q^=Z8J|chaM-sl;2jIgh%Bq4Sb|C!zCF4q8jS`F9(1Ui^F7qkoYyZ~3wY zIxpeg4V{;Kp*2&yl!H=ynD(NhwL!e-_Cx0-e#brfM`Jp?3o;7rxiVjtS zt@~ewE~n^lscjuT_YLEppMdD!PkZbnS|6v5RhtqFdsk>r-?~U37aD-6bx%1Bx!;qC2GM=$+Q-dOW1) z$oA``dsNXabI~1FbaYQR`S+5dYj)B7NYS;p=w4HF%UyI4+%U5IQ5)AOepQN&Y{yQz zdPTR=Mc1n6E_KnhD>`}}I)%GM(OvGM>r-@BxajsOI+%s+aA#mYfS+^+pnHpQz$b`u zY?Z_8?@?L&Ff7l?x7A4xT~0Dz#7*%Y39yy^anl;6%=H*x^i`=Q_ zCZM(poIN+eOg7z~n;_Ue+BfP8elyVS+tCr}U_KfTJj#-zbu>mjy6%&GpY%=sX7Rdb zSjX&-V4Wn4Nlm>J_N9u}#&#S^MN+XYF>V&;l(FzAoma&D^u72-Ja<)~o$W{ll9TzE zV&QL5N4$pB2gV~i4yGaqFR~-Xw{$MudH9Q7LF6l_V*6Oo0le9;+CNx-V(3x+MVt1i7#(XER1g+9PD2i&kXJA z&kpR2-_X>vthu-6MkWs|S(3{PjbtMX=()Bo!fo6z3eOS zHsI?9w~buiwh?G>_egH{$mL774tDM6?H(EC>nYGAwfv5QV9&N*OdZ>M`L;orUZbpI z0CGw@*_MY<)#bWdmL-1omp`$S{69S&M#=iZV`7Bh!nl|V<6s=y-zTz1rzBCr# ztpd}tjK%_VXgDuk!})xp!@?0ZJ1;@I=BICbQ8qFtQ1tcGv7a4Mcp3{ZPrLBFPwD`rG-J*K$@0?Z)C$B819$zxJ$V-C!b!wB;M($mxl$9 z>^?&c%dAdABFOG^bMLmU=9WaEDbG(Kb?!aX;Ml9D!Le75W2c^GBbTT*Mb>-niA!|e z&De#E>B@^qT3*HT9+A_wr`yj1rvip&=vMi|G6P%D{LAj?9oj0NEYuvNgP0-C_N#zh zeJ$=fPj+>xGsv!fK8@#3APlOvLimxRdV=ae>E!;GaX{5ky(Br(%Kc9pI;yu&J=sp` z=zP_`Ex>e4I;ndf4yd|=z;P+UR_X?@uj-Bf7Yf(3xjYBm8vLXqKggLndVYD)ZHA80 zES-~oWS{fm--{moi{TkkDBO1ak(M?^`Q6GRKl2o`2*aww&XgVCk zfhrt{<432&@S}31eFFxF;F$cLOgh4~hVBq_bUx{*RpO+3NYRl$PP#`G9d;dc#}%FW z4c(02ONtI=E=T{!hA7ifs_4vbL$5*i58$Pf*UJ1h^f!pqpD7tHb+ipA--dRejnE@K z!&d63R@&A-JaOL2<%QQzZ)|8<*68uu&_Vi$r+gc_kA24eHpJ?SUw$(5%p|P!jkyjZ zolpGynh!tm^T7|(x13STEf_mW-+p{zhQOlsC;N)lmZzTV#0-dhu1Y@dT8<@QajL+2 z+11Abqz^zBSX-VHbJBr-`PP;v{q7;CH7elk2WwNC86jQu;h$95io zKfaoZBAR2*m&L4bw1#>19=?qo_4C;cV|~d;lEtv{ds#KD`JPY5s=helLh}vMoQNTw zx)Xij>PYGYR2DwmHx?OVhcVM0) zhpYaj97=@tX5x!|-#C^DoQTKStUHs(GAnkpwiTBa2Um3YcGUPIjWn;_+kLC}*SC|$ z=o0#puN@6@f9JL_aZSqCRq+tizZ61iXbTVF({>1-&dk_R#Y33URqc;7__}TqzSE4O zzT~RDn8*PXSmZ&Okqd|W>Qje1eIhUX9m%+uhZ5yvY$x)e`pMkB+^U=pvwp6=$#>I} zqjb!NBRG1~lR4i_;hH;cdh(`yolkc9GLahp?y8#AyZ7yWa(A+NAFh?uKAFp173_GX z&sTFtvV1k>?u&z?AL8iCMWd^8(b79|&-kC2Ov=}g)05jO+veEwSTcU?5R^Tc`Qt_@IvCb~*tcSv%kKp6p_@>!x(d6+HeaZ0a-#pyUs;hE0 z%x2MDbN!fsHMsCUzOiX8TlACX*`e2toy3)zgp$SUo*<2THu5Pro&`0?{6`o_YqkGHm+JZ9zd)VA3?rB<%0e_KO2gq7$z!E#-` zYLz)0zF!IRBu~>{_OtjxgjpPAiv#05bCa`!^)gIK)xMp+nis<5seRr1cHV=(xvN(7 zC2H>B_vc$`Dne{wcs#JcPb$g?GXZdHQKCt(hy|aSFMI|ZJF%(9Y?sBSGP#Uv-)N$7SPv7{- z8;PU-Z0TNqEnDmxpP6DOK9O3#H>jYy_eK=-+}@aiN^glP=#9EM|NW`EZ>jTFrk=f} zB3w~Ylk#WQ-X32Rdg-~oPt3eGxj(~dp2~zzJll6iX8rBSdC~0RS@$QO%9P%ISKq8z zpGdCGL~s9S=#!Jy-u{u$M@o^7+dmolWOPdES;CQ-$glTjS9K+h`EZvZJ*f5k)xJ*l zg!qU3+*NNJ-FGDVr@=P7Y|lrTEm*$&hZxFO$)R|?{~LirhciVduwPv~GjQlY@~~3U zOa7!-l=au_vdAtDjz1cHoR^I~v)R&$aTcGk_lDU|v3rtbsrR6)Q>pmnH>|s0UJskM zXD(a%swk7}P|=Z-#}Y>asHa$+TKif1^{D??{7~klOr&~7*Oo5p=u5mj$J-LTK24xb zRlnlD`79Cc)&zP3@nTIdXN;_*hly}C*n089ZPqhtk=5g;=A~C_%GsPtZ$-}Gx?54) z!#%rm-SV4So2SlicMDX-n>5{LUPdOCb9!Tu4j;ylXJ~=r=AJ) zZ1ThH+*4hDv;0w+laBJ^Oz#=@aNWx+#lbn;vpLuOUUd(5V!2cEs@*lt6VFx4+E;My zna-fAei@;!2CJs%GZ{MPsCL+PZ8&Hd9GT{??AX`Q_d;g(mjZsRa0)x&;Ge;${znUQ{Lrv zEzESO_cDDzIT!bGANS{7`FH`JPMp;IqA#jvlV7S|Th5_ho6a(gYW+*kearpf^jG0u z0loB9S<%?=d(c;fC-;B2pNh=#f_+qoywE@8LjM$LMIflCcsX5dLYe)(E` zlEF_l_{jzz<2*f8EEhBQa?aBe%yQ)hUt!=WTu*O;mYZVml?I+_;AsY)Zs02Jf499GCbK1HY4f3pPFJsPELX0@E7?^~HKz!+t5{_TT{Tv11)t!}Sg9 zV}^eV6wJ_9NymORMd7J0*5Qa91dO-1|H1oki0TAC`1dP3_07`tK{lxIMFwBQwrYIH z;6v<6jSm}qm@U@$h`~o#mBtqvd@&1YeAM8h?6q({{Q>m-($iPMUe)+ggD+(-YkZl( zm$7Fwev-jYVvlP4WP_i~?$h{~!N=J9HNM>7%h_!jUt#bStY71&82l7=gT_}Hd?mX= zevZMZrAvW4E`dvQ{&?XALsLA$`VZTs_OYu&DLq> z*BE>aYti^xgRf<^8eeDdb*xO|=NbGw_S+&EJGy@J4SqiRzZ$>5;1{s}t?~5+U(fzQ z;};tILiU)(FEaQ=>|u?+*x-RRezCzXW_M})5`$mDZq@ju2EUYz2;QpyFEMz`BdeV6 zV~uRJhL^E=4L7k#8g6DZzkzf<*22D{;pJ>h!>#Od8eYNf*6>O;q~S{$&F>(c550`8 z(D3D~PQzEQsD|IdP6p)J^xR3ZZ)tcHqxmhQ^I^2>{TfcO0~%h#1~hyn+pOU>wo=0| z?Q6K5g*4p3Ud=y(5x=$U1r4ubG=GV7K8#fUjD|O`{TjZS?a=TwjQUbZ=R;5977bs^ zXxp8`E%KO1n%SbBDPCl`a)RYkFy&Ew!*Jw8w9q}U&C4jj&pr2 zo2TJAHd$b5k5>5S@y@7}KI{DX>?f%22wT^40sH?2w)lGXj~ZUc9vAp4+`mQaiyD71 zyI)`{zKhx20zb(0OW17!ujF_sdoQ-qQQ!TX1lSV3-oUF3ywt$?cWLW{@PFfxOm|A4^v3XH1pcbPLjq%R41WG*fgcrkhroX&aG$_m z6L_1ze=YEUz>f*MNnrH<;r{Ox_;G-qj-}rOqGg zx&?$aH#COwW|tB}qgr-#)4&!C-W}eloHNv$=^<~@_Pp1mmq$%uA-|QWuIW^3M2zko zP0(pY7z2bc;J8=umpC3=0V+G3>B79wTGV=g2eczyyN7Q{%ejp)$^>Z^UwYHqbJ;-} z8-vMM2Qai)1go(&h0)9-nJ${Rl@BatOEE?|jiJZsK4ekv5VPia75RCyH7zyI+gz3= zlpdm~JSFBa6c8h&^K)Bs0WJp54S53a$Znc>S~);jqClFRJKfL6bV)Dxp`P8lcF}C! z{9yMGrgQGi(CpfT`K;LK?jaiSMffHZ3OS}s9H9$uPdmyr8HA%9p*-bG z6Vl#2GStuK(N?ZicmEJ2t#@c>cWwk7`!h14)`Y5b``D>Yr?0-gBb8obl~K&%PK9gF za9?_)cP}q!dm37-{lYVQ4-5_=0O*Hr&W?2V(J+EEGKks7DRV?;5avVL&9-#@`i+S zZX_IYV})a8tZ>YW6^>ca>X;K3rfBc2Yj&KbzS*%XG&>fBCdZP{wHtmdM;Qv-;}YA4*z#Q($)5uhyrT-bMc^;tv6~oSw71nDl{|T z%$f(v(~}-pZ5zJLPIov_*4yzd^=T~qqaOmdsQ&!yd6T%V66r0 z-1;>b+44Q_W5x>&UZ2=}I`7dq-J$Eq*>f@#yyZ`UA?w3<3G_5%9bY|8H5GhKZQZ>2 z3+fjxx_I%DrI(z~vF-mmV0||XAyVY%eLKkatUq%9c|+IgpgU&h@TrG?E0SJH|MvRy zaPf(Pe=9O|?=W=uv{KMN`aX~U_89$#uwN=Y!`3hMKWD`6D>yFGP7e`WEh0^;x zPE>W9p`&kK(nz_Zd2}(^V7*_bD7x(?RPa(7h=gAa}H$r>Y}6;WR12R_bmybQ>LXI}P17 z2OU18YT@1n-5mwO{kWm~Ep+(&Xge9dQ5;dzu?-o9&ycp0I&&R?7ojVZf9s5N`~bQ_ z<&W%^YPct%i`${*^RL#>#fl2+w&7gWzXWtM3;0)Q__r3iLh&=#CD;s|TCU&?ceL)R z8g9RXf8RB9d!Z{-Z@ggW4nRkBuXHlprwrX?sGJL>p&j8QXX?l<>P7dIM;-P1 z^5WlG=+yeaDSq$ssC&wz?zbLwE72d%OZ@gg=Ow*g^XT8NJn9-zNWH{wz@zT-(6!6L zg00i__?buDN=(G!C12hRotJcc&7LPUyT` zx6eVh-ploc&dYUcndB{gLmqWs^r-uHkGlDjy~VG~qwX^vb>H!*n}&y$m+QO9qwYh{ zdAYvdfo`LRaG*@ZMwbHiEPmu4AfxvjRPnYO#RHkzL!J1MhJJWNvFi=p zA?WCMCw^$k*t)kEy2FYNO$u9QuAlJ`bQGUX{7_}ux+=rJM-?5a23v=&C|Wv>LsySu zo%oTzG9BN=zM9^X&?RuJ6F(FQTlbIHS9NiCCgV3n(ZOV|=@QUUTdEU3YNyI@KZ||U zzdq>VIM#{ZT>PZ&BiL7U2Nc~!itaW;_YidW&;5%lx-LUE4v|d9JVn=T=uSWv$FWZQ zmf$DjN8d-(__2j~-BLwYYv|(8$#5yZrGKU_q39Z1bV)_m=%U-G=$5(YIu#wI(J6j8 zMc3@28&z~IF1mw?Zn=x@u%e^#=sFeM8W&wo(Ov1H z8&z~|F1mw??kX4EVMRxEg;PEsQFI+Hx-mt!)i>_1AZFbS+6x~~0bfb#ydKcY6 zMfWxr-C;$y#YJ~S(Y@V8H>T*`;i4N?bT_!@PAIyqF1nM7?nXs71N#B|Y`2)Pe^USlZ+3Q{0Ak#R{BSMX{cYBob=OP55{56&xS;6Ya&kW z)a$_;8ac9NfZnoArfk4`({-3%$olM{TGx zoxM!WLwxRVNsIgJN%a1AI{8p3Babb;Bb~|hSN*W^^3*e?nb$-0gR0uIjmHH)bQ|KE zF+Zs2{o%~_W3>Q0P59H*)B3x=IF*&&Grz*ChIXY=eEqSOWy^157R1V6D^?&6hjaZ| zbaqA${p{cX))VW-vF!u9<4XqhMZxS$FF557XD`h8b79UObIu=LFuJLJGMzexom%)h z_8U0B{v01}>6vJ`fWZe1Tx8&ofx`xl7`WKLQ3ID4xRl2)-}Wdq_%hDtpUq_kKZ*0y zZm`@WgP+WKYLi%QvcbnVPwgGc#SFfj^ZEQMH~0$9Q@hJ@6$U?r^VBA_+!TYavmhPKG1Dn9eH)=UW~lE2ISc2l1#56DfVDfNvv3t#Wcc?O zohTi~bnDp99#D9iV|ZrLWbh&OoW_R@KFq$X z@ezZMuuo`wvB4L!eHtG%_$ces_!5IJVb^GUslk`BW{od1_%e2p#!oW%Nvs+?z30M{|;49dtHGYc0Phs!Z_)3GXwC7Mr zB0ZR)$l#~4TgCarW5zQ!A}|%R0BSnD{7hrp6y67ZgA%@v&0tL$p2=ovc$Q{h^I;_N z59CJ`9{wEmoQCJJM>KqqwjQ33#o4coFO8=UMdy&Ec>{!+!QzWHd#A>O@-qZic|rzNa}HsG=d> z!bR+dqI_C7#J;ZKFgvQ@2>X3V%Q`iRtraGJEY*>V?bTkJ* z{#il16}IGQOutq>QD2ik(OWHhtREkFk$o(>`pmcVJ%Id+W9!Gq>IiM&FNH&RHn!1s ziLv|GlAVdBS|EE4R+O;te1Yq%Z%TfA1a2Z8AJY@GyUPr#yrQXi*8Tn>k~{az~^PaaCxedx`EI9 zo}lVSDf4tU<;%Q6*!7xS@f9NTk(8C5qEae6<*3*DFS}G$fkyq9Cycr=PZ;%Lo-pdf zJYm#_dBUg*^Mp|k<_V(?Jn!Sv3JsHUsB+JHTuyhaocP4zRM*P&U1{sS#;fqCz-T!% zbG(g~Lwl>>Xu0z^D6UhqO{rZ>j@nn$_LNTUZ#Hz)UX&bZ<^HG8$d>JFI!^7$*|Z~^ z)V;^hp{ZDK>_eBKLzAtb?n*;P?=SSOAswR69nEEj|MnP(J=ia#D=~DV4!R%Xxa!|s z4!Y+J-MtRFuNb<|IOr}luE#^r#qg6(=5w{7dlZ5yDZ*CjK7oBT9pk`t1#~$>_X}Wp z=aNqPhgS^EKLV9fgss#?jQCYTSE#&Dc~j#@@55^f`1ea3S9R3qHC{mXT|-A>_6o)C z6&$B`C%jH__YiPW?9)c3<6FW%RVO)Bw*UZA+dT}RrbBY3?xaT@eaGepM z@$Wg0x)>f1Ui{naQFq8e_jf1|vP@7hc?G(lQeNc#F++C(y2FxG%GFWmP&92fT7v%e zVQU=1b{wTssNOsTU9qiVtP>r->G%@-P;|JC>VbC|x*T+LoOI+D{Rq>Xs;Yl`6&D(ltPu#4=ztDz27 z9~_UM4{0n#y+I>n1Bd>kd>vD*R|B^6Z;87^v&M4(`{u$s>`T+s%glt-0R*i zlj>FHbI+zf;@O<*9%p*yI>-6U`>>vB^-6j+ll#Nz*T!oHFWuU@Ffrusez!KB+%vzv z=cHGg%<_Vr+K9Z+r|m+YHnUF~m5Xkxax(rdKtmw!&}%`%egg+s9e8@4ST11jLC(v1 zkXlZsm9n5kegAW^g*x)0a&&Mxf@Wq^`=Y!>nS(TRFDeOl|yNddB zy&^ER0jW>dxQ6rMHJs0<+`=X7&+-!F#!uf^pA2iZQ2FEaQdwq4^x1|MQqYkb(?!>m!`BL*MQ`p5+EmZ-PY5DS-`mjT#p(lr#!VAp1VU|7KVB+0#!Df`iv+F__+o+M z0;8`6*W)FK>+vCl<2r%ScY|YkX+4uZ7N;`tTXsQIN@>j3&HG@C^kM4hzQKN)#az60 z*xc|f1KsIedE38wUaog2J6Px>OjkKFG}v!=m&@!PmfZrRH)NUQL5LZ=)!@Zco=%3U z!gF;?Gru+KH3ie1Ue>z2wW&4JIMK-OqH;Fzzp0Jb6R+T#=IWkzOK2ghY=HuG-s5q) z7Fm?ib259W;_aNo@OuQA3K6Yp>U-5Jepuxxl(T7?#+IH2kd02i_ie$dd} z>!7>I&>aSj<0qXA_pLafhC2paC|vq}Mmp)9!_FEBu$7#ti-GW>+YBA$wRBGY9rUQ9 zKE+=ABO9t0-5QU&QIERE9CTMA17zAMFJ6OAUMs?KpW>|QUWcyG{6_rwPbUg@C=6Q< z+RAa@OYkHAsNB}#r`il!VR)e9Xu@zCKk2CLW9r%!9d@~Yg>+jK9hEO9|N0bNnTu|( zqEl@jX8aB)I@R`J>JBM7O1D$|9#VAloz_YBsG?JCB<45Z$18NNrd z_?Dcp&QSFfKNif#Po6)zVr?aze*ouOu{((E#Pf4@dS-R_=D$%pd0tDnYP~=Hn`OKF z$rWtT^zpm0jj6jb)mdMvIup-kDi5UM*jC}MmDYH+S{$p#u}LTH%D%u#zIj*n5q{P_ ze%3?$oJ00GxnoJBH+FRLx-z7;tYdUVG+Va5CK=5{*N)aDS5nN!`{Jo_DYJV~tu6;T5C#eAbK2!B%hVU$oXK`Gd=Oeaz!fyf)Gv>x{IIwjy4&f0Bwc ztjhSZMeAlHeMm`+f9E&T@>4M{#@r4o)saMd=0NrXQ>mQITzhZdOTL4hk?f2O^~ng1 zPxaN~_|(4k9sAp+^#vC^o|@Jbq*{71$=8nA+Ld z*4}k*=Uv&C{CD6gStU2z&Z?0rK9|O8y!=vHD1RwENlK51SCPnL%HaU=Q!VpJXv6KH z4qsZPortY^nU`La$p85-sG7s`8o`)J>&u*XpO zqI+Y^pVv>kA0q|sF2>~bu*y~G`e;XWXO!Q?6+vHp(YSRlhTG#Phn5dk4*c?m`nhU& zo0Kz)_P~>}X_dsH40ygc_hEJGt(`-~*}AU?5e3dpD+(dx~4AqiAikvk3Y8 z(Y{e%AoWqyC}f>dn5AQW+C}XG1UDe(bE8a_j!0JA>~F{E`0@ zX_@GknwC4bU#Fgn$?P|x`Vr@ToGMQz#)E7n((T30na+!)#>Lz9ofsF@k0u_M)6Wz2 z`cl8U)49ItxnvVMopaT=(|4OQxzE(_DeTh;Up*J5qBB0X?oD{^sp?{~@11F0Q9W`x z=c?B^j&slCI-kBD6YE0tdegpB8cvmW5tnldJx|ndPdD$>bE)2Oiu3F)l0=nIVGp854XM}2{|M&{xliRZRcY;_8U0BJ^?+o$t)Kz_#o%0KD1oW;EOm<&uPmQ8GMNI zRF7LOWbk1l{IJ1eenG@9e}2T^i#bowKGgU9@WTKSk_ z@KX%F(%><_rgr{R&gZW`=G)ZxX`H9FnB_44rp8Y<&Yy1ZRh*B@)6s)hKYs@2^WUmw z82n7b|Ct6q%kY1e!O!MAz0X>1w!zQgeE#~(G5EQL|8ougBF^Wp-$e!=H^Pq_d^P9u z>902U8pHn@gReFGuQm8O&c|i)aVP5eKhN-gp25#I&Yy4a3pn3o`@g{8>p7pVf9ef> zp}{XS_(h!0U!O$=e=+Ct<@aKPU(EUZ^;vB2OE@2~62t#X3_ij6 zeEbsz-@y5N{nTLajRxOn@XHMUml=GM!8aLvGw11hs^yvuzJ>Go>(^rN%ME_H!MAcg zfB&@_{0igz6$ZbO^ZDz$(%>)UeEz-RQiH#Y^JEXQ+-2-TTK#nkqqRJxqp=~I1P!} zWwSKC%;3wIPva*U{3Q1MeC2@LpKS1x*^3$3LjQw)9z z%W8b3!B?`YHGZnWPi0Frewx8gW0e{|-QcIQ|4=%X2JrmW%U2cquEx(W_!;aUHGZbS z&t#8k{49f?#U9Z3*#wm1^_ZOVDJmrUX8Ce_)7km@DR?&*0b+vcmq4G;j7sfHGB=bSHm0Gts1_Tb!vDMYt!&`Y_WznvkDEr zmC<}+()rl+?4LFKHukiJx3JG^`0ebVhTp;VX!r)URl{4^Y7O6rZgnzrx_<9uWg1Si zpXHlq;5*qrX*k1Z?1pqcj8wf(!`<0*#;%ALDp3J@_uob@;`zwL1_?5H!HC(~or{O7Vr-m!pMuDyLV?79g z>6=W2e;S*n@zdF_(Vn3A#5rHZ{zYK=#!%s(!TvviE&pb+uW9;O?6U&XJ6nZ+HoHe) zD?M}AZJK^A>lPT%fc_%3K|4RrmJ4i!U(GJk^ffH3>1)|9&>qOgzmB~qu;u?eHm33O z*#iR8H;4-V0(Psw^&Ho;Yc#x&EfLsC&mvYXu$3PdvtQwPO5t1KEoLtZ3>o}i!k!j5 z#PL%01xf$24~!hb326PVtaEBu$8aye|QTbQ>pY4F9zcemP)yw#` z;}CGcki{ttmaCGcwk|Fgiq7Wfr` z|5M;s1^zFA|6SnM1^$S@n81O`yZ>H+e=G1of!`4L;{v0^aQ)o^`vks2VARW;KQ3@U z;O`3@6!?(97?8{L9}+ku@Q(z>WQ?5OFK|TQ?+IKi@CkvV0)IzfOhU}h|CYdbXmLCy zaGAh=C-5YJpAvYoz$XR9KvsVKivnZdF~^SxTp{qo0#6b6YXVma{FuN~1%6s!EK0-u zJ0S3Mfgcwb6HsveQGsU&JSy-^fnO4MmcaK5JX_!w1je94?%!Pk&lUI+0$(KXxWI9N zzbBk;2V*9!cgz?g)Shxa*w=L!6f!1D$EyufI5aQznr#^lo+9}#$=z+Vw~ zk-%RS_+o+IC-7o{e=P74fq#IT;7sPm;LCi7QI&k^i<>h$dw1v3Be&#wm1RhBHxF?Z zt4oaZVg`wRbqNwl_GGtXCB)p|%~+{qxVOK+>0Lv;nUTKqaQ9Ge?|`FHOoc(KW6*AY zZ;#=tcjY z?rt8z-T@-kO@8?%iKOH&S&|Js^A{q)2wEn{Ih{+6X@1h*eAVGS>Q3iU_ z-F?|y_qOdyjQHWM!NC#E4Xa5V%Ir$#dJ1}m0)q099?YRU^$caQYGw$ow;yYB4rRO3 z-Mfc|aN(6Og`#IDyN6cSvH0}xF03Pg(0X&Hl&;QhpCGi$e?DKWdxBDUOW{=TbM(j$ z4)GjKYxBSirE|+r+6(0B;Ba?qVpkdo-KE4DN0&A3G>`U=OF(~Bbn{JMkLf*p6Zr--U_B6vB9bfRBBs#+t99p zDWz$4@^>2~%4wVvH=S`Fv+lvSFB+ zvku|zN-xVS>sr>-(BeGnPyvR2pV z9rK~pF&maU=E8EvOjz!i2Q7|y(BhZ}EslB6?3f1^mLU6`U4ktC*vmhym8aP0wvE-d zo4nVw{+RM+qZ9w_&1v&BN{^1yE0nIf&?Gn7?lgU)`a+q{uKfF|dF(=aozJ*GL@(P7 z=eoU4GiWL=@A~)yMzAWt4R`eIG${6IBlq8C=voy{)m?7rE&~}OfpF5lQ5cfQmL$WaELto@*h*cU;on|x z6i4Z#uGr8$3_(JQu$8)>q7Q@`F3chYo?o|i>dX048^SL%hwG8)h!#`RJi_$Ee z)U_G@kq!Tl6k#iMhYkO3^B2w+d~Vm$djz^d{=w{`>DtlPp}s)4?=`~BIp~HB-67}- zU61Px-Ers&m6x{|x|bYuwTA9T4!Ve;qrN7E!u`Lq(hp14vU50Kebaf&u z+JNTnYC|^)U7>QY!q6RY2sdu%UV*OAb&DFhR~_Q_3tV^gy3rbZbt3Mxfj8W}V(6&v zSD|pJPm=228tCG}586oo{?gF(KvyWA?=f@-9m2ic&>eR0?+L^~jo)+7QC%*bjNfL% zzaaVs6e=$Z4PC2)E^O%fp(|7l{txOWHGZFR@Q>DIP<7+b6}lcr4IQmZSSk~XtxWG{ z4Be{^x;qWsYYyR3UoJI%kx1e6ehhI?b*<19s&|JCU8jR?lM(I#hj3{f3N_qE9dxyZ z?nlrSDhK6;ZZ`Vb6w>`C0#(D^=%BmaNbi2=;y5Oqylzx>RsSA@uF!q-uSU4z4&i>? z&;_G~%hg{QI_ldVmyyF(#&3a$pQM_gTO)zOnYz6mb&o-(K4%au?o9t)^Qdb=pEEE1 zK=0l_s>N;%zi{-;e?tN7#88l^WcNlBs zj^o-rjU!9Jk>99_*=^WI6Vi6MChIu5_i_#C&{Sp_LpKT?lEO$w=Sv;B8*Ba@Qv5^H z$kw6zrKWpG(a~^V=^r&v)c8HB=~!5uD7p?8-AP5a)DdaYeVmMVC-?SG(wvitZX0-9|;X z(M8v(=&p6qXjom6!1aM7{l`SN#zi!P?5@yXZD5x=t5er=rWa z=yHm#%SAV;=(=5W2Nhk9i|(+Z>vho`QFPl}bYqHcyNhmI(e=6LPAIypi|(YN+u@?4 zkHysfq55y9i!P?<`dxH!MYqdEmr!&AF1n@~itZ*CT~5&rx#&g} z-LQ-9prRXb(H&NFyIpig6x|*d-I$`g*+n<5==Lf)G^;W8KkrUJHwYVpbZC}xSB}4` z?iw_f4pReGIH{v8baaWh`w1SV7)~t#h4MXoU^Z~Ay zItE?tXsE5UZE71^8XkY+KYshhk<~@tZfK)D{|Oe)9b@rH9qpO+Y}wj_t9{?5BZqze z?u(_uH5I|psz@h`AMf(jL^B66$FV+CxF*>U&9rBHbS5Ihl5f1h*vX^&+mNujKY`gWvqrYTpat9n;_1gX7+1o%+N?S(~s$N2L{ubo}M&@4Gwk>r$+|Uy9auD zw`B)p*G7#(%XuCBrUVX!?}jA0wzoy%cu?cvK;tXS5tnEz>M zX=()Bo!fnRYH(JhZOsmJ_wVlMb!WFyNz^?Rr+4q} z-Z?l(rO;i_m+41PNF9cRno8UuTSt0_N4f_0618>H<}0_RQ`f(3eM?I#4y;+ZmCFCk znW5e#Z$sW}-LPiel8u?}om+8RZ%u8uuH(9`%}bk?Hi&)PJiS{x>|}XAeNFG4Ysm zIcT|%!G}3d^|Ix{1|Q)(J^w5hG5BK6)APY{#cZdR{wb_U!8AvsoCAp7BWRAs*@CyQ zUwXv9iDL#u1DCK@^Afy^{Pc}?E12eJ)Uls+DLl>5_>+9I6d$Go>?H-$9F003WKU^) zk--IZU@F8};#)l0)%s!~`5rdEL@8U8O0{9}U$FG=mE9d*r6KAc4%UD9glNhEu zu$>QcCcbVXYNyB8_cUD2j%yfm8UvFTbiHU!AbJ+W$2Y@h@;R=6{ zJuNVm*$RIV`-;F+Ml1Xw_MpI2CM*15_F;jk3|9Cf?A-!WnWH&@=$nmn6$pEc1lST@ zWZ-;Rws?4FyBg@V{6+bq5*WSIdPk2UP!m%-F^Ui3yk zwv*w0#?T#rE@`Xs;hKFWk3+Xc(E)O2>Pqn(_M)Tt94QZ_bMo&HbaYLmbJD%&G2AM& zS-r%M=EL+7E{)~zl8zJ5QQ44ArsG36Aoq!*c|h^sc5?qt98q-%5RXYx;cmx1vch(+ zMi`^8YjNZf{OFVzeqH#feI1@dp{L_${%{THa4Jums(VGz6$vfr=sr|+uPQpaSEYXx z4^{WNqNDbildcrs!)5$RTy(P)9lUn*Z?U4ouA}ZUMK{Ssw_edrcF}EBbd(;a^!6({ zvJW`vZc}vhXW%X}CYL zr+4Y#CARHhMPb{+^5)hiueOJ{^#Wkq9ujQHMB76<*&a$d=sSOLdon>bh#0p)Sbxa| z!3-M&3c0XBL^_Ulh51=N<19Zv3zi6I$qwPin(t%y{?6BZUxy{Y*RtAgbdCC+@kLVM z>f&IsD%Kf}AIy9s+am3$9UoZDURt%|_#>>kXnnFNaH4j{b(=e8 zKl8}G)xZ7*LZKTkS-h6kr;qi~`t-5Rz=>F2GLmGm&RE|YwX^((QpNrVj>BJsAFmI; z@G{%Prld+zh^sGIl_G|*4vU)=tnlZ#_bOc33;(b;x_4G+X6gfbJNC{B7W+$5fsUCe z^22ZIiaOrE4LrFD%e)Yf5bC^jrx84&9`p(L|X&Z4bs(Nryf5w4PI>o zbne;O2=K~x)_&mi(SslEb_Tk=ob$o`TzUpLpX;9gbl#bsTXPoYx~JDY&Ti*=S-Td| z{sXg}h$jL*xbNB4OA|6&zHM-*yEn=@1~69!S&nwWj5LhzG`X&At%=|LRTAmNN+kNs zuk|^zoaD3L(Qsl(F4#>pL&62SiLiZIrK6iFF2h|(jZWM7n2!Ah4zShG)APb|0fP^6 zo}P)83mSY8=jpj?xgvuPah~2KEEh8PuyKCa;3J%;=c(l)24Bp1dR|$s*x;j_x0FEh?BV=Y?#&$3f^hNJe%Wng@WKh5Z)5-!=FJ z7`^3K&cc(~UkN=OCI8kbnCvz>_OnYAp6oX2+7D#6`D{K&ut9?lvJY!~k--&UA%qHhq>*$W!3VvlNg z2BU9G()qAL!%YC>C6za_J5jmHV?S#^c_B=70@HxAk-6L=v$3<*NV7kZ2 z?nHJ%(p!9(Z4j95VX`|d6`1Z>vOC2DrhAmuqWCFJrt>Xa!d?)#hV!^S8eewWb}6m= z$?VF3ZF228}!c+b|>7<9OK(7eUHM@5SE7HG#XLk=d`fVjhrTLW9W_)z($uKux*%6rN#{}br(~M8&!lY)K%9?Fc8E+%N zQnszTxv^*YwrvG0Wv3K78_JeB&eOTfah}db$9Xy%9p@_j-7v`go)%%{PPgrY`dxnB z4RS8_L71COtMz%0&Y9Q;WnmgEa5k`Lhr*_DAA* z9YT=g=(!c-d)6Ph|1LvE&soWlQtqb>9X*HD?}t*i3CAI|ZIkWTCqJc=Iy$E6MuG8I zww=@^jc^}^B4(@d@uPl1s(+6`LyukQq<>i6MALmAf?o$r_nYPJCp<9DLUWE?-Z728T zdx|7Zf_PMtI4J$dVjq{vb`QaznS?Qv-d9ri(J6GFUX7n>>-^Cq>o`?~q@iB~KdPTp z-D`?YwXxP3x(E!76b|`^Q*8fCU6rD9vrX13I`UV>&-AZV(UrUC+7%tW^EmlO^W4aE zpxd3Ju20cby6E;QI%&_Qd^Xc@K+(~=ms9)>DZ1${x`z~9m5c6CMMrj8r*Mxex|xd3 zwC%nGoxWZr#Bg+N0({TN|7+ps0)Z@y2L>C^ti|AgUT7NNHXxnyUN2hWNZn%A4-!tLj@qK;1n)1}X z&S1N*k1h0#v-p9lxXrYmCF$&f;8po4vKJS1M4aQ)(Qb!V)Dd&kQQ8vtsdmcWHCrpy1N2N+(~!5d zy4x73J?C`pscdd;=h8SZw=raNFFS=>Xbc(YrAuPxT#REoRUFPd{%4-&h0;#-vUKa>-ahp76mvcwzhZ-r8sSF`zQj1cggvX}U#Wqs81_1 zIRDnQhV$suD4c~Sv9}uj{V;zDUfO(2$A0#L!jr8stzfcMu2(SGDs?`{5*lA*@I|mM z$rw_4LIxjVzm|<_$O0^E@L@)C^-34O_0q$SuxB;C*x-w`b?s?Po_>Cm-K(8nV(=yG zLxQ)iN2$S=@-bZ$KjLW&8?6B#9gR_2ui+SL)Nnbg(r^X)tvnf9ADhCyui;AetcItu zBO0E@KCa>EY!@&ELGdeOd!&Bj#M3=Xw#Talrh9;FkBtJ;JxOEUDm5Hp|Amw3e7fgo z%-atIPI4S!&k1b#SImwGZ21>uAJ_Pj)3z;Y*Aw>-r8C-YeXsL3Sl<_D%WaDt*6}E| ztUKur+dw7fgE3@Z)8S-p8=KyM>ztULr7Thn%k!81v?ETrDs><#?gM z(ng6faom4tqr605X``GcFe1axzX*{yI~yX^@AfD$Wz-u#4m)3##`UMWu@q|;#ypF0 zao4@AW7C!Cj!oANq}wwCJ($*jozlX%RJGvQpq?5WP!@qtADB03U9kokT{|-PdbTkda>Ex5lH6-j}@i_ZW1A zuE!x{sEjMmTU^{i*Z0GQE(pke&dRc>^n}n6N--BO`LQm6`h;yjSP%3y_GKh#T1>J?Jch8+-z?N zMW@={OdD7dI_jq(o!q57qVgl%pW-6Cq8yMq+Tw6d>fVLS*dYP7Qm4!?!L4AYw1F-6 zKECm!VFO#l7T7j0A4W8`(-^`7G`^A5m%JQWJ0}O?GZq?~v@hw0xAmZyY$3p#dm?%DvO`4huMB^5K`^@%9k zxMMUj$|9+aUF_HacI}SRS~~w)pos6<9SIv902;GVyZ_o9;o2Mgwl;X}j>)yNf;J9t z9FQ29itznyRV!b3q^dsh@2} zB=wTWlTm+g?X`V@+D}^HTlO?cUw!yxUrlJ;9Z8yNaZ5Iq+JZB-;9S~T{?oOkXCjra z#8*bzdgjjC+cWzMtJw>4+PZJNf&EKW;<2i$5@1!U)$f|+4IPMGtXS?=AgVFzjr8ZO zb`wX+Q4Jwo96M(+LQ-v|xW|2B`0BY7{^`VBJ@;(FrCRrN!d3I^R-R|?;UC{l#}Bnd zNl!$c?|1svO<_;}Eg;+DDPXxG zgAZ{&Drvld(E0hA+~TP=x17aG#9;5C_~rc%8~#U(_(cr9nDg|cv0SmiM-Bg@24Bj) ztfjY#y+^@hj~f=4-XF*ww_U^eH@h{Q$IFCp7M{db8vZ?(KLsy_KBi+oJEHJpkGovK zWRI&>FxlgDKF9(ZUu5t_?B8TVp2s(2@F8xmk!c`%obG>^{iSw(#NZ=ZKRlZAQ9r+! z-L9P=9faiZb1kWN(ves>V4EvLeCLJwf)i z{{u1U=^mo7eqR^Z;=}CA0>?QYVILEi?g<*}_a03j<$i(Uj^>Qi(ueX+-w>ksfI{El zPH7*zMA)a62zwP?5t`^c*sJJmf$VM^R}0)I@B)FC3A|8Xh`GL2U}7n6*r|R=T>hZBSSpVd# zn0to%(wH2a&ycwXvpe$r!bUPH6SfcK(o1`KyLN9+ZyU<&>a8o7H};UZWtPE5B)B`> z+_kN#XGK>_fdO-;kityna3LHb_Pagq%`PJUy~Rr26ne3t+r?{vJMX5aLMAZfYn2$d zCd>GFkIrdZ!mKNMZfs$;Uj^o~yatt}CuEu53 zrBQYCjFKE_<$l7@kv%~Dsv&iihOQkt`r06!)cpzv)Ntt|X`K{dD|HkfRd+A&D1OpO z-M4W-)lobO`S-Y?Yjw~aHgsE|Q@@1BaPKm7BM$!UhK{})OLqu5%0FtuP+pRM^c%(x z6bqppL5}9XCXICBFuvkiI(htY=+;P}aHbB;DNnjK=)Bl`?(nF4++(h^=6v1rmsZW9iO zAUV|p162+>y64a}iu)bImhOMmcJ&}$t0Fi?WlObj)f&2o6BLDlThUdz=oTwFH`~=^iq6e; zwO-M=*{-%ir@!|hl5nQ&3adS_zeSmrPL?a$;xJXq+}(-H$Vz~%)KP1Ix3@ix-&)b! z>UmwT{Z_?ikKbxzDcg1hdzCc<=dsvPpS|a|_X75wzb(es@`^NG`v|Lfsx!h7ELumS ze2*;(j<4dQzgBg!W2^c)A{~tO@Xe*VJ%#aHTewY!(tea|S~NZ^H16vg?c2Ay=!G}p zA4#xdZ^ZB6e?N-9$h4zHZS~ym`Zn^TxMNLK{5DvPo@dq8ak;&Zk2O2dci<|F>f)}l zc1y~?Zmeow=Tr7LvfNRBTbW2ju&pw_Iu&V;Rjs-u+}<&JRVs{GLwUT~vZ?zz83x8l zzmluz4x{*Be$d9vk3X>hx8|d0cUp*kg-ddpUqHXGQ9m zGmJM&91XNZ+p4(wTDGQd(!7ULrKvTYmGKnDw^dcGzA3>|QCYJww*_;V zQbbg@6?2iQnD#qaGXLF6kUcC(bMvY$0r2Lwnz>uPD2-GbZcYb*`ERRMnk{MN=&s_>|+ZY)rIns&S$6c_wjrv-^Q${Q=o3 z#Z%dfrLwza+wXy;QY84yukkstQ|7b1pq0|1FW4wA*eFdKrByPzsgg3>Pv|AYc0Q(K zzk#u)nWo1YW*WwtWg5mBWg5nsWE#dAWEw8!bDiYdX;_0y<1tsIhOtH)Fg=?rS7Pv` zoTq1}QDaO{vE@I;vj#T1vG~TjD!+!Q}qP$U^ME2iK4F?%Iqw?!-@kM+MN{W(&Lv+hVw?E=&NUE!Z(&mCLG@nqH_c&c+M{4sVNw$jnq zUixk)9buSeZAW;Tjqp83_$3dK{aGt7s86VRiNfydwB`2cEmj|sXs6HtQ~dl%>-%C9 znCli>eM_QSt^A1IAne-E#h9h1cYV^=&^9gX&*14htiMYf&xmoO*h)R+k3X3Yx0Uc5 zaULuu9K%S@{h2N7*(u@wB?7Mz7~%w-f2F{%n{(VIFg)S-DuI^>+%E7+fjb1gLg2Lm zqcY*=uM>EY!0QEGCh!JfFI)v_W8FgXC zJVi@cV}vS=Lba#B&9gL^uh4N==dqx6Z<=PZHTj9-`bBn;+MlLuR)GLb{4(K&#YB*)O=U9i3mVqCFmk3IF8mClP(S_5aTZ0=64 zNMyPjn|hiHbRKXOI*+hza$H2R$#D_MWsa*zUYNJHuKEA5_criR73co=>?R>01QHU! z00B?fr~v_!YzV=(CfOt;5J*e{1VwlAhPz2fViFLo+MuZTT57GO)_Qlh)>>;@w9;!^ zX|b;ZR@qRwQ5^#>#hIine)u-oY`}h1@-=Kf7kgCW}oNz&NDA(&b&S| zhrtlO_{QF0dim9t2y02~#n&aV6TC4c>I<*p<6m}F8uy~BLggjb+42Qf z1(u7csh09o;&9A@<1XRE?*}v-j%jc_DjW>s zxVufm!SKZvw^PHxFv1phk%l|p0e6;$>j50j=Y$jKE7EXR0l*L-@C7bi!-YYXqu@lj zyb3&k%5vThzhP)3ozV9K;HbFgfW|TuPU!m_FjO4cg{bS)0(XOk!?Vg&LK*l1cZr4z z0uF|Z(g_@n>D74gjusr!2`6w^KUCavK-iVbuYr#^n5uC1G7$KTg%kR8dyh&euv!5E zA9bM9amRC?uv*Se`rd+g)pBvd;Thy)(zge2$>^I%Qr|2nuw?XY0bDZq-IpZp2;geX zN5KDgDwq7UG}Hch>t` z021#!D#?e<;1-JeJfKk@zAyIyZYub~1;NlE1BfE{!*>R8NaOK06*sKl5F>DC$ED(S zDmW-2i927zjVm}vro^q(aC-oU>BjWI3Yo+i8g8GW57RHwm!jdq3J%jPa4*AeH6QmW zIP7l(?)w^UKi~}DVft|YUEn?gzg2w`iauN~5V&hK+;fUPFvXF$Z5r+<;6%CL`ijs8 z(_~A$8L*5haA@TqaOD~Z5-^!$!1xcmhA_9{3$AMX@zSi#{q!3not!J#p%6Yh|LD@cHwP;jtR z~54!9y4l1o#4ns|DLTN5;rp>zMa#mzJ$6GYz(mec$$>A|9c%*Xm#! zq`lTZ51ild7}!j?KjPX8jY{FB2Kb$xo4pZyXaKX}@{Wm_^{m)6;VN>~hnegC*&V^q zp@;4d=1#dSd;NO%;#pM%I7I#l%Ek5HgTarCdVg!8G&rP3vd1yR6?^)NPLbAGg zWDhHT^Kj-Q%E#x91C=@vlOp$;x%+_Ib(k%3lSS5(#=fqfhuD&iiMf6I`u47FpHyRb z2|K$@yZDF)z{LJYeoh94Nu@fc2n7@mU|Jd^I?w25)JQ#=E5 zomxEquu)$E)?(Mq-47u%CQM7Q*C9>riNi)IgxC*hw(_6m{PZvjvc182wh8UP{%Km0 z1z8mwysE+{G94P+5^0l`TF(~ErZkyxlo++Xlm=F4-b(>b&p4EhyqtqoWY>4}KsL8SORdl4xp$p1SkKOwHc_$(@XtRs<%t=$ zRAn_z54Z|3+|h%;=f6;6e?^V@Hnp1X$JqSABXz+T*U<*j{Gz z)nCJY+;LM)>O@t+p@-bXfBP{rvN#gUXF8RTncmPlutxooV2IlXijptBeDM|IaAq&V_n$$0 z0^wi@+%+E#ro!_G2ZC3zV)x%!X}VoP2*>;lg4 zfhkaSv+7HDZNT?uYNIdzxxOcgr%ik+@WQUUc0B>_9Xu^UK$wG|iI+P*XR}^n?)UI~ zxp|Irz^XJRbCb+0p`3&1kj76!8mH}SEJz8Msrd^}4K%>E>AAD-@g>tHrnkH>e%JWp z(9*b|-7!v8Alq#Tr_1n(Vy6y|IDdX8jxpB#T!EyK%xJ2lIH-kYdW40;emjFw(VfUwYn6U6>!? zegr>~{Z@f)TdC@)JPtjH>^t%K7sH=gZxh+x;+#e}9M_&`SbSHGC+vyl{oN`ObA0JZ;z zY+%iqPBJF2tG4!*{Of-*!_4oAKjC-90#+8ftpO~TzHk5fzWu9i|H>;yH?~i@n~4jl z(t*XBg?4K+d~F`&F`G58ptImpxg6Vj)1_+iG)+Pq#B}MJJVT@5Tknvb zb^(X!ur+;|T#jQ?(`9P%XC4mPvov}($Kx2obh8;;(W1CH8hw&RFJp&sfu0=N(|(s|TsA}d+^Hv&SGjrWfltls>!HqHl(VpTTf1QMeRXdbE~*HXE|Y zb2NDl+h~!`)Z{bSITm@YCeLLjTjY6~JdaJW$Y*KtS(?4{Y)w9!{feq|05X{Z)}q$@ z&0&WXxeMgqBRYrU;eI9Mc`~?f=?k$}1j>0HyWK+1XO~;(0v52)3mD!dAe;+sCR=Ku zPX-%UA;srtu%q}e$-&#jeqo^(vF})D54+z&7qPt-`V_XqLZ8a;E(hUUuoGTmp^IS= zT1YWHi`fhdy@b6P6NCJ8_HzrplsyDA2Ek%Pd*vG~w3}r^`+#!nqtIUYIshV#eG+~j z2G8%u=rndd(KtWA`>ODJn<&RN8ov)yKs5F#ct2Gd(KVdTWPgDAg!m#(Phd$7E5RG#Sv{&x1&@j9>d^C5jRP!9UL(7%$g$I&0v;sM-J z!7$})q)(xEiitjz%4IXzN1sLX z`9z;XG}xn;V|eHcus*xD5Dk@v(-#umLi9yMe}HH|(V&Fm14KjNbGno0CZeIxczjT} zT;5IedZK%Xt|z*e=vJb)61|4#i;0Fp;rfC^FDDva4jvx}xxA0)YNGpz#)tKe?8k9D z4%el14vzY}N5Fo(*KgW$DrVOlg4U#6o!fi-BY=q)4)*v5hX#B7U1+Qv8oXFXfB`xv z7~ARJ8bTXZX@$;po5B$%VfT*2y3GsUFbDQY4-JM?>vJBZgN3=2_4ID_cW;f$hH0KE zu6iT;a~_B!-2>tiP+|+#-_vWCfX=QVDEQId!5+OdOvy-Z_YRV5sBUdPUW4=QAuylk zACy|&H9AVS-SLECl(ENT+TL;j#%L=5U0dNJRCG+>f69a%%ddOn;_ZG}vS)qBpFoMSCouk{poV~P!-;>94*6lCb+TB^%Q)y@Co(Sh`=DuPT#DrHE#@*hx zqQX()b(EAiNy=9`O5QiLFDi8`gHp%C299S9R!Cm@0vIJEqWX{jON~lOh`R|1$p*zXvoNj$efgk>d9+L7A!#$G79iASZC& z)o_mjjd2SnaG%$3uQ}j0YUwKidX`WIK9Jmr`;A3@(PkXeD4dA*gIc^}fWxu9a6(_F zhPxRAFbtPY=&RRoF9Qze0>TO05)D_9V(z8txH%dQ=czvuAn--{{tCYVDxYsLL}Zs= zyvJF^^#BgX+`E8V>JIu*2c=RO8Knbp@P*3n%pL z1cr($0-Rlb@wHTOXj|Sclz}hwVLexI4+9RSL()NVxjPvGWWXTLX+&xE#RM3Ico~({b%d;`Swpdm%}jk)B-odH|=EpHn{eCy9FtaO!*H zq^}kpPBOTg0jJg%Cw-46iAx0o@?`W?0WO*J?MV_h0k~w!xd0Y2lBrjLBysluE}4A1 znk23q4Dypn-%h~UCtKnopjzz_NE0zU{Z z?=aMbjqrN_{xAr>&(8x69)WbvLFdr{)EV%HZ3N;V7<){^mCR+#06yXnBXFP9a4iZB znk0$)h=v9}D9 z2SwzF8&`1f(-F5}_mC%}y> zxFrd2dllU232Cxnc@!Lc@z~3niY=Mj4=351~`I^@3@a4=Po)6$(#;k?!QZ|U&h2dUYprjw+41YmNK<;YXBY(Ras)C2o4`oZ)nw-FSAjP_$*63b@=K(T;LJxe! z5<`LxxE;BuD1{YInV8y;8h~$m()kHSzwn;lRC&)Yq#MpZz@5j#JRU3&#g)Ks)o%8G zqrG<`+h6P>@jX-XpxXW>3XAEG?{K$=CxYN_$4av?sp%7RM4IeoWE-oo`$6mNgku+3s@h{{yD7Ji90U zeBTvISyAM+hO#Jp-%j>@J6YXM7VAYfHcfF(wX?(7xs`TnbP9VJ23^?RnJz_>r*e6$ zKS|Z(X__3qtEUe3U=a`XV?ScLDVjW;%VWdAbWNVY<=A(cE<=+~<#KH6O*d7OXL33A z+orSHA>zy$(}(?y>85Gnv$#B#zAVc(-r-cOM$cmpDEUXb(=gFEMnk*P+bwi#z+B7a zXcc2Rlg?)Sn!f*z1%U+@xEIz!yV)xWjdrJ(Dl`K-GrvNk-KkZc%IYlgG)6&SSX#BOKoIdQ=eLyVz{@3kyAmeaAwd#O}Ay`EV#X z=3Hzp>jM&_z%--XBG$tg?Pjmi^T0L(?G`(U#_~YBMRBhwzVm3OSV(ewhtN*(RZxcd zusqOC@n=NiJBs(JexGQ3Cv)A?*h55{;j`e1fS5zOz&SAz@TP9T!h29H&qv&Y+H9^d zWUe#!!eCCv*Pb%LzRG~WnJ{6;{JB?}=|n#l`7P!i4EmUUKW3$KTs?aWB8~QxOadfnZxFd{|UrnkEPe!@M=rF1#t}9@;)QX5O269EMN0 zgaNmAq6HZ*JS-!XXX+jXODr^%6DCWmxWy7?s@w1F?pj&lEh~w?m@@&&*<8t6=43`x z=4i2b=+a!U=tU00uy1`W}YgI5rVZ;En)8#T^3LE`1kkxCx-`^gX8GUI4lP z{)7|pVjWTAJqmQW0D&)XSf(lt$ANb7ew}b)no#M0gCPyq2Of8|fU6Y*_!t*D9k(Y* z+*5$Vx*(jBJ{->{gR4yvH=ZQ!(Ijz4lf;!nfhUuXVZbF*&JQQ4?==T~pNE1MWsc9F z94eBiOGt~~QTVOmDnW3U5Gt}e;Wre8bVp#oTLK&EFhpi`@P|S0eYpny)P3eun8KC- z59>Z8mE&-%+zo#!t{ia4M;!7|AJQ-+x8TG#F%hTkgX24+>cekh3VryV2z?$6*A6&L zH|m3*j<_BLr|yI6`oUD~Dw}QhxF(=&Z3J&KSPPls%oVs7Gr|)3}H!Fd@?q0GA36K|D8g|6SjQoCP?v%@9uf#4=A2Oz6wytHLxJxx8t($AWNhDLZDr+e<);t3&nm{$=`0c zi?0f9eG)RH$J4Czq12d8j34ho6X{87d~z1L2 zweiMaz;mbX#=woiDwi94Kmk4t_$i+GZd1bCBw-|TjEBLUYq%flW+@GDmmqw{)isXa zWW{hL;Hi6m|J(L2GhB)H)iNRd#abQ`?O)#qxfy;!RXm*pB{hi#Pok_4>W5SBc-J_b%Rd zR-Y3+Us1RJ@9ax=k3dhG%)a!h?uzbz{VSY!cK?6gmlj2CyDyEx_xGjW- z$0ASH!o&SJ7I}syhx>CZ@~N5}?#r>r;roF=$Kr?kaxC&`njG%SvBEM1Gi#(glW90|;<5=W5njG%OvB+m~d2H+n_v2XPxm+IGyMz02 zEb=@qkEIXp$Fay~Y2jzFn=JCh>;i?xefVagalVTC@IDJ2Tj{9fa-0F1&ZOtCd78cl zP?2!3IBBKb^82p{!F_m-1rPU=DKzfGTji zY@bD*p~*AY4vT!MCZEdhe-YWo`<|@n%Veu8;iqZxX>5T-o~6mN*mR40x+b5_{v3N` zP`WcT`3&|$i#%JCXS2^+8!X>K z7qWi}F!(OEh`nT?J^UUW!E(VZMEeE7@u#pmEcB`D3JZN2zn4a^Trj&in};*kpU_SL z+Y(F?zE-(VSokd-q_GV|JB1tzoyy*X`h{|A<8s|;>^Y*bO-8$gZ&>8e{#)n_w$nmS zW#?PMXR@;_^fZ3o7shAm&tlmmH`6zry#db`<=E!o{Yy_1ZKf}q-@g@0Zw~t~$+3;i zbTB0`--9+^HM1x%fuHU#XAbLH~TZpbA`a+`XiN1*F z3ZljRJ}pECNZvqnC(&mT-9_{oqPvNPLgDG@A-as{UZPR>j_fO7JmtT1Bn0>F;Qq9< zonXt4^-WQ8(;9>Gn|1JqFuWl91|fsbj{1kT<8HUPZ*3zE4LV7OhXyVi9NHG@9B@M5 ztq>?4?d^rzf$Zbhx^rm6PR6gbP||}pN{l&V1!W1cBEDyr0+K<_)g$!i|x(7Y=iQio9EaW3DK^ZUv0zQ^Mo9) zoe(_Ucg0S~)MH~O1jC)=?1YK{sMrbN_if?ooA=UOi1pF9QOx~e$i~Oi;Bg1TXzni3 za4?j!#WiR+97pDuD)|3GpI5`d(9afkl7@q!pR!IAOM|$#K;$FnpzlQ(REu#nCTORF zzJnTWw*&5z8g8!x?n(`J7vSv5MgLas0}i+vP2ZyqIGo49KWQKJlmkw`N9P5=6~Lcx z;<>#J3{~GzptA%Be1V(LaH$Z;4)>6T%K==zjlPd+IJ~ddE`673IJA4R!(sgekt~;h z15US(x&m;u5KcJMflkLAN)nd}_4{m71^?ekUlrhziFbFB`VJ+D!*BW~lfFur-zI|_ zOA@y~N!+VR;`IBToXQ#RdrBrB;UsY{B#Fas|0WY}dy=@lN#dSL5|;rDt6lmohFUAi z5-V^m;2_J=iQh0Kx8NE8XJ>~7O9u?9oOCb20?MIu#%h4G75-2kwwu^bsrF#^9i@EJJe_bvrjlmPdDf;%Mv?okDIY69F-3J&`qr}Vv`;Luh?;B%?{t=rRe!AtQeXgh=xIP{@O9v1w!q0)^A0(^lxqjaU$yr;wbzjS5EsVq zwDUaEqw|Ry2%gM&^F0~SIm8PG4bCg@q(o;DuK;Y!#yYqA2ZkKqpRle5M8~lyy+uE0%+qSvQ?`vA?Z)^22OPEteFDTi0%FYWhhz-8B z5gJAtejO}{vMb@Z;?DQZj(Uh|goNG#Z%%Xpaf7bZxr_Q1*PjtaeO>UYg8z!buXFgX zU%{_B{%cYH;`%23>xzSRX} zO4`@J%PL0KuSPwRZmaWcXsr{pzpi81xxNNW#&U?(@AI{;Hy@CZ>4;fh+peIb?l@g7 z)fSkezIDmrYBsdCwZ~Eixy)p#P&{lqguPjH^kb6529LSN_yoLB4lc=TSOFZ4sstMl9z zjR<|Ar#Y|Qb4&Ctp|9^S=dJeaiGEz@>-#b1HF&Ox-X`?*Jm=os<(nySi; z;3Vfad;HNsp)>d^&TH|U9}Nke!IwDiJkN$`5Ai00zvaAEPfOHKJR|fn=e2p(M$ac+ zAoL37wR`HL8;BPUy~=qTJk`+_p)d4D&fDlYJGz#5)lK7&#y@fXCQn7QPUsB&ne#e4 zrO_&(Gx!GQZT2jUo+We!|H66adrpg15YGtxjq@(>EQ*#2Uf+Ll-WJb-=u+YZ`u@&& z7kcuerx7pQ_Ycmy$deacM7+tqw>Z!5nIYQ^qyN7-FW{LPg_hXB)?-G)p^~bg$?t^r zHkbHL?QPF!cdV@_VpX+mK7VbUkD6ShT3Xsl{9b(D)plBKb8W+v`&VKZTUn(aZWVWs zm6rKSS2)Qk{H3cLWN^Z>3{q(uUs<`o3{qn+tMq#zF}5;qncwS_7H@^$>y(!A5`Vc< zTFT4)a236MeC3t?6;5ecQRZLal$I40ez->8US~y#zrrak73Ka4r?ga5`d2!oWo4Ov zrBhl~R`^#srKPgOU+I*V%5s0DQ(7u3{i~ePvZ~C#$~G+<>ss3yo3W3Nf408*)&ADH z)g=jJw((K8vIOC5^XF@CZ7Q)#2k=X6_-*ZNwrK;tZMuMOn>v{AB`TQ zw%}XPt9^?`CpUS&5`~_Nw;h4t6U4pQyFYq}xM9h?#T)DICWB8B_Ezs_WRGV+PiBsr zKI{!gza;dAo+9pE@14>6iEH!;?nk^Ii{3-rA3@rFMCjYRACBHFbOa}e`%&)=(N7RJ zEV;LPcSk=;TqAUtupjeY6}?qx2t7mGJG`;}E*v^S+>d)lWsf%*dX~8Ryo1pzgG|;{D#wN%BeWmgs=M2cIYIUEWR6t;7un|AV-n@}3v% zB->byE$GaqYrqIy$N8*0QdrGvNxZ%FniF>d27C*ExIv<-4JAQp*eKRPlZr{M;flsel^U~6=+27W%p}n?w(|WKA zv7`@WkZfSb^L^D#acM(*dmW@46H^u+M#{ViWY`8OWn|Hb?Vu*(vpq9=akAR#_G%^X z7I{-kdq-<6q_^4cTiUBtW zZ4&8LFi%E)yoP<`ZI5g3%=!nsRi$R{W`uqe`Jv>0LGlB@|GwmZQS!qu+j>m$za;ra z-$dl=lD}W_1AWg#4oLokk{^bd*Ow&!A;~xTpNo7>^1m$k0pNdH@*kG`FwD$8CHV&= z|9R*mo{!uiC0~(}0Q4z)CI8!uYAMXEc zWT)hRUGl$zeP8HzkxQiPQ7H>Rztb=I2PGfpYQ2*G4axsBpPT(La*>pMQ_2D`XX}vs zLy|uU^R`yWe@ya?(4QkslK(Bq4}{)`)Jy)iCEw`#OQcHjza#kp;GZe^--uL<%JTNy!hxjBk$Q|3LC5 zga3@=Nd8lj|Es1$FysCEi#G2Yy^G50#PFOyzVxz>q;{~j*5+Ln@41~!>bBR{*mCUm zJR!!^uR?6o4S;w)rQ22}^}>>*L!ZFAVrpFD%8GO+#F%lYkoYu0+gjJ!>Thk)`ZT5A zag>|-h1ga%c7Cmmt5@T!!6^?3F=iYp#Ht4>jNhqW=CZoB7N!5SqygpLT0RPj<8Q2P zYOM8d^x2J(FdU8})~#+OaeSIuR{L>*Gfpq?t9|W_8|&<4I8w6<)6&>c*W_Qn0qj7xwg(OFDOftSCqr(rnauBdb1uk%BcLRBdcYb@I%=q1cEh@ zYRUhRkPe^_sR2Mlz@()XXIJ7#lSn{8d{K-&b#3T7XmVBdc zZDfJuACde(-@3?2lK-sahx?i%GbR5gl0VsZUSyi&|5Wk|4#t%`)r0u<4$97{E?~KW zEUqpP-?1)`yrHey-`=DQEthy_@BVywUf2(r~`FJ=#sN1?0^C0`L0hMZ^vF{fV$!yp7Qgf$je@ zaWC}xqHO}(FIEXI@}3)AN8HK&Hwf$ZRz@3$`vE=z6q10qELtse!@9efzfRb{J6q@u zidBU!Z)`n&GAPy#y1j+575R|h_IL}TrwhH3+v}YZJyqzH+^yc3QP|Nm>t^U5l!lAF z)8sCw0ju?9%7Wf0(b+<8-#>vH^17n9v*`Mj!}`RsF?D?+)$AXjSvPk<;fGkFa9)q+ z-GGU2+0^Ra(8Aw+sRQ~$(H&x&Ao;b>mTmMk)>2zx;rp7KnxO}6u5DZ|)+elTSW<0i zmg@!ktgFR#%$klC-`a*+b7jMlj@5PRZPTIki!zRl(EBHnwXB6Tm&Wt4k+sBw z;h>xL`x-W^Uu%weEIQY3XlkN>ap9DPJ6;xRwBu#520KosG}iI5SVJ8zi#5{mGHU~E zk=Nk^$0uVJjzxxSr!qwuFVooCj4U^E`9$`IlHbqT9|L|r@dJGiMS{fN4*Xu?U(fr`ha#OM+X1qR zL>$3~BNq_=Qs8%pI6?;^8;HLX_^rebhaQPE6aO;cHwk|K*CLI?za04WLVy3G5g+kC z2>dGIck#aIVB~C)T>-LHBnt$;8L1%tmB9CkID(HwN{D|I@Rx}=z^Y&g@jnFo(}-_` zz8fhb{y6Xph5pd@BMXVY3;6Seey}jeC;rvIpDpym-b^m>uK|9x(BJpNNEY#T1Ai*< zPlugk25VqxB)b-5Zju!o8~{V5xOZVgQwx~r;A<2wgZDvBF74T(_2do?h!Z zxxLI>Czmqpi`p8hVX2-ZSBLmFiayp!F8Wy~x!Tv-V9dS;+kGx9IKYap zns60gIq~BrX!-ZP;(aCxmOFf0X#~YyNGSRI)&tk5rLWcnxA`TY)YCqrUh@|yR-=r@RK^oe=NpJC_ss{-36<|VIt z?~Q(0U}5dp?7iNAo!>7KHz2uhdOsPxkGSFfw>>XK{^GqO>YD8SbhjU$9zQIR$__ z$+`0v)I^(wUf}NHdOyj|mb<=_LvKW$HT5o78LcHOT0gxJdD_&xpfq|e@dGfEdV+H^ zyr)N33C%F;s^*%XXEEEzNx*)CV>1=oNF(&u$X7XcnqnIn0Nbc9b8ePm8yN=fHI(9* zZR8}(y6)rH8Qx5}=WBo^)u%Z(+nXkBoWf{J^($x`Z)R0?bE{BU_bENJ_1jn`Y@G0y zuX%lYE1$eL&8e*T_G+|`wDQ{Qcy0bRUz5K9cOm2OrmV?MR-Ygo$!x5+8N}l# zgP8&xmxN$8Iw4$jO>2BvQ+&0}>v0YkpBCP3H@3r~X}qkhy}1RJR6(hothyEURYCYR z7-z@JaUu(w=`bF$%Ielv*EI1pKPx}Bmv7~_chonvYC2kNcx|=S{)Xlzn854ddAa!8 znm54Cb9~v=H*IKZ(86%jU3@$?{PtQ%jt#%nhL34#t80ff2y2?EeQW)zdEr?3X4#0X zeX9)Xe#_b>Sgg15`SXQA7d#C}ud(K2-Zspv&+%4@-QS^t$UImDF66ty^Id`;7@8lM zwI+}7xe^}+{ERiziJvF=lS2z48EevsKTGlp4lZaacxge?yqDn4RHzGEV0>&%V`~S# z=~kYvd0mSiOq#3L`C;H`BNIzKcCz-(E$}FtSQTqwRk-e229`su)JkuJdEG|pgS=ol zB-i7DTZmikt&6S41ur1(3a}iK>v57>;XPBX#~FR+6Luw74%JY6XY$$EW|CBTm&^6I zK(K?jtGtU9`&hv})9aDzae+dJtWC&~-0e2_Z*MCNY?Sp*;9AANbeOQF;`wr*b1@`q~EkE1`){%hw6xi2`ai`I5 z+V$TJ_Vr@a8R$3d`u`2=>u)A~*YI}&c0wS0*b^Id27*sKTk) zLA*(@ZbaUvJ)!8O#52H(5qbA`dZevk0BjhM_ZhIS-zN0I?g;Yk1^fD-&=-1+^F9mq z^|7^lm|FnuKCrJBEBOZOfFSR4U|+wP!Up<(!Fl(CeSN!#qkod~J`eWwV%#~||03r- z0QU832xr>YoBS_;eSNLaNoN4Q2=?{D)-W9WH4pzKu&+N;;6g8P-hQyJUqL*h&pa3K zAlTQJ5btHEIp)cLhdjz^e(?7^^p`y+$+jaLG*1CM4Ck2&DKuJ*V6G3qX{G`ZOXy9` z`wE<9I*E8VdPUs7E7tYl(3@aOVK?R+=c=Dg-YKgOLy&WE3R-NC5 zeF!XS*zzHO&abI$Y-=eoml|wkrS>um27Pm!KF+UOk6Q=vvX+_+^$-a6AoaLfI+}1x zdjk$ibeUKVu+u4)0&Hb4O&5EnaXMkBCxp68E)UqGMJ^54$;7gNoebln4OTrqzHGx+ z%i{B1-xOO2(!=pp4zoDp$_(ohHrjd^PuF zheApyhaT=OSdqsTU}pUzp0i77y{0b=>+vS{tCAb;i$*>{+^ICW(L?T&k{j;-I=5Lt?hhn)vi}?0Vge#J|nryalJkGcw{(;b}M0>gwfUGV56sFVCi84?7YHD<8LT|xoraZMrV0j zdtFO>*cu-gmhhPiV^ucqbnChnT*{A&6Zv-i7xL}eE#%v^TflF1(BJByztus1tDXLa z=JidR{SA%l8{2uarI(!|=VxIP$ZN3KvzNCvP?MHWZkHc3{?*3_Z_1s+*Bm3fDR&NU zUpMO3H^@BNoR_bl4iwbVAYH{fH9D-V)kQsQK_HLGC`aXGYN*Y1p7PGh)maChVyK8L@cU{qShOak{x&i!P;w&;)?16~ukp4KIU(lRCxx+XHh zvGW&n$ZpWIk)!EA@W#j)9G?Sce#Ce>9K0#A zgmY)YnVz5B6B%*mUn7&8eyR|+|8=ctOfT` zOd}UxLt~41Cf#lfuAWu3hHI^Bt83j@S6jm7Li=fzHPtplU9<99nz3<-<3VNCc$->j zU~lEGYw5sqhjDsEI!ZM?)$6PM&2R>{gC91r>Oxry*r#AbB{t!NOxFo7OI-Z*O>JPj z)9Tv{H!J9Qf%xNiBE4l=ylp;Mey*#7S%5XIsK0#!F1}j%jW}y*6GKC*Y)yMLq}0k= z59Sm)&n(k6xZ}Z!U56HwkWjqiVG+!<#g5Ho&`w;&TLcfxwZ-mEAPBZ}(9;*eTzd!A zv~bAeodR?1OGHiW8|S!FVXi$uyg=VB&N~g}+82wkeP*ju40G)+;!XBl!*PpYu6-f# zHmn<8Q4FmH#=XR|Cc26EL1;6OceCTC1TAQSb`C)PY~-!1p@v%N_VDR6dv+`|H<%B?Y#IYI>TR_za8-6n;zf z>bjT!-g8B^p^Yr&6@c6a4!C=*oQ-6Nmp&jm$ zW`&mL#buBW*f_Anp~P>_HPv{0V0;4418fxQ)cCO-*x0stJ+8a7Lvzp1?J42RO&4g_ z3l79;@83LoV{3cCkMSCK)N_+u+Y1x#zdYAP;cX*3WfS*z&#oxE{pLPC)!u)2u8`-5 z10gu647L0%&!zGdahQ1j?HP%V3Vp=;r)QhIH^b;N!@liN#v;V~^z81~NCbH1e!LrY zp#4H)-$#g>;_ZlyMEdsA!`zQ(z?0DD?Kudu7RF57R2Yq{BrRdd&4km(ax@a$L)d9B8d*wMBP6(4aQgT(;s!$3 z6Lvc6Ld%hesnYtYB3^^K^gx1&O&V>3`G}gTyphloWL{pEUh?mzf$2fV(BR~JOg2F?dNvUiVQZlYn$+#jlz@d zT)}~#d9IdL`+J~QH2c|~d#;og{-RfW9`**HXE*J0sHc1ZMl3MWpmxRVJ^w=)uY^Np zFZ&B+yfR6=Us}d1CT`L)UNLzuTE;6T?^l-birK&aS{bhx{pL8}CDC@yb>nfE3h{ptWhR|=2++V zus2XnaU1ZyV|reNy@4}`hb;s0{s4FHED>oW-XG!aol}T688XLHe}cPr4C3WOn-HKe z)oZXjAVw=U+n zI|NT{I|NU(9fDTd1;JC>1;JC>1;I0o56rqRc%oepv}hM3jQ}OxqFoSjwOtTAwOxqu zV(o(9sqKQ`iFQHIYP+EDWV@j7WV;}EqFoTQUArJ;zP8pn(Z0oa^>I9pY&iTh6i17c7&tJ`CK&oI8I(u^gjM z!bv=jsdvF5IYu}78X~J{Zofd@yAkMH6UjIAE;uPVSG+lJHqW$~$nfSy^N2g8p$b+o zn<7~pKNZfyOeYESl6#V z=Tzck+zJZnp+y(Wec@ww$rpsJtm967PPTShSjHR(g3kTH=4V7%;BeRYY z>QgLf*;Ku@&J0v=V5{fr^46ZmppHDo>&V5PuSCC1B^#hS=7OG>-DVh8k+Cj?JP*kI z^GV|Mc|NP`pPRUTPgL1Ie}ab{@O(<{pNB(Fa^5!2KDmEBNxVVNN9F#x(P!d@Jh#gI z^FZGZc-Uc2%x*Ib7U!70OFX;f7~AN7n)60HAChD2$^OHfH|n`ujlQ{uta* z2QzQpM+V^JAnM!>chrgf^D%Cn|5MK2q4bl1pt%ozsnSn|gFoZAok~AB8T>itU8eMt z&o_nPwgrsoa!-3~W*;!l2+*{RowKj3JK??)ZRy(YJQ*~QAE{fae;WF&|?Pa(U7cXmXfMu};fAfa+ z`uYU&#`Pf9^-@@v)7ytNC(|Wy;lw0c*Jtv};_$U~H5>Rs<;?i!t?a$Ph$23Jio7O) zTx`8CmKPrf?47}R48HXhmo_e=os+oyU^p%-wGX$^jMg?Bm%-CKDLy?d8_cd!57)AR z&du1A1DCaw*_IKPVMZW2Tb(F_3hgL^O*32BIzDW5l3`VKlHu#a3i*vFxZ`@0N7`ui z7xCLrkbAS_hWk(9_X8mJ7RjCLKaJlGfZSUpcQLexi}~#U$p5h92ZBrB>=U*`Gwb(C zF3#y4@`hW5>`fS}ILNvEo2`uAHd`5g(_k6F_POKpZEkL@?XZuN%Qo|GtGx{_rE_Fk zclYVcb;XR_=`5XDzxSSzkufzRGhq9@Z%SYr^Gh~^=fZc6%-sQVfuT8n`c=h1D?ZO>_`}HX;DFd!N_8kx$Pny(x zU7jv=ov@BYa9RI}l#QB>8Bk~6sg8;h)S*73N1-fF^cku7Y2wfN`0IhcBWC?y3Rl{G|)R@tXN)BVQe3UFY)yn z6-IH__Rv6&v2sPpVxxU%Xy8l(nxKKuV83xed5?ERZ_kBHFqSPF?i|5S9Kz@62Z#Kf zJ@}c!fuZhE|Jaa!`(RJ+*3e)tek&b>7xxbKjzA3lZJoozp}~v&@EOOhp@C75_Jlft z+&(-EA3YpBXVofi=~Dh*MMZfTh`WckpW_=E8SCA-Y+VV^TY+vH+B&wez6B`we&g`= zv2&Jh8S3im?H(K5g5TMK3+G4uJ-uDqFJ3+bm>pYtw+;35p0jmmq`NnhH4Z`u%>Fhg zi&6N{<#0FTb{X^q@1TS_N4HS{b@Kv3+Bs{b6(wa$OH1J1|6}E^bGUo-oHIg$W4$An z4vqB3enChm)}9cIrh5&h=laC+Qa!TG=i^za@UFa&nIxog)hdW_ba)^%1|PKS9t#Z( z!n5lJ-o=C4jb%d#A3#sFn;`0tI2y z8P-XRWk77$*oe0?i^cVGR+K?X;bd2PogaKNH2e^mP#+nT6)*T$$?5NKH@03@7fDrV z7qilCjZR^A10KgDrc2S}sa%eIndwqBc^a4h9QsSsrD^ghT#ollnQjV~zXszDL1X;$ z@PiiInerSMvk4mI*!Kw9nxAy8e<_?nGF>{?UjqG%pfNo5e}cA#&*0%V%J3OHe1{Bg z%CX-vohcU-8u_Ar?4wOLRm*=Smw!*@KaCfVF z91ofzO+KA^1yO_c5<-YkXCj6%TP7Cd3cR>9^mDq;kH|_I? z#x^_Goyt;(#k$O_NVjYB2Q>N&jXp)A;S*KTp*~EjaEpMpyzkJSU{{qn#+X5VIr(VX zgM98r$R8qql>A}xFEPKjhIpKBqYt04=YBi+edLdme=GV>82iYNlK%ktUm^ck>Dz)h zh!2y3{%-QQUZA-?@DCCH2>CCQ{}%Zi-`!{k3g{t@zDB|jC~8;rkz{BrV}$nPQl3i59!{{iy9NB%F!|10@3 z;DtfGRp7g!GAx>5(r1$2N`4>tSCfAy`45r*B>BH0|L^4ILOYB4OTb6{@3j7XgX-H6 z@?Rkz8!n7z4*4bI*OR}6{1Ni^kbgJ%;(dIQ=t=VbN5l973AMe{sZKHkNjVd|5x&7P`x>o{Bz0QNd5@V=T|*^c-u+Kc9TjPG3j# zUF1JR{^R8Tg8Vnh7wz+@^!#vKg7LJHA0+=O@^2^qe)12I{}b}Df5-5Qp4%Mqmy%yY zzG#;RiQY~AUF1JR{^R8Tg8Vnh&!l=_kY7Q56Zt`UzT@QYBY!{nkCXob_-^P_kN17M zgUas#^1ns?bL9V#{8TEBdF1Qw+k4dyi~dHu@3ScWV)DgvZXxLJw(zdha6|=a*QIkC6Wg`Jx@2NAHCg-@eo5@BroG5cx;Q zf0_KZ$QS)X5vAvywi}bAM{hU8^LeN5fp{+e)8(VLt9m^Z&wVfD->IIyMDnBLi}92} z&%d1fHRNAJ{s{Tkk$)%oUnKuq4l#&u9X+%Rdz z_sG4B=n|q~kODuM8(yw*^x;2FpGR~((XB*-GA?f;8uW9zo#+~(HxRvsXlNw4{sy8q z5nVxa2hmkTgK;{?L!!BU7(8(r#@n2}fM^&GaC!^TFxcYsg+w<&rk2B+{PNDRv5`>M zcGzoR%SXpX#yY#e4~k!~m$#g6qWQOubZ+Zq%YhMEK0E^37Jjth!fiGSbM&%NfA`jl z5EFRkfAC4Q_83#r7h#lKT!?w=2 z;P|;~lL_0Kyf|^M3AP#8a@aKW!$zb(*xT9DJA&o5V>IZ8T}_a|@6rnMH){%Y6&1Di zUa}oFfQpLvR%@3qqx18^-^$4M@07oWdtqx6q7jmTp}~vs52A~K@WJ);c1utX^ZUz$ zN=GK1&ez<1w(x`B~QGT z3d4LQ1w+1$f+1c-LCe=rFw|F2^62#wwDRhyEPCx?Ec2C+0%CiyAi-ZD^}&+gMR_Ra^U7-`ZM} zTnS`DQ&DqUOSP}AsII2EvIva4D~npdq_VQ8uDYgiN0}^D`F6kOX|P0pyql#?O$+GR zBK}54y0?gp*DbX3ircQpwAfE{v!WhQ*f{{^A)WA>6^*fK=-60iZ)aDCxfa6DG-;l} zresZZ&2-IjpXADS&2_mAkfx-jO-av~nmH|N`i$%x<||uXvI^F;=eZW9!NNH#MY~x( zTbMc*enKL1ljj8k-J@I>&hQqOdkg2$44Toce zBM2ZT!kneyaLkG8n8FF%X&Mga{QH&l}&!JeyF$yU>vyAru?8- zISxGTo`dmPtsuZh9q4pi0gU64!3C1U-2*rnQcC9(@2h~rp`dV1xJnpTCX>D^lEfWK z5|;|&*JR>t09-Qp-J7JoBT3@&VLY8o`nDvA3nz(t$pLo>JV5ab@tGE16nn>zPR0Mg z;o5_WTMD>Gg%IRI7Jwhh>%d;_g8j5~uq*=%1mXIySy~G?XriR+=wr+P$^(DU#Bm(H zE-N+MPQZ-=A8{Bx{vpnz;f|s{;2|ze!DVT<`~lDh2}T??t3uyj;J2E-eS>EEj5x@S z#J#BD?i*$d%K&khE}`!U4VN*(_Si_A24hs}<*t-c_7=Eki8y{nAKkyJY z4gLh~CJk4zoiS{S5r@sM!0pg*F9U9ZaM(QvT&IS61Of`&3Tkv<*Qpx|;7;5rmsUIJWD!Ocp5+o|AYC&2Ad zaB~vi_9?iN65#GraQO*vk0`jg32=`qxOoY1&ndY132-kfxPk<@qY7?80$j%Bv3jsD z0WM#`otywytl$gA;hP1^ht4p#D_vQ#s;r{4eB~;`DB&FQ|I(6@ii!%uD6K3nF*$+E57jl*yIevO zw$a7#7jw^*^51Fr4x+WiE$l{C^|j&Ehv3iEuq()njMXS{HB^UO^0%wcO}|<3)aM_Y z^27|6v8O7fF(dHJH<~~E%{PWVJPe`6Uu2Ux2eKBm_@=J8IzQFO+2~sAo_PCj|9m^= zAS-@LhI2zW;Fu1=3?FdUXRpgLYJB%~yuCPmqPF9_xv56RMht1x4|s`xjJ~G@9F^N10C|+z<2lG=yP|Q+;pxzr^B^4b>gwX#*9Yx z*w*3Ij}5vO&Gg|f5l-mKRP+rWNUfh<&kButj6KW9Xbku=I?}qUh~v`yVJe?k`f7ri zz8XvVrmSI$QzkGq%otvs(@`~q|Bu7}m=efCVS~@rn9)(yPiX@h${zB{EEwViMYx;; zDfLW?C4f#VDTg45lRo z(vsS#rUagSeO6JxH>Jr{Xh05KT{G*=^ygF_N?}B1bwSOVcm#f}bdv}fN8JEE( z-G=L~tVIjfwfmNA{^{U{GCst9y0wO-?8_{k1!e2@()i#P9qKi8u1(kBCpH;?V3H|+R2hu)ud;QXSb}E)j&gA?xCv}`TbX&Un+031d1!s1iv?jM> zyev1^n&Ntv8Lu7OQLwe{)#r29%<_=#_ux(*s{bJv554%85%BdCZ8J)lX9X?P@!_D<~n5lsJk~_Je zF}q{c&<*LS&%Vw&>kn5w@zAQy{KlyrRx%5Q^MHM15@g==~+#0D6h|2 zG##GM^)*wUIkUcm^JArd^k9r9O8%%)z9k2yHDTS%ImOeFxg=v^Uhsb3ynv^JEjmA7 zbW{gQ4$ccM0nVb1^8$b6B>`*U2Y864Ig_4_1w&te@^dZ8oR|*JVnJu?LQluIcYg4K z6ew+@F>zpVPlLuYiH)j4JI^p2BKaxi1jE0iCsRW4}L z#Jh^$keHFqqrib$RW=S@(cR3d@}NGVD}g`tT;IRK`9d563AY@6ROel}JLOtD8ED!U zs`*LwoZ=#`=c?mAr-yJM@hEN3ltz6foFl~;(aG!6W71=g!S)OVfE*)zIPc3%PPM9{ci}1Z3Vh_aB}xw>})e% zL4c#M$2`>BRa*N0z@cWI-4lPl@5*UrQRKGAm{Iut`DM!<_50_SX{E2*Y@D?J2e6@) z&c&>>TccB02=K8WDVjW0lc#F(G)C!cM2AAXb*K`@0 zd@7gYxYl%2HF+kNW4~p(OiezG%dsCf-84;}#pQ+&!%m1b{nIu5(>3`FF30hP>1Js1 zY%P4YCePt=9CMp4N0ZOw@>pLvQ)6Lc7^SJz0A!hS5`Ft)Pm-6|V zynxGbo@=@SO}>E3WA$@^CSS?Lc1wl=3aFQi#@4Yjz5LHD%OgCMtxT) zG=l?wR@%+_6gi$H|JxK91?+F8uwN@Qo+Y=+Q`yrNd736qV_&z(r)csi>>$W-%?InO z8``VSSn%l@KAnA*@YsgAVaN9d3qC``XRr~Ae5xj&$~r9aOiiB2sx9(qntU27vB3wr!$vDK0}kwV1LF+02Eb;kuTEZi`eNTFM{$)f%eQ=A3ZEr3GZU3vj0*xU0q-; z^-Bv~%)V=(7qib>=q2nU7W#B{sfAw3F0|0gn9o8lhs`&7_~5zN87$jEm$1LYnpBXN zTJE-Ru`>3UMeb#vwb14477M+Cjaujmw%J0jWFN55mD*hptJpM){7m*|teoUr>@4u3{T3bTvc!N8wzoh80?9AKY0eq*$J{><=*#=sNa& zpb>)A0PlW?SZFu*fH*Z}lDh{tXY?}GRZw1+V|l^wRwY3wGVYdAiGjS-D~ zKHl|kKG8S^#k(GSMB|tf?|LXB+Te5+n`^;OXDLME7!vP#c!SypQ(rdw8PPaK#Je88 zNi_EPx$c?lKB939nCs4EH(TgDwv*^nxqKGuw1l6{YKg}FFxNeYEh8GoY`N}}SU%BM ze!1>^_Gc()EH4~$fgLV;n&@#(&u3pF`Z`V*@VjmhZ@>|F*A-aL%PiC8l z#xYT@+hD7SHp3S(FVSZH7qP1WCmh~Q(Ju(_k>04$wHh6po0#}HnjF(E+#=9tX@6k6 zgZ0S0*Q`&fkIyf21K4_!9M>l^e`1cK5Xa@un&S|}EkZfa#poX~_t+4J>$K?SkZ+JL z_?bXw!b^br8kvun^&Dx8H?xDz>?nE+;G;e)KUJ^L&-EQL)1l%}KhjuFGJndTr3D}I zBl0K06%h{0G4mNSJs1wEIm`U9X)~I6rFlmQ`nMB)oculH3q00)#Fdec^#t{mkT2*; zqVf5v>E?U@osIl@I;#anX`Eh7dTyg~x{hdQG|CYVHak2XNF=9s6a6uwuOj*mqOT_U z<3x`Wy^m>61|b=&l0_v==+H7CHiwj`-#4vXn1+K zzRwdqO7sIncN6^uqAw)+i$t#@`b$KEO*YrJpXl?5evs%kc*rMwmW?d3M*TyV4&wEd z{8$#8ag+SeV2B^jit)DjFC7WNHI{HBqQ~F8t%nZ4Q3xUBhb7?Hgc@$N7j8}*=-kn3 z6Vo=hQ*q4S)wvyR(1c4eb)`HqJDuCM4~&KUa0_SWHauYmNwP!P<)XWDz(3kO;P1w> zX=*|#fAM;F67d|-w$9OhEexi9YiR3`e=G=>cm{_Cv~uBLAyT`?F?0-1 z=yi6DjExR$hvRKpIF!Sgq3)sWaalkS9CjP=kB)VYZHL2+mJFhlC)QTFbzu8wPz%vJ z*x5DE%T?M-didd_OKgQ2vnMp_q)dqHwROYIs{MX5DVomif!@xM1UX*6vC(G@*;wW) z^EbAhH|THZ9PEKxU`ZqJOC9*|bqfprm?s>06$&l)`+4-WX1+lOMs*x#AMw=^$Jel) z!Gq=3oeG|rdAwj0u9f8yI1Fi4I4m*Afr<&C;Ud`W1HF=obpaHO^=|Wb5A?$+J$|go zzdZyOs{)kcV1?fgXE`C1IQF=TpOHj3G0#rQ-p|m5v7-D;&$9!m$i09Lr#ZV;QV)EQ1w} zWw64r49XqL;QfQHy+x&t_27gKx-O^2MfTLP2iJRVNsGQ&_S|t2t4^~|R(fm&Z|$uW zL98=Vm=3+Pg5W*0LaV*AWUD=MjEPB+y|R_9^~hGC?2Th=o5b7n!ZEz12ez`+-q$Ko zd)}DD>~&+b+T+G?MgOP^;Gizm2e=no>1E^D@fs|>Yb-!~&l;1dy{cU|7g`?Q%W|I9 z!@lRIiS14_L(;Sk{XI{{@g8c%o%L?V!Gbu+jDF(N%%&cjW6UsDO70l57l77d%rkTI zX3d^+QvTd|^9vR%JlQB*3A5ihCFU zm`33QPTc=0%I_@z*y;PGrmqB)=L==v3w`%!xCX$@vcY{=!)*avkqr*-zftos?hr5D zJE!9I0fEn0IFY_u4L9MS5AWGj^}P&)UHb5TG!=*U`s9d6!58uV0YEAa?^ClYmmg|4 zycfz2cR<5ozLwg=d#8pQc1Yi48g3kLhK)YFUkv`q_bm)KT!#=&`*MOtq9tGTPiHgMw%X}7G6)3pb2KO}$_Y~loY;c$s zHC|j>wtJ7R)^JULv(wk3;r0Oz+alp08QitN|7yHP0B84}=NKH*vbS1Sncg-plYo+R!$z^VCg(r2V67cbr;s+O~pKD3T)e|c;vPs6_cGv;N#D|}hw+Jcf2QGX2VC+0$KJQV$5Gt(&)!3KI?2}QB-^qr z+oy+Z`N`>J%REm$Bj3q3egY0CNT<`uCrg$TJwSG7kcml*Aw&j33^<8#AaN2maVbt{ zf)har1xi{$panu(Cm~ImlEe)(<=@iy|NG6(+|7)3SBoEQXgnXCcE9`m?!0$)c4p_d z%s)Jz>%ODto)F>(O+#9T{Teacrv)8cqG{b7itYtL2bWY@hxTzr|6Ue!P%LTP7De|4 z=y*Dy>ZEmHMdvEblp9ouv<~NW#c*>49p*RB7nhlFE%)y_MYk4o_&kI4Z0v2;ZwNZk_C$-KdsEN_f#d$IRdjC&x)MQ$eQGgZ-Vt=L zoA$3v(Y*&GuUF+3x?DJs>*iYMiUr*~3*BNtH{U{csi4E_o#zW2meRXc&@HggH3_A$x5z?wv!GjSp}SMiEwRuY6m&~1bVmi`O-V=1IEOfch=<)XNNWaheKvV|i-YHjw|g zZZ*e$Tx&qvKO8v#jWC4mjA(n{gJ3HH`&8Uvf6~sHaCL3$x%LCA2agBF?T=^8D!!1R ze{|L6_js2rPkivd$1A4#%uD;6tY8(Rf}hbf`W~;Kxv-w~!g^M26&hyLsZD61dL*#* zlHH#>M63}RI~43xuuH*iY0U&$!NmC-?r@D-8^bO*h-=<(UJRX%Gh*xm;P*(m)3JwC zWF&CTzn#YKt)v~SL69+gPgvk_&D&A|(9OG7sOUlz6woyU8!pfn%S*OJ0<4 zHu;u>edKn)=q08X*G#}`#R7KFH66&~JqOoFOb37%?}hliOt*yHunHsN@SS^nrr{1T zjwx`582#c7$6loLLVm&_;)4fi4BrP2%5)14;MnIz)85#(b-+Q2VW5d(c;Lmph64sV zu&?5P0ThZMaEhVRMKKIqP>cgWXZ7wc)@giyhQ9nEyiBFOVXoyfnCU!Z#t` z_xp~_(tPHH#eVuGB0a2xj&HosA84iM)FR2a|W#c$KbNF zW&IxqEaA18^Z8=TpFt4V7V#Dy+XZYBx#RnfzyVRmpZ!%`r=r7l3EM92uw6s90e+%? zcwfP`l{>D(a75iEz(zV8GeaGBEwF=ra>qGU_b>?T=zd{Shu?OqTL;MjE${Lnu?{I1d!Rc3{&2_33U0wPKl$;$fWW>f6cE?p7V^E9>v~`eBEbP{x$dH> z5LiFXI6Cf8yS%R2#3nLOb-H@uagVhaSz+9x6l^zeo5-Q#1+iy$`F4%0)Luk8pL=(m zE}dSLw`N0Rw8+s=RP|KLzFnv1POse_d8tS%KV79&y*!w+Yu~QxXFssg@ggbR*QcG_ zRJ^b6`CXfepYIEuXu(1U=ZfZ)XnmxlzHfKmlYJW4?aRNFPW%R7UI8-inh=wmllcGPgLtwKqIm2FRK6S&&|JN9gZTHEx) z`KtF52Yt9rj|JX8%+IwB7q3rre(Ay-oXX%p5HlU(u)0Qinnj?dW&Ym84N{6M7{TTkLi<{OYJGz>0tZjk|p=kp&CH+nCL9wRD zy3Mi8O|?sFmsYZU_*_}CDV8p1TW79H-q?{yQV+q?$huI*gH_GV>tc~j>(|Cs2A2T1 z`kL70*!ruQueov)ZZE5?g4C~ShG;j#RzEu^)ooV0SmhDxMpK(|xrv=9{q{io(9y~` zO~DQYJIN%_QvAIN z274Jo{}RXQ_}C)$adGUA+gH(XM!bshnO?k(ePl;Q0{!HFJAImWMlr%LmL_8d`MJR3 z*x!JFaqREI0>-gFnRk&ZB;Kv?Zc-}oSqh&e*-vpoe#!oOFv`^7H{zV|lq2(A@-I3~ z|7$RoIws*2duT1IHfACG1F#6=HnyVUQ2srNSs; zox`!nW`?nj;aFrn!&s*R4mZJXHKQKuP{5HzvKhuY6Mzq>BgY+%Jxb|?^2Bf)C4_8Y z+d{TQ|M7U3ZHw79$hO#TLmr>m!3>K&CJAYv7{(&$`FsqrjEzCUgHs6gkO}zA2Iu47kvrMv;1`TQ)}Cddfd`;tlB z15*XA?-xx82qz;2tNVLk>}kTm(AIvsApd==0N*Bd4AYCSE0;Hm@y946nroBEM0`F?07JLZSgZcARUERiHQb8NzWOS~^Ecvp8p6Q#ccSsu zw-p_>p)UAw$M=uJ0ntBfW4Ce^Zk3t+UT5p1mmla~Z{|fB$xZ?3&fX>e=qrm+D_JK;f zccE~CP&h$2g5xphAC@D|A7pxnP^X|1fXA_Kf@O(1EZ6(sC+aFdhsRNe8m=2qbRoe% zaoiaDP@;cfK_`wIV;@1(Z4kos2;o9^MAB^){KNBk{8U{^(23*0s%}WoiR%JX-CjWl zyQbkD5Og?JZWg~If)3|R%yf?nI&ocqIpG<%1F9_q>wbgaYDp$bhwf;>%{XhTK-?BRUrVWzMT7qkhY=E{F(IS3 z)E%#gdAE;xE*+a6%`bDLNcos&Cis;*mfQMTN(*X{*ILL(b6N0k*+V3VZyEmn=QE?j zbtFadax45}zKU5t^m}H#f@&{Qcb82$JT0x>kTsdIVa9GNn{?QpW=REndk$iS=SP`h zpv-;PlTnc2ay`C@R7Wp#WZQcn^4HJp|8THkZm6bhK`;g5NbPa3s1*zi&4mSdb;qZ~ zys7-sr`?57QU*DbB8&50A9WYMlGAcJ_+m;6X^|HpRX>E7VbI$wz;^93$DN2ThvkG3xjcTdqoO!Q+iOrULD3Rw=!Js4ZJcRO4S(X%vmrvg0 zlCb^s&TsU04r{yf=0O>fawxx)bHU`X@4IKdQkZxxH8Mpn#c!6)Ib4!X(f1*}$YOf2 zjK5Jf?eL5=>-K1`Xbap>)8N~7;1{MJ)x3kq!bw8v8r49odtX%-x|K zSvl*6-v|L+{&o?BbjevcW67G(y6Ll{z0E+VyXS#oL$OfxZ(T9 z&|Nx*b4kV%K*=HFDHncx!igPWdPtv#z>Z$BJJGkZ7bk0MO(p0P5`W;65IB6nIK@6UKu+S>?9%3G1xKOeYk8=$F;?RA@=NFu__y-9y0Ng6d;}e$d zbev0$XC&|p^lztE3m7K=Wb7a-1Rm!sp5YHB=q-%F9~UsrS;)LgvI*~m4wB5f$$shl zEQQY^w@AE4;XP!B#CsLqORksrY=zHG+o0F;)2Hx0vWA_HyhePaO7IWoIPiUF?r@F+ z$F;cA;F}pg;{diWqelK(!ufREfFIIe6yUQQP<;XEqg(xX73WCSN!URyf%3s9;5C7B zBHsdl_%OvT@(9CN=W$Nt9)_`wnz&1$8iMi z@cnI=o=7`8?{`b(5A_enD10z5g#P<3(;tW(3t%b(@#Taxu`R|2@ja zQIE$LGhD~8s=Jx-2iW#urn`pWUbaOY`bYhl%I0pM14l8;(Oil=yq}8xJ0MWZ9|xbC zS)$C{K%yuQnMU=nK$qeYhT$N^Weis`40AhFU&SyE>Ye#q550ZT*VS+AXrnLr;tWpa zXx~sPx8f@t-I3g3pzTT+`Owy{NcGvC31@T!yP5q-w7J}emYGd0_mQ<7t>xvLk{=m_ zHyp~#<9$22I$FsvvAG#udj$lVM&NOIco{qMjLQ8x^_LQV?YpTj;>rL?;jCSv@c!*Z&I zAD-fe-$U@rh97rmi>n9#bZ= zk_l@+cEFPspCfzs_|`RVq_(bKk-9cI9LnnSHe9nV6q!DDbt4IGXxZAL(f<`g&I1N*!Wk<(k~Ow&&AP+a7jJ!t+=s^wd3>+nanIO_?O!e<`yV6?hp(sVwyRpw zTxDtsaMx>B9B!suFvD#B3O%dtaDp-?VKxQ*%O2Yj3s+{Rt_Jo;r1Ef5XPxQLI=)8F zTX=XoWe#PS&PBk?)XEQcQKrQ??Ul-oC<`%v>{{w$@!@XDW}nnk^$qIVw8Q=MXfW+t zWoP~xvVT#v|L{$^Zw?;6#j)Ya?2c?;L)F=bhbZfyGkfpi+*1V!lZEg@w}6E2g9c77 zYkAIX)#h09rmf9aZraqmA^M@_hWah_Yp=)Yw-5WIxj8|H+D#j_aFwZlc#7m-7~&(& z_X&QkTBT@Bbg>QgbPchF^>W~l4JLjZq?-4PNStr@?VQ z`ZJsQwt#Y#^uN2Iu0f+*2|J^b`5t%)_gn|@JW;W`IoSQ6LRtj|8ZA2fh$_SI{`b!BICk zksB=_7>gW_H^<|dl;`z$@;&6YKi7i89{8+lH1j(h90oo3LBe6UtHQ4rej{O+fgE#1 zdsllZbU%Anxg3%bV*j z^bmYwU^I`Mh^Dv042Rj4&@G{Dh!!O&9=0>41-&iN7Dp_q=LNJe7>+yUn?fp_W6@53 zB%0`59qk;U+hMr&L&rU9A4&bn`zsQj?T)yD?#Lr8d&x%PjTA+K@z4o8-x1SFeer0V zhO-F$3zwpQdsF_%UI=M#YJ_f48#?YhI7xHHrbIr~nv+Y)0GI+ZCQvBy}?}1=z_JNjG-+@D| zIR{R*o`P~31-(1wHI0k2aepdQc7KFuT7>!!;dvT2v}8p`>&ODvSba(>&5zVW$n~k1 zH%4#|D>O^r?~ms;Ol??3ubDDaNWv|m%J~Ls>sSXyn?mV{o3zlJC|xNg&N37 zXRv(D@Ffp)IOlyc>(R(?mLu{&yadi7i_6ANdfa2vV_Mm5rP;H*;Qt|y`;{qxuV%Of zaDI%GUCD3|@Fc*WVfbX0_6p41k9gPCmX^<&H>U(z9qqv*t8t4d`2C6S$~>aM3vNYF zceE-8(W)Kf2VbiR4DTV~RQa_9&KNPQV^FLF`!FT&3&St;*g!+u?72g2#a~-VUYgaA z`0(}Qr$wPBidKh!{h-a>LuW1RVBi*Jxo>&jv)tJ0<_>%I_!J=K17E@E)vRZv@#(_s zT+amOVo%-tT#rM2Ye7u+#c(dS)Me#|)yh@x1mRnqYn5l`I^7r+cR|>(w_(nZ}9MId9GS+V*IfT?Z)3K|1m9A@mJ$e40`Ss!cKj`NB6jIbA7`3Nyq!XcEoyk zrq^GPM+Ua<(fHhyiBEk&pW~wiA3f9bouvK^W&8td=GR2mxA!d0ov5Bzm2c1@T#sg5 zw{g_tOw)Tdakg#~JPxb$p09H!DqrjLo=w|7zKq0cuoZ64^#!|Z)lsAJ7TXjYO{e#Q z+q5+WBs!q4#M@SUj(>+k88 zsqik! zV^2+YE`@hf9-m5d=T`VE%45$&cUcPWQFssK%efrZlw?7&r$dsh0mpYCd+dbeiG&JiBETvD4)p>ozJ9C=eZg!vSIr0X;XKT z760=T|ML{yPx(y#_!T~%@d?tUUEBp+~<5Q#VW+?nj$_F`3W-5HK;(xKi z&!YUv^!c+Cem3PZ^=CFgdukasN70ukd_DP!pvU(!KgTf6+2Q-1`z7p1d%cSCr3x-1 zNyWea@T4U$S*#HmJIG0a$M-#V2pHe@yh_0MzNgH)$TEp{E4-T&Nqm;VXOaKTR4xb| z-tQFj1l~`?7Y4EU!)wq1{7)pkSJ8XPn@o>&#sTfmQ<6Sg(Pxt{Nj%v2kiz$oJrbXz z@HwPi;&T-~m#mifNeVxSES31l3O|_?NqnBd=aK)$33ukeB8$TN$xkIdU*Yq~^AaCW z_yGC3#1|-h0l8b^3l+YQ^h^8{g`Yy2Bz~&GPbCqFpQiBB$b5+}Qurd`k@)EfKb^dV z7g{?1W+?m&@{+{QRQQ?XF^Ml$_+shXV@@(l;b)QCr1NJh{A_Xy_ehWojQiG&xr4j&tMq) zMEL&r)6gE_`Pk>c_rs4!*hfAg;T)1;7;j4fM=psmjO}^AF^Pm2h7I7!WCp`{PYpQo z$Z5EKF+6O~0}em=8N)$}^T`Vg>+uN?e3vVuFCh0ajD4JdqmT?TtcN#++`zCNzp3O( zhOy5Q0HZt$7{)$Iz)?i98P?-7o%|XK0>i^TNWd|Jyv%Tr;+f=|4D0%0@_B|&QhpZs zB*S`oXOn+}KzC(Yg21wtF`ul#kZDsglYL^+Eu6-fXt5W7})k z7Qd_Q`&+QN0b9o&-Nv$Si~f$94;F6((Vu7akz2$ehU?fC>#^@S-9E4njDx_b1a&ts zzMbK2hHqq;#vgQ_Kn&;KiQB&-hdPslsCg_C@^g>(mS3z;^X;dulr@D)-!BkcrU|OGkiP4P{^3ij(rTbF?lpqV!(9x2p5Y;ezrgUv7(T>s z6T=TN+{-XjJ{rG9hQG`(HX>)W9z`D^p=(kGdz*VxJB4p32pqoXhf6!Uk~b#1#!Jw^ z6`TtTM|yf;@yI~hd|7&slYVg_(bLt_*WB9MJKhKO>4T2GkBsLM@vcO3M{h^-z!2E| z?27X^uETe^;N7Lzrj6ar(Rg=TR}z-bOtjXeV`+0USa4)tGivU?sbe6Ksw3j+3!d=Q z;6QU*&rRKE%`1}<{G`J`GEToQ(F?C^jc4I?uHNQE_rQ3jE8Y#uYi^47j;AnzI}@#m zzUKD69R{Z&-@C0j(Z0?2Tw?;3+89KztIc~AidsRg!7nW4fg zVaUN+W8o#d@xJRdw>P1rqP?dtk!*%FIZ3cw*Ec|~jQ3#`&tSn+|IU8QM|wfRDk{2a ziXTgWq0~P3mPL14NB1_$;5COvX5rdQbjnAl7}r)M z<2#b&hSy^H(cmxWXo&J!dYHv#w@EdWok{CDl?{bg(+j22eqboP-~h8HKut`W10swrg>0png`XU zc~EVd2UVtdP-U72f6$8x`?tX>`SjXhH*8^j=fpQR))A1J*#8SRJ*f{fE_ENsd!pRw zlG5}Cddt-Bw!9xG#dzG^RAPl5qI7(G@9?}YD>YizYSk@R(?Cp({RY@rABAxsxX6`SSw>g;Sg=dQy(+Rf@q+_ zXDk=p)Bo}PPbs=O6WzOT9ELB_^N^RqejA+29rushz~tc`0!=QS$Q;-G1z^#?qd7`(uHqk#MH}hfhD;Xo`7zKLrQ`1v z9gcN}4DyBBTmhQ8cVNdTy$2Ql{2t?V+BoJf#;+W7M&;3_=%S!A3K!c6(Z4p((F1yP z)7S4h#lJQf+%qbV)l3JM6LmL(4*lnj@1w1pe0~tN!=S_Rh`Wf)wyFD_OunYrv}DCKENN2SL{Uaq4E!VY|p3-^Xu5^R@=LVbGm|J_2`~%Yz->W+K-+75ZyX z7dm185%{5ha4Mbqfu<+zj+N<)?Xi8vwjFiQbkc7~i@IPr*h`1ws6!3c9fy5U=bcMP z5RRb^qsetJ4I=3(K!@R=4sT6d*RSY8f)0|C)@@L9b%Jh+pu>K(7{4&+@cxG3&JuKG zif$|DFuzb&YN1OBI`o65L-lV+(3M;0_6j=KHTCa+pqpo*J0j@tUS$@)#|2%5h3;8F zx4=U8s-RnFq5FlPTV$boSI{lC(0L&#bSXhsZJ`?ybo^NpuRpb(?iF;k7XBR&bjvJsM+Dt+3*F;_4*RZV_4HXmhwmAf z>0T9d7hC9lA?Pl#(7h|@@P1-enYfKB@>Rm-Ytmj%&H zY@elk4Gk{+4TDF?H`4Z5Za$vhIM(T37p`5L>PUS(`L zFe(^CON0Cf^qoa}7rMTZvxa)GPtb|${=*RN?XV8t4|eQ}Tv|knKH18T#|RuBg4equ z8-~L0e`IJF{*Mif!hiox;)LTn!|;D(=P>*q+X;qvBK}=r_`hM-F#I3cH46X7c9AUf zcX!%fusHzM4)n0IVx+<~_Uv}8)E{{k6whuCd&30xAkQIg8rTIu8v&!RpAEi&Kf1jG zz>YPqw)nx)L=hfAJhXdg6UmRP9Qw_4RQgXhgK9*?1A20bqBn1k9hh<1Rz1~@O;0rnbTi#k0W(GE<9&S5%q+YHFVw~n`a z!K#4KS%L9VJ?;2Y&8SM=PobtrHF?r%|vg!EsS6x_#I)oEI+kb-v`u z9@EfPM@0^NAs~OuRZ%oXzpxzaUG420rPeOIog*dQmH530@PQs*P?D|5N4}yQ!T6Em zc`+xo&!OADC?ej@Ftu-?`%F%FI|+n<+hMo9C3H)IXsg4_55oKyX6KHwbHi*q>O#LV ze*FIUh7w=thRFI5+Cf+~yQO$TNi^asLF5=&9djJmyE?1kWY*|pZRDielQ+CPLXWwr z-Gq8-|KSR-#DJC;E??`Nb7=LYfNH7Tg+r@Xz`kyS;n3=1J8NTTBLXcr99mr!8xA_k z3IUOk%B#F{j-ic+vMG#R6dNg<%JwT_p|a_0e{L+hY#Q4yjTONj`K))2_TaJAi+0YA zjRu{O0Ar5~&4~RaN$vEPhKVyW42&LbVJsgM|2l+m$d3(|tz`Piu)m4z=fM80Y~Ks} zce8!{TO~AS4*VX<0PRI+l@5GgIIJ<75l;<$d??^5h`1W>i92_Ocg}Q?EN3Jq@|){rT2Qb@9{jG*H)~RW}WoYyhf`rn~Gn0 z^zh2xy`}{p51(o!!Bb!l1kcm!!@J=3V)VQG%}5^j7;Jc#`Hg$J-?-Pi{Wi~^=Itm3 zTQzCFbEw~61-~(U1gu@TgU4D)dHzW}L;vYa)>z@1DTk**%S-OXBW=ZRK6-TJZ(a*^ zPF@3FIGHsWzSF`i*<9oq3vKt7?2Uw4^>hF0#V?dSNZfF?Mq6eQMEg)!m$$*gj#1k@ z*wx#wTX*g583=YtU#f~^DYM2-Yl zsiF4)|8WOZ_<`LDzaYIAXmLL)A9u_}+vaDt^ZUpMy`K>9AMEVtc4NTK&R%HE_kx`r z+#-ioiUPiXBWhqRWJa7WYAN{R+(NY`Z^{M^wCsQxRhg1IaeJXTZ zo4dp{buHSyIn-GZIh1gmJk)svwptJ#dKWmy9_rL055dugI(NfXD~Y+tBGh`BcCW6@ z!mldn+RzDI%kx(Q`!T#cw7ou8eaaW{#P%g_O+BA*$DT@sD}61Fj>eXi9s62_JD#QS z4?|w1?Hs{=Huekja?#W0CgHlqdpaNVJ_v2xJqhp7J=EUONM})G1Y$eVc>uQ2A*~EX z{UL4g@x5^TL4)JZ!toy&9M9Pax#7fg-_wbqIZocw`El4rcY^=$b*FLu!|?}Q0g5T!;N-d@kAnzYnf0powfbWI^h1RKduO z&qOw9@FC>pEf`XN-e+oUQAZ^||BQ1F@_wr)6brt8b!uW_|zgTH4IB z6TXqHB`hcIz6m>LW4B54>%ckm>l*5pJ)3S5$N8pTJ<&-6X$kJ$bi&cN8QzqYKps%{C)=A4Cfx_JMN;Po|a)wRjQ zhY5U|3GtF8Z5?q~RW#U3mpNUwVnuc3V*0OgS*U7pWoUUdXcE1Hm%&F32a-ce)`bAK z1K!-zK5$LL20-!NME_+M!8A&;@1~x<&deTg-962)QV7;T1?egzTw{PKKJ#>(Gy7{S z;|;%8$)b6|{+eJkttl~>=3{kclHhY)eO!==cQw(<&>inGR$j2b zcESD{Z3hx?LmKCPFLqCeMr7G zrMk;fc#q=0N8!Dc$2*Zli{4C1jQ9Q9hHuixhq_<>#f(U###; zD4%IRmMHvE%4hOtsls1Gc^oa(-9-u?qI~B14JmvjGYbc+& zzG@V{mh$)%t-D%6}VPfC2Q!sn7MiJzqKlgN6BpRDkc zNwvi1DSRH8Ch>lS_Y=3o=PP_Z`LXaqwG*rd$>kRy-<9|Rg)blvOMIci7n0j0eu~0R zA-EQYJ12ZeP!4}8*(mYT6n+}1miQutFCzI8KV9Kv`=d^{Kg!|HAisjf4sUmOPjmqP zx0%Kd>f203Ka(7n_+o_z`+*WaOW^@a{A`7vE!hJ_`+;(N=a3E3`9Xybl3Ix`QTP&4 zBJrgPUrKT%zD(iE$lD%Xn%F*-D||V5UE=2|{9N*ViJzzN^T?Mae!jxbC;KG6Lg6b& zm&7kn_yy!ziC?Jj3rW4iFH-nLq(b5sEBs95QuvF= zUrBsO;X~vb5?`tCmE?fLS1EiI*)8$a3SUjOOMH#O*N}A*U#sx71lO)|r;&@vObK5? zGzniye(vUKyiPA8KalX{q%0=E6ExOM@XfFSCMHFzLNYm-k6!w z;7RkR5?)Q7lW>%LL&7og83{L%k4ktAiA#7bSuNppWQl~YA_Wp&PyU~i#}4yr1NkQj zZzSKB@Fwy#32!F*CA@{)B;l*chb4RsiAeZbc*#c$e=Et8@Q27dnJx^(?>h3Dgs&&x zm2eaJqJ%$8_Dc8$vO~hnWRrwj$Z`qCNwI`m6?>ow^3UmKAI!ft^4Ahhl4BBXC!dk< zHnK~?Dbg(A4zfzZ+u<{OVt#d!$rA1&|B<1gy;!bXPs_;kAMTj_tkI&cv$4v4qhVhvt-~fB04C6C&z%h&5$}m1N2OP7>Hiq#T zIpCN>HZcqvz(KN{VSENed$DB<>**^clNr|2Uq=2N?pK-oC?{_)jL&ER$6WGP4C6Cv zz%h?}g<(DY^U0l(zJhc!tcSmVe2C#2==lptgke3ti^xKT=TUw!nZmGM-b<*xag3iH zpQYr-Kp_4J)n7!OV^}Y*5cxBP_57?P4@kI*d|blSq>Ev_{A$R0hD)jcwWJ-k+@XEe z%^biM@d^dcRq#{=W8Aqz`>9g@4xaxoTpuj-$Na`^7`JOQYAeJC3rrz;1h*JpUreL* z7`IdpjSJN`>UM^GQLwlS0s5}g$THL~$!r@CFVaX0Zof=OA8sMMJK6RiZh`+g!&qOC zr||TMUme{40i^Vffb!e~RJXF#Ht5rx<>k;eTWJ zPZ<6!!yje%ZH8}Q_#K9KGW_ohf12UnG5kEka8ttab9|HGcNzXH!*Elf{AU>cPlmtB z@P9Ga!xuz;N6?=tLX_z1&O7|z$uf!$Xyr;29XU=mNUxe5dt7Q>Yo&B>t-OB$zx zjZYuw>)5ulu1{by1EgTy6JjKp zhlS8#QogxA6$dl6f>l#IKF-W4931G_k?aAZx8r>22UEC;C0vkW?YXg6v`5PiQj4hI z8yYH=qDoKE?WLv$yF15|7=>nx16m#(cWSafVNA3R#GB&@1OI?fylHE1uI9zVG7t^+ z_H_3rn=ub%IW<%(*{OvzQoE}d(Qz528|0&P7i+;z#WQLnnX*)yOdA1nj!0MpXVy-+24<2$>0(w8=?J6wSA7+)Van}W&!ZJ`pT z?lsL%=Czq!KC-r>wY+>&@*{)LaF&1l)!JVN-L# zXJxe)3NO*z+FH}vS{qtsX|>l#`M$08R@Rytf32)FwfP1A&5RYMd9lJYE9y*h;(~eTWO=P=Ww>A-I$8b)Z5~>`3qg}h`!U!PztEk9 z-1wjG&f=q&)Fr?u`~mfGGf#k0EV0_?l<LBM_6Z!GG5q)m zyg`m{k<%Z(M-K0n(-+D4o8 z(~7j|nga*GEp3ViOG?Yi=gym7v0&k%#Y>i66soMMuBlyq9xaXk#I4V5WI@!>;TRvz z>v6~T|4z~2m^tTA%lBu&@E`oqIRiY7W9%@5opxMzT=DN6P~@gn8UJu@UGxt@k%8`` zimnKBTMcyADY{9>` zJqx;W1OJ{#qD1MJ9x_3=k?vVVw+D1a_4Lb%?x2Z(w=24%pi3E~1Exi! z_!Yu=s|<8}&YoZATTOI-s`z&hbQ>@On1k%4&d9ERka4)-x)InH^Dh^!gC+xAucAwV zuEHSPjf!pr67;5lf7dDbH{da@S63*yVbGNu__s*WJq)^_fo`gzdm3~`_4L1?JjHxD zX`*{m(Y*({LW6MY;F##2-wXEo40O*Z{^7fQM)g$vokCMRy2v zZ3gjcQFJbNm%*q#Sgq*%pj&Lb%3@9F4(`C`v>`r?p@H$(0A#7c6gj!{{X!6vr5o`H`L9C|9l@0Tw_!B0O+u9 z!X5WR_3!U&>H?5hJN{i|Q@78i?irgp_>8ix_+4&Ox67vPn>Ka7wW(V=+1OsXT5dOj z&Q5teYE$=Xo4SR0_TtwEIy>?Ex=r0LZR+MhBV;GsR-3xd+tj^oQ#TbF5j*kQWK(w+ z=2v8g1%6VN>^%P2KNp>Mky@moFa!ot^UdwoU(j54yFy(S@y9yW0pi zUpu<{Z0ddjIy>o@4Ic-vqr1+g?mnBkmu%`L!%J;;;@4|DRkfX=eMu#QClI=e>cfY%k%brF-<1Ul@maL4yARdg+&Gy2{}4d{4Z2L0H8 zBSTQe$6!+c9Qp@MBAE{R(1lF94b^&oycdqZqXgA?Vf!}xL|qDWcpP=p;fMYqehz-3 zu2;}uKa1q5p*?* zE(iyLa18yM2S4s#8SIPc4TH|lbQr#wZiAp(VWDdgbQfFbdIjAj7P?_Uhu5)L{6+-b zWfrULU&Tot+ddc5_Ay@9jVQf?1h6NqAmuB%B5p;OXn&}P+x~nX7 z#{}Ja3*D%o+hCy^6LcFbbSDMfCJWsuLATjLhcBV?_GOEO&M)Y$w$KFy-8B}vkf6KP zLKhZvTP<`O1l@-$bS;AJItyK|pu65eH!SFyEOaA+?!y+kLxS!G3*9k6*KDC16?82Y zx-mf)x6qvwbgdS;Q-UsGp+jTPy#BRW==_2%X`u@Wx^@d4ybqNQcbkPSEa*}ex($M^ z!$Q|0=(bzvdIeplg>G2TVV}jUT^kW}I|Lo}wXk2t-67EZ8pf)*gYF!4@Hi>y?t+`R z24fuDaUE{Kzg~X))6mG@%K>b;4quk+O0*@G_FM$tzzGH`mxoqV)h@5AUJ(q2=n?&Y zWhk_4*|K1;DpXeq8*meUFXsq$Y+&9JZo%Lx$bNEH`g=K^m@jol;R6w0%kI4^_h!3c z{m~FuJqK(58nsaloz5_Hz{1|f{7&y0;+h`TBKZk-G+gIMJ?YvPakMzVGQC5$KM&f| zr^zY*aaXiHbsDUv*SF~3ZSbEM22Ly44fg5lsTQ&Scn*Y)R?>Yf`qu)yDSyP<;yCF| zjlkBM!mqb@Tky*V_+0^v3x0EE%!6NQd6LF2498XuY4kfYx3cfd;8$iGI|CYgd1mJ( z_(Ef|HJ_ZAGZY8)`xQ(POziz zjCkS899lGz&X-&7*f`^YQrr0?TZqZ zH@YCAf&KX^cXm#;GcXCQ(L13ew3GuZ(`zlg5MRs>|MBd`&8d5*d@-`Q#nXu2^YL%j z%8DZXR_94S{hp7%bz>`}4z$A%wpN#&2*1@ZBeJh0JfxKdJZQatFXZ7~NY!4*L)_}+hT%*}pIZp$;ujenh(v~F z()0JF{A*@}BYS7MXJ(^+4*Uv%2fvT7FGcameW?fF_^o?K_Xga7N${NopCjUfucT!B z$GQjg8NNl}8PjW$H{~nP^H{G@poTQKW8PAXsjlf=Epu=^(DZ40!+Y_YO7PtaOa;p; zSpU}PYs?R82`|lgxGut4iw32MC7`ADN1lTE0A<1Q3*+?r)2F|O*ICXK%(un@v#>pD zw31+j>!lf~-Qj(a8Q{ltsbC%MUzg5DQR5RdK0$-uOB#MukFz66Qo~up^m|3Hz%LBA zlQ@VE<44OrI-H{WkUso-CMO!vdok1*`RH!?c7AIQOVyS6lym@*?$+Vb(ej?_%o zj7V$it*PPLiOUf=-0G#@DhZ}a3cQgZUPW*YUZVjAT#G}a@Vy(7<$!#J_91;Oxnhke z7u0~6&Z4j*(wI)~={#~8zBK~h|L~4sJK&>V|IkAKpG)-iMgICny1n=@Iq8ly(r--| zmUUx6=ggd$PG_VbG15tLh|>$-zvx}9rx~s)H!De+2U;p!vJA7Uj@AwT@kz8T!xA=Y z%U*KpSNkc@d? z7VborioF)+%K5IRw-EH)mBNl4OX;fBT(Qimz>hPHdzQty6McaJruR(4ohaSVCAO7r zt1=5t5Wdy9R^@FJcQL;w3fHQvaGcJptR@NNj_!?miL6Q%c>vk3S7 z=9PF&V)@v)Cavn%`^_^kd~AQuHhimVbE5X_Y|gc63nvQK>RhZVR{0%0i@Gw;;@pYi zY?W6N#rbUNNS)0(V$~MC-)mE>qf2duZ&hYz(+1;x6R%UVK897e3oXt)+w!)`@Aum# zVg29^%c{QM<~?@44qz3BiRzqHzCl;fGSAg;#rlH#yiLP2MS6C?+UI2Vz{NpW>lsAY z(FLEVN}F zmh{H^20G9xINF7ex3x9H3jdx&e>1Eu9_(&Qws&+V(dIgk+mhYMJ_wl1;JhMAu-O?K4*;Z|q1U zsfXZcWL+rZ!K&uwb+O2%^=o4*gG&HheNAk0Z2eWu*Ic;?x0lscLF!jEL$sS=tDhaT z_%;JBs7beYIMJcFuVQB@?KC1|hk~8t%b>^S7Tq}&-bH!r2k6eF@NUXy?m=#a&!T)L zN?8i;p*;3;bmvicFXi!`s5`I1XHy>U+q%nEcpv36@%Jfw4&|}Wpt~G}&!s%}dv%wq z@RKN?N#7)epG^5o{3a`W9_6u*rMo2T=d@1E|JVbY; z3SUO~O#LrY_;SkQIFjzl6@D(|GxcMx!h>yK$lMG+PvPfNJ~Qq!U*RhhzCz&_DEtD2 zUr6~n9(}S<;TKUpbA2vS_{EgZe|; z6@EH-MdD{D{0#CPiJz(PGs!`TFIMzQutXUDeMNJdL!vPr_1lR61sL1s%hOk5JKC%??x;-DU`Bx4eekZ($O z6~Xnp+-c-Wa;t@dlJ5u zJS^d@B!@OW4>2D5OlTW?55u~DKGMc8_LKBRLG~`By|vLHmsH(eZTh_Y6a{!T%ZL1jBmzW|GfKxR`#c0ndlSpr1vyN$1Zd zYb88~ESAm>l1U6>pC4_7zXa_Y`lsi28TlT=*k=#GYaL%^SWo|4a+ieXkpYIW4<2yL zCruKrAXi9u0h!M*_NfDog(Qz*y*w6?-$F&q#AmUz_5^KjV?J|-cq#|5MU3Zihqkt* z_89utSPy+*ix=yM4{Y>eKKuTI=r*n&!q+wcx9j~?AK2){a>6a<7aqrW;&~W<2fS#D zYX}_h0x!kzLM_GD>F;Ntt>hZyKgIC37`}ty#~J=A!+*i>XBqxB!#xathhcaj6651| zg5l3F4DXlG@U}7hU54SJr+R1%D8HNGQHHb9z3j)%pVCkgw^P~yK^+_*gH5tZ-xd~%E%>z9!D6J=snT^tq!*`Nz ziuWZ!57{CyVAE|N8SiU`*)eX7RzC&p==LSslLLvActRhV&!uXENcVOOC1Hp<-ZhBk zr)k~_QAd+iecM{AV5$W^_S{OvqSwe{G-Ug{G&V?qJvs{p{S?jmrca|4r#aEp2{9T> zo3u;QXph(U#J1kn!S?3v!5v~8+XuT7106lx&B^X~YnPN`X$lHp9M=W4b$pJrLw>dC zRU6Gp!%UwPmeDCNP1O)@jYMwT(|lN^~HdvRRLyX zh1h zBIB$FH+RgNC-IoxjNnWpnkJ_VTnuVJ-K9(ca7rr~HD^-embQQ^Uo}Obr(=Gc{aXYihXog3(?u&1-77_yb_Hmo}z1 zLi_u^do}nWh;&CzXlwtsdpo?97NT?(9U!B=r{MF2{*l^a{6F14N8*602Hr#C|RF$iRASFFcIf zvR;crOZKhTo=2OtV{D8r3nGLL$0*=X+VTCT6&;R|aSp|N|4$ViCKSi#xZ}Ee6;Kv=;-JH z8J261j++!+G3boy%T`6V*hF`UqQf~(qi{yXN-x^;5_O}XGrEp`r}+0S=!)PNcf362 z!vXY>$;UeMV|?+Z5l^Lp*Y59fOA zWXvhm0Jtw z?4;wMP5(~X^sg9hGIqk|R|cJeO_Iy?UD zvFYEaP2GDob#;06(lKCDcMNn<8~2ZQZTeROH%mMD+zUFReEw(Q9){6+40J9betaLM zlhgM)q#p;}n{dzMj^DRn+8f>#%(#Q_QpPFJei{y)gdh3`kURlDXv)&=&iVTL7T3cO z^cHo{WRow#Pt@Hj=-`%<*6mYt2L&Azby~Mg(LF5aN(9{oMRyc*K{$r-D~BJCANKXc z_`M+bw@}cPDY}+~S81Uu7j*bO49^!e zy)}Za+CsNV&|%)1`L{*T)mrG<1l=+V-GHE5ZlT*F=&)aD7QcH1-3klc!-DQ&3*BRa z?h*^#(}E7$1+)0QEa)z?(7h?>F1OIVBj~QM(76_5>R;GGS19P}Ep+9AZl#5;M$knp zbgKm2Dhu5fL3gEvu1(N2Sm*`>-D(Tn9zhqi(A_KOVivlG1zn?s?lD2P#zObBpj&I9 zds)z}v(UXM=&rKRy(8$>Tj*TSDD!p~+jz6P7}NK3>t=}cJx7|?_nc|0@43=g-*cz2zL%B8`kp6^^*wJI>wCH{U}udu!9JT- z_VMrxZksI^?ZElLE?f4PuF^{MZ8lhF^PkZ72|MPB4u@PV-+O!gr@!}h&!^Ep0=C(} z#$;-xZnkk^n#T${K0WY6l~aeMs*u@G+cLMermIJe`FNw^X0ds z?Y#l#1SV8=e}sUo$9%MiMvv|9a5CGK`_W<`97DT&?%1%g9Y8z>Y_e_gZX#e~P`9f_ zkL~LSXn}0vaYXhpf1G6xx^Hzq>vlxkked6!@+4XTyw%BV0Mc|poV2nZxgfq^y^_WX z2OPt$DA>>}MC+N36k5`Rn9<{*w#OTRJlXz01agF)b$Skl54I-D9@N5)+cnCAjYiBdRwC)}o=WNAJ(W%) zi$@2GM>_6Ueg#wRj|@YqdHK0${>^klsk+7dL#+eKIt)3*wf^JY#{DbFYxxbH#)6cq z{ELxc0`~n{Mmiw2F0k(x_n$b8jRnLF&-cRlqr&;l*z+9$Cwz?vO7wYF#(G@Gry&I1 zh_+|`5bf-pOIt25jF5JI*n{qwlzwjC?_Ar@DNKi|KPPb;GG^gVWK+y4?&tbkG492X zj{nWL2Q13WDBWV*;gS2S<33UNR&^EY-kFv+uCcH>*DBnziSyZ@h5hU^jl)Fwrp7^R!*DF*Oxj=3j|T)lVE2#6hME3EWXFbCd|BNG z--MZ-+%qrWb7I0Qo#%!o%qV-ogxLiXW*1DDoevXc^zuqzBd@rMmR1eU!&O zi0*s}pQG?O3ZF~)Oy3|^;U`f(lRuLbezM~KWQEV8Jofo@m#6T4%40u5cYcM>SNME| z4^STaFS-jTd;#S%@h?#LLds{-U#Rd?l<=o0{8Y+k%4e#=PosRM{HG~=5#{k&RCh%R zKV1oby28&;_!$a6lk%DRF;n4-mGg@gewK3nEQOy<`Enk8SV1pee{+=c=O}zo;e!fa zLitSnC?Pwg>peoE0!Eu!mokh)(`ZvGB;m}=^(xAjrem(-GLohEcfgaDz{IykWb7b& z1RiZ_7X-E4-ULBk@@ZpGA&Iyhq_ZIB7m#HVU#RefWU9nZQTQoDllZ9$Kb8CwR&?gTf}6rm zBhN^Dk-`^|uSooKg@^V=;%6xQ4ALj@GZlU&*(&kH3SUgFkoZ{&KTEQ4)sg!S|-QbCME;FCpI$cn#hRxlh7#$;}d;M_MI3pWyrE+@U3s zr4n913MIUd{AZ?#g4SyhOw91JaZYS8c}BuZ$WaL|C3j2sA~Gc55V=9Zm1LEKtH?qL zR}*}HpF0iSeEuDun1h2FsU>enco}(0!pq4K3D*%i;J`f8$OdKLHmUm z`xpU-i~NjX>@x-&Zt^U{*hfU0Nsls&eFC(ZbU(w`2Sl4mH#3ZV3bdKTZT{drJmBzA zn{gPPj&rDuIKo`cBXIKxvM0%(0 zOl%TK?G^M-AUec%RIe|-uQ1y~fU!IfV?2>x%5V+CmovPI;j0+l!tf0Yw=vw!@BqUf zV|Wk4cQJe~Zl8r8+hV$X&$0Nx@p%km{`me%x50$lI=~Ky48DWpSjq5}3`dv^nolwt zG#_SoFT;Pr@a+u43lkyq2VMZc^g6iBpgS1e&Gk^h40keo znBi>l(LB%rCbCp2J`mTdu0kX_zz7ePr)9`TiR&{JkDY*eAp0IX_L80veT7A?Sf`nvWi3R|lR%wpwC+Nn7M89-1IP9eVAqzVg zE7igdjcKB}ZCQ1DRdr3=)WVLj&fLPz3R9~oD@?7X)R|gMsWY`0QdbQr0vl`1+xmK& zMKfyUbs;lm`EpaH#+0cvV=h>ZNtRceTFLLXd8h=iP9LkqMRYz1i~~jrVIm1)G+0 zVn2m>WMDr99&GH{PpJgq1ol(TpV5@Raq43VFcd=_KGV6_K5qE_Q;H6ssW~U=MgZU# z1@{l1xpDl7J3d7BRmHzoK~Ts=u;qT=2>YUcZvhU&k2|jWl;YoFILXgNu;sd&6y2qu zD>BgCpy;-k_=oEq#Q3!V!0{pOc(^gezhTfBrFXHSyBBmu@yk_oM@_>rr%J&>7|5)rxM5iGO%~!C$)mb(#1#N6`&~&ZvA{iteb1e?M39Z`4HheMN^h zhK%xWKGVU5y0<{LiUZhU8quk`5L^&;bU0RwZ6$YR{vETad&{P-!fh{pU7)iQzautv zxL(^%zTlj!op9T1>JEXuRZ_P+SK7Y6L#Wv z!N!SxCC`Tqzn1aH`LJ;k)q|q{d01+=6*>0GtqpW`u8$)oy5kTF9tVujTcCrcDDC+E zQ8*&%PJzzIhQq_4gIizPy_`?TXf7dLaO6wyL;tX!cPIR^;m6&*vk5r>;7a&GQ%!YH zbx9xmMBU;!gaqLj>YzzV>tNbL(yav@o{u^_AHzjl!!T^9+al=jKEicnurG$&1Uig2 z`d4b9>k@S6hnasj3%YU(-JODNu7&QPpqpo*J1Xd~&Y8vU2|-t3p?g8lEwIqNA?Oxb z=-v`^i!5~S3A)7=y4+x<+?H7AiUr+L3*BNt2g{F5^Y2nY7qZZ;6?FJuX;vOhg09L! z*CptxEp#^vI=m*#!o5?_)mrEd3c6($x}$<_xrOctL04y?dqL2xu+Y6B=<(;@nd3U#!s)&I_=`&jxrGDRaviSS?;C3ETiSC`5MAZ+ z(2A|sXRJhZ;20UGpt*?(S*&X+kXm}(D zuO)E~_HpgJqf}pIJ_^_s-3@E!^CP=kcBl5kfAk{^$HAsRMd6sf`d^QgR-z-VM8_iM zKOrK*l*CX8b$d-VtkQNxSHh}qUt}c>(+TY_hO0%xoirW#ev0mw;PK&(%>JlwoCwE< zg>#9Z8K(P~UR<9a$PKvo`g{x%j}h11kBY~#Va2@`r8%g_i{~K}ix!LOc@6uw!%BNU zq^2kf_4WFCbnuhg2za*BA9*&>yZYJA5xOP7ojQJc{{L_9Tj1j;?)&E+l1^vY*2}hJ z%l1i@ZTWqYZCNHbk$gs${2<0QV1mi%?j-xpmZh^EMg$0kU@##h4uM8M@~>%{#y}n} zh16|vaDXI+1Zqe~4TV;1(}WP(IBlBHhJWbyH#>7TGrnD~UrkdyADwo;^Zm|qXLo02 zXMbDnU3=*Vyrcc4`94N(y%!afOrE)LS^I|Q_UrZ(hqqyoi#HGn$HUtWMMBt~I2_*g zZgru5Z={aolK(-WJs3a8wFkMMjF)^ZE%~1i+7s~; zT#GIIq?UXwE%{G`od$2JG>BDS5pT?s`in?)#1lJlxE%hT)VtFr!G^&s_;^x<-ohYS zAGp!rmWwdUV=X*P3;YY<-;xQ_0>%nM94b6S^_TZK&-6XbYcD0+151(%B1<~FBTJHB z!?tbh)codUR-Fd&iYLvezj)>P&2zR*8Z#-sEHWoPdmFx{7rZDkJHC2kyYSr}-zI#w z#hXVS5x$Sa9~Qn3#}|+MO!)pR{-*GKGd_D{&UO)RV)k|sZ({1mcHz4{u}%1HOO%g1 zB77f7JS==4P85#(O!)pR@uu*7GvS#v_eGCqd|OKgtNBu3sOr|%nh{q0+2vzj++R?I z>%^ZFe0^;GNd5z%@8*BzY4-W%S&`_{B~C7KX!Dx zr$)Bp=0G!}7Hx&awS~8NI*$t4y~$vFd2&_!mgL9dPbHs=``W#!-Sxp(bE=J0(Ae6G z0OwzIS+an)6^6WAmbn&r+V?8yS?AsnimQFqII>rf`y9*r%Eg27br!tHZgP z#_te*f#D-4bK!6^{`*!P+rB>%h#X6tID8W=E<@bb`QMUB*TOevaQgB5HT#oaEUSy` z@33sF>`xxRej06*>f*%XcO9IuW@|FEt!Q7zwo&``Zwu}l*;cr(`qJHv;Z$H>I#sYQ zv^{@c$M(E^`?ve|jcoVro4B@lab428FPZf0o6vS7%#v*11b#=T;Q#5UZ0#r-4#h_e zcf^Ck`{RYfBk{m+I94#6j^z)B629S)gm<{E!!w-h$Q$lR_=oo=^4i((k@`T#yP?wX zfescr&@uWT&Lpb8)l@rl^&*QRbS<`QiTK81j0GMw!JP;Hsc*U&zwl!Nt({Y*4|P^O zvYfp%xixXk)$E@t!cSDJq+aR&ZmSjnuhUz~nDB9UyZCn%w!ksZv{IEuQ)<0SYZ|#M zGhpDHakP5UKCE+jDIWW<&UrqYbm`=@PuDrmPGL`FdBmx0oK4sQk8_@#(mlJd1zz)w z_o__GuvW;nlwE&o-X8yLzT404&HIVx>6lUbb~>NOIHr4cVa>X8e_owj?`IQMJ!Ti- zGJUR&S?CmXXO>@mLPWD(r?QrCHs{RmW7xAfSI?%rx$XgKn`u6WZRS+>1hdVk?cVu5 zcIMZ}v#mR)>kGAW`+Je|_2pDy&AKAJbaXv!DZAlT{~q6MbY*tRgBedqMuP2r{Iu&u zOIeS1ZQ1pw6Q6qCe~8ET(OXY9Pih?04o-FL$knFRw&dKuaK8RJ->Xgzd-8EX`S*BM zm$7HQg`&VkdUvFId+^QQi$Yj*8zPv(`u@=3`QgTp^&z`ZW2i1ZnCk8fEm<6%724R_ z+kH_89|*>J^6jCk7j-UN+|_vvlOFTt(FfyFv2IvY>FJHeIyAE(rH?vj+YAJz1{s_@x55U!8E?++uy%z>C%PubNRo<#zhUF z6Y0Tak>0+6uAzBr!@ygBH{g50SG2AJvc5{YZ2son_%^JH@86uAJp+sH8q<33Wq4m8 z(G_IvJ@|qx6`a0&+{2ws%V$Bww`4K)RhF+{ppwe?1dg1H^LoXK$y<9N# zay|^b@Y5?{UFX&RbMY)Y>+mMDhP?*%v032h&SyEF!TUK+cP7jE4L*W0N_bZSRwf{7vC}Hvdx$ek$j)=i^j^4;k@?48EH4p-hIV4Zeo++3P`# z!B69Sw*IFXe65jwt-((>_~`~egY(()&oKCzoNvnHf2P6LaX#Dr>I{CC!Ot@I*__YT z?`(sg!}z#k(T{(=&Op)AIujdowv% z!Fieox15FR*~3PB7b}=~VJSkxUN%#~WT%I|$CYug}ic3ZSbSnevKbv@MG9*8b8+H$Ffe1FE;pMwp!y$48DXd()dz? zFJ+T7zRcjum`CHw4ZfWHq(H5|aRxt*y`b^q4SqcPvc^v^_zCRe8ed`X6|7t1D-FJq zt=IU820xKCY5XLEpTw#(zRKXMm|x>38~kMUM)u}__BF-er?6uhKh@x;8g{Ni1|MSg zYT>I5zMAdU_!@(+VYJp+Iv<;6@YC38jjuKMT2`;|(+z$)o1pPC41Pv-F+Vcl!-{wP z`ZJULG*9M^_&S5HV=rm^EQ6oLp3wN&20xq88guD=```- zi&uL1d5pgMDV>Kku&Xt^khN%d5u2&u#cZ^O8`;0pjYBvOTf$z^a1(n{!%Nv0HGC1f zQ^W6LJ2iYUyHdl;*fI^jpH0*72e@6CY<`;A&$abcE$n3tFK2(H;Rt(B!z z&~Pi;py8ElsfOFwR1LSYJPog6Kg-@?abH`_Uexd!_U9U2%RaB+OWDUX{6Ut|@H+NE z4PV9Ja72B-g53v>v zU(IGK*oPc?XW!IC!Tl%qVi^dnTwHhvAjT$axlQmq%d;-&$tkhf1 zev11C#c$zp?3lpRZ7cPTXI~ZAN`C_TgoZ0vkHA*>D%nPXsn1>NoyaZ{n8rY*-brkV zz|9<2v3!B8_$RYBu|xT>!cSo@32YsosTn(7mOjMoERsIN)2n8;2)%WDYuFZnt^7@6 zYX!E#*Rq8gp3W)-w$h)$&;)pXXpB(moymTN>mj9Q)lVJ!fre+XZwPGVcQ$)i;Qc)O z9Cok3R{rL)UGSHV>|7-zz?LvfG-VuNTE{CL;pq}!OPJ!7jxgm_x*A~Z{K9yk7-Vpw zhu63FudMd~2vd8YEyWj{q7TI;{6VydM^Juwnv7g`Fg$ ze@Ebt34B!G2Lygr;D-c$PT;Qz{9S?nP~h(ge3!t_3w(#bF9>|6z<({Uw4-%Q;4caO zMS)>YiFXbe?055VPKCW(c9hI7bSaG zv6Dj*zk?pi_2a=G%sE*WzT^`!ZaIwjEvfDSvh#(9cb4%6o^D^))>J?Iqp%HDA5Fx% zyW_FMb|+QXR;8GSuu{1KRubw@+sv3{EhvHKcfCERuhc*y*~I2|!h)1Ay&)#ux!;;sK%V$Teh0s13S{N>y?bg(ZjeGcwzZ2Mk4gh% znH+ITV%(_LK+=p(H4~NzU>zzP(XG;~Scam6aR5*!(WGK@EyJVQ_!Cw$9TYuh-f*y^ z>Fop29nwHrCML-wVJHplMrkuV;b>oCS2Us5T!uhPvSHAAbcS2z;&qy}636pEL^?GT z-Lga4{mOdhs%g@v(kaU*7#S(+>f065jyEZ+EOw#>)e;dSY_C!M+67Jw_K661;WJk4 zG8xNN%Zg1mqv)OeiRhN@!G5h#phct6rxlxdJa*N{N?6UhMbII%th#}VMlZdhJrcd7 zCkA70F!Go6T9N9Pey4BIjN9|GE?#tT>A$X@jwQdopu(8yCoQKKyFf+0`ApZf(Dv1+Sc!gst2X9j_hh;srxIgRlpu`=h}L|7bMUzXRse>ci2@ z#SsUfb78zb+|^}kSIw$^QwO_hRMBMD%(zn77(1(Pu(iNd-(YKktG>b323LK(tr4zz zd#i8t^|t2N>g#RovDJrd4YJjTZ7s6Zhiy%=Ew!zT3ufuMY8!3aL!)hTSZv!G7TcQU zTWs4F7TY$3MYb(rk!?d*WZModn5FBgwLKLUyY2PJKBaPx?$7ooRbSlaF7%IR1)6#b zC5wMr58J4*Tz7RIM(uT*VX{4LgOUBJ)9G>9^wO1>RfW<+R}`7fnb`x&5EpuF^D`X- z`(B$e%28_fciNXb@7C^e8Qse*P#8d8_;HmIbdc5xkdkU+2HPdRR&zM;^YxbPE^A?;x6MXDACf+^B4yH}H zqxm;@Wt`mqo}r`pL&=d??$1YLYJ3-iQ&;^<-612sP0)q#lTPaBd6XL85Cj!cgss%w zVd(aOE6$-y8@m0_WY?!<)&lozgiI}ThJ#3^KhOU`1ES#*Dj{}ppyl$jXPb+fh=({_r?lDA=tGt+U z)pSRo%ay--jQC!IE`+es$@~o%x_4~Sy~@x9@^aghB%6wqp-z5E9fRnsL~c)4_cYv_h-^7o9Py9c^vS$WvX`lIK@YP$5?ELVH}14Bo4v~uaz zA#OFkUqTnkk#3WrD@OzS;~cu1jdTw|mn**Og$~V=yW`N&GcD<4dAC4UB0aGkfsX1q zir>%iBOU$dx`;oPkK;$~E$Hakp>)ChD>|GBT=J?v8VW0$&`pu7Bi*ro1%=+?Ms2S0WhUk%o) zx@iX=cB#AHrS69=b)`5d-Q@35=-kxH{VwDCA#`re--)B$7MHqjxYYfZOI;&wf^9C&%a1}w_eSaH-a^j2FT4Pq zoAy_Vo0uEj70|h92X~)JCvJEzK$ok$8^!(7Di!)dSTN$309(1g+R#-&m&+z+1Uh+- z<oN*^+S^W~apHp9e(#0)>6(c@XM+;>-;7>YSGBdh2 zv9Ibnpri1lo1o~PF?2~qNBuyV?w=UCw4$4&=x#G~LyE3S(QPqwyA>TxM#yyOTvf}l zSJ7cNqoa8MRksf$<)6wsN6}3)bO)fL`X^o3L3c>e)jQ~pD!K*--El>?&_VZxqLXtS zbR5lcyshXKJH!`2Wytb2I_N4C-4X{~ouZ?@usm*N{+blsQU_g|qPxgJw@J~x&q0?| zbaef&%ioZqTjrqKtLSK2%r3rRMfU**-2p|{?4UcO=vo|fM-|<22iJ%Ma&+U#!lcH;P(6uSLRSvpMif*-oE~)6&IOv8H z-C76TUPX7QgKk*Seb7O7K+&yp&>d2AmpSN;D!TO!y5ov&gM;o3MYqvG_qL+D+(8$Z zmu-JnIOr-A-IWfyIz_k1LD!_{u5!?|DLR^OwQJ9t6y4Phx}>7ptmrDS@54{JA?SWY zi3x{p26yPHXu8d~sVx{KNNl8zwumn+nLBY2{e%RHj-FD{Y8T7>4Sz1s!)*E>aEO7Kbkv5^)qi?x}?h+hbPFJk{2=u+85A3%5MCtUAz2Rt^2I`RUKtw*|}C zKd_O)RU492j#0}!$2=i6!a}Sr|5$M{z%kjA6hEZpZ!bhXZfP!2IU9c}pTE8RBt7|~ zeB4$n?S~)teZF8#Gv1d8L@vYcKKy=)pKn!3>cNO7QW6Uv_A(4cC|tX+zl*GU+F`L5 zbwvJo?LjZqV_T{?LN+klQv3LpxZ=kPYCHWcL#zBZ4?XJ-Mgr}tQ(uUbMOMey&?+7( zfKY*0@!Ov@9E#&DbCNSgLjJ9naoTwyMwv3zji9TpSNPwD%^m+L?FXWpV#~ zpN{)R{MgIGUP;P7?Y>Chk*jZdfK?*@+gmHIgYDrLDTm(SXA1(6;)MU8Jbu3RRjJZZ zr9N+D6}RzerES^!#6%tHXH>zYvE>D|V~g=pF?)4R1U>gx=SC`ho=7NyygpgI!SHYUZzO7FI#w_wKvw zgsm-6D@>}a{JzL;#D5v(9)5YNJg^sAlDZisPp>RV(Giqo^|T9{rqKCUA7OX!vm%(f zKLV@3Pz8!)-HYQq0lHO}rF_#S`R_@@ zZO2nnnny>}YCXt1Z#`BWoTz3V@2axYoe^K8jB<&%P%=JFP_0OMZWvQKniVkJ+EO48 zC=3JxqY8=wm`k84k&Z62Vf@ZEjyfX_)taS~H7#vsQ{l;5;d(O_9=c(GPQ`vFJIODQoD(Z~G{;tlI zvpLV4!#ba5r`t}{^W#*<$m#exrF%XtF@{djHk|T&y62;MPGNfLjIT**JTrJaZqCiK zxvo368Rz4EHtD|C!aCnWX#VtUEnF@-MSC~zA#`3!NAr(olD--T-2-GC6fbN$zDI0a zTBCe7HZB`F>%;Rf34RuJgV$q(`OgG5|4G>1aA$pExM40{3|R<`v-QqcI?=yu0e`9L z+TOnH**%1W(a_EmO4$|SuLW7H7jmBNot7&!_#o$LTxYqU!H?p6_8vOQ;EN2t$lymC{Ahz8!+9Dr zSZ<8LkL5g#0WCMy;ERp$m=ww$3LJyipB^#4(XgIstW(DWxW^!WTdF&fPPXxucPQeT| zpmgkI7b`s3n0z*Sa$|81Y)&eeY)tCBpFN=Qc?O@yc58gT!RNEM#upfT0b8f>0fP^) zi!{E_;0swuRyG`SZ4ZfHSYJ7>om$1tl#0@E$gwJ)q$Q>}Cyz*;WnLv$Yy-U<)<8kX34U5qnozxZq)n**|Nz zk$qRgOW2=kxQTsM!%NwX8or1nH2gkB?`TN}3&f1x#gfj$mN9zgN;(gFKl@Gg7KFRg z2iQMoxS4%N!!7J98eYymqu~g=Me{(VB@i_Ur5t3gCA3 zx`tP=r!~BqJ*43^>{A+E%LX)jDZ5I;A7t;>@H#e4!6HaV<58GSR-&9$3YelnEH^V-cjrqxIa*Q z7A|71YIrnzT41_NmU_pqFA7}C@mRK378RKKfMm0A zmB7~VsA7vWeloYQOX*wu6!sfj?+9D*O=W*CuvLE{c2wi5*+GG+&t2-R$=FD=!cSu# z(e$+}Ca_iB>8w@bXRtXMp2@}tOnu@~ZyozLG(^fD^?^&hv)Ic5Tjiatt#>CIid0Y1 zxv{aRU4NyGMW3*-_!X-i2Z5=)LBFuA2s}ezY8PJUs6K-@Uz!MSvewsoanL!&BDIUj zAB*3@wEdc}CAUN1g92|C_)i7KLTavmRA8K(9RHcXcM1HMz}E^48+cS--s=SZy1-in z#!1ilFA01|;70`h3xRJI_%8*%Uf{nH__G2(A+WTqhqW|3{?7>h8v=h!;3oxsK;R<+ ze_G&g3Vg4?PYHadz)uT&lfcgi+$-?61da*(ZGm?R{2hV&1wJZpm%z^ooDldqf$tFb zy8_=X@b?7XBk=PAKPd1E0)JlMzZUop1wJP57X*G$;4cdNlEC)~{C$CM6!-@MKP2$W z0;dH2p}^OmQJj_SLYkH1=DPa(5-@bv7u(UL8x!P$j1iI?b_BUVv7I3-1h%h;oTh<5 z)e<0&)cUAdlyW94BwBVkGI`#GM-MQl*4wisB@O*$xc)?UXLMJhw`)tiFbR``k_Ojw z3T6|fbwHg++DFH!lcMYE9f%F2dV99g2U{>5?n{=|br~A5S zGS!nBI4KQf$!dTXsQ>#bD+dDF45A~NGaqmTCY z4&sw|Ds%F|@9c^X!iryNYfr4(GJ>e;EjAHLlP$(BttsX*NyyuRMIdKnMs!zyGK#PI zakHhn>KmbFiy_pthEOYA~)@5G4CbuB{4Es>1A_m4VzA|12)rl!zx9 z8xo6bE&k=!IoQ;@V5AQ%h+9mmU21EfuF2LwU6ZYWx+Yr#bxpPg>Xz6Vs9R!dpl*q+ zfx1Rp>ueW{^mWxPv^7+?(6${k*tUZP+jh`k+YTCR+d;i;JE*s92lck?z_uCaM*8@r z{Lgl9&b!6CoR;@a z8Z@2vY@Dv)J-QB_6T^EVq8x_zFy?n>c<+4>x;DIb9N<@0FinNmaI#M7RvNk_B;{FICf&J)?gnUb zr8~yZ4MSI(BffWhdO4neCX_?>5%{U)eGRxdhwdMZ`0yzbmVJVqt-qs&t_`}19P!b! z4>jEm8{PeeZpcRWF+;ZxI(1Dvs*SrYL-#r8a+L$qj9UJV+Qhffh>z^me4IsQN9XF+A#J#emcM+{vv@Makqwlcn_4c+H}bG6ei8M=eOxzfGU z&^-a1tDbue-5bC(FDsqQ-$p}MfqKf7?!|_#7P?&RZ>FKU7`j}?gPu{T^}GqXT=nux zh*Vv-O?<}<-CpQ&mE#FRcaKecUo>0@Re$vCP1RAu%vCS+OitAm+34t;QFRs2g=C|`R<^6R3|$k5T<066nYH-H{%Njq zV7i;@P)zP_g-)hL9&&#s_9=hT?FF$y0&FE`>d1bq8(ndpJG(?{Th5u=JLXbXG|FB6+Fa^xh0aZT`JPK%IWFRE z>TjJ(-6ve?j=I$ON4v{kvrF9#E_H{Xb8|g-$7Os?SQOwUz8h?GcubwS=g?*E2y}ks z`X~1f8oFno%Vl5g0Cea&W!wSWEYlbu?S;?Z;79S%cxfMgI2ALlV!GwO2|jcWB^@p$ z{CknAt`52o{7FatQg^w)*l^bd9fc6qPSMpVx@m@Plajx=4!WeGo9Cb# zQgrhjbbA%u0tel&q6<6d4k)^M2i+k>*WjQ#s^}Iv=#DEoItKE1nDzXIqFd~sdt1>p zI_Ls3vh8Y#gRVl+Q9sZwe|3s(se`Ub(b2jqyZG7^9nG%T={6}kx~|&kl8SDbgKkLC zIoXZdtLQ%95Z|z(Yj)5bP;@O0xh|Df6+xd;I;o>AbZO~-6c^DuB*0ec$Ua)vmcjlmVIZx3NqA|);w4QBmxe-NZU@c! zUmp%PHa3PrOBRPM^Jt+{+edqQ98WNh?gwNcWC3Q1n*TDr@(6w>9{=n?R#Ub5bFEct z*|eV4!ja;mSF&Gjm|3*3s*^3*aCg;9k6vAM=kkC5J_~)E9bBJmWqaeT>zX|^V{6;l zCtAx#Sanb92KMhC+A?u!>#v)CTkxx~%`6t9IVE^Oc>R`@9`39Yu#*k_9!T{!d3*U|Y=EFX8)X zq%)>&>Pi#iu^P>)T`hg*wN6}-KjS=jNX2AAI=h_mZpIOUUbjJk6BNCn5hy?eTHxFy^22!zZ%i;q* zl8lcVclRdxqXWIs!Jf{pEvcR^vZ(-b5L>%?y85uFFS;X^PUG{j_|WW*cyD(<*v?c8 za4^lkaJ+2k(uMVN`M<`-MGc^xtx#ZPWO{I5+5FAD@oim+f&R_PT>^o3ZRw(=eaopoJH2>OQ`7Iifemq6{2g1^5V@d3+J)7uojH%n1sfX|Y;0Vx zv2i|ZY*?pX!n)WS|LNIz)_ItYy$1HNzlWag?w0czyx+ii2F^Edfq?@CE;Mk^z@rRY z#J;bUr;@|g_ z_ux|sruX14RWQ8=uk(JkK;!caK95b%_zmy*;)CfRdp0MDJ13d{!2Fnf!Jioip^_haQhlU@xMuwNiBg{K}Vy*K%qz|_m6_a>hcn0lI}-XMPu zmGsnOr1vI2BX|oJ@o&(8;?B)`blUO7`9%2)wjgfWVsem%@xkScg=mY)khq3$vo+sM z+hV~}KD`J`^Mzh`a$F`bCJJZ-hSyK6_spgVjQIi@kK;8#i^n83$CCucWHrYV1jeK^ z$5RDHq#R?yg2!JkaJ9ggOy)f1Z#j=iV~#PO!7%{GlaYzDde4eqnWNYCrO^NF>xxk~ zd1sWrPeJcebX$uu712q)6zC*RbYbyQOR6W97)b5vV)N0X9*D)+{DjrLW%Ka@Mid?3 zXcD2jM*Y;V{Khbn2f2kzVw{=kD43*iN*v_I+7`MX$?b;wZF#H{?CE4*sOZc~Yy%*{)9trnRY@4UIQ)HQc#vdB*8--WS*ATH~v< zN^u^X_iUW*8ee{zo|8qsGNv4>eAnTM>gw~_RS;%Z`JTUJyw`~PC3;fa(RH8h_0q}x z%M2ae$0SEuxxdWN(S2_>351iny}*!W)}}pyed;qvhi(CPQ;hij4ZhTukWT9I4P6m1 z-Mgiex}U>CO}D~E*Kg=*p`$*DbTYnI;i1O&VSoxL!dB|8F?742qdJsM>c~%x@2ddR zmyu5Do`Hv|qi^Eo(&3iQbuv8lcUMTDaHehw5^|%9Lr2G0I?59{Grs@lQunIMbf;jP zLMM}ScIoy&=O%v-L+7Tv{|a53OcYzYbQ}HdbRUJzO}bA(m#Z9)DS6=8%FCXMgb|Fp zNAO?fl|1~=y@j82lKTQYa0oK)1Uk6u5DB`Vu&QIlSB&kg_!Z(OUGrG0&xye!J3L8m&Hs(3f;fz)^(0Ka$IJWfd*^viI(Z$&nmcy%_RQ~f^U!DE(nbFVtg5S} z{vAL0QL|$A_(#!Pcm{Og8PJ7iK}T_|@P+JG zvO|Cr=()?A0#pBlp1b^=hO>cJa6a4dws1b9ah`M(U$cVgxr>gy+H(MU?s7;5rY+{- z|5(BF+(qa8>`sOE;JHbkh68*|LRp~l(7ZqO<+9kz<^d3<`!&t`|B2w~9!&H8#7S3! z;%n)nd`%!Roo~&H7l?Urbo6PAgK2+j9vU57>hHt6p@q?r<(LvZlX+=(6UEe&24Ki1 z%BNPXdAW>VX7c(p3;|_kXB+wKY__Rlinb|{SlYN~$&wsXw5L|v&(k{C_b>{?3whor zW; z#f+~G3FXpVqT~U)tP?s}7lh?Lg_U_F|0L;Tr7Il2=8-_SZd@<-LrY^@Y6}z})u%a^ zQH1L&`O~}z-El}qb1tT?O3_jBb~<`rP{xNW*y_kOzSL2AGCp(6z6QEK056@a3vP(<XJFR`=@{iw_rLg>qnZ4Z;bDiR_kVH zpQw)~e!tgqDg{3CV|>j05=pMvJ=Zr8qyLoNcMvxdxZ13%*6~xYhWUL!WVetiQYnn=|Zr)72=6LTA zQJdFqykv7Ua>bQv8XKG7vEri58+x}4TpR1_ns+6>nzwoFiq-Sh#S+^$x2#{gIkI*` z`-aVn=P#aLFZLt7eO;T|GsSWrd_~u;RHBQ=ikKs7!`WC?M5Aj@d+a%Hg)D@2jI6`4 zIolj^j5_>DX&vtj5#ye%Rr*=0dIOpr8F#-q5&5A$vu^G-iBWV7lMZ81$PO z&PKk1^Cyo%A2i}ys9+j{>e!19-&;AO|1<{udKU6A=$92tV^E#nLpm}Klr6HoCi6~M?r*}rs=EhZSdt32 z4*Rl>u*>G+z#M^=o*~QUzQx#Ijvp?88TS?jgf!Np;Sk1TJYB+cJXIap&XGDwo_>VQ zG3h(dQ97p@yA~m^)KMF4Tob{M-hE^KoB?r$9(RAuZsoz-NyH#*#X{YG9V0)skH6)5eRH6hb@a0**>KZgint2z z@b*7Gy0vgkkjIqwBE@9APn$PF`+gBC8@>S{NKfu2q+QhNo$LEsZz#|nNRJ+2_xh@n ztt~rQ_02myJ7pZ6Hh-Euc@s}->|^Q2pE~GoeYe_E?>#{IsaRWg{r=_t*OwnmKM{Ds zf3RZZ%3<<6g}m+2hF0%Gb^I;dz(}A?vU%RK$dKhxWc(=XsrlLc1T_ zn~DT@{(j3#&pcO9CWP~bvGe;jX;39|kL@n}TFQp9uh#RJ>z(qc|14V>f1xHoL+wDA}HMecJPWU6)&)-;I{lv=Czc4{ianxc;JoV zXTJ4qPO`!=zLrsET4p-_lz=R=NIUYL_|AOhis@$7Bpwg{p1%c~Demuh&V=8j>}E`e zyf9y)O(48?=S!$DQ;& z&*1YpPnT=U$%~FJ&1e0F$0Mfk-ix} zT4OO^U~1E}#$u|#)Q0KZ$}s{{o27Rvep zj`V*d0k(wiH}H)HjvIKRftMM0hJo>VW5!W><1@%gpXy3FT63ZuUz}g%An9FB>Q)6| zNNqlCVR)?>TYA@$^NpA*B>&}NJ`eu2gdw7OCLMS3Wsvs?jEM#;Q(-|&EKt6K5o?Sb z#L3wvFqJom_&aC||0HdfFgAoO#d`y75tz~mF16+vX?umhY1*Qa0z!wR`1~Wyap04l z)_f%j!7XL6m4KpXsIQmy^Fsr4MF)7sq4aE#WNcD%u!#83y!PhP`Hw1UX@fAMV;fBYQ|ncLUfOzc}8+{U8H-tbaMZBc&IwM zPD_roa{oRdrPE<^VgFvTgIjE|0h8ebY< zmlR=(TP$}}KGI4220*bz@&7Wuqd;`;lHJs|DG>dHleO)1s^pcTq3<-{FXQC? zL-3J#C9)XAK1nLvgV;wAGj2Z)B7K8l8hjSuM?vU#--}-%e$o}=MY|9{Iey40*U|C6 z13y(4h7R42%vv^zk95@5R9zc%ln%wGu4juGx=qk^2pyfPGQL%Yj_iPkgid`XK?wjQx>J}X&_Owl)4q?0<@!aFVf52J6JlmJ_)`)?x5 B8E60i literal 0 HcmV?d00001 diff --git a/src/sdk/CVWL668T/lib/CVWL668T.lib b/src/sdk/CVWL668T/lib/CVWL668T.lib new file mode 100644 index 0000000000000000000000000000000000000000..e27af89e6dad11bbf949b4d82b6c6210039ffe3a GIT binary patch literal 704386 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%0D^c4>J3h_^%Q~Fyt{VT-NHvY>U{FjSA zwbAPx^m_3j8-1mNzET8j^i>Y}Dsh92euaa6g?KOMlwO*x@Q5qKM#Y~3T!8k-?vGcC zbr!k?dV_*#cB??FaqzFfvQ7|i{S0@3XmHRQ#3DuaGyO^j{YosBrqD8t8kW`lrp)+F z&nv~h0;aZ%Zh~I|OtUuz{0v~4p)%mV0!$(e_!MAr!3O*#z|@~I;Lii5_S=Au1J*4t z@z+^k;wN2L`Bz)uyFoWD4OSAf!L8zY8{8&ZZ17r9WrN$X5X+E8`Clh~oay`kzDj(@ z2ERv~w!v46DI0u^xYGt-D%}uRc!T(| z4aRaO8+@HOXoGu1pAGI60UNwgthT|M1YVhzKeE9e z5ck^PTSeRk?+{xpZ~;~(*z0?vSOz-z2eRi1^zVKNN0EU&;u&%r>YC%ZO>9^EH0xO5 zX%tVO|3>^Y2CqPW?{WoGH?qRx6~zj^n&Cq6LsUlMmvE7IR>Ai&y;yu%!8DUy;qi%& zD452~6`m5YQ^9HGFBR(*OlqybN}MGMres%mW{Tgb{sH-n3ePO@4+^F_U*VZ8&MBD2 zz!jb{F;Brw3|}T*MSDu=?P7So_@;uT`~~9k3a({(rFcNW9SkoNyA}K#!&PFlf*)ac zk+@vJF68T@@&^KXt$-9PlF!_+AG* z=71v(_+|$jaKNh^aG3-CZHbXu(uWW~bim(nz<=R@|JVUfI^cs2IO2eBbimg*;L9Cw zsRRBc6|A}_{VzD+Cmir`2Yjak-sOPb>wwoe;93XlbHKkSHc}_`d)@&*>43lBfFE?g zLk@Vm1HRe;>khco0spGVp1zkI@V6ZBe|NxB4)~x04m;o;2fWGwmpb78g*Cs%#pUaO zpK`!obifZf;C&7_?0`2p;1&m5>3}gsYF?DSSE%7o7r}q;fWP8^Kj(ly?0`oc@CO|5 z1_$hSz)KwP3 z?>XRaIN&ck;71(rT@EJYydY)6y@6&UsCerHpV|p&p#INazaBr&T zJSdjUxG;yPPa(aP}5DfisI+3pv z1mCF%PVeoSI7RS2O*~Cc@V}wxr4$eF^XVDFh!0QFPd(AE(L@_PVYFTJtkuLV^wc%+ zL3$z+`{}tr6B7!5zruf>o)2l_MS6Bh{gD2D1laS0;P^dH3e1Rtj!2PBQMy|_TQ!;A zwHl9YDIE15OA%QWJ?~X^ay#C=5PY`~*V7Z}8K9?M6JzvjRO!N#({-;b|I#~!c$nz0 zk5AHbr_>k4!}+{P=?nG+Rj{2sP0ux&c$S{4G<-IPXM-lbPtPkf9+Q)v>IgwOwTS&e3YIWG%-cbKhVTy>A6l5FcF41J-~B% z@ca(p5#M*!ll8q`*(2)FE5K8}eojvWW<4HJ>D>Z*q;Rm8T6zNCPS5vhqKBTZ3(-%{ zURBOFD1F|j^tn-!dc^ZM@qzv*Jwa!?1OBwaKcVpF==naCZp6ds-mdIqn~xbRW|Mv5SxL{Wsvf}~K;@jj7UD-f?xg1jRlP-iSdT$Xe39^d8vE1ITU7jb za{1x;Pm0daC3+r)|G<;<4Arxqx!jQ+winbx zmcLh)2i2ojDZUX+yhhIM((_Kzpm zTNDEOy$`8+P$}CP3U?LBc?jvF=Lb}|;>q<3eyq((zfIK_@N@eC_$27$?;clAP6zC! zlHjk)`HRvR^hk10-{)EJ^%~EAQn{299sZoB<#sYPT(re+@=?Ocm zr6I!W;J;V!A1e5ND0r`eQwlzy;PVQ;OTo`6_#Op6ui!%p{;q=i6#P8} zKd9jEEBHPI|AT_Z6#RmMBMQEtU>K2~^82EKKce856#Qic|3Jb2O~L=D;14SJpA@`9 z!T(diA5(Bz!Jk&}%L?A5;D1(dzk+|L;G}|oq~L^t|3$&475rlbA5-u}1%F(@s9Y_S z&r=HiiGq(P_@@d!s^Fg~IHq72HHUvx!RTBw{1pZNLcyO`@c*sg0R_LR;6Vldn}R>A z;D1-}rxg6Z6nsL#zf|xi6#Od%4=eb03jQ@R*?`qZ4WTh?ecV5eJ?})r=vWfxso@zj zeqp_0gWM5R?)cdNM7+VVC<)6McVb_EEN&bf864-m8T0b-$7^bnds_1-+_~u}j+`Vq z{3Ay&Y+}f}vC@&(`B<>aU_J)k{#5Q69^IcuP=+rLQ|8Q{+$l0n`pM0K4dgAG`sU^f zk7FNjY(APlgJJU=q&$+0ePD6s3=G7z^l39qKK2F4Q~M3S1tV7I<&=e!dT6s_)EL(dEbb`8aYL25$=Ko;}(f)OJ2sZZ@nQ<<-jAj2?SB=ixKW z3mb=HGg)^|UY4xRjtM8n26M2fy~=s_&IH^VHjB)`8A*or$zuZYWS5!vGzj-psnddU z5V6QR#QV)lL(G*m`yspTvZy-Hx45!SU|l%-Xj-5PqZJKUZ63q|Zewfkc!TR!@eRBw zb^~^G9UX&nr}K9tAo2a9qaxlwJMad_vE&v<7mfjT`guwTf3R#+&%M|s6bsMU74M}$ z^jmC>_t({JjqVvoO|7fr)$sk9oki(z(*a(OjUPCocJF9VZHQ}nZHkwP*vg-*4*Q4V z7q%=O$%IoR-o~HKe37RVm?7zuK^Mnlqnq16JKccdvg|f$G;vu?mkTRJixkt2)KMe7 zR#B>syOAif*cmlvP^AnPI@_9=A=+@&*hk)$LS~bh$h6kMFpPAkJfz|+wl1c;Wgp06 z2I4)HUH3?)?U{4#s+?mNX5P-(x!H2AeV*O7g?8ORI`@XtZhKl|Lu|D#y_rq-J+dv^ za67iewou$R=yus|I?pEIdA1zSy;nI~U5@>^$*jnx#z!q1s5_2+;LKZgdS=*dvv@jD z(>MZ?_td3hFVyJ@>V%J6o8==JwE4b$pM8Zy1Ht=6%diI0xp#lA0|0WLBmh6-Ja&NF zB4carOcoF)^%RV~8tkdD^vi4^$Ys*O4bH~0ijj$O~-rJdvDVcVH@hR)$3 zti{_JDC-9Nd_X+acCOe)bvLnQZ;H~E!J6ljm?-q5vI0|lHY6;Ow8`gb$YZ5AyzG#` z!P}UX3iw#iX`c5y;5;T88~sN^{c&_h@d+Q|rH%0wqA3GVeNG%`F^L2ZCNr=zaJ*^2 z@-|^0aMwkL~-LqwAXeYuk)- z3AXi6M59AEE1+>2?2T>ciRXyaHGz#yt+~?P*wmDh)VMA;sVz6DIXB6lljL8Un?!}@ zo-co6F4DU8oRplpSeH{3?Kw5ko>LL+IrY$ z&8dUdoH}UDse{&>I%vtMgO;2+XvwLA=A1fc&Z&duoH}UAse`7RI%vwNgQlE1Xw0dD z#+*86%&CK%DrglnL50KB#-se}0RP?3e=XftV&VbW&R~BO4P7+IGa+>177ntrqNq!b zL#|a*f%yqKX@(~iRm-)Lj=bclL1SJp?<~YlEs-A zbFPo3lHGY6)5v+4Fn)5CVVOS84vkI>PaV5aY}3YW3^}HZ^RSvzFxfn|sp4!h57wz$ z=aNS?eS|6E9O0-Bl#3?2(YdJ9iE|g~g3jt)XNM#fqZ2Ksf^+bgrXi<+v$?W5+}SLu z(`lRj&E|4U{pMicXbBM0xS_7|s?AMJb+=r#xv{Zs8-Dd}*s!6ouJ`7;_ifv-?WVT6JGX7$)V*oF z1lI!W*<5$Swi`RUH`HzD>TIvuy5YU;bvS2qTYKGx&aU3QO)lA@B$+eM|DUJGmYBD_ zEdu7wU1y^qh_=4q8#9+Xj6D{1s9h*%hlL$3+bq;YATcz^4OU%5)QyQwOl=Dug9we* z2o##Tu85+UCE6Tqo@aqpsV&qz9iSF?3yX?tyvyb6vbyCfF0Ws?>WbBC8m?><-AxVtbyyBrr7bDMHyHThz=H)AOS}v56TM-f72`*R z=Ap$6Akmtg>0X<$kb>B0Jq2AYxV`*K{xN=cIQVFNgFz!sXV$eZQhqjf^`4UKUbKWV)- zM40;fJYZV0Vq8Z0zV6`r5#)0~#c1$-%E<>kQHdLu5$}+L?^WH8h{ zd?{1(TKUUhq}A$a~ts_Zjf%E_|PH z@I48>)h>Kka%hY974Z2jd`LcDSb}TgtE_OZM_Afx$-&p>;M)&AxALX5So3i& z_;lcm%ZRre8MX3#K8L&+%8#Mi@%3f!r3_(s8uCbSB+n?vQ{Z!}NA#T#@ii$KFMtor zx6F&=5&d5kpAqlV^WF9L0{CD`=JiYPkst5Fjpc`&K9c!;C9lXx-~zd(93;LB^yPpk ze&ebF-+BYU)1W!|J~&OjN2kg6WAIt+FIT(`sJxq}k-me|IfT>%li2yLxn*@_sx`zEv1ZOs9N@r^$DEntZ>W zCf`*{rBPIFc6##qr^)xlY4ZK_t@u2$q#BmF`-5+(c2IH&u^)V11HjYxeb&Ku2z)0E zBKQnDI0HTvB}=J8qyH+}kTZZ@Q}WQY6%T_CLkaVm*D3o4eZUmpCec3J!w$Zy!AIfy zaD!y>1sr^v!G~y>kNR+iyp;~V2>A9ZJ{l?+d?gOPAAs+a;-hpKd_TeuYd#+8!p^LU zkMIWH6Ar#Nz!y_|)NeERKJMU)bW1(-fd@k>lP~Vz8?^AvwD5I0_{J=Jvn+g74!%R+ zGxUt1ml^M+0!MzqXXFDz8z+(moI&nY}McD^{^|@`fyV}&fxp3 zgYUcGdqMG`t8en%>EL^OgWzvd`@n;)zRCAN2jA5JA#TxRyz?x4?{V-wa$Tl8&{Z|% z&2{j727L9P_u)nt)a3gSDu*?{Pg~@ni)Zrvm4oj)7Cy3TLoc6m@O>A2hMv(iGWqUw z@XhQILI=GMH@Y$=->nY5)!_3hK6EKez9t9X4)7WFf-Zo`N8g26^E(JWpOS~B*yQ^$ zbZ_Mwv&ch}X!4zN@ZAeOUCBceX7Wur_&#rmm-r3+(RXpycptaKTVvtd>fn3QBCpoM zhfkYq@}35tp}%DozCs7zFTqFU+K0Q&!uKQmwx(}pZ>D^gTlk)G@T~`*Q64KSd|zEXEqps1e2;+72V5WSmADOgE%04#tBOO`! z9=Gt(7}1dD*PMs%I~G1lQ!aTwu<*6!;rqFTuPqPX8y3E`dH7~-%;<&cajx`L zTlm)H;ahFtyDAUg)fT?@_^!{xcgVtbLms|| zEPOZS;ron*@4b2W9=Gsq&BOPkg>PFPzVBH0XndASe?PGBy)O^n&n7n7!gq5X zzL_Xgqg}Wq4_~!~@BMlBR$KT!kcaPT3*W7I_%>VksO`(8za197+bn$4Co8~hT!Y}d zg$5|ib&xo<`xnKpjbS8GQ5vU&6qDCN6mI2m?0wu54VVTd&5o{&h`ljVn)k2 z6CX?XOkICi(@%w74VCKt{#RqA{=&)9DRBp%2ss&x({m-CFsv~*!N#oxo~i!ELeErr zWx??ymBmNDz0h~m`$*xj9zJ)qkx!)m0G}gogrKK4a8qwu9L8DDrBhGc;aOSmT>F88 z2PP_u()4_N|3u{z`=6_vsPr8#ul(BT85cY&OP<@bY15-yKIbt{(4B!3R=>7-=7rK@ zn*Pi<-t<5E>BTpI&hgY0PkqPlJ@&b-ubzKd#QPra`?IK#rsBZ%UOgbww~kNm^oJ?8 zeVk&MPitD6_!M4Gph@rQMmH-Z(n6nC`OIqV!lk-3EyU@m7w2EC`+1*7KiPjm=#`JL zt~!>y(qA-rW&FzUe~t)7UnPZ=8Y&80*(2j`qP?=iSC7)$caiMjnJ&Di@74Ss@e(S_*nXXs zklW7QWBbwefjx*ldno^v zPV^RccKcGkn&R~QO$#2aR2F{-+S*aXf=m9A5!O9O>eQ# zCu;v#6r@YH&#a6lCaOQw_1hO91(%L{RSx?Z7>tK^<4hoVtd2eq!U;i<)p~+gkHIwJ zeB2K#Pk#2vwqcwtO&XEsIOCjLm2asj`irxj`7g@1r(-vrE!*J}9f>oAfvTR9U6to$ z8O=+{6L-CV`MvYGtSFRNU7DKHTOZib$Pj9VR_8%IO`H{VlE1{HN?7tqOOra$1K_q@ zIIFit<2cCj>S1S8=Vo(xm7g`9;>>-g=*(r$!vzm}aq_aLpO@;1c_w`^ZSrueVDg!m zchYxgSD-x6bLhsz;X{*&ctATz@fV&FXG>VxZ!cat^Avn{Szs}|_oW)GQF3@23RCkM z3Q~0qTB@jF)p@aORbX9UEr$`y)&=~5?&Bnh?vA3@zpH(DPMUt7!*6;P1VqiVqB4-` z@V_ro{iD;p)!#ntUHPl$AMg6v^Q!{dV;lK|`wj4beG z%g>;0)kQJ7U zRO|JPlFiXoex{`NaF_NRnpbF~xc7lraqq@%El_Sb>zPx#rctAQiS&I^KS=lCXD2!i z`|hq)ai^gl3^)t?+dQWPTo=H)&OPy#fd5A-+FFHS? zrvtvvb6(mvV>u_%a~nCqsqE$jy~BFuntpUPr$_p=e5X!dI&=4_vcQsnSUzjBzF*WA zo=3?hv>F*lA26jU@yV-T!v&w#*iwbwmjK7|`amIUmJ)F3%!l|q_$914586hVkAhTd z&jcjQN_jppclE5)veh$Eg{wNtz2D`T8H-Oeb7)bHO&a zru}-r!#$n#>8AZ+nE_ps7R#z|rnjWEr75P4;@7`dI5pwZCh@m;q6`zD%V$BZsQDA| zfy&c6{)c#?qrAJf+Pm^MFA@JxwKjEM*Ds#OCRz1msAWR`6H%D10_QiympbNjcT|hx zlU=`lURnahU3gr^r|BoTjmP%hUwQKk`3jO}&GBl^aan4{No`W-a~sN1%Nk~-3L9pm zE^8=Bt!zN98q8Ag}ysbnAVQX++VU-J6gTH zqk6LIH!sBk-TOWJ$=6VP%hF=Gk?*8B~SBsm-gak zy8iun;$0r_oh&%`hg}z6@*I?2i?EvhHI<*lnaNXkAM(Nuv=w@bSh@6kEO39aXwQZ{ z_wD)Sp2FmY}}K2QRC?%(sRJw?etvhPmqF_I?jtQz_xXjRYMclu6h zR zmgqA+;X7G4HiLb(whY_X)h-NF2DDFR;+4G@o#U>q@iM3UYps8Uy)tzYSAHr13)W%7 z6HC3qf9AumW637k=1mNFo3K=$sXR6};+tU(tz$6jKw=^NVApI#Jo zuUsUFFAts=j1Dau>Z-hT;rA+MZJg}#y>PUv=!F?Q_jMJ#Fr!!B4G#*dLLO`91p0Uk zp(7RTs&7Pjzog;D1k0zQUANt zYf6VQmn#B#+bNV@(Rn|YB({#LIZ~{_;urB4q`vP&tUh!i7Q@{k{;#{l%KB6z{w`0| z48}t%1{*>hEj5S4N-g#B5ntu!&=P8?&pqI)+#~i>-rZI7{M}vU=PTJ(#L5||R~K}Y zO)PxM_id3V)>1xQARb?3eTedgerd<6XFh(aFfcP9Rut&I$$GSU6_avQRUDWzDRoj4 zD?dtkks}fMW!%N6!$p&G{^*rmgehl#v4SZ%&RWUiz}vINfklCRy|3~(aNU9Z2Yi(k z$G(lx;DS_D+8H)G=S6{-3R{(aV*l$HFP2x%K3-8-L}Ss(uQg~FG?eSt8hjTjrnH); z#xJdyJ@ul$V3M>nW9n4bm(N#V)R*8`2jNd2z9NG7Mnfz}?G9+}(XKnb^c>jJYTDHd&VP0z*Heopbs$?THzOwO8; zn$`j{Iixj5o@2hsE??=x9{oiBS21psBhAhwFZb(lJzRSH;U({_Dya&ED~=sOjVMl4 z94o=IAk`^4FvirwNOuV74k6wBNOwQU_SKg>|MIRAyM71@tJz(0ytA^fhf}J@$+xSq zDD{u%qB=gmN8C;vV)=?dM_c01+#6_|RTJ3UDD^k3$Gd*l%MQ4(6L3U zZ%WCwMSD!<;5|K8_s)aoKY2jZ*QaK3i}MP8uSk{i@0AB*2hkRs7b|O1%hP3yo5g?i z7HZx6slL0)zm!UzxN9=$tC^D&^;M|?ePQ~Q{gm#%y||pq?|T=Q^-L@#%=a(W^i*(4 zV+Te3h4YJhN*VetdJE-`^&}VcRBhUIpyIK1|I~G|-&Ux4+7dd6PzzG^oPzR`c>P~L zJ2h)+<}u;bx@Y!u_Lm)>eXPPer~B@HE!K6}oNldeF50wL4zA=D<6pRkKw}3k+xOs! zF(I{clr{~cG1=>ted7|e2L^2Lpohh6xTul(qi{5elUgr7tGDz)D;ZeRe|PbJp-)+i z-iTOnb)ciA4=tvaN*^Kb{<3Nj@Vn;P+UIYp-zcuAh%ZQO6YxG&9aWt^@6^PDhr8ya zI+lon-X#N&=N`PfYc|64B9y_0cGC=V|7lOU zP?lv+JRlDEk{_A)`w8?<>ILQ~Fj~1z3zTfsPEKCe+U+@C#GJB+Oyd(F()1cfXf3E0 z>pa5K>)BXxht@r3T#k6k&#dn8-jOaoS4O2%uInA>X`Qd{5izZ%q`=p`yw}&~NiSo| z@G!M3r7Nx_lFRGst_D{@dZDr#uj1=aeDj#^+mKeld}Ye2d=9=+lh4O|h05Lv(0B5U z3;XC&%@34pt`F333!}Y2Jr2@fQDAwvfKx2{tr*L)hk#x5YI;vXs8L3_@*AWc{G$n_ z4zKWHUYy<<(}n#^@ykQE1R1OT0Q>*4_cnlaR`vb(xli71ZqqbP(vrTxO`Db!+LEMc znj*NAv>|~ODy>klnD;a(X>!R+UwAE0UQ|R>6m-l5WQ;lf4iOX;COF+tajOa&IyUP> z#oye9$~NYh{y(4d^4xPy?sI$F!ZwBn(sMuO`#In9`kd!H=lMS8V6`@;sE7Z6&=%u& zCLAlnvU^ObQ|wooZKifKjFdy+Co)^!L7sLzWMbp#gGJAAfyA0FgGVjM4mvwM7 zaVx<$t^q%e_muEAx{igWGT^t#`ncxS*!qggcO)vVSwG|0>o)!x)Gc4h983Gq*2B0I zeyp#!@?icAc{c{P#*VqKoFVmGeeh^?Buz%(e_iU>f3V<&{2TLbf~NHqdxD;dD~_iB z+WIOn)~v6%>R{dtQrE8FxEheZ>`a zpHBsQRHGkFKTRS(#{CLEtg(50#c*(W#g)fC=BR5t91r(gT!Dv6q><}2WcMX?FMJK^ z4YNM4-UfpgkG|gQyj|ed+fkL#?xPP&Jx71d**eOPQHNcgk>esCSc{t6!!fY>K;z6Tsbn@iCyBb0qF23_WPI^?VKFx z>mL{z>F-m*o&6*Ia<|Cc-Ki9ISnkAL%{`;Tt+&ok6 zl#&n~BdN&=mYaDA5TnT&SKazm*R5R*PWA$J zr+UZFJdK-8j_n;CyEOd^F;VH*r*EjQKPfj%<_0!lv5&nl>&JGtw#u?JtzLVHP!QQ% zw+=~;r-rdh`#7o^J3pfJdJ(pBWHPyOG=!hTMH#W4Ve{9FlNbm3@YSoM5N_T9oiy-LTQ?R#W zb^>=-k)<2qCDgHM#|7Iq?&xg2@S;skP0ia7vf=a{?CE>EVPtg?8h^*;4d<@hf}Lk} z-~!&!x_N8I)*WkBtyxvCf8#Rg-_a3fKKJMw`u7a=_DikM+`73gtz|=J=jM*q3(nuv zaaM9Az}qkE*xGUad7T$-ynz0hYZ{svj;wdWSF!OUEQQ@NW`7x7K`g)75z_SAUNu(P z|K4HQTXH4L#es+O#O>g74ys(9C(oC1-e;7{_v8gqo_vC>>;~p;da6-m6V>WjaaO2OAa?XR4o8iezq@4F2Qf{^O>Jb9(3ztWS>@#J$n`CKVa*XLYMeu9)Q3)4Tr zlUI5At33HU56}1T0uL{g`fd!P850iKFSY1jl;_q7YBlSuo#zz6bmdY zf;@3KFq@C}hye2cXFY)A;q8da&zEP)r}Y(h@&fT`Cw`$P$Nj>Q7kTm`@e#mw56L5kSuTvX2J%_wV>YuXcH2 zrpKQtKIh0wJ$b3P%aPCW&TjvQ~_oc1ge-Hv>=C!a0OcI4%ryj(1C5%X4yP|B^rktUe2(~%BcJQZ=ZZTW`3au<1aXZcukz$o;+>9so+qCt-r~sTd-D0B z+L15tB*Dg3P)b; z$*aXxkh8z?o)+Mx|GOOiVvoOAbZI{Cae-JYHaPqx9)F2w(|it7fmk9=b@(+NzecRo z{0k(%MwB}Ir5=B&DARo2GXvZ&Un#>6?ecKKq%_Mme!a)97oT(F4W7I~d|vD093T)4;`bf?YLCBKyid#7 zfAg>drrVz|AJFngrF@MiUnBNv`3}fqVvX1d%-;s@(DH>cev=o!NnB{f&l77s`C73- z%UMS;$eV!GZ-tita~5Ib6~Hu_FgOOxxrf33RI2tYG5Gtyg_isfaFK-{1CCqxkARCU z{4rpzIU0Sp0OKwi;;VsquQc*Yfw||0!S4WO7gBj#D>ei37R>(0^8OBRvxS!d8yCY> zKGVT(5x=Bz?RfI;cO87D_>zO)D*nL1za!r3;1+S2gV&3T9DJ5I)4{D`iGw$YVh3*& z|H8@$^VcSxb@18ZiwEKSW!NFblw8x~z{@5)_9o!>+$%{d|nCKPUo76a*T#OHy z3}XC#agT!s#7z#~DTW<9DBkAaA<^XEU7`q>*AlOvay$<_hl@3h1My8>yl@=fW(SSp zXL|nH16&^Di>EcNlej>9M&kjA3&lQ-*-grWxY(xgVu_1IqsAOV%CQOYB8^8Ro*}-E z`6Khg^vi>p;`18weqJ7wijQl2K;l{ADvdc_mIq~`SK|hWXNwMvRe8(BQjL>Rj`^#@ zuN41)`5V($@#lyqHCFkZD?X<2G8z8_ajnCz5|?PqYAg@ti8D23H^8RMVu{8ozYD|+ zjc=6lh2mvBe`%C>k@%LzEfSw7{zT({miQ#`A&tK-aZ>!QzTfhhy*yYhwrk91@bX}V zvW$aF@lO-a==;ONl3y?G))?6Wf3^6M?hk;#Li~w`KjGmId-!G#U+Ljd5BGTZ?H=Cf z;WZv!=Ha;>F81)Nym@KI^8KTSf9zqoH?hV4yeGfc!?${P)WdK0@H!9A_i&zv|A`&b z%FlN^{3Q?np@(nv@Pvo^Jbadit34d|@XrcN?o|JI+QScd_+uWv$-~@R%{aE#MILVP zF!%5_j{Mmk{x=Q`+EM;J5C4USKjY!MJbaypx%akl)PJFeTRnW5hbuk&Z_>h5X{5gA zJp5G;Kjh)x^YHZ^-sR!*J>2NwY7ZB9_$B1gIOg}SJ^Z+br#$?A5AXMIuZK5#xWU6G zcvwz`bq1NgpK|cG@V7nuWe?xs;Rz3K^6;r1p5ft_OycmFpTF|(r#yVChetiU&BN)n zXr+ItC+B_FIHqr9Pb>y@o_DZb$$3Cxb4)bRM`5?n-xd?wwa@!d;yli56mO9JxiK+J z9~)(-=y$~A{vV8YJ2ChlqYu3wrw{%;^ufQ6KKL)vhn;vKGDv?heZ*g-{YLtT-=cAw z#^=z7J|rRaT|giDw$nd9CMM|L858fJ|Mr-8kUsQ&mOdgqq4A&7hyJhAhrYk0kNmN} zP#K+N&35ESb=~)9Fy~l!~oWJi92J0&-01PVsan&#IBe)hj=6=_ajYQ z6qC<~31pJ>7<^wn10}Y^UdxIHGH;SwLw<^NDj z&gY0Z?@0j5^nNdfH!{G;*JAppCz)?_@(sj)AjEm}zpVC0Wj_U}!McZsgQD`Mh8 z;=5HpOrTw4e?xnYG5khdzkeab)x>Duo8dFRx6ns% z`OywCU#F>drykDB6F2}s>Vq$@548Ir!{P7IzU=>K{|AWQ6%*gn{*Sf%CHU0G`lh}z z?Xw?J&jI>Yd~|6U{xp2XYa!krlivy?QW&3zyJISS)SFBn^?H!uLosm|{hpZIcQnx( z6OR&)#>Ah}M}2>VKH8b{{KPoMCHm;!&(Yr(6Ms*CFeYB0k9PVQ{jQk!1%1@xtMFOh zCBzscE9s;EoJb$z<0QeopNVnZQMwB)?COe}Am6i~H5} zkobZ+|03~eb*4-LgYa9)pVWF#Z?gS%==i8#IZj-v(?>oRlaIqYhUp`pbLnH;PHJEF zhx2s%W87|FIL2)`K4RQHofzYGyXMRK2Y(we_}evq2Yv9n=!5?;`bcMrKKS?12mh1w zq5o6#!GDN8__BS#m+b?-Y#;FdQuAdyf&bT