18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何配置和操作Linux驅(qū)動(dòng)程序開發(fā)板

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

掃碼添加小助手

加入工程師交流群

本文檔概述了利用Linux開發(fā)板為 Linux 內(nèi)核開發(fā)驅(qū)動(dòng)程序的基礎(chǔ)知識(shí),并簡(jiǎn)單介紹了如何配置和操作 Linux 驅(qū)動(dòng)程序開發(fā)板。

一 開發(fā)背景

驅(qū)動(dòng)是什么?

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

Linux內(nèi)核是什么?

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

二 環(huán)境搭建

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

強(qiáng)烈建議使用專用的 Linux 機(jī)器來(lái)進(jìn)行驅(qū)動(dòng)程序的開發(fā)。 除了 Windows PC 之外,使用 Linux 機(jī)器或使用 Linux 機(jī)器作為主計(jì)算機(jī)是驅(qū)動(dòng)程序開發(fā)的理想配置。不建議在 Windows 中運(yùn)行 Linux 虛擬機(jī),除非用戶具有設(shè)置和維護(hù)虛擬機(jī)的背景,否則可能會(huì)出現(xiàn)兼容性和存儲(chǔ)的問(wèn)題。

2. 硬件設(shè)備的連接

如何配置和操作Linux驅(qū)動(dòng)程序開發(fā)板

圖1. Linux驅(qū)動(dòng)開發(fā)過(guò)程中硬件設(shè)備的連接示意圖

硬件設(shè)備的連接較為簡(jiǎn)單,其中,Linux機(jī)器通過(guò)USB to OTG和USB to TTL的轉(zhuǎn)接線相連,Linux開發(fā)板通過(guò)I2C總線和I2S總線與目標(biāo)設(shè)備相連以完成驅(qū)動(dòng)的開發(fā)。USB to TTL模塊的作用就是把通信電平轉(zhuǎn)換到Linux主機(jī)和Linux開發(fā)板都能識(shí)別的電平進(jìn)行通信。

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

Gedit

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

Picocom

Picocom 是一個(gè)常見的串口調(diào)試工具,可以在 Linux 終端窗口中運(yùn)行。利用Picocom可以通過(guò)串口通信協(xié)議與 Linux開發(fā)板進(jìn)行通信和操作。

Nano

Nano 是一個(gè)基于命令行的文本編輯器。 Nano 提供最基礎(chǔ)的文本編輯功能,用于在終端內(nèi)進(jìn)行編輯。 在 Ubuntu 中,Nano 是默認(rèn)的命令行文本編輯器。

三 Linux驅(qū)動(dòng)開發(fā)

1. 概述

如何配置和操作Linux驅(qū)動(dòng)程序開發(fā)板

圖2. Linux驅(qū)動(dòng)開發(fā)流程及主要開發(fā)文件

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

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

2. 開發(fā)驅(qū)動(dòng)源代碼、Makefile和Kconfig文件

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

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

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

4. 說(shuō)明文檔 / dt-bindings

說(shuō)明文檔描述了如何操作和配置設(shè)備驅(qū)動(dòng)程序。 此文檔應(yīng)提供設(shè)備驅(qū)動(dòng)程序及其驅(qū)動(dòng)設(shè)備的簡(jiǎn)要說(shuō)明。 在簡(jiǎn)要說(shuō)明之后,會(huì)列出驅(qū)動(dòng)程序的屬性。其中最重要的屬性即 compatible 屬性。 所有兼容的實(shí)例都列在其中。 在 compatible 屬性之后,用戶將列出所有可配置的屬性。在每個(gè)屬性中,開發(fā)人員需提供屬性的簡(jiǎn)要說(shuō)明,指導(dǎo)用戶如何配置該屬性。

結(jié)語(yǔ)

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

