基于linux的EEPROM的讀寫(xiě)控制畢業(yè)論文_第1頁(yè)
基于linux的EEPROM的讀寫(xiě)控制畢業(yè)論文_第2頁(yè)
基于linux的EEPROM的讀寫(xiě)控制畢業(yè)論文_第3頁(yè)
基于linux的EEPROM的讀寫(xiě)控制畢業(yè)論文_第4頁(yè)
基于linux的EEPROM的讀寫(xiě)控制畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、. . . . I / 25畢畢業(yè)業(yè)設(shè)設(shè)計(jì)計(jì) 論論文文 題目題目:基于基于 linuxlinux 的的 EEPROMEEPROM 的讀寫(xiě)控制的讀寫(xiě)控制. . . . I / 25畢業(yè)論文(設(shè)計(jì))原創(chuàng)性聲明畢業(yè)論文(設(shè)計(jì))原創(chuàng)性聲明本人所呈交的畢業(yè)論文(設(shè)計(jì))是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工本人所呈交的畢業(yè)論文(設(shè)計(jì))是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工作與取得的研究成果。據(jù)我所知,除文中已經(jīng)注明引用的容外,本論文作與取得的研究成果。據(jù)我所知,除文中已經(jīng)注明引用的容外,本論文(設(shè)計(jì))不包含其他個(gè)人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果。對(duì)本論文(設(shè)計(jì))(設(shè)計(jì))不包含其他個(gè)人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果。對(duì)本論文(設(shè)計(jì)

2、)的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中作了明確說(shuō)明并表示意。的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中作了明確說(shuō)明并表示意。 作者簽名:作者簽名: 日期:日期:畢業(yè)論文(設(shè)計(jì))授權(quán)使用說(shuō)明畢業(yè)論文(設(shè)計(jì))授權(quán)使用說(shuō)明本論文(設(shè)計(jì))作者完全了解本論文(設(shè)計(jì))作者完全了解*學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計(jì))學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計(jì))的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計(jì))并向相關(guān)部門(mén)送交論文(設(shè)計(jì))的電的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計(jì))并向相關(guān)部門(mén)送交論文(設(shè)計(jì))的電子版和紙質(zhì)版。有權(quán)將論文(設(shè)計(jì))用于非贏利目的的少量復(fù)制并允許論子版和紙質(zhì)版。有權(quán)將論文(設(shè)計(jì))用于非贏利目的的少量復(fù)制并允許論

3、文(設(shè)計(jì))進(jìn)入學(xué)校圖書(shū)館被查閱。學(xué)??梢怨颊撐模ㄔO(shè)計(jì))的全部或文(設(shè)計(jì))進(jìn)入學(xué)校圖書(shū)館被查閱。學(xué)??梢怨颊撐模ㄔO(shè)計(jì))的全部或部分容。的論文(設(shè)計(jì))在解密后適用本規(guī)定。部分容。的論文(設(shè)計(jì))在解密后適用本規(guī)定。 作者簽名:作者簽名: 指導(dǎo)教師簽名:指導(dǎo)教師簽名:日期:日期: 日期:日期:注意事項(xiàng)1.設(shè)計(jì)(論文)的容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作). . . . II / 252)原創(chuàng)性聲明3)中文摘要(300 字左右) 、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(yè)(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論) 、正文、結(jié)論7)參考文獻(xiàn)8)致9)附錄(對(duì)論文支持必要時(shí))2.論文字

4、數(shù)要求:理工類(lèi)設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于 1 萬(wàn)字(不包括圖紙、程序清單等) ,文科類(lèi)論文正文字?jǐn)?shù)不少于 1.2 萬(wàn)字。3.附件包括:任務(wù)書(shū)、開(kāi)題報(bào)告、外文譯文、譯文原文(復(fù)印件) 。4.文字、圖表要求:1)文字通順,語(yǔ)言流暢,書(shū)寫(xiě)字跡工整,打印字體與大小符合要求,無(wú)錯(cuò)別字,不準(zhǔn)請(qǐng)他人代寫(xiě)2)工程設(shè)計(jì)類(lèi)題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國(guó)家技術(shù)標(biāo)準(zhǔn)規(guī)。圖表整潔,布局合理,文字注釋必須使用工程字書(shū)寫(xiě),不準(zhǔn)用徒手畫(huà)3)畢業(yè)論文須用 A4 單面打印,論文 50 頁(yè)以上的雙面打印4)圖表應(yīng)繪制于無(wú)格子的頁(yè)面上5)軟件工程類(lèi)課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)

5、計(jì)(論文)2)附件:按照任務(wù)書(shū)、開(kāi)題報(bào)告、外文譯文、譯文原文(復(fù)印件)次序裝訂3)其它目 錄摘要 IIABSTRACTIII1 1 緒論緒論 1 11.1 開(kāi)發(fā)背景 11.2 EEPROM 的開(kāi)發(fā)意義 12LINUX2LINUX 技術(shù)簡(jiǎn)介技術(shù)簡(jiǎn)介 3 32.1 開(kāi)發(fā)工具簡(jiǎn)介 3. . . . III / 252.2 編譯工具簡(jiǎn)介 52.3 bootloader 簡(jiǎn)介 63 3 操作系統(tǒng)的移植操作系統(tǒng)的移植 8 83.1 LINUX 核的移植 83.2 LINUX 核的目錄結(jié)構(gòu) 93.3 LINUX 源代碼的安裝 104EEPROM4EEPROM 的概要設(shè)計(jì)的概要設(shè)計(jì) 13134.1 IIC 總

