Matter - K32W061 Tokenizer log 使用
Matter - K32W061 Tokenizer log 使用在使用 NXP K32W061 调试 Matter 设备项目时,通过查看 log 可以给调试提供很大的帮助,但在整个 Matter 工程中 log 数量很多,开启 log 后整体的固件也会增大,如果在此基础上修改了设备的类型,例如将默认 On/Off Light 设备改为 Dimmable Light 后,其中增加了一些 Cluster 和 Command 编译出来的固件就容易超过 K32W061 的 Flash 大小,在工程 gn 构建时,通过启用 chip_pw_tokenizer_logging构建选项,会根据特定的编码字符串替换 ASCII 字符串来输出 log,这样可以减小固件的大小。
启用 chip_pw_tokenizer_logging;
未启用 chip_pw_tokenizer_logging;
启用选项后则需要使用特定的脚本来解编码,查看 log,否则你就会在自己的串口工具上看到一串串的奇怪编码。
下面一起来看看具体的使用,首先是在编译工程 gn 构建时,使能chip_pw_tokenizer_logging,根据工程目录下的 README.md 文件中的编译步骤进行,默认也是启用chip_pw_tokenizer_logging的。
gn gen out/debug --args="k32w0_sdk_root=\"${NXP_K32W0_SDK_ROOT}\" chip_with_OM15082=1 chip_with_ot_cli=0 is_debug=false chip_crypto=\"platform\" chip_with_se05x=0 chip_pw_tokenizer_logging=true"
解编码脚本的路径在 Matter 工程目录下examples/platform/nxp/k32w/k32w0/scripts/detokenizer.py。
启用 chip_pw_tokenizer_logging 后会在对应的工程目录下生成对应的编码令牌数据库,例如 lighting-app 工程,默认的路径是 examples/lighting-app/nxp/k32w/k32w0/out/debug/chip-k32w0x-light-example-database.bin,detokenizer.py 脚本会根据令牌数据库对 log 进行解码。
detokenizer.py 脚本使用方式如下:
detokenizer.py serial [-h] -i INPUT -d DATABASE [-o OUTPUT]detokenizer.py file [-h] -i INPUT -d DATABASE -o OUTPUTserial 和 file 可以分别表示需要从串口或者文件进行 log 解码;-i INPUT 用于配置解码的文件路径或串口的路径;-d DATABASE 是前面提到过的令牌数据库的路径;-o OUTPUT 为储存解码输出后的 log 的路径,如果是从串口解码,可以不配置这项,此时 log 只会在终端窗口显示,保存文件到本地,如果选择从文件解码,这一项必须要配置。
第一步,查看串口编号并赋予权限;
第二步,运行脚本,这样就可以正确查看到 log;python3 detokenizer.py serial -i /dev/ttyUSB1 -d ~/Desktop/NXP_Matter/matter/examples/lighting-app/nxp/k32w/k32w0/out/debug/chip-k32w0x-light-example-database.bin -o device.txt并且也会根据设置的路径,将 log 保存到本地;
需要注意的是,在工程中修改了 log 内容,新增了 log 打印语句,需要把 …/out/debug/chip-k32w0x-light-example-database.bin 删掉,编译时才会重新生成 chip-k32w0x-light-example-database.bin,以解码新的 log,否则部分 log 信息将无法正确解码。
以上就是本文的全部内容,如果有错误或遗漏欢迎大家指出,讨论学习。
参考文档K32W0X1-MATTER-QSG.pdf —— NXP
页:
[1]