Giter Club home page Giter Club logo

buttoncrash's Introduction

This exercise walks through the process of how to enable core dump, activate a premade function that will result in a fatal error Zephyr and then how to extract information from this. 
To make the exercise more interactive we use the same button sample as in exercise 1 with modifications. The project contains three functions where the which will call each other and results in a fatal error for zephyr.
When the error occurs the application will send the crash dump over the interface specified in your prj.conf. In this example we use the logg module. 

### Step 1
Download the project from the github[INSERT LINK] and open Lesson 2 Exercise 2

#### Step 1.1:
Enable Core dump in the prj.conf
```CONFIG_DEBUG_COREDUMPy```
#### Step 1.2:
Select backend for Core dump in prj.conf
```CONFIG_DEBUG_COREUMP_BACKEND_LOGGING=y```

### Step 2: 
Include the core dump header in the main.c
```#include <zephyr/debug/coredump.h>```

### Step 3: 
Add the button_crash function into the button_pressed function so it is called when the user presses button 1. The button_crash shall have a 0 as input.

```
void button_pressed(const struct device *dev, struct gpio_callback *cb,
		    uint32_t pins)
{
	printk("Button pressed at %" PRIu32 "\n", k_cycle_get_32());
	printk("Coredump: %s\n", CONFIG_BOARD);
	// step 3 Call crash_function function with a null as input variable
	crash_function(0);
}

```


### Step 4:
Compile the application and flash it to the board

### Step 5: 
Open a serial terminal to device: You should see an output similar to this:
```
*** Booting Zephyr OS build v3.3.99-ncs1-1 ***g system
Lesson 2 Exercise 2 Started
Set up button at gpio@50000000 pin 11
Set up LED at gpio@50000000 pin 13
Press the button to start the lesson 
```

