SDK / EXAMPLE INDEX

示例索引

按应用场景查找 IMDE SDK 中的示例代码。本文同时列出示例目录、入口或关键源码、defconfig 和用途,便于从具体需求快速定位到可运行工程或接口调用片段。

路径约定:本文路径均相对于 SDK 的 proj/ 目录。可直接编译的工程位于 code/middleware/*/example/;code/examples/ 下主要是可直接参考或复制的 HAL、LL 和 OS 接口片段。

按场景快速定位

我要找优先查看说明
Camera 最小出图 pipelinecode/middleware/camera/exampleDVP 和 MIPI 两条采集通路,只取帧到内存,不含 JPEG、USB 或显示。
Camera + JPEG + USB UVCcode/middleware/usb/example使用 UVC 或 UVC MJPEG defconfig;摄像头数据通过 USB 呈现为 UVC 设备。
Camera 帧缓冲显示code/middleware/fb/example使用 framebuffer 外部分层,将应用显存交给 DPU 输出。
NV12 缩放后编码 JPEGcode/middleware/msca_to_jpeg/exampleMSCALER 放大后直接连接 JPEGE。
图像旋转code/middleware/i2d/example完成 1280×1280 ARGB8888 图像顺时针旋转 90°。
图像叠加或合成code/middleware/ipu/exampleNV12 背景与 ARGB8888 前景 OSD 合成。
JPEG 编码或解码code/middleware/jpeg/jpege/example
code/middleware/jpeg/jpegd/example
分别提供编码复用、QP 更新和解码头信息解析等流程。
AI 算子执行code/middleware/tnpu/example加载 TNPU 库并执行三元素数组加法。
录音与回放code/middleware/audio/exampleAIC、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 DVPcamera_example_gc0308_defconfigmain/gc0308_YUV422_640_480_DVP_ISP1.cGC0308 DVP YUV422 → CIM1 → VIC1 → ISP1/DMSC1 → WDMA1 → 帧缓冲
SC035 MIPIcamera_example_sc035_defconfigmain/sc035_RAW10_640_480_MIPI_ISP0_dmsc_Y.cSC035 MIPI RAW10 → CIM0/D-PHY RX → VIC0 → ISP0 → DMSC0 → WDMA0 → NV12 帧缓冲

需要继续编码时查看 jpege/example 或 msca_to_jpeg/example;需要通过 USB 输出时查看 USB 子示例中的 UVC 配置;需要送屏时查看 fb/example。

可构建应用示例

图像采集与处理

示例位置defconfig用途
Cameracode/middleware/camera/examplecamera_example_gc0308_defconfig
camera_example_sc035_defconfig
最小 Camera 出帧;DVP/GC0308 与 MIPI/SC035 两条通路。
I2Dcode/middleware/i2d/examplei2d_example_defconfig图像旋转,展示布局计算、阻塞式变换和结果校验。
IPUcode/middleware/ipu/exampleipu_example_defconfigNV12 背景与 ARGB8888 前景进行 OSD 合成。
MSCALERcode/middleware/mscaler/examplemscaler_example_defconfigNV12 图像缩放,演示配置复用和多次转换。
MSCALER to JPEGcode/middleware/msca_to_jpeg/examplemsca_to_jpege_defconfigNV12 缩放后直接进行 JPEG 编码的完整硬件链路。
JPEG Encodercode/middleware/jpeg/jpege/examplejpege_example_defconfig复用编码任务,并通过 shadow 参数动态调整 QP。
JPEG Decodercode/middleware/jpeg/jpegd/examplejpegd_example_defconfig解析 JPEG 头并解码到内存,覆盖几何和采样信息读取。

显示与打印

示例位置defconfig用途
Framebuffercode/middleware/fb/examplefb_example_defconfig外部分层点亮 KWH035,循环显示纯色帧。
TPCcode/middleware/tpc/exampletpc_example_defconfig
tpc_example_board_defconfig
热敏打印头自动对齐、单次和多帧打印。

音频、通信与存储

示例位置defconfig用途
Audiocode/middleware/audio/exampleaudio_example_defconfigAIC + ES8311 录音,再分别通过 AIC 和 PWMA 回放。
Ethernetcode/middleware/net/example/etheth_example_defconfigMAC、PHY、lwIP 和以太网工作线程启动。
Wi-Ficode/middleware/net/example/wifiwifi_aic_example_defconfig
wifi_atbm_example_defconfig
wifi_swt_example_defconfig
AIC8800、ATBM6162、SKW6621 的初始化与联网流程。
MSCcode/middleware/msc/examplemsc_example_defconfigeMMC 与 SD 设备的板级配置和初始化。
SFCcode/middleware/sfc/examplesfc_example_defconfigNOR/NAND 的 READID、读取、擦除和写入命令链。
CANcode/middleware/can/examplecan_example_defconfigCAN0 发送、CAN1 接收及 IRQ 收发路径。
I2Ccode/middleware/i2c/examplei2c_example_defconfigEEPROM 探测、写入及复合读写。
SPIcode/middleware/spi/examplespi_example_defconfig硬件 SPI、DMA 全双工、硬件/软件片选。
GPIO SPIcode/middleware/spi/example/gpio_spigpio_spi_example_defconfigGPIO 模拟 SPI 主机并复用统一 SPI 设备接口。
SPI Slavecode/middleware/spi_slv/examplespi_slv_example_defconfigSPI1 主机与 SPISLV1 从机的 IRQ 全双工传输。
UARTcode/middleware/uart/exampleuart_example_defconfig轮询、中断和 RX DMA 三种 UART 收发方式。
USBcode/middleware/usb/example见“USB 子示例”Host、Gadget、UVC、UAC、HID、存储和网络组合。

控制、定时与系统

示例位置defconfig用途
ADCcode/middleware/adc/exampleadc_example_defconfig
adc_example_board_defconfig
Polling、IRQ、DMA、单帧、有限序列、连续采集和压力测试。
DMAcode/middleware/dma/exampleconfig/g32s10/g32s10_v1_v0_dma_memcpy_example_defconfig普通、链式和循环内存拷贝,以及 cache 维护。
PWMcode/middleware/pwm/examplepwm_example_defconfig互补 PWM、死区、相位和占空比更新,适合示波器观测。
Step Motorcode/middleware/step_motor/examplestep_motor_example_defconfigPWM/TCU 驱动的步进电机微步控制。
PMcode/middleware/pm/examplepm_example_defconfig
pm_example_slt_v0_defconfig
pm_example_slt_v1_defconfig
IDLE、SLEEP、LIGHT_SLEEP、RETENTION、DEEP_SLEEP、HIBERNATE 等低功耗流程。
Shellcode/middleware/shell/exampleshell_example_defconfig注册自定义 Shell 命令。
WDTcode/middleware/wdt/examplewdt_example_defconfigHPWDT DIRECT 模式周期喂狗。

安全与 AI

示例位置defconfig用途
AEScode/middleware/aes/exampleaes_example_defconfigAES-128 ECB DMA 加密/解密及标准测试向量校验。
HASHcode/middleware/hash/examplehash_example_defconfigSHA-256 单次与流式摘要。
RSAcode/middleware/rsa/examplersa_example_defconfig96/1024/2048/4096-bit 模幂运算。
TNPUcode/middleware/tnpu/exampletnpu_example_defconfig加载 TNPU 运行库和算法库,提交 add 算子并校验结果。

板级与公共资源

位置用途
code/bsp/example板级 BSP 模板,包含 pinmux、板级外设和 Kconfig 的复制起点。
code/examples/resource示例使用的 NV12、ARGB8888、JPEG、图片和测试向量资源。
code/examples/v0/v0_dma_memcpyV0 侧 DMA 内存拷贝和无缓存共享内存示例。
code/examples/v0/v0_ipc_stressV0/V1 IPC 压力测试和跨核消息示例。

USB 子示例

所有 USB 示例共用 code/middleware/usb/example。通过对应 defconfig 启用功能,并修改 main/main.c 中的 IM_USB_EXAMPLE_SELECTION 选择实际运行入口。

类别defconfig实现位置用途
Device / Gadgetusb_gadget_generic_bulk_defconfigmain/device/通用 Bulk 端点。
usb_gadget_hid_defconfigmain/device/HID 键盘、鼠标类设备。
usb_gadget_hid_wakeup_defconfigmain/device/im_usb_example_gadget_hid_wakeup_keyboard.cHID 唤醒键盘。
usb_gadget_mass_storage_defconfigmain/device/im_usb_example_gadget_mass_storage.cUSB 大容量存储设备。
usb_gadget_mass_storage_nor_example_defconfigmain/device/im_usb_example_gadget_mass_storage_nor.c将 NOR 分区导出为 USB 磁盘。
usb_gadget_ncm_defconfigmain/device/im_usb_example_gadget_ncm.cCDC-NCM 网络设备。
usb_gadget_printer_defconfigmain/device/im_usb_example_gadget_printer.cUSB Printer 设备。
usb_gadget_rndis_defconfigmain/device/im_usb_example_gadget_rndis.cRNDIS 网络设备。
usb_gadget_serial_defconfigmain/device/im_usb_example_gadget_cdc_serial.cCDC ACM 串口设备。
usb_gadget_serial_hid_defconfigmain/device/im_usb_example_gadget_serial_keyboard.c串口与 HID 组合。
usb_gadget_uac_defconfigmain/device/im_usb_example_gadget_uac1.cUAC1 音频设备。
usb_gadget_uvc_camera_jpeg_defconfigmain/device/im_usb_example_gadget_uvc_gc0308.cGC0308 640×480 MJPEG 摄像头 UVC 输出。
usb_gadget_uvc_cdc_defconfigmain/device/im_usb_example_gadget_uvc_serial.cUVC 与 CDC 组合。
usb_gadget_uvc_defconfigmain/device/im_usb_example_gadget_uvc.c
main/device/im_usb_example_gadget_uvc_mjpeg.c
基础 UVC 与 MJPEG UVC,共用该 defconfig,通过入口宏选择。
usb_gadget_uvc_hid_defconfigmain/device/im_usb_example_gadget_uvc_hid.cUVC 与 HID 组合。
usb_gadget_uvc_n_defconfigmain/device/im_usb_example_gadget_uvc_n.c内嵌 YUYV、NV12、Y8、BGR24 多格式帧的 UVC 输出示例。
usb_gadget_winusb_defconfigmain/device/im_usb_example_gadget_winusb.cWinUSB 自定义设备。
Hostusb_host_cdc_acm_defconfigmain/host/im_usb_example_host_cdc_acm.c连接 CDC ACM 设备。
usb_host_ch341_defconfigmain/host/im_usb_example_host_ch341.c连接 CH341 设备。
usb_host_hid_keyboard_defconfigmain/host/im_usb_example_host_keyboard.cUSB 键盘 Host。
usb_host_hid_mouse_defconfigmain/host/im_usb_example_host_mouse.cUSB 鼠标 Host。
usb_host_hid_vendor_defconfigmain/host/im_usb_example_host_hid_vendor.cHID Vendor 设备 Host。
usb_host_mass_storage_defconfigmain/host/im_usb_example_host_msc.cU 盘等 Mass Storage Host。
usb_host_ncm_defconfigmain/host/im_usb_example_host_ncm.cCDC-NCM Host。
usb_host_uvc_defconfigmain/host/im_usb_example_host_uvc.cUSB 摄像头 Host。

HAL/LL 接口示例片段

以下文件主要用于阅读接口调用顺序或复制到应用中使用,不等同于可直接编译的独立应用。路径均位于 code/examples/。

模块文件用途
ADCll/adc_seq_example.c
hal/adc_polling_example.c
hal/hal_adc_dma_example.c
hal/hal_adc_dma_loop_example.c
LL 轮询、HAL 轮询、DMA 单轮与多轮采集。
AESll/aes_ll_example.c
hal/aes_hal_example.c
ECB/CBC、DMA 数据路径和 IRQ 完成。
Bus Monitorhal/bus_monitor_bandwidth_example.c监控通道带宽计数。
CANll/can_selftest_sample.c
hal/can_hal_stress_example.c
LL 自测与 HAL 压力测试。
CPMll/cpm_cdr_gate_example.c
hal/cpm_cgu_gate_example.c
模块 CDR、CGU 和时钟门控配置。
DMAll/dma_ll_example.c
hal/dma_memcpy_example.c
LL 轮询拷贝与 HAL 描述符/链式/循环传输。
安全ll/dtrng_ll_example.c
hal/dtrng_hal_example.c
ll/hash_ll_example.c
hal/hash_hal_example.c
ll/rsa_ll_example.c
hal/rsa_hal_example.c
hal/efuse_example.c
DTRNG、SHA、RSA 和 EFUSE 的接口调用片段。
GPIOhal/gpio_function_switch_example.c
hal/gpio_irq_counter_example.c
GPIO 输入输出切换和 IRQ 计数。
I2Cll/i2c_eeprom_rw_example.c
hal/i2c_example.c
EEPROM 轮询读写与 HAL 多消息传输。
I2Dll/i2d_ll_example.c
hal/i2d_blocking_transform_example.c
hal/i2d_callback_transform_example.c
直接寄存器、HAL 阻塞和 HAL 回调式变换。
IPChal/ipc_hal_example.c
v0/v0_ipc_stress/mcu_example.c
V0/V1 消息初始化和 IPC 压力测试。
JPEGhal/jpegd_hal_example.c
hal/jpege_hal_single_example.c
hal/jpege_hal_stream_example.c
JPEG 解码、单帧编码和多帧流式编码。
MACll/mac_ll_example.c
hal/hal_mac_example.c
MAC 寄存器自测、内部回环和 HAL bring-up。
MSCALERhal/mscaler_hal_single_example.c
hal/mscaler_hal_stream_example.c
单帧与多帧流式缩放。
NEMChal/nemc_test_example.c外部存储控制器读写测试。
OSThal/hal_ost_example.cOST 比较匹配和中断。
PWMll/pwm_ll_example.c
hal/pwm_hal_example.c
双组互补 PWM、寄存器读回和事件配置。
SPIll/spi_selftest_sample.c
hal/spi_hal_example.c
SPI 轮询自测与 HAL 传输。
SPI Slavehal/spi_slv_hal_example.cSPI1 主机与 SPISLV1 从机 HAL 对接。
TCUll/tcu_trig_example.c
hal/tcu_trig_adc_example.c
TCU 触发 ADC1 的 LL/HAL 示例。
TPChal/tpc_auto_mode_print_example.c
hal/tpc_manual_mode_example.c
自动对齐打印和手动打印时序。
UARTll/uart_selftest_example.c
hal/uart_hal_event_callback_example.c
LL 寄存器自测和 HAL 事件回调。
WDTll/wdt_example.c
hal/wdt_interrupt_example.c
hal/wdt_reset_direct_example.c
直接复位和中断模式。
OS / Driverfreertos/freertos_os_smoke_example.c
freertos/freertos_mem_sched_cache_stress_example.c
driver/im_hrtimer_example.c
hal/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。