摘 要:設計并實現了基于嵌入式Linux智能手機的電話短消息實驗模塊。以三星S3C2410芯片為核心,構建智能手機應用處理器,結合GSM/GPRS無線通信模塊構建基帶處理器。簡要介紹系統的硬件平臺選擇及構建,重點介紹智能手機系統軟件平臺設計和電話短信應用程序設計。基于此平臺使學生可清楚地了解智能手機的軟硬件平臺架構,進行電話短信實驗,還可開發(fā)基于智能手機的其他應用。
關鍵詞:智能手機; 嵌入式Linux; 電話短消息; Qtopia
中圖分類號:TN92;TP316 文獻標識碼:A 文章編號:1004-373X(2010)14-0018-03
Design and Realization of Phone and SMS Experimental Module Based on Smart Phone
NIE Wei, YANG Guan-dong
(Computer System and Communication Laboratory, Beijing University of Chemical Technology, Beijing 100029, China)
Abstract:The phone and SMS experimental module based on embedded Linux smart phone was designed and realized. The application processor of using Sumsung s3c2410 core chip and the baseband processor based on GSM/GPRS wireless communication module were established. The choice and construction of hardware platform, the software platform design of smart phone system and the application program design of phone and SMS are introduced. Students can clearly understand the hardware/software frame of smart phone and make experiment of phone/SMS with this platform.
Keywords: smart phone; embedded Linux; phone and SMS; Qtopia
0 引 言
隨著嵌入式技術和通信技術的發(fā)展,在手機領域,智能手機已成為手機發(fā)展的主流趨勢[1]。目前在智能手機領域,從處理器選型、操作系統選擇[2]以及應用程序開發(fā)都是研究的熱點。在高校計算機相關專業(yè)的課程中也越來越多地涉及到智能手機的相關內容,越來越多的學生也都投入到智能手機的學習和開發(fā)陣營中來。因此,為這些學生提供相關的實驗設備顯得很必要。本文提出基于三星S3C2410芯片為核心構建智能手機硬件實驗平臺,并結合無線通信模塊實現智能手機電話短消息功能。為學生進行智能手機相關的實驗提供了平臺,通過本平臺,學生可以自己動手完成智能手機設計時的各種軟件開發(fā),改變了傳統的驗證式的實驗平臺模式,有利于學生創(chuàng)新能力的培養(yǎng)。
1 智能手機軟硬件實驗平臺設計
手機的硬件實現方式主要有3種:
(1) 只用基帶芯片,通常稱作功能手機;
(2) 基帶芯片加協處理器,這類產品是在功能手機的基礎上增強了多媒體處理功能;
(3) 基帶處理器加應用處理器。這是智能手機所采用的設計,基帶處理器用于通信,應用處理器用于多媒體和其他應用。
在設計智能手機硬件平臺時,需要注意以下幾個方面[3]:
(1) 應用處理器應具有足夠高的主頻用以保證系統的運行速度,使各種應用能夠運行暢通;
(2) 系統應有足夠的內存空間用以保存應用程序和用戶數據;
(3) 具備良好的人機交互界面,用戶可以方便地進行操作。基帶處理器性能穩(wěn)定,保證用戶實時通信。
1.1 硬件平臺設計
硬件主要包括調試接口、存儲系統、GSM/GPRS通信模塊、人機交互模塊。核心控制器芯片采用三星公司的S3C2410處理器,頻率穩(wěn)定運行在203 MHz。作為實驗平臺,完成智能手機的基本功能,不要求大量數據處理,因而203 MHz的主頻能夠保證系統的運行速度。系統采用64 MB SDRAM和64 MB NAND FLASH作為存儲系統,從而保證系統和用戶的存儲空間。通信上,應用處理器通過UART2連接基帶處理器即GSM/GPRS通信模塊,GSM/GPRS模塊采用SIMCOM公司的SIM300模塊[4],該模塊具備完善的GSM/GPRS三頻/四頻解決方案,支持GSM通話及短消息收發(fā)和GPRS數據傳輸,可以方便地通過AT命令進行控制。系統通過LCD顯示圖形操作界面,采用觸摸屏代替?zhèn)鹘y鍵盤操作,界面更友好,操作更方便。同時提供擴展接口用于學生擴展智能手機的其他功能,如利用以太網接口實現網頁瀏覽等。整個系統的硬件框圖如圖1所示。
圖1 系統硬件平臺架構
1.2 系統軟件平臺設計
系統軟件平臺的功能是為應用程序開發(fā)提供平臺。系統軟件以嵌入式Linux操作系統和嵌入式GUI Qtopia為基礎來設計的,整個軟件平臺的架構如圖2所示。
圖2 軟件平臺架構
1.2.1 Bootloader
Bootloader是系統上電后運行的第一段代碼,主要工作是完成硬件的初始化和為加載操作系統準備好條件。它的實現是依賴于硬件的,不同體系結構開發(fā)板的Bootloader變化很大。為了更好地支持目標板的硬件設備[5],該系統選擇在ADS 1.2集成開發(fā)環(huán)境下開發(fā)自己的Bootloader。Bootloader的實現過程主要分為以下2個階段:
(1) 主要進行與CPU內核以及存儲設備密切相關的初始化處理工作,這部分的代碼通常用ARM匯編指令編寫,包含在start.S文件中。通常包括一些步驟:
① 硬件初始化工作。包括關閉看門狗;屏屏蔽所有中斷;設置處理器時鐘和工作頻率;初始化外部寄存器;初始化堆棧指針。
② 為階段(2)準備RAM空間,并把階段(2)的代碼拷貝倒RAM,跳轉倒階段(2)的入口點。
(2) 完成一般的啟動流程以及提供目標板設備的驅動支持,這部分會被拷貝倒RAM中執(zhí)行,這段代碼通常由C語言來實現,具有較強的可讀性和移植性。通常包括一下步驟:
① 通過set_gpios()函數完成通用I/O設置;
② 通過 mem_map_init(),mmu_init()函數完成內存映射和內存管理單元初始化;
③ 初始化MTD設備,使用mtd_dev_init()函數;
④ 拷貝NAND FLASH中的Kernel映像文件和根文件系統映像到RAM空間中;
⑤ 跳轉到內核的第一條指令處。
至此,Bootloader的任務結束,接下來的任務由操作系統完成。
1.2.2 操作系統的剪裁、移植
操作系統負責對整個的外圍設備進行管理和對各個軟件任務進行調度。這對于智能手機而言是非常重要的。操作系統采用開源、免費的Linux,基于嵌入式Linux 2.6版本進行移植,主要移植過程包括建立開發(fā)環(huán)境、下載內核源碼、修改配置文件、配置內核、編譯內核、編譯模塊幾個步驟,因為移植的過程大致相同,這里只做簡單介紹:
(1) 宿主機上的交叉編譯工具采用arm-linux-gcc-3.4.1;
(2) 修改commom-smdk.c文件,為NAND FLASH設置分區(qū);
(3) 修改配置文件fs/Kconfig,使內核支持啟動時掛載devfs;
(4) 配置內核;
(5) 編譯內核與模塊,用Busy-box工具制作yaffs文件系統。
1.2.3 嵌入式GUI Qtopia的移植
嵌入式GUI用于開發(fā)短信、電話應用程序圖形界面,本文采用Trolltech公司的Qtopia作為圖形界面庫,采用版本是Qtopia-core-opensource-src-4.4.3。移植的主要工作有:
(1) 修改qmouselinuxtp_qws.h文件,使Qtopia支持觸摸屏;
(2) 配置、編譯、安裝;
(3) 拷貝相關的庫文件到開發(fā)板,并設置環(huán)境變量。
2 應用程序設計
電話和短信應用程序是智能手機最基本也是最核心的應用。電話短信應用程序設計的主要工作包括:電話短信應用程序的流程設計、通信模塊和應用處理器的串口通信以及電話和短消息應用程序界面開發(fā)[6-7]。
2.1 電話/短信應用程序流程
應用程序采用定時器函數來控制整個程序的流程。定時器每200 ms觸發(fā)1次。
新電話、新短信的檢測流程如圖3所示,應用程序初始化需要對GSM/GPRS通信模塊與應用處理器之間的接口進行初始化,此外還要定義1個200 ms觸發(fā)的定時器。系統初始化完畢之后,定時器觸發(fā)開始讀串口數據進行判斷。當串口無數據時,等待下一次定時器出發(fā);當串口有數據時,將串口的數據進行判斷;當數據中有新短信提示符時,按照PDU短信的解碼格式對該短信進行解碼,并調用UI界面提示用戶新短信到達,詢問用戶是否閱讀;當數據中有新電話提示符時,調用UI界面,詢問用戶是否接聽。
圖3 新電話、短信檢測流程
當需要發(fā)送短信或撥號時,應用程序流程如圖4所示。當用戶調用發(fā)信界面編輯好短信,并輸入完收信方,點擊發(fā)送鈕時,應用程序首先判斷短信中心號碼和接收信息號碼是否正確,若不正確,提示用戶錯誤;若號碼和號碼格式均正確,便對要發(fā)送的短信內容按照進行PDU短信格式進行編碼,并向串口寫AT命令以便將該短信發(fā)送出去。撥號和掛斷電話的流程很簡單,只需要向串口寫入ATD+所撥號碼以及ATH就可,當撥號錯誤時,提示用戶撥號錯誤。
2.2 通信模塊串口通信的實現
串口是連接智能手機應用處理器和GSM/GPRS通信模塊的接口,串口通信流程是打開串口、串口的初始化設置、讀/寫串口、關閉串口,如圖5所示。
在應用程序初始化時初始化時需要對串口進行初始化,對串口的初始化主要是設置串口的一些參數,包括以下幾個部分:保存以前的串口設置、建立新的配置、設置波特率、設置數據位、設置奇偶位、激活當前配置、處理要寫入的引用對象、設置最少字符和等待時間、設置停止位。只有串口初始化完畢之后,應用程序才能對串口進行相應操作。
2.3 用程序用戶界面的設計
用戶界面是人機交互的接口。本文采用Linux下常用的界面設計工具Qt來設計應用程序所需的各種UI界面[8-9]。本文設計的撥打電話、發(fā)送短信的界面如圖6所示。
圖4 發(fā)送短信、撥號及掛斷流程
圖5 串口通信流程和串口設置步驟
圖6 用戶撥打電話、發(fā)送短信界面
當點擊界面上的按鈕如撥號、發(fā)送時,利用其信號和槽機制,將其和底層相應的函數如撥號函數、發(fā)信函數相關聯就可以實現撥號和發(fā)送信息的功能[10]。用戶就可以利用該界面進行撥打電話和發(fā)送短信了。
3 結 語
本文設計了一種基于嵌入式Linux的智能手機電話短信實驗模塊。構建了智能手機軟、硬件平臺,并完成了電話短信的應用程序設計。為學生進行智能手機開發(fā)的相關實驗提供了平臺。目前,本平臺已應用于北京化工大學通信實驗室創(chuàng)新型實驗平臺中,并為學生進行智能手機實驗進行服務。在后續(xù)的設計中,考慮將嵌入式數據庫移植到應用程序中以實現電話短信中的名片夾以及收件箱等功能,并開發(fā)基于該硬件平臺下的其他應用程序如MP3播放等模塊以提供給學生進行試實驗和學習。
參考文獻
[1]周緒宏,梁阿磊,戚正偉.基于嵌入式Linux的智能手機系統的設計與實現[J].計算機應用與軟件,2008,25(3):59-61.
[2]陳永澤.基于嵌入式Linux的智能手機操作系統研究[D].西安:西安電子科技大學,2002.
[3]LIU Jian-qi, ZENG Bi. Designatin and realization of ship navigation system embedded platform based on ARM[J].IEEE Computer Society, 2008,20(2):227-232.
[4]SIMCOM.SIM300 Hardware Interface Descriptinon v1.06[ M] .[ S.l.] : SIMCOM,2005.
[5]王黎明,陳雙嬌.ARM9嵌入式系統開發(fā)與實踐[M].北京:北京航空航天大學出版社,2008.
[6]李程,黎福海,閆旭.基于ARM9的SMS服務平臺[J].計算機系統應用,2009(8):204-208.
[7]羅鳴.多媒體短消息在智能手機中的設計與實究[D].成都:電子科技大學,2005.
[8]倪繼利.Qt及Linux操作系統窗口設計[M].北京:電子工業(yè)出版社,2006.
[9]高少琛,戚正偉,陳英.基于Qtopia的智能手機進程間通信的研究與實現[J].計算機應用與軟件,2008,25(6):95-97.
[10]苗忠良,宛斌. Qtopia編程之道[M].北京:清華大學出版社,2009.