Agent Skills › miantiao-me/giligili › giligili-develop

giligili-develop

GitHub

用于开发 giligili 设备的固件与原生应用,涵盖构建配置、UI 视图实现、硬件驱动集成及内存并发管理。

skills/giligili-develop/SKILL.md miantiao-me/giligili

Trigger Scenarios

编写或修改 ESP-IDF 固件代码 开发 MicroTS 原生视图界面 排查嵌入式硬件驱动问题 配置构建环境与依赖

Install

npx skills add miantiao-me/giligili --skill giligili-develop -g -y
More Options

Use without installing

npx skills use miantiao-me/giligili@giligili-develop

指定 Agent (Claude Code)

npx skills add miantiao-me/giligili --skill giligili-develop -a claude-code -g -y

安装 repo 全部 skill

npx skills add miantiao-me/giligili --all -g -y

预览 repo 内 skill

npx skills add miantiao-me/giligili --list

SKILL.md

Frontmatter
{
    "name": "giligili-develop",
    "description": "开发 giligili StackChan 的 MicroTS 原生视图、Rust 应用和 ESP-IDF 固件。用于 UI、手势、屏保、设备驱动与固件构建排障。"
}

giligili 开发

构建与路径

./setup.sh                # 初始化仓库内 esp/、vendor/ 与 vendor Bun 依赖
./build.sh build          # MicroTS strict、原生字体/图片与 ESP-IDF 固件
bun tools/check-tailwind.ts
  • 唯一应用入口是 native/App.vue,视图契约为 native/App.d.ts,业务在 native/src/。MicroTS AOT 生成 Rust,固件链接 libgiligili_app.a。
  • 字体在 native/fonts/,SVG 在 native/icons/;tools/build-native.ts 直接使用 vendor 编译器烘焙资源,CMake 增量生成并嵌入 native/gen/native.pak。 新增 UI 字串需检查 native/gen/assets.json 的字符集;图片缺失或字形不全会失败。
  • Rust 必须使用 esp/esp-rust 的 esp-rs fork 1.97.0.0;上游 xtensa 后端会编坏 ROM 调用,导致 IllegalInstruction。所有构建走 ./build.sh。
  • PSRAM 为 CONFIG_SPIRAM_MODE_QUAD(8MB quad)。UI task 使用 64K PSRAM 栈, 内部 SRAM 栈留给底层中断与 sys_io_call() 代理任务,避免挤占 BLE/音频内部内存。
  • 烧录前确认用户授权与设备节点;只请求构建时不要烧录。串口通常为 /dev/cu.usbmodem*(macOS)或 /dev/ttyUSB*(Linux),设备操作见 skills/giligili-device/SKILL.md。

视图与输入

  • 物理屏为 320×240,安全区为居中 240×240,左右各 40px 状态栏; 静态内容用 px-10,滑动条带使用全宽。
  • 视图只用 MicroTS strict 支持的 View / Text / Image、模板与类型。 model.rs 实现生成的 AppViewModel;screens.rs 处理模式与事件。
  • 所有 class 字面量运行 Tailwind 校验。未知 token 会丢弃整个 class; rounded-2xl/3xl 改用 rounded-[N],rounded-full 同时固定 w/h。
  • FT6336U @ I2C 0x38 原始坐标直通逻辑屏,无 mirror/swap。输入在 C 采样, Rust 统一处理四缘手势、点按与拖动。设置滚动使用每帧负增量,松手速度同样取负。
  • native_ui_task 是 UI core 的唯一 owner,控制台只读 mutex 快照。 模式清理、陈旧 close、预览暂停规则见 memos/app-ui.md。
  • Maple Mono NF CN 保持中英文字体效果。SVG 显式固定 pow2 width/height, 每个形状写 fill="#ffffff";根节点 fill 不继承,不能直接用 currentColor 原件。

