1
0
mirror of https://github.com/armink/CmBacktrace.git synced 2025-01-25 00:22:53 +08:00
armink 4436039a2f 1、【完善】Demo 说明文档。
Signed-off-by: armink <armink.ztl@gmail.com>
2017-01-05 10:58:55 +08:00

54 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# stm32f10x non-os Demo
## STEP 1
文件夹 `RVMDK` 下为 Keil 工程,`EMARM` 下为 IAR 工程。打开工程后,在 `app/src/app.c` 中有 `fault_test_by_unalign()``fault_test_by_div0()` 两个 HardFault 测试函数,可以选择性的执行测试函数。
## STEP 2
将程序下载至开发板并将其串口1 与电脑串口连接。
## STEP 3
电脑上打开该串口,串口配置 115200 8 1 N ,给开发板上电,即可看到类似如下的输出信息,故障原因也已被准确的诊断出来:
```
Firmware name: CmBacktrace, hardware version: V1.0.0, software version: V0.1.0
Fault on interrupt or bare metal(no OS) environment
====== Main stack information ======
addr: 20001140 data: 00000000
addr: 20001144 data: e000ed14
addr: 20001148 data: 0000000a
addr: 2000114c data: 00000000
addr: 20001150 data: a046ac2b
addr: 20001154 data: 08000145
addr: 20001158 data: e000ed14
addr: 2000115c data: 08003143
====================================
=================== Registers information ====================
R0 : 00000000 R1 : 200012ec R2 : 00000000 R3 : 00000000
R12: 00008080 LR : 08000145 PC : 08000a60 PSR: 61000000
==============================================================
Usage fault is caused by Indicates a divide by zero has taken place (can be set only if DIV_0_TRP is set)
Show more call stack info by run: addr2line -e CmBacktrace.out -a -f 08000a60 08000141 0800313f
```
## STEP 4
打开电脑上的命令行工具进入项目工程的可执行文件所在路径Keil 一般在 `Output` 下,可执行文件后缀 `.axf`IAR 一般在 ` Exe` 下,可执行文件后缀 `.out`),将 STEP 3 最后输出的 `addr2line -e CmBacktrace.out -a -f 08000a60 08000141 0800313f` 拷贝至控制台,并执行([点击查看 addr2line 工具的使用教程](https://github.com/armink/CmBacktrace/blob/master/docs/zh/how_to_use_addr2line_for_call_stack.md)),可看到类似如下,包含函数名称及代码行号的函数调用栈信息:
```
D:\Program\STM32\CmBacktrace\demo\non_os\stm32f10x\EWARM\stm32f103xE\Exe>addr2line -e CmBacktrace.out -a -f 08000a60 08000141 0800313f
0x08000a60
fault_test_by_div0
D:\Program\STM32\CmBacktrace\demo\non_os\stm32f10x\app\src/fault_test.c:38
0x08000141
main
D:\Program\STM32\CmBacktrace\demo\non_os\stm32f10x\app\src/app.c:20
0x0800313f
_call_main
??:?
D:\Program\STM32\CmBacktrace\demo\non_os\stm32f10x\EWARM\stm32f103xE\Exe>
```