<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于ARM的智能測溫系統(tǒng)設(shè)計

          基于ARM的智能測溫系統(tǒng)設(shè)計

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

          (1)DDR2 SDRAM電路
          S5PC100 SDRAM控制器通過向外部16位或32位SDRAM
          提供接口來擴展芯片存儲能力。本平臺采用2片K4T1G164
          16位寬度DD2 SDRAM組成32位內(nèi)存,容量256MB,如圖3。
          (2)NANDFLASH電路與SD卡存儲電路 由于系統(tǒng)需要運行Linux系統(tǒng),系統(tǒng)代碼較為復(fù)雜,需
          要一定容量的存儲器存放Linux操作系統(tǒng)源代碼以及應(yīng)用程 序,由于S5PC100內(nèi)置了NAND FL ASH控制器,因此平臺 采用K9F2G08 256MB NAND FLASH直接與S5PC100 NAND FLASH控制器接口連接。SD卡可通過S5PC100內(nèi)置SDIO1總 線直接連接。其NAND FLASH電路原理圖如圖4所示、SD卡 的原理圖如圖5所示。
          2.2  溫度傳感器接口
          平臺設(shè)計了采用DS18B20一線制溫度傳感器接口。采用 S5PC100處理器GPIO引腳接口控制溫度傳感器DS18B20的溫 度測量,LCD屏輸出測量溫度,原理圖如圖6所示。
          2.3 溫度報警電路
          本 設(shè) 計 采 用 軟 件 處 理 報 警 , 利 用 無 源 蜂 鳴 器 進(jìn) 行 報 警,當(dāng)所測溫度超限后輸出PWM信號,驅(qū)動蜂鳴器報警, 其電路原理圖如圖7所示。

          3  系統(tǒng)軟件設(shè)計
          3.1  Linux操作系統(tǒng)移植
          完整的嵌入式linux系統(tǒng)由bootloader、kernel、rootfs等
          3個基本部分組成。其中bootloader用于引導(dǎo)和裝載操作系統(tǒng)、kernel為linux內(nèi)核程序、rootfs為文件系統(tǒng),如圖8。
          3.1.1  交叉編譯環(huán)境
          嵌入式開發(fā)系統(tǒng)受到自身硬件以及軟件資源的限制, 無法完成代碼的本地編譯,其開發(fā)需要在宿主機上建立交叉 開發(fā)環(huán)境。
          交叉開發(fā)環(huán)境是包含了編輯器、編譯器、連接器、調(diào) 試器和libc庫等的程序環(huán)境。在開發(fā)嵌入式Linux相關(guān)軟件 時,常用的交叉開發(fā)工具是GNU工具鏈。系統(tǒng)中宿主機使 用的開發(fā)環(huán)境為ubuntu12.04操作系統(tǒng),目標(biāo)板內(nèi)核版本號為 標(biāo)準(zhǔn)linux-2.6.35,使用到的交叉編譯器是arm-linux-gcc-4.5.1。
          3.1.2    Bootloader程序設(shè)計
          Bootloader是在操作系統(tǒng)運行前運行的一段專用程序, 可以完成平臺硬件設(shè)備的初始化,并能完成引導(dǎo)和調(diào)試操作 系統(tǒng)。 Bootloader依賴CPU體系結(jié)構(gòu),一般將Bootloader按功 能劃分為兩個階段,其中第1階段實現(xiàn)基本硬件電路的初始 化,為操作系統(tǒng)的運行準(zhǔn)備環(huán)境。在平臺中,由于使用的是 微控制器,因此第一階段需要實現(xiàn)設(shè)置處理器進(jìn)入管 理模式、關(guān)閉處理器中斷與快中斷、設(shè)置處理器主頻、高速 總線主頻與告訴外設(shè)主頻、CPU關(guān)閉MMU與數(shù)據(jù)Cache,初 始化內(nèi)存控制器,代碼由存儲器自搬運至內(nèi)存,設(shè)置運行程 序需要的臨時堆棧、BSS段清零等工作。第2階段主要實現(xiàn) 進(jìn)入交互模式或者自引導(dǎo)模式,實現(xiàn)操作系統(tǒng)的加載,一般 要根據(jù)操作系統(tǒng)與硬件平臺的需要實現(xiàn)相關(guān)硬件的初始化工 作, 如初始化GPIO、串口、網(wǎng)口等外部設(shè)備,完成向內(nèi)核 傳遞啟動參數(shù)等功能。
          3.1.3   Linux內(nèi)核的定制
          Linux目前已經(jīng)支持了x86、、MIPS等多種處理器 架構(gòu),支持的平臺類型多達(dá)3000多種。各種處理器的 設(shè)計廠商為了更好地推廣處理器的使用,都會Linux中添加補丁, 使得該處理器能夠在L i nu x 行正常運行。 平臺選用
          Linux-2.6.35版本,面對大規(guī)模的Linux源代碼,我們需要對
          Linux進(jìn)行剪裁移植。
          Linux源代碼采用模塊化的組織方式,可以通過條件編 譯的方式對Linux源碼的功能進(jìn)行剪裁,但是條件編譯法裁 剪的是功能模塊,對于具體的硬件驅(qū)動和優(yōu)化就需要對源代 碼進(jìn)行細(xì)微的修改了。
          3.1.4 根文件系統(tǒng)的建立
          根文件系統(tǒng)是存放各種工具軟件、庫文件、腳本、配 置文件的地方,任何包括這些Linux系統(tǒng)啟動所必須的文件 都可以成為根文件系統(tǒng)。Linux支持jffs2,nfs,cramfs,yaffs2 等多種文件系統(tǒng)。在本系統(tǒng)中使用的Ramdisk文件系統(tǒng),實 際上是把內(nèi)存劃出一部分當(dāng)作硬盤使用,使得程序運行效率 更高。系統(tǒng)中的工具集合采用BusyBox完成,BusyBox 將許多 具有共性的小版本的UNIX工具結(jié)合到一個單一的可執(zhí)行文 件。這樣的集合可以替代大部分常用工具比如GNU fileutils
          , shellutils等工具,BusyBox提供了一個比較完善的環(huán)境,可 以適用于任何嵌入式設(shè)備。
          3.2 溫度傳感器驅(qū)動程序的設(shè)計
          在Linux中,為實現(xiàn)模型抽象和統(tǒng)一操作接口,設(shè)備驅(qū) 動程序隱藏了設(shè)備的具體細(xì)節(jié),向用戶提供了統(tǒng)一的設(shè)備接 口。Linux設(shè)備驅(qū)動運行于內(nèi)核中,完成直接硬件操作、設(shè) 備管理等工作,并向用戶提供了統(tǒng)一的接口模型。Linux下 將設(shè)備分為字符、塊和網(wǎng)絡(luò)設(shè)備三類,同樣設(shè)備驅(qū)動也分為 字符驅(qū)動、塊設(shè)備驅(qū)動和網(wǎng)絡(luò)設(shè)備驅(qū)動。字符設(shè)備面向的設(shè) 備是流式設(shè)備,如鼠標(biāo)、鍵盤等;塊設(shè)備面向的是需要隨 機存儲的設(shè)備,它主要包括硬盤、光驅(qū)等存儲設(shè)備;其中 DS18B20屬于字符設(shè)備。
          在 字 符 與 塊 設(shè) 備 中 由 一 個 主 設(shè) 備 號 和 一 個 次 設(shè) 備 號
          (minor number)標(biāo)識驅(qū)動設(shè)備。主設(shè)備號用于標(biāo)識設(shè)備類 型,次設(shè)備號用于識別同類設(shè)備序號。字符驅(qū)動程序通過 file_operations結(jié)構(gòu)的指針向用戶程序提供接口抽象。
          其內(nèi)核定義如下:
          struct file_operations
          {
          int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*設(shè)備讀*/
          int (*write) (struct inode *inode,struct file *filp,char *buf,int
          count); /*設(shè)備寫*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int
          cmd,unsigned int arg); /*I/O控制*/
          int  (*open) (struct inode *inode,struct file *filp);  /*設(shè)備打 開*/
          void (*release) (struct inode *inode,struct file *filp);  /*設(shè)備 關(guān)閉*/
          ??????
          };
          在結(jié)構(gòu)file_operations里,指出了設(shè)備驅(qū)動程序所提供的 入口點位置,分別是:
          read讀操作,完成由應(yīng)用設(shè)備向應(yīng)用程序傳遞的數(shù)據(jù)。 write寫操作,完成由應(yīng)用程序向設(shè)備發(fā)送的數(shù)據(jù)。 ioctl,進(jìn)行讀、寫以外的其它命令操作。 open,打開設(shè)備準(zhǔn)備進(jìn)行I/O操作。 release,設(shè)備釋放操作。 每一個字符設(shè)備驅(qū)動由一個cdev結(jié)構(gòu)體抽象,具體的驅(qū)
          動的實現(xiàn)由 file_operations實現(xiàn),用戶程序通過dev_t代表設(shè) 備號查找到內(nèi)核中的cdev,由cdev調(diào)用到file_operations,從 而調(diào)用到實際的硬件操作函數(shù)。

          4 結(jié)論
          本文以便攜式手持溫度測試儀為技術(shù)、應(yīng)用背景,設(shè) 計了一套具備溫度測量、數(shù)據(jù)記錄、LCD顯示以及網(wǎng)絡(luò)通信 功能的溫度測試設(shè)備。
          由于便攜式手持溫度測試儀具有體積小、功耗低同時 又具備較高性能的要求,系統(tǒng)采用了ARM微控制器作為系 統(tǒng)的核心控制單元,并在平臺上移植了Linux操作系統(tǒng)以滿 足系統(tǒng)對聯(lián)網(wǎng)、存儲方面的需要。對比眾多的處理器,選用 了三星公司基于Cortex-A8 內(nèi)核的 S5PC100處理器,圍繞核 心電路設(shè)計了溫度采集,大容量存儲、人機交互、以及網(wǎng)絡(luò) 通訊等單元電路;在平臺電路的基礎(chǔ)上實現(xiàn)了Linux系統(tǒng)的 移植工作,并完成了這些設(shè)備接口電路的驅(qū)動移植工作; 在Linux系統(tǒng)下實現(xiàn)了DS18B20的驅(qū)動設(shè)計工作,并編寫了基 于液晶顯示的測試程序。經(jīng)過實際測試,應(yīng)用程序能夠在 Linux下采集DS18B20的溫度數(shù)據(jù),并能夠?qū)崿F(xiàn)在LCD上的顯 示、存儲功能,存儲文件能夠通過網(wǎng)絡(luò)的NFS服務(wù)導(dǎo)出到PC 端,實現(xiàn)了課題設(shè)計的功能。

          本文引用地址:http://www.ex-cimer.com/article/201702/344136.htm

          上一頁 1 2 3 下一頁

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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();