亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

      linux驅(qū)動(dòng)編寫(xiě)方法與實(shí)現(xiàn)教程

      時(shí)間: 加城1195 分享

        現(xiàn)在linux驅(qū)動(dòng)比較流行,主要有幾個(gè)方面的原因:1)linux平臺(tái)免費(fèi),很多芯片廠(chǎng)商希望linux平臺(tái)支持自己的產(chǎn)品;2)最近android平臺(tái)很火,這在無(wú)形之中幫了linux的忙,搞linux驅(qū)動(dòng)的人也開(kāi)始多了起來(lái);本篇文章主要介紹了詳解linux驅(qū)動(dòng)編寫(xiě)(入門(mén)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

        方法步驟

        (01)找兩臺(tái)電腦,一臺(tái)電腦安裝windows系統(tǒng),另外一臺(tái)電腦安裝linux系統(tǒng),至于類(lèi)型沒(méi)有限制;

        (02)查看linux系統(tǒng)的版本類(lèi)型,輸入uname -r即可;

        (03)根據(jù)獲取的linux kernel版本,尋找合適的kernel版本,直接用wget下載即可;

        (04)用tar解壓內(nèi)核版本,將boot下config文件拷貝到本地,輸入make menuconfig,直接保存即可;

        (05)輸入make -j2 & make modules_install & make install即可,系統(tǒng)重啟;

        (06)在linux系統(tǒng)起來(lái)后,注意在grub啟動(dòng)的時(shí)候選擇剛剛編譯的內(nèi)核版本,這樣就可以在linux上開(kāi)發(fā)kernel驅(qū)動(dòng)了;

        (07)在windows 平臺(tái)安裝secureCRT工具,和linux取得連接;

        (08)輸入下面的代碼,分別是hello.c和Makefile,其中hello.c內(nèi)容如下

        #include

        #include

        #include

        MODULE_LICENSE("GPL");

        MODULE_AUTHOR("feixiaoxing");

        MODULE_DESCRIPTION("This is just a hello module!\n");

        static int __init hello_init(void)

        {

        printk(KERN_EMERG "hello, init\n");

        return 0;

        }

        static void __exit hello_exit(void)

        {

        printk(KERN_EMERG "hello, exit\n");

        }

        module_init(hello_init);

        module_exit(hello_exit);

        Makefile的內(nèi)容如下所示

        ifneq ($(KERNELRELEASE),)

        obj-m := hello.o

        else

        PWD := $(shell pwd)

        KVER := $(shell uname -r)

        KDIR := /lib/modules/$(KVER)/build

        all:

        $(MAKE) -C $(KDIR) M=$(PWD) modules

        clean:

        rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions

        endif

        (09)編譯的時(shí)候,直接make即可,當(dāng)然前提是這兩個(gè)文件必須在一個(gè)目錄下;

        (10)編譯后生成hello.ko文件,大家可以把它想象成一個(gè)普通的執(zhí)行文件;

        (11)如果需要安裝,直接insmod hello.ko即可,輸入dmesg | tail 可以看到打印的內(nèi)容,輸入lsmod | grep hello也可以看一下模塊是否已經(jīng)安裝;

        (12)如果刪除模塊,直接輸入rmmod hello即可,當(dāng)然添加和刪除的操作都需要在root模式下進(jìn)行操作。

        所以說(shuō),linux驅(qū)動(dòng)簡(jiǎn)單的開(kāi)發(fā)步驟就是這些。

        補(bǔ)充:Linux基本命令

       ?、賚s 意為list 列出當(dāng)前文件夾中的文件

        -l 顯示文件的屬性 可用ll來(lái)表示

       ?、赼lias 別名 看看是否有別名的文件

       ?、踓d dir 跳躍目錄 -P選項(xiàng) 將路徑中的鏈接文件替換成鏈接指向的文件路徑

       ?、躳wd 查看當(dāng)前工作的文件夾名 使用-P的選項(xiàng),會(huì)直接進(jìn)入到其中,相當(dāng)于cd

        相關(guān)閱讀:Linuxshell腳本不執(zhí)行問(wèn)題實(shí)例分析

        shell腳本不執(zhí)行問(wèn)題:某天研發(fā)某同事找我說(shuō)幫他看看他寫(xiě)的shell腳本,死活不執(zhí)行,報(bào)錯(cuò)。我看了下,腳本很簡(jiǎn)單,也沒(méi)有常規(guī)性的錯(cuò)誤,報(bào)“:badinterpreter:Nosuchfileordirectory”錯(cuò)。看這錯(cuò),我就問(wèn)他是不是在windows下編寫(xiě)的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過(guò)的文本文件到了*nix里,每一行都多了個(gè)^M。解決:

        1)重新在linux下編寫(xiě)腳本;

        2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復(fù)雜腳本問(wèn)題。


      Linux驅(qū)動(dòng)相關(guān)文章:

      1.linux安裝顯卡驅(qū)動(dòng)命令

      2.如何編譯加載linux驅(qū)動(dòng)和內(nèi)核模塊

      3.linux安裝usb驅(qū)動(dòng)命令

      4.如何在Linux系統(tǒng)安裝騰達(dá)U1網(wǎng)卡

      5.linux瀏覽器命令

      4016657