基于A(yíng)RM的智能測溫系統設計
(1)DDR2 SDRAM電路
S5PC100 SDRAM控制器通過(guò)向外部16位或32位SDRAM
提供接口來(lái)擴展芯片存儲能力。本平臺采用2片K4T1G164
16位寬度DD2 SDRAM組成32位內存,容量256MB,如圖3。
(2)NANDFLASH電路與SD卡存儲電路 由于系統需要運行Linux系統,系統代碼較為復雜,需
要一定容量的存儲器存放Linux操作系統源代碼以及應用程 序,由于S5PC100內置了NAND FL ASH控制器,因此平臺 采用K9F2G08 256MB NAND FLASH直接與S5PC100 NAND FLASH控制器接口連接。SD卡可通過(guò)S5PC100內置SDIO1總 線(xiàn)直接連接。其N(xiāo)AND FLASH電路原理圖如圖4所示、SD卡 的原理圖如圖5所示。
2.2 溫度傳感器接口
平臺設計了采用DS18B20一線(xiàn)制溫度傳感器接口。采用 S5PC100處理器GPIO引腳接口控制溫度傳感器DS18B20的溫 度測量,LCD屏輸出測量溫度,原理圖如圖6所示。
2.3 溫度報警電路
本 設 計 采 用 軟 件 處 理 報 警 , 利 用 無(wú) 源 蜂 鳴 器 進(jìn) 行 報 警,當所測溫度超限后輸出PWM信號,驅動(dòng)蜂鳴器報警, 其電路原理圖如圖7所示。
3 系統軟件設計
3.1 Linux操作系統移植
完整的嵌入式linux系統由bootloader、kernel、rootfs等
3個(gè)基本部分組成。其中bootloader用于引導和裝載操作系統、kernel為linux內核程序、rootfs為文件系統,如圖8。
3.1.1 交叉編譯環(huán)境
嵌入式開(kāi)發(fā)系統受到自身硬件以及軟件資源的限制, 無(wú)法完成代碼的本地編譯,其開(kāi)發(fā)需要在宿主機上建立交叉 開(kāi)發(fā)環(huán)境。
交叉開(kāi)發(fā)環(huán)境是包含了編輯器、編譯器、連接器、調 試器和libc庫等的程序環(huán)境。在開(kāi)發(fā)嵌入式Linux相關(guān)軟件 時(shí),常用的交叉開(kāi)發(fā)工具是GNU工具鏈。系統中宿主機使 用的開(kāi)發(fā)環(huán)境為ubuntu12.04操作系統,目標板內核版本號為 標準linux-2.6.35,使用到的交叉編譯器是arm-linux-gcc-4.5.1。
3.1.2 Bootloader程序設計
Bootloader是在操作系統運行前運行的一段專(zhuān)用程序, 可以完成平臺硬件設備的初始化,并能完成引導和調試操作 系統。 Bootloader依賴(lài)CPU體系結構,一般將Bootloader按功 能劃分為兩個(gè)階段,其中第1階段實(shí)現基本硬件電路的初始 化,為操作系統的運行準備環(huán)境。在平臺中,由于使用的是 ARM微控制器,因此第一階段需要實(shí)現設置處理器進(jìn)入管 理模式、關(guān)閉處理器中斷與快中斷、設置處理器主頻、高速 總線(xiàn)主頻與告訴外設主頻、CPU關(guān)閉MMU與數據Cache,初 始化內存控制器,代碼由存儲器自搬運至內存,設置運行程 序需要的臨時(shí)堆棧、BSS段清零等工作。第2階段主要實(shí)現 進(jìn)入交互模式或者自引導模式,實(shí)現操作系統的加載,一般 要根據操作系統與硬件平臺的需要實(shí)現相關(guān)硬件的初始化工 作, 如初始化GPIO、串口、網(wǎng)口等外部設備,完成向內核 傳遞啟動(dòng)參數等功能。
3.1.3 Linux內核的定制
Linux目前已經(jīng)支持了x86、ARM、MIPS等多種處理器 架構,支持的平臺類(lèi)型多達3000多種。各種ARM處理器的 設計廠(chǎng)商為了更好地推廣處理器的使用,都會(huì )Linux中添加補丁, 使得該處理器能夠在L i nu x 行正常運行。 平臺選用
Linux-2.6.35版本,面對大規模的Linux源代碼,我們需要對
Linux進(jìn)行剪裁移植。
Linux源代碼采用模塊化的組織方式,可以通過(guò)條件編 譯的方式對Linux源碼的功能進(jìn)行剪裁,但是條件編譯法裁 剪的是功能模塊,對于具體的硬件驅動(dòng)和優(yōu)化就需要對源代 碼進(jìn)行細微的修改了。
3.1.4 根文件系統的建立
根文件系統是存放各種工具軟件、庫文件、腳本、配 置文件的地方,任何包括這些Linux系統啟動(dòng)所必須的文件 都可以成為根文件系統。Linux支持jffs2,nfs,cramfs,yaffs2 等多種文件系統。在本系統中使用的Ramdisk文件系統,實(shí) 際上是把內存劃出一部分當作硬盤(pán)使用,使得程序運行效率 更高。系統中的工具集合采用BusyBox完成,BusyBox 將許多 具有共性的小版本的UNIX工具結合到一個(gè)單一的可執行文 件。這樣的集合可以替代大部分常用工具比如GNU fileutils
, shellutils等工具,BusyBox提供了一個(gè)比較完善的環(huán)境,可 以適用于任何嵌入式設備。
3.2 溫度傳感器驅動(dòng)程序的設計
在Linux中,為實(shí)現模型抽象和統一操作接口,設備驅 動(dòng)程序隱藏了設備的具體細節,向用戶(hù)提供了統一的設備接 口。Linux設備驅動(dòng)運行于內核中,完成直接硬件操作、設 備管理等工作,并向用戶(hù)提供了統一的接口模型。Linux下 將設備分為字符、塊和網(wǎng)絡(luò )設備三類(lèi),同樣設備驅動(dòng)也分為 字符驅動(dòng)、塊設備驅動(dòng)和網(wǎng)絡(luò )設備驅動(dòng)。字符設備面向的設 備是流式設備,如鼠標、鍵盤(pán)等;塊設備面向的是需要隨 機存儲的設備,它主要包括硬盤(pán)、光驅等存儲設備;其中 DS18B20屬于字符設備。
在 字 符 與 塊 設 備 中 由 一 個(gè) 主 設 備 號 和 一 個(gè) 次 設 備 號
(minor number)標識驅動(dòng)設備。主設備號用于標識設備類(lèi) 型,次設備號用于識別同類(lèi)設備序號。字符驅動(dòng)程序通過(guò) file_operations結構的指針向用戶(hù)程序提供接口抽象。
其內核定義如下:
struct file_operations
{
int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*設備讀*/
int (*write) (struct inode *inode,struct file *filp,char *buf,int
count); /*設備寫(xiě)*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int
cmd,unsigned int arg); /*I/O控制*/
int (*open) (struct inode *inode,struct file *filp); /*設備打 開(kāi)*/
void (*release) (struct inode *inode,struct file *filp); /*設備 關(guān)閉*/
??????
};
在結構file_operations里,指出了設備驅動(dòng)程序所提供的 入口點(diǎn)位置,分別是:
read讀操作,完成由應用設備向應用程序傳遞的數據。 write寫(xiě)操作,完成由應用程序向設備發(fā)送的數據。 ioctl,進(jìn)行讀、寫(xiě)以外的其它命令操作。 open,打開(kāi)設備準備進(jìn)行I/O操作。 release,設備釋放操作。 每一個(gè)字符設備驅動(dòng)由一個(gè)cdev結構體抽象,具體的驅
動(dòng)的實(shí)現由 file_operations實(shí)現,用戶(hù)程序通過(guò)dev_t代表設 備號查找到內核中的cdev,由cdev調用到file_operations,從 而調用到實(shí)際的硬件操作函數。
4 結論
本文以便攜式手持溫度測試儀為技術(shù)、應用背景,設 計了一套具備溫度測量、數據記錄、LCD顯示以及網(wǎng)絡(luò )通信 功能的溫度測試設備。
由于便攜式手持溫度測試儀具有體積小、功耗低同時(shí) 又具備較高性能的要求,系統采用了ARM微控制器作為系 統的核心控制單元,并在平臺上移植了Linux操作系統以滿(mǎn) 足系統對聯(lián)網(wǎng)、存儲方面的需要。對比眾多的處理器,選用 了三星公司基于Cortex-A8 內核的 S5PC100處理器,圍繞核 心電路設計了溫度采集,大容量存儲、人機交互、以及網(wǎng)絡(luò ) 通訊等單元電路;在平臺電路的基礎上實(shí)現了Linux系統的 移植工作,并完成了這些設備接口電路的驅動(dòng)移植工作; 在Linux系統下實(shí)現了DS18B20的驅動(dòng)設計工作,并編寫(xiě)了基 于液晶顯示的測試程序。經(jīng)過(guò)實(shí)際測試,應用程序能夠在 Linux下采集DS18B20的溫度數據,并能夠實(shí)現在LCD上的顯 示、存儲功能,存儲文件能夠通過(guò)網(wǎng)絡(luò )的NFS服務(wù)導出到PC 端,實(shí)現了課題設計的功能。
評論