07 SDK目录结构
解压 SDK 发布包后,目录结构如下:
GK7206/
├── build # 核心构建系统
│ ├── base.mk # 基础 Make 规则,定义 SDK_KO_DIR、编译器等公共变量
│ ├── root.mk # 顶层 Make 规则,被软链接为 SDK 根目录的 Makefile
│ ├── kernel.mk # Linux 内核编译规则
│ ├── bootloader.mk # U-Boot 编译规则
│ ├── rootfs_image.mk # rootfs 镜像打包规则(JFFS2/YAFFS2/EXT4)
│ ├── sdk_ko_rules.mk # .ko 驱动模块编译输出规则
│ ├── sdk_lib_rules.mk # SDK 动态库编译输出规则
│ ├── env.sh # 构建环境变量脚本
│ └── load # 构建过程的通用加载函数
│
├── run.sh # 一键构建入口脚本(make all 的封装)
│ # 用法: ./run.sh [chip_type] [options]
│
├── cfg.mk # 当前生效的 SDK 配置文件
│ # 定义芯片型号、工具链、内核版本、flash 类型等
│ # 由 menuconfig 生成,类似 Linux 的 .config
│
├── configs # 板级/芯片配置目录
│ ├── xm7206v11a/ # xm7206v11a 芯片配置
│ │ ├── prebuilts/ # 预构建文件(分区表 XML、bootargs.bin 等)
│ │ ├── reg/ # 寄存器配置文件
│ │ └ *_cfg.mk # 各 EVB 板型的配置 Makefile
│ ├── xm7206v12a/ # xm7206v12a 芯片配置(结构同上)
│ ├── xm7206v11/ # 其他芯片变体配置...
│ └── ...
│
├── develop_env.sh # 开发环境初始化脚本
│ # 安装 Ubuntu 编译依赖(gperf、automake 等)
│ # 需 sudo 权限执行
│
├── env_tools # 环境工具源码
│ ├── gperf-3.1/ # gperf hash 生成器
│ └ automake-1.15.1/ # automake 构建工具
│ # develop_env.sh 会编译安装这两个
│
├── Makefile -> ./build/root.mk # 顶层 Makefile(软链接)
│ # 执行 make 时实际调用 build/root.mk
│
├── mcu # MCU/RISC-V 子系统
│ ├── media/ # MCU 媒体处理相关
│ └ riscv/ # RISC-V 核心代码
│ # 用于低功耗模式、AOV 等功能
│
├── open_source # 第三方开源组件源码
│ ├── busybox/ # BusyBox(嵌入式 Linux 工具集)
│ ├── dropbear/ # SSH 服务器
│ ├── mtd-utils/ # Flash 工具(flashcp、nanddump 等)
│ ├── e2fsprogs/ # ext2/3/4 文件系统工具
│ ├── zlib/ lz4/ zstd/ # 压缩库
│ ├── gdb/ # GDB 调试器
│ └── ... # 其他 20+ 开源组件
│
├── out # 编译输出目录(按芯片型号分)
│ ├── xm7206v11a/ # xm7206v11a 的编译输出
│ │ ├── ko/ # 所有 .ko 驱动模块(会被打包到 rootfs/opt/ko)
│ │ ├── lib/ # SDK 动态库
│ │ ├── rootfs/ # 最终 rootfs 目录结构
│ │ ├── image/ # 烧录镜像
│ │ │ ├── spi_image/ # SPI-NOR 镜像
│ │ │ ├── emmc_image/ # eMMC 镜像
│ │ │ └── nand_image/ # NAND 镜像
│ │ ├── linux-5.10.y/ # 内核编译目录
│ │ └ boot_builddir/ # U-Boot 编译目录
│ ├── xm7206v12a/ # xm7206v12a 的编译输出(结构同上)
│ └── spidev_test/ # SPI 设备测试工具
│
├── sample # SDK 官方示例程序
│ ├── common/ # 公共代码(sample_comm_*.c)
│ ├── vio/ # 视频输入输出示例
│ ├── venc/ # 视频编码示例
│ ├── audio/ # 音频示例
│ ├── npu/ # NPU 神经网络示例
│ ├── vo/ # 视频输出/HDMI 示例
│ ├── fb/ # Framebuffer 示例
│ ├── tde/ # TDE 图形加速示例
│ ├── ive/ # IVE 图像处理示例
│ ├── cipher/ # 加密模块示例
│ ├── pm/ # 电源管理示例
│ ├── quickstart/ # 快速入门示例
│ └── ...
│
├── app_sample # 应用层示例(你的自定义应用)
│ ├── face_recognize/ # 人脸识别应用
│ └ rpi_detector/ # Raspberry Pi 检测器
│
├── source # 核心源码目录
│ ├── bootloader/ # U-Boot 源码
│ │ ├── u-boot-2020.01/ # U-Boot 2020.01 版本
│ │ ├── product/ # XMEDIA 产品定制
│ │ └ secureboot/ # 安全启动相关
│ ├── kernel/ # Linux 内核源码
│ │ ├── linux-4.9.y/ # 内核 4.9 版本
│ │ ├── linux-5.10.y/ # 内核 5.10 版本(当前使用)
│ ├── gmp/ # XMEDIA 媒体平台SDK(核心!)
│ │ ├── drv/ # 驱动源码(编译为 .ko)
│ │ ├── usr/ # 用户态库源码(编译为 .so)
│ │ ├── include/ # SDK 头文件
│ │ └ ko/ # 预编译 ko 目录
│ ├── rootfs/ # rootfs 构建脚本
│ │ ├── scripts/ # rootfs.tgz 源包、Makefile
│ │ ├── busybox/ # BusyBox 构建配置
│ │ ├── dropbear/ # SSH 构建配置
│ │ └── ...
│ ├── trusted-firmware/ # ARM Trusted Firmware (ATF)
│ ├── initramdisk/ # 初始化 ramdisk
│ └── app/ # 应用源码
│ └ factory_test/ # 工厂测试程序
│
├── tools # 工具脚本目录
│ ├── linux/ # Linux 平台工具
│ │ ├── toolchains/ # 交叉编译工具链
│ │ ├── pq_board/ # PQ 画质调优工具
│ │ ├── aq_board/ # AQ 音质调优工具
│ │ ├── kconfig/ # menuconfig 工具
│ │ └ utils/ # 其他辅助工具
│ └── windows/ # Windows 平台工具
│
├── version_config # SDK 版本/配置管理
│ ├── main_config # menuconfig 主菜单入口
│ ├── config.base # 基础配置选项
│ ├── config.board # 板级配置选项
│ ├── config.bootloader # Bootloader 配置选项
│ ├── config.kernel # 内核配置选项
│ ├── config.system # 系统配置选项
│ └ config.filesystem # 文件系统配置
│ └ config.flash # Flash 类型配置
│ └ config.tools # 工具配置
│
└── tar_rootfs.sh # 手动打包 rootfs.tgz 的辅助脚本提示
out/ 目录在首次编译后才会生成,存放所有编译产物。cfg.mk 是当前选择的板级配置文件,决定了编译的目标硬件。
