Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
CmBacktrace
CmBacktrace软件 Log 信息保存移植重写
发布于 2024-03-14 13:57:09 浏览:217
订阅该版
首先打开CmBacktrace ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240314/818c4e6530a13a17b776240f42b1ff2a.png.webp) `prm`是我的fal分区, 根据实际修改 然后编译, 报错, 解决错误 首先先注释掉 引用头文件 和 `error` 宏 ```C #if !defined(PKG_USING_FAL) || !defined(RT_USING_DFS) //#error "please enable the FAL package and DFS component" #endif #include
//#include
``` 明明我使用了DFS, 不知道为什么找不到 之后就是 `cmb_backup_flash_log_to_file` 函数的错误了 根据函数名知道这个函数是保存文件用的, 这个可以关闭 `Backup the flash log to file when next reboot` 重新编译是可以通过的, 所以为了能保存文件, 需要修改这段代码 其实这里报错的都是操作文件的函数, 之前操作文件使用的是 `dfs_posix.h` 的API, 我们修改使用 `stdio.h`的API 添加头文件 `#include
` 修改后的函数 ```C #ifdef CMB_USING_FAL_BACKUP_LOG_TO_FILE #define ULOG_LINE_BUF_SIZE 128 int cmb_backup_flash_log_to_file(void) { cmb_log_part = fal_partition_find(CMB_FAL_FLASH_LOG_PART); RT_ASSERT(cmb_log_part != NULL); size_t len; uint32_t addr = 0; rt_bool_t has_read_log = RT_FALSE; FILE* log_fd = NULL; while (1) { fal_partition_read(cmb_log_part, addr, (uint8_t *)&len, sizeof(size_t)); if (len != 0xFFFFFFFF) { char log_buf[ULOG_LINE_BUF_SIZE]; if (!has_read_log) { has_read_log = RT_TRUE; LOG_I("An CmBacktrace log was found on flash. Now will backup it to file ("CMB_LOG_FILE_PATH")."); //TODO check the folder log_fd = fopen(CMB_LOG_FILE_PATH, "wb+"); if (log_fd == NULL) { LOG_E("Open file ("CMB_LOG_FILE_PATH") failed."); break; } } addr += CMB_LOG_LEN_SIZE; /* read log content */ fal_partition_read(cmb_log_part, addr, (uint8_t *)log_buf, MIN(ULOG_LINE_BUF_SIZE, len)); addr += RT_ALIGN(len, CMB_FLASH_LOG_PART_WG); /* backup log to file */ fwrite(log_buf, MIN(ULOG_LINE_BUF_SIZE, len), 1, log_fd); fflush(log_fd); } else { break; } } if (has_read_log) { if (log_fd >= 0) { LOG_I("Backup the CmBacktrace flash log to file ("CMB_LOG_FILE_PATH") successful."); fclose(log_fd); fal_partition_erase_all(cmb_log_part); } } return 0; } INIT_APP_EXPORT(cmb_backup_flash_log_to_file); #endif /* CMB_USING_FAL_BACKUP_LOG_TO_FILE */ ``` 这样编译就没有问题了 结论: 无法使用
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
ThinkCode
这家伙很懒,什么也没写!
文章
2
回答
14
被采纳
0
关注TA
发私信
相关文章
1
使用CmBacktrace定位错误异常,请教分析原因
2
cm_backtrack 使用ulog时,不能打印最后的堆栈调用信息
3
rtthread studio 中使用 cm_backtrace没有正常输出
4
rt thread studio下nano工程如何使用Cmb组件
5
cmBackTrace定位后无法分析出问题原因
6
程序运行一段时间后出现hardfault?CmBacktrace需要的是啥文件?
7
keil5 移植 finsh 串口打印 hard fault on thread
8
hard fault on thread: mqtt0,请教怎么解决
9
rt1052 移植cm_backtrace库,无法定位错误
10
有没有人能帮忙解决一下hard fault on main
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
PWM
潘多拉开发板_Pandora
定时器
BSP
ADC
中断
flashDB
编译报错
socket
keil_MDK
GD32
msh
Debug
SFUD
MicroPython
ulog
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
小小李sunny
4
个答案
3
次被采纳
踩姑娘的小蘑菇
6
个答案
2
次被采纳
a1012112796
4
个答案
2
次被采纳
crystal266
3
个答案
2
次被采纳
sakumisu
3
个答案
2
次被采纳
本月文章贡献
比特饼干
2
篇文章
5
次点赞
Z_Y
2
篇文章
2
次点赞
aeniac
2
篇文章
1
次点赞
聚散无由
1
篇文章
6
次点赞
zhuzhuzhu
1
篇文章
4
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部