Skip to content

Commit 36e2597

Browse files
author
Memfault Inc
committed
Memfault Firmware SDK 1.26.0 (Build 14448)
1 parent 25ea383 commit 36e2597

33 files changed

+450
-76
lines changed

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,56 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to
77
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
88

9+
## [1.26.0] - 2025-06-26
10+
11+
This is a feature release, primarily addressing future compatibility changes for
12+
the next nRF-Connect SDK release.
13+
14+
### 📈 Added
15+
16+
- Zephyr:
17+
18+
- Add support for the ESP32 chip on Zephyr, adding to the existing support for
19+
ESP32-S3 and ESP32 C series chips.
20+
21+
- Add support for building the Memfault SDK on the `native_sim` board. Note
22+
that Memfault does not support reboot tracking or coredumps on this target,
23+
but other features are supported.
24+
25+
### 🛠️ Changed
26+
27+
- General:
28+
29+
- Add a `MEMFAULT_ENABLE_WARNING(warning)` macro complementing the existing
30+
`MEMFAULT_DISABLE_WARNING(warning)` macro. This macro is only implemented
31+
for GCC + Clang.
32+
33+
- Zephyr:
34+
35+
- Remove the External Module logic, used to support multiple Zephyr versions,
36+
and instead use the normal Zephyr module Kconfig path specifier. There
37+
should be no user-facing changes from this change. It addresses an issue
38+
with Kconfig symbol linting.
39+
40+
- In the [Zephyr QEMU sample app](examples/zephyr/qemu/qemu-app/prj.conf), add
41+
the `--param=min-pagesize=0x1000` compiler option, which will catch
42+
dereferences to low memory addresses. This is only for static analysis
43+
purposes and does not affect any behavior.
44+
45+
- ESP-IDF:
46+
47+
- The heartbeat metrics timer is now enabled by default when
48+
`CONFIG_MEMFAULT_DEEP_SLEEP_SUPPORT=y`. Version `1.25.0`, which added deep
49+
sleep support, had disabled the normal heartbeat metrics timer by default.
50+
The default behavior can be overridden with the Kconfig option
51+
`CONFIG_MEMFAULT_METRICS_HEARTBEAT_TIMER_ENABLE`.
52+
53+
- nRF-Connect SDK:
54+
55+
- Replace use of `LTE_LC_ON_CFUN` with `NRF_MODEM_LIB_ON_CFUN` for nRF-Connect
56+
SDK v2.8.0+. This deprecated API is scheduled to be removed in the next
57+
nRF-Connect SDK release.
58+
959
## [1.25.0] - 2025-06-09
1060

1161
This is a feature release of the Memfault Firmware SDK. The main new feature

VERSION

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
BUILD ID: 14245
2-
GIT COMMIT: 78b1f7da0b
3-
VERSION: 1.25.0
1+
BUILD ID: 14448
2+
GIT COMMIT: 6039672736
3+
VERSION: 1.26.0

cmake/Memfault.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,23 @@ function(memfault_library sdk_root components src_var_name inc_var_name)
5757
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_coredump_regions_armv7.c)
5858
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_arm.c)
5959
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_riscv.c)
60+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_posix.c)
6061
elseif(arch STREQUAL "ARCH_RISCV")
6162
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/core/src/arch_arm_cortex_m.c)
6263
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_coredump_regions_armv7.c)
6364
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_arm.c)
6465
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_xtensa.c)
66+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_posix.c)
6567
elseif(arch STREQUAL "ARCH_ARM_CORTEX_M")
6668
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_riscv.c)
6769
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_xtensa.c)
70+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_posix.c)
71+
elseif(arch STREQUAL "ARCH_POSIX")
72+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/core/src/arch_arm_cortex_m.c)
73+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_coredump_regions_armv7.c)
74+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_arm.c)
75+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_xtensa.c)
76+
list(REMOVE_ITEM SDK_SRC ${sdk_root}/components/panics/src/memfault_fault_handling_riscv.c)
6877
else()
6978
message(FATAL_ERROR "Unsupported Arch: ${arch}")
7079
endif()

components/include/memfault/core/compiler_armcc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ extern "C" {
3939
enum { MEMFAULT_CONCAT(MEMFAULT_ASSERTION_AT_, __LINE__) = sizeof(char[(expr) ? 1 : -1]) }
4040

4141
#define MEMFAULT_DISABLE_WARNING(warning)
42+
#define MEMFAULT_ENABLE_WARNING(warning)
4243

4344
#ifdef __cplusplus
4445
}

