libefex 跨平台 USB 后端:libusb 与 WinUSB 实现
libefex 跨平台 USB 后端USB 后端概述libefex 需要跨平台支持 Linux、macOS 和 Windows。由于不同平台的 USB 驱动接口不同,项目采用后端抽象层设计: libusb: 开源跨平台 USB 库(Linux、macOS、可选 Windows) WinUSB: Windows 专用 USB 驱动框架 graph TB subgraph Application["应用层"] …
libefex 跨平台 USB 后端USB 后端概述libefex 需要跨平台支持 Linux、macOS 和 Windows。由于不同平台的 USB 驱动接口不同,项目采用后端抽象层设计: libusb: 开源跨平台 USB 库(Linux、macOS、可选 Windows) WinUSB: Windows 专用 USB 驱动框架 graph TB subgraph Application["应用层"] …
libefex 架构 PayloadPayload 技术概述Payload 是一种机器码注入技术,用于在 FEL 模式下执行复杂的硬件操作。由于 FEL 只提供基础的内存读写和代码执行能力,要实现寄存器读写等高级操作,需要将特定的机器码写入设备内存并执行。 flowchart TD A[需要硬件操作] --> B[选择 CPU 架构] B --> C{架构类型?} C…
libefex USB 协议层USB 数据包结构libefex 使用特定的数据包格式与 Sunxi 设备通信。所有通信基于 USB 批量传输。 请求包结构 (sunxi_usb_request_t)源码位置: includes/efex-protocol.h:115-127 EFEX_PACKED_BEGINstruct sunxi_usb_request_t { union { char magic[4]; …
概述命令行接口(CLI)是嵌入式工具与用户交互的第一道关卡。OpenixCLI 使用 Rust 最流行的 CLI 解析库 clap(Command Line Argument Parser),通过 derive 宏模式实现声明式的命令定义,让开发者专注于业务逻辑而非参数解析细节。 模块结构src/├── cli.rs # CLI 定义(derive 宏)├── main.rs #…
概述Commands 模块是 CLI 与核心刷写逻辑之间的桥梁。它实现了 scan 和 flash 两个主要命令,负责设备检测、固件加载、参数转换等准备工作,然后将任务交给 Flash 模块执行实际的刷写流程。 模块结构src/commands/├── mod.rs # 模块导出├── scan.rs # 设备扫描命令├── flash.rs # 固件刷写命令└── types.rs #…
概述固件解析是嵌入式刷写工具的核心功能。全志(Allwinner)芯片使用一种名为 IMAGEWTY 的专有固件格式,将多个组件(FES、U-Boot、MBR、DTB、分区数据等)打包成单一文件。OpenixCLI 的 Firmware 模块负责解析这种二进制格式,提取各组件数据供刷写流程使用。 模块结构src/firmware/├── mod.rs # 模块导出├── types.rs #…
概述固件刷写是一个多阶段的复杂过程,涉及设备检测、DRAM 初始化、U-Boot 下载、分区刷写等步骤。OpenixCLI 的 Process 模块提供全局进度追踪系统,使用原子操作实现线程安全的状态管理,同时支持 CLI 进度条和 TUI 实时轮询两种模式。 模块结构src/process/├── mod.rs # 模块导出├── global_progress.rs # GlobalProgress…
概述Flash 模块是 OpenixCLI 的核心刷写引擎,负责协调 FEL(USB Boot)和 FES(U-Boot)两种模式的固件刷写流程。它处理设备检测、DRAM 初始化、U-Boot 下载、设备重连、分区刷写、Boot 写入等完整流程,是嵌入式固件刷写的典型实现。 模块结构src/flash/├── mod.rs # Flasher 主控制器├── fel_handler/ …
概述嵌入式固件刷写涉及多种配置格式的解析:Boot 头(boot0/U-Boot)、分区表(MBR/GPT)、系统配置(sys_config)等。OpenixCLI 的 Config 模块负责解析这些与硬件初始化密切相关的数据结构,为刷写流程提供存储类型、分区信息、DRAM 参数等关键数据。 模块结构src/config/├── mod.rs # 模块导出├── boot_header.rs #…
概述终端用户界面(TUI)为固件刷写工具提供了直观的交互体验。OpenixCLI 使用 ratatui 框架构建事件驱动的 TUI 应用,通过 mpsc 通道实现异步事件通信,支持设备扫描、固件加载、选项配置和进度追踪的完整流程。 模块结构src/tui/├── mod.rs # 模块导出,run() 入口├── app.rs # App 状态、事件循环、键盘处理├── event.rs …