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. JAVA多线程和并发基础面试问答【转】

    JAVA多线程和并发基础面试问答 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰 ...

  2. mini2440裸机音乐播放器(非常久曾经的笔记)

    [这是好久曾经写的.有点乱,没时间整理.当做记录用的.] 图片粘贴失效.没上传图,想要的直接下载文档吧. 项目目的:通过IIS,触摸屏,LCD模块实现音乐播放器功能(button上一首.下一首.播放. ...

  3. vim打造简易C语言编辑器(在用2016.7.10)

    vim和C语言都需要长期的学习,才能够精通,我制作了这个简单的笔记,主要的作用是,不要在重复的,反复的找同一样东西了,积累是成功的关键. 1. 安装pathogen插件管理器. 在官网下载pathog ...

  4. Hg(Mercurial)版本管理学习

    1.关闭分支,首先切到你要关闭的分支 hg commit --close-branch -m. 2.仓库ip地址改变之后,重设仓库ip 找到.hg文件夹 - hgrc文件 - 记事本打开重设 3.推分 ...

  5. Tomcat Jboss Glassfish 三种常见web容器比较

    一.缘由: 新公司平台是纯Java架构,有用到Java Web(JSP).Java 业务(EJB).Nginx..Websphere MQ.Mysql这样.大家知道java是跑在容器里的, 这里的业务 ...

  6. ORACLE 多列合并成一行数据 WM_CONCAT函数以及REPLACE

    WM_CONCAT()方法 注意字符长度 SELECT BERTHCODE,tpf.freedatetype, ( SELECT WM_CONCAT(SBPT.PARKSTIME||'~'||SBPT ...

  7. 解决PHP下载文件时因时文件太大而报404错误

    set_time_limit(0); ini_set('memory_limit', '512M'); header('Content-Type: application/octet-stream') ...

  8. eclipse egit 报错 The current branch is not configured for pull No value for key branch.master

    eclipse egit 插件 pull报错 The current branch is not configured for pull No value for key branch.master ...

  9. App.config 中读写appSettings、system.serviceModel终结点,以及自定义配置节

    转自:http://blog.csdn.net/chelen_jak/article/details/8190795 感觉写的很好,推荐

  10. Zookeeper使用场景

    分布式系统的运行是很复杂的,因为涉及到了网络通信还有节点失效等不可控的情况.下面介绍在最传统的master-workers模型,主要可以会遇到什么问题,传统方法是怎么解决以及怎么用zookeeper解 ...