手把手移植物联网项目到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

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

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
2月前
|
监控 JavaScript NoSQL
【开源视频联动物联网平台】写一个物联网项目捐献给Dromara组织
【开源视频联动物联网平台】写一个物联网项目捐献给Dromara组织
30 1
|
2月前
|
前端开发 NoSQL JavaScript
【开源视频联动物联网平台】开箱即用的物联网项目介绍
【开源视频联动物联网平台】开箱即用的物联网项目介绍
82 1
|
23天前
|
Linux 计算机视觉
Linux交叉编译opencv并移植ARM端
通过以上步骤,你可以在Linux上交叉编译OpenCV,并将生成的库文件和头文件移植到ARM平台上,从而在ARM上使用OpenCV。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
47 0
|
27天前
|
JSON Ubuntu Linux
LuaJit交叉编译移植到ARM Linux
LuaJit交叉编译移植到ARM Linux
20 1
|
29天前
|
Linux
【ARM】迅为rk3568开发板buildroot添加桌面应用
【ARM】迅为rk3568开发板buildroot添加桌面应用
|
3月前
|
Linux 开发工具 芯片
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
玩转 PI 系列 - 如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
|
3月前
|
存储 网络协议 物联网
《物联网技术》课程笔记——第四章 物联网通信技术之计算机网络
《物联网技术》课程笔记——第四章 物联网通信技术之计算机网络
|
3月前
|
传感器 编解码 安全
《物联网技术》课程笔记——第三章 物联网感知技术之传感技术
《物联网技术》课程笔记——第三章 物联网感知技术之传感技术
《物联网技术》课程笔记——第三章 物联网感知技术之传感技术
|
3月前
|
存储 数据采集 监控
《物联网技术》课程笔记——第三章 物联网感知技术之定位技术
《物联网技术》课程笔记——第三章 物联网感知技术之定位技术
|
3月前
|
存储 数据采集 物联网
《物联网技术》课程笔记——第三章 物联网感知技术之标识技术
《物联网技术》课程笔记——第三章 物联网感知技术之标识技术