### Step 6: 
Press the button 1 to crash the device, you should see an output similar to this
```
Button pressed at 830400
Coredump: nrf52840dk_nrf52840
[00:00:25.341,857] <err> os: ***** USAGE FAULT *****
[00:00:25.341,888] <err> os:   Attempt to execute undefined instruction
[00:00:25.341,888] <err> os: r0/a1:  0x00000001  r1/a2:  0x00000000  r2/a3:  0x00000002
[00:00:25.341,918] <err> os: r3/a4:  0x20000218 r12/ip:  0x0000000c r14/lr:  0x000003eb
[00:00:25.341,918] <err> os:  xpsr:  0x81000016
[00:00:25.341,949] <err> os: Faulting instruction address (r15/pc): 0x000003ea
[00:00:25.341,979] <err> os: >>> ZEPHYR FATAL ERROR 36: Unknown error on CPU 0
[00:00:25.341,979] <err> os: Fault during interrupt handling

[00:00:25.342,041] <err> os: Current thread: 0x200006f8 (unknown)
[00:00:25.433,898] <err> coredump: #CD:BEGIN#
[00:00:25.479,125] <err> coredump: #CD:5a4501000300050024000000
[00:00:25.485,992] <err> coredump: #CD:4102004400
[00:00:25.491,638] <err> coredump: #CD:010000000000000002000000180200200c000000eb030000ea03000016000081
[00:00:25.502,044] <err> coredump: #CD:c020002000000000000000000000000000000000000000000000000000000000
[00:00:25.512,390] <err> coredump: #CD:00000000
[00:00:25.517,852] <err> coredump: #CD:4d01000000002000270020
[00:00:25.524,536] <err> coredump: #CD:d87900000d000100dd3900009b6f0000ffffffffb80100203a000000cc010020
[00:00:25.534,973] <err> coredump: #CD:3a000000a40100203a000000f40100203a000000dd3900000000002000270020
[00:00:25.545,349] <err> coredump: #CD:00000000000000009935000085360000d93500007135000085350000f0790000
[00:00:25.555,786] <err> coredump: #CD:00c201000001030000000000a9110020a8110020130000000000000000000000
[00:00:25.566,192] <err> coredump: #CD:113b0000000000000000000000000000000000000000000000000000000029e0
[00:00:25.576,599] <err> coredump: #CD:0000030000000000000000000000000000000000000000000000000000000000
[00:00:25.587,005] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:25.597,381] <err> coredump: #CD:00000000000000007f0000000100000001000000ffff07009007002090070020
[00:00:25.607,788] <err> coredump: #CD:00000000d37000002c000020240000201c000020000000001400002051260000
[00:00:25.618,194] <err> coredump: #CD:4525000099250000f9250000000000003a00003a000000003a00003a00000000
[00:00:25.628,601] <err> coredump: #CD:3a00003a000000003a00003a5401002018010020100100200c01002008010020
[00:00:25.639,007] <err> coredump: #CD:0001000100010001f0000000f0000000f0000000f000000003000000d56f0000
[00:00:25.649,414] <err> coredump: #CD:776f000098020020000100000000000090010020900100200100000001000000
[00:00:25.659,820] <err> coredump: #CD:00000000a4010020a401002000000000000000000e000000b8010020b8010020
[00:00:25.670,227] <err> coredump: #CD:00000000000000000e000000cc010020cc01002000000000000000000e000000
[00:00:25.680,633] <err> coredump: #CD:e0010020e001002000000000000000000f000000f4010020f401002000000000
[00:00:25.691,040] <err> coredump: #CD:000000000e000000080200200802002000000000010000001c0f00201c0f0020
[00:00:25.701,446] <err> coredump: #CD:0000000000800e00000000000000000000000000000000000000000000000000
[00:00:25.711,853] <err> coredump: #CD:0000000000000000ffffffff0000000000000000387c0000ffffffffffffffff
[00:00:25.722,259] <err> coredump: #CD:0802002000000000a81800200000000070020020700200200000000000160020
[00:00:25.732,666] <err> coredump: #CD:000300000000000000000000000000000000000000000000409c0000c87b0000
[00:00:25.743,072] <err> coredump: #CD:cbd10c00000000000301000014870000b5020020023030303130303031303030
[00:00:25.753,479] <err> coredump: #CD:3030303030303330313030303031343837303030306235303230303230303233
[00:00:25.763,885] <err> coredump: #CD:303330333033313330333033303331333033303330000000409c0000c87b0000
[00:00:25.774,261] <err> coredump: #CD:72e00c000d000000030100001487000015030020023330333033303330333033
[00:00:25.784,667] <err> coredump: #CD:3033333330333133303330333033303331333433383337333033303330333036
[00:00:25.795,104] <err> coredump: #CD:323335333033323330333033323330333033323333000000409c0000c87b0000
[00:00:25.805,480] <err> coredump: #CD:c7e10c00f87b0000030100001487000075030020023330333333303333333033
[00:00:25.815,887] <err> coredump: #CD:3333313333333033333330333333303333333133333330333333303333333030
[00:00:25.826,293] <err> coredump: #CD:303030303034303963303030306338376230303030000000409c0000c87b0000
[00:00:25.836,700] <err> coredump: #CD:1be30c00000000000301000014870000d5030020023732653030633030306430
[00:00:25.847,106] <err> coredump: #CD:3030303030303330313030303031343837303030303135303330303230303233
[00:00:25.857,513] <err> coredump: #CD:333330333333303333333033333330333333303333000000409c0000c87b0000
[00:00:25.867,889] <err> coredump: #CD:70e40c00f87b0000030100001487000035040020023330333333333333333033
[00:00:25.878,295] <err> coredump: #CD:3333313333333033333330333333303333333033333331333333343333333833
[00:00:25.888,702] <err> coredump: #CD:333337333333303333333033333330333333303336000000409c0000c87b0000
[00:00:25.899,108] <err> coredump: #CD:c6e50c00c87b0000030100001487000095040020023332333333353333333033
[00:00:25.909,515] <err> coredump: #CD:6230303030303330313030303031343837303030303935303430303230303233
[00:00:25.919,921] <err> coredump: #CD:333332333333333333333533333333333333303333000000409c0000c87b0000
[00:00:25.930,328] <err> coredump: #CD:6bf40c00148700000301000014870000f5040020023632333033303330333033
[00:00:25.940,734] <err> coredump: #CD:3033333330333133303330333033303331333433383337333033303330333033
[00:00:25.951,141] <err> coredump: #CD:393335333033343330333033323330333033323333006330409c0000c87b0000
[00:00:25.961,547] <err> coredump: #CD:c0f50c0030656130030100001487000055050020023333333333323333333333
[00:00:25.971,954] <err> coredump: #CD:3333333333333333333335333333333333333333333333333333303333333330
[00:00:25.982,330] <err> coredump: #CD:303030303034303963303030306338376230303030003030409c0000c87b0000
[00:00:25.992,736] <err> coredump: #CD:15f70c00303030300301000014870000b5050020023662663430633030313438
[00:00:26.003,143] <err> coredump: #CD:3730303030303330313030303031343837303030306635303430303230303233
[00:00:26.013,549] <err> coredump: #CD:363332333333303333333033333330333333303333000000409c0000c87b0000
[00:00:26.023,956] <err> coredump: #CD:6af80c0030303030030100001487000015060020023330333333333333333033
[00:00:26.034,332] <err> coredump: #CD:3333313333333033333330333333303333333033333331333333343333333833
[00:00:26.044,738] <err> coredump: #CD:3333373333333033333330333333303333333033330066664200000066623830
[00:00:26.055,145] <err> coredump: #CD:3130303230336130303030303063633031303032300000002200000000000000
[00:00:26.065,551] <err> coredump: #CD:000000000000000000000000000000000000000000000000c82c010000000000
[00:00:26.075,958] <err> coredump: #CD:0000000000000000cd61000000000000e27f000000000000b8060020b8060020
[00:00:26.086,364] <err> coredump: #CD:7917000000000000000000000000000000000000000000008d41000000000000
[00:00:26.096,771] <err> coredump: #CD:dfab0c0000000000bcab0c000000000000000000000000000000000000000000
[00:00:26.107,147] <err> coredump: #CD:0000000001000f00000000000000000000000000000000000000000000000000
[00:00:26.117,553] <err> coredump: #CD:0000000000000000000f0020ba15002000000000000000000000000000000000
[00:00:26.127,960] <err> coredump: #CD:0000000000000000902200200000000050070020500700200000000080210020
[00:00:26.138,336] <err> coredump: #CD:4001000000000000000000000000000000000000000000000000000000000000
[00:00:26.148,742] <err> coredump: #CD:00000000011000000000000000000000f8000020f8000020f177000000000000
[00:00:26.159,149] <err> coredump: #CD:2300000000000000deab0c002100000000000000000f00200000000000000000
[00:00:26.169,555] <err> coredump: #CD:00000000000000009026002000000000d0070020d00700200000000000230020
[00:00:26.179,962] <err> coredump: #CD:00040000000000000000000000000000f5ffffff000000000000000000000000
[00:00:26.190,368] <err> coredump: #CD:00000000000000000000000000000000bcab0c000000000000000000d5030000
[00:00:26.200,775] <err> coredump: #CD:0008000068010020180200200000000000000000020000000100000000800000
[00:00:26.211,181] <err> coredump: #CD:0000000001010400000000000000000000000000000000000000000002010400
[00:00:26.221,557] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.231,964] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.242,370] <err> coredump: #CD:00000000000000009408002000000000000000000000000000000000a8080020
[00:00:26.252,777] <err> coredump: #CD:00000000000000000000000000000000bc080020000000000000000000000000
[00:00:26.263,153] <err> coredump: #CD:00000000d008002000000000000000000000000000000000e408002000000000
[00:00:26.273,559] <err> coredump: #CD:000000000000000000000000f808002000000000000000000000000000000000
[00:00:26.283,966] <err> coredump: #CD:0c09002000000000000000000000000000000000200900200000000000000000
[00:00:26.294,342] <err> coredump: #CD:0000000000000000340900200000000000000000000000000000000048090020
[00:00:26.304,748] <err> coredump: #CD:000000000000000000000000000000005c090020000000000000000000000000
[00:00:26.315,155] <err> coredump: #CD:0000000070090020000000000000000000000000000000008409002000000000
[00:00:26.325,531] <err> coredump: #CD:0000000000000000000000009809002000000000000000000000000000000000
[00:00:26.335,937] <err> coredump: #CD:ac09002000000000000000000000000000000000c00900200000000000000000
[00:00:26.346,343] <err> coredump: #CD:0000000000000000d409002000000000000000000000000000000000e8090020
[00:00:26.356,750] <err> coredump: #CD:00000000000000000000000000000000fc090020000000000000000000000000
[00:00:26.367,126] <err> coredump: #CD:00000000100a002000000000000000000000000000000000240a002000000000
[00:00:26.377,532] <err> coredump: #CD:000000000000000000000000380a002000000000000000000000000000000000
[00:00:26.387,939] <err> coredump: #CD:4c0a002000000000000000000000000000000000600a00200000000000000000
[00:00:26.398,345] <err> coredump: #CD:0000000000000000740a002000000000000000000000000000000000880a0020
[00:00:26.408,721] <err> coredump: #CD:000000000000000000000000000000009c0a0020000000000000000000000000
[00:00:26.419,128] <err> coredump: #CD:00000000b00a002000000000000000000000000000000000c40a002000000000
[00:00:26.429,534] <err> coredump: #CD:000000000000000000000000d80a002000000000000000000000000000000000
[00:00:26.439,941] <err> coredump: #CD:ec0a002000000000000000000000000000000000000b00200000000000000000
[00:00:26.450,347] <err> coredump: #CD:0000000000000000140b002000000000000000000000000000000000280b0020
[00:00:26.460,723] <err> coredump: #CD:000000000000000000000000000000003c0b0020000000000000000000000000
[00:00:26.471,130] <err> coredump: #CD:00000000500b002000000000000000000000000000000000640b002000000000
[00:00:26.481,536] <err> coredump: #CD:000000000000000000000000780b002000000000000000000000000000000000
[00:00:26.491,943] <err> coredump: #CD:8c0b002000000000000000000000000000000000a00b00200000000000000000
[00:00:26.502,319] <err> coredump: #CD:0000000000000000b40b002000000000000000000000000000000000c80b0020
[00:00:26.512,725] <err> coredump: #CD:00000000000000000000000000000000dc0b0020000000000000000000000000
[00:00:26.523,132] <err> coredump: #CD:00000000f00b002000000000000000000000000000000000040c002000000000
[00:00:26.533,538] <err> coredump: #CD:000000000000000000000000180c002000000000000000000000000000000000
[00:00:26.543,945] <err> coredump: #CD:2c0c002000000000000000000000000000000000400c00200000000000000000
[00:00:26.554,321] <err> coredump: #CD:0000000000000000540c002000000000000000000000000000000000680c0020
[00:00:26.564,727] <err> coredump: #CD:000000000000000000000000000000007c0c0020000000000000000000000000
[00:00:26.575,134] <err> coredump: #CD:00000000900c002000000000000000000000000000000000a40c002000000000
[00:00:26.585,540] <err> coredump: #CD:000000000000000000000000b80c002000000000000000000000000000000000
[00:00:26.595,947] <err> coredump: #CD:cc0c002000000000000000000000000000000000e00c00200000000000000000
[00:00:26.606,353] <err> coredump: #CD:0000000000000000f40c002000000000000000000000000000000000080d0020
[00:00:26.616,760] <err> coredump: #CD:000000000000000000000000000000001c0d0020000000000000000000000000
[00:00:26.627,166] <err> coredump: #CD:00000000300d002000000000000000000000000000000000440d002000000000
[00:00:26.637,573] <err> coredump: #CD:000000000000000000000000580d002000000000000000000000000000000000
[00:00:26.647,979] <err> coredump: #CD:6c0d002000000000000000000000000000000000940d0020940d002040000000
[00:00:26.658,386] <err> coredump: #CD:1400000094080020800d002000000000c0200020402100204000000000000b15
[00:00:26.668,792] <err> coredump: #CD:0000000000000000000000000000000000000000010000000000000000000000
[00:00:26.679,199] <err> coredump: #CD:00000000000000005c7d00000000000000000000000000000000000000000000
[00:00:26.689,575] <err> coredump: #CD:000000005c7d0000000000000200010000000000000000000100000000000000
[00:00:26.699,981] <err> coredump: #CD:e568000042000000000000000000000000000000000000000028000018080020
[00:00:26.710,388] <err> coredump: #CD:18080020000000000100000000000000d1370000010000005345474745522052
[00:00:26.720,794] <err> coredump: #CD:545400000000000003000000030000000f880000ba11002000040000fe030000
[00:00:26.731,201] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.741,607] <err> coredump: #CD:0000000000000000000000000000000000000000000000000f880000aa110020
[00:00:26.752,014] <err> coredump: #CD:1000000000000000000000000000000000000000000000000000000000000000
[00:00:26.762,390] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.772,796] <err> coredump: #CD:0000000040210020f8060020f806002000000000000000001802002018020020
[00:00:26.783,203] <err> coredump: #CD:1802002078070020000000000000000000000000010000000000000000000000
[00:00:26.793,579] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.803,985] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.814,392] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.824,768] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.835,174] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.845,581] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.855,957] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.866,363] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.876,770] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.887,176] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.897,552] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.907,958] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.918,365] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.928,771] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:26.939,147] <err> coredump: #CD:00000000000000000000000001010001306d0d0a303030303030303030301b5b
[00:00:26.949,554] <err> coredump: #CD:0a01010000000000000002000000180200200c000000eb030000ea0300001600
[00:00:26.959,960] <err> coredump: #CD:0081c02000200000000000000000000000000000000000000000000000000000
[00:00:26.970,367] <err> coredump: #CD:0000000000000230303030303030303030303030323330333033303330333033
[00:00:26.980,773] <err> coredump: #CD:3033303330333033303330333033303332333333303333333033333333333333
[00:00:26.991,180] <err> coredump: #CD:3333333333333300000a000000000000000000000000000000002a2a2a20426f
[00:00:27.001,586] <err> coredump: #CD:6f74696e67205a6570687972204f53206275696c642076332e332e39392d6e63
[00:00:27.011,993] <err> coredump: #CD:73312d31202a2a2a0d0a4c6573736f6e20322045786572736963652032205374
[00:00:27.022,399] <err> coredump: #CD:61727465640d0a53657420757020627574746f6e206174206770696f40353030
[00:00:27.032,806] <err> coredump: #CD:30303030302070696e2031310d0a536574207570204c4544206174206770696f
[00:00:27.043,212] <err> coredump: #CD:4035303030303030302070696e2031330d0a5072657373207468652062757474
[00:00:27.053,619] <err> coredump: #CD:6f6e20746f20737461727420746865206c6573736f6e0d0a427574746f6e2070
[00:00:27.064,025] <err> coredump: #CD:726573736564206174203833303430300d0a436f726564756d703a206e726635
[00:00:27.074,432] <err> coredump: #CD:32383430646b5f6e726635323834300d0a5b30303a30303a32352e3334312c38
[00:00:27.084,838] <err> coredump: #CD:35375d201b5b313b33316d3c6572723e206f733a202a2a2a2a2a205553414745
[00:00:27.095,245] <err> coredump: #CD:204641554c54202a2a2a2a2a1b5b306d0d0a5b30303a30303a32352e3334312c
[00:00:27.105,621] <err> coredump: #CD:3838385d201b5b313b33316d3c6572723e206f733a202020417474656d707420
[00:00:27.116,058] <err> coredump: #CD:746f206578656375746520756e646566696e656420696e737472756374696f6e
[00:00:27.126,464] <err> coredump: #CD:1b5b306d0d0a5b30303a30303a32352e3334312c3838385d201b5b313b33316d
[00:00:27.136,840] <err> coredump: #CD:3c6572723e206f733a2072302f61313a20203078303030303030303120207231
[00:00:27.147,247] <err> coredump: #CD:2f61323a202030783030303030303030202072322f61333a2020307830303030
[00:00:27.157,653] <err> coredump: #CD:303030321b5b306d0d0a5b30303a30303a32352e3334312c3931385d201b5b31
[00:00:27.168,060] <err> coredump: #CD:3b33316d3c6572723e206f733a2072332f61343a202030783230303030323138
[00:00:27.178,466] <err> coredump: #CD:207231322f69703a202030783030303030303063207231342f6c723a20203078
[00:00:27.188,873] <err> coredump: #CD:30303030303365621b5b306d0d0a5b30303a30303a32352e3334312c3931385d
[00:00:27.199,279] <err> coredump: #CD:201b5b313b33316d3c6572723e206f733a2020787073723a2020307838313030
[00:00:27.209,686] <err> coredump: #CD:303031361b5b306d0d0a5b30303a30303a32352e3334312c3934395d201b5b31
[00:00:27.220,092] <err> coredump: #CD:3b33316d3c6572723e206f733a204661756c74696e6720696e73747275637469
[00:00:27.230,499] <err> coredump: #CD:6f6e206164647265737320287231352f7063293a20307830303030303365611b
[00:00:27.240,905] <err> coredump: #CD:5b306d0d0a5b30303a30303a32352e3334312c3937395d201b5b313b33316d3c
[00:00:27.251,312] <err> coredump: #CD:6572723e206f733a203e3e3e205a455048595220464154414c204552524f5220
[00:00:27.261,718] <err> coredump: #CD:33363a20556e6b6e6f776e206572726f72206f6e2043505520301b5b306d0d0a
[00:00:27.272,125] <err> coredump: #CD:5b30303a30303a32352e3334312c3937395d201b5b313b33316d3c6572723e20
[00:00:27.282,531] <err> coredump: #CD:6f733a204661756c7420647572696e6720696e746572727570742068616e646c
[00:00:27.292,938] <err> coredump: #CD:696e670a1b5b306d0d0a5b30303a30303a32352e3334322c3034315d201b5b31
[00:00:27.303,314] <err> coredump: #CD:3b33316d3c6572723e206f733a2043757272656e74207468726561643a203078
[00:00:27.313,720] <err> coredump: #CD:32303030303666382028756e6b6e6f776e291b5b306d0d0a5b30303a30303a32
[00:00:27.324,127] <err> coredump: #CD:352e3433332c3839385d201b5b313b33316d3c6572723e200000010000000000
[00:00:27.334,533] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.344,940] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.355,346] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.365,753] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.376,129] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.386,535] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.396,942] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.407,348] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.417,755] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.428,131] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.438,537] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.448,944] <err> coredump: #CD:280000007000000000200040517c0000430000009d400000feffffff68000000
[00:00:27.459,350] <err> coredump: #CD:00200040517c0000577000009d4000009e400000000000217940000021110020
[00:00:27.469,726] <err> coredump: #CD:0100000021110020f0790000c3220000000000000100000020110020a5220000
[00:00:27.480,133] <err> coredump: #CD:000000004f70000000000000f47c00000a0000000f0000007a80000077700000
[00:00:27.490,539] <err> coredump: #CD:f47c0000957000007b8000000a000000f47c0000cd7000007b80000020030020
[00:00:27.500,946] <err> coredump: #CD:24000000450f0000fe17002000000000000000007b8000000000000000000000
[00:00:27.511,322] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000031330000
[00:00:27.521,728] <err> coredump: #CD:0d00000000000000800001640000000000000000000000000000000000000000
[00:00:27.532,135] <err> coredump: #CD:000000000f000000000000000f00000018030020080200200000000061700000
[00:00:27.542,541] <err> coredump: #CD:00000000f47c000079400000211100200100000021110020f0790000c3220000
[00:00:27.552,947] <err> coredump: #CD:000000000100000020110020a5220000f807002009590000f8060020000f0020
[00:00:27.563,354] <err> coredump: #CD:1802002071590000ffffffff180200200802002023770000ffffffffffffffff
[00:00:27.573,730] <err> coredump: #CD:ffffffff955a00000000000000ed00e0000f002000000000577000008d580000
[00:00:27.584,136] <err> coredump: #CD:0c29000000000061ffffffffffffffff00000000c91a0000691a000000000000
[00:00:27.594,543] <err> coredump: #CD:0000000000000000000000000000000000000000596800000000000059680000
[00:00:27.604,949] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.615,356] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.625,762] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.636,138] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.646,545] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.656,951] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.667,358] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.677,734] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.688,140] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.698,547] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.708,953] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.719,360] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.729,736] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.740,142] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.750,549] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.760,925] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.771,331] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.781,738] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.792,144] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.802,551] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.812,957] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.823,364] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.833,770] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.844,177] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.854,583] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.864,990] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.875,396] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.885,803] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.896,209] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.906,585] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.916,992] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.927,398] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.937,805] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.948,211] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.958,618] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:27.968,994] <err> coredump: #CD:0000000000000000000000000400000001000000100000000e11002010110020
[00:00:27.979,400] <err> coredump: #CD:79400000211100200100000021110020f0790000c32200007940000021110020
[00:00:27.989,807] <err> coredump: #CD:0100000021110020f0790000c3220000000000000100000020110020a5220000
[00:00:28.000,213] <err> coredump: #CD:000000004f70000000000000f47c00000a0000000f000000b481000077700000
[00:00:28.010,620] <err> coredump: #CD:f47c000095700000b5810000901e002001000000450f00005405002004000000
[00:00:28.020,996] <err> coredump: #CD:04000000b581000000000000000000000000000000000000000000001a870000
[00:00:28.031,402] <err> coredump: #CD:00000000000000000400003939360000b6810000000000008000037300000000
[00:00:28.041,809] <err> coredump: #CD:0000000000000000b502002000000000230000000f0000000000000013000000
[00:00:28.052,215] <err> coredump: #CD:08030020000000003b8700006170000000000000f47c0000f47c00008d1d0000
[00:00:28.062,622] <err> coredump: #CD:f47c0000901e0020891e0000b381000079400000211100200100000021110020
[00:00:28.073,028] <err> coredump: #CD:f0790000c3220000000000000100000020110020a5220000000000004f700000
[00:00:28.083,435] <err> coredump: #CD:00000000f47c0000f47c000059090e00010000007770000076040020bb200000
[00:00:28.093,841] <err> coredump: #CD:0100000088040020680100203d6b00002000000090010020200000001d580000
[00:00:28.104,217] <err> coredump: #CD:24080020387c0000d8040020a119000020000000409c000000000000271b0000
[00:00:28.114,624] <err> coredump: #CD:68010020a800000038050020c71c00000a000000541f002004000000c71c0000
[00:00:28.125,030] <err> coredump: #CD:4e00000000000000c87b00000e0000001600000041000000c87b0000a8050020
[00:00:28.135,437] <err> coredump: #CD:4e0000004e00000026000000601f0020b01f0020a0070000b01f002067110020
[00:00:28.145,812] <err> coredump: #CD:148700007f1f0020000000006d3600001487000065110020000000006d360000
[00:00:28.156,219] <err> coredump: #CD:0300000114870000671100200002002000000020002700007820002018200020
[00:00:28.166,625] <err> coredump: #CD:000000001820002000000000fb340000000000004d0100000000200027002000
[00:00:28.177,032] <err> coredump: #CD:410200444000002024000000173500007820002061350000240000005a450100
[00:00:28.187,438] <err> coredump: #CD:0300050024000000f8060020f806002024000000475200005020002040200020
[00:00:28.197,814] <err> coredump: #CD:2400000003000000020000006188000078200020302000205020002050200020
[00:00:28.208,221] <err> coredump: #CD:4020002024000000030000000128000024000000c02000200100000070200020
[00:00:28.218,627] <err> coredump: #CD:060000000060004000000000b72f0000000000000c0000000100000000000000
[00:00:28.229,003] <err> coredump: #CD:02000000180200200c000000eb030000ea030000160000816801002000000000
[00:00:28.239,410] <err> coredump: #CD:00080000d879000000000000000000000060004091300000c0200020f1ffffff
[00:00:28.249,816] <err> coredump: #CD:010000000000000002000000180200200c000000eb030000ea03000016000081
[00:00:28.260,192] <err> coredump: #CD:d5030000433b00000100000000000000000000003f50000000000000ffffffff
[00:00:28.270,599] <err> coredump: #CD:bcabecff0010014000000000df44000000000000000f0020ba15002000000000
[00:00:28.281,005] <err> coredump: #CD:00000000000000000000000000000000000000004f2a000000000000fdffffff
[00:00:28.291,381] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.301,788] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.312,194] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.322,601] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.332,977] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.343,383] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.353,790] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.364,166] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.374,572] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.384,979] <err> coredump: #CD:000000000000000000000000047d00000000000000000000000000007c080020
[00:00:28.395,355] <err> coredump: #CD:21000000200000000000000000000000000000006c2200207c08002000000000
[00:00:28.405,761] <err> coredump: #CD:0000000085560000342700000000006100000000596800000000000059680000
[00:00:28.416,168] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.426,544] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.436,950] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.447,357] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.457,763] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.468,139] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.478,546] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.488,952] <err> coredump: #CD:000000000000000000000000000000009c4504000b0000000f00000006000000
[00:00:28.499,328] <err> coredump: #CD:000000000000000000000000000000000000000000000000d8230020d8230020
[00:00:28.509,735] <err> coredump: #CD:595a030000000000000000000000000000000000d4450400ffffffff00000000
[00:00:28.520,141] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.530,548] <err> coredump: #CD:00000000000000000000000000000000c95c030000000000bf04320100000000
[00:00:28.540,924] <err> coredump: #CD:bd84310100000000bd8431010000000000000000000000000000000000000000
[00:00:28.551,330] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.561,737] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.572,143] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.582,550] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.592,956] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.603,363] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.613,769] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.624,145] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.634,552] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.644,958] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.655,364] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.665,771] <err> coredump: #CD:0000000000000000000000000000000000000000000000000000000000000000
[00:00:28.676,147] <err> coredump: #CD:0000000000000000000000000000000056800000e9fcffdf0000000000000000
[00:00:28.686,553] <err> coredump: #CD:0000000001000000f0fcffdf00000000680100206f6d00000000000000000000
[00:00:28.696,960] <err> coredump: #CD:0000000000000000e40000000000000068010020001000000803002056800000
[00:00:28.707,366] <err> coredump: #CD:000000000000000000000000f8000020dfab0c00834200000100000050010000
[00:00:28.717,773] <err> coredump: #CD:dfab0c0023000000f8000020f800002020000000000000000000000000000000
[00:00:28.728,179] <err> coredump: #CD:00000000394500008d410000000000000000000000ed00e0000f002000000000
[00:00:28.738,586] <err> coredump: #CD:01000000ef5d00000c2900000000004100000020d8790000380e0020d8790000
[00:00:28.748,992] <err> coredump: #CD:00000000395e0000000000502b050000f5ffffff40090400000f0020d1520000
[00:00:28.759,399] <err> coredump: #CD:0027002000270020d1520000f1520000000000005968000000000000212a0000
[00:00:28.769,744] <err> coredump: #CD:END# 
```

