Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
easyflash
ulog
ulog_easyflash
ulog+easyflash初始化的注意事项
发布于 2022-05-30 17:03:20 浏览:299
订阅该版
[tocm] ## **背景介绍** `ulog`是用来打印日志的,`EasyFlash`是用来存储数据的,这两个软件包加在一起,就可以实现日志的掉电保存功能,并且支持日志打印等级的动态设置,这些等级等级可以存储在`EasyFlash`中,这样不需要每次上电都设置一次调试等级。 ## **问题介绍** 移植成功`EasyFlash+ulog`以后,我直接就在main函数中初始化了`EasyFlash`,因为`EasyFlash`依赖`FAL`,因此也需要先初始化`FAL`。而`ulog`是自动初始化的,我就没有对他进行初始化了。如下所示, ``` int main(void) { fal_init(); easyflash_init(); while (1) { rt_thread_mdelay(10); } } ``` 然后发现使用`ulog_lvl`命令设置的过滤等级在重启以后失效了,如下所示,  ## **排查过程** 经过排查发现,当我们添加了软件包`ulog_easyflash`以后,查找`INIT_APP_EXPORT`这个自动初始化机制,会发现有两个相关的函数会自动初始化,请看下图  `ulog_ef_backend_init`函数会将`EasyFlash`注册到`ulog`中,这样打印的时候,会同时将日志写入`EasyFlash`。因此,我们必须在此之前将`EasyFlash`初始化。 ``` int ulog_ef_backend_init(void) { flash_backend.output = ulog_easyflash_backend_output;//日志的输出函数,会写EasyFlash ulog_backend_register(&flash_backend, "easyflash", RT_TRUE); return 0; } ``` `ulog_ef_filter_cfg_load`函数会将`EasyFlash`中的参数读取出来,例如调试全局过滤等级、全局标签等级等等。这里面会读取`EasyFlash`的数据,所以我们必须在此之前将`EasyFlash`初始化。 ``` int ulog_ef_filter_cfg_load(void) { char *value; /* restore the saving global level */ if ((value = ef_get_env(ENV_FILTER_GLOBAL_LVL_NAME)) != NULL)//读取全局过滤等级,这里会去读取easyflash上的数据 { ulog_global_filter_lvl_set(atoi(value)); } /* restore the saving global tag */ if ((value = ef_get_env(ENV_FILTER_GLOBAL_TAG_NAME)) != NULL)//读取全局标签过滤等级,这里会去读取easyflash上的数据 { ulog_global_filter_tag_set(value); } ... return 0; } ``` ## **解决办法** 基于以上两点,我这里使用`INIT_COMPONENT_EXPORT`初始化机制,将`EasyFlash`在组件这层进行初始化,这样可以保证它初始化在`INIT_APP_EXPORT`之前。如下所示:  
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
BruceTan
这家伙很懒,什么也没写!
文章
4
回答
29
被采纳
1
关注TA
发私信
相关文章
1
ulog_easyflash部分函数接口未实现问题
2
ulog_easyflash存储log时,出现扇区头错误,如下图,请大佬指点。
3
L475移植,包括fal+easyflash+ulog_easyflash
4
关于easylogger和easyflash
5
ulog_filter保存不了
6
ulog无法掉电保存过滤等级
7
env配置ulog+easyflash
8
ulog_easyflash 存满后去读取日志,系统重启
9
版本发布时怎样关闭LOG_D打印出的日志
10
怎样通过scons 配置日志输出usart,spi等初始化成功日志
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
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
串口
Env
LWIP
SPI
AT
FinSH
Bootloader
CAN总线
ART-Pi
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
UART
RTC
freemodbus
rtthread
rt-smart
packages_软件包
I2C
WIZnet_W5500
flash
cubemx
FAL
定时器
BSP
AB32VG1
PWM
ADC
SDIO
msh
socket
LVGL
keil
Debug
C++_cpp
中断
编译报错
SFUD
SMP
MicroPython
本月问答贡献
宇宙码蚁
48
个答案
8
次被采纳
xiaorui
27
个答案
4
次被采纳
lchnu
15
个答案
4
次被采纳
Ryan_CW
6
个答案
4
次被采纳
张世争
6
个答案
3
次被采纳
本月文章贡献
张世争
6
篇文章
14
次点赞
YZRD
6
篇文章
10
次点赞
快乐小鸟
4
篇文章
4
次点赞
RTT_逍遥
3
篇文章
24
次点赞
recan
3
篇文章
19
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部