色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          (1)DDR2 SDRAM電路
          S5PC100 SDRAM控制器通過向外部16位或32位SDRAM
          提供接口來擴(kuò)展芯片存儲能力。本平臺采用2片K4T1G164
          16位寬度DD2 SDRAM組成32位內(nèi)存,容量256MB,如圖3。
          (2)NANDFLASH電路與SD卡存儲電路 由于系統(tǒng)需要運(yùn)行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è)計(jì)了采用DS18B20一線制溫度傳感器接口。采用 S5PC100處理器GPIO引腳接口控制溫度傳感器DS18B20的溫 度測量,LCD屏輸出測量溫度,原理圖如圖6所示。
          2.3 溫度報(bào)警電路
          本 設(shè) 計(jì) 采 用 軟 件 處 理 報(bào) 警 , 利 用 無 源 蜂 鳴 器 進(jìn) 行 報(bào) 警,當(dāng)所測溫度超限后輸出PWM信號,驅(qū)動蜂鳴器報(bào)警, 其電路原理圖如圖7所示。

          3  系統(tǒng)軟件設(shè)計(jì)
          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ā)需要在宿主機(jī)上建立交叉 開發(fā)環(huán)境。
          交叉開發(fā)環(huán)境是包含了編輯器、編譯器、連接器、調(diào) 試器和libc庫等的程序環(huán)境。在開發(fā)嵌入式Linux相關(guān)軟件 時,常用的交叉開發(fā)工具是GNU工具鏈。系統(tǒng)中宿主機(jī)使 用的開發(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è)計(jì)
          Bootloader是在操作系統(tǒng)運(yùn)行前運(yùn)行的一段專用程序, 可以完成平臺硬件設(shè)備的初始化,并能完成引導(dǎo)和調(diào)試操作 系統(tǒng)。 Bootloader依賴CPU體系結(jié)構(gòu),一般將Bootloader按功 能劃分為兩個階段,其中第1階段實(shí)現(xiàn)基本硬件電路的初始 化,為操作系統(tǒng)的運(yùn)行準(zhǔn)備環(huán)境。在平臺中,由于使用的是 微控制器,因此第一階段需要實(shí)現(xiàn)設(shè)置處理器進(jìn)入管 理模式、關(guān)閉處理器中斷與快中斷、設(shè)置處理器主頻、高速 總線主頻與告訴外設(shè)主頻、CPU關(guān)閉MMU與數(shù)據(jù)Cache,初 始化內(nèi)存控制器,代碼由存儲器自搬運(yùn)至內(nèi)存,設(shè)置運(yùn)行程 序需要的臨時堆棧、BSS段清零等工作。第2階段主要實(shí)現(xiàn) 進(jìn)入交互模式或者自引導(dǎo)模式,實(shí)現(xiàn)操作系統(tǒng)的加載,一般 要根據(jù)操作系統(tǒng)與硬件平臺的需要實(shí)現(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è)計(jì)廠商為了更好地推廣處理器的使用,都會Linux中添加補(bǔ)丁, 使得該處理器能夠在L i nu x 行正常運(yùn)行。 平臺選用
          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),實(shí) 際上是把內(nèi)存劃出一部分當(dāng)作硬盤使用,使得程序運(yùn)行效率 更高。系統(tǒng)中的工具集合采用BusyBox完成,BusyBox 將許多 具有共性的小版本的UNIX工具結(jié)合到一個單一的可執(zhí)行文 件。這樣的集合可以替代大部分常用工具比如GNU fileutils
          , shellutils等工具,BusyBox提供了一個比較完善的環(huán)境,可 以適用于任何嵌入式設(shè)備。
          3.2 溫度傳感器驅(qū)動程序的設(shè)計(jì)
          在Linux中,為實(shí)現(xiàn)模型抽象和統(tǒng)一操作接口,設(shè)備驅(qū) 動程序隱藏了設(shè)備的具體細(xì)節(jié),向用戶提供了統(tǒng)一的設(shè)備接 口。Linux設(shè)備驅(qū)動運(yùn)行于內(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è)備面向的是需要隨 機(jī)存儲的設(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ū)動程序所提供的 入口點(diǎn)位置,分別是:
          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ū)
          動的實(shí)現(xiàn)由 file_operations實(shí)現(xiàn),用戶程序通過dev_t代表設(shè) 備號查找到內(nèi)核中的cdev,由cdev調(diào)用到file_operations,從 而調(diào)用到實(shí)際的硬件操作函數(shù)。

          4 結(jié)論
          本文以便攜式手持溫度測試儀為技術(shù)、應(yīng)用背景,設(shè) 計(jì)了一套具備溫度測量、數(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è)計(jì)了溫度采集,大容量存儲、人機(jī)交互、以及網(wǎng)絡(luò) 通訊等單元電路;在平臺電路的基礎(chǔ)上實(shí)現(xiàn)了Linux系統(tǒng)的 移植工作,并完成了這些設(shè)備接口電路的驅(qū)動移植工作; 在Linux系統(tǒng)下實(shí)現(xiàn)了DS18B20的驅(qū)動設(shè)計(jì)工作,并編寫了基 于液晶顯示的測試程序。經(jīng)過實(shí)際測試,應(yīng)用程序能夠在 Linux下采集DS18B20的溫度數(shù)據(jù),并能夠?qū)崿F(xiàn)在LCD上的顯 示、存儲功能,存儲文件能夠通過網(wǎng)絡(luò)的NFS服務(wù)導(dǎo)出到PC 端,實(shí)現(xiàn)了課題設(shè)計(jì)的功能。

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

          上一頁 1 2 3 下一頁

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

          評論


          相關(guān)推薦

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

          關(guān)閉