logo
0
0
Login
``` docs(readme): 标记 DMA 和 I2S 驱动为验证未通过

基于国产AI芯片的Rust内核组件开发赛

初赛文档

由于一些不可抗拒力的原因,初赛方案的硬件没有准备齐全

决赛文档

决赛文档 PDF

视频演示

团队信息

团队名称:rzhangsan

团队成员:裴顺仕

特别感谢:

  • 杨家辉老师 提供的初版 Rust Can 驱动,以及飞腾派的相关技术问题支持
  • 王晓东老师 提供的C语言版本的 Can 驱动,以及飞腾派的相关技术问题支持

成果

目前基于 ArceOS 新增了

驱动名驱动代码
CAN FD 驱动(fcan)fcan
UART 驱动(uart)uart
FIOmux 驱动fiomux
PWM 驱动pwm
GPIO 驱动gpio
[验证未通过] DMA 驱动ddma
[验证未通过] I2S 驱动i2s

同时,各个驱动提供了 example

例程驱动用途示例代码
CAN FDcanfd 驱动收发 canfd 数据canfd
CEM5826M11 传感器(CEM5826-M11 是一款高灵敏度24GHz毫米波人体微动存在检测雷达模块)uart 驱动探测运动物体靠近uart
飞腾派 PWM 风扇1. fiomux 驱动 2. pwm 驱动开发板动态散热fiomux
飞腾派 GPIO 控制 LEDgpio 驱动GPIO 控制板载 LEDgpio
[验证未通过] 飞腾派音频输出输出 演示1. ddma 驱动 2. i2s 驱动声音录制实时播放gpio

最后结合已有的驱动实现了一个 基于飞腾派 + ArceOS 的智能毫米波雷达安防监测方案 demo app

硬件

主要硬件

硬件名规格要求用途
PC连接开发板,编译 ArceOS/StarryOS
飞腾派开发板 萤火工场 V3.01. 开发板 2. 电源适配器 3. 已焊接 eMMC 4. 已预制飞腾派 uboot运行 ArceOS/StarryOS,连接各类外设
萤火工场 CEM5826-M11毫米波雷达探测运动物体靠近
CanFD 设备因为板卡上 CAN 控制器没有外接 CAN PHY 芯片,所以需要外接一个 CAN 收发器,再将 CAN 收发器连接 USBCAN 与 PC 机进行测试

其他硬件

硬件名规格要求用途
PWM 4 pin 风扇-开发板动态散热
USB 转串口设备CH340开发板调试
杜邦线公对公、母对母、公对母 各 10 根连接串口、CAN设备
路由器、以太网网线-局域网内连接设备和开发机,使用 tftp 协议传输镜像到开发板
U盘容量 32GB 及以上传输镜像到开发板

软件

所提及的软件及编译好的镜像可在 atomgit 仓库发行页面下载

ArceOS

有关 ArceOS 更多详细信息,请参阅 readme.org.md

相关工具

  • MobaXterm_Personal_23.0.exe Windows 串口工具
  • tftpd64_portable_v4.73.zip Windows tftp server
  • ZQWL-USB-CANFD-Tool V1.3.6.exe Windows canfd 测试工具

ArceOS 驱动

驱动实现

驱动遵循 ArceOS HAL (Hardware Abstraction Layer) 规范,提供统一的接口供上层应用程序调用。

驱动代码结构

驱动代码位于 modules/axhal/xxx 目录下,包含以下关键文件:

  • mod.rs - 模块定义文件,导出驱动接口
  • fcan.rs - FCAN驱动核心实现,包括寄存器操作、数据收发等
  • can.rs - CAN协议相关常量和数据结构定义
  • readme.md - 驱动说明文件(可选)

在 axhal 的 lib.rs 文件中引入实现的驱动模块:

#[cfg(feature = "myplat")] pub mod xxx;

如果驱动有新增的外部依赖需要在 modules/axhal/Cargo.toml 文件中添加对应的依赖

具体可参考 fcan 下的 fcan 驱动代码

驱动使用

引入驱动模块:

use axhal::xxx;

具体可参考 canfd 下的 canfd 例程代码

运行

硬件组装

  • USB 串口 - 开发板

1761739775828

  • PC - Can 设备 - 开发板

1761740417240

  • 萤火工场 CEM5826-M11毫米波雷达 - 开发板

1761740185514

  • 总览

1761740123820

1761740142372

镜像编译

环境

推荐直接使用 CNB 构建镜像

Windows

在 Windows 下,请使用 Docker 或者 WSL 并在其中安装 Rust

请参考 Dockerfile 构建镜像

Linux

在 Linux 下,请参考 Dockerfile 搭建相关开发环境

可使用 ./build.sh 构建镜像

任意平台 + CNB

在此介绍 CNB 构建镜像的方式

  1. 注册 CNB 平台
  2. 将该仓库推送到 CNB 平台
  3. 启动开发环境

1761740592030

1761740609996

1761740620701

  1. 执行编译命令 ./build.sh

1761740691557

1761740721365

  1. 下载镜像到本地

1761740742925

编译

编译命令

# 在项目根目录下执行 # 修改 对应的 编译对象,当前默认编译 app ./build.sh

编译结果

  • 如果是 examples 编译结果在生成在 ./examples/xxx 例程/xxx_aarch64-phytium-pi.bin
  • 如果是 app 镜像编译结果在生成在 ./app/app_aarch64-phytium-pi.bin

烧录

镜像烧录以 Windows 平台为例,其他平台请参考 Windows 步骤

烧录方式

飞腾派镜像烧录支持 网络(tftp)\U 盘\串口 三种方式

tftp

注意不要关闭 tftp 程序,关闭了服务就结束了

  • 启动 tftp 服务器 1761740813932

  • 配置 tftp 服务器运行目录 1761740830940

也可以直接编辑 ini 文件进行配置 1761740862460

  • 启动飞腾派进入 Uboot 模式,运行命令:
# 配置网络 echo $ipaddr setenv ipaddr 192.168.1.20 setenv serverip 192.168.1.3 setenv gatewayip 192.168.1.1 # 保存配置 saveenv # 从 tftp 服务器下载镜像文件 # tftpboot 0x90000000 xxx_aarch64-phytium-pi.bin tftpboot 0x90000000 app_aarch64-phytium-pi.bin # 启动程序 dcache flush go 0x90000000
U 盘
  • 将镜像文件拷贝到 U 盘
  • 将 U 盘插入飞腾派
  • 启动 飞腾派 进入 Uboot 模式,运行命令:
usb start # 从 usb 加载镜像文件 # fatload usb 0 0x90000000 xxx_aarch64-phytium-pi.bin fatload usb 0 0x90000000 app_aarch64-phytium-pi.bin # 启动程序 go 0x90000000
串口

串口速率传适较低,如果镜像较大不推荐使用该方式

  • 用 MobaXterm 连接到串口并进入 U-Boot 命令行(启动过程中,按任意键)
  • 输入接收命令 loady
  • 右键选择文件发送
  • 等待接收完成后,输入启动命令 go 0x90000000

1761741088876

其他

相关资源

下一步规划

  • 移植到 Starry OS
  • 支持更多的驱动