bootloader for nrf52832 seems to work well
This commit is contained in:
		| @@ -141,10 +141,7 @@ static void wait_for_events(void) | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Forced startup dfu mode timeout without any received packet |         // Forced startup dfu mode timeout without any received packet | ||||||
|         if (_terminate_startup_dfu) |         if (_terminate_startup_dfu) return; | ||||||
|         { |  | ||||||
|           return; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								src/Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/Makefile
									
									
									
									
									
								
							| @@ -43,6 +43,13 @@ MK_DIS_FIRMWARE = "$(SD_NAME) $(SD_VERSION_FULL)" | |||||||
| #****************************************************************************** | #****************************************************************************** | ||||||
| NRFUTIL = nrfutil | NRFUTIL = nrfutil | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ifneq ($(JLINK),) | ||||||
|  | NRFJPROG = nrfjprog -s $(JLINK) | ||||||
|  | else | ||||||
|  | NRFJPROG = nrfjprog  | ||||||
|  | endif | ||||||
|  |  | ||||||
| ifeq ($(OS),Windows_NT) | ifeq ($(OS),Windows_NT) | ||||||
| PROGFILES = C:/Program Files (x86) | PROGFILES = C:/Program Files (x86) | ||||||
| GNU_INSTALL_ROOT = $(PROGFILES)/GNU Tools ARM Embedded/6 2017-q2-update | GNU_INSTALL_ROOT = $(PROGFILES)/GNU Tools ARM Embedded/6 2017-q2-update | ||||||
| @@ -355,11 +362,11 @@ all: $(BUILD)/$(OUTPUT_FILENAME).out size | |||||||
|  |  | ||||||
| flash: $(BUILD)/$(OUTPUT_FILENAME).hex | flash: $(BUILD)/$(OUTPUT_FILENAME).hex | ||||||
| 	@echo Flashing: $< | 	@echo Flashing: $< | ||||||
| 	nrfjprog --program $< --sectoranduicrerase -f nrf52 --reset | 	$(NRFJPROG) --program $< --sectoranduicrerase -f nrf52 --reset | ||||||
| 	 | 	 | ||||||
| sd: | sd: | ||||||
| 	@echo Flashing: $(SD_HEX) | 	@echo Flashing: $(SD_HEX) | ||||||
| 	nrfjprog --program $(SD_HEX) -f nrf52 --chiperase  --reset	 | 	$(NRFJPROG) --program $(SD_HEX) -f nrf52 --chiperase  --reset	 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Create build directories | ## Create build directories | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								src/main.c
									
									
									
									
									
								
							| @@ -40,7 +40,6 @@ | |||||||
| #include "bootloader.h" | #include "bootloader.h" | ||||||
| #include "bootloader_util.h" | #include "bootloader_util.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "nrf.h" | #include "nrf.h" | ||||||
| #include "nrf_soc.h" | #include "nrf_soc.h" | ||||||
| #include "nrf_nvic.h" | #include "nrf_nvic.h" | ||||||
| @@ -64,14 +63,9 @@ | |||||||
| #include "tusb.h" | #include "tusb.h" | ||||||
| #include "usb/msc_uf2.h" | #include "usb/msc_uf2.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| void usb_init(void); | void usb_init(void); | ||||||
| void usb_teardown(void); | void usb_teardown(void); | ||||||
|  |  | ||||||
| /* tinyusb function that handles power event (detected, ready, removed) |  | ||||||
|  * We must call it within SD's SOC event handler, or set it as power event handler if SD is not enabled. */ |  | ||||||
| extern void tusb_hal_nrf_power_event(uint32_t event); |  | ||||||
|  |  | ||||||
| #else | #else | ||||||
|  |  | ||||||
| #define usb_init() | #define usb_init() | ||||||
| @@ -251,16 +245,16 @@ static uint32_t ble_stack_init(bool init_softdevice) | |||||||
|   // Enable Softdevice |   // Enable Softdevice | ||||||
|   nrf_clock_lf_cfg_t clock_cfg = |   nrf_clock_lf_cfg_t clock_cfg = | ||||||
|   { |   { | ||||||
| #if 0 | #ifdef NRF52840_XXAA // TODO use xtal source for feather52832 | ||||||
|       .source       = NRF_CLOCK_LF_SRC_RC, |  | ||||||
|       .rc_ctiv      = 16, |  | ||||||
|       .rc_temp_ctiv = 2, |  | ||||||
|       .accuracy     = NRF_CLOCK_LF_ACCURACY_20_PPM |  | ||||||
| #else |  | ||||||
|       .source       = NRF_CLOCK_LF_SRC_XTAL, |       .source       = NRF_CLOCK_LF_SRC_XTAL, | ||||||
|       .rc_ctiv      = 0, |       .rc_ctiv      = 0, | ||||||
|       .rc_temp_ctiv = 0, |       .rc_temp_ctiv = 0, | ||||||
|       .accuracy     = NRF_CLOCK_LF_ACCURACY_20_PPM |       .accuracy     = NRF_CLOCK_LF_ACCURACY_20_PPM | ||||||
|  | #else | ||||||
|  |       .source       = NRF_CLOCK_LF_SRC_RC, | ||||||
|  |       .rc_ctiv      = 16, | ||||||
|  |       .rc_temp_ctiv = 2, | ||||||
|  |       .accuracy     = NRF_CLOCK_LF_ACCURACY_20_PPM | ||||||
| #endif | #endif | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
| @@ -367,16 +361,22 @@ int main(void) | |||||||
|     // Initiate an update of the firmware. |     // Initiate an update of the firmware. | ||||||
|     APP_ERROR_CHECK( bootloader_dfu_start(_ota_update, 0) ); |     APP_ERROR_CHECK( bootloader_dfu_start(_ota_update, 0) ); | ||||||
|   } |   } | ||||||
|  | #ifdef NRF52832_XXAA | ||||||
|  |   else | ||||||
|  |   { | ||||||
|  |     /* Adafruit Modification | ||||||
|  |      * Even DFU is not active, we still force an 1000 ms dfu serial mode when startup | ||||||
|  |      * to support auto programming from Arduino IDE */ | ||||||
|  |     (void) bootloader_dfu_start(false, BOOTLOADER_STARTUP_DFU_INTERVAL); | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|   /*------------- Adafruit Factory reset -------------*/ |   /*------------- Adafruit Factory reset -------------*/ | ||||||
|   bool is_freset = ( !button_pressed(BOOTLOADER_BUTTON) && button_pressed(FRESET_BUTTON) ); |   bool is_freset = ( !button_pressed(BOOTLOADER_BUTTON) && button_pressed(FRESET_BUTTON) ); | ||||||
|  |  | ||||||
|   if (is_freset) |   if (is_freset) adafruit_factory_reset(); | ||||||
|   { |  | ||||||
|     adafruit_factory_reset(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   /*------------- Stop timer and jump to application -------------*/ |   /*------------- Hardware reset and jump to application -------------*/ | ||||||
|   app_timer_stop(blinky_timer_id); |   app_timer_stop(blinky_timer_id); | ||||||
|  |  | ||||||
|   led_off(LED_BLUE); |   led_off(LED_BLUE); | ||||||
| @@ -521,6 +521,7 @@ uint32_t proc_soc(void) | |||||||
|     pstorage_sys_event_handler(soc_evt); |     pstorage_sys_event_handler(soc_evt); | ||||||
|  |  | ||||||
| #ifdef NRF52840_XXAA | #ifdef NRF52840_XXAA | ||||||
|  |     extern void tusb_hal_nrf_power_event(uint32_t event); | ||||||
|     /*------------- usb power event handler -------------*/ |     /*------------- usb power event handler -------------*/ | ||||||
|     int32_t usbevt = (soc_evt == NRF_EVT_POWER_USB_DETECTED   ) ? NRFX_POWER_USB_EVT_DETECTED: |     int32_t usbevt = (soc_evt == NRF_EVT_POWER_USB_DETECTED   ) ? NRFX_POWER_USB_EVT_DETECTED: | ||||||
|                      (soc_evt == NRF_EVT_POWER_USB_POWER_READY) ? NRFX_POWER_USB_EVT_READY   : |                      (soc_evt == NRF_EVT_POWER_USB_POWER_READY) ? NRFX_POWER_USB_EVT_READY   : | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user