6、線的讀/寫(xiě)控制邏輯 134.2 設(shè)計(jì)操作過(guò)程 164.3 設(shè)計(jì)參考程序 174.4 實(shí)驗(yàn)結(jié)果分析 20結(jié)束語(yǔ)結(jié)束語(yǔ) 2121參考文獻(xiàn) 22致 23基于 linux 的 EEPROM 的讀寫(xiě)控制摘 要本文著眼于在 linux 開(kāi)發(fā)環(huán)境下實(shí)現(xiàn) EEPROM 的讀/寫(xiě)控制訪問(wèn)方法.Linux 操作系統(tǒng)作為新興的操作系統(tǒng),具有核強(qiáng)大、開(kāi)源、易擴(kuò)展和裁減以與豐富的硬件支持等諸多優(yōu)點(diǎn),其嵌入式應(yīng)用具有實(shí)時(shí)處理能力,廣泛應(yīng)用于智能設(shè)備、智能儀器儀表、信息電器領(lǐng)域。隨著計(jì)算技術(shù)向微型化、網(wǎng)絡(luò)化方向的發(fā)展,嵌入式軟件極提高了傳統(tǒng)工業(yè)控制、醫(yī)療、辦公乃至家用消費(fèi)類(lèi)電子產(chǎn)品的附加值和易用性,市場(chǎng)應(yīng)用前景極為廣闊。項(xiàng)

7、目必要性軟件在信息系統(tǒng)中起著核心和靈魂的作用。本設(shè)計(jì)在 EduKit2410 實(shí)驗(yàn)平臺(tái)上,通過(guò)編寫(xiě)程序在 EEPROM 器件 AT24C04 進(jìn)行讀寫(xiě)訪問(wèn),掌握 EEPROM 器件在 LINUX 下的讀/寫(xiě)訪問(wèn)方法,然后把實(shí)驗(yàn)數(shù)據(jù)寫(xiě)入整個(gè)EEPROM 的存儲(chǔ)空間,接著讀出來(lái)而進(jìn)行比較8。通過(guò)檢測(cè) EEPROM 器件 AT24C04 和處理器 I2C 總線接口與驅(qū)動(dòng)程序的工作是否正常,比較寫(xiě)入數(shù)據(jù)與讀出數(shù)據(jù)的結(jié)果。關(guān)鍵詞關(guān)鍵詞: : EEPROM I2C 總線 讀寫(xiě)控制. . . . IV / 25BasedBased onon LinuxLinux Read-WriteRead-Write c

8、ontrolcontrol ofof EERROMEERROMAbstractThis article focuses on realizing read/writescontrol access method of EEPROM under the linuxdevelopment environment. The Linux operating system as a emerming operating system, has strong core, open - source, easy to expand and the reduction and the rich hardwar

9、e support and so on, its embedded application has the real-time processing ability, widely applies in the intelligent equipment, the smart instrument measuring appliance, the information electric appliance domain. Along with the computation technology to the microminiaturization, the network directi

10、on developing, the embedded software enhanced the tradition industrial control, medical, the work and even the home use expense class electronic products added value and the usability enormously, the market application prospect is extremely broad. The project necessary software is playing the core a

11、nd the soul role in the information system.This design isin EduKit2410 experiment platform, carries on the read-write visit through the write program in AT24C04 of EEPROM component AT24C04, grasps the access method under the Linux of write-read in EEPROM component, then read and compare it. Through

12、examineing AT24C04 of EEPROM component and the processor I2C bus interface ,then examining if the driver work is normal, comparing the result of write data and read date.KeyKey wordswords: :EEPROMI2C BusRead-Write control. . . . 1 / 251 緒 論1.1 開(kāi)發(fā)背景l(fā)inux 是當(dāng)前最流行的操作系統(tǒng)之一。它具有高效、健壯、安全以與功能齊全等特性,因而贏得了人們的青睞。

13、它是一個(gè)完全免費(fèi)的 UNIX 操作系統(tǒng),來(lái)自世界各地的志愿者為這個(gè)充滿(mǎn)魅力的操作系統(tǒng)的發(fā)展貢獻(xiàn)著自己的才能。可以說(shuō),LINUX 的發(fā)展凝聚了世界各地?zé)o數(shù)開(kāi)發(fā)人員的大量心血,體現(xiàn)了一種信息世界的共建、共享和共榮的精神1。Linux 操作系統(tǒng)作為新興的操作系統(tǒng),其嵌入式應(yīng)用具有實(shí)時(shí)處理能力,可廣泛應(yīng)用于智能設(shè)備、智能儀器儀表、信息電器領(lǐng)域。隨著計(jì)算技術(shù)向微型化、網(wǎng)絡(luò)化方向的發(fā)展,嵌入式軟件極提高了傳統(tǒng)工業(yè)控制、醫(yī)療、辦公乃至家用消費(fèi)類(lèi)電子產(chǎn)品的附加值和易用性,市場(chǎng)應(yīng)用前景極為廣闊。項(xiàng)目必要性軟件在信息系統(tǒng)中起著核心和靈魂的作用。與其他嵌入式操作系統(tǒng)相比,Linux 的源代碼是開(kāi)放的,不存在黑箱技術(shù)

