基于Linux的智能家居的设计(4)

时间:2022-05-04 07:22:00

3  开发环境的搭建

本次课题使用的开发环境比較特殊。没有一个现成的集成开发环境,需要自己一步一步的搭建开发环境,开发环境的搭建的过程十分复杂,并且假设没有这个开发环境本次课题就无法进行。

因此。在进行设计时。必需要进行开发环境的搭建。

3.1  虚拟机安装和系统安装

在PC机上安装VMware workstation 10.0虚拟机,将虚拟网络改为桥接模式,在虚拟机中安装Ubuntu12.04的系统。然后安装VM-tools。

在windows以下的创建共享文件夹G:/share,实现windows和Linux之间的文件相互拷贝,方便开发,仅仅要将想要复制的文件(arm-linux-gcc-4.3.2)放在G:/share以下。在Linux的终端以下仅仅要使用cp /mnt/hgfs/arm-linux-gcc-4.3.2/home就能够将文件拷贝到虚拟机中的/home文件夹以下。

3.2  安装arm-linux-gcc交叉编译器

详细的过程例如以下:

⑴  在Ubuntu12.04以下打开终端(Ctrl+Alt+T快捷键)输入以下命令:

#cd /home      (进入home文件夹)

#mkdir /usr/local/arm  (创建/usr/local/arm文件夹)

#tar –zxvf arm-linux-gcc-4.3.2.tgz –C/  (将编译器arm-linux-gcc解压到/usr/local/arm)

⑵  加入环境变量的在终端输入命令:

#vim /etc/profile

加入下面的的内容到文件里

export PATH=/usr/local/arm/4.3.2/bin:$PATH

export TOOLCHAIN=/usr/local/arm/4.3.2

export TB_CC_PREFIX=arm-linux

export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi

保存(wq),退出。

⑶  运行命令:source /etc/profile (让交叉编译器的环境变量生效)

測试交叉编译环境在终端输入arm-后按Table键是否会出现一堆关于arm-linux-之类的。或者使用arm-linux-gcc –v命令会出现交叉编译器相关的信息说明交叉编译环境已经成功安装了。

3.3  安装TFTP服务

TFTP 协议是简单文件传输协议,基于用户数据报(UDP) 协议。不须要考虑连接请求、连接终止与流量控制等特性,是一个实时性非常强的通信协议[13]。TFTP 分为server端程序和client程序,在主机上通常同一时候配置有TFTP 服务端和client。

默认安装的Ubuntu系统没有包括TFTP 的服务端和client,能够通过命令行来下载安装。命令例如以下:

#apt-get install tftp (安装client)

#apt-get install tftpd (安装服务端)

#apt-get install xinetd (安装xinetd)

xinetd 是监视一些网络请求的守护进程。其依据网络请求来调用对应的服务进程来处理连接请求。

在“/”文件夹下创建一个tftpboot,把属性改成777。

命令#chmod –R 777 /tftpboot

设置/etc/xinetd.d/tftp使用#vim /etc/xinetd.d/tftp进行配置

service tftp

{

socket_type = dgram

protocol = udp

wait =yes

user =root

server =/usr/sbin/in.tftpd

server_args = -s /tftpboot

disable = no

per_source =11

cps =100 2

flags =IPv4

}

#Service xinetd.d reload(又一次载入xinetd 进程)

#ufw disable(禁用防火墙)

3.4  安装NFS服

NFS即Network FileSystem的缩写。功能是能够通过网络让不同的机器、不同的操作系统能够共享文件(share files)[14]

本课题将它看为一个文件系统server,能够让ARM板或者远程PC机上的client共享远程的文件server。用起来十分的方便,本次课题的NFS主机共享文件夹与client挂载结构图如图3-1所看到的:

基于Linux的智能家居的设计(4)

图3-1  NFS主机共享文件夹与client挂载结构图

详细的过程例如以下:

⑴  准备NFS文件系统文件夹

⑵  启动nfs 服务之前。必须在Ubuntu12.04 上准备好NFS 共享文件夹。

比如。本课题採用Ubuntu的“/nfsroot”作为NFS 共享文件夹。就须要将FileSystem-Yaffs2.tar.gz 压缩文件复制到这个文件夹下。然后解压缩,得到根文件系统所须要的文件夹。

⑶  在Ubuntu12.04 上打开一个终端,输入下面命令:

#mkdir /nfsroot

