前言

公司要做立体匹配相关的项目,已有matlab和c++版本,可是不能做到实时显示立体信息,想要硬件实现实时,无奈本渣也是个硬件的新手,先按照实验室lyq同学的思路在zedboard开发板的纯ARM核里跑代码,嵌入式的实现过程是:硬件平台是zedboard开发板,运行的是里面的ARM-A9硬核,在里面运行的是ramdisk系统它是基于Linux的,软件使用的就是在Linux上,移植opencv到zedboard上面,在虚拟机linux系统下编译代码,再zedboard上面运行就行了。其中,ramdisk是ARM-A9硬核的运行系统。在编译的过程中,需要先配置opencv环境,而且需要将opencv的配置环境的镜像文件移植到zedboard开发板(挂载opencv库)。

移植过程:

1.搭建VMware虚拟机系统,配置交叉编译环境,配置opencv库,制作opencv配置环境的镜像文件,镜像文件中是移植好的opencv库;

2.需要将整个算法过程进行编译(不一定要使用QT,也可以直接使用cmake),生成.o文件,注意:这个过程中由于LYQ移植库的时候没搞好,不能是彩色图,只能是单色bmp图像格式(画图工具另存为单色bmp图像);

将算法整个过程需要用到的文件copy到sd卡或者U盘,包括opencv库的镜像文件、输入图像、编译生成的.o文件;

3.下载串口调试工具

下载了很多串口调试工具,最后只有SecurtCRT管用,需要生成注册码,参考网站:http://download.csdn.net/detail/cwb417/8580615

非常好用,之前已经下载的有这个软件,试用期过后必须使用注册码,在网上试了好多方法都不行,把这个下载下来按照注册机文件夹的readme的步骤来做,一下子就好了;注意:patch之后生成注册信息,然后打开pc端SecureCRT 这个软件,按步骤很快就ok啦~~

4.在嵌入式板子上运行程序

首先将sd卡或者u盘挂载到开发板的系统上,创建/usr/local/lib,将库文件加载到/usr/local/lib文件夹下,运行.o文件,最后得到结果(得到的是代码运行的时间)。

整个过程中遇到的问题:

1.打开SecureCTR,选择正确的com口,串口参数设为波特率115200、数据位8、停止位1、校验无。

2.1)开发板的SD卡启动的引脚设置(Zedboard的连接和短路块设置)

2)SD卡的读写模式:lock表示sd卡被写保护;在代码的运行过程中,出现内存区域为只读模式,不能在sd卡上运行代码;sd卡的名称;

原因:sd卡是只读模式,运行代码的区域是冲突区域;之后改用u盘进行文件挂载;

3.代码使用的图像和.o文件在同一个文件夹下

4.mount时候出现device or resource busy的问题

     原因:设备号冲突
    通过命令行 cat /proc/devices可以查看当前系统已经分配的设备号;
5.编译sm.o时发生错误,说是没有libopencv_core.so.2.4这个文件,可是通过ls命令可以查看到该文件,为什么?
   

解决方法:

原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可;
另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.
一般没有权限的时候使用 可以export一个全局变量 

LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

顺便说一句,如果目前的库是高版本的,xxx.so.5 但是程序报错是xxx.so.4 找不到,可以做一个软链接,因为一般都是可以向下兼容的

ln -s /usr/local/lib/xxx.so.5 /usr/local/lib/xxx.so.4
6.运行程序时候说输入图像错误:input image error
   由于opencv库配置的问题,输入图像应该是单色bmp格式;
7.镜像文件中没有libavcodec.so.56这个文件,运行./sm_png.o时出现这个问题
   
解决方法:下载该文件,将该文件加载到库文件夹下;
8.需要在虚拟机中重新编译生成sm.o文件,运行的代码是重新编译的.o文件,否则会产生错误;
9.linux系统的命令以及对系统的熟悉和学习需要加强;
 
终于暂时搞定啦~~~~~

疑问:

1.cd /mnt; mount ./opencv_lib.img /usr/local/lib

 为什么是将img镜像文件挂载到绝对路径下,而不是直接copy过去?

zedboard开发板上移植opencv代码(立体匹配)的更多相关文章

  1. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

  2. ZedBoard开发板学习记录(一)之开发环境的搭建(Ubuntu16.04)以及运行HelloWorld程序的测试

    ZedBoard开发板由PL和PS两大部分组成, 对PS操作,一般有两个办法: (1).在Windows系统上面,使用SDK新建C Project SDK自带编译环境,编译后自动产生elf文件.使用U ...

  3. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  4. 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

    在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...

  5. 【开发实录】在鸿蒙开发板上使用websocket(移植自librws库)

    librws: Tiny, cross platform websocket client C library 相关代码可在下面下载,也可进入librws: 将librws移植到鸿蒙Hi_3861开发 ...

  6. zedboard上移植OPENCV库

    zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指 ...

  7. ARM开发板系统移植-----u-boot的编译

    本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果.其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发 ...

  8. 【分享】iTOP4412开发板-Bluetooth移植文档

    [分享]iTOP4412开发板-Bluetooth移植文档 最近须要把Bluetooth移植到iTOP-4412 开发平台.查阅了相关资料,经过一段时间的研究.调试,最终成功的将蓝牙功能移植到了开发板 ...

  9. 使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

    关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开 ...

随机推荐

  1. pycham相关+Python基础

    pycham 1.设置pycham和线上服务器同步代码 a.Tools--->Deployment--->Configuration   b.设置连接的服务器IP c.设置连接的用户名+密 ...

  2. daal4py 随机森林模型训练mnist并保存模型给C++ daal predict使用

    # daal4py Decision Forest Classification Training example Serialization import daal4py as d4p import ...

  3. git报错fatal: I don't handle protocol '​https'处理

    一.背景说明 今天使用在Cygwin中git clone时报fatal: I don't handle protocol '​https',如下: 以为是Cygwin实现的git有点问题没太在意,换去 ...

  4. Dagger2不自动生成daggerXXXcomponent

    在Fragment里面初始化dagger2创建对象时,不自动生成daggerXXXcomponent. 百思不得其解,后来发现是import android.app.Fragment;所以不自动生成. ...

  5. valgrind 工具介绍和简单的使用

    最近老是遇上各种奇奇怪怪的core dump,不太会分析的情况下看到了这款工具.在这记录分享下. Valgrind 是个开源的工具,功能很多.例如检查内存泄漏工具---memcheck. Valgri ...

  6. 关于datetimepicker只显示年、月、日的设置

    如下是只显示月的sample code: <link rel="stylesheet" href="css/datetimepicker/bootstrap-dat ...

  7. 隔行变色&&鼠标移入变色

    <html lang="en"> <head> <meta charset="UTF-8"> <title>Do ...

  8. day14-python异常处理

    1.     异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当Pyt ...

  9. Django 前台通过json 取出后台数据

    转载自:https://my.oschina.net/esdn/blog/814111 步骤1:后台数据通过 JSON 序列化成字符串 注意:1.json是1个字符串 2.通过json.dumps(' ...

  10. JXL生成Excel,并提供下载(1:生成Excel)

    public String exportExcel(long id) { String preeReviewName = "文件名"; String filePath = 路径名; ...