【正文】
掛在操作系統(tǒng)中的設(shè)備都使用了設(shè)備驅(qū)動(dòng)程序,要使一個(gè)設(shè)備成為應(yīng)用程序可以訪問的設(shè)備,必須在文件系統(tǒng)中有一個(gè)代表此設(shè)備的設(shè)備文件,通過使用設(shè)備文件,就可以對(duì)外部設(shè)備進(jìn)行具體的操作。驅(qū)動(dòng)程序加載到linux內(nèi)核里設(shè)備驅(qū)動(dòng)程序?qū)懲旰?,就可以加到linux的內(nèi)核中了,這需要修改linux的源碼,然后重新編譯linux內(nèi)核。他們的原型如下:put_user(data,ptr)。read 方法實(shí)現(xiàn)的是從內(nèi)核地址空間向用戶空間中的數(shù)據(jù)傳輸,為了實(shí)現(xiàn)這個(gè)目的,還需要在read方法中調(diào)用兩個(gè)子方法:copy_to_user()、access_ok(),它們?cè)赼sm/中定義,原型如下:unsigned long copy_to_user(void_user *to,const void *from,unsigned long count)。內(nèi)核自動(dòng)維護(hù)一個(gè)計(jì)數(shù)器以標(biāo)識(shí)設(shè)備驅(qū)動(dòng)的使用情況。用戶程序不能直接使用這些“方法”,而是通過“系統(tǒng)調(diào)用”間接調(diào)用“方法”實(shí)現(xiàn)對(duì)硬件的操作。當(dāng)設(shè)備的驅(qū)動(dòng)程序使用了如下的函數(shù)方式,則設(shè)備驅(qū)動(dòng)可以動(dòng)態(tài)的加載和卸載。int requesr_irq(unsigned irq,void(*handler)(int ,void *,struct pt_regs*),unsigned long flags,const char * device,void * dev_id)。一般來說,每個(gè)設(shè)備要定義一個(gè)設(shè)備變量,用來保存設(shè)備相關(guān)的參數(shù)。(7) poll一般用于查詢?cè)O(shè)備是否可讀可寫或處于特殊的狀態(tài)。如果沒有這個(gè)函數(shù),write系統(tǒng)調(diào)用程序返回一個(gè)EINVAL。unsigned long (*get_unmapped_area)(struct file*,unsigned long,unsigned long, unsigned long, unsigned long)。 int(*flush) (struct file*)。 loff_t (* llseek) (struct file* , loff_t,int)。字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對(duì)字符設(shè)備發(fā)出讀寫請(qǐng)求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了;塊設(shè)備利用一塊系統(tǒng)內(nèi)存作為緩沖區(qū),當(dāng)用戶進(jìn)程對(duì)設(shè)備請(qǐng)求滿足用戶要求時(shí),就返回請(qǐng)求的數(shù)據(jù)。mknod harddiak b 3 0file /dev/had/dev/had: block special (3/0)用mknod 命令可以創(chuàng)建設(shè)備文件,創(chuàng)建時(shí)指定主設(shè)備號(hào)和輔設(shè)備號(hào)。這種信息由三部分構(gòu)成:第一部分包括設(shè)備的類型,第二部分是一個(gè)“主設(shè)備號(hào)”(Major),第三部分是一個(gè)“輔(或者從)設(shè)備號(hào)”(Minor)。Character型設(shè)備文件常指直接讀/寫、沒有緩沖區(qū)的字符設(shè)備,而Block設(shè)備文件常常指那些需要以塊(如512B)的方式寫入的設(shè)備,Socket(網(wǎng)絡(luò)插件)型設(shè)備文件指的是網(wǎng)絡(luò)設(shè)備訪問的BSD Socket接口。但是它的塊又不是固定大小的,大到數(shù)百甚至數(shù)千字節(jié),小到幾個(gè)字節(jié)。內(nèi)核把字符設(shè)備看成是可順序訪問的連續(xù)字節(jié)流,它在單個(gè)字符的基礎(chǔ)上接收和發(fā)送數(shù)據(jù),數(shù)據(jù)緩沖系統(tǒng)?;谠O(shè)備驅(qū)動(dòng)程序的功能和編譯特點(diǎn),應(yīng)具有的特性如下:(1)由一系列函數(shù)和數(shù)據(jù)構(gòu)成,它既要與硬件設(shè)備進(jìn)行通信又要遵循操作系統(tǒng)內(nèi)核提供的統(tǒng)一接口;(2)它要管理好用戶程序與外設(shè)之間的數(shù)據(jù)流和控制流;(3)是一個(gè)自包含組件,能夠動(dòng)態(tài)地加入到操作系統(tǒng)或被內(nèi)核刪除;(4)屬于內(nèi)核的可定制部分,通過設(shè)備文件賴于用戶程序打交道。嵌入式linux驅(qū)動(dòng)程序的基本結(jié)構(gòu)和標(biāo)準(zhǔn)的linux的結(jié)構(gòu)基本一致,也支持模塊化模式,所以,大部分驅(qū)動(dòng)程序編程模塊化形式,而且,要求可以在不同的體系結(jié)構(gòu)上安裝。 下載文件系統(tǒng)輸入:loadyaffs –e root u,回車。(3)重新下載vivi通過dnw下載vivi有兩種方法,本設(shè)計(jì)使用方法二。用串口電纜線連接主機(jī)和ARM板的串口,從Nand Flash啟動(dòng)系統(tǒng),點(diǎn)菜單Configuration,設(shè)置串口。若要卸載并口,可右鍵點(diǎn)擊giveio(COM3)卸載。當(dāng)用真實(shí)賬號(hào)登錄以后,其登錄的目錄為用戶自己的目錄,該目錄在系統(tǒng)建立帳號(hào)時(shí)系統(tǒng)就自動(dòng)建立,它可以訪問整個(gè)目錄結(jié)構(gòu)。FTP是TCP/IP的一種具體應(yīng)用,它工作在OSI模型的第七層,TCP模型的第四層,即應(yīng)用層,它使用TCP傳輸而不是UDP,這樣FTP客戶在和服務(wù)器建立連接前要經(jīng)過“三次握手”的過程,是一種面向連接,可靠的數(shù)據(jù)傳輸協(xié)議。嵌入式系統(tǒng)也可以使用硬盤和光盤,但是這與嵌入式系統(tǒng)的便攜特性相違背,所以一般用Flash作為存儲(chǔ)介質(zhì)。除此,還可以配置其他項(xiàng)。Linux操作系統(tǒng)一般由內(nèi)核、shell、文件結(jié)構(gòu)和實(shí)用工具4個(gè)主要部分組成。每種不同體系結(jié)構(gòu)的處理器都有不同的Bootloader。但是構(gòu)建或移植一個(gè)Bootloader,從某種意義上來說,對(duì)所有的Linux系統(tǒng)都是一個(gè)最普通的任務(wù)。特定于用戶的應(yīng)用程序。包括固化在固件中的啟動(dòng)代碼(可選)和Bootloader兩大部分。另外,結(jié)合國內(nèi)實(shí)情,當(dāng)前國家對(duì)自主操作系統(tǒng)的大力支持,也為源碼開放的LINUX的推廣提供的廣闊的發(fā)展前景。 安裝交叉編譯器。本設(shè)計(jì)所設(shè)置的共享文件夾是:F/mag文件夾。第三個(gè)運(yùn)放是雙輸入單輸出的運(yùn)算放大器,它的放大倍數(shù)推導(dǎo)過程如下:當(dāng)V01單獨(dú)作用的時(shí)候,輸出V0為: (313)也就是普通的運(yùn)算放大器負(fù)放大。要濾除有害的因素,也可以通過其他的途徑,比如說:增大電容值可以加大濾除的效率,但是當(dāng)電容值增大到一定程度的時(shí)候,器濾波的效果就不會(huì)對(duì)這電容值的增大而增加,所以電容值就要選取合適的值,不能太大,也不能太小,這樣不但能有效的濾除有害因素,還能節(jié)省我們的成本。根據(jù)該熱電偶的分度表,則可從分度表上查得,將此值與測(cè)量值求和,即可計(jì)算出,在查該熱電偶的分度表,即可求得工作端溫度t[9]。因此,還需采用其他修正方法來補(bǔ)償冷端溫度t0≠0℃時(shí)對(duì)測(cè)溫的影響。其優(yōu)點(diǎn)是:①測(cè)量精度高。 所以: (33) 熱電偶的測(cè)溫電路 熱電偶的測(cè)溫原理熱電偶選用的是鎳鉻鎳硅熱電偶,分度號(hào)為K。在這種情況下,室溫稍有變動(dòng),我們就能準(zhǔn)確地得出室溫變動(dòng)的幅度,這樣更有利于我們的測(cè)量,使得我們的測(cè)量結(jié)果有更小的誤差。但由于客觀因素,使封裝后的變換器靈敏度可能有所偏離。傳感器的種類繁多,在本次設(shè)計(jì)中所要用到的是溫度傳感器,要選擇適當(dāng)?shù)膫鞲衅饕詽M足設(shè)計(jì)要求。它將JTAG 電路與內(nèi)核邏輯電路聯(lián)系起來,同時(shí)隔離內(nèi)核邏輯電路和芯片引腳。JTAG測(cè)試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試。電容器可以用電流來充電;同時(shí),電容的充放電需要一定的時(shí)間,雖然對(duì)于內(nèi)存基本單位中的電容來說這個(gè)時(shí)間很短,~,但這個(gè)期間內(nèi)存是不能執(zhí)行存取操作的?,F(xiàn)在內(nèi)存架構(gòu)是處于同一列的基本存儲(chǔ)單元共用一條列地址線,而處于同一行的基本存儲(chǔ)單元共用一條行地址線,組成一個(gè)基本單元構(gòu)成的矩陣框架。SDRAM具有單位空間存儲(chǔ)容量大和價(jià)格便宜的優(yōu)點(diǎn),已經(jīng)廣泛應(yīng)用在各種嵌入式系統(tǒng)中。擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為1~5s;擦除NAND器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。 Flash模塊Flash存儲(chǔ)器是一種可在的系統(tǒng)的(InSystem)進(jìn)行電擦寫,掉電后信息不丟失的存儲(chǔ)器。ARM9系列于1997年問世。目標(biāo)機(jī)可能是某種形式的系統(tǒng)仿真器,通過在宿主機(jī)上運(yùn)行目標(biāo)機(jī)的仿真軟件,整個(gè)調(diào)試過程可以在一臺(tái)計(jì)算機(jī)上運(yùn)行。調(diào)試器與被調(diào)試的程序一般運(yùn)行在同一臺(tái)計(jì)算機(jī)上,調(diào)試器是一個(gè)單獨(dú)運(yùn)行著的進(jìn)程,它通過操作系統(tǒng)提供的調(diào)試接口來控制被調(diào)試的進(jìn)程。與一般軟件開發(fā)的區(qū)別在于軟件實(shí)現(xiàn)的編譯和調(diào)試兩部分。嵌入式linux提供了完善的網(wǎng)絡(luò)技術(shù)支持,μC/OSII操作系統(tǒng)也成為實(shí)時(shí)操作系統(tǒng)或RTOS,使用它作為開發(fā)工具將會(huì)使實(shí)時(shí)應(yīng)用程序變得相對(duì)容易。 ARM 。目前嵌入式系統(tǒng)的應(yīng)用已經(jīng)發(fā)展到了嵌入式處理器與操作系統(tǒng)相結(jié)合的階段,本設(shè)計(jì)就是將ARM處理器與Linux操作系統(tǒng)相結(jié)合實(shí)現(xiàn)的。關(guān)鍵詞: ARM;linux;內(nèi)核;驅(qū)動(dòng);溫度監(jiān)測(cè) 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì)說明書(畢業(yè)論文)Embedded System of Temperature Testing Based on ARMAbstractWith the development of science, embedded system develops at a fast speed. Embedded system has been applied to all aspects, which has brought great convenience to people39。其中嵌入式處理器常是單片機(jī)或微控制器;支撐硬件主要包括存儲(chǔ)介質(zhì)、通信部件和顯示部件;嵌入式軟件則包括支撐硬件的驅(qū)動(dòng)程序、操作系統(tǒng)、支撐軟件以及應(yīng)用中間件等。調(diào)試接口也是嵌入式系統(tǒng)不可缺少的一部分。嵌入式系統(tǒng)的系統(tǒng)資源緊缺,存儲(chǔ)空間、處理器運(yùn)行速度等很有限,并且沒有相關(guān)的編譯工具,因此,嵌入式系統(tǒng)的開發(fā)需要借助宿主機(jī)來編譯出目標(biāo)機(jī)的執(zhí)行代碼。調(diào)試器通過串口、并口、網(wǎng)絡(luò)、JTAG等控制被調(diào)試進(jìn)程。SecurCore是第5個(gè)產(chǎn)品系列,是專門為安全設(shè)備而設(shè)計(jì)的。ARM940T包含一個(gè)更小的數(shù)據(jù)指令Cache和一個(gè)MPU。任何Flash器件進(jìn)行寫入操作前必須先進(jìn)行擦除。NOR主要用在代碼存儲(chǔ)介質(zhì)中,NAND適合于數(shù)據(jù)存儲(chǔ)[22]?;敬鎯?chǔ)單元是內(nèi)存芯片中存儲(chǔ)信息的最小單位,每個(gè)存儲(chǔ)單元可以存儲(chǔ)1bit的信息,并且有一個(gè)由行地址和列地址共同定義的唯一的地址。一個(gè)電容可以存儲(chǔ)一定量的電子或者電荷,一個(gè)充電的電容器被認(rèn)為是邏輯上的1,而“空”的電容器則是0。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。在硬件結(jié)構(gòu)上,JTAG 接口包括兩部分:JTAG 端口和控制器。嵌入式系統(tǒng)的Flash芯片的地址線、數(shù)據(jù)線和控制信號(hào)線接到嵌入式系統(tǒng)帶JTAG接口的微處理器相應(yīng)的引腳上,在對(duì)Flash編程時(shí),PC機(jī)上運(yùn)行的程序控制PC機(jī)發(fā)送指令或數(shù)據(jù)到嵌入式系統(tǒng)微處理器內(nèi)部的邊界掃描寄存器里,再把此數(shù)據(jù)或指令通過JTAG專用指令傳送到Flash,從而將代碼寫入Flash中[22]?! D590 的特點(diǎn)是:(1) 兩端器件:電壓輸入,電流輸出;(2) 線性電流輸出:1μA/K;(3) 較寬的檢測(cè)范圍: 55~ + 155℃;(4) 極好的線性:在工作范圍內(nèi)非線性誤差 177。在測(cè)室溫時(shí),室溫為n度,那輸出的電壓為:V0=+n,單位為mv。在上圖中,我們用的是兩級(jí)的負(fù)放大:第一級(jí)是放大倍數(shù),第二級(jí)的作用是使輸出為正。K型熱電偶是氧化性較強(qiáng)的賤金屬熱電偶。當(dāng)導(dǎo)體A和B的兩個(gè)執(zhí)著點(diǎn)1和2之間存在溫差時(shí),兩者之間便產(chǎn)生電動(dòng)勢(shì),因而在回路中形成一個(gè)大小的電流,這種現(xiàn)象稱為熱電效應(yīng)。設(shè)熱電偶工作端溫度為t,冷端為。他們的作用是濾除電磁波等有害因素。推導(dǎo)過程如下:我們假設(shè)上面的運(yùn)放器的輸出為V01,輸入為Vi1;下面的運(yùn)放器的輸出為V02,輸入為Vi2;最后的運(yùn)放器的輸出為V0。同一個(gè)體系可以運(yùn)行不同的操作系統(tǒng);同樣,同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。成功后,可在/mnt/hgfs目錄下看到共享文件夾:mag。 then pathmunge /sbin pathmunge /usr/sbin pathmunge /usr/local/sbin pathmunge /usr/local/arm/ fi(3)重新啟動(dòng)系統(tǒng)并以root身份登錄(4)在終端命令行輸入armlinuxgcc v檢查編譯器是否安裝: armlinuxgcc –v回車后,顯示如下信息則說明交叉編譯器已安裝: Reading specs from /usr/local/arm/ gcc version 20010315(release) Linux操作系統(tǒng)微處理器產(chǎn)生以來,價(jià)格低廉、結(jié)構(gòu)小巧的CPU和外設(shè)連接提供了穩(wěn)定可靠的硬件架構(gòu),那么限制嵌入式系統(tǒng)發(fā)展的瓶頸就突出表現(xiàn)在了軟件方面。Linux對(duì)廠商不偏不倚而且成本極低,能夠很快成為用于各種設(shè)備的操作系統(tǒng)。通常用Ramdisk作為根文件系統(tǒng)。Bootloader是系統(tǒng)加電后運(yùn)行的第一段代碼。在一個(gè)基于ARM的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的Bootloader。 內(nèi)核通常操作系統(tǒng)由內(nèi)核和一些系統(tǒng)服務(wù)程序(命令解釋、庫文件、鏈接和編譯程序等)組成。移植好操作系統(tǒng)后,應(yīng)用程序的編寫就十分方便了。make zImage編譯內(nèi)核中的文件,生成內(nèi)核,執(zhí)行時(shí)間約為3 min。FTP的全稱是FileTrnasefrPortocol(文件傳輸協(xié)議),是專門用來傳輸文件的協(xié)議。其登錄目錄為匿名FTP服務(wù)器的根目錄v//ar助。Windows下燒寫vivi到NAND Flash中,需要安裝主機(jī)并口和Jflash開發(fā)軟件等,虛擬機(jī)和主機(jī)均安裝物理并口,但是為虛擬機(jī)安裝的是打印機(jī)端口LPT1,為主機(jī)安裝的是并口giveio(COM3),故兩個(gè)并口使用時(shí)不會(huì)發(fā)上沖突。[3]BIOS燒寫完畢,拔下JTAG電纜。在vivi模式下分區(qū)格式化Flash:在vivi模式下輸入命令: bon part 0 192K 1216K對(duì)板子進(jìn)行分區(qū)。方法一:接上串口電纜,輸入命令:load flash kernel x,使用Serial PortTransmi