OpenHarmony 小鸿 AI 开发实战 01:先认对工程,WS63 与 ESP32-P4 路径怎么选
拿到小鸿 AI 源码后最先要解决的不是“怎样改界面”而是“当前硬件究竟由哪套工程生成固件”。同一棵源码树里同时存在xiaohong、xiaohong-se和xiaohong-p4三个名字很接近却分别对应不同硬件角色、构建入口和产物格式。选错目录以后即使代码能编译也可能根本没有进入正在烧录的镜像。本文依据当前本地检出的OpenHarmony-6.1.0.31-Release分支进行核对。当前业务源码含有未提交修改因此文章没有把基础提交号冒充完整实现版本而是在配套的源码快照中记录每个引用文件的 SHA-256。正文中的配置和 C 代码均摘自这些文件目录树和验证清单属于解释性材料会明确标注用途。先确认这是 OpenHarmony 小型系统项目当前小鸿本体不是 ArkTS、Stage 模型或 HAP 应用。vendor/atomgit/xiaohong/config.json给出的type是minikernel_type是liteos_mSoC 第三方目录指向hisilicon/ws63v100/sdkv106。业务组件由 GN 文件收录最终生成 WS63 使用的.fwpkg。因此这套系列文章统一使用 OpenHarmony、开源鸿蒙、LiteOS-M、HB/GN 和 WS63 的术语。配置文件里还保留了ohos_version: OpenHarmony 1.0。这个字段是产品配置的一部分但不能单独代表当前整棵源码的发布版本。版本定位需要同时记录 manifest/检出分支、产品配置、构建日志和源文件快照。当前文章采用的分支是OpenHarmony-6.1.0.31-Release这比只截取一个兼容字段更准确。三套目录对应三种硬件角色vendor/atomgit/xiaohong面向小鸿本体的 WS63 主线。当前实物调试、240×240 屏、三个顶部按键、CI1302 音频和联网 Agent 都从这条路径继续追踪。vendor/atomgit/xiaohong-se是小鸿 SE 的 WS63 侧。其 README 明确写明SE 板右侧 TTL Type-C 口由 ESP32-P4 与 WS63 复用需要通过板上的P4/WS63按键选择当前调试目标。它仍然是 OpenHarmonymini LiteOS-M产品但增加了与 P4 协作的代码。vendor/atomgit/xiaohong-p4是小鸿 SE 的 ESP32-P4 侧使用 ESP-IDF/CMake 结构。该目录中的启动、分区和.bin产物不能交给 WS63 BurnTool。当前小鸿本体也不会因为仓库里存在 P4 工程就自动变成双芯运行。用于搜索的工程树可以写成下面这样。这是从当前目录结构压缩出的导航图不是仓库中的一段程序代码。vendor/atomgit/ ├─ xiaohong/ # 小鸿本体WS63 / OpenHarmony mini / LiteOS-M │ ├─ config.json │ └─ xiaohong/ │ ├─ BUILD.gn │ └─ src/ ├─ xiaohong-se/ # 小鸿 SE 的 WS63 侧 │ ├─ config.json │ └─ xiaohong/src/audio/esp32p4/ └─ xiaohong-p4/ # 小鸿 SE 的 ESP32-P4 侧 └─ esp32_app/ ├─ CMakeLists.txt ├─ main/ └─ components/用 config.json 锁定产品、内核和 SDK下面的 JSON 是当前vendor/atomgit/xiaohong/config.json的真实字段摘录字段名和值没有为文章重新命名。product_name和board锁定产品与板级入口kernel_type说明内核为 LiteOS-Mthird_party_dir指向当前 WS63 SDK v106product_adapter_dir则回到小鸿 HAL 适配目录。{ product_name: xiaohong, type: mini, ohos_version: OpenHarmony 1.0, device_build_path: device/board/atomgit/xiaohong, board: xiaohong, kernel_type: liteos_m, third_party_dir: //device/soc/hisilicon/ws63v100/sdkv106/open_source, product_adapter_dir: //vendor/atomgit/xiaohong/hals }遇到“改了代码但设备没有变化”时先返回产品配置而不是继续堆日志。只要当前hb set选中的不是这个产品后续对xiaohong/xiaohong/src的修改就不一定进入当前输出目录。BUILD.gn 决定哪些源码真正进入固件全仓搜索只能证明“文件存在”不能证明“文件被构建”。当前vendor/atomgit/xiaohong/xiaohong/BUILD.gn使用static_library(xiaohong)收录业务源码并定义SUPPORT_OHOS1。板级配置为xiaohong_ws63_v1时才加入对应的板级初始化、按键和 W25Q128 驱动。static_library(xiaohong) { sources [ src/main.c, src/task_entry.c, src/settings.c, ] defines [ FW_VERSION0x010001, SUPPORT_OHOS1, ] if (config_board_name xiaohong_ws63_v1) { defines [ BOARD_XH_WS63_V1 ] sources [ src/boards/xiaohong_ws63_v1/board_config.c, src/boards/xiaohong_ws63_v1/key_config.c, src/boards/xiaohong_ws63_v1/w25q128.c, ] } }该代码块来自当前文件的连续片段只省略了与本段无关的后续模块。显示侧还能在同一文件看到disp_driver.c、lvgl_task.c和lvgl_ui_layout.c音频侧能看到 CI1302 监听、播放、Opus 上行和下行文件协议侧能看到mongoose_protocol.c。这就是为什么判断源码归属时要从BUILD.gn反向追踪而不是凭同名文件猜测。main.c 展示的是 OpenHarmony LiteOS-M 消息队列入口当前vendor/atomgit/xiaohong/xiaohong/src/main.c声明了主、音频、显示和 Agent 四类 CMSIS-RTOS2 消息队列。按键回调不会直接执行所有业务而是把事件送入主队列再由MainTask分发。下面的代码是当前文件中的真实实现。osMessageQueueId_t g_main_event_qid NULL; osMessageQueueId_t g_audx_event_qid NULL; osMessageQueueId_t g_disp_event_qid NULL; osMessageQueueId_t g_agent_event_qid NULL; uint32_t key_event_callback_cb(uint8_t event) { if (g_main_event_qid) { osMessageQueuePut(g_main_event_qid, (const void *) event, 0, 0); } return 0; }队列创建也位于同一个任务启动过程音频队列、显示队列、主队列和 Agent 队列分别设置容量任一关键队列创建失败都会记录错误并保留早期显示。这个实现说明“小鸿本体按键无响应”至少要核对按键采样、回调、主队列和事件分支四层不能只盯着 LVGL 页面。HB 选择目标时不要复用未知缓存WS63 的完整构建从 OpenHarmony 源码根目录执行。官方 README 给出的主流程是先用hb set选择mini和对应产品再执行hb build -f。下面命令适用于已经准备好 OpenHarmony 构建环境的 Linux/WSL Shell它不是 PowerShell 命令。hb set hb build -f # 小鸿本体输出目录 ls -lh out/xiaohong/xiaohong/ws63-liteos-app/ # 小鸿 SE 的 WS63 输出目录 ls -lh out/xiaohong/xiaohong-se/ws63-liteos-app/第二个输出路径已由xiaohong-se/README_CN.md当前内容复核。构建时不能只看到终端出现 success 就结束记录至少还应保存分支、产品选择、命令、结束状态、输出文件名、字节数和 SHA-256。如果使用增量构建还要额外说明它不是一次干净全量构建。产物格式和芯片决定下载工具小鸿本体与小鸿 SE 的 WS63 侧最终都进入ws63-liteos-app_all.fwpkg对应 WS63 BurnTool。小鸿 SE 的 P4 侧则由 ESP-IDF 生成 bootloader、partition table 和应用.bin需要切换调试口并按 ESP-IDF 生成的 flash 参数写入。xiaohong / WS63 - ws63-liteos-app_all.fwpkg - WS63 BurnTool xiaohong-se / WS63 side - ws63-liteos-app_all.fwpkg - TTL 切到 WS63 - WS63 BurnTool xiaohong-p4 / ESP32-P4 side - bootloader.bin partition-table.bin application.bin - TTL 切到 P4 - ESP-IDF 下载链这里的文本块是工具映射不是源码。它的依据来自两个 WS63 产品 README 以及 P4 工程的 CMake/ESP-IDF 目录结构。文章刻意不写固定分区地址因为 P4 的实际地址应读取当前构建生成的 flash 参数不能从别的版本照抄。写入成功不能替代设备功能验证BurnTool 显示All images burn successfully或Execution Successful只能证明本次选择的镜像走完写入流程。它不能证明 LCD 初始化执行、GPIO 所有权正确、按键产生事件、Wi-Fi 成功连接或 CI1302 音频链路正常。历史上出现过 GPIO14 被误作按键后屏幕黑掉的情况而 BurnTool 仍然可以完成写入这正是分层验收的必要性。一轮修改应分别留下四类结论源码层确认产品和构建收录构建层确认命令与产物写入层确认工具、芯片和本次日志运行层确认串口版本标识以及本次变更涉及的屏幕、按键、网络或音频。上一层通过只能允许进入下一层不能自动替代下一层。四种常见误判及其排除顺序修改了仓库里的显示示例但该文件没有进入当前产品BUILD.gn。应从产品目标反向检查sources而不是继续修改同名示例。在小鸿 SE 上没有切换P4/WS63调试口。Windows 能看到串口不代表串口后面就是当前准备烧录的芯片。把 BurnTool 控制台中上一次操作的错误当成本次结果。应记录本次开始时间、包名和日志时间先分离历史输出。看到写入完成后屏幕不亮立即判断硬件损坏。应先恢复已知良好包再比较应用镜像、板级初始化和 GPIO 所有权。这些误判都来自证据链断裂不知道修改的文件是否进入产物不知道写入的是哪一包也不知道设备当前运行哪一版。给固件加入可见版本标识并记录包哈希可以显著缩短排查路径。本文已经确认和仍未确认的边界本文已经从当前文件确认小鸿本体是 OpenHarmonymini LiteOS-M的 WS63 产品xiaohong-se是 SE 的 WS63 侧xiaohong-p4是 ESP32-P4/ESP-IDF 侧当前业务库通过BUILD.gn收录主任务使用 CMSIS-RTOS2 消息队列两个 WS63 产品的标准完整产物都是.fwpkg。本文没有宣称当前脏工作区完成了新的干净全量构建也没有用旧官方截图证明本机实测。当前候选固件和实机功能会在对应主题文章中分别记录。下一篇将只从当前板级源码能够支持的范围梳理 WS63、CI1302、ST7789、外部 W25Q128、按键、电池采样和共享 SPI没有原理图证据的连接关系不会被包装成原理图级结论。

