国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

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

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

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

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

      方法步驟

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

      (02)查看linux系統(tǒng)的版本類型,輸入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)起來后,注意在grub啟動(dòng)的時(shí)候選擇剛剛編譯的內(nèi)核版本,這樣就可以在linux上開發(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)行操作。

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

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

      ①ls 意為list 列出當(dāng)前文件夾中的文件

      -l 顯示文件的屬性 可用ll來表示

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

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

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

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

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

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

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


    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