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

在这里插入图片描述

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

4.CGI

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

CC=gcc

修改为

CC=arm-linux-gnueabihf-gcc

在这里插入图片描述

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

cp /home/alientek/linux/mynfs/cgi /home/alientek/linux/mynfs/

然后在开发板下拷贝到/www/cgi-bin目录(/www目录是网址界面配置)

cp /home/root/get/cgi/out/* /www/cgi-bin/

5.boa服务器

5.1.解压源码

tar xvf boa-0.94.13.tar.tar
cd boa-0.94.13

5.2.进入src/

./configure   

生成Makefile
修改Makefile
修改

 CC = gcc

   CC = arm-linux-gnueabi-gcc

修改

 CPP = gcc -E 

 CPP = arm-linux-gnueabi-gcc -E

5.3.make编译

执行

make 

然后给boa瘦身

arm-linux-gnueabi-strip boa

5.4.Boa服务器配置

5.4.1、 创建目录

mkdir /etc/boa

5.4.2、 将boa源码目录下的boa.conf拷贝到/etc/boa目录下

cp boa.conf /etc/boa

5.4.3、 修改配置文件boa.conf

在这里插入代码片

vim /etc/boa/boa.conf

(1)Group的修改

修改

Group nogroup

Group 0
(2)user的修改

修改

User nobody

User 0
(3)ScriptAlias的修改

修改

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

ScriptAlias /cgi-bin/ /www/cgi-bin/
(5)DocumentRoot的修改

修改

DocumentRoot /var/www

DocumentRoot /www
(6)ServerName的设置

修改

#ServerName www.your.org.here

 ServerName www.your.org.here

否则会出现错误“gethostbyname::No such file or directory”

(7)AccessLo/g修改

修改

AccessLog /var/log/boa/access_log

#AccessLog /var/log/boa/access_log
(8)以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建

修改

CGIPath /bin:/usr/bin:/usr/local/bin

CGIPath /bin:/usr/bin:/www/cgi-bin

复制HTML文档的主目录/www 到开发板根目录

5.5.boa服务器测试

将boa拷贝到开发板根文件系统的/etc/boa下

cp src/boa /etc/boa

将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下

cp mime.types /etc/

运行boa,然后在主机游览器输入开发板网址

root@ATK-IMX6U:/etc/boa# ./boa

在这里插入图片描述

移植成功

在这里插入图片描述

6.运行脚本

编写运行脚本bash.sh

cd
./zigbee &

cd /etc/boa
./boa &

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

运行脚本(开发板接上所有需要使用的外设,摄像头,协调器)

./bash.sh

在这里插入图片描述

结束

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦梨甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值