芯路恒电子技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

热搜: 活动
查看: 537|回复: 4

【设计实例】AC540-SoC基于SDRAM共享的摄像头图像采集显示系统

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 268

    主题

    481

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    11501
    发表于 2021-2-25 10:12:39 | 显示全部楼层 |阅读模式
    一、先把项目跑起来
    1、烧写资料包中“06_预制作镜像”文件夹下的“AC540-SoC-Console.img”镜像到SD卡中
    2、将摄像头插入到开发板右侧的摄像头接口中。
    3、使用烧录好的SD卡启动开发板,进入Linux系统后,直接执行root目录下的ov5640_capture可执行文件。
    4、在屏幕上能看到摄像头采集到的图像数据

    问题说明:
    1、图像效果卡,帧率低
    图像效果卡是因为本案例是采集一帧显示一帧,再采集一帧的方案,而且绘图使用的是直接描点的方式,没有用内存搬运方案,因此显示更新速率更慢。
    2、屏幕左上角有黑点
    黑点是Linux系统的屏幕Console的光标,这个光标目前还在按照固定的时间更新,所以会覆盖此部分图像,看到光标,可在内核配置中关闭屏幕console功能,就不会闪烁了。


    二、工程源码
    1、本案例对应的Quartus工程,就是镜像里默认使用的工程,名为“AC540_SoC_GHRD_pro.rar”,如果网盘没有找到,可以重新进网盘链接,在“02_设计实例\Quartus_Project”文件夹下找到。2、本案例对应的Linux应用程序源码,名为“ov5640_capture”,在“02_设计实例\C_User_Code”文件夹下的“C_User_Code.rar”压缩包中,如果找不到,可以可以重新进网盘链接下载这个文件。


    三、技术方案
    1、本案例使用的是FPGA直接写HPS侧DDR3的方案,HPS侧配置导出一个DDR3 SDRAM写端口,供FPGA侧写入数据使用。
    2、为了避免Linux将该段内存规划为系统内存,因此在Uboot中,将512MB的DDR3存储空间的高128M保留不使用,确保Linux系统运行起来之后,不会去读写该段存储空间。当图像采集存储完成之后,在Linux侧使用虚拟地址映射的方式,来读取该段空间中的数据。
    3、此方案相较于使用F2H_AXI_Bridge方案的优势在于,此方案直接使用FPGA将数据写入到了HPS侧的SDRAM中,不需要编写内核驱动进行数据的搬运,只需要直接在Linux用户程序中读取这段地址的数据即可。
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    17

    积分

    新手入门

    Rank: 1

    积分
    17
    发表于 2021-3-18 22:46:39 | 显示全部楼层
    请问小梅哥这个代码有吗:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P:P
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 268

    主题

    481

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    11501
     楼主| 发表于 2021-3-19 09:11:51 | 显示全部楼层
    ccb97 发表于 2021-3-18 22:46
    请问小梅哥这个代码有吗 ...

    帖子里说了代码的位置哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-1-5 18:16
  • 0

    主题

    2

    帖子

    24

    积分

    新手上路

    Rank: 2

    积分
    24
    发表于 2021-3-24 19:04:04 | 显示全部楼层
    稍微改进了一点。还是用片上sram做图像缓存,不过是用了三个64K的dpsram,每个能存240x240的图像,再把它们拼接成720x240的画面。效果如附件所示。

    VID_20210324_183418.rar

    3.86 MB, 下载次数: 32

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-1-5 18:16
  • 0

    主题

    2

    帖子

    24

    积分

    新手上路

    Rank: 2

    积分
    24
    发表于 2021-3-24 19:47:12 | 显示全部楼层
    为什么要把240x240的一帧图像放在sram里呢?因为camera端和display端的流率不一样。双端口SRAM并没有一个rdaddress和wraddress的协调机制,可能导致显示的是老信息,(当读流率快于写流率时)或者丢帧(当读流率慢于写流率时。)但只要全部内存只存储一个frame的图像信息,就感觉不出来。因为此时同一个空间位置上的图像信息只存在SRAM中一个固定的位置里。在这个点上,produce过快,或者consume过快,这个点上显示的信息都还是时间轴上正确的,即老信息显示在前,新信息显示在后。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|芯路恒电子技术论坛  |鄂ICP备2021003648号

    GMT+8, 2021-4-23 01:49 , Processed in 0.063908 second(s), 13 queries , File On.

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表