components/include/memfault/core/compiler_gcc.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,11 @@ extern "C" {
124124
#else
125125
#define MEMFAULT_PRAGMA_PREFIX GCC
126126
#endif
127-
#define MEMFAULT_DISABLE_WARNING(warning) \
128-
_Pragma(MEMFAULT_EXPAND_AND_QUOTE(MEMFAULT_PRAGMA_PREFIX diagnostic ignored warning))
127+
#define MEMFAULT_DISABLE_WARNING(warning) \
128+
_Pragma(MEMFAULT_EXPAND_AND_QUOTE(MEMFAULT_PRAGMA_PREFIX diagnostic push)) \
129+
_Pragma(MEMFAULT_EXPAND_AND_QUOTE(MEMFAULT_PRAGMA_PREFIX diagnostic ignored warning))
130+
#define MEMFAULT_ENABLE_WARNING(warning) \
131+
_Pragma(MEMFAULT_EXPAND_AND_QUOTE(MEMFAULT_PRAGMA_PREFIX diagnostic pop))
129132

130133
#ifdef __cplusplus
131134
}

components/include/memfault/core/compiler_iar.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ extern "C" {
3939
#define MEMFAULT_STATIC_ASSERT(cond, msg) static_assert(cond, msg)
4040

4141
#define MEMFAULT_DISABLE_WARNING(warning)
42+
#define MEMFAULT_ENABLE_WARNING(warning)
4243

4344
#ifdef __cplusplus
4445
}

components/include/memfault/core/compiler_ti_arm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ MEMFAULT_NAKED_FUNC static uint32_t __get_PSP(void) {
7373
#endif
7474

7575
#define MEMFAULT_DISABLE_WARNING(warning)
76+
#define MEMFAULT_ENABLE_WARNING(warning)
7677

7778
#ifdef __cplusplus
7879
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#pragma once
2+
3+
//! @file
4+
//!
5+
//! Copyright (c) Memfault, Inc.
6+
//! See LICENSE for details
7+
//!
8+
//! @brief
9+
//! Posix (Intel 80386) specific aspects of panic handling
10+
11+
#include <stdint.h>
12+
13+
#include "memfault/core/compiler.h"
14+
#include "memfault/core/reboot_reason_types.h"
15+
16+
#ifdef __cplusplus
17+
extern "C" {
18+
#endif
19+
20+
//! Register State collected for Intel 80386 when a fault occurs
21+
MEMFAULT_PACKED_STRUCT MfltRegState {
22+
uint32_t eip; //!< Instruction pointer
23+
uint32_t cs; //!< Code segment
24+
uint32_t eflags; //!< Flags register
25+
uint32_t esp; //!< Stack pointer
26+
uint32_t ss; //!< Stack segment
27+
uint32_t eax; //!< Accumulator register
28+
uint32_t ebx; //!< Base register
29+
uint32_t ecx; //!< Counter register
30+
uint32_t edx; //!< Data register
31+
uint32_t edi; //!< Destination index register
32+
uint32_t esi; //!< Source index register
33+
};
34+
35+
//! Called by platform assertion handlers to save info before triggering fault handling
36+
//!
37+
//! @param pc Pointer to address of assertion location
38+
//! @param lr Pointer to return address of assertion location
39+
//! @param reason Reboot reason for the assertion
40+
void memfault_arch_fault_handling_assert(void *pc, void *lr, eMemfaultRebootReason reason);
41+
42+
#ifdef __cplusplus
43+
}
44+
#endif

components/include/memfault/version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ typedef struct {
2020
} sMfltSdkVersion;
2121

2222
#define MEMFAULT_SDK_VERSION \
23-
{ .major = 1, .minor = 25, .patch = 0 }
24-
#define MEMFAULT_SDK_VERSION_STR "1.25.0"
23+
{ .major = 1, .minor = 26, .patch = 0 }
24+
#define MEMFAULT_SDK_VERSION_STR "1.26.0"
2525

2626
#ifdef __cplusplus
2727
}

components/panics/src/memfault_coredump.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ sMfltTraceReasonBlock;
9696

9797
typedef enum MfltCoredumpMachineType {
9898
kMfltCoredumpMachineType_None = 0,
99+
kMfltCoredumpMachineType_Intel80386 = 3,
99100
kMfltCoredumpMachineType_ARM = MEMFAULT_MACHINE_TYPE_ARM,
100101
kMfltCoredumpMachineType_Aarch64 = 183,
101102
kMfltCoredumpMachineType_Xtensa = MEMFAULT_MACHINE_TYPE_XTENSA,
@@ -272,6 +273,8 @@ static eMfltCoredumpMachineType prv_get_machine_type(void) {
272273
kMfltCoredumpMachineType_XtensaLx106
273274
#elif defined(__riscv)
274275
kMfltCoredumpMachineType_RiscV
276+
#elif defined(__i386__)
277+
kMfltCoredumpMachineType_Intel80386
275278
#else
276279
#error "Coredumps are not supported for target architecture"
277280
#endif

0 commit comments

Comments
 (0)