⑷  将FileSystem-Yaffs2.tar.gz 文件复制到该文件夹下,解压:

#tar –zxf FileSystem-Yaffs2.tar.gz

⑸  设置主机IP

这里我们将Ubuntu的IP 设置为192.168.12.18。命令为:

#ifconfig eth0 192.168.12.18

#ifconfig eth0 up

⑹  配置NFS服务

在Ubuntu 上新建一个终端,依次输入下面命令:

#apt-get install portmap

#apt-get install nfs-kernel-server

#vim /etc/exports

在弹出的文本编辑器中编辑exports文件,在最后一行加入:

/nfsroot/FileSystem-Yaffs2192.168.12.*(rw,sync,no_root_squash)

这里的通配符表示在192.168.12.1~192.168.12.255之间的不论什么一个ipv4的地址。rw表示的是可读可写的权限,no_root_squansh的意思是登入NFS主机使用共享文件夹的用户。假设是root身份。那么对于这个共享文件夹来说,它就是具有root的权限。

⑺  启动NFS服务

#/etc/init.d/portmap restart

#/etc/init.d/nfs-kernel-server restart

3.5  将开发板挂载到文件系统上

成功挂载的效果应该是可以共享Linux以下的/nfsroot/FileSystem-Yaffs2文件夹以下的全部文件,ok6410开板上的文件夹与server上的文件夹一致,如图3-2、3-3所看到的:

基于Linux的智能家居的设计(4)

图3-2  clientok6410上的文件

基于Linux的智能家居的设计(4)

图3-3  server上的文件


3.6  搭建QT开发环境

在终端中输入apt-getinstall libqt4-dev libqt4-debug libqt4-guilibqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig就可以安装qt相关的开发工具。然后建立交叉的qt开发环境。进行tslib库的移植过程例如以下:

(1)  下载tslib-1.4.tar.gz

(2)  解压安装tslib

# tar -zxvf tslib-1.4.tar.gz

# cd tslib

# ./autogen.sh

echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache

# ./configure --host=arm-linux--cache-file=arm-linux.cache --enable-inputapi=no -prefix=/usr/local/tslib

# make

# make install

(3)  改动ts.conf内容

# vi /usr/local/tslib/etc/ts.conf

module_raw input

module pthres pmin=1

module variance delta=30

module dejitter delta=100

module linear

然后将整个tslib目录,下载到开发板的相应路径下(/usr/local)。

(4)  开发板配置环境变量

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event0     //指定触屏设备

export TSLIB_CALIBFILE=/etc/pointercal   //指定触摸屏校准文件pintercal 的存放位置

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf    //指定 TSLIB 配置文件的位置

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts    //指定触摸屏插件所在路径

export TSLIB_FBDEVICE=/dev/fb0    //指定帧缓冲设备

export TSLIB_CONSOLEDEVICE=none    //设定控制台设备为none,否则默觉得/dev/tty,这样能够避免出现“openconsoledevice: No such file or directory KDSETMODE: Bad file descriptor ”的错误

exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

另外,要确保在/dev/input/文件夹下有event0设备文件,在/dev/文件夹下有fb0设备文件。假设没有,在运行以下./ts_calibrate 的时候,会报出“open *: No such file or directory ”的错误。这时。须要手动创建设备文件:

# mknod /dev/input/event0 c 13 64

# mknod /dev/fb0 c 29 0

(5)  运行測试命令

重新启动开发板,在/usr/local/tslib/bin 文件夹下,输入./ts_calibrate。出现tslib的触摸屏五点校准画面,至此,tslib的安装移植成功完毕。

3.7  安装Mysql数据库

使用#apt-getinstall mysql-server安装服务器

使用#apt-getinstall mysql-client 安装客户端

登录数据库使用命令:

#mysql –u root –p

输入password:123456

假设成功的安装了Mysql数据库那么就会出现以下的如图3-4所看到的的结果:

基于Linux的智能家居的设计(4)

图3-4  成功安装数据库并成功登陆

增加链接库文件。使qt能连接到Mysql数据库。

使用#apt-getinstall libqt4-sql-mysql安装qt的mysql数据库驱动。这是会有文件 /usr/lib/i386-linux-gnu/qt4/plugins/sqldrivers/libqsqlmysql.so。

基于Linux的智能家居的设计(4)

图3-5  安装qt的mysql数据库驱动

接下来请看基于Linux的智能家居的设计(5)。