<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    迅為IMX6Q開發板-非設備樹內核-單獨編譯內核驅動

    發布時間:2020-12-2 11:26    發布者:就是塔塔
    關鍵詞: 迅為 , IMX6Q
    內核驅動不僅可以將驅動編譯到內核中,還可以動態的編譯內核驅動。本文檔介紹如何以模塊的方式編譯內核驅動。
    要動態的編譯內核,首先需要將內核源碼編譯通過,內核的編譯請參考使用手冊第五章。
    9.5.2.1 內核和編譯器路徑
    本節介紹內核路徑、編譯器路徑
    如下圖所示,作者的 android 源碼在“/home/imx6/iTOP-iMX6_android4.4.2”目錄下,內核源碼在其中的“kernel_imx”目錄下。

    進入“kernel_imx”目錄,查看“build_android_kernel.sh”中的腳本文件,如下圖所示。

    如上圖所示,我們可以得到一些信息,在后面編譯內核模塊的時候,需要設置編譯目標平臺為 arm,“export ARCH=arm”;編譯器的路徑為“$(pwd)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-”。
    9.5.2.2 Makefile 文件
    作者在“/home/imx6”目錄下新建一個“imx_driver_modules”目錄,將要編譯的驅動和 Makefile 文件放到這個目錄下。
    Makefile 腳本文件:
    obj-m += iTOP-iMX6_driver_hello.o
    KDIR =/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx
    PWD ?= $(shell pwd)
    all:
    make -C $(KDIR) M=$(PWD) modules ARCH=arm
    CROSS_COMPILE=$(KDIR)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
    clean:

    rm -rf modules.order *.o workqueue.o Module.symvers *.mod.c *.ko
    腳本中:
    第一行bj-m += iTOP-iMX6_driver_hello.o 表示編譯的源文件為 iTOP-iMX6_driver_hello.c,如果源文件名有變化,則需要修改成對應的。
    第二行:KDIR 參數指向對應的內核源碼目錄。作者的內核源碼是在/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx 目錄下,用戶要根據自己的具體情況來改。
    第三行:PWD ?= $(shell pwd)表示將當前目錄的路徑賦值給 PWD 變量,也就是/home/imx6/imx_driver_modules
    第五行:其中 make -C $(KDIR) M=$(PWD) modules,表示將當前目錄下的文件編譯為模塊,并且制定了內核源碼的路徑;
    其中 ARCH=arm 表示設置目標 CPU 類別為 arm,也就是編譯的依賴內核和驅動模塊目標 CPU 為 ARM;
    其中 CROSS_COMPILE=$(KDIR)/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-,表示設置編譯器路徑,$(KDIR)為/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx,所以這里完整的路徑為“/home/imx6/iTOP-iMX6_android4.4.2/kernel_imx/../prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-”,正好指向作者內核編譯器的路徑。
    9.5.2.3 簡單驅動源碼
    驅動文件名稱為:iTOP-iMX6_driver_hello.c,源碼如下:
    #include
    #include
    MODULE_LICENSE("Dual BSD/GPL");
    MODULE_AUTHOR("iTOPEET_dz");
    static int hello_init(void)
    {
    printk(KERN_EMERG "Hello World enter!\n");
    return 0;
    }
    static void hello_exit(void)
    {
    printk(KERN_EMERG "Hello world exit!\n");
    }
    module_init(hello_init);
    module_exit(hello_exit);
    驅動源碼只有基本的入口和出口函數。加載和卸載的時候分別打印“Hello Worldenter!”和“Hello world exit!”。
    9.5.2.4 模塊編譯
    如下圖所示,將源碼拷貝到 Ubuntu 系統下。

    使用命令“make”,如下圖所示,可以看到有“iTOP-iMX6_driver_hello.ko”文件生成。

    使用命令“make clean”,可以刪除中間文件,如下圖所示。

    9.5.2.5 模塊編譯常見問題
    在以模塊的方式編譯驅動的過程中,新手可能會以下問題。
    1.內核源碼沒有編譯或者內核源碼路徑設置不正確。
    如果內核源碼沒有編譯,那么模塊將會提示缺少庫之類的錯誤;如果路徑設置不正確,會提示找不到內核。
    2.源碼和 Makefile 文件在 Windows 下編寫,然后拷貝到 Ubuntu 上,由于編輯器不同導致轉碼錯誤。
    這種錯誤比較容易解決,Make 編譯之后,系統會提示 Makefile 或者驅動文件具體某一行出現問題。使用 vim 編輯器打開查看一下,就能找出一些亂碼,使用 vim 編輯器修正一下再編譯即可。
    9.5.2.6 模塊加載和卸載
    作者這里使用最小 linux 系統來測試模塊的加載和卸載,最小系統在使用手冊第十三章有介紹。在編譯模塊前,內核源碼必須要編譯通過,作者這里是在最小系統是加載模塊,那么內核源碼也必須編譯為 qt 的內核(最小系統使用的是 qt 的內核),否則是無法加載的。
    如下圖所示,將 ko 文件拷貝到 u 盤上,啟動開發板,將 U 盤插到開發板上(靠近網口的usb 接口),使用命令“mkdir /mnt/udisk”新建文件夾,使用命令“mount /dev/sda1/mnt/udisk/”掛載盤符,使用命令“cp -r /mnt/udisk/iTOP-iMX6_driver_hello.ko ./”將驅動模塊拷貝到開發板。

    然后使用命令“insmod iTOP-iMX6_driver_hello.ko”加載驅動模塊,如下圖示,打印出“Hello World enter!”,表明模塊驅動加載成功。

    接著使用命令“rmmod iTOP-iMX6_driver_hello”卸載模塊,如下圖所示,發現提示沒有目錄“/lib/modules”,我們就按照提示新建目錄。

    如下圖所示,使用命令“mkdir /lib/modules”新建目錄,再次使用命令“rmmodiTOP-iMX6_driver_hello”卸載驅動模塊,發現仍然提示沒有“3.0.35-g0e09bb1-dirty”這個路徑。

    如下圖所示,使用命令“mkdir /lib/modules/3.0.35-g0e09bb1-dirty”新建目錄,再次用命令“rmmod iTOP-iMX6_driver_hello”卸載驅動模塊,發現打印信息“Hello worldexit!”,模塊卸載成功。

    只要重新燒寫系統,這些新建目錄只需要建立一次即可。















    本文地址:http://www.portaltwn.com/thread-749474-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區
    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