十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Flipper Zero Unleashed 固件 CLI 命令行完整测试指南:控制、信息与存储命令实战

Flipper Zero Unleashed 固件 CLI 命令行完整测试指南:控制、信息与存储命令实战 Flipper Zero Unleashed 固件 CLI 命令行完整测试指南控制、信息与存储命令实战【免费下载链接】unleashed-firmwareFlipper Zero Unleashed Firmware项目地址: https://gitcode.com/GitHub_Trending/un/unleashed-firmware本篇技术指南以 Unleashed 固件仓库中的 CLI 测试用例文档 为主体系统梳理 Flipper Zero 命令行CLI三大类命令——控制命令、信息命令与存储命令——的完整操作步骤与预期结果并结合仓库源码applications/services/cli、applications/services/power/power_cli.c、applications/services/storage/storage_cli.c 等逐条解释每个命令的底层实现与参数含义。读完本文你将掌握如何通过 USB 串口连接设备、逐条验证固件 CLI 功能是否正常并能读懂每条命令背后的实现代码为固件回归测试与二次开发打下基础。1. 测试环境准备如何进入 Flipper Zero 的 CLICLI 测试用例的第一步是建立与设备的串行连接。根据测试文档有两种常用方式minicom -D /dev/ttyACM0 -b 230400-D /dev/ttyACM0指定串口设备节点在 Linux 下 Flipper Zero 枚举为ttyACM0若插拔多次可能变成ttyACM1等可先查看/dev/ttyACM*确认-b 230400波特率设置为 230400这是固件 VCP虚拟串口的默认通信速率在 Windows 下则使用 PuTTY 打开对应 COM 口同样将 Speed 设为 230400。连接成功后即可在终端输入命令。固件中所有内置命令均通过 cli_main_commands_init 在系统启动时注册到 CLI 注册表因此测试前可在终端直接输入命令名查看可用命令列表。2. 控制类命令测试power、gpio、led、vibro这类命令用于操控设备硬件状态是每次固件构建后最基础的功能验证项。2.1 power 命令关机、重启与电源输出输入power会显示可用子命令列表。全部子命令的执行结果应符合以下预期子命令预期结果power off拔掉 USB 线后设备彻底关机power reboot设备立即重启power reboot2dfu设备切换到 DFU 模式固件更新模式power 5v 1向顶排引脚top comb的 5V 线供电power 5v 0关闭 5V 输出从源码看这些子命令分别映射到 power_cli.c 中的实现power_cli_off先打印 Its now safe to disconnect USB from your flipper延迟 666ms 后调用power_offpower_cli_reboot调用power_reboot(power, PowerBootModeNormal)正常重启power_cli_reboot2dfu调用power_reboot(power, PowerBootModeDfu)进入 DFU 引导模式power_cli_5v通过power_enable_otg(power, true/false)控制 5V 外部电源。值得注意源码中还存在仅在FuriHalRtcFlagDebug调试标志开启时可见的3v3 0|1子命令用于控制外部 3.3V 电源普通用户模式下不显示。2.2 gpio 命令引脚模式与电平控制输入gpio显示可用子命令列表共三个子命令gpio mode pin_name 0|1设置引脚模式1 为输出transmit模式0 为输入receive模式gpio set pin_name 0|1设置引脚输出电平如gpio set PA7 1插入调试板后对应 LED 点亮gpio read pin_name读取引脚当前电平。源码 cli_command_gpio.c 中说明mode参数0 - input, 1 - outputset参数0 - low, 1 - high。实现细节包括引脚名通过gpio_pins表解析调试相关引脚带debug标志仅在开启调试模式时才允许操作对调试引脚执行mode/set时会二次确认Changing this pin mode may damage hardware. Are you sure you want to continue? (y/n)?gpio set执行前会检查引脚是否已配置为输出模式gpio read则要求引脚处于输入模式否则报错。2.3 led 命令RGB 灯控制执行led b 255预期蓝色 LED 点亮。语法为led r|g|b|bl 0-255各参数含义见 cli_command_led 实现r红色 LEDg绿色 LEDb蓝色 LEDbl屏幕背光display backlight。数值范围 0–255对应亮度/强度。命令内部通过strint_to_uint32解析数值并校验value 256则报错随后构造NotificationMessageTypeLedRed/Green/Blue/DisplayBacklight通知序列经 Notification 服务下发到硬件。2.4 vibro 命令振动马达开关vibro 1振动开启vibro 0振动关闭。实现位于 cli_command_vibro有两个容易被忽略的行为需要注意若设备处于隐身模式FuriHalRtcFlagStealthMode执行vibro 1会拒绝并提示 Flipper is in stealth mode. Unmute the device to control vibration.若系统设置中振动开关被关闭notification-settings.vibro_on为假会提示 Vibro is disabled in settings. Enable it to control vibration.因此测试前需确认设置项状态。3. 信息类命令测试log、device_info、bt hci_info、date 等这类命令用于读取设备状态与系统信息是诊断固件运行情况的常用手段。3.1 log 命令实时日志捕获测试步骤已通过minicom -D /dev/ttyACM0 -b 230400或 PuTTY 连接终端输入log并可带参数指定日志级别例如log debug预期结果按键、进入菜单、打开应用等操作都会实时打印到日志中按Ctrl C结束日志输出预期结果日志采集停止。源码层面cli_command_log 先记录当前日志级别调用furi_log_add_handler挂载一个将日志通过 CLI pipe 回传的 handler进入循环直到检测到CtrlCETX 字符或管道断开再移除 handler 并恢复原日志级别。支持的日志级别来自 cli_command_log_level_set_from_string 的提示输出级别含义log error仅关键错误与重要消息log warn非致命错误与警告包含 errorlog info一般信息包含 warn也是系统默认级别log default等价于log infolog debug调试信息包含 info可能影响系统性能log trace系统追踪信息包含 debug可能影响系统性能3.2 device_info / ! 命令固件与引导版本核对在主屏幕长按 DOWN 键 3 秒可打开固件版本FW version与引导版本Boot version信息菜单随后在 CLI 执行device_info或!预期结果FW 数据与屏幕显示一致Bootloader 数据与屏幕显示一致。源码中!、device_info、info三个命令共享同一个实现 cli_command_info!与device_info以contexttrue调用等价于info device通过furi_hal_info_get获取设备与版本信息并按key: value格式打印info power与info power_debug则输出电源信息。3.3 bt hci_info 命令蓝牙协议栈信息核对执行bt hci_info预期结果先显示bt命令的子命令列表即hci_info的用法提示随后输出 HCI 信息。与参考值比对应完全一致Ret: 0, HCI_Version: 11, HCI_Revision: 16484, LMP_PAL_Version: 11, Manufacturer_Name: 48, LMP_PAL_Subversion: 8548实现位于 bt_cli.c调用furi_hal_bt_dump_state将蓝牙控制器状态含 HCI 版本、制造商 ID 等写入缓冲区后打印。这些参考值对应 STM32WB55 蓝牙控制器的出厂配置若比对不一致说明蓝牙协处理器固件或初始化流程异常。3.4 date 命令实时时钟校验执行date预期结果显示真实日期与时间。输出格式源码 CLI_DATE_FORMAT为YYYY-MM-DD HH:MM:SS 星期例如2026-09-12 06:40:25 6。该命令不仅支持读取还支持设置时间完整语法为date YYYY-MM-DD HH:MM:SS W其中W为星期序号1–7。设置前会经datetime_validate_datetime校验合法性设置成功后回读并打印 New datetime is: ... 以确认写入生效见 cli_command_date。3.5 help 与 ? 命令命令帮助汇总执行help和?预期结果列出所有可用命令及其描述。结合 cli_main_commands_init 可知固件内置命令包括!、info、device_info、uptime、date、log、sysctl、top、free、free_blocks、echo、sleep、vibro、led、gpio、i2c另有各服务注册的power、bt、storage、factory_reset等命令。3.6 free 与 free_blocks 命令内存状态检查执行free预期结果显示内部可用内存空间。源码 cli_command_free 输出自由堆、总堆、最小历史空闲堆、最大堆块以及内存池pool的剩余空间与最大块执行free_blocks预期结果显示空闲块地址信息。实现 cli_command_free_blocks 调用memmgr_heap_printf_free_blocks打印堆内空闲块分布用于分析内存碎片化。4. 存储类命令测试storage 与 factory_reset此类命令涉及 SD 卡与内部存储操作测试时需要注意确认交互提示避免误操作数据。4.1 storage info查看文件系统信息插入带数据的 SD 卡后执行storage info /ext预期结果显示可用空间信息。源码 storage_cli_info 对/ext路径调用storage_sd_info输出内容比可用空间更丰富包括卷标Label与文件系统类型Type总容量与剩余空间KiBSD 卡厂商 ID、OEM ID、产品名、版本、序列号及生产日期等 CID 信息。对/int路径则调用storage_common_fs_info显示内部虚拟文件系统空间。4.2 storage format格式化与取消验证执行storage format /ext预期结果出现格式化确认提示输入n拒绝格式化预期结果卡片未被格式化可用空间不变再次执行storage format /ext并确认输入y预期结果卡片被成功格式化。实现细节见 storage_cli_format仅/ext支持格式化对/int返回FSE_NOT_IMPLEMENTED提示语为 Formatting SD card, All data will be lost! Are you sure (y/n)?仅当输入y或Y时才调用storage_sd_format执行格式化否则打印 Cancelled.。4.3 SD 卡热插拔状态验证格式化完成后再次执行storage info /ext卡片在卡槽内时预期结果SD status: OK。拔出 SD 卡后执行同一命令预期结果出现 SD card not mounted 提示并给出 If an SD card is inserted, pull it and reinsert it 的引导对应固件存储服务对未挂载 SD 卡的标准错误描述。该场景用于验证热插拔检测与错误提示路径是否正常。4.4 factory_reset恢复出厂设置验证执行factory_reset提示 All data will be lost. Are you sure (y/n)?输入n预期结果出现数据丢失警告拒绝后不做任何操作再次执行并输入y预期结果确认后数据被擦除主屏幕出现欢迎信息设置被重置SD 卡上的数据不会被擦除系统设置重置时间RTC不会重置。源码 storage_cli_factory_reset 展示了完整的实现流程输入y后先打印 Data will be wiped after reboot.调用furi_hal_rtc_reset_registers()复位 RTC 寄存器这解释了时间没有重置——RTC 寄存器复位不涉及时钟计数仅清除标志位与设置项设置FuriHalRtcFlagStorageFormatInternal标志使系统下次启动时格式化内部存储最后通过power_reboot(power, PowerBootModeNormal)立即重启重启后完成内部数据擦除。由于实际擦除发生在重启之后验证SD 卡数据未擦除应在重启完成后检查/ext目录内容是否原样保留。5. 测试要点总结完成上述三组用例后可以对固件 CLI 层的功能完整性作出结论性判断测试类别覆盖能力关键源码控制命令电源管理、GPIO 控制、LED/振动反馈power_cli.c、cli_command_gpio.c、cli_main_commands.c信息命令日志、版本信息、蓝牙状态、时间、内存状态cli_main_commands.c、bt_cli.c存储命令SD 卡信息/格式化、热插拔检测、恢复出厂设置storage_cli.c几点测试注意事项执行power off前确保数据已保存且该操作在 USB 断开后才完全关机gpio调试引脚操作会触发硬件损坏警告测试时按提示输入y/n验证交互流程即可不必真实改变关键引脚状态storage format /ext与factory_reset均会清除数据请在备用 SD 卡或已备份数据的设备上执行若某条命令的预期结果与本文描述不符可对照对应源码文件的实现逻辑定位问题例如vibro 1无反应时先检查隐身模式与设置中的振动开关。【免费下载链接】unleashed-firmwareFlipper Zero Unleashed Firmware项目地址: https://gitcode.com/GitHub_Trending/un/unleashed-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表