14、。Linux 作為一種可裁剪的軟件平臺(tái)系統(tǒng),是發(fā)展未來(lái)嵌入式設(shè)備的絕佳資源。在保持Linux 核系統(tǒng)更小、更穩(wěn)定、更具價(jià)格競(jìng)爭(zhēng)力等優(yōu)勢(shì)的同時(shí),對(duì)系統(tǒng)核進(jìn)行實(shí)時(shí)性?xún)?yōu)化,使之適應(yīng)于對(duì)工業(yè)控制領(lǐng)域高實(shí)時(shí)性的要求。這是嵌入式 linux 操作系統(tǒng)更適合在嵌入式工控系統(tǒng)中應(yīng)用2。Linux 是免費(fèi)的操作系統(tǒng)。Linux 的創(chuàng)始人 LinusTorvalds 將Linux 適時(shí)地放到 GNU 公共許可證下,使得 Linux 本身在短短的幾年發(fā)展成為一個(gè)穩(wěn)定,健壯的 OS,也使得人們不用花錢(qián)就可以使用。使得操作系統(tǒng)真正走上平民化。Linux的源代碼是開(kāi)放的,源代碼隨處可得,即使最困難的問(wèn)題也有辦法解決,不存

15、在黑箱技術(shù)。遇到問(wèn)題時(shí)可通過(guò)網(wǎng)絡(luò),得到豐富的技術(shù)支持??梢钥闯觯琇inux 用于嵌入式系統(tǒng)方面是可行的,具有廣泛的應(yīng)用前景3。1.2 EEPROM 的開(kāi)發(fā)意義EEPROM 是一種具有掉電記憶功能的存貯器,其容可以象普通 RAM 一樣進(jìn)行改寫(xiě),而且改寫(xiě)時(shí)能夠自動(dòng)擦除并換成新容。它不象 EPROM 那樣需要紫外線擦除;而只需用電即可擦除并改寫(xiě)存貯在其部的容。EEPROM 通常在部帶有編程電源。由于它只需外接單一5V 電源,因此使用起來(lái)十分方便。和串行芯片相比,并行 EEPROM 的電路接口和編程設(shè)計(jì)均簡(jiǎn)單得多,所以在對(duì)電路板面積要求不很苛刻的情況下,使用 EEPROM 存貯器還是十分的方便。電可擦

16、除可編程 EEPROM 在應(yīng)用系統(tǒng)中既可由軟件對(duì)其容進(jìn)行隨機(jī)讀寫(xiě),又可在芯片斷電的情況下長(zhǎng)期保存片信息,因此兼?zhèn)淞?RAM 和 ROM 的基本特點(diǎn)。EEPROM 有串行和并行兩大類(lèi)。并行 EEPROM 存儲(chǔ)容量較大,讀寫(xiě)方法簡(jiǎn)單,但價(jià)格較高,適用于信息量較多的場(chǎng)合。串行 EEPROM 結(jié)構(gòu)簡(jiǎn)單緊湊,價(jià)格低廉,但其讀寫(xiě)方法復(fù)雜,存儲(chǔ)單元較小,一般用于掉電情況下需要保存或一些數(shù)據(jù)需要在線修改的場(chǎng)合,這類(lèi)數(shù)據(jù)不多卻很重要,若使用常規(guī)的 RAM 芯片,就必須附帶一套性能可靠的掉電保護(hù)系統(tǒng),這不僅增加了線路設(shè)計(jì)的復(fù)雜性,同時(shí)也給設(shè)備的運(yùn)行和維護(hù)帶來(lái)了諸多不便。使用串行. . . . 2 / 25EEPR

17、OM 來(lái)存儲(chǔ)這類(lèi)數(shù)據(jù)是最合適不過(guò)的4。尤其隨著當(dāng)今智能化儀表趨于小型化,再加上真正需要保存的以與預(yù)設(shè)的數(shù)據(jù)位、控制位、位并不占據(jù)太多的存儲(chǔ)空間,串行EEPROM 的體積小,功耗低,硬件接口非常簡(jiǎn)單,因而越來(lái)越受到人們的重視,在智能化儀器儀表、控制裝置等領(lǐng)域得到廣泛的應(yīng)用。2 LINUX 技術(shù)簡(jiǎn)介2.1 開(kāi)發(fā)工具簡(jiǎn)介開(kāi)發(fā)嵌入式 linux 系統(tǒng)最方便的方法還是夠建一個(gè)標(biāo)準(zhǔn)的 linux 開(kāi)發(fā)環(huán)境。這將會(huì)大大簡(jiǎn)化 linux 開(kāi)發(fā)的編譯,調(diào)試等工作。EduKit2410 系統(tǒng) 的 linux 開(kāi)發(fā)就可以在標(biāo)準(zhǔn) linux 環(huán)境下進(jìn)行。一Cygwin 安裝:1) 運(yùn)行 Cygwin 安裝程序 set

