Skip to content

Commit 994aa70

Browse files
jtguggedaljhn-nordic
authored andcommitted
nrf_modem_lib: trace_backends: flash: Use DT info for flash
Use information from the device tree instead of hard-coded names and constants. This allows the backend to also run on targets that do not support partition manager, such as native_sim. Signed-off-by: Jan Tore Guggedal <[email protected]>
1 parent cd0f508 commit 994aa70

File tree

1 file changed

+13
-9
lines changed
  • lib/nrf_modem_lib/trace_backends/flash

1 file changed

+13
-9
lines changed

lib/nrf_modem_lib/trace_backends/flash/flash.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818

1919
LOG_MODULE_REGISTER(modem_trace_backend, CONFIG_MODEM_TRACE_BACKEND_LOG_LEVEL);
2020

21-
#define EXT_FLASH_DEVICE DEVICE_DT_GET(DT_ALIAS(ext_flash))
22-
#define TRACE_OFFSET FLASH_AREA_OFFSET(modem_trace)
23-
#define TRACE_SIZE CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_FLASH_PARTITION_SIZE
21+
/* Partition offset is implicit in flash_area */
2422

25-
#define BUF_SIZE CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_FLASH_BUF_SIZE
23+
#if USE_PARTITION_MANAGER
24+
#define MODEM_TRACE_PARTITION MODEM_TRACE
25+
#else
26+
#define MODEM_TRACE_PARTITION modem_trace
27+
#endif
2628

29+
#define BUF_SIZE CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_FLASH_BUF_SIZE
2730
#define TRACE_MAGIC_INITIALIZED 0x152ac523
2831

2932
static trace_backend_processed_cb trace_processed_callback;
@@ -155,7 +158,7 @@ static int trace_flash_erase(void)
155158

156159
LOG_INF("Erasing external flash");
157160

158-
err = flash_area_erase(modem_trace_area, 0, TRACE_SIZE);
161+
err = flash_area_erase(modem_trace_area, 0, modem_trace_area->fa_size);
159162
if (err) {
160163
LOG_ERR("flash_area_erase error: %d", err);
161164
}
@@ -176,7 +179,7 @@ int trace_backend_init(trace_backend_processed_cb trace_processed_cb)
176179

177180
trace_processed_callback = trace_processed_cb;
178181

179-
err = flash_area_open(FIXED_PARTITION_ID(MODEM_TRACE), &modem_trace_area);
182+
err = flash_area_open(FIXED_PARTITION_ID(MODEM_TRACE_PARTITION), &modem_trace_area);
180183
if (err) {
181184
LOG_ERR("flash_area_open error: %d", err);
182185
return -ENODEV;
@@ -211,7 +214,7 @@ int trace_backend_init(trace_backend_processed_cb trace_processed_cb)
211214
uint32_t f_sector_cnt = sizeof(trace_flash_sectors) / sizeof(struct flash_sector);
212215

213216
err = flash_area_get_sectors(
214-
FIXED_PARTITION_ID(MODEM_TRACE), &f_sector_cnt, trace_flash_sectors);
217+
FIXED_PARTITION_ID(MODEM_TRACE_PARTITION), &f_sector_cnt, trace_flash_sectors);
215218
if (err) {
216219
LOG_ERR("flash_area_get_sectors error: %d", err);
217220
return err;
@@ -227,7 +230,7 @@ int trace_backend_init(trace_backend_processed_cb trace_processed_cb)
227230
LOG_DBG("Sectors: %d, first sector: %p, sector size: %d",
228231
f_sector_cnt, trace_flash_sectors, trace_flash_sectors[0].fs_size);
229232

230-
err = fcb_init(FIXED_PARTITION_ID(MODEM_TRACE), &trace_fcb);
233+
err = fcb_init(FIXED_PARTITION_ID(MODEM_TRACE_PARTITION), &trace_fcb);
231234
if (err) {
232235
LOG_ERR("fcb_init error: %d", err);
233236
return err;
@@ -243,7 +246,8 @@ int trace_backend_init(trace_backend_processed_cb trace_processed_cb)
243246

244247
size_t trace_backend_data_size(void)
245248
{
246-
return trace_bytes_unread;
249+
/* Ensure we never report more data than the partition can hold */
250+
return MIN(trace_bytes_unread, modem_trace_area->fa_size);
247251
}
248252

249253
/* Read from offset

0 commit comments

Comments
 (0)