Lets break up the output
##### First part
```
[00:00:25.341,857] <err> os: ***** USAGE FAULT *****
[00:00:25.341,888] <err> os:   Attempt to execute undefined instruction
[00:00:25.341,888] <err> os: r0/a1:  0x00000001  r1/a2:  0x00000000  r2/a3:  0x00000002
[00:00:25.341,918] <err> os: r3/a4:  0x20000218 r12/ip:  0x0000000c r14/lr:  0x000003eb
[00:00:25.341,918] <err> os:  xpsr:  0x81000016
[00:00:25.341,949] <err> os: Faulting instruction address (r15/pc): 0x000003ea
[00:00:25.341,979] <err> os: >>> ZEPHYR FATAL ERROR 36: Unknown error on CPU 0
[00:00:25.341,979] <err> os: Fault during interrupt handling
```

The output tells us the device has run into a fatal unknown error under a fault during interrupt handling.The memory address is at ```0x000003ea```, this memory address can also be used the if you wish to use the disassembly window and see where the error happend. 

The Disassembly window can be found while in debug session --> NRF DEBUG --> Memory Explorer

[INSERT IMAGE DISASSEMBLY]   

####
The second part is the coredump itself. This is the text you will save into a file in step 7.
#### Step 7: 

Copy the core dump from the line with ```#CD:BEGIN``` to the end of line with ```#CD:END#``` from the terminal window and save it as dump.log in your project folder. 

