本文主要是介绍手把手移植物联网项目到arm开发板笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
手把手移植物联网项目到arm开发板笔记
文章目录
- 手把手移植物联网项目到arm开发板笔记
- 0.环境
- 1.sqlite3移植
- 1.1.下载
- 1.2.解压
- 1.3.编译
- 1.4.编译
- 1.5.移植到arm板
- 2.主程序
- 3.mjpg_streamer
- 3.1.移植 MJPG 库
- 3.2 移植 mjpg-streamer 服务器
- 4.CGI
- 5.boa服务器
- 5.1.解压源码
- 5.2.进入src/
- 5.3.make编译
- 5.4.Boa服务器配置
- 5.4.1、 创建目录
- 5.4.2、 将boa源码目录下的boa.conf拷贝到/etc/boa目录下
- 5.4.3、 修改配置文件boa.conf
- (1)Group的修改
- (2)user的修改
- (3)ScriptAlias的修改
- (5)DocumentRoot的修改
- (6)ServerName的设置
- (7)AccessLo/g修改
- (8)以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建
- 5.5.boa服务器测试
- 6.运行脚本
首先我使用的交叉编译器为
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
结束
这篇关于手把手移植物联网项目到arm开发板笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!