Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)常用命令和技巧.ppt_第1頁(yè)
Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)常用命令和技巧.ppt_第2頁(yè)
Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)常用命令和技巧.ppt_第3頁(yè)
Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)常用命令和技巧.ppt_第4頁(yè)
Linux驅(qū)動(dòng)開(kāi)發(fā)相關(guān)常用命令和技巧.ppt_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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、Linux驅(qū)動(dòng)程序開(kāi)發(fā)一般相關(guān)命令和技巧,簡(jiǎn)單的驅(qū)動(dòng)程序?qū)嵗?jí)內(nèi)核一般步驟Linux最常見(jiàn)的命令內(nèi)核編程技巧資料和工具,最簡(jiǎn)單的Helloworld驅(qū)動(dòng)程序?qū)嵗K許可證靜態(tài)插入幫助打印機(jī)(健康世界)! n ); 返回0; 靜態(tài)英特爾退出(語(yǔ)音)打印機(jī)(黑色世界)。 返回0; 模塊輸入:模塊輸出:模塊輸出:模塊輸出。 最簡(jiǎn)單的Helloworld驅(qū)動(dòng)程序示例。 這是一個(gè)簡(jiǎn)單的Helloworld驅(qū)動(dòng)程序示例。 其中hello_init是加載驅(qū)動(dòng)程序時(shí)執(zhí)行的函數(shù),即驅(qū)動(dòng)程序條目hello_exit是卸載驅(qū)動(dòng)程序時(shí)執(zhí)行的函數(shù),即驅(qū)動(dòng)程序的出口。 如果在Linux驅(qū)動(dòng)程序中使用printk打印

2、信息,則可以看到在加載和卸載驅(qū)動(dòng)程序時(shí),程序分別打印兩個(gè)語(yǔ)句。 其中,printk包含日志消息級(jí)別。 有關(guān)詳細(xì)信息,請(qǐng)參閱幫助。 Makefile文件,obj-m :=hello world.okerneldir 3360=/lib /模塊/$ (shell uname-r ) /生成pwd 3360=$ $。 模塊模塊安裝: $ (make )-c $ (kerneldir ) m=$ (pwd )模塊安裝清除: ram makefile是定義程序編譯規(guī)則的文件。 第一行表示生成的目標(biāo)代碼,對(duì)應(yīng)于Helloword.c,第二行的標(biāo)頭文件路徑,隨后是生成模塊和安裝模塊的規(guī)則,clean在運(yùn)行m

3、ake clean時(shí)清理代碼生成的臨時(shí)文件您可以看到makefile中嵌入了一些shell命令。 關(guān)于化妝文件的知識(shí),請(qǐng)參照相關(guān)資料。 內(nèi)核升級(jí)的一般步驟1、make menuconfig 2、make 3、make modules_install 4、MK init ramfs-o/boot/initrd-Linux內(nèi)核升級(jí)的一般步驟要執(zhí)行此操作,請(qǐng)使用apt-get install initramfs-tools、module-init-tools (所有操作均以root用戶(hù)權(quán)限執(zhí)行)升級(jí)linus上述升級(jí)步驟相對(duì)簡(jiǎn)單,發(fā)行版本有關(guān)詳細(xì)信息,請(qǐng)參閱相關(guān)資料。 Linux中最常用的指令、Li

