基于Linux的智能家居的设计(4)
本次课题使用的开发环境比較特殊。没有一个现成的集成开发环境,需要自己一步一步的搭建开发环境,开发环境的搭建的过程十分复杂,并且假设没有这个开发环境本次课题就无法进行。
因此。在进行设计时。必需要进行开发环境的搭建。
在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文件夹以下。
详细的过程例如以下:
⑴ 在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命令会出现交叉编译器相关的信息说明交叉编译环境已经成功安装了。
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(禁用防火墙)
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
成功挂载的效果应该是可以共享Linux以下的/nfsroot/FileSystem-Yaffs2文件夹以下的全部文件,ok6410开板上的文件夹与server上的文件夹一致,如图3-2、3-3所看到的:
图3-2 clientok6410上的文件
图3-3 server上的文件
在终端中输入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的安装移植成功完毕。
使用#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)的更多相关文章
- 基于Linux的智能家居的设计(3)
2 硬件设计 本课题的硬件设计包含主控制器.传输数据设计.数据採集设计.控制驱动设计.显示设计.门禁设计. 2.1 主控制器 依据方案三选择S3C6410主控芯片,S3C6410是由Samsung ...
- 基于Linux的智能家居的设计(2)
1 系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进 ...
- 基于Linux的智能家居的设计(5)
4 软件设计 软件设计部分主要包含uboot移植.内核编译.系统移植.设备驱动编程.应用程序编程(QT编程.mysql数据库编程.控制系统编程).各个模块的功能函数(部分是在windows以下的IA ...
- 基于ESP32的智能家居管理系统的设计与实现
基于ESP32的智能家居管理系统的设计与实现 ESP32的智能家居管理系统访问链接: https://www.cnblogs.com/easyidea/p/13101165.html 一.需求分析 1 ...
- 基于树莓派的智能家居项目的设想与实现 Hestia
注:本人内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致.实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve ...
- 一只简单的网络爬虫(基于linux C/C++)————配置文件设计及读取
一般来说linux下比较大型的程序都是以配置文件作为参数介质传递的,该爬虫也采用配置文件的方式来获取参数,配置文件格式大致如下: max_job_num=1 #seeds=https://www.ba ...
- 基于能量收集的智能家居-2013国家级大学生创业实践项目申报_商业计划书_V0.2
SmartHome项目商业计划 基于能量收集的 免电池无线智能家居系统 IA-SmartHome团队 2012.12 l 基于无线的智能家居解决方案,节省施工成本: l 基于能 ...
- Home Assistant + 树莓派:强大的智能家居系统 · 安装篇
Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 转载:Home Assistant + 树莓派:强大的智能家居系统 · 安装篇 目录 1. 初始安装 3. Homebridg ...
- 智能家居系统 Home Assistant 系列 --介绍篇
一. HomeAssistant 是什么? HomeAssistant是构建智慧空间的神器.是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation).群组化 ...
随机推荐
- 依据经纬度返回地址的url -- GoogleMap
latlng=34,112">https://maps.googleapis.com/maps/api/geocode/xml? latlng=34,112
- C语言 函数参数不确定时 需要用到va_start和va_end函数
1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...);void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我 ...
- 将数据库select出来的数据转化为与相应databean相应的字典
例如以下图: 从user_logs表格select出来的数据放在一个可变数组NSMutableArray中,如 user_logs,如今要 把数据一条条转化为Userlog databean,User ...
- 【Android】3.18 示例18--自定义绘制功能
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 简介:介绍自定义绘制点.线.多边形.圆等几何图形和文字 详述: (1)支持绘制凸多边形,如要绘制凹多边形请用三 ...
- UIActivityIndicatorView的详细使用
转自:http://www.cnblogs.com/top5/archive/2012/05/17/2506623.html UIActivityIndicatorView实例提供轻型视图,这些视图显 ...
- [Docker] Docker Hub加速
一.缘由: 今天学习Flask,书上建议用Docker,那我就安装了DockerToolBox(WIN10系统只能用toolbox).其中从docker hub拉取ubuntu镜像时 docker p ...
- Linux下C语言使用openssl库进行加密
在这里插一小节加密的吧,使用openssl库进行加密. 使用MD5加密 我们以一个字符串为例,新建一个文件filename.txt,在文件内写入hello ,然后在Linux下可以使用命令md5sum ...
- C++11 容器Array
array是一个固定大小的顺序容器,不能动态改变大小,array内的元素在内存中以严格的线性顺序存储与普通数组声明存储空间大小[]的方式是一样有效的,只是加入了一些成员函数和全局函数[get (arr ...
- 每日英语:Is It Possible To Reason About Having A Child?
How can you decide whether to have a child? It's a complex and profound question -- a philosophical ...
- ny10 skilng
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...