色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux編譯驅動、內核及應用程序分析

UtFs_Zlgmcu7890 ? 來源:cc ? 作者:佚名 ? 2019-01-17 13:46 ? 次閱讀

作為一名嵌入式Linux新手,在學習的過程中會遇到很多問題。寫了一個驅動程序怎么編譯?怎么加載進內核?本文將介紹嵌入式Linux開發的一些入門基本操作,手把手讓你掌握編譯驅動、內核及應用程序。

小王是一名剛接觸Linux的新手,看了一些關于Linux驅動的書籍之后,買了一塊Cortex-A9的ARM開發板,準備大干一場。編寫了第一個屬于自己的驅動程序并命名為hellodrv.c,程序源碼如下所示。

這個驅動程序怎么編譯成可以在板子上跑的程序呢,小王經過一番網上查詢,原來需要交叉編譯工具鏈,小王找到了光盤資料里的交叉編譯工具并按說明正確安裝了交叉編譯工具。

一、安裝交叉編譯工具

1編寫Makefile

小王編寫好的驅動程序為hellodrv.c,要把該驅動程序編譯為模塊,在同一目錄下新建了一個Makefile文件。編寫的Makefile如下。

2驅動編譯

小王經過查詢,編譯驅動主要有兩種方式,一種是修改內核源碼頂層目錄下的Makefile文件,另外也可以在編譯命令指定架構及交叉編譯工具。

1、修改Makefile

例如:Linux內核源碼的目錄為/home/vmuser/kernel-imx,打開該目錄下的Makefile文件,找到ARCH及CROSS_COMPILE相關語句,修改為如下所示語句。

如果交叉編譯工具鏈未設置環境變量則CROSS_COMPILE設置為交叉編譯工具鏈的絕對路徑,設置如下。

修改完之后,直接執行make命令,生成了hellodrv.ko文件。

2、在編譯命令指定

執行如下命令進行編譯。

這種方式也可以生成hellodrv.ko,可是驅動要依賴于內核才能跑起來,小王于是開始了Linux內核的配置及編譯。

二、Linux內核配置及編譯

編譯內核時指定架構和交叉編譯工具的方式同編譯模塊一樣,經過上面的操作,小王已經輕車熟路了。小王還學會了首先導環境變量然后進行編譯的方法。

在首次進行配置編譯之前,需要清除之前編譯生成的文件,可用如下命令進行清除。

接下來進行內核的配置,內核的配置可以使用如下命令中的一個。

這四種方式中,值得推薦的是make menuconfig,它不依賴于QT或GTK+,且非常直觀。使用make menuconfig命令后,會進入如圖1所示的界面,在該界面根據需求對需要編譯進內核的選項進行裁剪。對于bool型選項,按Y或者N決定是否選擇編譯進內核。[*]表示選中,[]表示未選中。對于tristate型選項,根據需求可以有Y、M、N三種選擇,<*>表示靜態編譯,表示編譯為模塊,<>表示不編譯進內核。

圖1 內核配置界面

配置完成后,選擇保存,然后退出。配置后會生成.config文件,該文件保存了配置信息,供Makefile在編譯內核時使用。

在配置界面我們根據需求把需要的功能以及相應設備驅動的支持等配置好,然后進行內核及設備樹的編譯。內核及設備樹編譯用以下命令。

為了加快編譯速度可以在編譯命令后加“-j”選項,例如PC的CPU為4核,則編譯命令如下。

如果要把某些驅動編譯為模塊,則使用如下命令。

針對相應的開發板,廠家一般都會有默認的配置,這些配置文件位于內核源碼arch/arm/configs目錄下。例如:使用如下的默認配置。

如果已有.config文件,可以使用如下命令載入既有的.config配置文件。

內核及設備樹編譯完成后將會生成zImage和相應的dtb文件,按照廠家提供的燒寫方式將鏡像燒寫到目標板。

三、應用程序編譯及文件傳輸

1應用程序編譯

例如需要編譯的應用程序文件為test.c,需要把該程序編譯放到arm開發板上運行。編譯命令如下。