内存与并发

  • UI core 初始化先于 WiFi/BLE;无线 buffer 使用 PSRAM。PSRAM 栈任务不能 直接调用 flash/NVS,必须走预建内部栈 sys_io_call(),参数先复制到内部 buffer。
  • UI/audio/AEC/camera 钉 core1。camera/AEC 活跃时 UI 每帧让 50ms; audio 用 20ms vTaskDelayUntil 限速,不能依赖 I2S 阻塞。
  • S2S websocket core0:RX 回调只重组排队,cJSON/base64 在 s2s task 执行; PCM 使用常驻 48K decode buffer。独立 TX 必须保留 websocket-tx-abort-race 补丁。
  • vision 使用常驻 12K 内部栈 worker,快照后立即停预览释放内存; DeepSeek V4 关闭 thinking。TLS 与 mount 预留逻辑在 sys/ui_memory.c。
  • 相机补丁必须保持 DVP event_queue 先于 callback、GPIO ISR 只装一次; 单帧 MMAP 缓冲(VIDIOC_QUERYBUF 动态映射约 150KB)+ s_fb 帧缓存,关闭后完整释放。CONFIG_CAM_CTRL_DVP_LOG_ENABLE=n。
  • ES7210 偶发 I2C NACK:codec_dev 单笔重试 5ms,audio.c 整段重试 x6, 失败后循环 AW9523B P0_2 电源。勿回退这些实测修复。
  • TCP 冒烟面为 health/capabilities/cam on|off/tap/swipe/uistats/uimode/vtstats/uptime。 不在未授权时操控设备;宿主行为测试见 tools/test-*.py。

配网与硬件知识

  • NimBLE 广播 Giligili,service 0x5A10,SMP 关闭,地址来自 efuse MAC。 0x5A11 写 ssid\npassword,0x5A12 状态,0x5A13 与 TCP:23 共用命令表。 WiFi 连接后 SNTP 自动校时并回写 BM8563。
  • 修改驱动前读 memos/hardware.md 与 memos/audio.md;当前运行时规则见 memos/runtime.md。

官方硬件能力

  • PY32@0x6F:VM_EN=pin0,RGB=pin13;灯条 LED_CFG=0x24, LED_RAM=0x30 RGB565 LE。不要把 VM_EN 写成 pin1。
  • SCS0009:UART1 G6/G7@1M;WritePos 必须写 position/time/speed 共6字节。 回读寄存器大端: pos=56 load=60 temp=63 moving=66。空闲 300ms 自动松力矩 (body_poll); 零位 NVS "servo" ns, 限出厂 ±150 步, 自检页"舵机归零"或 servoZero() 触发; servoPos() 回 0.1° 相对零位。
  • INA226@0x41:10mΩ,CAL=2048,0.25mA/LSB;Si12T@0x68:前中后0..3。
  • LTR553@0x23:ambient/proximity;IR NEC:RMT G5 TX/G10 RX。
  • BMI270@0x69 + BMM150@0x10(AUX):锁定 bmi270_sensor==0.4.1,bmm150==1.1.0。manual 完成 BMM reset/trim 后 对齐 M5Unified 切 auto:0x42/8-byte/25Hz + enable BMI2_AUX;运行期从 bmi2_sens_data.aux_data 补偿,勿反复 manual 读。
  • ST25R3916B@0x50: board/nfc.c 自研驱动(对照 M5Unit-NFC 实现)。IRQ 未接, 轮询中断寄存器; WUPA/anticoll 要 antcl+no_crc_rx; NTAG READ=0x30 WRITE=0xA2(ACK 低半字节 0x0A); NDEF 从 page4 起, 格式 giligili:<appid>。
  • 原生设备 FFI 在 firmware/main/native_dev.c/.h;新增接口同步 Rust 声明与链接符号。

Version History

  • c767c4e Current 2026-11-02 08:43

Same Skill Collection

skills/giligili-device/SKILL.md

Metadata

Files
0
Version
c767c4e
Hash
26e8951c
Indexed
2026-11-02 08:43

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-11-02 16:24
浙ICP备14020137号-1