chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

如何配置和操作Linux驅動程序開發(fā)板

德州儀器 ? 來源:德州儀器 ? 作者:德州儀器 ? 2022-02-15 13:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文檔概述了利用Linux開發(fā)板為 Linux 內核開發(fā)驅動程序的基礎知識,并簡單介紹了如何配置和操作 Linux 驅動程序開發(fā)板。

一 開發(fā)背景

驅動是什么?

驅動程序是駐留在內核中的一段軟件,它促進主機設備和外圍設備之間的交互。這些外圍設備可以像鼠標或鍵盤一樣普通。我們?yōu)槲覀兊漠a(chǎn)品編寫驅動程序軟件以便于和各種類型的主機設備進行通信。

Linux內核是什么?

Linux內核是構成Linux操作系統(tǒng)的核心代碼。 常見的基于 Linux 內核構建的高級操作系統(tǒng) (HLOS) 有 Ubuntu、Android 和 Yocto。一個計算機系統(tǒng)是一個硬件和軟件的共生體,它們互相依賴,不可分割。計算機的硬件,含有外圍設備、處理器、內存、硬盤和其他的電子設備組成計算機的發(fā)動機。但是沒有軟件來操作和控制它,自身是不能工作的。完成這個控制工作的軟件就稱為操作系統(tǒng),在Linux的術語中被稱為“內核”,也可以稱為“核心”。Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統(tǒng)、設備管理和驅動、網(wǎng)絡通信,以及系統(tǒng)的初始化(引導)、系統(tǒng)調用等。內核的開發(fā)由維護人員來監(jiān)督,維護者擁有內核各個部分的開發(fā)權,任何添加到內核各自部分的代碼都必須發(fā)送給他們。 這個通過維護者向內核提交代碼的過程稱為上游。

二 環(huán)境搭建

1. 軟件環(huán)境的搭建

強烈建議使用專用的 Linux 機器來進行驅動程序的開發(fā)。 除了 Windows PC 之外,使用 Linux 機器或使用 Linux 機器作為主計算機是驅動程序開發(fā)的理想配置。不建議在 Windows 中運行 Linux 虛擬機,除非用戶具有設置和維護虛擬機的背景,否則可能會出現(xiàn)兼容性和存儲的問題。

2. 硬件設備的連接

如何配置和操作Linux驅動程序開發(fā)板

圖1. Linux驅動開發(fā)過程中硬件設備的連接示意圖

硬件設備的連接較為簡單,其中,Linux機器通過USB to OTG和USB to TTL的轉接線相連,Linux開發(fā)板通過I2C總線和I2S總線與目標設備相連以完成驅動的開發(fā)。USB to TTL模塊的作用就是把通信電平轉換到Linux主機和Linux開發(fā)板都能識別的電平進行通信。

3. Linux操作系統(tǒng)中的常用工具

Gedit

Gedit 是一個基于 GUI 的文本編輯器,具有軟件開發(fā)的一些基本功能。 Gedit 可以用作純文本編輯器,也可以把它用來當成是一個集成開發(fā)環(huán)境 (IDE), 它會根據(jù)不同的語言高亮顯現(xiàn)關鍵字和標識符。

Picocom

Picocom 是一個常見的串口調試工具,可以在 Linux 終端窗口中運行。利用Picocom可以通過串口通信協(xié)議與 Linux開發(fā)板進行通信和操作。

Nano

Nano 是一個基于命令行的文本編輯器。 Nano 提供最基礎的文本編輯功能,用于在終端內進行編輯。 在 Ubuntu 中,Nano 是默認的命令行文本編輯器。

三 Linux驅動開發(fā)

1. 概述

如何配置和操作Linux驅動程序開發(fā)板

圖2. Linux驅動開發(fā)流程及主要開發(fā)文件

針對Linux驅動的開發(fā),有3大類型的文件是必不可少的,其中一部分就是最基礎的驅動文件(The driver files),驅動文件中包含了驅動本身的文件后綴為.C的源代碼和.H的頭文件,以及Kconfig文件和Makefile文件,其中,Kconfig文件的作用是當我們編譯Linux內核時,我們會發(fā)現(xiàn)有的模塊被編譯進了內核,有的只是生成了一個個模塊。因此,我們如何讓內核發(fā)現(xiàn)我們編寫的模塊呢?這就需要在Kconfig文件中進行定義說明。至于如何生成模塊,那么就需要利用Makefile文件告訴編譯器,怎么編譯生成這個模塊。另一個部分就是我們的設備樹文件(Devicetree files),所以什么是設備樹文件呢?其實在沒有設備樹文件以前,我們需要將Linux開發(fā)板的信息硬編碼到內核的.C源文件中。不同開發(fā)板的硬件配置不一樣,因此內核中存在大量的板級配置源碼,從而會造成代碼冗余。因此針對這個現(xiàn)象,我們可以用設備樹的方法將板級配

