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. Maven install 报错: Failed to execute goalorg.apache.maven.plugins:maven-gpg-plugin:1.4:sign (sign-art

    执行 Maven install 时报错: Failed to execute goalorg.apache.maven.plugins:maven-gpg-plugin:1.4:sign (sign ...

  2. Gcc\MingW\Cygwin\Msys简介

    一.GCC的历史GCC是一个原本用于Unix-like系统下编程的编译器.不过,现在GCC也有了许多Win32下的移植版本.所以,也许对于许多Windows开发者来说,GCC还是一个比较陌生的东西.所 ...

  3. lua字符串

    本文内容基于版本:Lua 5.3.0 概述 Lua字符串中的合法字符可以是任何的1字节数据,这包括了C语言中表示字符串结束的'\0'字符,也就是说Lua字符串在内部将以带长度的内存块的形式存储,存储的 ...

  4. jquery+ashx checkbox 单选判断是否true 和 false 传值操作

    示例图: html标签代码: <p></p> <label for="checkbox" style="float:left" & ...

  5. C++友元详解

    1.什么是友元在一个类A中,将类B声明为友元类,则类B可以访问类A的私有成员和保护成员.另外,也可以将函数声明为友元函数. 2.什么时候用到友元若不同的类之间某些共享数据成员,可以使用友元,简化类的设 ...

  6. Freemarker-2.3.22 Demo - No03_使用map绑定多个参数

    package No03_使用map绑定多个参数; import java.io.File; import java.io.FileOutputStream; import java.io.Outpu ...

  7. Java – Convert IP address to Decimal Number

    In this tutorial, we show you how to convert an IP address to its decimal equivalent in Java, and vi ...

  8. Sql Server连接字符串

    SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1; ...

  9. LeetCode: Spiral Matrix II 解题报告-三种方法解决旋转矩阵问题

    Spiral Matrix IIGiven an integer n, generate a square matrix filled with elements from 1 to n2 in sp ...

  10. 7处ff与ie中读写html、css相关属性的不同之处

    1. float样式属性 IE syntax: document.getElementById("test").style.styleFloat = "left" ...