SDK / CODE NAVIGATION

代码索引

从开发任务出发,快速判断代码属于应用、板级、SoC 驱动还是中间件,并定位公共接口、实现源码与参考示例。

推荐查找顺序      识别任务      ›      选择分层      ›      查看接口      ›      进入实现

分层代码地图

G32S10X SDK 按硬件适配与软件抽象分层。一般从应用向下追踪,或从公共 API 反查实现;板级、SoC 基础资源和外部器件作为独立分支存在。

01
APPLICATION            应用与启动
main/core_v1/            main/core_v0/
02
SERVICE            中间件与通用 driver
code/middleware/[module]/            code/drivers/imsis/
03
HAL            SoC 外设驱动
code/drivers/g32s10/[module]/
04
LL / REGISTERS            寄存器与低层接口
code/include/drivers/g32s10/[module]/            ll_[module].h            [module]_regs.h
BOARD        板级硬件初始化        code/bsp/g32s10/[board]/        配置引脚、时钟、默认器件和板上资源。
PUBLIC API        公共接口        code/include/        应用和中间件引用的公共头文件入口。
SOC CORE        启动与系统资源        code/soc/g32s10/        启动、链接、系统初始化和底层运行支撑。
EXTERNAL DEVICES        板外器件        code/include/devices/        code/devices/        Camera Sensor、Codec、LCD、Touch、Wireless 等适配。
REFERENCE        示例与自测        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 PHYcode/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_* 的选择结果为准。

三条典型调用链

按“公共接口 → 实现 → 板级配置 → 示例”的顺序查看,可以快速还原模块从初始化到实际工作的完整路径。

01

UART:从 HAL 到示例

APIcode/include/drivers/g32s10/uart/hal_uart.h
HALcode/drivers/g32s10/uart/hal_uart.c
LOW LEVEL
code/include/drivers/g32s10/uart/uart_regs.hcode/include/drivers/g32s10/uart/ll_uart.h
SERVICE
code/middleware/uart/include/im_uart.hcode/middleware/uart/src/im_uart.c
EXAMPLEcode/examples/hal/uart_hal_event_callback_example.c
02

Camera:从板级到图像数据

BOARDcode/bsp/g32s10/[board]/board_camera.c
HAL
code/drivers/g32s10/csi/hal_csi.ccode/drivers/g32s10/vic/hal_vic.c
DEVICEcode/middleware/camera/include/im_camera_device.h
PIPELINE
code/middleware/camera/src/im_camera_sensor.ccode/middleware/camera/src/im_camera_frame.c
03

Storage:从板级存储到文件系统

BOARD
code/bsp/g32s10/[board]/board_msc.ccode/bsp/g32s10/[board]/board_sfc.c
HAL
code/drivers/g32s10/msc/hal_msc.ccode/drivers/g32s10/sfc/hal_sfc.c
DEVICEcode/middleware/msc/include/im_msc_device.h
FILESYSTEMcode/middleware/filesystem/dfs/core/filesystem_init.c

命名速记

01      hal_[module]

对应用公开的硬件抽象接口。声明通常在 code/include/,实现对应当前模块的 hal_[module].c。

02      ll_[module] / [module]_regs.h

负责寄存器、位域和低层操作。排查硬件时序或寄存器配置时,从这里继续向下追踪。

03      im_[module]

中间件或通用服务接口。优先查看模块的 include/,再进入 src/、core/ 或对应后端目录。

04      board_[function]

只承载当前开发板的引脚、资源、器件和默认参数。板级问题优先查这里,通用逻辑不要写在板级目录。

05      *_example / *_sample

用于演示初始化、操作流程、中断或自测。示例默认不替代应用入口,集成时应放到自己的应用目录中。

查找提示

  • 先搜索 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 或应用层。

推荐排障顺序任务 → 分层目录 → 公共接口 → SoC 实现 → 板级配置 → 示例验证