這是一個非常簡單的程序,并且只有一個文件,所以可以采用直接輸入命令進行交叉編譯。如果工程較大,這種方式就不可取了,通常需要編寫Makefile文件,通過make程序來進行工程管理。應用程序的Makefile范例如下。

編寫完Makefile后執行make命令即可生成目標文件test。

2文件傳輸

編譯生成的可執行文件可以通過TFTP,NFS等方式下載到開發板,關于TFTP,NFS服務器在PC上的搭建可參考網絡上相關文章,這里不贅述。

1、NFS文件傳輸

將目標板接入局域網或通過交叉網線與PC主機相連,設定目標板的IP,使之與主機在同一網段,然后進行遠程mount操作。將需要傳輸的文件放在PC機搭建的NFS服務器目錄下。在開發板上執行如下操作。

在進行遠程掛載之前,最好先用ping命令檢查網絡通信是否正常,只有在能ping通的情況下,才能進行正常掛載,否則請檢查網絡。如果在已經ping通的情況下,遠程掛載出現錯誤,請檢查主機和目標機的其它設置。

2、TFTP文件傳輸

把需要傳輸的文件放在PC機的tftp服務器目錄下。TFTP下載命令格式如下。

例如:下載IP為192.168.1.168的tftp服務器的hellodrv.ko文件,在開發板的當前目錄下執行如下命令。

通過以上任一方式將在PC機上編譯完成的驅動模塊hellodrv.ko和test應用程序拷貝到目標板上。

四、驅動模塊的加載及移除

執行如下命令把驅動模塊動態加載進內核。

查看加載的模塊使用如下命令。

如需要移除模塊使用如下命令。

IoT9000A-LI是廣州致遠電子有限公司開發的基于M6708-T系列核心板的ARM工控主板,核心板標配處理器為i.MX 6U,Cortex?-A9簡單雙核。板上集成了大量的外設接口,包括千兆以太網音頻、USB、HDMI、LVDS、LCD、miniPCIE、攝像頭、CAN信號、UART信號等接口,同時整合的多功能HD視頻引擎可提供1080P 60fps視頻解碼、1080P 30fps視頻編碼,并帶有2D、3D圖形引擎,可滿足消費電子工業和汽車車載娛樂系統等新一代應用,以及醫療應用的豐富圖形和高響應需求。

圖2 IoT9000A_LI產品

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209328
  • 驅動程序
    +關注

    關注

    19

    文章

    831

    瀏覽量

    48024

