mirror of
https://github.com/oltaco/Adafruit_nRF52_Bootloader_OTAFIX.git
synced 2026-10-26 21:13:55 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61b4ca3354 | ||
|
|
a316c8bd67 | ||
|
|
25f6d395bc | ||
|
|
e66ee2af6d | ||
|
|
89be1cf9f8 | ||
|
|
d79fcb2ea5 | ||
|
|
5c38bc8957 | ||
|
|
fc13287837 | ||
|
|
19c3721151 | ||
|
|
47f0bed840 |
No files matched your search
@@ -28,7 +28,7 @@ SD_HEX = $(SD_PATH)/$(SD_FILENAME)_softdevice.hex
|
||||
LD_FILE = $(SRC_PATH)/linker/$(SD_NAME)_v$(SD_VER1).ld
|
||||
|
||||
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)"
|
||||
|
||||
@@ -26,7 +26,7 @@ $ pip3 install --user adafruit-nrfutil
|
||||
|
||||
This repository depends on the following submodules:
|
||||
|
||||
- [tinyusb](https://github.com/hathach/tinyusb/tree/develop)
|
||||
- [tinyusb](https://github.com/hathach/tinyusb)
|
||||
- [nrfx](https://github.com/NordicSemiconductor/nrfx)
|
||||
|
||||
Note that `tinyusb` also includes `nrfx` as a submodule, so you need
|
||||
|
||||
@@ -128,8 +128,9 @@ static void wait_for_events(void)
|
||||
app_sched_execute();
|
||||
|
||||
#ifdef NRF52840_XXAA
|
||||
// usb is not enabled in OTA
|
||||
if ( !is_ota() )
|
||||
// skip if usb is not inited ( e.g OTA / finializing sd/bootloader )
|
||||
extern bool usb_inited(void);
|
||||
if ( usb_inited() )
|
||||
{
|
||||
tusb_task();
|
||||
tud_cdc_write_flush();
|
||||
|
||||
@@ -741,7 +741,6 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
|
||||
case BLE_GAP_EVT_CONNECTED:
|
||||
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
|
||||
m_is_advertising = false;
|
||||
led_state(STATE_BLE_CONNECTED);
|
||||
break;
|
||||
|
||||
case BLE_GAP_EVT_DISCONNECTED:
|
||||
@@ -751,8 +750,6 @@ static void on_ble_evt(ble_evt_t * p_ble_evt)
|
||||
|
||||
m_direct_adv_cnt = APP_DIRECTED_ADV_TIMEOUT;
|
||||
|
||||
led_state(STATE_BLE_DISCONNECTED);
|
||||
|
||||
err_code = sd_ble_gatts_sys_attr_get(m_conn_handle,
|
||||
sys_attr,
|
||||
&sys_attr_len,
|
||||
|
||||
+9
-2
@@ -82,6 +82,7 @@ void board_init(void)
|
||||
app_timer_init();
|
||||
|
||||
// Configure Systick for led blinky
|
||||
NVIC_SetPriority(SysTick_IRQn, 7);
|
||||
extern uint32_t SystemCoreClock;
|
||||
SysTick_Config(SystemCoreClock/1000);
|
||||
}
|
||||
@@ -346,9 +347,11 @@ void neopixel_init(void)
|
||||
void neopixel_teardown(void)
|
||||
{
|
||||
uint8_t grb[3] = { 0, 0, 0 };
|
||||
neopixel_write(grb);
|
||||
|
||||
NRFX_DELAY_US(100);
|
||||
NRFX_DELAY_US(50); // wait for previous write is complete
|
||||
|
||||
neopixel_write(grb);
|
||||
NRFX_DELAY_US(50); // wait for this write
|
||||
|
||||
pwm_teardown(NRF_PWM2);
|
||||
}
|
||||
@@ -380,6 +383,10 @@ void neopixel_write (uint8_t *pixels)
|
||||
nrf_pwm_seq_cnt_set(pwm, 0, sizeof(pixels_pattern)/2);
|
||||
nrf_pwm_event_clear(pwm, NRF_PWM_EVENT_SEQEND0);
|
||||
nrf_pwm_task_trigger(pwm, NRF_PWM_TASK_SEQSTART0);
|
||||
|
||||
// no need to blocking wait for sequence complete
|
||||
// while( !nrf_pwm_event_check(pwm, NRF_PWM_EVENT_SEQEND0) ) {}
|
||||
// nrf_pwm_event_clear(pwm, NRF_PWM_EVENT_SEQEND0);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+14
-5
@@ -83,7 +83,7 @@ static struct TextFile const info[] = {
|
||||
};
|
||||
#define NUM_INFO (sizeof(info) / sizeof(info[0]))
|
||||
|
||||
#define UF2_SIZE (get_flash_size() * 2)
|
||||
#define UF2_SIZE (current_flash_size() * 2)
|
||||
#define UF2_SECTORS (UF2_SIZE / 512)
|
||||
#define UF2_FIRST_SECTOR (NUM_INFO + 1)
|
||||
#define UF2_LAST_SECTOR (UF2_FIRST_SECTOR + UF2_SECTORS - 1)
|
||||
@@ -120,7 +120,9 @@ static FAT_BootBlock const BootBlock = {
|
||||
#define NRF_LOG_WARNING(...)
|
||||
|
||||
static WriteState _wr_state = { 0 };
|
||||
static uint32_t get_flash_size(void)
|
||||
|
||||
// get current.uf2 flash size in bytes, round up to 256 bytes
|
||||
static uint32_t current_flash_size(void)
|
||||
{
|
||||
static uint32_t flash_sz = 0;
|
||||
|
||||
@@ -136,10 +138,17 @@ static uint32_t get_flash_size(void)
|
||||
bootloader_settings_t const * boot_setting;
|
||||
bootloader_util_settings_get(&boot_setting);
|
||||
|
||||
flash_sz = boot_setting->bank_0_size;
|
||||
|
||||
// Copy size must be multiple of 256 bytes
|
||||
// else we will got an issue copying current.uf2
|
||||
if (flash_sz & 0xff)
|
||||
{
|
||||
flash_sz = (flash_sz & ~0xff) + 256;
|
||||
}
|
||||
|
||||
// if bank0 size is not valid, happens when flashed with jlink
|
||||
// use maximum application size
|
||||
|
||||
flash_sz = boot_setting->bank_0_size;
|
||||
if ( (flash_sz == 0) || (flash_sz == 0xFFFFFFFFUL) )
|
||||
{
|
||||
flash_sz = FLASH_SIZE;
|
||||
@@ -217,7 +226,7 @@ void read_block(uint32_t block_no, uint8_t *data) {
|
||||
bl->magicStart1 = UF2_MAGIC_START1;
|
||||
bl->magicEnd = UF2_MAGIC_END;
|
||||
bl->blockNo = sectionIdx;
|
||||
bl->numBlocks = FLASH_SIZE / 256;
|
||||
bl->numBlocks = current_flash_size() / 256;
|
||||
bl->targetAddr = addr;
|
||||
bl->payloadSize = 256;
|
||||
bl->flags = UF2_FLAG_FAMILYID;
|
||||
|
||||
@@ -65,8 +65,20 @@ extern void tusb_hal_nrf_power_event(uint32_t event);
|
||||
|
||||
|
||||
//------------- IMPLEMENTATION -------------//
|
||||
static bool _inited = false;
|
||||
|
||||
bool usb_inited(void)
|
||||
{
|
||||
return _inited;
|
||||
}
|
||||
|
||||
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
|
||||
// We need to invoke the handler based on the status initially
|
||||
uint32_t usb_reg;
|
||||
|
||||
Reference in new issue
Block a user