1
+ ### Changes between Memfault SDK 0.13.0 and SDK 0.12.0 - March 4, 2021
2
+
3
+ #### :chart_with_upwards_trend : Improvements
4
+
5
+ - Improved documentation in [ README] ( README.md ) and [ components] ( components/ )
6
+ directories.
7
+ - Added coredump capture support to panics component for the AARCH64
8
+ architecture.
9
+ - Reference platform API implementations for the following MCUs/SDKs:
10
+ - STM32WBxx family / STM32CubeWB:
11
+ - [ rich reboot reason info derived from RCC CSR register] ( ports/stm32cube/wb/rcc_reboot_tracking.c#L1 )
12
+ - nRF5 SDK
13
+ - [ app_timer based port for metric dependencies] ( ports/nrf5_sdk/memfault_platform_metrics.c#L1 )
14
+ - [ ` fw_build_id.py ` ] ( scripts/fw_build_id.py ) script improvements
15
+ - script is now compatible with Python2 environments.
16
+ - Added new ` --dump <chars> ` option to simplify extraction of build id in
17
+ automation, i.e:
18
+ ```
19
+ python scripts/fw_build_id.py <ELF> --dump 7
20
+ 3a3e81f
21
+ ```
22
+
23
+ #### :house: Internal
24
+
25
+ - Started work to enable automatic capture of logs in a coredump for the Zephyr
26
+ & nRF Connect SDK.
27
+
28
+ #### :boom: Breaking Changes
29
+
30
+ - If you were linking `memfault_nrf5_coredump.c` in your project:
31
+ - the file has been split into `nrf5_coredump_regions.c` (which defines the
32
+ regions to collect in a coredump) & `nrf5_coredump_storage.c` (which
33
+ implements the port for saving coredumps to internal flash). Both of these
34
+ files must be added to your build system.
35
+ - Linker script names for region to save coredump to and regions to collect
36
+ need to be updated:
37
+ - Update`__CoreStart` & `__MemfaultCoreStorageEnd` to
38
+ `__MemfaultCoreStorageStart` & `__MemfaultCoreStorageEnd` in linker
39
+ script.
40
+ - Update `__MfltCoredumpRamStart` & `__MfltCoredumpRamEnd` to
41
+ `__MemfaultCoredumpRamStart` & `__MemfaultCoredumpRamEnd`
42
+
1
43
### Changes between Memfault SDK 0.12.0 and SDK 0.11.4 - Feb 14, 2021
2
44
3
45
#### :chart_with_upwards_trend: Improvements
44
86
both` CONFIG_USING_ESP_CONSOLE=n ` and ` CONFIG_MEMFAULT_CLI_ENABLED=n `
45
87
- Added default implementations for ` MEMFAULT_GET_LR() ` , ` MEMFAULT_GET_PC() ` ,
46
88
and ` MEMFAULT_BREAKPOINT() ` to
47
- [ ` compiler_gcc.h ` ] ( components/core/ include/memfault/core/compiler_gcc.h ) to
89
+ [ ` compiler_gcc.h ` ] ( components/include/memfault/core/compiler_gcc.h ) to
48
90
facilitate compilations of the SDK against other architectures.
49
91
50
92
### Changes between Memfault SDK 0.11.3 and SDK 0.11.2 - Jan 31, 2021
174
216
#### :rocket : New Features
175
217
176
218
- Added several more
177
- [ reboot reason options] ( components/core/ include/memfault/core/reboot_reason_types.h#L16 ) :
219
+ [ reboot reason options] ( components/include/memfault/core/reboot_reason_types.h#L16 ) :
178
220
- ` kMfltRebootReason_PinReset ` for explicitly tracking external pin resets.
179
221
- ` kMfltRebootReason_SoftwareWatchdog ` & ` kMfltRebootReason_HardwareWatchdog `
180
222
for easier disambiguation between watchdog resets where a coredump was
241
283
#### :chart_with_upwards_trend : Improvements
242
284
243
285
- A log can now be captured alongside a trace event by using a new API:
244
- [ ` MEMFAULT_TRACE_EVENT_WITH_LOG(reason, ...) ` ] ( components/core/ include/memfault/core/trace_event.h#L77 ) .
286
+ [ ` MEMFAULT_TRACE_EVENT_WITH_LOG(reason, ...) ` ] ( components/include/memfault/core/trace_event.h#L77 ) .
245
287
This can be useful to capture arbitrary diagnostic data with an error event or
246
288
to capture critical error logs that you would like to be alerted on when they
247
289
happen. For example:
@@ -294,7 +336,7 @@ void record_temperature(void) {
294
336
forwarding Memfault chunks to the ESP32.
295
337
- The platform port for the memfault log dependency can now be implemented by
296
338
macros (rather than the `memfault_platform_log` dependency). See
297
- [`components/core/ include/memfault/core/debug_log.h`](components/core /include/memfault/core/debug_log.h)
339
+ [`components/include/memfault/core/debug_log.h`](components/include/memfault/core/debug_log.h)
298
340
for more details.
299
341
300
342
#### :boom: Breaking Changes
@@ -313,7 +355,7 @@ void record_temperature(void) {
313
355
the memory regions requested take up more space than the platform storage
314
356
allocated for saving. A warning will also be displayed in the Memfault UI when
315
357
this happens. Regions are always read in the order returned from
316
- [`memfault_platform_coredump_get_regions()`](components/panics/ include/memfault/panics/platform/coredump.h)
358
+ [`memfault_platform_coredump_get_regions()`](components/include/memfault/panics/platform/coredump.h)
317
359
so it is recommended to order this list from the most to least important
318
360
regions to capture.
319
361
- Updated FreeRTOS port to use static allocation APIs by default when the
@@ -324,7 +366,7 @@ void record_temperature(void) {
324
366
#### :chart_with_upwards_trend: Improvements
325
367
326
368
- Added several more
327
- [reboot reason options](components/core/ include/memfault/core/reboot_reason_types.h#L16):
369
+ [reboot reason options](components/include/memfault/core/reboot_reason_types.h#L16):
328
370
`kMfltRebootReason_SoftwareReset` & `kMfltRebootReason_DeepSleep`.
329
371
- Extended [ESP32 port](https://mflt.io/esp-tutorial) to include integrations
330
372
for [reboot reason tracking](https://mflt.io/reboot-reasons) and
@@ -337,7 +379,7 @@ void record_temperature(void) {
337
379
#### :chart_with_upwards_trend: Improvements
338
380
339
381
- Added a new convenience API,
340
- [`memfault_coredump_storage_check_size()`](components/panics/ include/memfault/panics/coredump.h),
382
+ [`memfault_coredump_storage_check_size()`](components/include/memfault/panics/coredump.h),
341
383
to check that coredump storage is appropriately sized.
342
384
- Fixed a :bug: with heartbeat timers that would lead to an incorrect duration
343
385
being reported if the timer was started and stopped within the same
@@ -365,8 +407,8 @@ void record_temperature(void) {
365
407
[memfault_event_storage.c](components/core/src/memfault_event_storage.c#L30)
366
408
- Added convenience API, `memfault_build_id_get_string`, for populating a buffer
367
409
with a portion of the
368
- [Memfault Build ID](components/core/ include/memfault/core/build_info.h#L8-L42)
369
- as a string.
410
+ [Memfault Build ID](components/include/memfault/core/build_info.h#L8-L42) as a
411
+ string.
370
412
- Added default implementations of several Memfault SDK dependency functions
371
413
when using FreeRTOS to [ports/freertos](ports/freertos).
372
414
@@ -376,7 +418,7 @@ void record_temperature(void) {
376
418
377
419
- A status or error code (i.e bluetooth disconnect reason, errno value, etc) can
378
420
now be logged alongside a trace event by using a new API:
379
- [`MEMFAULT_TRACE_EVENT_WITH_STATUS(reason, status_code)`](components/core/ include/memfault/core/trace_event.h#L55).
421
+ [`MEMFAULT_TRACE_EVENT_WITH_STATUS(reason, status_code)`](components/include/memfault/core/trace_event.h#L55).
380
422
381
423
### Changes between Memfault SDK 0.7.1 and SDK 0.7.0 - Sept 1, 2020
382
424
@@ -389,7 +431,7 @@ void record_temperature(void) {
389
431
paths within the SDK and leaves the NMI Handler free for other uses within the
390
432
user's environment.
391
433
- Added several more
392
- [reboot reason options](components/core/ include/memfault/core/reboot_reason_types.h#L16):
434
+ [reboot reason options](components/include/memfault/core/reboot_reason_types.h#L16):
393
435
`kMfltRebootReason_PowerOnReset`, `kMfltRebootReason_BrownOutReset`, &
394
436
`kMfltRebootReason_Nmi`.
395
437
@@ -398,7 +440,7 @@ void record_temperature(void) {
398
440
#### :chart_with_upwards_trend: Improvements
399
441
400
442
- Added utility to facilitate collection of the memory regions used by the
401
- [logging module](components/core/ include/memfault/core/log.h) as part of a
443
+ [logging module](components/include/memfault/core/log.h) as part of a
402
444
coredump. With this change, when the SDK is compiled with
403
445
`MEMFAULT_COREDUMP_COLLECT_LOG_REGIONS=1`, the logging region will
404
446
automatically be collected as part of a coredump. Step-by-step details can
@@ -432,7 +474,7 @@ void record_temperature(void) {
432
474
#### :rocket: New Features
433
475
434
476
- Added
435
- [memfault/core/data_export.h](components/core/ include/memfault/core/data_export.h#L5)
477
+ [memfault/core/data_export.h](components/include/memfault/core/data_export.h#L5)
436
478
API to facilitate production and evaluation use cases where Memfault data is
437
479
extracted over a log interface (i.e shell, uart console, log file, etc). See
438
480
the header linked above or the
@@ -552,7 +594,7 @@ void record_temperature(void) {
552
594
553
595
- Added native SDK support for tracking and generating a unique firmware build
554
596
id with any compiler! Quick integration steps can be found in
555
- [ memfault/core/build_info.h] ( components/core/ include/memfault/core/build_info.h#L8-L42 ) .
597
+ [ memfault/core/build_info.h] ( components/include/memfault/core/build_info.h#L8-L42 ) .
556
598
It is very common, especially during development, to not change the firmware
557
599
version between editing and compiling the code. This will lead to issues when
558
600
recovering backtraces or symbol information because the debug information in
@@ -581,8 +623,8 @@ void record_temperature(void) {
581
623
- ` $(MEMFAULT_SDK_ROOT)/components/core/src/memfault_build_id.c `
582
624
- ` $(MEMFAULT_SDK_ROOT)/components/core/src/memfault_core_utils.c `
583
625
- We also encourage you to add a
584
- [ unique build id] ( components/core/ include/memfault/core/build_info.h#L8-L42 )
585
- to your build (several line code change).
626
+ [ unique build id] ( components/include/memfault/core/build_info.h#L8-L42 ) to
627
+ your build (several line code change).
586
628
587
629
### Changes between Memfault SDK 0.4.0 and SDK 0.3.4 - May 6, 2020
588
630
@@ -592,14 +634,14 @@ void record_temperature(void) {
592
634
non-volatile storage mediums. This can be useful for devices which experience
593
635
prolonged periods of no connectivity. To leverage the feature, an end user
594
636
must implement the
595
- [ nonvolatile_event_storage platform API] ( components/core/ include/memfault/core/platform/nonvolatile_event_storage.h#L7 ) .
637
+ [ nonvolatile_event_storage platform API] ( components/include/memfault/core/platform/nonvolatile_event_storage.h#L7 ) .
596
638
597
639
#### :chart_with_upwards_trend : Improvements
598
640
599
641
- Added an assert used internally by the SDK which makes it easier to debug API
600
642
misuse during bringup. The assert is enabled by default but can easily be
601
643
disabled or overriden. For more details see
602
- [ ` memfault/core/sdk_assert.h ` ] ( components/core/ include/memfault/core/sdk_assert.h#L6 ) .
644
+ [ ` memfault/core/sdk_assert.h ` ] ( components/include/memfault/core/sdk_assert.h#L6 ) .
603
645
- Added a default implementation of
604
646
[ ` memfault_platform_halt_if_debugging() ` ] ( components/core/src/arch_arm_cortex_m.c#L20-L34 )
605
647
for Cortex-M targets. The function is defined as _ weak_ so a user can still
@@ -655,7 +697,7 @@ void record_temperature(void) {
655
697
#### :rocket : New Features
656
698
657
699
- The ` captured_date ` for an event can now be set by implementing
658
- [ ` memfault_platform_time_get_current() ` ] ( components/core/ include/memfault/core/platform/system_time.h#L33 ) .
700
+ [ ` memfault_platform_time_get_current() ` ] ( components/include/memfault/core/platform/system_time.h#L33 ) .
659
701
If the API is not implemented, the ` captured_date ` will continue to be set
660
702
based on the time the event was received by the memfault cloud.
661
703
@@ -666,13 +708,13 @@ void record_temperature(void) {
666
708
[ NRF52 demo app] ( platforms/nrf5/libraries/memfault/platform_reference_impl/memfault_platform_reboot_tracking.c#L1 )
667
709
and a new ` reboot ` CLI command to easily exercise it.
668
710
- A ` reset_reason ` can now optionally be provided as part of
669
- [ ` sResetBootupInfo ` ] ( components/panics/ include/memfault/core/reboot_tracking.h#L41 ) .
711
+ [ ` sResetBootupInfo ` ] ( components/include/memfault/core/reboot_tracking.h#L41 ) .
670
712
This can be useful for scenarios where the reboot reason is known on bootup
671
713
but could not be set prior to the device crashing.
672
714
- A reboot reason event will now _ always_ be generated when
673
715
` memfault_reboot_tracking_boot() ` is called even if no information about the
674
716
reboot has been provided. In this scenario, the reset reason will be
675
- [ ` kMfltRebootReason_Unknown ` ] ( components/core/ include/memfault/core/reboot_reason_types.h#L16 )
717
+ [ ` kMfltRebootReason_Unknown ` ] ( components/include/memfault/core/reboot_reason_types.h#L16 )
676
718
677
719
#### :house : Internal
678
720
@@ -695,8 +737,7 @@ void record_temperature(void) {
695
737
696
738
#### :rocket : New Features
697
739
698
- - Added
699
- [ ` memfault_log_read() ` ] ( components/core/include/memfault/core/log.h#L95-L121 )
740
+ - Added [ ` memfault_log_read() ` ] ( components/include/memfault/core/log.h#L95-L121 )
700
741
API to make it possible to use the module to cache logs in RAM and then flush
701
742
them out to slower mediums, such as a UART console or Flash, from a background
702
743
task.
@@ -705,7 +746,7 @@ void record_temperature(void) {
705
746
706
747
- A pointer to the stack frame upon exception entry is now included in
707
748
` sCoredumpCrashInfo ` when
708
- [ memfault_platform_coredump_get_regions] ( components/panics/ include/memfault/panics/platform/coredump.h#L56 )
749
+ [ memfault_platform_coredump_get_regions] ( components/include/memfault/panics/platform/coredump.h#L56 )
709
750
is invoked. This can (optionally) be used to configure regions collected based
710
751
on the state or run platform specific cleanup based on the state.
711
752
- Added Root Certificates needed for release downloads to
@@ -723,7 +764,7 @@ void record_temperature(void) {
723
764
- Introduced a lightweight logging module. When used, the logs leading up to a
724
765
crash will now be decoded and displayed from the Memfault Issue Details Web
725
766
UI. For instructions about how to use the module in your project, check out
726
- [ log.h] ( components/core/ include/memfault/core/log.h ) .
767
+ [ log.h] ( components/include/memfault/core/log.h ) .
727
768
- The metrics component will now automatically collect the elapsed time and the
728
769
number of unexpected reboots during a heartbeat interval. The Memfault cloud
729
770
now uses this information to automatically compute and display the overall
@@ -744,13 +785,12 @@ void record_temperature(void) {
744
785
- The function signature for ` memfault_metrics_boot() ` changed as part of this
745
786
update. If you are already using the ` metrics ` component, you will need to
746
787
update the call accordingly. See the notes in
747
- [ metrics.h] ( components/metrics/include/memfault/metrics/metrics.h ) for more
748
- details.
788
+ [ metrics.h] ( components/include/memfault/metrics/metrics.h ) for more details.
749
789
- If you are _ not_ using our CMake or Make
750
790
[ build system helpers] ( README.md#add-sources-to-build-system ) , you will need
751
791
to add ` $(MEMFAULT_SDK_ROOT)/components/core/src/memfault_log.c ` to your
752
792
project. (Note that until
753
- [ ` memfault_log_boot() ` ] ( https://github.com/memfault/memfault-firmware-sdk/blob/master/components/core/ include/memfault/core/log.h#L33-L38 )
793
+ [ ` memfault_log_boot() ` ] ( https://github.com/memfault/memfault-firmware-sdk/blob/master/components/include/memfault/core/log.h#L33-L38 )
754
794
is called, all calls made to the logging module will be a no-op).
755
795
756
796
### Changes between Memfault SDK 0.2.5 and SDK 0.2.4 - March 20, 2020
@@ -799,7 +839,7 @@ void record_temperature(void) {
799
839
800
840
- Add support for compressing coredumps as they are sent using Run Length
801
841
Encoding (RLE). More details can be found in
802
- [ memfault/core/data_source_rle.h] ( components/core/ include/memfault/core/data_source_rle.h ) .
842
+ [ memfault/core/data_source_rle.h] ( components/include/memfault/core/data_source_rle.h ) .
803
843
- Update ** metrics** component to support compilation with the IAR ARM C/C++
804
844
Compiler.
805
845
- Update Mbed OS 5 port to use ` memfault_demo_shell ` instead ` mbed-client-cli ` ,
@@ -848,8 +888,7 @@ void record_temperature(void) {
848
888
### Changes between Memfault SDK 0.0.16 and SDK 0.0.15 - Jan 6, 2020
849
889
850
890
- Add convenience API, ` memfault_packetizer_get_chunk() ` , to
851
- [ data_packetizer] ( components/core/include/memfault/core/data_packetizer.h )
852
- module.
891
+ [ data_packetizer] ( components/include/memfault/core/data_packetizer.h ) module.
853
892
- Add a new eMfltCoredumpRegionType, ` MemoryWordAccessOnly ` which can be used to
854
893
force the region to be read 32 bits at a time. This can be useful for
855
894
accessing certain peripheral register ranges which are not byte addressable.
0 commit comments