置信息獨立的存放到.dts/.dtsi文件中。此時,針對不同的開發(fā)板,只需要配置相應的.dts/.dtsi文件即可,這樣可以避免大量重復的編碼工作,但是如果更換Linux開發(fā)板那么就需要更換相對應的設備樹文件進行配置。最后一部分我們需要的文件就是作為參考文檔的說明文檔(Reference documentation),這個參考文檔中會對如何配置設備樹文件做出定義,是我們編寫設備樹文件時必須參考的說明文檔。驅動文件(The driver files)經(jīng)過編譯會生成名為zImage的鏡像編譯文件,設備樹文件(Devicetree files)經(jīng)過編譯會生成文件后綴為.dtb的二進制文件,在成功的通過編譯得到這兩個文件后,我們就可以將這兩個文件燒錄到我們的Linux開發(fā)板中,這就是我們Linux驅動開發(fā)的原理過程。

2. 開發(fā)驅動源代碼、Makefile和Kconfig文件

要開始開發(fā)驅動程序源代碼、Makefile 和 Kconfig 文件,用戶必須導航到內核中驅動程序所在的目錄。 進入該目錄后,創(chuàng)建一個適當?shù)脑创a文件并打開現(xiàn)有的 Kconfig 和 Makefile 文件。在 Kconfig 文件中,開發(fā)人員需要為設備驅動程序創(chuàng)建一個條目,這個條目向內核描述了設備需要的驅動程序,并專門列出了驅動程序的依賴項。在 Makefile 文件中,開發(fā)人員同樣需要為設備驅動程序創(chuàng)建一個條目,該條目負責告訴編譯器需要從驅動源代碼創(chuàng)建哪些目標文件。雖然驅動源代碼對于所要開發(fā)的驅動程序和開發(fā)人員來說是獨一無二的,但每個驅動程序都有相似的流程。首先,設備必須在一系列模塊表中注冊。例如,of_device_idtable 用于將設備實例與設備樹文件匹配,i2c_device_idtable 用于建立 I2C 通信,acpi_device_table 用于 ACPI 系統(tǒng)。所有模塊表都由最終的 module_i2c_driver 表鏈接。在建立模塊表之后,驅動程序會執(zhí)行probe() 函數(shù),在此函數(shù)中,驅動程序檢查設備是否可用和可配置,如果設備可用,則為驅動程序分配資源。如果設備不可用,則函數(shù)應返回錯誤并釋放任何已分配的資源。在此之后,init() 函數(shù)將分別運行并獲取和設置可以在用戶空間中配置和讀取的屬性。

3. 開發(fā)Defconfig和Devicetree文件

Defconfig 和 Devicetree 文件特定用于開發(fā)人員用來驗證驅動程序的平臺。Defconfig 確定編譯內核時要在內核中安裝或啟用哪些模塊。開發(fā)者可以選擇手動編輯設備樹或使用 pinmux 工具生成設備樹代碼。

4. 說明文檔 / dt-bindings

說明文檔描述了如何操作和配置設備驅動程序。 此文檔應提供設備驅動程序及其驅動設備的簡要說明。 在簡要說明之后,會列出驅動程序的屬性。其中最重要的屬性即 compatible 屬性。 所有兼容的實例都列在其中。 在 compatible 屬性之后,用戶將列出所有可配置的屬性。在每個屬性中,開發(fā)人員需提供屬性的簡要說明,指導用戶如何配置該屬性。

結語

本文簡要介紹了如何利用Linux開發(fā)板為 Linux 內核開發(fā)驅動程序的原理和基礎過程,要了解更多關于Linux驅動開發(fā)相關的詳細信息,請參閱“Third Edition of Linux Device Drivers”或“The Linux Kernel Module Programming Guide”,以便更加深入地了解該主題。

