<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0
    嵌入式開發網站集錦!

    國內站點:

    電子設計信息網,盡管是個業界新秀,但潛力無量!這里能帶給你無限精彩和希望!
    http://www.edires.net/
    華恒公司的主頁,里面有很多的相關資料,有待大家去發現
    http://www.hhcn.com/chinese/embedlinux-res.html
    SkyEye嵌入式硬件仿真項目
    www.skyeye.org
    http://gro.clinux.org/projects/skyeye/
    公社的SkyEye項目專欄
    http://www.linuxfans.org/nuke/modul...=viewforum&f=58
    Pday水清木華,一個國內看嵌入式新聞的好地方!
    http://www.pday.com.cn/
    中國單片機公共實驗室
    http://www.bol-system.com/
    中國Linux論壇的嵌入式版,有很多開發板原理圖的資料
    http://openarm.linuxforum.net/
    嵌入開發網
    http://www.embed.com.cn/
    微芯力科技
    http://www.winsilicon.com
    驅動開發網之嵌入式版塊,挺綜合的一個網站
    http://www.driverdevelop.com/index.php

    國外站點

    Linux設備網站,由Rick Lehrbaum創建和維護,是一個嵌入式Linux入門網站,其中包含嵌入式Linux行業的每日新聞、完整系列的快速參考指南、由重要開發者撰寫的大量文章,還包括一個交互論壇。
    http://www.linuxdevices.com/
    下載嵌入式Linux交叉編譯工具鏈的好地方——SnapGear Embedded Linux Distribution Home Page
    http://www.snapgear.org/snapgear/index.html
    http://www.uclinux.org/pub/uClinux/...lf-tools/gcc-3/
    嵌入式Linux聯盟(ELC),一個非盈利性的廠商中立的同業工會,其目標是在整個嵌入式、應用和設備市場中發展和推廣Linux。
    www.embedded-linux.org
    Beyond Logic公司主頁,提供了許多嵌入式Linux系統開發的資料。
    http://www.beyondlogic.org
    嵌入式Linux期刊(ELJ,Embedded Linux Journal),主要關注Linux和其他開源軟件在嵌入式系統中的應用。 其中有很多業界領導者為ELJ撰寫文章。
    embedded.linuxjournal.com
    有幾本寫嵌入式Linux系統的書
    http://www.embeddedlogic.com/ELSweb/booklinks.html
    有關PowerPC體系的嵌入式
    www.mvista.com
    www.denx.de/e/index1.php
    IXP4XX Open Source Developers Guide
    http://ixp4xx-osdg.sourceforge.net/
    uClinux/ARM項目
    http://adam.kaist.ac.kr/~hschoe/notice.html
    個人主頁

    一個業余愛好者代禮周的個人主頁,都是實踐出來的
    http://www.lomx.net/index.htm
    D_J嵌入式個人主頁,有很多資料!
    http://staff.ustc.edu.cn/~wangzhuo/index.html
    renbagshoes的個人主頁,有些資料可能你會用的到!
    http://timity.nease.net

    嵌入式Linux操作系統
    小型化的嵌入式Linux版本
    uClinux —— 在沒有 MMU 的系統上運行的 Linux。目前支持 Motorola 68K、MCF5206 和MCF5207 ColdFire 微處理器。
    http://www.uclinux.org/index.html
    Etlinux —— 設計用于在小型工業計算機,尤其是 PC/104 模塊上運行的 Linux 的完全分發版
    http://www.prosa.it/etlinux/index.html
    Tiny Linux ── 可以運行在 386 上的 Linux 分發版。
    http://tiny.seul.org/en/
    ThinLinux ── 面向專用的照相機服務器、X-10 控制器、MP3 播放器和其它類似的嵌入式應用的最小化的 Linux 分發版。
    www.thinlinux.org
    LRP(Linux Route Project)
    http://www.linuxrouter.org
    Peeweelinux一個小的嵌入式Linux發行版
    http://freshmeat.net/projects/peeweelinux
    具有實時擴展功能的嵌入式Linux版本
    RT-Linux主頁
    http://www.fsmlabs.com
    http://www.rtlinux.com
    RTAI
    http://www.rtai.org

    嵌入式GUI

    Microwindows 由Century Software的CEO Greg Haerr主持開發的一個公開源碼(LGPL)的項目。Microwindows致力于為一些小型設備和平臺提供現代圖形窗口環境。 Microwindows支持許多硬件平臺,移植性很強。Microwindows的主要目的之一便是運行在嵌入式Linux上,并且提供了基于 Win32/X的兩套API接口。
    http://www.microwindows.org
    http://microwindows.org
    MiniGUI 由原清華大學教師魏永明先生開發,是中國人做的得較好的自由軟件之一。MiniGUI 是一種面向嵌入式系統或者實時系統的公開源碼(LGPL)的圖形用戶界面支持系統。它主要運行于Linux控制臺,實際可以運行在任何一種具有POSIX 線程支持的POSIX兼容系統上。
    http://www.minigui.org
    飛漫軟件的MiniGUI項目
    http://www.minigui.com/company/cindex.shtml
    Qt/Embedded 是著名的QT庫開發商Trolltech正在進行的面向嵌入式系統的QT版本。Qt/Embedded對于各種硬件接口到 GUI工具包提供了完整的圖形棧。Qt/Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11庫的。 Qt/Embedded是公開源碼(LGPL)項目。
    http://www.trolltech.com
    OpenGUI基于一個用匯編實現的x86圖形內核,提供了一個快速的、32位的、高層的C/C++圖形接口。OpenGUI也是一個公開源碼(LGPL)項目。OpenGUI提供了二維繪圖原語,消息驅動的API和BMP文件格式支持。
    http://www.tutok.sk/fastgl
    PicoGUI 是一個可以工作在包括手持式設備等各種硬件上的小型的、可移植的、基于客戶/服務器結構的GUI。同X Window系統一樣,它具有客戶—服務器結構的靈活性,但又不同于X Window系統,它將字體、BMP文件、控件以及一些應用程序所需要的其它的一些資源直接集成在服務器。雖然減少了系統的靈活性,但在速度上有了很大的 提高,并且減小了程序大小。
    http://picogui.org
    Tiny-X是一個為嵌入式系統而開發的緊縮型的X Window服務器。它由SuSE贊助,由XFree86的核心成員Keith Packard開發。Tiny-X的目標是可以在小內存或幾乎無內存的情況下良好運行。
    http://www.pps.jussieu.fr/~jch/software/kdrive.html
    PIXIL提供嵌入式在高級因特網中應用程序的應用。它雖然是為商業化準備的,但它提供GPL協議下的版本,區別是沒有技術支持。
    http://www.pixil.org
    NxZilla - Mozilla on NanoX
    http://nxzilla.sourceforge.net
    Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."
    http://www.libsdl.org/index.php
    GtkFB: GTK+ for the Linux Framebuffer
    http://www.linuxdevices.com/articles/AT9024868021.html

    嵌入式Linux與Java

    Java 2 Micro Edition(J2ME官方站點)
    http://www.javasoft.com/j2me/
    waba為小設備提供一個編程平臺。它被定義為一種語言,一個虛擬機,一個類文件格式以及功能類的設置。
    http://wabasoft.com/products.shtml
    Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.Kaffe is a great choice as a base for virtual machine education and/or research, or if you need a virtual machine as an integral component of an open source or free software Java distribution.
    http://www.kaffe.org
    Wonka(一個java虛擬機,超小)
    http://www.acunia.com/wonka


    嵌入式綜合性網站 http://www.eg3.com (英文)
    豐富的產品介紹、豐富的鏈接(嵌入式領域)。
    http://altair.ihep.su/~kulemzin/index.html (英文)
    為嵌入式開發人員提供大量的信息資源。
    http://www.embedded-directory.com (英文)
    嵌入式產品、工具介紹,包括硬件、軟件、開發工具、開發服務商、測試設備、單板、處理器、信號處理器、分析儀等。
    http://www.siliconpenguin.com (英文)
    嵌入式Linux資源網站
    http://cs-www.bu.edu/pub/ieee-rts/Home.html (英文)
    IEEE計算機協會實時系統技術分會主頁,提供該組織研究文檔、實時系統研究組織名錄以及書刊、雜志、產品的鏈接。
    http://www.es-mag.com (英文)
    歐洲關于嵌入式設計的雜志《EmbeddedSystems》網站
    http://www.esofta.com (英文)
    按處理器提供嵌入式產品、工具索引介紹。
    奔微實時操作系統--KarlOS微內核
    KarlOS 是一種小型且可靠的實時內核,特別是針對嵌入式系統而設計。內核自身能被非常靈活地修改到任一平臺,因為它用于硬件抽象層(HAL)來隱藏任一硬件的特定功能,以至于可以協調內核的功能。同時KarlOS象一些傳統的內核,用于平臺抽象層(PAL)技術。
    http://www.embeddedtechnology.com (英文)
    包含大量的嵌入式產品、開發工具、產品提供商介紹。
    http://www.realtime-info.com (英文)
    實時系統綜合性信息網站,《Real-Time Magazine》雜志主辦者。提供實時操作系統及其它相關產品購買指導,實時技術研究組織機構介紹,業界新聞和重要活動消息發布,《Real-Time Magazine》雜志網上介紹。
    http://www.electronic-forecast.com (英文)
    提供嵌入式工業市場、產品研究信息,向用戶提供產品購買指導。
    http://www.primenet.com/~magpub/ (英文)
    實時系統雜志網站,內容廣泛。
    http://www.ifi.unizh.ch/groups/ailab/links/embedded.html (英文)
    提供大量的嵌入和實時系統鏈接資源。
    http://www.forthinc.demon.co.uk/info/links/index.htm (英文)
    提供豐富的嵌入式開發鏈接。
    http://www.embedded-systems-messe.de (英文)
    嵌入式產品展覽會Internet發布網站。
    http://www.embeddedinternet.com (英文)
    嵌入式產品展覽Internet發布。
    Windows CE下載區
    微軟最新Windows CE.Net 4.1下載試用。
    http://www.embedded.com (英文)
    美國一家關于嵌入式系統的綜合性網站,《EMBEDDED SYSTEMS》雜志主辦者。提供嵌入式產品和工具購買指導,嵌入式產品Demo下載,業界新聞及各類活動報道,包含大量的資源鏈接和嵌入式開發文章,以及豐富的業界廣告。

    嵌入式Linux 嵌入式LINUX硬件板卡供應商
    嵌入式LINUX硬件板卡供應商嵌入式LINUX開發套件供應商

    嵌入實時操作系統 http://linux-embedded.com/links.php3 (英文)
    提供嵌入式Linux鏈接
    http://www.cs.umd.edu/~fwmiller/etc/realtime/code.html (英文)
    實時軟件概要

    嵌入論壇 白云黃鶴站
    白云黃鶴站嵌入版,國內較熱鬧的嵌入開發論壇,很值得拜訪
    科大瀚海風云嵌入式論壇
    中國科技大學嵌入式論壇
    星運網絡-----電子工程師論壇
    電子相關方面論壇,目前內容較少

    民間團體 嵌入式Linux
    主要是關于嵌入式Linux的內容
    北京 Linux 俱樂部
    主要是關于linux的內容
    清華AKA
    主要是關于linux的內容,有一些嵌入式系統的介紹
    操作系統開發者
    主要是關于linux的內容

    鏈接資源 可編程邏輯器件網站
    可編程邏輯器件網站致力于PLD/FPGA及VHDL技術在中國的推廣。
    電子網站之家
    各地各類電子網站!電子網站大全!
    IPANEL 嵌入式瀏覽器網站
    詳細介紹IPANEL嵌入式瀏覽器性能指標,用途等

    科研團體 中國單片機公共實驗室
    內容主要集中在8位單片機,有一些值得一看的資料
    中科院計算所RTOS主頁
    嵌入式系統軟件研究組的主頁,內容不多,但值得一看

    開發工具 http://www.idiom.com/free-compilers/ (英文)
    免費編譯器目錄
    http://www.delorie.com/gnu/docs/gcc/gcc_44.html (英文)
    介紹用GNU CC構造交叉編譯器
    http://www.gnu.org (英文)
    GNU 自由軟件組織

    個人主頁 iMCU--網絡單片機
    8月20日,全面改版,新版正式運行。目前尚有部分功能未完成。永久域名:http://imcu.126.com
    電子網站大全
    電子網站大全
    開放的ColdFire網站 (英文)
    完全開放原碼,電路圖的個人ColdFire網站。包括Free的TCPIP原碼,uClinux和uCOS操作系統等等
    嵌入式系統及器件論壇
    內容少了點
    51單片機世界
    網站內容與網站名稱描述相同,首頁鏈接了大部分內容
    漢東單片機實驗室
    關于單片機的個人網站中,是目前內容較豐富的一個
    嵌入式RTOS
    內容主要集中在嵌入式實時操作系統
    單片機家園
    一個單片機方面的個人網站。
    嵌入式Linux個人網站
    內容較少,僅一些文章和資源推薦!
    電子工程師園地
    有一些單片機和處理器的內容,主要是8051系列和X86系列,嵌入領域內容不多,內容有點雜
    嵌入系統
    主要內容包括MCS51\96系列和X86系列,BIOS的網絡資源,簡單的實時操作系統介紹,還有部分開發人員聯合開發的實時操作系統介紹
    電子工程師
    內容主要集中在C51系列單片機
    美國一位大學副教授的個人主頁 (英文)
    關于嵌入式處理器方面的個人工作項目介紹,有很多源碼。

    單片機 電子世紀
    電子基礎 mcu技術 mcu論壇 軟件下載 數據手冊 幫你開發 mcu解密 程序設計 校友摯友 招聘&人才 電子英語
    單片機技術網
    介紹單片機技術,開發和應用的專業網站,有眾多應用文章,電子網站聯接,產品項目介紹和部分產品網上銷售等。內容包括單片機,工業控制,儀器儀表,信息家電,IC卡應用,防盜監控等

    處理器類 http://www.bdti.com (英文)
    提供大量DSP處理器信息。
    http://www.mdronline.com/events/epf99/ (英文)
    嵌入式處理器論壇。

    產品信息 聞亭公司DSP產品
    主要是dsp仿真器。
    奔微實時操作系統--KarlOS微內核
    KarlOS是一種小型且可靠的實時內核,特別是針對嵌入式系統而設計。內核自身能被非常靈活地修改到任一平臺,因為它用于硬件抽象層(HAL)來隱藏任一硬件的特定功能,以至于可以協調內核的功能。同時KarlOS象一些傳統的內核,用于平臺抽象層(PAL)技術。
    北京靈思信息系統有限公司
    定位于嵌入式linux技術服務和提供解決方案的公司
    廣州中杰嵌入式計算平臺
    提供基于嵌入式硬件平臺的產品級到系統級的完整解決方案,以滿足用戶嵌入式應用需求。

    測試工具 http://www.rstcorp.com/marick/faqs/tools.htm (英文)
    分類介紹各種測試工具產品。
    http://www.stqe.net (英文)
    軟件測試資源網站。
    http://www.testingstuff.com (英文)
    一個介紹了大量測試工具的個人網站。
    http://www.methods-tools.com/tools/frames_testing.html (英文)
    提供大量的測試工具列表,包含簡介與鏈接。



    1. The Linux Kernel Module Programming Guide
    http://www.dirac.org/linux/writing/lkmpg/2.6/lkmpg-2.6.0.html
    2. Linux Device Drivers, 3rd Edition
    By Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini
    http://linuxdriver.co.il/ldd3/
    3. Writing Linux kernel modules
    http://www.staerk.de/thorsten/index.php/Writing_Linux_kernel_modules


    1. Building Embedded Linux System(英文)
    http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=87

    2. 構建嵌入式Linux系統(中文)
    http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=51

    轉自:http://blog.chinaunix.net/u/21948/showart_354391.html

    一、門戶網站

    1 ChinaUnix
    網址: http://www.chinaunix.net
    描述: C版塊和shell版塊很不錯
    C/C++論壇:http://bbs.chinaunix.net/forumdisplay.php?fid=23
    shell論壇:http://bbs.chinaunix.net/forumdisplay.php?fid=24
    man文檔:http://man.chinaunix.net

    2 中國Linux論壇
    網址: http://www.linuxforum.net/
    描述: 嵌入式Linux技術提高
    Linux嵌入技術:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=embedded
    Linux內核技術:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=linuxK
    Linux設備驅動程序:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=driver
    C/C++編程版:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=program

    3 The ARM Linux Project
    網址: http://www.arm.linux.org.uk/
    描述: Linux for all ARM based machine

    4 ARM官方網站
    網址: http://www.arm.com/
    描述: 提高ARM水平的最佳地方。文檔和技術筆記均為英語,慢慢鍛煉。
    Document:http://www.arm.com/documentation/
    Software:http://www.arm.com/community/software.php?PageTitle=Software&Categories=4&display=3

    5 The Linux Kernel Archives
    網址: http://www.kernel.org/
    描述: Linux Kernel官方網站

    6 IBM developerWorks
    網址: http://www-128.ibm.com/developerworks/cn/
    描述: 技術文檔低中高級很豐富,作為系統學習的參考補充。

    7 SourceForge
    網址: http://sourceforge.net/
    描述: 開源軟件的入口。
    U-boot:http://sourceforge.net/projects/uboot/

    8 Linux fans
    網址: http://www.linuxfans.org/nuke/index.php
    描述: 國內很出名的Linux站點,人氣很高。

    二、技術博客

    1 陳莉君
    網址: http://www.lupaworld.com/26540
    http://www.kerneltravel.net/
    描述: 操作系統(Linux)研究。《深入理解Linux內核》的譯者。kerneltravel里面關于kernel有很多精彩的文章,入門深入都可以在這里找到資料,可以討論提高。

    2 飛翔,嵌入式Linux
    網址: http://blog.chinaunix.net/u/30686/index.html
    描述: 嵌入式Linux方向

    3 cnsLinux
    網址: http://blog.chinaunix.net/u/13329/index.php
    描述: Linux與程序設計

    4 todaygood
    網址: http://blog.chinaunix.net/u/24474/
    描述: 嵌入式Linux方向

    5 嵌入式Linux博客圈
    網址: http://blog.chinaunix.net/group/group_25.html
    描述: 我建立的嵌入式Linux方向的博客圈

    6 Richard Stevens
    網址: http://www.kohala.com/start/
    描述: Richard Stevens的個人主頁。

    三、資料下載

    1 Free Datasheet PDF Download
    網址: http://www.ic-on-line.cn/
    描述: 硬件芯片Datasheet可以在此下載

    四、開發板廠商

    1 北京恒頤
    網址: http://www.hyesco.com/

    2 華恒科技
    網址: http://www.hhcn.com/chinese/cnindex.html

    3 廣州聯智
    網址: http://www.devicegate.com/

    4 周立功單片機
    網址: http://www.zlgmcu.com/home.asp

    五、開發工具

    1 GNU AS: Using AS---the GNU Assembler
    http://sourceware.org/binutils/docs-2.16/as/index.html#Top

    2 GNU LD: Using LD---the GNU Linker
    http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_mono/ld.html

    3 GNU MAKE
    http://www.gnu.org/software/make/manual/make.html

    4 GNU GCC: Using the GNU Compiler Collection
    http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/

    5 GNU GDB: Debugging with GDB
    http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html

    6 GNU CVS
    http://ximbiot.com/cvs/manual/

    7 VIM
    英文:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
    中文:http://vcd.gro.clinux.org/doc/usr_toc.html

    8 幾本重要的書
    《Using and Porting the GNU Compiler Collection》
    http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc.html
    《Linkers and Loaders》
    http://www.iecc.com/linker/

    9 交叉編譯工具鏈
    http://www.codesourcery.com/gnu_toolchains/arm
    備注:CodeSourcery公司提供的GNU Tools交叉編譯工具,性能優越。我現在使用的是arm-2007q1,編譯了U-boot-1.2.0,并且成功移植到s3c2410(2007-09-19)

    六、程序設計

    1 《The Art of UNIX Programming》
    http://www.faqs.org/docs/artu/

    2 《UNIX Programming FAQ》(中文版)
    http://www.linuxforum.net/books/upfaq/book1.htm

    PS: 這是從super兄(實際上只發過一次郵件交流過哦)的博客上摘錄的,他的博客地址是(http://blog.chinaunix.net/u/21948/),主要是嵌入式方面的日志。記得剛上CU的時候因為找嵌入式方面的資源,跑到他的博客上,發現他也在學嵌入式,不過到現在他長進很大,可我還只是學了毛皮。回想起來,可能是這段時間東學學、西弄弄,沒有一個主線,所以得靜下心來好好學習和研究啦。


    1. HOWTO BUILD A CROSS COMPILER WITH EMERGE !(gentoo)

    http://dev.gentoo.org/~vapier/CROSS-COMPILE-HOWTO

    2. Very Simple Guide for Building Cross Compilers Tips(Recommend)

    http://www.ifp.uiuc.edu/~nakazato/tips/xgcc.html

    3.cross compiler mini howto

    http://linux.bytesex.org/cross-compiler.html

    4. How to build a cross compiler for Linux/MIPS

    http://www.village.org/villagers/imp/build.html

    5. Building a cross-compiler

    http://www.nongnu.org/thug/cross.html

    6. Cross Compiling Gcc for PowerPC(like 2)

    http://www.pages.drexel.edu/~sg64/stuff/cross-compile.htm

    7. ARM cross-compiling howto(Recommend)

    http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html

    8. Building and Testing gcc/glibc cross toolchains

    http://www.kegel.com/crosstool/

    9. Building the x86_64 cross-compiling toolchain(Recommend)

    http://home.ix.netcom.com/~ejohns/glfs-amd64/toolchain.html

    10. Building a GCC Cross Compiler for the PowerPC

    http://www.cs.duke.edu/~irwin/gcc_ppc.html

    11. The PARISC-Linux Cross Compiler How TO

    http://www.parisc-linux.org/toolchain/PA-Linux-XC-HOWTO-01.html

    12. Cross compiling a 64-bit PowerPC Linux Kernel

    http://wiki.ppckernel.org/w/Cross_compiling_a_64-bit_PowerPC_Linux_Kernel

    13. x86 -> Alpha Cross Compiler HOWTO(Recommend)

    http://www.cse.unsw.edu.au/~cgray/crossdev/x86-alpha-xcc.html

    14. HOWTO Cross Compile(gentoo)

    http://gentoo-wiki.com/HOWTO_Cross_Compile

    15. Building a GNU/Linux ARM Toolchain (from scratch)

    http://www.schnozzle.org/~coldwell/toolchain/



    [轉帖] 嵌入式Linux驅動程序開發要點

    轉自:一塌糊涂的BLOG

    在Linux操作系統下有3類主要的設備文件類型:塊設備、字符設備和網絡設備。這種分類方法可以將控制輸入/輸出設備的驅動程序與其他操作系統軟件分離開來。
    字 符設備與塊設備的主要區別是:在對字符設備發出讀/寫請求時,實際的硬件I/O一般緊接著發生。塊設備則不然,它利用一塊系統內存作為緩沖區,若用戶進程 對設備的請求能滿足用戶的要求,就返回請求的數據;否則,就調用請求函數來進行實際的I/O操作。塊設備主要是針對磁盤等慢速設備設計的,以免耗費過多的 CPU時間用來等待。網絡設備可以通過BSD套接口訪問數據。
    每個設備文件都有其文件屬性(c/b),表示是字符設備還是塊設備。另外每個文件都 有2個設備號,第一個是主設備號,標識驅動程序;第二個是從設備號,標識使用同一個設備驅動程序的、不同的硬件設備。設備文件的主設備號必須與設備驅動程 序在登記時申請的主設備號一致,否則用戶進程將無法訪問驅動程序。

    系統調用時操作系統內核與應用程序之間的接口,設備驅動程序是操作系統內核與機器硬件之間的接口。設備驅動程序是內核的一部分,它完成以下功能:
    ●對設備初始化和釋放
    ●把數據從內核傳送到硬件和從硬件讀取數據
    ●讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據
    ●檢測和處理設備出現的錯誤

    MTD(Memory Technology Device)設備是閃存芯片、小型閃存卡、記憶棒之類的設備,它們在嵌入式設備中的使用正在不斷增加。MTD驅動程序是在Linux下專門為嵌入式環境 開發的新的一類驅動程序。相對于常規塊設備驅動程序,使用MTD驅動程序的優點在于他們能更好的支持、管理給予閃存設備,有基于扇區的擦除和讀/寫操作的 更好的接口。

    驅動程序結構
    Linux的設備驅動程序可以分為3個主要組成部分:
    1. 自動配置和初始化子程序,負責監測所要驅動的硬件設備是否存在和能否正常工作。如果該設備正常,則對這個設備及其相關的設備驅動程序需要的軟件狀態進行初始化。這部分驅動程序僅在初始化時被調用一次。
    2. 服務于I/O請求的子程序,又稱為驅動程序的上半部分。調用這部分程序是由于系統調用的結果。這部分程序在執行時,系統仍認為是與進行調用的進程屬于同一 個進程,只是由用戶態變成了核心態,具有進行此系統調用的用戶程序的運行環境,因而可以在其中調用sleep()等與進行運行環境有關的函數。
    3. 中斷服務子程序,又稱為驅動程序的下半部分。在Linux系統中,并不是直接從中斷向量表中調用設備驅動程序的中斷服務子程序,而是由Linux系統來接 收硬件中斷,再由系統調用中斷服務子程序。中斷可以在任何一個進程運行時產生,因而在中斷服務程序被調用時,不能依賴于任何進程的狀態,也就不能調用任何 與進程運行環境有關的函數。因為設備驅動程序一般支持同一類型的若干設備,所以一般在系統調用中斷服務子程序時,都帶有一個或多個參數,以唯一標識請求服 務的設備。

    在系統內部,I/O設備的存/取通過一組固定的入口點來進行,這組入口點是由每個設備的驅動程序提供的。具體到Linux系統,設備驅動程序所提供的這組入口點由一個文件操作結構來向系統進行說明。file_operation結構定義于linux/fs.h文件中。

    struct file_operation{
    int (*lseek)(struct inode *inode, struct file *filp, off_t off, int pos);
    int (*read)(struct inode *inode, struct file *filp, char *buf, int count);
    int (*write)(struct inode *inode, struct file *filp, const char *buf, int count);
    int (*readdir)(struct inode *inode, struct file *filp, struct dirent *dirent, int count);
    int (*select)(struct inode *inode, struct file *filp, int sel_type, select_table *wait);
    int (*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd, unsigned int arg);
    int (*mmap)(void);
    int (*open)(struct inode *inode, struct file *filp);
    int (*release)(struct inode *inode, struct file *filp);
    int (*fasync)(struct inode *inode, struct file *filp);
    };

    file_operation結構中的成員幾乎全部是函數指針,所以實質上就是函數跳轉表。每個進程對設備的操作都會根據major、minor設備號,轉換成對file_operation結構的訪問。
    常用的操作包括以下幾種:
    ●lseek, 移動文件指針的位置,只能用于可以隨機存取的設備。
    ●read, 進行讀操作,參數buf為存放讀取結果的緩沖區,count為所要讀取的數據長度。返回值為負表示讀取操作發生錯誤;否則,返回實際讀取的字節數。對于字符型,要求讀取的字節數和返回的實際讀取字節數都必須是inode-i_blksize的倍數。
    ●write, 進行寫操作,與read類似
    ●readdir, 取得下一個目錄入口點,只有與文件系統相關的設備程序才使用。
    ●select, 進行選擇操作。如果驅動程序沒有提供select入口,select操作會認為設備已經準備好進行任何I/O操作。
    ●ioctl, 進行讀、寫以外的其他操作,參數cmd為自定義的命令
    ●mmap, 用于把設備的內容映射到地址空間,一般只有塊設備驅動程序使用
    ●open, 打開設備準備進行I/O操作。返回0表示打開成功,返回負數表示失敗。如果驅動程序沒有提供open入口,則只要/dev/driver文件存在就認為打開成功。
    ●release, 即close操作。
    在 用戶自己的驅動程序中,首先要根據驅動程序的功能,完成file_operation結構中函數實現。不需要的函數接口可以直接在 file_operation結構中初始化為NULL。file_operation變量會在驅動程序初始化時注冊到系統內部。當操作系統對設備操作時, 會調用驅動程序注冊的file_operation結構中的函數指針。
    Linux對中斷的處理

    在Linux系統里,對中斷的處理是屬于系統核心部分,因而如果設別與系統之間以中斷方式進行數據交換,就必須把該設備的驅動程序作為系統核心的一部分。設備驅動程序通過調用request_irq函數來申請中斷,通過free_irq來釋放中斷。它們被定義為:
    #i nclude <linux/sched.h>
    int request_irq(unsigned int irq,
    void (*handler)(int irq, void dev_id, struct pt_regs *regs),
    unsigned long flags,
    const char *device,
    void *dev_id);
    void free_irq(unsigned int irq, void *dev_id);
    參 數irq表示所要申請的硬件中斷號;handler為向系統登記的中斷處理子程序,中斷產生時由系統來調用,調用時所帶參數irq為中斷號;dev_id 為申請時告訴系統的設備標識;regs為中斷發生時的寄存器內容;device為設備名,將會出現在/proc/interrupts文件里;flag是 申請時的選項,它決定中斷處理程序的一些特性,其中最重要的是中斷處理程序是快速處理程序還是慢速處理程序。快速處理程序運行時,所有中斷都被屏蔽,而慢 速處理程序運行時,除了正在處理的中斷外,其他中斷都沒有被屏蔽。在Linux系統中,中斷可以被不同的中斷處理程序共享。

    作為系統核心的一部分,設備驅動程序在申請和釋放內存時不是調用malloc和free,而代之以調用kmalloc和kfree,它們被定義為:
    #i nclude <linux/kernel.h>
    void *kmalloc(unsigned int len, int priority);
    void kfree(void *obj);
    參數len為希望申請的字節數;obj為要釋放的內存指針;priority為分配內存操作的優先級,即在沒有足夠空閑內存時如何操作,一般用GFP_KERNEL。




    posted on 2007-10-18 14:29 MEYE 閱讀(1770) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 特级精品毛片免费观看| 日韩在线一区二区三区免费视频| 无码少妇精品一区二区免费动态 | 一级一级一片免费高清| 亚洲精品NV久久久久久久久久| 免费精品久久久久久中文字幕| 免费一级毛片清高播放| 国产99久久久久久免费看| 国产成人亚洲精品影院| 你懂得的在线观看免费视频| 亚洲国产精品无码专区在线观看| 在线成人精品国产区免费| 亚洲尹人九九大色香蕉网站| 91精品免费不卡在线观看| 亚洲精品日韩专区silk| 成人爽A毛片免费看| 视频一区在线免费观看| 成人午夜亚洲精品无码网站| 国产成人免费视频| 亚洲av无码不卡久久| 国产午夜免费福利红片| 国产区在线免费观看| 亚洲AV日韩AV永久无码免下载| 永久看日本大片免费35分钟| 中文字幕乱码亚洲精品一区| 亚洲?V无码乱码国产精品| 最近中文字幕免费大全| 亚洲免费视频网址| 四虎影库久免费视频| 国产一区二区免费| 天天爽亚洲中文字幕| 国产成人精品久久亚洲| 亚欧免费视频一区二区三区| 蜜芽亚洲av无码一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 成年人网站在线免费观看| 成年网站免费入口在线观看 | 国产在线jyzzjyzz免费麻豆| 亚洲AV日韩AV无码污污网站| 亚洲国产成人高清在线观看| 成年女人视频网站免费m|