資源描述:
《嵌入式接口技術與linux驅動開發(fā)》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、1.為什么要選擇LINUX:(1)面向服務,網絡功能強大(2)源碼開放,可移植性強(3)有大公司的支持,Intel,IBM,ARM(4)一個全新的世界(5)學術研究必不可少的平臺(源碼、算法、對比實驗……)2.LINUX的驅動程序:(1)LINUX下對外設的訪問只能通過驅動程序,uClinux下可以在應用層直接訪問外設,操作寄存器,但是無法處理中斷,DMA,搶占,原子操作等(2)LIUNX對于驅動程序有統(tǒng)一的接口,以文件的形式定義系統(tǒng)的驅動程序Open,release,read,write,ioctl…(3)驅動程序是內核的一部分,可以使用
2、中斷,DMA等操作注:uClinux是linux2.0核心的分支,是針對沒有MMU管理單元的微控制器,uClinux不是實時操作系統(tǒng)(4)驅動程序需要在用戶態(tài)和內核態(tài)之間傳遞數(shù)據(jù)(5)對于復雜的應用可以考慮是用mmap3.在驅動程序中通過devfs_register()函數(shù)創(chuàng)建設備文件系統(tǒng)的特點;系統(tǒng)啟動的時候mount設備文件系統(tǒng);所有需要的設備節(jié)點都由內核自動管理,/dev目錄下只有掛載的設備。4.設備驅動程序的作用:(1)設備驅動程序將復雜的硬件抽象成一個結構良好的設備,并通過提供統(tǒng)一的程序接口為其它部分提供使用設備的能力和方法。(2
3、)設備驅動程序(應該只是)為系統(tǒng)的其它部分提供各種使用設備的能力,使用設備的方法應該由應用程序決定。5.設備驅動程序是內核代碼的一部分;驅動程序的地址空間是內核的地址空間,應用程序通過操作系統(tǒng)的系統(tǒng)調用執(zhí)行相應的驅動程序函數(shù),中斷則直接執(zhí)行相應的中斷程序代碼。6.linux內核加載過程:通常,linux內核是經過gzip壓縮之后的映像文件(1)bootloader復制壓縮內核到內存空間(2)內核自解壓(3)運行文件7.編譯完成的linux內核在哪里:(1)./vmlinux,elf格式未壓縮(2)arch/arm/boot/compress
4、ed/vmlinux,壓縮以后的elf內核8.在ARM體系結構下,用戶態(tài)對應了ARM的USR模式,內核態(tài)對應了SVC模式、多數(shù)操作系統(tǒng)都把內核和運行在其上的應用程序分為兩個層次管理:“內核態(tài)”和“用戶態(tài)”9.GCC是linux下的編譯器:(1)可以編譯內核,應用程序,bootloader&其它OS(2)ASNIC,GUNC,C99最初linux是一種只可以運行在PC機上免費的UNIX操作系統(tǒng),如今linux已發(fā)展成為一種強大的操作系統(tǒng)10.我們可以使用crosstool,它是一個專門建立編譯工具鏈的腳本,可以在很大程序上簡化我們的工作。11
5、.構建toolchains必須的組件:Linux內核源碼;gcc;glibc;glibc_linuxthreadsPOSIX線程序庫;binutils。Binutils中的常用工具:Addr2line把程序地址轉換為文件名和行號;As主要用來編譯gcc輸出的匯編文件,產生的目標文件由連接器ld連接;Ld連接器,它把一些目標和歸檔文件結合在一起,重定位數(shù)據(jù),并鏈接符號引用;Objcopy把一種目標文件中的內容復制到另一種類型的目標文件中;Objdump顯示一個或者更多目標文件的信息;Readelf顯示elf格式可執(zhí)行文件的信息;Strip丟棄
6、目標文件中的全部或者特定符號。12.linux內核被設計為必須使用GNU的C編譯器gcc來編譯,而不是任何一種C編譯器都可以使用。13.linux內核主體使用GUNC。linux內核源碼龐大,結構復雜:(1)對linux2.4內核的統(tǒng)計:1萬個文件,6百萬行代碼(2)對linux2.6內核的統(tǒng)計:1.5萬個文件,6百萬行代碼內核編程習慣(技巧)不同于應用程序。14.每一個進程(或應用程序)都通過MMU建立獨立尋址空間——用戶空間。一個進程是不可以隨便修改(或者訪問)另一個進程中的數(shù)據(jù)和代碼的。進程之間要想運行數(shù)據(jù)交互,要么經過內核傳遞,要么
7、通過內核映射共享內存。15.linux的設備文件以文件的形式存在/dev目錄設備文件是特殊文件,使用LS/dev-1命令可以看到。主設備號標識設備對應的驅動程序,一個驅動程序可以控制若干個設備,次設備號提供了一種區(qū)分它們的方法,系統(tǒng)增加一個驅動程序就要賦予它一個主設備號,這一賦值過程在驅動程序的初始化過程中。16.設備已經注冊到內核表中,對于設備的訪問通過設備文件(設備文件與設備驅動程序的主設備號匹配),內核會調用驅動程序中的正確函數(shù)。17.給程序一個它們可以請求設備驅動程序的名字,這個名字必須插入到目錄/dev中,并與驅動程序的主設備號和
8、次設備號相連。18.動態(tài)分配的主設備號不能保證總是一樣的無法事先創(chuàng)建設備節(jié)點;可以讀取/proc/devices讀取cat/proc/devices;利用腳本動態(tài)創(chuàng)建設備文件節(jié)點