项目设计阶段
1)移植和定制Zybo Z7-20 Base-Linux FPGA设计到我们的开发板。完全的
该阶段的输出是获取 FPGA 部分的比特流,未来将与 Linux 映像一起下载到开发板。
图片中呈现的所有设计:
2) 基于Xilinx Petalinux 工程构建自定义Linux 发行版,测试Linux 发行版与摄像头的连接。完全的
该发行版根据我们的需要进行了调整,并包含许多将来会有用的软件包。例如,Yavta 和 FFmpeg 让我们有机会检查 Linux 是否支持通过 FPGA 部分在相机和 ARM 内核之间进行互连。此外,该软件用于从 Pcam 相机模块接收一些帧。我们获取的第一帧(使用 FFmpeg)如下图所示:
我们使用 Yocto(以及 Xilinx 和 Digilent 提供的元层和 BSP)来构建我们的自定义嵌入式 Linux 发行版。Aravis 库是使用 Yocto 构建的,并在相应的 aravis-meta 元层的帮助下添加到我们的发行版中。该层基于开源 Github 项目 ( https://github.com/astarasikov/meta-aravis )。该层还可用于为 OpenEmbedded/Angstrom Linux 发行版构建 Aravis,以及所需的 Gstreamer 插件。
添加了 bitbake 配方和补丁以构建 Aravis 库。
作为那个阶段的结果,我们构建了一个 Linux 发行版映像,其中 Aravis 作为一个静态库 (libaravis.so) 及其所有依赖项。
3) 修改fakecam模块并在PC上测试。完全的
部分源码:
static void start_capturing(void)
{
unsigned int i;
enum v4l2_buf_type type;
for (i = 0; i < n_buffers; ++i) {
struct v4l2_buffer buf;
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;
if (-1 == xioctl(fd, VIDIOC_QBUF, &buf))
errno_exit("VIDIOC_QBUF");
}
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (-1 == xioctl(fd, VIDIOC_STREAMON, &type))
errno_exit("VIDIOC_STREAMON");
}
void
fill_v4l_callback (ArvBuffer *buffer, void *fill_pattern_data,
guint32 exposure_time_us,
guint32 gain,
ArvPixelFormat pixel_format)
{
double pixel_value;
double scale;
guint32 width;
guint32 height;
if (buffer == NULL)
return;
if (pixel_format != ARV_PIXEL_FORMAT_MONO_8)
return;
width = buffer->priv->width;
height = buffer->priv->height;
}
。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !