王博 曹嘉城 孫超 屈藝超
DOI:10.19392/j.cnki.16717341.201720013
摘要: 針對(duì)手機(jī)成為眾多開(kāi)發(fā)人員設(shè)計(jì)與創(chuàng)新的焦點(diǎn)。本論文在研究手機(jī)硬件和軟件結(jié)構(gòu)基礎(chǔ)上,提出本課題研究的運(yùn)用QT圖形用戶界面程序開(kāi)發(fā)框架組建實(shí)現(xiàn)基本的手機(jī)功能,具體由三個(gè)部分組成。硬件平臺(tái):劃分為通信模塊單元、基于ARM內(nèi)核的應(yīng)用處理模塊單元以及輸入輸出模塊單元,這三個(gè)模塊協(xié)同工作共同完成手機(jī)的功能。這種模塊化的設(shè)計(jì)方法,為整體系統(tǒng)的開(kāi)放、調(diào)試與升級(jí)提供了便利;軟件平臺(tái):分為Bootloader、操作系統(tǒng)、GUI(通過(guò)Qt構(gòu)建);應(yīng)用軟件:這部分是基于通信協(xié)議的軟件開(kāi)發(fā)與編程實(shí)現(xiàn)。
關(guān)鍵詞: 手機(jī);ARM;嵌入式系統(tǒng);Linux;QT
1 系統(tǒng)方案的總體設(shè)計(jì)
本項(xiàng)目(基于ARM控制器與Qt界面編輯的手機(jī)設(shè)計(jì))硬件結(jié)構(gòu)分為ARM核心板,電源,外圍功能(如觸摸屏等)和通過(guò)串口連接的GSM模組。通過(guò)對(duì)觸摸屏的操作控制ARM核心板,并通過(guò)核心板的串口發(fā)送和接受對(duì)GSM模組操作的AT指令來(lái)實(shí)現(xiàn)對(duì)撥打電話,收發(fā)短信的功能實(shí)現(xiàn),并通過(guò)觸摸屏的顯示功能顯示手機(jī)的UI界面以實(shí)現(xiàn)人機(jī)互動(dòng),增加手機(jī)的可使用性。
本項(xiàng)目的軟件結(jié)構(gòu)為在Linux操作平臺(tái)下移植QT5.4.1到ARM4412嵌入式開(kāi)發(fā)板,通過(guò)在PC端進(jìn)行QT5圖形化界面編程,實(shí)現(xiàn)手機(jī)的界面和相關(guān)功能(如撥打電話,發(fā)送短信)界面的構(gòu)建和實(shí)現(xiàn)。
2 硬件結(jié)構(gòu)搭建
在實(shí)際的手機(jī)系統(tǒng)設(shè)計(jì)中,需要處理的數(shù)據(jù)有兩大類(lèi)通訊數(shù)據(jù)以及應(yīng)用程序的數(shù)據(jù)。針對(duì)處理數(shù)據(jù)的不同以及設(shè)計(jì)難度的平衡,在本設(shè)計(jì)中采用了雙CPU的解決方案,按照這個(gè)解決方案,可首先把手機(jī)終端劃分為通訊模塊和應(yīng)用處理模塊。
3 交叉編譯環(huán)境搭建與內(nèi)核移植
3.1 交叉編譯環(huán)境搭建
基于Linux操作系統(tǒng)的應(yīng)用程序開(kāi)發(fā)一般由目標(biāo)硬件(開(kāi)發(fā)板)和宿主機(jī)(PC)構(gòu)成,交叉編譯就是在宿主機(jī)平臺(tái)上使用某特定交叉編譯器,編譯出能在目標(biāo)開(kāi)發(fā)板中運(yùn)行的程序。雙方之間可以通過(guò)串口、并口或以太網(wǎng)接口建立連接關(guān)系。由于嵌入式設(shè)備沒(méi)有足夠的內(nèi)存及存儲(chǔ)資源,不能在本地編寫(xiě)、編譯和調(diào)試自身運(yùn)行的程序,因而需要借助其他設(shè)備(如PC)來(lái)完成這些工作。本文建立交叉開(kāi)發(fā)環(huán)境的搭建即下載交叉編譯器并傳送到Ubuntu系統(tǒng)。
3.2 內(nèi)核移植
內(nèi)核移植就是根據(jù)選擇的硬件平臺(tái)來(lái)重新編譯內(nèi)核支持對(duì)應(yīng)的硬件,使之可以在該硬件平臺(tái)上運(yùn)行,如果缺少相應(yīng)的硬件驅(qū)動(dòng)程序或其他內(nèi)核模塊,可以自己進(jìn)行相應(yīng)的開(kāi)發(fā)加入到內(nèi)核中一起編譯最終實(shí)現(xiàn)對(duì)硬件的支持。內(nèi)核移植大致過(guò)程如下:(1)下載內(nèi)核源碼。(2)配置修改Makefile。(3)編譯生成鏡像。(4)燒寫(xiě)鏡像。
4 實(shí)現(xiàn)手機(jī)功能的軟件設(shè)計(jì)
UI即User Interface(用戶界面)的簡(jiǎn)稱。UI設(shè)計(jì)是指對(duì)軟件的人機(jī)交互、操作邏輯、界面美觀的整體設(shè)計(jì)[4]。好的UI設(shè)計(jì)不僅是讓軟件變得有個(gè)性有品位,還要讓軟件的操作變得舒適簡(jiǎn)單、自由,充分體現(xiàn)軟件的定位和特點(diǎn)。Qt界面的設(shè)計(jì)和功能實(shí)現(xiàn)大致分為以下幾個(gè)部分:
4.1 界面設(shè)計(jì)
在工程下創(chuàng)建.ui文件后,通過(guò)Qt Creator 提供的便捷控件拖拽功能向各個(gè)功能界面中加入需要的空間,如LineEdit(行編輯)、pushButton(按鈕)、textEdit(文本編輯)等。并進(jìn)行界面的合理布局。
4.2 控件功能實(shí)現(xiàn)
信號(hào)和插槽是Qt中一種用于對(duì)象間通信的調(diào)用機(jī)制,和傳統(tǒng)的函數(shù)回調(diào)方式不同。信號(hào)和插槽是Qt中很重要的機(jī)制,是Qt編程區(qū)別于其它編程的標(biāo)志。應(yīng)用Qt獨(dú)有的信號(hào)與槽的機(jī)制將不同控件連接到相應(yīng)的程序以實(shí)現(xiàn)通過(guò)發(fā)送AT指令來(lái)控制SIM800模塊的電話、短息等功能。
4.3 串口編輯與初始化
·串口編輯QtSerialPort模塊是Qt5庫(kù)的附加部分,通過(guò)對(duì)QtSerialPort模塊的使用即可對(duì)串口進(jìn)行編輯。
·串口初始化:
my_serialport>setPortName("COM10");//設(shè)置串口
my_serialport>setBaudRate(QSerialPort::Baud9600);//設(shè)置波特率
my_serialport>setDataBits(QSerialPort::Data8); //設(shè)置數(shù)據(jù)位
my_serialport>setParity(QSerialPort::NoParity); //設(shè)置校驗(yàn)位
my_serialport>setFlowControl(QSerialPort::NoFlowControl);//設(shè)置流控
my_serialport>setStopBits(QSerialPort::OneStop);//設(shè)置停止位
5 結(jié)論
電子技術(shù)的飛速發(fā)展,手機(jī)在人們的生活中扮演一個(gè)越來(lái)越重要的地位,本文采取了ARM&Linux方案構(gòu)建手機(jī),在Linux內(nèi)核中移植進(jìn)Qt庫(kù),使具有極強(qiáng)跨平臺(tái)的Qt程序可在Linux系統(tǒng)中運(yùn)行,更是使本課題的產(chǎn)品可移植性大大加強(qiáng),實(shí)現(xiàn)“一次編寫(xiě),不同編譯環(huán)境,多種平臺(tái)應(yīng)用”的特點(diǎn),為未來(lái)Windows、IOS、Android、Linux等系統(tǒng)的多平臺(tái)APP、APK提供了參考。
參考文獻(xiàn):
[1]萊文森.手機(jī),擋不住的呼喚[M].北京:中國(guó)人民大學(xué)出版社,2004:102108.
[2]涂剛,陽(yáng)富民,胡貫榮.嵌入式操作系統(tǒng)綜述[J].計(jì)算機(jī)應(yīng)用研究,2000,3(11):2139.
[3]Richard M.Stallman .Using and Porting GUN CC[M].Cambridge: MIT Press,1998:4768.
[4]何劍鋒,鄔文彪,李宏穆,等.嵌入式Linux系統(tǒng)的Qt\Embedded圖形界面開(kāi)發(fā)[J].電子工程師,2007(33):4648.
作者簡(jiǎn)介:王博,曹嘉誠(chéng),孫超,屈藝超,單位:哈爾濱理工大學(xué)。