Skip to content

Commit e1d27ec

Browse files
committed
Fixed sf32lb boot issues.
1 parent 6abdfca commit e1d27ec

6 files changed

Lines changed: 35 additions & 10 deletions

File tree

src/fw/board/boards/board_em_lb525.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,16 @@ static UARTDevice DBG_UART_DEVICE = {.state = &s_dbg_uart_state,
5656
.irq_priority = 1};
5757
UARTDevice *const DBG_UART = &DBG_UART_DEVICE;
5858
UARTDevice *const ACCESSORY_UART; //TODO
59+
60+
#ifdef USING_UART1
5961
IRQ_MAP(USART1, uart_irq_handler, DBG_UART);
62+
#else
63+
IRQ_MAP(USART3, uart_irq_handler, DBG_UART);
64+
#endif
6065

6166
void DMAC1_CH1_IRQHandler(void) { HAL_DMA_IRQHandler(&s_dbg_uart_rx_dma_handle); }
6267

6368

64-
6569
I2CBusState i2c1_state;
6670
I2CBus i2c1 = {
6771
.hal = &i2c1_hal_obj,

src/fw/drivers/flash/sf32lb52_int_flash.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,12 @@ static int prv_write_nor(uint32_t addr, uint8_t *buf, uint32_t size) {
108108
uint32_t taddr, start, remain, fill;
109109
uint8_t *tbuf;
110110
int res;
111+
111112
__disable_irq();
112113

113-
HAL_FLASH_SET_WDT(hflash, UINT16_MAX);
114114
hflash = &spi_flash_handle.handle;
115115

116+
HAL_FLASH_SET_WDT(hflash, UINT16_MAX);
116117
if ((addr < hflash->base) || (addr > (hflash->base + hflash->size))) return 0;
117118

118119
taddr = addr - hflash->base;
@@ -143,6 +144,7 @@ static int prv_write_nor(uint32_t addr, uint8_t *buf, uint32_t size) {
143144
}
144145

145146
__enable_irq();
147+
146148
return size;
147149
}
148150

src/fw/drivers/sf32lb/stubs/watchdog.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ McuRebootReason watchdog_clear_reset_flag(void) {
2525
McuRebootReason mcu_reboot_reason = {
2626
.brown_out_reset = 0,
2727
.pin_reset = 0,
28-
.power_on_reset = 0,
28+
.power_on_reset = 1,
2929
.software_reset = 0,
3030
.independent_watchdog_reset = 0,
3131
.window_watchdog_reset = 0,

src/fw/flash_region/flash_region_sf32lb_int.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,42 @@
2020
#define SHARED_PRF_STORAGE_SIZE (0x001000) /* 4k */
2121

2222
#define FLASH_REGION_FIRMWARE_BASE_ADDRESS (0x12300000) // 3M
23-
#define FLASH_REGION_FIRMWARE_SCRATCH_BEGIN (FLASH_REGION_FIRMWARE_BASE_ADDRESS)
23+
24+
// 0x12300000
25+
#define FLASH_REGION_FIRMWARE_SCRATCH_BEGIN (FLASH_REGION_FIRMWARE_BASE_ADDRESS)
2426
#define FLASH_REGION_FIRMWARE_SCRATCH_END (FLASH_REGION_FIRMWARE_BASE_ADDRESS + FIRMWARE_SCRATCH_SIZE)
27+
28+
// 0x12500000
2529
#define FLASH_REGION_SYSTEM_RESOURCES_BANK_0_BEGIN (FLASH_REGION_FIRMWARE_SCRATCH_END)
2630
#define FLASH_REGION_SYSTEM_RESOURCES_BANK_0_END (FLASH_REGION_SYSTEM_RESOURCES_BANK_0_BEGIN + SYSTEM_RESOURCES_BANK_0_SIZE)
31+
32+
// 0x12600000
2733
#define FLASH_REGION_SYSTEM_RESOURCES_BANK_1_BEGIN (FLASH_REGION_SYSTEM_RESOURCES_BANK_0_END)
2834
#define FLASH_REGION_SYSTEM_RESOURCES_BANK_1_END (FLASH_REGION_SYSTEM_RESOURCES_BANK_1_BEGIN + SYSTEM_RESOURCES_BANK_1_SIZE)
35+
36+
// 0x12700000
2937
#define FLASH_REGION_SAFE_FIRMWARE_BEGIN (FLASH_REGION_SYSTEM_RESOURCES_BANK_1_END)
3038
#define FLASH_REGION_SAFE_FIRMWARE_END (FLASH_REGION_SAFE_FIRMWARE_BEGIN + SAFE_FIRMWARE_SIZE)
39+
40+
// 0x12780000
3141
#define FLASH_REGION_DEBUG_DB_BEGIN (FLASH_REGION_SAFE_FIRMWARE_END)
3242
#define FLASH_REGION_DEBUG_DB_END (FLASH_REGION_DEBUG_DB_BEGIN + DEBUG_DB_SIZE)
3343
#define FLASH_DEBUG_DB_BLOCK_SIZE SUBSECTOR_SIZE_BYTES
44+
45+
// 0x127A0000
3446
#define FLASH_REGION_MFG_INFO_BEGIN (FLASH_REGION_DEBUG_DB_END)
3547
#define FLASH_REGION_MFG_INFO_END (FLASH_REGION_MFG_INFO_BEGIN + MFG_INFO_SIZE)
48+
49+
// 0x127C0000
3650
#define FLASH_REGION_FILESYSTEM_BEGIN (FLASH_REGION_MFG_INFO_END)
3751
#define FLASH_REGION_FILESYSTEM_END (FLASH_REGION_FILESYSTEM_BEGIN + FILESYSTEM_SIZE)
3852
#define FLASH_FILESYSTEM_BLOCK_SIZE SUBSECTOR_SIZE_BYTES
53+
54+
// 0x12FC0000
3955
#define FLASH_REGION_SHARED_PRF_STORAGE_BEGIN (FLASH_REGION_FILESYSTEM_END)
4056
#define FLASH_REGION_SHARED_PRF_STORAGE_END (FLASH_REGION_SHARED_PRF_STORAGE_BEGIN + SHARED_PRF_STORAGE_SIZE)
57+
58+
// 0x12FC1000
4159
#define FLASH_REGION_RSVD_BEGIN (FLASH_REGION_SHARED_PRF_STORAGE_END)
4260
#define FLASH_REGION_RSVD_END (FLASH_REGION_RSVD_BEGIN + RSVD_SIZE)
4361
#define FLASH_REGION_SHARED_PRF_STORAGE_SIZE (FLASH_REGION_SHARED_PRF_STORAGE_END - FLASH_REGION_SHARED_PRF_STORAGE_BEGIN)

src/fw/startup/startup_sf32lb.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ __attribute__((naked)) NORETURN Reset_Handler(void) {
7070

7171
// Copy data section from flash to RAM
7272
// memcpy(__data_start, __data_load_start, __data_end - __data_start);
73-
for (uint32_t i = 0; i < (__data_end - __data_start); i++) {
73+
for (int i = 0; i < (__data_end - __data_start); i++) {
7474
__data_start[i] = __data_load_start[i];
7575
}
7676
boot_uart_tx("data copied\n", 12);
7777

7878
// memcpy(__retm_ro_start, __retm_ro_load_start, __retm_ro_end - __retm_ro_start);
79-
for (uint32_t i = 0; i < (__retm_ro_end - __retm_ro_start); i++) {
79+
for (int i = 0; i < (__retm_ro_end - __retm_ro_start); i++) {
8080
__retm_ro_start[i] = __retm_ro_load_start[i];
8181
}
8282
boot_uart_tx("retm copied\n", 12);

src/fw/wscript

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def _generate_memory_layout(bld):
171171
# FIXME: The runtime_reserved size could be reduced for diorite
172172
'diorite': AppRamSize(66 * 1024, 30 * 1024),
173173
'emery': AppRamSize(130 * 1024, 62 * 1024),
174-
'sf32lb': AppRamSize(130 * 1024, 62 * 1024),
174+
'sf32lb': AppRamSize(128 * 1024, 64 * 1024),
175175
}
176176
APP_UNSUPPORTED = AppRamSize(0, 0)
177177

@@ -231,10 +231,11 @@ def _generate_memory_layout(bld):
231231
retained_size = 256
232232
total_ram = (0x20000000 + retained_size, 256 * 1024 - retained_size)
233233
elif bld.is_obelix():
234-
app_ram_size_2x = APP_RAM_SIZES['aplite']
235-
app_ram_size_3x = APP_RAM_SIZES['basalt']
234+
app_ram_size_2x = APP_RAM_SIZES['sf32lb']
235+
app_ram_size_3x = APP_RAM_SIZES['aplite']
236236
app_ram_size_4x = APP_RAM_SIZES['diorite']
237-
total_ram = (0x20000000, 512 * 1024)
237+
retained_size = 256
238+
total_ram = (0x20000000 + retained_size, 512 * 1024 - retained_size)
238239
else:
239240
bld.fatal("No set of supported SDK platforms defined for this board")
240241

0 commit comments

Comments
 (0)