18、up.exe,然后選擇“Install from Local Directory“,選擇“下一步”,如圖 2-1 所示。圖2-1 Cygwin 安裝12) 選擇 Cygwin 的安裝目錄,注意 Cygwin 的安裝目錄必須位于硬盤(pán) NTFS 分區(qū),否則會(huì)影響文件屬性和權(quán)限操作,導(dǎo)致錯(cuò)誤的結(jié)果。選擇 Unix 文本文件類(lèi)型。選擇“下一步”,如圖 2-2 所示。. . . . 3 / 25圖2-2 Cygwin 安裝23) 選擇 Cygwin 安裝程序包所在的本地目錄。選擇“下一步”,如圖 2-3 所示。圖2-3 Cygwin 安裝34) 選擇安裝項(xiàng)目。(如圖 2-4)點(diǎn)擊在安裝項(xiàng)目左邊的“def

19、ault”,可以調(diào)整該項(xiàng)目的安裝設(shè)置,可選擇全部安裝。開(kāi)發(fā) Linux 必須選擇全部安裝以下項(xiàng)目:Admin 包括啟動(dòng)服務(wù) cygrunsrv 等工具,NFS 啟動(dòng)必備;Archive 壓縮解壓工具集;Base 基本的 Linux 工具集;Devel 開(kāi)發(fā)工具集,包括 gcc、make 等開(kāi)發(fā)工具;Libs 函數(shù)庫(kù);Net 網(wǎng)絡(luò)工具集;Shells 常用 Shell 工具集;Utils 包括 bzip2 等實(shí)用工具集;. . . . 4 / 25圖2-4 Cygwin 軟件包的選擇軟件包安裝完成后,根據(jù)提示信息進(jìn)行余下的操作,此后可以運(yùn)行 Cygwin。注意:由于cygwin 是Windows

20、 環(huán)境下虛擬的Linux 開(kāi)發(fā)環(huán)境,一般在ALL 處設(shè)置為Install 狀態(tài),即全部安裝。所以要建立一個(gè)完整的Linux 開(kāi)發(fā)調(diào)試環(huán)境,加上存放編譯工具和例程的空間,至少需要一個(gè)容量在2GB 以上的分區(qū)。二、環(huán)境準(zhǔn)備1、拷貝以下文件到 Cygwin 安裝后的 Cygwin/tmp/目錄下:2、運(yùn)行 Cygwin 開(kāi)發(fā)環(huán)境,執(zhí)行以下命令(注意空格與大小寫(xiě)):$ cd $ ls ( . ) source /tmp/set_env_linux.sh 三把以下文件夾下所有文件拷貝到 Cygwin/tmp/edukit-2410 目錄下: Cross Tools for Cygwin -交叉編譯工具與

21、函數(shù)庫(kù) Filesystem -文件系統(tǒng)源碼 Kernel -Linux 核源碼 Bootloader -啟動(dòng)代碼源碼2.2 編譯工具簡(jiǎn)介1)安裝交叉編譯工具$ cd /$ tar -P -xvjf $SOURCEDIR/cross-armtools-linux-edukit2410.tar.bz2$ source /tmp/armtools-linux/cross-install.sh. . . . 5 / 252)安裝核注:如果關(guān)閉過(guò) Cygwin 請(qǐng)先執(zhí)行:source /tmp/set_env_linux.sh $ cd $WORKDIR$ tar -xvjf $SOURCEDIR/l

22、kit2410.tar.bz2$ cd kernel3)編譯配置注:如果關(guān)閉過(guò) Cygwin 請(qǐng)先執(zhí)行:source /tmp/set_env_linux.sh $ cd $WORKDIR$ make xconfig make dep $ make zImage命令含義如下:make xconfig 在圖形截界面下對(duì)核進(jìn)行配置;make dep:搜索 linux 編譯輸出與源代碼之間的依賴(lài)關(guān)系,并生成以來(lái)文件;make zImage:編譯 linux 核,生成壓縮的核映像文件。2.3 BOOTLOADER簡(jiǎn)介系統(tǒng)引導(dǎo)程序通常稱(chēng)為 Boo

23、t Loader,是在系統(tǒng)復(fù)位后執(zhí)行的第一段代碼,相當(dāng)于PC 上的 BIOS 以與商業(yè)實(shí)時(shí)操作系統(tǒng)中的板級(jí)支持包 BSP,Boot Loader 首先完成系統(tǒng)硬件的初始化,包括時(shí)鐘的設(shè)置、存儲(chǔ)區(qū)的映射等,設(shè)置堆棧指針,然后跳轉(zhuǎn)到操作系統(tǒng)核的入口,將系統(tǒng)控制權(quán)交給操作系統(tǒng),在此之后系統(tǒng)的運(yùn)行和 Boot Loader 再無(wú)任何關(guān)系。Boot Loader 獨(dú)立于操作系統(tǒng),必須由用戶(hù)自己設(shè)計(jì),uClinux 的發(fā)行包中不包含 Boot Loader,但用戶(hù)可以直接使用或參考一些開(kāi)源的 Boot Loader 軟件工程11。Boot Loader 的實(shí)現(xiàn)高度依賴(lài)于硬件,包括處理器的體系結(jié)構(gòu)、具體型號(hào)