#### Step 8: 
Run the python script ```coredump_serial_log_parser.py``` located in ```scripts/coredump/coredump_serial_log_parser.py``` to convert the text file to a bin file used in the next step

 ```python /PathToNCSFolder/v2.4.2/zephyr/scripts/coredump/coredump_serial_log_parser.py dump.log dump.bin ```

#### Step 9: 
Start the custom GDB server using the script ```coredump_gdbserver.py```, located in ```scripts/coredump/coredump_gdbserver.py``` with the core dump binary log file, and the Zephyr ELF file as parameters.

```python /PathToNCSFolder/v2.4.2/zephyr/scripts/coredump/coredump_gdbserver.py  build/zephyr/zephyr.elf dump.bin -v ```

Then you should see something similar to this: 
```
[INFO][gdbstub] Log file: dump.bin
[INFO][gdbstub] ELF file: build/zephyr/zephyr.elf
[INFO][parser] Reason: (Unknown)
[INFO][parser] Pointer size 32
[INFO][parser] Memory: 0x20000000 to 0x20002700 of size 9984
[INFO][parser] ELF Section: 0x0 to 0xff of size 256 (text)
[INFO][parser] ELF Section: 0x100 to 0x7b3f of size 31296 (text)
[INFO][parser] ELF Section: 0x7b48 to 0x7ba7 of size 96 (read-only data)
[INFO][parser] ELF Section: 0x7ba8 to 0x7c07 of size 96 (read-only data)
[INFO][parser] ELF Section: 0x7d88 to 0x7d9f of size 24 (read-only data)
[INFO][parser] ELF Section: 0x7da0 to 0x7e1f of size 128 (read-only data)
[INFO][parser] ELF Section: 0x7e20 to 0x7e3f of size 32 (read-only data)
[INFO][parser] ELF Section: 0x7e40 to 0x8b33 of size 3316 (read-only data)
[INFO][parser] ELF Section: 0x8d4c to 0x8d4f of size 4 (read-only data)
[INFO][gdbstub] Waiting GDB connection on port 1234...
```