審核編輯:湯梓紅

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

    關注

    87

    文章

    11509

    瀏覽量

    213687
  • 主機
    +關注

    關注

    0

    文章

    1038

    瀏覽量

    35972
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5669

    瀏覽量

    104524
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux環(huán)境再升級:PLIN驅動程序正式發(fā)布

    PLIN驅動程序現(xiàn)已正式發(fā)布,本文將展示如何安裝PLIN驅動程序,以及如何在Linux環(huán)境下進行基本的PLIN通信操作,確保您能夠快速掌握并應用這一新工具。
    的頭像 發(fā)表于 04-21 15:29 ?348次閱讀
    <b class='flag-5'>Linux</b>環(huán)境再升級:PLIN<b class='flag-5'>驅動程序</b>正式發(fā)布

    迅為RK3568開發(fā)板驅動指南Linux中通用SPI設備驅動

    迅為RK3568開發(fā)板驅動指南Linux中通用SPI設備驅動
    的頭像 發(fā)表于 01-23 11:02 ?2804次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用SPI設備<b class='flag-5'>驅動</b>

    Linux驅動程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發(fā)表于 11-22 15:53 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>驅動程序</b><b class='flag-5'>程序</b>員指南

    LSP 2.10 DaVinci Linux驅動程序

    電子發(fā)燒友網(wǎng)站提供《LSP 2.10 DaVinci Linux驅動程序.pdf》資料免費下載
    發(fā)表于 10-09 09:30 ?0次下載
    LSP 2.10 DaVinci <b class='flag-5'>Linux</b><b class='flag-5'>驅動程序</b>

    北京迅為RK3568開發(fā)板嵌入式學習之Linux驅動全新更新-CAN+

    北京迅為RK3568開發(fā)板嵌入式學習之Linux驅動全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?1038次閱讀
    北京迅為RK3568<b class='flag-5'>開發(fā)板</b>嵌入式學習之<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b>全新更新-CAN+

    嵌入式linux開發(fā)板怎么操作

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺。它通常包括一個處理器、內存、存儲器、輸入/輸出接口等硬件組件,以及一
    的頭像 發(fā)表于 09-02 09:09 ?790次閱讀

    嵌入式linux開發(fā)板芯片的工作原理

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺,它廣泛應用于工業(yè)控制、智能家居、智能交通、醫(yī)療設備等領域。 嵌入式
    的頭像 發(fā)表于 09-02 09:07 ?814次閱讀

    linux開發(fā)板與樹莓派的區(qū)別

    操作系統(tǒng)的微型計算機,主要用于教育、編程、媒體播放等領域。 硬件配置 Linux開發(fā)板Linux開發(fā)板
    的頭像 發(fā)表于 08-30 15:34 ?1950次閱讀

    linux開發(fā)板如何編譯curl

    Linux開發(fā)板上編譯 curl 庫通常涉及到幾個步驟,包括準備開發(fā)環(huán)境、下載源代碼、配置編譯選項以及執(zhí)行編譯和安裝過程。以下是一個基本的指南,幫助你在
    的頭像 發(fā)表于 08-30 15:33 ?1400次閱讀

    linux開發(fā)板和單片機開發(fā)的區(qū)別

    、PIC等,處理能力和內存容量相對較低。 操作系統(tǒng) Linux開發(fā)板通常使用Linux操作系統(tǒng),具有豐富的軟件資源和
    的頭像 發(fā)表于 08-30 15:30 ?2144次閱讀

    Linux設備驅動程序分類有哪些

    Linux設備驅動程序操作系統(tǒng)與硬件設備之間的橋梁,負責實現(xiàn)硬件設備與操作系統(tǒng)之間的通信和控制。Linux設備
    的頭像 發(fā)表于 08-30 15:11 ?1230次閱讀

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

    Linux系統(tǒng)中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現(xiàn)對硬件設備的控制和管理。 驅動程序的編寫 驅動程序的編寫是
    的頭像 發(fā)表于 08-30 15:02 ?1096次閱讀

    linux驅動程序主要有哪些功能

    Linux驅動程序操作系統(tǒng)與硬件設備之間進行通信的橋梁,負責實現(xiàn)硬件設備與操作系統(tǒng)之間的數(shù)據(jù)交換和控制。Linux
    的頭像 發(fā)表于 08-30 14:47 ?896次閱讀

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

    Linux驅動程序的編譯方法主要包括兩種: 與內核一起編譯 和 編譯成獨立的內核模塊 。以下是對這兩種方法的介紹: 一、與內核一起編譯 與內核一起編譯意味著將驅動程序的源代碼直接集成到Linu
    的頭像 發(fā)表于 08-30 14:46 ?1242次閱讀

    linux驅動程序運行在什么空間

    Linux 驅動程序操作系統(tǒng)的一部分,負責管理硬件設備與操作系統(tǒng)之間的交互。驅動程序運行在內核空間(Kernel Space),這是
    的頭像 發(fā)表于 08-30 14:37 ?900次閱讀