24、、硬件電路板的設(shè)計(jì)。Boot Loader、核映像和文件系統(tǒng)映像在系統(tǒng)中的存儲(chǔ)的典型空間分配結(jié)構(gòu)圖如圖2-5 所示。圖 2-5 典型空間分配結(jié)構(gòu)圖:linux 提供生成壓縮方式的核映像,節(jié)省 Flash 的存儲(chǔ)空間,這也是實(shí)際設(shè)計(jì)過(guò). . . . 6 / 25程中最經(jīng)常使用的方式。linux 將編譯好的核壓縮后和 linux 附帶的引導(dǎo)解壓文件連接,生成最終的映像文件。引導(dǎo)解壓文件位于/linux-2.4.x/arch/armnommu/boot/compressed 目錄,映像文件的入口是匯編文件 head.s,映像文件的起始地址在連接文件 linux.lds 中設(shè)置,這個(gè)地址也就是 Boo

25、t Loader 最后跳轉(zhuǎn)的地址。在基于三星處理器 S3C4510 評(píng)估板 SNDS100 的 uClinux 中,head.s 完成依次存儲(chǔ)區(qū)的初始化、核的拷貝和解壓,存儲(chǔ)區(qū)的重映射,然后跳轉(zhuǎn)到核的真正入口 head-armv.s,如果不需要更復(fù)雜的功能,這部分引導(dǎo)解壓文件基本上就可以做為Boot Loader 使用。實(shí)際設(shè)計(jì)過(guò)程中如果 RAM 空間緊,并且對(duì)系統(tǒng)執(zhí)行速度要求不高,也常使用未經(jīng)壓縮的在 Flash 本地執(zhí)行 XIP(Execute In Place)方式的核映像文件。此時(shí)核映像文件的入口是匯編文件 head-armv.s,該文件位于/linux-2.4.x/arch/armn

26、ommu/kernel 目錄,映像文件的起始地址在連接文件/linux-2.4.x/arch/armnommu/vmlinux.lds 中設(shè)置。開(kāi)發(fā)人員在調(diào)試過(guò)程中也經(jīng)常使用未經(jīng)壓縮的在 Ram 本地執(zhí)行 XIP 方式的核映像文件,與在 Flash 本地執(zhí)行的映像文件的區(qū)別是它不需要將數(shù)據(jù)段從 Flash 拷貝到Ram 中的過(guò)程15。這種方式下,需要 Boot Loader 具有通過(guò)網(wǎng)口或串口下載核映像文件并啟動(dòng)核的功能。最簡(jiǎn)功能設(shè)計(jì)設(shè)計(jì)一個(gè)最簡(jiǎn)單的 Boot Loader,只需要依次完成以下功能:(1)禁止所有的中斷;(2)設(shè)置處理器時(shí)鐘、運(yùn)行速度;(3)存儲(chǔ)區(qū)初始化;(4)設(shè)置堆棧指針將

27、bss 段清零;(5)跳轉(zhuǎn)到核映像的入口。在跳轉(zhuǎn)到核映像的入口前,以下條件必須滿(mǎn)足:寄存器 r0 必須設(shè)置為 0;寄存器 r1 必須設(shè)置為唯一的處理器結(jié)構(gòu)號(hào),文件linux/arch/arm/tools/mach-types 中包含所有結(jié)構(gòu)號(hào)的列表;存儲(chǔ)區(qū)管理單元 MMU必須關(guān)閉;指令緩存 I-cache 打開(kāi)或者關(guān)閉;數(shù)據(jù)緩存 D-cache 關(guān)閉。完備功能設(shè)計(jì)。設(shè)計(jì)一個(gè)完備的 Boot Loader,可在最簡(jiǎn)功能基礎(chǔ)上考慮是否增加以下功能:(1)上電自檢;(2)支持串口通訊方式,提供串口方式的命令控制臺(tái);(3)支持以太網(wǎng)通訊方式,提供以太網(wǎng)通訊方式的命令控制臺(tái);(4)可以通過(guò)串口或以太網(wǎng)下

28、載并引導(dǎo)核和文件系統(tǒng)映像文件;. . . . 7 / 25(5)支持通過(guò)串口或以太網(wǎng)通訊燒寫(xiě)映像文件到 Flash;(6)能夠讀寫(xiě) I/O 端口、存儲(chǔ)區(qū)、寄存器;(7)配置功能,包括設(shè)置 IP 地址、MAC 地址、系統(tǒng)時(shí)間等。3 操作系統(tǒng)的移植3.1 LINUX 核的移植3.1.1 核移植過(guò)程:1)下載 linux 核下載 linux 核至 home/arm/dev_home/kernelrootlocalhost #su armarmlocalhost #cd $KERNELarmlocalhost kernel#tar -xzvf linux-.tar.gzarmlocal

29、host kernel# pwd/home/arm/dev_home/kernelarmlocalhost kernel# cd linux-2.6.14 進(jìn)入核解壓后的目錄,以后示例中,只要是相對(duì)路徑全部是相對(duì)于/home/arm/dev_home/kernel/linux-2.6.14/此目錄。2)修改 Makefile修改核目錄樹(shù)根下的的 Makefile,指明交叉編譯器armlocalhost linux-2.6.14# vi Makefile 找到 ARCH 和 CROSS_COMPILE,修改 ARCH ?= armCROSS_COMPILE ?= arm-linux-然后設(shè)置你的

30、 PATH 環(huán)境變量,使其可以找到你的交叉編譯工具鏈:armlocalhost linux-2.6.14# echo $PATH/usr/local/arm/3.4.4/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/ly/bin 如果/usr/local/arm/3.4.4/bin 搜索路徑, 加入下面語(yǔ)句在/.bashrc 中armlocalhost linux-2.6.14# vi /.bashrc export PATH=/usr/local/arm/3.4.4/bin:$PATH 再重新登

