<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于A(yíng)RM的智能測溫系統設計

基于A(yíng)RM的智能測溫系統設計

作者:田建平 王可寧 時(shí)間:2017-02-17 來(lái)源:電子產(chǎn)品世界 收藏

(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)境。在平臺中,由于使用的是 微控制器,因此第一階段需要實(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、、MIPS等多種處理器 架構,支持的平臺類(lèi)型多達3000多種。各種處理器的 設計廠(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í)現了課題設計的功能。

本文引用地址:http://dyxdggzs.com/article/201702/344136.htm

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: ARM 智能測溫系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>