前言

公司要做立体匹配相关的项目,已有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. python dpkt解析ssl流

    用法:python extract_tls_flow.py -vr  white_pcap/11/2018-01-10_13-05-09_2.pcap  -o pcap_ssl_flow.txt  & ...

  2. npm使用过程中出现的错误

    1.安装npm install axios -S报错install "npm ERR! Error: EPERM: operation not permitted" error 经 ...

  3. 在vue项目中使用sass

    如果想开发移动端项目,那么适配的时候sass必不可缺,但是 npm  安装sass时候总是报错失败! 研究半天发现可以解决的方法,亲测有效 1.先换成淘宝镜像再安装 npm install -g cn ...

  4. cpu-z for ubuntu 12.04 64bit : cpu-g

    wget https://launchpad.net/~phantomas/+archive/ppa/+files/cpu-g_0.9.0_amd64.deb sudo dpkg -i cpu-g*. ...

  5. Win10系列:JavaScript 的 WinJS库

    WinJS 库是由 CSS 和 JavaScript 文件组成的.使用Visual Studio 2012新建一个JavaScript 的Windows应用商店的空白应用程序项目,在项目的引用管理器中 ...

  6. UVa 11825 - Hackers' Crackdown DP, 枚举子集substa = (substa - 1)&sta 难度: 2

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  7. 图片加载------reactVirtualized

    作用: 让HTML文档始终保持固定数量的图片数量,可以节省带宽

  8. nginx:负载均衡(三)分流策略

    [1]轮询策略.轮询策略是最简单的策略,无脑配置,不考虑服务器的访问的能力.每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 upstream www.daysn. ...

  9. 【资料收集】QT学习资料

    几个专栏 Qt学习之路(3):Hello, world!(续) - 豆子空间 - 51CTO技术博客 http://devbean.blog.51cto.com/448512/194137 Qt 学习 ...

  10. Spring框架的四大原则

    Spring框架本身有四大原则: 1).使用POJO进行轻量级和最小入侵式开发 2).通过以来注入和基于接口编程实现松耦合 3).通过AOP和默认习惯进行声明式编程 4).使用AOP和模板减少模式化代 ...