移植Finsh报错bus fault: SCB_CFSR_BFSR:0x04 IMPRECISERR
一、串口报错分析
IMPRECISERR:与设备传送数据的过程中发生总线错误。(有可能有一些参数或者外设没有初始化);
\ | /
- RT - Thread Operating System
/ | \ 3.1.5 build May 24 2022
2006 - 2020 Copyright by rt-thread team
psr: 0x61000000
r00: 0x200023a0
r01: 0x20000314
r02: 0x00000000
r03: 0x200022f8
r04: 0x20000300
r05: 0x00000000
r06: 0xdeadbeef
r07: 0xdeadbeef
r08: 0xdeadbeef
r09: 0xdeadbeef
r10: 0xdeadbeef
r11: 0xdeadbeef
r12: 0x00000000
lr: 0x0800353f
pc: 0x08003566
hard fault on thread: main
thread pri status sp stack size max used left tick error
-------- ---
------- ---------- ---------- ------ ---------- ---
tshell 21 ready 0x00000044 0x00000400 06% 0x0000000a 000
tidle 7 ready 0x00000040 0x00000100 25% 0x00000020 000
main 2 ready 0x00000040 0x00000100 93% 0x00000013 000
bus fault:
SCB_CFSR_BFSR:0x04 IMPRECISERR
移植Finsh串口打印hard fault on thread: main、thread pri status sp stack size max used left tick error、bus fault: SCB_CFSR_BFSR:0x04 IMPRECISERR 报错信息;
二、解决的方法
- 缺少一个头文件的,从而缺少初始化的一些参数,在rtconfig.h文件添加**#include “finsh_config.h”**头文件
#ifndef __RTTHREAD_CFG_H__
#define __RTTHREAD_CFG_H__
#include <rtthread.h>
#include "finsh_config.h"//添加这个宏定义才能正确使用FinSH
- main thread 线程的栈空间占用了93%,可适当增加main thread线程的栈空间;
main 2 ready 0x00000040 0x00000100 93% 0x00000013 000
- 在rtconfig.h文件修改RT_MAIN_THREAD_STACK_SIZE栈空间的大小;
// <o>the stack size of main thread<1-4086>
// <i>Default: 512
#define RT_MAIN_THREAD_STACK_SIZE 512 //256->512
三、正常运行效果串口
\ | /
- RT - Thread Operating System
/ | \ 3.1.5 build May 25 2022
2006 - 2020 Copyright by rt-thread team
msh >
通过上位机SecureCRT或其它工具进行调试
具体命令和移植操作可参考:在 RT-Thread Nano 上添加控制台与 FinSH