fix linker for 833
compile and able to flash but 52833 is not compatible with S140 v6, need to upgrade it to S140 v7
This commit is contained in:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -21,7 +21,7 @@ SD_FILENAME  = $(SD_NAME)_nrf52_$(SD_VERSION) | |||||||
| SD_API_PATH  = $(SD_PATH)/$(SD_FILENAME)_API | SD_API_PATH  = $(SD_PATH)/$(SD_FILENAME)_API | ||||||
| SD_HEX       = $(SD_PATH)/$(SD_FILENAME)_softdevice.hex | SD_HEX       = $(SD_PATH)/$(SD_FILENAME)_softdevice.hex | ||||||
|  |  | ||||||
| LD_FILE      = $(SRC_PATH)/linker/$(SD_NAME)_v$(word 1, $(subst ., ,$(SD_VERSION))).ld | LD_FILE      = $(SRC_PATH)/linker/$(MCU_SUB_VARIANT)_$(SD_NAME)_v$(word 1, $(subst ., ,$(SD_VERSION))).ld | ||||||
|  |  | ||||||
| MERGED_FNAME = $(OUTPUT_FILENAME)_$(SD_NAME)_$(SD_VERSION) | MERGED_FNAME = $(OUTPUT_FILENAME)_$(SD_NAME)_$(SD_VERSION) | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										91
									
								
								src/linker/nrf52833_s140_v6.ld
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/linker/nrf52833_s140_v6.ld
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | |||||||
|  | /* Linker script to configure memory regions. */ | ||||||
|  |  | ||||||
|  | SEARCH_DIR(.) | ||||||
|  | GROUP(-lgcc -lc -lnosys) | ||||||
|  |  | ||||||
|  | MEMORY | ||||||
|  | { | ||||||
|  |   /** Flash start address for the bootloader. This setting will also be stored in UICR to allow the | ||||||
|  |    *  MBR to init the bootloader when starting the system. This value must correspond to  | ||||||
|  |    *  BOOTLOADER_REGION_START found in dfu_types.h. The system is prevented from starting up if  | ||||||
|  |    *  those values do not match. The check is performed in main.c, see | ||||||
|  |    *  APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); | ||||||
|  |    */ | ||||||
|  |   FLASH (rx) : ORIGIN = 0x74000, LENGTH = 0x7E000-0x74000 /* 40 KB */ | ||||||
|  |  | ||||||
|  |   /** Location of mbr params page in flash. */ | ||||||
|  |   MBR_PARAMS_PAGE (rw) : ORIGIN = 0x0007E000, LENGTH = 0x1000 | ||||||
|  |    | ||||||
|  |   /** Location of bootloader setting in flash. */ | ||||||
|  |   BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0007F000, LENGTH = 0x1000 | ||||||
|  |    | ||||||
|  |    | ||||||
|  |    | ||||||
|  |   /** RAM Region for bootloader. */ | ||||||
|  |   /* Avoid conflict with NOINIT for OTA bond sharing */ | ||||||
|  |   RAM (rwx) :  ORIGIN = 0x20008000, LENGTH = 0x20020000-0x20008000 | ||||||
|  |  | ||||||
|  |   /* Location for double reset detection, no init */ | ||||||
|  |   DBL_RESET (rwx) :  ORIGIN = 0x20007F7C, LENGTH = 0x04 | ||||||
|  |    | ||||||
|  |   /** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information | ||||||
|  |    *  from application to bootloader when using buttonluss DFU OTA. */ | ||||||
|  |   NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80   | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   /** Location in UICR where bootloader start address is stored. */ | ||||||
|  |   UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04 | ||||||
|  |      | ||||||
|  |   /** Location in UICR where mbr params page address is stored. */ | ||||||
|  |   UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | SECTIONS | ||||||
|  | { | ||||||
|  |   .fs_data_out ALIGN(4): | ||||||
|  |   { | ||||||
|  |     PROVIDE( __start_fs_data = .); | ||||||
|  |     KEEP(*(fs_data)) | ||||||
|  |     PROVIDE( __stop_fs_data = .); | ||||||
|  |   } = 0 | ||||||
|  |  | ||||||
|  |   /* Place the bootloader settings page in flash. */ | ||||||
|  |   .bootloaderSettings(NOLOAD) : | ||||||
|  |   { | ||||||
|  |      | ||||||
|  |   } > BOOTLOADER_SETTINGS | ||||||
|  |  | ||||||
|  |   /* Write the bootloader address in UICR. */ | ||||||
|  |   .uicrBootStartAddress :  | ||||||
|  |   { | ||||||
|  |     KEEP(*(.uicrBootStartAddress)) | ||||||
|  |   } > UICR_BOOTLOADER | ||||||
|  |    | ||||||
|  |   /* Place the mbr params page in flash. */ | ||||||
|  |     .mbrParamsPage(NOLOAD) : | ||||||
|  |   { | ||||||
|  |      | ||||||
|  |   } > MBR_PARAMS_PAGE | ||||||
|  |    | ||||||
|  |   /* Write the bootloader address in UICR. */ | ||||||
|  |   .uicrMbrParamsPageAddress : | ||||||
|  |   { | ||||||
|  |     KEEP(*(.uicrMbrParamsPageAddress)) | ||||||
|  |   } > UICR_MBR_PARAM_PAGE | ||||||
|  |  | ||||||
|  |   .dbl_reset(NOLOAD) : | ||||||
|  |   { | ||||||
|  |  | ||||||
|  |   } > DBL_RESET | ||||||
|  |  | ||||||
|  |   /* No init RAM section in bootloader. Used for bond information exchange. */ | ||||||
|  |   .noinit(NOLOAD) : | ||||||
|  |   { | ||||||
|  |  | ||||||
|  |   } > NOINIT | ||||||
|  |  | ||||||
|  |   /* other placements follow here... */ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | INCLUDE "nrf_common.ld" | ||||||
| @@ -11,7 +11,15 @@ MEMORY | |||||||
|    *  those values do not match. The check is performed in main.c, see |    *  those values do not match. The check is performed in main.c, see | ||||||
|    *  APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); |    *  APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); | ||||||
|    */ |    */ | ||||||
|   FLASH (rx) : ORIGIN = 0xF4000, LENGTH = 0xA000 /* 40 KB */ |   FLASH (rx) : ORIGIN = 0xF4000, LENGTH = 0xFE000-0xF4000 /* 40 KB */ | ||||||
|  | 
 | ||||||
