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所看到的:

图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所看到的:

图3-2  clientok6410上的文件

图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所看到的的结果:

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

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

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

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

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

基于Linux的智能家居的设计(4)的更多相关文章

  1. 基于Linux的智能家居的设计(3)

    2  硬件设计 本课题的硬件设计包含主控制器.传输数据设计.数据採集设计.控制驱动设计.显示设计.门禁设计. 2.1  主控制器 依据方案三选择S3C6410主控芯片,S3C6410是由Samsung ...

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

    1  系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进 ...

  3. 基于Linux的智能家居的设计(5)

    4  软件设计 软件设计部分主要包含uboot移植.内核编译.系统移植.设备驱动编程.应用程序编程(QT编程.mysql数据库编程.控制系统编程).各个模块的功能函数(部分是在windows以下的IA ...

  4. 基于ESP32的智能家居管理系统的设计与实现

    基于ESP32的智能家居管理系统的设计与实现 ESP32的智能家居管理系统访问链接: https://www.cnblogs.com/easyidea/p/13101165.html 一.需求分析 1 ...

  5. 基于树莓派的智能家居项目的设想与实现 Hestia

    注:本人内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致.实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve ...

  6. 一只简单的网络爬虫(基于linux C/C++)————配置文件设计及读取

    一般来说linux下比较大型的程序都是以配置文件作为参数介质传递的,该爬虫也采用配置文件的方式来获取参数,配置文件格式大致如下: max_job_num=1 #seeds=https://www.ba ...

  7. 基于能量收集的智能家居-2013国家级大学生创业实践项目申报_商业计划书_V0.2

    SmartHome项目商业计划 基于能量收集的 免电池无线智能家居系统    IA-SmartHome团队    2012.12     l  基于无线的智能家居解决方案,节省施工成本: l  基于能 ...

  8. Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

    Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...

  9. 智能家居系统 Home Assistant 系列 --介绍篇

    一. HomeAssistant 是什么? HomeAssistant是构建智慧空间的神器.是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation).群组化 ...

随机推荐

  1. texturePacker黄色文件夹和蓝色文件夹

    texturePacker中以黄色文件夹添进来的文件夹中的图片,不用带文件夹名,以蓝色文件夹添进来的文件要带文件夹名.

  2. Redis(五):几个常用概念

    1.Redis 默认有16384 solts(槽),每个槽可以存储多个hash值. 2.Redis 默认不需要密码: 2.1 注释去掉,设置自己的密码 3.设置密码后需要通过 3.1 -h 主机ip ...

  3. macbook中gcc替换为gnu gcc

    macbook中gcc被定义为clang,而正统的gnu gcc却只能使用gcc-7(gcc 7版本),然而,如果修改/usr/bin的链接,还容易造成系统错误,因为mac的工具链和gcc(clang ...

  4. Python文件遍历二种方法

    分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os ...

  5. 源码编绎的时候报错 tengine-2.1.0 error: the HTTP rewrite module requires the PCRE library.

    ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the mo ...

  6. 可扩展多线程异步Socket服务器框架EMTASS 2.0

    0 前言 >>[前言].[第1节].[第2节].[第3节].[第4节].[第5节].[第6节] 在程序设计与实际应用中,Socket数据包接收服务器够得上一个经典问题了:需要计算机与网络编 ...

  7. rman备份,恢复

    ackup database format 'd:\tt\%U'; rman> restore database;rman> recover database; ============= ...

  8. 采用Filter的方法解决Servlet的编码问题

    这样比你自己在Servlet代码中硬编码request.setCharacterEncoding, response.setCharacterEncoding方便多了 总之,如果你添加了这个filte ...

  9. LeetCode: Max Points on a Line 解题报告

    Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the ...

  10. tomcat 启动自动加载外部项目

    conf/server.xml 配置 <!--<Context path="/upload" docBase="E://upload" />- ...