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 目录快照与随附指南;未进行完整构建、烧录或硬件运行验证。