SDK / EXAMPLE INDEX
示例索引
按应用场景查找 IMDE SDK 中的示例代码。本文同时列出示例目录、入口或关键源码、defconfig 和用途,便于从具体需求快速定位到可运行工程或接口调用片段。
路径约定:本文路径均相对于 SDK 的
proj/ 目录。可直接编译的工程位于 code/middleware/*/example/;code/examples/ 下主要是可直接参考或复制的 HAL、LL 和 OS 接口片段。按场景快速定位
| 我要找 | 优先查看 | 说明 |
|---|---|---|
| Camera 最小出图 pipeline | code/middleware/camera/example | DVP 和 MIPI 两条采集通路,只取帧到内存,不含 JPEG、USB 或显示。 |
| Camera + JPEG + USB UVC | code/middleware/usb/example | 使用 UVC 或 UVC MJPEG defconfig;摄像头数据通过 USB 呈现为 UVC 设备。 |
| Camera 帧缓冲显示 | code/middleware/fb/example | 使用 framebuffer 外部分层,将应用显存交给 DPU 输出。 |
| NV12 缩放后编码 JPEG | code/middleware/msca_to_jpeg/example | MSCALER 放大后直接连接 JPEGE。 |
| 图像旋转 | code/middleware/i2d/example | 完成 1280×1280 ARGB8888 图像顺时针旋转 90°。 |
| 图像叠加或合成 | code/middleware/ipu/example | NV12 背景与 ARGB8888 前景 OSD 合成。 |
| JPEG 编码或解码 | code/middleware/jpeg/jpege/examplecode/middleware/jpeg/jpegd/example | 分别提供编码复用、QP 更新和解码头信息解析等流程。 |
| AI 算子执行 | code/middleware/tnpu/example | 加载 TNPU 库并执行三元素数组加法。 |
| 录音与回放 | code/middleware/audio/example | AIC、ES8311 录制后分别通过 AIC 和 PWMA 播放。 |
| ADC 采样 | code/middleware/adc/example | 包含 polling、IRQ、DMA、单次、有限序列和连续压测。 |
Camera 出图 pipeline
如果目标是先确认 Camera 能够稳定出帧,应从 code/middleware/camera/example 开始。该示例通过 camera_wait_frame() 取得帧地址,处理完成后通过 camera_put_frame() 归还。
| 通路 | defconfig | 关键源码 | 数据流 |
|---|---|---|---|
| GC0308 DVP | camera_example_gc0308_defconfig | main/gc0308_YUV422_640_480_DVP_ISP1.c | GC0308 DVP YUV422 → CIM1 → VIC1 → ISP1/DMSC1 → WDMA1 → 帧缓冲 |
| SC035 MIPI | camera_example_sc035_defconfig | main/sc035_RAW10_640_480_MIPI_ISP0_dmsc_Y.c | SC035 MIPI RAW10 → CIM0/D-PHY RX → VIC0 → ISP0 → DMSC0 → WDMA0 → NV12 帧缓冲 |
需要继续编码时查看 jpege/example 或 msca_to_jpeg/example;需要通过 USB 输出时查看 USB 子示例中的 UVC 配置;需要送屏时查看 fb/example。
可构建应用示例
图像采集与处理
| 示例 | 位置 | defconfig | 用途 |
|---|---|---|---|
| Camera | code/middleware/camera/example | camera_example_gc0308_defconfigcamera_example_sc035_defconfig | 最小 Camera 出帧;DVP/GC0308 与 MIPI/SC035 两条通路。 |
| I2D | code/middleware/i2d/example | i2d_example_defconfig | 图像旋转,展示布局计算、阻塞式变换和结果校验。 |
| IPU | code/middleware/ipu/example | ipu_example_defconfig | NV12 背景与 ARGB8888 前景进行 OSD 合成。 |
| MSCALER | code/middleware/mscaler/example | mscaler_example_defconfig | NV12 图像缩放,演示配置复用和多次转换。 |
| MSCALER to JPEG | code/middleware/msca_to_jpeg/example | msca_to_jpege_defconfig | NV12 缩放后直接进行 JPEG 编码的完整硬件链路。 |
| JPEG Encoder | code/middleware/jpeg/jpege/example | jpege_example_defconfig | 复用编码任务,并通过 shadow 参数动态调整 QP。 |
| JPEG Decoder | code/middleware/jpeg/jpegd/example | jpegd_example_defconfig | 解析 JPEG 头并解码到内存,覆盖几何和采样信息读取。 |
显示与打印
| 示例 | 位置 | defconfig | 用途 |
|---|---|---|---|
| Framebuffer | code/middleware/fb/example | fb_example_defconfig | 外部分层点亮 KWH035,循环显示纯色帧。 |
| TPC | code/middleware/tpc/example | tpc_example_defconfigtpc_example_board_defconfig | 热敏打印头自动对齐、单次和多帧打印。 |
音频、通信与存储
| 示例 | 位置 | defconfig | 用途 |
|---|---|---|---|
| Audio | code/middleware/audio/example | audio_example_defconfig | AIC + ES8311 录音,再分别通过 AIC 和 PWMA 回放。 |
| Ethernet | code/middleware/net/example/eth | eth_example_defconfig | MAC、PHY、lwIP 和以太网工作线程启动。 |
| Wi-Fi | code/middleware/net/example/wifi | wifi_aic_example_defconfigwifi_atbm_example_defconfigwifi_swt_example_defconfig | AIC8800、ATBM6162、SKW6621 的初始化与联网流程。 |
| MSC | code/middleware/msc/example | msc_example_defconfig | eMMC 与 SD 设备的板级配置和初始化。 |
| SFC | code/middleware/sfc/example | sfc_example_defconfig | NOR/NAND 的 READID、读取、擦除和写入命令链。 |
| CAN | code/middleware/can/example | can_example_defconfig | CAN0 发送、CAN1 接收及 IRQ 收发路径。 |
| I2C | code/middleware/i2c/example | i2c_example_defconfig | EEPROM 探测、写入及复合读写。 |
| SPI | code/middleware/spi/example | spi_example_defconfig | 硬件 SPI、DMA 全双工、硬件/软件片选。 |
| GPIO SPI | code/middleware/spi/example/gpio_spi | gpio_spi_example_defconfig | GPIO 模拟 SPI 主机并复用统一 SPI 设备接口。 |
| SPI Slave | code/middleware/spi_slv/example | spi_slv_example_defconfig | SPI1 主机与 SPISLV1 从机的 IRQ 全双工传输。 |
| UART | code/middleware/uart/example | uart_example_defconfig | 轮询、中断和 RX DMA 三种 UART 收发方式。 |
| USB | code/middleware/usb/example | 见“USB 子示例” | Host、Gadget、UVC、UAC、HID、存储和网络组合。 |
控制、定时与系统
| 示例 | 位置 | defconfig | 用途 |
|---|---|---|---|
| ADC | code/middleware/adc/example | adc_example_defconfigadc_example_board_defconfig | Polling、IRQ、DMA、单帧、有限序列、连续采集和压力测试。 |
| DMA | code/middleware/dma/example | config/g32s10/g32s10_v1_v0_dma_memcpy_example_defconfig | 普通、链式和循环内存拷贝,以及 cache 维护。 |
| PWM | code/middleware/pwm/example | pwm_example_defconfig | 互补 PWM、死区、相位和占空比更新,适合示波器观测。 |
| Step Motor | code/middleware/step_motor/example | step_motor_example_defconfig | PWM/TCU 驱动的步进电机微步控制。 |
| PM | code/middleware/pm/example | pm_example_defconfigpm_example_slt_v0_defconfigpm_example_slt_v1_defconfig | IDLE、SLEEP、LIGHT_SLEEP、RETENTION、DEEP_SLEEP、HIBERNATE 等低功耗流程。 |
| Shell | code/middleware/shell/example | shell_example_defconfig | 注册自定义 Shell 命令。 |
| WDT | code/middleware/wdt/example | wdt_example_defconfig | HPWDT DIRECT 模式周期喂狗。 |
安全与 AI
| 示例 | 位置 | defconfig | 用途 |
|---|---|---|---|
| AES | code/middleware/aes/example | aes_example_defconfig | AES-128 ECB DMA 加密/解密及标准测试向量校验。 |
| HASH | code/middleware/hash/example | hash_example_defconfig | SHA-256 单次与流式摘要。 |
| RSA | code/middleware/rsa/example | rsa_example_defconfig | 96/1024/2048/4096-bit 模幂运算。 |
| TNPU | code/middleware/tnpu/example | tnpu_example_defconfig | 加载 TNPU 运行库和算法库,提交 add 算子并校验结果。 |
板级与公共资源
| 位置 | 用途 |
|---|---|
code/bsp/example | 板级 BSP 模板,包含 pinmux、板级外设和 Kconfig 的复制起点。 |
code/examples/resource | 示例使用的 NV12、ARGB8888、JPEG、图片和测试向量资源。 |
code/examples/v0/v0_dma_memcpy | V0 侧 DMA 内存拷贝和无缓存共享内存示例。 |
code/examples/v0/v0_ipc_stress | V0/V1 IPC 压力测试和跨核消息示例。 |
USB 子示例
所有 USB 示例共用 code/middleware/usb/example。通过对应 defconfig 启用功能,并修改 main/main.c 中的 IM_USB_EXAMPLE_SELECTION 选择实际运行入口。
| 类别 | defconfig | 实现位置 | 用途 |
|---|---|---|---|
| Device / Gadget | usb_gadget_generic_bulk_defconfig | main/device/ | 通用 Bulk 端点。 |
usb_gadget_hid_defconfig | main/device/ | HID 键盘、鼠标类设备。 | |
usb_gadget_hid_wakeup_defconfig | main/device/im_usb_example_gadget_hid_wakeup_keyboard.c | HID 唤醒键盘。 | |
usb_gadget_mass_storage_defconfig | main/device/im_usb_example_gadget_mass_storage.c | USB 大容量存储设备。 | |
usb_gadget_mass_storage_nor_example_defconfig | main/device/im_usb_example_gadget_mass_storage_nor.c | 将 NOR 分区导出为 USB 磁盘。 | |
usb_gadget_ncm_defconfig | main/device/im_usb_example_gadget_ncm.c | CDC-NCM 网络设备。 | |
usb_gadget_printer_defconfig | main/device/im_usb_example_gadget_printer.c | USB Printer 设备。 | |
usb_gadget_rndis_defconfig | main/device/im_usb_example_gadget_rndis.c | RNDIS 网络设备。 | |
usb_gadget_serial_defconfig | main/device/im_usb_example_gadget_cdc_serial.c | CDC ACM 串口设备。 | |
usb_gadget_serial_hid_defconfig | main/device/im_usb_example_gadget_serial_keyboard.c | 串口与 HID 组合。 | |
usb_gadget_uac_defconfig | main/device/im_usb_example_gadget_uac1.c | UAC1 音频设备。 | |
usb_gadget_uvc_camera_jpeg_defconfig | main/device/im_usb_example_gadget_uvc_gc0308.c | GC0308 640×480 MJPEG 摄像头 UVC 输出。 | |
usb_gadget_uvc_cdc_defconfig | main/device/im_usb_example_gadget_uvc_serial.c | UVC 与 CDC 组合。 | |
usb_gadget_uvc_defconfig | main/device/im_usb_example_gadget_uvc.cmain/device/im_usb_example_gadget_uvc_mjpeg.c | 基础 UVC 与 MJPEG UVC,共用该 defconfig,通过入口宏选择。 | |
usb_gadget_uvc_hid_defconfig | main/device/im_usb_example_gadget_uvc_hid.c | UVC 与 HID 组合。 | |
usb_gadget_uvc_n_defconfig | main/device/im_usb_example_gadget_uvc_n.c | 内嵌 YUYV、NV12、Y8、BGR24 多格式帧的 UVC 输出示例。 | |
usb_gadget_winusb_defconfig | main/device/im_usb_example_gadget_winusb.c | WinUSB 自定义设备。 | |
| Host | usb_host_cdc_acm_defconfig | main/host/im_usb_example_host_cdc_acm.c | 连接 CDC ACM 设备。 |
usb_host_ch341_defconfig | main/host/im_usb_example_host_ch341.c | 连接 CH341 设备。 | |
usb_host_hid_keyboard_defconfig | main/host/im_usb_example_host_keyboard.c | USB 键盘 Host。 | |
usb_host_hid_mouse_defconfig | main/host/im_usb_example_host_mouse.c | USB 鼠标 Host。 | |
usb_host_hid_vendor_defconfig | main/host/im_usb_example_host_hid_vendor.c | HID Vendor 设备 Host。 | |
usb_host_mass_storage_defconfig | main/host/im_usb_example_host_msc.c | U 盘等 Mass Storage Host。 | |
usb_host_ncm_defconfig | main/host/im_usb_example_host_ncm.c | CDC-NCM Host。 | |
usb_host_uvc_defconfig | main/host/im_usb_example_host_uvc.c | USB 摄像头 Host。 |
HAL/LL 接口示例片段
以下文件主要用于阅读接口调用顺序或复制到应用中使用,不等同于可直接编译的独立应用。路径均位于 code/examples/。
| 模块 | 文件 | 用途 |
|---|---|---|
| ADC | ll/adc_seq_example.chal/adc_polling_example.chal/hal_adc_dma_example.chal/hal_adc_dma_loop_example.c | LL 轮询、HAL 轮询、DMA 单轮与多轮采集。 |
| AES | ll/aes_ll_example.chal/aes_hal_example.c | ECB/CBC、DMA 数据路径和 IRQ 完成。 |
| Bus Monitor | hal/bus_monitor_bandwidth_example.c | 监控通道带宽计数。 |
| CAN | ll/can_selftest_sample.chal/can_hal_stress_example.c | LL 自测与 HAL 压力测试。 |
| CPM | ll/cpm_cdr_gate_example.chal/cpm_cgu_gate_example.c | 模块 CDR、CGU 和时钟门控配置。 |
| DMA | ll/dma_ll_example.chal/dma_memcpy_example.c | LL 轮询拷贝与 HAL 描述符/链式/循环传输。 |
| 安全 | ll/dtrng_ll_example.chal/dtrng_hal_example.cll/hash_ll_example.chal/hash_hal_example.cll/rsa_ll_example.chal/rsa_hal_example.chal/efuse_example.c | DTRNG、SHA、RSA 和 EFUSE 的接口调用片段。 |
| GPIO | hal/gpio_function_switch_example.chal/gpio_irq_counter_example.c | GPIO 输入输出切换和 IRQ 计数。 |
| I2C | ll/i2c_eeprom_rw_example.chal/i2c_example.c | EEPROM 轮询读写与 HAL 多消息传输。 |
| I2D | ll/i2d_ll_example.chal/i2d_blocking_transform_example.chal/i2d_callback_transform_example.c | 直接寄存器、HAL 阻塞和 HAL 回调式变换。 |
| IPC | hal/ipc_hal_example.cv0/v0_ipc_stress/mcu_example.c | V0/V1 消息初始化和 IPC 压力测试。 |
| JPEG | hal/jpegd_hal_example.chal/jpege_hal_single_example.chal/jpege_hal_stream_example.c | JPEG 解码、单帧编码和多帧流式编码。 |
| MAC | ll/mac_ll_example.chal/hal_mac_example.c | MAC 寄存器自测、内部回环和 HAL bring-up。 |
| MSCALER | hal/mscaler_hal_single_example.chal/mscaler_hal_stream_example.c | 单帧与多帧流式缩放。 |
| NEMC | hal/nemc_test_example.c | 外部存储控制器读写测试。 |
| OST | hal/hal_ost_example.c | OST 比较匹配和中断。 |
| PWM | ll/pwm_ll_example.chal/pwm_hal_example.c | 双组互补 PWM、寄存器读回和事件配置。 |
| SPI | ll/spi_selftest_sample.chal/spi_hal_example.c | SPI 轮询自测与 HAL 传输。 |
| SPI Slave | hal/spi_slv_hal_example.c | SPI1 主机与 SPISLV1 从机 HAL 对接。 |
| TCU | ll/tcu_trig_example.chal/tcu_trig_adc_example.c | TCU 触发 ADC1 的 LL/HAL 示例。 |
| TPC | hal/tpc_auto_mode_print_example.chal/tpc_manual_mode_example.c | 自动对齐打印和手动打印时序。 |
| UART | ll/uart_selftest_example.chal/uart_hal_event_callback_example.c | LL 寄存器自测和 HAL 事件回调。 |
| WDT | ll/wdt_example.chal/wdt_interrupt_example.chal/wdt_reset_direct_example.c | 直接复位和中断模式。 |
| OS / Driver | freertos/freertos_os_smoke_example.cfreertos/freertos_mem_sched_cache_stress_example.cdriver/im_hrtimer_example.chal/stacktrace_example.c | FreeRTOS smoke/stress、HRTimer 和栈回溯参考。 |
构建示例
以可用应用为例,先选择 defconfig,再将 SDK_APP_DIR 指向示例目录:
source tools/imde/env.sh imde use-defconfig <defconfig-path> imde -D SDK_APP_DIR=<example-directory> configure imde build imde artifacts
Windows PowerShell 使用:
. .\tools\imde\env.ps1 imde use-defconfig <defconfig-path> imde -D SDK_APP_DIR=<example-directory> configure imde build imde artifacts
例如构建 SC035 MIPI 采集示例:
imde use-defconfig code/middleware/camera/example/camera_example_sc035_defconfig imde -D SDK_APP_DIR=code/middleware/camera/example configure imde build
查找建议:优先搜索场景词,例如
camera、mipi、dvp、uvc、jpeg、fb、i2d、mscaler、tnpu;再根据表中位置进入对应示例目录及其 README。