手把手移植物联网项目到arm开发板笔记(上)

简介: 手把手移植物联网项目到arm开发板笔记

首先我使用的交叉编译器为

arm-linux-gnueabihf

0.环境

首先我是用的为正点原子的阿尔法IMX6ULL开发板,在移植之前将Linux操作系统固化到开发板,配置好网络,开发板与Ubuntu之间能够相互ping通。

终端控制开发板,进入开发板目录,创建get目录来挂载nfs文件系统,实现虚拟机与开发板之间文件的传递。

创建get文件夹

mkdir get

修改get文件夹权限

chmod 777 get

通过nfs来挂载get文件夹

mount -t nfs -o nolock,nfsvers=3 192.168.10.100:/home/alientek/linux/mynfs get/
  • 192.168.10.100为ubuntu中为开发板提供网络的网卡的IP地址,
  • /home/alientek/linux/mynfs为Ubuntu中需要共享的目录,也就是需要传送到开发板文件的目录
  • get/ 开发板个共享目录,如果共享成功/home/alientek/linux/mynfs/目录与get/目录下的文件内容一致
    上述内容需要更据自己开发板内容来修改,请大家自行修改。
    如下图,我挂载成功后的内容

1.sqlite3移植

1.1.下载

下载网址

SQLite Download Page

https://www.sqlite.org/download.html

下载source code中的sqlite-amalgamation-3410100.zip,与sqlite-autoconf-3410100.tar.gz,

1.2.解压

将下载的文件放到虚拟机中,解压

unzip sqlite-amalgamation-3410100.zip

tar zxvf sqlite-autoconf-3410100.tar.gz

1.3.编译

修改配置

./configure --host=arm-linux-gnueabihf --prefix=/home/alientek/tools/sqlite3/install

–host 选项用于指定交叉编译得到的库文件是运行在哪个平台,通常将–host 设置为交叉编译器名称的前缀,譬如 arm-pokylinux-gnueabi-gcc 前缀就是 arm-poky-linux-gnueabi; --prefix 选项则用于指定库文件的安装路径,我们将安装路径设置为之前在家目录下创建的目录。

1.4.编译

make

编译后将编译结果安装到指定目录

make install

1.5.移植到arm板

接着将install/bin/sqlite3拷到arm板的/usr/bin目录下;将install/lib/下的所有库拷贝到arm板/usr/lib/下,至此sqlie3的嵌入式移植工作完成。

2.主程序

将主程序中Makefile中指定的编译器修改为交叉编译器

CC=gcc

修改为

CC=arm-linux-gnueabihf-gcc

然后编译即可,得到zigbee可执行文件,将这个文件放到开发板上,先将zigbee可执行文件放到Ubuntu的nfs共享目录下,然后在开发板下,将该文件拷贝到其他目录下。

cp /home/alientek/share/a/2.项目完整源码/mainthread/zigbee /home/alientek/linux/mynfs/

然后在开发板下拷贝到其他目录

cp get/zigbee /home/root/

然后测试(测试没有接入其他外设,摄像头,协调器)

3.mjpg_streamer

3.1.移植 MJPG 库

使用 mjpg-streamer 要用到 MJPG 库, 所以我们要先把 MJPG 库移植到开发板上。

MJPG 库下载地址:

http://www.ijg.org/files/

将下载好的 jpegsrc.v8b.tar.gz 压缩包放到ubuntu中 自定义mjpg 文件夹下, 然后解压:

tar -vxf jpegsrc.v8b.tar.gz

在这里插入图片描述

然后在此目录下创建文件夹用来存放编译生成文件,执行以下命令配置编译选项:

./configure --host=arm-linux-gnueabi --prefix=/home/alientek/tools/mjpg/jpeg-8b/install/

参数说明:–prefix=/home/alientek/tools/mjpg/install/: 为上步创建的文件夹路径, 根据实际填写。

–host=arm-linux-gnueabihf: 为交叉编译工具的名字。

执行 make 编译, 完成后如下图:

make
make install

进入install 文件夹查看, 有如图所示文件即为成功:

将install 的/lib/下的库文件拷贝到开发板的/lib/目录下:

3.2 移植 mjpg-streamer 服务器

mjpg-streamer 是一个命令行应用程序, 可通过网络将 JPEG 文件从网络摄像头流传输到各种类型的查看器, 例如浏览器, mplayer 等其他能够接收 MJPG 流的软件。

下载网站:

MJPG-streamer / Code / [r182] (sourceforge.net)

