1. 程式人生 > >基於Linux的智慧家居的設計(4)

基於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 分為伺服器端程式和客戶端程式,在主機上通常同時配置有TFTP 服務端和客戶端。

預設安裝的Ubuntu系統沒有包含TFTP 的服務端和客戶端,可以通過命令列來下載安裝,命令如下:

#apt-get install tftp (安裝客戶端)

#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]。本課題將它看為一個檔案系統伺服器,可以讓ARM板或者遠端PC機上的客戶端共享遠端的檔案伺服器。用起來十分的方便,本次課題的NFS主機共享目錄與客戶端掛載結構圖如圖3-1所示:


圖3-1  NFS主機共享目錄與客戶端掛載結構圖

具體的步驟如下:

⑴  準備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開板上的目錄與伺服器上的目錄一致,如圖3-2、3-3所示:

圖3-2  客戶端ok6410上的檔案


圖3-3  伺服器上的檔案

在終端中輸入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

輸入密碼: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資料庫驅動