基于嵌入式S3C2410芯片的智能手機電話(huà)短信模塊設計
1.2.1 Bootloader
Bootloader是系統上電后運行的第一段代碼,主要工作是完成硬件的初始化和為加載操作系統準備好條件。它的實(shí)現是依賴(lài)于硬件的,不同體系結構開(kāi)發(fā)板的Bootloader變化很大。為了更好地支持目標板的硬件設備,該系統選擇在A(yíng)DS1.2集成開(kāi)發(fā)環(huán)境下開(kāi)發(fā)自己的Bootloa-der。 Bootloader的實(shí)現過(guò)程主要分為以下2個(gè)階段:
(1)主要進(jìn)行與CPU內核以及存儲設備密切相關(guān)的初始化處理工作,這部分的代碼通常用ARM匯編指令編寫(xiě),包含在start.S文件中。通常包括一些步驟:
?、儆布跏蓟ぷ?。包括關(guān)閉看門(mén)狗;屏蔽所有中斷;設置處理器時(shí)鐘和工作頻率;初始化外部寄存器;初始化堆棧指針。
?、跒殡A段(2)準備RAM空間,并把階段(2)的代碼拷貝倒RAM,跳轉倒階段(2)的入口點(diǎn)。
(2)完成一般的啟動(dòng)流程以及提供目標板設備的驅動(dòng)支持,這部分會(huì )被拷貝倒RAM中執行,這段代碼通常由C語(yǔ)言來(lái)實(shí)現,具有較強的可讀性和移植性。
通常包括一下步驟:
?、偻ㄟ^(guò)set_gpios()函數完成通用I/0設置;
?、谕ㄟ^(guò)mere_map_init(),mmu_init()函數完成內存映射和內存管理單元初始化;
?、鄢跏蓟疢TD設備,使用mtd_dev_init()函數;
?、芸截怤AND FLASH中的Kernel映像文件和根文件系統映像到RAM空間中;
?、萏D到內核的第一條指令處。
至此,Bootloader的任務(wù)結束,接下來(lái)的任務(wù)由操作系統完成。
1.2.2 操作系統的剪裁、移植
操作系統負責對整個(gè)的外圍設備進(jìn)行管理和對各個(gè)軟件任務(wù)進(jìn)行調度。這對于智能手機而言是非常重要的。操作系統采用開(kāi)源、免費的Linux,基于嵌入式Linux 2.6版本進(jìn)行移植,主要移植過(guò)程包括建立開(kāi)發(fā)環(huán)境、下載內核源碼、修改配置文件、配置內核、編譯內核、編譯模塊幾個(gè)步驟,因為移植的過(guò)程大致相同,這里只做簡(jiǎn)單介紹:
(1)宿主機上的交叉編譯工具采用arm-linux-gcc-3.4.1 ;
(2)修改commom-smdk.c文件,為NANDFLASH設置分區;
(3)修改配置文件fs/Kconfig,使內核支持啟動(dòng)時(shí)掛載devfs;
(4)配置內核;
(5)編譯內核與模塊,用Busy-box工具制作yaffs文件系統。
1.2.3 嵌入武GUI Qtopia的移植
嵌入式GUI用于開(kāi)發(fā)短信、電話(huà)應用程序圖形界面,本文采用Trolltech公司的Qtopia作為圖形界面庫,采用版本是Qtopia-core-opensou rce-src-4.4.3。移植的主要工作有:
(1)修改qmouselinuxtp_qws.h文件,使Qtopia支持觸摸屏;
(2)配置、編譯、安裝;
(3)拷貝相關(guān)的庫文件到開(kāi)發(fā)板,并設置環(huán)境變量。
2 應用程序設計
電話(huà)和短信應用程序是智能手機最基本也是最核心的應用。電話(huà)短信應用程序設計的主要工作包括:電話(huà)短信應用程序的流程設計、通信模塊和應用處理器的串口通信以及電話(huà)和短消息應用程序界面開(kāi)發(fā)。
2.1 電話(huà)/短信應用程序流程
應用程序采用定時(shí)器函數來(lái)控制整個(gè)程序的流程。定時(shí)器每200 ms觸發(fā)1次。
新電話(huà)、新短信的檢測流程如圖3所示,應用程序初始化需要對GSM/GPRS通信模塊與應用處理器之間的接口進(jìn)行初始化,此外還要定義1個(gè)200 ms觸發(fā)的定時(shí)器。系統初始化完畢之后,定時(shí)器觸發(fā)開(kāi)始讀串口數據進(jìn)行判斷。當串口無(wú)數據時(shí),等待下一次定時(shí)器出發(fā);當串口有數據時(shí),將串口的數據進(jìn)行判斷;當數據中有新短信提示符時(shí),按照PDU短信的解碼格式對該短信進(jìn)行解碼,并調用UI界面提示用戶(hù)新短信到達,詢(xún)問(wèn)用戶(hù)是否閱讀;當數據中有新電話(huà)提示符時(shí),調用UI界面,詢(xún)問(wèn)用戶(hù)是否接聽(tīng)。

當需要發(fā)送短信或撥號時(shí),應用程序流程如圖4所示。當用戶(hù)調用發(fā)信界面編輯好短信,并輸入完收信方,點(diǎn)擊發(fā)送鈕時(shí),應用程序首先判斷短信中心號碼和接收信息號碼是否正確,若不正確,提示用戶(hù)錯誤;若號碼和號碼格式均正確,便對要發(fā)送的短信內容按照進(jìn)行PDU短信格式進(jìn)行編碼,并向串口寫(xiě)AT命令以便將該短信發(fā)送出去。撥號和掛斷電話(huà)的流程很簡(jiǎn)單,只需要向串口寫(xiě)入ATD+所撥號碼以及ATH就可,當撥號錯誤時(shí),提示用戶(hù)撥號錯誤。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論