diff --git a/Arduino_package/hardware/boards.txt b/Arduino_package/hardware/boards.txt index 2fa97ca3..6d7b40b9 100644 --- a/Arduino_package/hardware/boards.txt +++ b/Arduino_package/hardware/boards.txt @@ -367,3 +367,48 @@ Sparkfun_ThingPlus-NORA-W306.menu.UploadBaudrate.921600.upload.speed=921600 Sparkfun_ThingPlus-NORA-W306.menu.UploadBaudrate.1500000=1500000 Sparkfun_ThingPlus-NORA-W306.menu.UploadBaudrate.1500000.upload.speed=1500000 ############################################################## + +DataloggerIot.name=Datalogger series (RTL8720DF) + +DataloggerIot.build.tarch=cortex-m33 +DataloggerIot.build.mcu=RTL8720DF +DataloggerIot.build.f_cpu=200000000L +DataloggerIot.build.usb_product="Datalogger Iot" +DataloggerIot.build.board=AMEBA +DataloggerIot.build.core=ambd +DataloggerIot.build.extra_flags=-mthumb -DRTL8722DM -DBOARD_DATALOGGER_AMB26 {build.usb_flags} -DArduino_STD_PRINTF +DataloggerIot.build.ldscript=linker_scripts/gcc/amebad_img2_is_arduino.ld +DataloggerIot.build.variant=Datalogger_AMB26 + +DataloggerIot.upload.tool=ameba_d_tools +DataloggerIot.upload.protocol=usb_serial +DataloggerIot.upload.maximum_size=2097152 +DataloggerIot.upload.use_1200bps_touch=false +DataloggerIot.upload.wait_for_upload_port=false +DataloggerIot.upload.native_usb=false +DataloggerIot.upload.auto_mode=Disable +DataloggerIot.upload.erase_flash=Disable +DataloggerIot.upload.speed=921600 + +DataloggerIot.menu.EraseFlash.Disable=Disable +DataloggerIot.menu.EraseFlash.Disable.upload.erase_flash=Disable +DataloggerIot.menu.EraseFlash.Enable=Erase only +DataloggerIot.menu.EraseFlash.Enable.upload.erase_flash=Enable + +DataloggerIot.menu.AutoUploadMode.Disable=Disable +DataloggerIot.menu.AutoUploadMode.Disable.upload.auto_mode=Disable +DataloggerIot.menu.AutoUploadMode.Enable=Enable +DataloggerIot.menu.AutoUploadMode.Enable.upload.auto_mode=Enable + +DataloggerIot.menu.StdLibInit.Enable=Arduino_STD_PRINTF +DataloggerIot.menu.StdLibInit.Enable.build.extra_flags=-mthumb -DRTL8722DM -DBOARD_DATALOGGER_AMB26 {build.usb_flags} -DArduino_STD_PRINTF +DataloggerIot.menu.StdLibInit.Disable=Disable +DataloggerIot.menu.StdLibInit.Disable.build.extra_flags=-mthumb -DRTL8722DM -DBOARD_DATALOGGER_AMB26 {build.usb_flags} +DataloggerIot.menu.StdLibInit.Enable=Arduino_STD_PRINTF +DataloggerIot.menu.StdLibInit.Enable.build.extra_flags=-mthumb -DRTL8722DM -DBOARD_DATALOGGER_AMB26 {build.usb_flags} -DArduino_STD_PRINTF + +DataloggerIot.menu.UploadBaudrate.921600=921600 +DataloggerIot.menu.UploadBaudrate.921600.upload.speed=921600 +DataloggerIot.menu.UploadBaudrate.1500000=1500000 +DataloggerIot.menu.UploadBaudrate.1500000.upload.speed=1500000 +############################################################## diff --git a/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/amebad_img2_is_arduino.ld b/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/amebad_img2_is_arduino.ld new file mode 100644 index 00000000..cf7aadb0 --- /dev/null +++ b/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/amebad_img2_is_arduino.ld @@ -0,0 +1,221 @@ +ENTRY(Reset_Handler) + +INCLUDE "rom_symbol_ns.txt" + +MEMORY +{ + IROM (rx) : ORIGIN = 0x10100000, LENGTH = 0x1010A000 - 0x10100000 /* ROM: 40k */ + IROM_NS (rx) : ORIGIN = 0x1010A000, LENGTH = 0x10140000 - 0x1010A000 /* ROM: 216k */ + DROM_NS (rx) : ORIGIN = 0x101C0000, LENGTH = 0x101D4000 - 0x101C0000 /* ROM: 80k */ + DROM (rx) : ORIGIN = 0x101D4000, LENGTH = 0x101D8000 - 0x101D4000 /* ROM: 16k */ + ROMBSS_RAM_COM (rw) : ORIGIN = 0x10000000, LENGTH = 0x10001000 - 0x10000000 /* ROM BSS COMMON(S & NS both used) RAM: 4K */ + ROMBSS_RAM_NS (rw) : ORIGIN = 0x10001000, LENGTH = 0x10002000 - 0x10001000 /* ROM BSS NS RAM: 4K */ + RSVD_RAM_NS (rw) : ORIGIN = 0x10002000, LENGTH = 0x10004000 - 0x10002000 /* RSVD RAM: 8K */ + MSP_RAM_NS (rw) : ORIGIN = 0x10004000, LENGTH = 0x10005000 - 0x10004000 /* MSP_NS RAM: 4K */ + + BD_RAM_NS (rwx) : ORIGIN = 0x10005000, LENGTH = 0x1007C000 - 0x10005000 /* MAIN RAM NS: 456K */ + ROMBSS_RAM_S (rwx) : ORIGIN = 0x1007C000, LENGTH = 0x1007D000 - 0x1007C000 /* ROM BSS RAM S: 4K */ + BOOTLOADER_RAM_S (rwx) : ORIGIN = 0x1007D000, LENGTH = 0x1007F000 - 0x1007D000 /* BOOT Loader RAM: 8K */ + MSP_RAM_S (rwx) : ORIGIN = 0x1007F000, LENGTH = 0x10080000 - 0x1007F000 /* MSP_S RAM: 4k */ + EXTENTION_SRAM (rwx) : ORIGIN = 0x100E0000, LENGTH = 0x10100000 - 0x100E0000 /* EXTENTION SRAM: 128k */ + + PSRAM_NS (rwx) : ORIGIN = 0x02000000 + 0x20, LENGTH = 0x02400000 - 0x02000000 - 0x20 /* PSRAM_NS: 4M */ + + /* Flash */ + KM0_BOOT (rx) : ORIGIN = 0x08000000+0x20, LENGTH = 0x02000-0x20 /* XIPBOOT: 8k, 32 Bytes resvd for header*/ + BACKUP (r) : ORIGIN = 0x08002000, LENGTH = 0x1000 /* BACKUP: 4K system data in flash */ + XIPSYS (r) : ORIGIN = 0x08003000, LENGTH = 0x1000 /* XIPSYS: 4K system data in flash */ + KM4_BOOT (rx) : ORIGIN = 0x08004000+0x20, LENGTH = 0x02000-0x20 /* XIPBOOT: 8k, 32 Bytes resvd for header*/ + KM0_IMG2 (rx) : ORIGIN = 0x0C000000+0x20, LENGTH = 0x02000000-0x20 /* KM0_IMG2: 32MB, 32 Bytes resvd for header, virtual address */ + KM4_IMG2 (rx) : ORIGIN = 0x0E000000+0x20, LENGTH = 0x02000000-0x20 /* KM4_IMG2 OTA1: 32MB, 32 Bytes resvd for header, virtual address */ + BTRACE (rx) : ORIGIN = 0x00800000, LENGTH = 0x00C00000 -0x00800000 /* Bluetooth Trace */ + + /* KM0 RAM*/ + KM0_SRAM (rwx) : ORIGIN = 0x00080000, LENGTH = 0x00090000 - 0x00080000 /* KM0 SRAM: 64k */ + RETENTION_RAM (rwx) : ORIGIN = 0x000C0000, LENGTH = 0x000C0400 - 0x000C0000 /* KM0 Retention SRAM: 1k */ +} + +SECTIONS +{ + .rom.text : { } > IROM_NS + .rom.rodata : { } > DROM_NS + .hal.rom.bss : { } > ROMBSS_RAM_COM + .hal.ns_rom.bss : { } > ROMBSS_RAM_NS + + /* image2: normal image start */ + .ram_image2.entry : + { + __ram_image2_text_start__ = .; + __image2_entry_func__ = .; + KEEP(*(SORT(.image2.entry.data*))) + + __image2_validate_code__ = .; + KEEP(*(.image2.validate.rodata*)) + + } > BD_RAM_NS + + .ram_image2.text : + { + __ram_text_start__ = .; + *(.image2.ram.text*) + *(.image2.net.ram.text*) + __ram_text_end__ = .; + } > BD_RAM_NS + + .ram_image2.data : + { + __data_start__ = .; + *(.data*) + __data_end__ = .; + __ram_image2_text_end__ = .; + . = ALIGN(16); + } > BD_RAM_NS + + .ram_image2.bss : + { + __bss_start__ = .; + *(.bss*) + *(COMMON) + __bss_end__ = .; + } > BD_RAM_NS + + .ram_image2.nocache.data : + { + . = ALIGN (32); + __ram_nocache_start__ = .; + *(.bdsram.data*) + . = ALIGN (32); + __ram_nocache_end__ = .; + } > BD_RAM_NS + + .ram_heap.data : + { + . = ALIGN (32); + *(.bfsram.data*) + end = .; + *(.heap.stdlib*) + . = . + 4096; + __bfsram_end__ = .; + } > BD_RAM_NS + + .xip_image2.text : + { + __flash_text_start__ = .; + + *(.img2_custom_signature*) + + *(.text*) + /* *(.image2.net.ram.text*) */ + *(.rodata*) + + /* Add This for C++ support */ + . = ALIGN(4); + __preinit_array_start = .; + KEEP(*(.preinit_array)) + __preinit_array_end = .; + . = ALIGN(4); + __init_array_start = .; + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + __init_array_end = .; + . = ALIGN(4); + __fini_array_start = .; + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + __fini_array_end = .; + /*-----------------*/ + + . = ALIGN (4); + __cmd_table_start__ = .; + KEEP(*(.cmd.table.data*)) + __cmd_table_end__ = .; + + __flash_text_end__ = .; + + . = ALIGN (16); + } > KM4_IMG2 + + /* Add This for C++ support */ + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + + } > KM4_IMG2 + + .ARM.exidx : + { + __exidx_start = .; + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + __exidx_end = .; +/* end = .; */ + } > KM4_IMG2 + + __wrap_printf = 0x1010a3f5; + __wrap_sprintf = 0x1010a471; + __wrap_strcat = 0x10111635; + __wrap_strchr = 0x10111745; + __wrap_strcmp = 0x10111745; + __wrap_strncmp = 0x101118f9; + __wrap_strlen = 0x10111839; + __wrap_strnlen = 0x10111a05; + __wrap_strncat = 0x1011189d; + __wrap_strpbrk = 0x10111a39; + __wrap_strstr = 0x10111d25; + __wrap_strtok = 0x1011201d; + __wrap_strsep = 0x10111a65; + __wrap_strtoll = 0x10111ffd; + __wrap_strtoul = 0x101122e9; + __wrap_strtoull = 0x10111f3d; + __wrap_atoi = 0x101115e1; + __wrap_strcpy = 0x101117b9; + __wrap_strncpy = 0x1011199d; + __wrap_memset = 0x10110ea1; + __wrap_memcpy = 0x10110d2d; + __wrap_memcmp = 0x10110cc9; + __wrap_memmove = 0x10110dd9; + __wrap_snprintf = 0x1010a49d; + __wrap_malloc = pvPortMalloc; + __wrap_realloc = pvPortReAlloc; + __wrap_free = vPortFree; + + /*-----------------*/ + + .bluetooth_trace.text : + { + __btrace_start__ = .; + *(.BTTRACE) + __btrace_end__ = .; + } > BTRACE + + /* PSRAM_NS image start */ + .psram_image2.text : + { + __psram_image2_text_start__ = .; + *(.psram.text*) + __psram_image2_text_end__ = .; + } > PSRAM_NS + + .psram_image2.data : + { + . = ALIGN (32); + *(.psram.data*) + . = ALIGN (32); + *(.psram.rodata*) + } > PSRAM_NS + + .psram_image2.bss : + { + . = ALIGN (32); + __psram_bss_start__ = .; + *(.psram.bss*) + __psram_bss_end__ = .; + } > PSRAM_NS + + .psram_heap.data : + { + . = ALIGN (32); + *(.psram.heap*) + } > PSRAM_NS +} + +__sram_end__ = ORIGIN(BD_RAM_NS) + LENGTH(BD_RAM_NS); diff --git a/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/rom_symbol_ns.txt b/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/rom_symbol_ns.txt new file mode 100644 index 00000000..a47e92ce --- /dev/null +++ b/Arduino_package/hardware/variants/datalogger_amb26/linker_scripts/gcc/rom_symbol_ns.txt @@ -0,0 +1,677 @@ +SECTIONS +{ + __rom_bss_start__ = 0x10000000; + ConfigDebugClose = 0x10000000; + ConfigDebugBuffer = 0x10000004; + ConfigDebugBufferGet = 0x10000008; + ConfigDebug = 0x1000000c; + rand_first = 0x1000001c; + rand_seed = 0x10000020; + RBSS_UDELAY_DIV = 0x10000034; + flash_init_para = 0x10000038; + GDMA_Reg = 0x10000098; + PortA_IrqHandler = 0x1000009c; + PortA_IrqData = 0x1000011c; + PortB_IrqHandler = 0x1000019c; + PortB_IrqData = 0x1000021c; + IPC_IrqHandler = 0x1000029c; + IPC_IrqData = 0x1000031c; + IS_FPGA_VERIF = 0x1000039c; + crypto_engine = 0x100003a0; + __rom_bss_end__ = 0x10000564; + __rom_bss_start_ns__ = 0x10001000; + NewVectorTable = 0x10001000; + UserIrqFunTable = 0x10001140; + UserIrqDataTable = 0x10001240; + mpu_entry_register = 0x10001340; + p_rom_ssl_ram_map = 0x10001348; + rom_ssl_ram_map = 0x1000134c; + __rom_bss_end_ns__ = 0x1000138c; + __rom_bss_start_s__ = 0x1007c000; + __ram_start_table_start__ = 0x1007d000; + STACK_TOP = 0x1007effc; + __vectors_table = 0x1010a000; + Reset_Handler = 0x1010a101; + NMI_Handler = 0x1010a111; + HardFault_Handler = 0x1010a115; + MemManage_Handler = 0x1010a119; + BusFault_Handler = 0x1010a11d; + UsageFault_Handler = 0x1010a121; + SecureFault_Handler = 0x1010a125; + DiagVSprintf = 0x1010a12d; + DiagPrintf = 0x1010a3f5; + DiagPrintfD = 0x1010a445; + DiagSPrintf = 0x1010a471; + DiagSnPrintf = 0x1010a49d; + Rand = 0x1010a765; + Rand_Arc4 = 0x1010a7f1; + RandBytes_Get = 0x1010a825; + io_assert_failed = 0x1010a871; + BKUP_Write = 0x1010a891; + BKUP_Read = 0x1010a8b5; + BKUP_Set = 0x1010a8d5; + BKUP_Clear = 0x1010a8fd; + BOOT_Reason = 0x1010a929; + DelayNop = 0x1010a939; + DelayUs = 0x1010a949; + DelayMs = 0x1010a995; + EFUSEPowerSwitch = 0x1010a9a9; + EFUSERead8 = 0x1010aa31; + EFUSEWrite8 = 0x1010ab1d; + EFUSE_PG_Packet = 0x1010ac21; + EFUSE_LogicalMap_Read = 0x1010ae99; + EFUSE_LogicalMap_Write = 0x1010afad; + FLASH_RxData = 0x1010b195; + FLASH_TxCmd = 0x1010b29d; + FLASH_SW_CS_Control = 0x1010b329; + FLASH_SetSpiMode = 0x1010b37d; + FLASH_RxCmd = 0x1010b415; + FLASH_WaitBusy = 0x1010b479; + FLASH_WriteEn = 0x1010b4f9; + FLASH_TxData256B = 0x1010b51d; + FLASH_TxData12B = 0x1010b60d; + FLASH_SetStatus = 0x1010b6ed; + FLASH_Erase = 0x1010b70d; + FLASH_DeepPowerDown = 0x1010b7b9; + FLASH_SetStatusBits = 0x1010b809; + FLASH_StructInit_Micron = 0x1010b8dd; + FLASH_StructInit_MXIC = 0x1010b98d; + FLASH_StructInit_GD = 0x1010ba39; + FLASH_StructInit = 0x1010baed; + FLASH_Init = 0x1010bba1; + GDMA_StructInit = 0x1010bc25; + GDMA_SetLLP = 0x1010bc45; + GDMA_ClearINTPendingBit = 0x1010bcd9; + GDMA_ClearINT = 0x1010bda5; + GDMA_INTConfig = 0x1010be75; + GDMA_Cmd = 0x1010bf91; + GDMA_Init = 0x1010bff9; + GDMA_ChCleanAutoReload = 0x1010c14d; + GDMA_SetSrcAddr = 0x1010c1d1; + GDMA_GetSrcAddr = 0x1010c221; + GDMA_GetDstAddr = 0x1010c26d; + GDMA_SetDstAddr = 0x1010c2b9; + GDMA_SetBlkSize = 0x1010c309; + GDMA_GetBlkSize = 0x1010c369; + GDMA_ChnlRegister = 0x1010c3b9; + GDMA_ChnlUnRegister = 0x1010c401; + GDMA_ChnlAlloc = 0x1010c43d; + GDMA_ChnlFree = 0x1010c4d9; + GDMA_GetIrqNum = 0x1010c565; + GPIO_INTMode = 0x1010c5a9; + GPIO_INTConfig = 0x1010c641; + GPIO_INTHandler = 0x1010c679; + GPIO_Direction = 0x1010c721; + GPIO_Init = 0x1010c755; + GPIO_DeInit = 0x1010c7e1; + GPIO_ReadDataBit = 0x1010c84d; + GPIO_WriteBit = 0x1010c871; + GPIO_PortDirection = 0x1010c8a1; + GPIO_PortRead = 0x1010c8c5; + GPIO_PortWrite = 0x1010c8d5; + GPIO_UserRegIrq = 0x1010c8ed; + IPC_INTConfig = 0x1010c925; + IPC_IERSet = 0x1010c939; + IPC_IERGet = 0x1010c93d; + IPC_INTRequest = 0x1010c941; + IPC_INTClear = 0x1010c94d; + IPC_INTGet = 0x1010c959; + IPC_CPUID = 0x1010c95d; + IPC_SEMGet = 0x1010c969; + IPC_SEMFree = 0x1010c9b9; + IPC_INTHandler = 0x1010ca21; + IPC_INTUserHandler = 0x1010ca61; + LOGUART_StructInit = 0x1010ca9d; + LOGUART_Init = 0x1010cab5; + LOGUART_PutChar = 0x1010caf5; + LOGUART_GetChar = 0x1010cb29; + LOGUART_Readable = 0x1010cb45; + LOGUART_GetIMR = 0x1010cb59; + LOGUART_SetIMR = 0x1010cb65; + LOGUART_WaitBusy = 0x1010cb71; + LOGUART_SetBaud = 0x1010cb91; + mpu_enable = 0x1010cbd5; + mpu_disable = 0x1010cbed; + mpu_init = 0x1010cc01; + mpu_set_mem_attr = 0x1010cc3d; + mpu_region_cfg = 0x1010ccb1; + mpu_entry_free = 0x1010cdb5; + mpu_entry_alloc = 0x1010cdc1; + RSIP_Cmd = 0x1010cde9; + RSIP_OTF_init = 0x1010ce05; + RSIP_OTF_Cmd = 0x1010ce6d; + RSIP_OTF_Mask = 0x1010ce81; + RSIP_KEY_Request = 0x1010cec9; + RSIP_MMU_Config = 0x1010cf0d; + RSIP_MMU_Cmd = 0x1010cf31; + PAD_DrvStrength = 0x1010cf51; + PAD_PullCtrl = 0x1010cf6d; + PAD_CMD = 0x1010cf99; + Pinmux_Config = 0x1010cfb9; + Pinmux_ConfigGet = 0x1010cfd9; + Pinmux_UartLogCtrl = 0x1010cfe9; + Pinmux_SpicCtrl = 0x1010d03d; + simulation_bit_index = 0x1010d181; + simulation_stage_set = 0x1010d199; + SYSTIMER_Init = 0x1010d1c5; + SYSTIMER_TickGet = 0x1010d215; + SYSTIMER_GetPassTime = 0x1010d225; + RTIM_TimeBaseStructInit = 0x1010d255; + RTIM_Cmd = 0x1010d26d; + RTIM_GetCount = 0x1010d2f5; + RTIM_INTConfig = 0x1010d361; + RTIM_INTClear = 0x1010d3f1; + RTIM_TimeBaseInit = 0x1010d45d; + RTIM_DeInit = 0x1010d595; + RTIM_INTClearPendingBit = 0x1010d611; + RTIM_GetFlagStatus = 0x1010d685; + RTIM_GetINTStatus = 0x1010d75d; + UART_DeInit = 0x1010d83d; + UART_StructInit = 0x1010d845; + UART_BaudParaGetFull = 0x1010d861; + UART_BaudParaGet = 0x1010d899; + UART_SetBaud = 0x1010d8bd; + UART_SetBaudExt = 0x1010d955; + UART_SetRxLevel = 0x1010d9cd; + UART_RxCmd = 0x1010d9f5; + UART_Writable = 0x1010da09; + UART_Readable = 0x1010da11; + UART_CharPut = 0x1010da19; + UART_CharGet = 0x1010da1d; + UART_ReceiveData = 0x1010da25; + UART_SendData = 0x1010da4d; + UART_ReceiveDataTO = 0x1010da75; + UART_SendDataTO = 0x1010dab5; + UART_RxByteCntClear = 0x1010daf5; + UART_RxByteCntGet = 0x1010db01; + UART_BreakCtl = 0x1010db09; + UART_ClearRxFifo = 0x1010db1d; + UART_Init = 0x1010db3d; + UART_ClearTxFifo = 0x1010dbe5; + UART_INTConfig = 0x1010dbf1; + UART_IntStatus = 0x1010dc01; + UART_ModemStatusGet = 0x1010dc05; + UART_LineStatusGet = 0x1010dc09; + UART_WaitBusy = 0x1010dc0d; + rtl_crypto_aes_cbc_init = 0x1010dc31; + rtl_crypto_aes_cbc_encrypt = 0x1010dc81; + rtl_crypto_aes_cbc_decrypt = 0x1010dccd; + rtl_crypto_aes_ecb_init = 0x1010dd19; + rtl_crypto_aes_ecb_encrypt = 0x1010dd69; + rtl_crypto_aes_ecb_decrypt = 0x1010dda1; + rtl_crypto_aes_ctr_init = 0x1010ddd9; + rtl_crypto_aes_ctr_encrypt = 0x1010de29; + rtl_crypto_aes_ctr_decrypt = 0x1010de6d; + rtl_crypto_aes_cfb_init = 0x1010deb1; + rtl_crypto_aes_cfb_encrypt = 0x1010df01; + rtl_crypto_aes_cfb_decrypt = 0x1010df45; + rtl_crypto_aes_ofb_init = 0x1010df89; + rtl_crypto_aes_ofb_encrypt = 0x1010dfdd; + rtl_crypto_aes_ofb_decrypt = 0x1010e021; + rtl_crypto_aes_gcm_init = 0x1010e065; + rtl_crypto_aes_gcm_encrypt = 0x1010e0b9; + rtl_crypto_aes_gcm_decrypt = 0x1010e131; + BOOT_ROM_SignatureCheck = 0x1010e1a9; + BOOT_ROM_FromFlash = 0x1010e281; + BOOT_ROM_InitDebugFlg = 0x1010e38d; + BOOT_ROM_ResetVsr = 0x1010e3a9; + EXT32K_Cmd = 0x1010e4c9; + XTAL_ClkGet = 0x1010e4e9; + CPU_ClkSet = 0x1010e501; + CPU_ClkGet = 0x1010e515; + CRYPTO_MemDump = 0x1010e539; + CRYPTO_RegDump = 0x1010e601; + CRYPTO_CleanCmdOk = 0x1010e7c1; + CRYPTO_ClearAllINT = 0x1010e7f9; + CRYPTO_Reset = 0x1010e829; + CRYPTO_SetSecurityModeAD = 0x1010e86d; + CRYPTO_Init = 0x1010ea49; + CRYPTO_ProcessAD = 0x1010ea6d; + CRYPTO_SendSeqBuf = 0x1010f681; + CRYPTO_CipherInit = 0x1010f799; + CRYPTO_CipherEncryptAD = 0x1010f7b9; + CRYPTO_CipherDecryptAD = 0x1010f7e9; + rtl_crypto_3des_cbc_init = 0x1010f819; + rtl_crypto_3des_cbc_encrypt = 0x1010f869; + rtl_crypto_3des_cbc_decrypt = 0x1010f8b5; + rtl_crypto_3des_ecb_init = 0x1010f901; + rtl_crypto_3des_ecb_encrypt = 0x1010f951; + rtl_crypto_3des_ecb_decrypt = 0x1010f989; + rtl_crypto_3des_cfb_init = 0x1010f9c1; + rtl_crypto_3des_cfb_encrypt = 0x1010fa11; + rtl_crypto_3des_cfb_decrypt = 0x1010fa49; + rtl_crypto_3des_ofb_init = 0x1010fa81; + rtl_crypto_3des_ofb_encrypt = 0x1010fad1; + rtl_crypto_3des_ofb_decrypt = 0x1010fb09; + rtl_crypto_3des_ctr_init = 0x1010fb41; + rtl_crypto_3des_ctr_encrypt = 0x1010fb95; + rtl_crypto_3des_ctr_decrypt = 0x1010fbcd; + rtl_crypto_des_cbc_init = 0x1010fc05; + rtl_crypto_des_cbc_encrypt = 0x1010fc59; + rtl_crypto_des_cbc_decrypt = 0x1010fcb5; + rtl_crypto_des_ecb_init = 0x1010fd11; + rtl_crypto_des_ecb_encrypt = 0x1010fd65; + rtl_crypto_des_ecb_decrypt = 0x1010fd9d; + rtl_crypto_des_cfb_init = 0x1010fdd5; + rtl_crypto_des_cfb_encrypt = 0x1010fe29; + rtl_crypto_des_cfb_decrypt = 0x1010fe61; + rtl_crypto_des_ofb_init = 0x1010fe99; + rtl_crypto_des_ofb_encrypt = 0x1010feed; + rtl_crypto_des_ofb_decrypt = 0x1010ff25; + rtl_crypto_des_ctr_init = 0x1010ff5d; + rtl_crypto_des_ctr_encrypt = 0x1010ffb1; + rtl_crypto_des_ctr_decrypt = 0x1010ffe9; + clear_ns_rom_bss = 0x10110021; + RCC_PeriphClockCmd = 0x10110039; + RCC_PeriphClockSource_RTC = 0x101100d1; + RCC_PeriphClockSource_I2C = 0x1011011d; + RCC_PeriphClockSource_QDEC = 0x1011013d; + RCC_PeriphClockSource_UART = 0x1011015d; + SYSCFG_GetChipInfo = 0x101101d1; + INT_HardFault = 0x101101dd; + INT_MemManage = 0x101101fd; + INT_BusFault = 0x1011021d; + INT_UsageFault = 0x1011023d; + INT_SecureFault = 0x1011025d; + INT_HardFault_C = 0x1011027d; + INT_NMI = 0x1011064d; + irq_table_init = 0x10110795; + irq_enable = 0x101109d1; + irq_disable = 0x101109ed; + irq_set_priority = 0x10110a11; + irq_get_priority = 0x10110a3d; + irq_set_pending = 0x10110a65; + irq_get_pending = 0x10110a81; + irq_clear_pending = 0x10110aa5; + irq_register = 0x10110ac1; + irq_unregister = 0x10110b0d; + _char2num = 0x10110b2d; + _2char2dec = 0x10110b5d; + _2char2hex = 0x10110bd1; + _memchr = 0x10110c39; + _memcmp = 0x10110cc9; + _memcpy = 0x10110d2d; + _memmove = 0x10110dd9; + _memset = 0x10110ea1; + _vsscanf = 0x10110ffd; + _sscanf = 0x101115c1; + _stratoi = 0x101115e1; + _strcat = 0x10111635; + _strchr = 0x10111675; + _strcmp = 0x10111745; + _strcpy = 0x101117b9; + _stricmp = 0x10111805; + _strlen = 0x10111839; + _strncat = 0x1011189d; + _strncmp = 0x101118f9; + _strncpy = 0x1011199d; + _strnlen = 0x10111a05; + _strpbrk = 0x10111a39; + _strsep = 0x10111a65; + _strstr = 0x10111d25; + _strtoull = 0x10111f3d; + _strtoll = 0x10111ffd; + _strtok = 0x1011201d; + __strtok_r = 0x10112029; + _strtok_r = 0x1011208d; + _strtol_r = 0x10112095; + _strtol = 0x101121b1; + _strtoul_r = 0x101121b5; + _strtoul = 0x101122e9; + _strupr = 0x101122ed; + CRYPTO_chacha_20 = 0x10112309; + rom_ed25519_gen_keypair = 0x101125c5; + rom_ed25519_gen_signature = 0x101125c9; + rom_ed25519_verify_signature = 0x101125df; + rom_ed25519_ge_double_scalarmult_vartime = 0x10113e89; + rom_ed25519_ge_frombytes_negate_vartime = 0x10114195; + rom_ed25519_ge_p3_tobytes = 0x10114695; + rom_ed25519_ge_scalarmult_base = 0x101146df; + rom_ed25519_ge_tobytes = 0x10114807; + rom_ed25519_crypto_sign_seed_keypair = 0x10114851; + rom_ed25519_crypto_sign_verify_detached = 0x101148a9; + rom_ed25519_sc_muladd = 0x10114ad5; + rom_ed25519_sc_reduce = 0x1011b265; + rom_ed25519_crypto_sign_detached = 0x1011c6dd; + CRYPTO_poly1305_init = 0x1011ca99; + CRYPTO_poly1305_update = 0x1011cb31; + CRYPTO_poly1305_finish = 0x1011cba7; + rom_sha512_starts = 0x1011cd4d; + rom_sha512_update = 0x1011cd51; + rom_sha512_finish = 0x1011cd55; + rom_sha512 = 0x1011cd59; + rom_sha512_hmac_starts = 0x1011cd5d; + rom_sha512_hmac_update = 0x1011cdf1; + rom_sha512_hmac_finish = 0x1011cdf5; + rom_sha512_hmac_reset = 0x1011ce49; + rom_sha512_hmac = 0x1011ce65; + rom_sha512_hkdf = 0x1011cea1; + curve25519_donna = 0x1011dce5; + mbedtls_aes_init = 0x1011e569; + mbedtls_aes_free = 0x1011e579; + mbedtls_aes_setkey_enc = 0x1011e58d; + mbedtls_aes_setkey_dec = 0x1011e7a5; + mbedtls_aes_encrypt = 0x1011e8c1; + mbedtls_aes_decrypt = 0x1011ecf9; + mbedtls_aes_crypt_ecb = 0x1011f145; + mbedtls_aes_crypt_cbc = 0x1011f1c9; + mbedtls_aes_crypt_cfb128 = 0x1011f3d5; + mbedtls_aes_crypt_cfb8 = 0x1011f44b; + mbedtls_aes_crypt_ctr = 0x1011f4b1; + mbedtls_arc4_init = 0x1011f515; + mbedtls_arc4_free = 0x1011f525; + mbedtls_arc4_setup = 0x1011f539; + mbedtls_arc4_crypt = 0x1011f57f; + mbedtls_asn1_get_len = 0x1011f5c5; + mbedtls_asn1_get_tag = 0x1011f661; + mbedtls_asn1_get_bool = 0x1011f689; + mbedtls_asn1_get_int = 0x1011f6b9; + mbedtls_asn1_get_mpi = 0x1011f6ff; + mbedtls_asn1_get_bitstring = 0x1011f725; + mbedtls_asn1_get_bitstring_null = 0x1011f76d; + mbedtls_asn1_get_sequence_of = 0x1011f795; + mbedtls_asn1_get_alg = 0x1011f81d; + mbedtls_asn1_get_alg_null = 0x1011f8a9; + mbedtls_asn1_free_named_data = 0x1011f8ed; + mbedtls_asn1_free_named_data_list = 0x1011f91d; + mbedtls_asn1_find_named_data = 0x1011f941; + mbedtls_asn1_write_len = 0x1011f96d; + mbedtls_asn1_write_tag = 0x1011fa55; + mbedtls_asn1_write_raw_buffer = 0x1011fa71; + mbedtls_asn1_write_mpi = 0x1011faa1; + mbedtls_asn1_write_null = 0x1011fb13; + mbedtls_asn1_write_oid = 0x1011fb39; + mbedtls_asn1_write_algorithm_identifier = 0x1011fb6d; + mbedtls_asn1_write_bool = 0x1011fbbd; + mbedtls_asn1_write_int = 0x1011fbff; + mbedtls_asn1_write_printable_string = 0x1011fc61; + mbedtls_asn1_write_ia5_string = 0x1011fc95; + mbedtls_asn1_write_bitstring = 0x1011fcc9; + mbedtls_asn1_write_octet_string = 0x1011fd3d; + mbedtls_asn1_store_named_data = 0x1011fd71; + mbedtls_base64_encode = 0x1011fe29; + mbedtls_base64_decode = 0x1011ff2d; + mbedtls_mpi_init = 0x10120b19; + mbedtls_mpi_free = 0x10120b27; + mbedtls_mpi_grow = 0x10120b5d; + mbedtls_mpi_shrink = 0x10120bc1; + mbedtls_mpi_copy = 0x10120c41; + mbedtls_mpi_swap = 0x10120c9d; + mbedtls_mpi_safe_cond_assign = 0x10120cc5; + mbedtls_mpi_safe_cond_swap = 0x10120d31; + mbedtls_mpi_lset = 0x10120db3; + mbedtls_mpi_get_bit = 0x10120df1; + mbedtls_mpi_set_bit = 0x10120e11; + mbedtls_mpi_lsb = 0x10120e61; + mbedtls_mpi_bitlen = 0x10120e93; + mbedtls_mpi_size = 0x10120ed3; + mbedtls_mpi_read_binary = 0x10120edf; + mbedtls_mpi_write_binary = 0x10120f47; + mbedtls_mpi_shift_l = 0x10120f91; + mbedtls_mpi_shift_r = 0x1012102d; + mbedtls_mpi_cmp_abs = 0x101210ab; + mbedtls_mpi_cmp_mpi = 0x101211ed; + mbedtls_mpi_cmp_int = 0x10121277; + mbedtls_mpi_add_abs = 0x101212a3; + mbedtls_mpi_sub_abs = 0x10121357; + mbedtls_mpi_add_mpi = 0x101213d5; + mbedtls_mpi_sub_mpi = 0x10121417; + mbedtls_mpi_add_int = 0x1012145b; + mbedtls_mpi_sub_int = 0x10121487; + mbedtls_mpi_mul_mpi = 0x101214b3; + mbedtls_mpi_mul_int = 0x1012158f; + mbedtls_mpi_read_string = 0x101215a9; + mbedtls_mpi_div_mpi = 0x101216c9; + mbedtls_mpi_div_int = 0x10121aeb; + mbedtls_mpi_mod_mpi = 0x10121b15; + mbedtls_mpi_mod_int = 0x10121b75; + mbedtls_mpi_write_string = 0x10121c15; + mbedtls_mpi_exp_mod = 0x10121d6d; + mbedtls_mpi_gcd = 0x101221a5; + mbedtls_mpi_fill_random = 0x101222af; + mbedtls_mpi_inv_mod = 0x101224f9; + mbedtls_mpi_is_prime = 0x101227b5; + mbedtls_mpi_gen_prime = 0x10122809; + mbedtls_ctr_drbg_init = 0x10122ae9; + mbedtls_ctr_drbg_free = 0x10122af9; + mbedtls_ctr_drbg_set_prediction_resistance = 0x10122b17; + mbedtls_ctr_drbg_set_entropy_len = 0x10122b1b; + mbedtls_ctr_drbg_set_reseed_interval = 0x10122b1f; + mbedtls_ctr_drbg_update = 0x10122b23; + mbedtls_ctr_drbg_reseed = 0x10122b47; + mbedtls_ctr_drbg_seed_entropy_len = 0x10122bc5; + mbedtls_ctr_drbg_seed = 0x10122c19; + mbedtls_ctr_drbg_random_with_add = 0x10122c2b; + mbedtls_ctr_drbg_random = 0x10122cf1; + mbedtls_des_init = 0x10122d11; + mbedtls_des_free = 0x10122d1d; + mbedtls_des3_init = 0x10122d25; + mbedtls_des3_free = 0x10122d35; + mbedtls_des_key_set_parity = 0x10122d3f; + mbedtls_des_key_check_key_parity = 0x10122d59; + mbedtls_des_key_check_weak = 0x10122d7d; + mbedtls_des_setkey = 0x10122da9; + mbedtls_des_setkey_enc = 0x101231bb; + mbedtls_des_setkey_dec = 0x101231e5; + mbedtls_des3_set2key_enc = 0x10123239; + mbedtls_des3_set2key_dec = 0x1012327d; + mbedtls_des3_set3key_enc = 0x101232c1; + mbedtls_des3_set3key_dec = 0x101232fd; + mbedtls_des_crypt_ecb = 0x10123339; + mbedtls_des_crypt_cbc = 0x10123541; + mbedtls_des3_crypt_ecb = 0x10123731; + mbedtls_des3_crypt_cbc = 0x10123b81; + mbedtls_dhm_init = 0x10123e01; + mbedtls_dhm_read_params = 0x10123e0d; + mbedtls_dhm_make_params = 0x10123e59; + mbedtls_dhm_read_public = 0x10123f91; + mbedtls_dhm_make_public = 0x10123fb5; + mbedtls_dhm_calc_secret = 0x1012406d; + mbedtls_dhm_free = 0x1012426d; + mbedtls_dhm_parse_dhm = 0x101242cf; + mbedtls_ecdh_gen_public = 0x101243c1; + mbedtls_ecdh_compute_shared = 0x101243c5; + mbedtls_ecdh_init = 0x10124425; + mbedtls_ecdh_free = 0x10124435; + mbedtls_ecdh_make_params = 0x1012447d; + mbedtls_ecdh_read_params = 0x101244ed; + mbedtls_ecdh_get_params = 0x10124515; + mbedtls_ecdh_make_public = 0x10124561; + mbedtls_ecdh_read_public = 0x101245b1; + mbedtls_ecdh_calc_secret = 0x101245dd; + mbedtls_ecdsa_sign = 0x10124693; + mbedtls_ecdsa_sign_det = 0x10124815; + mbedtls_ecdsa_verify = 0x101248bd; + mbedtls_ecdsa_write_signature = 0x101249f9; + mbedtls_ecdsa_write_signature_det = 0x10124a9d; + mbedtls_ecdsa_read_signature = 0x10124abb; + mbedtls_ecdsa_genkey = 0x10124b55; + mbedtls_ecdsa_from_keypair = 0x10124b83; + mbedtls_ecdsa_init = 0x10124bbb; + mbedtls_ecdsa_free = 0x10124bbf; + mbedtls_ecjpake_init = 0x10124ff5; + mbedtls_ecjpake_free = 0x1012504f; + mbedtls_ecjpake_setup = 0x101250a5; + mbedtls_ecjpake_check = 0x101250e9; + mbedtls_ecjpake_read_round_one = 0x10125109; + mbedtls_ecjpake_write_round_one = 0x10125185; + mbedtls_ecjpake_read_round_two = 0x101252ad; + mbedtls_ecjpake_write_round_two = 0x10125365; + mbedtls_ecjpake_derive_secret = 0x101254a1; + mbedtls_ecp_curve_list = 0x10125de9; + mbedtls_ecp_curve_info_from_grp_id = 0x10125df1; + mbedtls_ecp_curve_info_from_tls_id = 0x10125e0d; + mbedtls_ecp_curve_info_from_name = 0x10125e29; + mbedtls_ecp_point_init = 0x10125e51; + mbedtls_ecp_group_init = 0x10125e71; + mbedtls_ecp_keypair_init = 0x10125e81; + mbedtls_ecp_point_free = 0x10125ea1; + mbedtls_ecp_group_free = 0x10125ec1; + mbedtls_ecp_keypair_free = 0x10125f31; + mbedtls_ecp_copy = 0x10125f51; + mbedtls_ecp_group_copy = 0x10125f7d; + mbedtls_ecp_set_zero = 0x10125f83; + mbedtls_ecp_is_zero = 0x10126839; + mbedtls_ecp_point_cmp = 0x1012684b; + mbedtls_ecp_point_read_string = 0x1012687d; + mbedtls_ecp_point_write_binary = 0x101268a9; + mbedtls_ecp_point_read_binary = 0x1012694d; + mbedtls_ecp_tls_read_point = 0x101269b9; + mbedtls_ecp_tls_write_point = 0x101269e9; + mbedtls_ecp_tls_read_group = 0x10126a19; + mbedtls_ecp_tls_write_group = 0x10126a61; + mbedtls_ecp_check_pubkey = 0x10126a99; + mbedtls_ecp_check_privkey = 0x10126c2d; + mbedtls_ecp_mul = 0x10126c9d; + mbedtls_ecp_muladd = 0x1012726f; + mbedtls_ecp_gen_keypair_base = 0x101272d9; + mbedtls_ecp_gen_keypair = 0x101273d9; + mbedtls_ecp_gen_key = 0x101273f1; + mbedtls_ecp_check_pub_priv = 0x10127419; + mbedtls_ecp_group_load = 0x10128519; + mbedtls_hmac_drbg_init = 0x1012893d; + mbedtls_hmac_drbg_update = 0x10128949; + mbedtls_hmac_drbg_seed_buf = 0x101289e5; + mbedtls_hmac_drbg_reseed = 0x10128a35; + mbedtls_hmac_drbg_seed = 0x10128aad; + mbedtls_hmac_drbg_set_prediction_resistance = 0x10128b1d; + mbedtls_hmac_drbg_set_entropy_len = 0x10128b21; + mbedtls_hmac_drbg_set_reseed_interval = 0x10128b25; + mbedtls_hmac_drbg_random_with_add = 0x10128b29; + mbedtls_hmac_drbg_random = 0x10128bdd; + mbedtls_hmac_drbg_free = 0x10128bed; + mbedtls_md_list = 0x10128c09; + mbedtls_md_info_from_string = 0x10128c11; + mbedtls_md_info_from_type = 0x10128ca9; + mbedtls_md_init = 0x10128ced; + mbedtls_md_free = 0x10128cf9; + mbedtls_md_clone = 0x10128d45; + mbedtls_md_setup = 0x10128d6d; + mbedtls_md_init_ctx = 0x10128db5; + mbedtls_md_starts = 0x10128dbb; + mbedtls_md_update = 0x10128dd5; + mbedtls_md_finish = 0x10128df1; + mbedtls_md = 0x10128e0d; + mbedtls_md_hmac_starts = 0x10128e29; + mbedtls_md_hmac_update = 0x10128eed; + mbedtls_md_hmac_finish = 0x10128f0d; + mbedtls_md_hmac_reset = 0x10128f65; + mbedtls_md_hmac = 0x10128f91; + mbedtls_md_process = 0x10128fe5; + mbedtls_md_get_size = 0x10129001; + mbedtls_md_get_type = 0x10129009; + mbedtls_md_get_name = 0x1012900f; + mbedtls_md5_init = 0x1012917d; + mbedtls_md5_free = 0x10129189; + mbedtls_md5_clone = 0x1012919d; + mbedtls_md5_starts = 0x101291a9; + mbedtls_md5_process = 0x101291d5; + mbedtls_md5_update = 0x101298dd; + mbedtls_md5_finish = 0x101298e3; + mbedtls_md5 = 0x10129995; + mbedtls_oid_get_attr_short_name = 0x101299fd; + mbedtls_oid_get_x509_ext_type = 0x10129a35; + mbedtls_oid_get_extended_key_usage = 0x10129a6d; + mbedtls_oid_get_sig_alg_desc = 0x10129aa5; + mbedtls_oid_get_sig_alg = 0x10129abd; + mbedtls_oid_get_oid_by_sig_alg = 0x10129adb; + mbedtls_oid_get_pk_alg = 0x10129b09; + mbedtls_oid_get_oid_by_pk_alg = 0x10129b41; + mbedtls_oid_get_ec_grp = 0x10129b69; + mbedtls_oid_get_oid_by_ec_grp = 0x10129ba1; + mbedtls_oid_get_cipher_alg = 0x10129bc9; + mbedtls_oid_get_md_alg = 0x10129c01; + mbedtls_oid_get_oid_by_md = 0x10129c39; + mbedtls_oid_get_pkcs12_pbe_alg = 0x10129c61; + mbedtls_pem_init = 0x10129e5f; + mbedtls_pem_read_buffer = 0x10129e6d; + mbedtls_pem_free = 0x1012a161; + mbedtls_pem_write_buffer = 0x1012a185; + mbedtls_pk_init = 0x1012a279; + mbedtls_pk_free = 0x1012a283; + mbedtls_pk_info_from_type = 0x1012a2a5; + mbedtls_pk_setup = 0x1012a2d9; + mbedtls_pk_setup_rsa_alt = 0x1012a305; + mbedtls_pk_can_do = 0x1012a351; + mbedtls_pk_verify = 0x1012a361; + mbedtls_pk_sign = 0x1012a3bd; + mbedtls_pk_decrypt = 0x1012a425; + mbedtls_pk_encrypt = 0x1012a451; + mbedtls_pk_check_pair = 0x1012a47d; + mbedtls_pk_get_bitlen = 0x1012a4bd; + mbedtls_pk_verify_ext = 0x1012a4cd; + mbedtls_pk_debug = 0x1012a585; + mbedtls_pk_get_name = 0x1012a5a9; + mbedtls_pk_get_type = 0x1012a5bd; + mbedtls_pk_write_pubkey = 0x1012aa23; + mbedtls_pk_write_pubkey_der = 0x1012aaad; + mbedtls_pk_write_key_der = 0x1012ab7d; + mbedtls_pk_write_pubkey_pem = 0x1012ad79; + mbedtls_pk_write_key_pem = 0x1012adc1; + mbedtls_rsa_init = 0x1012aecd; + mbedtls_rsa_set_padding = 0x1012aeed; + mbedtls_rsa_check_pubkey = 0x1012aef7; + mbedtls_rsa_check_privkey = 0x1012af4d; + mbedtls_rsa_check_pub_priv = 0x1012b169; + mbedtls_rsa_public = 0x1012b1a1; + mbedtls_rsa_private = 0x1012b20f; + mbedtls_rsa_rsaes_oaep_encrypt = 0x1012b465; + mbedtls_rsa_rsaes_pkcs1_v15_encrypt = 0x1012b58d; + mbedtls_rsa_pkcs1_encrypt = 0x1012b675; + mbedtls_rsa_rsaes_oaep_decrypt = 0x1012b6b5; + mbedtls_rsa_rsaes_pkcs1_v15_decrypt = 0x1012b821; + mbedtls_rsa_pkcs1_decrypt = 0x1012b92d; + mbedtls_rsa_rsassa_pss_sign = 0x1012b975; + mbedtls_rsa_rsassa_pkcs1_v15_sign = 0x1012badd; + mbedtls_rsa_pkcs1_sign = 0x1012bc85; + mbedtls_rsa_rsassa_pss_verify_ext = 0x1012bcc9; + mbedtls_rsa_rsassa_pss_verify = 0x1012be75; + mbedtls_rsa_rsassa_pkcs1_v15_verify = 0x1012bea7; + mbedtls_rsa_pkcs1_verify = 0x1012c009; + mbedtls_rsa_free = 0x1012c04d; + mbedtls_rsa_gen_key = 0x1012c0bb; + mbedtls_rsa_copy = 0x1012c261; + mbedtls_sha1_init = 0x1012c365; + mbedtls_sha1_free = 0x1012c371; + mbedtls_sha1_clone = 0x1012c385; + mbedtls_sha1_starts = 0x1012c391; + mbedtls_sha1_process = 0x1012c3c5; + mbedtls_sha1_update = 0x1012d391; + mbedtls_sha1_finish = 0x1012d397; + mbedtls_sha1 = 0x1012d45d; + mbedtls_sha256_init = 0x1012d491; + mbedtls_sha256_free = 0x1012d49d; + mbedtls_sha256_clone = 0x1012d4b1; + mbedtls_sha256_starts = 0x1012d4bd; + mbedtls_sha256_process = 0x1012d55d; + mbedtls_sha256_update = 0x1012dc89; + mbedtls_sha256_finish = 0x1012dc8f; + mbedtls_sha256 = 0x1012dd91; + mbedtls_sha512_init = 0x1012ddc9; + mbedtls_sha512_free = 0x1012ddd5; + mbedtls_sha512_clone = 0x1012dde9; + mbedtls_sha512_starts = 0x1012ddf5; + mbedtls_sha512_process = 0x1012df29; + mbedtls_sha512_update = 0x1012ec7d; + mbedtls_sha512_finish = 0x1012ec83; + mbedtls_sha512 = 0x1012eeb9; + __rom_entry_ns_start__ = 0x101c0000; + rom_sec_call_ns_entry = 0x101c0000; + __rom_entry_ns_end__ = 0x101c0008; + SPIC_CALIB_PATTERN = 0x101c0008; + PORT_AB = 0x101c0024; + armBitRevIndexTable1024 = 0x101c004c; + twiddleCoef_1024 = 0x101c0e5c; + mbedtls_sha512_info = 0x101ce344; + mbedtls_sha384_info = 0x101ce374; + mbedtls_sha256_info = 0x101ce3a4; + mbedtls_sha224_info = 0x101ce3d4; + mbedtls_sha1_info = 0x101ce404; + mbedtls_md5_info = 0x101ce434; + mbedtls_rsa_alt_info = 0x101cea78; + mbedtls_ecdsa_info = 0x101ceaa8; + mbedtls_eckeydh_info = 0x101cead8; + mbedtls_eckey_info = 0x101ceb08; + mbedtls_rsa_info = 0x101ceb38; + __rom_bss_end_s__ = 0x200f9000; +} diff --git a/Arduino_package/hardware/variants/datalogger_amb26/pins_arduino.h b/Arduino_package/hardware/variants/datalogger_amb26/pins_arduino.h new file mode 100644 index 00000000..e741730e --- /dev/null +++ b/Arduino_package/hardware/variants/datalogger_amb26/pins_arduino.h @@ -0,0 +1,20 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +// API compatibility +#include "variant.h" diff --git a/Arduino_package/hardware/variants/datalogger_amb26/variant.cpp b/Arduino_package/hardware/variants/datalogger_amb26/variant.cpp new file mode 100644 index 00000000..47f99af7 --- /dev/null +++ b/Arduino_package/hardware/variants/datalogger_amb26/variant.cpp @@ -0,0 +1,91 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* AMB25/AMB26 (RTL8720DF) */ + +#include "variant.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "PinNames.h" +void __libc_init_array(void); + +/* + * Pins descriptions + */ +PinDescription g_APinDescription[TOTAL_GPIO_PIN_NUM]= +{ + {PA_15, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D0 + {PA_14, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D1 + {PA_13, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_UART | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D2 + {PA_12, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_UART | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D3 +#ifdef BOARD_AMB26 + {NC, NOT_INITIAL, NOT_INITIAL , MODE_NOT_INITIAL}, // AMB_D4 +#else + {PA_30, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM , MODE_NOT_INITIAL}, // AMB_D4 +#endif + {PA_28, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM , MODE_NOT_INITIAL}, // AMB_D5 + {PA_26, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_IR | PIO_I2C , MODE_NOT_INITIAL}, // AMB_D6 + {PA_25, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_IR | PIO_I2C , MODE_NOT_INITIAL}, // AMB_D7 + {PA_27, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ , MODE_NOT_INITIAL}, // AMB_D8 + {PB_3, TYPE_DIGITAL | TYPE_ANALOG, PIO_GPIO | PIO_GPIO_IRQ | PIO_ADC , MODE_NOT_INITIAL}, // AMB_D9 + {PB_2, TYPE_DIGITAL | TYPE_ANALOG, PIO_GPIO | PIO_GPIO_IRQ | PIO_ADC , MODE_NOT_INITIAL}, // AMB_D10 + {PB_1, TYPE_DIGITAL | TYPE_ANALOG, PIO_GPIO | PIO_GPIO_IRQ | PIO_ADC , MODE_NOT_INITIAL}, // AMB_D11 + {PA_7, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_UART , MODE_NOT_INITIAL}, // AMB_D12 + {PA_8, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_UART , MODE_NOT_INITIAL}, // AMB_D13 + {PB_23, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_IR , MODE_NOT_INITIAL}, // AMB_D14 + {PB_22, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_IR , MODE_NOT_INITIAL}, // AMB_D15 + {PB_19, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_UART | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D16 + {PB_18, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_UART | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D17 + {PB_21, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D18 + {PB_20, TYPE_DIGITAL, PIO_GPIO | PIO_GPIO_IRQ | PIO_PWM | PIO_SPI, MODE_NOT_INITIAL}, // AMB_D19 +}; + +void *gpio_pin_struct[TOTAL_GPIO_PIN_NUM] = {NULL}; +void *gpio_irq_handler_list[TOTAL_GPIO_PIN_NUM] = {NULL}; + +#ifdef __cplusplus +} // extern C +#endif + +void serialEvent() __attribute__((weak)); +bool Serial_available() __attribute__((weak)); + +// ---------------------------------------------------------------------------- + +void serialEventRun(void) +{ + if (Serial_available && serialEvent && Serial_available()) serialEvent(); +} + +void init(void) +{ + // Initialize C library + __libc_init_array(); +} + +// ---------------------------------------------------------------------------- + +void wait_for_debug(void) { + while (((CoreDebug->DHCSR) & CoreDebug_DHCSR_C_DEBUGEN_Msk) == 0) { + asm("nop"); + } + delay(1000); +} diff --git a/Arduino_package/hardware/variants/datalogger_amb26/variant.h b/Arduino_package/hardware/variants/datalogger_amb26/variant.h new file mode 100644 index 00000000..91e2e282 --- /dev/null +++ b/Arduino_package/hardware/variants/datalogger_amb26/variant.h @@ -0,0 +1,143 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* AMB25/AMB26 (RTL8720DF) */ + +#ifndef _VARIANT_ARDUINO_AMEBA_ +#define _VARIANT_ARDUINO_AMEBA_ + +#include "Arduino.h" +#include + +#ifdef __cplusplus +extern "C"{ +#include "PinNames.h" + +#define portOutputRegister(P) ((volatile uint32_t *)(0x48014000 + (P) * 0x400)) +#define portInputRegister(P) ((volatile uint32_t *)(0x48014050 + (P) * 0x400)) +#define portModeRegister(P) ((volatile uint32_t *)(0x48014004 + (P) * 0x400)) + +/* + * Wait until enter debug mode + * + * Check DHCSR(0xE000EDF0) register and hold until bit C_DEBUGEN is set. + * Use this function along with J-LINK or other debug tool + **/ +extern void wait_for_debug(void); +} +#endif + +#define MAIN_THREAD_STACK_SIZE (4096 * 4) +#define TOTAL_GPIO_PIN_NUM (20) +#define TOTAL_PWM_PIN_NUM (12) +#define digitalPinToInterrupt(p) (((p)