"); //-->
By Toradex 胡珊逢
1). 简介
传统的ARM 处理器由于其性能或者存储空间的缘故,源码代码都是在 PC 机上用相应的编译器交叉编译为二进制可执行文件。最后再将其部署目标板进行远程调试。因此,用户必须在 PC 上配置 ARM 开发环境,这一般包括交叉编译工具、头文件、交叉编译所得的库文件以及其他配置文件等。
Nvidia Tegra K1 处理器,具有 4 核 Cortex-A15,最高主频为 2.2 GHz。本文将使用Toradex公司基于此处理器的Apalis TK1 ARM计算机模块进行测试,在这个模块上,除了可以使用 Toradex 提供的基于 Angstrom 的 Linux BSP 外,用户还可以在 上面使用由Nvidia 提供的 JetPack BSP。该 BSP 是基于 Ubuntu 的针对 Tegra K1 处理器的发行版本,包含基本的 Linux 工具和 Nvidia 专属的 CUDA 支持库文件,方便用户开发 K1 上的 Kepler GPU,发挥其强大的并行计算能力。
由于 JetPack BSP 采用了 Ubuntu,Apalis TK1 的软件系统能够延续 PC 上的用户使用习惯,包括支持使用 apt-get 在线安装软件,软件名字与基于 x86 的 Ubuntu 系统并无二致。加之 Apalis TK1 处理器本身强大的性能,以及 16 GB 的片上存储,用户能够直接在 Apalis TK1 编译应用源代码。下面将以 OpenCV 2.4.13 在 Apalis TK1 本地编译为例进行说明。
2). 具体操作步骤
a). 安装 Linux 开发的基本软件
---------------------------
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install build-essential
---------------------------
b). 安装 OpenCV 依赖软件
---------------------------
sudo apt-get -y install make cmake cmake-curses-gui g++
sudo apt-get -y install libavformat-dev libavutil-dev libswscale-dev
sudo apt-get -y install libv4l-dev
sudo apt-get -y install libeigen3-dev
sudo apt-get -y install libglew1.6-dev
sudo apt-get -y install libgtk2.0-dev
---------------------------
c). GCC 编译器
---------------------------
ubuntu@tegra-ubuntu:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.8/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/dof
Thread model: posix
gcc version 4.8.4 (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.3)
---------------------------
d). 下载 OpenCV
---------------------------
wget https://github.com/Itseez/opencv/archive/2.4.13.zip
---------------------------
解压下载的软件包。
e). 本地编译 OpenCV
---------------------------
cd opencv-2.4.13
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="3.2" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF ..
make -j4
---------------------------
充分利用 TK1 所具有的 4 个处理器,缩短编译时间。由于启用 4 线程编译应用,这在缩短编译时间的同时会给 CPU 带来满负荷的处理任务,导致 CPU 发热增加。因此,在启动多线程编译应用的时候,需要为 Apalis TK1 提供良好的散热措施,包括使用带风扇的散热器等。整个编译过程将会持续 数十分钟。
f). 安装 OpenCV
---------------------------
sudo make install
---------------------------
对应的文件将会复制到 /usr/local/include 和 /usr/local/lib 目录。
g). 本地编译 OpenCV 例程
---------------------------
cd opencv-2.4.13/samples/gpu
g++ houghlines.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_calib3d -lopencv_contrib -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_video -lopencv_videostab -o houghlines
---------------------------
执行应用程序
---------------------------
./houghlines ../cpp/logo_in_clutter.png
---------------------------
3). 总结
上面编译 OpenCV 的过程均在 Apalis TK1 计算机模块上完成,所有编译工作不使用在 PC 机上的交叉编译工具。该方法的优点是,用户能够快速地编译源代码,免于在 PC 机上配置开发环境。程序编译过程中所依赖的头文件以及链接的库文件,均在本地目录中寻找。在交叉编译的时候,如果没有配置好目标的 BSP 目录,编译器会使用 PC 机上系统的头文件。如果对应软件在目标板和 PC 机的版本不同,会导致应用在目标板上运行出错。缺点则是在于编译性能。即使具有 4 核 Cortex-A15,但是与 x86 CPU,特别是高端处理器如 i7、i5 相比,K1 仍然存在一定的差距。因此,在编译大型应用的时候,K1 可能需要更多的时间。例如 OpenCV 2.4.13 在 Intel® Core™ i5-3337U CPU @ 1.80GHz × 4 编译耗时约为TK1 的三分之一。如果考虑到源码的管理工具,如 git、svn,PC 机会比 TK1 更具优势。当然对于小型的应用程序,或者一些测试代码,在 TK1 本地编译显然会更具便利。接下来的文章中,我们会介绍在 PC 机使用交叉编译工具开发 Apalis TK1 应用程序。专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
英伟达在Synopsys上投资20亿美元,作为多年AI合作的一部分
从物理层角度来看,超高可靠性意味着什么?
为什么汽车制造商正在重新思考空中更新策略
用带平均电流限幅功能的半桥式电路拓朴结构提高砖电源模块的功率密度(上)
fastj_ds
TA7232P功放电路
采用ADP1043A的数字电源设计实例
基于SMD封装的高压CoolMOS
声学超表面,IDT以吉赫兹速率调制光线
NCL30000单段式功率因数校正LED驱动器原理及TRIAC调光LED驱动器设计方案(上)
这次,较小的高性能计算中心推动了前500超级计算机排名的前列
各论文LOGO图片嵌入成功!!!调试画面如下,请各版主、网友提意见……
全球数据中心冷却市场升温
fangzhen
达索的实时空间计算会是下一个重大汽车飞跃吗?
freescale2004
20亿美元!英伟达宣布入股EDA巨头新思科技
TA7240AP功放电路
本站下载区新上传技术资料和文档
现实正在破坏类人机器人的热潮
基于神经网络的更智能DPD引擎方法
TA7250P功放电路
TA7230P功放电路
推荐一个好网站!
用带平均电流限幅功能的半桥式电路拓朴结构提高砖电源模块的功率密度(下)
赵传《爱要怎么说出口》
TA7233P功放电路
行业关键词!
envoy_snmp_ds
FlashProgV5.0