#### Step 10: 
Open a new terminal instance in the same folder as the project folder and enter the following command to start the GDB session. 

```/PathToToolChain/opt/zephyr-sdk/aarch64-zephyr-elf/bin/aarch64-zephyr-elf-gdb  build/zephyr/zephyr.elf ```


#### Step 11:
After start up the GDB instance, enter the following command to connect to the debug instance:

```target remote localhost:1234```

You should now be connected the the debug instance and see the following message:  
``` 
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
func_3 (addr=0x0 <thread_print_cb>) at ../src/main.c:61
61              __asm__ volatile("udf #0" : : : );
(gdb) 
```

### Step 12:
Run a ```bt``` command to see the backtrace of the moments before the crash: 

```
(gdb) bt
#0  func_3 (addr=0x0 <thread_print_cb>) at ../src/main.c:61
#1  func_2 (addr=0x0 <thread_print_cb>) at ../src/main.c:67
#2  crash_function (addr=0x0 <thread_print_cb>) at ../src/main.c:72
#3  button_pressed (dev=<optimized out>, cb=<optimized out>, pins=<optimized out>) at ../src/main.c:44
#4  0x00000000 in ?? ()
```
As we may now observe, the button press function called the ```crash_function```, which called the ```func_2``` that then again called ```func_3``` and resulted in a fatal crash. The coredump module enables you to see register values, the functions calls up to the time of crash. This may empower you to easier debug end develop your application. For application where it is not possible to have it connected over UART at all times, it is possible to store the coredump to flash and retrieve it later. 

buttoncrash's People

Contributors

runsiv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.