相关新闻

DC-DC电源滤波器与LVDS高速信号完整性的协同设计与优化

DC-DC电源滤波器与LVDS高速信号完整性的协同设计与优化

1. 项目概述:当电源噪声遇上高速信号在任何一个电子系统的核心,都存在着两股至关重要的“能量流”:一股是为芯片和电路提供动力的直流电源,另一股是承载着信息的高速数据信号。这两者看似独立,实则紧密耦合&#xff0c…

2026/7/24 2:10:30阅读更多 →
TSB43Cx43A芯片实现S/PDIF音频在IEEE 1394总线上的协议转换与同步传输

TSB43Cx43A芯片实现S/PDIF音频在IEEE 1394总线上的协议转换与同步传输

1. 项目概述与核心价值在专业音频制作、广播系统或高端家庭影院搭建中,我们常常会遇到一个经典问题:如何将一台设备上的S/PDIF数字音频信号,稳定、低延迟地传输到另一台设备,尤其是当这两台设备物理距离较远,或者需要融…

2026/7/24 2:08:29阅读更多 →
从DRV2667EVM-CT评估板解析压电触觉驱动硬件设计要点

从DRV2667EVM-CT评估板解析压电触觉驱动硬件设计要点

1. 项目概述与核心价值如果你正在为你的下一个消费电子或工业设备项目寻找一种能够提供细腻、精准触觉反馈的解决方案,那么基于压电执行器的触觉驱动方案绝对值得你深入研究。传统的偏心转子马达(ERM)和线性谐振致动器(LRA&#x…

2026/7/24 2:08:29阅读更多 →
AI工具链助力学术开题:从文献综述到研究设计

AI工具链助力学术开题:从文献综述到研究设计

1. 学术写作的智能化转型契机最近在指导本科生论文开题时,发现一个有趣现象:超过70%的学生在开题报告阶段就陷入文献综述的泥潭。他们要么被海量文献淹没,要么苦于无法精准提炼研究空白。这让我开始系统测试各类AI写作工具的组合应用&#xf…

2026/7/24 3:37:01阅读更多 →
ShotPlan视频生成:可学习规划标记与FRoPE位置编码技术解析

ShotPlan视频生成:可学习规划标记与FRoPE位置编码技术解析

在视频生成领域,从文本描述直接生成具有电影级镜头语言和连贯叙事结构的视频一直是个技术难点。传统视频扩散模型虽然能生成视觉上合理的片段,但往往缺乏导演视角的镜头规划能力,导致视频节奏平淡、视角单一,难以满足专业影视制作…

2026/7/24 3:37:01阅读更多 →
AR远程协助平台:工业4.0时代的智能协作解决方案

AR远程协助平台:工业4.0时代的智能协作解决方案

1. AR远程协助平台:工业与服务协作的革新者在工业4.0和数字化转型浪潮中,AR远程协助平台正悄然改变着传统工业和服务领域的协作方式。想象一下,当一位现场工程师遇到设备故障时,只需戴上AR眼镜,远在千里外的专家就能&q…

2026/7/24 3:37:01阅读更多 →
AI毕业设计助手:智能选题与高效写作全流程解析

AI毕业设计助手:智能选题与高效写作全流程解析

1. 项目背景与痛点解析毕业设计季的校园里总能看到这样的场景:凌晨三点的实验室亮着灯,咖啡杯堆满垃圾桶,学生们顶着黑眼圈在电脑前拼命赶进度。去年指导毕业设计时,我发现90%的学生都存在不同程度的焦虑症状,其中67%的…

2026/7/24 3:37:01阅读更多 →
多模态学习七日实践:从原理到代码实现

多模态学习七日实践:从原理到代码实现

1. 项目概述:什么是"转多模态day7""转多模态day7"这个标题看似简单,实则蕴含了深度学习领域一个重要的技术方向——多模态学习(Multimodal Learning)。作为从业者,我理解这个标题可能记录的是某人…

2026/7/24 3:37:01阅读更多 →
CTF 比赛到底怎么打,新手入门题型解析与备赛策略

CTF 比赛到底怎么打,新手入门题型解析与备赛策略

为什么 CTF 是新手实战的最佳起点对于刚踏入网络安全领域的新手来说,最大的痛点往往不是“学不会”,而是“没处练”。现实中的渗透测试有着严格的法律边界和复杂的业务流程,初学者很难在合法合规的前提下找到合适的靶场进行深度演练。而 CTF&…

2026/7/24 3:35:01阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →