基于Zynq的FSAE赛车遥测平台—一种实时遥测系统
图4 项目框图
图5 软件流程图
A9 处理器和丰富的逻辑资源,有很好的可拓展性,非常适 合本项目的开发工作。
具体实现
车载数据发送端:
行车数据传输的实现:车队使用的ECU型号为MoTeC M800,基于CAN2.0协议,采用广播式发送,每次发送173 字节的数据包,传输速率为1Mbps。本项目自制一个基于 STM32的数据采集板完成ECU的数据采集、筛选和发送。 STM 3 2 自 带 两 个 C A N 控 制 器 , 以 中 断 方 式 接 收 来 自 ECU 的 C A N 报 文 , 以 轮 询 方 式 通 过 无 线 串 口 发 送 数 据 。 采 用 HVP230作为CAN物理层收发器。经验证,本方案可以高效 地采集并发送数据,稳定性非常高。
图像和语音的传输采用FPV 2.4G无线传输。
手持遥测平台的接收端设计:
双核Cortex™-A9 处理器运行Ubuntu系统,交叉编译并安 装OpenCV和Qt。在Qt下采用多线程编程方式开发上位机, 串口接收数据进程与数据显示进程并行运行。主线程调用 customplot库,将另一个线程接收的数据通过折线图实时显 示出来。这样就完成了行车数据接收和显示。其次是车手 视角图像和语音的传输实现,采用FPV - CT210 2.4G接收模 块,通过2.4G无线传输。安装USB视频采集卡驱动,并重新 编译内核。
项目开源链接:http://www.openhw.org/project-8
一部分项目步骤:
内核编译详解:
首先去github下载linux xilinx-v2015.1源码 下载地址https://github.com/Xilinx/linux-xlnx/tree/xilinx-
v2015.1 然后解压cd linux-xlnx-xilinx-v2015.1/ 进入文件夹
make ARCH=arm xilinx_zynq_defconfig 添加usb摄像头驱动make ARCH=arm menuconfig Device Drivers --->
Multimedia support --->
Media USB Adapters ---> 选择built-in
USB Video Class (UVC) 选择built-in
UVC input events device support (NEW) 选择built-in make ARCH=arm LOADADDR=0x00008000 uImage 编译完成后,将uImage拷贝到sd卡fat分区。
U-boot制作:
• 首先去github下载uboot xilinx-v2015.1源码
• 下载地址https://github.com/Xilinx/u-boot-xlnx/tree/
xilinx-v2015.1
• 解压到工作目录
• cd u-boot-xlnx-xilinx-v2015.1/
• make ARCH=arm zynq_zybo_config
• 修 改 u b o o t 环 境 变 量 s d b o o t 因 为 我 们 使 用 的 不 是
ramdisk文件系统
• vim include/configs/zynq-common.h
• 修改为:
"sdboot=if mmcinfo; then " "run uenvboot; "
"echo Copying Linux from SD to RAM... && "
"load mmc 0 ${kernel_load_address} ${kernel_image} && " " load mmc 0 ${devicetree_load_address} ${devicetree_
image} &&"
" bootm ${ kernel_load_address} - ${dev icetree_load_
address};" "fi "
• make ARCH=arm
• cp u-boot /[your-path]/u-boot.elf
使用Xilibus的文件系统,移植QT和OpenCV,具体步骤 可参考网上常规arm板卡的OpenCV和QT的移植工作。
在 虚 拟 机 的 QT 中 搭 建 交 叉 编 译 环 境 同 时 配 置 S S H 环 境,这样每次修改完代码后可用虚拟机编译,然后通过SSH 将交叉编译后的可执行文件无线发送到手持平台,手持平台 即可立即运行修改后的代码。避免使用ARM端的QT自行编 译,这样可以大大提高工作效率。
评论