SDK / CODE NAVIGATION
代码索引
从开发任务出发,快速判断代码属于应用、板级、SoC 驱动还是中间件,并定位公共接口、实现源码与参考示例。
分层代码地图
G32S10X SDK 按硬件适配与软件抽象分层。一般从应用向下追踪,或从公共 API 反查实现;板级、SoC 基础资源和外部器件作为独立分支存在。
main/core_v1/ main/core_v0/code/middleware/[module]/ code/drivers/imsis/code/drivers/g32s10/[module]/code/include/drivers/g32s10/[module]/ ll_[module].h [module]_regs.hcode/bsp/g32s10/[board]/ 配置引脚、时钟、默认器件和板上资源。code/include/ 应用和中间件引用的公共头文件入口。code/soc/g32s10/ 启动、链接、系统初始化和底层运行支撑。code/include/devices/ code/devices/ Camera Sensor、Codec、LCD、Touch、Wireless 等适配。code/examples/ code/middleware/[module]/example/ 用于理解调用顺序、验证接口和复制最小实现。config/g32s10/、.config、Kconfig、CMakeLists.txt 和 cmake/ 决定开发板、内核、驱动和中间件是否进入固件。按任务找代码
先从任务类型确定入口,再沿目录进入接口和实现。目录中的 [module] 表示具体模块名,例如 uart、camera、audio 或 tnpu。
| 我要做什么 | 首选目录 | 先看哪个文件 |
|---|---|---|
| 修改应用入口、启动顺序或内核初始化 | main/core_v1/main/core_v0/ | main.c、init.c |
| 修改开发板引脚、时钟、默认器件或板上资源 | code/bsp/g32s10/[board]/ | board_pinmux.c、board_lcd.c、board_camera.c、board_audio.c、board_msc.c、board_sfc.c |
| 查找外设 HAL、LL 或寄存器实现 | code/include/drivers/g32s10/[module]/code/drivers/g32s10/[module]/ | hal_[module].h、hal_[module].c、ll_[module].h、[module]_regs.h |
| 查找 Camera、Audio、Storage、USB、Network 或 TNPU 业务接口 | code/middleware/[module]/ | include/ 中的 im_[module].h,以及 src/ 或 core/ 中的实现 |
| 替换或适配 Camera Sensor、Codec、LCD、Touch、Wireless、MAC PHY | code/include/devices/code/devices/ | 按器件的 Camera、Codec、LCD、Touch、Wireless 或 MAC PHY 子目录查找 |
| 查找某个功能的最小运行示例 | code/examples/hal/code/examples/ll/code/examples/driver/code/examples/middleware/ | 按示例类型进入,再按模块名查找 *_example.c 或 *_sample.c |
| 查找启动文件、链接脚本、中断、Cache、IPC 或系统计时 | code/soc/g32s10/ | startup/、linker/、system/ |
| 修改配置、构建关系或判断代码是否参与编译 | config/g32s10/code/drivers/g32s10/[module]/ | .config、Kconfig、CMakeLists.txt |
g32s103_sk_slt、g32s107_evb、g32s107_sk_full_1、g32s107_sk_full_8910、g32s107_sk_slt。实际参与编译的板级目录以 CONFIG_BOARD_* 的选择结果为准。三条典型调用链
按“公共接口 → 实现 → 板级配置 → 示例”的顺序查看,可以快速还原模块从初始化到实际工作的完整路径。
命名速记
对应用公开的硬件抽象接口。声明通常在 code/include/,实现对应当前模块的 hal_[module].c。
负责寄存器、位域和低层操作。排查硬件时序或寄存器配置时,从这里继续向下追踪。
中间件或通用服务接口。优先查看模块的 include/,再进入 src/、core/ 或对应后端目录。
只承载当前开发板的引脚、资源、器件和默认参数。板级问题优先查这里,通用逻辑不要写在板级目录。
用于演示初始化、操作流程、中断或自测。示例默认不替代应用入口,集成时应放到自己的应用目录中。
查找提示
先搜索 API 名称,再使用编辑器的“转到定义”进入实现。公开接口通常能直接指向正确的驱动或中间件目录。
默认应用入口是
main/core_v1/main.c或main/core_v0/main.c。如果工程通过SDK_APP_DIR指定应用目录,实际入口以该目录中的CMakeLists.txt和源码为准。通过
imde menuconfig或.config确认CONFIG_DRIVER_*、CONFIG_MIDDLEWARE_*是否启用;未启用的模块通常不会进入当前固件。build/generated/config/是构建时生成的配置结果,不要直接修改。配置来源应以 defconfig、Kconfig和menuconfig为准。code/third_party/用于保存 FreeRTOS、lwIP、FatFs 等上游源码。业务适配优先放在 SDK 的 driver、middleware 或应用层。