stm32f4-uart-bootloader

Simple UART bootloader for STM32F4 MCU's
git clone git://git.mdnr.space/stm32f4-uart-bootloader
Log | Files | Refs | Submodules | README | LICENSE

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__