CW080 SDK 目录结构详解
拿到 SDK 后,开发者通常需要先解决几个问题:从哪里找编译脚本、内核源码、媒体接口、示例程序和烧录工具?本文以 Tassadar-CW080-1.0.0-20260825 为例,结合实际目录和 SDK 随附资料,介绍常用文件的位置及用途。
一、适用范围和阅读说明
SDK 版本:
Tassadar-CW080-1.0.0-20260825。本文路径均以 SDK 根目录为起点;例如
software/board/表示 SDK 根目录下的对应目录。目录树只展开常用层级,并非逐项列举所有文件。SDK 的解压状态、构建操作和版本不同,实际看到的内容可能不同。
本文依据当前目录快照编写,不代表所有文件均为原始交付内容;部分源码目录、工具链目录及构建输出可能由后续解压或构建产生。
本文用于帮助定位资料,不代替实际板卡配置、各模块手册或编译验证。
二、先看整体结构
Tassadar-CW080-1.0.0-20260825/ ├── CW080 SDK 交付件清单.xlsx └── software/ ├── board/ # 板端 SDK、构建脚本及本地构建输出 ├── doc/ # 中英文开发文档 ├── pc/ # 主机端工具和辅助资料 ├── Disclaimer_Ingenic_EN_20221207.pdf └── 免责声明_Ingenic_CN_20221207.pdf
可以先这样理解:board/ 侧重板端软件和固件制作;doc/ 用来查手册;pc/ 存放交叉编译工具链、烧录工具等主机端资源。根目录的交付件清单可作为检查交付资料的参考,具体以实际交付及其说明为准。
三、board:板端 SDK 和构建入口
software/board/ ├── README.txt # 环境设置和固件制作脚本用法 ├── Ingenic-SDK.7z # SDK 压缩包 ├── Ingenic-SDK.md5 # 配套 MD5 文件 ├── Ingenic-SDK/ # 当前环境中已解压的 SDK 内容 │ ├── Versions # 组件版本记录 │ ├── media/ # 媒体接口、库和示例 │ ├── opensource/ # 开源组件和驱动 │ └── resource/ # 文件系统、预置资源和工具 ├── build/ │ ├── Tassadar_env_setup.sh # 环境配置脚本 │ ├── isvp/ │ │ └── Tassadar_image_package.py │ └── zeratul/ # 另一平台的构建脚本目录 └── _release/ # 当前环境中的构建输出目录
Ingenic-SDK.7z 是压缩包;Ingenic-SDK/ 是当前环境可见的解压内容,不能假设所有新交付包一开始就已解压。Ingenic-SDK.md5 是配套校验文件;校验时应以文件实际内容及交付要求为准。
Versions 记录各组件版本标识。当前文件列出 Linux 4.4.94、U-Boot 2013.07 和 2022.10、BusyBox 1.22.1 等信息;具体使用哪个 U-Boot 版本,应以构建时选择的配置为准,而不是认为两个版本都会同时使用。
3.1 构建脚本在哪里?
software/board/README.txt 给出环境设置和固件制作入口。在 Linux 的 Bash 终端中,先进入 software/board/,再执行:
source build/Tassadar_env_setup.sh python3 build/isvp/Tassadar_image_package.py
第一条设置构建环境,并按实际板卡和需求选择配置;第二条调用 ISVP 固件制作脚本。README.txt 声明该脚本目前只支持 Python 3.8,执行前还需准备交叉编译工具链和构建依赖。脚本参数说明位于脚本末尾,修改前应先阅读其说明并确认目标配置。
3.2 构建输出在哪里?
当前工作区可见 software/board/_release/image_PRJ010/ 及其下的构建名称目录。该类目录用于查找本地构建生成的镜像和相关记录;名称及内容随构建配置和时间变化,新的 SDK 解压目录中也可能不存在。不能把已有产物视作当前环境已成功重新编译的证明。
四、media:媒体接口、库和示例
software/board/Ingenic-SDK/media/ ├── zh/ │ ├── include/ │ │ ├── imp/ # IMP 接口头文件 │ │ └── sysutils/ # 系统工具相关接口头文件 │ ├── lib/ │ │ ├── glibc/ # glibc 版本库文件 │ │ └── uclibc/ # uClibc 版本库文件 │ └── samples/ │ ├── libimp-samples/ # IMP 相关示例 │ └── libsysutils-samples/ # sysutils 相关示例 └── en/ # 英文资料对应的接口、库和示例目录
4.1 接口头文件和库文件
应用开发时,可从 media/zh/include/imp/ 和 media/zh/include/sysutils/ 查找接口声明,再结合相应开发文档和示例理解调用方法。media/zh/lib/ 按 glibc、uclibc 区分库文件,实际链接时应与工具链、目标文件系统的 C 库及项目配置匹配,不要直接混用。
4.2 示例程序
media/zh/samples/libimp-samples/ 包含 Makefile、Makefile.param 以及 audio/、encoder/、framesource/、isp/、ivs/、lcd/、osd/ 等子目录,可以按功能寻找示例;同时还有 common/ 等共用代码和平台相关目录。系统工具类示例位于 libsysutils-samples/。
随附《SDK 使用指南》第 6 章说明了示例编译和使用:准备好构建环境,按实际 Sensor 信息配置后,在示例目录使用 make;生成的程序需要放到目标板上测试。具体 Sensor 配置位置、示例依赖和运行参数应以当前版本示例源码及手册为准。本文没有进行示例编译或实板运行。
**版本差异提示:**该指南示例表中部分文件以 sample-*.c 的形式展示;当前 SDK 中示例按功能子目录组织,查找时请以实际文件树为准,不要假设表中的文件都直接位于 libimp-samples/ 根目录。
五、opensource:开源组件和驱动
software/board/Ingenic-SDK/opensource/ ├── busybox/ # BusyBox 源码 ├── drivers/ # SDK 提供的驱动相关内容 │ ├── audio/ │ ├── isp/ │ ├── misc/ │ ├── mpsys-driver/ │ ├── sensors/ │ └── wifi/ ├── kernel-4.4.94/ # Linux 内核源码 ├── uboot/ # U-Boot 2013.07 源码 ├── uboot-2022.10/ # U-Boot 2022.10 源码 └── *.7z # 当前可见的各组件压缩包
内核配置、设备驱动、启动流程等问题,可分别从 kernel-4.4.94/、drivers/ 和对应 U-Boot 目录入手。drivers/ 下按音频、ISP、Sensor、Wi-Fi 等分类,但具体驱动是否适用某块板、是否参与构建,应继续检查源码、构建配置和硬件资料。
当前目录同时存在源码目录和同名 .7z 包;源码目录可能经过解压或构建,不能仅凭其存在判断原始交付状态。修改内核或驱动前建议先备份并确认所使用的配置。
六、resource:文件系统、预置资源和辅助工具
software/board/Ingenic-SDK/resource/ ├── opensource_tools/ # 开源辅助工具及组件 │ ├── gdb/ iperf/ mtd_utils/ ntpclient/ │ └── dmalloc/ mbedtls/ ncurses/ sysstat/ wpa_and_hostpad/ ├── prebuilt/ │ ├── isvp/ # ISVP 预置资源 │ └── zeratul/ # Zeratul 预置资源 ├── rootfs/ │ ├── isvp/ # ISVP 文件系统相关资源 │ └── zeratul/ # Zeratul 文件系统相关资源 ├── sensor_settings/ │ └── PRJ010/ # PRJ010 Sensor 配置资源 └── tools/ # SDK 辅助工具、配置和脚本 ├── bin/ config/ gpio_tool/ riscv_read/ └── script/ secure_subsystem/ zeratul/
需要了解根文件系统制作或加入应用时,可结合 rootfs/ 与 software/doc/zh/common/BSP/文件系统制作指南.pdf 阅读;需要查 Sensor 配置时,先确认项目、Sensor 型号及所使用的构建配置,再检查 sensor_settings/ 和对应文档。prebuilt/、tools/ 中各文件用途及是否参与当前构建,应以脚本和文件说明为准,不建议直接替换未知文件。
七、doc:开发文档
software/doc/ ├── zh/ # 中文资料 │ ├── isvp/ │ │ ├── SDK 使用指南.pdf │ │ ├── SDK FAQ.pdf │ │ └── 开发板使用指南.pdf │ ├── common/ │ │ ├── SDK 调试指南.pdf │ │ ├── BSP/ │ │ ├── ISP/ │ │ └── Media/ │ └── zeratul/ └── en/ # 英文资料,同样按 common、isvp、zeratul 分类
| 需求 | 建议先看 |
|---|---|
| 了解 SDK、环境和示例 | doc/zh/isvp/SDK 使用指南.pdf |
| 查看开发板相关说明 | doc/zh/isvp/开发板使用指南.pdf |
| 查常见问题与调试资料 | doc/zh/isvp/SDK FAQ.pdf、doc/zh/common/SDK 调试指南.pdf |
| BSP、文件系统、烧录、安全启动 | doc/zh/common/BSP/ |
| Sensor 适配、ISP 开发 | doc/zh/common/ISP/ |
| 媒体接口、编码和码率控制 | doc/zh/common/Media/ |
| Zeratul 平台专项资料 | doc/zh/zeratul/ |
表中路径均相对于 software/。查阅时要注意文档的适用平台和版本,不应将其他平台的示例配置直接套用于当前板卡。
八、pc:主机端工具和辅助资料
software/pc/ ├── toolchain/ │ └── mips-gcc540-glibc222-r3.3.7.mxu2.cve2/ # 当前已解压的工具链 ├── USB-cloner-2.7.0.1-20260728.7z # USB Cloner 工具包 ├── Uart/ # 两个版本的串口板资料 ├── OSD/ # FreeType2 相关资料 ├── yaffs2_utils/ # YAFFS2 工具源码及说明 ├── CW080 SDK rmem_calculator_V1.0.xlsx # 内存计算辅助表格 ├── Carrier-7.2.0.rar ├── kindle_rndis.inf_amd64-v1.0.0.1.zip └── sfc_read.7z
交叉编译:
toolchain/下当前可见已解压的 MIPS 工具链;环境设置需以 SDK 文档和构建脚本为准。已解压状态不等于新交付包一定具有同样目录。**烧录:**USB Cloner 压缩包是主机端烧录工具;使用前先确认目标操作系统、工具配置、板卡连接和驱动要求,并参考
doc/zh/common/BSP/USBcloner 烧录工具使用说明.pdf。擦除或烧录前应备份重要数据。其他工具:
Uart/、OSD/和yaffs2_utils/分别提供串口板、字库及文件系统工具相关资料;其余压缩包应先查看内部说明,确认用途和适用环境,不应仅凭文件名假定使用方法。
九、按任务快速定位
| 我想做什么 | 从哪里开始 |
|---|---|
| 查 SDK 版本及组件 | software/board/Ingenic-SDK/Versions |
| 设置环境、制作 ISVP 固件 | software/board/README.txt 和 software/board/build/ |
| 查找已生成的本地镜像 | software/board/_release/,以实际构建输出为准 |
| 查 IMP 接口与媒体示例 | software/board/Ingenic-SDK/media/zh/include/imp/ 和 media/zh/samples/libimp-samples/ |
| 查看内核、驱动和启动代码 | software/board/Ingenic-SDK/opensource/ |
| 查文件系统和 Sensor 资源 | software/board/Ingenic-SDK/resource/rootfs/、resource/sensor_settings/ |
| 查中文资料 | software/doc/zh/ |
| 查交叉工具链和烧录工具 | software/pc/ |
建议初次接触时,先阅读 software/board/README.txt、software/doc/zh/isvp/SDK 使用指南.pdf 和开发板指南,再根据具体任务进入对应目录。本文对照的是当前 SDK 目录快照与随附指南;未进行完整构建、烧录或硬件运行验证。