31、陸。armlocalhost linux-2.6.14#su arm3)設(shè)置 flash 分區(qū)指明分區(qū)信息,指定啟動(dòng)時(shí)初始化,禁止 Flash ECC 校驗(yàn)。4)配置核配置核產(chǎn)生.config 文件,編譯核,下載 zImage 到開(kāi)發(fā)板。3.1.2 創(chuàng)建 uImage1)獲取 mkimage 工具2.6 核樹(shù)的 Makefile 提供了創(chuàng)建 uImage 的方法,但需要我們提供相應(yīng)的 mkimage. . . . 8 / 25命令。 所以首先拷貝 u-boot 中 tools 目錄下編譯后生成的 mkimage 到/usr/bin/下,然后便可以在核根目錄下通過(guò) make uImage 來(lái)創(chuàng)建

32、 uImage 文件。該文件生成在arch/arm/boot/下。2)修改核的 Makefile 文件armlocalhost linux-$ vi arch/arm/boot/Makefile#MKIMAGE 變量記錄 mkimage 命令的路徑 mkuboot.sh 腳本文件可以 scripts 目錄中找到MKIMAGE:= $(srctree)/scripts/mkuboot.sh#zreladdr-y 與 params_phys-y 可以在 arch/arm/mach-s3c2410/Makefile.boot 當(dāng)中找到ZRELADDR := $(zreladdr-y)

33、PARAMS_PHYS := $(params_phys-y)INITRD_PHYS := $(initrd_phys-y)生成 uImage 的 mkImage 命令行,其中需要關(guān)注的就是-a 與 -e 參數(shù)。參數(shù)-a:指明 uImage 加載的 SDRAM 地址,核默認(rèn)指定加載地址為 0 x30008000。 u-boot 引導(dǎo)時(shí),bootm 命令跳到與上一樣位置執(zhí)行,檢查完鏡像頭后,它會(huì)跳到核真正的入口點(diǎn)開(kāi)始執(zhí)行。參數(shù)-e:指明 uImage 中刨去鏡像頭后真正的核入口地址。 鏡像頭為 0 x40 長(zhǎng),故此處指定為 0 x30008040。3.2 LINUX 核的目錄結(jié)構(gòu)現(xiàn)代的操作系統(tǒng)一

34、般由進(jìn)程管理、存管理、文件系統(tǒng)、驅(qū)動(dòng)程序和網(wǎng)絡(luò)等組成。Linux 核心源程序通常都安裝在/usr/src/linux 下,而且它有一個(gè)非常簡(jiǎn)單的編號(hào)約定:任何偶數(shù)的核心都是一個(gè)穩(wěn)定地發(fā)行的核心,而任何奇數(shù)的核心都是一個(gè)開(kāi)發(fā)中的核心13。 Linux 核源碼的各個(gè)目錄大致與此相對(duì)應(yīng),其組成如下(假設(shè)相對(duì)于/usr/src/Linux-2.4.23 目錄):arch 目錄包括了所有和體系結(jié)構(gòu)相關(guān)的核心代碼。它下面的每一個(gè)子目錄都代表一種 Linux 支持的體系結(jié)構(gòu),例如 i386 就是 Intel CPU 與與之相兼容體系結(jié)構(gòu)的子目錄。PC 機(jī)一般都基于此目錄。COPYING 目錄下是 GPL 申

35、明。對(duì)具有 GPL 的源代碼改動(dòng)而形成的程序,或使用 GPL工具產(chǎn)生的程序,具有使用 GPL 發(fā)表的義務(wù),如公開(kāi)源代碼。CREDITS 目錄下是光榮榜。對(duì) Linux 做出過(guò)很大貢獻(xiàn)的一些人的信息。documentation 目錄下是一些文檔,沒(méi)有核代碼,可惜都是 English 的,是對(duì)每個(gè)目錄作用的具體說(shuō)明。drivers 目錄中是系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)程序。它又進(jìn)一步劃分成幾類(lèi)設(shè)備驅(qū)動(dòng),. . . . 9 / 25每一種有對(duì)應(yīng)的子目錄,如聲卡的驅(qū)動(dòng)對(duì)應(yīng)于 drivers/sound; block 下為塊設(shè)備驅(qū)動(dòng)程序,比如 ide(ide.c) 。如果你希望查看所有可能包含文件系統(tǒng)的設(shè)備是如

36、何初始化的,你可以看 drivers/block/genhd.cdevice_setup()。它不僅初始化硬盤(pán),也初始化,因?yàn)榘惭b nfs 文件系統(tǒng)的時(shí)候需要網(wǎng)絡(luò)其他: 如, Lib 放置核心的庫(kù)代碼; Net,核心與網(wǎng)絡(luò)相關(guān)的代碼; Ipc,這個(gè)目錄包含核心的進(jìn)程間通訊的代碼; Fs,所有的文件系統(tǒng)代碼和各種類(lèi)型的文件操作代碼,它的每一個(gè)子目錄支持一個(gè)文件系統(tǒng),例如 fat 和ext2。fs 目錄存放 Linux 支持的文件系統(tǒng)代碼和各種類(lèi)型的文件操作代碼。每一個(gè)子目錄支持一個(gè)文件系統(tǒng),如 ext3 文件系統(tǒng)對(duì)應(yīng)的就是 ext3 子目錄。include 目錄包括編譯核心所需要的大部分頭文件,