4、nux操作,特別是驅(qū)動(dòng)程序開(kāi)發(fā)中常用的指令,介紹如下。 1.ls命令(例如: 功能:用于列出目錄中所有文件的說(shuō)明。 通用殘奧儀表:-l列出文件名和詳細(xì)信息。 ls -help或man ls可以顯示更多的幫助信息。 (可用同樣的方法查看相關(guān)指令的幫助信息。 以下不重復(fù))、lsls-virtual-machine : $ ls examples.desktop公共模板視頻圖像文檔下載音樂(lè)桌面、Linux最常用命令、2. cd命令cd/用于訪(fǎng)問(wèn)根目錄的cd用于進(jìn)入用戶(hù)目錄(/home ),lsls-virtual-machine 3360 $ CD/usr/src lsls-virtual-mach

5、ine 3360/usr說(shuō)明: cat命令是Linux驅(qū)動(dòng)程序編程中常用的命令,經(jīng)常用于打印驅(qū)動(dòng)程序的調(diào)試信息和系統(tǒng)虛擬文件系統(tǒng)/proc的信息。 示例:(也可以用more命令替換相似功能) cat /proc/kallsyms用于顯示系統(tǒng)內(nèi)核符號(hào)cat/proc根虛擬機(jī)3360/usr/src # cat /。 interrupts CPU0CPU 103360142 io-apic-edge timer說(shuō)明:在驅(qū)動(dòng)程序編程過(guò)程中,可以確認(rèn)驅(qū)動(dòng)程序是否被成功加載。選擇root ls-virtual-machine :/# lsmodmodulesizeusedbytimer 908770 r

6、fcomm 37292、Linux最常用的命令、5.uname命令(5.uname命令)。 說(shuō)明:如果不遵循選項(xiàng),則視為僅添加了-s選項(xiàng),通常添加選項(xiàng)-a來(lái)輸出系統(tǒng)版本信息。root ls-virtual-machine :/# uname-alinuxls-virtual-machine3.2.7#1smpthuapr 1212:20 Linux的最常見(jiàn)命令、6.grep命令(例如grep將查找與一個(gè)或多個(gè)正則表達(dá)式匹配的文本,并僅輸出匹配(或不匹配)的行或文本。 說(shuō)明: grep命令多用于配合其他打印命令輸出內(nèi)容的特定部分。 (上述示例),root ls-virtual-machine :

7、/# cat/proc/interrupts|greplocloc 33604172425112446641 localtiic7. dmesg命令(例如)功能:內(nèi)核日志最左邊的列是時(shí)間信息。 1422.376851 returnofcurrent-CPUs _ allowed is 233601422.376853 returnofcurrent _ thread _ info ()-cpuis 13330 is 3360 1000000,Linux的最大值8. Insmod命令(示例:) 功能:用于加載內(nèi)核模塊的說(shuō)明:加載由驅(qū)動(dòng)程序編譯生成的. ko文件,并在執(zhí)行該命令時(shí)向驅(qū)動(dòng)程序提供輸入

8、殘奧儀表(如果有)的說(shuō)明(類(lèi)似于常規(guī)c程序的主函數(shù)接收命令行參數(shù)),根虛擬機(jī)3360 /家庭/ls/works /時(shí)間# insmod timer.ko, 卸載時(shí)調(diào)用驅(qū)動(dòng)程序的驅(qū)動(dòng)程序出口函數(shù),root ls-virtual-machine :/home/ls/works/timer # rmsmodtimer.ko,Linux中最常見(jiàn)的命令系統(tǒng)管理員為一般用戶(hù)通常與其他命令一起使用,在Linux終端上,可以在sudo s H或su root上切換到root用戶(hù)下。 必須設(shè)置超級(jí)用戶(hù)的密碼并將其設(shè)置為sudo password。 注:驅(qū)動(dòng)程序的加載和卸載包括root用戶(hù)權(quán)限、lsls-virt

9、ual-machine :/usr/src $ su root、Linux中最常用的命令和11. chmod命令(例如使用root ls-virtual-machine :/home/ls/works/timer # chmod 777 test.sh,Linux中最常見(jiàn)的命令top命令后,按s鍵,可以設(shè)置更新信息的時(shí)間(以秒為單位) 例如,如果選擇j,則顯示每個(gè)任務(wù)上運(yùn)行的CPU。 按1鍵,顯示多核處理器下各處理器的使用率等信息。 (ps命令也可以顯示任務(wù)信息并詳細(xì)顯示相關(guān)資料)、root ls-virtual-machine 3360/home/ls/works/timer # top、L

10、inux的最常用命令。監(jiān)視某些命令與其他打印命令一起,缺省watch以2s的間隔重復(fù)執(zhí)行命令,如上例所示。 您也可以使用-n殘奧表指定時(shí)間間隔。lsls-virtual-machine :/usr/src $ watch cat/proc/interrupts、Linux的最常見(jiàn)的指令,簡(jiǎn)單介紹了Linux驅(qū)動(dòng)程序的開(kāi)發(fā)中常用的指令。 其它常見(jiàn)的命令,例如: make,基于Makefile文件定義編譯規(guī)則編譯器pwd,顯示當(dāng)前工作路徑kill,殺死某個(gè)進(jìn)程sleep,使當(dāng)前動(dòng)作延遲一定時(shí)間。 此外,有些命令可以編寫(xiě)批處理執(zhí)行的shell程序、shell編程相關(guān)資料、內(nèi)核編程技巧根據(jù)自己的喜好和

11、習(xí)慣選擇自己的編輯工具和調(diào)試方法。 最簡(jiǎn)單的調(diào)試是由驅(qū)動(dòng)程序使用打印語(yǔ)句打印信息,并使用dmesg命令顯示打印信息。 您也可以使用內(nèi)核調(diào)試工具(如dgdb、kdb或kprobes )來(lái)調(diào)試內(nèi)核模塊。 內(nèi)核編程技巧,在Linux系統(tǒng)中,proc文件系統(tǒng)是虛擬文件系統(tǒng),在Linux內(nèi)核信息的抽象文件接口中,許多內(nèi)核信息和可調(diào)關(guān)殘奧字計(jì)量器作為常規(guī)文件映射到目錄樹(shù)在內(nèi)核編程技巧、Linux內(nèi)核編程中,內(nèi)核源代碼是最好的代碼參考資源,可以通過(guò)echo和cat等文件操作命令輕松查找系統(tǒng)信息。 與內(nèi)核功能相關(guān)的許多函數(shù)可以在源代碼中找到與相同實(shí)現(xiàn)類(lèi)似的實(shí)現(xiàn),并且在引用和源代碼中實(shí)現(xiàn)函數(shù),以及有關(guān)Linux

12、提供的內(nèi)核API的殘奧儀表和功能,通常很難參考相關(guān)描述的資料,內(nèi)核源對(duì)于許多內(nèi)核提供的符號(hào),未導(dǎo)出到內(nèi)部和API的函數(shù)也可以通過(guò)在內(nèi)核中查找地址來(lái)引用其源代碼進(jìn)行調(diào)用。數(shù)據(jù)簿和工具、配置:通常可以使用在windows系統(tǒng)vmware虛擬機(jī)上安裝了Linux分發(fā)版的系統(tǒng)構(gòu)建Linux內(nèi)核編程環(huán)境。 可以選擇任何Linux發(fā)行版,但如果內(nèi)核版本滿(mǎn)足要求,則操作可能不同。 也可以安裝windows Linux雙系統(tǒng)。 與計(jì)算機(jī)的基礎(chǔ)硬件功能相關(guān)聯(lián),vmware可能無(wú)法完全模擬該功能(如時(shí)鐘設(shè)備的計(jì)時(shí)精度),因此使用雙系統(tǒng)在特殊內(nèi)核雙系統(tǒng)的Linux系統(tǒng)中, 使用mentohust工具使用清晰的帳戶(hù)連

13、接到網(wǎng)絡(luò),使用wine等工具模擬windows環(huán)境使用特定的應(yīng)用程序,使用資料書(shū)和工具, 學(xué)習(xí)Linux內(nèi)核編程過(guò)程中最重要的資料是比較新的Linux內(nèi)核源代碼,可以從/下載到最新的Linux內(nèi)核源代碼。 source insight經(jīng)常用于讀取內(nèi)核源代碼的工具。 這是一個(gè)非常方便的內(nèi)核源閱讀工具。 也可以使用聯(lián)機(jī)源代碼來(lái)引用LXR。 網(wǎng)站上當(dāng)然還有其他源代碼閱讀工具,如使用Vim編輯器或插件配置的源代碼閱讀工具。 資料書(shū)籍和工具對(duì)于Linux內(nèi)核網(wǎng)絡(luò)上的中文資料相對(duì)較少,使用谷歌檢索相關(guān)資料是最普遍的。 最主要的是以下中文Linux資料網(wǎng)站: ChinaUnix技術(shù)社區(qū),ChinaU是中國(guó)最大的Linux/Unix技術(shù)社區(qū)網(wǎng)站,其論壇有大量的Linux內(nèi)核和Linux驅(qū)動(dòng)程序開(kāi)發(fā)資料。 CSDN社區(qū)Linux內(nèi)核板有幾個(gè)與Linux內(nèi)核相關(guān)的問(wèn)題和網(wǎng)

溫馨提示

  • 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)論