跳转到内容

Zephyr 开发

Zephyr 是一个面向资源受限设备的开源实时操作系统(RTOS)。F101 的 Zephyr 支持是上游 Zephyr 的一个 fork:YuzukiHD/zephyr,默认分支 zephyr-v4.2.2-f101,基于 Zephyr v4.2.2。

  • SoC:sun252i_f101,一个玄铁 C907 核(rv32imafdcv,带向量扩展,可选 Sv32 MMU),片内 SRAM 加 16 MB PSRAM,没有外部 DDR。
  • 板级:yuzukineko(本板,控制台为 UART1 的 PB00/PB01)和 f101_evb(F101 评估板,控制台为 UART3 的 PE08/PE09)。
  • 工具链:玄铁 900 elf-newlib GCC,通过 cross-compile 方式接入,不使用 Zephyr SDK。
  • 构建:用 west 管理源码和依赖模块,用 west build 编译。

按顺序读下面三页,就能把一个程序跑在板子上:

步骤说明
配置开发环境主机依赖、Python 虚拟环境、west、玄铁工具链、env.sh
获取 Zephyr 代码west init / west update、目录结构、Python 依赖、编译 hello_world 验证
编译与运行三种运行方式:下载到 RAM、xfel 直接写 NOR、UF2 拖放下载

其余页面:

页面说明
MP4 播放器从 TF 卡播放 MP4:H.264 硬解 + AAC 软解
ncnn - 神经网络推理ncnn 推理库 + RVV,benchmark
Doom - 游戏doomgeneric,触摸屏按键
mGBA - GBA 模拟器缩放输出、触摸屏按键、声音
NES - FC 模拟器nofrendo,触摸屏按键
HTML 渲染器 - litehtmlHTML/CSS 渲染到 RGB565
安卓投屏ADB + scrcpy,H.264 硬解
iOS 投屏 - AirPlayAirPlay 接收端,H.264 硬解
Win95 - Bochs x86 模拟Bochs 486 模拟器
LVGL - 图形界面显示、触摸接入,demo 与帧率
USB 副屏 - 电脑扩展屏电脑把 USB 当副屏用
UF2 拖放烧录制作 .uf2 与 Flash 布局
RVV - RISC-V 向量扩展向量扩展的配置、接口和示例

驱动页(每页都有设备树、Kconfig、每个接口一个完整示例、上板输出和完整演示程序):

页面说明
GPIO输入输出、整组操作、中断
I2C读写、重复起始、扫描总线
SPI命令加数据、全双工、DMA、模式
PWM周期和占空比、极性、设备树引用
PWM-BL - 模拟背光背光专用模块,用灌电流调亮度
显示流水线、RGB 屏和 MIPI DSI 屏的适配、显示接口
SDHC 主机控制器直接用 SD 命令操作控制器
AUDIO - 音频片上 codec、I2S0、S/PDIF
UART轮询、中断、配置
USBCherryUSB 设备模式,CDC ACM 回显
G2D 2D 加速器填充、搬运、旋转、YUV、混合
视频引擎 vdecJPEG、PNG、MJPEG、H.264 解码

组件页(同样的规格,讲协议栈和库,每页都有架构图、数据流图和上板日志):

页面内容
CherryUSB - USB 协议栈设备栈、主机栈、CDC ACM、MSC
SD - SD 卡协议栈SD 子系统、磁盘访问、FAT 文件系统
AIC8800 WIFI - 无线网卡驱动SDIO、固件下载、扫描、连接
AIC8800 蓝牙 - 蓝牙驱动HCI、广播、扫描、连接
AAC - AAC 解码器OpenCORE AAC 解码
MP4 - MP4 解封装moov 解析、sample 读取、seek

驱动按 Zephyr 自己的 API 编写,设备树 binding 在 dts/bindings/*/allwinner,sunxi-*.yaml。

类别内容
基础时钟与复位、pinctrl、GPIO、DMA、看门狗、hwinfo(SID 熔丝)、CPU 时钟频率
总线I2C、SPI、PWM(含面板背光)、ADC、SD/MMC(sdhc)
FlashSPIF SPI NOR 控制器:100 MHz 四线读、保存采样点参数、XIP 窗口和 XIP 代码段
音频片上 codec(DAC/ADC 与模拟部分)、I2S0、S/PDIF
显示图层、TCON、RGB/LVDS/DSI 编码器、D-PHY、背光、YUV/RGB 缩放视频层、MIPI DBI
加速器G2D 2D 加速器(填充、带格式转换/缩放/旋转的搬运、混合);视频引擎(H.264、JPEG、PNG 解码)
USBPHY,CherryUSB 设备(CDC ACM、MSC、vendor display 类)和主机(EHCI/OHCI)
输入GT967 电容触摸
RISC-V向量扩展上下文保存、机器态 Sv32 MMU 与按需分页、lib/mp4、AAC 解码

SoC 代码在 soc/allwinner/sun252i_f101,SoC 设备树在 dts/riscv/allwinner/sun252i_f101.dtsi,板级在 boards/yuzukihd。