37、例如與平臺(tái)無(wú)關(guān)的頭文件在include/linux 子目錄下,與 intel cpu 相關(guān)的頭文件在 include/asm-i386 子目錄下,而include/scsi 目錄則是有關(guān) scsi 設(shè)備的頭文件目錄10。init 目錄包含核心的初始化代碼(不是系統(tǒng)的引導(dǎo)代碼) ,有 main.c 和Version.c 兩個(gè)文件。這是研究核心如何工作的好起點(diǎn)。ipc 目錄包含了核心進(jìn)程間的通信代碼。Kernel 核管理的核心代碼,此目錄下的文件實(shí)現(xiàn)了大多數(shù) linux 系統(tǒng)的核函數(shù),其中最重要的文件當(dāng)屬 sched.c;同時(shí)與處理器結(jié)構(gòu)相關(guān)代碼都放在 arch/*/kernel 目錄下。lib

38、目錄包含了核心的庫(kù)代碼,不過(guò)與處理器結(jié)構(gòu)相關(guān)的庫(kù)代碼被放在arch/*/lib/目錄下。MAINTAINERS 目錄存放了維護(hù)人員列表,對(duì)當(dāng)前版本的核各部分都有誰(shuí)負(fù)責(zé)。Makefile 目錄第一個(gè) Makefile 文件。用來(lái)組織核的各模塊,記錄了個(gè)模塊間的相互這間的聯(lián)系和依托關(guān)系,編譯時(shí)使用;仔細(xì)閱讀各子目錄下的 Makefile 文件對(duì)弄清各個(gè)文件這間的聯(lián)系和依托關(guān)系很有幫助。mm 目錄包含了所有獨(dú)立于 cpu 體系結(jié)構(gòu)的存管理代碼,如頁(yè)式存儲(chǔ)管理存的分配和釋放等。與具體硬件體系結(jié)構(gòu)相關(guān)的存管理代碼位于 arch/*/mm 目錄下,例如arch/i386/mm/Fault.c 。modul

39、es 目錄存放了已建好的、可動(dòng)態(tài)加載的模塊文件目錄,是個(gè)空目錄,用于存放編譯時(shí)產(chǎn)生的模塊目標(biāo)文件。net 目錄里是核心的網(wǎng)絡(luò)部分代碼,其每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面。ReadMe 目錄里是核心與其編譯配置方法簡(jiǎn)單介紹。REPORTING-BUGS 目錄里是有關(guān)報(bào)告 Bug 的一些容。Rules.make 目錄里是各種 Makefilemake 所使用的一些共同規(guī)則。scripts 目錄包含用于配置核心的腳本文件等。一般在每個(gè)目錄下都有一個(gè).depend 文件和一個(gè) Makefile 文件。這兩個(gè)文件都是. . . . 10 / 25編譯時(shí)使用的輔助文件。仔細(xì)閱讀這兩個(gè)文件對(duì)弄清各個(gè)文件之間的

40、聯(lián)系和依托關(guān)系很有幫助。另外有的目錄下還有 Readme 文件,它是對(duì)該目錄下文件的一些說(shuō)明,同樣有利于對(duì)核源碼的理解。3.3 LINUX 源代碼的安裝1)linux 源代碼包位于本書(shū)附帶光盤(pán) CD2linux Source 目錄,文件名為 linux-dist-20040408.tar.gz,拷貝該文件所在目錄所有文件到 Cygwin/tmp 文件夾下解壓 Linux 源代碼包,執(zhí)行如下命令:mkdir /usr/local/srccd /usr/local/srctar xzvf /tmp/uClinux-dist-20040408.tar.gz命令執(zhí)行結(jié)束時(shí)若提示:tar: Error

41、exit delayed from previous errors上述錯(cuò)誤提示為正?,F(xiàn)象,可以忽略。解壓完畢后,在/usr/local/src 下面會(huì)有一個(gè)文件夾 uClinux-dist 存放源代碼,以后的操作均在此目錄下進(jìn)行19。注意:linux 官方 Linux 源代碼最新版本的下載地址為:./pub/linux/dist ,源代碼包名稱(chēng)為 linux-dist-20040408.tar.gz。2)linux 源文件修改安裝完 linux 源代碼,為了在 Embest EduKit44b0 上運(yùn)行,需要為修改源代碼,這里我們提供了兩個(gè)補(bǔ)丁文件 linux040408.E

42、duKit44b0.patch 和linux040408.EduKit44b0.jffs2.patch。這兩個(gè)補(bǔ)丁文件位于本書(shū)附帶光盤(pán) linux Source 目錄下。將補(bǔ)丁文件 linux040408.EduKit44b0.patch 拷貝到 cygwintmp 目錄下,執(zhí)行命令:cd /usr/local/src/uClinux-distpatch p1 /tmp/uinux040408.EduKit44b0.patch如果要使用 jffs2 文件系統(tǒng),則將補(bǔ)丁文件linux040408.EduKit44b0.jffs2.patch 拷貝到 cygwintmp 目錄下,執(zhí)行命令:cd /

43、usr/local/src/uClinux-distpatch p1 source/tmp/edukit-2410/set_env_linux.sh$cd $ workdir/examples/0504_test-eeprom$make clean$make$make ifstall下載應(yīng)用程序# cd/tar#ifconfig dth0 90#tftp)g 1-r./test-iic_1./ test-iic修改文件屬性修改 test-iic 程序的屬性,使其擁有可執(zhí)行屬性,執(zhí)行以下命令:. . . . 16 / 25#chmod+x te

44、st-iic3)觀察實(shí)驗(yàn)結(jié)果(1) 讀操作:讀 EEPROM 容之前,首先設(shè)置要讀取的 EEPROM 容的數(shù)據(jù)訪問(wèn)地址,然后再執(zhí)行讀操作。一次讀操作可以讀取連續(xù)地址空間的一塊數(shù)據(jù),但讀取的長(zhǎng)度不能超出 EEPROM 的容量圍。程序代碼如下:/*設(shè)置器件的部數(shù)據(jù)訪問(wèn)地址*/Ioct1(fd, I2C_SET_DATA_ADDR,0);/*讀 SIZE 個(gè)字節(jié)*/Read (fd,r_buf,SIZE);(2) 寫(xiě)操作: 在寫(xiě) EEPROM 之前,同樣先要設(shè)置準(zhǔn)備要寫(xiě)到的 EEPROM 部的數(shù)據(jù)地址,然后再執(zhí)行寫(xiě)操作。寫(xiě)操作一次最多可以寫(xiě)入一個(gè)頁(yè)的數(shù)據(jù),一次寫(xiě)入超過(guò)頁(yè)邊界的數(shù)據(jù)會(huì)被丟棄。每執(zhí)行一次

