E000 0000 … SCS, FPB, DWT, ITM | nRF52 Peripheral Addresses |
From armgcc/ruuvi_firmware.ld:
MEMORY { /* Leave room for SoftDevice RAM */ RAM (rwx) : ORIGIN = 0x20002450, LENGTH = 0xDBB0 /* ends at FFFF */ /* bootloader 75000 .. 7AB77 */ bootloader_settings_page (r) : ORIGIN = 0x0007F000, LENGTH = 0x1000 mbr_params_page (r) : ORIGIN = 0x0007E000, LENGTH = 0x1000 FLASH (rx) : ORIGIN = 0x00026000, LENGTH = 0x4F000 /* through 0x75000 (i.e.FDS start) */ uicr_bootloader_start_address (r) : ORIGIN = 0x00000FF8, LENGTH = 4 /* contains 0x75000 */ uicr_mbr_params_page (r) : ORIGIN = 0x00000FFC, LENGTH = 4 /* contains 0x7E000 */ } |
2001 0000 top o stack __StackTop = (ORIGIN (RAM) + LENGTH (RAM)) used for local variables 2000 E000 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) nRF52832 64KB RAM 2000 5FFF nRF52811 24KB RAM Doesn't fitSome systems copy portions of the code from FLASH to RAM which is faster and requires less power (especially if this allows for the FLASH to be powered off.Memory address shown here are only an example
… unused RAM for growth with debugging, No DPS310,TMP117,NTC or PHOTO … .bss. 10000 - 786C = 34707 aka 33KB *(COMMON) 2000 786C __bss_end__ (9/2/21) 3.30.3 tests +DEBUG see the.map
2000 7694 _SEGGER_RTT COMMON 2000 766C heap_end.5377 2000 7668 __malloc_sbrk_start 2000 7664 __malloc_free_list 2000 7660 m_t4t_active nfc_t4t_lib_al.c (last defined) 2000 7554 nfc_rx_buffer (256.) big? 2000 70E8 _acUpBuffer (512. x200 SEGGER_RTT.c ~~~ look here if RTT not running 2000 70d8 _acDownBuffer … 2000 69C0 m_log_data nrf_log_frontend.c (1,060) ! 2000 6750 m_pi peer_id ?? 2000 65C8 buffer_memory peer_database ?? ` … 2000 53E4 m_log_output_block fb4 app_log.c history BIG!! aka 1005 words 2000 4430 m_log_input_block fb4 app_log.c history BIG!! aka 1005 words don;t copy to RAM !! 2000 4428 m_log_config 2000 3d1c m_pages 2000 3D00 m_log_level 2000 348c m_scan_queue_nrf_queue_buffer 2000 2E3C m_adv_queue_nrf_queue_buffer 4f0 2000 3940 nrf5_sdk15_nfc_state 1a0 ruuvi_nrf5_sdk15_communication_nfc.c 2000 390C nfc_tx_buf 2000 38D8 nfc_id_buf 2000 38d4 nfc_fw_buf 2000 3870 nfc_addr_buf 2000 29C0 rx_data e8(232) ruuvi_interface_communication_nfc_test.c 2000 2AC0 rx_data e8(232) ruuvi_interface_communication_ble_gatt_test. … 2000 2994 m_adv 2000 2990 m_timeout 2000 298F m_has_sent ruuvi_interface_communication_ble_gatt_test 2000 298E m_has_received 2000 298D m_has_disconnected 2000 298C m_has_connected 2000 2978 m_channel ruuvi_interface_communication_ble_advertising_test.c 2000 2975 level_int ruuvi_driver_sensor_test.c 2000 2974 fifo_int 2000 2958 __bss_start__ 2000 2940 m_fs fds.c .fs_data 2000 2940 __data_end__ … 2000 2450 __data_start__ defined in.ld
. See map as of 9/01/21 2000 244F SoftDevice RAM … 2000 0000 SoftDevice RAM
special FLASH 1000 10FC UICR->CUSTOMER[32] 1000 1080 UICR->CUSTOMER[0] 1000 1000 UICR 1000 0204 " 1000 0208 APPROTECT Access port protection blocks debugger access to all CPU registers and memory-mapped addresses. 1000 0200 Mapping of the nRESET 1000 0000 FICR Code RAM 0080 0000 unused by Ruuvi Firmware
ID Base Address Peripheral Instance 0 4000 0000 Clock control POWER Power control BPROT Block Protect 1 4000 1000 RADIO 2.4 GHz radio 2 4000 2000 UARTE0 with EasyDMA 3 4000 3000 SPI master/slave SPIM0 SPI master 0 SPIS0 SPI slave 0 TWIM0 Two-wire master 0 TWIS0 interface slave 4 4000 4000 SPIM1, SPIS1, SPI1 TWI1, TWIS1, TWIM1 5 4000 5000 NFCT 6 4000 6000 GPIOTE 7 4000 7000 SAADC 8 4000 8000 TIMER0 9 4000 9000 TIMER1 10 4000 A000 TIMER2 11 4000 B000 RTC0 12 4000 C000 TEMPerature sensor 13 4000 D000 RNG Random number generator 14 4000 E000 ECB AES Electronic Codebook (ECB) 15 4000 F000 CCM AES CCM mode encryption 15 4000 F000 ARR Accelerated address resolver | ID Base Address Peripheral Instance 16 4001 0000 WDT 17 4001 1000 RTC1 18 4001 2000 QDEC Quadrature decoder 19 4001 3000 LPCOMP, COMP 20 4001 4000 SWI0 Software interrupt EGU0 Event generator unit 21 4001 5000 EGU1, SWI1 22 4001 6000 EFU2, SWI2 23 4001 7000 EGU3, SWi3 24 4001 8000 EGU4, SWI4 25 4001 9000 EGU5, SWI4 26 4001 A000 TIMER3 27 4001 B000 TIMER4 28 4001 C000 PWM0 29 4001 D000 PDM Pulse-Density Modulation (digital microphone interface) 30 4001 E000 NVMC 31 4001 F000 PPI | ID Base Address Peripheral Instance 32 4002 0000 MWU 33 4002 1000 PWM1 34 4002 2000 PWM2 35 4002 3000 SPI2, SPIS2, SPIM2 36 4002 4000 RTC2 37 4002 5000 I2S 38 4002 6000 FPU 0 5000 0000 GPIO, P0 |
WDT §40 RWS Nordic RWS | ||
---|---|---|
mem32 40010400 1 | 1 running | Example 00000001 |
40010504 | Counter Reload Value | Example 012C0000 |
4001050C | 01 run while sleep 10 run while debugging | Example 00000001 Run while sleep, not while debugging |
FIELDDETECTED, FIELDLOST
NFC §42 | |||
40005404 | ERRORSTATUS Error Status register | ||
40005504 | FRAMEDELAYMIN | Minimum frame delay | |
40005590 | NFCID1_LAST Last NFCID1 part | (4, 7 or 10 bytes ID) | |
40005594 | 7 or 10 bytes ID | ||
40005598 | 10 bytes ID | ||
40005FFC | power?? | nrfx_nfc |
IPSR 0 = Thread mode 2 = NMI 3 = HardFault 4 = MemManage 5 = BusFault 6 = UsageFault 11 = SVCall 14 = PendSV 15 = SysTick 16 = IRQ0 . n+15 = IRQ(n-1)[a].
nRF52.h
mem32 1F000,64
0001 F000 = 20010000 00028A6D 00028A95 00028A97
0001 F010 = 00028A99 00028A9B 00028A9D 00000000
0001 F020 = 00000000 00000000 00000000 00028A9F
0001 F030 = 00028AA1 00000000 00028AA3 00028AA5
0001 F040 = 0002489D 00028AA7 00028AA7 00025421
0001 F050 = 00028AA7 00028491 00024CD5 00025831
0001 F060 = 000254B9 00025581 00025649 00028AA7
0001 F070 = 00028AA7 00024F9D 00028AA7 00028AA7
0001 F080 = 00023359 00027445 00028AA7 00028AA7
0001 F090 = 00027509 00028AA7 000289ED 00028AA7
0001 F0A0 = 00028AA7 00028AA7 00025711 0002821D
0001 F0B0 = 00028AA7 00028AA7 00000000 00000000
0001 F0C0 = 00028AA7 00028AA7 00028AA7 00028AA7
0001 F0D0 = 00025079 00028AA7 00028AA7 00000000
0001 F0E0 = 00000000 00000000 00000000 00000000
nRF52 has no means of detecting stack overflow.
Use Memory Watch Unit (MWU) to implement stack overflow detection.
Master Boot Record Param Page0007 F000 = 699C5732 00000002 00000001 00000001 0007 F010 = 00000000 00000000 000262A0 4CA0A93F 0 0 _start ? 0007 F020 = 00000001 00000000 00000000 00000000 0007 F030 = 00000000 00000000 00000000 00000000 0007 F040 = 00000000 00000000 00000000 00000000 0007 F050 = 00000000 00000000 00000000 FFFFFFFF … 0007 F250 = FFFFFFFF FFFFFFFF FFFFFFFF 0F25ED9A 0007 F260 = FFFFFF00 FFFFFFFF FFFFFFFF FFFFFFFF 0007 F270 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F280 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F290 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F2A0 = A93F01FF FFFF4CA0 FFFFFFFF FFFFFFFF 0007 F2B0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F2C0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F2D0 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 F2E0 = FF00FFFF FFFFFFFF FFFFFFFF FFFFFFFF 0007 E000 - duplicate of 0007 F000 - 0007 FFFF |