diff --git a/APP/FC7240_flash.ld b/APP/FC7240_flash.ld index 15a9930..6df9342 100644 --- a/APP/FC7240_flash.ld +++ b/APP/FC7240_flash.ld @@ -4,6 +4,16 @@ ENTRY(Reset_Handler) M_VECTOR_RAM_SIZE = 0x0400; +_MetadataSize = 256; + +_BootloaderSize = 256K; +_BootloaderBegin = 0x01000000; /* BANK1 */ + +_FirmwareSize = 512K; +_FirmwareMainBegin = _BootloaderBegin + _BootloaderSize; + +_FirmwareRecoveryBegin = 0x01010000; /* BANK2 */ + /* Specify the memory areas */ MEMORY { @@ -13,7 +23,10 @@ MEMORY SRAM0 (RW) : ORIGIN = 0x21000000, LENGTH = 0x00010000 /* 64KB */ SRAM1 (RW) : ORIGIN = 0x21010000, LENGTH = 0x00008000 /* 32KB */ - PFLASH (RW) : ORIGIN = 0x01000000, LENGTH = 0x00200000 /* 2MB */ + PFLASH_BOOT (RW) : ORIGIN = _BootloaderBegin, LENGTH = _BootloaderSize /* 256K */ + PFLASH_BOOT_META (RW) : ORIGIN = _BootloaderBegin + _BootloaderSize - _MetadataSize, LENGTH = _MetadataSize + PFLASH_MAIN (RW) : ORIGIN = _FirmwareMainBegin, LENGTH = _FirmwareSize /* 512K */ + PFLASH_RECOVERY (RW) : ORIGIN = _FirmwareRecoveryBegin, LENGTH = _FirmwareSize /* 512K */ DFLASH (RW) : ORIGIN = 0x04000000, LENGTH = 0x00020000 /* 128KB */ @@ -50,7 +63,31 @@ SECTIONS *(.fini) /* section used in crti.o files */ *(.eh_frame) /* section used in crtbegin.o files */ . = ALIGN(4); - } > PFLASH + } > PFLASH_BOOT + + .meta_boot : SUBALIGN(1) + { + __ram_boot_meta_start = .; + . = ALIGN(256); + KEEP(*(.meta_fw_crc)) + LONG(_FirmwareSize - _MetadataSize) ; /* word with firmware_size */ + + KEEP(*(.meta_internal_hw_year)) + KEEP(*(.meta_internal_hw_month)) + KEEP(*(.meta_internal_hw_day)) + KEEP(*(.meta_internal_hw_rev)) + + KEEP(*(.meta_internal_sw_year)) + KEEP(*(.meta_internal_sw_month)) + KEEP(*(.meta_internal_sw_day)) + KEEP(*(.meta_internal_sw_rev)) + + KEEP(*(.meta_finger_year)) + KEEP(*(.meta_finger_month)) + KEEP(*(.meta_finger_day)) + KEEP(*(.meta_finger_tester_serial)) + + } > PFLASH_BOOT_META .data : { @@ -83,7 +120,7 @@ SECTIONS /* All data end */ __ram_data_end = .; - } > DTCM AT > PFLASH + } > DTCM AT > PFLASH_BOOT /* Non-cache RAM section with data initialization */ .ncache_data : @@ -93,7 +130,7 @@ SECTIONS *(.nocacheable_data*) __ram_ncache_data_end = .; . = ALIGN(4); - } > SRAM1 AT > PFLASH + } > SRAM1 AT > PFLASH_BOOT diff --git a/APP/main.c b/APP/main.c index 72ddfbb..b29dccd 100644 --- a/APP/main.c +++ b/APP/main.c @@ -12,9 +12,10 @@ #include "DeviceStorage.h" #include "BootJump.h" -#define BOOT_AREA_LENGTH (256 * 1024) -#define FIRMWARE_MAIN_ADDR (0x01000000 + BOOT_AREA_LENGTH) -#define FIRMWARE_MAIN_RECOVERY_ADDR (FIRMWARE_MAIN_ADDR + FIRMWARE_MAIN_AREA_LENGTH) +#define BOOT_AREA_LENGTH (256 * 1024) // Размер загрузчика +#define FIRMWARE_MAIN_AREA_LENGTH (512 * 1024) // Размер основной программы +#define FIRMWARE_MAIN_ADDR (0x01000000 + BOOT_AREA_LENGTH) // Адрес основной программы +#define FIRMWARE_MAIN_RECOVERY_ADDR (FIRMWARE_MAIN_ADDR + FIRMWARE_MAIN_AREA_LENGTH) // Адрес основной программы (восстановление) typedef struct { tLoggerToSerialPort slog; diff --git a/CMakeLists.txt b/CMakeLists.txt index 925b3f2..ddad8d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,24 +19,41 @@ SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) #-- Project config ------------------------------------------------------------- PROJECT(HVAC_BOOT_M7) # Project name +SET(INTERNAL_HW_YEAR 0x26) +SET(INTERNAL_HW_MONTH 0x01) +SET(INTERNAL_HW_DAY 0x01) +SET(INTERNAL_HW_REV 0x01) + +SET(INTERNAL_SW_YEAR 0x26) +SET(INTERNAL_SW_MONTH 0x02) +SET(INTERNAL_SW_DAY 0x02) +SET(INTERNAL_SW_REV 0x02) + +SET(FINGER_YEAR 0x26) +SET(FINGER_MONTH 0x02) +SET(FINGER_DAY 0x24) +SET(FINGER_TESTER_SERIAL \"B\") + -SET(HARDWARE_REVISION 1.0.0) # -SET(VERSION \"1.0.0_BOOT_HVAC\") # -SET(VERSION_INTERFACE \"1.0_BOOT_INTERFACE\") # -SET(HARDWARE_USER_NAME "BOOT_HVAC") -#SET(VECT_TAB_OFFSET "0x100000") SET(VECT_TAB_OFFSET "0x00000") -SET(HEXT_VALUE "8000000") -SET(PLL_NS "125") - #-- Defines -------------------------------------------------------------------- -#ADD_DEFINITIONS(-DSET_ACCESS_PROTECTION) # Выставление защиты доступа к памяти -#ADD_DEFINITIONS(-DSET_WDT) # Выставление сторожевого таймера -ADD_DEFINITIONS(-DFIRMWARE_VERSION=${VERSION}) -ADD_DEFINITIONS(-DHARDWARE_REVISION=\"${HARDWARE_REVISION}\") -ADD_DEFINITIONS(-DFIRMWARE_INTERFACE_VERSION=${VERSION_INTERFACE}) +ADD_DEFINITIONS(-DINTERNAL_HW_YEAR=${INTERNAL_HW_YEAR}) +ADD_DEFINITIONS(-DINTERNAL_HW_MONTH=${INTERNAL_HW_MONTH}) +ADD_DEFINITIONS(-DINTERNAL_HW_DAY=${INTERNAL_HW_DAY}) +ADD_DEFINITIONS(-DINTERNAL_HW_REV=${INTERNAL_HW_REV}) + +ADD_DEFINITIONS(-DINTERNAL_SW_YEAR=${INTERNAL_SW_YEAR}) +ADD_DEFINITIONS(-DINTERNAL_SW_MONTH=${INTERNAL_SW_MONTH}) +ADD_DEFINITIONS(-DINTERNAL_SW_DAY=${INTERNAL_SW_DAY}) +ADD_DEFINITIONS(-DINTERNAL_SW_REV=${INTERNAL_SW_REV}) + +ADD_DEFINITIONS(-DFINGER_YEAR=${FINGER_YEAR}) +ADD_DEFINITIONS(-DFINGER_MONTH=${FINGER_MONTH}) +ADD_DEFINITIONS(-DFINGER_DAY=${FINGER_DAY}) +ADD_DEFINITIONS(-DFINGER_TESTER_SERIAL=${FINGER_TESTER_SERIAL}) + ADD_DEFINITIONS(-DUSING_OS_FREERTOS) ADD_DEFINITIONS(-DVERSION_SEDANL_Y=25) @@ -60,7 +77,6 @@ ADD_DEFINITIONS(-DVERSION_MPV_M=10) ADD_DEFINITIONS(-DVERSION_MPV_D=29) ADD_DEFINITIONS(-DVECT_TAB_OFFSET=${VECT_TAB_OFFSET}) -ADD_DEFINITIONS(-DHEXT_VALUE=${HEXT_VALUE}) ADD_DEFINITIONS(-DCMSIS_device_header="interrupt_manager.h") ADD_DEFINITIONS(-DFLASH_PAGE_SIZE=2048)