https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/

输入

svn checkout https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code

下载, 目录下多出以下文件:

进入 mjpg-streamer/mjpg-streamer-code/mjpg-streamer/文件夹:

执行

source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

make clean

输入以下命令修改交叉编译工具:

find -name "Makefile" -exec sed -i "s/CC = gcc/CC = arm-linux-gnueabihf-gcc/g" {} \;

find -name “Makefile” -exec sed -i “s/CC = gcc/CC = arm-poky-linux-gnueabi-gcc/g” {} ;

查看是否修改成功,

正点原子阿尔法开发板是基于I.MX6UL芯片的ARM Linux开发板,它提供了两种交叉编译工具链:

一种是Poky编译器,是Yocto项目编译出的,常用于编译Uboot和Linux出厂源码,以及快速编译Qt应用程序到开发板上运行。

另一种是通用的交叉编译器,用于ARM Linux驱动和应用开发。

这两种交叉编译工具链的名字分别为:

arm-poky-linux-gnueabi-

arm-linux-gnueabihf-/

grep "arm-linux-gnueabihf-gcc" * -nR

继续修改编译选项, 搜索“CFLAGS” :

根据搜索出来的信息, 进入 plugins 文件夹, 修改 plugins/input_uvc/Makefile, 第 15 行添加

CFLAGS += -I /home/alientek/tools/mjpg/install/include/

第 25 行改为:

LFLAGS += -L /home/alientek/tools/mjpg/install/lib/-ljpeg

回到 mjpg-streamer 目录下, 执行 make 编译, 成功后如下图:

在目录下会生成.so 库文件和 mjpg_streamer,

将.so 文件拷贝到开发板的/lib/目录下, mjpg_streamer 文件夹拷贝到开发板的/bin/目录下, www 拷贝到/opt/目录下:

先将文件拷贝到nfs目录下

cp *.so start.sh mjpg_streamer /home/alientek/linux/mynfs/mjpg
cp www /home/alientek/linux/mynfs/mjpg -rf
cp mjpg_streamer /home/alientek/linux/mynfs/mjpg

让后在板子终端下拷贝到相应位置

cp *.so /lib/
cp www /opt/ -rf
cp mjpg_streamer /bin/

到此移植结束,移植后测试

测试

mjpg_streamer -i "/lib/input_uvc.so -d /dev/video2 -r 320x240 -f 30 -yuv" -o "/lib/output_http.so -w /opt/www"

在Ubuntu内的浏览器中输入开发板的ip地址+端口号(按照自己开发板信息修改):

192.168.10.101:8080

网址上可以看到摄像头的画面,移植成功

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
监控 物联网 应用服务中间件
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
|
监控 物联网 编解码
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
|
传感器 安全 算法
在物联网项目中使用 MicroPython 时如何确保数据安全
在物联网项目中使用MicroPython时,确保数据安全至关重要。可通过加密通信、安全固件更新、认证机制和定期审计等方法提升安全性,防止数据泄露和设备被恶意操控。
|
传感器 物联网 芯片
如何在物联网项目中使用 MicroPython
本指南介绍如何在物联网项目中使用MicroPython,涵盖设备选择、环境搭建、基础编程及网络通信等内容,助你快速上手MicroPython开发。
1126 4
|
传感器 Rust 物联网
通义灵码在物联网项目中的实战应用
通义灵码在物联网项目中的实战应用
464 0
|
消息中间件 存储 传感器
RabbitMQ 在物联网 (IoT) 项目中的应用案例
【8月更文第28天】随着物联网技术的发展,越来越多的设备被连接到互联网上以收集和传输数据。这些设备可以是传感器、执行器或其他类型的硬件。为了有效地管理这些设备并处理它们产生的大量数据,需要一个可靠的消息传递系统。RabbitMQ 是一个流行的开源消息中间件,它提供了一种灵活的方式来处理和转发消息,非常适合用于物联网环境。
965 1
|
消息中间件 物联网 API
消息队列 MQ使用问题之如何在物联网项目中搭配使用 MQTT、AMQP 与 RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
传感器 边缘计算 物联网
《手把手实现一个物联网项目》02 什么是物联网?
在当今数字化时代,我们经常听到物联网(Internet of Things,IoT)这个术语,但是什么是物联网呢?物联网是如何影响我们的日常生活和未来的发展呢?在本文中,我们将探索物联网的定义、架构以及一些常见的应用领域。
473 1
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城

热门文章

最新文章