原文標題:【純干貨】五分鐘帶你掌握Linux編譯驅動、內核及應用程序

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux內核編譯主要過程

    Linux內核編譯主要過程: 配置、編譯、安裝 。
    發表于 08-08 16:02 ?726次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的<b class='flag-5'>編譯</b>主要過程

    如何構建linux開發環境和編譯軟件工程、應用程序

    前文介紹了如何使用官方提供的鏡像文件啟動開發板,本文將說明如何構建linux開發環境和編譯軟件工程、應用程序。
    的頭像 發表于 01-03 12:31 ?2039次閱讀
    如何構建<b class='flag-5'>linux</b>開發環境和<b class='flag-5'>編譯</b>軟件工程、<b class='flag-5'>應用程序</b>

    關于Linux應用程序開發到內核開發的指南!

    起來很快,估計2周就能上手。3. 進入 Linux 內核開發。內核開發的學習難度要比 Linux 應用程序開發大 3倍左右?;旧希幸荒甑?/div>
    發表于 09-24 11:12

    Linux內核編譯詳談

    Linux內核編譯詳談
    發表于 10-30 09:51 ?7次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b><b class='flag-5'>編譯</b>詳談

    基于Arm的Linux內核編譯指導

    基于Arm的Linux內核編譯指導
    發表于 10-30 10:13 ?15次下載
    基于Arm的<b class='flag-5'>Linux</b><b class='flag-5'>內核</b><b class='flag-5'>編譯</b>指導

    嵌入式Linux內核驅動程序開發是怎樣的

    設備驅動程序linux內核的一部分,是操作系統內核和機器硬件之間的接口,它由一組函數和一些私有數據組成,是連接應用程序與具體硬件的橋梁。
    發表于 11-06 11:33 ?1503次閱讀
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的<b class='flag-5'>驅動程序</b>開發是怎樣的

    Linux內核配置編譯分析的設計方案

    Linux內核配置編譯分析的設計方案
    發表于 07-08 16:53 ?18次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>配置<b class='flag-5'>編譯</b><b class='flag-5'>分析</b>的設計方案

    如何才能編譯Linux內核

    內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。Linux 作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新
    發表于 11-04 18:04 ?8次下載

    Linux內核編譯與運行

    本文檔的主要內容詳細介紹的是Linux內核編譯與運行免費下載。
    發表于 03-25 13:48 ?11次下載

    嵌入式linux編譯 ko,嵌入式linux:編譯linux驅動模塊

    是如何別被構造的。模塊的構造過程與用戶空間的應用程序的構造過程有顯著不同;內核是一個大的、獨立的程序,對于它的各個部分如何組合在一起有詳細的明確的要求。Linux2.6
    發表于 11-01 16:31 ?9次下載
    嵌入式<b class='flag-5'>linux</b><b class='flag-5'>編譯</b> ko,嵌入式<b class='flag-5'>linux</b>:<b class='flag-5'>編譯</b><b class='flag-5'>linux</b><b class='flag-5'>驅動</b>模塊

    嵌入式Linux內核編譯

    實驗環境VMware Workstation PlayerUbuntu16.04kernel-3.2.tar.bz2Linux內核編譯在ubuntu上編譯嵌入式
    發表于 11-01 17:07 ?16次下載
    嵌入式<b class='flag-5'>Linux</b>的<b class='flag-5'>內核</b><b class='flag-5'>編譯</b>

    Linux內核編譯和運行

    想讓Linux內核代碼跑起來,得先搭建編譯和運行代碼的環境。
    發表于 06-23 11:56 ?1477次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的<b class='flag-5'>編譯</b>和運行

    linux驅動程序編譯方法有哪兩種

    Linux驅動程序編譯方法主要可以歸納為兩種: 手動編譯 和 使用內核構建系統(Makefile)自動
    的頭像 發表于 08-30 14:39 ?643次閱讀

    linux驅動程序編譯方法是什么

    Linux驅動程序編譯方法主要包括兩種: 與內核一起編譯編譯成獨立的
    的頭像 發表于 08-30 14:46 ?536次閱讀

    linux驅動程序如何加載進內核

    Linux系統中,驅動程序內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫
    的頭像 發表于 08-30 15:02 ?444次閱讀
    主站蜘蛛池模板: 性xxx免费视频| 老人FREE VIODES老少配| 抽插的日日液液H| 92看看福利午夜影院| 一边摸一边桶一边脱免费| 午夜福利电影网站鲁片大全| 日本免费一本天堂在线| 青草久久影院| 欧美老妇与zozoz0交| 男人吃奶摸下弄进去好爽| 免费成人高清在线视频| 美女张开大腿| 欧美高清videos 360p| 欧美free嫩交hd| 男女久久久国产一区二区三区| 午夜福利电影网站鲁片大全| 日韩高清特级特黄毛片| 色聚网久久综合| 甜性涩爱免费下载| 亚洲qingse中文字幕久久| 亚洲精品天堂在线| 一个人看www| 91精品一区二区综合在线| 99国产在线视频| xxxx18动漫| 国产白丝精品爽爽久久蜜臀| 国产精品亚洲高清一区二区| 高清国产激情视频在线观看| 国产精品久久免费视频| 国产在线午夜| 久久久久久久久女黄9999| 美女被爆羞羞天美传媒| 欧美日韩亚洲一区视频二区 | 亚洲精品无码葡京AV天堂| 亚洲国产精品久久精品成人网站| 免费看国产精品麻豆| 热巴两次用约老师屁股发底线球| 久草国产在线播放| 三级全黄的视频| 挺进绝色老师的紧窄小肉六| 亚洲成A人片在线观看中文不卡|