|  |   /** Location of mbr params page in flash. */ | ||||||
|  |   MBR_PARAMS_PAGE (rw) : ORIGIN = 0xFE000, LENGTH = 0x1000 | ||||||
|  |    | ||||||
|  |   /** Location of bootloader setting in flash. */ | ||||||
|  |   BOOTLOADER_SETTINGS (rw) : ORIGIN = 0xFF000, LENGTH = 0x1000 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|   /** RAM Region for bootloader. */ |   /** RAM Region for bootloader. */ | ||||||
|   /* Avoid conflict with NOINIT for OTA bond sharing */ |   /* Avoid conflict with NOINIT for OTA bond sharing */ | ||||||
| @@ -21,20 +29,14 @@ MEMORY | |||||||
|   DBL_RESET (rwx) :  ORIGIN = 0x20007F7C, LENGTH = 0x04 |   DBL_RESET (rwx) :  ORIGIN = 0x20007F7C, LENGTH = 0x04 | ||||||
|    |    | ||||||
|   /** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information |   /** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information | ||||||
|    *  from application to bootloader when using buttonluss DFU OTA.  |    *  from application to bootloader when using buttonluss DFU OTA. */ | ||||||
|    */ |  | ||||||
|   NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80 |   NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80 | ||||||
|    |    | ||||||
| 
 |    | ||||||
