国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

利用Linux開發板為TLV320ADC5120開發Linux內核驅動的方法

星星科技指導員 ? 來源:TI ? 作者:Zhang, Remy ? 2023-03-16 10:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

一 開發背景

驅動是什么?

驅動程序是駐留在內核中的一段軟件,它促進主機設備和外圍設備之間的交互。這些外圍設備可以像鼠標或鍵盤一樣普通。我們為我們的產品編寫驅動程序軟件以便于和各種類型的主機設備進行通信

Linux內核是什么?

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

二 環境搭建

1. 軟件環境的搭建

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

2. 硬件設備的連接

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

3. Linux操作系統中的常用工具

Gedit

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

Picocom

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

Nano

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

三 Linux驅動開發

1. 概述

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

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

2. 開發驅動源代碼、Makefile和Kconfig文件

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

3. 開發Defconfig和Devicetree文件

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

4. 說明文檔 / dt-bindings

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

結語

本文簡要介紹了如何利用Linux開發板為 Linux 內核開發驅動程序的原理和基礎過程。

審核編輯:郭婷

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

    關注

    33

    文章

    2695

    瀏覽量

    72629
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 計算機
    +關注

    關注

    19

    文章

    7806

    瀏覽量

    93190
  • 操作系統
    +關注

    關注

    37

    文章

    7401

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    移植NXP官方linux 5.4內核到i.MX6ULL開發板

    本文描述移植NXP官方 linux 5.4 內核到i.MX6ULL開發板
    發表于 12-19 11:10 ?2706次閱讀

    RK3568開發板驅動指南Linux中通用SPI設備驅動

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

    請問TLV320ADC5120如何下載開發軟件?

    請問TLV320ADC5120如何下載開發軟件?
    發表于 09-27 10:10

    一個板子上兩個tlv320adc5120,能否通過一個IIC通信,兩個器件如何區分地址

    一個板子上兩個tlv320adc5120,能否通過一個IIC通信,兩個器件如何區分地址
    發表于 10-09 08:25

    RK3399開發板嵌入式linux開發指南

    RK3399開發板嵌入式linux開發指南迅RK3399開發板發布《北京迅
    發表于 11-01 16:58 ?79次下載
    迅<b class='flag-5'>為</b>RK3399<b class='flag-5'>開發板</b>嵌入式<b class='flag-5'>linux</b><b class='flag-5'>開發</b>指南

    如何配置和操作Linux驅動程序開發板

    本文檔概述了利用Linux開發板 Linux 內核開發
    的頭像 發表于 02-15 13:36 ?4121次閱讀
    如何配置和操作<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b>程序<b class='flag-5'>開發板</b>

    利用Linux開發板TLV320ADC5120開發Linux內核驅動方法

    利用Linux開發板TLV320ADC5120開發Linu
    發表于 10-28 11:59 ?0次下載
    <b class='flag-5'>利用</b><b class='flag-5'>Linux</b><b class='flag-5'>開發板</b><b class='flag-5'>為</b><b class='flag-5'>TLV320ADC5120</b><b class='flag-5'>開發</b><b class='flag-5'>Linux</b><b class='flag-5'>內核</b><b class='flag-5'>驅動</b>的<b class='flag-5'>方法</b>

    基于RK3568開發板的嵌入式學習之Linux驅動視頻

    基于RK3568開發板的嵌入式學習之Linux驅動視頻
    的頭像 發表于 05-19 16:30 ?1986次閱讀
    迅<b class='flag-5'>為</b>基于RK3568<b class='flag-5'>開發板</b>的嵌入式學習之<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b>視頻

    fpga開發板linux開發板區別

    FPGA開發板Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA開發板
    的頭像 發表于 02-01 17:09 ?4603次閱讀

    linux開發板與樹莓派的區別

    定義和用途 Linux開發板Linux開發板是一種基于Linux操作系統的嵌入式開發板,通常用
    的頭像 發表于 08-30 15:34 ?2919次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux
    的頭像 發表于 08-30 12:16 ?2385次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

    重磅升級!迅iTOP-Hi3403開發板SDK全面升級至Linux?6.6內核

    【重磅升級!迅iTOP-Hi3403開發板SDK全面升級至Linux?6.6內核
    的頭像 發表于 11-18 13:34 ?1004次閱讀
    重磅升級!迅<b class='flag-5'>為</b>iTOP-Hi3403<b class='flag-5'>開發板</b>SDK全面升級至<b class='flag-5'>Linux</b>?6.6<b class='flag-5'>內核</b>

    【迅工業RK3568穩定可靠】itop-3568開發板Linux驅動開發實戰:RK3568內核模塊符號導出詳解

    【迅工業RK3568穩定可靠】itop-3568開發板Linux驅動開發實戰:RK3568內核
    的頭像 發表于 11-21 13:25 ?1187次閱讀
    【迅<b class='flag-5'>為</b>工業RK3568穩定可靠】itop-3568<b class='flag-5'>開發板</b><b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>實戰:RK3568<b class='flag-5'>內核</b>模塊符號導出詳解

    iTOP-3568開發板?Linux驅動開發實戰:menuconfig圖形化配置實驗

    iTOP-3568開發板?Linux驅動開發實戰:menuconfig圖形化配置實驗
    的頭像 發表于 11-24 15:29 ?766次閱讀
    迅<b class='flag-5'>為</b>iTOP-3568<b class='flag-5'>開發板</b>?<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>實戰:menuconfig圖形化配置實驗

    TLV320ADC5120音頻ADC:高性能與靈活性的完美結合

    TLV320ADC5120音頻ADC:高性能與靈活性的完美結合 在音頻處理領域,一款高性能且功能豐富的模數轉換器(ADC)對于實現高質量音頻采集至關重要。今天,我們就來深入探討德州儀器(TI
    的頭像 發表于 01-29 10:15 ?239次閱讀