diff --git a/bsp/qemu-zynqmp-r5/.config b/bsp/qemu-zynqmp-r5/.config
new file mode 100644
index 0000000000000000000000000000000000000000..1313f5ebb76da8c649387e9c641e83be96235de7
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/.config
@@ -0,0 +1,906 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Project Configuration
+#
+
+#
+# RT-Thread Kernel
+#
+CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
+# CONFIG_RT_USING_SMP is not set
+CONFIG_RT_ALIGN_SIZE=8
+# CONFIG_RT_THREAD_PRIORITY_8 is not set
+# CONFIG_RT_THREAD_PRIORITY_32 is not set
+CONFIG_RT_THREAD_PRIORITY_256=y
+CONFIG_RT_THREAD_PRIORITY_MAX=256
+CONFIG_RT_TICK_PER_SECOND=100
+CONFIG_RT_USING_OVERFLOW_CHECK=y
+CONFIG_RT_USING_HOOK=y
+CONFIG_RT_HOOK_USING_FUNC_PTR=y
+CONFIG_RT_USING_IDLE_HOOK=y
+CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
+CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_RT_USING_TIMER_SOFT=y
+CONFIG_RT_TIMER_THREAD_PRIO=4
+CONFIG_RT_TIMER_THREAD_STACK_SIZE=1024
+
+#
+# kservice optimization
+#
+# CONFIG_RT_KSERVICE_USING_STDLIB is not set
+# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
+# CONFIG_RT_USING_TINY_FFS is not set
+# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+CONFIG_RT_DEBUG=y
+CONFIG_RT_DEBUG_COLOR=y
+# CONFIG_RT_DEBUG_INIT_CONFIG is not set
+# CONFIG_RT_DEBUG_THREAD_CONFIG is not set
+# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set
+# CONFIG_RT_DEBUG_IPC_CONFIG is not set
+# CONFIG_RT_DEBUG_TIMER_CONFIG is not set
+# CONFIG_RT_DEBUG_IRQ_CONFIG is not set
+# CONFIG_RT_DEBUG_MEM_CONFIG is not set
+# CONFIG_RT_DEBUG_SLAB_CONFIG is not set
+# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set
+# CONFIG_RT_DEBUG_MODULE_CONFIG is not set
+
+#
+# Inter-Thread communication
+#
+CONFIG_RT_USING_SEMAPHORE=y
+CONFIG_RT_USING_MUTEX=y
+CONFIG_RT_USING_EVENT=y
+CONFIG_RT_USING_MAILBOX=y
+CONFIG_RT_USING_MESSAGEQUEUE=y
+# CONFIG_RT_USING_SIGNALS is not set
+
+#
+# Memory Management
+#
+CONFIG_RT_USING_MEMPOOL=y
+CONFIG_RT_USING_SMALL_MEM=y
+# CONFIG_RT_USING_SLAB is not set
+CONFIG_RT_USING_MEMHEAP=y
+CONFIG_RT_MEMHEAP_FAST_MODE=y
+# CONFIG_RT_MEMHEAP_BEST_MODE is not set
+CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
+# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
+# CONFIG_RT_USING_SLAB_AS_HEAP is not set
+# CONFIG_RT_USING_USERHEAP is not set
+# CONFIG_RT_USING_NOHEAP is not set
+CONFIG_RT_USING_MEMTRACE=y
+# CONFIG_RT_USING_HEAP_ISR is not set
+CONFIG_RT_USING_HEAP=y
+
+#
+# Kernel Device Object
+#
+CONFIG_RT_USING_DEVICE=y
+CONFIG_RT_USING_DEVICE_OPS=y
+# CONFIG_RT_USING_DM is not set
+CONFIG_RT_USING_INTERRUPT_INFO=y
+CONFIG_RT_USING_CONSOLE=y
+CONFIG_RT_CONSOLEBUF_SIZE=256
+CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_RT_VER_NUM=0x50001
+# CONFIG_RT_USING_STDC_ATOMIC is not set
+CONFIG_RT_USING_CACHE=y
+# CONFIG_RT_USING_HW_ATOMIC is not set
+# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
+# CONFIG_RT_USING_CPU_FFS is not set
+
+#
+# RT-Thread Components
+#
+CONFIG_RT_USING_COMPONENTS_INIT=y
+CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
+CONFIG_RT_MAIN_THREAD_PRIORITY=10
+# CONFIG_RT_USING_LEGACY is not set
+CONFIG_RT_USING_MSH=y
+CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_USING_MSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=4096
+CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=10
+CONFIG_FINSH_USING_SYMTAB=y
+CONFIG_FINSH_CMD_SIZE=256
+CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
+CONFIG_FINSH_USING_DESCRIPTION=y
+# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
+# CONFIG_FINSH_USING_AUTH is not set
+CONFIG_FINSH_ARG_MAX=10
+
+#
+# DFS: device virtual file system
+#
+CONFIG_RT_USING_DFS=y
+CONFIG_DFS_USING_POSIX=y
+CONFIG_DFS_USING_WORKDIR=y
+# CONFIG_RT_USING_DFS_MNTTABLE is not set
+CONFIG_DFS_FD_MAX=32
+CONFIG_RT_USING_DFS_V1=y
+# CONFIG_RT_USING_DFS_V2 is not set
+CONFIG_DFS_FILESYSTEMS_MAX=8
+CONFIG_DFS_FILESYSTEM_TYPES_MAX=8
+CONFIG_RT_USING_DFS_ELMFAT=y
+
+#
+# elm-chan's FatFs, Generic FAT Filesystem Module
+#
+CONFIG_RT_DFS_ELM_CODE_PAGE=437
+CONFIG_RT_DFS_ELM_WORD_ACCESS=y
+# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
+CONFIG_RT_DFS_ELM_USE_LFN_3=y
+CONFIG_RT_DFS_ELM_USE_LFN=3
+CONFIG_RT_DFS_ELM_LFN_UNICODE_0=y
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set
+CONFIG_RT_DFS_ELM_LFN_UNICODE=0
+CONFIG_RT_DFS_ELM_MAX_LFN=255
+CONFIG_RT_DFS_ELM_DRIVES=2
+CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096
+# CONFIG_RT_DFS_ELM_USE_ERASE is not set
+CONFIG_RT_DFS_ELM_REENTRANT=y
+CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
+CONFIG_RT_USING_DFS_DEVFS=y
+CONFIG_RT_USING_DFS_ROMFS=y
+# CONFIG_RT_USING_DFS_CROMFS is not set
+# CONFIG_RT_USING_DFS_RAMFS is not set
+CONFIG_RT_USING_DFS_TMPFS=y
+# CONFIG_RT_USING_FAL is not set
+
+#
+# Device Drivers
+#
+CONFIG_RT_USING_DEVICE_IPC=y
+CONFIG_RT_UNAMED_PIPE_NUMBER=64
+CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
+CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
+CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
+CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_USING_SERIAL_V1=y
+# CONFIG_RT_USING_SERIAL_V2 is not set
+CONFIG_RT_SERIAL_USING_DMA=y
+CONFIG_RT_SERIAL_RB_BUFSZ=64
+# CONFIG_RT_USING_CAN is not set
+# CONFIG_RT_USING_HWTIMER is not set
+# CONFIG_RT_USING_CPUTIME is not set
+# CONFIG_RT_USING_I2C is not set
+# CONFIG_RT_USING_PHY is not set
+# CONFIG_RT_USING_PIN is not set
+# CONFIG_RT_USING_ADC is not set
+# CONFIG_RT_USING_DAC is not set
+# CONFIG_RT_USING_NULL is not set
+# CONFIG_RT_USING_ZERO is not set
+# CONFIG_RT_USING_RANDOM is not set
+# CONFIG_RT_USING_PWM is not set
+# CONFIG_RT_USING_MTD_NOR is not set
+# CONFIG_RT_USING_MTD_NAND is not set
+# CONFIG_RT_USING_PM is not set
+# CONFIG_RT_USING_FDT is not set
+# CONFIG_RT_USING_RTC is not set
+# CONFIG_RT_USING_SDIO is not set
+# CONFIG_RT_USING_SPI is not set
+# CONFIG_RT_USING_WDT is not set
+# CONFIG_RT_USING_AUDIO is not set
+# CONFIG_RT_USING_SENSOR is not set
+# CONFIG_RT_USING_TOUCH is not set
+# CONFIG_RT_USING_LCD is not set
+# CONFIG_RT_USING_HWCRYPTO is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+# CONFIG_RT_USING_INPUT_CAPTURE is not set
+# CONFIG_RT_USING_DEV_BUS is not set
+# CONFIG_RT_USING_WIFI is not set
+# CONFIG_RT_USING_VIRTIO is not set
+
+#
+# Using USB
+#
+# CONFIG_RT_USING_USB is not set
+# CONFIG_RT_USING_USB_HOST is not set
+# CONFIG_RT_USING_USB_DEVICE is not set
+
+#
+# C/C++ and POSIX layer
+#
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
+
+#
+# POSIX (Portable Operating System Interface) layer
+#
+CONFIG_RT_USING_POSIX_FS=y
+CONFIG_RT_USING_POSIX_DEVIO=y
+CONFIG_RT_USING_POSIX_STDIO=y
+CONFIG_RT_USING_POSIX_POLL=y
+CONFIG_RT_USING_POSIX_SELECT=y
+# CONFIG_RT_USING_POSIX_SOCKET is not set
+CONFIG_RT_USING_POSIX_TERMIOS=y
+CONFIG_RT_USING_POSIX_AIO=y
+# CONFIG_RT_USING_POSIX_MMAN is not set
+CONFIG_RT_USING_POSIX_DELAY=y
+CONFIG_RT_USING_POSIX_CLOCK=y
+CONFIG_RT_USING_POSIX_TIMER=y
+# CONFIG_RT_USING_PTHREADS is not set
+# CONFIG_RT_USING_MODULE is not set
+
+#
+# Interprocess Communication (IPC)
+#
+CONFIG_RT_USING_POSIX_PIPE=y
+CONFIG_RT_USING_POSIX_PIPE_SIZE=512
+CONFIG_RT_USING_POSIX_MESSAGE_QUEUE=y
+CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE=y
+
+#
+# Socket is in the 'Network' category
+#
+# CONFIG_RT_USING_CPLUSPLUS is not set
+
+#
+# Network
+#
+# CONFIG_RT_USING_SAL is not set
+# CONFIG_RT_USING_NETDEV is not set
+# CONFIG_RT_USING_LWIP is not set
+# CONFIG_RT_USING_AT is not set
+
+#
+# Utilities
+#
+# CONFIG_RT_USING_RYM is not set
+# CONFIG_RT_USING_ULOG is not set
+# CONFIG_RT_USING_UTEST is not set
+# CONFIG_RT_USING_VAR_EXPORT is not set
+CONFIG_RT_USING_ADT=y
+# CONFIG_RT_USING_RT_LINK is not set
+# CONFIG_RT_USING_VBUS is not set
+
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
+#
+# RT-Thread online packages
+#
+
+#
+# IoT - internet of things
+#
+# CONFIG_PKG_USING_LWIP is not set
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
+# CONFIG_PKG_USING_PAHOMQTT is not set
+# CONFIG_PKG_USING_UMQTT is not set
+# CONFIG_PKG_USING_WEBCLIENT is not set
+# CONFIG_PKG_USING_WEBNET is not set
+# CONFIG_PKG_USING_MONGOOSE is not set
+# CONFIG_PKG_USING_MYMQTT is not set
+# CONFIG_PKG_USING_KAWAII_MQTT is not set
+# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_LIBMODBUS is not set
+# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_NANOPB is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_RW007 is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_CMUX is not set
+# CONFIG_PKG_USING_PPP_DEVICE is not set
+# CONFIG_PKG_USING_AT_DEVICE is not set
+# CONFIG_PKG_USING_ATSRV_SOCKET is not set
+# CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
+
+#
+# IoT Cloud
+#
+# CONFIG_PKG_USING_ONENET is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+# CONFIG_PKG_USING_ALI_IOTKIT is not set
+# CONFIG_PKG_USING_AZURE is not set
+# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_JIOT-C-SDK is not set
+# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
+# CONFIG_PKG_USING_JOYLINK is not set
+# CONFIG_PKG_USING_EZ_IOT_OS is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# CONFIG_PKG_USING_NIMBLE is not set
+# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
+# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
+# CONFIG_PKG_USING_IPMSG is not set
+# CONFIG_PKG_USING_LSSDP is not set
+# CONFIG_PKG_USING_AIRKISS_OPEN is not set
+# CONFIG_PKG_USING_LIBRWS is not set
+# CONFIG_PKG_USING_TCPSERVER is not set
+# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_DLT645 is not set
+# CONFIG_PKG_USING_QXWZ is not set
+# CONFIG_PKG_USING_SMTP_CLIENT is not set
+# CONFIG_PKG_USING_ABUP_FOTA is not set
+# CONFIG_PKG_USING_LIBCURL2RTT is not set
+# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_AGILE_TELNET is not set
+# CONFIG_PKG_USING_NMEALIB is not set
+# CONFIG_PKG_USING_PDULIB is not set
+# CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
+# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
+# CONFIG_PKG_USING_MAVLINK is not set
+# CONFIG_PKG_USING_BSAL is not set
+# CONFIG_PKG_USING_AGILE_MODBUS is not set
+# CONFIG_PKG_USING_AGILE_FTP is not set
+# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
+# CONFIG_PKG_USING_RT_LINK_HW is not set
+# CONFIG_PKG_USING_LORA_PKT_FWD is not set
+# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
+# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
+# CONFIG_PKG_USING_HM is not set
+# CONFIG_PKG_USING_SMALL_MODBUS is not set
+# CONFIG_PKG_USING_NET_SERVER is not set
+# CONFIG_PKG_USING_ZFTP is not set
+
+#
+# security packages
+#
+# CONFIG_PKG_USING_MBEDTLS is not set
+# CONFIG_PKG_USING_LIBSODIUM is not set
+# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_TINYCRYPT is not set
+# CONFIG_PKG_USING_TFM is not set
+# CONFIG_PKG_USING_YD_CRYPTO is not set
+
+#
+# language packages
+#
+
+#
+# JSON: JavaScript Object Notation, a lightweight data-interchange format
+#
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
+# CONFIG_PKG_USING_RAPIDJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
+# CONFIG_PKG_USING_AGILE_JSMN is not set
+# CONFIG_PKG_USING_PARSON is not set
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
+# CONFIG_PKG_USING_LUATOS_SOC is not set
+# CONFIG_PKG_USING_LUA is not set
+# CONFIG_PKG_USING_JERRYSCRIPT is not set
+# CONFIG_PKG_USING_MICROPYTHON is not set
+# CONFIG_PKG_USING_PIKASCRIPT is not set
+# CONFIG_PKG_USING_RTT_RUST is not set
+
+#
+# multimedia packages
+#
+
+#
+# LVGL: powerful and easy-to-use embedded GUI library
+#
+# CONFIG_PKG_USING_LVGL is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+
+#
+# u8g2: a monochrome graphic library
+#
+# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
+# CONFIG_PKG_USING_U8G2 is not set
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
+# CONFIG_PKG_USING_WAVPLAYER is not set
+# CONFIG_PKG_USING_TJPGD is not set
+# CONFIG_PKG_USING_PDFGEN is not set
+# CONFIG_PKG_USING_HELIX is not set
+# CONFIG_PKG_USING_AZUREGUIX is not set
+# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
+# CONFIG_PKG_USING_NUEMWIN is not set
+# CONFIG_PKG_USING_MP3PLAYER is not set
+# CONFIG_PKG_USING_TINYJPEG is not set
+# CONFIG_PKG_USING_UGUI is not set
+
+#
+# PainterEngine: A cross-platform graphics application framework written in C language
+#
+# CONFIG_PKG_USING_PAINTERENGINE is not set
+# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set
+# CONFIG_PKG_USING_MCURSES is not set
+# CONFIG_PKG_USING_TERMBOX is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_QRCODE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+
+#
+# tools packages
+#
+# CONFIG_PKG_USING_CMBACKTRACE is not set
+# CONFIG_PKG_USING_EASYFLASH is not set
+# CONFIG_PKG_USING_EASYLOGGER is not set
+# CONFIG_PKG_USING_SYSTEMVIEW is not set
+# CONFIG_PKG_USING_SEGGER_RTT is not set
+# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
+# CONFIG_PKG_USING_ULOG_FILE is not set
+# CONFIG_PKG_USING_LOGMGR is not set
+# CONFIG_PKG_USING_ADBD is not set
+# CONFIG_PKG_USING_COREMARK is not set
+# CONFIG_PKG_USING_DHRYSTONE is not set
+# CONFIG_PKG_USING_MEMORYPERF is not set
+# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
+# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
+# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
+# CONFIG_PKG_USING_BS8116A is not set
+# CONFIG_PKG_USING_GPS_RMC is not set
+# CONFIG_PKG_USING_URLENCODE is not set
+# CONFIG_PKG_USING_UMCN is not set
+# CONFIG_PKG_USING_LWRB2RTT is not set
+# CONFIG_PKG_USING_CPU_USAGE is not set
+# CONFIG_PKG_USING_GBK2UTF8 is not set
+# CONFIG_PKG_USING_VCONSOLE is not set
+# CONFIG_PKG_USING_KDB is not set
+# CONFIG_PKG_USING_WAMR is not set
+# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
+# CONFIG_PKG_USING_LWLOG is not set
+# CONFIG_PKG_USING_ANV_TRACE is not set
+# CONFIG_PKG_USING_ANV_MEMLEAK is not set
+# CONFIG_PKG_USING_ANV_TESTSUIT is not set
+# CONFIG_PKG_USING_ANV_BENCH is not set
+# CONFIG_PKG_USING_DEVMEM is not set
+# CONFIG_PKG_USING_REGEX is not set
+# CONFIG_PKG_USING_MEM_SANDBOX is not set
+# CONFIG_PKG_USING_SOLAR_TERMS is not set
+# CONFIG_PKG_USING_GAN_ZHI is not set
+# CONFIG_PKG_USING_FDT is not set
+# CONFIG_PKG_USING_CBOX is not set
+# CONFIG_PKG_USING_SNOWFLAKE is not set
+# CONFIG_PKG_USING_HASH_MATCH is not set
+# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
+# CONFIG_PKG_USING_VOFA_PLUS is not set
+
+#
+# system packages
+#
+
+#
+# enhanced kernel services
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
+# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
+
+#
+# acceleration: Assembly language or algorithmic acceleration packages
+#
+# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
+# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
+# CONFIG_PKG_USING_QFPLIB_M3 is not set
+
+#
+# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+#
+# CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+
+#
+# Micrium: Micrium software products porting for RT-Thread
+#
+# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
+# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
+# CONFIG_PKG_USING_UC_CRC is not set
+# CONFIG_PKG_USING_UC_CLK is not set
+# CONFIG_PKG_USING_UC_COMMON is not set
+# CONFIG_PKG_USING_UC_MODBUS is not set
+# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_CAIRO is not set
+# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_PARTITION is not set
+# CONFIG_PKG_USING_PERF_COUNTER is not set
+# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_SQLITE is not set
+# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_DFS_YAFFS is not set
+# CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_DFS_JFFS2 is not set
+# CONFIG_PKG_USING_DFS_UFFS is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
+# CONFIG_PKG_USING_THREAD_POOL is not set
+# CONFIG_PKG_USING_ROBOTS is not set
+# CONFIG_PKG_USING_EV is not set
+# CONFIG_PKG_USING_SYSWATCH is not set
+# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
+# CONFIG_PKG_USING_PLCCORE is not set
+# CONFIG_PKG_USING_RAMDISK is not set
+# CONFIG_PKG_USING_MININI is not set
+# CONFIG_PKG_USING_QBOOT is not set
+# CONFIG_PKG_USING_PPOOL is not set
+# CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_LPM is not set
+# CONFIG_PKG_USING_TLSF is not set
+# CONFIG_PKG_USING_EVENT_RECORDER is not set
+# CONFIG_PKG_USING_ARM_2D is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_CHERRYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
+# CONFIG_PKG_USING_TFDB is not set
+# CONFIG_PKG_USING_QPC is not set
+# CONFIG_PKG_USING_AGILE_UPGRADE is not set
+
+#
+# peripheral libraries and drivers
+#
+# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
+# CONFIG_PKG_USING_REALTEK_AMEBA is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_ADT74XX is not set
+# CONFIG_PKG_USING_AS7341 is not set
+# CONFIG_PKG_USING_STM32_SDIO is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
+# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_BUTTON is not set
+# CONFIG_PKG_USING_PCF8574 is not set
+# CONFIG_PKG_USING_SX12XX is not set
+# CONFIG_PKG_USING_SIGNAL_LED is not set
+# CONFIG_PKG_USING_LEDBLINK is not set
+# CONFIG_PKG_USING_LITTLED is not set
+# CONFIG_PKG_USING_LKDGUI is not set
+# CONFIG_PKG_USING_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRFX is not set
+# CONFIG_PKG_USING_WM_LIBRARIES is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
+# CONFIG_PKG_USING_KENDRYTE_SDK is not set
+# CONFIG_PKG_USING_INFRARED is not set
+# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_AGILE_BUTTON is not set
+# CONFIG_PKG_USING_AGILE_LED is not set
+# CONFIG_PKG_USING_AT24CXX is not set
+# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
+# CONFIG_PKG_USING_AD7746 is not set
+# CONFIG_PKG_USING_PCA9685 is not set
+# CONFIG_PKG_USING_I2C_TOOLS is not set
+# CONFIG_PKG_USING_NRF24L01 is not set
+# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
+# CONFIG_PKG_USING_MAX17048 is not set
+# CONFIG_PKG_USING_RPLIDAR is not set
+# CONFIG_PKG_USING_AS608 is not set
+# CONFIG_PKG_USING_RC522 is not set
+# CONFIG_PKG_USING_WS2812B is not set
+# CONFIG_PKG_USING_EMBARC_BSP is not set
+# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
+# CONFIG_PKG_USING_MULTI_RTIMER is not set
+# CONFIG_PKG_USING_MAX7219 is not set
+# CONFIG_PKG_USING_BEEP is not set
+# CONFIG_PKG_USING_EASYBLINK is not set
+# CONFIG_PKG_USING_PMS_SERIES is not set
+# CONFIG_PKG_USING_CAN_YMODEM is not set
+# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
+# CONFIG_PKG_USING_QLED is not set
+# CONFIG_PKG_USING_PAJ7620 is not set
+# CONFIG_PKG_USING_AGILE_CONSOLE is not set
+# CONFIG_PKG_USING_LD3320 is not set
+# CONFIG_PKG_USING_WK2124 is not set
+# CONFIG_PKG_USING_LY68L6400 is not set
+# CONFIG_PKG_USING_DM9051 is not set
+# CONFIG_PKG_USING_SSD1306 is not set
+# CONFIG_PKG_USING_QKEY is not set
+# CONFIG_PKG_USING_RS485 is not set
+# CONFIG_PKG_USING_RS232 is not set
+# CONFIG_PKG_USING_NES is not set
+# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
+# CONFIG_PKG_USING_VDEVICE is not set
+# CONFIG_PKG_USING_SGM706 is not set
+# CONFIG_PKG_USING_STM32WB55_SDK is not set
+# CONFIG_PKG_USING_RDA58XX is not set
+# CONFIG_PKG_USING_LIBNFC is not set
+# CONFIG_PKG_USING_MFOC is not set
+# CONFIG_PKG_USING_TMC51XX is not set
+# CONFIG_PKG_USING_TCA9534 is not set
+# CONFIG_PKG_USING_KOBUKI is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
+# CONFIG_PKG_USING_MICRO_ROS is not set
+# CONFIG_PKG_USING_MCP23008 is not set
+# CONFIG_PKG_USING_BLUETRUM_SDK is not set
+# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
+# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
+# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
+# CONFIG_PKG_USING_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
+# CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+
+#
+# AI packages
+#
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
+# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_ULAPACK is not set
+# CONFIG_PKG_USING_QUEST is not set
+# CONFIG_PKG_USING_NAXOS is not set
+
+#
+# miscellaneous packages
+#
+
+#
+# project laboratory
+#
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+
+#
+# entertainment: terminal games and other interesting software packages
+#
+# CONFIG_PKG_USING_CMATRIX is not set
+# CONFIG_PKG_USING_SL is not set
+# CONFIG_PKG_USING_CAL is not set
+# CONFIG_PKG_USING_ACLOCK is not set
+# CONFIG_PKG_USING_THREES is not set
+# CONFIG_PKG_USING_2048 is not set
+# CONFIG_PKG_USING_SNAKE is not set
+# CONFIG_PKG_USING_TETRIS is not set
+# CONFIG_PKG_USING_DONUT is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_LIBCSV is not set
+# CONFIG_PKG_USING_OPTPARSE is not set
+# CONFIG_PKG_USING_FASTLZ is not set
+# CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
+# CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_CANFESTIVAL is not set
+# CONFIG_PKG_USING_ZLIB is not set
+# CONFIG_PKG_USING_MINIZIP is not set
+# CONFIG_PKG_USING_HEATSHRINK is not set
+# CONFIG_PKG_USING_DSTR is not set
+# CONFIG_PKG_USING_TINYFRAME is not set
+# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
+# CONFIG_PKG_USING_DIGITALCTRL is not set
+# CONFIG_PKG_USING_UPACKER is not set
+# CONFIG_PKG_USING_UPARAM is not set
+# CONFIG_PKG_USING_HELLO is not set
+# CONFIG_PKG_USING_VI is not set
+# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_UKAL is not set
+# CONFIG_PKG_USING_CRCLIB is not set
+# CONFIG_PKG_USING_LWGPS is not set
+# CONFIG_PKG_USING_STATE_MACHINE is not set
+# CONFIG_PKG_USING_DESIGN_PATTERN is not set
+# CONFIG_PKG_USING_CONTROLLER is not set
+# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
+# CONFIG_PKG_USING_MFBD is not set
+# CONFIG_PKG_USING_SLCAN2RTT is not set
+# CONFIG_PKG_USING_SOEM is not set
+# CONFIG_PKG_USING_QPARAM is not set
+
+#
+# Arduino libraries
+#
+# CONFIG_PKG_USING_RTDUINO is not set
+
+#
+# Projects
+#
+# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
+# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
+# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
+
+#
+# Sensors
+#
+# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
+# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
+# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
+
+#
+# Display
+#
+# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+
+#
+# Timing
+#
+# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
+
+#
+# Data Processing
+#
+# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
+# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
+
+#
+# Data Storage
+#
+
+#
+# Communication
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
+
+#
+# Device Control
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
+
+#
+# Other
+#
+
+#
+# Signal IO
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
+
+#
+# Uncategorized
+#
+
+#
+# Hardware Drivers Config
+#
+CONFIG_SOC_ZYNQMP_R5=y
+
+#
+# On-Chip Peripheral Drivers
+#
+CONFIG_BSP_USING_UART0=y
diff --git a/bsp/qemu-zynqmp-r5/.cproject b/bsp/qemu-zynqmp-r5/.cproject
new file mode 100644
index 0000000000000000000000000000000000000000..4c634d85544b60df1cf26abdde2836d5538eb017
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/.cproject
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bsp/qemu-zynqmp-r5/.gitignore b/bsp/qemu-zynqmp-r5/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fba5a7a92ebed8855971b5a8a20308dcdd96e170
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/.gitignore
@@ -0,0 +1,44 @@
+*.pyc
+*.map
+*.dblite
+*.elf
+*.bin
+*.hex
+*.axf
+*.exe
+*.pdb
+*.idb
+*.ilk
+*.old
+build
+Debug
+documentation/html
+packages/
+*~
+*.o
+*.obj
+*.out
+*.bak
+*.dep
+*.lib
+*.i
+*.d
+.DS_Stor*
+.config 3
+.config 4
+.config 5
+Midea-X1
+*.uimg
+GPATH
+GRTAGS
+GTAGS
+.vscode
+JLinkLog.txt
+JLinkSettings.ini
+DebugConfig/
+RTE/
+settings/
+*.uvguix*
+cconfig.h
+.settings
+drivers/automac.h
diff --git a/bsp/qemu-zynqmp-r5/.project b/bsp/qemu-zynqmp-r5/.project
new file mode 100644
index 0000000000000000000000000000000000000000..e5f00228c02c65463748aa48f618aea3e02462a9
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/.project
@@ -0,0 +1,54 @@
+
+
+ qemu-vexpress-a9
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.rttnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+ rt-thread
+ 2
+ virtual:/virtual
+
+
+ rt-thread/components
+ 2
+ $%7BPARENT-2-PROJECT_LOC%7D/components
+
+
+ rt-thread/include
+ 2
+ $%7BPARENT-2-PROJECT_LOC%7D/include
+
+
+ rt-thread/libcpu
+ 2
+ $%7BPARENT-2-PROJECT_LOC%7D/libcpu
+
+
+ rt-thread/src
+ 2
+ $%7BPARENT-2-PROJECT_LOC%7D/src
+
+
+
diff --git a/bsp/qemu-zynqmp-r5/Kconfig b/bsp/qemu-zynqmp-r5/Kconfig
new file mode 100644
index 0000000000000000000000000000000000000000..75aeadae607c9ec2fcdf02206824cbf77005a566
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/Kconfig
@@ -0,0 +1,20 @@
+mainmenu "RT-Thread Project Configuration"
+
+config BSP_DIR
+ string
+ option env="BSP_ROOT"
+ default "."
+
+config RTT_DIR
+ string
+ option env="RTT_ROOT"
+ default "../.."
+
+config PKGS_DIR
+ string
+ option env="PKGS_ROOT"
+ default "packages"
+
+source "$RTT_DIR/Kconfig"
+source "$PKGS_DIR/Kconfig"
+source "$BSP_DIR/drivers/Kconfig"
diff --git a/bsp/qemu-zynqmp-r5/README.md b/bsp/qemu-zynqmp-r5/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..113159ff0890a47cb203d46de24f0d673e988256
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/README.md
@@ -0,0 +1,61 @@
+# QEMU ZynqMP 板级支持包说明
+
+## 简介
+本文档是为 QEMU 模拟 Xilinx Zynq UltraScale+ (ZynqMP) 平台提供的说明。
+> qemu-zynqmp-r5平台的支持,同时提供了两个部分。一是cortex-r5独立的libcpu,二是BSP的实现。
+
+## 板载信息
+| **核心** | **支持情况** | **备注** |
+|:---------------|:------------:|:-----------------------|
+| R5-CPU0 | 支持 | 运行系统的为R5核的CPU0 |
+| **中断控制器** | **支持情况** | **备注** |
+| GICV1 | 支持 | PL390 |
+| **片上外设** | **支持情况** | **备注** |
+| UART | 支持 | UART0 |
+| TTC | 支持 | |
+
+## 环境搭建(非常重要)
+根据 Xilinx 官方给出的方案,`qemu-system-aarch64` 自带的 `xlnx-zcu102` 并不完善,故使用 QEMU Xilinx 补丁版。
+> 笔者暂无 Windows 平台,故此说明文档是以 Linux 为背景的。
+
+### QEMU 源码下载与编译
+[Building and Running QEMU from Source Code](https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/822312999/Building+and+Running+QEMU+from+Source+Code)
+
+## 编译
+`scons -j12`
+
+## 运行和退出
+### 运行脚本
+| 脚本文件 | 运行平台 | 备注 |
+|-------------------|----------|:------------------------:|
+| qemu-nographic.sh | Linux | 以不带界面的模式启动运行 |
+
+### 运行
+> 注意:`sh qemu-nographic.sh`后面一定要加上,上面编译的`qemu-system-aarch64`
+```bash
+$ sh qemu-nographic.sh qemu-system-aarch64
+QEMU emulator version 7.1.0 (v2.6.0-55407-g21adc9f99e)
+Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
+
+\ | /
+- RT - Thread Operating System
+/ | \ 5.0.1 build May 15 2023 22:41:21
+ 2006 - 2022 Copyright by RT-Thread team
+Hello RT-Thread!
+msh />
+```
+
+### 退出
+`ctrl c`
+
+## 调试
+此版本QEMU的实现目前无法支持GDB调试,所以只能通过串口打印作为调试手段!
+
+## 参考资料
+- ARMv7-A and ARMv7-R Architecture Reference Manual (ARM DDI 0406C ID051414)
+- Cortex-R5 and Cortex-R5F Technical Reference Manual (ARM DDI 0460C ID021511)
+- Zynq UltraScale+ Device Technical Reference Manual (UG1085)
+
+## 联系人信息
+
+维护人:[lepustse](https://gitee.com/lepustse)
diff --git a/bsp/qemu-zynqmp-r5/SConscript b/bsp/qemu-zynqmp-r5/SConscript
new file mode 100644
index 0000000000000000000000000000000000000000..4c815c49b835a3a5ea61f337dc17154dd316d7d1
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/SConscript
@@ -0,0 +1,15 @@
+# RT-Thread building script for bridge
+
+import os
+from building import *
+
+cwd = GetCurrentDir()
+objs = []
+list = os.listdir(cwd)
+
+for d in list:
+ path = os.path.join(cwd, d)
+ if os.path.isfile(os.path.join(path, 'SConscript')):
+ objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return('objs')
diff --git a/bsp/qemu-zynqmp-r5/SConstruct b/bsp/qemu-zynqmp-r5/SConstruct
new file mode 100644
index 0000000000000000000000000000000000000000..aa95fff7dfc6076a738ad311e8614db5916741a3
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/SConstruct
@@ -0,0 +1,36 @@
+import os
+import sys
+import rtconfig
+
+if os.getenv('RTT_ROOT'):
+ RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+ RTT_ROOT = os.path.join(os.getcwd(), '..', '..')
+
+sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
+from building import *
+
+TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+
+DefaultEnvironment(tools=[])
+env = Environment(tools = ['mingw'],
+ AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+ CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
+ CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
+ AR = rtconfig.AR, ARFLAGS = '-rc',
+ LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+env['ASCOM'] = env['ASPPCOM']
+
+Export('RTT_ROOT')
+Export('rtconfig')
+
+# prepare building environment
+objs = PrepareBuilding(env, RTT_ROOT)
+
+if GetDepend('RT_USING_SMART'):
+ # use smart link.lds
+ env['LINKFLAGS'] = env['LINKFLAGS'].replace('link.lds', 'link_smart.lds')
+
+# make a building
+DoBuilding(TARGET, objs)
diff --git a/bsp/qemu-zynqmp-r5/applications/SConscript b/bsp/qemu-zynqmp-r5/applications/SConscript
new file mode 100644
index 0000000000000000000000000000000000000000..83bada9f5dba5b2cdf9b5a2d0cce6d8bab7ae1e5
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/applications/SConscript
@@ -0,0 +1,15 @@
+import os
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c') + Glob('*.cpp')
+CPPPATH = [cwd]
+
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
+
+list = os.listdir(cwd)
+for item in list:
+ if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
+ group = group + SConscript(os.path.join(item, 'SConscript'))
+
+Return('group')
diff --git a/bsp/qemu-zynqmp-r5/applications/main.c b/bsp/qemu-zynqmp-r5/applications/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..dcd040f616df68939283c433d80acdd631ad6810
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/applications/main.c
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#include
+#include
+#include
+
+int main(void)
+{
+ printf("Hello RT-Thread!\n");
+
+ return 0;
+}
diff --git a/bsp/qemu-zynqmp-r5/drivers/Kconfig b/bsp/qemu-zynqmp-r5/drivers/Kconfig
new file mode 100644
index 0000000000000000000000000000000000000000..5286c0357c5adf6024bbe9e4be86e1f81ac60e24
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/Kconfig
@@ -0,0 +1,19 @@
+menu "Hardware Drivers Config"
+
+ config SOC_ZYNQMP_R5
+ bool
+ select RT_USING_CACHE
+ select RT_USING_COMPONENTS_INIT
+ select RT_USING_USER_MAIN
+ default y
+
+ menu "On-Chip Peripheral Drivers"
+
+ config BSP_USING_UART0
+ bool "Enable UART0"
+ default y
+
+ endmenu
+
+endmenu
+
diff --git a/bsp/qemu-zynqmp-r5/drivers/SConscript b/bsp/qemu-zynqmp-r5/drivers/SConscript
new file mode 100644
index 0000000000000000000000000000000000000000..6cbc43e7479a3e32d7a469b76efa7ca2e19883e9
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/SConscript
@@ -0,0 +1,17 @@
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+list = os.listdir(cwd)
+CPPPATH = [cwd]
+objs = []
+
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+
+for d in list:
+ path = os.path.join(cwd, d)
+ if os.path.isfile(os.path.join(path, 'SConscript')):
+ objs = objs + SConscript(os.path.join(d, 'SConscript'))
+objs = objs + group
+
+Return('objs')
diff --git a/bsp/qemu-zynqmp-r5/drivers/board.c b/bsp/qemu-zynqmp-r5/drivers/board.c
new file mode 100644
index 0000000000000000000000000000000000000000..3669ffca957cfb80a08d590b996aceb395421670
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/board.c
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#include
+#include
+
+#include "board.h"
+#include "drv_timer.h"
+void idle_wfi(void)
+{
+ asm volatile ("wfi");
+}
+
+/**
+ * This function will initialize board
+ */
+
+void rt_hw_board_init(void)
+{
+ /* initialize system heap */
+ rt_system_heap_init(HEAP_BEGIN, HEAP_END);
+
+ /* initialize hardware interrupt */
+ rt_hw_interrupt_init();
+
+ rt_components_board_init();
+ rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
+
+ rt_thread_idle_sethook(idle_wfi);
+}
+
diff --git a/bsp/qemu-zynqmp-r5/drivers/board.h b/bsp/qemu-zynqmp-r5/drivers/board.h
new file mode 100644
index 0000000000000000000000000000000000000000..cc68b3c38635026edd476507c80f681e7fa3a745
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/board.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#ifndef __BOARD_H__
+#define __BOARD_H__
+
+#include
+#include "zynqmp_r5.h"
+
+#if defined(__CC_ARM)
+extern int Image$$RW_IRAM1$$ZI$$Limit;
+#define HEAP_BEGIN ((void*)&Image$$RW_IRAM1$$ZI$$Limit)
+#elif defined(__GNUC__)
+extern int __bss_end;
+#define HEAP_BEGIN ((void*)&__bss_end)
+#endif
+
+#define HEAP_END (void*)(0x80000000)
+
+void rt_hw_board_init(void);
+
+#endif
diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_timer.c b/bsp/qemu-zynqmp-r5/drivers/drv_timer.c
new file mode 100644
index 0000000000000000000000000000000000000000..ce2659eae7dde806185961b4e40d29d8a5490f4c
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/drv_timer.c
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#include
+#include
+#include
+#include "drv_timer.h"
+
+#define TTC0_0_BASEADDR ZYNQMP_TTC0_BASE
+#define TTC0_0_CLK_FREQ_HZ 100000000UL
+
+static void rt_hw_timer_isr(int vector, void *param)
+{
+ rt_tick_increase();
+ /* clear interrupt */
+ TTC_ISR(TTC0_0_BASEADDR);
+}
+
+int rt_hw_timer_init(void)
+{
+ /* Stop timer */
+ TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_DIS;
+
+ /* Initialize TTC */
+ TTC_CNT_CNTRL(TTC0_0_BASEADDR) = TTC_CNT_CNTRL_RESET_VALUE;
+ TTC_CLK_CNTRL(TTC0_0_BASEADDR) = 0x00;
+ TTC_INTERVAL_VAL(TTC0_0_BASEADDR) = 0x00;
+ TTC_MATCH_0(TTC0_0_BASEADDR) = 0x00;
+ TTC_MATCH_1(TTC0_0_BASEADDR) = 0x00;
+ TTC_MATCH_2(TTC0_0_BASEADDR) = 0x00;
+ TTC_IER(TTC0_0_BASEADDR) = 0x00;
+ TTC_ISR(TTC0_0_BASEADDR) = 0x00;
+
+ /* Reset counter */
+ TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_RST;
+
+ /* Interval mode select */
+ TTC_CNT_CNTRL(TTC0_0_BASEADDR) |= TTC_CNT_CNTRL_INT;
+ /* Setup interval */
+ TTC_INTERVAL_VAL(TTC0_0_BASEADDR) = TTC0_0_CLK_FREQ_HZ / RT_TICK_PER_SECOND;
+ /* Clear all of the prescaler control bits in the register */
+ TTC_CLK_CNTRL(TTC0_0_BASEADDR) &= ~(TTC_CLK_CNTRL_PS_VAL_MASK |
+ TTC_CLK_CNTRL_PS_EN);
+ /* We do not need a prescaler*/
+
+ /* Register the ticker handler with the GIC */
+ rt_hw_interrupt_install(IRQ_TTC0_0, rt_hw_timer_isr, RT_NULL, "tick");
+ /* Enable TTC interrupts in the GIC */
+ rt_hw_interrupt_umask(IRQ_TTC0_0);
+ /* Enable interval interrupt */
+ TTC_IER(TTC0_0_BASEADDR) |= TTC_IXR_INTERVAL;
+ /* Start timer */
+ TTC_CNT_CNTRL(TTC0_0_BASEADDR) &=~ TTC_CNT_CNTRL_DIS;
+
+ return RT_EOK;
+}
+INIT_BOARD_EXPORT(rt_hw_timer_init);
diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_timer.h b/bsp/qemu-zynqmp-r5/drivers/drv_timer.h
new file mode 100644
index 0000000000000000000000000000000000000000..207d01a2bd039c8d8f06c7d9dba660d396dea198
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/drv_timer.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#ifndef __DRV_TIMER_H__
+#define __DRV_TIMER_H__
+
+#include "board.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define TTC_CLK_CNTRL(hw_base) __REG32(hw_base + 0x00)
+#define TTC_CLK_CNTRL_PS_VAL_MASK 0x0000001E /**< Prescale value */
+#define TTC_CLK_CNTRL_PS_EN (1 << 0) /**< Prescale enable */
+
+#define TTC_CNT_CNTRL(hw_base) __REG32(hw_base + 0x0C)
+#define TTC_CNT_CNTRL_RESET_VALUE 0x00000021 /**< Reset value */
+#define TTC_CNT_CNTRL_DIS (1 << 0) /**< Disable the counter */
+#define TTC_CNT_CNTRL_INT (1 << 1) /**< interval mode */
+#define TTC_CNT_CNTRL_DECR (1 << 2) /**< Decrement mode */
+#define TTC_CNT_CNTRL_RST (1 << 4) /**< Reset counter */
+
+#define TTC_COUNT_VALUE(hw_base) __REG32(hw_base + 0x18)
+#define TTC_INTERVAL_VAL(hw_base) __REG32(hw_base + 0x24)
+#define TTC_MATCH_0(hw_base) __REG32(hw_base + 0x30)
+#define TTC_MATCH_1(hw_base) __REG32(hw_base + 0x3C)
+#define TTC_MATCH_2(hw_base) __REG32(hw_base + 0x48)
+
+#define TTC_ISR(hw_base) __REG32(hw_base + 0x54)
+#define TTC_IXR_INTERVAL (1 << 0) /**< interval Interrupt */
+
+#define TTC_IER(hw_base) __REG32(hw_base + 0x60)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_uart.c b/bsp/qemu-zynqmp-r5/drivers/drv_uart.c
new file mode 100644
index 0000000000000000000000000000000000000000..0bb3c63df07bf17b811e24f916ec66e5bf75dfa8
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/drv_uart.c
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#include
+#include
+#include "drv_uart.h"
+#include "interrupt.h"
+
+struct hw_uart_device
+{
+ rt_uint32_t hw_base;
+ rt_uint32_t irqno;
+};
+
+static void rt_hw_uart_isr(int irqno, void *param)
+{
+ struct rt_serial_device *serial = (struct rt_serial_device *)param;
+
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
+}
+
+static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
+{
+ struct hw_uart_device *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct hw_uart_device *)serial->parent.user_data;
+
+ UART_RX_TRIG_LVL(uart->hw_base) = 1;
+
+ return RT_EOK;
+}
+
+extern rt_uint32_t rt_interrupt_to_thread;
+static rt_err_t uart_control(struct rt_serial_device *serial, int cmd, void *param)
+{
+
+ struct hw_uart_device *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct hw_uart_device *)serial->parent.user_data;
+
+ switch (cmd)
+ {
+ case RT_DEVICE_CTRL_CLR_INT:
+ /* disable rx irq */
+ UART_IDR(uart->hw_base) |= UART_IXR_DIS_MASK;
+ break;
+
+ case RT_DEVICE_CTRL_SET_INT:
+ /* enable rx irq */
+ UART_IER(uart->hw_base) |= (UART_IXR_RX_TRIG);
+ rt_hw_interrupt_umask(uart->irqno);
+ break;
+ }
+
+ return RT_EOK;
+}
+
+static int uart_putc(struct rt_serial_device *serial, char c)
+{
+ struct hw_uart_device *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct hw_uart_device *)serial->parent.user_data;
+
+ while (UART_SR(uart->hw_base) & UART_SR_TXFULL);
+ UART_FIFO(uart->hw_base) = c;
+
+ return 1;
+}
+
+static int uart_getc(struct rt_serial_device *serial)
+{
+ int ch;
+ struct hw_uart_device *uart;
+
+ RT_ASSERT(serial != RT_NULL);
+ uart = (struct hw_uart_device *)serial->parent.user_data;
+
+ ch = -1;
+ if (UART_ISR(uart->hw_base) & UART_IXR_RX_TRIG) {
+ ch = UART_FIFO(uart->hw_base) & 0xff;
+ UART_ISR(uart->hw_base) = (UART_IXR_RX_TRIG);
+ }
+
+ return ch;
+}
+
+static const struct rt_uart_ops _uart_ops =
+{
+ uart_configure,
+ uart_control,
+ uart_putc,
+ uart_getc,
+};
+
+
+#ifdef BSP_USING_UART0
+static struct hw_uart_device _uart0_device =
+{
+ ZYNQMP_UART0_BASE,
+ IRQ_UART_0,
+};
+static struct rt_serial_device _serial0;
+#endif
+
+int rt_hw_uart_init(void)
+{
+ struct hw_uart_device *uart;
+ struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
+#ifdef BSP_USING_UART0
+ uart = &_uart0_device;
+
+ _serial0.ops = &_uart_ops;
+ _serial0.config = config;
+
+ /* register UART0 device */
+ rt_hw_serial_register(&_serial0, "uart0", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart);
+
+ /* about gic */
+ rt_hw_interrupt_install(uart->irqno, rt_hw_uart_isr, &_serial0, "uart0");
+
+ /* enable Rx and Tx of UART */
+ UART_CR(uart->hw_base) &= ~UART_CR_EN_DIS_MASK;
+ UART_CR(uart->hw_base) |= (UART_CR_RX_EN | UART_CR_TX_EN);
+#endif
+
+ return 0;
+}
+INIT_BOARD_EXPORT(rt_hw_uart_init);
diff --git a/bsp/qemu-zynqmp-r5/drivers/drv_uart.h b/bsp/qemu-zynqmp-r5/drivers/drv_uart.h
new file mode 100644
index 0000000000000000000000000000000000000000..46c1d786a5176f3ada8cc964aa1a2ffc65fb428d
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/drv_uart.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2023, lepustse@gmail.com
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#ifndef __DRV_UART_H
+#define __DRV_UART_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+
+#define UART_CR(base) __REG32(base + 0x00)
+#define UART_CR_EN_DIS_MASK 0x0000003F
+#define UART_CR_TX_DIS (1 << 5)
+#define UART_CR_TX_EN (1 << 4)
+#define UART_CR_RX_DIS (1 << 3)
+#define UART_CR_RX_EN (1 << 2)
+
+#define UART_IER(base) __REG32(base + 0x08)
+#define UART_IDR(base) __REG32(base + 0x0C)
+#define UART_ISR(base) __REG32(base + 0x14)
+
+#define UART_IXR_DIS_MASK 0x00003FFF
+#define UART_IXR_TX_NFULL (1 << 11)
+#define UART_IXR_TX_TRIG (1 << 10)
+#define UART_IXR_RX_OVR (1 << 5)
+#define UART_IXR_TX_FULL (1 << 4)
+#define UART_IXR_TX_EMPTY (1 << 3)
+#define UART_IXR_RX_FULL (1 << 2)
+#define UART_IXR_RX_EMPTY (1 << 1)
+#define UART_IXR_RX_TRIG (1 << 0)
+
+#define UART_RX_TRIG_LVL(hw_base) __REG32(hw_base + 0x20)
+#define UART_TX_TRIG_LVL(hw_base) __REG32(hw_base + 0x44)
+#define UART_TRIG_LVL_MASK 0x0000003F
+#define UART_TRIG_LVL (1 << 0)
+
+#define UART_SR(base) __REG32(base + 0x2C)
+#define UART_SR_TXFULL (1 << 4)
+#define UART_SR_RXFULL (1 << 1)
+
+#define UART_FIFO(base) __REG32(base + 0x30)
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__DRV_UART_H*/
diff --git a/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h b/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h
new file mode 100644
index 0000000000000000000000000000000000000000..7b877fb5a190825943b7b2057388186c5366095f
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/drivers/zynqmp_r5.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2020-2023, Chertsoft Development Team
+ *
+ * License-Identifier: MIT
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-05-03 lepustse the first version
+ */
+
+#ifndef __ZYNQMP_R5_H
+#define __ZYNQMP_R5_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __REG32(x) (*((volatile unsigned int *)(x)))
+#define __REG16(x) (*((volatile unsigned short *)(x)))
+
+/*
+ * Peripheral addresses
+ */
+#define ZYNQMP_UART0_BASE 0xFF000000UL
+#define ZYNQMP_TTC0_BASE 0xFF110000UL
+#define ZYNQMP_TTC1_BASE 0xFF120000UL
+#define ZYNQMP_TTC2_BASE 0xFF130000UL
+#define ZYNQMP_TTC3_BASE 0xFF140000UL
+
+#define ZYNQMP_GIC_DIST_BASE 0xF9000000UL
+#define ZYNQMP_GIC_CPU_BASE 0xF9001000UL
+
+/*
+ * Zynqmp on-board gic irq source
+ */
+#define IRQ_ZYNQMP_GIC_START (32 + 8)
+
+#define IRQ_UART_0 (IRQ_ZYNQMP_GIC_START + 13UL)
+#define IRQ_TTC0_0 (IRQ_ZYNQMP_GIC_START + 28UL)
+#define IRQ_TTC0_1 (IRQ_ZYNQMP_GIC_START + 29UL)
+#define IRQ_TTC0_2 (IRQ_ZYNQMP_GIC_START + 30UL)
+#define IRQ_TTC1_0 (IRQ_ZYNQMP_GIC_START + 31UL)
+
+#define IRQ_ZYNQMP_MAX_NR 187UL
+
+/* number of interrupts on board */
+#define ARM_GIC_NR_IRQS IRQ_ZYNQMP_MAX_NR
+/* only one GIC available */
+#define ARM_GIC_MAX_NR 1
+
+#define GIC_ACK_INTID_MASK 0x3FF
+
+#define MAX_HANDLERS IRQ_ZYNQMP_MAX_NR
+
+#define GIC_IRQ_START 0
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ZYNQMP_R5_H*/
diff --git a/bsp/qemu-zynqmp-r5/link.ld b/bsp/qemu-zynqmp-r5/link.ld
new file mode 100644
index 0000000000000000000000000000000000000000..0220092b32ba84f998288c885268a926c321a63e
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/link.ld
@@ -0,0 +1,124 @@
+MEMORY
+{
+ psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000 /* 256KB */
+ psu_qspi_linear_0_MEM_0 : ORIGIN = 0xC0000000, LENGTH = 0x20000000 /* 512MB */
+ psu_r5_0_atcm_MEM_0 : ORIGIN = 0x0, LENGTH = 0x10000 /* 64KB */
+ psu_r5_0_btcm_MEM_0 : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64KB */
+ psu_r5_ddr_0_MEM_0 : ORIGIN = 0x100000, LENGTH = 0x7FE00000
+ psu_r5_tcm_ram_0_MEM_0 : ORIGIN = 0x0, LENGTH = 0x40000 /* 256KB */
+}
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+
+ENTRY(_reset)
+
+SECTIONS
+{
+
+ .vectors :
+ {
+ KEEP (*(.vectors))
+ *(.text.isr)
+ } > psu_r5_0_atcm_MEM_0
+
+ __text_start = .;
+ .text :
+ {
+ *(.text)
+ *(.text.*)
+
+ /* section information for utest */
+ . = ALIGN(4);
+ __rt_utest_tc_tab_start = .;
+ KEEP(*(UtestTcTab))
+ __rt_utest_tc_tab_end = .;
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+
+ /* section information for var export */
+ . = ALIGN(4);
+ __ve_table_start = .;
+ KEEP(*(SORT(*.VarExpTab.*)))
+ __ve_table_end = .;
+
+ /* section information for modules */
+ . = ALIGN(4);
+ __rtmsymtab_start = .;
+ KEEP(*(RTMSymTab))
+ __rtmsymtab_end = .;
+
+ /* section information for initialization */
+ . = ALIGN(4);
+ __rt_init_start = .;
+ KEEP(*(SORT(.rti_fn*)))
+ __rt_init_end = .;
+ } > psu_r5_ddr_0_MEM_0 = 0
+ __text_end = .;
+
+ __exidx_start = .;
+ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > psu_r5_ddr_0_MEM_0
+ __exidx_end = .;
+
+ __rodata_start = .;
+ .rodata : { *(.rodata) *(.rodata.*) } > psu_r5_ddr_0_MEM_0
+ __rodata_end = .;
+
+ . = ALIGN(4);
+ .ctors :
+ {
+ PROVIDE(__ctors_start__ = .);
+ /* new GCC version uses .init_array */
+ KEEP(*(SORT(.init_array.*)))
+ KEEP(*(.init_array))
+ PROVIDE(__ctors_end__ = .);
+ } > psu_r5_ddr_0_MEM_0
+
+ .dtors :
+ {
+ PROVIDE(__dtors_start__ = .);
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array))
+ PROVIDE(__dtors_end__ = .);
+ } > psu_r5_ddr_0_MEM_0
+
+ . = ALIGN(8);
+ __data_start = .;
+ .data :
+ {
+ *(.data)
+ *(.data.*)
+ } > psu_r5_ddr_0_MEM_0
+ __data_end = .;
+
+ . = ALIGN(4);
+ __bss_start = .;
+ .bss :
+ {
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ } > psu_r5_ddr_0_MEM_0
+ . = ALIGN(4);
+ __bss_end = .;
+
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+
+ _end = .;
+}
diff --git a/bsp/qemu-zynqmp-r5/makefile.targets b/bsp/qemu-zynqmp-r5/makefile.targets
new file mode 100644
index 0000000000000000000000000000000000000000..a00129bd90590dcf655a0e6c5ac8f530e7b5c383
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/makefile.targets
@@ -0,0 +1,4 @@
+clean2:
+ -$(RM) $(CC_DEPS)$(C++_DEPS)$(C_UPPER_DEPS)$(CXX_DEPS)$(SECONDARY_FLASH)$(SECONDARY_SIZE)$(ASM_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(CPP_DEPS)
+ -$(RM) $(OBJS) *.elf
+ -@echo ' '
\ No newline at end of file
diff --git a/bsp/qemu-zynqmp-r5/qemu-nographic.sh b/bsp/qemu-zynqmp-r5/qemu-nographic.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4b2767ab48f2b1c4137ef9a768b5a94bebd3c812
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/qemu-nographic.sh
@@ -0,0 +1,9 @@
+$1 --version
+$1\
+ -machine arm-generic-fdt\
+ -serial stdio\
+ -device loader,file=rtthread.elf,cpu-num=4\
+ -device loader,addr=0xff5e023c,data=0x80008fde,data-len=4\
+ -device loader,addr=0xff9a0000,data=0x80000218,data-len=4\
+ -hw-dtb zcu102-arm.dtb\
+ -display none
diff --git a/bsp/qemu-zynqmp-r5/rtconfig.h b/bsp/qemu-zynqmp-r5/rtconfig.h
new file mode 100644
index 0000000000000000000000000000000000000000..1c138957b8d42326a5e5fff30bafbc2a14b70221
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/rtconfig.h
@@ -0,0 +1,273 @@
+#ifndef RT_CONFIG_H__
+#define RT_CONFIG_H__
+
+/* Automatically generated file; DO NOT EDIT. */
+/* RT-Thread Project Configuration */
+
+/* RT-Thread Kernel */
+
+#define RT_NAME_MAX 8
+#define RT_ALIGN_SIZE 8
+#define RT_THREAD_PRIORITY_256
+#define RT_THREAD_PRIORITY_MAX 256
+#define RT_TICK_PER_SECOND 100
+#define RT_USING_OVERFLOW_CHECK
+#define RT_USING_HOOK
+#define RT_HOOK_USING_FUNC_PTR
+#define RT_USING_IDLE_HOOK
+#define RT_IDLE_HOOK_LIST_SIZE 4
+#define IDLE_THREAD_STACK_SIZE 4096
+#define RT_USING_TIMER_SOFT
+#define RT_TIMER_THREAD_PRIO 4
+#define RT_TIMER_THREAD_STACK_SIZE 1024
+
+/* kservice optimization */
+
+#define RT_DEBUG
+#define RT_DEBUG_COLOR
+
+/* Inter-Thread communication */
+
+#define RT_USING_SEMAPHORE
+#define RT_USING_MUTEX
+#define RT_USING_EVENT
+#define RT_USING_MAILBOX
+#define RT_USING_MESSAGEQUEUE
+
+/* Memory Management */
+
+#define RT_USING_MEMPOOL
+#define RT_USING_SMALL_MEM
+#define RT_USING_MEMHEAP
+#define RT_MEMHEAP_FAST_MODE
+#define RT_USING_SMALL_MEM_AS_HEAP
+#define RT_USING_MEMTRACE
+#define RT_USING_HEAP
+
+/* Kernel Device Object */
+
+#define RT_USING_DEVICE
+#define RT_USING_DEVICE_OPS
+#define RT_USING_INTERRUPT_INFO
+#define RT_USING_CONSOLE
+#define RT_CONSOLEBUF_SIZE 256
+#define RT_CONSOLE_DEVICE_NAME "uart0"
+#define RT_VER_NUM 0x50001
+#define RT_USING_CACHE
+
+/* RT-Thread Components */
+
+#define RT_USING_COMPONENTS_INIT
+#define RT_USING_USER_MAIN
+#define RT_MAIN_THREAD_STACK_SIZE 2048
+#define RT_MAIN_THREAD_PRIORITY 10
+#define RT_USING_MSH
+#define RT_USING_FINSH
+#define FINSH_USING_MSH
+#define FINSH_THREAD_NAME "tshell"
+#define FINSH_THREAD_PRIORITY 20
+#define FINSH_THREAD_STACK_SIZE 4096
+#define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 10
+#define FINSH_USING_SYMTAB
+#define FINSH_CMD_SIZE 256
+#define MSH_USING_BUILT_IN_COMMANDS
+#define FINSH_USING_DESCRIPTION
+#define FINSH_ARG_MAX 10
+
+/* DFS: device virtual file system */
+
+#define RT_USING_DFS
+#define DFS_USING_POSIX
+#define DFS_USING_WORKDIR
+#define DFS_FD_MAX 32
+#define RT_USING_DFS_V1
+#define DFS_FILESYSTEMS_MAX 8
+#define DFS_FILESYSTEM_TYPES_MAX 8
+#define RT_USING_DFS_ELMFAT
+
+/* elm-chan's FatFs, Generic FAT Filesystem Module */
+
+#define RT_DFS_ELM_CODE_PAGE 437
+#define RT_DFS_ELM_WORD_ACCESS
+#define RT_DFS_ELM_USE_LFN_3
+#define RT_DFS_ELM_USE_LFN 3
+#define RT_DFS_ELM_LFN_UNICODE_0
+#define RT_DFS_ELM_LFN_UNICODE 0
+#define RT_DFS_ELM_MAX_LFN 255
+#define RT_DFS_ELM_DRIVES 2
+#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096
+#define RT_DFS_ELM_REENTRANT
+#define RT_DFS_ELM_MUTEX_TIMEOUT 3000
+#define RT_USING_DFS_DEVFS
+#define RT_USING_DFS_ROMFS
+#define RT_USING_DFS_TMPFS
+
+/* Device Drivers */
+
+#define RT_USING_DEVICE_IPC
+#define RT_UNAMED_PIPE_NUMBER 64
+#define RT_USING_SYSTEM_WORKQUEUE
+#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
+#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
+#define RT_USING_SERIAL
+#define RT_USING_SERIAL_V1
+#define RT_SERIAL_USING_DMA
+#define RT_SERIAL_RB_BUFSZ 64
+
+/* Using USB */
+
+
+/* C/C++ and POSIX layer */
+
+#define RT_LIBC_DEFAULT_TIMEZONE 8
+
+/* POSIX (Portable Operating System Interface) layer */
+
+#define RT_USING_POSIX_FS
+#define RT_USING_POSIX_DEVIO
+#define RT_USING_POSIX_STDIO
+#define RT_USING_POSIX_POLL
+#define RT_USING_POSIX_SELECT
+#define RT_USING_POSIX_TERMIOS
+#define RT_USING_POSIX_AIO
+#define RT_USING_POSIX_DELAY
+#define RT_USING_POSIX_CLOCK
+#define RT_USING_POSIX_TIMER
+
+/* Interprocess Communication (IPC) */
+
+#define RT_USING_POSIX_PIPE
+#define RT_USING_POSIX_PIPE_SIZE 512
+#define RT_USING_POSIX_MESSAGE_QUEUE
+#define RT_USING_POSIX_MESSAGE_SEMAPHORE
+
+/* Socket is in the 'Network' category */
+
+
+/* Network */
+
+
+/* Utilities */
+
+#define RT_USING_ADT
+
+/* RT-Thread Utestcases */
+
+
+/* RT-Thread online packages */
+
+/* IoT - internet of things */
+
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+
+/* Wiced WiFi */
+
+
+/* IoT Cloud */
+
+
+/* security packages */
+
+
+/* language packages */
+
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+
+/* XML: Extensible Markup Language */
+
+
+/* multimedia packages */
+
+/* LVGL: powerful and easy-to-use embedded GUI library */
+
+
+/* u8g2: a monochrome graphic library */
+
+
+/* PainterEngine: A cross-platform graphics application framework written in C language */
+
+
+/* tools packages */
+
+
+/* system packages */
+
+/* enhanced kernel services */
+
+
+/* acceleration: Assembly language or algorithmic acceleration packages */
+
+
+/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
+
+
+/* Micrium: Micrium software products porting for RT-Thread */
+
+
+/* peripheral libraries and drivers */
+
+
+/* Kendryte SDK */
+
+
+/* AI packages */
+
+
+/* miscellaneous packages */
+
+/* project laboratory */
+
+/* samples: kernel and components samples */
+
+
+/* entertainment: terminal games and other interesting software packages */
+
+
+/* Arduino libraries */
+
+
+/* Projects */
+
+
+/* Sensors */
+
+
+/* Display */
+
+
+/* Timing */
+
+
+/* Data Processing */
+
+
+/* Data Storage */
+
+/* Communication */
+
+
+/* Device Control */
+
+
+/* Other */
+
+/* Signal IO */
+
+
+/* Uncategorized */
+
+/* Hardware Drivers Config */
+
+#define SOC_ZYNQMP_R5
+
+/* On-Chip Peripheral Drivers */
+
+#define BSP_USING_UART0
+
+#endif
diff --git a/bsp/qemu-zynqmp-r5/rtconfig.py b/bsp/qemu-zynqmp-r5/rtconfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..82d4394cc35d48f260237008f2e06886e0339032
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/rtconfig.py
@@ -0,0 +1,54 @@
+import os
+
+# toolchains options
+ARCH ='arm'
+CPU ='cortex-r5'
+CROSS_TOOL ='gcc'
+
+if os.getenv('RTT_ROOT'):
+ RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+ RTT_ROOT = r'../../..'
+
+if os.getenv('RTT_CC'):
+ CROSS_TOOL = os.getenv('RTT_CC')
+
+PLATFORM = 'gcc'
+EXEC_PATH = r'/usr/bin'
+
+BUILD = 'debug'
+
+if os.getenv('RTT_EXEC_PATH'):
+ EXEC_PATH = os.getenv('RTT_EXEC_PATH')
+
+if PLATFORM == 'gcc':
+ # toolchains
+ # PREFIX = 'arm-none-eabi-'
+ PREFIX = os.getenv('RTT_CC_PREFIX') or 'arm-none-eabi-'
+ CC = PREFIX + 'gcc'
+ CXX = PREFIX + 'g++'
+ AS = PREFIX + 'gcc'
+ AR = PREFIX + 'ar'
+ LINK = PREFIX + 'gcc'
+ TARGET_EXT = 'elf'
+ SIZE = PREFIX + 'size'
+ OBJDUMP = PREFIX + 'objdump'
+ OBJCPY = PREFIX + 'objcopy'
+
+ DEVICE = ' -march=armv7-r -mtune=cortex-r5'
+ CFLAGS = DEVICE + ' -Wall -Wno-cpp'
+ AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -D__ASSEMBLY__'
+ LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,system_vectors -T link.ld'
+ CPATH = ''
+ LPATH = ''
+
+ if BUILD == 'debug':
+ CFLAGS += ' -O0 -gdwarf-2'
+ AFLAGS += ' -gdwarf-2'
+ else:
+ CFLAGS += ' -O2'
+
+ CXXFLAGS = CFLAGS
+
+DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n'
+POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
diff --git a/bsp/qemu-zynqmp-r5/rtthread.elf.dump b/bsp/qemu-zynqmp-r5/rtthread.elf.dump
new file mode 100644
index 0000000000000000000000000000000000000000..eb32707893e3786fa97684c0d4e7321730836aad
--- /dev/null
+++ b/bsp/qemu-zynqmp-r5/rtthread.elf.dump
@@ -0,0 +1,67489 @@
+
+rtthread.elf: file format elf32-littlearm
+
+
+Disassembly of section .vectors:
+
+00000000 :
+ 0: e59ff018 ldr pc, [pc, #24] ; 20 <_vector_reset>
+ 4: e59ff018 ldr pc, [pc, #24] ; 24 <_vector_undef>
+ 8: e59ff018 ldr pc, [pc, #24] ; 28 <_vector_swi>
+ c: e59ff018 ldr pc, [pc, #24] ; 2c <_vector_pabt>
+ 10: e59ff018 ldr pc, [pc, #24] ; 30 <_vector_dabt>
+ 14: e59ff018 ldr pc, [pc, #24] ; 34 <_vector_resv>
+ 18: e59ff018 ldr pc, [pc, #24] ; 38 <_vector_irq>
+ 1c: e59ff018 ldr pc, [pc, #24] ; 3c <_vector_fiq>
+
+00000020 <_vector_reset>:
+ 20: 0013c158 .word 0x0013c158
+
+00000024 <_vector_undef>:
+ 24: 00000040 .word 0x00000040
+
+00000028 <_vector_swi>:
+ 28: 00000044 .word 0x00000044
+
+0000002c <_vector_pabt>:
+ 2c: 00000048 .word 0x00000048
+
+00000030 <_vector_dabt>:
+ 30: 0000004c .word 0x0000004c
+
+00000034 <_vector_resv>:
+ 34: 00000050 .word 0x00000050
+
+00000038 <_vector_irq>:
+ 38: 00000054 .word 0x00000054
+
+0000003c <_vector_fiq>:
+ 3c: 000000e4 .word 0x000000e4
+
+00000040 :
+ 40: eafffffe b 40
+
+00000044 :
+ 44: eafffffe b 44
+
+00000048 :
+ 48: eafffffe b 48
+
+0000004c :
+ 4c: eafffffe b 4c
+
+00000050 :
+ 50: eafffffe b 50
+
+00000054 :
+ 54: eafffffe b 54
+ 58: e24ee004 sub lr, lr, #4
+ 5c: e92d5fff push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr}
+ 60: eb04acdb bl 12b3d4
+ 64: eb04935b bl 124dd8
+ 68: eb04acf5 bl 12b444
+ 6c: e59fe074 ldr lr, [pc, #116] ; e8
+ 70: e59e0000 ldr r0, [lr]
+ 74: e3a01001 mov r1, #1
+ 78: e1500001 cmp r0, r1
+ 7c: 0a000000 beq 84
+ 80: e8fd9fff ldm sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, pc}^
+
+00000084 :
+ 84: e3a01000 mov r1, #0
+ 88: e58e1000 str r1, [lr]
+ 8c: e1a0000d mov r0, sp
+ 90: e14f1000 mrs r1, SPSR
+ 94: e28dd038 add sp, sp, #56 ; 0x38
+ 98: e321f0d3 msr CPSR_c, #211 ; 0xd3
+ 9c: e5902034 ldr r2, [r0, #52] ; 0x34
+ a0: e92d0004 stmfd sp!, {r2}
+ a4: e92d4000 stmfd sp!, {lr}
+ a8: e2800010 add r0, r0, #16
+ ac: e8901ff0 ldm r0, {r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ b0: e92d1ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, ip}
+ b4: e91000f0 ldmdb r0, {r4, r5, r6, r7}
+ b8: e92d00f0 push {r4, r5, r6, r7}
+ bc: e92d0002 stmfd sp!, {r1}
+ c0: e59fe024 ldr lr, [pc, #36] ; ec
+ c4: e59ee000 ldr lr, [lr]
+ c8: e58ed000 str sp, [lr]
+ cc: e59fe01c ldr lr, [pc, #28] ; f0
+ d0: e59ee000 ldr lr, [lr]
+ d4: e59ed000 ldr sp, [lr]
+ d8: e8bd4000 ldmfd sp!, {lr}
+ dc: e16ff00e msr SPSR_fsxc, lr
+ e0: e8fddfff ldm sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}^
+
+000000e4 :
+ e4: eafffffe b e4
+ e8: 001426e4 .word 0x001426e4
+ ec: 001426dc .word 0x001426dc
+ f0: 001426e0 .word 0x001426e0
+
+Disassembly of section .text:
+
+00100000 :
+ 100000: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100004: e28db000 add fp, sp, #0
+ 100008: e24dd014 sub sp, sp, #20
+ 10000c: e50b0008 str r0, [fp, #-8]
+ 100010: e50b100c str r1, [fp, #-12]
+ 100014: e50b2010 str r2, [fp, #-16]
+ 100018: e3a03000 mov r3, #0
+ 10001c: e1a00003 mov r0, r3
+ 100020: e28bd000 add sp, fp, #0
+ 100024: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100028: e12fff1e bx lr
+
+0010002c :
+ 10002c: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100030: e28db000 add fp, sp, #0
+ 100034: e24dd00c sub sp, sp, #12
+ 100038: e50b0008 str r0, [fp, #-8]
+ 10003c: e50b100c str r1, [fp, #-12]
+ 100040: e51b300c ldr r3, [fp, #-12]
+ 100044: e3a02c02 mov r2, #512 ; 0x200
+ 100048: e5832000 str r2, [r3]
+ 10004c: e51b300c ldr r3, [fp, #-12]
+ 100050: e3a02802 mov r2, #131072 ; 0x20000
+ 100054: e5832004 str r2, [r3, #4]
+ 100058: e51b300c ldr r3, [fp, #-12]
+ 10005c: e5932004 ldr r2, [r3, #4]
+ 100060: e51b300c ldr r3, [fp, #-12]
+ 100064: e5832008 str r2, [r3, #8]
+ 100068: e51b300c ldr r3, [fp, #-12]
+ 10006c: e5932008 ldr r2, [r3, #8]
+ 100070: e51b300c ldr r3, [fp, #-12]
+ 100074: e583200c str r2, [r3, #12]
+ 100078: e3a03000 mov r3, #0
+ 10007c: e1a00003 mov r0, r3
+ 100080: e28bd000 add sp, fp, #0
+ 100084: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100088: e12fff1e bx lr
+
+0010008c :
+ 10008c: e92d4800 push {fp, lr}
+ 100090: e28db004 add fp, sp, #4
+ 100094: e24dd018 sub sp, sp, #24
+ 100098: e50b0010 str r0, [fp, #-16]
+ 10009c: e50b1014 str r1, [fp, #-20] ; 0xffffffec
+ 1000a0: e50b2018 str r2, [fp, #-24] ; 0xffffffe8
+ 1000a4: e51b3010 ldr r3, [fp, #-16]
+ 1000a8: e3530000 cmp r3, #0
+ 1000ac: 1a000005 bne 1000c8
+ 1000b0: e3a0202f mov r2, #47 ; 0x2f
+ 1000b4: e30c1434 movw r1, #50228 ; 0xc434
+ 1000b8: e3401013 movt r1, #19
+ 1000bc: e30c0330 movw r0, #49968 ; 0xc330
+ 1000c0: e3400013 movt r0, #19
+ 1000c4: eb00b695 bl 12db20
+ 1000c8: e51b3010 ldr r3, [fp, #-16]
+ 1000cc: e5933010 ldr r3, [r3, #16]
+ 1000d0: e5933028 ldr r3, [r3, #40] ; 0x28
+ 1000d4: e50b3008 str r3, [fp, #-8]
+ 1000d8: e51b3008 ldr r3, [fp, #-8]
+ 1000dc: e3530000 cmp r3, #0
+ 1000e0: 1a000005 bne 1000fc
+ 1000e4: e3a02033 mov r2, #51 ; 0x33
+ 1000e8: e30c1434 movw r1, #50228 ; 0xc434
+ 1000ec: e3401013 movt r1, #19
+ 1000f0: e30c0340 movw r0, #49984 ; 0xc340
+ 1000f4: e3400013 movt r0, #19
+ 1000f8: eb00b688 bl 12db20
+ 1000fc: e51b3010 ldr r3, [fp, #-16]
+ 100100: e5933010 ldr r3, [r3, #16]
+ 100104: e5933004 ldr r3, [r3, #4]
+ 100108: e5d33000 ldrb r3, [r3]
+ 10010c: e353002f cmp r3, #47 ; 0x2f
+ 100110: 1a000008 bne 100138
+ 100114: e51b3010 ldr r3, [fp, #-16]
+ 100118: e5933010 ldr r3, [r3, #16]
+ 10011c: e5933004 ldr r3, [r3, #4]
+ 100120: e2833001 add r3, r3, #1
+ 100124: e5d33000 ldrb r3, [r3]
+ 100128: e3530000 cmp r3, #0
+ 10012c: 1a000001 bne 100138
+ 100130: e3e03005 mvn r3, #5
+ 100134: ea00000a b 100164
+ 100138: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8
+ 10013c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec
+ 100140: e51b0008 ldr r0, [fp, #-8]
+ 100144: eb0096ed bl 125d00
+ 100148: e50b000c str r0, [fp, #-12]
+ 10014c: e51b300c ldr r3, [fp, #-12]
+ 100150: e3530000 cmp r3, #0
+ 100154: 1a000001 bne 100160
+ 100158: e3a03000 mov r3, #0
+ 10015c: ea000000 b 100164
+ 100160: e51b300c ldr r3, [fp, #-12]
+ 100164: e1a00003 mov r0, r3
+ 100168: e24bd004 sub sp, fp, #4
+ 10016c: e8bd8800 pop {fp, pc}
+
+00100170 :
+ 100170: e92d4800 push {fp, lr}
+ 100174: e28db004 add fp, sp, #4
+ 100178: e24dd018 sub sp, sp, #24
+ 10017c: e50b0010 str r0, [fp, #-16]
+ 100180: e50b1014 str r1, [fp, #-20] ; 0xffffffec
+ 100184: e50b2018 str r2, [fp, #-24] ; 0xffffffe8
+ 100188: e51b3010 ldr r3, [fp, #-16]
+ 10018c: e3530000 cmp r3, #0
+ 100190: 1a000005 bne 1001ac
+ 100194: e3a02045 mov r2, #69 ; 0x45
+ 100198: e30c1448 movw r1, #50248 ; 0xc448
+ 10019c: e3401013 movt r1, #19
+ 1001a0: e30c0330 movw r0, #49968 ; 0xc330
+ 1001a4: e3400013 movt r0, #19
+ 1001a8: eb00b65c bl 12db20
+ 1001ac: e51b3010 ldr r3, [fp, #-16]
+ 1001b0: e5933010 ldr r3, [r3, #16]
+ 1001b4: e5933028 ldr r3, [r3, #40] ; 0x28
+ 1001b8: e50b3008 str r3, [fp, #-8]
+ 1001bc: e51b3008 ldr r3, [fp, #-8]
+ 1001c0: e3530000 cmp r3, #0
+ 1001c4: 1a000005 bne 1001e0
+ 1001c8: e3a02049 mov r2, #73 ; 0x49
+ 1001cc: e30c1448 movw r1, #50248 ; 0xc448
+ 1001d0: e3401013 movt r1, #19
+ 1001d4: e30c0340 movw r0, #49984 ; 0xc340
+ 1001d8: e3400013 movt r0, #19
+ 1001dc: eb00b64f bl 12db20
+ 1001e0: e51b3010 ldr r3, [fp, #-16]
+ 1001e4: e5933010 ldr r3, [r3, #16]
+ 1001e8: e5933004 ldr r3, [r3, #4]
+ 1001ec: e5d33000 ldrb r3, [r3]
+ 1001f0: e353002f cmp r3, #47 ; 0x2f
+ 1001f4: 1a000008 bne 10021c
+ 1001f8: e51b3010 ldr r3, [fp, #-16]
+ 1001fc: e5933010 ldr r3, [r3, #16]
+ 100200: e5933004 ldr r3, [r3, #4]
+ 100204: e2833001 add r3, r3, #1
+ 100208: e5d33000 ldrb r3, [r3]
+ 10020c: e3530000 cmp r3, #0
+ 100210: 1a000001 bne 10021c
+ 100214: e3e03005 mvn r3, #5
+ 100218: ea00000d b 100254
+ 10021c: e51b3010 ldr r3, [fp, #-16]
+ 100220: e593100c ldr r1, [r3, #12]
+ 100224: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100228: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec
+ 10022c: e51b0008 ldr r0, [fp, #-8]
+ 100230: eb009640 bl 125b38
+ 100234: e50b000c str r0, [fp, #-12]
+ 100238: e51b3010 ldr r3, [fp, #-16]
+ 10023c: e593200c ldr r2, [r3, #12]
+ 100240: e51b300c ldr r3, [fp, #-12]
+ 100244: e0822003 add r2, r2, r3
+ 100248: e51b3010 ldr r3, [fp, #-16]
+ 10024c: e583200c str r2, [r3, #12]
+ 100250: e51b300c ldr r3, [fp, #-12]
+ 100254: e1a00003 mov r0, r3
+ 100258: e24bd004 sub sp, fp, #4
+ 10025c: e8bd8800 pop {fp, pc}
+
+00100260 :
+ 100260: e92d4800 push {fp, lr}
+ 100264: e28db004 add fp, sp, #4
+ 100268: e24dd018 sub sp, sp, #24
+ 10026c: e50b0010 str r0, [fp, #-16]
+ 100270: e50b1014 str r1, [fp, #-20] ; 0xffffffec
+ 100274: e50b2018 str r2, [fp, #-24] ; 0xffffffe8
+ 100278: e51b3010 ldr r3, [fp, #-16]
+ 10027c: e3530000 cmp r3, #0
+ 100280: 1a000005 bne 10029c
+ 100284: e3a0205a mov r2, #90 ; 0x5a
+ 100288: e30c145c movw r1, #50268 ; 0xc45c
+ 10028c: e3401013 movt r1, #19
+ 100290: e30c0330 movw r0, #49968 ; 0xc330
+ 100294: e3400013 movt r0, #19
+ 100298: eb00b620 bl 12db20
+ 10029c: e51b3010 ldr r3, [fp, #-16]
+ 1002a0: e5933010 ldr r3, [r3, #16]
+ 1002a4: e5933028 ldr r3, [r3, #40] ; 0x28
+ 1002a8: e50b3008 str r3, [fp, #-8]
+ 1002ac: e51b3008 ldr r3, [fp, #-8]
+ 1002b0: e3530000 cmp r3, #0
+ 1002b4: 1a000005 bne 1002d0
+ 1002b8: e3a0205e mov r2, #94 ; 0x5e
+ 1002bc: e30c145c movw r1, #50268 ; 0xc45c
+ 1002c0: e3401013 movt r1, #19
+ 1002c4: e30c0340 movw r0, #49984 ; 0xc340
+ 1002c8: e3400013 movt r0, #19
+ 1002cc: eb00b613 bl 12db20
+ 1002d0: e51b3010 ldr r3, [fp, #-16]
+ 1002d4: e5933010 ldr r3, [r3, #16]
+ 1002d8: e5933004 ldr r3, [r3, #4]
+ 1002dc: e5d33000 ldrb r3, [r3]
+ 1002e0: e353002f cmp r3, #47 ; 0x2f
+ 1002e4: 1a000008 bne 10030c
+ 1002e8: e51b3010 ldr r3, [fp, #-16]
+ 1002ec: e5933010 ldr r3, [r3, #16]
+ 1002f0: e5933004 ldr r3, [r3, #4]
+ 1002f4: e2833001 add r3, r3, #1
+ 1002f8: e5d33000 ldrb r3, [r3]
+ 1002fc: e3530000 cmp r3, #0
+ 100300: 1a000001 bne 10030c
+ 100304: e3e03005 mvn r3, #5
+ 100308: ea00000d b 100344
+ 10030c: e51b3010 ldr r3, [fp, #-16]
+ 100310: e593100c ldr r1, [r3, #12]
+ 100314: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100318: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec
+ 10031c: e51b0008 ldr r0, [fp, #-8]
+ 100320: eb00963d bl 125c1c
+ 100324: e50b000c str r0, [fp, #-12]
+ 100328: e51b3010 ldr r3, [fp, #-16]
+ 10032c: e593200c ldr r2, [r3, #12]
+ 100330: e51b300c ldr r3, [fp, #-12]
+ 100334: e0822003 add r2, r2, r3
+ 100338: e51b3010 ldr r3, [fp, #-16]
+ 10033c: e583200c str r2, [r3, #12]
+ 100340: e51b300c ldr r3, [fp, #-12]
+ 100344: e1a00003 mov r0, r3
+ 100348: e24bd004 sub sp, fp, #4
+ 10034c: e8bd8800 pop {fp, pc}
+
+00100350 :
+ 100350: e92d4800 push {fp, lr}
+ 100354: e28db004 add fp, sp, #4
+ 100358: e24dd018 sub sp, sp, #24
+ 10035c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8
+ 100360: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100364: e3530000 cmp r3, #0
+ 100368: 1a000005 bne 100384
+ 10036c: e3a0206f mov r2, #111 ; 0x6f
+ 100370: e30c1470 movw r1, #50288 ; 0xc470
+ 100374: e3401013 movt r1, #19
+ 100378: e30c0330 movw r0, #49968 ; 0xc330
+ 10037c: e3400013 movt r0, #19
+ 100380: eb00b5e6 bl 12db20
+ 100384: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100388: e5933010 ldr r3, [r3, #16]
+ 10038c: e593300c ldr r3, [r3, #12]
+ 100390: e3530000 cmp r3, #0
+ 100394: ca000005 bgt 1003b0
+ 100398: e3a02070 mov r2, #112 ; 0x70
+ 10039c: e30c1470 movw r1, #50288 ; 0xc470
+ 1003a0: e3401013 movt r1, #19
+ 1003a4: e30c0354 movw r0, #50004 ; 0xc354
+ 1003a8: e3400013 movt r0, #19
+ 1003ac: eb00b5db bl 12db20
+ 1003b0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1003b4: e5933010 ldr r3, [r3, #16]
+ 1003b8: e593300c ldr r3, [r3, #12]
+ 1003bc: e3530001 cmp r3, #1
+ 1003c0: da000001 ble 1003cc
+ 1003c4: e3a03000 mov r3, #0
+ 1003c8: ea00003c b 1004c0
+ 1003cc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1003d0: e5933010 ldr r3, [r3, #16]
+ 1003d4: e1d330b0 ldrh r3, [r3]
+ 1003d8: e3530002 cmp r3, #2
+ 1003dc: 1a00001d bne 100458
+ 1003e0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1003e4: e5933010 ldr r3, [r3, #16]
+ 1003e8: e5933004 ldr r3, [r3, #4]
+ 1003ec: e5d33000 ldrb r3, [r3]
+ 1003f0: e353002f cmp r3, #47 ; 0x2f
+ 1003f4: 1a000017 bne 100458
+ 1003f8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1003fc: e5933010 ldr r3, [r3, #16]
+ 100400: e5933004 ldr r3, [r3, #4]
+ 100404: e2833001 add r3, r3, #1
+ 100408: e5d33000 ldrb r3, [r3]
+ 10040c: e3530000 cmp r3, #0
+ 100410: 1a000010 bne 100458
+ 100414: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100418: e5933010 ldr r3, [r3, #16]
+ 10041c: e5933028 ldr r3, [r3, #40] ; 0x28
+ 100420: e50b3008 str r3, [fp, #-8]
+ 100424: e51b3008 ldr r3, [fp, #-8]
+ 100428: e3530000 cmp r3, #0
+ 10042c: 1a000005 bne 100448
+ 100430: e3a0207c mov r2, #124 ; 0x7c
+ 100434: e30c1470 movw r1, #50288 ; 0xc470
+ 100438: e3401013 movt r1, #19
+ 10043c: e30c0370 movw r0, #50032 ; 0xc370
+ 100440: e3400013 movt r0, #19
+ 100444: eb00b5b5 bl 12db20
+ 100448: e51b0008 ldr r0, [fp, #-8]
+ 10044c: eb00b4ec bl 12d804
+ 100450: e3a03000 mov r3, #0
+ 100454: ea000019 b 1004c0
+ 100458: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 10045c: e5933010 ldr r3, [r3, #16]
+ 100460: e5933028 ldr r3, [r3, #40] ; 0x28
+ 100464: e50b300c str r3, [fp, #-12]
+ 100468: e51b300c ldr r3, [fp, #-12]
+ 10046c: e3530000 cmp r3, #0
+ 100470: 1a000005 bne 10048c
+ 100474: e3a02085 mov r2, #133 ; 0x85
+ 100478: e30c1470 movw r1, #50288 ; 0xc470
+ 10047c: e3401013 movt r1, #19
+ 100480: e30c0340 movw r0, #49984 ; 0xc340
+ 100484: e3400013 movt r0, #19
+ 100488: eb00b5a4 bl 12db20
+ 10048c: e51b000c ldr r0, [fp, #-12]
+ 100490: eb009563 bl 125a24
+ 100494: e50b0010 str r0, [fp, #-16]
+ 100498: e51b3010 ldr r3, [fp, #-16]
+ 10049c: e3530000 cmp r3, #0
+ 1004a0: 1a000005 bne 1004bc
+ 1004a4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1004a8: e5933010 ldr r3, [r3, #16]
+ 1004ac: e3a02000 mov r2, #0
+ 1004b0: e5832028 str r2, [r3, #40] ; 0x28
+ 1004b4: e3a03000 mov r3, #0
+ 1004b8: ea000000 b 1004c0
+ 1004bc: e3e03004 mvn r3, #4
+ 1004c0: e1a00003 mov r0, r3
+ 1004c4: e24bd004 sub sp, fp, #4
+ 1004c8: e8bd8800 pop {fp, pc}
+
+001004cc :
+ 1004cc: e92d4800 push {fp, lr}
+ 1004d0: e28db004 add fp, sp, #4
+ 1004d4: e24dd028 sub sp, sp, #40 ; 0x28
+ 1004d8: e50b0028 str r0, [fp, #-40] ; 0xffffffd8
+ 1004dc: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1004e0: e5933010 ldr r3, [r3, #16]
+ 1004e4: e593300c ldr r3, [r3, #12]
+ 1004e8: e3530000 cmp r3, #0
+ 1004ec: ca000005 bgt 100508
+ 1004f0: e3a02098 mov r2, #152 ; 0x98
+ 1004f4: e30c1484 movw r1, #50308 ; 0xc484
+ 1004f8: e3401013 movt r1, #19
+ 1004fc: e30c0354 movw r0, #50004 ; 0xc354
+ 100500: e3400013 movt r0, #19
+ 100504: eb00b585 bl 12db20
+ 100508: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 10050c: e5933010 ldr r3, [r3, #16]
+ 100510: e593300c ldr r3, [r3, #12]
+ 100514: e3530001 cmp r3, #1
+ 100518: da000004 ble 100530
+ 10051c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100520: e3a02000 mov r2, #0
+ 100524: e583200c str r2, [r3, #12]
+ 100528: e3a03000 mov r3, #0
+ 10052c: ea0000bc b 100824
+ 100530: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100534: e5933010 ldr r3, [r3, #16]
+ 100538: e5933004 ldr r3, [r3, #4]
+ 10053c: e5d33000 ldrb r3, [r3]
+ 100540: e353002f cmp r3, #47 ; 0x2f
+ 100544: 1a00006b bne 1006f8
+ 100548: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 10054c: e5933010 ldr r3, [r3, #16]
+ 100550: e5933004 ldr r3, [r3, #4]
+ 100554: e2833001 add r3, r3, #1
+ 100558: e5d33000 ldrb r3, [r3]
+ 10055c: e3530000 cmp r3, #0
+ 100560: 1a000064 bne 1006f8
+ 100564: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100568: e5933004 ldr r3, [r3, #4]
+ 10056c: e2033602 and r3, r3, #2097152 ; 0x200000
+ 100570: e3530000 cmp r3, #0
+ 100574: 0a00005f beq 1006f8
+ 100578: e3a03000 mov r3, #0
+ 10057c: e50b300c str r3, [fp, #-12]
+ 100580: eb00c5c8 bl 131ca8
+ 100584: e3a00009 mov r0, #9
+ 100588: eb00c0ec bl 130940
+ 10058c: e50b0010 str r0, [fp, #-16]
+ 100590: e51b3010 ldr r3, [fp, #-16]
+ 100594: e3530000 cmp r3, #0
+ 100598: 1a000005 bne 1005b4
+ 10059c: e3a020ad mov r2, #173 ; 0xad
+ 1005a0: e30c1484 movw r1, #50308 ; 0xc484
+ 1005a4: e3401013 movt r1, #19
+ 1005a8: e30c0388 movw r0, #50056 ; 0xc388
+ 1005ac: e3400013 movt r0, #19
+ 1005b0: eb00b55a bl 12db20
+ 1005b4: e51b3010 ldr r3, [fp, #-16]
+ 1005b8: e5933004 ldr r3, [r3, #4]
+ 1005bc: e50b3008 str r3, [fp, #-8]
+ 1005c0: ea000005 b 1005dc
+ 1005c4: e51b300c ldr r3, [fp, #-12]
+ 1005c8: e2833001 add r3, r3, #1
+ 1005cc: e50b300c str r3, [fp, #-12]
+ 1005d0: e51b3008 ldr r3, [fp, #-8]
+ 1005d4: e5933000 ldr r3, [r3]
+ 1005d8: e50b3008 str r3, [fp, #-8]
+ 1005dc: e51b3010 ldr r3, [fp, #-16]
+ 1005e0: e2833004 add r3, r3, #4
+ 1005e4: e51b2008 ldr r2, [fp, #-8]
+ 1005e8: e1520003 cmp r2, r3
+ 1005ec: 1afffff4 bne 1005c4
+ 1005f0: eb00c5c0 bl 131cf8
+ 1005f4: e51b300c ldr r3, [fp, #-12]
+ 1005f8: e2833002 add r3, r3, #2
+ 1005fc: e1a03103 lsl r3, r3, #2
+ 100600: e1a00003 mov r0, r3
+ 100604: eb00b432 bl 12d6d4
+ 100608: e50b0014 str r0, [fp, #-20] ; 0xffffffec
+ 10060c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100610: e3530000 cmp r3, #0
+ 100614: 0a000031 beq 1006e0
+ 100618: eb00c5a2 bl 131ca8
+ 10061c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100620: e2832008 add r2, r3, #8
+ 100624: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100628: e5832000 str r2, [r3]
+ 10062c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100630: e3a02000 mov r2, #0
+ 100634: e1c320b4 strh r2, [r3, #4]
+ 100638: e51b300c ldr r3, [fp, #-12]
+ 10063c: e6ff2073 uxth r2, r3
+ 100640: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100644: e1c320b6 strh r2, [r3, #6]
+ 100648: e3a03000 mov r3, #0
+ 10064c: e50b300c str r3, [fp, #-12]
+ 100650: e51b3010 ldr r3, [fp, #-16]
+ 100654: e5933004 ldr r3, [r3, #4]
+ 100658: e50b3008 str r3, [fp, #-8]
+ 10065c: ea000019 b 1006c8
+ 100660: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100664: e1d330b6 ldrh r3, [r3, #6]
+ 100668: e1a02003 mov r2, r3
+ 10066c: e51b300c ldr r3, [fp, #-12]
+ 100670: e1530002 cmp r3, r2
+ 100674: 1a000003 bne 100688
+ 100678: e30c03a0 movw r0, #50080 ; 0xc3a0
+ 10067c: e3400013 movt r0, #19
+ 100680: eb00b354 bl 12d3d8
+ 100684: ea000014 b 1006dc
+ 100688: e51b3008 ldr r3, [fp, #-8]
+ 10068c: e243300c sub r3, r3, #12
+ 100690: e50b3018 str r3, [fp, #-24] ; 0xffffffe8
+ 100694: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100698: e5932000 ldr r2, [r3]
+ 10069c: e51b300c ldr r3, [fp, #-12]
+ 1006a0: e1a03103 lsl r3, r3, #2
+ 1006a4: e0823003 add r3, r2, r3
+ 1006a8: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8
+ 1006ac: e5832000 str r2, [r3]
+ 1006b0: e51b300c ldr r3, [fp, #-12]
+ 1006b4: e2833001 add r3, r3, #1
+ 1006b8: e50b300c str r3, [fp, #-12]
+ 1006bc: e51b3008 ldr r3, [fp, #-8]
+ 1006c0: e5933000 ldr r3, [r3]
+ 1006c4: e50b3008 str r3, [fp, #-8]
+ 1006c8: e51b3010 ldr r3, [fp, #-16]
+ 1006cc: e2833004 add r3, r3, #4
+ 1006d0: e51b2008 ldr r2, [fp, #-8]
+ 1006d4: e1520003 cmp r2, r3
+ 1006d8: 1affffe0 bne 100660
+ 1006dc: eb00c585 bl 131cf8
+ 1006e0: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1006e4: e5933010 ldr r3, [r3, #16]
+ 1006e8: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec
+ 1006ec: e5832028 str r2, [r3, #40] ; 0x28
+ 1006f0: e3a03000 mov r3, #0
+ 1006f4: ea00004a b 100824
+ 1006f8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1006fc: e5933010 ldr r3, [r3, #16]
+ 100700: e5933004 ldr r3, [r3, #4]
+ 100704: e2833001 add r3, r3, #1
+ 100708: e1a00003 mov r0, r3
+ 10070c: eb0093b8 bl 1255f4
+ 100710: e50b001c str r0, [fp, #-28] ; 0xffffffe4
+ 100714: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4
+ 100718: e3530000 cmp r3, #0
+ 10071c: 1a000001 bne 100728
+ 100720: e3e03012 mvn r3, #18
+ 100724: ea00003e b 100824
+ 100728: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4
+ 10072c: e5933028 ldr r3, [r3, #40] ; 0x28
+ 100730: e3530000 cmp r3, #0
+ 100734: 0a000021 beq 1007c0
+ 100738: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 10073c: e5933010 ldr r3, [r3, #16]
+ 100740: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4
+ 100744: e5922028 ldr r2, [r2, #40] ; 0x28
+ 100748: e583201c str r2, [r3, #28]
+ 10074c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100750: e5933010 ldr r3, [r3, #16]
+ 100754: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4
+ 100758: e5832028 str r2, [r3, #40] ; 0x28
+ 10075c: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100760: e5933010 ldr r3, [r3, #16]
+ 100764: e593301c ldr r3, [r3, #28]
+ 100768: e5933000 ldr r3, [r3]
+ 10076c: e3530000 cmp r3, #0
+ 100770: 0a000026 beq 100810
+ 100774: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100778: e5933010 ldr r3, [r3, #16]
+ 10077c: e593301c ldr r3, [r3, #28]
+ 100780: e5933000 ldr r3, [r3]
+ 100784: e51b0028 ldr r0, [fp, #-40] ; 0xffffffd8
+ 100788: e12fff33 blx r3
+ 10078c: e50b0020 str r0, [fp, #-32] ; 0xffffffe0
+ 100790: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 100794: e3530000 cmp r3, #0
+ 100798: 0a000002 beq 1007a8
+ 10079c: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 1007a0: e3730006 cmn r3, #6
+ 1007a4: 1a000019 bne 100810
+ 1007a8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1007ac: e5933010 ldr r3, [r3, #16]
+ 1007b0: e3a02004 mov r2, #4
+ 1007b4: e1c320b0 strh r2, [r3]
+ 1007b8: e3a03000 mov r3, #0
+ 1007bc: ea000018 b 100824
+ 1007c0: e3a01003 mov r1, #3
+ 1007c4: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4
+ 1007c8: eb009416 bl 125828
+ 1007cc: e50b0020 str r0, [fp, #-32] ; 0xffffffe0
+ 1007d0: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 1007d4: e3530000 cmp r3, #0
+ 1007d8: 0a000002 beq 1007e8
+ 1007dc: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 1007e0: e3730006 cmn r3, #6
+ 1007e4: 1a000009 bne 100810
+ 1007e8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1007ec: e5933010 ldr r3, [r3, #16]
+ 1007f0: e51b201c ldr r2, [fp, #-28] ; 0xffffffe4
+ 1007f4: e5832028 str r2, [r3, #40] ; 0x28
+ 1007f8: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 1007fc: e5933010 ldr r3, [r3, #16]
+ 100800: e3a02004 mov r2, #4
+ 100804: e1c320b0 strh r2, [r3]
+ 100808: e3a03000 mov r3, #0
+ 10080c: ea000004 b 100824
+ 100810: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 100814: e5933010 ldr r3, [r3, #16]
+ 100818: e3a02000 mov r2, #0
+ 10081c: e5832028 str r2, [r3, #40] ; 0x28
+ 100820: e3e03004 mvn r3, #4
+ 100824: e1a00003 mov r0, r3
+ 100828: e24bd004 sub sp, fp, #4
+ 10082c: e8bd8800 pop {fp, pc}
+
+00100830 :
+ 100830: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100834: e28db000 add fp, sp, #0
+ 100838: e24dd00c sub sp, sp, #12
+ 10083c: e50b0008 str r0, [fp, #-8]
+ 100840: e50b100c str r1, [fp, #-12]
+ 100844: e3a03000 mov r3, #0
+ 100848: e1a00003 mov r0, r3
+ 10084c: e28bd000 add sp, fp, #0
+ 100850: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100854: e12fff1e bx lr
+
+00100858 :
+ 100858: e92d4800 push {fp, lr}
+ 10085c: e28db004 add fp, sp, #4
+ 100860: e24dd018 sub sp, sp, #24
+ 100864: e50b0010 str r0, [fp, #-16]
+ 100868: e50b1014 str r1, [fp, #-20] ; 0xffffffec
+ 10086c: e50b2018 str r2, [fp, #-24] ; 0xffffffe8
+ 100870: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100874: e5d33000 ldrb r3, [r3]
+ 100878: e353002f cmp r3, #47 ; 0x2f
+ 10087c: 1a00001e bne 1008fc
+ 100880: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100884: e2833001 add r3, r3, #1
+ 100888: e5d33000 ldrb r3, [r3]
+ 10088c: e3530000 cmp r3, #0
+ 100890: 1a000019 bne 1008fc
+ 100894: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100898: e3a02000 mov r2, #0
+ 10089c: e1c320b0 strh r2, [r3]
+ 1008a0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1008a4: e30821b6 movw r2, #33206 ; 0x81b6
+ 1008a8: e5832004 str r2, [r3, #4]
+ 1008ac: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1008b0: e5933004 ldr r3, [r3, #4]
+ 1008b4: e3c32902 bic r2, r3, #32768 ; 0x8000
+ 1008b8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1008bc: e5832004 str r2, [r3, #4]
+ 1008c0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1008c4: e5933004 ldr r3, [r3, #4]
+ 1008c8: e3833901 orr r3, r3, #16384 ; 0x4000
+ 1008cc: e3833049 orr r3, r3, #73 ; 0x49
+ 1008d0: e51b2018 ldr r2, [fp, #-24] ; 0xffffffe8
+ 1008d4: e5823004 str r3, [r2, #4]
+ 1008d8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1008dc: e3a02000 mov r2, #0
+ 1008e0: e5832010 str r2, [r3, #16]
+ 1008e4: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8
+ 1008e8: e3a02000 mov r2, #0
+ 1008ec: e3a03000 mov r3, #0
+ 1008f0: e1c122f8 strd r2, [r1, #40] ; 0x28
+ 1008f4: e3a03000 mov r3, #0
+ 1008f8: ea000044 b 100a10
+ 1008fc: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100900: e2833001 add r3, r3, #1
+ 100904: e1a00003 mov r0, r3
+ 100908: eb009339 bl 1255f4
+ 10090c: e50b0008 str r0, [fp, #-8]
+ 100910: e51b3008 ldr r3, [fp, #-8]
+ 100914: e3530000 cmp r3, #0
+ 100918: 0a00003b beq 100a0c
+ 10091c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100920: e3a02000 mov r2, #0
+ 100924: e1c320b0 strh r2, [r3]
+ 100928: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 10092c: e30021b6 movw r2, #438 ; 0x1b6
+ 100930: e5832004 str r2, [r3, #4]
+ 100934: e51b3008 ldr r3, [fp, #-8]
+ 100938: e5d33014 ldrb r3, [r3, #20]
+ 10093c: e3530000 cmp r3, #0
+ 100940: 1a000005 bne 10095c
+ 100944: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100948: e5933004 ldr r3, [r3, #4]
+ 10094c: e3832a02 orr r2, r3, #8192 ; 0x2000
+ 100950: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100954: e5832004 str r2, [r3, #4]
+ 100958: ea000022 b 1009e8
+ 10095c: e51b3008 ldr r3, [fp, #-8]
+ 100960: e5d33014 ldrb r3, [r3, #20]
+ 100964: e3530001 cmp r3, #1
+ 100968: 1a000005 bne 100984
+ 10096c: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100970: e5933004 ldr r3, [r3, #4]
+ 100974: e3832a06 orr r2, r3, #24576 ; 0x6000
+ 100978: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 10097c: e5832004 str r2, [r3, #4]
+ 100980: ea000018 b 1009e8
+ 100984: e51b3008 ldr r3, [fp, #-8]
+ 100988: e5d33014 ldrb r3, [r3, #20]
+ 10098c: e3530010 cmp r3, #16
+ 100990: 1a000005 bne 1009ac
+ 100994: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100998: e5933004 ldr r3, [r3, #4]
+ 10099c: e3832a01 orr r2, r3, #4096 ; 0x1000
+ 1009a0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009a4: e5832004 str r2, [r3, #4]
+ 1009a8: ea00000e b 1009e8
+ 1009ac: e51b3008 ldr r3, [fp, #-8]
+ 1009b0: e5d33014 ldrb r3, [r3, #20]
+ 1009b4: e353001e cmp r3, #30
+ 1009b8: 1a000005 bne 1009d4
+ 1009bc: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009c0: e5933004 ldr r3, [r3, #4]
+ 1009c4: e3832901 orr r2, r3, #16384 ; 0x4000
+ 1009c8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009cc: e5832004 str r2, [r3, #4]
+ 1009d0: ea000004 b 1009e8
+ 1009d4: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009d8: e5933004 ldr r3, [r3, #4]
+ 1009dc: e3832902 orr r2, r3, #32768 ; 0x8000
+ 1009e0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009e4: e5832004 str r2, [r3, #4]
+ 1009e8: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 1009ec: e3a02000 mov r2, #0
+ 1009f0: e5832010 str r2, [r3, #16]
+ 1009f4: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8
+ 1009f8: e3a02000 mov r2, #0
+ 1009fc: e3a03000 mov r3, #0
+ 100a00: e1c122f8 strd r2, [r1, #40] ; 0x28
+ 100a04: e3a03000 mov r3, #0
+ 100a08: ea000000 b 100a10
+ 100a0c: e3e03001 mvn r3, #1
+ 100a10: e1a00003 mov r0, r3
+ 100a14: e24bd004 sub sp, fp, #4
+ 100a18: e8bd8800 pop {fp, pc}
+
+00100a1c :
+ 100a1c: e92d4800 push {fp, lr}
+ 100a20: e28db004 add fp, sp, #4
+ 100a24: e24dd020 sub sp, sp, #32
+ 100a28: e50b0018 str r0, [fp, #-24] ; 0xffffffe8
+ 100a2c: e50b101c str r1, [fp, #-28] ; 0xffffffe4
+ 100a30: e50b2020 str r2, [fp, #-32] ; 0xffffffe0
+ 100a34: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100a38: e5933010 ldr r3, [r3, #16]
+ 100a3c: e5933028 ldr r3, [r3, #40] ; 0x28
+ 100a40: e50b300c str r3, [fp, #-12]
+ 100a44: e51b300c ldr r3, [fp, #-12]
+ 100a48: e3530000 cmp r3, #0
+ 100a4c: 1a000005 bne 100a68
+ 100a50: e3002159 movw r2, #345 ; 0x159
+ 100a54: e30c1498 movw r1, #50328 ; 0xc498
+ 100a58: e3401013 movt r1, #19
+ 100a5c: e30c0370 movw r0, #50032 ; 0xc370
+ 100a60: e3400013 movt r0, #19
+ 100a64: eb00b42d bl 12db20
+ 100a68: e51b2020 ldr r2, [fp, #-32] ; 0xffffffe0
+ 100a6c: e30c30fd movw r3, #49405 ; 0xc0fd
+ 100a70: e34f3c0f movt r3, #64527 ; 0xfc0f
+ 100a74: e0832293 umull r2, r3, r3, r2
+ 100a78: e1a03423 lsr r3, r3, #8
+ 100a7c: e50b3020 str r3, [fp, #-32] ; 0xffffffe0
+ 100a80: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 100a84: e3530000 cmp r3, #0
+ 100a88: 1a000001 bne 100a94
+ 100a8c: e3e03015 mvn r3, #21
+ 100a90: ea00004a b 100bc0
+ 100a94: e3a03000 mov r3, #0
+ 100a98: e50b3008 str r3, [fp, #-8]
+ 100a9c: ea00002d b 100b58
+ 100aa0: e51b300c ldr r3, [fp, #-12]
+ 100aa4: e5932000 ldr r2, [r3]
+ 100aa8: e51b300c ldr r3, [fp, #-12]
+ 100aac: e1d330b4 ldrh r3, [r3, #4]
+ 100ab0: e1a01003 mov r1, r3
+ 100ab4: e51b3008 ldr r3, [fp, #-8]
+ 100ab8: e0813003 add r3, r1, r3
+ 100abc: e1a03103 lsl r3, r3, #2
+ 100ac0: e0823003 add r3, r2, r3
+ 100ac4: e5933000 ldr r3, [r3]
+ 100ac8: e50b3010 str r3, [fp, #-16]
+ 100acc: e51b2008 ldr r2, [fp, #-8]
+ 100ad0: e1a03002 mov r3, r2
+ 100ad4: e1a03303 lsl r3, r3, #6
+ 100ad8: e0833002 add r3, r3, r2
+ 100adc: e1a03103 lsl r3, r3, #2
+ 100ae0: e1a02003 mov r2, r3
+ 100ae4: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4
+ 100ae8: e0833002 add r3, r3, r2
+ 100aec: e50b3014 str r3, [fp, #-20] ; 0xffffffec
+ 100af0: e51b3010 ldr r3, [fp, #-16]
+ 100af4: e5d33014 ldrb r3, [r3, #20]
+ 100af8: e353001e cmp r3, #30
+ 100afc: 1a000003 bne 100b10
+ 100b00: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100b04: e3a02002 mov r2, #2
+ 100b08: e5c32000 strb r2, [r3]
+ 100b0c: ea000002 b 100b1c
+ 100b10: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100b14: e3a02001 mov r2, #1
+ 100b18: e5c32000 strb r2, [r3]
+ 100b1c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100b20: e3a02008 mov r2, #8
+ 100b24: e5c32001 strb r2, [r3, #1]
+ 100b28: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100b2c: e3a02f41 mov r2, #260 ; 0x104
+ 100b30: e1c320b2 strh r2, [r3, #2]
+ 100b34: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100b38: e2833004 add r3, r3, #4
+ 100b3c: e51b1010 ldr r1, [fp, #-16]
+ 100b40: e3a02008 mov r2, #8
+ 100b44: e1a00003 mov r0, r3
+ 100b48: eb00ac7e bl 12bd48
+ 100b4c: e51b3008 ldr r3, [fp, #-8]
+ 100b50: e2833001 add r3, r3, #1
+ 100b54: e50b3008 str r3, [fp, #-8]
+ 100b58: e51b2008 ldr r2, [fp, #-8]
+ 100b5c: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 100b60: e1520003 cmp r2, r3
+ 100b64: 2a000008 bcs 100b8c
+ 100b68: e51b300c ldr r3, [fp, #-12]
+ 100b6c: e1d330b4 ldrh r3, [r3, #4]
+ 100b70: e1a02003 mov r2, r3
+ 100b74: e51b3008 ldr r3, [fp, #-8]
+ 100b78: e0823003 add r3, r2, r3
+ 100b7c: e51b200c ldr r2, [fp, #-12]
+ 100b80: e1d220b6 ldrh r2, [r2, #6]
+ 100b84: e1530002 cmp r3, r2
+ 100b88: 3affffc4 bcc 100aa0
+ 100b8c: e51b300c ldr r3, [fp, #-12]
+ 100b90: e1d320b4 ldrh r2, [r3, #4]
+ 100b94: e51b3008 ldr r3, [fp, #-8]
+ 100b98: e6ff3073 uxth r3, r3
+ 100b9c: e0823003 add r3, r2, r3
+ 100ba0: e6ff2073 uxth r2, r3
+ 100ba4: e51b300c ldr r3, [fp, #-12]
+ 100ba8: e1c320b4 strh r2, [r3, #4]
+ 100bac: e51b2008 ldr r2, [fp, #-8]
+ 100bb0: e1a03002 mov r3, r2
+ 100bb4: e1a03303 lsl r3, r3, #6
+ 100bb8: e0833002 add r3, r3, r2
+ 100bbc: e1a03103 lsl r3, r3, #2
+ 100bc0: e1a00003 mov r0, r3
+ 100bc4: e24bd004 sub sp, fp, #4
+ 100bc8: e8bd8800 pop {fp, pc}
+
+00100bcc :
+ 100bcc: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100bd0: e28db000 add fp, sp, #0
+ 100bd4: e24dd014 sub sp, sp, #20
+ 100bd8: e50b0010 str r0, [fp, #-16]
+ 100bdc: e50b1014 str r1, [fp, #-20] ; 0xffffffec
+ 100be0: e3a03000 mov r3, #0
+ 100be4: e50b3008 str r3, [fp, #-8]
+ 100be8: e51b3008 ldr r3, [fp, #-8]
+ 100bec: e1a00003 mov r0, r3
+ 100bf0: e28bd000 add sp, fp, #0
+ 100bf4: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100bf8: e12fff1e bx lr
+
+00100bfc :
+ 100bfc: e92d4800 push {fp, lr}
+ 100c00: e28db004 add fp, sp, #4
+ 100c04: e30c040c movw r0, #50188 ; 0xc40c
+ 100c08: e3400013 movt r0, #19
+ 100c0c: eb003fef bl 110bd0
+ 100c10: e3a03000 mov r3, #0
+ 100c14: e1a00003 mov r0, r3
+ 100c18: e8bd8800 pop {fp, pc}
+
+00100c1c :
+ 100c1c: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100c20: e28db000 add fp, sp, #0
+ 100c24: e24dd014 sub sp, sp, #20
+ 100c28: e1a03000 mov r3, r0
+ 100c2c: e54b300d strb r3, [fp, #-13]
+ 100c30: e3a03000 mov r3, #0
+ 100c34: e50b3008 str r3, [fp, #-8]
+ 100c38: e55b300d ldrb r3, [fp, #-13]
+ 100c3c: e353000e cmp r3, #14
+ 100c40: 979ff103 ldrls pc, [pc, r3, lsl #2]
+ 100c44: ea000020 b 100ccc
+ 100c48: 00100cd8 .word 0x00100cd8
+ 100c4c: 00100ca8 .word 0x00100ca8
+ 100c50: 00100ca8 .word 0x00100ca8
+ 100c54: 00100ca8 .word 0x00100ca8
+ 100c58: 00100c84 .word 0x00100c84
+ 100c5c: 00100c84 .word 0x00100c84
+ 100c60: 00100c90 .word 0x00100c90
+ 100c64: 00100cb4 .word 0x00100cb4
+ 100c68: 00100c9c .word 0x00100c9c
+ 100c6c: 00100c9c .word 0x00100c9c
+ 100c70: 00100cb4 .word 0x00100cb4
+ 100c74: 00100ccc .word 0x00100ccc
+ 100c78: 00100ccc .word 0x00100ccc
+ 100c7c: 00100c84 .word 0x00100c84
+ 100c80: 00100cc0 .word 0x00100cc0
+ 100c84: e3e03001 mvn r3, #1
+ 100c88: e50b3008 str r3, [fp, #-8]
+ 100c8c: ea000012 b 100cdc
+ 100c90: e3e03015 mvn r3, #21
+ 100c94: e50b3008 str r3, [fp, #-8]
+ 100c98: ea00000f b 100cdc
+ 100c9c: e3e03010 mvn r3, #16
+ 100ca0: e50b3008 str r3, [fp, #-8]
+ 100ca4: ea00000c b 100cdc
+ 100ca8: e3e03004 mvn r3, #4
+ 100cac: e50b3008 str r3, [fp, #-8]
+ 100cb0: ea000009 b 100cdc
+ 100cb4: e3e0301d mvn r3, #29
+ 100cb8: e50b3008 str r3, [fp, #-8]
+ 100cbc: ea000006 b 100cdc
+ 100cc0: e3e03015 mvn r3, #21
+ 100cc4: e50b3008 str r3, [fp, #-8]
+ 100cc8: ea000003 b 100cdc
+ 100ccc: e3e03000 mvn r3, #0
+ 100cd0: e50b3008 str r3, [fp, #-8]
+ 100cd4: ea000000 b 100cdc
+ 100cd8: e320f000 nop {0}
+ 100cdc: e51b3008 ldr r3, [fp, #-8]
+ 100ce0: e1a00003 mov r0, r3
+ 100ce4: e28bd000 add sp, fp, #0
+ 100ce8: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100cec: e12fff1e bx lr
+
+00100cf0 :
+ 100cf0: e52db004 push {fp} ; (str fp, [sp, #-4]!)
+ 100cf4: e28db000 add fp, sp, #0
+ 100cf8: e24dd014 sub sp, sp, #20
+ 100cfc: e50b0010 str r0, [fp, #-16]
+ 100d00: e3a03000 mov r3, #0
+ 100d04: e50b3008 str r3, [fp, #-8]
+ 100d08: ea00000b b 100d3c
+ 100d0c: e3013f88 movw r3, #8072 ; 0x1f88
+ 100d10: e3403014 movt r3, #20
+ 100d14: e51b2008 ldr r2, [fp, #-8]
+ 100d18: e7933102 ldr r3, [r3, r2, lsl #2]
+ 100d1c: e51b2010 ldr r2, [fp, #-16]
+ 100d20: e1520003 cmp r2, r3
+ 100d24: 1a000001 bne 100d30
+ 100d28: e51b3008 ldr r3, [fp, #-8]
+ 100d2c: ea000006 b 100d4c
+ 100d30: e51b3008 ldr r3, [fp, #-8]
+ 100d34: e2833001 add r3, r3, #1
+ 100d38: e50b3008 str r3, [fp, #-8]
+ 100d3c: e51b3008 ldr r3, [fp, #-8]
+ 100d40: e3530001 cmp r3, #1
+ 100d44: dafffff0 ble 100d0c
+ 100d48: e3e03000 mvn r3, #0
+ 100d4c: e1a00003 mov r0, r3
+ 100d50: e28bd000 add sp, fp, #0
+ 100d54: e49db004 pop {fp} ; (ldr fp, [sp], #4)
+ 100d58: e12fff1e bx lr
+
+00100d5c :
+ 100d5c: e92d4800 push {fp, lr}
+ 100d60: e28db004 add fp, sp, #4
+ 100d64: e24dd040 sub sp, sp, #64 ; 0x40
+ 100d68: e50b0038 str r0, [fp, #-56] ; 0xffffffc8
+ 100d6c: e50b103c str r1, [fp, #-60] ; 0xffffffc4
+ 100d70: e50b2040 str r2, [fp, #-64] ; 0xffffffc0
+ 100d74: e30c24fc movw r2, #50428 ; 0xc4fc
+ 100d78: e3402013 movt r2, #19
+ 100d7c: e24b3028 sub r3, fp, #40 ; 0x28
+ 100d80: e5922000 ldr r2, [r2]
+ 100d84: e1c320b0 strh r2, [r3]
+ 100d88: e2833002 add r3, r3, #2
+ 100d8c: e1a02822 lsr r2, r2, #16
+ 100d90: e5c32000 strb r2, [r3]
+ 100d94: e3a00000 mov r0, #0
+ 100d98: ebffffd4 bl 100cf0
+ 100d9c: e50b000c str r0, [fp, #-12]
+ 100da0: e51b300c ldr r3, [fp, #-12]
+ 100da4: e3730001 cmn r3, #1
+ 100da8: 1a000001 bne 100db4
+ 100dac: e3e03001 mvn r3, #1
+ 100db0: ea00006f b 100f74
+ 100db4: e51b300c ldr r3, [fp, #-12]
+ 100db8: e6ef3073 uxtb r3, r3
+ 100dbc: e2833030 add r3, r3, #48 ; 0x30
+ 100dc0: e6ef3073 uxtb r3, r3
+ 100dc4: e54b3028 strb r3, [fp, #-40] ; 0xffffffd8
+ 100dc8: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8
+ 100dcc: e5931000 ldr r1, [r3]
+ 100dd0: e3013f88 movw r3, #8072 ; 0x1f88
+ 100dd4: e3403014 movt r3, #20
+ 100dd8: e51b200c ldr r2, [fp, #-12]
+ 100ddc: e7831102 str r1, [r3, r2, lsl #2]
+ 100de0: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8
+ 100de4: e5933000 ldr r3, [r3]
+ 100de8: e24b2024 sub r2, fp, #36 ; 0x24
+ 100dec: e3001201 movw r1, #513 ; 0x201
+ 100df0: e1a00003 mov r0, r3
+ 100df4: eb0093c1 bl 125d00
+ 100df8: e1a03000 mov r3, r0
+ 100dfc: e3530000 cmp r3, #0
+ 100e00: 1a000007 bne 100e24
+ 100e04: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4
+ 100e08: e3530a01 cmp r3, #4096 ; 0x1000
+ 100e0c: 9a000004 bls 100e24
+ 100e10: e30c04b0 movw r0, #50352 ; 0xc4b0
+ 100e14: e3400013 movt r0, #19
+ 100e18: eb00b16e bl 12d3d8
+ 100e1c: e3e03015 mvn r3, #21
+ 100e20: ea000053 b 100f74
+ 100e24: e301003c movw r0, #4156 ; 0x103c
+ 100e28: eb00b229 bl 12d6d4
+ 100e2c: e50b0010 str r0, [fp, #-16]
+ 100e30: e51b3010 ldr r3, [fp, #-16]
+ 100e34: e3530000 cmp r3, #0
+ 100e38: 1a000006 bne 100e58
+ 100e3c: e3013f88 movw r3, #8072 ; 0x1f88
+ 100e40: e3403014 movt r3, #20
+ 100e44: e51b200c ldr r2, [fp, #-12]
+ 100e48: e3a01000 mov r1, #0
+ 100e4c: e7831102 str r1, [r3, r2, lsl #2]
+ 100e50: e3e0300b mvn r3, #11
+ 100e54: ea000046 b 100f74
+ 100e58: e24b3028 sub r3, fp, #40 ; 0x28
+ 100e5c: e3a02001 mov r2, #1
+ 100e60: e1a01003 mov r1, r3
+ 100e64: e51b0010 ldr r0, [fp, #-16]
+ 100e68: eb0018a1 bl 1070f4
+ 100e6c: e1a03000 mov r3, r0
+ 100e70: e54b3005 strb r3, [fp, #-5]
+ 100e74: e55b3005 ldrb r3, [fp, #-5]
+ 100e78: e3530000 cmp r3, #0
+ 100e7c: 1a000029 bne 100f28
+ 100e80: e24b0030 sub r0, fp, #48 ; 0x30
+ 100e84: e51b300c ldr r3, [fp, #-12]
+ 100e88: e30c24f4 movw r2, #50420 ; 0xc4f4
+ 100e8c: e3402013 movt r2, #19
+ 100e90: e3a01008 mov r1, #8
+ 100e94: eb00b0bf bl 12d198
+ 100e98: e3a00030 mov r0, #48 ; 0x30
+ 100e9c: eb00b20c bl 12d6d4
+ 100ea0: e50b0014 str r0, [fp, #-20] ; 0xffffffec
+ 100ea4: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 100ea8: e3530000 cmp r3, #0
+ 100eac: 1a00000d bne 100ee8
+ 100eb0: e24b3028 sub r3, fp, #40 ; 0x28
+ 100eb4: e3a02001 mov r2, #1
+ 100eb8: e1a01003 mov r1, r3
+ 100ebc: e3a00000 mov r0, #0
+ 100ec0: eb00188b bl 1070f4
+ 100ec4: e3013f88 movw r3, #8072 ; 0x1f88
+ 100ec8: e3403014 movt r3, #20
+ 100ecc: e51b200c ldr r2, [fp, #-12]
+ 100ed0: e3a01000 mov r1, #0
+ 100ed4: e7831102 str r1, [r3, r2, lsl #2]
+ 100ed8: e51b0010 ldr r0, [fp, #-16]
+ 100edc: eb00b248 bl 12d804
+ 100ee0: e3e0300b mvn r3, #11
+ 100ee4: ea000022 b 100f74
+ 100ee8: e24b3030 sub r3, fp, #48 ; 0x30
+ 100eec: e1a01003 mov r1, r3
+ 100ef0: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 100ef4: eb00200b bl 108f28
+ 100ef8: e1a03000 mov r3, r0
+ 100efc: e54b3005 strb r3, [fp, #-5]
+ 100f00: e55b3005 ldrb r3, [fp, #-5]
+ 100f04: e3530000 cmp r3, #0
+ 100f08: 1a000008 bne 100f30
+ 100f0c: e51b3038 ldr r3, [fp, #-56] ; 0xffffffc8
+ 100f10: e51b2010 ldr r2, [fp, #-16]
+ 100f14: e583200c str r2, [r3, #12]
+ 100f18: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 100f1c: eb00b238 bl 12d804
+ 100f20: e3a03000 mov r3, #0
+ 100f24: ea000012 b 100f74
+ 100f28: e320f000 nop {0}
+ 100f2c: ea000000 b 100f34
+ 100f30: e320f000 nop {0}
+ 100f34: e24b3028 sub r3, fp, #40 ; 0x28
+ 100f38: e3a02001 mov r2, #1
+ 100f3c: e1a01003 mov r1, r3
+ 100f40: e3a00000 mov r0, #0
+ 100f44: eb00186a bl 1070f4
+ 100f48: e3013f88 movw r3, #8072 ; 0x1f88
+ 100f4c: e3403014 movt r3, #20
+ 100f50: e51b200c ldr r2, [fp, #-12]
+ 100f54: e3a01000 mov r1, #0
+ 100f58: e7831102 str r1, [r3, r2, lsl #2]
+ 100f5c: e51b0010 ldr r0, [fp, #-16]
+ 100f60: eb00b227 bl 12d804
+ 100f64: e55b3005 ldrb r3, [fp, #-5]
+ 100f68: e1a00003 mov r0, r3
+ 100f6c: ebffff2a bl 100c1c
+ 100f70: e1a03000 mov r3, r0
+ 100f74: e1a00003 mov r0, r3
+ 100f78: e24bd004 sub sp, fp, #4
+ 100f7c: e8bd8800 pop {fp, pc}
+
+00100f80 :
+ 100f80: e92d4800 push {fp, lr}
+ 100f84: e28db004 add fp, sp, #4
+ 100f88: e24dd018 sub sp, sp, #24
+ 100f8c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8
+ 100f90: e30c24fc movw r2, #50428 ; 0xc4fc
+ 100f94: e3402013 movt r2, #19
+ 100f98: e24b3010 sub r3, fp, #16
+ 100f9c: e5922000 ldr r2, [r2]
+ 100fa0: e1c320b0 strh r2, [r3]
+ 100fa4: e2833002 add r3, r3, #2
+ 100fa8: e1a02822 lsr r2, r2, #16
+ 100fac: e5c32000 strb r2, [r3]
+ 100fb0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100fb4: e593300c ldr r3, [r3, #12]
+ 100fb8: e50b3008 str r3, [fp, #-8]
+ 100fbc: e51b3008 ldr r3, [fp, #-8]
+ 100fc0: e3530000 cmp r3, #0
+ 100fc4: 1a000005 bne 100fe0
+ 100fc8: e3a020b6 mov r2, #182 ; 0xb6
+ 100fcc: e30c1614 movw r1, #50708 ; 0xc614
+ 100fd0: e3401013 movt r1, #19
+ 100fd4: e30c0500 movw r0, #50432 ; 0xc500
+ 100fd8: e3400013 movt r0, #19
+ 100fdc: eb00b2cf bl 12db20
+ 100fe0: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 100fe4: e5933000 ldr r3, [r3]
+ 100fe8: e1a00003 mov r0, r3
+ 100fec: ebffff3f bl 100cf0
+ 100ff0: e50b000c str r0, [fp, #-12]
+ 100ff4: e51b300c ldr r3, [fp, #-12]
+ 100ff8: e3730001 cmn r3, #1
+ 100ffc: 1a000001 bne 101008
+ 101000: e3e03001 mvn r3, #1
+ 101004: ea00001e b 101084
+ 101008: e51b300c ldr r3, [fp, #-12]
+ 10100c: e6ef3073 uxtb r3, r3
+ 101010: e2833030 add r3, r3, #48 ; 0x30
+ 101014: e6ef3073 uxtb r3, r3
+ 101018: e54b3010 strb r3, [fp, #-16]
+ 10101c: e24b3010 sub r3, fp, #16
+ 101020: e3a02000 mov r2, #0
+ 101024: e1a01003 mov r1, r3
+ 101028: e3a00000 mov r0, #0
+ 10102c: eb001830 bl 1070f4
+ 101030: e1a03000 mov r3, r0
+ 101034: e54b300d strb r3, [fp, #-13]
+ 101038: e55b300d ldrb r3, [fp, #-13]
+ 10103c: e3530000 cmp r3, #0
+ 101040: 0a000004 beq 101058
+ 101044: e55b300d ldrb r3, [fp, #-13]
+ 101048: e1a00003 mov r0, r3
+ 10104c: ebfffef2 bl 100c1c
+ 101050: e1a03000 mov r3, r0
+ 101054: ea00000a b 101084
+ 101058: e51b3018 ldr r3, [fp, #-24] ; 0xffffffe8
+ 10105c: e3a02000 mov r2, #0
+ 101060: e583200c str r2, [r3, #12]
+ 101064: e3013f88 movw r3, #8072 ; 0x1f88
+ 101068: e3403014 movt r3, #20
+ 10106c: e51b200c ldr r2, [fp, #-12]
+ 101070: e3a01000 mov r1, #0
+ 101074: e7831102 str r1, [r3, r2, lsl #2]
+ 101078: e51b0008 ldr r0, [fp, #-8]
+ 10107c: eb00b1e0 bl 12d804
+ 101080: e3a03000 mov r3, #0
+ 101084: e1a00003 mov r0, r3
+ 101088: e24bd004 sub sp, fp, #4
+ 10108c: e8bd8800 pop {fp, pc}
+
+00101090 :
+ 101090: e92d4800 push {fp, lr}
+ 101094: e28db004 add fp, sp, #4
+ 101098: e24dd030 sub sp, sp, #48 ; 0x30
+ 10109c: e50b0030 str r0, [fp, #-48] ; 0xffffffd0
+ 1010a0: e50b1034 str r1, [fp, #-52] ; 0xffffffcc
+ 1010a4: e3a03000 mov r3, #0
+ 1010a8: e50b3008 str r3, [fp, #-8]
+ 1010ac: e30c24fc movw r2, #50428 ; 0xc4fc
+ 1010b0: e3402013 movt r2, #19
+ 1010b4: e24b3018 sub r3, fp, #24
+ 1010b8: e5922000 ldr r2, [r2]
+ 1010bc: e1c320b0 strh r2, [r3]
+ 1010c0: e2833002 add r3, r3, #2
+ 1010c4: e1a02822 lsr r2, r2, #16
+ 1010c8: e5c32000 strb r2, [r3]
+ 1010cc: e3a00a01 mov r0, #4096 ; 0x1000
+ 1010d0: eb00b17f bl 12d6d4
+ 1010d4: e50b0014 str r0, [fp, #-20] ; 0xffffffec
+ 1010d8: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 1010dc: e3530000 cmp r3, #0
+ 1010e0: 1a000001 bne 1010ec
+ 1010e4: e3e0300b mvn r3, #11
+ 1010e8: ea000072 b 1012b8
+ 1010ec: e51b3030 ldr r3, [fp, #-48] ; 0xffffffd0
+ 1010f0: e3530000 cmp r3, #0
+ 1010f4: 1a000003 bne 101108
+ 1010f8: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 1010fc: eb00b1c0 bl 12d804
+ 101100: e3e03015 mvn r3, #21
+ 101104: ea00006b b 1012b8
+ 101108: e3a03000 mov r3, #0
+ 10110c: e50b300c str r3, [fp, #-12]
+ 101110: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0
+ 101114: ebfffef5 bl 100cf0
+ 101118: e50b0010 str r0, [fp, #-16]
+ 10111c: e51b3010 ldr r3, [fp, #-16]
+ 101120: e3730001 cmn r3, #1
+ 101124: 1a00002c bne 1011dc
+ 101128: e3a00000 mov r0, #0
+ 10112c: ebfffeef bl 100cf0
+ 101130: e50b0010 str r0, [fp, #-16]
+ 101134: e51b3010 ldr r3, [fp, #-16]
+ 101138: e3730001 cmn r3, #1
+ 10113c: 1a000006 bne 10115c
+ 101140: e30c0510 movw r0, #50448 ; 0xc510
+ 101144: e3400013 movt r0, #19
+ 101148: eb00b0a2 bl 12d3d8
+ 10114c: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 101150: eb00b1ab bl 12d804
+ 101154: e3e0301b mvn r3, #27
+ 101158: ea000056 b 1012b8
+ 10115c: e301003c movw r0, #4156 ; 0x103c
+ 101160: eb00b15b bl 12d6d4
+ 101164: e50b0008 str r0, [fp, #-8]
+ 101168: e51b3008 ldr r3, [fp, #-8]
+ 10116c: e3530000 cmp r3, #0
+ 101170: 1a000003 bne 101184
+ 101174: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 101178: eb00b1a1 bl 12d804
+ 10117c: e3e0300b mvn r3, #11
+ 101180: ea00004c b 1012b8
+ 101184: e3a03001 mov r3, #1
+ 101188: e50b300c str r3, [fp, #-12]
+ 10118c: e3013f88 movw r3, #8072 ; 0x1f88
+ 101190: e3403014 movt r3, #20
+ 101194: e51b2010 ldr r2, [fp, #-16]
+ 101198: e51b1030 ldr r1, [fp, #-48] ; 0xffffffd0
+ 10119c: e7831102 str r1, [r3, r2, lsl #2]
+ 1011a0: e3a01003 mov r1, #3
+ 1011a4: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0
+ 1011a8: eb00919e bl 125828
+ 1011ac: e51b3010 ldr r3, [fp, #-16]
+ 1011b0: e6ef3073 uxtb r3, r3
+ 1011b4: e2833030 add r3, r3, #48 ; 0x30
+ 1011b8: e6ef3073 uxtb r3, r3
+ 1011bc: e54b3018 strb r3, [fp, #-24] ; 0xffffffe8
+ 1011c0: e51b3010 ldr r3, [fp, #-16]
+ 1011c4: e6ef2073 uxtb r2, r3
+ 1011c8: e24b3018 sub r3, fp, #24
+ 1011cc: e1a01003 mov r1, r3
+ 1011d0: e51b0008 ldr r0, [fp, #-8]
+ 1011d4: eb0017c6 bl 1070f4
+ 1011d8: ea000004 b 1011f0
+ 1011dc: e51b3010 ldr r3, [fp, #-16]
+ 1011e0: e6ef3073 uxtb r3, r3
+ 1011e4: e2833030 add r3, r3, #48 ; 0x30
+ 1011e8: e6ef3073 uxtb r3, r3
+ 1011ec: e54b3018 strb r3, [fp, #-24] ; 0xffffffe8
+ 1011f0: e24b3028 sub r3, fp, #40 ; 0x28
+ 1011f4: e3a02010 mov r2, #16
+ 1011f8: e3a01000 mov r1, #0
+ 1011fc: e1a00003 mov r0, r3
+ 101200: eb00a937 bl 12b6e4
+ 101204: e3a0300f mov r3, #15
+ 101208: e54b3028 strb r3, [fp, #-40] ; 0xffffffd8
+ 10120c: e24b1028 sub r1, fp, #40 ; 0x28
+ 101210: e24b0018 sub r0, fp, #24
+ 101214: e3a03a01 mov r3, #4096 ; 0x1000
+ 101218: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec
+ 10121c: eb0024ed bl 10a5d8
+ 101220: e1a03000 mov r3, r0
+ 101224: e54b3015 strb r3, [fp, #-21] ; 0xffffffeb
+ 101228: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec
+ 10122c: eb00b174 bl 12d804
+ 101230: e3a03000 mov r3, #0
+ 101234: e50b3014 str r3, [fp, #-20] ; 0xffffffec
+ 101238: e51b300c ldr r3, [fp, #-12]
+ 10123c: e3530001 cmp r3, #1
+ 101240: 1a00000e bne 101280
+ 101244: e51b0008 ldr r0, [fp, #-8]
+ 101248: eb00b16d bl 12d804
+ 10124c: e51b3010 ldr r3, [fp, #-16]
+ 101250: e6ef2073 uxtb r2, r3
+ 101254: e24b3018 sub r3, fp, #24
+ 101258: e1a01003 mov r1, r3
+ 10125c: e3a00000 mov r0, #0
+ 101260: eb0017a3 bl 1070f4
+ 101264: e3013f88 movw r3, #8072 ; 0x1f88
+ 101268: e3403014 movt r3, #20
+ 10126c: e51b2010 ldr r2, [fp, #-16]
+ 101270: e3a01000 mov r1, #0
+ 101274: e7831102 str r1, [r3, r2, lsl #2]
+ 101278: e51b0030 ldr r0, [fp, #-48] ; 0xffffffd0
+ 10127c: eb0091e8 bl 125a24
+ 101280: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb
+ 101284: e3530000 cmp r3, #0
+ 101288: 0a000009 beq 1012b4
+ 10128c: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb
+ 101290: e1a01003 mov r1, r3
+ 101294: e30c0538 movw r0, #50488 ; 0xc538
+ 101298: e3400013 movt r0, #19
+ 10129c: eb00b04d bl 12d3d8
+ 1012a0: e55b3015 ldrb r3, [fp, #-21] ; 0xffffffeb
+ 1012a4: e1a00003 mov r0, r3
+ 1012a8: ebfffe5b bl 100c1c
+ 1012ac: e1a03000 mov r3, r0
+ 1012b0: ea000000 b 1012b8
+ 1012b4: e3a03000 mov r3, #0
+ 1012b8: e1a00003 mov r0, r3
+ 1012bc: e24bd004 sub sp, fp, #4
+ 1012c0: e8bd8800 pop {fp, pc}
+
+001012c4 :
+ 1012c4: e92d4800 push {fp, lr}
+ 1012c8: e28db004 add fp, sp, #4
+ 1012cc: e24dd020 sub sp, sp, #32
+ 1012d0: e50b0020 str r0, [fp, #-32] ; 0xffffffe0
+ 1012d4: e50b1024 str r1, [fp, #-36] ; 0xffffffdc
+ 1012d8: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 1012dc: e3530000 cmp r3, #0
+ 1012e0: 1a000005 bne 1012fc
+ 1012e4: e3002132 movw r2, #306 ; 0x132
+ 1012e8: e30c1624 movw r1, #50724 ; 0xc624
+ 1012ec: e3401013 movt r1, #19
+ 1012f0: e30c0554 movw r0, #50516 ; 0xc554
+ 1012f4: e3400013 movt r0, #19
+ 1012f8: eb00b208 bl 12db20
+ 1012fc: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc
+ 101300: e3530000 cmp r3, #0
+ 101304: 1a000005 bne 101320
+ 101308: e3002133 movw r2, #307 ; 0x133
+ 10130c: e30c1624 movw r1, #50724 ; 0xc624
+ 101310: e3401013 movt r1, #19
+ 101314: e30c0564 movw r0, #50532 ; 0xc564
+ 101318: e3400013 movt r0, #19
+ 10131c: eb00b1ff bl 12db20
+ 101320: e51b3020 ldr r3, [fp, #-32] ; 0xffffffe0
+ 101324: e593300c ldr r3, [r3, #12]
+ 101328: e50b3014 str r3, [fp, #-20] ; 0xffffffec
+ 10132c: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 101330: e5d33001 ldrb r3, [r3, #1]
+ 101334: e24b0018 sub r0, fp, #24
+ 101338: e30c2574 movw r2, #50548 ; 0xc574
+ 10133c: e3402013 movt r2, #19
+ 101340: e3a01004 mov r1, #4
+ 101344: eb00af93 bl 12d198
+ 101348: e24b2014 sub r2, fp, #20
+ 10134c: e24b101c sub r1, fp, #28
+ 101350: e24b3018 sub r3, fp, #24
+ 101354: e1a00003 mov r0, r3
+ 101358: eb00202a bl 109408
+ 10135c: e1a03000 mov r3, r0
+ 101360: e54b3005 strb r3, [fp, #-5]
+ 101364: e55b3005 ldrb r3, [fp, #-5]
+ 101368: e3530000 cmp r3, #0
+ 10136c: 0a000004 beq 101384
+ 101370: e55b3005 ldrb r3, [fp, #-5]
+ 101374: e1a00003 mov r0, r3
+ 101378: ebfffe27 bl 100c1c
+ 10137c: e1a03000 mov r3, r0
+ 101380: ea000018 b 1013e8
+ 101384: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 101388: e5933020 ldr r3, [r3, #32]
+ 10138c: e2433002 sub r3, r3, #2
+ 101390: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec
+ 101394: e1d220ba ldrh r2, [r2, #10]
+ 101398: e0030392 mul r3, r2, r3
+ 10139c: e50b300c str r3, [fp, #-12]
+ 1013a0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 1013a4: e1d330ba ldrh r3, [r3, #10]
+ 1013a8: e1a02003 mov r2, r3
+ 1013ac: e51b301c ldr r3, [fp, #-28] ; 0xffffffe4
+ 1013b0: e0030293 mul r3, r3, r2
+ 1013b4: e50b3010 str r3, [fp, #-16]
+ 1013b8: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc
+ 1013bc: e51b2010 ldr r2, [fp, #-16]
+ 1013c0: e5832008 str r2, [r3, #8]
+ 1013c4: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc
+ 1013c8: e51b200c ldr r2, [fp, #-12]
+ 1013cc: e5832004 str r2, [r3, #4]
+ 1013d0: e51b3014 ldr r3, [fp, #-20] ; 0xffffffec
+ 1013d4: e1d330bc ldrh r3, [r3, #12]
+ 1013d8: e1a02003 mov r2, r3
+ 1013dc: e51b3024 ldr r3, [fp, #-36] ; 0xffffffdc
+ 1013e0: e5832000 str r2, [r3]
+ 1013e4: e3a03000 mov r3, #0
+ 1013e8: e1a00003 mov r0, r3
+ 1013ec: e24bd004 sub sp, fp, #4
+ 1013f0: e8bd8800 pop {fp, pc}
+
+001013f4 :
+ 1013f4: e92d4800 push {fp, lr}
+ 1013f8: e28db004 add fp, sp, #4
+ 1013fc: e24dd030 sub sp, sp, #48 ; 0x30
+ 101400: e50b0028 str r0, [fp, #-40] ; 0xffffffd8
+ 101404: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 101408: e5933010 ldr r3, [r3, #16]
+ 10140c: e5933018 ldr r3, [r3, #24]
+ 101410: e50b300c str r3, [fp, #-12]
+ 101414: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 101418: e5933010 ldr r3, [r3, #16]
+ 10141c: e593300c ldr r3, [r3, #12]
+ 101420: e3530000 cmp r3, #0
+ 101424: ca000005 bgt 101440
+ 101428: e3002157 movw r2, #343 ; 0x157
+ 10142c: e30c1634 movw r1, #50740 ; 0xc634
+ 101430: e3401013 movt r1, #19
+ 101434: e30c0578 movw r0, #50552 ; 0xc578
+ 101438: e3400013 movt r0, #19
+ 10143c: eb00b1b7 bl 12db20
+ 101440: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 101444: e5933010 ldr r3, [r3, #16]
+ 101448: e593300c ldr r3, [r3, #12]
+ 10144c: e3530001 cmp r3, #1
+ 101450: da000010 ble 101498
+ 101454: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 101458: e5933010 ldr r3, [r3, #16]
+ 10145c: e1d330b0 ldrh r3, [r3]
+ 101460: e3530002 cmp r3, #2
+ 101464: 1a000006 bne 101484
+ 101468: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 10146c: e5933004 ldr r3, [r3, #4]
+ 101470: e2033602 and r3, r3, #2097152 ; 0x200000
+ 101474: e3530000 cmp r3, #0
+ 101478: 1a000001 bne 101484
+ 10147c: e3e03001 mvn r3, #1
+ 101480: ea0000c6 b 1017a0
+ 101484: e51b3028 ldr r3, [fp, #-40] ; 0xffffffd8
+ 101488: e3a02000 mov r2, #0
+ 10148c: e583200c str r2, [r3, #12]
+ 101490: e3a03000 mov r3, #0
+ 101494: ea0000c1 b 1017a0