45、寫(xiě)操作,根據(jù)不同的 EEPROM 器件,需要適當(dāng)做一些延時(shí)。使 EEPROM 器件把剛剛接收到的數(shù)據(jù)寫(xiě)入非易失性記憶體中,AT24C04 需要延時(shí)510MS。程序代碼如下:/*設(shè)置器件的部數(shù)據(jù)訪問(wèn)地址 */Ioct1(fd, I2C_SET_DATA_ADDR,0);Write(fd,&w_buf,PAGE_SIZE);/* 延時(shí) */Usleep(10*1000);(3)關(guān)閉設(shè)備:讀/寫(xiě)操作完成后,需要關(guān)閉設(shè)備,關(guān)閉設(shè)備與關(guān)閉普通文件的操作類(lèi)似,執(zhí)行 close()即可。程序代碼如下: Close(fd);4.3 設(shè)計(jì)參考程序/*文件:test-iic.c*說(shuō)明:iic bus te

46、st example,read from or write to EEPORM*注釋?zhuān)簆rogram modify,Embest R.X.huang .2005.06.05*#include #include #include #include #include #include . . . . 17 / 25/* control code */#define I2C_SET_DATA_ADDR 0X0601#define I2C_SET_BUS_CLOCK 0X0602/* AT24C04N EEPROM definition */#define SLAVE_ADDR 0X50#define

47、 PAGE_NUM 1#define PAGE_SIZE 16/* buffer*/Char w_bufPAGE_NUM* PAGE_SIZE;Char r_bufPAGE_NUM* PAGE_SIZE;Int main(int argc,char* * argv) int i.fd; static char * driver =”/dev/i2c/0”; printf(“EEPROM Read/Write Example base on Linux.n”);/* open device */fd= open(driver,0_RDWR);/* set AT24C04N slave addre

48、ss (0 xa0 1)*/Ioct1(fd,I2C_SLAVE_FORCE,SLAVE_ADDR);/* set i2c bus clock 250KHZ */Ioct1(fd,I2C_SET_BUS_CLOCK,250*1000);/* initialize write buffer */Printf(“write random daten”);Srand(time(NULL);For (i=0;i PAGE_NUM* PAGE_SIZE;i+) w_bufi=rand()%oxff;for (i=0;i=0;i-) /* AT24C04N inner data access addres

49、s */ Ioct1(fd, I2C_SET_DATA_ADDR,i*PAGE_SIZE); Write(fd,&w_bufi*PAGE_SIZE,PAGE_SIZE);/* delay some time for write nonvolatile memory. */ Usleep(10*1000);/* read data from AT24CO4N EEPROM */Printf(“Read daten”);for (i=0;i iPAGE_NUM;i+)/* AT24C04N inner data access address */Ioct1(fd, I2C_SET_DATA

50、_ADDR,i*PAGE_SIZE);Read (fd,&r_bufi*PAGE_SIZE,PAGE_SIZE);/* printf data */for (i=0;i tftp-g 1-r./i2c.o-l./i2c.o#insmod i2c.o#lsmod Module size used by Not taintedI2c 2672 0(unused) 然后,再執(zhí)行下載到 linux 系統(tǒng)的 test-iic 測(cè)試程序,并在輸入終端觀察結(jié)果。本程序是通過(guò)往 EEPROM 里寫(xiě)入一頁(yè) 16 字節(jié)數(shù)據(jù),并讀出比較,檢測(cè)是否一致。程序如果正確運(yùn)行,可以看到以下信息輸出:#./ test-iic./ test-iiceeprom read/Write Example base on Linux.Write random date.95Read da

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論