mem-blocks.h (1812B)
1 #ifndef __MEM_BLOCKS_H__ 2 #define __MEM_BLOCKS_H__ 3 4 #include "libopencm3/cm3/vector.h" 5 #include "libopencm3/stm32/flash.h" 6 #include "shared/fwinfo.h" 7 #include "shared/parameters.h" 8 9 /* 10 * ### MEMORY MAP ### 11 * 12 * ******************************************** 0x0800000 Flash base / Bootloader start 13 * Bootloader: 16KB 14 * ******************************************** 0x0804000 Bootloader end / Parameters start 15 * Parameters: 8KB 16 * (Config and application settings) 17 * ----------------------- 0x8006000 18 * Doggy litter box: 8KB 19 * (Watchdog register dump area) 20 * ******************************************** 0x0808000 Parameters end / App start 21 * Vector table 22 * ------------------------ 23 * Firmware info 24 * (Version, size, etc) 25 * ----------------------- 26 * Application code 27 * 28 * */ 29 30 #define MEM_BL_SIZE (0x4000U) 31 #define MEM_PARAMS_OFFSET (FLASH_BASE + MEM_BL_SIZE) 32 #define MEM_PARAMS_SECTOR (0x1U) 33 #define MEM_DOGGY_LITTER_BOX_OFFSET (MEM_PARAMS_OFFSET + 0x2000) 34 #define MEM_DOGGY_LITTER_BOX_SIZE (0x2000) 35 #define MEM_PARAMS_SIZE (0x4000U) 36 #define MEM_APP_OFFSET (FLASH_BASE + MEM_BL_SIZE + MEM_PARAMS_SIZE) 37 #define MEM_APP_SECTOR (0x2U) 38 #define MEM_FW_CAPACITY (1024U * 512U - MEM_BL_SIZE - MEM_PARAMS_SIZE) 39 #define MEM_FW_INFO_OFFSET (MEM_APP_OFFSET + sizeof(vector_table_t)) 40 #define MEM_FW_INFO_VALIDATE_FROM (MEM_PARAMS_OFFSET) 41 #define MEM_FW_INFO_VALIDATE_LENGTH(fw_length) (fw_length + MEM_PARAMS_SIZE) 42 43 typedef enum { 44 FW_INFO_SENTINEL, 45 FW_INFO_DEVID, 46 FW_INFO_VERSION, 47 FW_INFO_LENGTH, 48 FW_INFO_CRC32, 49 } FWInfoElement_t; 50 51 #endif // __MEM_BLOCKS_H__