|   /** Location of bootloader setting in flash. */ |    | ||||||
|   BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x000FF000, LENGTH = 0x1000 |  | ||||||
| 
 |  | ||||||
|   /** Location in UICR where bootloader start address is stored. */ |   /** Location in UICR where bootloader start address is stored. */ | ||||||
|   UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04 |   UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04 | ||||||
|    |    | ||||||
|   /** Location of mbr params page in flash. */ |  | ||||||
|   MBR_PARAMS_PAGE (rw) : ORIGIN = 0x000FE000, LENGTH = 0x1000 |  | ||||||
|    |  | ||||||
|   /** Location in UICR where mbr params page address is stored. */ |   /** Location in UICR where mbr params page address is stored. */ | ||||||
|   UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04 |   UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04 | ||||||
| } | } | ||||||
| @@ -11,28 +11,31 @@ MEMORY | |||||||
|    *  those values do not match. The check is performed in main.c, see |    *  those values do not match. The check is performed in main.c, see | ||||||
|    *  APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); |    *  APP_ERROR_CHECK_BOOL(*((uint32_t *)NRF_UICR_BOOT_START_ADDRESS) == BOOTLOADER_REGION_START); | ||||||
|    */ |    */ | ||||||
|   FLASH (rx) : ORIGIN = 0x74000, LENGTH = 0xA000 /* 40 KB */ |   FLASH (rx) : ORIGIN = 0x74000, LENGTH = 0x7E000-0x74000 /* 40 KB */ | ||||||
|  | 
 | ||||||
|  |   /** Location of mbr params page in flash. */ | ||||||
|  |   MBR_PARAMS_PAGE (rw) : ORIGIN = 0x7E000, LENGTH = 0x1000 | ||||||
|  |    | ||||||
|  |   /** Location of bootloader setting in flash. */ | ||||||
|  |   BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x7F000, LENGTH = 0x1000 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|   /** RAM Region for bootloader. */ |   /** RAM Region for bootloader. */ | ||||||
|   RAM (rwx) :  ORIGIN = 0x20003000, LENGTH = 0x20007F7C-0x20003000 |   RAM (rwx) :  ORIGIN = 0x20008000, LENGTH = 0x20010000-0x20008000 | ||||||
| 
 | 
 | ||||||
|   /* Location for double reset detection, no init */ |   /* Location for double reset detection, no init */ | ||||||
|   DBL_RESET (rwx) :  ORIGIN = 0x20007F7C, LENGTH = 0x04 |   DBL_RESET (rwx) :  ORIGIN = 0x20007F7C, LENGTH = 0x04 | ||||||
| 
 | 
 | ||||||
|   /** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information |   /** Location of non initialized RAM. Non initialized RAM is used for exchanging bond information | ||||||
|    *  from application to bootloader when using buttonluss DFU OTA.  |    *  from application to bootloader when using buttonluss DFU OTA. */ | ||||||
|    */ |  | ||||||
|   NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80 |   NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80 | ||||||
| 
 | 
 | ||||||
|   /** Location of bootloader setting in flash. */ |  | ||||||
|   BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0007F000, LENGTH = 0x1000 |  | ||||||
| 
 | 
 | ||||||
|  |    | ||||||
|   /** Location in UICR where bootloader start address is stored. */ |   /** Location in UICR where bootloader start address is stored. */ | ||||||
|   UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04 |   UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04 | ||||||
|    |    | ||||||
|   /** Location of mbr params page in flash. */ |  | ||||||
|   MBR_PARAMS_PAGE (rw) : ORIGIN = 0x0007E000, LENGTH = 0x1000 |  | ||||||
|    |  | ||||||
|   /** Location in UICR where mbr params page address is stored. */ |   /** Location in UICR where mbr params page address is stored. */ | ||||||
|   UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04 |   UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04 | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user