fix issue nrf52840 not reset properly when upgrading bootloader+sd combo
- root cause tusb_task()/cdc task is called when usb is not inited (in case of sd upgrade)
This commit is contained in:
parent
fc13287837
commit
5c38bc8957
2
Makefile
2
Makefile
@ -28,7 +28,7 @@ SD_HEX = $(SD_PATH)/$(SD_FILENAME)_softdevice.hex
|
|||||||
LD_FILE = $(SRC_PATH)/linker/$(SD_NAME)_v$(SD_VER1).ld
|
LD_FILE = $(SRC_PATH)/linker/$(SD_NAME)_v$(SD_VER1).ld
|
||||||
|
|
||||||
MERGED_FNAME = $(OUTPUT_FILENAME)_$(SD_NAME)_$(SD_VERSION)
|
MERGED_FNAME = $(OUTPUT_FILENAME)_$(SD_NAME)_$(SD_VERSION)
|
||||||
RELEASE_DIR = bin/$(BOARD)/$(SD_VERSION)
|
RELEASE_DIR = bin/$(BOARD)
|
||||||
|
|
||||||
|
|
||||||
MK_DIS_FIRMWARE = "$(SD_NAME) $(SD_VERSION)"
|
MK_DIS_FIRMWARE = "$(SD_NAME) $(SD_VERSION)"
|
||||||
|
@ -128,8 +128,9 @@ static void wait_for_events(void)
|
|||||||
app_sched_execute();
|
app_sched_execute();
|
||||||
|
|
||||||
#ifdef NRF52840_XXAA
|
#ifdef NRF52840_XXAA
|
||||||
// usb is not enabled in OTA
|
// skip if usb is not inited ( e.g OTA / finializing sd/bootloader )
|
||||||
if ( !is_ota() )
|
extern bool usb_inited(void);
|
||||||
|
if ( usb_inited() )
|
||||||
{
|
{
|
||||||
tusb_task();
|
tusb_task();
|
||||||
tud_cdc_write_flush();
|
tud_cdc_write_flush();
|
||||||
|
@ -65,8 +65,20 @@ extern void tusb_hal_nrf_power_event(uint32_t event);
|
|||||||
|
|
||||||
|
|
||||||
//------------- IMPLEMENTATION -------------//
|
//------------- IMPLEMENTATION -------------//
|
||||||
|
static bool _inited = false;
|
||||||
|
|
||||||
|
bool usb_inited(void)
|
||||||
|
{
|
||||||
|
return _inited;
|
||||||
|
}
|
||||||
|
|
||||||
void usb_init(bool cdc_only)
|
void usb_init(bool cdc_only)
|
||||||
{
|
{
|
||||||
|
// skipped if already inited
|
||||||
|
if ( _inited ) return;
|
||||||
|
|
||||||
|
_inited = true;
|
||||||
|
|
||||||
// USB power may already be ready at this time -> no event generated
|
// USB power may already be ready at this time -> no event generated
|
||||||
// We need to invoke the handler based on the status initially
|
// We need to invoke the handler based on the status initially
|
||||||
uint32_t usb_reg;
|
uint32_t usb_reg;
|
||||||
|
Loading…
Reference in New Issue
Block a user