審核編輯:湯梓紅

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

    關(guān)注

    88

    文章

    11581

    瀏覽量

    217174
  • 主機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    1044

    瀏覽量

    36357
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    6027

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3506開發(fā)板Linux開發(fā)板極致性價(jià)比之選

    RK3506開發(fā)板Linux開發(fā)板極致性價(jià)比之選瑞芯微RK3506開發(fā)板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux
    的頭像 發(fā)表于 09-11 16:26 ?1487次閱讀
    RK3506<b class='flag-5'>開發(fā)板</b><b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)板</b>極致性價(jià)比之選

    輕松配置小智AI語(yǔ)音開發(fā)板,安信可IOT小程序功能更新

    安信可科技:安信可發(fā)布的 AI 語(yǔ)音開發(fā)板,可以通過(guò)配套的小程序,完成網(wǎng)絡(luò)配置、音色選擇等多項(xiàng)配置,無(wú)需復(fù)雜代碼,輕松實(shí)現(xiàn)AI語(yǔ)音體驗(yàn)。 用戶:COOL!怎么用的? 安信可科技:可以參
    的頭像 發(fā)表于 08-19 17:46 ?749次閱讀
    輕松<b class='flag-5'>配置</b>小智AI語(yǔ)音<b class='flag-5'>開發(fā)板</b>,安信可IOT小<b class='flag-5'>程序</b>功能更新

    zephyr設(shè)備驅(qū)動(dòng)程序模型

    ? ? 1:Zephyr 內(nèi)核支持多種設(shè)備驅(qū)動(dòng)程序驅(qū)動(dòng)程序是否可用取決于board 和驅(qū)動(dòng)程序。 Zephyr 設(shè)備模型為配置作為系統(tǒng)一部分的驅(qū)動(dòng)
    的頭像 發(fā)表于 07-29 10:34 ?367次閱讀
    zephyr設(shè)備<b class='flag-5'>驅(qū)動(dòng)程序</b>模型

    迅為RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

    迅為RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-26 15:39 ?1134次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>驅(qū)動(dòng)</b>指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)<b class='flag-5'>操作</b>函數(shù)實(shí)驗(yàn)

    Linux環(huán)境再升級(jí):PLIN驅(qū)動(dòng)程序正式發(fā)布

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

    基于RV1126開發(fā)板網(wǎng)絡(luò)配置方法

    RV1126開發(fā)板網(wǎng)絡(luò)硬件資源有:以太網(wǎng)、WiFi,采用的網(wǎng)絡(luò)配置方案是:Netplan。 ? ? ? ?Netplan是一個(gè)用于配置Linux網(wǎng)絡(luò)的簡(jiǎn)單工具。用戶只需要一個(gè)yaml
    的頭像 發(fā)表于 04-15 14:57 ?596次閱讀
    基于RV1126<b class='flag-5'>開發(fā)板</b>網(wǎng)絡(luò)<b class='flag-5'>配置</b>方法

    Linux開發(fā)板CAN總線測(cè)試方法,觸覺智能RK3568開發(fā)板演示

    本文介紹Linux開發(fā)板CAN總線測(cè)試方法,使用觸覺智能EVB3568鴻蒙開發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持OpenHarmony5.0
    的頭像 發(fā)表于 04-11 19:14 ?716次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)板</b>CAN總線測(cè)試方法,觸覺智能RK3568<b class='flag-5'>開發(fā)板</b>演示

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART
    的頭像 發(fā)表于 03-25 11:02 ?1092次閱讀
    【北京迅為】iTOP-RK3568<b class='flag-5'>開發(fā)板</b>鴻蒙OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>配置</b>UART

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED
    的頭像 發(fā)表于 03-14 14:41 ?998次閱讀
    北京迅為iTOP-RK3568<b class='flag-5'>開發(fā)板</b>OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>配置</b>LED

    迅為RK3568開發(fā)板驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)

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

    瑞芯微主板/開發(fā)板Linux系統(tǒng)播放音頻方法,觸覺智能RK3562開發(fā)板演示

    本文介紹瑞芯微方案主板/開發(fā)板Linux系統(tǒng)播放音頻的方法,觸覺智能RK3562開發(fā)板演示,通用RK3566、RK3568、RK3588等
    的頭像 發(fā)表于 12-13 11:40 ?1251次閱讀
    瑞芯微主板/<b class='flag-5'>開發(fā)板</b><b class='flag-5'>Linux</b>系統(tǒng)播放音頻方法,觸覺智能RK3562<b class='flag-5'>開發(fā)板</b>演示

    【北京迅為】itop-3562開發(fā)板Linux系統(tǒng)中使用NPU

    【北京迅為】itop-3562開發(fā)板Linux系統(tǒng)中使用NPU
    的頭像 發(fā)表于 11-25 14:52 ?1305次閱讀
    【北京迅為】itop-3562<b class='flag-5'>開發(fā)板</b>在<b class='flag-5'>Linux</b>系統(tǒng)中使用NPU

    Linux驅(qū)動(dòng)程序程序員指南

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

    pcie設(shè)備驅(qū)動(dòng)程序安裝步驟

    設(shè)備能夠正常工作的重要步驟。 1. 準(zhǔn)備工作 在開始安裝PCIe設(shè)備驅(qū)動(dòng)程序之前,需要做一些準(zhǔn)備工作: 確認(rèn)設(shè)備兼容性 :確保你的PCIe設(shè)備與你的操作系統(tǒng)兼容。 備份數(shù)據(jù) :在安裝任何驅(qū)動(dòng)程序之前,備份重要數(shù)據(jù)以防萬(wàn)一。 獲取
    的頭像 發(fā)表于 11-13 10:32 ?4340次閱讀

    Wilink8 Linux Wi-Fi驅(qū)動(dòng)程序R8.8版用戶指南

    電子發(fā)燒友網(wǎng)站提供《Wilink8 Linux Wi-Fi驅(qū)動(dòng)程序R8.8版用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-05 09:19 ?0次下載
    Wilink8 <b class='flag-5'>Linux</b> Wi-Fi<b class='flag-5'>驅(qū)動(dòng)程序</b>R8.8版用戶指南